From dcb35856b296effcf945c6e531fe688e27d54354 Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Thu, 27 Feb 2025 14:47:58 +0800 Subject: [PATCH 001/114] fix(slave/compiler): Optimization to be performance, -O2 instead of -Og --- slave/sdkconfig.defaults | 2 ++ 1 file changed, 2 insertions(+) diff --git a/slave/sdkconfig.defaults b/slave/sdkconfig.defaults index 9313e28e..2ff48b15 100644 --- a/slave/sdkconfig.defaults +++ b/slave/sdkconfig.defaults @@ -8,3 +8,5 @@ CONFIG_PARTITION_TABLE_TWO_OTA=y # OS CONFIG_FREERTOS_HZ=1000 + +CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF=y From 4593fb4155b9d4c12df21d992ff9e642012983db Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Tue, 25 Feb 2025 15:27:42 +0800 Subject: [PATCH 002/114] feat(h2_c5_board) Add C5 sub board for P4 host, add H2 as host - add GPIOs for Handshake and Data Ready for C5 as co-processor. Other SPI GPIO on C5 subboard are default values - for P4 Host, define GPIOs used to communicate with C5 subboard - tested with standard SPI and SPI-HD (4 data lines) - add GPIO settings for H2 as host - tested with standard SPI and SPI-HD (2 data lines) - remapped C5_SPI_CLK to CS_WAKE_UP - bumped version --- Kconfig | 48 +++++++++++++++++++++++++++++------- idf_component.yml | 2 +- slave/main/Kconfig.projbuild | 6 ++++- 3 files changed, 45 insertions(+), 11 deletions(-) diff --git a/Kconfig b/Kconfig index 005c49e7..9509d7d5 100644 --- a/Kconfig +++ b/Kconfig @@ -189,8 +189,10 @@ menu "ESP-Hosted config" depends on ESP_HOSTED_SPI_HSPI int "GPIO pin for Host MOSI" default 14 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 + default 23 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 default 13 if IDF_TARGET_ESP32 default 11 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 + default 5 if IDF_TARGET_ESP32H2 default 7 help SPI controller Host MOSI @@ -199,8 +201,10 @@ menu "ESP-Hosted config" depends on ESP_HOSTED_SPI_HSPI int "GPIO pin for Host MISO" default 15 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 + default 22 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 default 12 if IDF_TARGET_ESP32 default 13 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 + default 0 if IDF_TARGET_ESP32H2 default 2 help SPI controller Host MISO @@ -209,8 +213,10 @@ menu "ESP-Hosted config" depends on ESP_HOSTED_SPI_HSPI int "GPIO pin for Host CLK" default 18 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 + default 33 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 default 14 if IDF_TARGET_ESP32 default 12 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 + default 4 if IDF_TARGET_ESP32H2 default 6 help SPI controller Host CLK @@ -219,8 +225,10 @@ menu "ESP-Hosted config" depends on ESP_HOSTED_SPI_HSPI int "GPIO pin for Host CS" default 19 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 + default 4 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 default 15 if IDF_TARGET_ESP32 default 10 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 + default 1 if IDF_TARGET_ESP32H2 default 10 help SPI controller Host CS @@ -276,8 +284,10 @@ menu "ESP-Hosted config" config ESP_HOSTED_SPI_GPIO_HANDSHAKE int "GPIO pin for handshake" default 16 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 + default 21 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 default 3 if IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32C6 default 17 if IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32S2 + default 22 if IDF_TARGET_ESP32H2 default 26 help GPIO pin to use for handshake with other spi controller @@ -285,6 +295,8 @@ menu "ESP-Hosted config" config ESP_HOSTED_SPI_GPIO_DATA_READY int "GPIO pin for data ready interrupt" default 17 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 + default 32 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 + default 12 if IDF_TARGET_ESP32H2 default 4 help GPIO pin for indicating host that SPI slave has data to be read by host @@ -292,6 +304,8 @@ menu "ESP-Hosted config" config ESP_HOSTED_SPI_GPIO_RESET_SLAVE int "GPIO pin for Reseting slave ESP" default 54 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 + default 53 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 + default 10 if IDF_TARGET_ESP32H2 default 5 help GPIO pin for Resetting ESP SPI slave device. Should be connected to RST/EN of ESP SPI slave device. @@ -322,7 +336,7 @@ ESP32XX_SPI_CLK_FREQ_RANGE_MAX := 40 config ESP_HOSTED_SPI_FREQ_ESP32XX depends on SLAVE_IDF_TARGET_ESP32C2 || SLAVE_IDF_TARGET_ESP32C3 || SLAVE_IDF_TARGET_ESP32S2 || SLAVE_IDF_TARGET_ESP32S3 || SLAVE_IDF_TARGET_ESP32C5 int "SPI Clock Freq" - default 30 if SLAVE_IDF_TARGET_ESP32C2 || SLAVE_IDF_TARGET_ESP32C3 || SLAVE_IDF_TARGET_ESP32S2 || SLAVE_IDF_TARGET_ESP32S3 || SLAVE_IDF_TARGET_ESP32C5 + default 40 if SLAVE_IDF_TARGET_ESP32C2 || SLAVE_IDF_TARGET_ESP32C3 || SLAVE_IDF_TARGET_ESP32S2 || SLAVE_IDF_TARGET_ESP32S3 || SLAVE_IDF_TARGET_ESP32C5 range $(ESP32XX_SPI_CLK_FREQ_RANGE_MIN) $(ESP32XX_SPI_CLK_FREQ_RANGE_MAX) help "Optimize SPI CLK by increasing till host practically can support" @@ -570,7 +584,9 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 config ESP_HOSTED_SPI_HD_GPIO_CS int "GPIO pin for Host CS" default 10 if IDF_TARGET_ESP32S3 - default 19 if IDF_TARGET_ESP32P4 + default 4 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 + default 19 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 + default 1 if IDF_TARGET_ESP32H2 default 15 help SPI Half-duplex controller Host CS @@ -578,7 +594,9 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 config ESP_HOSTED_SPI_HD_GPIO_CLK int "GPIO pin for Host CLK" default 12 if IDF_TARGET_ESP32S3 - default 18 if IDF_TARGET_ESP32P4 + default 33 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 + default 18 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 + default 4 if IDF_TARGET_ESP32H2 default 18 help SPI Half-duplex controller Host CLK @@ -586,7 +604,9 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 config ESP_HOSTED_SPI_HD_GPIO_D0 int "GPIO pin for Host D0" default 11 if IDF_TARGET_ESP32S3 - default 14 if IDF_TARGET_ESP32P4 + default 23 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 + default 14 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 + default 5 if IDF_TARGET_ESP32H2 default 2 help SPI Half-duplex controller Host D0 @@ -594,7 +614,9 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 config ESP_HOSTED_SPI_HD_GPIO_D1 int "GPIO pin for Host D1" default 13 if IDF_TARGET_ESP32S3 - default 15 if IDF_TARGET_ESP32P4 + default 22 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 + default 15 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 + default 0 if IDF_TARGET_ESP32H2 default 4 help SPI Half-duplex controller Host D1 @@ -603,7 +625,9 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 depends on ESP_HOSTED_SPI_HD_PRIV_INTERFACE_4_DATA_LINES int "GPIO pin for Host D2" default 14 if IDF_TARGET_ESP32S3 - default 16 if IDF_TARGET_ESP32P4 + default 20 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 + default 16 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 + default 2 if IDF_TARGET_ESP32H2 default 12 help SPI Half-duplex controller Host D2 @@ -612,7 +636,9 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 depends on ESP_HOSTED_SPI_HD_PRIV_INTERFACE_4_DATA_LINES int "GPIO pin for Host D3" default 9 if IDF_TARGET_ESP32S3 - default 17 if IDF_TARGET_ESP32P4 + default 21 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 + default 17 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 + default 3 if IDF_TARGET_ESP32H2 default 13 help SPI Half-duplex controller Host D3 @@ -620,7 +646,9 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 config ESP_HOSTED_SPI_HD_GPIO_DATA_READY int "GPIO pin for data ready interrupt" default 4 if IDF_TARGET_ESP32S3 - default 6 if IDF_TARGET_ESP32P4 + default 32 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 + default 6 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 + default 12 if IDF_TARGET_ESP32H2 default 8 help GPIO pin for indicating host that slave has data to be read by host @@ -628,7 +656,9 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 config ESP_HOSTED_SPI_HD_GPIO_RESET_SLAVE int "GPIO pin for Reseting slave ESP" default 5 if IDF_TARGET_ESP32S3 + default 53 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 default 54 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 + default 10 if IDF_TARGET_ESP32H2 default 5 help GPIO pin for Resetting ESP slave device. Should be connected to RST/EN of ESP SPI slave device. @@ -651,7 +681,7 @@ ESP32XX_SPI_HD_CLK_FREQ_RANGE_MAX := 40 config ESP_HOSTED_SPI_HD_FREQ_ESP32XX depends on SLAVE_IDF_TARGET_ESP32C2 || SLAVE_IDF_TARGET_ESP32C3 || SLAVE_IDF_TARGET_ESP32S2 || SLAVE_IDF_TARGET_ESP32S3 || SLAVE_IDF_TARGET_ESP32C5 int "SPI HD Clock Freq (MHz)" - default 10 if SLAVE_IDF_TARGET_ESP32C2 || SLAVE_IDF_TARGET_ESP32C3 || SLAVE_IDF_TARGET_ESP32S2 || SLAVE_IDF_TARGET_ESP32S3 || SLAVE_IDF_TARGET_ESP32C5 + default 40 if SLAVE_IDF_TARGET_ESP32C2 || SLAVE_IDF_TARGET_ESP32C3 || SLAVE_IDF_TARGET_ESP32S2 || SLAVE_IDF_TARGET_ESP32S3 || SLAVE_IDF_TARGET_ESP32C5 range $(ESP32XX_SPI_HD_CLK_FREQ_RANGE_MIN) $(ESP32XX_SPI_HD_CLK_FREQ_RANGE_MAX) help "Optimize CLK by increasing till host practically can support" diff --git a/idf_component.yml b/idf_component.yml index 1076fe38..ed9122d4 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "1.3.2" +version: "1.3.3" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/Kconfig.projbuild b/slave/main/Kconfig.projbuild index e0a42add..0ebdd9fb 100644 --- a/slave/main/Kconfig.projbuild +++ b/slave/main/Kconfig.projbuild @@ -12,7 +12,6 @@ menu "Example Configuration" config ESP_HOST_DEV_BOARD_P4_FUNC_BOARD bool "ESP32-P4-Function-EV-Board" - depends on IDF_TARGET_ESP32C6 endchoice @@ -129,6 +128,7 @@ menu "Example Configuration" depends on SPI_HSPI int "Slave GPIO pin for Host CLK" default 19 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD + default 3 if IDF_TARGET_ESP32C5 default 14 if IDF_TARGET_ESP32 default 12 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 default 6 @@ -196,6 +196,7 @@ menu "Example Configuration" config ESP_SPI_GPIO_HANDSHAKE int "Slave GPIO pin for handshake" default 22 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD + default 4 if IDF_TARGET_ESP32C5 default 3 if IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32C6 default 17 if IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32S2 default 26 @@ -205,6 +206,7 @@ menu "Example Configuration" config ESP_SPI_GPIO_DATA_READY int "Slave GPIO pin for data ready interrupt" default 23 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD + default 0 if IDF_TARGET_ESP32C5 default 13 if IDF_TARGET_ESP32C5 default 4 help @@ -414,6 +416,7 @@ menu "Example Configuration" config ESP_SPI_HD_GPIO_CLK int "Slave GPIO pin for Host CLK" default 19 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD + default 3 if IDF_TARGET_ESP32C5 default 6 help SPI HD controller Host CS @@ -451,6 +454,7 @@ menu "Example Configuration" config ESP_SPI_HD_GPIO_DATA_READY int "Slave GPIO pin for Data Ready" default 2 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD + default 0 if IDF_TARGET_ESP32C5 default 13 if IDF_TARGET_ESP32C5 default 11 help From 0a92d91053286a8523a78d39d29a50c9241908c9 Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Fri, 7 Mar 2025 16:49:17 +0800 Subject: [PATCH 003/114] enhance(transport_config_reset) Add Reset pin config to transport config - add reset pin config to transport configs - add API to get reset pin config - get and use reset pin config in `reset_slave()` - bumped version --- .../api/include/esp_hosted_transport_config.h | 10 ++++++ host/drivers/transport/transport_drv.c | 17 ++++++--- host/port/src/esp_hosted_transport_config.c | 36 ++++++++++++++++++- idf_component.yml | 2 +- 4 files changed, 58 insertions(+), 7 deletions(-) diff --git a/host/api/include/esp_hosted_transport_config.h b/host/api/include/esp_hosted_transport_config.h index 25b4e449..17f31ee2 100644 --- a/host/api/include/esp_hosted_transport_config.h +++ b/host/api/include/esp_hosted_transport_config.h @@ -34,6 +34,7 @@ struct esp_hosted_sdio_config { gpio_pin_t pin_d1; gpio_pin_t pin_d2; gpio_pin_t pin_d3; + gpio_pin_t pin_reset; uint8_t rx_mode; bool block_mode; bool iomux_enable; @@ -51,6 +52,7 @@ struct esp_hosted_spi_hd_config { gpio_pin_t pin_d1; gpio_pin_t pin_d2; gpio_pin_t pin_d3; + gpio_pin_t pin_reset; /* SPI HD configuration */ uint32_t clk_mhz; @@ -71,6 +73,7 @@ struct esp_hosted_spi_config { gpio_pin_t pin_cs; gpio_pin_t pin_handshake; gpio_pin_t pin_data_ready; + gpio_pin_t pin_reset; /* SPI Full Duplex configuration */ uint16_t tx_queue_size; @@ -86,6 +89,7 @@ struct esp_hosted_uart_config { /* UART pins */ gpio_pin_t pin_tx; gpio_pin_t pin_rx; + gpio_pin_t pin_reset; /* UART configuration */ uint8_t num_data_bits; @@ -121,6 +125,7 @@ struct esp_hosted_transport_config { .pin_d1 = {.port = NULL, .pin = H_SDIO_PIN_D1}, \ .pin_d2 = {.port = NULL, .pin = H_SDIO_PIN_D2}, \ .pin_d3 = {.port = NULL, .pin = H_SDIO_PIN_D3}, \ + .pin_reset = {.port = NULL, .pin = H_GPIO_PIN_RESET_Pin }, \ .rx_mode = H_SDIO_HOST_RX_MODE, \ .block_mode = H_SDIO_TX_BLOCK_ONLY_XFER && H_SDIO_RX_BLOCK_ONLY_XFER, \ .iomux_enable = false, \ @@ -149,6 +154,7 @@ struct esp_hosted_transport_config { .pin_d1 = {.port = NULL, .pin = H_SPI_HD_PIN_D1}, \ .pin_d2 = {.port = NULL, .pin = H_SPI_HD_PIN_D2}, \ .pin_d3 = {.port = NULL, .pin = H_SPI_HD_PIN_D3}, \ + .pin_reset = {.port = NULL, .pin = H_GPIO_PIN_RESET_Pin }, \ .clk_mhz = H_SPI_HD_CLK_MHZ, \ .mode = H_SPI_HD_MODE, \ .tx_queue_size = H_SPI_HD_TX_QUEUE_SIZE, \ @@ -169,6 +175,7 @@ struct esp_hosted_transport_config { .pin_cs = {.port = NULL, .pin = H_GPIO_CS_Pin}, \ .pin_handshake = {.port = NULL, .pin = H_GPIO_HANDSHAKE_Pin}, \ .pin_data_ready = {.port = NULL, .pin = H_GPIO_DATA_READY_Pin}, \ + .pin_reset = {.port = NULL, .pin = H_GPIO_PIN_RESET_Pin }, \ .tx_queue_size = H_SPI_TX_Q, \ .rx_queue_size = H_SPI_RX_Q, \ .mode = H_SPI_MODE, \ @@ -182,6 +189,7 @@ struct esp_hosted_transport_config { .port = H_UART_PORT, \ .pin_tx = {.port = NULL, .pin = H_UART_TX_PIN}, \ .pin_rx = {.port = NULL, .pin = H_UART_RX_PIN}, \ + .pin_reset = {.port = NULL, .pin = H_GPIO_PIN_RESET_Pin }, \ .num_data_bits = H_UART_NUM_DATA_BITS, \ .parity = H_UART_PARITY, \ .stop_bits = H_UART_STOP_BITS, \ @@ -197,6 +205,8 @@ struct esp_hosted_transport_config { /* Configuration get/set functions */ esp_hosted_transport_err_t esp_hosted_transport_set_default_config(void); esp_hosted_transport_err_t esp_hosted_transport_get_config(struct esp_hosted_transport_config **config); +esp_hosted_transport_err_t esp_hosted_transport_get_reset_config(gpio_pin_t *pin_config); + bool esp_hosted_transport_is_config_valid(void); #if H_TRANSPORT_SDIO == H_TRANSPORT_IN_USE diff --git a/host/drivers/transport/transport_drv.c b/host/drivers/transport/transport_drv.c index bc35d503..3039d2ee 100644 --- a/host/drivers/transport/transport_drv.c +++ b/host/drivers/transport/transport_drv.c @@ -20,6 +20,7 @@ #include "transport_drv.h" #include "esp_hosted_transport.h" #include "esp_hosted_transport_init.h" +#include "esp_hosted_transport_config.h" #include "stats.h" #include "esp_log.h" #include "esp_hosted_log.h" @@ -62,14 +63,20 @@ uint8_t is_transport_tx_ready(void) static void reset_slave(void) { - ESP_LOGI(TAG, "Reset slave using GPIO[%u]", H_GPIO_PIN_RESET_Pin); - g_h.funcs->_h_config_gpio(H_GPIO_PIN_RESET_Port, H_GPIO_PIN_RESET_Pin, H_GPIO_MODE_DEF_OUTPUT); + gpio_pin_t reset_pin = { 0 }; + if (ESP_TRANSPORT_OK != esp_hosted_transport_get_reset_config(&reset_pin)) { + ESP_LOGE(TAG, "Unable to get RESET config for transport"); + return; + } + + ESP_LOGI(TAG, "Reset slave using GPIO[%u]", reset_pin.pin); + g_h.funcs->_h_config_gpio(H_GPIO_PIN_RESET_Port, reset_pin.pin, H_GPIO_MODE_DEF_OUTPUT); - g_h.funcs->_h_write_gpio(H_GPIO_PIN_RESET_Port, H_GPIO_PIN_RESET_Pin, H_RESET_VAL_ACTIVE); + g_h.funcs->_h_write_gpio(reset_pin.port, reset_pin.pin, H_RESET_VAL_ACTIVE); g_h.funcs->_h_msleep(50); - g_h.funcs->_h_write_gpio(H_GPIO_PIN_RESET_Port, H_GPIO_PIN_RESET_Pin, H_RESET_VAL_INACTIVE); + g_h.funcs->_h_write_gpio(reset_pin.port, reset_pin.pin, H_RESET_VAL_INACTIVE); g_h.funcs->_h_msleep(50); - g_h.funcs->_h_write_gpio(H_GPIO_PIN_RESET_Port, H_GPIO_PIN_RESET_Pin, H_RESET_VAL_ACTIVE); + g_h.funcs->_h_write_gpio(reset_pin.port, reset_pin.pin, H_RESET_VAL_ACTIVE); /* stop spi transactions short time to avoid slave sync issues */ g_h.funcs->_h_sleep(1); diff --git a/host/port/src/esp_hosted_transport_config.c b/host/port/src/esp_hosted_transport_config.c index c9b1f8f5..0c843bc3 100644 --- a/host/port/src/esp_hosted_transport_config.c +++ b/host/port/src/esp_hosted_transport_config.c @@ -11,7 +11,7 @@ static const char *TAG = "esp_hosted_transport_config"; /* Static configurations */ -static struct esp_hosted_transport_config s_transport_config; +static struct esp_hosted_transport_config s_transport_config = { 0 }; /* Flags to track if configs were set */ static bool esp_hosted_transport_config_set; @@ -48,6 +48,40 @@ esp_hosted_transport_err_t esp_hosted_transport_get_config(struct esp_hosted_tra return ESP_TRANSPORT_OK; } +esp_hosted_transport_err_t esp_hosted_transport_get_reset_config(gpio_pin_t *pin_config) +{ + if (!pin_config) { + return ESP_TRANSPORT_ERR_INVALID_ARG; + } + + switch(s_transport_config.transport_in_use) { + case H_TRANSPORT_SDIO: + pin_config->port = s_transport_config.u.sdio.pin_reset.port; + pin_config->pin = s_transport_config.u.sdio.pin_reset.pin; + break; + case H_TRANSPORT_SPI_HD: + pin_config->port = s_transport_config.u.spi_hd.pin_reset.port; + pin_config->pin = s_transport_config.u.spi_hd.pin_reset.pin; + break; + case H_TRANSPORT_SPI: + pin_config->port = s_transport_config.u.spi.pin_reset.port; + pin_config->pin = s_transport_config.u.spi.pin_reset.pin; + break; + case H_TRANSPORT_UART: + pin_config->port = s_transport_config.u.uart.pin_reset.port; + pin_config->pin = s_transport_config.u.uart.pin_reset.pin; + break; + case H_TRANSPORT_NONE: // drop through to default case + default: + // transport config not yet initialised. Use default Reset pin config + pin_config->port = NULL; + pin_config->pin = H_GPIO_PIN_RESET_Pin; + break; + } + + return ESP_TRANSPORT_OK; +} + #if H_TRANSPORT_IN_USE == H_TRANSPORT_SDIO /* SDIO functions */ esp_hosted_transport_err_t esp_hosted_sdio_get_config(struct esp_hosted_sdio_config **config) diff --git a/idf_component.yml b/idf_component.yml index ed9122d4..0ffefbcd 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "1.3.3" +version: "1.3.4" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: From 4170b37a9f2375ec0311726c3a3d566f3576ed53 Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Wed, 19 Mar 2025 11:30:05 +0800 Subject: [PATCH 004/114] workaround(sdio_host): restart host if sdio slave is unresponsive --- host/drivers/transport/sdio/sdio_drv.c | 27 ++++++++++++++++++++------ host/hosted_os_abstraction.h | 2 ++ host/port/include/sdio_wrapper.h | 1 + host/port/src/os_wrapper.c | 12 +++++++++++- 4 files changed, 35 insertions(+), 7 deletions(-) diff --git a/host/drivers/transport/sdio/sdio_drv.c b/host/drivers/transport/sdio/sdio_drv.c index 0f991dab..363c89eb 100644 --- a/host/drivers/transport/sdio/sdio_drv.c +++ b/host/drivers/transport/sdio/sdio_drv.c @@ -48,8 +48,8 @@ static const char TAG[] = "H_SDIO_DRV"; // max number of time to try to read write buffer available reg #define MAX_WRITE_BUF_RETRIES 50 -// max number of times to try to write data to slave device -#define MAX_WRITE_RETRIES 2 +/* Actual data sdio_write max retry */ +#define MAX_SDIO_WRITE_RETRY 2 // this locks the sdio transaction at the driver level, instead of at the HAL layer #define USE_DRIVER_LOCK @@ -307,12 +307,23 @@ static int sdio_is_write_buffer_available(uint32_t buf_needed) { static uint32_t buf_available = 0; uint8_t retry = MAX_WRITE_BUF_RETRIES; + uint32_t max_retry_sdio_not_responding = 2; /*If buffer needed are less than buffer available then only read for available buffer number from slave*/ if (buf_available < buf_needed) { while (retry) { - sdio_get_tx_buffer_num(&buf_available, ACQUIRE_LOCK); + if (sdio_get_tx_buffer_num(&buf_available, ACQUIRE_LOCK) == + ESP_HOSTED_SDIO_UNRESPONSIVE_CODE) { + max_retry_sdio_not_responding--; + /* restart the host to avoid the sdio locked out state */ + + if (!max_retry_sdio_not_responding) { + ESP_LOGE(TAG, "%s: SDIO slave unresponsive, restart host", __func__); + g_h.funcs->_h_restart_host(); + } + continue; + } if (buf_available < buf_needed) { @@ -468,12 +479,14 @@ static void sdio_write_task(void const* pvParameters) ESP_LOGE(TAG, "%s: %d: Failed to send data: %d %ld %ld", __func__, retries, ret, len_to_send, data_left); retries++; - if (retries < MAX_WRITE_RETRIES) { + if (retries < MAX_SDIO_WRITE_RETRY) { ESP_LOGD(TAG, "retry"); continue; } else { - ESP_LOGE(TAG, "abort sending of data"); - goto unlock_done; + SDIO_DRV_UNLOCK(); + ESP_LOGE(TAG, "Unrecoverable host sdio state, reset host mcu"); + g_h.funcs->_h_restart_host(); + goto done; } } @@ -815,6 +828,8 @@ static void sdio_read_task(void const* pvParameters) ESP_LOGE(TAG, "failed to read interrupt register"); SDIO_DRV_UNLOCK(); + ESP_LOGI(TAG, "Host is reseting itself, to avoid any sdio race condition"); + g_h.funcs->_h_restart_host(); continue; } #endif diff --git a/host/hosted_os_abstraction.h b/host/hosted_os_abstraction.h index 6ba1ddd1..8d2b17a9 100644 --- a/host/hosted_os_abstraction.h +++ b/host/hosted_os_abstraction.h @@ -103,6 +103,8 @@ typedef struct { /* 57 */ int (*_h_uart_read)(void *ctx, uint8_t *data, uint16_t size); /* 58 */ int (*_h_uart_write)(void *ctx, uint8_t *data, uint16_t size); #endif + +/* 59 */ int (*_h_restart_host)(void); } hosted_osi_funcs_t; struct hosted_config_t { diff --git a/host/port/include/sdio_wrapper.h b/host/port/include/sdio_wrapper.h index eccf243d..9491841f 100644 --- a/host/port/include/sdio_wrapper.h +++ b/host/port/include/sdio_wrapper.h @@ -22,6 +22,7 @@ #include "sdmmc_cmd.h" #define MAX_TRANSPORT_BUFFER_SIZE MAX_SDIO_BUFFER_SIZE +#define ESP_HOSTED_SDIO_UNRESPONSIVE_CODE 0x107 /* Hosted init function to init the SDIO host * returns a pointer to the sdio context */ diff --git a/host/port/src/os_wrapper.c b/host/port/src/os_wrapper.c index 009bfd9f..8506d53c 100644 --- a/host/port/src/os_wrapper.c +++ b/host/port/src/os_wrapper.c @@ -22,6 +22,7 @@ #include "freertos/portmacro.h" #include "esp_macros.h" #include "esp_hosted_config.h" +#include "esp_wifi.h" /* Wi-Fi headers are reused at ESP-Hosted */ #include "esp_wifi_crypto_types.h" @@ -47,7 +48,7 @@ DEFINE_LOG_TAG(os_wrapper_esp); struct mempool * nw_mp_g = NULL; -wpa_crypto_funcs_t g_wifi_default_wpa_crypto_funcs; +const wpa_crypto_funcs_t g_wifi_default_wpa_crypto_funcs; wifi_osi_funcs_t g_wifi_osi_funcs; //ESP_EVENT_DECLARE_BASE(WIFI_EVENT); @@ -778,6 +779,14 @@ void hosted_log_write(int level, va_end(list); } +int hosted_restart_host(void) +{ + ESP_LOGI(TAG, "Restarting host"); + esp_unregister_shutdown_handler((shutdown_handler_t)esp_wifi_stop); + esp_restart(); + return 0; +} + /* newlib hooks */ hosted_osi_funcs_t g_hosted_osi_funcs = { @@ -851,4 +860,5 @@ hosted_osi_funcs_t g_hosted_osi_funcs = { ._h_uart_read = hosted_uart_read , ._h_uart_write = hosted_uart_write , #endif + ._h_restart_host = hosted_restart_host , }; From 98f44dbbfd1a67d2bc26e81e5f73879cbce1e9b4 Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Wed, 19 Mar 2025 14:41:37 +0800 Subject: [PATCH 005/114] Update .gitlab-ci.yml file --- .gitlab-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d46807a3..a2e61d5b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -34,7 +34,7 @@ before_script: build_idf_v5.3: extends: .build_template - image: espressif/idf:release-v5.3 + image: ${CI_DOCKER_REGISTRY}/esp-env-v5.3 parallel: matrix: - IDF_TARGET: ["esp32p4", "esp32h2", "esp32s3"] @@ -42,7 +42,7 @@ build_idf_v5.3: build_idf_v5.4: extends: .build_template - image: espressif/idf:release-v5.4 + image: ${CI_DOCKER_REGISTRY}/esp-env-v5.4 parallel: matrix: - IDF_TARGET: ["esp32p4", "esp32h2", "esp32s3"] @@ -50,7 +50,7 @@ build_idf_v5.4: build_idf_v5.5: extends: .build_template - image: espressif/idf:latest + image: ${CI_DOCKER_REGISTRY}/esp-env-latest parallel: matrix: - IDF_TARGET: ["esp32p4", "esp32h2", "esp32s3"] From 0ece814e5a7f8238271c6a8507860c01b0cf56b5 Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Wed, 19 Mar 2025 14:43:53 +0800 Subject: [PATCH 006/114] Update .gitlab-ci.yml file --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a2e61d5b..532a7841 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,6 +8,7 @@ before_script: stage: build tags: - build + image: ${CI_DOCKER_REGISTRY}/esp-env-v5.3 artifacts: paths: - "${IDF_PATH}/${IDF_EXAMPLE_PATH}/build*/build_log.txt" @@ -34,7 +35,6 @@ before_script: build_idf_v5.3: extends: .build_template - image: ${CI_DOCKER_REGISTRY}/esp-env-v5.3 parallel: matrix: - IDF_TARGET: ["esp32p4", "esp32h2", "esp32s3"] From 9e091754dcc28cc3e338ba1809b184ea00c7c1d4 Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Wed, 19 Mar 2025 14:50:17 +0800 Subject: [PATCH 007/114] Update .gitlab-ci.yml file --- .gitlab-ci.yml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 532a7841..5cfe88a1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,14 +1,26 @@ stages: + - pre_check - build before_script: - git submodule update --init --recursive +check_version: + stage: pre_check + image: ${CI_DOCKER_REGISTRY}/esp-env-v5.4:1 + script: + echo "Hello for MCU" + rules: + - when: always + tags: + - build + + .build_template: stage: build tags: - build - image: ${CI_DOCKER_REGISTRY}/esp-env-v5.3 + image: ${CI_DOCKER_REGISTRY}/esp-env-v5.4:1 artifacts: paths: - "${IDF_PATH}/${IDF_EXAMPLE_PATH}/build*/build_log.txt" From 6d3cb01756579109c61f7475fe05e198f0f8d93e Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Wed, 19 Mar 2025 17:41:15 +0800 Subject: [PATCH 008/114] Update .gitlab-ci.yml file --- .gitlab-ci.yml | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5cfe88a1..d46807a3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,26 +1,13 @@ stages: - - pre_check - build before_script: - git submodule update --init --recursive -check_version: - stage: pre_check - image: ${CI_DOCKER_REGISTRY}/esp-env-v5.4:1 - script: - echo "Hello for MCU" - rules: - - when: always - tags: - - build - - .build_template: stage: build tags: - build - image: ${CI_DOCKER_REGISTRY}/esp-env-v5.4:1 artifacts: paths: - "${IDF_PATH}/${IDF_EXAMPLE_PATH}/build*/build_log.txt" @@ -47,6 +34,7 @@ check_version: build_idf_v5.3: extends: .build_template + image: espressif/idf:release-v5.3 parallel: matrix: - IDF_TARGET: ["esp32p4", "esp32h2", "esp32s3"] @@ -54,7 +42,7 @@ build_idf_v5.3: build_idf_v5.4: extends: .build_template - image: ${CI_DOCKER_REGISTRY}/esp-env-v5.4 + image: espressif/idf:release-v5.4 parallel: matrix: - IDF_TARGET: ["esp32p4", "esp32h2", "esp32s3"] @@ -62,7 +50,7 @@ build_idf_v5.4: build_idf_v5.5: extends: .build_template - image: ${CI_DOCKER_REGISTRY}/esp-env-latest + image: espressif/idf:latest parallel: matrix: - IDF_TARGET: ["esp32p4", "esp32h2", "esp32s3"] From 19e7be781e40de528138fd3d4fe1bde278ccb143 Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Thu, 27 Mar 2025 10:33:39 +0800 Subject: [PATCH 009/114] bugfix(stats) Fix build failure when raw throughput test is enabled - added required header files --- host/utils/stats.c | 1 + idf_component.yml | 2 +- slave/main/stats.c | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/host/utils/stats.c b/host/utils/stats.c index 88544042..3917fc37 100644 --- a/host/utils/stats.c +++ b/host/utils/stats.c @@ -23,6 +23,7 @@ #include "transport_drv.h" #endif #include "esp_log.h" +#include "esp_hosted_transport_init.h" // use mempool and zero copy for Tx #include "mempool.h" diff --git a/idf_component.yml b/idf_component.yml index 0ffefbcd..909043b2 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "1.3.4" +version: "1.3.5" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/stats.c b/slave/main/stats.c index 202de30d..260c4db9 100644 --- a/slave/main/stats.c +++ b/slave/main/stats.c @@ -17,6 +17,7 @@ #include "stats.h" #include #include "esp_log.h" +#include "esp_hosted_transport_init.h" #if TEST_RAW_TP || ESP_PKT_STATS static const char TAG[] = "stats"; @@ -269,4 +270,3 @@ uint8_t debug_get_raw_tp_conf(void) { #endif return raw_tp_cap; } - From 9755f7141968ab6b3733119c44eba758d4b14087 Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Thu, 27 Mar 2025 15:39:04 +0800 Subject: [PATCH 010/114] enhance(deassert_hs_after_cs) Deassert HS and start new transaction after SPI CS deasserted - added config to deassert Handshake only after CS is deasserted, and wait for the next CS assertion to start a transaction - on some MCUs, deasserting the SPI CS signal can be delayed after the end of a SPI transaction - when this happens, the slave may mis-detect this as the start of a new SPI transaction (since CS is still low), resulting in data loss - removed extra GPIO pin config for C5 --- idf_component.yml | 2 +- slave/main/Kconfig.projbuild | 11 +++++++- slave/main/spi_slave_api.c | 53 ++++++++++++++++++++++++++++++++---- 3 files changed, 59 insertions(+), 7 deletions(-) diff --git a/idf_component.yml b/idf_component.yml index 909043b2..39ea8038 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "1.3.5" +version: "1.4.0" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/Kconfig.projbuild b/slave/main/Kconfig.projbuild index 0ebdd9fb..7a7e48e5 100644 --- a/slave/main/Kconfig.projbuild +++ b/slave/main/Kconfig.projbuild @@ -219,6 +219,16 @@ menu "Example Configuration" Host uses this pin to reset the slave ESP. To re-use ESP 'RST' or 'EN' GPIO, set value to -1 endmenu + config ESP_SPI_DEASSERT_HS_ON_CS + bool "Deassert Handshake when SPI CS is deasserted" + default y + help + Deassert Handshake and prepare a new SPI transaction only after + CS has been deasserted. This helps prevent data loss with MCUs + that delay deasserting CS after the end of a SPI transaction + by prematurely starting a new slave SPI transaction + since CS is detected by the slave as still asserted. + config ESP_SPI_TX_Q_SIZE int "ESP to Host SPI queue size" default 10 if IDF_TARGET_ESP32 @@ -455,7 +465,6 @@ menu "Example Configuration" int "Slave GPIO pin for Data Ready" default 2 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD default 0 if IDF_TARGET_ESP32C5 - default 13 if IDF_TARGET_ESP32C5 default 11 help Slave GPIO pin for indicating host that SPI slave has data to be read by host diff --git a/slave/main/spi_slave_api.c b/slave/main/spi_slave_api.c index b51903e8..d00eaed4 100644 --- a/slave/main/spi_slave_api.c +++ b/slave/main/spi_slave_api.c @@ -50,6 +50,13 @@ static const char TAG[] = "SPI_DRIVER"; #define SPI_RX_QUEUE_SIZE CONFIG_ESP_SPI_RX_Q_SIZE #define SPI_TX_QUEUE_SIZE CONFIG_ESP_SPI_TX_Q_SIZE +// de-assert HS signal on CS, instead of at end of transaction +#if defined(CONFIG_ESP_SPI_DEASSERT_HS_ON_CS) +#define HS_DEASSERT_ON_CS (1) +#else +#define HS_DEASSERT_ON_CS (0) +#endif + /* By default both Handshake and Data Ready used Active High, * unless configured otherwise. * For Active low, set value as 0 */ @@ -80,7 +87,11 @@ static const char TAG[] = "SPI_DRIVER"; #define GPIO_MASK_DATA_READY (1ULL << GPIO_DATA_READY) #define GPIO_MASK_HANDSHAKE (1ULL << GPIO_HANDSHAKE) +#if HS_DEASSERT_ON_CS +#define H_CS_INTR_TO_CLEAR_HS GPIO_INTR_ANYEDGE +#else #define H_CS_INTR_TO_CLEAR_HS GPIO_INTR_NEGEDGE +#endif #if H_HANDSHAKE_ACTIVE_HIGH #define H_HS_VAL_ACTIVE GPIO_OUT_W1TS_REG @@ -106,6 +117,9 @@ static interface_context_t context; static interface_handle_t if_handle_g; static SemaphoreHandle_t spi_tx_sem; static SemaphoreHandle_t spi_rx_sem; +#if HS_DEASSERT_ON_CS +static SemaphoreHandle_t wait_cs_deassert_sem; +#endif static QueueHandle_t spi_rx_queue[MAX_PRIORITY_QUEUES]; static QueueHandle_t spi_tx_queue[MAX_PRIORITY_QUEUES]; #if DUMMY_TRANS_DESIGN @@ -380,9 +394,10 @@ static void IRAM_ATTR spi_post_trans_cb(spi_slave_transaction_t *trans) xSemaphoreGive(spi_sema); } #endif +#if !HS_DEASSERT_ON_CS /* Clear handshake line */ reset_handshake_gpio(); - +#endif } static uint8_t * get_next_tx_buffer(uint32_t *len) @@ -649,8 +664,8 @@ static void spi_transaction_post_process_task(void* pvParameters) /* Await transmission result, after any kind of transmission a new packet * (dummy or real) must be placed in SPI slave */ - spi_slave_get_trans_result(ESP_SPI_CONTROLLER, &spi_trans, - portMAX_DELAY); + ESP_ERROR_CHECK(spi_slave_get_trans_result(ESP_SPI_CONTROLLER, &spi_trans, + portMAX_DELAY)); #if DUMMY_TRANS_DESIGN if (spi_trans->tx_buffer) { header = (struct esp_payload_header *) spi_trans->tx_buffer; @@ -677,6 +692,17 @@ static void spi_transaction_post_process_task(void* pvParameters) if (ret == pdTRUE) queue_dummy_transaction(); #else + +#if HS_DEASSERT_ON_CS + /* Wait until CS has been deasserted before we queue a new transaction. + * + * Some MCUs delay deasserting CS at the end of a transaction. + * If we queue a new transaction without waiting for CS to deassert, + * the slave SPI can start (since CS is still asserted), and data is lost + * as host is not expecting any data. + */ + xSemaphoreTake(wait_cs_deassert_sem, portMAX_DELAY); +#endif /* Queue new transaction to get ready as soon as possible */ queue_next_transaction(); assert(spi_trans); @@ -713,7 +739,19 @@ static void spi_transaction_post_process_task(void* pvParameters) static void IRAM_ATTR gpio_disable_hs_isr_handler(void* arg) { +#if HS_DEASSERT_ON_CS + int level = gpio_get_level(GPIO_CS); + if (level == 0) { + /* CS is asserted, disable HS */ + reset_handshake_gpio(); + } else { + /* Last transaction complete, populate next one */ + if (wait_cs_deassert_sem) + xSemaphoreGive(wait_cs_deassert_sem); + } +#else reset_handshake_gpio(); +#endif } static void register_hs_disable_pin(uint32_t gpio_num) @@ -824,6 +862,11 @@ static interface_handle_t * esp_spi_init(void) gpio_set_drive_capability(GPIO_MISO, GPIO_DRIVE_CAP_3); gpio_set_pull_mode(GPIO_MISO, GPIO_PULLDOWN_ONLY); +#if HS_DEASSERT_ON_CS + wait_cs_deassert_sem = xSemaphoreCreateBinary(); + assert(wait_cs_deassert_sem!= NULL); + ret = xSemaphoreTake(wait_cs_deassert_sem, 0); +#endif memset(&if_handle_g, 0, sizeof(if_handle_g)); if_handle_g.state = INIT; @@ -930,11 +973,11 @@ static int32_t esp_spi_write(interface_handle_t *handle, interface_buffer_handle else xQueueSend(spi_tx_queue[PRIO_Q_OTHERS], &tx_buf_handle, portMAX_DELAY); - xSemaphoreGive(spi_tx_sem); - /* indicate waiting data on ready pin */ set_dataready_gpio(); + xSemaphoreGive(spi_tx_sem); + return buf_handle->payload_len; } From 53cf719427891cd8687168549eda278319920587 Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Wed, 9 Apr 2025 13:42:39 +0800 Subject: [PATCH 011/114] bugfix(fg_mempool): Allocate mempool from DMA capable memory - Make sure mempool memory is allocated from DMA capable memory, even if PSRAM is enabled --- idf_component.yml | 2 +- slave/main/mempool.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/idf_component.yml b/idf_component.yml index 39ea8038..9e700a06 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "1.4.0" +version: "1.4.1" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/mempool.c b/slave/main/mempool.c index 5ed61662..098f2723 100644 --- a/slave/main/mempool.c +++ b/slave/main/mempool.c @@ -33,7 +33,7 @@ struct hosted_mempool * hosted_mempool_create(void *pre_allocated_mem, if (!pre_allocated_mem) { /* no pre-allocated mem, allocate new */ - heap = (uint8_t *)CALLOC(1, MEMPOOL_ALIGNED(OS_MEMPOOL_BYTES( + heap = (uint8_t *)MEM_ALLOC(MEMPOOL_ALIGNED(OS_MEMPOOL_BYTES( num_blocks,block_size))); if (!heap) { ESP_LOGE(TAG, "mempool create failed, no mem\n"); From 69f81b5bc2ff5a4817d74b25e9ab6b6c320ba2ee Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Fri, 28 Mar 2025 15:31:58 +0800 Subject: [PATCH 012/114] enhance(support_sdio_slots) Add SDIO slot configuration - Kconfig option to select slot - adjust SDIO GPIOs used based on selected SDMMC slot - added a workaround for a ESP-IDF check on SDMMC slot 0 that prevented proper operation in 1-bit SDIO mode - tested both slots on ESP32-P4 Dev Board: - slot 0 with ESP32 on a SDMMC card: OK - slot 1 with ESP32C6 on-board: OK - compiled for ESP32: OK - compiled for ESP32-S3: OK --- Kconfig | 164 +++++++++++++++++- host/api/include/esp_hosted_config.h | 16 +- .../api/include/esp_hosted_transport_config.h | 1 - host/drivers/transport/sdio/sdio_drv.c | 10 +- host/port/src/sdio_wrapper.c | 58 ++++++- 5 files changed, 232 insertions(+), 17 deletions(-) diff --git a/Kconfig b/Kconfig index 9509d7d5..2e3c225c 100644 --- a/Kconfig +++ b/Kconfig @@ -407,6 +407,46 @@ ESP32XX_SPI_CLK_FREQ_RANGE_MAX := 40 endchoice + choice + prompt "SDIO Slot To Use" + default ESP_HOSTED_SDIO_SLOT_1 + help + On the ESP32-P4 EV Board: + - Slot 0 connects to the MicroSD Card slot + - Slot 1 connects to the on-board ESP32-C6 + For the ESP32, Slot 0 is usually occupied by SPI Flash and not usable for SDIO. + For the ESP32-P4, Slot 0 is IOMUXed and GPIO values cannot be changed + + config ESP_HOSTED_SDIO_SLOT_0 + depends on IDF_TARGET_ESP32P4 || IDF_TARGET_ESP32S3 + bool "Slot 0" + + config ESP_HOSTED_SDIO_SLOT_1 + bool "Slot 1" + endchoice + + config ESP_HOSTED_SDIO_SLOT + int + default 0 if ESP_HOSTED_SDIO_SLOT_0 + default 1 if ESP_HOSTED_SDIO_SLOT_1 + + config ESP_HOSTED_SD_PWR_CTRL_LDO_INTERNAL_IO + depends on SOC_SDMMC_IO_POWER_EXTERNAL + bool "SDIO power supply comes from internal LDO IO (READ HELP!)" + default n + help + Only needed when the SDIO module is connected to specific IO pins which can be used for high-speed SDIO. + Please read the schematic first and check if the SD VDD is connected to any internal LDO output. + Unselect this option if the SDIO is powered by an external power supply. + For ESP32-P4 EV Board, SDMMC slot 0 may require internal LDO output. + + config ESP_HOSTED_SD_PWR_CTRL_LDO_IO_ID + depends on SOC_SDMMC_IO_POWER_EXTERNAL && ESP_HOSTED_SD_PWR_CTRL_LDO_INTERNAL_IO + int "LDO ID" + default 4 if IDF_TARGET_ESP32P4 + help + Please check your schematic first and input your LDO ID. + config ESP_HOSTED_SDIO_GPIO_RESET_SLAVE int "GPIO pin for Reseting slave ESP" default 54 if IDF_TARGET_ESP32P4 @@ -446,7 +486,18 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 help "Optimize SDIO CLK by increasing till host practically can support. Clock frequency for ESP32-P4 as host <= 40MHz" - config ESP_HOSTED_SDIO_PIN_CMD +### *START* GPIO SDIO pin configurations for Slot 0 and 1 + config ESP_HOSTED_PRIV_SDIO_PIN_CMD_SLOT_0 + depends on ESP_HOSTED_SDIO_SLOT_0 + int "CMD GPIO number" + default 47 if IDF_TARGET_ESP32S3 + range 44 44 if IDF_TARGET_ESP32P4 + range 15 15 if IDF_TARGET_ESP32 + help + "Value can only be configured for some targets. Displayed always for reference." + + config ESP_HOSTED_PRIV_SDIO_PIN_CMD_SLOT_1 + depends on ESP_HOSTED_SDIO_SLOT_1 int "CMD GPIO number" default 47 if IDF_TARGET_ESP32S3 default 19 if IDF_TARGET_ESP32P4 @@ -454,7 +505,17 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 help "Value can only be configured for some targets. Displayed always for reference." - config ESP_HOSTED_SDIO_PIN_CLK + config ESP_HOSTED_PRIV_SDIO_PIN_CLK_SLOT_0 + depends on ESP_HOSTED_SDIO_SLOT_0 + int "CLK GPIO number" + default 19 if IDF_TARGET_ESP32S3 + range 43 43 if IDF_TARGET_ESP32P4 + range 14 14 if IDF_TARGET_ESP32 + help + "Value can only be configured for some targets. Displayed always for reference." + + config ESP_HOSTED_PRIV_SDIO_PIN_CLK_SLOT_1 + depends on ESP_HOSTED_SDIO_SLOT_1 int "CLK GPIO number" default 19 if IDF_TARGET_ESP32S3 default 18 if IDF_TARGET_ESP32P4 @@ -462,7 +523,17 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 help "Value can only be configured for some targets. Displayed always for reference." - config ESP_HOSTED_SDIO_PIN_D0 + config ESP_HOSTED_PRIV_SDIO_PIN_D0_SLOT_0 + depends on ESP_HOSTED_SDIO_SLOT_0 + int "D0 GPIO number" + default 13 if IDF_TARGET_ESP32S3 + range 39 39 if IDF_TARGET_ESP32P4 + range 2 2 if IDF_TARGET_ESP32 + help + "Value can only be configured for some targets. Displayed always for reference." + + config ESP_HOSTED_PRIV_SDIO_PIN_D0_SLOT_1 + depends on ESP_HOSTED_SDIO_SLOT_1 int "D0 GPIO number" default 13 if IDF_TARGET_ESP32S3 default 14 if IDF_TARGET_ESP32P4 @@ -471,7 +542,17 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 "Value can only be configured for some targets. Displayed always for reference." if ESP_HOSTED_SDIO_4_BIT_BUS - config ESP_HOSTED_SDIO_PRIV_PIN_D1_4BIT_BUS + config ESP_HOSTED_PRIV_SDIO_PIN_D1_4BIT_BUS_SLOT_0 + depends on ESP_HOSTED_SDIO_SLOT_0 + int "D1 GPIO number" + default 35 if IDF_TARGET_ESP32S3 + range 40 40 if IDF_TARGET_ESP32P4 + range 4 4 if IDF_TARGET_ESP32 + help + "Value can only be configured for some targets. Displayed always for reference." + + config ESP_HOSTED_PRIV_SDIO_PIN_D1_4BIT_BUS_SLOT_1 + depends on ESP_HOSTED_SDIO_SLOT_1 int "D1 GPIO number" default 35 if IDF_TARGET_ESP32S3 default 15 if IDF_TARGET_ESP32P4 @@ -479,7 +560,17 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 help "Value can only be configured for some targets. Displayed always for reference." - config ESP_HOSTED_SDIO_PIN_D2 + config ESP_HOSTED_PRIV_SDIO_PIN_D2_4BIT_BUS_SLOT_0 + depends on ESP_HOSTED_SDIO_SLOT_0 + int "D2 GPIO number" + default 20 if IDF_TARGET_ESP32S3 + range 41 41 if IDF_TARGET_ESP32P4 + range 12 12 if IDF_TARGET_ESP32 + help + "Value can only be configured for some targets. Displayed always for reference." + + config ESP_HOSTED_PRIV_SDIO_PIN_D2_4BIT_BUS_SLOT_1 + depends on ESP_HOSTED_SDIO_SLOT_1 int "D2 GPIO number" default 20 if IDF_TARGET_ESP32S3 default 16 if IDF_TARGET_ESP32P4 @@ -487,7 +578,17 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 help "Value can only be configured for some targets. Displayed always for reference." - config ESP_HOSTED_SDIO_PIN_D3 + config ESP_HOSTED_PRIV_SDIO_PIN_D3_4BIT_BUS_SLOT_0 + depends on ESP_HOSTED_SDIO_SLOT_0 + int "D3 GPIO number" + default 9 if IDF_TARGET_ESP32S3 + range 42 42 if IDF_TARGET_ESP32P4 + range 13 13 if IDF_TARGET_ESP32 + help + "Value can only be configured for some targets. Displayed always for reference." + + config ESP_HOSTED_PRIV_SDIO_PIN_D3_4BIT_BUS_SLOT_1 + depends on ESP_HOSTED_SDIO_SLOT_1 int "D3 GPIO number" default 9 if IDF_TARGET_ESP32S3 default 17 if IDF_TARGET_ESP32P4 @@ -497,7 +598,16 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 endif if !ESP_HOSTED_SDIO_4_BIT_BUS - config ESP_HOSTED_SDIO_PRIV_PIN_D1_1BIT_BUS + config ESP_HOSTED_PRIV_SDIO_PIN_D1_1BIT_BUS_SLOT_0 + depends on ESP_HOSTED_SDIO_SLOT_0 + int "D1 GPIO number (Interrupt Line)" + default 35 if IDF_TARGET_ESP32S3 + range 40 40 if IDF_TARGET_ESP32P4 + range 4 4 if IDF_TARGET_ESP32 + help + "Value can only be configured for some targets. Displayed always for reference." + config ESP_HOSTED_PRIV_SDIO_PIN_D1_1BIT_BUS_SLOT_1 + depends on ESP_HOSTED_SDIO_SLOT_1 int "D1 GPIO number (Interrupt Line)" default 35 if IDF_TARGET_ESP32S3 default 15 if IDF_TARGET_ESP32P4 @@ -505,6 +615,46 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 help "Value can only be configured for some targets. Displayed always for reference." endif +### *END* GPIO SDIO pin configurations for Slot 0 and 1 + + config ESP_HOSTED_SDIO_PIN_CMD + int + default ESP_HOSTED_PRIV_SDIO_PIN_CMD_SLOT_0 if ESP_HOSTED_SDIO_SLOT_0 + default ESP_HOSTED_PRIV_SDIO_PIN_CMD_SLOT_1 if ESP_HOSTED_SDIO_SLOT_1 + + config ESP_HOSTED_SDIO_PIN_CLK + int + default ESP_HOSTED_PRIV_SDIO_PIN_CLK_SLOT_0 if ESP_HOSTED_SDIO_SLOT_0 + default ESP_HOSTED_PRIV_SDIO_PIN_CLK_SLOT_1 if ESP_HOSTED_SDIO_SLOT_1 + + config ESP_HOSTED_SDIO_PIN_D0 + int + default ESP_HOSTED_PRIV_SDIO_PIN_D0_SLOT_0 if ESP_HOSTED_SDIO_SLOT_0 + default ESP_HOSTED_PRIV_SDIO_PIN_D0_SLOT_1 if ESP_HOSTED_SDIO_SLOT_1 + + if ESP_HOSTED_SDIO_4_BIT_BUS + config ESP_HOSTED_SDIO_PRIV_PIN_D1_4BIT_BUS + int + default ESP_HOSTED_PRIV_SDIO_PIN_D1_4BIT_BUS_SLOT_0 if ESP_HOSTED_SDIO_SLOT_0 + default ESP_HOSTED_PRIV_SDIO_PIN_D1_4BIT_BUS_SLOT_1 if ESP_HOSTED_SDIO_SLOT_1 + + config ESP_HOSTED_SDIO_PIN_D2 + int + default ESP_HOSTED_PRIV_SDIO_PIN_D2_4BIT_BUS_SLOT_0 if ESP_HOSTED_SDIO_SLOT_0 + default ESP_HOSTED_PRIV_SDIO_PIN_D2_4BIT_BUS_SLOT_1 if ESP_HOSTED_SDIO_SLOT_1 + + config ESP_HOSTED_SDIO_PIN_D3 + int + default ESP_HOSTED_PRIV_SDIO_PIN_D3_4BIT_BUS_SLOT_0 if ESP_HOSTED_SDIO_SLOT_0 + default ESP_HOSTED_PRIV_SDIO_PIN_D3_4BIT_BUS_SLOT_1 if ESP_HOSTED_SDIO_SLOT_1 + endif + + if !ESP_HOSTED_SDIO_4_BIT_BUS + config ESP_HOSTED_SDIO_PRIV_PIN_D1_1BIT_BUS + int + default ESP_HOSTED_PRIV_SDIO_PIN_D1_1BIT_BUS_SLOT_0 if ESP_HOSTED_SDIO_SLOT_0 + default ESP_HOSTED_PRIV_SDIO_PIN_D1_1BIT_BUS_SLOT_1 if ESP_HOSTED_SDIO_SLOT_1 + endif config ESP_HOSTED_SDIO_PIN_D1 int diff --git a/host/api/include/esp_hosted_config.h b/host/api/include/esp_hosted_config.h index f1053e1a..570a17aa 100644 --- a/host/api/include/esp_hosted_config.h +++ b/host/api/include/esp_hosted_config.h @@ -148,7 +148,7 @@ so feel free to change these if needed. #define H_SDIO_CLOCK_FREQ_KHZ CONFIG_ESP_HOSTED_SDIO_CLOCK_FREQ_KHZ #define H_SDIO_BUS_WIDTH CONFIG_ESP_HOSTED_SDIO_BUS_WIDTH -#define H_SDMMC_HOST_SLOT SDMMC_HOST_SLOT_1 +#define H_SDMMC_HOST_SLOT CONFIG_ESP_HOSTED_SDIO_SLOT #ifdef H_SDIO_SOC_USE_GPIO_MATRIX #define H_SDIO_PIN_CLK CONFIG_ESP_HOSTED_SDIO_PIN_CLK @@ -379,6 +379,20 @@ enum { #define H_TEST_RAW_TP_DIR (ESP_TEST_RAW_TP_NONE) #endif +/* ---------------------- ESP-IDF Specific Config start -------------------- */ +/* This section is for ESP-IDF specific support. + * Can be ignored on other hosts MCUs. + */ + +/* Controls whether an Internal LDO powers the SDIO connection */ +#if CONFIG_ESP_HOSTED_SD_PWR_CTRL_LDO_INTERNAL_IO +#define H_SDIO_PWR_CTRL_LDO 1 +#define H_SDIO_PWR_CTRL_LDO_ID CONFIG_ESP_HOSTED_SD_PWR_CTRL_LDO_IO_ID +#else +#define H_SDIO_PWR_CTRL_LDO 0 +#endif + +/* ---------------------- ESP-IDF Specific Config end ---------------------- */ esp_err_t esp_hosted_set_default_config(void); bool esp_hosted_is_config_valid(void); diff --git a/host/api/include/esp_hosted_transport_config.h b/host/api/include/esp_hosted_transport_config.h index 17f31ee2..fd03de33 100644 --- a/host/api/include/esp_hosted_transport_config.h +++ b/host/api/include/esp_hosted_transport_config.h @@ -131,7 +131,6 @@ struct esp_hosted_transport_config { .iomux_enable = false, \ } - #define INIT_DEFAULT_HOST_SDIO_IOMUX_CONFIG() \ (struct esp_hosted_sdio_config) { \ .clock_freq_khz = H_SDIO_CLOCK_FREQ_KHZ, \ diff --git a/host/drivers/transport/sdio/sdio_drv.c b/host/drivers/transport/sdio/sdio_drv.c index 363c89eb..1bc025f0 100644 --- a/host/drivers/transport/sdio/sdio_drv.c +++ b/host/drivers/transport/sdio/sdio_drv.c @@ -303,11 +303,14 @@ static int sdio_get_len_from_slave(uint32_t *rx_size, bool is_lock_needed) #endif +#define MAX_BUFF_FETCH_PERIODICITY 30000 + static int sdio_is_write_buffer_available(uint32_t buf_needed) { static uint32_t buf_available = 0; uint8_t retry = MAX_WRITE_BUF_RETRIES; uint32_t max_retry_sdio_not_responding = 2; + uint32_t interval_us = 400; /*If buffer needed are less than buffer available then only read for available buffer number from slave*/ @@ -330,9 +333,10 @@ static int sdio_is_write_buffer_available(uint32_t buf_needed) ESP_LOGV(TAG, "Retry get write buffers %d", retry); retry--; - if (retry < MAX_WRITE_BUF_RETRIES/2) - g_h.funcs->_h_msleep(1); - + g_h.funcs->_h_usleep(interval_us); + if (interval_us < MAX_BUFF_FETCH_PERIODICITY) { + interval_us += 400; + } continue; } break; diff --git a/host/port/src/sdio_wrapper.c b/host/port/src/sdio_wrapper.c index a5ff1f81..25fa687d 100644 --- a/host/port/src/sdio_wrapper.c +++ b/host/port/src/sdio_wrapper.c @@ -22,6 +22,13 @@ #include "esp_hosted_config.h" #include "esp_hosted_transport_config.h" +#if H_SDIO_PWR_CTRL_LDO +#include "sd_pwr_ctrl_by_on_chip_ldo.h" +#endif + +#include "soc/sdmmc_pins.h" +#include "hal/sdmmc_ll.h" + #include "esp_log.h" DEFINE_LOG_TAG(sdio_wrapper); @@ -50,6 +57,42 @@ static sdmmc_context_t context = { 0 }; static void * sdio_bus_lock; +// workarounds for known ESP-IDF SDMMC issues +static void hosted_sdio_workaround(int slot, sdmmc_slot_config_t *slot_config) +{ + if (slot == 0) { +#if !SDMMC_LL_SLOT_SUPPORT_GPIO_MATRIX(0) + /* workaround for 1-bit mode on Slot 0 with IOMUX only pins: + * set gpio pins D2, D3 to pass sdmmc_host.c->sdmmc_host_init_slot() IOMUX GPIO checking + */ + if (slot_config->width == 1) { + ESP_LOGW(TAG, "workaround: setting D2-D3 in 1 bit mode for slot %d", slot); + slot_config->d2 = SDMMC_SLOT0_IOMUX_PIN_NUM_D2; + slot_config->d3 = SDMMC_SLOT0_IOMUX_PIN_NUM_D3; + } +#endif + } +} + +static bool hosted_sdio_enable_ldo(sdmmc_host_t *config) +{ +#if H_SDIO_PWR_CTRL_LDO + // enable LDO Power for slot, if required + sd_pwr_ctrl_ldo_config_t ldo_config = { + .ldo_chan_id = H_SDIO_PWR_CTRL_LDO_ID, + }; + sd_pwr_ctrl_handle_t pwr_ctrl_handle = NULL; + + esp_err_t ret = sd_pwr_ctrl_new_on_chip_ldo(&ldo_config, &pwr_ctrl_handle); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to create a new on-chip LDO power control driver"); + return false; + } + config->pwr_ctrl_handle = pwr_ctrl_handle; +#endif + return true; +} + static esp_err_t hosted_sdio_print_cis_information(sdmmc_card_t* card) { uint8_t cis_buffer[CIS_BUFFER_SIZE]; @@ -299,6 +342,8 @@ void * hosted_sdio_init(void) slot_config.d3 = context.config.pin_d3.pin; #endif + hosted_sdio_workaround(context.config.slot, &slot_config); + res = sdmmc_host_init_slot(context.config.slot, &slot_config); if (res != ESP_OK) { ESP_LOGE(TAG, "init SDMMC Host slot %d failed", H_SDMMC_HOST_SLOT); @@ -325,13 +370,16 @@ int hosted_sdio_card_init(void *ctx) struct esp_hosted_sdio_config *sdio_config = &context->config; sdmmc_host_t config = SDMMC_HOST_DEFAULT(); + config.slot = sdio_config->slot; // override default slot set + + if (!hosted_sdio_enable_ldo(&config)) { + goto fail; + } - if (sdio_config->bus_width == 4) - config.flags = SDMMC_HOST_FLAG_4BIT; - else - config.flags = SDMMC_HOST_FLAG_1BIT; config.max_freq_khz = sdio_config->clock_freq_khz; - ESP_LOGI(TAG, "SDIO master: Data-Lines: %d-bit Freq(KHz)[%u KHz]", sdio_config->bus_width==4? 4:1, + ESP_LOGI(TAG, "SDIO master: Slot %d, Data-Lines: %d-bit Freq(KHz)[%u KHz]", + config.slot, + sdio_config->bus_width==4? 4:1, config.max_freq_khz); if (sdio_config->bus_width == 4) { ESP_LOGI(TAG, "GPIOs: CLK[%u] CMD[%u] D0[%u] D1[%u] D2[%u] D3[%u] Slave_Reset[%u]", From 5854c65ba7e22bfde0862c94c81ca9f8bab1d3d0 Mon Sep 17 00:00:00 2001 From: Tim Koczwara Date: Wed, 16 Apr 2025 09:54:33 +0200 Subject: [PATCH 013/114] bugfix(reset_config) Fixes the usage of sdkconfig to switch reset active high/low - Closes https://github.com/espressif/esp-hosted-mcu/issues/44 --- host/api/include/esp_hosted_config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/host/api/include/esp_hosted_config.h b/host/api/include/esp_hosted_config.h index 570a17aa..4c974824 100644 --- a/host/api/include/esp_hosted_config.h +++ b/host/api/include/esp_hosted_config.h @@ -331,7 +331,7 @@ enum { #define H_RESET_ACTIVE_HIGH 1 #endif -#ifdef H_RESET_ACTIVE_HIGH +#if H_RESET_ACTIVE_HIGH #define H_RESET_VAL_ACTIVE H_GPIO_HIGH #define H_RESET_VAL_INACTIVE H_GPIO_LOW #else From 6b565508d403fe437c9d2b1da0bafec6ef764d07 Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Tue, 29 Apr 2025 11:14:39 +0800 Subject: [PATCH 014/114] feat(code_reorg) Moved ESP porting layer - bumped version to 2.0.0 - preparation for adding porting code for other MCUs - move code from `host/port` to `host/port/esp/freertos` - moved hosted api for OTA update into porting layer - code to fetch OTA is system dependent - updated documentation on doing OTA - tested by building for ESP32-P4, and fetching OTA to update co-processor - works as expected --- CMakeLists.txt | 17 +- docs/sdio.md | 2 +- docs/spi_full_duplex.md | 2 +- docs/spi_half_duplex.md | 2 +- docs/uart.md | 2 +- host/api/include/esp_hosted_api.h | 2 +- host/api/include/esp_hosted_ota.h | 35 +++ host/api/src/esp_hosted_api.c | 5 - host/drivers/rpc/wrap/rpc_wrap.c | 211 --------------- host/drivers/rpc/wrap/rpc_wrap.h | 4 + .../include/esp_hosted_wifi_config.h | 0 .../{ => esp/freertos}/include/os_header.h | 0 .../{ => esp/freertos}/include/os_wrapper.h | 0 .../{ => esp/freertos}/include/sdio_wrapper.h | 0 .../freertos}/include/spi_hd_wrapper.h | 0 .../{ => esp/freertos}/include/spi_wrapper.h | 0 .../{ => esp/freertos}/include/uart_wrapper.h | 0 .../freertos}/src/esp_hosted_config.c | 0 host/port/esp/freertos/src/esp_hosted_ota.c | 244 ++++++++++++++++++ .../src/esp_hosted_transport_config.c | 0 host/port/{ => esp/freertos}/src/os_wrapper.c | 0 .../{ => esp/freertos}/src/sdio_wrapper.c | 0 .../{ => esp/freertos}/src/spi_hd_wrapper.c | 0 .../port/{ => esp/freertos}/src/spi_wrapper.c | 0 .../{ => esp/freertos}/src/uart_wrapper.c | 0 idf_component.yml | 2 +- 26 files changed, 299 insertions(+), 229 deletions(-) create mode 100644 host/api/include/esp_hosted_ota.h rename host/port/{ => esp/freertos}/include/esp_hosted_wifi_config.h (100%) rename host/port/{ => esp/freertos}/include/os_header.h (100%) rename host/port/{ => esp/freertos}/include/os_wrapper.h (100%) rename host/port/{ => esp/freertos}/include/sdio_wrapper.h (100%) rename host/port/{ => esp/freertos}/include/spi_hd_wrapper.h (100%) rename host/port/{ => esp/freertos}/include/spi_wrapper.h (100%) rename host/port/{ => esp/freertos}/include/uart_wrapper.h (100%) rename host/port/{ => esp/freertos}/src/esp_hosted_config.c (100%) create mode 100644 host/port/esp/freertos/src/esp_hosted_ota.c rename host/port/{ => esp/freertos}/src/esp_hosted_transport_config.c (100%) rename host/port/{ => esp/freertos}/src/os_wrapper.c (100%) rename host/port/{ => esp/freertos}/src/sdio_wrapper.c (100%) rename host/port/{ => esp/freertos}/src/spi_hd_wrapper.c (100%) rename host/port/{ => esp/freertos}/src/spi_wrapper.c (100%) rename host/port/{ => esp/freertos}/src/uart_wrapper.c (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7054dfc3..41e4423f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,6 +34,9 @@ if(CONFIG_ESP_HOSTED_ENABLED) list(APPEND COMPONENT_SRCS "${common_dir}/protobuf-c/protobuf-c/protobuf-c.c" "${common_dir}/proto/esp_hosted_rpc.pb-c.c" ) list(APPEND COMPONENT_ADD_INCLUDEDIRS "${common_dir}" "${common_dir}/log" "${common_dir}/rpc" "${common_dir}/transport" "${common_dir}/protobuf-c" "${common_dir}/proto" ) + # host ESP32 specific files + list(APPEND COMPONENT_SRCS "${host_dir}/port/esp/freertos/src/esp_hosted_ota.c") + # bt (NimBLE) ### TODO config for HCI over UART list(APPEND COMPONENT_ADD_INCLUDEDIRS "${host_dir}/drivers/bt") @@ -55,19 +58,19 @@ if(CONFIG_ESP_HOSTED_ENABLED) endif() # config files - list(APPEND COMPONENT_ADD_INCLUDEDIRS "${host_dir}/port/include") - list(APPEND COMPONENT_SRCS "${host_dir}/port/src/esp_hosted_config.c" "${host_dir}/port/src/esp_hosted_transport_config.c") + list(APPEND COMPONENT_ADD_INCLUDEDIRS "${host_dir}/port/esp/freertos/include") + list(APPEND COMPONENT_SRCS "${host_dir}/port/esp/freertos/src/esp_hosted_config.c" "${host_dir}/port/esp/freertos/src/esp_hosted_transport_config.c") # transport port files - list(APPEND COMPONENT_SRCS "${host_dir}/port/src/os_wrapper.c") + list(APPEND COMPONENT_SRCS "${host_dir}/port/esp/freertos/src/os_wrapper.c") if(CONFIG_ESP_HOSTED_SDIO_HOST_INTERFACE) - list(APPEND COMPONENT_SRCS "${host_dir}/port/src/sdio_wrapper.c") + list(APPEND COMPONENT_SRCS "${host_dir}/port/esp/freertos/src/sdio_wrapper.c") elseif(CONFIG_ESP_HOSTED_SPI_HD_HOST_INTERFACE) - list(APPEND COMPONENT_SRCS "${host_dir}/port/src/spi_hd_wrapper.c") + list(APPEND COMPONENT_SRCS "${host_dir}/port/esp/freertos/src/spi_hd_wrapper.c") elseif(CONFIG_ESP_HOSTED_SPI_HOST_INTERFACE) - list(APPEND COMPONENT_SRCS "${host_dir}/port/src/spi_wrapper.c") + list(APPEND COMPONENT_SRCS "${host_dir}/port/esp/freertos/src/spi_wrapper.c") elseif(CONFIG_ESP_HOSTED_UART_HOST_INTERFACE) - list(APPEND COMPONENT_SRCS "${host_dir}/port/src/uart_wrapper.c") + list(APPEND COMPONENT_SRCS "${host_dir}/port/esp/freertos/src/uart_wrapper.c") endif() endif() diff --git a/docs/sdio.md b/docs/sdio.md index 1d48c035..4bd7c85b 100644 --- a/docs/sdio.md +++ b/docs/sdio.md @@ -288,7 +288,7 @@ You can re-use your existing web server or create a new locally for testing. Bel 5. On the **host side**, use the `esp_hosted_slave_ota` function to initiate the OTA update: ```c - #include "esp_hosted_api.h" + #include "esp_hosted.h" const char* image_url = "http://example.com/path/to/network_adapter.bin"; //web server full url esp_err_t ret = esp_hosted_slave_ota(image_url); diff --git a/docs/spi_full_duplex.md b/docs/spi_full_duplex.md index 3846e4ec..6e62b978 100644 --- a/docs/spi_full_duplex.md +++ b/docs/spi_full_duplex.md @@ -343,7 +343,7 @@ You can re-use your existing web server or create a new locally for testing. Bel 5. On the **host side**, use the `esp_hosted_slave_ota` function to initiate the OTA update: ```c - #include "esp_hosted_api.h" + #include "esp_hosted.h" const char* image_url = "http://example.com/path/to/network_adapter.bin"; //web server full url esp_err_t ret = esp_hosted_slave_ota(image_url); diff --git a/docs/spi_half_duplex.md b/docs/spi_half_duplex.md index 1b524321..64967538 100644 --- a/docs/spi_half_duplex.md +++ b/docs/spi_half_duplex.md @@ -580,7 +580,7 @@ You can re-use your existing web server or create a new locally for testing. Bel 5. On the **host side**, use the `esp_hosted_slave_ota` function to initiate the OTA update: ```c - #include "esp_hosted_api.h" + #include "esp_hosted.h" const char* image_url = "http://example.com/path/to/network_adapter.bin"; //web server full url esp_err_t ret = esp_hosted_slave_ota(image_url); diff --git a/docs/uart.md b/docs/uart.md index 725139eb..6e8ce079 100644 --- a/docs/uart.md +++ b/docs/uart.md @@ -220,7 +220,7 @@ You can re-use your existing web server or create a new locally for testing. Bel 5. On the **host side**, use the `esp_hosted_slave_ota` function to initiate the OTA update: ```c - #include "esp_hosted_api.h" + #include "esp_hosted.h" const char* image_url = "http://example.com/path/to/network_adapter.bin"; //web server full url esp_err_t ret = esp_hosted_slave_ota(image_url); diff --git a/host/api/include/esp_hosted_api.h b/host/api/include/esp_hosted_api.h index be50610d..69b83795 100644 --- a/host/api/include/esp_hosted_api.h +++ b/host/api/include/esp_hosted_api.h @@ -17,6 +17,7 @@ extern "C" { #include "esp_wifi.h" #include "esp_wifi_remote.h" #include "esp_hosted_api_types.h" +#include "esp_hosted_ota.h" /** Exported variables **/ #define ESP_HOSTED_CHANNEL_CONFIG_DEFAULT() { \ @@ -84,7 +85,6 @@ esp_err_t esp_wifi_remote_set_max_tx_power(int8_t power); esp_err_t esp_wifi_remote_get_max_tx_power(int8_t *power); esp_err_t esp_wifi_remote_sta_get_negotiated_phymode(wifi_phy_mode_t *phymode); esp_err_t esp_wifi_remote_sta_get_aid(uint16_t *aid); -esp_err_t esp_hosted_slave_ota(const char* image_url); esp_err_t esp_hosted_get_coprocessor_fwversion(esp_hosted_coprocessor_fwver_t *ver_info); #if H_WIFI_DUALBAND_SUPPORT diff --git a/host/api/include/esp_hosted_ota.h b/host/api/include/esp_hosted_ota.h new file mode 100644 index 00000000..2a9fffab --- /dev/null +++ b/host/api/include/esp_hosted_ota.h @@ -0,0 +1,35 @@ +/* +* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD +* +* SPDX-License-Identifier: Apache-2.0 +*/ + +/* APIs to do OTA updates of the co-processor + * + * Note: This API is platform dependent + * + * Add additional APIs as required based on how the OTA binary is to + * be fetched. + * + * Source for the API should be in host/port//... + * + * Procedure used by APIs to do OTA update: + * 1. Fetch and prepare OTA binary + * 2. Call rpc_ota_begin() to start OTA + * 3. Repeatedly call rpc_ota_write() with a continuous chunk of OTA data + * 4. Call rpc_ota_end() + * + */ + +#ifndef __ESP_HOSTED_OTA_H__ +#define __ESP_HOSTED_OTA_H__ + +#ifdef ESP_PLATFORM +// OTA API for ESP-IDF +#include "esp_err.h" + +/* Fetch OTA image from a web server (image_url) */ +esp_err_t esp_hosted_slave_ota(const char* image_url); +#endif + +#endif /*__ESP_HOSTED_OTA_H__*/ diff --git a/host/api/src/esp_hosted_api.c b/host/api/src/esp_hosted_api.c index f5a492cf..fb877f87 100644 --- a/host/api/src/esp_hosted_api.c +++ b/host/api/src/esp_hosted_api.c @@ -442,11 +442,6 @@ esp_err_t esp_wifi_remote_get_bandwidths(wifi_interface_t ifx, wifi_bandwidths_t } #endif -esp_err_t esp_hosted_slave_ota(const char* image_url) -{ - return rpc_ota(image_url); -} - esp_err_t esp_hosted_get_coprocessor_fwversion(esp_hosted_coprocessor_fwver_t *ver_info) { return rpc_get_coprocessor_fwversion(ver_info); diff --git a/host/drivers/rpc/wrap/rpc_wrap.c b/host/drivers/rpc/wrap/rpc_wrap.c index 2a2b59ed..ff0e2db3 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.c +++ b/host/drivers/rpc/wrap/rpc_wrap.c @@ -28,13 +28,11 @@ #include "rpc_wrap.h" #include "esp_hosted_rpc.h" #include "esp_log.h" -#include "esp_http_client.h" #include "esp_hosted_wifi_config.h" #include "esp_hosted_api.h" #include "esp_hosted_transport.h" DEFINE_LOG_TAG(rpc_wrap); -static char* OTA_TAG = "h_ota"; uint8_t restart_after_slave_ota = 0; @@ -852,215 +850,6 @@ int rpc_ota_end(void) return rpc_rsp_callback(resp); } -#if !OTA_FROM_WEB_URL -/* This assumes full slave binary is present locally */ -int rpc_ota(char* image_path) -{ - FILE* f = NULL; - char ota_chunk[CHUNK_SIZE] = {0}; - int ret = rpc_ota_begin(); - if (ret == SUCCESS) { - f = fopen(image_path,"rb"); - if (f == NULL) { - ESP_LOGE(OTA_TAG, "Failed to open file %s", image_path); - return FAILURE; - } else { - ESP_LOGV(OTA_TAG, "Success in opening %s file", image_path); - } - while (!feof(f)) { - fread(&ota_chunk, CHUNK_SIZE, 1, f); - ret = rpc_ota_write((uint8_t* )&ota_chunk, CHUNK_SIZE); - if (ret) { - ESP_LOGE(OTA_TAG, "OTA procedure failed!!"); - /* TODO: Do we need to do OTA end irrespective of success/failure? */ - rpc_ota_end(); - return FAILURE; - } - } - ret = rpc_ota_end(); - if (ret) { - return FAILURE; - } - } else { - return FAILURE; - } - ESP_LOGE(OTA_TAG, "ESP32 will restart after 5 sec"); - return SUCCESS; - ESP_LOGE(OTA_TAG, "For OTA, user need to integrate HTTP client lib and then invoke OTA"); - return FAILURE; -} -#else -uint8_t http_err = 0; -static esp_err_t http_client_event_handler(esp_http_client_event_t *evt) -{ - switch(evt->event_id) { - - case HTTP_EVENT_ERROR: - ESP_LOGI(OTA_TAG, "HTTP_EVENT_ERROR"); - http_err = 1; - break; - case HTTP_EVENT_ON_CONNECTED: - ESP_LOGI(OTA_TAG, "HTTP_EVENT_ON_CONNECTED"); - break; - case HTTP_EVENT_HEADER_SENT: - ESP_LOGI(OTA_TAG, "HTTP_EVENT_HEADER_SENT"); - break; - case HTTP_EVENT_ON_HEADER: - ESP_LOGI(OTA_TAG, "HTTP_EVENT_ON_HEADER, key=%s, value=%s", evt->header_key, evt->header_value); - break; - case HTTP_EVENT_ON_DATA: - /* Nothing to handle here */ - break; - case HTTP_EVENT_ON_FINISH: - ESP_LOGI(OTA_TAG, "HTTP_EVENT_ON_FINISH"); - break; - case HTTP_EVENT_DISCONNECTED: - ESP_LOGI(OTA_TAG, "HTTP_EVENT_DISCONNECTED"); - break; - case HTTP_EVENT_REDIRECT: - ESP_LOGW(TAG, "HTTP_EVENT_REDIRECT"); - break; - } - - return ESP_OK; -} - -static esp_err_t _rpc_ota(const char* image_url) -{ - uint8_t *ota_chunk = NULL; - esp_err_t err = 0; - int data_read = 0; - int ota_failed = 0; - - if (image_url == NULL) { - ESP_LOGE(TAG, "Invalid image URL"); - return FAILURE; - } - - /* Initialize HTTP client configuration */ - esp_http_client_config_t config = { - .url = image_url, - .timeout_ms = 5000, - .event_handler = http_client_event_handler, - }; - - esp_http_client_handle_t client = esp_http_client_init(&config); - - ESP_LOGI(OTA_TAG, "http_open"); - if ((err = esp_http_client_open(client, 0)) != ESP_OK) { - ESP_LOGE(OTA_TAG, "Failed to open HTTP connection: %s", esp_err_to_name(err)); - ESP_LOGE(OTA_TAG, "Check if URL is correct and connectable: %s", image_url); - esp_http_client_cleanup(client); - return FAILURE; - } - - if (http_err) { - ESP_LOGE(TAG, "Exiting OTA, due to http failure"); - esp_http_client_close(client); - esp_http_client_cleanup(client); - http_err = 0; - return FAILURE; - } - - ESP_LOGI(OTA_TAG, "http_fetch_headers"); - int64_t content_length = esp_http_client_fetch_headers(client); - if (content_length <= 0) { - ESP_LOGE(OTA_TAG, "HTTP client fetch headers failed"); - ESP_LOGI(TAG, "HTTP GET Status = %d, content_length = %"PRId64, - esp_http_client_get_status_code(client), - esp_http_client_get_content_length(client)); - esp_http_client_close(client); - esp_http_client_cleanup(client); - return FAILURE; - } - - ESP_LOGI(TAG, "HTTP GET Status = %d, content_length = %"PRId64, - esp_http_client_get_status_code(client), - esp_http_client_get_content_length(client)); - - ESP_LOGW(OTA_TAG, "********* Started Slave OTA *******************"); - ESP_LOGI(TAG, "*** Please wait for 5 mins to let slave OTA complete ***"); - - ESP_LOGI(OTA_TAG, "Preparing OTA"); - if ((err = rpc_ota_begin())) { - ESP_LOGW(OTA_TAG, "********* Slave OTA Begin Failed *******************"); - ESP_LOGI(OTA_TAG, "esp_ota_begin failed, error=%s", esp_err_to_name(err)); - esp_http_client_close(client); - esp_http_client_cleanup(client); - return FAILURE; - } - - ota_chunk = (uint8_t*)g_h.funcs->_h_calloc(1, CHUNK_SIZE); - if (!ota_chunk) { - ESP_LOGE(OTA_TAG, "Failed to allocate otachunk mem\n"); - err = -ENOMEM; - } - - ESP_LOGI(OTA_TAG, "Starting OTA"); - - if (!err) { - while ((data_read = esp_http_client_read(client, (char*)ota_chunk, CHUNK_SIZE)) > 0) { - - ESP_LOGV(OTA_TAG, "Read image length %d", data_read); - if ((err = rpc_ota_write(ota_chunk, data_read))) { - ESP_LOGI(OTA_TAG, "rpc_ota_write failed"); - ota_failed = err; - break; - } - } - } - - g_h.funcs->_h_free(ota_chunk); - if (err) { - ESP_LOGW(OTA_TAG, "********* Slave OTA Failed *******************"); - ESP_LOGI(OTA_TAG, "esp_ota_write failed, error=%s", esp_err_to_name(err)); - ota_failed = -1; - } - - if (data_read < 0) { - ESP_LOGE(OTA_TAG, "Error: SSL data read error"); - ota_failed = -2; - } - - if ((err = rpc_ota_end())) { - ESP_LOGW(OTA_TAG, "********* Slave OTA Failed *******************"); - ESP_LOGI(OTA_TAG, "esp_ota_end failed, error=%s", esp_err_to_name(err)); - esp_http_client_close(client); - esp_http_client_cleanup(client); - ota_failed = err; - return FAILURE; - } - - esp_http_client_cleanup(client); - if (!ota_failed) { - ESP_LOGW(OTA_TAG, "********* Slave OTA Complete *******************"); - ESP_LOGI(OTA_TAG, "OTA Successful, Slave will restart in while"); - ESP_LOGE(TAG, "Need to restart host after slave OTA is complete, to avoid sync issues"); - sleep(5); - ESP_LOGE(OTA_TAG, "********* Restarting Host **********************"); - restart_after_slave_ota = 1; - esp_restart(); - } - return ota_failed; -} - -esp_err_t rpc_ota(const char* image_url) -{ - uint8_t ota_retry = 2; - int ret = 0; - - do { - ret = _rpc_ota(image_url); - - ota_retry--; - if (ota_retry && ret) - ESP_LOGI(OTA_TAG, "OTA retry left: %u\n", ota_retry); - } while (ota_retry && ret); - - return ret; -} -#endif - esp_err_t rpc_get_coprocessor_fwversion(esp_hosted_coprocessor_fwver_t *ver_info) { /* implemented synchronous */ diff --git a/host/drivers/rpc/wrap/rpc_wrap.h b/host/drivers/rpc/wrap/rpc_wrap.h index ebe39125..048e572c 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.h +++ b/host/drivers/rpc/wrap/rpc_wrap.h @@ -84,6 +84,10 @@ esp_err_t rpc_wifi_sta_get_aid(uint16_t *aid); esp_err_t rpc_ota(const char* image_url); esp_err_t rpc_get_coprocessor_fwversion(esp_hosted_coprocessor_fwver_t *ver_info); +esp_err_t rpc_ota_begin(void); +esp_err_t rpc_ota_write(uint8_t* ota_data, uint32_t ota_data_len); +esp_err_t rpc_ota_end(void); + #if H_WIFI_DUALBAND_SUPPORT esp_err_t rpc_wifi_set_band(wifi_band_t band); esp_err_t rpc_wifi_get_band(wifi_band_t *band); diff --git a/host/port/include/esp_hosted_wifi_config.h b/host/port/esp/freertos/include/esp_hosted_wifi_config.h similarity index 100% rename from host/port/include/esp_hosted_wifi_config.h rename to host/port/esp/freertos/include/esp_hosted_wifi_config.h diff --git a/host/port/include/os_header.h b/host/port/esp/freertos/include/os_header.h similarity index 100% rename from host/port/include/os_header.h rename to host/port/esp/freertos/include/os_header.h diff --git a/host/port/include/os_wrapper.h b/host/port/esp/freertos/include/os_wrapper.h similarity index 100% rename from host/port/include/os_wrapper.h rename to host/port/esp/freertos/include/os_wrapper.h diff --git a/host/port/include/sdio_wrapper.h b/host/port/esp/freertos/include/sdio_wrapper.h similarity index 100% rename from host/port/include/sdio_wrapper.h rename to host/port/esp/freertos/include/sdio_wrapper.h diff --git a/host/port/include/spi_hd_wrapper.h b/host/port/esp/freertos/include/spi_hd_wrapper.h similarity index 100% rename from host/port/include/spi_hd_wrapper.h rename to host/port/esp/freertos/include/spi_hd_wrapper.h diff --git a/host/port/include/spi_wrapper.h b/host/port/esp/freertos/include/spi_wrapper.h similarity index 100% rename from host/port/include/spi_wrapper.h rename to host/port/esp/freertos/include/spi_wrapper.h diff --git a/host/port/include/uart_wrapper.h b/host/port/esp/freertos/include/uart_wrapper.h similarity index 100% rename from host/port/include/uart_wrapper.h rename to host/port/esp/freertos/include/uart_wrapper.h diff --git a/host/port/src/esp_hosted_config.c b/host/port/esp/freertos/src/esp_hosted_config.c similarity index 100% rename from host/port/src/esp_hosted_config.c rename to host/port/esp/freertos/src/esp_hosted_config.c diff --git a/host/port/esp/freertos/src/esp_hosted_ota.c b/host/port/esp/freertos/src/esp_hosted_ota.c new file mode 100644 index 00000000..a0aae214 --- /dev/null +++ b/host/port/esp/freertos/src/esp_hosted_ota.c @@ -0,0 +1,244 @@ +/* +* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD +* +* SPDX-License-Identifier: Apache-2.0 +*/ + +/* Current OTA method(s) supported: + * - OTA from a HTTP URL + * + * Procedure: + * 1. Prepare OTA binary + * 2. Call rpc_ota_begin() to start OTA + * 3. Repeatedly call rpc_ota_write() with a continuous chunk of OTA data + * 4. Call rpc_ota_end() + */ + +#include "esp_http_client.h" +#include "esp_log.h" + +#include "rpc_wrap.h" +#include "esp_hosted_ota.h" + +#define CHUNK_SIZE 1400 +#define OTA_FROM_WEB_URL 1 + +static char* TAG = "hosted_ota"; + +#if OTA_FROM_WEB_URL +/* Default: Chunk by chunk transfer using esp http client library */ +uint8_t http_err = 0; +static esp_err_t http_client_event_handler(esp_http_client_event_t *evt) +{ + switch(evt->event_id) { + + case HTTP_EVENT_ERROR: + ESP_LOGI(TAG, "HTTP_EVENT_ERROR"); + http_err = 1; + break; + case HTTP_EVENT_ON_CONNECTED: + ESP_LOGI(TAG, "HTTP_EVENT_ON_CONNECTED"); + break; + case HTTP_EVENT_HEADER_SENT: + ESP_LOGI(TAG, "HTTP_EVENT_HEADER_SENT"); + break; + case HTTP_EVENT_ON_HEADER: + ESP_LOGI(TAG, "HTTP_EVENT_ON_HEADER, key=%s, value=%s", evt->header_key, evt->header_value); + break; + case HTTP_EVENT_ON_DATA: + /* Nothing to handle here */ + break; + case HTTP_EVENT_ON_FINISH: + ESP_LOGI(TAG, "HTTP_EVENT_ON_FINISH"); + break; + case HTTP_EVENT_DISCONNECTED: + ESP_LOGI(TAG, "HTTP_EVENT_DISCONNECTED"); + break; + case HTTP_EVENT_REDIRECT: + ESP_LOGW(TAG, "HTTP_EVENT_REDIRECT"); + break; + } + + return ESP_OK; +} + +static esp_err_t _hosted_ota(const char* image_url) +{ + uint8_t *ota_chunk = NULL; + esp_err_t err = 0; + int data_read = 0; + int ota_failed = 0; + + if (image_url == NULL) { + ESP_LOGE(TAG, "Invalid image URL"); + return ESP_FAIL; + } + + /* Initialize HTTP client configuration */ + esp_http_client_config_t config = { + .url = image_url, + .timeout_ms = 5000, + .event_handler = http_client_event_handler, + }; + + esp_http_client_handle_t client = esp_http_client_init(&config); + + ESP_LOGI(TAG, "http_open"); + if ((err = esp_http_client_open(client, 0)) != ESP_OK) { + ESP_LOGE(TAG, "Failed to open HTTP connection: %s", esp_err_to_name(err)); + ESP_LOGE(TAG, "Check if URL is correct and connectable: %s", image_url); + esp_http_client_cleanup(client); + return ESP_FAIL; + } + + if (http_err) { + ESP_LOGE(TAG, "Exiting OTA, due to http failure"); + esp_http_client_close(client); + esp_http_client_cleanup(client); + http_err = 0; + return ESP_FAIL; + } + + ESP_LOGI(TAG, "http_fetch_headers"); + int64_t content_length = esp_http_client_fetch_headers(client); + if (content_length <= 0) { + ESP_LOGE(TAG, "HTTP client fetch headers failed"); + ESP_LOGI(TAG, "HTTP GET Status = %d, content_length = %"PRId64, + esp_http_client_get_status_code(client), + esp_http_client_get_content_length(client)); + esp_http_client_close(client); + esp_http_client_cleanup(client); + return ESP_FAIL; + } + + ESP_LOGI(TAG, "HTTP GET Status = %d, content_length = %"PRId64, + esp_http_client_get_status_code(client), + esp_http_client_get_content_length(client)); + + ESP_LOGW(TAG, "********* Started Slave OTA *******************"); + ESP_LOGI(TAG, "*** Please wait for 5 mins to let slave OTA complete ***"); + + ESP_LOGI(TAG, "Preparing OTA"); + if ((err = rpc_ota_begin())) { + ESP_LOGW(TAG, "********* Slave OTA Begin Failed *******************"); + ESP_LOGI(TAG, "esp_ota_begin failed, error=%s", esp_err_to_name(err)); + esp_http_client_close(client); + esp_http_client_cleanup(client); + return ESP_FAIL; + } + + ota_chunk = (uint8_t*)g_h.funcs->_h_calloc(1, CHUNK_SIZE); + if (!ota_chunk) { + ESP_LOGE(TAG, "Failed to allocate otachunk mem\n"); + err = -ENOMEM; + } + + ESP_LOGI(TAG, "Starting OTA"); + + if (!err) { + while ((data_read = esp_http_client_read(client, (char*)ota_chunk, CHUNK_SIZE)) > 0) { + + ESP_LOGV(TAG, "Read image length %d", data_read); + if ((err = rpc_ota_write(ota_chunk, data_read))) { + ESP_LOGI(TAG, "rpc_ota_write failed"); + ota_failed = err; + break; + } + } + } + + g_h.funcs->_h_free(ota_chunk); + if (err) { + ESP_LOGW(TAG, "********* Slave OTA Failed *******************"); + ESP_LOGI(TAG, "esp_ota_write failed, error=%s", esp_err_to_name(err)); + ota_failed = -1; + } + + if (data_read < 0) { + ESP_LOGE(TAG, "Error: SSL data read error"); + ota_failed = -2; + } + + if ((err = rpc_ota_end())) { + ESP_LOGW(TAG, "********* Slave OTA Failed *******************"); + ESP_LOGI(TAG, "esp_ota_end failed, error=%s", esp_err_to_name(err)); + esp_http_client_close(client); + esp_http_client_cleanup(client); + ota_failed = err; + return ESP_FAIL; + } + + esp_http_client_cleanup(client); + if (!ota_failed) { + ESP_LOGW(TAG, "********* Slave OTA Complete *******************"); + ESP_LOGI(TAG, "OTA Successful, Slave will restart in while"); + ESP_LOGE(TAG, "Need to restart host after slave OTA is complete, to avoid sync issues"); + sleep(5); + ESP_LOGE(TAG, "********* Restarting Host **********************"); + esp_restart(); + } + return ota_failed; +} + +static esp_err_t esp_hosted_slave_ota_chunked(const char* image_url) +{ + uint8_t ota_retry = 2; + int ret = 0; + + do { + ret = _hosted_ota(image_url); + + ota_retry--; + if (ota_retry && ret) + ESP_LOGI(TAG, "OTA retry left: %u\n", ota_retry); + } while (ota_retry && ret); + + return ret; +} +#else +/* This assumes full slave binary is present locally */ +static esp_err_t esp_hosted_slave_ota_whole_image(const char* image_path) +{ + FILE* f = NULL; + char ota_chunk[CHUNK_SIZE] = {0}; + int ret = rpc_ota_begin(); + if (ret == ESP_OK) { + f = fopen(image_path,"rb"); + if (f == NULL) { + ESP_LOGE(TAG, "Failed to open file %s", image_path); + return ESP_FAIL; + } else { + ESP_LOGV(TAG, "Success in opening %s file", image_path); + } + while (!feof(f)) { + fread(&ota_chunk, CHUNK_SIZE, 1, f); + ret = rpc_ota_write((uint8_t* )&ota_chunk, CHUNK_SIZE); + if (ret) { + ESP_LOGE(TAG, "OTA procedure failed!!"); + /* TODO: Do we need to do OTA end irrespective of success/failure? */ + rpc_ota_end(); + return ESP_FAIL; + } + } + ret = rpc_ota_end(); + if (ret) { + return ESP_FAIL; + } + } else { + return ESP_FAIL; + } + ESP_LOGE(TAG, "ESP32 will restart after 5 sec"); + return ESP_OK; + ESP_LOGE(TAG, "For OTA, user need to integrate HTTP client lib and then invoke OTA"); + return ESP_FAIL; +} +#endif // ENABLE_HTTP_OTA + +esp_err_t esp_hosted_slave_ota(const char* image_url) +{ +#if OTA_FROM_WEB_URL + return esp_hosted_slave_ota_chunked(image_url); +#else + return esp_hosted_slave_ota_whole_image(image_url); +#endif +} diff --git a/host/port/src/esp_hosted_transport_config.c b/host/port/esp/freertos/src/esp_hosted_transport_config.c similarity index 100% rename from host/port/src/esp_hosted_transport_config.c rename to host/port/esp/freertos/src/esp_hosted_transport_config.c diff --git a/host/port/src/os_wrapper.c b/host/port/esp/freertos/src/os_wrapper.c similarity index 100% rename from host/port/src/os_wrapper.c rename to host/port/esp/freertos/src/os_wrapper.c diff --git a/host/port/src/sdio_wrapper.c b/host/port/esp/freertos/src/sdio_wrapper.c similarity index 100% rename from host/port/src/sdio_wrapper.c rename to host/port/esp/freertos/src/sdio_wrapper.c diff --git a/host/port/src/spi_hd_wrapper.c b/host/port/esp/freertos/src/spi_hd_wrapper.c similarity index 100% rename from host/port/src/spi_hd_wrapper.c rename to host/port/esp/freertos/src/spi_hd_wrapper.c diff --git a/host/port/src/spi_wrapper.c b/host/port/esp/freertos/src/spi_wrapper.c similarity index 100% rename from host/port/src/spi_wrapper.c rename to host/port/esp/freertos/src/spi_wrapper.c diff --git a/host/port/src/uart_wrapper.c b/host/port/esp/freertos/src/uart_wrapper.c similarity index 100% rename from host/port/src/uart_wrapper.c rename to host/port/esp/freertos/src/uart_wrapper.c diff --git a/idf_component.yml b/idf_component.yml index 9e700a06..6bac73b5 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "1.4.1" +version: "2.0.0" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: From 6b76ae116874be95b5a4941eb5f8b0e37cf783bd Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Wed, 7 May 2025 13:24:44 +0800 Subject: [PATCH 015/114] bugfix(idf_master): Fix build break using ESP-IDF master - Fix a build break using latest ESP-IDF master due to changes in `wifi_sta_config_t` - conditional compile using `ESP_IDF_VERSION` for backward compatibility - Use `H_xxx` instead of `CONFIG_ESP_HOSTED_xxx` to calculate counting semaphore size - Bump version - Closes https://github.com/espressif/esp-hosted-mcu/issues/47 --- common/rpc/esp_hosted_bitmasks.h | 95 ++++++++++++++++------------ host/drivers/rpc/core/rpc_req.c | 50 ++++++++++----- host/drivers/rpc/core/rpc_rsp.c | 41 +++++++++--- host/drivers/serial/serial_drv.c | 4 +- idf_component.yml | 2 +- slave/main/slave_control.c | 105 ++++++++++++++++++++++++------- 6 files changed, 208 insertions(+), 89 deletions(-) diff --git a/common/rpc/esp_hosted_bitmasks.h b/common/rpc/esp_hosted_bitmasks.h index 1a432950..198725c0 100644 --- a/common/rpc/esp_hosted_bitmasks.h +++ b/common/rpc/esp_hosted_bitmasks.h @@ -6,29 +6,12 @@ #ifndef __ESP_HOSTED_BITMASKS__H #define __ESP_HOSTED_BITMASKS__H +#include "esp_idf_version.h" + #define H_SET_BIT(pos, val) (val|=(1<>STA_MAX_USED_BIT) - -#define WIFI_CONFIG_STA_SET_RESERVED_VAL(reserved_in,num_out) \ - (num_out|=(reserved_in << STA_MAX_USED_BIT)); - enum { WIFI_SCAN_AP_REC_phy_11b_BIT = 0, WIFI_SCAN_AP_REC_phy_11g_BIT = 1, @@ -46,10 +29,10 @@ enum { #define WIFI_SCAN_AP_RESERVED_BITMASK 0xFC00 #define WIFI_SCAN_AP_GET_RESERVED_VAL(num) \ - ((num&WIFI_SCAN_AP_RESERVED_BITMASK)>>WIFI_SCAN_AP_REC_MAX_USED_BIT) + ((num & WIFI_SCAN_AP_RESERVED_BITMASK) >> WIFI_SCAN_AP_REC_MAX_USED_BIT) #define WIFI_SCAN_AP_SET_RESERVED_VAL(reserved_in,num_out) \ - (num_out|=(reserved_in << WIFI_SCAN_AP_REC_MAX_USED_BIT)); + (num_out |= (reserved_in << WIFI_SCAN_AP_REC_MAX_USED_BIT)); enum { WIFI_STA_INFO_phy_11b_BIT = 0, @@ -64,10 +47,10 @@ enum { #define WIFI_STA_INFO_RESERVED_BITMASK 0xFFC0 #define WIFI_STA_INFO_GET_RESERVED_VAL(num) \ - ((num&WIFI_STA_INFO_RESERVED_BITMASK)>>WIFI_STA_INFO_MAX_USED_BIT) + ((num & WIFI_STA_INFO_RESERVED_BITMASK) >> WIFI_STA_INFO_MAX_USED_BIT) #define WIFI_STA_INFO_SET_RESERVED_VAL(reserved_in,num_out) \ - (num_out|=(reserved_in << WIFI_STA_INFO_MAX_USED_BIT)); + (num_out |= (reserved_in << WIFI_STA_INFO_MAX_USED_BIT)); /* WIFI HE AP Info bitmasks */ enum { @@ -79,27 +62,59 @@ enum { #define WIFI_HE_AP_INFO_BSS_COLOR_BITS 0x3F -/* WIFI HE Station Config bitmasks */ +/*** There are currently two set of bitfields in wifi_sta_config_t */ + +/* WIFI Station Config Bitfield 1 bitmasks */ enum { - WIFI_HE_STA_CONFIG_he_dcm_set_BIT = 0, - // WIFI_HE_STA_CONFIG_he_dcm_max_constellation_tx is two bits wide - WIFI_HE_STA_CONFIG_he_dcm_max_constellation_tx_BITS = 1, - // WIFI_HE_STA_CONFIG_he_dcm_max_constellation_rx is two bits wide - WIFI_HE_STA_CONFIG_he_dcm_max_constellation_rx_BITS = 3, - WIFI_HE_STA_CONFIG_he_mcs9_enabled_BIT = 5, - WIFI_HE_STA_CONFIG_he_su_beamformee_disabled_BIT = 6, - WIFI_HE_STA_CONFIG_he_trig_su_bmforming_feedback_disabled_BIT = 7, - WIFI_HE_STA_CONFIG_he_trig_mu_bmforming_partial_feedback_disabled_BIT = 8, - WIFI_HE_STA_CONFIG_he_trig_cqi_feedback_disabled_BIT = 9, - WIFI_HE_STA_CONFIG_MAX_USED_BIT = 10, + WIFI_STA_CONFIG_1_rm_enabled = 0, + WIFI_STA_CONFIG_1_btm_enabled = 1, + WIFI_STA_CONFIG_1_mbo_enabled = 2, + WIFI_STA_CONFIG_1_ft_enabled = 3, + WIFI_STA_CONFIG_1_owe_enabled = 4, + WIFI_STA_CONFIG_1_transition_disable = 5, + WIFI_STA_CONFIG_1_MAX_USED_BIT = 6, }; -#define WIFI_HE_STA_CONFIG_BITS 0xFC00 +#define WIFI_STA_CONFIG_1_RESERVED_BITMASK 0xFFFFFFC0 + +#define WIFI_STA_CONFIG_1_GET_RESERVED_VAL(num) \ + ((num & WIFI_STA_CONFIG_1_RESERVED_BITMASK) >> WIFI_STA_CONFIG_1_MAX_USED_BIT) + +#define WIFI_STA_CONFIG_1_SET_RESERVED_VAL(reserved_in, num_out) \ + (num_out |= (reserved_in << WIFI_STA_CONFIG_1_MAX_USED_BIT)); + +/* WIFI Station Config Bitfield 2 bitmasks */ +enum { + WIFI_STA_CONFIG_2_he_dcm_set_BIT = 0, + // WIFI_STA_CONFIG_he_dcm_max_constellation_tx is two bits wide + WIFI_STA_CONFIG_2_he_dcm_max_constellation_tx_BITS = 1, + // WIFI_STA_CONFIG_he_dcm_max_constellation_rx is two bits wide + WIFI_STA_CONFIG_2_he_dcm_max_constellation_rx_BITS = 3, + WIFI_STA_CONFIG_2_he_mcs9_enabled_BIT = 5, + WIFI_STA_CONFIG_2_he_su_beamformee_disabled_BIT = 6, + WIFI_STA_CONFIG_2_he_trig_su_bmforming_feedback_disabled_BIT = 7, + WIFI_STA_CONFIG_2_he_trig_mu_bmforming_partial_feedback_disabled_BIT = 8, + WIFI_STA_CONFIG_2_he_trig_cqi_feedback_disabled_BIT = 9, +#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 5, 0) + WIFI_STA_CONFIG_2_MAX_USED_BIT = 10, +#else + WIFI_STA_CONFIG_2_vht_su_beamformee_disabled = 10, + WIFI_STA_CONFIG_2_vht_mu_beamformee_disabled = 11, + WIFI_STA_CONFIG_2_vht_mcs8_enabled = 12, + WIFI_STA_CONFIG_2_MAX_USED_BIT = 13, +#endif +}; + +#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 5, 0) +#define WIFI_STA_CONFIG_2_RESERVED_BITMASK 0xFFFFFC00 +#else +#define WIFI_STA_CONFIG_2_RESERVED_BITMASK 0xFFFFE000 +#endif -#define WIFI_HE_STA_GET_RESERVED_VAL(num) \ - ((num&WIFI_HE_STA_CONFIG_BITS)>>WIFI_HE_STA_CONFIG_MAX_USED_BIT) +#define WIFI_STA_CONFIG_2_GET_RESERVED_VAL(num) \ + ((num & WIFI_STA_CONFIG_2_RESERVED_BITMASK) >> WIFI_STA_CONFIG_2_MAX_USED_BIT) -#define WIFI_HE_STA_SET_RESERVED_VAL(reserved_in,num_out) \ - (num_out|=(reserved_in << WIFI_HE_STA_CONFIG_MAX_USED_BIT)); +#define WIFI_STA_CONFIG_2_SET_RESERVED_VAL(reserved_in,num_out) \ + (num_out |= (reserved_in << WIFI_STA_CONFIG_2_MAX_USED_BIT)); #endif diff --git a/host/drivers/rpc/core/rpc_req.c b/host/drivers/rpc/core/rpc_req.c index 80bb6c69..22331a84 100644 --- a/host/drivers/rpc/core/rpc_req.c +++ b/host/drivers/rpc/core/rpc_req.c @@ -8,6 +8,7 @@ #include "esp_hosted_wifi_config.h" #include "esp_hosted_transport.h" #include "esp_hosted_bitmasks.h" +#include "esp_idf_version.h" DEFINE_LOG_TAG(rpc_req); @@ -231,55 +232,72 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) p_c_sta->pmf_cfg->required = p_a_sta->pmf_cfg.required; if (p_a_sta->rm_enabled) - H_SET_BIT(STA_RM_ENABLED_BIT, p_c_sta->bitmask); + H_SET_BIT(WIFI_STA_CONFIG_1_rm_enabled, p_c_sta->bitmask); if (p_a_sta->btm_enabled) - H_SET_BIT(STA_BTM_ENABLED_BIT, p_c_sta->bitmask); + H_SET_BIT(WIFI_STA_CONFIG_1_btm_enabled, p_c_sta->bitmask); if (p_a_sta->mbo_enabled) - H_SET_BIT(STA_MBO_ENABLED_BIT, p_c_sta->bitmask); + H_SET_BIT(WIFI_STA_CONFIG_1_mbo_enabled, p_c_sta->bitmask); if (p_a_sta->ft_enabled) - H_SET_BIT(STA_FT_ENABLED_BIT, p_c_sta->bitmask); + H_SET_BIT(WIFI_STA_CONFIG_1_ft_enabled, p_c_sta->bitmask); if (p_a_sta->owe_enabled) - H_SET_BIT(STA_OWE_ENABLED_BIT, p_c_sta->bitmask); + H_SET_BIT(WIFI_STA_CONFIG_1_owe_enabled, p_c_sta->bitmask); if (p_a_sta->transition_disable) - H_SET_BIT(STA_TRASITION_DISABLED_BIT, p_c_sta->bitmask); + H_SET_BIT(WIFI_STA_CONFIG_1_transition_disable, p_c_sta->bitmask); - WIFI_CONFIG_STA_SET_RESERVED_VAL(p_a_sta->reserved, p_c_sta->bitmask); +#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 5, 0) + WIFI_STA_CONFIG_1_SET_RESERVED_VAL(p_a_sta->reserved, p_c_sta->bitmask); +#else + WIFI_STA_CONFIG_1_SET_RESERVED_VAL(p_a_sta->reserved1, p_c_sta->bitmask); +#endif p_c_sta->sae_pwe_h2e = p_a_sta->sae_pwe_h2e; p_c_sta->failure_retry_cnt = p_a_sta->failure_retry_cnt; if (p_a_sta->he_dcm_set) - H_SET_BIT(WIFI_HE_STA_CONFIG_he_dcm_set_BIT, p_c_sta->he_bitmask); + H_SET_BIT(WIFI_STA_CONFIG_2_he_dcm_set_BIT, p_c_sta->he_bitmask); // WIFI_HE_STA_CONFIG_he_dcm_max_constellation_tx is two bits wide if (p_a_sta->he_dcm_max_constellation_tx) - p_c_sta->he_bitmask |= ((p_a_sta->he_dcm_max_constellation_tx & 0x03) << WIFI_HE_STA_CONFIG_he_dcm_max_constellation_tx_BITS); + p_c_sta->he_bitmask |= ((p_a_sta->he_dcm_max_constellation_tx & 0x03) << WIFI_STA_CONFIG_2_he_dcm_max_constellation_tx_BITS); // WIFI_HE_STA_CONFIG_he_dcm_max_constellation_rx is two bits wide if (p_a_sta->he_dcm_max_constellation_rx) - p_c_sta->he_bitmask |= ((p_a_sta->he_dcm_max_constellation_rx & 0x03) << WIFI_HE_STA_CONFIG_he_dcm_max_constellation_rx_BITS); + p_c_sta->he_bitmask |= ((p_a_sta->he_dcm_max_constellation_rx & 0x03) << WIFI_STA_CONFIG_2_he_dcm_max_constellation_rx_BITS); if (p_a_sta->he_mcs9_enabled) - H_SET_BIT(WIFI_HE_STA_CONFIG_he_mcs9_enabled_BIT, p_c_sta->he_bitmask); + H_SET_BIT(WIFI_STA_CONFIG_2_he_mcs9_enabled_BIT, p_c_sta->he_bitmask); if (p_a_sta->he_su_beamformee_disabled) - H_SET_BIT(WIFI_HE_STA_CONFIG_he_su_beamformee_disabled_BIT, p_c_sta->he_bitmask); + H_SET_BIT(WIFI_STA_CONFIG_2_he_su_beamformee_disabled_BIT, p_c_sta->he_bitmask); if (p_a_sta->he_trig_su_bmforming_feedback_disabled) - H_SET_BIT(WIFI_HE_STA_CONFIG_he_trig_su_bmforming_feedback_disabled_BIT, p_c_sta->he_bitmask); + H_SET_BIT(WIFI_STA_CONFIG_2_he_trig_su_bmforming_feedback_disabled_BIT, p_c_sta->he_bitmask); if (p_a_sta->he_trig_mu_bmforming_partial_feedback_disabled) - H_SET_BIT(WIFI_HE_STA_CONFIG_he_trig_mu_bmforming_partial_feedback_disabled_BIT, p_c_sta->he_bitmask); + H_SET_BIT(WIFI_STA_CONFIG_2_he_trig_mu_bmforming_partial_feedback_disabled_BIT, p_c_sta->he_bitmask); if (p_a_sta->he_trig_cqi_feedback_disabled) - H_SET_BIT(WIFI_HE_STA_CONFIG_he_trig_cqi_feedback_disabled_BIT, p_c_sta->he_bitmask); + H_SET_BIT(WIFI_STA_CONFIG_2_he_trig_cqi_feedback_disabled_BIT, p_c_sta->he_bitmask); + +#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 5, 0) + WIFI_STA_CONFIG_2_SET_RESERVED_VAL(p_a_sta->he_reserved, p_c_sta->he_bitmask); +#else + if (p_a_sta->vht_su_beamformee_disabled) + H_SET_BIT(WIFI_STA_CONFIG_2_vht_su_beamformee_disabled, p_c_sta->he_bitmask); + + if (p_a_sta->vht_mu_beamformee_disabled) + H_SET_BIT(WIFI_STA_CONFIG_2_vht_mu_beamformee_disabled, p_c_sta->he_bitmask); - WIFI_HE_STA_SET_RESERVED_VAL(p_a_sta->he_reserved, p_c_sta->he_bitmask); + if (p_a_sta->vht_mcs8_enabled) + H_SET_BIT(WIFI_STA_CONFIG_2_vht_mcs8_enabled, p_c_sta->he_bitmask); + + WIFI_STA_CONFIG_2_SET_RESERVED_VAL(p_a_sta->reserved2, p_c_sta->he_bitmask); +#endif RPC_REQ_COPY_BYTES(p_c_sta->sae_h2e_identifier, p_a_sta->sae_h2e_identifier, SAE_H2E_IDENTIFIER_LEN); break; diff --git a/host/drivers/rpc/core/rpc_rsp.c b/host/drivers/rpc/core/rpc_rsp.c index cc47f0ac..54e6a293 100644 --- a/host/drivers/rpc/core/rpc_rsp.c +++ b/host/drivers/rpc/core/rpc_rsp.c @@ -7,6 +7,7 @@ #include "esp_hosted_wifi_config.h" #include "esp_hosted_transport.h" #include "esp_hosted_bitmasks.h" +#include "esp_idf_version.h" DEFINE_LOG_TAG(rpc_rsp); @@ -259,16 +260,42 @@ int rpc_parse_rsp(Rpc *rpc_msg, ctrl_cmd_t *app_resp) p_a_sta->pmf_cfg.capable = p_c_sta->pmf_cfg->capable; p_a_sta->pmf_cfg.required = p_c_sta->pmf_cfg->required; - p_a_sta->rm_enabled = H_GET_BIT(STA_RM_ENABLED_BIT, p_c_sta->bitmask); - p_a_sta->btm_enabled = H_GET_BIT(STA_BTM_ENABLED_BIT, p_c_sta->bitmask); - p_a_sta->mbo_enabled = H_GET_BIT(STA_MBO_ENABLED_BIT, p_c_sta->bitmask); - p_a_sta->ft_enabled = H_GET_BIT(STA_FT_ENABLED_BIT, p_c_sta->bitmask); - p_a_sta->owe_enabled = H_GET_BIT(STA_OWE_ENABLED_BIT, p_c_sta->bitmask); - p_a_sta->transition_disable = H_GET_BIT(STA_TRASITION_DISABLED_BIT, p_c_sta->bitmask); - p_a_sta->reserved = WIFI_CONFIG_STA_GET_RESERVED_VAL(p_c_sta->bitmask); + p_a_sta->rm_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_rm_enabled, p_c_sta->bitmask); + p_a_sta->btm_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_btm_enabled, p_c_sta->bitmask); + p_a_sta->mbo_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_mbo_enabled, p_c_sta->bitmask); + p_a_sta->ft_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_ft_enabled, p_c_sta->bitmask); + p_a_sta->owe_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_owe_enabled, p_c_sta->bitmask); + p_a_sta->transition_disable = H_GET_BIT(WIFI_STA_CONFIG_1_transition_disable, p_c_sta->bitmask); + +#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 5, 0) + p_a_sta->reserved = WIFI_STA_CONFIG_1_GET_RESERVED_VAL(p_c_sta->bitmask); +#else + p_a_sta->reserved1 = WIFI_STA_CONFIG_1_GET_RESERVED_VAL(p_c_sta->bitmask); +#endif p_a_sta->sae_pwe_h2e = p_c_sta->sae_pwe_h2e; p_a_sta->failure_retry_cnt = p_c_sta->failure_retry_cnt; + + p_a_sta->he_dcm_set = H_GET_BIT(WIFI_STA_CONFIG_2_he_dcm_set_BIT, p_c_sta->he_bitmask); + + // WIFI_HE_STA_CONFIG_he_dcm_max_constellation_tx is two bits wide + p_a_sta->he_dcm_max_constellation_tx = (p_c_sta->he_bitmask >> WIFI_STA_CONFIG_2_he_dcm_max_constellation_tx_BITS) & 0x03; + // WIFI_HE_STA_CONFIG_he_dcm_max_constellation_rx is two bits wide + p_a_sta->he_dcm_max_constellation_rx = (p_c_sta->he_bitmask >> WIFI_STA_CONFIG_2_he_dcm_max_constellation_rx_BITS) & 0x03; + p_a_sta->he_mcs9_enabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_mcs9_enabled_BIT, p_c_sta->he_bitmask); + p_a_sta->he_su_beamformee_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_su_beamformee_disabled_BIT, p_c_sta->he_bitmask); + p_a_sta->he_trig_su_bmforming_feedback_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_trig_su_bmforming_feedback_disabled_BIT, p_c_sta->bitmask); + p_a_sta->he_trig_mu_bmforming_partial_feedback_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_trig_mu_bmforming_partial_feedback_disabled_BIT, p_c_sta->bitmask); + p_a_sta->he_trig_cqi_feedback_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_trig_cqi_feedback_disabled_BIT, p_c_sta->bitmask); +#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 5, 0) + p_a_sta->he_reserved = WIFI_STA_CONFIG_2_GET_RESERVED_VAL(p_c_sta->he_bitmask); +#else + p_a_sta->vht_su_beamformee_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_vht_su_beamformee_disabled, p_c_sta->he_bitmask); + p_a_sta->vht_mu_beamformee_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_vht_mu_beamformee_disabled, p_c_sta->he_bitmask); + p_a_sta->vht_mcs8_enabled = H_GET_BIT(WIFI_STA_CONFIG_2_vht_mcs8_enabled, p_c_sta->he_bitmask); + p_a_sta->reserved2 = WIFI_STA_CONFIG_2_GET_RESERVED_VAL(p_c_sta->he_bitmask); +#endif + break; } case WIFI_IF_AP: { diff --git a/host/drivers/serial/serial_drv.c b/host/drivers/serial/serial_drv.c index f9605b39..9ed01633 100644 --- a/host/drivers/serial/serial_drv.c +++ b/host/drivers/serial/serial_drv.c @@ -212,8 +212,8 @@ int serial_drv_close(struct serial_drv_handle_t** serial_drv_handle) int rpc_platform_init(void) { /* rpc semaphore */ - readSemaphore = g_h.funcs->_h_create_semaphore(CONFIG_ESP_HOSTED_MAX_SIMULTANEOUS_SYNC_RPC_REQUESTS + - CONFIG_ESP_HOSTED_MAX_SIMULTANEOUS_ASYNC_RPC_REQUESTS); + readSemaphore = g_h.funcs->_h_create_semaphore(H_MAX_SYNC_RPC_REQUESTS + + H_MAX_ASYNC_RPC_REQUESTS); assert(readSemaphore); /* grab the semaphore, so that task will be mandated to wait on semaphore */ diff --git a/idf_component.yml b/idf_component.yml index 6bac73b5..7a4dc134 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.0.0" +version: "2.0.1" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/slave_control.c b/slave/main/slave_control.c index 22020178..35323f64 100644 --- a/slave/main/slave_control.c +++ b/slave/main/slave_control.c @@ -14,6 +14,7 @@ // limitations under the License. #include + #include "freertos/FreeRTOS.h" #include "freertos/event_groups.h" #include "esp_log.h" @@ -24,6 +25,7 @@ #include "esp_hosted_rpc.h" #include "esp_hosted_transport.h" #include "esp_hosted_bitmasks.h" +#include "esp_idf_version.h" #include "coprocessor_fw_version.h" @@ -868,28 +870,39 @@ static esp_err_t req_wifi_set_config(Rpc *req, Rpc *resp, void *priv_data) p_a_sta->pmf_cfg.capable = p_c_sta->pmf_cfg->capable; p_a_sta->pmf_cfg.required = p_c_sta->pmf_cfg->required; - p_a_sta->rm_enabled = H_GET_BIT(STA_RM_ENABLED_BIT, p_c_sta->bitmask); - p_a_sta->btm_enabled = H_GET_BIT(STA_BTM_ENABLED_BIT, p_c_sta->bitmask); - p_a_sta->mbo_enabled = H_GET_BIT(STA_MBO_ENABLED_BIT, p_c_sta->bitmask); - p_a_sta->ft_enabled = H_GET_BIT(STA_FT_ENABLED_BIT, p_c_sta->bitmask); - p_a_sta->owe_enabled = H_GET_BIT(STA_OWE_ENABLED_BIT, p_c_sta->bitmask); - p_a_sta->transition_disable = H_GET_BIT(STA_TRASITION_DISABLED_BIT, p_c_sta->bitmask); - p_a_sta->reserved = WIFI_CONFIG_STA_GET_RESERVED_VAL(p_c_sta->bitmask); + p_a_sta->rm_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_rm_enabled, p_c_sta->bitmask); + p_a_sta->btm_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_btm_enabled, p_c_sta->bitmask); + p_a_sta->mbo_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_mbo_enabled, p_c_sta->bitmask); + p_a_sta->ft_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_ft_enabled, p_c_sta->bitmask); + p_a_sta->owe_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_owe_enabled, p_c_sta->bitmask); + p_a_sta->transition_disable = H_GET_BIT(WIFI_STA_CONFIG_1_transition_disable, p_c_sta->bitmask); +#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 5, 0) + p_a_sta->reserved = WIFI_STA_CONFIG_1_GET_RESERVED_VAL(p_c_sta->bitmask); +#else + p_a_sta->reserved1 = WIFI_STA_CONFIG_1_GET_RESERVED_VAL(p_c_sta->bitmask); +#endif p_a_sta->sae_pwe_h2e = p_c_sta->sae_pwe_h2e; p_a_sta->failure_retry_cnt = p_c_sta->failure_retry_cnt; - p_a_sta->he_dcm_set = H_GET_BIT(WIFI_HE_STA_CONFIG_he_dcm_set_BIT, p_c_sta->he_bitmask); + p_a_sta->he_dcm_set = H_GET_BIT(WIFI_STA_CONFIG_2_he_dcm_set_BIT, p_c_sta->he_bitmask); // WIFI_HE_STA_CONFIG_he_dcm_max_constellation_tx is two bits wide - p_a_sta->he_dcm_max_constellation_tx = (p_c_sta->he_bitmask >> WIFI_HE_STA_CONFIG_he_dcm_max_constellation_tx_BITS) & 0x03; + p_a_sta->he_dcm_max_constellation_tx = (p_c_sta->he_bitmask >> WIFI_STA_CONFIG_2_he_dcm_max_constellation_tx_BITS) & 0x03; // WIFI_HE_STA_CONFIG_he_dcm_max_constellation_rx is two bits wide - p_a_sta->he_dcm_max_constellation_rx = (p_c_sta->he_bitmask >> WIFI_HE_STA_CONFIG_he_dcm_max_constellation_rx_BITS) & 0x03; - p_a_sta->he_mcs9_enabled = H_GET_BIT(WIFI_HE_STA_CONFIG_he_mcs9_enabled_BIT, p_c_sta->he_bitmask); - p_a_sta->he_su_beamformee_disabled = H_GET_BIT(WIFI_HE_STA_CONFIG_he_su_beamformee_disabled_BIT, p_c_sta->he_bitmask); - p_a_sta->he_trig_su_bmforming_feedback_disabled = H_GET_BIT(WIFI_HE_STA_CONFIG_he_trig_su_bmforming_feedback_disabled_BIT, p_c_sta->bitmask); - p_a_sta->he_trig_mu_bmforming_partial_feedback_disabled = H_GET_BIT(WIFI_HE_STA_CONFIG_he_trig_mu_bmforming_partial_feedback_disabled_BIT, p_c_sta->bitmask); - p_a_sta->he_trig_cqi_feedback_disabled = H_GET_BIT(WIFI_HE_STA_CONFIG_he_trig_cqi_feedback_disabled_BIT, p_c_sta->bitmask); - p_a_sta->he_reserved = WIFI_HE_STA_GET_RESERVED_VAL(p_c_sta->bitmask); + p_a_sta->he_dcm_max_constellation_rx = (p_c_sta->he_bitmask >> WIFI_STA_CONFIG_2_he_dcm_max_constellation_rx_BITS) & 0x03; + p_a_sta->he_mcs9_enabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_mcs9_enabled_BIT, p_c_sta->he_bitmask); + p_a_sta->he_su_beamformee_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_su_beamformee_disabled_BIT, p_c_sta->he_bitmask); + p_a_sta->he_trig_su_bmforming_feedback_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_trig_su_bmforming_feedback_disabled_BIT, p_c_sta->bitmask); + p_a_sta->he_trig_mu_bmforming_partial_feedback_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_trig_mu_bmforming_partial_feedback_disabled_BIT, p_c_sta->bitmask); + p_a_sta->he_trig_cqi_feedback_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_trig_cqi_feedback_disabled_BIT, p_c_sta->bitmask); +#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 5, 0) + p_a_sta->he_reserved = WIFI_STA_CONFIG_2_GET_RESERVED_VAL(p_c_sta->he_bitmask); +#else + p_a_sta->vht_su_beamformee_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_vht_su_beamformee_disabled, p_c_sta->he_bitmask); + p_a_sta->vht_mu_beamformee_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_vht_mu_beamformee_disabled, p_c_sta->he_bitmask); + p_a_sta->vht_mcs8_enabled = H_GET_BIT(WIFI_STA_CONFIG_2_vht_mcs8_enabled, p_c_sta->he_bitmask); + p_a_sta->reserved2 = WIFI_STA_CONFIG_2_GET_RESERVED_VAL(p_c_sta->he_bitmask); +#endif /* Avoid using fast scan, which leads to faster SSID selection, * but faces data throughput issues when same SSID broadcasted by weaker AP @@ -967,27 +980,73 @@ static esp_err_t req_wifi_get_config(Rpc *req, Rpc *resp, void *priv_data) p_c_sta->pmf_cfg->required = p_a_sta->pmf_cfg.required; if (p_a_sta->rm_enabled) - H_SET_BIT(STA_RM_ENABLED_BIT, p_c_sta->bitmask); + H_SET_BIT(WIFI_STA_CONFIG_1_rm_enabled, p_c_sta->bitmask); if (p_a_sta->btm_enabled) - H_SET_BIT(STA_BTM_ENABLED_BIT, p_c_sta->bitmask); + H_SET_BIT(WIFI_STA_CONFIG_1_btm_enabled, p_c_sta->bitmask); if (p_a_sta->mbo_enabled) - H_SET_BIT(STA_MBO_ENABLED_BIT, p_c_sta->bitmask); + H_SET_BIT(WIFI_STA_CONFIG_1_mbo_enabled, p_c_sta->bitmask); if (p_a_sta->ft_enabled) - H_SET_BIT(STA_FT_ENABLED_BIT, p_c_sta->bitmask); + H_SET_BIT(WIFI_STA_CONFIG_1_ft_enabled, p_c_sta->bitmask); if (p_a_sta->owe_enabled) - H_SET_BIT(STA_OWE_ENABLED_BIT, p_c_sta->bitmask); + H_SET_BIT(WIFI_STA_CONFIG_1_owe_enabled, p_c_sta->bitmask); if (p_a_sta->transition_disable) - H_SET_BIT(STA_TRASITION_DISABLED_BIT, p_c_sta->bitmask); + H_SET_BIT(WIFI_STA_CONFIG_1_transition_disable, p_c_sta->bitmask); - WIFI_CONFIG_STA_SET_RESERVED_VAL(p_a_sta->reserved, p_c_sta->bitmask); +#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 5, 0) + WIFI_STA_CONFIG_1_SET_RESERVED_VAL(p_a_sta->reserved, p_c_sta->bitmask); +#else + WIFI_STA_CONFIG_1_SET_RESERVED_VAL(p_a_sta->reserved1, p_c_sta->bitmask); +#endif p_c_sta->sae_pwe_h2e = p_a_sta->sae_pwe_h2e; p_c_sta->failure_retry_cnt = p_a_sta->failure_retry_cnt; + + if (p_a_sta->he_dcm_set) + H_SET_BIT(WIFI_STA_CONFIG_2_he_dcm_set_BIT, p_c_sta->he_bitmask); + + // WIFI_HE_STA_CONFIG_he_dcm_max_constellation_tx is two bits wide + if (p_a_sta->he_dcm_max_constellation_tx) + p_c_sta->he_bitmask |= ((p_a_sta->he_dcm_max_constellation_tx & 0x03) << WIFI_STA_CONFIG_2_he_dcm_max_constellation_tx_BITS); + + // WIFI_HE_STA_CONFIG_he_dcm_max_constellation_rx is two bits wide + if (p_a_sta->he_dcm_max_constellation_rx) + p_c_sta->he_bitmask |= ((p_a_sta->he_dcm_max_constellation_rx & 0x03) << WIFI_STA_CONFIG_2_he_dcm_max_constellation_rx_BITS); + + if (p_a_sta->he_mcs9_enabled) + H_SET_BIT(WIFI_STA_CONFIG_2_he_mcs9_enabled_BIT, p_c_sta->he_bitmask); + + if (p_a_sta->he_su_beamformee_disabled) + H_SET_BIT(WIFI_STA_CONFIG_2_he_su_beamformee_disabled_BIT, p_c_sta->he_bitmask); + + if (p_a_sta->he_trig_su_bmforming_feedback_disabled) + H_SET_BIT(WIFI_STA_CONFIG_2_he_trig_su_bmforming_feedback_disabled_BIT, p_c_sta->he_bitmask); + + if (p_a_sta->he_trig_mu_bmforming_partial_feedback_disabled) + H_SET_BIT(WIFI_STA_CONFIG_2_he_trig_mu_bmforming_partial_feedback_disabled_BIT, p_c_sta->he_bitmask); + + if (p_a_sta->he_trig_cqi_feedback_disabled) + H_SET_BIT(WIFI_STA_CONFIG_2_he_trig_cqi_feedback_disabled_BIT, p_c_sta->he_bitmask); + +#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 5, 0) + WIFI_STA_CONFIG_2_SET_RESERVED_VAL(p_a_sta->he_reserved, p_c_sta->he_bitmask); +#else + if (p_a_sta->vht_su_beamformee_disabled) + H_SET_BIT(WIFI_STA_CONFIG_2_vht_su_beamformee_disabled, p_c_sta->he_bitmask); + + if (p_a_sta->vht_mu_beamformee_disabled) + H_SET_BIT(WIFI_STA_CONFIG_2_vht_mu_beamformee_disabled, p_c_sta->he_bitmask); + + if (p_a_sta->vht_mcs8_enabled) + H_SET_BIT(WIFI_STA_CONFIG_2_vht_mcs8_enabled, p_c_sta->he_bitmask); + + WIFI_STA_CONFIG_2_SET_RESERVED_VAL(p_a_sta->reserved2, p_c_sta->he_bitmask); +#endif + break; } case WIFI_IF_AP: { From 6a1e8cc2f9e836151bb2cff2ad60f75846f83d42 Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Tue, 13 May 2025 15:57:30 +0800 Subject: [PATCH 016/114] bugfix(rename_wifi_fn): Renamed wifi functions in RPC slave code - prefix function names in `rpc_slave_if` with `rpc_slaveif_` - to prevent function name collision with `espressif/console_cmd_wifi` - clean-up: removed unused functions --- host/drivers/rpc/slaveif/rpc_slave_if.c | 164 ++++------- host/drivers/rpc/slaveif/rpc_slave_if.h | 159 ++++------- host/drivers/rpc/wrap/rpc_wrap.c | 345 ++++-------------------- idf_component.yml | 2 +- 4 files changed, 169 insertions(+), 501 deletions(-) diff --git a/host/drivers/rpc/slaveif/rpc_slave_if.c b/host/drivers/rpc/slaveif/rpc_slave_if.c index 75c081ec..7495223e 100644 --- a/host/drivers/rpc/slaveif/rpc_slave_if.c +++ b/host/drivers/rpc/slaveif/rpc_slave_if.c @@ -40,386 +40,332 @@ int rpc_slaveif_deinit(void) } /** Control Req->Resp APIs **/ -ctrl_cmd_t * wifi_get_mac(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_get_mac(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_GetMACAddress); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_set_mac(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_set_mac(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_SetMacAddress); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_get_mode(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_get_mode(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_GetWifiMode); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_set_mode(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_set_mode(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_SetWifiMode); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_set_ps(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_set_ps(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiSetPs); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_get_ps(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_get_ps(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiGetPs); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -//ctrl_cmd_t * wifi_ap_scan_list(ctrl_cmd_t *req) -//{ -// RPC_SEND_REQ(RPC_ID__Req_GetAPScanList); -// RPC_DECODE_RSP_IF_NOT_ASYNC(); -//} -// -//ctrl_cmd_t * wifi_get_ap_config(ctrl_cmd_t *req) -//{ -// RPC_SEND_REQ(RPC_ID__Req_GetAPConfig); -// RPC_DECODE_RSP_IF_NOT_ASYNC(); -//} -// -//ctrl_cmd_t * wifi_connect_ap(ctrl_cmd_t *req) -//{ -// RPC_SEND_REQ(RPC_ID__Req_ConnectAP); -// RPC_DECODE_RSP_IF_NOT_ASYNC(); -//} -// -//ctrl_cmd_t * wifi_disconnect_ap(ctrl_cmd_t *req) -//{ -// RPC_SEND_REQ(RPC_ID__Req_DisconnectAP); -// RPC_DECODE_RSP_IF_NOT_ASYNC(); -//} -// -//ctrl_cmd_t * wifi_start_softap(ctrl_cmd_t *req) -//{ -// RPC_SEND_REQ(RPC_ID__Req_StartSoftAP); -// RPC_DECODE_RSP_IF_NOT_ASYNC(); -//} -// -//ctrl_cmd_t * wifi_get_softap_config(ctrl_cmd_t *req) -//{ -// RPC_SEND_REQ(RPC_ID__Req_GetSoftAPConfig); -// RPC_DECODE_RSP_IF_NOT_ASYNC(); -//} -// -//ctrl_cmd_t * wifi_stop_softap(ctrl_cmd_t *req) -//{ -// RPC_SEND_REQ(RPC_ID__Req_StopSoftAP); -// RPC_DECODE_RSP_IF_NOT_ASYNC(); -//} -// -//ctrl_cmd_t * wifi_get_softap_connected_station_list(ctrl_cmd_t *req) -//{ -// RPC_SEND_REQ(RPC_ID__Req_GetSoftAPConnectedSTAList); -// RPC_DECODE_RSP_IF_NOT_ASYNC(); -//} -// -//ctrl_cmd_t * wifi_set_vendor_specific_ie(ctrl_cmd_t *req) -//{ -// RPC_SEND_REQ(RPC_ID__Req_SetSoftAPVendorSpecificIE); -// RPC_DECODE_RSP_IF_NOT_ASYNC(); -//} - -ctrl_cmd_t * wifi_set_max_tx_power(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_set_max_tx_power(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiSetMaxTxPower); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_get_max_tx_power(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_get_max_tx_power(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiGetMaxTxPower); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * config_heartbeat(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_config_heartbeat(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_ConfigHeartbeat); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * ota_begin(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_ota_begin(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_OTABegin); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * ota_write(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_ota_write(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_OTAWrite); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * ota_end(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_ota_end(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_OTAEnd); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_init(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_init(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiInit); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_deinit(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_deinit(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiDeinit); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_start(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_start(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiStart); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_stop(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_stop(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiStop); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_connect(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_connect(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiConnect); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_disconnect(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_disconnect(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiDisconnect); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_get_config(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_get_config(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiGetConfig); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_set_config(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_set_config(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiSetConfig); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_scan_start(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_scan_start(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiScanStart); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_scan_stop(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_scan_stop(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiScanStop); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_scan_get_ap_num(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_scan_get_ap_num(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiScanGetApNum); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_scan_get_ap_record(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_scan_get_ap_record(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiScanGetApRecord); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_scan_get_ap_records(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_scan_get_ap_records(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiScanGetApRecords); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_clear_ap_list(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_clear_ap_list(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiClearApList); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_restore(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_restore(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiRestore); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_clear_fast_connect(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_clear_fast_connect(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiClearFastConnect); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_deauth_sta(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_deauth_sta(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiDeauthSta); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_sta_get_ap_info(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_sta_get_ap_info(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiStaGetApInfo); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_set_storage(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_set_storage(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiSetStorage); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_set_bandwidth(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_set_bandwidth(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiSetBandwidth); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_get_bandwidth(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_get_bandwidth(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiGetBandwidth); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_set_channel(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_set_channel(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiSetChannel); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_get_channel(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_get_channel(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiGetChannel); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_set_country_code(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_set_country_code(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiSetCountryCode); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_get_country_code(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_get_country_code(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiGetCountryCode); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_set_country(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_set_country(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiSetCountry); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_get_country(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_get_country(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiGetCountry); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_ap_get_sta_list(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_ap_get_sta_list(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiApGetStaList); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_ap_get_sta_aid(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_ap_get_sta_aid(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiApGetStaAid); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_sta_get_rssi(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_sta_get_rssi(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiStaGetRssi); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_set_protocol(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_set_protocol(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiSetProtocol); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_get_protocol(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_get_protocol(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiGetProtocol); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_sta_get_negotiated_phymode(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_sta_get_negotiated_phymode(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiStaGetNegotiatedPhymode); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_sta_get_aid(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_sta_get_aid(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiStaGetAid); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_set_protocols(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_set_protocols(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiSetProtocols); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * get_coprocessor_fwversion(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_get_coprocessor_fwversion(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_GetCoprocessorFwVersion); RPC_DECODE_RSP_IF_NOT_ASYNC(); } #if H_WIFI_DUALBAND_SUPPORT -ctrl_cmd_t * wifi_get_protocols(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_get_protocols(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiGetProtocols); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_set_bandwidths(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_set_bandwidths(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiSetBandwidths); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_get_bandwidths(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_get_bandwidths(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiGetBandwidths); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_set_band(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_set_band(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiSetBand); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_get_band(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_get_band(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiGetBand); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_set_band_mode(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_set_band_mode(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiSetBandMode); RPC_DECODE_RSP_IF_NOT_ASYNC(); } -ctrl_cmd_t * wifi_get_band_mode(ctrl_cmd_t *req) +ctrl_cmd_t * rpc_slaveif_wifi_get_band_mode(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiGetBandMode); RPC_DECODE_RSP_IF_NOT_ASYNC(); diff --git a/host/drivers/rpc/slaveif/rpc_slave_if.h b/host/drivers/rpc/slaveif/rpc_slave_if.h index 9fd09900..b5621b80 100644 --- a/host/drivers/rpc/slaveif/rpc_slave_if.h +++ b/host/drivers/rpc/slaveif/rpc_slave_if.h @@ -377,141 +377,92 @@ int rpc_slaveif_init(void); int rpc_slaveif_deinit(void); /* Get the MAC address of station or softAP interface of ESP32 */ -ctrl_cmd_t * wifi_get_mac(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_get_mac(ctrl_cmd_t *req); /* Set MAC address of ESP32 interface for given wifi mode */ -ctrl_cmd_t * wifi_set_mac(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_set_mac(ctrl_cmd_t *req); /* Get Wi-Fi mode of ESP32 */ -ctrl_cmd_t * wifi_get_mode(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_get_mode(ctrl_cmd_t *req); /* Set the Wi-Fi mode of ESP32 */ -ctrl_cmd_t * wifi_set_mode(ctrl_cmd_t *req); - -/* Set Wi-Fi power save mode of ESP32 */ -ctrl_cmd_t * wifi_set_power_save_mode(ctrl_cmd_t *req); - -/* Get the Wi-Fi power save mode of ESP32 */ -ctrl_cmd_t * wifi_get_power_save_mode(ctrl_cmd_t *req); - -///* Get list of available neighboring APs of ESP32 */ -//ctrl_cmd_t * wifi_ap_scan_list(ctrl_cmd_t *req); -// -///* Get the AP config to which ESP32 station is connected */ -//ctrl_cmd_t * wifi_get_ap_config(ctrl_cmd_t *req); -// -///* Set the AP config to which ESP32 station should connect to */ -//ctrl_cmd_t * wifi_connect_ap(ctrl_cmd_t *req); -// -///* Disconnect ESP32 station from AP */ -//ctrl_cmd_t * wifi_disconnect_ap(ctrl_cmd_t *req); -// -///* Set configuration of ESP32 softAP and start broadcasting */ -//ctrl_cmd_t * wifi_start_softap(ctrl_cmd_t *req); -// -///* Get configuration of ESP32 softAP */ -//ctrl_cmd_t * wifi_get_softap_config(ctrl_cmd_t *req); -// -///* Stop ESP32 softAP */ -//ctrl_cmd_t * wifi_stop_softap(ctrl_cmd_t *req); -// -///* Get list of connected stations to ESP32 softAP */ -//ctrl_cmd_t * wifi_get_softap_connected_station_list(ctrl_cmd_t *req); -// -///* Function set 802.11 Vendor-Specific Information Element. -// * It needs to get called before starting of ESP32 softAP */ -//ctrl_cmd_t * wifi_set_vendor_specific_ie(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_set_mode(ctrl_cmd_t *req); /* Sets maximum WiFi transmitting power at ESP32 */ -ctrl_cmd_t * wifi_set_max_tx_power(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_set_max_tx_power(ctrl_cmd_t *req); /* Gets maximum WiFi transmiting power at ESP32 */ -ctrl_cmd_t * wifi_get_max_tx_power(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_get_max_tx_power(ctrl_cmd_t *req); /* Configure heartbeat event. Be default heartbeat is not enabled. * To enable heartbeats, user need to use this API in addition * to setting event callback for heartbeat event */ -ctrl_cmd_t * config_heartbeat(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_config_heartbeat(ctrl_cmd_t *req); /* Performs an OTA begin operation for ESP32 which erases and * prepares existing flash partition for new flash writing */ -ctrl_cmd_t * ota_begin(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_ota_begin(ctrl_cmd_t *req); /* Performs an OTA write operation for ESP32, It writes bytes from `ota_data` * buffer with `ota_data_len` number of bytes to OTA partition in flash. Number * of bytes can be small than size of complete binary to be flashed. In that * case, this caller is expected to repeatedly call this function till * total size written equals size of complete binary */ -ctrl_cmd_t * ota_write(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_ota_write(ctrl_cmd_t *req); /* Performs an OTA end operation for ESP32, It validates written OTA image, * sets newly written OTA partition as boot partition for next boot, * Creates timer which reset ESP32 after 5 sec */ -ctrl_cmd_t * ota_end(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_ota_end(ctrl_cmd_t *req); /* Gets the co-processor FW Version */ -ctrl_cmd_t * get_coprocessor_fwversion(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_get_coprocessor_fwversion(ctrl_cmd_t *req); /* TODO: add descriptions */ -ctrl_cmd_t * wifi_init(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_deinit(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_start(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_stop(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_connect(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_disconnect(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_set_config(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_get_config(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_scan_start(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_scan_stop(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_scan_get_ap_num(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_scan_get_ap_record(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_scan_get_ap_records(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_clear_ap_list(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_restore(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_clear_fast_connect(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_deauth_sta(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_sta_get_ap_info(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_set_ps(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_get_ps(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_set_storage(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_set_bandwidth(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_get_bandwidth(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_set_channel(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_get_channel(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_set_country_code(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_get_country_code(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_set_country(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_get_country(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_ap_get_sta_list(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_ap_get_sta_aid(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_sta_get_rssi(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_set_protocol(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_get_protocol(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_sta_get_negotiated_phymode(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_sta_get_aid(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_set_protocols(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_get_protocols(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_set_bandwidths(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_get_bandwidths(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_set_band(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_get_band(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_set_band_mode(ctrl_cmd_t *req); -ctrl_cmd_t * wifi_get_band_mode(ctrl_cmd_t *req); - -/* Get the interface up for interface `iface` */ -int interface_up(int sockfd, char* iface); - -/* Get the interface down for interface `iface` */ -int interface_down(int sockfd, char* iface); - -/* Set ethernet interface MAC address `mac` to interface `iface` */ -int set_hw_addr(int sockfd, char* iface, char* mac); - -/* Create an endpoint for communication */ -int create_socket(int domain, int type, int protocol, int *sock); - -/* Close an endpoint of the communication */ -int close_socket(int sock); +ctrl_cmd_t * rpc_slaveif_wifi_init(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_deinit(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_start(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_stop(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_connect(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_disconnect(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_set_config(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_get_config(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_scan_start(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_scan_stop(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_scan_get_ap_num(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_scan_get_ap_record(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_scan_get_ap_records(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_clear_ap_list(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_restore(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_clear_fast_connect(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_deauth_sta(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_sta_get_ap_info(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_set_ps(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_get_ps(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_set_storage(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_set_bandwidth(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_get_bandwidth(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_set_channel(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_get_channel(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_set_country_code(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_get_country_code(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_set_country(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_get_country(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_ap_get_sta_list(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_ap_get_sta_aid(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_sta_get_rssi(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_set_protocol(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_get_protocol(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_sta_get_negotiated_phymode(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_sta_get_aid(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_set_protocols(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_get_protocols(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_set_bandwidths(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_get_bandwidths(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_set_band(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_get_band(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_set_band_mode(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_get_band_mode(ctrl_cmd_t *req); #ifdef __cplusplus } diff --git a/host/drivers/rpc/wrap/rpc_wrap.c b/host/drivers/rpc/wrap/rpc_wrap.c index ff0e2db3..7053dae6 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.c +++ b/host/drivers/rpc/wrap/rpc_wrap.c @@ -502,7 +502,7 @@ int rpc_get_wifi_mode(void) /* register callback for reply */ req->rpc_rsp_cb = rpc_rsp_callback; - wifi_get_mode(req); + rpc_slaveif_wifi_get_mode(req); return SUCCESS; } @@ -515,7 +515,7 @@ int rpc_set_wifi_mode(wifi_mode_t mode) ctrl_cmd_t *resp = NULL; req->u.wifi_mode.mode = mode; - resp = wifi_set_mode(req); + resp = rpc_slaveif_wifi_set_mode(req); return rpc_rsp_callback(resp); } @@ -548,7 +548,7 @@ int rpc_wifi_get_mac(wifi_interface_t mode, uint8_t out_mac[6]) ctrl_cmd_t *req = RPC_DEFAULT_REQ(); req->u.wifi_mac.mode = mode; - resp = wifi_get_mac(req); + resp = rpc_slaveif_wifi_get_mac(req); if (resp && resp->resp_event_status == SUCCESS) { @@ -572,7 +572,7 @@ int rpc_wifi_set_mac(wifi_interface_t mode, const uint8_t mac[6]) req->u.wifi_mac.mode = mode; g_h.funcs->_h_memcpy(req->u.wifi_mac.mac, mac, BSSID_BYTES_SIZE); - resp = wifi_set_mac(req); + resp = rpc_slaveif_wifi_set_mac(req); return rpc_rsp_callback(resp); } @@ -582,235 +582,6 @@ int rpc_softap_mode_get_mac_addr(uint8_t mac[6]) return rpc_wifi_get_mac(WIFI_MODE_AP, mac); } -//int rpc_async_station_mode_connect(char *ssid, char *pwd, char *bssid, -// int is_wpa3_supported, int listen_interval) -//{ -// /* implemented Asynchronous */ -// ctrl_cmd_t *req = RPC_DEFAULT_REQ(); -// -// strcpy((char *)&req->u.hosted_ap_config.ssid, ssid); -// strcpy((char *)&req->u.hosted_ap_config.pwd, pwd); -// strcpy((char *)&req->u.hosted_ap_config.bssid, bssid); -// req->u.hosted_ap_config.is_wpa3_supported = is_wpa3_supported; -// req->u.hosted_ap_config.listen_interval = listen_interval; -// -// /* register callback for handling reply asynch-ly */ -// req->rpc_rsp_cb = rpc_rsp_callback; -// -// wifi_connect_ap(req); -// -// return SUCCESS; -//} -// -//int rpc_station_mode_connect(char *ssid, char *pwd, char *bssid, -// int is_wpa3_supported, int listen_interval) -//{ -// /* implemented Asynchronous */ -// ctrl_cmd_t *req = RPC_DEFAULT_REQ(); -// ctrl_cmd_t *resp = NULL; -// -// strcpy((char *)&req->u.hosted_ap_config.ssid, ssid); -// strcpy((char *)&req->u.hosted_ap_config.pwd, pwd); -// strcpy((char *)&req->u.hosted_ap_config.bssid, bssid); -// req->u.hosted_ap_config.is_wpa3_supported = is_wpa3_supported; -// req->u.hosted_ap_config.listen_interval = listen_interval; -// -// resp = wifi_connect_ap(req); -// -// return rpc_rsp_callback(resp); -//} -// -//int rpc_station_mode_get_info(void) -//{ -// /* implemented synchronous */ -// ctrl_cmd_t *req = RPC_DEFAULT_REQ(); -// ctrl_cmd_t *resp = NULL; -// -// resp = wifi_get_ap_config(req); -// -// return rpc_rsp_callback(resp); -//} -// -//int rpc_get_available_wifi(void) -//{ -// /* implemented synchronous */ -// ctrl_cmd_t *req = RPC_DEFAULT_REQ(); -// req->rsp_timeout_sec = 300; -// -// ctrl_cmd_t *resp = NULL; -// -// resp = wifi_ap_scan_list(req); -// -// return rpc_rsp_callback(resp); -//} -// -//int rpc_station_mode_disconnect(void) -//{ -// /* implemented synchronous */ -// ctrl_cmd_t *req = RPC_DEFAULT_REQ(); -// ctrl_cmd_t *resp = NULL; -// -// resp = wifi_disconnect_ap(req); -// -// return rpc_rsp_callback(resp); -//} -// -//int rpc_softap_mode_start(char *ssid, char *pwd, int channel, -// int encryption_mode, int max_conn, int ssid_hidden, int bw) -//{ -// /* implemented synchronous */ -// ctrl_cmd_t *req = RPC_DEFAULT_REQ(); -// ctrl_cmd_t *resp = NULL; -// -// strncpy((char *)&req->u.wifi_softap_config.ssid, -// ssid, MAX_MAC_STR_LEN-1); -// strncpy((char *)&req->u.wifi_softap_config.pwd, -// pwd, MAX_MAC_STR_LEN-1); -// req->u.wifi_softap_config.channel = channel; -// req->u.wifi_softap_config.encryption_mode = encryption_mode; -// req->u.wifi_softap_config.max_connections = max_conn; -// req->u.wifi_softap_config.ssid_hidden = ssid_hidden; -// req->u.wifi_softap_config.bandwidth = bw; -// -// resp = wifi_start_softap(req); -// -// return rpc_rsp_callback(resp); -//} -// -//int rpc_softap_mode_get_info(void) -//{ -// /* implemented synchronous */ -// ctrl_cmd_t *req = RPC_DEFAULT_REQ(); -// ctrl_cmd_t *resp = NULL; -// -// resp = wifi_get_softap_config(req); -// -// return rpc_rsp_callback(resp); -//} -// -//int rpc_softap_mode_connected_clients_info(void) -//{ -// /* implemented synchronous */ -// ctrl_cmd_t *req = RPC_DEFAULT_REQ(); -// ctrl_cmd_t *resp = NULL; -// -// resp = wifi_get_softap_connected_station_list(req); -// -// return rpc_rsp_callback(resp); -//} -// -//int rpc_softap_mode_stop(void) -//{ -// /* implemented synchronous */ -// ctrl_cmd_t *req = RPC_DEFAULT_REQ(); -// ctrl_cmd_t *resp = NULL; -// -// resp = wifi_stop_softap(req); -// -// return rpc_rsp_callback(resp); -//} - -int rpc_set_wifi_power_save_mode(int psmode) -{ - /* implemented synchronous */ - ctrl_cmd_t *req = RPC_DEFAULT_REQ(); - ctrl_cmd_t *resp = NULL; - - req->u.wifi_ps.ps_mode = psmode; - resp = wifi_set_power_save_mode(req); - - return rpc_rsp_callback(resp); -} - -int rpc_set_wifi_power_save_mode_max(void) -{ - return rpc_set_wifi_power_save_mode(WIFI_PS_MAX_MODEM); -} - -int rpc_set_wifi_power_save_mode_min(void) -{ - return rpc_set_wifi_power_save_mode(WIFI_PS_MIN_MODEM); -} - -int rpc_get_wifi_power_save_mode(void) -{ - /* implemented synchronous */ - ctrl_cmd_t *req = RPC_DEFAULT_REQ(); - ctrl_cmd_t *resp = NULL; - - resp = wifi_get_power_save_mode(req); - - return rpc_rsp_callback(resp); -} - -//int rpc_reset_vendor_specific_ie(void) -//{ -// /* implemented synchronous */ -// ctrl_cmd_t *req = RPC_DEFAULT_REQ(); -// ctrl_cmd_t *resp = NULL; -// char *data = "Example vendor IE data"; -// -// char *v_data = (char*)g_h.funcs->_h_calloc(1, strlen(data)); -// if (!v_data) { -// ESP_LOGE(TAG, "Failed to allocate memory \n"); -// return FAILURE; -// } -// g_h.funcs->_h_memcpy(v_data, data, strlen(data)); -// -// req->u.wifi_softap_vendor_ie.enable = false; -// req->u.wifi_softap_vendor_ie.type = WIFI_VND_IE_TYPE_BEACON; -// req->u.wifi_softap_vendor_ie.idx = WIFI_VND_IE_ID_0; -// req->u.wifi_softap_vendor_ie.vnd_ie.element_id = WIFI_VENDOR_IE_ELEMENT_ID; -// req->u.wifi_softap_vendor_ie.vnd_ie.length = strlen(data)+OFFSET; -// req->u.wifi_softap_vendor_ie.vnd_ie.vendor_oui[0] = VENDOR_OUI_0; -// req->u.wifi_softap_vendor_ie.vnd_ie.vendor_oui[1] = VENDOR_OUI_1; -// req->u.wifi_softap_vendor_ie.vnd_ie.vendor_oui[2] = VENDOR_OUI_2; -// req->u.wifi_softap_vendor_ie.vnd_ie.vendor_oui_type = VENDOR_OUI_TYPE; -// req->u.wifi_softap_vendor_ie.vnd_ie.payload = (uint8_t *)v_data; -// //req->u.wifi_softap_vendor_ie.vnd_ie.payload_len = strlen(data); -// -// req->app_free_buff_func = g_h.funcs->_h_free; -// req->app_free_buff_hdl = v_data; -// -// resp = wifi_set_vendor_specific_ie(req); -// -// return rpc_rsp_callback(resp); -//} -// -//int rpc_set_vendor_specific_ie(void) -//{ -// /* implemented synchronous */ -// ctrl_cmd_t *req = RPC_DEFAULT_REQ(); -// ctrl_cmd_t *resp = NULL; -// char *data = "Example vendor IE data"; -// -// char *v_data = (char*)g_h.funcs->_h_calloc(1, strlen(data)); -// if (!v_data) { -// ESP_LOGE(TAG, "Failed to allocate memory \n"); -// return FAILURE; -// } -// g_h.funcs->_h_memcpy(v_data, data, strlen(data)); -// -// req->u.wifi_softap_vendor_ie.enable = true; -// req->u.wifi_softap_vendor_ie.type = WIFI_VND_IE_TYPE_BEACON; -// req->u.wifi_softap_vendor_ie.idx = WIFI_VND_IE_ID_0; -// req->u.wifi_softap_vendor_ie.vnd_ie.element_id = WIFI_VENDOR_IE_ELEMENT_ID; -// req->u.wifi_softap_vendor_ie.vnd_ie.length = strlen(data)+OFFSET; -// req->u.wifi_softap_vendor_ie.vnd_ie.vendor_oui[0] = VENDOR_OUI_0; -// req->u.wifi_softap_vendor_ie.vnd_ie.vendor_oui[1] = VENDOR_OUI_1; -// req->u.wifi_softap_vendor_ie.vnd_ie.vendor_oui[2] = VENDOR_OUI_2; -// req->u.wifi_softap_vendor_ie.vnd_ie.vendor_oui_type = VENDOR_OUI_TYPE; -// req->u.wifi_softap_vendor_ie.vnd_ie.payload = (uint8_t *)v_data; -// //req->u.wifi_softap_vendor_ie.vnd_ie.payload_len = strlen(data); -// -// req->app_free_buff_func = g_h.funcs->_h_free; -// req->app_free_buff_hdl = v_data; -// -// resp = wifi_set_vendor_specific_ie(req); -// -// return rpc_rsp_callback(resp); -//} - int rpc_ota_begin(void) { /* implemented synchronous */ @@ -820,7 +591,7 @@ int rpc_ota_begin(void) /* OTA begin takes some time to clear the partition */ req->rsp_timeout_sec = OTA_BEGIN_RSP_TIMEOUT_SEC; - resp = ota_begin(req); + resp = rpc_slaveif_ota_begin(req); return rpc_rsp_callback(resp); } @@ -834,7 +605,7 @@ int rpc_ota_write(uint8_t* ota_data, uint32_t ota_data_len) req->u.ota_write.ota_data = ota_data; req->u.ota_write.ota_data_len = ota_data_len; - resp = ota_write(req); + resp = rpc_slaveif_ota_write(req); return rpc_rsp_callback(resp); } @@ -845,7 +616,7 @@ int rpc_ota_end(void) ctrl_cmd_t *req = RPC_DEFAULT_REQ(); ctrl_cmd_t *resp = NULL; - resp = ota_end(req); + resp = rpc_slaveif_ota_end(req); return rpc_rsp_callback(resp); } @@ -856,7 +627,7 @@ esp_err_t rpc_get_coprocessor_fwversion(esp_hosted_coprocessor_fwver_t *ver_info ctrl_cmd_t *req = RPC_DEFAULT_REQ(); ctrl_cmd_t *resp = NULL; - resp = get_coprocessor_fwversion(req); + resp = rpc_slaveif_get_coprocessor_fwversion(req); if (resp && resp->resp_event_status == SUCCESS) { ver_info->major1 = resp->u.coprocessor_fwversion.major1; ver_info->minor1 = resp->u.coprocessor_fwversion.minor1; @@ -873,7 +644,7 @@ int rpc_wifi_set_max_tx_power(int8_t in_power) ctrl_cmd_t *resp = NULL; req->u.wifi_tx_power.power = in_power; - resp = wifi_set_max_tx_power(req); + resp = rpc_slaveif_wifi_set_max_tx_power(req); return rpc_rsp_callback(resp); } @@ -884,7 +655,7 @@ int rpc_wifi_get_max_tx_power(int8_t *power) ctrl_cmd_t *req = RPC_DEFAULT_REQ(); ctrl_cmd_t *resp = NULL; - resp = wifi_get_max_tx_power(req); + resp = rpc_slaveif_wifi_get_max_tx_power(req); if (resp && resp->resp_event_status == SUCCESS) { *power = resp->u.wifi_tx_power.power; } @@ -897,7 +668,7 @@ esp_err_t rpc_wifi_sta_get_negotiated_phymode(wifi_phy_mode_t *phymode) ctrl_cmd_t *req = RPC_DEFAULT_REQ(); ctrl_cmd_t *resp = NULL; - resp = wifi_sta_get_negotiated_phymode(req); + resp = rpc_slaveif_wifi_sta_get_negotiated_phymode(req); if (resp && resp->resp_event_status == SUCCESS) { *phymode = resp->u.wifi_sta_get_negotiated_phymode.phymode; } @@ -910,7 +681,7 @@ esp_err_t rpc_wifi_sta_get_aid(uint16_t *aid) ctrl_cmd_t *req = RPC_DEFAULT_REQ(); ctrl_cmd_t *resp = NULL; - resp = wifi_sta_get_aid(req); + resp = rpc_slaveif_wifi_sta_get_aid(req); if (resp && resp->resp_event_status == SUCCESS) { *aid = resp->u.wifi_sta_get_aid.aid; } @@ -925,7 +696,7 @@ esp_err_t rpc_wifi_set_band(wifi_band_t band) ctrl_cmd_t *resp = NULL; req->u.wifi_band = band; - resp = wifi_set_band(req); + resp = rpc_slaveif_wifi_set_band(req); return rpc_rsp_callback(resp); } @@ -936,7 +707,7 @@ esp_err_t rpc_wifi_get_band(wifi_band_t *band) ctrl_cmd_t *req = RPC_DEFAULT_REQ(); ctrl_cmd_t *resp = NULL; - resp = wifi_get_band(req); + resp = rpc_slaveif_wifi_get_band(req); if (resp && resp->resp_event_status == SUCCESS) { *band = resp->u.wifi_band; } @@ -950,7 +721,7 @@ esp_err_t rpc_wifi_set_band_mode(wifi_band_mode_t band_mode) ctrl_cmd_t *resp = NULL; req->u.wifi_band_mode = band_mode; - resp = wifi_set_band_mode(req); + resp = rpc_slaveif_wifi_set_band_mode(req); return rpc_rsp_callback(resp); } @@ -961,7 +732,7 @@ esp_err_t rpc_wifi_get_band_mode(wifi_band_mode_t *band_mode) ctrl_cmd_t *req = RPC_DEFAULT_REQ(); ctrl_cmd_t *resp = NULL; - resp = wifi_get_band_mode(req); + resp = rpc_slaveif_wifi_get_band_mode(req); if (resp && resp->resp_event_status == SUCCESS) { *band_mode = resp->u.wifi_band_mode; } @@ -978,7 +749,7 @@ esp_err_t rpc_wifi_set_protocols(wifi_interface_t ifx, wifi_protocols_t *protoco req->u.wifi_protocols.ghz_2g = protocols->ghz_2g; req->u.wifi_protocols.ghz_5g = protocols->ghz_5g; - resp = wifi_set_protocols(req); + resp = rpc_slaveif_wifi_set_protocols(req); return rpc_rsp_callback(resp); } @@ -990,7 +761,7 @@ esp_err_t rpc_wifi_get_protocols(wifi_interface_t ifx, wifi_protocols_t *protoco req->u.wifi_protocols.ifx = ifx; - resp = wifi_get_protocols(req); + resp = rpc_slaveif_wifi_get_protocols(req); if (resp && resp->resp_event_status == SUCCESS) { protocols->ghz_2g = resp->u.wifi_protocols.ghz_2g; protocols->ghz_5g = resp->u.wifi_protocols.ghz_5g; @@ -1008,7 +779,7 @@ esp_err_t rpc_wifi_set_bandwidths(wifi_interface_t ifx, wifi_bandwidths_t *bw) req->u.wifi_bandwidths.ghz_2g = bw->ghz_2g; req->u.wifi_bandwidths.ghz_5g = bw->ghz_5g; - resp = wifi_set_bandwidths(req); + resp = rpc_slaveif_wifi_set_bandwidths(req); return rpc_rsp_callback(resp); } @@ -1021,7 +792,7 @@ esp_err_t rpc_wifi_get_bandwidths(wifi_interface_t ifx, wifi_bandwidths_t *bw) req->u.wifi_bandwidths.ifx = ifx; - resp = wifi_get_bandwidths(req); + resp = rpc_slaveif_wifi_get_bandwidths(req); if (resp && resp->resp_event_status == SUCCESS) { bw->ghz_2g = resp->u.wifi_bandwidths.ghz_2g; bw->ghz_5g = resp->u.wifi_bandwidths.ghz_5g; @@ -1038,7 +809,7 @@ int rpc_config_heartbeat(void) req->u.e_heartbeat.enable = YES; req->u.e_heartbeat.duration = HEARTBEAT_DURATION_SEC; - resp = config_heartbeat(req); + resp = rpc_slaveif_config_heartbeat(req); return rpc_rsp_callback(resp); } @@ -1050,7 +821,7 @@ int rpc_disable_heartbeat(void) ctrl_cmd_t *req = RPC_DEFAULT_REQ(); req->u.e_heartbeat.enable = NO; - resp = config_heartbeat(req); + resp = rpc_slaveif_config_heartbeat(req); return rpc_rsp_callback(resp); } @@ -1065,7 +836,7 @@ int rpc_wifi_init(const wifi_init_config_t *arg) return FAILURE; g_h.funcs->_h_memcpy(&req->u.wifi_init_config, (void*)arg, sizeof(wifi_init_config_t)); - resp = wifi_init(req); + resp = rpc_slaveif_wifi_init(req); return rpc_rsp_callback(resp); } @@ -1076,7 +847,7 @@ int rpc_wifi_deinit(void) ctrl_cmd_t *req = RPC_DEFAULT_REQ(); ctrl_cmd_t *resp = NULL; - resp = wifi_deinit(req); + resp = rpc_slaveif_wifi_deinit(req); return rpc_rsp_callback(resp); } @@ -1094,7 +865,7 @@ int rpc_wifi_get_mode(wifi_mode_t* mode) if (!mode) return FAILURE; - resp = wifi_get_mode(req); + resp = rpc_slaveif_wifi_get_mode(req); if (resp && resp->resp_event_status == SUCCESS) { *mode = resp->u.wifi_mode.mode; @@ -1109,7 +880,7 @@ int rpc_wifi_start(void) ctrl_cmd_t *req = RPC_DEFAULT_REQ(); ctrl_cmd_t *resp = NULL; - resp = wifi_start(req); + resp = rpc_slaveif_wifi_start(req); return rpc_rsp_callback(resp); } @@ -1122,7 +893,7 @@ int rpc_wifi_stop(void) ctrl_cmd_t *req = RPC_DEFAULT_REQ(); ctrl_cmd_t *resp = NULL; - resp = wifi_stop(req); + resp = rpc_slaveif_wifi_stop(req); return rpc_rsp_callback(resp); } @@ -1133,7 +904,7 @@ int rpc_wifi_connect(void) ctrl_cmd_t *req = RPC_DEFAULT_REQ(); ctrl_cmd_t *resp = NULL; - resp = wifi_connect(req); + resp = rpc_slaveif_wifi_connect(req); return rpc_rsp_callback(resp); return 0; #else @@ -1144,7 +915,7 @@ int rpc_wifi_connect(void) req->rpc_rsp_cb = rpc_rsp_callback; ESP_LOGE(TAG, "Async call registerd: %p", rpc_rsp_callback); - wifi_connect(req); + rpc_slaveif_wifi_connect(req); return SUCCESS; #endif @@ -1156,7 +927,7 @@ int rpc_wifi_disconnect(void) ctrl_cmd_t *req = RPC_DEFAULT_REQ(); ctrl_cmd_t *resp = NULL; - resp = wifi_disconnect(req); + resp = rpc_slaveif_wifi_disconnect(req); return rpc_rsp_callback(resp); } @@ -1172,7 +943,7 @@ int rpc_wifi_set_config(wifi_interface_t interface, wifi_config_t *conf) g_h.funcs->_h_memcpy(&req->u.wifi_config.u, conf, sizeof(wifi_config_t)); req->u.wifi_config.iface = interface; - resp = wifi_set_config(req); + resp = rpc_slaveif_wifi_set_config(req); return rpc_rsp_callback(resp); } @@ -1187,7 +958,7 @@ int rpc_wifi_get_config(wifi_interface_t interface, wifi_config_t *conf) req->u.wifi_config.iface = interface; - resp = wifi_get_config(req); + resp = rpc_slaveif_wifi_get_config(req); g_h.funcs->_h_memcpy(conf, &resp->u.wifi_config.u, sizeof(wifi_config_t)); @@ -1207,7 +978,7 @@ int rpc_wifi_scan_start(const wifi_scan_config_t *config, bool block) req->u.wifi_scan_config.block = block; - resp = wifi_scan_start(req); + resp = rpc_slaveif_wifi_scan_start(req); return rpc_rsp_callback(resp); } @@ -1219,7 +990,7 @@ int rpc_wifi_scan_stop(void) ctrl_cmd_t *resp = NULL; ESP_LOGV(TAG, "scan stop"); - resp = wifi_scan_stop(req); + resp = rpc_slaveif_wifi_scan_stop(req); return rpc_rsp_callback(resp); } @@ -1232,7 +1003,7 @@ int rpc_wifi_scan_get_ap_num(uint16_t *number) if (!number) return FAILURE; - resp = wifi_scan_get_ap_num(req); + resp = rpc_slaveif_wifi_scan_get_ap_num(req); if (resp && resp->resp_event_status == SUCCESS) { *number = resp->u.wifi_scan_ap_list.number; @@ -1249,7 +1020,7 @@ int rpc_wifi_scan_get_ap_record(wifi_ap_record_t *ap_record) if (!ap_record) return FAILURE; - resp = wifi_scan_get_ap_record(req); + resp = rpc_slaveif_wifi_scan_get_ap_record(req); if (resp && resp->resp_event_status == SUCCESS) { g_h.funcs->_h_memcpy(ap_record, &resp->u.wifi_ap_record, sizeof(wifi_ap_record_t)); } @@ -1268,7 +1039,7 @@ int rpc_wifi_scan_get_ap_records(uint16_t *number, wifi_ap_record_t *ap_records) g_h.funcs->_h_memset(ap_records, 0, (*number)*sizeof(wifi_ap_record_t)); req->u.wifi_scan_ap_list.number = *number; - resp = wifi_scan_get_ap_records(req); + resp = rpc_slaveif_wifi_scan_get_ap_records(req); if (resp && resp->resp_event_status == SUCCESS) { ESP_LOGV(TAG, "num: %u",resp->u.wifi_scan_ap_list.number); @@ -1284,7 +1055,7 @@ int rpc_wifi_clear_ap_list(void) ctrl_cmd_t *req = RPC_DEFAULT_REQ(); ctrl_cmd_t *resp = NULL; - resp = wifi_clear_ap_list(req); + resp = rpc_slaveif_wifi_clear_ap_list(req); return rpc_rsp_callback(resp); } @@ -1295,7 +1066,7 @@ int rpc_wifi_restore(void) ctrl_cmd_t *req = RPC_DEFAULT_REQ(); ctrl_cmd_t *resp = NULL; - resp = wifi_restore(req); + resp = rpc_slaveif_wifi_restore(req); return rpc_rsp_callback(resp); } @@ -1305,7 +1076,7 @@ int rpc_wifi_clear_fast_connect(void) ctrl_cmd_t *req = RPC_DEFAULT_REQ(); ctrl_cmd_t *resp = NULL; - resp = wifi_clear_fast_connect(req); + resp = rpc_slaveif_wifi_clear_fast_connect(req); return rpc_rsp_callback(resp); } @@ -1316,7 +1087,7 @@ int rpc_wifi_deauth_sta(uint16_t aid) ctrl_cmd_t *resp = NULL; req->u.wifi_deauth_sta.aid = aid; - resp = wifi_deauth_sta(req); + resp = rpc_slaveif_wifi_deauth_sta(req); return rpc_rsp_callback(resp); } @@ -1329,7 +1100,7 @@ int rpc_wifi_sta_get_ap_info(wifi_ap_record_t *ap_info) if (!ap_info) return FAILURE; - resp = wifi_sta_get_ap_info(req); + resp = rpc_slaveif_wifi_sta_get_ap_info(req); if (resp && resp->resp_event_status == SUCCESS) { g_h.funcs->_h_memcpy(ap_info, resp->u.wifi_scan_ap_list.out_list, @@ -1349,7 +1120,7 @@ int rpc_wifi_set_ps(wifi_ps_type_t type) req->u.wifi_ps.ps_mode = type; - resp = wifi_set_ps(req); + resp = rpc_slaveif_wifi_set_ps(req); return rpc_rsp_callback(resp); } @@ -1366,7 +1137,7 @@ int rpc_wifi_get_ps(wifi_ps_type_t *type) if (!type) return FAILURE; - resp = wifi_get_ps(req); + resp = rpc_slaveif_wifi_get_ps(req); *type = resp->u.wifi_ps.ps_mode; @@ -1380,7 +1151,7 @@ int rpc_wifi_set_storage(wifi_storage_t storage) ctrl_cmd_t *resp = NULL; req->u.wifi_storage = storage; - resp = wifi_set_storage(req); + resp = rpc_slaveif_wifi_set_storage(req); return rpc_rsp_callback(resp); } @@ -1392,7 +1163,7 @@ int rpc_wifi_set_bandwidth(wifi_interface_t ifx, wifi_bandwidth_t bw) req->u.wifi_bandwidth.ifx = ifx; req->u.wifi_bandwidth.bw = bw; - resp = wifi_set_bandwidth(req); + resp = rpc_slaveif_wifi_set_bandwidth(req); return rpc_rsp_callback(resp); } @@ -1406,7 +1177,7 @@ int rpc_wifi_get_bandwidth(wifi_interface_t ifx, wifi_bandwidth_t *bw) return FAILURE; req->u.wifi_bandwidth.ifx = ifx; - resp = wifi_get_bandwidth(req); + resp = rpc_slaveif_wifi_get_bandwidth(req); if (resp && resp->resp_event_status == SUCCESS) { *bw = resp->u.wifi_bandwidth.bw; @@ -1422,7 +1193,7 @@ int rpc_wifi_set_channel(uint8_t primary, wifi_second_chan_t second) req->u.wifi_channel.primary = primary; req->u.wifi_channel.second = second; - resp = wifi_set_channel(req); + resp = rpc_slaveif_wifi_set_channel(req); return rpc_rsp_callback(resp); } @@ -1435,7 +1206,7 @@ int rpc_wifi_get_channel(uint8_t *primary, wifi_second_chan_t *second) if ((!primary) || (!second)) return FAILURE; - resp = wifi_get_channel(req); + resp = rpc_slaveif_wifi_get_channel(req); if (resp && resp->resp_event_status == SUCCESS) { *primary = resp->u.wifi_channel.primary; @@ -1455,7 +1226,7 @@ int rpc_wifi_set_country_code(const char *country, bool ieee80211d_enabled) memcpy(&req->u.wifi_country_code.cc[0], country, sizeof(req->u.wifi_country_code.cc)); req->u.wifi_country_code.ieee80211d_enabled = ieee80211d_enabled; - resp = wifi_set_country_code(req); + resp = rpc_slaveif_wifi_set_country_code(req); return rpc_rsp_callback(resp); } @@ -1468,7 +1239,7 @@ int rpc_wifi_get_country_code(char *country) if (!country) return FAILURE; - resp = wifi_get_country_code(req); + resp = rpc_slaveif_wifi_get_country_code(req); if (resp && resp->resp_event_status == SUCCESS) { memcpy(country, &resp->u.wifi_country_code.cc[0], sizeof(resp->u.wifi_country_code.cc)); @@ -1491,7 +1262,7 @@ int rpc_wifi_set_country(const wifi_country_t *country) req->u.wifi_country.max_tx_power = country->max_tx_power; req->u.wifi_country.policy = country->policy; - resp = wifi_set_country(req); + resp = rpc_slaveif_wifi_set_country(req); return rpc_rsp_callback(resp); } @@ -1504,7 +1275,7 @@ int rpc_wifi_get_country(wifi_country_t *country) if (!country) return FAILURE; - resp = wifi_get_country(req); + resp = rpc_slaveif_wifi_get_country(req); if (resp && resp->resp_event_status == SUCCESS) { memcpy(&country->cc[0], &resp->u.wifi_country.cc[0], sizeof(resp->u.wifi_country.cc)); country->schan = resp->u.wifi_country.schan; @@ -1524,7 +1295,7 @@ int rpc_wifi_ap_get_sta_list(wifi_sta_list_t *sta) if (!sta) return FAILURE; - resp = wifi_ap_get_sta_list(req); + resp = rpc_slaveif_wifi_ap_get_sta_list(req); if (resp && resp->resp_event_status == SUCCESS) { for (int i = 0; i < ESP_WIFI_MAX_CONN_NUM; i++) { memcpy(sta->sta[i].mac, resp->u.wifi_ap_sta_list.sta[i].mac, 6); @@ -1555,7 +1326,7 @@ int rpc_wifi_ap_get_sta_aid(const uint8_t mac[6], uint16_t *aid) memcpy(&req->u.wifi_ap_get_sta_aid.mac[0], &mac[0], MAC_SIZE_BYTES); - resp = wifi_ap_get_sta_aid(req); + resp = rpc_slaveif_wifi_ap_get_sta_aid(req); if (resp && resp->resp_event_status == SUCCESS) { *aid = resp->u.wifi_ap_get_sta_aid.aid; } @@ -1572,7 +1343,7 @@ int rpc_wifi_sta_get_rssi(int *rssi) if (!rssi) return FAILURE; - resp = wifi_sta_get_rssi(req); + resp = rpc_slaveif_wifi_sta_get_rssi(req); if (resp && resp->resp_event_status == SUCCESS) { *rssi = resp->u.wifi_sta_get_rssi.rssi; } @@ -1589,7 +1360,7 @@ int rpc_wifi_set_protocol(wifi_interface_t ifx, uint8_t protocol_bitmap) req->u.wifi_protocol.ifx = ifx; req->u.wifi_protocol.protocol_bitmap = protocol_bitmap; - resp = wifi_set_protocol(req); + resp = rpc_slaveif_wifi_set_protocol(req); return rpc_rsp_callback(resp); } @@ -1602,7 +1373,7 @@ int rpc_wifi_get_protocol(wifi_interface_t ifx, uint8_t *protocol_bitmap) ctrl_cmd_t *req = RPC_DEFAULT_REQ(); ctrl_cmd_t *resp = NULL; - resp = wifi_get_protocol(req); + resp = rpc_slaveif_wifi_get_protocol(req); if (resp && resp->resp_event_status == SUCCESS) { *protocol_bitmap = resp->u.wifi_protocol.protocol_bitmap; } diff --git a/idf_component.yml b/idf_component.yml index 7a4dc134..a069e605 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.0.1" +version: "2.0.2" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: From bee29d7e5496180ed750d3c022be608a4bae8faa Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Thu, 20 Mar 2025 11:09:53 +0800 Subject: [PATCH 017/114] enhance(host_stats) Print mem stats also - added code to print mem stats along with packet stats - added code to increment pkt_stats.sta_rx_out --- host/drivers/transport/sdio/sdio_drv.c | 5 +++++ host/drivers/transport/spi/spi_drv.c | 6 ++++++ host/drivers/transport/spi_hd/spi_hd_drv.c | 5 +++++ host/drivers/transport/uart/uart_drv.c | 10 ++++++++++ host/utils/stats.c | 13 ++++++++++--- 5 files changed, 36 insertions(+), 3 deletions(-) diff --git a/host/drivers/transport/sdio/sdio_drv.c b/host/drivers/transport/sdio/sdio_drv.c index 1bc025f0..a73aa010 100644 --- a/host/drivers/transport/sdio/sdio_drv.c +++ b/host/drivers/transport/sdio/sdio_drv.c @@ -1017,6 +1017,11 @@ static void sdio_process_rx_task(void const* pvParameters) ESP_LOGW(TAG, "unknown type %d ", buf_handle->if_type); } +#if ESP_PKT_STATS + if (buf_handle->if_type == ESP_STA_IF) + pkt_stats.sta_rx_out++; +#endif + /* Free buffer handle */ /* When buffer offloaded to other module, that module is * responsible for freeing buffer. In case not offloaded or diff --git a/host/drivers/transport/spi/spi_drv.c b/host/drivers/transport/spi/spi_drv.c index 8e3751a1..3305a485 100644 --- a/host/drivers/transport/spi/spi_drv.c +++ b/host/drivers/transport/spi/spi_drv.c @@ -578,6 +578,12 @@ static void spi_process_rx_task(void const* pvParameters) } else { ESP_LOGW(TAG, "unknown type %d ", buf_handle->if_type); } + +#if ESP_PKT_STATS + if (buf_handle->if_type == ESP_STA_IF) + pkt_stats.sta_rx_out++; +#endif + /* Free buffer handle */ /* When buffer offloaded to other module, that module is * responsible for freeing buffer. In case not offloaded or diff --git a/host/drivers/transport/spi_hd/spi_hd_drv.c b/host/drivers/transport/spi_hd/spi_hd_drv.c index e51b9e0b..5e37471a 100644 --- a/host/drivers/transport/spi_hd/spi_hd_drv.c +++ b/host/drivers/transport/spi_hd/spi_hd_drv.c @@ -648,6 +648,11 @@ static void spi_hd_process_rx_task(void const* pvParameters) ESP_LOGW(TAG, "unknown type %d ", buf_handle->if_type); } +#if ESP_PKT_STATS + if (buf_handle->if_type == ESP_STA_IF) + pkt_stats.sta_rx_out++; +#endif + /* Free buffer handle */ /* When buffer offloaded to other module, that module is * responsible for freeing buffer. In case not offloaded or diff --git a/host/drivers/transport/uart/uart_drv.c b/host/drivers/transport/uart/uart_drv.c index a5502ed3..1708149c 100644 --- a/host/drivers/transport/uart/uart_drv.c +++ b/host/drivers/transport/uart/uart_drv.c @@ -167,6 +167,11 @@ static void h_uart_write_task(void const* pvParameters) ESP_LOGE(TAG, "failed to send uart data"); } +#if ESP_PKT_STATS + if (buf_handle.if_type == ESP_STA_IF) + pkt_stats.sta_tx_out++; +#endif + done: if (len && !buf_handle.payload_zcopy) { /* free allocated buffer, only if zerocopy is not requested */ @@ -271,6 +276,11 @@ static void h_uart_process_rx_task(void const* pvParameters) ESP_LOGW(TAG, "unknown type %d ", buf_handle->if_type); } +#if ESP_PKT_STATS + if (buf_handle->if_type == ESP_STA_IF) + pkt_stats.sta_rx_out++; +#endif + /* Free buffer handle */ /* When buffer offloaded to other module, that module is * responsible for freeing buffer. In case not offloaded or diff --git a/host/utils/stats.c b/host/utils/stats.c index 3917fc37..35cd61c8 100644 --- a/host/utils/stats.c +++ b/host/utils/stats.c @@ -209,10 +209,17 @@ struct mem_stats h_stats_g; #if ESP_PKT_STATS void stats_timer_func(void * arg) { - ESP_LOGI(TAG, "slave: sta_rx_in: %lu sta_rx_out: %lu sta_tx_in [pass: %lu drop: %lu] sta_tx_out: %lu ", + ESP_LOGI(TAG, "slave: sta_rx_in: %lu sta_rx_out: %lu sta_tx_in [pass: %lu drop: %lu] sta_tx_out: %lu, throttling %u", pkt_stats.sta_rx_in,pkt_stats.sta_rx_out, - pkt_stats.sta_tx_in_pass, pkt_stats.sta_tx_in_drop, pkt_stats.sta_tx_out); - ESP_LOGI(TAG, "wifi_tx_throttling %u", wifi_tx_throttling); + pkt_stats.sta_tx_in_pass, pkt_stats.sta_tx_in_drop, pkt_stats.sta_tx_out, + wifi_tx_throttling); + ESP_LOGI(TAG, "internal: free %d l-free %d min-free %d, psram: free %d l-free %d min-free %d", + heap_caps_get_free_size(MALLOC_CAP_8BIT) - heap_caps_get_free_size(MALLOC_CAP_SPIRAM), + heap_caps_get_largest_free_block(MALLOC_CAP_8BIT | MALLOC_CAP_INTERNAL), + heap_caps_get_minimum_free_size(MALLOC_CAP_8BIT | MALLOC_CAP_INTERNAL), + heap_caps_get_free_size(MALLOC_CAP_SPIRAM), + heap_caps_get_largest_free_block(MALLOC_CAP_SPIRAM), + heap_caps_get_minimum_free_size(MALLOC_CAP_SPIRAM)); } #endif From 4fd4de08e9e19796158ac9c1d96c02d4b6839999 Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Thu, 15 May 2025 13:27:32 +0800 Subject: [PATCH 018/114] bugfix(ci_use_5_5): use release-5.5 image for ci build - use `image: espressif/idf:release-v5.5` for CI target `build_idf_v5.5` - allow buillding against master branch to fail --- .gitlab-ci.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d46807a3..f890f383 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -49,8 +49,17 @@ build_idf_v5.4: IDF_EXAMPLE_PATH: examples/protocols/mqtt/tcp build_idf_v5.5: + extends: .build_template + image: espressif/idf:release-v5.5 + parallel: + matrix: + - IDF_TARGET: ["esp32p4", "esp32h2", "esp32s3"] + IDF_EXAMPLE_PATH: [examples/protocols/mqtt/tcp, examples/wifi/iperf] + +build_idf_master: extends: .build_template image: espressif/idf:latest + allow_failure: true parallel: matrix: - IDF_TARGET: ["esp32p4", "esp32h2", "esp32s3"] From 7b347f7f547bcf66ec95384b9bb9609794586de4 Mon Sep 17 00:00:00 2001 From: LiPeng Date: Wed, 21 May 2025 19:37:57 +0800 Subject: [PATCH 019/114] Modify to allow C5 to use sdio interface --- Kconfig | 2 +- host/drivers/transport/sdio/sdio_reg.h | 2 +- slave/main/Kconfig.projbuild | 2 +- slave/main/interface.h | 2 +- slave/main/sdio_slave_api.h | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Kconfig b/Kconfig index 2e3c225c..2e45bddf 100644 --- a/Kconfig +++ b/Kconfig @@ -27,7 +27,7 @@ menu "ESP-Hosted config" # y if SDIO Transport is available, based on host and slave selection config ESP_HOSTED_PRIV_SDIO_OPTION bool - default y if (IDF_TARGET_ESP32 || IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32P4) && (SLAVE_IDF_TARGET_ESP32 || SLAVE_IDF_TARGET_ESP32C6) + default y if (IDF_TARGET_ESP32 || IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32P4) && (SLAVE_IDF_TARGET_ESP32 || SLAVE_IDF_TARGET_ESP32C6 || SLAVE_IDF_TARGET_ESP32C5) default n # y if SPI HD Transport is available, based on host and slave selection diff --git a/host/drivers/transport/sdio/sdio_reg.h b/host/drivers/transport/sdio/sdio_reg.h index 45e8c01a..f272d59a 100644 --- a/host/drivers/transport/sdio/sdio_reg.h +++ b/host/drivers/transport/sdio/sdio_reg.h @@ -69,7 +69,7 @@ #define ESP_HOST_INT_ENA_REG (ESP_SLAVE_SLCHOST_BASE + 0xDC) /* Host side interrupts for ESP_HOST_INT_ENA_REG */ -#if H_SLAVE_TARGET_ESP32 || H_SLAVE_TARGET_ESP32C6 +#if H_SLAVE_TARGET_ESP32 || H_SLAVE_TARGET_ESP32C6 || H_SLAVE_TARGET_ESP32C5 #define SDIO_INT_NEW_PACKET (23) #define SDIO_INT_START_THROTTLE (7) #define SDIO_INT_STOP_THROTTLE (6) diff --git a/slave/main/Kconfig.projbuild b/slave/main/Kconfig.projbuild index 7a7e48e5..68311903 100644 --- a/slave/main/Kconfig.projbuild +++ b/slave/main/Kconfig.projbuild @@ -34,7 +34,7 @@ menu "Example Configuration" config ESP_SDIO_HOST_INTERFACE bool "SDIO" - depends on IDF_TARGET_ESP32 || IDF_TARGET_ESP32C6 + depends on IDF_TARGET_ESP32 || IDF_TARGET_ESP32C6 || IDF_TARGET_ESP32C5 help Enable/Disable SDIO host interface diff --git a/slave/main/interface.h b/slave/main/interface.h index dc1d4cef..755ff45a 100644 --- a/slave/main/interface.h +++ b/slave/main/interface.h @@ -22,7 +22,7 @@ #ifdef CONFIG_ESP_SDIO_HOST_INTERFACE -#if defined(CONFIG_IDF_TARGET_ESP32)||defined(CONFIG_IDF_TARGET_ESP32C6) +#if defined(CONFIG_IDF_TARGET_ESP32)||defined(CONFIG_IDF_TARGET_ESP32C6)||defined(CONFIG_IDF_TARGET_ESP32C5) #include "driver/sdio_slave.h" #else #error "SDIO is not supported for this chipset" diff --git a/slave/main/sdio_slave_api.h b/slave/main/sdio_slave_api.h index 43760931..4066ed51 100644 --- a/slave/main/sdio_slave_api.h +++ b/slave/main/sdio_slave_api.h @@ -17,7 +17,7 @@ #ifndef __SDIO_SLAVE_API_H #define __SDIO_SLAVE_API_H -#if defined CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32C6 +#if defined CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C5 #else #error "SDIO is not supported for this target. Please use SPI" #endif From e225d1f54241f02fbc4e7302f0f07e7af066fca6 Mon Sep 17 00:00:00 2001 From: LiPeng Date: Wed, 21 May 2025 19:42:18 +0800 Subject: [PATCH 020/114] Modify sdio slave support judgment conditions --- slave/main/Kconfig.projbuild | 11 +++-------- slave/main/interface.h | 2 +- slave/main/sdio_slave_api.h | 2 +- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/slave/main/Kconfig.projbuild b/slave/main/Kconfig.projbuild index 68311903..8ff4dd8c 100644 --- a/slave/main/Kconfig.projbuild +++ b/slave/main/Kconfig.projbuild @@ -17,13 +17,8 @@ menu "Example Configuration" choice ESP_HOST_INTERFACE bool "Transport layer" - default ESP_SPI_HOST_INTERFACE if IDF_TARGET_ESP32 - default ESP_SPI_HOST_INTERFACE if IDF_TARGET_ESP32S2 - default ESP_SPI_HOST_INTERFACE if IDF_TARGET_ESP32S3 - default ESP_SPI_HOST_INTERFACE if IDF_TARGET_ESP32C2 - default ESP_SPI_HOST_INTERFACE if IDF_TARGET_ESP32C3 - default ESP_SDIO_HOST_INTERFACE if IDF_TARGET_ESP32C6 - default ESP_SPI_HOST_INTERFACE if IDF_TARGET_ESP32C5 + default ESP_SDIO_HOST_INTERFACE if SOC_SDIO_SLAVE_SUPPORTED + default ESP_SPI_HOST_INTERFACE help Bus interface to be used for communication with the host @@ -34,7 +29,7 @@ menu "Example Configuration" config ESP_SDIO_HOST_INTERFACE bool "SDIO" - depends on IDF_TARGET_ESP32 || IDF_TARGET_ESP32C6 || IDF_TARGET_ESP32C5 + depends on SOC_SDIO_SLAVE_SUPPORTED help Enable/Disable SDIO host interface diff --git a/slave/main/interface.h b/slave/main/interface.h index 755ff45a..09711247 100644 --- a/slave/main/interface.h +++ b/slave/main/interface.h @@ -22,7 +22,7 @@ #ifdef CONFIG_ESP_SDIO_HOST_INTERFACE -#if defined(CONFIG_IDF_TARGET_ESP32)||defined(CONFIG_IDF_TARGET_ESP32C6)||defined(CONFIG_IDF_TARGET_ESP32C5) +#if CONFIG_SOC_SDIO_SLAVE_SUPPORTED #include "driver/sdio_slave.h" #else #error "SDIO is not supported for this chipset" diff --git a/slave/main/sdio_slave_api.h b/slave/main/sdio_slave_api.h index 4066ed51..0e09408b 100644 --- a/slave/main/sdio_slave_api.h +++ b/slave/main/sdio_slave_api.h @@ -17,7 +17,7 @@ #ifndef __SDIO_SLAVE_API_H #define __SDIO_SLAVE_API_H -#if defined CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C5 +#if CONFIG_SOC_SDIO_SLAVE_SUPPORTED #else #error "SDIO is not supported for this target. Please use SPI" #endif From 8165d0e279e140cf17e4fc8bdb46750088f53af3 Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Tue, 27 May 2025 12:54:21 +0800 Subject: [PATCH 021/114] feature(esp32c5_eco2_sdio) Added ESP32-C5 SDIO support - updated SDIO slave configuration - updated documents --- README.md | 8 ++- docs/images/PerformanceSetup-ShieldBox.png | Bin 0 -> 114919 bytes docs/sdio.md | 62 +++++++++++++++------ idf_component.yml | 2 +- slave/main/Kconfig.projbuild | 8 ++- 5 files changed, 59 insertions(+), 21 deletions(-) create mode 100644 docs/images/PerformanceSetup-ShieldBox.png diff --git a/README.md b/README.md index 43135b72..32167ec2 100644 --- a/README.md +++ b/README.md @@ -149,7 +149,7 @@ Legends: - Bluetooth uses dedicated platform, UART and Wi-Fi uses any other base transport - In other platforms, Bluetooth and Wi-Fi re-use same platform and hence use less GPIOs and less complicated - This transport combination allows Bluetooth to use dedicated uart transportt with additional 2 or 4 depending on hardware flow control. -- (S) : Sheild box reading +- (S) : Shield box reading - (O) : Over the air reading - TBD : To be determined - iperf : iperf2 with test resukts in mbps @@ -163,8 +163,8 @@ Legends: | Standard SPI | FD | 6 | jumper or PCB | Any_Slave | udp: 24 tcp: 22 | udp: 25 tcp: 22| Simplest solution for quick test | | Dual SPI | HD | 5 | jumper or PCB | Any_Slave [1] | udp: 32 tcp: 26 (O) | udp: 33 tcp: 25 (O) | Better throughput, but half duplex | | Quad SPI | HD | 7 | PCB only | Any_Slave [1] | udp: 41 tcp: 29 (O) | udp: 42 tcp: 28 (O) | Due to signal integrity, PCB is mandatory | -| SDIO 1-Bit | HD | 4 | jumper or PCB | ESP32, ESP32-C6 | TBD | TBD | Stepping stone for PCB based SDIO 4-bit | -| SDIO 4-Bit | HD | 6 | PCB only | ESP32, ESP32-C6 | udp: 79.5 tcp: 53.4 (S) | udp: 68.1 tcp: 44 (S) | Highest performance | +| SDIO 1-Bit | HD | 4 | jumper or PCB | ESP32, ESP32-C6, ESP32-C5 [3] | TBD | TBD | Stepping stone for PCB based SDIO 4-bit | +| SDIO 4-Bit | HD | 6 | PCB only | ESP32, ESP32-C6, ESP32-C5 [3] | udp: 79.5 tcp: 53.4 (S) | udp: 68.1 tcp: 44 (S) | Highest performance | | Only BT over UART | FD | 2 or 4 | jumper or PCB | Any_Slave | NA | NA | Dedicated Bluetooth over UART pins | | UART | FD | 2 | jumper or PCB | Any_Slave | udp: 0.68 tcp: 0.67 (O) | udp: 0.68 tcp: 0.60 (O) | UART dedicated for BT & Wi-Fi [2] | | Dedicated platforms | FD | Extra 2 or 4 | jumper or PCB | Any_Slave | NA | NA | UART dedicated for BT & Wi-Fi on any other transport | @@ -173,6 +173,8 @@ Legends: > - [1] Dual/Quad SPI is not supported on ESP32 > > - [2] UART is only suitable for low throughput environments +> +> - [3] Currently in BETA support for ESP32-C5 (`--preview` in ESP-IDF master branch) With jumper cables, 'Standard SPI' and 'Dual SPI' solutions are easiest to evaluate, without much of hardware dependencies. SDIO 1-Bit can be tested with jumper cables, but it needs some additional hardware config, such as installation of external pull-up registers. diff --git a/docs/images/PerformanceSetup-ShieldBox.png b/docs/images/PerformanceSetup-ShieldBox.png new file mode 100644 index 0000000000000000000000000000000000000000..6fe02fa45a445f59435f02dd9da4b70c93aa23cf GIT binary patch literal 114919 zcmeEu2_TeR+kd2N*`lo3_bg*4``8)TqLihv%P@?wXQ`~&Q&Ec0qJ&DNvc%Y;5>lvS zEy|wk+yC6ml*+Tb-}k=H`@HY}v&_tW?sK1W-`D!PuIrqMG2W{~MZrR`Y11YuJzY)H zO`AygH*F&JCEE&GPE4Kn0^W$cO?BX#3L4oyZQ5k%i`6=Sb@z92MLBNblhRoG#3u=J zL3?BQq%`>?C6S(--P050xZlyvz!i+HEh8l- zCM64+1r2of86x;3HNa<-tD7Tu({Z$SLqnHnxM0xkpha6kN>&U8{eng_q!SY3x^4*Q zPJJCQ-mYkmwTF?E16>u?9>LoliE>6g=JV`z&Ek2k!7z6r~(!f&z z9C#qX+^f_v280mBU+(I#)}|Ne>;{J&L|D2?VSUUsB(dsJ?mv%47}MQf2ZQu35~)(9lnnzc<>)ahZ@X&At}_l-_-#NWC0Q;c}cmo zdx6?@9bKJW2s2B_;@RSkBy`3V0qwVT{V!Zuqa%Tu7&ID;w~lG+PZK)1`)fF& zAb}*%5kC)*n}7V;Z`8ni(}(}faAvT*?yd;!BN%;CdD*@GXyidpgeaaczDSf0p5$vZ z^u`7d1Q>(%@o;d2I0OV0?&so)bu{xt+C$y_fP8^A7pyx997%wW-dGIU%~1o5LPN6d zf%X91fTH4+1?xzVK?0|~KicZk{yu%bQ(4CmXebsF04R+gQ2|dHyhuyo5B)_{O zBr1Vt{GVeAMD;&l%5M;R)qefRlHY%T-=n{T{ErNfk^7Yc@`OI?89?awZ=t`mgu)R& zjM-joXN0G#Im%te!bn3@8ZdrUVEv5jPcN<)o0Z ze-+0F+#vWL2xUS>WF5z(2s*i*V-f_X^l#zVhW76tazB3p6Z{qCPg)wU4FviV__2=u z5*yjSzn}Zr$ot5m0QQ7Cp+Q_E3Hy%CWW9VKP`Y|T)O!`DLm`EPtS3N40Co}1gHO&- zKP@w3DM?Xd0RPtpw8Ie2xOzHboWP|ZA|spxux4$-wQJY7_x(Y0Jp2-Pq@1}I6$y+L%{MQ&iqS+hQNG+(8&I(v;FVwbn2mC^1F!ZdS5I3c1`3uzK<ve@-m;XNGm&7BIb*9YG0pu6(5ic5pbwN9$J&-7^@2&73 z8S=dk0*wX{@M`FL#1V@Pz$Z(PK3MdRw(-Zn7=TR$1sF_P6LeZTvmYO*g2WIUWFX1y(<>u z>Mw>udV-;CA<_9wS%L25hwRJ$Jk*z$!)p-15=+XjO}pL}NZ>_ky)BTJ7L&w#*uRlT z{E2YW(ZfL<%3A`S<5OA=NN<VYM6ASNdRE?zy>gwkA)2&^4JlwUpacg3z=CnmYt6&$W!33UXYzh4C%e7oqo zUDNz-$<|vtdmoJNx2O9}k@`dPgLia)o%LBKfCT)%Uj7Jef7(d>86Eka6f;JH(gff* z#412EDMDli(H%OL{wX$JqaXe%$Or+L^#@tvwaI>aN_o6`;im+lz#8`m>bAy;|HYI* z4UkaQl`x#7OFDUDpNE%;b$C-kK~hXYR$fd(OdfB#*ZIHy{J2i;C$K6( z0HN#b13|Rb+Xq5KK@jf0v=p#0@9-t9b-Y_s=ym-1)j6&6M?d+QZ|>sHdy9VrxUSvX z265mYx(W%r9R8uNARxH^JycyM3k)xE2j`-@t^N3HG3i;-LvIau15khE|5ReliXyb3-wQuNfts`^@UAH<0 zbnyMM)gy?XtI@&_wb@ zU#Pgh4@uUL*ZNne=KT{cRv?r{2)8ef$HjlvB&?19pN7Kl;=j(0n45uc9fk&xIe0Ty zH{D0bynj#2gH;rSQ;-o_=k@>dQJTCAo+Jc0ki-Wo>m0L$3|=T_Nf>x4ZApA6{NKeu3A}H_Gf+}O7C5M%tDgTEK%2mzUpNQ_NkH}fQtiW_ zu^@@Mx~>pJsDDjTPZ}hUR-clfjRYsNP8L;BpaSl? zMJ!IMKVT?O?R5nU=vEh`+9B=T?7%`jT5X7!?_7bw+v%^2| z|owpNkDCvFI*zUN>5 zhh;X%z5awbU@#e&qZ4TV1#`ewf4-er4G`h&Mi@Egkd(rYc~xlz2|`#zfG7X_oDf({vPN}+i6v+> zVamUEPDn=T$6SC60nq(pIUz!3=$D+6#82SlUp@Y}rBMH*`&S@Tun6oWu=^hy|L>bK z+t9G%lP2qM7-5+z*3lcgx-Jps?TGd91h`5R{F}MBI)bfak}x~8KX~28PsCti1Bp= z>rhuWQ)_^gjCRmQX{eX3Bg)qi+5xb3=#BL77WD=bL%5bOu`k$GjRZ^sTLh3;9}Kjw zc;h?7GkfEcgi-8~&>rNC`}pCveg1M5%62)gB7V^yXarV%A^|vtDElqUUz0<1Z;+9b zgqiLWRX+d%e}KJUg67^(d=K(`V2K|1fb@Vokptn-+ZE6ki2+UO#$c2AH=$bN){oNt z8zQ)Y{H-=^!0LZg4gODN{`E2=1t~CMb*V1+V85!Qc96(`KooMf+TayrqrJi2dgv3h z8^`+xKm%zMfb(FZ#cIXS9_{V~Qprd=SClIjAe}!FsehsPY-mL{nD1vJ`ltOf%Fzij zRzEMO{+sP5l2G`uh9V=6cWUdr@wYVT-^LqnyzuN-?7iPrR2$g!A2OJKnt}g}Enz5V zK|cJOttQkp92}jHKCAoV{tECcNkGeZ@C@?4YtyddF`>)fo5h41Ul(2xj0ogDAoKI> zOCSjT?`OaA`x^~406za_mDa{2IJ*B21?Q&~e&4oguM-?Xm%okRY#5dkVvco!W2UKR z^cRO)e}%G3$>Gf)UfHFj@oB1cJp0=z`^G#23J2-jI-U`9a|1v9r}h6|9A5n^Z|(me z@4p`MNZVgJ{0SDH|&B_s?8;nOcNzbBXgb{r6p0`rjY^r6 ze}mb!UxHOCZ!j1!?_pVD2L5M}8Jkmny^~Gk#%bN`8{PeO7%LG4y_3d^V|p9ij3C03 zW`if&M4lGEDT2HxYoKDICj&R~fOKP8YKP&%JDR)?|4K*DLP7s-^M>O&@u(qjs6hqT zFEoapHG+I}BT8`+713RSA!Wa^rES1fUBI@PjVP7$e{B0j5}y4o+hQ5{Q7F^{eLU-u zT!{~D?QncV#R??H;iB5xv6Q0sX`+yPRS=WANV8Dh6?Q)Fumh-#X5+h~7j{5Qbr3j~ ze`2KB?isp6fn)(lzQ1;NCi+p<^A_GOklY?)(@<0590<+O6<)K&tnyS%9mpC( z`134`GLW8!A(XV6$ou6%+i7c43i^gGA6?dNiULSN7Oe}l2Jt2!($J0dORx4a*|-;8 zfH9CvHi!vFkUIu=ORvdn1W;;YGU+HTg19O`66nZy1{Z#(RDoqxLc`!dg#}5@R}qBs z7#onc@H?^kNVw&Dw)nMs=YsB?_&JgwifYunYDjp8))iQm2s%M~)nZ(t1=CO*`v?Q4 zR_z5RDKG(9!`Y^3#%JYpcvc19I691vlHSO^w|lsMlj5O65ib1+$lhLhI(BBN(9EOa z2zeoeEz`aoReKcpK3wtHmnUQF*81>BaDcGRsDGl@S>B{{=%IY?2_XcZrspKDs)e9t z1p}_SfM=k|@0}9KE-Meoysq?8lBchSD?S-^U4mZ^YYj=vD2qJJAoF>@c>0ywU*9@M zb)J(D=8_=KljBfJm8I(L?N2**)$#@_!}ds{kBi5ywwK?1y8Y_Dnj8ggo?m3tB41)B+oLX1r6*!70cc0JSQ`#=OBG_Xu9fRutCqjQuYkoX+iSx z@-4kCF3CMRy#>lC1xQIzo!-Pt{Lkt>UZHQ!wV2x$L9QYHDLiKK&_EVq;y44p%8ltv;L6({ObXsO zBc5P8kf0v3$yQHeailYGXG5kc%Nt9TPpToKTlt?Y(zOwfL2i+=iM1K zgzY2tw=yQ;zKyJ^1&vMIlL%s+BbCQF=R?qewOOn5M5=se{$vG?!=r+X4(MaMk-d>TF9 zKVR5eTW-&2avec;({_>WQ7DWwRD?}j>*Qd&|J^~kEv%0hNCpZ!E5{B|b0@~~gr}-M z+#by@G0YF`W+|BWrun$^KsydfOgeo!Zq%K%CzdAg@Z@M;%hTSOIs2Zz z4_reR%C<*mIwwZzJMxUsF5G+>^m5{DF$Z_W<4v_MX6d*^219MPMU0yU@`!~<%ta+kuj zpMQ8Z5!`dWjy!^ux_aCuzxmViM`=YUp6qP<+Y1BY&AD#{{PQgWur4;FlQo7|gwpcN zhbG21q+6q|MqZNsG$%xz`G^~>QpKGOn;tsTKG8SeVpT$X1iNT_l6S`|kz3GO;_GBFZ+cF3goi0jd&!i$RmLw8;@m8zd%Jiy?#heWD&s!}okGf!x~ zifLN3%1k+yKE+36d|(u~@a{@bjxv!aYSj z){-@fWep7caoSI)0kRT_TlG2NKl+?I8fi?e_Y`WW2L+vBy^~kQXBwl<7MkmH7T5L7 zH`WN6HnFnAZ;fE3sy?oF!nk60Ap^e{+E%cPCw#oy;)-Iya*^Ovt!0#kDuey<4bilP zDyMgEmM(sM^1ydNMfiRQhaZhd3Qjxc{D+ATgY2g5w1uy3SZ$vlncA|03sKs9N&kkN z`jQw2@^I=$|01M$z~+VSCp4b7ic{EGs2+uUJq7a`Q)kjIRbl7~*`pT79NmA4yZ-XH z@DrE!@k9F%R3ALOeBsC51ltH9$dW6XE7`gCYffC%p!1qfWyF|~Y>ns*8KjR9u25Yu zVBa-Ct~cA0Xx)CRPjGrM$mVrWPRI@+ZgL5Af5c*$-S+dZ^5ULcyWPUhRY9VB^nx&= zbm~3Uf8c2>pDk6&$o}QqhXOUoB-95aCdSUW(YkqKs@N=b$k;fJ-c!;*au3fMwG{O) zzEU)Gp$!n$jE*2|QKFqURsXVU_7PLqFSfYYRQ!BU1 z(q{16iQ#gp+Tlptf#WD6faF~v^iaYLP|Szt&1*QCfjemzuKGgaeAdX&z5Z<_K{NAqSA)Qm z%gw4}(n?46y(Uh(b zV~Uj;{r$0yH((P}r&KRH$I-fKD)^4>Vews(w?^7k-pI$W&!cL_@=1>hmF<5c^Kz7j zPQUri%E0yD=r%ugm2_e3mCnuZqjd1vs4?G)1P$jaQ8D9hI=lwAJ-X-0tAWvEdb&UM z^%G@oB^{5hAi)T70i7VS7aVjA*{0VW(wb`?52W|+(nI2SnL5bHlft$@pmEslM@*sS zOGclfgFPb`l1;{V)Jv-Cv9}cSea;McEUTr7SQptTg-r$TsT)thBpjE~vjg4C!&Xxd zhsA}2w)B#aO*kxk?4&(c2VY!%Y+GEioml#t=XGBN0;{?3iMjkUSTz+6&kz(#cY7ZOp^Fv>+8H8M) zOluBI@ZFt^uM~75vcpQk^dVbEtxwK|Yn~4FCb2+p2u;S2-PZDV8w@AsIufmr zi`tiKQO=~oeD!$_5|sr*im2Zg0Pb)Nv(x?P4xdmXvoHCnFwcmSL^+iSAZuq;2HQ&u zo>jtvtvJpFsVR+&%71lZeks298m!eG?!V<7HFZs4S6s3YuEubsAhSHFo^s%3d-PaH zXJnq@POeMMoXpvrN{r!~njQN^gia!?@5- zJ-=o`j1Og9j%%krty@svUb5wb%go^dHJ?RE$DdwkmUPhYH^8DyNHt1|HS>#W8!oWH zu`W}ijFOC+fpv8h6Yyvz+zIXQiqmKXQ;bT&(fdeAd&OXA>nyT%;Z||c8M&9rb?Q3bHSOCD<2Ov=}fehrv8Fk_QcH$ViXk!Wq0lE;b zz4;IB1aqBKRTR~9&LlIRvwusc;AB&*bU@bqfzqgSPC%^hqs!^NTLb1ES(`S|UU6Qi zoppQ(%qpC>fFXcWv;Eiu6WfU?GKCk<7?SUr`QM68+H$e2;gIO(h7_1->t}2PIh_i( zk}&pyrfFlr*o(c-O}KClA(?VJL*8eYrqRxE>F=CK>De8+JXt7hguXx_qv!pVcpv{1{XMx+gzDJ)c+aIUWg2rFXZ6YRLI zy4^Be>Q2{KcI+b6Ayu4Xuww8!r7_q?cA9KFWsV4|_I|XE(wsTf7@*8a@{sx#G;@}G_epd#v46+M^gZi_N6}9x8pqh{0^i-F9U7Q1ecOj^>wkU z!VLTfty4=N_i%s$N-GqQ{FqiqJD4`RJhRKc%!V&u*mFT}QUEv)6`pHaQQL(CVv_{jmHjI*nChFR? zYs1`%^K!Ma_xXsnKT!eNeJ4>gi2vAKfKxn;eoCe^O5}{Zdq}SwG+kX4MPn#?jY}i) z@TZn5@}bL0!WK8v-i%#T^z$5UmnfY~m_`L?#M1Jen_F8! zjay-vlZ)R?9e{@%!8`{#jyGH7@q-(`k(yWwZv3(alu>zm9C}9YXD+>0S3bYW%RN+F zp!f0g>C+^nq@-+nuw+w1ZJ}8&o~O(8ouE;v0Pj*Vua}n=njd)CSJ&3+(`;K>URj#4 zJuP}@Cp&v#V{XQEBFl3iQI!qy3Ab`TT#`_@uqh&jt-Rs_J9$5R)vjS7y9S=}qP!RJ z%d3V}^HW0-&W&u$++H7_F|#RPNb(Qf!!6ED_Kc1uBqh}h8=mcL&~}F^pqtKjhpF!-$OR42hr9LRoeoa4}$F43LtFnW9D;r zwnmVfwLH@b{uG7T#wxq5D|lwtPBE)!NymmKNij2Bp|&C9J?j2^aU81bCB7r4vX715 zr|n_kj?2b=YGIP|U~5PfPuxny(p}sYlG4K{CicdAG@`hwG+=Ukq`0eh?D2{=0`ZJ; zWd7@?6SxRU`sOFmpQ>>~?lM2R+coM@_=ufo{@Yf+hR- zTDs~Xxp%j=Z*`3z@9DVZ{#I5`JDL*Ckft0Yd*t;^p)&T9J4GqtwKv<^+KSkeGQEHQ z-t_Q;kfldo6LfWTlWZust#bS)dc|p9(|nNk?5?03$xsU5E|b{f^Eq56k-aBYygcbW z6DbXQb%t_KQ~n{jbEG`(D=I1=!lSi|BIBS#a%4vbbe07%j+HNn?S~|*0p#Luec5t( z&O!?au(>E>JWwiF7~slg&U3dYBFO1+&kU`v?BEZNIze`gR;wSKyT34lK`Loi=9^dlNbxwZ& z_9r_4Vfs%xe&iJm2h&hmlATuvS_S165RomH5(E)U;W1}gw(IUjME9S0dR8>$RkdGo zQO~u^5L`OCTxb&U;NipiHqAy-E;g%&m>OPO_!9%JQa;Vb*c;|~`bP1#p-Zn0BjNss zF6{B4V3kEBP47|-VN+LE_aDkHelQ49uoipO$mm7DhXy*AB5A#cmGawHv%XTm5O!>n zH=KcDos0I`2D=f9U!ICfqQlF|lpkR~aaT!{&wXTN5H#LYL-&++q zQ5k)Ba%JKCOa31U8|sk7TYz3lz588y_fd1PM5joEtI^WZj^mVS^jNrwoB-E*K7BgJ zx3#{$J~}qmfQr0%Oq2H&gPxSuaYIE#MNMsO{X%kQXXg`jfs3;eD0lY{N(a_r%x|w4 zxmEw93i*VAC(T$~xO{fXFV(S|7a`BFKM8+3+^Q$!KNq>aysCf+xxlcR2LD!GQ5#)# zs8d(hIn?zm%N8cLP3%03!@i?9tFv_!RrMvB8J12%zm*!^9?O#$hu9 znV}h@f++$w~S+N})gBqfS+i57?NqUk| zf)W$FV@nn+`FZKgXlJ^I=@Wj#^M_w#D2vB8&L8CM&-qZXRIzj^G`Twj`t?_+mt3(O zUx`>=IKFUfflG1v#HhN7cJ_YRuD!Q{q@d7I#2*OvvqSH6hu;>DT`^&i^AJIozuft{ zZ97-y0Eftf&<7mYHgX#d|6rhb6iWxw2^*>{M~NAQwja zGGhj^pBA(&A`yzj4|VrwZ3c*I-Cq^hKEZt5)5lpDwUaQ;ViQ z%H+C*((!T(NM@0w)qe!pa&i%OpW8^Stm5!w&W;N|>Lg%3WV9R^fupA@jW{T*#9!_A z@hps(H~rLl8GyuKgMfYggWmF7_1~Q9;}U$$YE>9_?uAr~QgdC6=36BUnC)m|50f;K zmko?xc6>Ag)e`sh)e-=L*8UDC5M?}b{y^yxHpjrfEzAK2!9KDS>$RfFw{HDM!M$LX zS)hU9e`_ELdW-U~t!YL`+$LTAn;<_#mR8EiOq6K&L#?(#pL|@ULZ4BL-pMTO35f{( zzAG>!iKb1GB&oQ>=dIhT#JMCsvz*HI;1-$}J7v$o$=4&%8e?KCPzTT1OMI!`s_v#C zo~;%d6Q@^cu6tricDv1|&O+3x8nPDT3S3wU#tk;=~EO=1PJat;*k z0laBTgLo65-oTWheKD?`G>DcFv&oB#lx}5~VV|#uCw4bclu`t8Y?vm<*|uFFu<~^! zy>QU}T+~Hm&YjJN?W=Fx5+aaKl8CB$Mb}54tyQmCS8tmR24~M(6TvAos}gQecql6!K}EBVmhnE^C}A*uJztI?z~AwA33H@l*C1w84Hn*<&a;Vw_rjAdlGDXu_PiF<^Ja z>t^~Umrbm!`DWow9J7i6o~q+Z6+=XYQH!DDEh|;0!v&&aOT!T4=ZNyaFpRGBB75DQD-XTyXDJ&suj{-|`RutXRAZ@nBbVW@u-8+Nn zQ?{#qm9~kT-cI_WJXbiygrA9Y?=e<`1TM&=UAYXTVeFjSP6B$XDD+4J)V3QawfX=`fSd^qu{W{D4YrzXloiJPy&G2}`Ai<5U^%mp8K$UF@N2 zBBBmBd44cu=UDgk!^V|acj|^V6>cu2cKEm_iHSZsx`dU^Ylh~*j-j}tJL)Q$^G?1B zecug$k}3IMkm2ClG}+QB(~)b|k-)|y<#(I4g6E+)`S4O=b?%V=(LmwsF%Ru>yUrfV znep$Kt}tBfa`>MeN+0 zAS=7=g^8yn&_c4eEK%FfRaNcXi%Xd->M_q&E!Cfnif^c7xdu?j#|G9+-==Zv$|E^m} zLu!aYWVnqr$u;78-PWP(s9j3=y+vg4yhH~4Nfv2`nWFd#End6ltV7Ef&-B5PL*wI3 zum^MH)MFTq{_b;_BX~=h6hszov%J$t!?)^MtMEAoy z04YnzfPL@2_%eZ#N^xonx0rY&x`y0y%Hx?p#?jt-fsCDBs#EGvU(yWOi|VT~5nj8Z zsXL>RD5bhhMwR;uRqCUS)KL1wyq6}=gFzcRDIv#qh=N{wyio`ju6ugwu#wT_>PTE+ zi)OpR4%l&u@7~~m@Ui|`9e>XdVU%@gPuo{U{=4^EBeJb`8mS2&U~yHwslrdUnx;LG zd?X@s8J5h4dZVqNo~9cZ$U5U!wppN9a{M~XVl4SIb=+vOL}=S~PMZAPR5P1rHh0mK zvX2M4Ja4OtVsz$N{$xHYcZf2m*iQQ>i=El_TYHJ&2il9#9Myhw30w{R^(j&^%wFP2 z9kSrG4gW^$niUX!xR%7F|t93*``OPt$SCCTDh<@W9niDQY5 z&p!+K%hUwOCg)qGMN=t+b%(yGDtRZ^FZ!;Mi~=I-8u&V#Pr^Ost~vN2K(O78-s&i; z<&dAuBy{-V&kr7i~x1*bFi77At#XAFuGrCB%?__oC833+;9!e$3*QQ6P<8*bu` zavbRO;rzVp8-8JdBI4k(p%*UtMFi@IHAxFS|5s76VJNH2TAx_MIN(kXVo<1eJy@z#X`3QC9$-bV^u9iRn_*1;?7sa=-7u*0QVGu7$P7U~P>WYMsM=@aG03yW#a8nSLXqkks->WhcKv*0Tll9Eh;C5 zN8R0>t;Z}xB(uHQ40j~+U7lI1uC9J$PMPw)`?5QgX}AzrwsE18JB5zVrI5a~KR%`y z`@ZmN*pqYYw3gOwQK?QmS}B}~+a0-%UC{3~$AvFn@Zr`nG16g}@>E;O4v^Y5M>`TO z7qM-r-7lJp!=gL@!vA3q{&zpyjN2Q0>_NA+pp{#OW$nNv-owJgH1Mk1hhNEJ(feu6 zG%(1R7k9KIGVpH=IhjpFl%^U$rp$jQLQ)Y*Pl*xFBqSd9u5@~08*J)JRT-jJag$`* z4*nLFfG-{o7R{VARMOO5-h6uTN+l#fht9H^09&wU$b~7`j}lJ3O|v;twX(5(p@WC( z;>aVNv_)%!Fr~YRSW!P!tFi#b%>qYbWewfBb9$6T162hC@|v%Xk(?GbVVk^0hQz(j z9{I35u+Y`gwQ|>}W5^qGRFIfvIuf1Z=tXsg^%3fxSB--`4X2TkLf##(%tmV zlE<9*ch)~Mhpgr%$ZEQOs*AYF8_6@C*dTed>eaQ|bW)DMz-%LS7VpB{dU5uW*3z9c z$*YeYna&*BQC~0Q@^XwPAEus29&59k1(I-;V}nr(oVYzFeN{*gks8@?A7j%3t9imz zl5U0{jh^n6Z-Ml=U=O6vMj1*9I=An?u7~i*2MCY6ZHb5>4O*zM$T{ve*Ssy`Ova{d znBr;988gO$z7vHZ>KFAx(qz1%wZ`0fBqp2+C%!zJoHNt>VsNpJWG3t0n8uqIL#`h4 zq1yvp#Y|DH<8F5vqKy#1?3~r9XvJy1VRoubKTa+!iVh`O~^$a#Ymo% zIe0N$MRg*CE2>NUf|B2krMl-@Pup%B{#cFNS@xd0t~$Mp|B}_G?FSRd*%^;C4{3F_ zWc#Qrb4V3s1T3ie`M;WF8?7l}nz$Zgs8?}^%%K>TrTX?+G($@)G_73`^rXzIPih)L z9>0gV`1R>^x>RP?+7-j&8c^vE|vqV(?Q*v3MEo(;EJWeIolQ zyjA`8?&#*$JpE+}xim&&GcXq_rr1?S(-=ae_(D?9*zG(~ z=KBK?BqEt%55r^bI!N{zR+5}=7~O49PGf#HTr#KG9!J)ARuI9fZCy9wv%@&MV`sa< z9Fv5iEFaNR9?#J)hF@6~N$&}ttvJQZaWLap;7;- z>cPW2(UWDtbkw6)mh<-53J}E#90s0QB^S^+`y$y~Qr9^(sYBDOApER6kGuwH_QjDL z<@Pq3X<_Gnab@YZb-kN-FG(MZZS%+(OS2T*pUoL^Ue4rGkCaRXEkBFT@}_%v`>U-e z=+D{JH2{ZoR*!S|v!8BDb!Fj%{!{5Bi)1x^vIE($EOZD^X)L*Pgl-n)oWH*+SykjV zcwcRN^JTphL=)0{UDl+?=WckNv)4>vo5`2>ky|Dmsx&=Kjy^9Vu;YI2XXU;$MeaP% z9P+?-vVejA&l)3{1qaxlsovA7^rY@iRHi=-$O3vTOJekx};~&obQn8%Uj;tpLh_T6+>LU80u6i)Otk5cSJSrQ1Mu|Q@1s{ z&iR_>nn>>0?mO*qIL)1vmUcy?3-h>2S@BYRs#}_qF7)I~hTX3(E(|I<@l*7BSIv(- zmVWejcv#IJ(K;l*-H>%(-BhQKLdoN9i#c}o7|!iasEJ?m zBL=0O#OZRq`4n{&cI;|TNenK$=O)4=1uAtMRO8Syk@E@)-f=wW`RAAzB6hW{%z0(K3$-X&@n7nm zN?B3e1cEk?#h2S^_FRl83nHhSCDEkU<#Z#tX_?lP>9uBd$Cp49>uGT{7gX697(_26 z>eSV0&`*-R|Df7r#{2B(c)$%wxZ+*ErvAesQKVVOLB+tWD3o;j^h*)u;KSFgQck_f z?eZcyD4QSqLTBcwEb_DG1NGz8 zim}#@FZVOFddLy)I@nrw*+lsz&4*jCa&dR!H_o>g3<`F%MGe_sU9pX6KK8&nS5<#1 zX-}srZ<5R?8~ z`y%?$9kz%g&-+qzRbrks8*%4k+c)`rZHtbMtF8TD)-(Fi?)KykcKUm7sB{J_;$dEz za2W~COJ&;$lQ%l@?y)CwrG_iLfvyDegh5b2eTUC?FSjB6Lp`P2mlhilgmTne0 zBJ;=(74sThy46`A3i~iBQd#@)i~zFpONXb|PA*3lUcM`bKfM^b)!8{$gYfoDhEZ*FM98_*=Q7dbQ)hpoZB{HdFwEdm6a9jaK)sR6&DxR zfk#-O>ERAS-9gau&gJ1gP${WAFXNV!loYo2;+`yxC~D@9loV7{T8~4PZh3U>QP2+L z%UNbu@(=3@S)fw%9agJ~q-xI5pQM&BUgQD!*P=_r@8^_6UWfEZnBU3l`C z-Tbwj%gQqxD)35S^x>8$4dX}tbcpogZ5Q8`9~0-_mTCuoYr_L`azXDaw4zRN645SB z5S5rpNq)0?plGhTw#I(xwe^8}PEx+ZipQgeqLSJ=&C69Br&q>bz7b86^kDMX`o3zQ z=y6J6-ac8u16Ljnm%z_$Pb)vXg{3Vo23^jyuy|wfW+<}m?5>6J&P2C~w!+w^8eU7bYw|Re;73QT@4CM)eYhCVnrku(N&sBpCzlpx`o?>z zTsrRXl`l;n5=w|;S7ynx$cNV@?6MtHl$G5%)K-{UNRH&<<|Yo9RC(O<(mcdG)J`lT zBf~U_RusCk* z2DJPjzvSs=NPgNQfb5nDvji*TYXvy>J{pt?WEtHWg`CQc5$qpY5_u8+p+hVp#+Rol zKbSs_<4Zz^>R~af+bpEZ$`NHzMwdd16AmJYD~^B2n^>rImw%v_j$9e=IW*C8y2IZe zNuzCaKBBssSLFP1%u)Adn#Vn{3I_dd^B+Q<@Wf?E)AuAB-NRMO!O{D^3%7XuhGc|H|NU8-ZJ~-%yfS_z-wzE=Ow+$d+t;wrB4mpAI`GG>-+0LwFa6k z!ALk6k@<~%$7Y}LHB=nioP6rkab_u}in=<|%F4>|nVHm3dbyd&ffuP6l=F@~xCl^a z+cZ7e84K#P*C^<525^6MvKN#(Iyyqai=gH*__kPFW$CNg1qJV|Z|}QCFe0PIb7^fD z#jRFGyHc~Y{QYNlN5mwm%nNodmoI)XaGgo!(J?OeuolvVDy%bOT~V2tnax%m>a`>Y zF2rCUV{iC9G6s;X4c!m+>s&Y^bOhwRk7x6d(L?#N=|+p${ps^4{-f1ZI+y3w>lEBn zT`sAwG)sAo_`*WY&(NJDovr-1MZFR8ad&tOOMX<=*jrIp;9=)aT!$@E$pa#qE+UN1*J_-z*!4v9bdvY*yE&eRKc$8)K z+;fdQZ!Ube7Po_`sZSKaJd^R>e6D5+D{eybSp4GDJA3ZUjHd^tSd=K|ntWUp7Bt*U zJ`P)YzNgGw9E!bmLd?m(Y^)>?W??;5y;;BhLZ5za<5AIys9`LH zJy@i#e>$>o@v1BK61OR@7J9R?MrapAXG4_1?d<@{s2!Ap^(mLbSO8Q&#A za=QevJ_wSFED1GWr)lUj7M-6(nC-Gv98P&CA3U+sB1CGZ<4IDr#g|DnxYw#ed|O@} zq^e3{cZZc41?8gLMeKr2BVu0M&0^c{@lN|;?AFiU^l=;6r>djQv8Fwnq6106JzjY>n zHU0ib&4d)=#9)g}t_(}5RJR7IGhmZPLBM6>iOFo&!46AS#fe_!=YSdDgc(?82)On7^09U^1 zYwg`98jxvkyUS6bACskSxH9 zt2U_f7GUKRpC)@uz~skzD;o6UrTYww9`8%fz407qyg1lVByi-_4ZbRMNnzKBm>7Bi zyEk`TO-bmucHxS$O|R&;-$HI4?JN<{O1yN5v*TiVdO8E8C)L^97NERX9zSZwpR^e%52}P&{#SYA*n+9>6#_JDxlb0@X_{9!O9(sl9hb zOmOO>O75^0PJZY1Cvzm)MwZc4*9v+UKIIr+w~86Sg+~}#`y+Ib+0Jg;#(1`0EfWqd z$JF{UOIy6KhbxYzc8OHp)Y|>w1@1&oU6&l!he~GV5X}7Ij=RIM`vMIY@A&U&I4gWM z>o&Ji4ko1$D8nJY;Zy}-YScU()zCf-{gW&iS6I7KR}AaQx@otqxCoD4c$09vTqR9* zEXcJgC65&8EU+D2Ze=r_rrX7!F(jnZDa`}IxrwMHTDgAsqg@3LlNoXLy-)XW%?{_j zE`l>2k>;t0Dm_kjs8Zy&=s&yy7Vo5R^wnf&!%HWBh635cT%!+ zrrHoiu|GJBdmJLq{8=P)C~Y6N?mOH%6CdoV!W=J-+UeUFjSYKjAX$!P3Evr!b9*d= z9ij5^M1#%5Y|lvnB{s8LH#(H1MVU@~x<=96Xhz!cvHOIQ-~e-CzWe5$fm4h6K^9ii zr{TtkQxv;SY9VWe)N^m&=Pd|VY`7n#*j1699*aEmR*k{is9L;DsoyG-w>?|?nEXwT z5ToTK^S*Q^=d?mbA5-Z9G&-(j$qv+~q++i*{KF)zS#J1hjQ}d1-KQZ zR*RvDj=%Ti{Xhh1?XR_E(&}jDo=i(5+uczXBp03X`mEZK_lrqU3(Bt*NJM!vC z-1w5_y2$Bys}3ktDXFN?5lyA4`f=?L`t*Um-&qW|cu@({9y04+JJaqpE^-zT#PMqP z+2irL!mh^_tS>Z}@!vs zF`@Q%pJl(S7^?@8#a(BKbWBycJyO65pSQ)$q?W=Q(CX5=8RC~6GY>a-*@g?Wb6@Uq zj8pB+qx#_DN2wJm995biG<#=S14WIk`to#+c6wCHUtwux*6k2Ub_LB2V_`J$)i%n? z`Sj5PA$%O8U(1j8Wr+>W`q8yc#@B=&$zlp>=MZM4Dwuu{*|V_ZI9u~XA89JjT>hAI z>zUBw0aPcX?hg2#<~fqTJ4WapyFQWAU^#rY)PijB3vbTkeeMGtB4qBHx%m<&I}5n< z^5Ii5e9bxg!iR%~k*b>fZ+Z{D$YV;boSkIdIuN}SFf+c%|JC`EN?Y#f@y3fn(s-T= z1B+gy?&U{v9a|uP5G0Nx2jg5KZi;lU7emZ9v>WKWjItk9rrdt;=v%%z5*MgSYB5 zC2!nki_9u}b3{Wyq}AT;?Wl&!t6(O$*zhr3v3ZNfG)*J9tESg`ZX=l1!zttn&@6ElWYe$C_uxukiiPe31q~lee zshAWUsrQb~?%MJ6Om*Aj+4>aa#!<^CMfI790o#%Zo0S4diK_*dr@~=(Grp8a2WcNY zQ&-*Rf2iNqWZBXqhAAM$s$GVh^-x!GEm>j=pW*QABt{$ztp8R9d9Gsb{m8 zULu*v@Z&teGKFx`6SVx?q&DFtCs>9&K5EVEib$6JdYpmZck9CjFD>TMVonb&h0>M` z4Vo|A6`NCAWm(ZBeNLx02cAg?dqMNTK`<)SjN)B6Bd*%#nd$&v-Gf&K>GpjnVD}4z zB3P9Rd((^NUhcB>PwEf6214{gXkp*qL(Pq8I0bU zL~lWePDHOkbRlZ=9->8W-*(P<&+mQz`Bqj~$zsp5_r9OIT+el1_c!V3wL>Z3z!UjG z_}(iXGfO{>r4fsSFsUm#p(Xs10)bW()e_38r7>LKmGxdeJ_GR}sBo>*qG_1lma?IR zbXuCUmlenf1L}eJE)q*E5(cojzCpy{ThL1g(<=nkLuo}KQwVJNL!VSG+qSpr*3>|; z#B#)6T*-qjLT#IwI=eJH4)6k{ug8D50B8s#uF5I64~WbLjuBZ9AX+c#{2Q`WrN&hK z=C4XAL~-AQmF^!0M86v>Or`!(iS*&!+{mg$-0&U;v@M-+gjag)fF{bd3HUDsuHOwX zAU_>@6CaW|o!;WL2)D#0_{{;gj9XdpiwNk|n1a*^F(&G0ADjmAO#2-m2aiW{U+R<@ z-NxV*G3&HZm;antnBIx(!veoK20g0(6%|%jYH?`|i}+A)+~E5l<-NP~T1=O-=XV;i z#?1pB_booN5s^!=~rACR7TSCrtUHdA5GL!p7BIAwm7VynFm+I}6?eCdu-e|gtkkc>|(NAO+RNx1k z(6|;uHq|Et^4ZnPNUsU3#SE4}2M4G8{;w+|GD2A=Owxp}vRMKvZ_`X0voyrkV=C0W z27E~^*?D5skwkm$0vr9WDOn!v?l>ET#eppHeELCn^F~{RcgXKMVN0t!aoUTtKoGy> z+_)_n{p&iofQtlZpOr0|=MqNh3_ zV%VbWY_-i8>|OhKPtSVjcQIKpC>khN8bs6xizT1*mII+mQ{Au-8=JPgCEag1%fkCa zR0zzmZ^dvQfSIBYLWn%G{bx53+$0GyGJ_fjFsxhFOTY33 z7b*iBnA&2@O7mJ z*+c&enw`mFn<^Se?}%wn!#3MknZ+|zsvkX;qKv$TRlUpLBO6VLY&1qQ-DM#cHg3>u zD@JW_s3}+>5>vv9xrN)nRBh=Q4dkUiN6a`)#E5znO5#L36ib31S2~+_8OSJCHsK_c zB-d3`IA0k1nXX1O)<G=jqhd5eJA7zb*qf!+s|NJX*O-?GZEJ39T zP$oCeZ6y~B(=^e~7{^mKbh5B;s;9sT;JtcPtXSFVXfCpqpncoswoV>QrxT-bXUIRa zyXwxpF_R;bScBO+bW?~0c6pM%jKupz8^FWT(8cH7B4ocjXQ1ZwyEd3{j@<5^>L^0%EhA=P{SRI$+Ps z(xQ8J&3eoW6;xs3O*r(NGnll`0^p34k*n(2YzH3d@>6@L(aVnhH!#+8nY4xztJe^AE4u94; z+N9cm_YTY-5ao8Q?DIrMf2rEqPsM6u_6~@A4P{Cc5Sm8QL*Ve(1`zG0Df4rHd+;w?bSx zCSTu_w_dBO3%v-quD4}+#cmpPVTLEuW%vvzrXM!6ZQfQ=h!A82wS5*zRj0;I`ScC8 zrz-Y=JA5}TLlo%tJG>1_%WlNhz+8p`+1xr=xm)9<2BvY?-M4DqUfJwwaLLs{OpM%1 zk;At;F1aJ89fRL5c$N{T*e-!~#Qe3b^bmy~hDK;iv_b=IQL=HroYv(Yw2`~BP=p?a z`^CrSC0fu(v(L*f2VI#BdR<_}k=+{P172a?rdntUtPR0L;vdr8IBzbV)Rx=}>okJ@#HZP8AXF4u|= z{^l}G7A^z#?D~Yar*+phB{Rn%cW`DRU~A2>FSxtsMag;kI{ETTt?2Tq<=L;|%0?1S z_omn*Q*4|1T=G-&&4l`y8I-wMj69bPq<(C+&Z*sKRl-5>lSk!pv+2taaQNe(GO#AV zVt;6;-1-;#LH1wh$CFK$T#exodDm$SFa7gT1O>ofF`y0N5FxZ$DWm0a`lk7$+-MRe z#z>r$SQw))vJhy7N_Z_CKxMzpW8s(1k!Hl+Nq1UDeXnWOer|MEOCJZ z1}Et>h)JGvydM@FVE zN4g9|Se|Tc6j8FVFA!X0n%0|u=)lf7JBu-fl!@mNG;aR{wPJl#CJo-qH-w`W_e>85|};L$742uIaqPr?km3Np`u~mamW(uv;V}dF`vXCJ>Aepr+wR6!)SE_ao-}yv5iC%gG9)JI6!dn7y-d<9e*umf z47VV~)u0FXdF<~cwe7io--?hkH2$oz5wWGh-hyxgad$YL05IP+Lg23d>xR2eo@FuL ze$|_vZDONU{pfzc+N;BFFdgh2t{~o{z^AwJZO^>BN4%%p>{aK`vkY6O1uLLbP6*VX zocI)kADh)0eM>tWmYGSNk&(fDlkYiJ=1*#quTDa6`-5_Stt?Ye$Sw`6FUDWzfp&`@ zX>>(m(}qDjTATzX^QYl##pf6meqTTm^eCyRt0LmW>*&1>lE}`o{O_gG|GQLVa2~~F zLt`hnaE>Y{CMHB^-)+!OqVI6XN1|Ntj%itg$77b)7`HjDVcJWTatfE@(NyX(@r+9w zS0}IOmi`XmqpjO=^)b3XN+iF-<(F)IiF2w$GD9GitHjPH8)DOQb6sO&sB*Yhxdm~! zI6h4>^y&hn3S^2&4z;<=IG^%~7=X^s<=`RcJpq!AjHsBWPy{Y$!O=6{314~<``2>! zHUISvA98HM#LL-ra_z(2Mt;8^G)D=4jLJvkMMV<|PI|a9yLS~hi%FfX-_@;kqxx_- zS7e@>K`sW_fd079Mh--oqUBR;O-Lwub$WY9*XL><&}p^` z_Pp3RC)(_8e__pL?Hlwho`f$g=6|og0{p)rM?ZBY$37f)bm8f?=uA(N{;fKVkf#J( zEVkVTu>Ln@3tRded*OvOjO}`bEP2Xw5z4Rm)`BA6##iU=T!ZM7F3zvw}Q}?ew zXstVkhxtvCYF9!|3)hlKWP2It+>=%PaT{KPS$E=jU5}EY8)ls|>gUX9)XYM=13>J6HCOI;v@ws9Fe4&%MLt z>IL{&bV2L@kvHL`yS)t~S}IJHnL{1$yuMvp|DL>H$npIF?g4L9s9**g9wukr*Lz%h zK}ofn&?^-(BrzPAW^HO~^pOmmPKM!ks61fTPj;y?m$tT|`;dZgx66%XVL`<^6xCgw|-WM zAFU51aWHw=xT)?wxe^{nIR={_0a`;N+w{F*)ZtNPNg3j5!~3M@$m{Wjz1-wYpoz0< z>c3eP?{f)1al4G|7J->l>oiJs1F3q;isY}S{NDm`_d%~;h~4L4i~S`Og*lSzW^-61 zCJ6vpMAqJP4qbU22x5AR9e4E4C~5e5jg?B7+4MzknJY4flRx3%(TcwZiJNakF&Ji~e!b=5H@v$VJ(?rx{93&^l!Vy zh9JMQOe^a=14BYWq`c_>tcS=CHx5YCbN5*iS}QF=uFhmCJ@0JcqP}=WMx-B;4;8|v z*xKg?#EhDm$~+*W&iNqV^R>>W&q>jL)9l6t^855Nr$K;6yDA{*5p^Gd&FKGiA@Z6} z+5kFR#NFG@;VDw#aBZkYQcgTK9)$#D(TEwGkpY_^Hg;<&pKo3iH^)3T_~7Iufd(hc z>nXtWvOti9HC%7W;(~9XiS{(NXC&&GUr-am0nA={gntrHPeP%hhEIjsOKGr#o>ErO z3jMn5I2l|xX|Aq9OEPH_01rnN$3;_7^FW45!W(=R z+?i87mZO^B3kao9kZ|p)?PLF%tFJ|(yJDa+whfXFWaKm2_IJWjGEG+QE$lPTzaEO7 z`Mn8p%PWB}u=)&@=)#bEQ7l~DYOQDyCdy0P*(J%Y>0c4tx4#$hwvLtFOq}ri;zG#< zmVbaP(}R<#nX^9`f9h26G3j|+M6F-M#oml3F&WpQys~m63G;%ZDfmt4!|;|&YHFq} z!OmYvp(fd`P4puv_Gtj^44SZa?K7gCsePu4+Hc4ct7f~JlIDwJvikI3=Hht4s$n%;?9Mz z2JeTjwCC1gfU)5dgs0jsb+rO9iB`5#r{qwB8S+bKk~7RQ1rQE|A$D(bdx97 z?ZqZ-G?ma%Xw{n)I70-TWNzyhB#G6t%9?^yUlF=>0+v|>S?^0 zt~z$|PWrv`8$;l;uk)MZKw$=q_sK;z(>aX3%`HpI%Mp2U4@{3TD)}v>*))rt&-+}c z#9SVX+T@HCkJai~)H>-ssITW=snk(vHCw)VlGdV8Lbg7v%YFZ>9x$Z85*&}G>K;^8RSA07)2=|Ym-dYCetWm%XqD!wD}^N`VNRCn!7D15nwy(7 zAIEIM-{3&_waveHi-3CLvK0$S1^USBV7>_ieX zL>9hPH>lyxZJO9!@WCq@S%~-M-?e{MY&1i=UkfznGHnTWtU=tha-$-J${*{;7S;GJI_F|@oRgk?n!wtM;L!ARk)Xf5g!w88?Omd?voqZA6R`dR=f-W)Kwgn&0Fc8wkZ~(G+9}mZ zCekq7TFSSlx7XtAH%H&b+`0IBimIw#bGv$-j|Mps-lCm)@H1$D%gen()>iR3aS0>8og%c;c z?UPp!!^XA20Gl_F6uQ!8V+7a;C(El>iB{Uk^NJLp15FV6{RhyhW0)0rk_w1wHGy4@ zJNDP&aZfu6f1Ppr%?W_T_h@iEc}PGl9vU8(x3=ESl+9=Olr{YI zI$93#0;E~|;4&V!oN#_~<3BH6Dm8gh8rP3F~7i0M*4uT@W zq9TS9yDEwgfF3NMl*54txm%FFPbGr6Grih!mEFPxU*<{88iR!)-`^@1FmV=q%7-xg zDPq~#a@F3#CHp~qx|}^l;qRTfmi#B+$4~-bPwDUfH7dYK1{iNKv@qp1W_UI-F2IndNZn*4G=3 z;Jm@v-J7&AXk&~dBaFx9>A}Ji5i#n4V_SrWggnsJ*2WX=)Ma{KK&s)MR@U7u%Od}n zsfdo1l^7tROS!wVt7l-#x>jGl+d>nZWz4mzi7eJCDIj64rP1@1Sc9KEsBpRtuvXf) z23Q!rIfF0N_=FpEm}Fn9eKAL%>tmY+ds^Jx7D@l4vbyT)=XyZ)V>x(W@0ovt00SXhKg@;g8atn#{#K5P- zL`qy03pkzg>qcP8?BqwoQ1uXKiR?Qi7Ix{u!gU{W zwR?DhvA)?|GET!{Q&ri+|AygtBR0591a;W<#UStQ7(vg%Xq$`#%fc>C0 zU2MMuP=;_AaFzxRAAEA@w*|y714#j87YmH27mScQ6+~YjyI+v>#2CY;32YqUIFLzk z=zo z+8I#3R3;0Lio!)h!%@))i|!8lBO5*lg5;GSq)xZk38-fYhl+A?Ze5>>Fzfc+71FE9 znLsVKj;s+iQ&v`1h1T8ql?ouga}ZBeRfE?u8mC$7<4_zP+mvq)V`F2115Fv!Y)h|m zZgdwHp32XkyY8wyX%4h>9mpg~l2K5%6vAjK3`RFNEJIZbrR(*>fnp1@$7VqG~5 zT)Az2qAI!^I%*6l8PWnzG<4~mGcixT0mhjjN8XwmzNXDqt~TWEJn!bh7m?#^w``x? zEoj|fq47JF%60u#j4_^FWD1UEkSGZqa_L}{gqay}@WFi8i}*Lq?N91_2izU(ha~R( z;dWmh#rN6$((>FSV-~>ZfPWs_IL|Qe6v&Jgjx?7JPejFncwVnozOYl`Fj?B4pjSbq zj14awm@=Q)w;L;e#@AhEo3-inki6-hb-PTs_-~2=6GSTt7~3X*Z=ccL7Bs-w39J8cvO2JkKCO6Kax$R9{7( zL026j)pLGgY)0Sj{l)npMt5ckXKt6PMPb8{GTnABjMQ?2sF!UOQcZe8;Hk#v|0E05oCp0d)}qpdVvo z@mmAu#psH1gOOz}brC9>1Fn{Bc9R$J?4ldzNS|FA;U|Jm{$}QICco?L4|K=_2VG*- z^AAZ{3SiYOP2MH*;8<*7SyhidFSjRn)E6{i(HVizn`~L%J0{l?jVsPGQ*?+U6*$pM z`&vbV8L>1#IW$r0?%Vc)T0Em}rIXGHd3<4V>oc_Tbh^q) zWH>`8ie4dhWvSzVqHr4gk2_X3h>%d`g>3R=$%|6VKDW@Enkv*|NPNywDH7sDY1GgZv7NtFT^J?i(JVs$Br4Xf8r7wm|n9+S+ z6H`eKUv*71)3PVBM8a0$#;@^ru%UA1BLtDbl5Kx@lNYI>&k6g5b0}?jEUrF>=#7cU zSH=6?>69P;pS{`1%%H~ETV=8(@tlxmmYOc0(Ow|OL8Lu$A2&M&U>U7N@I$B04gi;$1st72?E%*M#v`dpo&KW3zn zIh;O1L`29L7zmD!>yR`cVh3f@e@x{lC6!Kg-M*YGWfg?7RP0F<8Y`iJ3#gt)0uR!W zN?TjUWp_*Kah9^~sAL8;AoGK5bUTZHFlo>;oCFJt3tcpKoy5Oec9sUk#|Ky}e~hXA zS+bV07)LEp!YyMTLCj3!gAIe_IUjXvQHi+{_4jY;8rAZzXT+l0iykhCk@K9}ni5_# z)6AP-Wmsp-H9CvBhzf09z$?BacdZ#o4LsY#Rz)Y)U8`G@u}kxa{>(sI-sEdj_1G12 zdeFQ4w=qTeF#gotk8ejkFLS5Vq_~&o)@8Vt)79mv<+v@96B*O;+u<9?_)P^4+q06 z%L<b>mEg65 z4k#~G%qD$6b5^cY#`+Uq-><>K#m+A6#~8%=k}RQ9PK8+$ipql{M<)GB{yiFn^>D`5 z(6!^8Hd43?QG}><4&uNWkMa*ymiN|g-y+rIjKTH z;SUEoNoBnZj}qJzh^AI+GZhLh)@4SnmvCRZ5(UIX6{jnz=v!A{4iTT-<_@|GKX0FccQVh)N~iOiRk9*OM#bQ{}d) z*PZ$i0r+uxF?xIoTicyOaaI^)>WNdd-X}vCA0PGDSg7;qt}O;(BneBTGb#uSo<3eQ z-M#fBBi6{&u7tAkY73DLXNbon5!>+cfXO&PwWHbwdcN307|`F5wd@MAg2PPNa^o|P zF=TN_S;AI$dWa~fW1>~*PNaE(-QQ8t4N+84bCC>XrsHGaYf_t6k%%a@`UV#mtNZ?j ze@BZS2*#))ERwzO%(nw=4y2M$CA!c8ELz{uO`I5m)7&6L2o|Bt)jkIqRg=>s+nRyi z^AbyplO?k%X>aQ}QHFsZHUsC+*PU~Tge<)#c+nZCBF9Z#;Xj6(=SkSk95rM|i|FxHns{l)u~IH69BI|;N?v`|gUYq^5-9XYL9Id_P{gWwy^fP1>VjrH%m}^k zCDtAvPhh;$)`|CpQuOze>55`0&2m!4W)q}GkW-A0^Txk_i&{M|YYdL%Q2RcS7`Ig{ zjYtki&{9-UkurSE%31K3{;8a$cAq*mnwqXs?41DG>qUKBk=xG?1Xr&z9>4Ju@so}X z%*R7(zZhMkdzukv!a2LtbW7a&vCBlrH#=2kLvcpfeWv;)&g{Uj_N}`Pm8d&876Fa+ zEDi#hM80~yzgBGjc8V?IBZ}P5vTQUKbnb#ze%S*Z-cmUDsts)D5RW8>y@JO_u|L#e zgj97|y1X5=T|$q4&IoyD5{MY-OnA59XC&^T+)cs}tV}wvT65Snw)Ab5Y%^!chjYbO zEAXQ8^%U1!Qehx|g$Cz3_wGZkV%(#mbm@7p^$4TTG8~ifl{G4kM&|-WdV%;3I34}@ zhE}r|&ouyx73+U4cPrI$QW1YL8qcQ=Z<5R?mlAa2q;~n#ODfvHdDe&f%8ODoYn}uh zf(}{u8cUH4QAOrf)9y5EArEAh*~jZ~K*=_Xg%z&@Hh5en;I9%h0X<%!z##e$A5A!i z88hV~h#6`ug#>@#0d#%--I*3#24%g#Zu5A$r0s2D1TO@p3(0*+yoG{>sbOD&{DmVTZjFQMtDcyu6%c6|ej$M5N^Pi#ju zYclO{JNBrI!^Z{Ydrm@Wu7Go0e#EVF)MOV|VWr@vuzH(_KrOkgi4~)`i^+qDSo}`?$5hpuce-H}Cagq8vIFm@sjnN{WJg$vA=o99671)5u4qD6)#j|1NO@ zg@TxbkKyTq&BT%A-I*Few^PyKY>BAaTHRi}{DzQ_$8b^{nT=3(A}w)<94%|)asKcF zvcQ8a=Ylg;ndy0FNlPPT9bXi1LPG2(CCbS*oRBOZ&`^1+c1I#eDBIb^6C|~K^1A2O zE%x>WD|xxbUuhI?sdhU^AoQW?_h;Jp+I^?r}?h3DRS(Q(D zb_>X#{k-qxSy@>Tgw+5g6t^cck?Pi{$bmV`eG&0%i+|4g87ixSx+IXSQj1t|d+SQp zy^VOc~fe6{2lJH~W%Glepm)p*xOg$-y1KQ|e<1luwGuzJf@QH!|YYhkX_l9%@Fo}w3##l)mf2wF+`?* z5WjBIm;99K$U-TnF9#-g_Cp9xP52-ZMc?0@q29NSV%hAa(9=kHx>e)Lo=^72&ayV& zlj>z<>bV^zn<+3w{b(QkXfn=Jk%e0gXst({-;u*CEHTE2H?d49lxuBVNpZ+nlK}zw zKsdcACgk1(=tgmfRM8u;q>KCm8d;*X$4EKX>U6v6#67EEk1N;?`fz0tY%8O=GOwS9 zRVWz~C#JGL&r5aoz1%KpeT5&f3Su1Gd-cz&Uh}1Yf9!kieJb#Qe@wxsJYfKAk#yQ5 zI$$InQ0HL%_K|qz4d26x=`xRRM4#c^(L}x7i42R-?K0W4K?P!FO~qh6ly{poRFI?3 z2i$_xB&Lzyb2{b7wea=~%|eQ< zuZZ>7o8>8ohYvF%xsO;6Odoc@J!3>^z+T){lk5GmOHY@sSp*uPpYLzayd%+Cf|a7d>9wxfmtMTy-$Hs63CDorYW!HuuI{{BLO- zG16mW2o^(hIUF)q&VJ`Nn&h58*du^=#JUuK0mRw1uVv7?d&5_B@WvP$46vKubbh1M z2X00G_!z;heA7GtMRF@xe|iY)`xE{$ehkJ&$8}t(R-!fB4&PRyWCxM&+& z$YLr81}cOM8f=BDjjj6pGBL5(pd9a`UI~J?P-QjJFfI3G4Q8=cU8LKbx{EBc4YVA@ zVZhMK)9WJMTjl1Xw6S`YBexL;=h{Yc?=r?=T*#r~Yx`d9eFktOFrZ&p=70JA2q$mb zj^cMLAF(V#1ST$?rNZ~e9id_xj2#01Q$-$(O&eN0YeCQpuTSpkf5++gwD@+d`h+gv za|Vryepyd7X{m`Zc()=747(BW?-6p@`6Gl!DS_ofNHtKG++`xEq!8WD4G#^^cQ4T{ zc6t8P*km7Po_q?8bRbR2UH1u4Tfi-OR!JJ>4AE7WsV5 zOPJ9(OT_;2>nMf7%A762ZZg9uTJ5)j_Y0x7qTmM#zQOyg>2b9axCkvxDCSE}mI!SI zl^n%o7&D+5%bLs;uELh0Z{%+JtcVfTNv}Jqawx7?sd8afFED*XmNXLXG)j>e0#(|* zYcb#ag^b0Hny0I#z|d~bcEkxrpuLG;-~|I|1pYr+Eg3Z=jI=*kRWH!xvFgKlwKppn z(*axLw=?w+FnF1DL*@`kp4|HQA%m3)^Hj)Js$?T+3R;q|KIP{DxYs3>828yuP#~*h zudL*{^*Sb7&Xih0axxr{UEZ+!rM^efjRCy_gj+xOyV{0zWTwZhfEbUUsi@(^s^oN* zbdk=2jP-}4P&4omX>O(&kL&gQpCcc3#f>017uRMvRZs);MW(-g4xM8pP%2vjGQ;9^ zF?5|w@6cR{I^bWb0dGD!_h>G3M-cVZQ#n)@`R+PLM`e>T_`T6fViZf#k>psxh(6W~ zOEND-rNg+mrHH@?Q#ON4bO^@xPdQ&ej5r_X@7gwT1(AIl$We7!+>xP0Y8-UExLo>P zt3Jdb5WMhHeMLBy_ONSd$|NdR6E1ZE6u3$JB@C9Ypws0F|D-Msqz7vsoG~E3CE*#) z#>N>ABOHHV|2L*$G5c+1M#6)ZlNY=~uC zd`e00ucs(R>3|1WUTTtbzzJdA!rjE?(k($h7TgbtR`I#tQ=K5jX63aD6qP`1>OE_{`^WyzN0ZaruI5}52%jrn=+8}{lu?TI?=~qYt{}6cbjwO?UN8~?C_hA8k zvEtU!?zjS_L-zJ*jSm6fn|uJ&%(w-=bO@EP-tEpaYWJ?yz2|jp+g?`LPk|3LX6)l! zWcdqrO*{uhDu2{sbz*fQ-uAh)yO{S0DxO#K@BB#;N{zq)Wa`i%9Wxc)nWTUz`2p{$ zd?9R7z87wx{YWp~9$)!0+`_e*?(h4lOh9v2oi47KoqyR}svUNSROJ77`An<^wUj25 z?SAfa%0#>Rhg{edEi4*P3tUuJF#fgi+^Ic=ZSf|FZQx8lpz*s1A0K2u|5I<`I-6Fm z@$={#XPo-$+m@skVtfa0%4RCD*#eL;U@Io6rJmuFHaame{KD5ydRkfS2V0$8{JTa!CdDWcghk&h}v=Zh}^(K6@!H?|v^R~XOgEL30gIUy1pR-)saFI%<0arYqD>2`LZM-LrnuH_b z9<+@=-$DR^@lF?uLzfOU$_BKE2R)_tZ83AiPSMS|8|u>dikC)o(sl-jU>P7 zu%51VO*nR9)2mQOH+s7=`r{e1Sv{Wc!Uf&?r;dRscDL=+nNICignzyU=H|zHUE--{ z3q`3Y_gG#d&h3M(U%XgKThz-t>l#_@8(S5uvTH$u{$10Hu*P#&Jly#Mxq?7QLFyPF z#^4&WV_~-Yos|I`tt|jYYwoIBTVk&Y(FibxGbQ4d_f@;km2|YKe1$|WM#Z*%wg94F zi6ltpuSn-LA#YZ2+Jt?i8QEaq?&#sL5AABym*bSAmF#B{IqG|l&RzOlMbH08t`~dV z?d86n2}>oQ7K*g3Y3*o;`%pYW8&D}=>iwGsXfdfa`pe(e>juVR8+lMtW)cExJA&%P zQz--CM}hdh&RsIkqojriH^x0Lk>tlnQ6}T=PV(cn3VW#HS0s=NuO9rE+-ay$+SI((R)|*_ zdVct8-;U=nX@uu^00Uv?hM(nIOz7CME&S~7;-q~T2R+?N+7d_X&!~*o`EvMJ^B45S zut>fqfMo7qwgfGp#V-r!UyqgOFrCZ*nm30V=}wk_uvWwAtle0tK9{je4=GKP`}O%D zvtcbWjqd?4Pb-{&x>JGH4}P!XKdu7wm{zn#8rHoo8QC0s7Xm0Zz{JF;J%7F-6ZY6e zz~my=SnmM6?ytb#*yLmq_x%NG&v}>dUjF+r3THn(vsv|L^9lhqnB@qjtaf0~Ldy@I z+iUMXTVoGKB<@6o-M7p)p}Tc^_ZtVN@xgt$r2S8t-0P7mvSvg~H1~ziiz-0CFs=|d zDKsv%s}45SHp@S$v-D2qXIkoF;j46UL;KxQ%0}bwp;>RIpXw9sZ$gbX+&2<2$w(q7$+d?k?cJ;ueW*on*7TTaciEu&2^;P{Ho zrnM~uTh$j>zX2dYB!0g1fZe!(=<~d5)FnYYmY26VE$<7^3!w!-3uSWAvH4K`iS0PL zt*x!sc41njMHlA1Bu#G|Z7)NbapK;UjQG`ZIPJkVwu+_oG_$WpPA!GvY0U!j&LNlk z)>+<|X1<3Q=(^XJzbfKS-G9$N7rO=;cnwf-QE7pL#u2?!V7LaUtoKnr(^#GyuITBs z)%l`?J0xz_x!pZi|2O% ziM$%4xx{#W@3Y+$)ztXhy+g;=*Efy5*#AODvT@KMNTM`ZOG_BgM4XAQI`4nAXER+1 z?dD-CF>CYx*1>Jr4NB%RqXE?P6#%GvVo^DTHPmJGD~m#~-Ft2eG~nk2*i9NqfUy*9 z5LJXqo=O_$H*ct>qGbX3L4Ff++AhA{?(TNIO=Qf zpsL+K=JriZx0g)+<{3-CK3(|gu%(EF1ae1P$6tL8)L+EdKliSSwtEL22c~<|A=}{| zHF|ln*n{t%4s0VEemDMdJ{}Ta)1*_%=>jGwguWa|wE*Uc*i3#*x%2@j;^oap%5`P= zQV)6)TQjzYMfPQ59zD%4Us;Wl&>LVZZ@qjC2%Q*nOcFV3Rawei1M7^h*DcYOBmG{a zL3^(}5CoZ;_@G8P$%x9B*nJ45rOn1QxA8968yDB_?FJ6fpz8>udjYINg9`Qsz#|ub zv5jD-@Lr7(05Re<4OmO*X#oLhJ_~ry_vw^dU_|C~$|$>@*Pb|1mp&!$!?vxrgVmMW zlyQ!3*DgYToDAH)3MhRVE_Hd+eHa7xej4Ja9}9Tl6%|FQh$^dIR&F}NH8e7h-xIB$ zb7>~-Mzh%oj7w1$iGku7i3%OxcgPn=JC+w@{es@h78@;NK&>8 zI$04(W6DGgOL4{V)Icv@g{B9PYW7uNWJ(us?DeZ^0gwk{^$fpGUT0sa1Tup^nGBTr zl7QdEVKzps0jrW|Hb`3I_7_q?u^7?Bz8OgTC!t*=0b%rZzvHt$*vgOlcuu%tN_0+F z#fVO$7!8WRKLoJt(r|Z|XR`8d7i?LWkmTIvfriAcr@PMq9LOACPT;8axyHDze_IAr zsx%$(OZ0<{egIBWzjp$V>*Z=a&x_=MDp8RWcS#2uG^+e=hok>aCVyl|r{Z~{e4`!S zoq~vrlwNH0dq$*z$_r?nojSBnA25GKR$3Ho+w*q7)lrY%WtzjXgP*TE1Lgm|yFp|f z$u8Hl$|Q5;_0dbyTxks7(;4fJc-~FWgz|8FN=$DRsM3OKpHU>R&si_IJmfhZ)$3Ks zW_!dK@6FOxi78Y6K3XqbX7UswAUyrQmlr;M_6!tz2LIBrkBl#*AQqAK7>vhCEy{X} z1I%I3;l%M~CPUH*%*4dz8H`>?(hKiS za87$sq6FCVGoeKE_&%`+^!7g(s(nXzU-pGOcF6&ejH;Id4?mwM8zV;9EdO+Lf(|YnB z!26X3YWbY*Y6T>5on;V7!=4YM<9#`dA2HDZWPnoY#!Xs%Gt1pr6k1&m&Hqykq3Y0) zP(iAb!kW7cTHZbdCV60?qE?rNqQC*3ZmD?+z-Vwg4H7LQ<1#hosA$-$pPQ&AVXl5hTp?8t#0-c+XB&<~ zc^KFHdrt&E#b?Au0An(iduapU*U8EHE#(i?(1O3IL+4ZI&C_VvPLqHV$e;L!Ox69d z0)ZfMlnRnd9IYO1wE}oLeIn^7B!>Vx;4Pk|szfMrTqQ)6u2c_j>dcu&xJlQ%ZX^KX ztAZNhkBpPb1Wo||*|j^ti8*EEEQUFSo8ld_*?+;QxY4BPtcvhi1_amixVXDb=;q$w zlo8QE4;ftOEo6f4Bff-x4ZR zMUnr39hOKyUzgIdCgxjwKEM3}UA&NI3c|0>ENW&>aFD@GTw{oC2f4U%Qxu`3xsn$Z znkd7N+@Fg8-q9AdGxwN@B^W-M_cIYAjtBaa-N>oG-rzo0aplhtbdmlPnk;~4=|<8( zXST7DHHs2~UY}&JNu) zNYhmn-PEC;j_4knmOg3!p#&7!xBu80QLpSPMxxYS*t+?pagmiYnxcu@&{LcFhN{^O zWn<#%a_tO44#Qf_Ie$QKoRbn6zfQ4I9RC>nQAb<*nvhZbCjI0U4}0z9)P?-aOHr)v z=j#_HR8u=cJiVTZLyJ^*QWCe@|G(;I19hJB$=wYsP--do@f3#`16}g&2WUrWqsQKR zd{wVV9*an;U^XG?*M-EHx9*o%U%qEgxy4sB;{k8>qV2nRthrvGISlDDb@SyOQrr9o zQX}Bb?SXNZ8Q78O9`XL%OWJFEK@nc>P)u?@YgbXSSNmebIf6Ququ)7{%&=#3BwK&1 z?ida7myi6$)A1h!p-hW+ic`g8zV0YSXEK5&!MK7wZ#|9z9_kT50NmS7NL z*%XsK`0w{kr0R?ZuLT@R?$pgcw)EvKrC$02)rQ@L9Jw!q8`+rM08H}W`uS+d&oB9( zvE14kqkfDWw=~E`T^_t$I%)safq5+1IX|FTlx+vs2=Ldcwr4eO1unT^N3-<^Sn(dP zCg3#6s%fgk?nZ9Jso+@~)PJ8dbgV?LW#-rGNxh^ND=r8+>U)!Q$8;$)~0FmvX2 zlMew4oX$(fb9meV&vkvv5pCXCDw{K$alXCtTa+P*NIk?y+9_zU}I1(B2_SIHSi4PhBva=HUsr^%cF^t(pGf#-yGl8UX}dfF|=0 zgVH3TNv727>1}8B?wRKM5y1tag%JB@ra_D7h+w~MzBH5jtE*^GOsNNBuh#x4d>o8z zrhDY93S1q8*_I*V$qCF-gXiAX3YUDBOWDyRrZHwc2Hg4BIpb?!%Yy)+7A|V| zVI;oUb=Ct~lGxPLg3X^RLz+94)y!r-8&~k?9BaQ~ke(x3HA%t9=u8+feHhrNJqPDa zk8h=&{ZPr6_#f^JSJ=_k-dhR7!oi<+F(W zEcL^0vMOndVT>>^} z2}bs(KGg!zM*tG?D+VIi`qm0{VNr7j+=MV#EI0*@ zuff~;06}lGQ)=e;V>8~kal;wb;#xviiY$4PJleHHi~}PhBXhJevD3VkIibrmZHa~= zc^0fj^#i7}lgwHlp1v4=@wsNYE^hplm$w4z54D=*%)@|{ zx%5UJiq?c#S@X!O?#CS5N^I6%c}*Ijtw%A@*1u(_fL*LV1#ER!-H67X9P%{JM{>;N zVDnb_Qg%_9n>Sx(3q4y1aF$}BN?u~E6AF1>gfGFo77ZmZXLzt(96KXi!&TJ_=*SgB z<9@Bm@tM&KYrym;O)35KM|1+%`3A*rw!eO&rWYgbK_)W-s-Bz22$3 zG7=IJY}78>^kphYoOx%0im(6}EEU-G-A%R3>v49og#a-`7K=xJ;b z5?$$Rx0`)=1AKjVp^QxEN0v`E`tA?tz?M!5f7!SbA#ezDs>vxo7^|n6hJK~?UoPOCRd{qJ6lsPN&N>pi7=w^SvxcdtcA3k5v{L=hdn%A%Kmc2? zd=;_6eE@G21MG~{YZ1n?NA^dON*$Ekg578W7JH5sIRDTX@Oeps{&OAQ4 z+kK+_oC^VmkQPOy6YvXtyh0wm9I~~>eaD@3zB&ggP95B`a@iTNY8=X$a>S>{n7;%x zB6y-`^Xy7N`NU`-(*oHPqZnGwSB*VSrPoOk=0N+k2jUPQ2t_=Pp^nTcVl`OzsU#Bx zMm@QgiIx!L1$xGX8b24c5NZFgp6Yqeur~+oemAAUf7Pq=TMVCPA}Y&)XhgG0Cv_Pb zjp&(L&Xhl?_dFFNWkli2Z85(CVKz24DqLrEYyxzIHMo(IpFW*yyaMWM*)d9rVA)Fa zJ@v8>`G6~T@0M@%l_lh~SCN@dr&#rBeJRq5YS{j$s?YO4Tz7_P+~F41KhOEC9z0&P z3PS@H2>&NTmIDhP!|y#rA%*7ds;qnX;ALBOMsv2M#{sCP_N1L|Dg%0sE8W1AG_M3~ zLE+Iq`7GoBMWGflK?W~zRUh(`4k-T27l)O-Df7uCrgdAR=AxL*e7fjYzuBh16TtP5 zPm!4K_(A2+`klhK2pbBQx)1~+h03p;$ayfk*TCY-rhXpv22L8Wv)wg`f4XCDgeUrb zWVzA+|1)j+!dxr}+A=0~Xv^HET5v7NmzE>}Uj66lPU)~%Xj~fj%CSQBBuCnr3x09x zVakx<-%15K8u8@e!WTPlRsM^Y!LkHKu$7L{@cuohd`lcBck``rDUWmpeQSQ#rQ*pM zma>XJ1-SqDOkCzM5T5AJ=m(_*@C*}I&oo_v>cQz_?fK-t#aO9nP5{bbAHUG%Xl)o1 z=p{@w>SQq7v{h7(s=-eK32Jz$pA9F?QP4qjqsRRh?cJe?xhX1JmASB(EGKt8ej2oXBQh<}HKVcFI0=j=ss+AJ8 z;C7+FvQN!fMWuUUnu&iJk%KJ2)BPwCJB$>daO%AqdYc#+esx=Ya$vlW+N@1rgE{62 zDkM^0thcOhvSGOtA=19z<(L^MZ;!*f*ubReE7IuU>*A-a8YJB0+Bo;Kuyg-W$QS(@ z?r;ltpmgpdluoI^!6+sOb-eua_1(Xqs3?YzcmCsieu@1aSGnCMY!?S3s(O}%-!Q)x z!p+9RU3F%`t%G~oGSODk2bC?-fd9dNL@}qhWAU_+@B2e0W|%`gtj#~3+$)Jxa<7UX z+H$spXsi6XN&+%^(He>SKmwBiy#1GY)C$bd4v31(_^Of?K>%4r*2#wKPm%t+&xLJZ ze^C8Dzu;sEd>GtnoNEn}@KUVTwI}Ao%^u@rg%_`iy;=UMny6z^=jvv)so7Lj@9e#< zm6##c;x?^k1kkdLXI_p9rmxXxY7}^v3pgKPN50P^auH?ko;@!>4&KW-HUb ziIn2z^&V4^yJNZ+@^_F|(vSJ{xNH#W1@*f+pzVMkV^ZsK%Ve6+vR&-x`<|5P z^yp2DkfLQ*^CFqlR80_Vd+I;OH77s^iQ*yuIf@giZI7*dvDIh`;b_A>)(9pprhiZR z=N#~RFexQ>fHD2}Tq%nx9CM3q#|=9e(>dUBDr)`9B{M{!c;}~J)sA~&dF7`O4ZAvv zLAUpssp+zj0WO^37F8ZRUC)u1wcPSxm?sD&b${ih&7YUG(mo1RsHf@FyjvrOwLE(y z5;+?@i`+$m_tB}$<1Se~K2p$){f9UX*^;|R$`0t?^;_q8p8jqBk#}$ck$~1Ih__B4 z?`z#L;YY8a$e^67>*9A2;ZMNAU17|R53X;s2~512vkCrO=#)6wx+japRceT7l|&dW zvQ+qC+*?fx_pbiiofks1iJ~o9CQ4LE;b&7@6E33-a~H6Je~Nj1>=Xxn>%R{F|A+=i=L=?%W8^#K&qZUW{pJ4Yvf)y+RmvFhk>~w6ZR2_!JnvV9b#Z@F z(DZwO*ezmO|GuL)54^NUhlDa1NRdCZj9B$d9uidRUVjx7|B?HAZYdis|KIXLNC3nk z*8Xl*zx&X@3Y|dOyE}hF*`iyfQ3R^c>WE~gHTwS@+$kGL5eU1(Qiet!V#agE+0L5~ zptVheuKW$qBF*i7lE8|HaeHv2i|@`^v_2*%7BX`}H=!q)y8K%UdU8H#+6ey#Qt^+- z0R&P7^8Z6x5QInzTJBo%?w^BuliqkCFB|k7oL`Maa48$VTGhPZ6~*uj3HAypxy{*3 zmWs`cRJO-`UodKHuxI(_f#-8ecZPiSj#&Ma4>#HjZ#5|$3BZ5#480BUazvQs^r#H% zw0qZTeG-V0lOJ2Zd+9iFcXrV;ntNH!cQeIZSW;Lr$k*rpn%tfb9ho=vP4C4ft$RlG z-TCvbm$X1~d;GsAx21mXrT$F13sw=oXqlOdUt}HJn%9XsuzSPsU-85r$>mbDWqK>f zjd<3`pU;jJ@yo)!G9xA~p4_!R;}o+JR0F)Wq*pNkXW z-=)U)|6Xb!Ns%ra-CLRmujAF#)5jH1F8YtuazFX^f~azSCLUE%tctnGnT%e&R_5#& z*kg|QH&ISKNAfD{>iv&-)t=TXK&Fk5PLQX-gZ(q@lUJntyG+5~H$=In?zLwmQpg%% zD2}o~_5%RV_)ICw1LW|1h}y7x4TtYs(bMODgDs4dmQcv$v$&|YS2&zD;&}J^pQ>z% z1G4P_n&&~qL-+)VUkN{*k>$5Y8OUS%w=mcZi*q`+2me_X`6De#@Pw07Vk}N$rHwRz zBLaT*px$Ke$hK@XaXB;u1c_me@rnLg*D#4B>n198i+mC5Jr1ilDf(?em#N5s=WJ&g zP7zeA&2`P&_>kwhMLCYe)E0-#OUDcro*V+Kt7ft z2X4u#&6Q}}WiZyRFmua95MnzhYv5MU=d2Q7tQhLpa3*W~3vI0)A;wvgl0#e!Rx{-gw(Fif+_qzc?(*V?$$#?9#?0@bI?;mMgvuE=hWNl3F^)qgdp~%mL3uLeBD1HPN zm|tH*__wHiVJVv)U#4%fZ(N&KD4XPSoZZ-({7=as9RcxJK7urWOxQOll5A;?;g!;# z1pK?m2V9<`E#xYtl)K%zZaj?ZviuyMI>b5#dWd^KpENI&dsh!8}$0~8=wdJ_J7nJT3K|qkB2k0jb&X@Tw@CMCBNfx{*3vNVz-+IAL zT*i7l*L4!#Er(O5B?(n&d_$`*7cSv03Ul=f-{`-BZ)(-w(Ts1Jbu`$Y9))5Qibu{! z06XLq{wiarI{r%*$!egrZ@kw0ani3d?t7Cg1bbHZBXNs=BE14Ke25fC@P&fs@XFOl z$o!EozHDwES3JcX{XhDr3_`SzHp#tTHTaEOHp*`mk-n-V4EgXskOu(GAP9uQl)Hoe zIXhZd&miMv>Pp}InJ2BFfR6y%fS<97i;t~rhzAfZLAfJa9JJS~$sa4#z;j2C5sCJf z|5e_0Aun_nX&^Srd3k^noNfuZ4T|I+(40@TMi5W1eQyO4Jti?R43_WAZuLoZBD-^7 z%L*dSKp;k~f@=cXYvc5wItjh#v@z510U)`D%u-As_~Fs2d)Ost-h9G-q#Q*=%lr0f zs`xiQU<>me8F_7V(0<-4Fs-8jfac!O;Tw9Vc1@|n`1Ag+Z@ycHzaeO+d;*ug_~lC% zACq7j4wd*b4O$N7Ig-25%@RdMP?&+N$J7=4Jg2}RA$Ych{88)>&LYnH@KjO}=9J6K z6l&KNXg*ve-oV8uL^C}?a7}(z>6y<4*E;}cuo~s^pw&rEC+vKTUT^h4B#Z4gu$in~uDAt(#z<6&??=IEjQ&)Erh|5we^l+l7xu z2AGw}8Bh%2gq=Dagoq^gFMx|bp0t_QSN84Y&qQCpeqDau$>e=x$a=s|-?3=ERo!9eT}|lPN00+^5`K z!PEXDxRh_~QVb%0V>btGnTpj7nGY;NMlZXLDmc>HJaWMKLi&y1eP^c7pUIz7(*=!S z8K8DDfGmQAH~6x{NQO)>J|fcTK_$l!xQZwQw1QxLy_+NbT-6l-`(NjBJKp!&S)TrK zD_!4Nra81+hT$Y&&Tls7dq33Pv*R(YJmuoz(i6+lES-Vu-f&(U6B+aV-f*qVD$-U_ zPmcGx8NiXc~u(%F4x$aKZgouS9$6ZDrr^Pvr)>wqnc2EyowC3NUzf6aCd4773 zz9^BFL%P##*Eqd9wR>`5BX<3Y;aX4TY}y6A*T1ka^7Jle5xkg&Rh5pn>A+PjU6PT) zNv1jEL?{T}xKGaq`i@pQ>~8k*xpXqRTRr}fU|^=LC3C|_NkvIXtMm*y=O*l`>#ugP ztlt?l_5eRLm+d8OAaAZ<#emF!a~-573^S=@;b8%haN_htm|QW}87N2g>`K|KM8eu1 z?Skk9R5~UMBA*}zP+j{#(Gucc1R}5FB^CZ@0#h7POtopwgrkH17UQ*Fql7$$+n1nu z`Do0rrTZ5PI;jlh*vW3kA>WTP&N1QpASyCEZ`>c(9!|CxaPT=#unR;_eDDp}_|(&~4$nCg zjMtZUe+!}XO8K%@XIjasV=saviV)Ep1YwLmzW-S@>8Be-6nKVIeEo#&Ku&4x+r)pg z0GTAn;s953kbu!$xlg5?qVy2;PQYcR9VHI(N81_#M#|do^dW3SH*d9s1tm?)#dUL8 z21+$ADzbCrLzNY2Y{^OgND2OpqeLvE$1}1X)1kDf)?J(UUwq|)%oF*pn{_xZeR>tW zbtjNyv#$Lya0YOa#1J+Hn+Z6)Z*MtzSWFZBK zUf}tohWC={9GeTLpfg)3XZscH2CsW~7{u;w02sNUJ-%xtC#ojA^10+5oM!Fp*`&ZC zb@dxE^DcDtAM^b=&eas~;HhJ6_i2VtrVml>iwdB755Jyv8We1QwEh4#d+^HudbDQw zU$8|pQdjdUb&>HbV$r6|_1$K(FnwZa#mvi%1RO!MKF8ao@+UYJeY9B#@eP##N5`j^X~thXx|-?K`Z_ z@~RYyXGKMgIvU`%&M~A2-hSR3S^1Oz-dbLU|Nhn@L(ElWO8?|$J(hIHow1rN9@V;7 zE?iw7Pr6`(=!mz=^^`KmR)d7kp$CI_?f?o|W*HU`)XQ6^=8M_jC`WgW`E0!-1j<5- z_36i%5;FJJw@)tW8;`$d5sV+lg$|iz1tlbz%LXHG_yYn{GNzd80Hn+ZkG2l!vA3}7KT%&IkOaaQP_8r zA?~qGOziX-y?6Xi{-l=XM8c5p@JwelL6vx}`(+9DU+C=UJX(R@{ltDN6uxyAadVI&N`2w+w_gS=799f7hvLomF&dLtZlpG8tt>C+_};tMR^Dr< z)wf^EDJ-z^8f2gAPv7z&5+owdlEc37;f+N{lc5)qwx79~%O}sa{5rJh*izZ8KefC) zTc$!}x?oQT^?)c;p8cHWlCLS%=5+b<8JNCBMP6$9*52gLd}W-*fTdE+rKv}9;n2Or z_1$-yFZI-Ez6Uc`_5BLtLw|>4>;mbT(u=#^pRbx+t>Q^>&pACcSmITOpiAT4F{?ld zu^@9c3sI=Q*YnB}po2o){>@Nhmjf+|GnIAsOV1X3I&Y7HPa~5P(Efb5+Ww-7L4?fH zsI?b81k<;-;tvpj(~m6S3Q)#mTF8?~NdKJ^CwaH&7(Votqp?_45BF29yG>1{eX<#7 zY>Y~?_#0}vqOtvX_K2wS6P#T%hL88#*CxZ=?EG74O?qO}?V>u3Gy_4ukYP}4hKQn5 zAAPEv7Wdjd2YQCt18-nzSx4P^CW)xIvW{RcXPR9&>6bV`US1N*HxFAt@2tPK_7PzU zE6J_P5`S0I5FCC>sL*fZ$+8)rl3ESW8y@#TY*TlnB+y3^25)>Bh3no>LjG+1p0~@0Z`!8k7-(eALPyk99 zc33LHO1js9ks@~%ra)Pw?++AW^{;v;RS-fFv>~}iM;{cKEnr36E{NI&zGDliB=J7$ zquFxyM_MnZ(AP=GV1*ORZ3!sZ@KxF$TomEN(^cS=%YUzaz@#gym~`ULn6I?s})21 zAcFWdUN^KSgD~Nik8k&X1P}#CFwM{<{4h6QW4-V`YtA zv^M1r1H_sc@NF;a4&v%*Lc3WdsJ!lM4(bS&8tQW36MG>EW}7JoU#m{r-;@5#dTQsfUBha-MS7%eXm z9~xTsYAKIh&}&NM34~L-&sAdeUS-V3T`sscts5w{R1|cYV2}$t<>FWGv*%jwFnaa;mx!n+1w@i; zA93cAZH^_}&}``l+@gV?>ncd$v;pE6WLq+!iCU`g2SeVL5D9!hnQ9K@|FpZ1pY(7j zjY@w!c%GJ)7}Z_O_vT)M(b-z(c#B_DSs4P~n}TWH8BwTE$%`*!LO8OaQc~9Fn0dn8 z@3ej|BH~n^DBr$s)3Ad9QC(G%Ih)PP6UOOX(C6eO8YsndM?{>gNM(a%y)#*4&M~yf zF&RlvA5;mZJ0F8;kcFY`hu@Zr%KgmT;ddSzA=EuHDJb(XOh0 zAu>l%dEB`3({Tp%>9l1l;gDla73-x-`m2rtwgczHcc+4PzrIQz(4gngNNw&(;NHTe zq@aI}sL+=4i{pu8Guj-g#$QT@S2J35hv9yXe|Gu#a|XUoV3J7{Lnm+pm&tF}qRL$M zhKUc%Z+r=IpimpO%tFvIO*nN3GWvy)@&~bBjgJMk&L=jU#)oYsQ5G_K%>;Pm)^d^z zJ)oZnlrSbS+B{_~qNrzeX5?-`8%y#jooQWuZeSxkIm4}9On85n5Z{}7%=IRungNkZ ziLW=~^pvvnUJ^e)PgaUg%JdK_Z;^X-Utd1ucbX7~bUy`yKnftxO0aCbggO!1oC3R> zb&!Es84i3ry!Df5Y(s0Se+`}1&|C~XOo^=cVf;l=yvftTqC0{ zsfF*j`knR8$SrIB*wnjN+_XiV4TrOD$%89~%^=s0y0dBmYY@l)zcX13{TBja5Wr}h z*c`mX!}C+~otN!KpOnuI!Pr0*V{4n~*<5-ICDC*2zlwkxUM~txVJ=*_u+cVP?J-yJ z)PDc)2F$V4RY+OZZ58^XLC;}F4XudC90 z$uaj{m;Ja0n*JP}Y{KlyTcUIYsZ9oW33T-ro7~Nx9d@DIO0{$Uar z{{{Ugj+%}8eMdiARq@pQ`uX98Htcj`YPABR{W@&m^_!UqcL_0Zad87ztwlb;Bv^^< zXRdf|0}The!942DJgHyZlhz~HYW2M4t!a~dwwxiMO~*lnzNqv&oZ(H2rxKa3;SG{L z%RJMMJ}PRy98&QVB)B2Bb@J~c0_{KQm#ba2`e1zOFpS?v2y+OtdNZ7Q=dQPqJ%Q&? z^1a!N>OODC=KMp>i^XA(@OVwCPkcERFGd?bxnw`wPsVsHqK0r7Tdi6YDw*(#FKWQO z+7DXTJ2q19o_o9Td}{iw)7G=3)87y%x#m#e52_zI!C^9Cb(`Y`U-4>t%b-b5rsXyM zd}eB4=cN-9Uhcw;duyuts*jd0Io}$pTOSVA%$qE3DrBtuKDJ;V=;LSHDYiavwvXk) z1(m~wE8%ZEj=GcdB)^nx9d^%dOk`~+sfgxFMn`gn$?!GapK$-NG5Q2<(ID(FQjOYi^0zc zNU`k)S0>GSXw#qjj*@sR5{GX|H@Dx>tdB?=Uwbn;t2p)e_G1CRfqk1HQIaysmR4rk zsV7P4&G~#yVFdeSwoQ$YQEmRpvb3AOCk8@SIpb{t3Kp=f46t= zxpkoABkn*^SulaWr*lDco7*a0Xj>^-|6QQ3W zQBz6{>!mm7j3<>;G#Mq);CJyX=^zN==rmF#B9n%FH0#dX=ghZvEVe~* zS7pP;Z`>{A;ZvekN;V_B_Y2i=<2iNji{!rfuJLhYEG`{;<#&4v4y#*OnOW;NZPlbJd3HBuMMZ;iY z{y5lXe$=XQwSGu1L;`iIU~ME%A1>a*M#+bcWjJciby}~AF7NwY5|hURitBnHPoFJ9 ziWMpzOfmsTVE4`FzYzAd?CqVvzLF?&8BZ?rxnKh?FHywY%s%p({^H);*6v2q6*}Q8 zskOBU`r{R;_VdZYE}OV#DsscKi43O7Y>}b7yjtS^(tYAxpG}_f+nx@UTf0-UKi3!P z+Dc~oj>)L!Po~_q+Ps&#He8AWgA;E6gmwn#X&_IZ2&N4bVd=g89ivM7NMxWBM9vq= zJomU%PjrI})p@C(HJ(!!AEubL9^BlsjaMhRy!mUrlk=0nG^u`Ym6|9fsLILnCJ8iP zvQB7(8vAGHfwm>2;rjHj1L$lR>Dcg2?@d*#Og^)jtReQ>x6rSgr$4;ziv@$GZJpoM zU5GGf{EjILoKm|_lHkxL+#Ew8WdnOOMO zPp>QiSvq&MfDVe*5Ck6vS@HV=kU(p9M&P^pK+B--JCRuKAzB5%lm%$Us{sogSK-(> zb@~Esal?-@DVH7c6esLGAJt2qvWr)hseyabdeDON~)Tj+lIRQw%?4CcfKUq643Z(AuR>&kvKIRmku^K2p-qxY~IHQBQU+D=ZmnAz5rh%an3%PG26-3Z8G~|uuSk3KN=sh**g(hkDeC2VPg_hc#AS(_v%ZDg`lW?9- zqR2sg#rM`0)e>T;BDVZn%`sI)WWC;-I-ZnHAjxRjS0Kq{z8yToOg}XH^+8S%X1hFCn%cpv{7WqrXVP!qA+5u1YZ4^YF1_bzanLf`J^sn z0c!g^&>Nq$A|JY+NWvhTF=I85qm2U$fgb4*qnKMe480R_O0l!!A!8blKOSt%cFqEM z(GGpM3ydYtz?z3npg0CT(ulahT4oq1Ju%_4r5?SScxRKKfK`nfTE>G~RpMWgVx@t4a1d$InOaprNM-zq^3iNSG!)U8xSdRet&ALer z5+j>@kTIT0ig{}*m`p~FhxsF zBYFCSaG5{1>W=GaVNpE|fPE2D^ZfK4uzNaE)^%DgjC2V;Fa>^t>;!9zh&69~HUqm# zyz}TO%_tOVjZ@%ao?dQHgZED`(o-j_HUUF}_pXwM+qy{W)Sr49U?}ZgF*GJ55uMIc zwZ5>uK9}5YLI+g@zvRKXoPI(1Y+inmj+WAi7-4By3N?^14rEhr&x4j}+mvCGLy4c< zOAgVx{+@jWAybGj#y)K+xx|ye>oy=6-hrD$7+fu+<>BhjZcpitYYqVV?(ON`mWU5o zco73P#OHXnrdoo*U|L&-0}uBA!tZ-IbVQak9u^9lp*$-Pg-XfoNLB&{X^~9;(~h+X z(cosj%8Yb@QH4qkr&Vr5dtg5UMG?XMQJEWtO7-`FO3L-1O^Zu?DjoAG-Oq@TO;r`$ z^^zu8cexIrq=8$eb#D3s99hp`e1h1NU!eX4dE0$!Q1F4)Lz*LemlKhzpZHg<4il9! zo$~)antW11pQ^Xyixyq|nI3B!v_4(rM&S?rju}ryMjLR9=Z?=aX`0

(ca$C^Bmh zMcPy_fsmVzU6q{=Yy^fN43&cy5l?W(U73OC3`^JBx8R>UGX``Y3Z^rb-?E8?b(Ik* zpGodAOq0frTw#$Bs4x{Nw_IyF_M49*b7qZ^pOOK@<~8+nEq6o!z2P$JYEm*8g}1C~ z**Ez_TaS^17mnk#wz+Cayrz1IeUkg9beeFd>yLhcVkLMS}nz>8?#VO`4r#6=5qFi$@QOg{?$P!LyW+k z1+{sS7!M+t!Ds^v!+Cez0>&fS`7?b?d!~zIUHINU6QeCd%f^*oA1Mq(83twIHBl{w zh!M!Ycg6EiYE~KAC8xM9%RpVW6^{EpRov6{vJLA!6;q?QdER@=1KQ@YJ>>48iLke= zOorUBm9;LQ%jJ9hR+Q*BWVYBirDrn%pq|`$ZUuC{*nNgNS9mw&uZPQ?hQ}z&7yd&8 z9;4YYRDSyF1PcM4AYp+&#lqwYvX6JKo zL49uG<+`<)jMpCaqjwl);>pfwm);fRN_4};SoIV&x6INyuY0KQ8m84%vGW#R6&;8{F()PadJBFsDy`UNFx}g0_@a~jy06A}T zQJM<-AI1ah5!wq@h0AYLtcn0^*Df=O=VK5B=w)72rYE~6B@b!PrZn5ibcfek${9hM z6Q$L5SMPku1;ckt&3!6WFR&*od!%YEaXymK%zmXT&2$Do!okFi%~`!{!gON02Pfs* zd&Dr}1r+UOo$)77Ut~AHm*RS*<-Gdq;Z@TruXr3QMcmS^zI3VU5D_{eAAuaGf28o2H}xn!WNZ+K)v7oL~URa2ovj^iwa*qe%Ut; zx}pIzH0)J^O$eWT@F`)k$zX%Q#C;4(@bVEReWIAtApZ;q`4;z~%4yQ4dzL6UrWOyk z27|>@HYXntW0LOLKpzVo(m?mf_x%o;wbd4p&pQi6uzP?FR!g+Gq^G0(aIGgJg zPLq=N>TwANPIQ4yNPmO3`;PmNC9d!(I{xO_YKj;(rzCdgjN!idX_dhdBHUP^@0$u{ zl?GI!wO~?(w)RZA+|`yOO{QG5fjy>=(TK$Bt<2n*@Ayz%Ir~mh*Aefsz0?EZ(f1j5 z>Uv*yB=&Fj))dTwWiO#~cjZ$Bv9sbk(KIY&?%yXINy#%Xme-quPn^Uu0rXXSG=(rL zCYyocg-j90X?LBp;waP?e7zYRr3q*Y6l%PI5y>ig0y-AcmI|nWb28#}ZfPXxKxe?Z zf!-7qGNdW<*qHGl){K0{+AkpJKHp{36T9WzM)|6w|K|f^-j*NM?nY-kj-@;08(&g0 z*~>xBv>(1L`c#cSQ@7dYCP-~wnO_wVud{6Z#Q0+87`gfQ7;r^c9GssTSsanmeqYr- zBA0?YNoiMuj|n4XjxsRwWFIXdk74P2mn?t-ol8(Xd!jY#OiIjD*a*%2IOQ>t3!Jvi z@;%i2rJh?i%WXfa1md|n6;u#*?Df~&xrHZ*>sbAU?KjcTMl5tLzoDKyF{?sd^6@ye z+uB%U6r)(4HLi}knU<{N%24ieeO~h33b|m4k0p`CZtp)!zH^ybPN{aD#%}*`mUJ1r z{;kqPBD#imlFa;q^Hj6_21C{(Y#!VTHocmkHD|B?qXlqmI&`D1*GV*(tMEC;&VI!~ zhKuFxC5hvMEy4kmO)ocZsL&G2BF54z$Z&zwIi1+q>F*Y1;T} zpqNS}F?9etFTLSM)(wVsR2GNw2^CIVmN1^%AC1$}Dt9jyOElvKU;lOI6t3-(5^`Hpmku!aaAI zdZl@Ecxv%TyP3(n)tiC-IHyf#^(ACvw-td(p(cnna|QzY%$iUvgH{Y7Sw=%`TliM( z&R0+*$27;U#kG6V3EIT`Qc5&b8jApGPna}8I$`rW6twyq^yu5>vi7r^nsN1pi506e z<}tN%#IFNz&UfFMNx24HPT3o~Ue2)!2-7j5+pM2?b=+3?|z|;QR_6?iRkgihxMP8SLv52hTLdbpw3FEn90!fNU z=gZcvX9Nb|?!AJ-$cKVM_J)FudF!+GvTw2sWE8@mE_KH}YzZdFZ}y98Phb@zt(Jw6 zrRe+<0n9$@frO&xnx%MQc&(vmuOXL z#M4p6fkTdzewrOfYggGesnu+}Y+D4_F>O5wB#QU#;xb}jwVDyr+bY&P}@J(>W(`n45bzC-P87X95U51eqYz*zF0@LG$(Hdr&a;peb_Mp zUpT+!*l|c;lp!213ts0;=wneK-?ny+C*4nf-uz+ufI7}|sPT^CMB3RV1X@^D(4oX+ zxdzNd_otxOwqR`lWvT~&^(5W<=Fg;Lxo{$`u}n~bX;Vdyb|yP56l$1}N(Z~sRd7my z=nYg!;haBHF_$RAk+{(z_8bh%ROW1kiWtiqM=D%r#k{s{5^l-XUnzL{gSaW4AmKu$ zJu77lKM88_WFMt0(W4J}ca*MaY6+ZMIt8y%ei`%Ay_2vcH~n4pOg~C1dFre4J!~qB z$#`qaPelva>rZu)OM9cXd>o&r`x|e-Vbgb8+m0nkH zb%Lt%^P?I)wtjJ?k% zYxxmOY%4qyy%+Bug6;rsIRA|El3v>WWD)yCrOd2)N z;JOwVHlGN0`Tma?GZL&qjb)hbQW*<2wpZL!BVB})fOen@TqNLPq5_nVUvRY?|E`EYwQqpYk>+!6%ljm9#O4xvoNz{L7ip zvt|OyacJ#Z7~Pj@yw8kf>jTUhyr^$X(2nNNA9LxRr0lV5W%$m)EPkrmEXO3_mmgC` zXUN9&JJquL@Me}or=RxLP3|AErNV5_uamy>e!Sm%(s?p+ z>GqJ4kzCzZdSyLeXu+w8PtI2GbZiPhDth1jANu}@PrHKfh;DSnu!4F{Gucv=nuHt+ zeM;VLhLIIJaIOHPnAegmm1?v%W=<9=r(u(SkQXdk20^a&zdUi81 ztajuwXKg;YvMKqYx-YiST)-+c$w?Gr6V#A-e7)!1%-4?vhOf;{x|OW3@NctBW%>G)36dj>zC<&$l_VkN#2P(nf-x!rt~5l&iBs{oog z>?HGGwn}gm-{f0WGeX1g0*>;RD9TNbr^_weDZ)3#i}=GZYF%b8w@Fi9wR!n7;uje- z*(zU{_lXP-(X$|Tk)?=HxuMssj+mB3RH@nQ$uV@RZ|2`!>X(_9BQNFQdYUS+VM0-= zo)-mRGluKco#o;5E4@)?x|RnnIlEG@Ad9;r$j$YmA~r5;eTGY`VES`umCa0)(?hgX zn;oBhOo%r=on)dUxp@C6NtXV?xtL2#gjSI&FR5B5D-&2L{C1qaqT`bVSZ_YvPSI-- z@sqfyGx8(Pn@PrTtXmZMDSmz6NR^uD1A%xlO>zgkJ#Lv zX>sn_H*dF7O5R0Hd#c+^Pz<()E=Xh~JW5DC3&wA6!0;rV%}WWn=UF z44#(>KZ8O9l&{dCtbc(&gcFh6=4O z#U&&@U(!)A5D&gj%U8tJ-=$gO25f2`wmMi^@IzHfW^n%bBXqcFlb-~-;L2u6ghAxh zaRqte+=pi;l;Z03U0akQBG4(HRZ2!&)zPtE2HpvZVC+YT`CQ$x-wI5xaRlshU=5x9 z9Tjzw`;)5LZoWQA`Q~7zeSxq1?U|lwe!1E%Y2;F4GCkEp=FVq6Iw$lou1VgpkzF}& zY^>O%hC*jqf71^^Z$SWC>VOqnZwq}>p3#H1`nfvn)Us^P0|aw-DPZa3{4~odC^l6D zKlH5hOrmp_0rk?mpkHH_*Q^Ai1F0%h``cf2mC|UsJK5MG=7eLdia+NYC=L~w1{WH& zrlI#YP?aK(^Hie8^Z{)7q0?ILm0m zF=`LNlmtj5y*8D3+T0Uo&B)kZQt_Hx^OUlY4K+E-)&}zXgwAk}%Mtvgc0;_|-zS+T zeSb3E=!_yhA8+~fV>TD3y^;e+?w3Aht7cGC&bVxVG&cWe#vv0$3BHmga~(?`UJ$@w zLSa3R{C3HFO4o(g+36x7sFk_A1uy@-jF_jhhyCAHB*cW6%Bo5=x*U362MooWfMuR8 z@J9C!U8cf(n{s&Qn)%Czl0tt{_=9C@6pl?vkxWNqe556vedwEO?+XcvS+PU!QN}*^ zdQ#ApBI#lMc(lq%4);Xvh)$u=CHZ>-j>$2SdV7G7Pqc#M6InRhX-Vl7*}IA@rFyK4vMaB%l1Ak~3#Z zV!^iD`$2)-GOCan%S&ykGv#9J3DlBYKx>F(YK7rBwc(agy4H}IV1G`vVV4ucWBRTb zrTvXp>HQ6}RrqGPcM>n(+_X6mHV;TK5oedR(~-Q|xRYdp0`E!?$pBs+yO~T@d_q}} zvxW(M+e)vpUmP>h=xe8J#kr+ALDYT7GC@R<_W?Bh?9#XnaeQ(=C=D%STP4f+;}9>J z&8j#l*|_UQM3kUpM+A@OKiP@1Cw0WI%Ej}OPh8UO{wxlkZt|ABhL`*hL7mBsb87PQ z`FNceEDC3Qs8W9EyyCYYaC${Vd0motx1QSQQ(nZG-3?CPWO%L4+Uyo7G;O%jNE_eD zRAN)&q~)4sXw^|Ymy3dZj(pj&pmscyZH!V+?w3FD2`JD;5U^ zU@8k7fUwQu>IBLo;T$=9dR#mwCnx>ea$7Xyd?!)#r8F3;8>k&JKGbd4NTZ+0&vq5u zGIddu)25UO=8ujJhSx_m?$S}*?+igrTz`9XWK+4Ln;g+&Koq5pjh;G%goA7ii&l~e z4O)!ers^FbF90R|rVA&Qgv_Q3rSh1n^pn?r{xq1E87;s4qQ|9&xCz}7f1i3rfYl6# zVlYP7Wqph)%Ea5IHN=BU>8n<55Nl8{xCxDK-4PlJi{pGtASl5I)o8fNzy6Qvu2 zH09k(zaAyMCL7^W>-r^66(j#>2Bif|3IgXNi3$`f8TFJ|weosZ2pS-t2tfFiP(o^+ zd0A^mPAsnTKt#lhk+aDwfopP2UTS6nc|ucUOsUNWHhok15rFaYHf5D`)Cwc3V}+c| z^e=3~=BAS_c5w!B_40E@4kptd^Yppd6_iA@ySrmC>SvU$Q0|!;fy|QMaZH$s=bF|b zZ>zk=kUYCFTpl)x65}C-nzLx$!T*sn5ZL)eq@ag9p_rE8DXx;VKk~q=HK3HAAbGkf zSECh9{53vsNno1lTdlh7Ha*|CH13mgY^@=KJCJsjlKC@VCo)Q!J)Y5 z{pF6@*Vi<^vr1Ce*t&?lD+$%ZfDcafsn!>a`*P7qCeZb(IC5s96mCN_(H^9_%b2pn z;t8j{(u6W$|KhJLITWRw)P8_;Z(#0WXjA@$Cy5IS;_u%_KKSO)s^UYP(1$@@Wohgv z`2DRLYHep=A$Mav<7IjYjI6@#72@=^Q!Rn5XmhwZx1RJ3-uX4xO^H^Dk&dJUk65=s z*Wh=m7Oes=`G0M}Hu9*_*L4qNqfzdqf{_U6i2JRc&T*q|VX>r4hW9=a(_{bPPCV_fY_&KmdW%JIG1>V& zuP`@C{$W5vYY5sSzK166+Q-;#^w~-xGY38_Xi)}5FyF@c_v-{9Vpo@Y)`(CztNtz; z#6nSG9%4-)t-kb3Et#=bQJN zZ@zcto!PU;!M*Q&-PgUY6~DFCZ_Sg?^p_~hmQR>?>}S5Wk5zf%K5V7y#f>vcG%TR) z&?(w%It*=T235|NM+f_&nbeVx_pNDRP|h~xxYn<; zcFeX#ShY2{>(3C!VG9F}a9Gu!_O*RLJubMUNpN4pXH{D0GD+h1u)_s7u037x&3|vxw0Wb8 zIWf2vE|a^0f;U8TPw0!>ZNfAMyR%WhO@virK&iGwgUMU0R@Qw;2%6Mae~!tQ3O-Kj z*r$Ta^?(-nTOxT{wz4O zS$H&%13$27kK?;gd<=?AVxVldsG`)e(PCf7sE`!82_Nn5$mZG*0brm%tNaPg=8yX$ zjVOnz3_>a~WUV`&Z~tDY*_C)yuThh~;#cv>XPj?Bv{jL9Bbi0t6Qb9=%NGKbXKcPd z761TXLi#v?H2w;>*~fUbZT%J>-UmFwcvn$Rextq-->Kh;m`dCqL z1$jWC1@N+(^^pzDQc?|%W|Ve*5V*f1fSQ9o$&bDeamL{uCB6dbRfupRmi;C$KWW6m z#m>f~cFC4_IN^cokoGzy1v4UhUiO?{d!c*8>g6SQ9ww-{Z! zqO?28-M)^WbBuPxwjVO9CtTLiWINe}iI1n)*;QV?#;qcnFjhHT=5%nfxR9Whs~YW-y=3T2@o7}_G+kPU{2KEP+< z3VfA-4Kb3O|D#Gd5+2>*=22k*Kipyy8jIh=s}vu-O20-7;DHBLR_ghF%gWKaBv<(& z|31@1pnTZy@8sBo<}yXNX^2%X5`?1~3c=s5WRrPmdFrN5!d>A?Da81Vxb|?XR8nvya_UcqSer?lx zx1q0m(~B|kJ$1J^j$zhvMDb zu9Dk2{uB%CM_cG3a^A*`2GYZqPRYNW&f_110v4;kvB-MmgIVR7B>QpDM z*Z0@kmqBIwGrAt-nh?Qn!rpm|Sgt(JFq-WKZrL(x+md3XY&X|!RcsV zt>iJDQkTck_?JxCoNE~V^HN-QRPdvgvl`UGPIwMfwi;RY6ukR2{Wef6lXF!=KbHw^ zA@xz@G0f71}AHv#;<(y*O6g{?Y4|PFXHd z@pL^_MDASau?`CNZ`rPlH4_De(TWLbCh?RB-du7?^n6D8s?*-OR2xZ z`7(ZnfOo2w8|@FBg)Hlj1qPNGRNBgZELx|ZYKwiuGV;uaIdJ?13s@tSl5d{+r5_(f z(Vwz=wh5|;*p#$Zo{m@7+~2t3M8maF6zfBhx&y05(sOy3=(nX;BPq8oRDHFV@t5$n z+mJP)eQ@LPI{B&o*o+~!?=uFitFup1J1oRFy8+H?qtoGOXEmLvbmft_28N6}P@s;i`V*yKgyj`*oJ^7pt5%HeDjntmj z?EPA?fG;lW7F!dO0sbGV1PkM`qA!ZugnP%9%=2nWy*{h)S{J0~JN^RC=y-ii#chjXHTq%!t3ey6U^;vmgiNw3!U_fl&qp&>%Y7vd~<1)%L(uH|61pJvpU7QTtBm!u0%$g zNS$)?MxT*$<%^$*h3}WQ=>-smd$Y_$C$o19U35O@4~D!=&m zkF1Am7DQ8M)jqxI+moQW@Nq++aJw!iZE3&%!r<=ropbW1PfBI~zNrr{YB`9!pKljyUEWj*HP zh1)i3PiOgzt1-S8TOvA7@jlSlw_9C{F2h70-xw-(`TDRk)~Ph_)7x4<%U|_AVR%8y zMor=68mHQ9Mpv#sa~$v@Wg2638LNBKKTdHWzW1^Oi4E^zD5swufmtLGje6W+`1Yw2 zW-Q5zk+JllAA+)taJ!b|stjrkByGEQp08^XX{GU57Ai+ce;NO|RE(kN^~m$f=_}g3 zbmo|VKK|zYA!EO6aeD@UHe+?2JMM+j?-u=bP1}QGtJ;P}(be?%OHkAJs6Z zOG6anM>9Qxf`ZOJy>Q}!fU!z^-}sxY$D#zJUn6@*q}kn?TDok`ZA8g>&T;YRvPOml z?MK(W+Q?N|EHkLSLM3#$f^MkPvURDpYI62#^qc)io4t?XU8gubi_6i8LPz~`wh1=U zsy()(2*_E3c^mYaAhYQnSl;`S@fUN=t#2V*(Y=dDXTO*n>sv-c$l}VSGsL_&mWTuP zo>_yK{N|{RyFCbnvj*a_*kSQRdkBSHZnTDR;w6@Tjyqx!?eK0UZYgXLg9^+UwC5I( z79^vf*gh@d{Q(p0(y$yI|2~K)Ix51U%kQjnP4@-CXu^1w2Z31;d=>?moqHDDr*bz_ zGe$$VNhW8zQ-|vUIDIJ=LY5YPvQ4X}f7DrqW45~Ws`1@YZP`HYepQy=V@8*4FU70t zcduEE`Ua6HDk`FhG~V(wwd6z|zW)ArV?c!?&0q0ZRm~e_Me8Kuquc9Gcm!@tp?i&uav>U8&=8m0wAzPO1iX{xUeX_tAxD z(8csNx8RAXFNxh38|?TA;u)f%IUf~eIDTrctf)s_<+sMgtpG6H zID7I_>fB#!yVu2QetwG*{U)K08+;<0-GXiEIEVB&II={~lS0fh1g>5?&u79Opnh+qjo~y;|z%ZyVHj)8Bn!ph{Nq*pcXszpj! zPLJ*TE$rLqbzJh>XrrKZ=aeE6zB~Q>RinWx-EI9dh-^qG8S*RNV6))7!8M_cyE49O zvr%`(L2c=ebgbsn4a##G6JaCZmXxG%?UEe)U^YTdh_j45yJrY+i|5Be^XH)vd= zda3(jj$~0x+vfeeYY!RNm#5#SXra?Nl!o7ZPRpf9ko1t^UY`+6rwI$9E5s*!oWwRp z7vQ@`d8dqsCh}m%$R`6`>$`MP#G;`{HH=zKtN0nEPET2T~@oK(btjA1m@tX5EQ zopI&&;injSsvCv<*)f+k?59?jrv)5~y>p_fTDR&0&wHRdV#@*7&dp+#70s1|f8@FS z!ZTzz&(Iwfap&j2#*obFE|vdwfM?{(`QTEOiTZJxOv}3rm(1#vBq(@@y_mb*dEqfD zBU)e{-XO{l*6w&;=JFT?ymgbw&jVlUN<^ZZEC~(+1`4v!hi;}^8k_7mc@-K>B(n(# zN7wGdlHSAr-~gSpJdUsJUCvSFF3+oaRxik@KPb zVNH>{aOT18vHKO*3!F>2zpxuc^a$KwyY=qIy@OQUF@5RfBvp?utHJ)%ZqqH{L~QR% z&1>(xzYt?J)8EMEbpPfrr!no#E#0M>iOFU{f%x!p!`AL1eactc6vB5oi^L2jU!LsR zwA@I0rfb13{VK!QS!L9&V&KbEiPh*+5ABO2Gy{tl+J>!Y^dI{l_k1zv#PK~F~YUwvzZd^RZ zcUNUcb2v82VCoHr74u-Ugc=|9h(=W37qyou0bG|J5}8vsm)?c0fk?@!bE5xB}BM;2V$6{xyt zBA+@($-|P96+v6&#d+cDr^24V?Z%4s)wX`tboWOj@2DqHG*hi&{@>qT@nMa*CmLKS zeENage&HK;?TdOpHdb-aiSpc^D}QP3Z+~e#EXw#2U`Ae?5d1mz`h!K2(RXv*KSS2} zI%>*!a3RIOQ{K+q9^$W6R*_NVQhaz%$e7qDFde5+I`G@AHQYqoEcme`86ynNTFoy$ z69G?~QWVYM$lfDr#RA7B)x$UY=UJkSdp{R9x_tgwOZ>drZ$&qXg{GeHhw5gRk!^O&3xAd zsJLHH2p^mIbk9wf8J;@yBfmRV(G6 zJX5i48chK#3W0QvR?2;b4)g6hq%p4CuS5zY9X}l5B#b>OxcD*qq>u<=e7q#Kogqe}($QFJb zYk9phxln&x?DkMF*OeQC&%&uGetsW$xGpQS&XX2#3|sqfSPf#Qpgtb{u z-`fNe)41p?ze=0Uos={g zUjaiNz3{e@#azwsZw{k%PDM=^9_x!M7o2}=%=VS78(pmOcAH|?`Bwf-FDdFr@=2c* zX6~x66VB9k(}`#-EG!njlxFxYEJSmr$pi?UwC{w`!&&9Dhh0w|oC= zmiAYHQZ5mSCWu)MvnXAbZ(MPj>a^nLK>DuS?(Vqzm?qWXrxY%7A^ulia@dr9+@TLY zm3}+;P%bkg6`y|bkfdywzo){h^d1uY-v9)yi2zMrhiSs#S)IOKw3zXP5aVHc&7ns0 z=2*Q?WcvQl#0P@bN#;}D-r?tmJB(LV-fLZNQw&m64R|7ILE|1)Dyd=2|4`-Oor1yf z8iB}7x}@pcOCu37f#1@0UY=i0aDPC3OGJZ)J3hqoHVv;xACo+5&qogDJ*No;gMu=Ix@*%t+bC;WSfiCE#y2 zzjMfL6QRv+ot#N!D6De*Mf?lyZhkjj$0XYXAKUmOGZoXYnpp9huZdEiMDo#GSFQ5> zD8VN~WrpkumrmKYHq!Q+b-juqjK(~5kX39U;f}aA!FST*63=pxN&bG+R#7Ze#zJg1@Mc^8J|WPm{Ev3pn^^^!qf$ zTSBsT99Xh*BRqz2b>sz0Eo$@J=+3#UJ2k9);H47b z_gU-{=F+&Ux@2^HDqwAAK#=?5Md`=>ZcA+!yw$hPbsc+r-aGtV#tdWPGa@R1f^U(Y z$*bx3YcyMsKmF7fZ%N2_~D*ir&e7g25OQXjUyHxL|c=yd1HF{QZZ3Oum#4jMeBf)>G`$XF7zN>`#v)xnZ zY$<~U2h#Nes&BZj8eX%okOv-aZJdb|Wb9(o`mpQ2gDqU?#%`%2c1yeLYHzK|p|{`K zhDWBaGnST+90o^5(!QA4$O^sp)(TneSpDX6e$kG_m zSebP;vH0l3q}5&~fkA7?bP@u@jp2_qZnfty#y_|c&eV}9{ooooz+b8pZ`Q0<{d{rw zwfZ@*Xs)Xx7F82P(teD&=0%(9mWncQPZ$N+Ji@f1=IA-u3Yy1R^`l8t-1a4grwOYv zn@Vm|BsAX8l@n@408)5SvAfpDjWO0rJY8}_SK0&ni=7& zuxy$>$)onX00Fw;PVu|>_tSIf(z9}3pY>Q9b@%&8T^;npzRo9*j9=@}ZbkpQ9(jTyyrLyz%AN$o!C-)g@!wUsDow0WXG!Z>IvT zpAhVWt(Wq`-VYe$N{&G}q z%oOaa9YGkke%In*3z-bUQT&X)ZkLP;_@r>$-k-0uiR@e1`L=!i`(=+~(xP8fYQ8^C zl+x1lZojj<7w&cxHmHziBCZKD{zSUk>)=Fbc74eC^rXD=C3{iy>g!a`6P1SXvn|K( zj1ZpYw5j(f*5>;S>*HZ_Bk7349Sh|l_xwdgTElF@5^{eUr1C8W&UdL~Dy)k3vDU^E zJf>l{TK^T5Bf~P)7EiWvajZwps$JI3gxXadw^T$My-d`Y8tDCV=4iIOcZ~Y2?1{11 z$c`jYX7>}_cV@oQgx{x;EjRDn^Hb7wyfx$M=o!e>w{^z<Z<{(q-7SrCiiQ%YF^CR!tKxT zymh;2QxVcRE+VmYPWe)O76ur@2KsMd$5Ul`l6XJ+m^B zu>z8aa#&uV-f4qm80E^^K08Q%*{ryxJ8d<2HrwTMr3E;k`Wz&U1It01n!7QQK)`(IV;r-#$`RbHcJdFzk=s4LfL1# z3G->|uSu;%CMzTvxqUf}M|$rEMTe8j(O(Jjhx!jY&0#e@JggReK?;iIRZzCZ3~x90%Z1c&~q! z^Rfd`|HaOPx(>Q3ow3xc{j~EfkOnW}K+C7+d#-4n}uHNUR9aLQ@l$yT^ z?KCQ!S{|(}GOCq=Ms4DF2bQ$cy_#u77X&|UJ@(m{&sXoaNRzcWeQmJFYGXJ3$Mu7& zBt02&ggO}#sEYBQ%s5RgANiBtHC(QxEE}n~F5NQC1HGa^9+%`^?gx%w>E-%}%eA+r zfn}n|=#iAMh^6z!PNr4PGYi_~y-&<57Gr9~>$iKiLLvpBevS=?5Yk|iYzb22DppPB z^z9mZ4(nMA!IpEVI~+lMi7PAJ>&DxG;)c>3;cFN>K~>FAbg_rs&zV0@r6y zFYLNYTcTeE<(vf?y@QRkg{TXHCJ|r7sXht!XYe+)q^3#V5`k(0>ThB=EHuZ(J-d#< z$Ul*mMO;kuy2EJAal5`Ws)hS77@gCmutzhq+H-@zumDZ)-uZKcjmjSE6lJd5m-~;_!J=fKE#nAfkJIvDLf+i(RZ`oD!^Ss?|w`05|%HW#J!>%7HD54P=X`;spC@Z1<_UtPfrliFKeKI#{<9TtOjN%i`x_e4!tfGA3NpMcD1J>rlZ}i`!4kI9YQ`no~da&2nk;HxKTfo}UhV4SRx_rOs_p@3H zpDW}F?sv^Z(D0~Mr5Pbx!<-7LWKPz-Vsn3-1ICSIEbw@R-oRwlnspER%Q#+*)p zZnCif<=WYGNiL||I4^)B%X8Y4r9VwPpPH`#>NrSKMJ)6!Xg_=2rWIBWBiJ06E*U9* zn`cqnR+hYu{sWp(0Qgsq|58&qd}Z{lyJdH?*LPOS^X-UV%`+Xs|5vyCS%#iQu+ zFRoGZ!7M%U1A4J+t`9;6FOJ1A$%X>o4;vI`4>ukjfl`z>XhOTPTj{jAx~kM|Tq5T8 zlj&p0uIxQgv%($YCl<_50n*fuM>w^+va9y>@p^qV-L0QNvE>)4*zA(@@@|TdW7Da2 z*xbJ$){fJMqdqO)9`SPv@Q_S#9O1RW3moVyJN-J_q>= zd$$f@o+h(g-@1t47|m=~iprXGt3K43x5OO(;JyqTX3kVR@zn!q=EuR7AiX`nwP`m?7(`&_TtGp}9-s2yeA zm=k_RJnL`=dahLlO`yEKC;beGxJ_FVoa~e$HY++Ds2pp&Tg+tYnGl>)>$PMk%cJ@> zK~f{Rn4>*DM?W;GJowBpgCRYbsCv1^OXcJ+-JOxSc9wY;|H#$6b$D`xTRI~ zf*2V3EAJ-_kQ5Zdl8Yc)dQe%{UW7Y>6@`RDr5X?kop%znnZA-w3-fn<*jAHMj( zDB&O$xG+9m$VBsAqXkvsn1|UL0~&kn94Va?wcd0=>AphciWr-^~xtr|q(sk>KUO{PfM4syTvvbvmyMw?> zmM^h#ln!!KiShh0{PQUF+(HK?%_|cRsWlK|#cq?fJaG#rJo%Ee?Zq<9V+oakqo>c8 zS@d#f!;@u%p7fVOA`g1(J#On$o=3rP(54m6`Ay1!zb5^lT>FT8ecltWf}fw;35 z^c(zrynTJ~{SK32SZUhgDY&#@;OJ3}B!ZcgUu@d=J-k+&ImShlp<-*3{uuL=>E`LA zsyx@kJc0g}pH61%*YCd1JIvgdd%LszBc`oMo|J73UZbl)fi|7xC=oB}E0H3$C@<&7k~)Zl+-R(pRsYn-M)NRr0lxeK%!3N3%M@m_F5=A77d6o>hrDPY#Yr zt^SCMzk7B51y@mX2NcDz;h13E`P$S(eU@UZz%7K7%D-*6?AHxeK~yDz@m_wx*AyM}8#pUmEJLwj%iWR5v5 zT8bfeYDjSBT=~r3DcYS6yl-hhiuxd+9#TWlb=VBrLG0?ft^dHJ;Q1#!DUwp)1acRd zG-l84K)IR~)YaWv%-&H@i_4U~P!R_+t*?w9{+w*j2{asITd!4@h$qU~c(54c-6hW_T|g*a=UWu77@Nkp~&P=_faJJRI(-N zh<#X|CFiADD7TAIdEMWyccD6gI-R=h?Ndi1+rCWtTgzX7(oVW)k0MECeIc>&{Ca1H zulB`M?v#S`?e*Da=wTiptM_I`Poe1*9bW18J~>+{er*PQd{EqenF+f5jF);&#G@_+ zMN_v5b3qwmDA3jl>JeTD{P8-FONW@`b@<=40Qb+AJVL*-{&pHA*qOkN_w&F-6i5zo z>7vwCp{3;f1?ow*0XaKpN<%WmxJMNYqE9g=UY~+O7H?li`Xt&MO!e1mtE5Q%4Fn_D ziXnBt`5NkU#7E>B)vNs;$XT3`iLnijVAuUDuy;~d-*6=MDx|ebX?JGikv|(BVnbSyl zg?ZJ@uhbuR^RjD}`xOsVr+IW-*QV6EC6e^rVbU_6NK=U710M?^puCJ_kTTrACu9*C z5zBCCCn`bQ`O8J%WnlR1&+az-(vPC+Zpz7*Z!%_5C`A)-@OGMcv*WL_g1?7Mi4mTp ze{Upk6E=g1_2D5A_=c+6>p24Avs2+D=p>0~)2%luga!p@1Ic%@TB!*K`9G)v0~H%9 zQMV{I&-JuyCq5mf^Y+#1qmaUSOChTWh!vk;!}>^U@?y4#4fH0`2)Ru4(TGz!v;aT*`~CUIq#K1J zl(bl^49uH|_Upq@L3tSkCW<(+vw8AophHwIYHlr8`!R`2mKm4_Hk?R6#wPVMC&|xQ zahR*-T22tpDm#rf>jAWPbuqz1qF2{y6w{*jU2}BIaWJA;wz+c1r8){!6T%foVig) zF%$4$Y%8SJYsFa99z6d^pQ|tQH|kv`nE_!9SqTsK_F2*6>iEondQqivGe_IYzxZ!w z8vA2sD3FL{sjmqmDK#E6-@MhtQCD5T=%!d)Vve3Je2h!6^2_V(RjmIVbsE>yS~V!> zm7qN*&NPkp$`*cqsSD=rW}ugkBnTB=j&|%s@~g*dwEf4i;1>$3q#Tf6(6QnWs{@-b z{b@kb+shLVKo`u#&KM5k7{jQPIvHzjetd{rkGw)X^FF3Jy)yG=d$ zs=nxzgM*cneAeYl|h`r}DSa@Hlbeu~8(f?4Q@`2iPUjArU1~N+tihz?PSK7-rPmuZNie zy5>h8VbKQUvSI?r1x^3sg0G|TXPP4{!T?T?kHI2?p>+gq z8@tJwL^*$dE*OPH1JJ)Ezlq%Ycj%!D&UsVxs;uN+cbpcCTr3uF)IXmMpEliVB6Hlo zK0}v={fx^0`_BL)`Xl4#9`m|*Pb0M8K7YT&ewTe?4d?&k1Nbr9`xmDFubqV&YFz{# zBgjK~HTtjx@BbzOSCDd)ACi=a2775<#Ju{~3H;~T{L$?JHE!^P{ zf28nTyst=&hDe$$>hEWJ4|#4n*!p%jcjhs#A%c4gY{5YM(QdVSZM@-3p?`Nd(>Gz} z5Uq%L)LU~f>1WeVUR|APC7BJeI&;7pv=;(#5$D-Zd@6=y+Ke2ym5q@Exxa)cqzL4g zL*Ogo!;8Qfr{zV6^bjss=vi-pR_qH=Er1e0Gd>OkOvfRZkA#jA=kbPE@O+g8*k^h( zXn|x{9p?KW!?Z|Qmake_lD|y!#6eMW^tow~#Ts zI0n!$mKYo0kO}aqLfZNvRw156-{qrnpYJQd+!ea?f{#jVN5bjz-L`*p8LZb;1uMI! z|5E0z{J3YK{rkpnxnuI@{3sF*;yWd<1*)j9@mhImm=L^G>No+BZTY%E_a~Moe4-qnqhidigerI!It7?tT!-~USPTN zU>e9p&7q>k3;in!6M#+*xC~4uK+WLJ@8@>vpHm3`s05rBioew_Lo1R2mn=E-jD$RZ z4gndoOt?hnI5G*5TR%#SvRnsdt@%g-Fmajt;oTEdRvZqE@ErNeh*7*i?nn0ik)F#- zF>#ol!kwg@CiaG`q(k^0Z4C+=A35;jr_Le@TZr}=7z0lfvLhN6FhxeYLVBBDmJy=7 zNYIu~V7w@I zbAb}U0D(BU8k1Fx`j?qP2tA-^b0WDbgH}%Pz8PY#?q& zrU)iTI2ztzk~N&ofH+eSrmG=S7|tq--PlYUer6R$TmtTPgl4JZsNUQ!;J0Ph5WA|a zag%>Qdgip5vTVzTeE;orfdZA{o9Oi(FxmMq2}Q(;*E#eLv&d!*W>NJ{YP|`POMBqo zEs#D6qb0g~mc3kUO*W{B1hgTGfroGlF(!2}B++ufsFmWT2v3>F^XtgGwRMLg(ozuN$Fm!s`Gk@M7O_RN@&E4`-vcR zI2mB=SBD2?iO?6wsmKaWMiAixF9b=s`r`t2lo)JPEa>8M*A89A8(M*$O_-g1Fbr*| zqj8@fB~@Qnw+g+zvyxPT#zGnMzN-^B2#biquzBi{`cd0?Z}-NA5(x{KVWFMK!|(`g z!ep_18vTLKr5JX1=k7c{@||EFzT2r}f4DptRm7Ce!-xNIg@S2NZ_WPALx@7GNUYkQ z)?Wj^yiV!lnR@O_TYOzDtOKWn%Y*HhQ2EpC0t-mR3*;!VICumyZpSn4|1Arz7qI>j zJ28zxi`i|fdziFA4RMuSF`?yFc1a6XrEq^-nN|5!`HPLZtMaPL@~ZE;6(X@cN{D#7 zvSalNPk1!ngwv7;6HtkKiIijy8;Z=l6X%bsOVF=(1afxSgo{I6QQ47v-k;_Z{yF#} z*c>9kLouq>I>{<4Cx*agdZkbnN*pF{7H^iPmZ9D(KV&Hk_FnW){$t{mZldLr36*VFSt#q;)Uj57Gbo4A5mFkDu({97H92YA$pz zs98D(HK1OjMiO}}ihj3W zY}KSg*6#$$mo6Jww$6Vn8~oZ1I_H{W#5B&=yq$ry;PonYr5yjhQgD%#+FU<81adN? zW{(jNoquW^{uNS)QG(A-a55r81W0T$7_vve0*c8ae*FDELyO=L@WaIt#J}9+hi<@+ zt6!u5Q=Pk)(Ra@#Oi_)4jrmYe&sv(Ez+p zfL#OOF9C>_b8bmiU;rou#n$72m1z#AE4s&AT@6)w`(3N&&yFu>s3eZblf zs=HsywJRT2&h9?aNG1?AE!Ph~yu=${U?S<`2H<9UDG!wAR6rg<2^Lxf=mt1$d;qU( z0_duXVBQ;M2Qc2_z%>5`>|NOA#@gB&paNr;US1C>A!AiAUvdJTmWAQx`P5ty7%N`8*B-2uQIWHl*p0p6Sh`K{>TtiwDCO_I;9+4?m zQg|G3lMah~$9QgVw=Vv6*3ILB4KUH5_49!bH{@4WuQ#keC74aR4BSL@@Y|k)XDV@h zkQCBp$iQL%oA+xy7YQH^+k=70e9-j`Y07AX%Zg7MnXU_Caw&MUztsEDf;SNREbFSy z$wNS~I6e-Yu(Adl5rQ8NJhaFr!CVOrWWWJ9(KqYE}12sTaU7;TQC2GDq zRnG^%qt_dzD!hB7$EtNG+VD$x-_m(7OlmESNH6VTtyc+yUY#Vca+RqbS!?nBu|O5L zx27&+QFqbDn3Pe9^p*Q8aJL^vP{xlXW+uJ-V>AfMBZmeg_}DpuqlBm{*I+vYSK=W- z_2k(xs>{k7X&vdOc;6T5kWld!M88eo);a+!KI$l`DSCuzY7ZtDIDC5X@G6u!*1ZP0 z=rR_)R1s!4yJzOBk0Ey{MuMClQ)~&_Uy&i4A3C+Pgp3uSQnaWc?9f2?{MQQch zfFMGe|7|V+D8s)|Q*oRSHZ8#1PH;bukh?__zK5J$ejp4&v-FXU5@YY=nSC_aLNgVw zc%a{e`SNV#%PXT<+XOG*h4Tkq&jfkur17(*$zrHW88dCbm30IH2WQkQWr#992K-57 zg^$rgs&JQX2nPF@J(pv>T4L>3BF`>KjV|iyr5Co*)I2R(D(fZ)eHKa#f(RpUM`Jq< z!0#bj6GA;UNE3TY6Q{+FC~z83;6Nep@5&lEeQ&`>!Beg~%H@+Ufik%G(k`}(f?bw> zhQQLf=k_uFJnFNWFm613T_mB>s+r(pk%7v-Wecf>1ib}cB-iM%vPjFoZMDthYitn6 zv`scg4)iv98$_|OTQEY-GSb{7%SKtAyJeTdLC$BrfcQ+}GZNvC$P9hm)>rx>BDI$2>J33x&fw$8U(Hxb^2zo90u3;858_p3s~Mc)KJ1I1(kaFncKkBz;3NVCDrml<$9BrvYd!z!&CQ5=%yY}s?#GbjTPn}02bh$ zy13=h_O3u|lJr|9G-(DSE&f&<{^#QAz(eG8bQeO-C>xFu73dvycH*R>cQu`{ue?Rj zQITA!nJ2Ht2xRap2hSuVFgkUA)E*ryxn-HZ7sH))8Pzi7i zsR7~2Yz?HgIKYI++*)Shs#6n4>ZpN(Uhtqvtxk>WtQ}CApYMn==Nw~3A|#@g+bRd5 ze$;Q2-L24hx~NDh3QBuu*zYUoe}#A}Y&Q|rdWQMmt?_H<6~~;zcQOqpf#)*5tTjL) ztg6D2j7grtnFL3W+A?OCEn14(;9(CfIQ7Q`*r%drvMI&SnyDkhYC3hOc-H6p%j#%b zx>e+9%JnJNG%0bEcA_2FIBwt5Q&v7%fPW1=pdt~EqT=C#3LEVxVC^?i8RQFX0ZzAf zWtNI5wno>fD>>LXO~=SlA&C{54z~xn*5=;ks$>N+@N3JA;+tbFHwLRl2(d+Re<;nf zY0r*Ee(~4380t-r=Fp^|pfIcXI4;z+uW!*o zSb44k2eGYen&9h1Q9sQk*Zjj%eyxPx!=X(_M4vi^fV@nkcbl>K!!Y=;D zZ>#}_0@;7L;s59STi`X>;h6jjD_>S-J9mf9dw-{*_D1Ti1RqYeN*F^#H`HCb`r#fN z960wYi5`id<@tg8#s_(<|MmKT0PI0?nTh|y|Dh)o;YPiW{r9)vFMkmXd0<@{tSX1DI9@ zcAp5`K+n%+g`j=%Q?s zVboK;%p_*|td+9;0+8{j0$RhbxzO|9-%`4WubP=AdHn=TOc4!zkKhx`AzHf8(0X6o z{Fit0=L)X~;jVML!Y;&&(P!OnXN2pkx%F)v~UT_hwDT)^&0J`M7`ZvRTj=>XvJzrZZOZ{#^?o zvZJ?LcnSdI&Q*la6q%e1uJob==Oe7^@^4Q$iZ290*D09H&>BI;$niO4NF9N@(V@2; zq@#_JOkX*^FNk&+x-z5~bim}dwcH9L;1WbF6*l`neE6{JR)K@m69gS>6GAkg5{i$) zjTJ1_fkzN~zVI`cs3~w-5NfjKL52ambhloEUd;5L0AfP0AWec_Hb~Bsz2F-=2-HJi z59xX`IILd%UNAro@sL{OHTsCR>7f!8ZQZ-lu-jL-rXI@>4k2A0$R4|eXddF%J@;O- zmT-8>_Er)$@(rNbuAuTW=3X=ufz*0K>FQvaCF^9vATu)U9x(d{FdNn@md0=%YEf+< z!bk{+Nt-E>l=IJJO8EDUX6qu7`F0@Obz;F954fT`AHVs|%gvW+aTnQ;0L z_*Od-ISI*G6-fD)zWr~mKxP<14JEK~s{f?Wtm7wm0URySqt%$yD``Zq`S4#6SO8ee)~S?!R5#4&BY;g#9=AA^E3cZc!z=Flo*okB<|Za#s{L4qD`uwp*H$m?JXCW zL2Vk#iE?(I>xqUSasqavBbhh;zB={2YuE1u!t*iN2b$ADWkZDB3Z_3A`n0He>76Wn zY6HU6#p1IuH}LhmJHx+8Hd{ynk<8RVtgRF1^d>K3ughPH!i2}Cx??w_$Nj^Q>Rs16 z0Q?e|W_)3zpc6X+0lyM3`ik9L&~J%jHXGd&F)b%TG6IHI6D)Oeqz{8FS^$01~Vid4y{xC*XyLiMlf`iurQB{KgQohkFY=Ii)N zdkQ2i1=1q;PR)7Dvfeiwd`Fg821&zNe=c%uWmB%qhcE^3+nj}rhSX)pCL74E#Dw&) zH-)Vx+ZJ#8H&ITiwh&J83RSGqe9aIv5#hGzsCyyuX$2VzQ|@SV{3liV znG{h=i(bo8b6FUaZh+$c&wO$p=S0!2^!(Cm^HYdWTYyl*`jvon@;qPUVAnn2+c2xc zcs3gX=*0Cql#|xLtM-i=r9~NH4Jrl68ZjO3%0 zi0kDLXRMUg4(eXp3pA4NvRN~CSqT@S6+2zlRwq?vC)t-?_A7)9tE!T`l6v7s-A|=) znt}5iskgWH!c75LvcGNJZ-oyiH6O+upNq(@u_*Z@NFPHaBn|4YHi{T-f>*^vEyfHv^5PoKqv&y zo~7Y=n(PaR&xPJK=vn|$v{RH-4_IiBRmz%(UDIt zt{M$RaA|jpmj_^YwWFlNzw62Kg;qY0<#{?Jv~NrHLZn2)JI31teNuOAIqG}%cZDlV z|6$@^Tj4VW9L_xpf3*Oq{F^7Aa+3c9VtR0Gxk?}|s}9($)Wq=1^32RtyU%ugv$NRX zdRxh79q!F^(N8-{j7^sJsY^MxwsIXUm#7**Vt7eaq?c#q3Cg9cn(%La zeSfr}p+TU$spjZ$9@V-8hBu}!Pw;SAhGW#wM=92n6L@l&sDDx>iCJZda&kc~#|T}G z@s{F(3{|-6#rdyq2O&&i-^Z*$C8p5z6X&Q6p%*-HG+DPj;lp1!h`){Uu+nR)Ef*>6 zW~~FHe(_QML{ykC3-zJPif*tAfAMaJUTYL}g|bj88|u0B#|e>Y)mT9Rfhl4Eg7aK4 zB-US!wp0gK=W(2i{hn7Hs;M7U&2z4mS;tYe*Df^FnD2Pi$?n4sho{SS$UN-l#>T(w z?$&R~UEYjouRV2Ubo_s{_nzT!Mr+@95?zEDgb{s4jXFf{j1nP;M2S9H5ItHLq7OzV zCJ50YMfBc#i<;=Y4pBmg-k!@o?!E8(e)sPW5a2)OFTXY0ZVRbe`g!Xw@ImA85@-4Utxc%uZj4`HQtGJCkbR{mp zBE`g$TY@DF9nnp2Q=m(c`k{jIyJJn0Lc;?u_6^lm@lN67qd+@74T1zg%j6fB&i#464al5o_ivkf80)&6p+ zw|)cfJw;2$JrIs@t7c#6hQ;!RL|8KHnbe<-7BxPpu!M2=X=RX+@F+{Jiy;+$JO+~z zG5fhlbY}C_{jPP0Ao~pCh{Hou_VCH<5RzBfvM|Jf^V8kbYbum38rcmwp=-c>ef%ek z#yuN06x$y3YCvB58>-1=E+V8_gA<;_@9Jgs3sif%c4qmbADZ5(tplU#FZ}ubXSM&) z2)6>cx2h2C(zoc~aHg*!G7`z=QXg4JazYYyATyVIl*)T^QePH&H9O)-5n%zkal~qb zgqIPV855HNJ}|Z+t8!JH*mUYWIWAX^d#c$YWf%I9!NER)aU4z)=q2x7 z;POjj^jpB`)cx&9&W8$vsA6KPKR)OkR%M=L@EFlq4e$c20~dR_9(zyK0(8U8X`Oya z#q}$C8A8P5ZC-Pr^fb~z8!Y4IjSpX}Cd|es)R~!CR73mSD?>-XQHpMA$kZyg0=v}J z?-BCQIAXS2|9oj?Bi68P()@wd)P6`w#dB|kn_yZeD&VXtfCmgB`@Lzh^ICtSBjD;N zKy3c=PR6Yc7?A;znXF@Sl2;Sq=WFdUEApAiicylJYq=ZDOVQ; zpRNK&F$-7)Eps;QOEtOY9m2p2kKR2)ycKU89;g5h!WjJ8q8YZAy2GXw3*C~x8vm+d zK3^arxRN_>lS`*_75b`)LZy;c6>$Dr*NlZVCml{tJuj7*dyGUXFW1YEdg||ezuWTe zKiDwB+>ZEV?BVo}=F|^MY#banTs7`a=a|>MUqbEpn)MvTvH#oiDFe3&0=I|#r@Ji^ z+uI{mI0<}}<=1TgzoP>%69d>SyQXj8W(hMbB=T`H4N988S7&9f;eQXKf4tL+lAm(s z={yUt2KAM`!hcenLhkDSzed}Cedr-b?aYx9qN<+&rpn2BJ{?T|uz2<HChbKUXW zQR8@Zd^W$+Hy5Q26|VV<-(K`$F*C=VVi{j0=7E>q{krYSY2zKugJSxp{>N?1PS4&O z>CAjtYEmB;KDh0~;ws!*fYgZoW@O+wVG+(3YvR_!-fx{^qUXeE7hCn!I^g8HnP^q* z=(mp>8@UI5hh>?Lh3@Y+snci3mB_s&ty8`=g7;>AALZVev`UU24Y(K&a6Fu_jMb4b zdu1B)#gBl(aQ|{y?lPxlmCsq?XnbbKQq#?`^k84V>GWAmiEXct!-ZR@>p9JQ-PCB| z*v#LLVzYZEMg9k0tz`^~DxB3BN(=wleCEl-FWJr47r^zjvdeUXFHDbW$367C+QF*SFEda2Y)$Q?H)xqI zcf-YY0Bf-ojezfcb4Gpj8T6g|xdmKbYm`y9o*k8HG=DnQ4-A)aoF(&_!G2oPN!n^v z(^*}U!*9>3IuR|uC91Tl`c=L=x0WXd{XO?TYoWdvE7SqP{DbQ;?4CnE`$?LjE2Zgt zwZCR9!>I7#!JWaYPUmx#lMDCEGh=r^e-@)Pc2RJjo}R1p*-OkcwtCPzw6h%p_jGno zo2G92er$4eI__+~s~>QnZzS`&lg>8Dv$j-pN^-Q?G3hmk;8gQcpS4L4)vKHF1UH2( z?XG9g-KihEcDhcNf3>d4PZH%$5^GFl{NjvYPjs*ENdo{{nYXF0u#gGSH$==l3zR1 zX18pN#R`RC@^3#Ihu(wdx+I68 zw5Ah&m;0H(VYk1l!xj(sGq37vfa=NC(qf?9C{YZ+q)Vofpg_xVG9HRgPwx1T3~`drf~QaC(wjuUhCzt}XR_4Azb zS;GOQX6i$3u{giuQRI8qM+z8fY0MYvs&@=6>Y+T|=fK>r2KAR~v z48H=#M?T_!HyFEa)D(mjKUqmkQ?<-}%zdXsj zswsGv3B-c$M8Dlq>K=4DY5eVbXPYr8eL5VQF)4UPSUNFx)l4K?TmxLk`~B*yNaX4| z+|TRjZ5!{->NoBs_unL97^>fPbml?*h7yU@D&hYcyy>2pHj@i}Xpo{TSV42KYIbS8 zUtlZaAaP49XH2=raCCHYTxhIR`Hei~aQyl`L(0GddGq^cjxtk?eEz}_5qG1fo(AMGt4BU>7v=bA=$>;>^d*M5#nF>k3BN#K@ooQ`)&5F~H)KZ;q#M)sI{|hNxl2 zE}rxEs%s;ZLprG_3maM7@J^hSM%jA>~y}IhnWwHMn3jFkOS%|TIAiq zqaMJ#`-X_Rh^&Ys_5PI~oIWsYXtdD@Oo1_S)* z(lRf$Y?a}teg{)s;wbUd?2B&v+$eNhSxUhFQM`II-SKN{*KD( zCae4W*<4k3S<^l`Leb(zq?(SoLd5Gesd>Yg59nP%rh1o7c@&PIRn^35b85WNGyahd zvl=X31kHUx+oMS6Qy-mtvj0WD;Y!LN**fqe<%_vIGEs}e2btb*|VhE-}?F-?~M<90&@VISc&Kl;=8iZ2*=JW4X zg~4ypF?rSge4jerba_A!MGJMddr`zPbNW5ybC$eeS2X7?cA`;xbs4GFFrOYAiq5VIJA842QY7@ zRs&gVih44+lZpyRJCp6O6@_^ULJ+=!_-2QtDIPIa2ui_M0PtS20aPRBa*2Ti*z382 zLa)1cVAmGV;^GjI>Rk{VBNIB@gWkO&!!&wLNB@Fya3xP|8(qiCN>aJZaO@C&FU4vS zYyDk0pbx^$Eudiz`P$1J~!{-i%qc-}bS6ib&R;7s8@0${KXE!veS%iQL_{X_hNl{7Repv~Y_7mLg1EiK0!!Yd3tf@$O68 zcQk6>~Z)1U?+6{r4;fD-Kz|f#GA>z{s=WV?hIIye*E5@%d+ zvzyetfTw6Eva)&mR2Z#H_-?&rA}Vgnibw6c?2RBSi~DvuzLn(Vof<8sp3(*g$>adN zP?3A!%Nbyj%i|LaNhOxvBnhS>u`ns45rTkip%4CoN%k9$8j3)ye+kYajm1q?7DmXy z?j(~rjM?wvgb&HKMPttxpg8|JZ2p+NYVA7X7{O~D%xXRMOOtFbJeDda)^An5xXWAR z6{Csrtb#v`>8yJaZe_R9{rMrO@6FabCDDGIutSOYvZA5TpidQ*tSU-HBr*yO=@3+| z$2w;^^bkx=bH+FMJ%?fXfU-7AO043dGE1uN=DiePWk+aX-(nhqMfV4-rL1L^v{5|* zSCw!pXpHzkxOj>2GsZmWpd1jVB%3r!#XzA|ViIMZ7*Ymc-DKp(IU!CrwV_P5yE1k{ z$&j@$OqX~r1SR2e7u6-WDIej=hJbi3e2S*fX1%-Rz>TAsMP2}g+AS( z=FTuwvEJqbJPV{d-dTZ>%qWC1FZQOE#nU+;D?4TAmAd@4Vg3k<3WUG6z!FM!-_(k* z!j^F}kiO3W2~Ds)B^RJL5x@BRv+9)zHEHZyukxIoBT>_s`*BjFzSQj@@GlLa{eXJzZo4jVy!c{X;Td&?bB}x|jwi{1jbJs(Hp2CJ zBA)aqhF<*;1kaM~g)S4vxA1g`N1rOj-}%v|11|mW4JX%Duh-7~3umj}9#WDnA`m@Z zDu_J(d(c+>7fhwbW7#KI!i2UeE@YLdgL1_AstpQW0)B-^`6^ljbDCfl`9tz-t1QYj za-pK|T^m|9vdI;jTxHvLde`x1>~60^nM8B2X%Y9B0%1G0!d-cK$@A=;AgBlH;rZ$B zDwa4$mk}q5oMoaT;BMxkm`oq90d*a(6Jd-yhNTguFcY%HDM7ZbbTSKc0(WVFiMlU2 ze;X?_l1jn;eI$Jz=ts6xToH;K9G~qGv7F(%U7Ct?`dN=9B#*a5GI6Rf zpG5L1GL8C@p$3k-{`5DBxR4o6DQh&}BYCz1KJ?o|mk-J1h8_$_TF#aYvZ}yRTisE) zBAj%y1H(U9hPEv`*&`yd?y?1#aop0KcK-fy^HAICT4(9_OyFyZgo>K6HdNS7aD=?K zLEkS^q_J%o0mAy;AJ1ttbr>H^Y>)m}j6PixqZ-kov-WLQiXcMl6Y4hJYTKxnWzr^^ zZ6P|Qb;7(jR1976(A7#>yS#W`w7W2eA)Zl=x)cb^-u=DsmbU)=mhLJ$RUk;e{6SsF z)qP8)YzEXFeHy8~eD4Ci7V6u}!?H)vSZ@S<$S^LbqLw9jE~7Y4H@C6hNSrF@sd$oD zoM^Gq#H!lZ^EG_pgB1cfXxLQs2Wh3_VxQgCq+^URF}c--J_n2}B!7$@9U=ZWXb3qX zv_4%Wi?;ayf^tHlwhMk|nZs?Sn^<`mnt;)zn(dw2-3dV|#@w>XPN&5Q2Zi;GwujVo z0!IY4hxn{ZsM{o^QrpF9>aVExJyLaf8wxHZ?JPTmBQ(~Daw5TMo;|(=D3f*s#usws zahVKn$A`&ZsNEurk!I`UqP$Dao+)b^wm4nKsVy1oUH%$vOL+_y+Z8da z+L&6GPIq{L7Q%RZG~GO-yg?D4XVM;05hXqHn)U*3_>RCZcyHYR_A7k(@w{L_0(RoTqxG<@^^wEru&otB`={4dg!wNkng>z|1HQKVh=K^o zazebU0LxN5=Xxm092%%;w@V+~7ayp0%(0S8)QM|*la)Sh>vF*;Jm~V#3L&$hjE@Gb z_j(MAV4x)R0@9+S$e?V_*KIbo?yG-RlowmV2q;5``9ns}PCtZj62Mz5=Z>5-DZRaD z;DL|@L*i1{l*A#IDi`X&mBB-sgD%t67*=oWD)ORR$$Oc>OM!o+ha;Y}`we=--0zF( zM9~xGDzuwIt0BUW5v%{vF6}$Hz-OfAVEn(r`aM z9v+5e@rC+eOhPbG8mv?%V5)=j->E6zThY9Qq1a*@q3jS!9?U%<_PuUnJLXjb9=L@` zU>3|FTL|( zYxGJzy$jcLV?KF-1T39s5=TcU@X^G8M=9}$K|%4I3;%MA0P8<<0n)=e>lDFsbp{@b z{jPJ`2E3uMw)zvu6|6j)_9fk-hsx`V?4(`A@wE%fPs=aG+JoCuB3-JbgO zB1CuvN*MA+N{&~NO%31lt>I2(hdm7(Y*EX}tU@|0Hsi;ctl z5o+H2h0ek>WcDFWO;l`JeS#4lUGAMY+E<4icjsKJAgxoAHUY0XZ-?z~+gii^2U zp1sVG9s$^AsL!H@O`q;Z?nkUm4)Il<^tI@S>U&yNZ}!L4c!x!jknQB`CYLu!*-oq$ z5`oahbvu&36u6FNf|bvFd;SdYZuBqb5)VWpkQhc(Akie}vK7}}>tF7=F^=U8wY$o? z4{pLxdVAlqu4ia{6|Bf0%-#@*a=5BVpLGajc67o^$05B<4uaSA$e>|Do}MLdv7U06 zu;8H=+al1zTc_4CDcEWhkE+pIm@5*+V6AL4|M3{(3UUoC7tWvFcP9=3+9WR8M0MA@ z4BT=!>2m~R9$60QkcCL*%riOmSG}F4x34J?gXJGkeV$U);Qh`@*@NA*%6S#S!g0y~ zJ%Epj^RsIyGlV|S8&(CAGEna$zr?U`fSC8i;iqHb4rLyg`bpa)7ye0AWOTZ+MxWB# zv37i)h4W9&4|2TX83UlHL$#3$Sui>Z$#4{xQ|u<}8>+27i>Kp`K>P~{7)O|1+&StU zv4&$4U)i^5rP+rX1uv)p-L|))|Hr%DZbg|#?+!590b$PLGKZLZ^ig*@OGqQN&T5Bb zv5;bnt}<3?hi``*8I=D?sk0EWLW+;*QA^s zJ@SkfILBd8y7)a0nAVCT+Unzh7&n+q7!jCr4~QX#o$eS5@3x;4!c%bqI*^Z@ z+=a-ydf#d9xE8+5P9HS=g5Vs>m4*4lYX!!8~FJfsYvP zC#BXag;Y12&Nf=7_rE_SMsWGLD&2{-VA~oIP!YEL%!5R}Fy+4u+qUP~-u6edwwxOK zV-mXwRNJ7x3Pj=)ismf=jF>^A`W_P0id&o+fGgPa8x31@8=SCHF9&M~^ZTpLb(A?y z(%1R3)`5y~7AwQQo_}5LelH4VE7OR2Q;{qUsX8pVO_<_g_x7j!qabXtUU?DbpiZPi zHa4VEKamyu1Xp=6>{@9+ixbIKCJ=H17vO?qNLrvzS{wOW!M}p)i}eK!e43T*(Kqa= zs6-^zFRaB8>s-Y4r+7qxjnkRRj;Z;VERl79JwE&Hnx-Qq5O*+EUn(~hh3j}Q_N5#C zkEuVl*xzNnz29PtqLek2*Uj}HzHC1(PXrD=wOQ!7xmxGSSaSK}PB+2Q`#FoI5+?fm z7e>r>j^C)c738P_6~vUFuE2S?@a@;h75(AOK|FqD?|5U@&4-FN_ooY{#m0m%WPF5qcN*T?z6lEYu$$(x<@w9k zi_h_Skymt%rHl*B!=Jy)xNdav#|E77mW%4zN9UE;o1w&UN9$EPf|nrrfy=QDEPBG_ zG6_DlgYb^?QKxFJXp_1az^#}JV%}tV zVnydLSx^ZFA+&nv6Rlt42Z1)f7%mxQY#D<6<{~VW%bwHVXJ194$=v$)v#BnO*b0r? zYu=cDjXf4u;l7WVA-$rFVYcE?eAdW?_>8=>B9Csb4J5cldr}F^eJV7qsB@kzex}`C zo1O|p@3^D!2R1-p^aCf_1N1AX>6k- zdWqUvt*V2?W|9~XKm3>EV5;;bEbz^j0SU@u{ zpzsf#Izo&FlOB^D-=iR>3PGfqGqwf*2geQH(S00ss8drS?p+vLt}?et?^e%+yOsY(wfZVCev7Ba_#@N31h>!>vd!NK{^!fg^VLZEPwfpqlI9MR)0K8&PE6cHjxwFUzneF? zeF!kqD%YYD>W=Dm6I|3tS9P+-baGx9S-SFuM>IWbTPODQ$igNH<C?%#P2XO{~lz_T8(}w+dB2ri7iAL&n+6+FPq4rynjdSq_-lkFLjy z;cLZCUBm@Jm{Pr(m_Gwvjr+!Gh1rhoBA=Em+R_}WuM_h^>XKv9a>Gc<15qKEe-r~tk7`O z5SlRgCGy=}E+kRv`#g}wL5*kK+j`6@cMZ0PzHV=}2}O|L5Br~Oj~l=KmFKRSP6np3 z>;e|C3V$YSm<*z%f8~A(yT*C_w2ix=I)pRy{ltPqoRtbz!O)A!N}892RoB|0w-)Qf4xp>00qKuTHA|5^l_AMd*o9}z%ZtoV4)0%F zJklOb#~lLKtfb5b_-YgBPJkv9rClSUjyC__HEW_kdvdCKUu*(c7#DkW9Gey{y~5g0 zB)c29G)pm<`6*^i?&_pty8r7X##TDVXUme===aP=F8IXN#r#zRf{WO~e>lo?WDCgd zcn{kv%e*M?zGLC?e$zPL2QU}Y4XU~MaVOIxJPPSzi6t~l-N;AI2_QtYmdrgr`Ozfv z-YYO>Lrf5(=R{Wd09sRRz6~G6!2TT{Yd;6-o>D6>b`O#Yt{Ff-KFU_Y&=_? z-vRig2!O@w9+}MnL_WC*rUOyZLT%`N7xrNG2dFA7FF0;WNKg}5c&6WUkTBCj^BGke~_E=1K#LvC6ky6om zZ(VITrSWfGP|AtY>5}DsfiPxvIYz4R?+H$<$>)TybR|xSoVyfW#OZgvY&avUdElH}67ob-g%3~A zVQtQL$7E$KJBt7QSu$!3$Qa`(b-E*FyG6fUx>cz;JYNB#Qd*fWMMwBV3~;;jN&@LF z=KlB}i|27yz!o~#wZFNb4!SVAIxy>SL4uxmLvCF&xX3*XIOBb#c6`fb!Xnwu&uerK zF;o^;m{%R{*Z3k5{y~O17v@BgVq*oos4zw=StU*V}f@ zXg20;=y<668rkl;k~C}w!Q6;pHq~Fw7JLN>zciEj8`{z>s3bajt!vLCSLk@+@11_h z^k9bQp7zOGVTEvja4t>t58@AIw?cSMqyS!j=|&mUAN-A$OsHl z@zhA>+?ssC;DatU$M&4JoIm~TCxHm=^;AjD|B3N>zGxFn*>#mrE{m18XQfmtrhgTDud@Yc-Esy-Ei^{9=Q9opY(;2Iy)Ax~d34vB zKc?fcnmB5@x={SlUN3eOe`6)cHHPi@d`-^m!?2k9`>i-1_dGtW#x<#Hi2MEM;BFwH za|qg1zntPXuG*u^J3jfV>A{!09Wq(>?$>1WZo%CVB2GuMUIGpT#s$f)yf4+WN9bS)5-04xfl$E(Pb~`uTgGxv4EtXg)(l447@2uOkR7I~ZFW@vk z;J%RilwJPa{1ycw#;0RGd%8PPE0fYCnN_hqV~%B<@ve>!nz|c(Mw0{bV;P#JXMc}9 z3OkDLP|?iIkkKe_WBlzBE~F2xFM~d{0i)9eMNVkj{rKpV*u0p1zA%q{5FV5+!w{hQ zO|6=$@+%?+ez6NVXk5n;=ye=!|kq}f607JW!c0hwIkrlP2}RjbiJRC}GeYks*fl52y^CQP_hxg9?^hyR+hM+GXf zk_yPKrkCb5HhL1lTPCcuxuj#0RCX#KL6FqUOwW{`2CChTP@=0Ln?q|`7(|>ejOIP9 ze3XWLBf$P}m@uA0y3S;nK1uE(cc}b3s1XIo`~|UY$Fi%*tkiQp@xoO#{f?3P;-@S# zVo-`WeNuvyDn_OlW3D;$AV(`k zF#s_dcK@s-|`xK?~M zada8oNTXu)BC}JM@!_burq!gZPg1ZH)GxqKNZZ0)`-v@!6Ls8SXqct*+;w2QpmEEK zGS;OP3S$_NP%pUSB03JTK5&+9Bqo@5CnJG_!x}}Q&*LaD)ZTPPLj7uAR(oof>D5Ts zVuD8Agdaq2wK3kzkH%C~hU=Ec65nnor{r%8-?Du0D;&+Z`Ceq`SO~Z=a?ctKEcPoJ zYH%V;_s5t+XedJ#6RlBT!AoKihx&sgh8T8^jb%zDs|Aq6@98lKwj7UC2H0 z)pcS=?`uft%uiU~SI^JWHvI2Yp}kw*iPiUqC5QM?zHz9cScBiNsBfWA`M+>zg*fOh zAT9`w+k(-5OHu{e3@(LEcT!+{cMw8Qn_HS1@8@N}DF$iqs40xVAA?1{uZo+(gnR zCh8g?^TNQ92(kzxV#_9+NRgpp4L7&W%F(AgeYM+;$e=YbVoEC_=Zyk?oh=9>b-pKE zYl?y#4>DU*jv2R&-Q{FUDBA^WY}Q4bBYrtV7bgU0`0PMZ)Yf z|4L|tXiqE(3;Ai&$qLgUDP=8=kyS3$%e_r0&#I+Hs>7uAnT5l<^YnBc;2oY`J(R)E zZgorv9y-qJ2Gx^J9yyCh2tF7;!yypd+FPr;EZ-^o7VxBE!$abq(i=#>A!9g@-m;+J z!AC%jrdADtWz)={9Ni}c4BVY+C=(r}vAa5i6|}T;E-7_0c?<#yo-7=Y``NT?zmzyg z^TwG&$r5edt2sCdGOg+}d=(n^Zoteib+AY9@jAt#czoMTlxM_8`Im9-JHl8HRX2l` zI(5d&O|*y;7zy385+vQ`CgY#CUAHzg!$$}iZgxv9*?nto=M{26GpK5C5pScdSU7P= zsfaHy|3fyR=TtvM5`dV^H0+CmoG2|tSbbRwsGnBVVDYz&U-aJuOvtFa@3j_f1jymB z5os84J6u)5CVoaOTXt{cdGj!GN8a1OS)5@VITqvNHdavdYHgeGM$INI_%xe-&avZrU6 zQBl>mC|3FS=j@gWQU_zri6sRXL*4q#m+uxvp~<=s5T>kGqfJK@Qs{{1JwG{nCk&9S z`_e-R&;F#geMIdO6Tq@1HYzJ3NG##|I5bMnN6`*%^Q^Hb$n3uuJJVm!*QfQJIwK(tIf=|JP67yo5(gITo?O;5U zThhu&N@wbN?IGwu$y(x)a6h4d@|1j$Jr0Bs0^%J5Z;wM?mQRyv%?%W;vp3lpX>N7z zvyd4lwO=O@DQe)`QMTik^6pjk0YsK)EJ?EDK1_23@77(5pN-LZJjh!Qmp&0Gk_>aS z_C1HRhjd51zJpjXP^Dq#K$siL3#d@S&TK18Dk7pwJ<*->N+N-;)V zaU=(S2KbRd76K`89v!t-v%hPSX zu?u{;;v)|we7JmE&;QhcF3>T=3BmcLsH9+`w^=&Agmg0Xy438s%>|wUiWB^`$SU;yj(-tLEm z?g=1+kp0UL!uvVJMOS4pZm)VMm1g3}z#K9CT(}!gpfOMgk$B{-4+dufJM#sI?7;0I zV-BkB5Vao=)jY`1HoXTFnfx5qaMJy`mr!U)gm$LMuPZirL; z7^-bhYY%x1y5IO&5H!8H8d+I>t`REF7C=rpd``oMyZVNTX+KCl)QK^)`fy>s_TK9^ zd)Fr7%b$KxIM{*b$yj{9>}-}(nhd>R3+mSWf2;1sEE&93^{`}pw zUSdJoLf-MtEruAB@%W)W#2$mkn%v5;nL{|-!Ez75QZB;~1J!;3WZVebFWbiHN{1Ng z*3*5%1^_%Kr0pXw#;{a_$t8?QDGJ^@r1V^HBK~%LwW3Oe1ZA7f5Vy0a_XU!;${7dx zqFI7W_l{X=HNwNIf%$pq)p09H|J+At2!^HO<*y4)aXl=ytnR9CNDz{2ZQj)2&MDA* zr~y%$+ms}$rx|6*wOOPmWQIm{sRSTq@Zl}=ni2`BE!b8)IY=Uz-C`>liw?hqd^{gM zMz|uI2l8FoDT%K=E)B+gMtHU94GO=qxjw}{&dCsvJ>wp}J6vRh-rZJFJv2n?H%VfCh8dab?8;;GzZ60 zfuvAUNm#B3VL}6x;zBO?$McmPwEQrOnr;}6&lv4~jH^%>7X1P)v}k}1DGRLmBN`BI zZ8%1IQ^<-LgM3WK>DIjOyp0XV78CVD@xr_Rup*(^QXtaCpLe<AIIb7rM{xN`N*R zHF0W3K}|s2Q?fiO>y|ETK||-Hc^!cIUB2~boZd(%2G9ap-uN~=@Z~y8>znSY6l{)b z*}d62zuv1#jCsxBfXD;?$Bv+r$FloZU^QUxMS@_cxo$J}Hd!rK{S8qmbsh>_A+Sy7 z*Kh4fIo!Oxu) z-KCzxZ%}{w4LpJo@$bpQdD0XWHBnf!=NJmf(59#cq;Eu51uVa_saFZ=$hsU~mScNF z=1AznkhklExJ3LYKP3#Sen-gKz8t%YP0q}9e!L!4yFlNOUQt+{;|}DD5kOw`6YZ#G z*M7RK&_zu9r+H#r%L-S3jFHS|+^6NX-707A{^~tm!m)C%=Do583m)hjX=}KJn%>l2 z2)=6p_Zao^05-`sPv-YV>E&rO84DTc`RP4EJCttp<>^ORmb=JC#DmaNdpau($+xUQ z9}l(Dn#PECjCjD7G3f?JaUC(w?kErS;mZaX+`HvynX)*y_F!GzUjhhU&@NyuamL%4 zHpimKLu$C)`|L@TCO;9F9>=-&vv%>5-q~@UB(QEfo8m=I`l77hyz$Mr+ms*)7B_nU zg?3vCN6BL>O+-%gZ>#vu7se7mNzb}}s?|C$mU$Y^M`y~iw8hgXyo#*eNQ}=TanMT# zwkS1Rn;Coi^0kdg>p8r3Q*ZgGCZ*+Qsfy6}jE$^a;Iq=U7v8CnQ;Y*sEn4SQ3yV$@ z!U$4JgZ;Ee^1ju_CYY!wXzbGLQVNs#n1?yhn}0YhT*n+9Sd~rnM>V~$AU-B1C@|r& zY_*3aSPnZE95fgnhp~o!7`iMJUhj-7QU3G99MUB?RYSPp83_f2sUL2@qiwki>d!l= zK971(=M@$eQ79c_9QUYvyavmQ$%*R zNexyhKmIhGYJKNk*;~nM8ySpe>TTlsY7fGX#6LcLH(*UHXIzwUhG(9W%z#s%iE%;k zGahr2`zNc=Ar6kPbV5gDcI_JQC+|t0fcD}5eiSsGma$QzU3(~^aZw=^(mUGpYiE1sjx&uSYSAOkVdpy z-3H7jY-6PAAgXNIQb6Kw_9NDARems{V-fUA#i#gYZH4dk4-C^8&%C$ zimY4<1?W8UBI5OPjeqX3D~^W7SuKc4x=d~Xg_z(6U-O%`)c@c4&3xg5zORmLACI4t z9)5)2wygeHfPd}vdr3r`dr>*1(1(t=ySObW;f1Ob;(zpS|90IYorvab)j|W$JKk?c zSpe2#@4|odf*H_Uqo=v9Tj*ar>c1bZfj=O*S%3r7EBgUJOOKvx-Y$N2P5rfjleCU; z-_0)F+yNX>upadvi4|p_4_JKtLvZT!++k(EML47A&exOkAYwLn35&~qqbIQAOaxH7 z4|*B@`lMT${@uIo(*LnX^&juv#=fy+Xu3LUn!iRD{lHe4+0_8SCT$SlKSG0CR^nCP zx~tQPlqe4E>;8v2U=Z@yhwUyCg=zU+CYePkB>< zJw|fl6An;!?FYn{F>LH(57`p12Am5hy@807hAr#?y{j z1AM)Mod0eY#TU@x{Q;?zP5GlKhobA<1cTFJqRrX>e!oe`n)Wa2`QIk>QV$fAC-L((VE>is)vyZ4=dh`aEUe9bnrK6}>sAl;l6y z0q~e+8)d*_^-Jze?)-=EzaI2>*ZoTf33;jbZ|(PwViX%*cVAhI-=WmMchq&ECT?6C i_y22#|0~UKg-4Ee>p [!NOTE] +> Support for the ESP32-C5 is currently in BETA (`--preview` in ESP-IDF master branch) -### Co-processor connections +ESP32-P4 Function EV Board GPIO setup to use with a ESP32-C5 Test Board: + +| Signal | ESP32-P4 | +|-----------|----------| +| CLK | 33 | +| Reset Out | 53 | +| CMD | 4+[ext-pull-up](#34-pull-up-resistors) | +| DAT0 | 20+[ext-pull-up](#34-pull-up-resistors) | +| DAT1 | 23+[ext-pull-up](#34-pull-up-resistors) | +| DAT2 | 21+[ext-pull-up](#34-pull-up-resistors) | +| DAT3 | 22+[ext-pull-up](#34-pull-up-resistors) | + +Current iPerf numbers, connected to a 5G Network and running iPerf (TCP and UDP tests). -| Signal | ESP32 | ESP32-C6 | -|-------------|-------|----------| -| CLK | 14 | 19 | -| CMD | 15 | 18 | -| DAT0 | 2 | 20 | -| DAT1 | 4 | 21 | -| DAT2 | 12 | 22 | -| DAT3 | 13 | 23 | -| Reset In | EN | EN/RST | +| | Direction | Throughput (MBits/s) | +|-----|-----------|----------------------| +| UDP | PC to P4 | 60 | +| | P4 to PC | 51 | +| TCP | PC to P4 | 38 | +| | P4 to PC | 22 | +- PC to P4 + - PC -> Router -> ESP Co-processor --> SDIO --> ESP32-P4 +- P4 to PC + - ESP32-P4 --> SDIO --> ESP Co-processor -> Router ->PC + +Testing using a shield box. For open air: similar setup, just with no shield box. + +iPerf testing setup - Shield box way + +### Co-processor connections + +| Signal | ESP32 | ESP32-C6 | ESP32-C5 | +|-------------|-------|----------|----------| +| CLK | 14 | 19 | 9 | +| CMD | 15 | 18 | 10 | +| DAT0 | 2 | 20 | 8 | +| DAT1 | 4 | 21 | 7 | +| DAT2 | 12 | 22 | 14 | +| DAT3 | 13 | 23 | 13 | +| Reset In | EN | EN/RST | RST | > [!NOTE] > > A. Try to use IO_MUX pins from the datasheet for optimal performance on both sides. \ > B. These GPIO assignments are based on default Kconfig configurations. You can modify these in the menuconfig for both host and co-processor if needed. \ > C. Once ported, any other host with standard SDIO can be used. \ -> D. ESP32, ESP32-S3, and ESP32-P4 can be used as hosts; ESP32 and ESP32-C6 can be used as co-processors in SDIO mode. \ +> D. ESP32, ESP32-S3, and ESP32-P4 can be used as hosts; ESP32, ESP32-C6 and ESP32-C5 can be used as co-processors in SDIO mode. \ > E. External pull-ups are mandatory ## 5 Set-Up ESP-IDF @@ -189,8 +220,8 @@ Please follow the [ESP-IDF Get Started Guide](https://docs.espressif.com/project ## 6. Flashing the Co-processor -| Supported Co-processor Targets | ESP32 | ESP32-C6 | -| ------------------------------ | ----- | -------- | +| Supported Co-processor Targets | ESP32 | ESP32-C6 | ESP32-C5 | +| ------------------------------ | ----- | -------- | -------- | There are four steps to flash the ESP-Hosted co-processor firmware: @@ -540,4 +571,3 @@ After flashing both the co-processor and host devices, follow these steps to con - [ESP32 Hardware Design Guidelines](https://www.espressif.com/en/products/hardware/esp32/resources) - [SDIO Protocol Basics](https://en.wikipedia.org/wiki/Serial_Peripheral_Interface) - [ESP SDIO Slave Communication](https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/protocols/esp_sdio_slave_protocol.html) - diff --git a/idf_component.yml b/idf_component.yml index a069e605..b2729a31 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.0.2" +version: "2.0.3" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/Kconfig.projbuild b/slave/main/Kconfig.projbuild index 8ff4dd8c..f1e96a6b 100644 --- a/slave/main/Kconfig.projbuild +++ b/slave/main/Kconfig.projbuild @@ -280,12 +280,13 @@ menu "Example Configuration" bool "High Speed (40 MHz)" endchoice - + # from /components/soc//include/soc/sdio_slave_pins.h menu "Hosted SDIO GPIOs" config ESP_SDIO_PIN_CMD int "CMD GPIO number" range 15 15 if IDF_TARGET_ESP32 range 18 18 if IDF_TARGET_ESP32C6 + range 10 10 if IDF_TARGET_ESP32C5 help "Value cannot be configured. Displayed for reference." @@ -293,6 +294,7 @@ menu "Example Configuration" int "CLK GPIO number" range 14 14 if IDF_TARGET_ESP32 range 19 19 if IDF_TARGET_ESP32C6 + range 9 9 if IDF_TARGET_ESP32C5 help "Value cannot be configured. Displayed for reference." @@ -300,6 +302,7 @@ menu "Example Configuration" int "D0 GPIO number" range 2 2 if IDF_TARGET_ESP32 range 20 20 if IDF_TARGET_ESP32C6 + range 8 8 if IDF_TARGET_ESP32C5 help "Value cannot be configured. Displayed for reference." @@ -307,6 +310,7 @@ menu "Example Configuration" int "D1 GPIO number" range 4 4 if IDF_TARGET_ESP32 range 21 21 if IDF_TARGET_ESP32C6 + range 7 7 if IDF_TARGET_ESP32C5 help "Value cannot be configured. Displayed for reference." @@ -314,6 +318,7 @@ menu "Example Configuration" int "D2 GPIO number" range 12 12 if IDF_TARGET_ESP32 range 22 22 if IDF_TARGET_ESP32C6 + range 14 14 if IDF_TARGET_ESP32C5 help "Value cannot be configured. Displayed for reference." @@ -321,6 +326,7 @@ menu "Example Configuration" int "D3 GPIO number" range 13 13 if IDF_TARGET_ESP32 range 23 23 if IDF_TARGET_ESP32C6 + range 13 13 if IDF_TARGET_ESP32C5 help "Value cannot be configured. Displayed for reference." endmenu From cecacefe579e45969fe33087bc1ac03b56e39b59 Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Thu, 15 May 2025 15:31:06 +0800 Subject: [PATCH 022/114] bugfix(bt_transport_ll_deinit): Add bt_transport_ll_deinit - prevent linker error when calling `nimble_port_deinit()` - bt_transport_ll_deinit() called via `nimble_port_deinit()` --- host/drivers/bt/vhci_drv.c | 5 +++++ idf_component.yml | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/host/drivers/bt/vhci_drv.c b/host/drivers/bt/vhci_drv.c index 97e9a999..2a52cd9a 100644 --- a/host/drivers/bt/vhci_drv.c +++ b/host/drivers/bt/vhci_drv.c @@ -135,6 +135,11 @@ void ble_transport_ll_init(void) { ESP_ERROR_CHECK(transport_drv_reconfigure()); } + +void ble_transport_ll_deinit(void) +{ + // transport may still be in used for other data (serial, Wi-Fi, ...) +} #endif int ble_transport_to_ll_acl_impl(struct os_mbuf *om) diff --git a/idf_component.yml b/idf_component.yml index b2729a31..09761db5 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.0.3" +version: "2.0.4" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: From 6acaf65b29aeb510cc807cbed4b9f8630935b920 Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Wed, 4 Jun 2025 14:29:57 +0800 Subject: [PATCH 023/114] fix: Kconfig GPIO pins in use for C5 and C6 to auto change minor GPIO sequnce log changes to match to doc --- Kconfig | 172 +++++++++++++++++++---- host/port/esp/freertos/src/spi_wrapper.c | 4 +- slave/main/spi_slave_api.c | 4 +- 3 files changed, 145 insertions(+), 35 deletions(-) diff --git a/Kconfig b/Kconfig index 2e45bddf..0ef74a31 100644 --- a/Kconfig +++ b/Kconfig @@ -447,14 +447,6 @@ ESP32XX_SPI_CLK_FREQ_RANGE_MAX := 40 help Please check your schematic first and input your LDO ID. - config ESP_HOSTED_SDIO_GPIO_RESET_SLAVE - int "GPIO pin for Reseting slave ESP" - default 54 if IDF_TARGET_ESP32P4 - default 42 if IDF_TARGET_ESP32S3 - default 5 - help - GPIO pin for Resetting ESP SDIO slave device. Should be connected to RST/EN of ESP SDIO slave device. - choice prompt "SDIO Bus Width" default ESP_HOSTED_SDIO_4_BIT_BUS @@ -486,6 +478,116 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 help "Optimize SDIO CLK by increasing till host practically can support. Clock frequency for ESP32-P4 as host <= 40MHz" + config ESP_HOSTED_CUSTOM_SDIO_PINS + bool "Use custom SDIO GPIO pins" + default n if IDF_TARGET_ESP32 + default n + help + Enable this to use custom GPIO pins for SDIO on ESP32-P4 and ESP32-S3. + ESP32 has fixed GPIOs for SDIO host (Do not use custom GPIOs) + ESP32-P4 slot 0 is fixed GPIOs for SDIO host (Do not use custom GPIOs) + ESP32-P4 slot 1, ESP32-S3 slot 0/1 is flexible GPIOs for SDIO host (Flexible GPIOs) + + config ESP_HOSTED_SDIO_CMD_GPIO_RANGE_MIN + int + default 4 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 + default 19 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C6 && IDF_TARGET_ESP32P4 + default 15 if IDF_TARGET_ESP32 + default 0 + + config ESP_HOSTED_SDIO_CMD_GPIO_RANGE_MAX + int + default 4 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 + default 19 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C6 && IDF_TARGET_ESP32P4 + default 15 if IDF_TARGET_ESP32 + default 100 + + config ESP_HOSTED_SDIO_CLK_GPIO_RANGE_MIN + int + default 33 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 + default 18 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C6 && IDF_TARGET_ESP32P4 + default 14 if IDF_TARGET_ESP32 + default 0 + + config ESP_HOSTED_SDIO_CLK_GPIO_RANGE_MAX + int + default 33 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 + default 18 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C6 && IDF_TARGET_ESP32P4 + default 14 if IDF_TARGET_ESP32 + default 100 + + config ESP_HOSTED_SDIO_D0_GPIO_RANGE_MIN + int + default 20 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 + default 14 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C6 && IDF_TARGET_ESP32P4 + default 2 if IDF_TARGET_ESP32 + default 0 + + config ESP_HOSTED_SDIO_D0_GPIO_RANGE_MAX + int + default 20 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 + default 14 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C6 && IDF_TARGET_ESP32P4 + default 2 if IDF_TARGET_ESP32 + default 100 + + config ESP_HOSTED_SDIO_D1_GPIO_RANGE_MIN + int + default 23 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 + default 15 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C6 && IDF_TARGET_ESP32P4 + default 4 if IDF_TARGET_ESP32 + default 0 + + config ESP_HOSTED_SDIO_D1_GPIO_RANGE_MAX + int + default 23 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 + default 15 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C6 && IDF_TARGET_ESP32P4 + default 4 if IDF_TARGET_ESP32 + default 100 + + config ESP_HOSTED_SDIO_D2_GPIO_RANGE_MIN + int + default 21 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 + default 16 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C6 && IDF_TARGET_ESP32P4 + default 12 if IDF_TARGET_ESP32 + default 0 + + config ESP_HOSTED_SDIO_D2_GPIO_RANGE_MAX + int + default 21 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 + default 16 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C6 && IDF_TARGET_ESP32P4 + default 12 if IDF_TARGET_ESP32 + default 100 + + config ESP_HOSTED_SDIO_D3_GPIO_RANGE_MIN + int + default 22 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 + default 17 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C6 && IDF_TARGET_ESP32P4 + default 13 if IDF_TARGET_ESP32 + default 0 + + config ESP_HOSTED_SDIO_D3_GPIO_RANGE_MAX + int + default 22 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 + default 17 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C6 && IDF_TARGET_ESP32P4 + default 13 if IDF_TARGET_ESP32 + default 100 + + config ESP_HOSTED_SDIO_RESET_SLAVE_GPIO_MIN + int + default 54 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 + default 53 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 + default 42 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32S3 + default 0 + help + GPIO pin for Resetting ESP SDIO slave device. Should be connected to RST/EN of ESP SDIO slave device. + + config ESP_HOSTED_SDIO_RESET_SLAVE_GPIO_MAX + int + default 54 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 + default 53 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 + default 42 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32S3 + default 100 + ### *START* GPIO SDIO pin configurations for Slot 0 and 1 config ESP_HOSTED_PRIV_SDIO_PIN_CMD_SLOT_0 depends on ESP_HOSTED_SDIO_SLOT_0 @@ -500,10 +602,10 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 depends on ESP_HOSTED_SDIO_SLOT_1 int "CMD GPIO number" default 47 if IDF_TARGET_ESP32S3 - default 19 if IDF_TARGET_ESP32P4 - range 15 15 if IDF_TARGET_ESP32 + range ESP_HOSTED_SDIO_CMD_GPIO_RANGE_MIN ESP_HOSTED_SDIO_CMD_GPIO_RANGE_MAX help - "Value can only be configured for some targets. Displayed always for reference." + CMD GPIO pin for SDIO. Range enforced dynamically based on slave target to ensure IOMUX compliance. + Enable 'Use custom SDIO GPIO pins' to disable range restrictions. config ESP_HOSTED_PRIV_SDIO_PIN_CLK_SLOT_0 depends on ESP_HOSTED_SDIO_SLOT_0 @@ -518,10 +620,10 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 depends on ESP_HOSTED_SDIO_SLOT_1 int "CLK GPIO number" default 19 if IDF_TARGET_ESP32S3 - default 18 if IDF_TARGET_ESP32P4 - range 14 14 if IDF_TARGET_ESP32 + range ESP_HOSTED_SDIO_CLK_GPIO_RANGE_MIN ESP_HOSTED_SDIO_CLK_GPIO_RANGE_MAX help - "Value can only be configured for some targets. Displayed always for reference." + CLK GPIO pin for SDIO. Range enforced dynamically based on slave target to ensure IOMUX compliance. + Enable 'Use custom SDIO GPIO pins' to disable range restrictions. config ESP_HOSTED_PRIV_SDIO_PIN_D0_SLOT_0 depends on ESP_HOSTED_SDIO_SLOT_0 @@ -536,10 +638,10 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 depends on ESP_HOSTED_SDIO_SLOT_1 int "D0 GPIO number" default 13 if IDF_TARGET_ESP32S3 - default 14 if IDF_TARGET_ESP32P4 - range 2 2 if IDF_TARGET_ESP32 + range ESP_HOSTED_SDIO_D0_GPIO_RANGE_MIN ESP_HOSTED_SDIO_D0_GPIO_RANGE_MAX help - "Value can only be configured for some targets. Displayed always for reference." + D0 GPIO pin for SDIO. Range enforced dynamically based on slave target to ensure IOMUX compliance. + Enable 'Use custom SDIO GPIO pins' to disable range restrictions. if ESP_HOSTED_SDIO_4_BIT_BUS config ESP_HOSTED_PRIV_SDIO_PIN_D1_4BIT_BUS_SLOT_0 @@ -555,10 +657,10 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 depends on ESP_HOSTED_SDIO_SLOT_1 int "D1 GPIO number" default 35 if IDF_TARGET_ESP32S3 - default 15 if IDF_TARGET_ESP32P4 - range 4 4 if IDF_TARGET_ESP32 + range ESP_HOSTED_SDIO_D1_GPIO_RANGE_MIN ESP_HOSTED_SDIO_D1_GPIO_RANGE_MAX help - "Value can only be configured for some targets. Displayed always for reference." + D1 GPIO pin for SDIO. Range enforced dynamically based on slave target to ensure IOMUX compliance. + Enable 'Use custom SDIO GPIO pins' to disable range restrictions. config ESP_HOSTED_PRIV_SDIO_PIN_D2_4BIT_BUS_SLOT_0 depends on ESP_HOSTED_SDIO_SLOT_0 @@ -573,10 +675,10 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 depends on ESP_HOSTED_SDIO_SLOT_1 int "D2 GPIO number" default 20 if IDF_TARGET_ESP32S3 - default 16 if IDF_TARGET_ESP32P4 - range 12 12 if IDF_TARGET_ESP32 + range ESP_HOSTED_SDIO_D2_GPIO_RANGE_MIN ESP_HOSTED_SDIO_D2_GPIO_RANGE_MAX help - "Value can only be configured for some targets. Displayed always for reference." + D2 GPIO pin for SDIO. Range enforced dynamically based on slave target to ensure IOMUX compliance. + Enable 'Use custom SDIO GPIO pins' to disable range restrictions. config ESP_HOSTED_PRIV_SDIO_PIN_D3_4BIT_BUS_SLOT_0 depends on ESP_HOSTED_SDIO_SLOT_0 @@ -591,10 +693,10 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 depends on ESP_HOSTED_SDIO_SLOT_1 int "D3 GPIO number" default 9 if IDF_TARGET_ESP32S3 - default 17 if IDF_TARGET_ESP32P4 - range 13 13 if IDF_TARGET_ESP32 + range ESP_HOSTED_SDIO_D3_GPIO_RANGE_MIN ESP_HOSTED_SDIO_D3_GPIO_RANGE_MAX help - "Value can only be configured for some targets. Displayed always for reference." + D3 GPIO pin for SDIO. Range enforced dynamically based on slave target to ensure IOMUX compliance. + Enable 'Use custom SDIO GPIO pins' to disable range restrictions. endif if !ESP_HOSTED_SDIO_4_BIT_BUS @@ -610,11 +712,19 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 depends on ESP_HOSTED_SDIO_SLOT_1 int "D1 GPIO number (Interrupt Line)" default 35 if IDF_TARGET_ESP32S3 - default 15 if IDF_TARGET_ESP32P4 - range 4 4 if IDF_TARGET_ESP32 + range ESP_HOSTED_SDIO_D1_GPIO_RANGE_MIN ESP_HOSTED_SDIO_D1_GPIO_RANGE_MAX help - "Value can only be configured for some targets. Displayed always for reference." + D1 GPIO pin for SDIO. Range enforced dynamically based on slave target to ensure IOMUX compliance. + Enable 'Use custom SDIO GPIO pins' to disable range restrictions. endif + + config ESP_HOSTED_SDIO_GPIO_RESET_SLAVE + int "GPIO pin for Reseting slave ESP" + range ESP_HOSTED_SDIO_RESET_SLAVE_GPIO_MIN ESP_HOSTED_SDIO_RESET_SLAVE_GPIO_MAX + default 5 + help + GPIO pin for Resetting ESP SDIO slave device. Should be connected to RST/EN of ESP SDIO slave device. + ### *END* GPIO SDIO pin configurations for Slot 0 and 1 config ESP_HOSTED_SDIO_PIN_CMD @@ -991,14 +1101,14 @@ ESP32XX_SPI_HD_CLK_FREQ_RANGE_MAX := 40 ENABLE/DISABLE software UART checksum endmenu - config ESP_HOSTED_GPIO_SLAVE_RESET_SLAVE + config ESP_HOSTED_GPIO_SLAVE_RESET_SLAVE int default ESP_HOSTED_SPI_GPIO_RESET_SLAVE if ESP_HOSTED_SPI_HOST_INTERFACE default ESP_HOSTED_SDIO_GPIO_RESET_SLAVE if ESP_HOSTED_SDIO_HOST_INTERFACE default ESP_HOSTED_SPI_HD_GPIO_RESET_SLAVE if ESP_HOSTED_SPI_HD_HOST_INTERFACE default ESP_HOSTED_UART_GPIO_RESET_SLAVE if ESP_HOSTED_UART_HOST_INTERFACE - config ESP_HOSTED_RESET_GPIO_ACTIVE_LOW + config ESP_HOSTED_RESET_GPIO_ACTIVE_LOW bool default n if ESP_HOSTED_SDIO_RESET_ACTIVE_HIGH || ESP_HOSTED_SPI_RESET_ACTIVE_HIGH || ESP_HOSTED_SPI_HD_RESET_ACTIVE_HIGH || ESP_HOSTED_UART_RESET_ACTIVE_HIGH default y if ESP_HOSTED_SDIO_RESET_ACTIVE_LOW || ESP_HOSTED_SPI_RESET_ACTIVE_LOW || ESP_HOSTED_SPI_HD_RESET_ACTIVE_LOW || ESP_HOSTED_UART_RESET_ACTIVE_LOW diff --git a/host/port/esp/freertos/src/spi_wrapper.c b/host/port/esp/freertos/src/spi_wrapper.c index 88b8edd3..56cee511 100644 --- a/host/port/esp/freertos/src/spi_wrapper.c +++ b/host/port/esp/freertos/src/spi_wrapper.c @@ -51,9 +51,9 @@ void * hosted_spi_init(void) esp_err_t ret; - ESP_LOGI(TAG, "Transport: SPI, Mode:%u Freq:%uMHz TxQ:%u RxQ:%u\n GPIOs: MOSI:%u MISO:%u CLK:%u CS:%u HS:%u DR:%u SlaveReset:%u", + ESP_LOGI(TAG, "Transport: SPI, Mode:%u Freq:%uMHz TxQ:%u RxQ:%u\n GPIOs: CLK:%u MOSI:%u MISO:%u CS:%u HS:%u DR:%u SlaveReset:%u", H_SPI_MODE, H_SPI_INIT_CLK_MHZ, H_SPI_TX_Q, H_SPI_RX_Q, - H_GPIO_MOSI_Pin, H_GPIO_MISO_Pin, H_GPIO_SCLK_Pin, + H_GPIO_SCLK_Pin, H_GPIO_MOSI_Pin, H_GPIO_MISO_Pin, H_GPIO_CS_Pin, H_GPIO_HANDSHAKE_Pin, H_GPIO_DATA_READY_Pin, H_GPIO_PIN_RESET_Pin); diff --git a/slave/main/spi_slave_api.c b/slave/main/spi_slave_api.c index d00eaed4..a89d71c8 100644 --- a/slave/main/spi_slave_api.c +++ b/slave/main/spi_slave_api.c @@ -835,9 +835,9 @@ static interface_handle_t * esp_spi_init(void) gpio_set_pull_mode(GPIO_SCLK, GPIO_PULLUP_ONLY); gpio_set_pull_mode(GPIO_CS, GPIO_PULLUP_ONLY); - ESP_LOGI(TAG, "SPI Ctrl:%u mode: %u, Freq:ConfigAtHost\nGPIOs: MOSI: %u, MISO: %u, CS: %u, CLK: %u HS: %u DR: %u\n", + ESP_LOGI(TAG, "SPI Ctrl:%u mode: %u, Freq:ConfigAtHost\nGPIOs: CLK:%u MOSI:%u MISO:%u CS:%u HS:%u DR:%u\n", ESP_SPI_CONTROLLER, slvcfg.mode, - GPIO_MOSI, GPIO_MISO, GPIO_CS, GPIO_SCLK, + GPIO_SCLK, GPIO_MOSI, GPIO_MISO, GPIO_CS, GPIO_HANDSHAKE, GPIO_DATA_READY); ESP_LOGI(TAG, "Hosted SPI queue size: Tx:%u Rx:%u", SPI_TX_QUEUE_SIZE, SPI_RX_QUEUE_SIZE); From 1553244c827f480a456b79d2ffbb436a0f1439f7 Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Wed, 4 Jun 2025 14:31:38 +0800 Subject: [PATCH 024/114] doc: update sdio doc to make it cleaner separate shield box and optimization docs --- docs/esp32_p4_function_ev_board.md | 21 +++--- docs/performance_optimization.md | 106 +++++++++++++++++++++++++++++ docs/sdio.md | 93 ++++++++++++------------- docs/shield-box-test-setup.md | 75 ++++++++++++++++++++ docs/spi_full_duplex.md | 4 +- docs/spi_half_duplex.md | 4 +- docs/uart.md | 4 +- 7 files changed, 243 insertions(+), 64 deletions(-) create mode 100644 docs/performance_optimization.md create mode 100644 docs/shield-box-test-setup.md diff --git a/docs/esp32_p4_function_ev_board.md b/docs/esp32_p4_function_ev_board.md index 368519b4..d8029062 100644 --- a/docs/esp32_p4_function_ev_board.md +++ b/docs/esp32_p4_function_ev_board.md @@ -3,21 +3,20 @@

Table of Contents -- [Introduction](#1-introduction) -- [Set-Up ESP-IDF](#2-set-up-esp-idf) -- [Building Host for the P4](#3-building-host-for-the-p4) +- [1. Introduction](#1-introduction) +- [2. Set-Up ESP-IDF](#2-set-up-esp-idf) +- [3. Building Host for the P4](#3-building-host-for-the-p4) - [Adding Components](#31-adding-components) - [Configuring Defaults](#32-configuring-defaults) - [Building Firmware](#33-building-firmware) -- [Checking ESP-Hosted](#4-checking-esp-hosted) -- [Flashing ESP32-C6](#5-flashing-esp32-c6) +- [4. Checking ESP-Hosted](#4-checking-esp-hosted) +- [5. Flashing ESP32-C6](#5-flashing-esp32-c6) - [Using ESP-Prog](#51-using-esp-prog) - [OTA Updates](#52-ota-updates) -- [Troubleshooting](#6-troubleshooting) -- [Flashing the On-board ESP32-P4 through the ESP-Prog](#7-flashing-esp32-p4) -- [Testing ESP-Hosted with SPI-FD with other MCUs](#8-testing-esp-hosted-with-spi-fd-with-other-mcus) -- [References](#9-references) - +- [6. Troubleshooting](#6-troubleshooting) +- [7. Flashing the On-board ESP32-P4 through the ESP-Prog](#7-flashing-esp32-p4) +- [8. Testing ESP-Hosted with SPI-FD with other MCUs](#8-testing-esp-hosted-with-spi-fd-with-other-mcus) +- [9. References](#10-references)
## 1. Introduction @@ -382,6 +381,8 @@ Use GPIOs 36 or lower on the P4 DevKit to avoid LDO power issues with high numbe > [!NOTE] > Avoid using GPIO 35 and 36 as they affect the ESP32-P4 Bootloader Mode. See [ESP32-P4 Boot Mode Selection](https://docs.espressif.com/projects/esptool/en/latest/esp32p4/advanced-topics/boot-mode-selection.html#select-bootloader-mode) for more information. +Shield box throughput testing setup explained in [Shield Box Test Setup](shield-box-test-setup.md). + ## 9. References - ESP32-P4-Function-EV-Board: https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32p4/esp32-p4-function-ev-board/ diff --git a/docs/performance_optimization.md b/docs/performance_optimization.md new file mode 100644 index 00000000..9851bdfd --- /dev/null +++ b/docs/performance_optimization.md @@ -0,0 +1,106 @@ +# ESP-Hosted Performance Optimization Guide + +Quick reference for optimizing ESP-Hosted performance across different transport interfaces. + +## Quick Start - High Performance Config + +For immediate performance gains, add these to your host's `sdkconfig.defaults.esp32XX` file: + +``` +# Wi-Fi Performance +CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=16 +CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=64 +CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=64 +CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP_WIFI_TX_BA_WIN=32 +CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP_WIFI_RX_BA_WIN=32 + +# TCP/IP Performance +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=65534 +CONFIG_LWIP_TCP_WND_DEFAULT=65534 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=64 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=64 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64 +CONFIG_LWIP_TCP_SACK_OUT=y +``` + +> **Note**: Adjust values based on your MCU host's memory capacity and as per change as per build system + +## Transport Optimization + +### SDIO (Highest Performance) +- **Clock Speed**: Start at 20 MHz, optimize up to 50 MHz +- **Bus Width**: Use 4-bit mode +- **Hardware**: Use PCB with controlled impedance, external pull-ups (51kΩ) +- **Checksum**: Optional (SDIO hardware handles verification) + +``` +CONFIG_ESP_HOSTED_SDIO_CLOCK_FREQ_KHZ=40000 +CONFIG_ESP_HOSTED_SDIO_BUS_WIDTH=4 +``` + +### SPI Full-Duplex +- **Clock Speed**: ESP32: ≤10 MHz, Others: ≤40 MHz +- **Hardware**: Use IO_MUX pins, short traces (≤10cm for jumpers) +- **Checksum**: Mandatory (SPI hardware lacks error detection) + +``` +CONFIG_ESP_HOSTED_SPI_CLK_FREQ=40 +``` + +### SPI Half-Duplex +- **Data Lines**: Use 4-line (Quad SPI) mode +- **Similar optimizations as SPI Full-Duplex** + +### UART (Lowest Performance) +- **Baud Rate**: Use 921600 (highest stable rate) +- **Best for**: Low-throughput applications, debugging + +## Memory Optimization + +- Reduce memory footprint for resource-constrained applications: + + ``` + # Reduce queue sizes + CONFIG_ESP_HOSTED_SDIO_TX_Q_SIZE=10 # Default: 20 + CONFIG_ESP_HOSTED_SDIO_RX_Q_SIZE=10 # Default: 20 + + # Enable memory pooling + CONFIG_ESP_HOSTED_USE_MEMPOOL=y + ``` + +- Disable the not-in-use features + - For example, disable bluetooth if not needed +- Use external RAM, for higher memory (PSRAM is supported) +- Optimise internal RAM using [ESP-IDF iram optimization tricks](https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/performance/ram-usage.html) +## Hardware Guidelines + +### Critical Requirements +1. **Signal Integrity**: Use PCB designs for production, jumpers only for prototyping +2. **Power Supply**: Stable 3.3V, proper decoupling capacitors +3. **Trace Length**: Match lengths, especially clock vs data lines +4. **Pull-ups**: Required for SDIO (51kΩ) on CMD, D0-D3 lines + +### PCB Design Checklist +- [ ] Equal trace lengths for communication signals +- [ ] Ground plane for signal stability +- [ ] Controlled impedance traces (50Ω typical) +- [ ] Series termination resistors for high-speed signals +- [ ] Extra GPIOs reserved for future features (deep sleep, etc.) + + + +## Development Workflow +1. **Proof of Concept**: Start with jumper wires, low clock speeds +2. **Incremental Optimization**: Increase transport clock step by step +3. **Hardware Validation**: Move to PCB for final validation +4. **Performance Tuning**: Optimize buffers and configurations + + + + + +4. **Disable features**: Any unsued components from ESP-IDF or +ESP-Hosted-MCU features could be disabled for more memory +availability. diff --git a/docs/sdio.md b/docs/sdio.md index 3d838491..a1d41993 100644 --- a/docs/sdio.md +++ b/docs/sdio.md @@ -127,72 +127,61 @@ For optimal performance and reliability in production designs: Setting up the hardware involves connecting the master and co-processor devices via the SDIO pins and ensuring all extra GPIO signals are properly connected. Below is the table of connections for the SDIO setup between a host ESP chipset and another ESP chipset as co-processor: -### Host connections +### Host Connections -| Signal | ESP32 | ESP32-S3 | ESP32-P4-Function-EV-Board | -|-------------|-------|----------|----------| -| CLK | 14 | 19 | 18 | -| Reset Out | 5 | 42 | 54 | -| CMD | 15+[ext-pull-up](#34-pull-up-resistors) | 47+[ext-pull-up](#34-pull-up-resistors) | 19+[ext-pull-up](#34-pull-up-resistors) | -| DAT0 | 2+[ext-pull-up](#34-pull-up-resistors) | 13+[ext-pull-up](#34-pull-up-resistors) | 14+[ext-pull-up](#34-pull-up-resistors) | -| DAT1 | 4+[ext-pull-up](#34-pull-up-resistors) | 35+[ext-pull-up](#34-pull-up-resistors) | 15+[ext-pull-up](#34-pull-up-resistors) | -| DAT2 | 12+[ext-pull-up](#34-pull-up-resistors) | 20+[ext-pull-up](#34-pull-up-resistors) | 16+[ext-pull-up](#34-pull-up-resistors) | -| DAT3 | 13+[ext-pull-up](#34-pull-up-resistors) | 9+[ext-pull-up](#34-pull-up-resistors) | 17+[ext-pull-up](#34-pull-up-resistors) | +SDIO-capable host microcontrollers (MCUs) can connect their GPIO lines to the co-processor as detailed in the table below. -#### ESP32-P4-Function-EV-Board with ESP32-C5 Test Board +#### GPIO Flexibility -> [!NOTE] -> Support for the ESP32-C5 is currently in BETA (`--preview` in ESP-IDF master branch) - -ESP32-P4 Function EV Board GPIO setup to use with a ESP32-C5 Test Board: +- The ESP32 supports SDIO host on fixed GPIOs. +- The ESP32-S3 supports SDIO host on flexible GPIOs. +- For the ESP32-P4, Slot 0 supports fixed GPIOs, while Slot 1 supports flexible GPIOs. -| Signal | ESP32-P4 | -|-----------|----------| -| CLK | 33 | -| Reset Out | 53 | -| CMD | 4+[ext-pull-up](#34-pull-up-resistors) | -| DAT0 | 20+[ext-pull-up](#34-pull-up-resistors) | -| DAT1 | 23+[ext-pull-up](#34-pull-up-resistors) | -| DAT2 | 21+[ext-pull-up](#34-pull-up-resistors) | -| DAT3 | 22+[ext-pull-up](#34-pull-up-resistors) | +By default, Slot 1 is used on the ESP32-P4 to take advantage of its flexible pin mapping; however, Slot 0 is also supported. Parallel access to both Slot 0 and Slot 1 is supported for all hosts. -Current iPerf numbers, connected to a 5G Network and running iPerf (TCP and UDP tests). -| | Direction | Throughput (MBits/s) | -|-----|-----------|----------------------| -| UDP | PC to P4 | 60 | -| | P4 to PC | 51 | -| TCP | PC to P4 | 38 | -| | P4 to PC | 22 | +| Signal | ESP32 | ESP32-S3 | +|-----------|-------|----------| +| CLK | 14 | 19 | +| CMD | 15+[ext-pull-up](#34-pull-up-resistors) | 47+[ext-pull-up](#34-pull-up-resistors) | +| D0 | 2+[ext-pull-up](#34-pull-up-resistors) | 13+[ext-pull-up](#34-pull-up-resistors) | +| D1 | 4+[ext-pull-up](#34-pull-up-resistors) | 35+[ext-pull-up](#34-pull-up-resistors) | +| D2 | 12+[ext-pull-up](#34-pull-up-resistors) | 20+[ext-pull-up](#34-pull-up-resistors) | +| D3 | 13+[ext-pull-up](#34-pull-up-resistors) | 9+[ext-pull-up](#34-pull-up-resistors) | +| Reset Out | 5 | 42 | -- PC to P4 - - PC -> Router -> ESP Co-processor --> SDIO --> ESP32-P4 -- P4 to PC - - ESP32-P4 --> SDIO --> ESP Co-processor -> Router ->PC +### ESP32-P4-Function-EV-Board Host Pin Mapping -Testing using a shield box. For open air: similar setup, just with no shield box. +| Signal | ESP32-P4 with ESP32-C6 Co-processor | ESP32-P4 with ESP32-C5 Co-processor | +|-----------|-------------------------------------|-------------------------------------| +| CLK | 18 | 33 | +| CMD | 19+[ext-pull-up](#34-pull-up-resistors) | 4+[ext-pull-up](#34-pull-up-resistors) | +| D0 | 14+[ext-pull-up](#34-pull-up-resistors) | 20+[ext-pull-up](#34-pull-up-resistors) | +| D1 | 15+[ext-pull-up](#34-pull-up-resistors) | 23+[ext-pull-up](#34-pull-up-resistors) | +| D2 | 16+[ext-pull-up](#34-pull-up-resistors) | 21+[ext-pull-up](#34-pull-up-resistors) | +| D3 | 17+[ext-pull-up](#34-pull-up-resistors) | 22+[ext-pull-up](#34-pull-up-resistors) | +| Reset Out | 54 | 53 | -iPerf testing setup - Shield box way +> ### Co-processor connections -| Signal | ESP32 | ESP32-C6 | ESP32-C5 | -|-------------|-------|----------|----------| -| CLK | 14 | 19 | 9 | -| CMD | 15 | 18 | 10 | -| DAT0 | 2 | 20 | 8 | -| DAT1 | 4 | 21 | 7 | -| DAT2 | 12 | 22 | 14 | -| DAT3 | 13 | 23 | 13 | -| Reset In | EN | EN/RST | RST | +SDIO slave provider ESP chips are : ESP32, ESP32-C5, ESP32-C6.\ +All these chips have fixed GPIOs SDIO support. + +| Signal | ESP32 | ESP32-C6 | ESP32-C5 | +|----------|-------|----------|----------| +| CLK | 14 | 19 | 9 | +| CMD | 15 | 18 | 10 | +| D0 | 2 | 20 | 8 | +| D1 | 4 | 21 | 7 | +| D2 | 12 | 22 | 14 | +| D3 | 13 | 23 | 13 | +| Reset In | EN | EN/RST | RST | > [!NOTE] > -> A. Try to use IO_MUX pins from the datasheet for optimal performance on both sides. \ -> B. These GPIO assignments are based on default Kconfig configurations. You can modify these in the menuconfig for both host and co-processor if needed. \ -> C. Once ported, any other host with standard SDIO can be used. \ -> D. ESP32, ESP32-S3, and ESP32-P4 can be used as hosts; ESP32, ESP32-C6 and ESP32-C5 can be used as co-processors in SDIO mode. \ -> E. External pull-ups are mandatory +> - External pull-ups are mandatory ## 5 Set-Up ESP-IDF @@ -555,6 +544,8 @@ After flashing both the co-processor and host devices, follow these steps to con Note: Replace `` with the IP address of the external STA, and `` with the IP address of the ESP-Hosted device. + [!NOTE] Shield box throughput testing setup explained in [Shield Box Test Setup](shield-box-test-setup.md). + 8. Troubleshooting: - Consider using a lower clock speed or checking your [hardware setup](docs/sdio.md#7-hardware-setup) if you experience communication problems. - ESP-Hosted-MCU troubleshooting guide: [docs/troubleshooting.md](docs/troubleshooting.md) diff --git a/docs/shield-box-test-setup.md b/docs/shield-box-test-setup.md new file mode 100644 index 00000000..c107a3a5 --- /dev/null +++ b/docs/shield-box-test-setup.md @@ -0,0 +1,75 @@ +# Shield Box Test Setup for ESP-Hosted + +Controlled RF environment for consistent throughput measurements and performance evaluation. + +## Overview + +**Shield Box Testing** uses RF-shielded enclosure to eliminate external interference and provide repeatable test conditions. + +**Key Benefits:** +- Controlled RF environment (no external Wi-Fi/cellular interference) +- Repeatable, consistent results +- Better measurement accuracy vs open air + + +## Equipment Required + +### Essential Components +- **RF Shield Box/Chamber**: Faraday cage enclosure +- **ESP32-P4 Function EV Board**: Host device +- **ESP32-C6/C5 Test Board**: Co-processor device +- **External PC**: For iPerf client/server +- **Router/Access Point**: Wi-Fi infrastructure +- **Ethernet Connection**: Wired backhaul to PC + +Please change the host and co-processor nodes as per current use-case under test. + +## Test Setup + +### Physical Configuration + +Shield box testing setup + +### Data Flow +- **PC to MCU Host**: + ``` + PC -> Router -> ESP Co-processor == SDIO/SPI/UART ==> ESP32-P4 + ``` +- **MCU Host to PC**: + ``` + PC <- Router <- ESP Co-processor <== SDIO/SPI/UART == ESP32-P4 + ``` + +**Traffic route:** +- PC-to-Router: Ethernet with static IP (eliminates wireless variables) +- Router-to-ESP: Wi-Fi connection (only wireless link in test chain) + +## Transport Configurations + +### SDIO (Highest Performance) +- **Clock**: 20-50 MHz (start low, optimize up) +- **Bus Width**: 4-bit mode +- **Hardware**: External pull-ups (51kΩ) on CMD, D0-D3 + +### SPI +- **Clock**: ESP32: ≤10 MHz, Others: ≤40 MHz +- **Mode**: Full-duplex (simple) or Quad SPI (highest throughput) + +### UART +- **Baud Rate**: 921600 (highest stable rate) +- **Use Case**: Low-throughput validation, debugging + + +## Shield Box vs Open Air + +| Aspect | Shield Box | Open Air | +|--------|------------|----------| +| **Repeatability** | High | Variable | +| **Interference** | Eliminated | Present | +| **Debugging** | Easier | Complex | +| **Reality** | Lower | Higher | + + +--- + +*For transport setup details: [SDIO](sdio.md) | [SPI Full-Duplex](spi_full_duplex.md) | [SPI Half-Duplex](spi_half_duplex.md) | [UART](uart.md)* \ No newline at end of file diff --git a/docs/spi_full_duplex.md b/docs/spi_full_duplex.md index 6e62b978..72398ed0 100644 --- a/docs/spi_full_duplex.md +++ b/docs/spi_full_duplex.md @@ -538,7 +538,7 @@ After flashing both the co-processor and host devices, follow these steps to con - Set Wi-Fi mode: `wifi_mode ` (where mode can be 'sta', 'ap', or 'apsta') 7. Advanced iperf testing: - Once connected, you can run iperf tests: + Once connected, you can run iperf tests to verify performance: | Test Case | Host Command | External STA Command | |-----------|--------------|----------------------| @@ -549,6 +549,8 @@ After flashing both the co-processor and host devices, follow these steps to con Note: Replace `` with the IP address of the external STA, and `` with the IP address of the ESP-Hosted device. + Shield box throughput testing setup explained in [Shield Box Test Setup](shield-box-test-setup.md). + 8. Troubleshooting: - If you encounter issues, refer to section 6.3 for testing the SPI connection. - Consider using a lower clock speed or checking your [hardware connections](#5-hardware-setup) if you experience communication problems. diff --git a/docs/spi_half_duplex.md b/docs/spi_half_duplex.md index 64967538..0bed729a 100644 --- a/docs/spi_half_duplex.md +++ b/docs/spi_half_duplex.md @@ -784,7 +784,7 @@ After flashing both the co-processor and host devices, follow these steps to con - Set Wi-Fi mode: `wifi_mode ` (where mode can be 'sta', 'ap', or 'apsta') 7. Advanced iperf testing: - Once connected, you can run iperf tests: + Once connected, you can run iperf tests to verify performance: | Test Case | Host Command | External STA Command | | :-------: | :----------: | :------------------: | @@ -795,6 +795,8 @@ After flashing both the co-processor and host devices, follow these steps to con Note: Replace `` with the IP address of the external STA, and `` with the IP address of the ESP-Hosted device. + [!NOTE] Shield box throughput testing setup explained in [Shield Box Test Setup](shield-box-test-setup.md). + 8. Troubleshooting: - If you encounter issues, refer to section 6.3 for testing the SPI connection. - Consider using a lower clock speed or checking your [hardware setup](#7-hardware-setup) if you experience communication problems. diff --git a/docs/uart.md b/docs/uart.md index 6e8ce079..144f4dad 100644 --- a/docs/uart.md +++ b/docs/uart.md @@ -424,7 +424,7 @@ After flashing both the co-processor and host devices, follow these steps to con - Set Wi-Fi mode: `wifi_mode ` (where mode can be 'sta', 'ap', or 'apsta') 7. Advanced iperf testing: - Once connected, you can run iperf tests: + Once connected, you can run iperf tests to verify performance: | Test Case | Host Command | External STA Command | |-----------|--------------|----------------------| @@ -435,6 +435,8 @@ After flashing both the co-processor and host devices, follow these steps to con Note: Replace `` with the IP address of the external STA, and `` with the IP address of the ESP-Hosted device. + Shield box throughput testing setup explained in [Shield Box Test Setup](shield-box-test-setup.md). + 8. Troubleshooting: - If you encounter issues, refer to section 3.3 for checking the UART connection. - Consider using a lower baud rate or checking your [hardware setup](#4-hardware-setup) if you experience communication problems. From 45c23329da8bbe715a45b3577086ca96bc3bfc37 Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Wed, 4 Jun 2025 15:22:13 +0800 Subject: [PATCH 025/114] fix: build on 5.5 to set the default sdio pins --- .gitlab-ci.yml | 53 ++++++++++++++++++++++----- Kconfig | 57 +++++++++++++++++++++--------- README.md | 4 +++ docs/esp32_p4_function_ev_board.md | 4 ++- docs/sdio.md | 18 +++++----- docs/spi_full_duplex.md | 17 +++++---- docs/spi_half_duplex.md | 17 +++++---- docs/uart.md | 17 +++++---- 8 files changed, 126 insertions(+), 61 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f890f383..ee58fcb4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,7 +10,7 @@ before_script: - build artifacts: paths: - - "${IDF_PATH}/${IDF_EXAMPLE_PATH}/build*/build_log.txt" + - "artifacts_*/" when: always expire_in: 4 days script: @@ -21,13 +21,44 @@ before_script: # Replaces esp_hosted component in example's deps with the one from the current repository - export OVERRIDE_PATH=`pwd` - cd ${IDF_PATH}/${IDF_EXAMPLE_PATH} - - cat ${OVERRIDE_PATH}/.gitlab-ci-override-idf-component.yml >> main/idf_component.yml + # Create components directory and link esp_hosted component + - mkdir -p components + - ln -sf ${OVERRIDE_PATH} components/esp_hosted + - echo "Created components directory with esp_hosted link:" + - ls -la components/ + # Override component dependency as backup only if not already present + - | + if ! grep -q "esp_hosted" main/idf_component.yml 2>/dev/null; then + cat ${OVERRIDE_PATH}/.gitlab-ci-override-idf-component.yml >> main/idf_component.yml + echo "Added esp_hosted override to idf_component.yml" + fi + # Add slave target configuration if specified + - | + if [ ! -z "${IDF_SLAVE_TARGET}" ]; then + echo "CONFIG_SLAVE_IDF_TARGET_${IDF_SLAVE_TARGET^^}=y" >> sdkconfig.defaults + echo "Added slave target CONFIG_SLAVE_IDF_TARGET_${IDF_SLAVE_TARGET^^}=y to sdkconfig.defaults" + fi # Build with IDF pedantic flags and IDF build apps script - export PEDANTIC_FLAGS="-DIDF_CI_BUILD -Werror -Werror=deprecated-declarations -Werror=unused-variable -Werror=unused-but-set-variable -Werror=unused-function" - export EXTRA_CFLAGS="${PEDANTIC_FLAGS} -Wstrict-prototypes" - export EXTRA_CXXFLAGS="${PEDANTIC_FLAGS}" + # Remove the conflicting extconn config that disables hosted + - rm -f sdkconfig.ci.*extconn* - idf-build-apps find --config sdkconfig.ci* -vv --target ${IDF_TARGET} - idf-build-apps build --config sdkconfig.ci* -vv --target ${IDF_TARGET} +# - echo "----------- last sdkconfig.defaults,ci* used (${IDF_TARGET}-${IDF_SLAVE_TARGET}) --------------" +# - cat sdkconfig.defaults +# - cat sdkconfig.ci* +# - echo "----------- last (generated) sdkconfig used (${IDF_TARGET}-${IDF_SLAVE_TARGET}) --------------" +# - cat sdkconfig +# - echo "----------------------------------------------" + # Copy config files back to project directory for artifacts + - mkdir -p ${OVERRIDE_PATH}/artifacts_${IDF_TARGET}_${IDF_SLAVE_TARGET} + - cp sdkconfig* ${OVERRIDE_PATH}/artifacts_${IDF_TARGET}_${IDF_SLAVE_TARGET}/ 2>/dev/null || echo "No sdkconfig files found" + - cp main/idf_component.yml ${OVERRIDE_PATH}/artifacts_${IDF_TARGET}_${IDF_SLAVE_TARGET}/ 2>/dev/null || echo "No component file found" + # Clean up the component symlink + - unlink components/esp_hosted + - echo "Cleaned up esp_hosted component symlink" # Rename back, since post scripts expect the original name - cd ${OVERRIDE_PATH} && cd .. && mv esp_hosted esp_hosted_mcu @@ -37,24 +68,29 @@ build_idf_v5.3: image: espressif/idf:release-v5.3 parallel: matrix: - - IDF_TARGET: ["esp32p4", "esp32h2", "esp32s3"] + - IDF_TARGET: ["esp32p4", "esp32h2"] + IDF_SLAVE_TARGET: ["esp32c6"] IDF_EXAMPLE_PATH: examples/protocols/mqtt/tcp + #IDF_EXAMPLE_PATH: [examples/wifi/iperf] build_idf_v5.4: extends: .build_template image: espressif/idf:release-v5.4 parallel: matrix: - - IDF_TARGET: ["esp32p4", "esp32h2", "esp32s3"] + - IDF_TARGET: ["esp32p4", "esp32h2"] + IDF_SLAVE_TARGET: ["esp32c6"] IDF_EXAMPLE_PATH: examples/protocols/mqtt/tcp + #IDF_EXAMPLE_PATH: [examples/wifi/iperf] build_idf_v5.5: extends: .build_template image: espressif/idf:release-v5.5 parallel: matrix: - - IDF_TARGET: ["esp32p4", "esp32h2", "esp32s3"] - IDF_EXAMPLE_PATH: [examples/protocols/mqtt/tcp, examples/wifi/iperf] + - IDF_TARGET: ["esp32p4", "esp32h2"] + IDF_SLAVE_TARGET: ["esp32c6", "esp32c5", "esp32", "esp32c2", "esp32c3", "esp32s3" ] + IDF_EXAMPLE_PATH: [examples/wifi/iperf] build_idf_master: extends: .build_template @@ -62,5 +98,6 @@ build_idf_master: allow_failure: true parallel: matrix: - - IDF_TARGET: ["esp32p4", "esp32h2", "esp32s3"] - IDF_EXAMPLE_PATH: [examples/protocols/mqtt/tcp, examples/wifi/iperf] + - IDF_TARGET: ["esp32p4", "esp32h2"] + IDF_SLAVE_TARGET: ["esp32c6", "esp32c5", "esp32", "esp32c2", "esp32c3", "esp32s3" ] + IDF_EXAMPLE_PATH: [examples/wifi/iperf] diff --git a/Kconfig b/Kconfig index 0ef74a31..0262c156 100644 --- a/Kconfig +++ b/Kconfig @@ -480,7 +480,6 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 config ESP_HOSTED_CUSTOM_SDIO_PINS bool "Use custom SDIO GPIO pins" - default n if IDF_TARGET_ESP32 default n help Enable this to use custom GPIO pins for SDIO on ESP32-P4 and ESP32-S3. @@ -491,101 +490,103 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 config ESP_HOSTED_SDIO_CMD_GPIO_RANGE_MIN int default 4 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 - default 19 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C6 && IDF_TARGET_ESP32P4 + default 19 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 default 15 if IDF_TARGET_ESP32 default 0 config ESP_HOSTED_SDIO_CMD_GPIO_RANGE_MAX int default 4 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 - default 19 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C6 && IDF_TARGET_ESP32P4 + default 19 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 default 15 if IDF_TARGET_ESP32 default 100 config ESP_HOSTED_SDIO_CLK_GPIO_RANGE_MIN int default 33 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 - default 18 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C6 && IDF_TARGET_ESP32P4 + default 18 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 default 14 if IDF_TARGET_ESP32 default 0 config ESP_HOSTED_SDIO_CLK_GPIO_RANGE_MAX int default 33 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 - default 18 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C6 && IDF_TARGET_ESP32P4 + default 18 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 default 14 if IDF_TARGET_ESP32 default 100 config ESP_HOSTED_SDIO_D0_GPIO_RANGE_MIN int default 20 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 - default 14 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C6 && IDF_TARGET_ESP32P4 + default 14 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 default 2 if IDF_TARGET_ESP32 default 0 config ESP_HOSTED_SDIO_D0_GPIO_RANGE_MAX int default 20 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 - default 14 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C6 && IDF_TARGET_ESP32P4 + default 14 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 default 2 if IDF_TARGET_ESP32 default 100 config ESP_HOSTED_SDIO_D1_GPIO_RANGE_MIN int default 23 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 - default 15 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C6 && IDF_TARGET_ESP32P4 + default 15 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 default 4 if IDF_TARGET_ESP32 default 0 config ESP_HOSTED_SDIO_D1_GPIO_RANGE_MAX int default 23 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 - default 15 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C6 && IDF_TARGET_ESP32P4 + default 15 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 default 4 if IDF_TARGET_ESP32 default 100 config ESP_HOSTED_SDIO_D2_GPIO_RANGE_MIN int default 21 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 - default 16 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C6 && IDF_TARGET_ESP32P4 + default 16 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 default 12 if IDF_TARGET_ESP32 default 0 config ESP_HOSTED_SDIO_D2_GPIO_RANGE_MAX int default 21 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 - default 16 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C6 && IDF_TARGET_ESP32P4 + default 16 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 default 12 if IDF_TARGET_ESP32 default 100 config ESP_HOSTED_SDIO_D3_GPIO_RANGE_MIN int default 22 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 - default 17 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C6 && IDF_TARGET_ESP32P4 + default 17 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 default 13 if IDF_TARGET_ESP32 default 0 config ESP_HOSTED_SDIO_D3_GPIO_RANGE_MAX int default 22 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 - default 17 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C6 && IDF_TARGET_ESP32P4 + default 17 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 default 13 if IDF_TARGET_ESP32 default 100 config ESP_HOSTED_SDIO_RESET_SLAVE_GPIO_MIN int - default 54 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 default 53 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 + default 54 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 default 42 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32S3 + default 5 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32 default 0 help GPIO pin for Resetting ESP SDIO slave device. Should be connected to RST/EN of ESP SDIO slave device. config ESP_HOSTED_SDIO_RESET_SLAVE_GPIO_MAX int - default 54 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 default 53 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 + default 54 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 default 42 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32S3 + default 5 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32 default 100 ### *START* GPIO SDIO pin configurations for Slot 0 and 1 @@ -602,6 +603,9 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 depends on ESP_HOSTED_SDIO_SLOT_1 int "CMD GPIO number" default 47 if IDF_TARGET_ESP32S3 + default 4 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 + default 19 if IDF_TARGET_ESP32P4 + default 15 if IDF_TARGET_ESP32 range ESP_HOSTED_SDIO_CMD_GPIO_RANGE_MIN ESP_HOSTED_SDIO_CMD_GPIO_RANGE_MAX help CMD GPIO pin for SDIO. Range enforced dynamically based on slave target to ensure IOMUX compliance. @@ -620,6 +624,9 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 depends on ESP_HOSTED_SDIO_SLOT_1 int "CLK GPIO number" default 19 if IDF_TARGET_ESP32S3 + default 33 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 + default 18 if IDF_TARGET_ESP32P4 + default 14 if IDF_TARGET_ESP32 range ESP_HOSTED_SDIO_CLK_GPIO_RANGE_MIN ESP_HOSTED_SDIO_CLK_GPIO_RANGE_MAX help CLK GPIO pin for SDIO. Range enforced dynamically based on slave target to ensure IOMUX compliance. @@ -638,6 +645,9 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 depends on ESP_HOSTED_SDIO_SLOT_1 int "D0 GPIO number" default 13 if IDF_TARGET_ESP32S3 + default 20 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 + default 14 if IDF_TARGET_ESP32P4 + default 2 if IDF_TARGET_ESP32 range ESP_HOSTED_SDIO_D0_GPIO_RANGE_MIN ESP_HOSTED_SDIO_D0_GPIO_RANGE_MAX help D0 GPIO pin for SDIO. Range enforced dynamically based on slave target to ensure IOMUX compliance. @@ -657,6 +667,9 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 depends on ESP_HOSTED_SDIO_SLOT_1 int "D1 GPIO number" default 35 if IDF_TARGET_ESP32S3 + default 23 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 + default 15 if IDF_TARGET_ESP32P4 + default 4 if IDF_TARGET_ESP32 range ESP_HOSTED_SDIO_D1_GPIO_RANGE_MIN ESP_HOSTED_SDIO_D1_GPIO_RANGE_MAX help D1 GPIO pin for SDIO. Range enforced dynamically based on slave target to ensure IOMUX compliance. @@ -675,6 +688,9 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 depends on ESP_HOSTED_SDIO_SLOT_1 int "D2 GPIO number" default 20 if IDF_TARGET_ESP32S3 + default 21 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 + default 16 if IDF_TARGET_ESP32P4 + default 12 if IDF_TARGET_ESP32 range ESP_HOSTED_SDIO_D2_GPIO_RANGE_MIN ESP_HOSTED_SDIO_D2_GPIO_RANGE_MAX help D2 GPIO pin for SDIO. Range enforced dynamically based on slave target to ensure IOMUX compliance. @@ -693,6 +709,9 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 depends on ESP_HOSTED_SDIO_SLOT_1 int "D3 GPIO number" default 9 if IDF_TARGET_ESP32S3 + default 22 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 + default 17 if IDF_TARGET_ESP32P4 + default 13 if IDF_TARGET_ESP32 range ESP_HOSTED_SDIO_D3_GPIO_RANGE_MIN ESP_HOSTED_SDIO_D3_GPIO_RANGE_MAX help D3 GPIO pin for SDIO. Range enforced dynamically based on slave target to ensure IOMUX compliance. @@ -712,6 +731,9 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 depends on ESP_HOSTED_SDIO_SLOT_1 int "D1 GPIO number (Interrupt Line)" default 35 if IDF_TARGET_ESP32S3 + default 23 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 + default 15 if IDF_TARGET_ESP32P4 + default 4 if IDF_TARGET_ESP32 range ESP_HOSTED_SDIO_D1_GPIO_RANGE_MIN ESP_HOSTED_SDIO_D1_GPIO_RANGE_MAX help D1 GPIO pin for SDIO. Range enforced dynamically based on slave target to ensure IOMUX compliance. @@ -721,7 +743,10 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 config ESP_HOSTED_SDIO_GPIO_RESET_SLAVE int "GPIO pin for Reseting slave ESP" range ESP_HOSTED_SDIO_RESET_SLAVE_GPIO_MIN ESP_HOSTED_SDIO_RESET_SLAVE_GPIO_MAX - default 5 + default 53 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 + default 54 if IDF_TARGET_ESP32P4 + default 42 if IDF_TARGET_ESP32S3 + default 5 if IDF_TARGET_ESP32 help GPIO pin for Resetting ESP SDIO slave device. Should be connected to RST/EN of ESP SDIO slave device. diff --git a/README.md b/README.md index 32167ec2..72695cdc 100644 --- a/README.md +++ b/README.md @@ -154,6 +154,10 @@ Legends: - TBD : To be determined - iperf : iperf2 with test resukts in mbps +> [!NOTE] +> +> For the shield box readings maked with (S), full network set up explained in [Shield Box Test Setup](shield-box-test-setup.md) + **Host can be any ESP chipset or any non-ESP MCU.** ###### Hosted Transports table diff --git a/docs/esp32_p4_function_ev_board.md b/docs/esp32_p4_function_ev_board.md index d8029062..9061d1f6 100644 --- a/docs/esp32_p4_function_ev_board.md +++ b/docs/esp32_p4_function_ev_board.md @@ -381,7 +381,9 @@ Use GPIOs 36 or lower on the P4 DevKit to avoid LDO power issues with high numbe > [!NOTE] > Avoid using GPIO 35 and 36 as they affect the ESP32-P4 Bootloader Mode. See [ESP32-P4 Boot Mode Selection](https://docs.espressif.com/projects/esptool/en/latest/esp32p4/advanced-topics/boot-mode-selection.html#select-bootloader-mode) for more information. -Shield box throughput testing setup explained in [Shield Box Test Setup](shield-box-test-setup.md). +> [!TIP] +> +> To measure the optimal performance, check out the [Shield Box Test Setup](shield-box-test-setup.md). ## 9. References diff --git a/docs/sdio.md b/docs/sdio.md index a1d41993..6d0f3a27 100644 --- a/docs/sdio.md +++ b/docs/sdio.md @@ -275,14 +275,11 @@ idf.py -p flash > > Put host in bootloader mode using following command and then retry flashing the co-processor > -> ```bash -> esptool.py -p **** --before default_reset --after no_reset run -> ``` - -Monitor the output (optional): -``` -idf.py -p monitor -``` +> `esptool.py -p **** --before default_reset --after no_reset run` +> +> Flash the co-processor and log the output: +> +> `idf.py -p flash monitor` ##### 6.4.2 Co-processor OTA Flashing (Subsequent Updates) @@ -544,7 +541,9 @@ After flashing both the co-processor and host devices, follow these steps to con Note: Replace `` with the IP address of the external STA, and `` with the IP address of the ESP-Hosted device. - [!NOTE] Shield box throughput testing setup explained in [Shield Box Test Setup](shield-box-test-setup.md). +> [!TIP] +> +> To measure the optimal performance, check out the [Shield Box Test Setup](shield-box-test-setup.md). 8. Troubleshooting: - Consider using a lower clock speed or checking your [hardware setup](docs/sdio.md#7-hardware-setup) if you experience communication problems. @@ -562,3 +561,4 @@ After flashing both the co-processor and host devices, follow these steps to con - [ESP32 Hardware Design Guidelines](https://www.espressif.com/en/products/hardware/esp32/resources) - [SDIO Protocol Basics](https://en.wikipedia.org/wiki/Serial_Peripheral_Interface) - [ESP SDIO Slave Communication](https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/protocols/esp_sdio_slave_protocol.html) + diff --git a/docs/spi_full_duplex.md b/docs/spi_full_duplex.md index 72398ed0..dad9738d 100644 --- a/docs/spi_full_duplex.md +++ b/docs/spi_full_duplex.md @@ -310,14 +310,11 @@ idf.py -p flash > > Put host in bootloader mode using following command and then retry flashing the co-processor > -> ```bash -> esptool.py -p --before default_reset --after no_reset run -> ``` - -Monitor the output (optional): -``` -idf.py -p monitor -``` +> `esptool.py -p **** --before default_reset --after no_reset run` +> +> Flash the co-processor and log the output: +> +> `idf.py -p flash monitor` ##### 7.4.2 Co-processor OTA Flashing (Subsequent Updates) @@ -549,7 +546,9 @@ After flashing both the co-processor and host devices, follow these steps to con Note: Replace `` with the IP address of the external STA, and `` with the IP address of the ESP-Hosted device. - Shield box throughput testing setup explained in [Shield Box Test Setup](shield-box-test-setup.md). +> [!TIP] +> +> To measure the optimal performance, check out the [Shield Box Test Setup](shield-box-test-setup.md). 8. Troubleshooting: - If you encounter issues, refer to section 6.3 for testing the SPI connection. diff --git a/docs/spi_half_duplex.md b/docs/spi_half_duplex.md index 0bed729a..ed35b539 100644 --- a/docs/spi_half_duplex.md +++ b/docs/spi_half_duplex.md @@ -547,14 +547,11 @@ idf.py -p flash > > Put host in bootloader mode using following command and then retry flashing the co-processor > -> ```bash -> esptool.py -p **** --before default_reset --after no_reset run -> ``` - -Monitor the output (optional): -``` -idf.py -p monitor -``` +> `esptool.py -p **** --before default_reset --after no_reset run` +> +> Flash the co-processor and log the output: +> +> `idf.py -p flash monitor` ##### 9.4.2 Co-processor OTA Flashing (Subsequent Updates) @@ -795,7 +792,9 @@ After flashing both the co-processor and host devices, follow these steps to con Note: Replace `` with the IP address of the external STA, and `` with the IP address of the ESP-Hosted device. - [!NOTE] Shield box throughput testing setup explained in [Shield Box Test Setup](shield-box-test-setup.md). +> [!TIP] +> +> To measure the optimal performance, check out the [Shield Box Test Setup](shield-box-test-setup.md). 8. Troubleshooting: - If you encounter issues, refer to section 6.3 for testing the SPI connection. diff --git a/docs/uart.md b/docs/uart.md index 144f4dad..0caa6eaf 100644 --- a/docs/uart.md +++ b/docs/uart.md @@ -187,14 +187,11 @@ idf.py -p flash > > Put host in bootloader mode using following command and then retry flashing the co-processor > -> ```bash -> esptool.py -p **** --before default_reset --after no_reset run -> ``` - -Monitor the output (optional): -``` -idf.py -p monitor -``` +> `esptool.py -p **** --before default_reset --after no_reset run` +> +> Flash the co-processor and log the output: +> +> `idf.py -p flash monitor` ##### 6.4.2 Co-processor OTA Flashing (Subsequent Updates) @@ -435,7 +432,9 @@ After flashing both the co-processor and host devices, follow these steps to con Note: Replace `` with the IP address of the external STA, and `` with the IP address of the ESP-Hosted device. - Shield box throughput testing setup explained in [Shield Box Test Setup](shield-box-test-setup.md). +> [!TIP] +> +> To measure the optimal performance, check out the [Shield Box Test Setup](shield-box-test-setup.md). 8. Troubleshooting: - If you encounter issues, refer to section 3.3 for checking the UART connection. From b401eddfc851ef5487afab9c85c2e447a955e7fe Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Thu, 5 Jun 2025 15:59:10 +0800 Subject: [PATCH 026/114] fix: re-enable hearbeat event subscription Fixes #55 --- host/drivers/rpc/wrap/rpc_wrap.c | 55 ++++++++++---------------------- 1 file changed, 17 insertions(+), 38 deletions(-) diff --git a/host/drivers/rpc/wrap/rpc_wrap.c b/host/drivers/rpc/wrap/rpc_wrap.c index 7053dae6..ee71d6d6 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.c +++ b/host/drivers/rpc/wrap/rpc_wrap.c @@ -75,7 +75,6 @@ static ctrl_cmd_t * RPC_DEFAULT_REQ(void) #define YES 1 #define NO 0 -#define MIN_TIMESTAMP_STR_SIZE 30 #define HEARTBEAT_DURATION_SEC 20 @@ -96,21 +95,9 @@ int rpc_deinit(void) return rpc_slaveif_deinit(); } -static char * get_timestamp_str(char *str, uint16_t str_size) -{ - if (str && str_size>=MIN_TIMESTAMP_STR_SIZE) { - time_t t = time(NULL); - struct tm tm = *localtime(&t); - sprintf(str, "%d-%02d-%02d %02d:%02d:%02d > ", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec); - return str; - } - return NULL; -} static int rpc_event_callback(ctrl_cmd_t * app_event) { - char ts[MIN_TIMESTAMP_STR_SIZE] = {'\0'}; - ESP_LOGV(TAG, "%u",app_event->msg_id); if (!app_event || (app_event->msg_type != RPC_TYPE__Event)) { if (app_event) @@ -127,19 +114,17 @@ static int rpc_event_callback(ctrl_cmd_t * app_event) switch(app_event->msg_id) { case RPC_ID__Event_ESPInit: { - ESP_LOGD(TAG, "Received Slave ESP Init"); + ESP_LOGI(TAG, "--- ESP Event: Slave ESP Init ---"); break; } case RPC_ID__Event_Heartbeat: { - ESP_LOGV(TAG, "%s ESP EVENT: Heartbeat event [%lu]", - get_timestamp_str(ts, MIN_TIMESTAMP_STR_SIZE), + ESP_LOGI(TAG, "ESP Event: Heartbeat event [%lu]", (long unsigned int)app_event->u.e_heartbeat.hb_num); break; } case RPC_ID__Event_AP_StaConnected: { wifi_event_ap_staconnected_t *p_e = &app_event->u.e_wifi_ap_staconnected; if (strlen((char*)p_e->mac)) { - ESP_LOGV(TAG, "%s ESP EVENT: SoftAP mode: connected station", - get_timestamp_str(ts, MIN_TIMESTAMP_STR_SIZE)); + ESP_LOGV(TAG, "ESP Event: SoftAP mode: connected station"); g_h.funcs->_h_event_wifi_post(WIFI_EVENT_AP_STACONNECTED, p_e, sizeof(wifi_event_ap_staconnected_t), HOSTED_BLOCK_MAX); } @@ -147,22 +132,19 @@ static int rpc_event_callback(ctrl_cmd_t * app_event) } case RPC_ID__Event_AP_StaDisconnected: { wifi_event_ap_stadisconnected_t *p_e = &app_event->u.e_wifi_ap_stadisconnected; if (strlen((char*)p_e->mac)) { - ESP_LOGV(TAG, "%s ESP EVENT: SoftAP mode: disconnected MAC", - get_timestamp_str(ts, MIN_TIMESTAMP_STR_SIZE)); + ESP_LOGV(TAG, "ESP Event: SoftAP mode: disconnected MAC"); g_h.funcs->_h_event_wifi_post(WIFI_EVENT_AP_STADISCONNECTED, p_e, sizeof(wifi_event_ap_stadisconnected_t), HOSTED_BLOCK_MAX); } break; } case RPC_ID__Event_StaConnected: { - ESP_LOGV(TAG, "%s ESP EVENT: Station mode: Connected", - get_timestamp_str(ts, MIN_TIMESTAMP_STR_SIZE)); + ESP_LOGV(TAG, "ESP Event: Station mode: Connected"); wifi_event_sta_connected_t *p_e = &app_event->u.e_wifi_sta_connected; g_h.funcs->_h_event_wifi_post(WIFI_EVENT_STA_CONNECTED, p_e, sizeof(wifi_event_sta_connected_t), HOSTED_BLOCK_MAX); break; } case RPC_ID__Event_StaDisconnected: { - ESP_LOGV(TAG, "%s ESP EVENT: Station mode: Disconnected", - get_timestamp_str(ts, MIN_TIMESTAMP_STR_SIZE)); + ESP_LOGV(TAG, "ESP Event: Station mode: Disconnected"); wifi_event_sta_disconnected_t *p_e = &app_event->u.e_wifi_sta_disconnected; g_h.funcs->_h_event_wifi_post(WIFI_EVENT_STA_DISCONNECTED, p_e, sizeof(wifi_event_sta_disconnected_t), HOSTED_BLOCK_MAX); @@ -173,25 +155,26 @@ static int rpc_event_callback(ctrl_cmd_t * app_event) switch (wifi_event_id) { case WIFI_EVENT_STA_START: - ESP_LOGV(TAG, "%s ESP EVENT: WiFi Event[%s]", - get_timestamp_str(ts, MIN_TIMESTAMP_STR_SIZE), "WIFI_EVENT_STA_START"); + ESP_LOGV(TAG, "ESP Event: wifi station started"); break; case WIFI_EVENT_STA_STOP: - ESP_LOGV(TAG, "%s ESP EVENT: WiFi Event[%s]", - get_timestamp_str(ts, MIN_TIMESTAMP_STR_SIZE), "WIFI_EVENT_STA_STOP"); + ESP_LOGV(TAG, "ESP Event: wifi station stopped"); break; case WIFI_EVENT_AP_START: - ESP_LOGD(TAG,"ESP EVENT: softap started"); + ESP_LOGD(TAG,"ESP Event: softap started"); break; case WIFI_EVENT_AP_STOP: - ESP_LOGD(TAG,"ESP EVENT: softap stopped"); + ESP_LOGD(TAG,"ESP Event: softap stopped"); + break; + + case WIFI_EVENT_HOME_CHANNEL_CHANGE: + ESP_LOGD(TAG,"ESP Event: Home channel changed"); break; default: - ESP_LOGV(TAG, "%s ESP EVENT: WiFi Event[%x]", - get_timestamp_str(ts, MIN_TIMESTAMP_STR_SIZE), wifi_event_id); + ESP_LOGW(TAG, "ESP Event: Event[%x] - unhandled", wifi_event_id); break; } /* inner switch case */ g_h.funcs->_h_event_wifi_post(wifi_event_id, 0, 0, HOSTED_BLOCK_MAX); @@ -199,15 +182,13 @@ static int rpc_event_callback(ctrl_cmd_t * app_event) break; } case RPC_ID__Event_StaScanDone: { wifi_event_sta_scan_done_t *p_e = &app_event->u.e_wifi_sta_scan_done; - ESP_LOGV(TAG, "%s ESP EVENT: StaScanDone", - get_timestamp_str(ts, MIN_TIMESTAMP_STR_SIZE)); + ESP_LOGV(TAG, "ESP Event: StaScanDone"); ESP_LOGV(TAG, "scan: status: %lu number:%u scan_id:%u", p_e->status, p_e->number, p_e->scan_id); g_h.funcs->_h_event_wifi_post(WIFI_EVENT_SCAN_DONE, p_e, sizeof(wifi_event_sta_scan_done_t), HOSTED_BLOCK_MAX); break; } default: { - ESP_LOGW(TAG, "%s Invalid event[0x%x] to parse", - get_timestamp_str(ts, MIN_TIMESTAMP_STR_SIZE), app_event->msg_id); + ESP_LOGW(TAG, "Invalid event[0x%x] to parse", app_event->msg_id); break; } } @@ -304,9 +285,7 @@ int rpc_register_event_callbacks(void) event_callback_table_t events[] = { { RPC_ID__Event_ESPInit, rpc_event_callback }, -#if 0 { RPC_ID__Event_Heartbeat, rpc_event_callback }, -#endif { RPC_ID__Event_AP_StaConnected, rpc_event_callback }, { RPC_ID__Event_AP_StaDisconnected, rpc_event_callback }, { RPC_ID__Event_WifiEventNoArgs, rpc_event_callback }, From 08bd7554462540f486f0f36a84d70657ffd33018 Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Mon, 9 Jun 2025 15:52:28 +0800 Subject: [PATCH 027/114] fix(esp32_bt) Fixed BT examples, check for BT version - for ESP32 as co-processor, check that BLE 5.0 was not enabled on host - updated `idf_component.yml` configurations - updated `sdkconfig.defaults` to disable BLE 5.0 in Bluedroid examples - added warning to BT documentation about BT version and ESP32 --- docs/bluetooth_design.md | 4 ++++ .../main/idf_component.yml | 6 +++++- .../sdkconfig.defaults | 3 +++ .../main/idf_component.yml | 6 +++++- .../sdkconfig.defaults | 13 ++++++++++--- .../host_bluedroid_host_only/main/idf_component.yml | 6 +++++- .../host_bluedroid_host_only/sdkconfig.defaults | 7 ++++++- .../main/idf_component.yml | 4 ++-- .../main/idf_component.yml | 6 +++++- host/api/include/esp_hosted_bt_config.h | 7 +++++++ host/drivers/bt/vhci_drv.c | 2 +- idf_component.yml | 2 +- 12 files changed, 54 insertions(+), 12 deletions(-) diff --git a/docs/bluetooth_design.md b/docs/bluetooth_design.md index 408f0b2a..9af184d3 100644 --- a/docs/bluetooth_design.md +++ b/docs/bluetooth_design.md @@ -39,6 +39,10 @@ hardware. > Check that the memory requirement for your preferred Bluetooth host > stack can be satisfied on the Host. +> [!WARNING] +> The ESP32 only supports Bluetooth v4.2. If you are using a ESP32 as +> the co-processor, the host Bluetooth stack must also be v4.2. + ESP-Hosted is Bluetooth stack agnostic. To showcase ESP-Hosted's Bluetooth support, both `esp-nimble` and `esp-bluedroid` are used here. Users can use their own preferred Bluetooth stack with some diff --git a/examples/host_bluedroid_ble_compatibility_test/main/idf_component.yml b/examples/host_bluedroid_ble_compatibility_test/main/idf_component.yml index 57b37833..50ffd415 100644 --- a/examples/host_bluedroid_ble_compatibility_test/main/idf_component.yml +++ b/examples/host_bluedroid_ble_compatibility_test/main/idf_component.yml @@ -1,5 +1,9 @@ dependencies: espressif/esp_wifi_remote: - version: "~0.5.1" + version: ">=0.10" + rules: + - if: "target in [esp32p4, esp32h2]" + espressif/esp_hosted: + version: "~2" rules: - if: "target in [esp32p4, esp32h2]" diff --git a/examples/host_bluedroid_ble_compatibility_test/sdkconfig.defaults b/examples/host_bluedroid_ble_compatibility_test/sdkconfig.defaults index 5b03a89c..30fef8e2 100644 --- a/examples/host_bluedroid_ble_compatibility_test/sdkconfig.defaults +++ b/examples/host_bluedroid_ble_compatibility_test/sdkconfig.defaults @@ -1,7 +1,10 @@ # # BT config +# - ESP32 co-processor only supports BLE 4.2 # CONFIG_BT_ENABLED=y +CONFIG_BT_CONTROLLER_DISABLED=y +CONFIG_BT_BLUEDROID_ENABLED=y CONFIG_BT_BLE_50_FEATURES_SUPPORTED=n CONFIG_BT_BLE_42_FEATURES_SUPPORTED=y # CONFIG_BT_LE_50_FEATURE_SUPPORT is not used on ESP32, ESP32-C3 and ESP32-S3. diff --git a/examples/host_bluedroid_bt_hid_mouse_device/main/idf_component.yml b/examples/host_bluedroid_bt_hid_mouse_device/main/idf_component.yml index 57b37833..50ffd415 100644 --- a/examples/host_bluedroid_bt_hid_mouse_device/main/idf_component.yml +++ b/examples/host_bluedroid_bt_hid_mouse_device/main/idf_component.yml @@ -1,5 +1,9 @@ dependencies: espressif/esp_wifi_remote: - version: "~0.5.1" + version: ">=0.10" + rules: + - if: "target in [esp32p4, esp32h2]" + espressif/esp_hosted: + version: "~2" rules: - if: "target in [esp32p4, esp32h2]" diff --git a/examples/host_bluedroid_bt_hid_mouse_device/sdkconfig.defaults b/examples/host_bluedroid_bt_hid_mouse_device/sdkconfig.defaults index f4e3f497..22e6ff19 100644 --- a/examples/host_bluedroid_bt_hid_mouse_device/sdkconfig.defaults +++ b/examples/host_bluedroid_bt_hid_mouse_device/sdkconfig.defaults @@ -1,18 +1,25 @@ # # BT config +# - ESP32 co-processor only supports BLE 4.2 # CONFIG_BT_ENABLED=y -CONFIG_BTDM_CTRL_MODE_BLE_ONLY=n -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=y -CONFIG_BTDM_CTRL_MODE_BTDM=n +CONFIG_BT_CONTROLLER_DISABLED=y +CONFIG_BT_BLUEDROID_ENABLED=y CONFIG_BT_CLASSIC_ENABLED=y CONFIG_BT_HID_ENABLED=y CONFIG_BT_HID_DEVICE_ENABLED=y +CONFIG_BT_BLE_50_FEATURES_SUPPORTED=n +CONFIG_BT_BLE_42_FEATURES_SUPPORTED=y +CONFIG_BTDM_CTRL_MODE_BLE_ONLY=n +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=y +CONFIG_BTDM_CTRL_MODE_BTDM=n # # Wi-Fi Remote +# - set ESP32 as default co-processor # CONFIG_ESP_WIFI_REMOTE_LIBRARY_HOSTED=y +CONFIG_SLAVE_IDF_TARGET_ESP32=y # # Enable ESP Hosted BT diff --git a/examples/host_bluedroid_host_only/main/idf_component.yml b/examples/host_bluedroid_host_only/main/idf_component.yml index 57b37833..50ffd415 100644 --- a/examples/host_bluedroid_host_only/main/idf_component.yml +++ b/examples/host_bluedroid_host_only/main/idf_component.yml @@ -1,5 +1,9 @@ dependencies: espressif/esp_wifi_remote: - version: "~0.5.1" + version: ">=0.10" + rules: + - if: "target in [esp32p4, esp32h2]" + espressif/esp_hosted: + version: "~2" rules: - if: "target in [esp32p4, esp32h2]" diff --git a/examples/host_bluedroid_host_only/sdkconfig.defaults b/examples/host_bluedroid_host_only/sdkconfig.defaults index 2cc253b9..02095c4c 100644 --- a/examples/host_bluedroid_host_only/sdkconfig.defaults +++ b/examples/host_bluedroid_host_only/sdkconfig.defaults @@ -1,15 +1,20 @@ # # BT config +# - ESP32 co-processor only supports BLE 4.2 # -CONFIG_BT_CONTROLLER_DISABLED=y CONFIG_BT_ENABLED=y +CONFIG_BT_CONTROLLER_DISABLED=y CONFIG_BT_BLUEDROID_ENABLED=y CONFIG_BT_CLASSIC_ENABLED=y +CONFIG_BT_BLE_50_FEATURES_SUPPORTED=n +CONFIG_BT_BLE_42_FEATURES_SUPPORTED=y # # Wi-Fi Remote +# - set ESP32 as default co-processor # CONFIG_ESP_WIFI_REMOTE_LIBRARY_HOSTED=y +CONFIG_SLAVE_IDF_TARGET_ESP32=y # # Enable ESP Hosted BT diff --git a/examples/host_nimble_bleprph_host_only_uart_hci/main/idf_component.yml b/examples/host_nimble_bleprph_host_only_uart_hci/main/idf_component.yml index aea470e2..6a234b8b 100644 --- a/examples/host_nimble_bleprph_host_only_uart_hci/main/idf_component.yml +++ b/examples/host_nimble_bleprph_host_only_uart_hci/main/idf_component.yml @@ -2,10 +2,10 @@ dependencies: nimble_peripheral_utils: path: ${IDF_PATH}/examples/bluetooth/nimble/common/nimble_peripheral_utils espressif/esp_wifi_remote: - version: "*" + version: ">=0.10" rules: - if: "target in [esp32p4, esp32h2]" espressif/esp_hosted: - version: "~1" + version: "~2" rules: - if: "target in [esp32p4, esp32h2]" diff --git a/examples/host_nimble_bleprph_host_only_vhci/main/idf_component.yml b/examples/host_nimble_bleprph_host_only_vhci/main/idf_component.yml index c2ddf618..6a234b8b 100644 --- a/examples/host_nimble_bleprph_host_only_vhci/main/idf_component.yml +++ b/examples/host_nimble_bleprph_host_only_vhci/main/idf_component.yml @@ -2,6 +2,10 @@ dependencies: nimble_peripheral_utils: path: ${IDF_PATH}/examples/bluetooth/nimble/common/nimble_peripheral_utils espressif/esp_wifi_remote: - version: "~0.5.1" + version: ">=0.10" + rules: + - if: "target in [esp32p4, esp32h2]" + espressif/esp_hosted: + version: "~2" rules: - if: "target in [esp32p4, esp32h2]" diff --git a/host/api/include/esp_hosted_bt_config.h b/host/api/include/esp_hosted_bt_config.h index 4b3aa325..6e95d262 100644 --- a/host/api/include/esp_hosted_bt_config.h +++ b/host/api/include/esp_hosted_bt_config.h @@ -6,6 +6,13 @@ #ifndef __ESP_HOSTED_BT_CONFIG_H__ #define __ESP_HOSTED_BT_CONFIG_H__ +// check: if co-processor SOC is ESP32, only BT BLE 4.2 is supported +#if CONFIG_SLAVE_IDF_TARGET_ESP32 +#if CONFIG_BT_BLE_50_FEATURES_SUPPORTED || CONFIG_BT_NIMBLE_50_FEATURE_SUPPORT +#error "ESP32 co-processor only supports BLE 4.2" +#endif +#endif + // Hosted BT defines for NimBLE #if CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE #define H_BT_HOST_ESP_NIMBLE 1 diff --git a/host/drivers/bt/vhci_drv.c b/host/drivers/bt/vhci_drv.c index 2a52cd9a..4a1fa850 100644 --- a/host/drivers/bt/vhci_drv.c +++ b/host/drivers/bt/vhci_drv.c @@ -216,7 +216,7 @@ int hci_rx_handler(interface_buffer_handle_t *buf_handle) s_callback.notify_host_recv(data, len_total_read); } - return ESP_FAIL; + return ESP_OK; } void hosted_hci_bluedroid_open(void) diff --git a/idf_component.yml b/idf_component.yml index 09761db5..e9b86827 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.0.4" +version: "2.0.5" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: From b89e330352ea6b362c5c28b9320d589128fe729b Mon Sep 17 00:00:00 2001 From: morris Date: Mon, 9 Jun 2025 15:47:57 +0800 Subject: [PATCH 028/114] refactor(port): use normal heap API to allocate aligned DMA buffer --- host/port/esp/freertos/include/os_wrapper.h | 13 ++----------- host/port/esp/freertos/src/os_wrapper.c | 14 ++------------ 2 files changed, 4 insertions(+), 23 deletions(-) diff --git a/host/port/esp/freertos/include/os_wrapper.h b/host/port/esp/freertos/include/os_wrapper.h index 19d5fe21..da061581 100644 --- a/host/port/esp/freertos/include/os_wrapper.h +++ b/host/port/esp/freertos/include/os_wrapper.h @@ -17,6 +17,7 @@ #include "hosted_os_abstraction.h" #include "esp_timer.h" #include "esp_event.h" +#include "esp_heap_caps.h" #include "esp_netif_types.h" #include "esp_wifi_types.h" #include "esp_wifi_default.h" @@ -102,17 +103,7 @@ enum { #define MALLOC(x) malloc(x) /* This is [malloc + aligned DMA] */ -#define MEM_ALLOC(x) ({ \ - esp_dma_mem_info_t dma_mem_info = { \ - .extra_heap_caps = 0, \ - .dma_alignment_bytes = 64, \ - }; \ - void *tmp_buf = NULL; \ - size_t actual_size = 0; \ - esp_err_t err = ESP_OK; \ - err = esp_dma_capable_malloc((x), &dma_mem_info, &tmp_buf, &actual_size);\ - if (err) tmp_buf = NULL; \ - tmp_buf;}) +#define MEM_ALLOC(x) heap_caps_aligned_alloc(64, (x), MALLOC_CAP_INTERNAL | MALLOC_CAP_DMA | MALLOC_CAP_8BIT) #define FREE(x) free(x); diff --git a/host/port/esp/freertos/src/os_wrapper.c b/host/port/esp/freertos/src/os_wrapper.c index 8506d53c..19b016b9 100644 --- a/host/port/esp/freertos/src/os_wrapper.c +++ b/host/port/esp/freertos/src/os_wrapper.c @@ -19,6 +19,7 @@ #include "esp_log.h" #include "driver/gpio.h" #include "esp_event.h" +#include "esp_heap_caps.h" #include "freertos/portmacro.h" #include "esp_macros.h" #include "esp_hosted_config.h" @@ -129,18 +130,7 @@ void *hosted_realloc(void *mem, size_t newsize) void *hosted_malloc_align(size_t size, size_t align) { - esp_dma_mem_info_t dma_mem_info = { - .extra_heap_caps = 0, - .dma_alignment_bytes = align, - }; - void *tmp_buf = NULL; - size_t actual_size = 0; - esp_err_t err = ESP_OK; - - err = esp_dma_capable_malloc((size), &dma_mem_info, &tmp_buf, &actual_size); - if (err) tmp_buf = NULL; - - return tmp_buf; + return heap_caps_aligned_alloc(align, size, MALLOC_CAP_INTERNAL | MALLOC_CAP_DMA | MALLOC_CAP_8BIT); } void hosted_free_align(void* ptr) From 4479ea812be4b224f14fadca228994f2a7b6e040 Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Sat, 7 Jun 2025 12:30:48 +0800 Subject: [PATCH 029/114] fix: Disable reserved fields by default, which break the idf portability --- Kconfig | 9 ++++++ host/drivers/rpc/core/rpc_req.c | 31 ++++++++++++++----- host/drivers/rpc/core/rpc_rsp.c | 21 +++++++++---- .../freertos/include/esp_hosted_wifi_config.h | 25 +++++++++++++-- 4 files changed, 70 insertions(+), 16 deletions(-) diff --git a/Kconfig b/Kconfig index 0262c156..e9b4b5c9 100644 --- a/Kconfig +++ b/Kconfig @@ -1344,4 +1344,13 @@ ESP32XX_SPI_HD_CLK_FREQ_RANGE_MAX := 40 Once the Wi-Fi is no more stressed, data throttling would be stopped, once slave Wi-Fi load is lower than this threshold endmenu + + config ESP_HOSTED_DECODE_WIFI_RESERVED_FIELD + bool "Decode WiFi configuration reserved field names" + default n + help + Enable this option to use legacy 'reserved' and 'he_reserved' field names + in WiFi configuration structures OR newer 'reserved1' and 'reserved2' + field names. + endmenu diff --git a/host/drivers/rpc/core/rpc_req.c b/host/drivers/rpc/core/rpc_req.c index 22331a84..800ef0f6 100644 --- a/host/drivers/rpc/core/rpc_req.c +++ b/host/drivers/rpc/core/rpc_req.c @@ -249,10 +249,23 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) if (p_a_sta->transition_disable) H_SET_BIT(WIFI_STA_CONFIG_1_transition_disable, p_c_sta->bitmask); -#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 5, 0) - WIFI_STA_CONFIG_1_SET_RESERVED_VAL(p_a_sta->reserved, p_c_sta->bitmask); -#else - WIFI_STA_CONFIG_1_SET_RESERVED_VAL(p_a_sta->reserved1, p_c_sta->bitmask); +#if H_WIFI_VHT_FIELDS_AVAILABLE + if (p_a_sta->vht_su_beamformee_disabled) + H_SET_BIT(WIFI_STA_CONFIG_2_vht_su_beamformee_disabled, p_c_sta->he_bitmask); + + if (p_a_sta->vht_mu_beamformee_disabled) + H_SET_BIT(WIFI_STA_CONFIG_2_vht_mu_beamformee_disabled, p_c_sta->he_bitmask); + + if (p_a_sta->vht_mcs8_enabled) + H_SET_BIT(WIFI_STA_CONFIG_2_vht_mcs8_enabled, p_c_sta->he_bitmask); +#endif + +#if H_DECODE_WIFI_RESERVED_FIELD + #if H_WIFI_NEW_RESERVED_FIELD_NAMES + WIFI_STA_CONFIG_2_SET_RESERVED_VAL(p_a_sta->reserved2, p_c_sta->he_bitmask); + #else + WIFI_STA_CONFIG_2_SET_RESERVED_VAL(p_a_sta->he_reserved, p_c_sta->he_bitmask); + #endif #endif p_c_sta->sae_pwe_h2e = p_a_sta->sae_pwe_h2e; @@ -284,9 +297,7 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) if (p_a_sta->he_trig_cqi_feedback_disabled) H_SET_BIT(WIFI_STA_CONFIG_2_he_trig_cqi_feedback_disabled_BIT, p_c_sta->he_bitmask); -#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 5, 0) - WIFI_STA_CONFIG_2_SET_RESERVED_VAL(p_a_sta->he_reserved, p_c_sta->he_bitmask); -#else +#if H_WIFI_VHT_FIELDS_AVAILABLE if (p_a_sta->vht_su_beamformee_disabled) H_SET_BIT(WIFI_STA_CONFIG_2_vht_su_beamformee_disabled, p_c_sta->he_bitmask); @@ -295,8 +306,14 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) if (p_a_sta->vht_mcs8_enabled) H_SET_BIT(WIFI_STA_CONFIG_2_vht_mcs8_enabled, p_c_sta->he_bitmask); +#endif +#if H_DECODE_WIFI_RESERVED_FIELD + #if H_WIFI_NEW_RESERVED_FIELD_NAMES WIFI_STA_CONFIG_2_SET_RESERVED_VAL(p_a_sta->reserved2, p_c_sta->he_bitmask); + #else + WIFI_STA_CONFIG_2_SET_RESERVED_VAL(p_a_sta->he_reserved, p_c_sta->he_bitmask); + #endif #endif RPC_REQ_COPY_BYTES(p_c_sta->sae_h2e_identifier, p_a_sta->sae_h2e_identifier, SAE_H2E_IDENTIFIER_LEN); diff --git a/host/drivers/rpc/core/rpc_rsp.c b/host/drivers/rpc/core/rpc_rsp.c index 54e6a293..809485e1 100644 --- a/host/drivers/rpc/core/rpc_rsp.c +++ b/host/drivers/rpc/core/rpc_rsp.c @@ -8,6 +8,7 @@ #include "esp_hosted_transport.h" #include "esp_hosted_bitmasks.h" #include "esp_idf_version.h" +#include "esp_hosted_config.h" DEFINE_LOG_TAG(rpc_rsp); @@ -267,10 +268,12 @@ int rpc_parse_rsp(Rpc *rpc_msg, ctrl_cmd_t *app_resp) p_a_sta->owe_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_owe_enabled, p_c_sta->bitmask); p_a_sta->transition_disable = H_GET_BIT(WIFI_STA_CONFIG_1_transition_disable, p_c_sta->bitmask); -#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 5, 0) - p_a_sta->reserved = WIFI_STA_CONFIG_1_GET_RESERVED_VAL(p_c_sta->bitmask); -#else +#if H_DECODE_WIFI_RESERVED_FIELD + #if H_WIFI_NEW_RESERVED_FIELD_NAMES p_a_sta->reserved1 = WIFI_STA_CONFIG_1_GET_RESERVED_VAL(p_c_sta->bitmask); + #else + p_a_sta->reserved = WIFI_STA_CONFIG_1_GET_RESERVED_VAL(p_c_sta->bitmask); + #endif #endif p_a_sta->sae_pwe_h2e = p_c_sta->sae_pwe_h2e; @@ -287,13 +290,19 @@ int rpc_parse_rsp(Rpc *rpc_msg, ctrl_cmd_t *app_resp) p_a_sta->he_trig_su_bmforming_feedback_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_trig_su_bmforming_feedback_disabled_BIT, p_c_sta->bitmask); p_a_sta->he_trig_mu_bmforming_partial_feedback_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_trig_mu_bmforming_partial_feedback_disabled_BIT, p_c_sta->bitmask); p_a_sta->he_trig_cqi_feedback_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_trig_cqi_feedback_disabled_BIT, p_c_sta->bitmask); -#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 5, 0) - p_a_sta->he_reserved = WIFI_STA_CONFIG_2_GET_RESERVED_VAL(p_c_sta->he_bitmask); -#else + +#if H_WIFI_VHT_FIELDS_AVAILABLE p_a_sta->vht_su_beamformee_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_vht_su_beamformee_disabled, p_c_sta->he_bitmask); p_a_sta->vht_mu_beamformee_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_vht_mu_beamformee_disabled, p_c_sta->he_bitmask); p_a_sta->vht_mcs8_enabled = H_GET_BIT(WIFI_STA_CONFIG_2_vht_mcs8_enabled, p_c_sta->he_bitmask); +#endif + +#if H_DECODE_WIFI_RESERVED_FIELD + #if H_WIFI_NEW_RESERVED_FIELD_NAMES p_a_sta->reserved2 = WIFI_STA_CONFIG_2_GET_RESERVED_VAL(p_c_sta->he_bitmask); + #else + p_a_sta->he_reserved = WIFI_STA_CONFIG_2_GET_RESERVED_VAL(p_c_sta->he_bitmask); + #endif #endif break; diff --git a/host/port/esp/freertos/include/esp_hosted_wifi_config.h b/host/port/esp/freertos/include/esp_hosted_wifi_config.h index b1e75d9f..7a93ebd3 100644 --- a/host/port/esp/freertos/include/esp_hosted_wifi_config.h +++ b/host/port/esp/freertos/include/esp_hosted_wifi_config.h @@ -6,11 +6,30 @@ #ifndef __ESP_HOSTED_WIFI_CONFIG_H__ #define __ESP_HOSTED_WIFI_CONFIG_H__ +#include "esp_idf_version.h" +#include "esp_hosted_config.h" + #if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 0) -// dual band API support available -#define H_WIFI_DUALBAND_SUPPORT 1 + /* dual band API support available */ + #define H_WIFI_DUALBAND_SUPPORT 1 +#else + #define H_WIFI_DUALBAND_SUPPORT 0 +#endif + +/* ESP-IDF 5.5.0 breaking change: reserved/he_reserved renamed to reserved1/reserved2 */ +#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 5, 0) + #define H_WIFI_NEW_RESERVED_FIELD_NAMES 1 + #define H_WIFI_VHT_FIELDS_AVAILABLE 1 #else -#define H_WIFI_DUALBAND_SUPPORT 0 + #define H_WIFI_NEW_RESERVED_FIELD_NAMES 0 + #define H_WIFI_VHT_FIELDS_AVAILABLE 0 #endif +/* User-controllable reserved field decoding - works regardless of IDF version */ +#ifdef CONFIG_ESP_HOSTED_DECODE_WIFI_RESERVED_FIELD + #define H_DECODE_WIFI_RESERVED_FIELD 1 +#else + #define H_DECODE_WIFI_RESERVED_FIELD 0 #endif + +#endif /* __ESP_HOSTED_WIFI_CONFIG_H__ */ From 1ef1a6aa16d6c3e9db307f98e164a890f6201434 Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Mon, 9 Jun 2025 19:23:32 +0800 Subject: [PATCH 030/114] fix: incorrect bitmasks used while decoding he params at slave --- Kconfig | 8 ++-- host/api/include/esp_hosted_api.h | 1 + idf_component.yml | 2 +- slave/main/slave_control.c | 80 +++++++++++++++++++++---------- 4 files changed, 62 insertions(+), 29 deletions(-) diff --git a/Kconfig b/Kconfig index e9b4b5c9..929e3567 100644 --- a/Kconfig +++ b/Kconfig @@ -1346,11 +1346,11 @@ ESP32XX_SPI_HD_CLK_FREQ_RANGE_MAX := 40 endmenu config ESP_HOSTED_DECODE_WIFI_RESERVED_FIELD - bool "Decode WiFi configuration reserved field names" + bool "Copy Wi-Fi configuration reserved field values" default n help - Enable this option to use legacy 'reserved' and 'he_reserved' field names - in WiFi configuration structures OR newer 'reserved1' and 'reserved2' - field names. + ESP-IDF Wi-Fi structures contain reserved bitmask values. + Enable this option if you want to copy these values between host and co-processor. + It is usually safe to ignore these reserved values. endmenu diff --git a/host/api/include/esp_hosted_api.h b/host/api/include/esp_hosted_api.h index 69b83795..94e1535e 100644 --- a/host/api/include/esp_hosted_api.h +++ b/host/api/include/esp_hosted_api.h @@ -18,6 +18,7 @@ extern "C" { #include "esp_wifi_remote.h" #include "esp_hosted_api_types.h" #include "esp_hosted_ota.h" +#include "esp_hosted_wifi_config.h" /** Exported variables **/ #define ESP_HOSTED_CHANNEL_CONFIG_DEFAULT() { \ diff --git a/idf_component.yml b/idf_component.yml index e9b86827..002a9b6e 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.0.5" +version: "2.0.6" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/slave_control.c b/slave/main/slave_control.c index 35323f64..3f7655e4 100644 --- a/slave/main/slave_control.c +++ b/slave/main/slave_control.c @@ -27,6 +27,21 @@ #include "esp_hosted_bitmasks.h" #include "esp_idf_version.h" +/* ESP-IDF 5.5.0: renamed reserved fields to reserved1/reserved2 + * and added VHT beamforming/MCS fields */ +#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 5, 0) +#define H_WIFI_NEW_RESERVED_FIELD_NAMES 1 +#define H_WIFI_VHT_FIELDS_AVAILABLE 1 +#else +#define H_WIFI_NEW_RESERVED_FIELD_NAMES 0 +#define H_WIFI_VHT_FIELDS_AVAILABLE 0 +#endif + +/* Slave-side: Always support reserved field decoding for maximum compatibility + * The host may or may not have CONFIG_ESP_HOSTED_DECODE_WIFI_RESERVED_FIELD enabled + */ +#define H_DECODE_WIFI_RESERVED_FIELD 1 + #include "coprocessor_fw_version.h" #define MAC_STR_LEN 17 @@ -876,32 +891,41 @@ static esp_err_t req_wifi_set_config(Rpc *req, Rpc *resp, void *priv_data) p_a_sta->ft_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_ft_enabled, p_c_sta->bitmask); p_a_sta->owe_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_owe_enabled, p_c_sta->bitmask); p_a_sta->transition_disable = H_GET_BIT(WIFI_STA_CONFIG_1_transition_disable, p_c_sta->bitmask); -#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 5, 0) - p_a_sta->reserved = WIFI_STA_CONFIG_1_GET_RESERVED_VAL(p_c_sta->bitmask); -#else +#if H_DECODE_WIFI_RESERVED_FIELD +#if H_WIFI_NEW_RESERVED_FIELD_NAMES p_a_sta->reserved1 = WIFI_STA_CONFIG_1_GET_RESERVED_VAL(p_c_sta->bitmask); +#else + p_a_sta->reserved = WIFI_STA_CONFIG_1_GET_RESERVED_VAL(p_c_sta->bitmask); +#endif #endif p_a_sta->sae_pwe_h2e = p_c_sta->sae_pwe_h2e; p_a_sta->failure_retry_cnt = p_c_sta->failure_retry_cnt; p_a_sta->he_dcm_set = H_GET_BIT(WIFI_STA_CONFIG_2_he_dcm_set_BIT, p_c_sta->he_bitmask); - // WIFI_HE_STA_CONFIG_he_dcm_max_constellation_tx is two bits wide + /* WIFI_STA_CONFIG_2_he_dcm_max_constellation_tx is two bits wide */ p_a_sta->he_dcm_max_constellation_tx = (p_c_sta->he_bitmask >> WIFI_STA_CONFIG_2_he_dcm_max_constellation_tx_BITS) & 0x03; - // WIFI_HE_STA_CONFIG_he_dcm_max_constellation_rx is two bits wide + /* WIFI_STA_CONFIG_2_he_dcm_max_constellation_rx is two bits wide */ p_a_sta->he_dcm_max_constellation_rx = (p_c_sta->he_bitmask >> WIFI_STA_CONFIG_2_he_dcm_max_constellation_rx_BITS) & 0x03; + p_a_sta->he_mcs9_enabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_mcs9_enabled_BIT, p_c_sta->he_bitmask); p_a_sta->he_su_beamformee_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_su_beamformee_disabled_BIT, p_c_sta->he_bitmask); - p_a_sta->he_trig_su_bmforming_feedback_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_trig_su_bmforming_feedback_disabled_BIT, p_c_sta->bitmask); - p_a_sta->he_trig_mu_bmforming_partial_feedback_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_trig_mu_bmforming_partial_feedback_disabled_BIT, p_c_sta->bitmask); - p_a_sta->he_trig_cqi_feedback_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_trig_cqi_feedback_disabled_BIT, p_c_sta->bitmask); -#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 5, 0) - p_a_sta->he_reserved = WIFI_STA_CONFIG_2_GET_RESERVED_VAL(p_c_sta->he_bitmask); -#else + p_a_sta->he_trig_su_bmforming_feedback_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_trig_su_bmforming_feedback_disabled_BIT, p_c_sta->he_bitmask); + p_a_sta->he_trig_mu_bmforming_partial_feedback_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_trig_mu_bmforming_partial_feedback_disabled_BIT, p_c_sta->he_bitmask); + p_a_sta->he_trig_cqi_feedback_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_trig_cqi_feedback_disabled_BIT, p_c_sta->he_bitmask); + +#if H_WIFI_VHT_FIELDS_AVAILABLE p_a_sta->vht_su_beamformee_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_vht_su_beamformee_disabled, p_c_sta->he_bitmask); p_a_sta->vht_mu_beamformee_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_vht_mu_beamformee_disabled, p_c_sta->he_bitmask); p_a_sta->vht_mcs8_enabled = H_GET_BIT(WIFI_STA_CONFIG_2_vht_mcs8_enabled, p_c_sta->he_bitmask); +#endif + +#if H_DECODE_WIFI_RESERVED_FIELD +#if H_WIFI_NEW_RESERVED_FIELD_NAMES p_a_sta->reserved2 = WIFI_STA_CONFIG_2_GET_RESERVED_VAL(p_c_sta->he_bitmask); +#else + p_a_sta->he_reserved = WIFI_STA_CONFIG_2_GET_RESERVED_VAL(p_c_sta->he_bitmask); +#endif #endif /* Avoid using fast scan, which leads to faster SSID selection, @@ -997,25 +1021,29 @@ static esp_err_t req_wifi_get_config(Rpc *req, Rpc *resp, void *priv_data) if (p_a_sta->transition_disable) H_SET_BIT(WIFI_STA_CONFIG_1_transition_disable, p_c_sta->bitmask); -#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 5, 0) - WIFI_STA_CONFIG_1_SET_RESERVED_VAL(p_a_sta->reserved, p_c_sta->bitmask); -#else +#if H_DECODE_WIFI_RESERVED_FIELD +#if H_WIFI_NEW_RESERVED_FIELD_NAMES WIFI_STA_CONFIG_1_SET_RESERVED_VAL(p_a_sta->reserved1, p_c_sta->bitmask); +#else + WIFI_STA_CONFIG_1_SET_RESERVED_VAL(p_a_sta->reserved, p_c_sta->bitmask); +#endif #endif p_c_sta->sae_pwe_h2e = p_a_sta->sae_pwe_h2e; p_c_sta->failure_retry_cnt = p_a_sta->failure_retry_cnt; + /* HE field handling */ if (p_a_sta->he_dcm_set) H_SET_BIT(WIFI_STA_CONFIG_2_he_dcm_set_BIT, p_c_sta->he_bitmask); - // WIFI_HE_STA_CONFIG_he_dcm_max_constellation_tx is two bits wide - if (p_a_sta->he_dcm_max_constellation_tx) - p_c_sta->he_bitmask |= ((p_a_sta->he_dcm_max_constellation_tx & 0x03) << WIFI_STA_CONFIG_2_he_dcm_max_constellation_tx_BITS); - - // WIFI_HE_STA_CONFIG_he_dcm_max_constellation_rx is two bits wide - if (p_a_sta->he_dcm_max_constellation_rx) - p_c_sta->he_bitmask |= ((p_a_sta->he_dcm_max_constellation_rx & 0x03) << WIFI_STA_CONFIG_2_he_dcm_max_constellation_rx_BITS); + /* WIFI_STA_CONFIG_2_he_dcm_max_constellation_tx is two bits wide */ + if (p_a_sta->he_dcm_max_constellation_tx & 0x03) { + p_c_sta->he_bitmask |= (p_a_sta->he_dcm_max_constellation_tx & 0x03) << WIFI_STA_CONFIG_2_he_dcm_max_constellation_tx_BITS; + } + /* WIFI_STA_CONFIG_2_he_dcm_max_constellation_rx is two bits wide */ + if (p_a_sta->he_dcm_max_constellation_rx & 0x03) { + p_c_sta->he_bitmask |= (p_a_sta->he_dcm_max_constellation_rx & 0x03) << WIFI_STA_CONFIG_2_he_dcm_max_constellation_rx_BITS; + } if (p_a_sta->he_mcs9_enabled) H_SET_BIT(WIFI_STA_CONFIG_2_he_mcs9_enabled_BIT, p_c_sta->he_bitmask); @@ -1032,9 +1060,7 @@ static esp_err_t req_wifi_get_config(Rpc *req, Rpc *resp, void *priv_data) if (p_a_sta->he_trig_cqi_feedback_disabled) H_SET_BIT(WIFI_STA_CONFIG_2_he_trig_cqi_feedback_disabled_BIT, p_c_sta->he_bitmask); -#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 5, 0) - WIFI_STA_CONFIG_2_SET_RESERVED_VAL(p_a_sta->he_reserved, p_c_sta->he_bitmask); -#else +#if H_WIFI_VHT_FIELDS_AVAILABLE if (p_a_sta->vht_su_beamformee_disabled) H_SET_BIT(WIFI_STA_CONFIG_2_vht_su_beamformee_disabled, p_c_sta->he_bitmask); @@ -1043,8 +1069,14 @@ static esp_err_t req_wifi_get_config(Rpc *req, Rpc *resp, void *priv_data) if (p_a_sta->vht_mcs8_enabled) H_SET_BIT(WIFI_STA_CONFIG_2_vht_mcs8_enabled, p_c_sta->he_bitmask); +#endif +#if H_DECODE_WIFI_RESERVED_FIELD +#if H_WIFI_NEW_RESERVED_FIELD_NAMES WIFI_STA_CONFIG_2_SET_RESERVED_VAL(p_a_sta->reserved2, p_c_sta->he_bitmask); +#else + WIFI_STA_CONFIG_2_SET_RESERVED_VAL(p_a_sta->he_reserved, p_c_sta->he_bitmask); +#endif #endif break; From 83a9fc31094ce44313c5809ae3906954cee8126b Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Thu, 29 May 2025 15:57:21 +0800 Subject: [PATCH 031/114] feature(sdio_rx_queue_size): Allow SDIO Tx/Rx Queue Size to be adjusted - corrected: `Rx` is now `Tx` on co-processor, adjusted code, added - added correct `Rx` as Kconfig option - use Kconfig to adjust Tx and Rx queue size on co-processor - added SDIO documentation on effect of changing Tx and Rx queue size - on Host Rx Raw throughput - on Host heap memory used to receive Tx data from co-processor --- docs/performance_optimization.md | 24 ++++----- docs/sdio.md | 86 ++++++++++++++++++++++++++++++-- slave/main/Kconfig.projbuild | 6 +++ slave/main/sdio_slave_api.c | 34 +++++++------ 4 files changed, 116 insertions(+), 34 deletions(-) diff --git a/docs/performance_optimization.md b/docs/performance_optimization.md index 9851bdfd..b7cf70c6 100644 --- a/docs/performance_optimization.md +++ b/docs/performance_optimization.md @@ -16,7 +16,7 @@ CONFIG_ESP_WIFI_TX_BA_WIN=32 CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y CONFIG_ESP_WIFI_RX_BA_WIN=32 -# TCP/IP Performance +# TCP/IP Performance CONFIG_LWIP_TCP_SND_BUF_DEFAULT=65534 CONFIG_LWIP_TCP_WND_DEFAULT=65534 CONFIG_LWIP_TCP_RECVMBOX_SIZE=64 @@ -40,8 +40,11 @@ CONFIG_ESP_HOSTED_SDIO_CLOCK_FREQ_KHZ=40000 CONFIG_ESP_HOSTED_SDIO_BUS_WIDTH=4 ``` +> [!NOTE] +> See [Performance and Memory Usage](sdio.md#9-performance-and-memory-usage) on the trade-off between SDIO Performance and Memory Use + ### SPI Full-Duplex -- **Clock Speed**: ESP32: ≤10 MHz, Others: ≤40 MHz +- **Clock Speed**: ESP32: ≤10 MHz, Others: ≤40 MHz - **Hardware**: Use IO_MUX pins, short traces (≤10cm for jumpers) - **Checksum**: Mandatory (SPI hardware lacks error detection) @@ -49,7 +52,7 @@ CONFIG_ESP_HOSTED_SDIO_BUS_WIDTH=4 CONFIG_ESP_HOSTED_SPI_CLK_FREQ=40 ``` -### SPI Half-Duplex +### SPI Half-Duplex - **Data Lines**: Use 4-line (Quad SPI) mode - **Similar optimizations as SPI Full-Duplex** @@ -65,7 +68,7 @@ CONFIG_ESP_HOSTED_SPI_CLK_FREQ=40 # Reduce queue sizes CONFIG_ESP_HOSTED_SDIO_TX_Q_SIZE=10 # Default: 20 CONFIG_ESP_HOSTED_SDIO_RX_Q_SIZE=10 # Default: 20 - + # Enable memory pooling CONFIG_ESP_HOSTED_USE_MEMPOOL=y ``` @@ -83,24 +86,17 @@ CONFIG_ESP_HOSTED_SPI_CLK_FREQ=40 4. **Pull-ups**: Required for SDIO (51kΩ) on CMD, D0-D3 lines ### PCB Design Checklist -- [ ] Equal trace lengths for communication signals +- [ ] Equal trace lengths for communication signals - [ ] Ground plane for signal stability - [ ] Controlled impedance traces (50Ω typical) - [ ] Series termination resistors for high-speed signals - [ ] Extra GPIOs reserved for future features (deep sleep, etc.) - - ## Development Workflow 1. **Proof of Concept**: Start with jumper wires, low clock speeds 2. **Incremental Optimization**: Increase transport clock step by step 3. **Hardware Validation**: Move to PCB for final validation 4. **Performance Tuning**: Optimize buffers and configurations - - - - - -4. **Disable features**: Any unsued components from ESP-IDF or -ESP-Hosted-MCU features could be disabled for more memory +5. **Disable features**: Any unsued components from ESP-IDF or +ESP-Hosted-MCU features could be disabled for more memory availability. diff --git a/docs/sdio.md b/docs/sdio.md index 6d0f3a27..219d02d7 100644 --- a/docs/sdio.md +++ b/docs/sdio.md @@ -24,7 +24,9 @@ If you wish to skip the theory, you can refer the [Quick Start Guide](#1-quick-s 8. [Testing and Troubleshooting](#8-testing-and-troubleshooting) -9. [References](#9-references) +9. [Performance and Memory Usage](#9-performance-and-memory-usage) || [9.1 Stream and Packet Mode](#91-stream-and-packet-mode) || [9.2 Double Buffering on the Host](#92-double-buffering-on-the-host) || [9.3 Reducing Memory Usage](#93-reducing-memory-usage) || [9.4 Switching to Packet Mode](#94-switching-to-packet-mode) + +10. [References](#10-references) @@ -37,6 +39,7 @@ This section provides a brief overview of how to get started with ESP-Hosted usi - [6. Flashing the Co-processor](#6-flashing-the-co-processor) - [7. Flashing the Host](#7-flashing-the-host) - [8. Testing and Troubleshooting](#8-testing-and-troubleshooting) +- [9. Performance and Memory Usage](#9-performance-and-memory-usage) These sections will guide you through the process of flashing both the co-processor and host devices, setting up the hardware connections, and verifying successful communication. @@ -555,10 +558,83 @@ After flashing both the co-processor and host devices, follow these steps to con - Use a logic analyzer or oscilloscope to verify the SDIO signals. - Ensure that the power supply to both devices is stable and within the required voltage levels. -## 9 References +## 9 Performance and Memory Usage + +Quick summary: + +- for maximum network performance, at the cost of more memory usage on host and co-processor, use SDIO Streaming Mode (default mode of operation) +- for lower memory usage, at the cost of lower network performance, use [SDIO Packet Mode](#94-switching-to-packet-mode) + +### 9.1 Stream and Packet Mode + +The co-processor SDIO can operate in two modes: Streaming Mode and Packet Mode. + +| **Streaming Mode** | **Packet Mode** | +| --- | --- | +| Co-processor combines multiple queued Tx packets together into one large packet | Co-processor queues individual Tx packets | +| Host fetches the large packet as one SDIO transfer | Host fetches each packet one at a time | +| Host breaks the large packet back into individual packets to send to the Rx queue | Host sends each packet to the Rx queue | +| More efficient (less SDIO overhead), but requires more memory at Host to hold the large packet | Less efficient (higher SDIO overhead for each packet), but minimises memory required at Host | + +### 9.2 Double Buffering on the Host + +The Host implements a double-buffering scheme to receive data. One thread fetches data (using hardware DMA) from the co-processor and stores it in one Rx buffer, while another thread breaks up previously received data into packets for processing. + +### 9.3 Reducing Memory Usage in Streaming Mode + +#### 9.3.1 Host Receive + +> [!NOTE] +> **Host Receive**: Router --Network Data--> Co-processor --SDIO--> Host + +In SDIO streaming mode, the host receives SDIO data from the co-processor in one large SDIO transfer. For this reason, **Streaming mode consumes more heap memory** compared to Packet mode, and has a higher throughput (less SDIO overhead). + +For Host systems with high heap memory usage, you can reduce the amount of heap memory used by ESP-Hosted for buffers, at the cost of reduced throughput, by adjusting the number of Tx buffers used by the co-processor. + +**On the co-processor**: run `idf.py menuconfig` ---> `Example Configuration` ---> `SDIO Configuration` and adjust `SDIO Tx queue size`. The default queue size is `20`. + +The table below shows the effect of changing `SDIO Tx queue size` on throughput and memory usage on the Host. The throughput numbers are obtained by using the RawTP option in ESP-Hosted to send / receive raw SDIO data. + +| SDIO Tx queue size | Host Rx Raw Throughput (Mbits/s) | Memory Used by Buffers (Tested) | Memory Used by Buffers (Theoretical) | +| ---: | ---: | ---: | ---: | +| 5 | 54 | 12,288 | 15,360 | +| 10 | 70 | 26,624 | 30,720 | +| 15 | 76 | 41,984 | 46,080 | +| 20 | 80 | 56,320 | 61,440 | +| 25 | 82 | 65,536 | 76,800 | +| 30 | 84 | 65,536 | 92,160 | + +> [!NOTE] +> The SDIO packet size is 1536 bytes. The co-processor can send at most `(Tx queue size) * 1536` bytes. Since the Host does double buffering, the theoretical Buffer Size needed is `2 * (Tx queue size) * 1536`. + +From the table above, throughput is more or less stagnant on and above Rx queue size of `25`. For a good trade off between memory consumption vs performance, the Rx queue sizes are currently defaulted to `20`. + +#### 9.3.2 Host Transmit + +> [!NOTE] +> **Host Transmit**: Host --SDIO--> Co-Processor --Network Data--> Router + +To reduce memory usage on the co-processor, you can reduce the number of buffers the co-processor uses to receive data from the Host. + +**On the co-processor**: run `idf.py menuconfig` ---> `Example Configuration` ---> `SDIO Configuration` and adjust `SDIO Rx queue size`. The default queue size is `20`. + +Reducing the number of Rx buffers on the co-processor can affect the Tx throughput from the Host if the number of Rx buffers is set to a small value. + +### 9.4 Switching to Packet Mode + +For mimimal memory usage with a lower throughput, you can switch to Packet Mode. To do this: + +- on the co-processor: run `idf.py menuconfig` ---> `Example Configuration` ---> `SDIO Configuration` and untoggle `Enable SDIO Streaming Mode` +- on the host: run `idf.py menuconfig` ---> `Component config` ---> `ESP-Hosted config` ---> `Hosted SDIO COnfiguration` ---> `SDIO Receive Optimization` and select either `No optimization` or `Always Rx Max Packet size`. `Always Rx Max Packet size` will give a slightly higher throughput. + +In Packet Mode, the host uses `2 * 1536` or `3,072` bytes of memory for Rx buffers. + +- with `No optimization`, Rx Raw Throughput is 33.0 Mbits/s +- with `Always Rx Max Packet size`, Rx Raw Throughput is 33.2 Mbits/s + +## 10 References - [ESP-IDF Programming Guide](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/) - [ESP32 Hardware Design Guidelines](https://www.espressif.com/en/products/hardware/esp32/resources) -- [SDIO Protocol Basics](https://en.wikipedia.org/wiki/Serial_Peripheral_Interface) -- [ESP SDIO Slave Communication](https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/protocols/esp_sdio_slave_protocol.html) - +- [ESP SDIO Slave Communication](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/protocols/esp_sdio_slave_protocol.html) +- [ESP SDIO Card Slave Driver](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/sdio_slave.html) diff --git a/slave/main/Kconfig.projbuild b/slave/main/Kconfig.projbuild index f1e96a6b..4025af24 100644 --- a/slave/main/Kconfig.projbuild +++ b/slave/main/Kconfig.projbuild @@ -354,6 +354,12 @@ menu "Example Configuration" bool "Send at negative edge, sample at negative edge" endchoice + config ESP_SDIO_TX_Q_SIZE + int "SDIO TX queue size" + default 20 + help + Very small TX queue will lower ESP --> SDIO -- Host data rate + config ESP_SDIO_RX_Q_SIZE int "SDIO RX queue size" default 20 diff --git a/slave/main/sdio_slave_api.c b/slave/main/sdio_slave_api.c index 3207d915..40ccbe0a 100644 --- a/slave/main/sdio_slave_api.c +++ b/slave/main/sdio_slave_api.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: Apache-2.0 -// Copyright 2015-2021 Espressif Systems (Shanghai) PTE LTD +// Copyright 2015-2025 Espressif Systems (Shanghai) PTE LTD // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -32,10 +32,10 @@ #include "esp_hosted_transport_init.h" //#define SIMPLIFIED_SDIO_SLAVE 1 -#define SDIO_SLAVE_QUEUE_SIZE 20 -#define BUFFER_SIZE MAX_TRANSPORT_BUF_SIZE -#define BUFFER_NUM 20 -static uint8_t sdio_slave_rx_buffer[BUFFER_NUM][BUFFER_SIZE]; +#define SDIO_SLAVE_QUEUE_SIZE CONFIG_ESP_SDIO_TX_Q_SIZE +#define NUM_RX_BUFFERS CONFIG_ESP_SDIO_RX_Q_SIZE +#define BUFFER_SIZE MAX_TRANSPORT_BUF_SIZE +static uint8_t sdio_slave_rx_buffer[NUM_RX_BUFFERS][BUFFER_SIZE]; #define SDIO_MEMPOOL_NUM_BLOCKS 40 static struct hosted_mempool * buf_mp_tx_g; @@ -44,7 +44,7 @@ interface_context_t context; interface_handle_t if_handle_g; static const char TAG[] = "SDIO_SLAVE"; -#define SDIO_RX_QUEUE_SIZE CONFIG_ESP_SDIO_RX_Q_SIZE +#define SDIO_TX_QUEUE_SIZE CONFIG_ESP_SDIO_TX_Q_SIZE #if !SIMPLIFIED_SDIO_SLAVE static SemaphoreHandle_t sdio_rx_sem; @@ -135,7 +135,7 @@ static void start_rx_data_throttling_if_needed(void) pkt_stats.slave_wifi_rx_msg_loaded = queue_load; #endif - load_percent = (queue_load*100/SDIO_RX_QUEUE_SIZE); + load_percent = (queue_load*100/NUM_RX_BUFFERS); if (load_percent > slv_cfg_g.throttle_high_threshold) { slv_state_g.current_throttling = 1; ESP_LOGV(TAG, "start data throttling at host"); @@ -156,7 +156,7 @@ static void stop_rx_data_throttling_if_needed(void) pkt_stats.slave_wifi_rx_msg_loaded = queue_load; #endif - load_percent = (queue_load*100/SDIO_RX_QUEUE_SIZE); + load_percent = (queue_load*100/NUM_RX_BUFFERS); if (load_percent < slv_cfg_g.throttle_low_threshold) { slv_state_g.current_throttling = 0; ESP_LOGV(TAG, "stop data throttling at host"); @@ -244,9 +244,13 @@ void generate_startup_event(uint8_t cap, uint32_t ext_cap) *pos = LENGTH_1_BYTE; pos++;len++; *pos = raw_tp_cap; pos++;len++; + *pos = ESP_PRIV_TX_Q_SIZE; pos++;len++; + *pos = LENGTH_1_BYTE; pos++;len++; + *pos = SDIO_TX_QUEUE_SIZE; pos++;len++; + *pos = ESP_PRIV_RX_Q_SIZE; pos++;len++; *pos = LENGTH_1_BYTE; pos++;len++; - *pos = SDIO_RX_QUEUE_SIZE; pos++;len++; + *pos = NUM_RX_BUFFERS; pos++;len++; /* TLVs end */ event->event_len = len; @@ -316,7 +320,7 @@ static interface_handle_t * sdio_init(void) #else #error Invalid SDIO bus speed selection #endif - .timing = SDIO_SLAVE_TIMING, + .timing = SDIO_SLAVE_TIMING, }; #if CONFIG_ESP_SDIO_STREAMING_MODE @@ -325,20 +329,20 @@ static interface_handle_t * sdio_init(void) ESP_LOGI(TAG, "%s: sending mode: SDIO_SLAVE_SEND_PACKET", __func__); #endif #if defined(CONFIG_IDF_TARGET_ESP32C6) - ESP_LOGI(TAG, "%s: ESP32-C6 SDIO RxQ[%d] timing[%u]\n", __func__, SDIO_RX_QUEUE_SIZE, config.timing); + ESP_LOGI(TAG, "%s: ESP32-C6 SDIO TxQ[%d] timing[%u]\n", __func__, SDIO_TX_QUEUE_SIZE, config.timing); #else - ESP_LOGI(TAG, "%s: ESP32 SDIO RxQ[%d] timing[%u]\n", __func__, SDIO_RX_QUEUE_SIZE, config.timing); + ESP_LOGI(TAG, "%s: ESP32 SDIO TxQ[%d] timing[%u]\n", __func__, SDIO_TX_QUEUE_SIZE, config.timing); #endif #if !SIMPLIFIED_SDIO_SLAVE sdio_send_queue_sem = xSemaphoreCreateCounting(SDIO_SLAVE_QUEUE_SIZE, SDIO_SLAVE_QUEUE_SIZE); assert(sdio_send_queue_sem); - sdio_rx_sem = xSemaphoreCreateCounting(SDIO_RX_QUEUE_SIZE*3, 0); + sdio_rx_sem = xSemaphoreCreateCounting(NUM_RX_BUFFERS * MAX_PRIORITY_QUEUES, 0); assert(sdio_rx_sem != NULL); for (prio_q_idx=0; prio_q_idx Date: Wed, 11 Jun 2025 10:18:24 +0800 Subject: [PATCH 032/114] fix(ota): handle HTTP_EVENT_ON_HEADERS_COMPLETE event --- .gitlab-ci.yml | 3 ++- host/port/esp/freertos/src/esp_hosted_ota.c | 4 ++++ idf_component.yml | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ee58fcb4..fe1d81f8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -100,4 +100,5 @@ build_idf_master: matrix: - IDF_TARGET: ["esp32p4", "esp32h2"] IDF_SLAVE_TARGET: ["esp32c6", "esp32c5", "esp32", "esp32c2", "esp32c3", "esp32s3" ] - IDF_EXAMPLE_PATH: [examples/wifi/iperf] + IDF_EXAMPLE_PATH: examples/protocols/mqtt/tcp + # IDF_EXAMPLE_PATH: [examples/wifi/iperf] diff --git a/host/port/esp/freertos/src/esp_hosted_ota.c b/host/port/esp/freertos/src/esp_hosted_ota.c index a0aae214..332862f2 100644 --- a/host/port/esp/freertos/src/esp_hosted_ota.c +++ b/host/port/esp/freertos/src/esp_hosted_ota.c @@ -57,6 +57,10 @@ static esp_err_t http_client_event_handler(esp_http_client_event_t *evt) case HTTP_EVENT_REDIRECT: ESP_LOGW(TAG, "HTTP_EVENT_REDIRECT"); break; + // Other trivial events like HTTP_EVENT_ON_HEADERS_COMPLETE can be handled when needed + default: + ESP_LOGD(TAG, "Unhandled event id: %d", evt->event_id); + break; } return ESP_OK; diff --git a/idf_component.yml b/idf_component.yml index 002a9b6e..4e751500 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.0.6" +version: "2.0.7" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: From e5eea34d086a4fc81e1341f9040eec7b6fe13db0 Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Wed, 11 Jun 2025 18:39:08 +0800 Subject: [PATCH 033/114] fix(ci_for_master): CI with mqtt/tcp and iperf on master branch - CI build with mqtt/tcp and iperf on master branch --- .gitlab-ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fe1d81f8..bcd622ea 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -100,5 +100,4 @@ build_idf_master: matrix: - IDF_TARGET: ["esp32p4", "esp32h2"] IDF_SLAVE_TARGET: ["esp32c6", "esp32c5", "esp32", "esp32c2", "esp32c3", "esp32s3" ] - IDF_EXAMPLE_PATH: examples/protocols/mqtt/tcp - # IDF_EXAMPLE_PATH: [examples/wifi/iperf] + IDF_EXAMPLE_PATH: [examples/protocols/mqtt/tcp, examples/wifi/iperf] From c0e349b7ab822ecf98aeff511c479d35a9edfdda Mon Sep 17 00:00:00 2001 From: Christian Krenslehner Date: Wed, 11 Jun 2025 14:26:06 +0200 Subject: [PATCH 034/114] Fix typos --- docs/bluetooth_design.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/bluetooth_design.md b/docs/bluetooth_design.md index 9af184d3..cc52e89c 100644 --- a/docs/bluetooth_design.md +++ b/docs/bluetooth_design.md @@ -49,7 +49,7 @@ here. Users can use their own preferred Bluetooth stack with some porting effort. `esp-nimble` is a fork of Apache NimBLE and available from -ESP-IDF. The NimBLE Bluetooth slack proves Bluetooth Low Energy (BLE) +ESP-IDF. The NimBLE Bluetooth stack provides Bluetooth Low Energy (BLE) only functionality. `esp-bluedroid` is a fork of the Bluedroid based stack and available From 08c6580a4970f152f1a05ba893503d2be8f04939 Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Thu, 12 Jun 2025 17:57:58 +0530 Subject: [PATCH 035/114] fix: Build issue due to inclusion of esp_hosted_wifi_config.h in public headers --- CMakeLists.txt | 59 +++++++++---------- .../api/include/esp_hosted_wifi_remote_glue.h | 44 ++++++++++++++ .../esp_hosted_api_priv.h} | 36 +++-------- host/api/src/esp_hosted_api.c | 25 ++------ host/api/src/esp_wifi_weak.c | 2 +- host/drivers/rpc/wrap/rpc_wrap.c | 1 - host/drivers/rpc/wrap/rpc_wrap.h | 4 +- host/esp_hosted.h | 29 ++++++++- host/esp_hosted_host_init.c | 2 +- idf_component.yml | 2 +- 10 files changed, 119 insertions(+), 85 deletions(-) create mode 100644 host/api/include/esp_hosted_wifi_remote_glue.h rename host/api/{include/esp_hosted_api.h => priv/esp_hosted_api_priv.h} (80%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 41e4423f..3f79b2fc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,83 +3,82 @@ if(CONFIG_ESP_HOSTED_ENABLED) set(FG_root_dir ".") set(host_dir "${FG_root_dir}/host") - set(COMPONENT_SRCS "${host_dir}/esp_hosted_host_init.c" "${host_dir}/api/src/esp_wifi_weak.c" "${host_dir}/api/src/esp_hosted_api.c" "${host_dir}/drivers/transport/transport_drv.c" "${host_dir}/drivers/serial/serial_ll_if.c" "${host_dir}/utils/common.c" "${host_dir}/utils/util.c" "${host_dir}/utils/stats.c" "${host_dir}/drivers/serial/serial_drv.c") + set(srcs "${host_dir}/esp_hosted_host_init.c" "${host_dir}/api/src/esp_wifi_weak.c" "${host_dir}/api/src/esp_hosted_api.c" "${host_dir}/drivers/transport/transport_drv.c" "${host_dir}/drivers/serial/serial_ll_if.c" "${host_dir}/utils/common.c" "${host_dir}/utils/util.c" "${host_dir}/utils/stats.c" "${host_dir}/drivers/serial/serial_drv.c") # only these directories are public. Others are private - set(COMPONENT_ADD_PUBLIC_INCLUDEDIRS "${host_dir}" "${host_dir}/api/include") + set(pub_include "${host_dir}" "${host_dir}/api/include") - set(COMPONENT_ADD_INCLUDEDIRS "${host_dir}/drivers/transport" "${host_dir}/drivers/transport/spi" "${host_dir}/drivers/transport/sdio" "${host_dir}/drivers/serial" "${host_dir}/utils") + set(priv_include "${host_dir}/drivers/transport" "${host_dir}/drivers/transport/spi" "${host_dir}/drivers/transport/sdio" "${host_dir}/drivers/serial" "${host_dir}/utils" "${host_dir}/api/priv") # rpc files - wrap -> slaveif -> core set(rpc_dir "${host_dir}/drivers/rpc") set(rpc_core_dir "${rpc_dir}/core") set(rpc_slaveif_dir "${rpc_dir}/slaveif") set(rpc_wrap_dir "${rpc_dir}/wrap") - list(APPEND COMPONENT_SRCS "${rpc_core_dir}/rpc_core.c" "${rpc_core_dir}/rpc_req.c" "${rpc_core_dir}/rpc_rsp.c" "${rpc_core_dir}/rpc_evt.c" + list(APPEND srcs "${rpc_core_dir}/rpc_core.c" "${rpc_core_dir}/rpc_req.c" "${rpc_core_dir}/rpc_rsp.c" "${rpc_core_dir}/rpc_evt.c" "${rpc_slaveif_dir}/rpc_slave_if.c" "${rpc_wrap_dir}/rpc_wrap.c") - list(APPEND COMPONENT_ADD_INCLUDEDIRS "${rpc_core_dir}" "${rpc_slaveif_dir}" "${rpc_wrap_dir}") + list(APPEND priv_include "${rpc_core_dir}" "${rpc_slaveif_dir}" "${rpc_wrap_dir}") # virtual serial set(virt_serial_dir "${host_dir}/drivers/virtual_serial_if") - list(APPEND COMPONENT_SRCS "${virt_serial_dir}/serial_if.c") - list(APPEND COMPONENT_ADD_INCLUDEDIRS "${virt_serial_dir}") + list(APPEND srcs "${virt_serial_dir}/serial_if.c") + list(APPEND priv_include "${virt_serial_dir}") # mempool - list(APPEND COMPONENT_SRCS "${host_dir}/drivers/mempool/mempool.c") - list(APPEND COMPONENT_ADD_INCLUDEDIRS "${host_dir}/drivers/mempool" ) + list(APPEND srcs "${host_dir}/drivers/mempool/mempool.c") + list(APPEND priv_include "${host_dir}/drivers/mempool" ) # slave and host common files set(common_dir "${FG_root_dir}/common") - list(APPEND COMPONENT_SRCS "${common_dir}/protobuf-c/protobuf-c/protobuf-c.c" "${common_dir}/proto/esp_hosted_rpc.pb-c.c" ) - list(APPEND COMPONENT_ADD_INCLUDEDIRS "${common_dir}" "${common_dir}/log" "${common_dir}/rpc" "${common_dir}/transport" "${common_dir}/protobuf-c" "${common_dir}/proto" ) + list(APPEND srcs "${common_dir}/protobuf-c/protobuf-c/protobuf-c.c" "${common_dir}/proto/esp_hosted_rpc.pb-c.c" ) + list(APPEND priv_include "${common_dir}" "${common_dir}/log" "${common_dir}/rpc" "${common_dir}/transport" "${common_dir}/protobuf-c" "${common_dir}/proto" ) # host ESP32 specific files - list(APPEND COMPONENT_SRCS "${host_dir}/port/esp/freertos/src/esp_hosted_ota.c") + list(APPEND srcs "${host_dir}/port/esp/freertos/src/esp_hosted_ota.c") # bt (NimBLE) ### TODO config for HCI over UART - list(APPEND COMPONENT_ADD_INCLUDEDIRS "${host_dir}/drivers/bt") + list(APPEND priv_include "${host_dir}/drivers/bt") if(CONFIG_ESP_HOSTED_NIMBLE_HCI_VHCI OR CONFIG_ESP_HOSTED_BLUEDROID_HCI_VHCI) - list(APPEND COMPONENT_SRCS "${host_dir}/drivers/bt/vhci_drv.c") + list(APPEND srcs "${host_dir}/drivers/bt/vhci_drv.c") else() - list(APPEND COMPONENT_SRCS "${host_dir}/drivers/bt/hci_stub_drv.c") + list(APPEND srcs "${host_dir}/drivers/bt/hci_stub_drv.c") endif() # transport files if(CONFIG_ESP_HOSTED_SDIO_HOST_INTERFACE) - list(APPEND COMPONENT_SRCS "${host_dir}/drivers/transport/sdio/sdio_drv.c") + list(APPEND srcs "${host_dir}/drivers/transport/sdio/sdio_drv.c") elseif(CONFIG_ESP_HOSTED_SPI_HD_HOST_INTERFACE) - list(APPEND COMPONENT_SRCS "${host_dir}/drivers/transport/spi_hd/spi_hd_drv.c") + list(APPEND srcs "${host_dir}/drivers/transport/spi_hd/spi_hd_drv.c") elseif(CONFIG_ESP_HOSTED_SPI_HOST_INTERFACE) - list(APPEND COMPONENT_SRCS "${host_dir}/drivers/transport/spi/spi_drv.c") + list(APPEND srcs "${host_dir}/drivers/transport/spi/spi_drv.c") elseif(CONFIG_ESP_HOSTED_UART_HOST_INTERFACE) - list(APPEND COMPONENT_SRCS "${host_dir}/drivers/transport/uart/uart_drv.c") + list(APPEND srcs "${host_dir}/drivers/transport/uart/uart_drv.c") endif() # config files - list(APPEND COMPONENT_ADD_INCLUDEDIRS "${host_dir}/port/esp/freertos/include") - list(APPEND COMPONENT_SRCS "${host_dir}/port/esp/freertos/src/esp_hosted_config.c" "${host_dir}/port/esp/freertos/src/esp_hosted_transport_config.c") + list(APPEND priv_include "${host_dir}/port/esp/freertos/include") + list(APPEND srcs "${host_dir}/port/esp/freertos/src/esp_hosted_config.c" "${host_dir}/port/esp/freertos/src/esp_hosted_transport_config.c") # transport port files - list(APPEND COMPONENT_SRCS "${host_dir}/port/esp/freertos/src/os_wrapper.c") + list(APPEND srcs "${host_dir}/port/esp/freertos/src/os_wrapper.c") if(CONFIG_ESP_HOSTED_SDIO_HOST_INTERFACE) - list(APPEND COMPONENT_SRCS "${host_dir}/port/esp/freertos/src/sdio_wrapper.c") + list(APPEND srcs "${host_dir}/port/esp/freertos/src/sdio_wrapper.c") elseif(CONFIG_ESP_HOSTED_SPI_HD_HOST_INTERFACE) - list(APPEND COMPONENT_SRCS "${host_dir}/port/esp/freertos/src/spi_hd_wrapper.c") + list(APPEND srcs "${host_dir}/port/esp/freertos/src/spi_hd_wrapper.c") elseif(CONFIG_ESP_HOSTED_SPI_HOST_INTERFACE) - list(APPEND COMPONENT_SRCS "${host_dir}/port/esp/freertos/src/spi_wrapper.c") + list(APPEND srcs "${host_dir}/port/esp/freertos/src/spi_wrapper.c") elseif(CONFIG_ESP_HOSTED_UART_HOST_INTERFACE) - list(APPEND COMPONENT_SRCS "${host_dir}/port/esp/freertos/src/uart_wrapper.c") + list(APPEND srcs "${host_dir}/port/esp/freertos/src/uart_wrapper.c") endif() endif() -idf_component_register(SRCS ${COMPONENT_SRCS} +idf_component_register(SRCS ${srcs} PRIV_REQUIRES soc esp_event esp_netif esp_timer driver esp_wifi bt esp_http_client - EXCLUDE_SRCS ${EXCLUDE_COMPONENT_SRCS} - INCLUDE_DIRS ${COMPONENT_ADD_PUBLIC_INCLUDEDIRS} - PRIV_INCLUDE_DIRS ${COMPONENT_ADD_INCLUDEDIRS}) + INCLUDE_DIRS ${pub_include} + PRIV_INCLUDE_DIRS ${priv_include}) idf_component_set_property(${COMPONENT_NAME} WHOLE_ARCHIVE TRUE) diff --git a/host/api/include/esp_hosted_wifi_remote_glue.h b/host/api/include/esp_hosted_wifi_remote_glue.h new file mode 100644 index 00000000..6e070556 --- /dev/null +++ b/host/api/include/esp_hosted_wifi_remote_glue.h @@ -0,0 +1,44 @@ +/* +* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD +* +* SPDX-License-Identifier: Apache-2.0 +*/ + +#ifndef __ESP_HOSTED_WIFI_REMOTE_GLUE_H__ +#define __ESP_HOSTED_WIFI_REMOTE_GLUE_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "esp_hosted_interface.h" +#include "esp_wifi_remote.h" +#include "esp_wifi.h" + +struct esp_remote_channel_config { + esp_hosted_if_type_t if_type; + bool secure; +}; + +typedef struct esp_remote_channel_config * esp_remote_channel_config_t; + +/* Transport/Channel related data structures and macros */ +#define ESP_HOSTED_CHANNEL_CONFIG_DEFAULT() { \ + .secure = true, \ +} + +/* Function pointer types for channel callbacks */ +typedef esp_err_t (*esp_remote_channel_rx_fn_t)(void *h, void *buffer, + void *buff_to_free, size_t len); +typedef esp_err_t (*esp_remote_channel_tx_fn_t)(void *h, void *buffer, size_t len); + +/* Transport/Channel Management API Functions - use managed component typedef */ +esp_remote_channel_t esp_hosted_add_channel(esp_remote_channel_config_t config, + esp_remote_channel_tx_fn_t *tx, const esp_remote_channel_rx_fn_t rx); +esp_err_t esp_hosted_remove_channel(esp_remote_channel_t channel); + +#ifdef __cplusplus +} +#endif + +#endif /* __ESP_HOSTED_WIFI_REMOTE_GLUE_H__ */ diff --git a/host/api/include/esp_hosted_api.h b/host/api/priv/esp_hosted_api_priv.h similarity index 80% rename from host/api/include/esp_hosted_api.h rename to host/api/priv/esp_hosted_api_priv.h index 94e1535e..94a817bc 100644 --- a/host/api/include/esp_hosted_api.h +++ b/host/api/priv/esp_hosted_api_priv.h @@ -4,15 +4,15 @@ * SPDX-License-Identifier: Apache-2.0 */ -/** prevent recursive inclusion **/ -#ifndef __ESP_HOSTED_API_H__ -#define __ESP_HOSTED_API_H__ +/* prevent recursive inclusion */ +#ifndef __ESP_HOSTED_API_PRIV_H__ +#define __ESP_HOSTED_API_PRIV_H__ #ifdef __cplusplus extern "C" { #endif -/** Includes **/ +/* Includes */ #include "stdbool.h" #include "esp_wifi.h" #include "esp_wifi_remote.h" @@ -20,29 +20,7 @@ extern "C" { #include "esp_hosted_ota.h" #include "esp_hosted_wifi_config.h" -/** Exported variables **/ -#define ESP_HOSTED_CHANNEL_CONFIG_DEFAULT() { \ - .secure = true, \ -} - -struct esp_remote_channel_config { - int if_type; // values should be of esp_hosted_if_type_t - bool secure; -}; - -/** Inline functions **/ - -/** Exported Functions **/ -esp_err_t esp_hosted_init(void); -esp_err_t esp_hosted_deinit(void); -esp_err_t esp_hosted_reinit(void); - -esp_err_t esp_hosted_setup(void); -esp_err_t esp_hosted_slave_reset(void); -esp_remote_channel_t esp_hosted_add_channel(esp_remote_channel_config_t config, - esp_remote_channel_tx_fn_t *tx, const esp_remote_channel_rx_fn_t rx); -esp_err_t esp_hosted_remove_channel(esp_remote_channel_t channel); - +/* Remote WiFi API Functions - Port/Implementation Specific */ esp_err_t esp_wifi_remote_init(const wifi_init_config_t *arg); esp_err_t esp_wifi_remote_deinit(void); esp_err_t esp_wifi_remote_set_mode(wifi_mode_t mode); @@ -86,9 +64,9 @@ esp_err_t esp_wifi_remote_set_max_tx_power(int8_t power); esp_err_t esp_wifi_remote_get_max_tx_power(int8_t *power); esp_err_t esp_wifi_remote_sta_get_negotiated_phymode(wifi_phy_mode_t *phymode); esp_err_t esp_wifi_remote_sta_get_aid(uint16_t *aid); -esp_err_t esp_hosted_get_coprocessor_fwversion(esp_hosted_coprocessor_fwver_t *ver_info); #if H_WIFI_DUALBAND_SUPPORT +/* Dual-band WiFi API (Depends upon co-processor used) */ esp_err_t esp_wifi_remote_set_band(wifi_band_t band); esp_err_t esp_wifi_remote_get_band(wifi_band_t *band); esp_err_t esp_wifi_remote_set_band_mode(wifi_band_mode_t band_mode); @@ -103,4 +81,4 @@ esp_err_t esp_wifi_remote_get_bandwidths(wifi_interface_t ifx, wifi_bandwidths_t } #endif -#endif +#endif /* __ESP_HOSTED_API_PRIV_H__ */ \ No newline at end of file diff --git a/host/api/src/esp_hosted_api.c b/host/api/src/esp_hosted_api.c index fb877f87..01aa034b 100644 --- a/host/api/src/esp_hosted_api.c +++ b/host/api/src/esp_hosted_api.c @@ -10,9 +10,9 @@ extern "C" { /** Includes **/ #include "esp_hosted_transport_config.h" -#include "esp_wifi_remote.h" #include "esp_hosted_wifi_config.h" -#include "esp_hosted_api.h" +#include "esp_hosted_api_priv.h" +#include "esp_hosted_wifi_remote_glue.h" #include "esp_check.h" #include "transport_drv.h" #include "rpc_wrap.h" @@ -30,10 +30,6 @@ struct esp_remote_channel { //static semaphore_handle_t transport_up_sem; -typedef esp_err_t (*esp_remote_channel_rx_fn_t)(void *h, void *buffer, - void *buff_to_free, size_t len); -typedef esp_err_t (*esp_remote_channel_tx_fn_t)(void *h, void *buffer, size_t len); - /** Inline functions **/ /** Exported Functions **/ @@ -96,7 +92,7 @@ static void set_host_modules_log_level(void) esp_log_level_set("rpc_rsp", ESP_LOG_WARN); esp_log_level_set("rpc_evt", ESP_LOG_WARN); } -esp_err_t esp_hosted_init(void) +int esp_hosted_init(void) { if (esp_hosted_init_done) return ESP_OK; @@ -120,7 +116,7 @@ esp_err_t esp_hosted_init(void) return ESP_OK; } -esp_err_t esp_hosted_deinit(void) +int esp_hosted_deinit(void) { ESP_LOGI(TAG, "ESP-Hosted deinit\n"); rpc_unregister_event_callbacks(); @@ -141,16 +137,7 @@ static inline esp_err_t esp_hosted_reconfigure(void) return ESP_OK; } -esp_err_t esp_hosted_reinit(void) -{ - ESP_LOGI(TAG, "ESP-Hosted re-init\n"); - ESP_ERROR_CHECK(esp_hosted_deinit()); - ESP_ERROR_CHECK(esp_hosted_init()); - ESP_ERROR_CHECK(esp_hosted_reconfigure()); - return ESP_OK; -} - -esp_err_t esp_hosted_slave_reset(void) +int esp_hosted_connect_to_slave(void) { ESP_LOGI(TAG, "ESP-Hosted Try to communicate with ESP-Hosted slave\n"); return esp_hosted_reconfigure(); @@ -399,8 +386,8 @@ esp_err_t esp_wifi_remote_sta_get_aid(uint16_t *aid) { return rpc_wifi_sta_get_aid(aid); } - #if H_WIFI_DUALBAND_SUPPORT +/* Dual-band WiFi API - always available at high level, but returns ESP_ERR_NOT_SUPPORTED when co-processor do not support */ esp_err_t esp_wifi_remote_set_band(wifi_band_t band) { return rpc_wifi_set_band(band); diff --git a/host/api/src/esp_wifi_weak.c b/host/api/src/esp_wifi_weak.c index 33459d72..ba9374d4 100644 --- a/host/api/src/esp_wifi_weak.c +++ b/host/api/src/esp_wifi_weak.c @@ -19,7 +19,7 @@ * Used when WiFi-Remote does not provide required esp_wifi calls */ -#include "esp_hosted_api.h" +#include "esp_hosted_api_priv.h" #include "esp_hosted_wifi_config.h" #define WEAK __attribute__((weak)) diff --git a/host/drivers/rpc/wrap/rpc_wrap.c b/host/drivers/rpc/wrap/rpc_wrap.c index ee71d6d6..d0c9aca8 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.c +++ b/host/drivers/rpc/wrap/rpc_wrap.c @@ -29,7 +29,6 @@ #include "esp_hosted_rpc.h" #include "esp_log.h" #include "esp_hosted_wifi_config.h" -#include "esp_hosted_api.h" #include "esp_hosted_transport.h" DEFINE_LOG_TAG(rpc_wrap); diff --git a/host/drivers/rpc/wrap/rpc_wrap.h b/host/drivers/rpc/wrap/rpc_wrap.h index 048e572c..04c64f3d 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.h +++ b/host/drivers/rpc/wrap/rpc_wrap.h @@ -25,8 +25,8 @@ extern "C" { #include "common.h" #include "esp_wifi.h" #include "esp_hosted_wifi_config.h" -#include "esp_hosted_api.h" #include "esp_hosted_api_types.h" +#include "esp_hosted_ota.h" /** Exported variables **/ @@ -81,7 +81,7 @@ esp_err_t rpc_wifi_set_max_tx_power(int8_t power); esp_err_t rpc_wifi_get_max_tx_power(int8_t *power); esp_err_t rpc_wifi_sta_get_negotiated_phymode(wifi_phy_mode_t *phymode); esp_err_t rpc_wifi_sta_get_aid(uint16_t *aid); -esp_err_t rpc_ota(const char* image_url); + esp_err_t rpc_get_coprocessor_fwversion(esp_hosted_coprocessor_fwver_t *ver_info); esp_err_t rpc_ota_begin(void); diff --git a/host/esp_hosted.h b/host/esp_hosted.h index cfff1d3b..a7bbe437 100644 --- a/host/esp_hosted.h +++ b/host/esp_hosted.h @@ -7,11 +7,38 @@ #ifndef __ESP_HOSTED_H__ #define __ESP_HOSTED_H__ -#include "esp_hosted_api.h" +#ifdef __cplusplus +extern "C" { +#endif + #include "esp_hosted_config.h" #include "esp_hosted_bt_config.h" #include "esp_hosted_transport_config.h" +#include "esp_hosted_api_types.h" typedef struct esp_hosted_transport_config esp_hosted_config_t; +/* --------- Hosted Minimal APIs --------- */ +int esp_hosted_init(void); +int esp_hosted_deinit(void); + +int esp_hosted_connect_to_slave(void); +int esp_hosted_get_coprocessor_fwversion(esp_hosted_coprocessor_fwver_t *ver_info); + +/* --------- Exhaustive API list --------- */ +/* + * 1. All Wi-Fi supported APIs + * File: host/api/src/esp_wifi_weak.c + * + * 2. Communication Bus APIs (Set and get transport config) + * File : host/api/include/esp_hosted_transport_config.h + * + * 3. Co-Processor OTA API + * File : host/api/include/esp_hosted_ota.h + */ + +#ifdef __cplusplus +} +#endif + #endif /* __ESP_HOSTED_H__ */ diff --git a/host/esp_hosted_host_init.c b/host/esp_hosted_host_init.c index 30479e06..aa508f25 100644 --- a/host/esp_hosted_host_init.c +++ b/host/esp_hosted_host_init.c @@ -7,7 +7,7 @@ #include "os_header.h" #include "os_wrapper.h" #include "esp_log.h" -#include "esp_hosted_api.h" +#include "esp_hosted.h" #include "esp_private/startup_internal.h" DEFINE_LOG_TAG(host_init); diff --git a/idf_component.yml b/idf_component.yml index 4e751500..e3acb7f8 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.0.7" +version: "2.0.8" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: From 2a5e9fd6cd1096b3f21c20d5986bb47aa066a2b3 Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Fri, 13 Jun 2025 17:34:31 +0530 Subject: [PATCH 036/114] fix(sync): as C5 takes little longer, waait for 1500ms instead of 1000ms --- host/drivers/transport/transport_drv.c | 2 +- idf_component.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/host/drivers/transport/transport_drv.c b/host/drivers/transport/transport_drv.c index 3039d2ee..f3022149 100644 --- a/host/drivers/transport/transport_drv.c +++ b/host/drivers/transport/transport_drv.c @@ -79,7 +79,7 @@ static void reset_slave(void) g_h.funcs->_h_write_gpio(reset_pin.port, reset_pin.pin, H_RESET_VAL_ACTIVE); /* stop spi transactions short time to avoid slave sync issues */ - g_h.funcs->_h_sleep(1); + g_h.funcs->_h_msleep(1500); } static void transport_driver_event_handler(uint8_t event) diff --git a/idf_component.yml b/idf_component.yml index e3acb7f8..1ced3202 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.0.8" +version: "2.0.9" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: From 2fe99d2f0e266d3912fc55bdbe04e43401eca17c Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Tue, 17 Jun 2025 12:02:34 +0800 Subject: [PATCH 037/114] fix(ota): Fixed build break when doing ota - include `esp_hosted_ota.h` in `esp_hosted.h`: otherwise, app cannot call ota API - removed sdmmc include from `esp_hosted_config.h`: breaks compilation and not needed - tested by including `esp_hosted.h` and calling ota API from app --- host/api/include/esp_hosted_config.h | 4 ---- host/esp_hosted.h | 1 + idf_component.yml | 2 +- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/host/api/include/esp_hosted_config.h b/host/api/include/esp_hosted_config.h index 4c974824..f4e796d8 100644 --- a/host/api/include/esp_hosted_config.h +++ b/host/api/include/esp_hosted_config.h @@ -16,10 +16,6 @@ #define H_TRANSPORT_SPI 3 #define H_TRANSPORT_UART 4 -#ifdef CONFIG_ESP_HOSTED_SDIO_HOST_INTERFACE -#include "driver/sdmmc_host.h" -#endif - #ifdef CONFIG_ESP_HOSTED_UART_HOST_INTERFACE #include "hal/uart_types.h" #endif diff --git a/host/esp_hosted.h b/host/esp_hosted.h index a7bbe437..31c77680 100644 --- a/host/esp_hosted.h +++ b/host/esp_hosted.h @@ -15,6 +15,7 @@ extern "C" { #include "esp_hosted_bt_config.h" #include "esp_hosted_transport_config.h" #include "esp_hosted_api_types.h" +#include "esp_hosted_ota.h" typedef struct esp_hosted_transport_config esp_hosted_config_t; diff --git a/idf_component.yml b/idf_component.yml index 1ced3202..66957d29 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.0.9" +version: "2.0.10" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: From 607153424f30246d7e99c1458ff177dac77a0bcb Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Tue, 17 Jun 2025 15:08:58 +0800 Subject: [PATCH 038/114] fix(scan_timeout): increase timeout if doing blocking scan - increase default timeout if use requests to block while doing scan, which may take a longer time --- host/drivers/rpc/slaveif/rpc_slave_if.h | 2 +- host/drivers/rpc/wrap/rpc_wrap.c | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/host/drivers/rpc/slaveif/rpc_slave_if.h b/host/drivers/rpc/slaveif/rpc_slave_if.h index b5621b80..685531a9 100644 --- a/host/drivers/rpc/slaveif/rpc_slave_if.h +++ b/host/drivers/rpc/slaveif/rpc_slave_if.h @@ -46,7 +46,7 @@ extern "C" { * */ //#define WAIT_TIME_B2B_RPC_REQ 5 #define DEFAULT_RPC_RSP_TIMEOUT 5 - +#define DEFAULT_RPC_RSP_SCAN_TIMEOUT 30 #define SUCCESS_STR "success" #define FAILURE_STR "failure" diff --git a/host/drivers/rpc/wrap/rpc_wrap.c b/host/drivers/rpc/wrap/rpc_wrap.c index d0c9aca8..47aa1cdb 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.c +++ b/host/drivers/rpc/wrap/rpc_wrap.c @@ -53,7 +53,7 @@ static ctrl_cmd_t * RPC_DEFAULT_REQ(void) assert(new_req); new_req->msg_type = RPC_TYPE__Req; new_req->rpc_rsp_cb = NULL; - new_req->rsp_timeout_sec = DEFAULT_RPC_RSP_TIMEOUT; /* 5 sec */ + new_req->rsp_timeout_sec = DEFAULT_RPC_RSP_TIMEOUT; /* new_req->wait_prev_cmd_completion = WAIT_TIME_B2B_RPC_REQ; */ return new_req; } @@ -955,7 +955,10 @@ int rpc_wifi_scan_start(const wifi_scan_config_t *config, bool block) } req->u.wifi_scan_config.block = block; - + if (req->u.wifi_scan_config.block) { + // blocking while doing scan may take a long time: increase timeout value + req->rsp_timeout_sec = DEFAULT_RPC_RSP_SCAN_TIMEOUT; + } resp = rpc_slaveif_wifi_scan_start(req); return rpc_rsp_callback(resp); From 551711fb11f7c056b891ebeb0117d17aeb5a44d3 Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Fri, 30 May 2025 16:15:43 +0800 Subject: [PATCH 039/114] feature(update_wifi_structs): updated structs for sta and softap - added channel bitmaps (2.4GHz and 5GHz) to RPC scan structure - updated structure definitions for station and softap to match with latest ESP-IDF Wi-Fi headers - added defines to control compilation of parts that are structure specific to ESP-IDF 5.4.0 or 5.5.0 --- common/proto/esp_hosted_rpc.pb-c.c | 333 +++++++++++++++++- common/proto/esp_hosted_rpc.pb-c.h | 133 ++++++- common/proto/esp_hosted_rpc.proto | 26 +- host/drivers/rpc/core/rpc_req.c | 33 +- host/drivers/rpc/core/rpc_rsp.c | 38 +- .../freertos/include/esp_hosted_wifi_config.h | 10 +- idf_component.yml | 2 +- slave/main/slave_control.c | 90 +++-- 8 files changed, 599 insertions(+), 66 deletions(-) diff --git a/common/proto/esp_hosted_rpc.pb-c.c b/common/proto/esp_hosted_rpc.pb-c.c index eb1a1e39..6516892e 100644 --- a/common/proto/esp_hosted_rpc.pb-c.c +++ b/common/proto/esp_hosted_rpc.pb-c.c @@ -187,6 +187,51 @@ void wifi_scan_time__free_unpacked assert(message->base.descriptor == &wifi_scan_time__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } +void wifi_scan_channel_bitmap__init + (WifiScanChannelBitmap *message) +{ + static const WifiScanChannelBitmap init_value = WIFI_SCAN_CHANNEL_BITMAP__INIT; + *message = init_value; +} +size_t wifi_scan_channel_bitmap__get_packed_size + (const WifiScanChannelBitmap *message) +{ + assert(message->base.descriptor == &wifi_scan_channel_bitmap__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t wifi_scan_channel_bitmap__pack + (const WifiScanChannelBitmap *message, + uint8_t *out) +{ + assert(message->base.descriptor == &wifi_scan_channel_bitmap__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t wifi_scan_channel_bitmap__pack_to_buffer + (const WifiScanChannelBitmap *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &wifi_scan_channel_bitmap__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +WifiScanChannelBitmap * + wifi_scan_channel_bitmap__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (WifiScanChannelBitmap *) + protobuf_c_message_unpack (&wifi_scan_channel_bitmap__descriptor, + allocator, len, data); +} +void wifi_scan_channel_bitmap__free_unpacked + (WifiScanChannelBitmap *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &wifi_scan_channel_bitmap__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} void wifi_scan_config__init (WifiScanConfig *message) { @@ -412,6 +457,51 @@ void wifi_pmf_config__free_unpacked assert(message->base.descriptor == &wifi_pmf_config__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } +void wifi_bss_max_idle_config__init + (WifiBssMaxIdleConfig *message) +{ + static const WifiBssMaxIdleConfig init_value = WIFI_BSS_MAX_IDLE_CONFIG__INIT; + *message = init_value; +} +size_t wifi_bss_max_idle_config__get_packed_size + (const WifiBssMaxIdleConfig *message) +{ + assert(message->base.descriptor == &wifi_bss_max_idle_config__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t wifi_bss_max_idle_config__pack + (const WifiBssMaxIdleConfig *message, + uint8_t *out) +{ + assert(message->base.descriptor == &wifi_bss_max_idle_config__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t wifi_bss_max_idle_config__pack_to_buffer + (const WifiBssMaxIdleConfig *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &wifi_bss_max_idle_config__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +WifiBssMaxIdleConfig * + wifi_bss_max_idle_config__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (WifiBssMaxIdleConfig *) + protobuf_c_message_unpack (&wifi_bss_max_idle_config__descriptor, + allocator, len, data); +} +void wifi_bss_max_idle_config__free_unpacked + (WifiBssMaxIdleConfig *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &wifi_bss_max_idle_config__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} void wifi_ap_config__init (WifiApConfig *message) { @@ -7774,7 +7864,58 @@ const ProtobufCMessageDescriptor wifi_scan_time__descriptor = (ProtobufCMessageInit) wifi_scan_time__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_scan_config__field_descriptors[7] = +static const ProtobufCFieldDescriptor wifi_scan_channel_bitmap__field_descriptors[2] = +{ + { + "ghz_2_channels", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiScanChannelBitmap, ghz_2_channels), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ghz_5_channels", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiScanChannelBitmap, ghz_5_channels), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned wifi_scan_channel_bitmap__field_indices_by_name[] = { + 0, /* field[0] = ghz_2_channels */ + 1, /* field[1] = ghz_5_channels */ +}; +static const ProtobufCIntRange wifi_scan_channel_bitmap__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor wifi_scan_channel_bitmap__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_scan_channel_bitmap", + "WifiScanChannelBitmap", + "WifiScanChannelBitmap", + "", + sizeof(WifiScanChannelBitmap), + 2, + wifi_scan_channel_bitmap__field_descriptors, + wifi_scan_channel_bitmap__field_indices_by_name, + 1, wifi_scan_channel_bitmap__number_ranges, + (ProtobufCMessageInit) wifi_scan_channel_bitmap__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_scan_config__field_descriptors[8] = { { "ssid", @@ -7860,10 +8001,23 @@ static const ProtobufCFieldDescriptor wifi_scan_config__field_descriptors[7] = 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "channel_bitmap", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(WifiScanConfig, channel_bitmap), + &wifi_scan_channel_bitmap__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, }; static const unsigned wifi_scan_config__field_indices_by_name[] = { 1, /* field[1] = bssid */ 2, /* field[2] = channel */ + 7, /* field[7] = channel_bitmap */ 6, /* field[6] = home_chan_dwell_time */ 5, /* field[5] = scan_time */ 4, /* field[4] = scan_type */ @@ -7873,7 +8027,7 @@ static const unsigned wifi_scan_config__field_indices_by_name[] = { static const ProtobufCIntRange wifi_scan_config__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 7 } + { 0, 8 } }; const ProtobufCMessageDescriptor wifi_scan_config__descriptor = { @@ -7883,7 +8037,7 @@ const ProtobufCMessageDescriptor wifi_scan_config__descriptor = "WifiScanConfig", "", sizeof(WifiScanConfig), - 7, + 8, wifi_scan_config__field_descriptors, wifi_scan_config__field_indices_by_name, 1, wifi_scan_config__number_ranges, @@ -8161,7 +8315,7 @@ const ProtobufCMessageDescriptor wifi_ap_record__descriptor = (ProtobufCMessageInit) wifi_ap_record__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_scan_threshold__field_descriptors[2] = +static const ProtobufCFieldDescriptor wifi_scan_threshold__field_descriptors[3] = { { "rssi", @@ -8187,15 +8341,28 @@ static const ProtobufCFieldDescriptor wifi_scan_threshold__field_descriptors[2] 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "rssi_5g_adjustment", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiScanThreshold, rssi_5g_adjustment), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, }; static const unsigned wifi_scan_threshold__field_indices_by_name[] = { 1, /* field[1] = authmode */ 0, /* field[0] = rssi */ + 2, /* field[2] = rssi_5g_adjustment */ }; static const ProtobufCIntRange wifi_scan_threshold__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 3 } }; const ProtobufCMessageDescriptor wifi_scan_threshold__descriptor = { @@ -8205,7 +8372,7 @@ const ProtobufCMessageDescriptor wifi_scan_threshold__descriptor = "WifiScanThreshold", "", sizeof(WifiScanThreshold), - 2, + 3, wifi_scan_threshold__field_descriptors, wifi_scan_threshold__field_indices_by_name, 1, wifi_scan_threshold__number_ranges, @@ -8263,7 +8430,58 @@ const ProtobufCMessageDescriptor wifi_pmf_config__descriptor = (ProtobufCMessageInit) wifi_pmf_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_ap_config__field_descriptors[12] = +static const ProtobufCFieldDescriptor wifi_bss_max_idle_config__field_descriptors[2] = +{ + { + "period", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiBssMaxIdleConfig, period), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "protected_keep_alive", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(WifiBssMaxIdleConfig, protected_keep_alive), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned wifi_bss_max_idle_config__field_indices_by_name[] = { + 0, /* field[0] = period */ + 1, /* field[1] = protected_keep_alive */ +}; +static const ProtobufCIntRange wifi_bss_max_idle_config__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor wifi_bss_max_idle_config__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_bss_max_idle_config", + "WifiBssMaxIdleConfig", + "WifiBssMaxIdleConfig", + "", + sizeof(WifiBssMaxIdleConfig), + 2, + wifi_bss_max_idle_config__field_descriptors, + wifi_bss_max_idle_config__field_indices_by_name, + 1, wifi_bss_max_idle_config__number_ranges, + (ProtobufCMessageInit) wifi_bss_max_idle_config__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_ap_config__field_descriptors[18] = { { "ssid", @@ -8409,25 +8627,103 @@ static const ProtobufCFieldDescriptor wifi_ap_config__field_descriptors[12] = 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "csa_count", + 13, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiApConfig, csa_count), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dtim_period", + 14, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiApConfig, dtim_period), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "transition_disable", + 15, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiApConfig, transition_disable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sae_ext", + 16, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiApConfig, sae_ext), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "bss_max_idle_cfg", + 17, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(WifiApConfig, bss_max_idle_cfg), + &wifi_bss_max_idle_config__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "gtk_rekey_interval", + 18, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiApConfig, gtk_rekey_interval), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, }; static const unsigned wifi_ap_config__field_indices_by_name[] = { 4, /* field[4] = authmode */ 7, /* field[7] = beacon_interval */ + 16, /* field[16] = bss_max_idle_cfg */ 3, /* field[3] = channel */ + 12, /* field[12] = csa_count */ + 13, /* field[13] = dtim_period */ 9, /* field[9] = ftm_responder */ + 17, /* field[17] = gtk_rekey_interval */ 6, /* field[6] = max_connection */ 8, /* field[8] = pairwise_cipher */ 1, /* field[1] = password */ 10, /* field[10] = pmf_cfg */ + 15, /* field[15] = sae_ext */ 11, /* field[11] = sae_pwe_h2e */ 0, /* field[0] = ssid */ 5, /* field[5] = ssid_hidden */ 2, /* field[2] = ssid_len */ + 14, /* field[14] = transition_disable */ }; static const ProtobufCIntRange wifi_ap_config__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 12 } + { 0, 18 } }; const ProtobufCMessageDescriptor wifi_ap_config__descriptor = { @@ -8437,14 +8733,14 @@ const ProtobufCMessageDescriptor wifi_ap_config__descriptor = "WifiApConfig", "", sizeof(WifiApConfig), - 12, + 18, wifi_ap_config__field_descriptors, wifi_ap_config__field_indices_by_name, 1, wifi_ap_config__number_ranges, (ProtobufCMessageInit) wifi_ap_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_sta_config__field_descriptors[15] = +static const ProtobufCFieldDescriptor wifi_sta_config__field_descriptors[16] = { { "ssid", @@ -8626,6 +8922,18 @@ static const ProtobufCFieldDescriptor wifi_sta_config__field_descriptors[15] = 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "sae_pk_mode", + 16, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiStaConfig, sae_pk_mode), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, }; static const unsigned wifi_sta_config__field_indices_by_name[] = { 10, /* field[10] = bitmask */ @@ -8638,6 +8946,7 @@ static const unsigned wifi_sta_config__field_indices_by_name[] = { 1, /* field[1] = password */ 9, /* field[9] = pmf_cfg */ 14, /* field[14] = sae_h2e_identifier */ + 15, /* field[15] = sae_pk_mode */ 11, /* field[11] = sae_pwe_h2e */ 2, /* field[2] = scan_method */ 7, /* field[7] = sort_method */ @@ -8647,7 +8956,7 @@ static const unsigned wifi_sta_config__field_indices_by_name[] = { static const ProtobufCIntRange wifi_sta_config__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 15 } + { 0, 16 } }; const ProtobufCMessageDescriptor wifi_sta_config__descriptor = { @@ -8657,7 +8966,7 @@ const ProtobufCMessageDescriptor wifi_sta_config__descriptor = "WifiStaConfig", "", sizeof(WifiStaConfig), - 15, + 16, wifi_sta_config__field_descriptors, wifi_sta_config__field_indices_by_name, 1, wifi_sta_config__number_ranges, diff --git a/common/proto/esp_hosted_rpc.pb-c.h b/common/proto/esp_hosted_rpc.pb-c.h index 03a11fc5..2bfc6a4f 100644 --- a/common/proto/esp_hosted_rpc.pb-c.h +++ b/common/proto/esp_hosted_rpc.pb-c.h @@ -19,11 +19,13 @@ typedef struct WifiInitConfig WifiInitConfig; typedef struct WifiCountry WifiCountry; typedef struct WifiActiveScanTime WifiActiveScanTime; typedef struct WifiScanTime WifiScanTime; +typedef struct WifiScanChannelBitmap WifiScanChannelBitmap; typedef struct WifiScanConfig WifiScanConfig; typedef struct WifiHeApInfo WifiHeApInfo; typedef struct WifiApRecord WifiApRecord; typedef struct WifiScanThreshold WifiScanThreshold; typedef struct WifiPmfConfig WifiPmfConfig; +typedef struct WifiBssMaxIdleConfig WifiBssMaxIdleConfig; typedef struct WifiApConfig WifiApConfig; typedef struct WifiStaConfig WifiStaConfig; typedef struct WifiConfig WifiConfig; @@ -873,6 +875,23 @@ struct WifiScanTime , NULL, 0 } +struct WifiScanChannelBitmap +{ + ProtobufCMessage base; + /* + **< Represents 2.4 GHz channels, that bits can be set as wifi_2g_channel_bit_t shown. + */ + uint32_t ghz_2_channels; + /* + **< Represents 5 GHz channels, that bits can be set as wifi_5g_channel_bit_t shown. + */ + uint32_t ghz_5_channels; +}; +#define WIFI_SCAN_CHANNEL_BITMAP__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&wifi_scan_channel_bitmap__descriptor) \ + , 0, 0 } + + struct WifiScanConfig { ProtobufCMessage base; @@ -904,10 +923,16 @@ struct WifiScanConfig **< time spent at home channel between scanning consecutive channels. */ uint32_t home_chan_dwell_time; + /* + **< Channel bitmap for setting specific channels to be scanned. + *Please note that the 'channel' parameter above needs to be set to 0 to allow scanning by bitmap. + *Also, note that only allowed channels configured by wifi_country_t can be scanned. + */ + WifiScanChannelBitmap *channel_bitmap; }; #define WIFI_SCAN_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_scan_config__descriptor) \ - , {0,NULL}, {0,NULL}, 0, 0, 0, NULL, 0 } + , {0,NULL}, {0,NULL}, 0, 0, 0, NULL, 0, NULL } struct WifiHeApInfo @@ -1027,10 +1052,14 @@ struct WifiScanThreshold *Please set authmode threshold as WIFI_AUTH_WEP/WIFI_AUTH_WPA_PSK to connect to WEP/WPA networks */ int32_t authmode; + /* + **< The RSSI value of the 5G AP is within the rssi_5g_adjustment range compared to the 2G AP, the 5G AP will be given priority for connection. + */ + uint32_t rssi_5g_adjustment; }; #define WIFI_SCAN_THRESHOLD__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_scan_threshold__descriptor) \ - , 0, 0 } + , 0, 0, 0 } struct WifiPmfConfig @@ -1050,6 +1079,23 @@ struct WifiPmfConfig , 0, 0 } +struct WifiBssMaxIdleConfig +{ + ProtobufCMessage base; + /* + **< Sets BSS Max idle period (1 Unit = 1000TUs OR 1.024 Seconds). If there are no frames for this period from a STA, SoftAP will disassociate due to inactivity. Setting it to 0 disables the feature + */ + uint32_t period; + /* + **< Requires clients to use protected keep alive frames for BSS Max Idle period + */ + protobuf_c_boolean protected_keep_alive; +}; +#define WIFI_BSS_MAX_IDLE_CONFIG__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&wifi_bss_max_idle_config__descriptor) \ + , 0, 0 } + + struct WifiApConfig { ProtobufCMessage base; @@ -1103,10 +1149,34 @@ struct WifiApConfig **< Configuration for SAE PWE derivation method */ int32_t sae_pwe_h2e; + /* + **< Channel Switch Announcement Count. Notify the station that the channel will switch after the csa_count beacon intervals. Default value: 3 + */ + uint32_t csa_count; + /* + **< Dtim period of soft-AP. Range: 1 ~ 10. Default value: 1 + */ + uint32_t dtim_period; + /* + **< Whether to enable transition disable feature + */ + uint32_t transition_disable; + /* + **< Enable SAE EXT feature. SOC_GCMP_SUPPORT is required for this feature. + */ + uint32_t sae_ext; + /* + **< Configuration for bss max idle, effective if CONFIG_WIFI_BSS_MAX_IDLE_SUPPORT is enabled + */ + WifiBssMaxIdleConfig *bss_max_idle_cfg; + /* + **< GTK rekeying interval in seconds. If set to 0, GTK rekeying is disabled. Range: 60 ~ 65535 including 0. + */ + uint32_t gtk_rekey_interval; }; #define WIFI_AP_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_ap_config__descriptor) \ - , {0,NULL}, {0,NULL}, 0, 0, 0, 0, 0, 0, 0, 0, NULL, 0 } + , {0,NULL}, {0,NULL}, 0, 0, 0, 0, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 0, NULL, 0 } struct WifiStaConfig @@ -1185,17 +1255,24 @@ struct WifiStaConfig *uint32_t he_trig_su_bmforming_feedback_disabled:1; **< Whether to disable support the transmission of SU feedback in an HE TB sounding sequence. * *uint32_t he_trig_mu_bmforming_partial_feedback_disabled:1; **< Whether to disable support the transmission of partial-bandwidth MU feedback in an HE TB sounding sequence. * * uint32_t he_trig_cqi_feedback_disabled:1; **< Whether to disable support the transmission of CQI feedback in an HE TB sounding sequence. * - * uint32_t he_reserved:22; **< Reserved for future feature set * + * uint32_t vht_su_beamformee_disabled: 1; **< Whether to disable support for operation as an VHT SU beamformee. * + * uint32_t vht_mu_beamformee_disabled: 1; **< Whether to disable support for operation as an VHT MU beamformee. * + * uint32_t vht_mcs8_enabled: 1; **< Whether to support VHT-MCS8. The default value is 0. * + * uint32_t he_reserved:19; **< Reserved for future feature set * */ uint32_t he_bitmask; /* **< Password identifier for H2E. this needs to be null terminated string. SAE_H2E_IDENTIFIER_LEN chars */ ProtobufCBinaryData sae_h2e_identifier; + /* + **< Configuration for SAE-PK (Public Key) Authentication method + */ + uint32_t sae_pk_mode; }; #define WIFI_STA_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_sta_config__descriptor) \ - , {0,NULL}, {0,NULL}, 0, 0, {0,NULL}, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, {0,NULL} } + , {0,NULL}, {0,NULL}, 0, 0, {0,NULL}, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, {0,NULL}, 0 } typedef enum { @@ -3548,6 +3625,25 @@ WifiScanTime * void wifi_scan_time__free_unpacked (WifiScanTime *message, ProtobufCAllocator *allocator); +/* WifiScanChannelBitmap methods */ +void wifi_scan_channel_bitmap__init + (WifiScanChannelBitmap *message); +size_t wifi_scan_channel_bitmap__get_packed_size + (const WifiScanChannelBitmap *message); +size_t wifi_scan_channel_bitmap__pack + (const WifiScanChannelBitmap *message, + uint8_t *out); +size_t wifi_scan_channel_bitmap__pack_to_buffer + (const WifiScanChannelBitmap *message, + ProtobufCBuffer *buffer); +WifiScanChannelBitmap * + wifi_scan_channel_bitmap__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_scan_channel_bitmap__free_unpacked + (WifiScanChannelBitmap *message, + ProtobufCAllocator *allocator); /* WifiScanConfig methods */ void wifi_scan_config__init (WifiScanConfig *message); @@ -3643,6 +3739,25 @@ WifiPmfConfig * void wifi_pmf_config__free_unpacked (WifiPmfConfig *message, ProtobufCAllocator *allocator); +/* WifiBssMaxIdleConfig methods */ +void wifi_bss_max_idle_config__init + (WifiBssMaxIdleConfig *message); +size_t wifi_bss_max_idle_config__get_packed_size + (const WifiBssMaxIdleConfig *message); +size_t wifi_bss_max_idle_config__pack + (const WifiBssMaxIdleConfig *message, + uint8_t *out); +size_t wifi_bss_max_idle_config__pack_to_buffer + (const WifiBssMaxIdleConfig *message, + ProtobufCBuffer *buffer); +WifiBssMaxIdleConfig * + wifi_bss_max_idle_config__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_bss_max_idle_config__free_unpacked + (WifiBssMaxIdleConfig *message, + ProtobufCAllocator *allocator); /* WifiApConfig methods */ void wifi_ap_config__init (WifiApConfig *message); @@ -6564,6 +6679,9 @@ typedef void (*WifiActiveScanTime_Closure) typedef void (*WifiScanTime_Closure) (const WifiScanTime *message, void *closure_data); +typedef void (*WifiScanChannelBitmap_Closure) + (const WifiScanChannelBitmap *message, + void *closure_data); typedef void (*WifiScanConfig_Closure) (const WifiScanConfig *message, void *closure_data); @@ -6579,6 +6697,9 @@ typedef void (*WifiScanThreshold_Closure) typedef void (*WifiPmfConfig_Closure) (const WifiPmfConfig *message, void *closure_data); +typedef void (*WifiBssMaxIdleConfig_Closure) + (const WifiBssMaxIdleConfig *message, + void *closure_data); typedef void (*WifiApConfig_Closure) (const WifiApConfig *message, void *closure_data); @@ -7054,11 +7175,13 @@ extern const ProtobufCMessageDescriptor wifi_init_config__descriptor; extern const ProtobufCMessageDescriptor wifi_country__descriptor; extern const ProtobufCMessageDescriptor wifi_active_scan_time__descriptor; extern const ProtobufCMessageDescriptor wifi_scan_time__descriptor; +extern const ProtobufCMessageDescriptor wifi_scan_channel_bitmap__descriptor; extern const ProtobufCMessageDescriptor wifi_scan_config__descriptor; extern const ProtobufCMessageDescriptor wifi_he_ap_info__descriptor; extern const ProtobufCMessageDescriptor wifi_ap_record__descriptor; extern const ProtobufCMessageDescriptor wifi_scan_threshold__descriptor; extern const ProtobufCMessageDescriptor wifi_pmf_config__descriptor; +extern const ProtobufCMessageDescriptor wifi_bss_max_idle_config__descriptor; extern const ProtobufCMessageDescriptor wifi_ap_config__descriptor; extern const ProtobufCMessageDescriptor wifi_sta_config__descriptor; extern const ProtobufCMessageDescriptor wifi_config__descriptor; diff --git a/common/proto/esp_hosted_rpc.proto b/common/proto/esp_hosted_rpc.proto index db37ac49..7500fb71 100644 --- a/common/proto/esp_hosted_rpc.proto +++ b/common/proto/esp_hosted_rpc.proto @@ -605,6 +605,11 @@ message wifi_scan_time { cause station to disconnect from AP and are not recommended. */ } +message wifi_scan_channel_bitmap { + uint32 ghz_2_channels = 1; /**< Represents 2.4 GHz channels, that bits can be set as wifi_2g_channel_bit_t shown. */ + uint32 ghz_5_channels = 2; /**< Represents 5 GHz channels, that bits can be set as wifi_5g_channel_bit_t shown. */ +} + message wifi_scan_config { bytes ssid = 1; /**< SSID of AP 33char*/ bytes bssid = 2; /**< MAC address of AP 6char */ @@ -613,6 +618,9 @@ message wifi_scan_config { int32 scan_type = 5; /**< scan type, active or passive */ wifi_scan_time scan_time = 6; /**< scan time per channel */ uint32 home_chan_dwell_time = 7; /**< time spent at home channel between scanning consecutive channels.*/ + wifi_scan_channel_bitmap channel_bitmap = 8; /**< Channel bitmap for setting specific channels to be scanned. + Please note that the 'channel' parameter above needs to be set to 0 to allow scanning by bitmap. + Also, note that only allowed channels configured by wifi_country_t can be scanned. */ } message wifi_he_ap_info { @@ -661,6 +669,7 @@ message wifi_scan_threshold { Note: Incase this value is not set and password is set as per WPA2 standards(password len >= 8), it will be defaulted to WPA2 and device won't connect to deprecated WEP/WPA networks. Please set authmode threshold as WIFI_AUTH_WEP/WIFI_AUTH_WPA_PSK to connect to WEP/WPA networks */ + uint32 rssi_5g_adjustment = 3; /**< The RSSI value of the 5G AP is within the rssi_5g_adjustment range compared to the 2G AP, the 5G AP will be given priority for connection. */ } message wifi_pmf_config { @@ -668,6 +677,11 @@ message wifi_pmf_config { bool required = 2; /**< Advertizes that Protected Management Frame is required. Device will not associate to non-PMF capable devices. */ } +message wifi_bss_max_idle_config { + uint32 period = 1; /**< Sets BSS Max idle period (1 Unit = 1000TUs OR 1.024 Seconds). If there are no frames for this period from a STA, SoftAP will disassociate due to inactivity. Setting it to 0 disables the feature */ + bool protected_keep_alive = 2; /**< Requires clients to use protected keep alive frames for BSS Max Idle period */ +} + message wifi_ap_config { bytes ssid = 1; /**< SSID of ESP32 soft-AP. If ssid_len field is 0, this must be a Null terminated string. Otherwise, length is set according to ssid_len. 32 char*/ bytes password = 2; /**< Password of ESP32 soft-AP. 64 char*/ @@ -683,6 +697,12 @@ message wifi_ap_config { bool ftm_responder = 10; /**< Enable FTM Responder mode */ wifi_pmf_config pmf_cfg = 11; /**< Configuration for Protected Management Frame */ int32 sae_pwe_h2e = 12; /**< Configuration for SAE PWE derivation method */ + uint32 csa_count = 13; /**< Channel Switch Announcement Count. Notify the station that the channel will switch after the csa_count beacon intervals. Default value: 3 */ + uint32 dtim_period = 14; /**< Dtim period of soft-AP. Range: 1 ~ 10. Default value: 1 */ + uint32 transition_disable = 15; /**< Whether to enable transition disable feature */ + uint32 sae_ext = 16; /**< Enable SAE EXT feature. SOC_GCMP_SUPPORT is required for this feature. */ + wifi_bss_max_idle_config bss_max_idle_cfg = 17; /**< Configuration for bss max idle, effective if CONFIG_WIFI_BSS_MAX_IDLE_SUPPORT is enabled */ + uint32 gtk_rekey_interval = 18; /**< GTK rekeying interval in seconds. If set to 0, GTK rekeying is disabled. Range: 60 ~ 65535 including 0. */ } message wifi_sta_config { @@ -720,9 +740,13 @@ Units: AP beacon intervals. Defaults to 3 if set to 0. */ //uint32_t he_trig_su_bmforming_feedback_disabled:1; /**< Whether to disable support the transmission of SU feedback in an HE TB sounding sequence. */ //uint32_t he_trig_mu_bmforming_partial_feedback_disabled:1; /**< Whether to disable support the transmission of partial-bandwidth MU feedback in an HE TB sounding sequence. */ // uint32_t he_trig_cqi_feedback_disabled:1; /**< Whether to disable support the transmission of CQI feedback in an HE TB sounding sequence. */ - // uint32_t he_reserved:22; /**< Reserved for future feature set */ + // uint32_t vht_su_beamformee_disabled: 1; /**< Whether to disable support for operation as an VHT SU beamformee. */ + // uint32_t vht_mu_beamformee_disabled: 1; /**< Whether to disable support for operation as an VHT MU beamformee. */ + // uint32_t vht_mcs8_enabled: 1; /**< Whether to support VHT-MCS8. The default value is 0. */ + // uint32_t he_reserved:19; /**< Reserved for future feature set */ uint32 he_bitmask = 14; bytes sae_h2e_identifier = 15; /**< Password identifier for H2E. this needs to be null terminated string. SAE_H2E_IDENTIFIER_LEN chars */ + uint32 sae_pk_mode = 16; /**< Configuration for SAE-PK (Public Key) Authentication method */ } message wifi_config { diff --git a/host/drivers/rpc/core/rpc_req.c b/host/drivers/rpc/core/rpc_req.c index 800ef0f6..477e3716 100644 --- a/host/drivers/rpc/core/rpc_req.c +++ b/host/drivers/rpc/core/rpc_req.c @@ -8,7 +8,6 @@ #include "esp_hosted_wifi_config.h" #include "esp_hosted_transport.h" #include "esp_hosted_bitmasks.h" -#include "esp_idf_version.h" DEFINE_LOG_TAG(rpc_req); @@ -227,6 +226,9 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) RPC_ALLOC_ELEMENT(WifiScanThreshold, p_c_sta->threshold, wifi_scan_threshold__init); p_c_sta->threshold->rssi = p_a_sta->threshold.rssi; p_c_sta->threshold->authmode = p_a_sta->threshold.authmode; +#if H_PRESENT_IN_ESP_IDF_5_4_0 + p_c_sta->threshold->rssi_5g_adjustment = p_a_sta->threshold.rssi_5g_adjustment; +#endif RPC_ALLOC_ELEMENT(WifiPmfConfig, p_c_sta->pmf_cfg, wifi_pmf_config__init); p_c_sta->pmf_cfg->capable = p_a_sta->pmf_cfg.capable; p_c_sta->pmf_cfg->required = p_a_sta->pmf_cfg.required; @@ -249,17 +251,6 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) if (p_a_sta->transition_disable) H_SET_BIT(WIFI_STA_CONFIG_1_transition_disable, p_c_sta->bitmask); -#if H_WIFI_VHT_FIELDS_AVAILABLE - if (p_a_sta->vht_su_beamformee_disabled) - H_SET_BIT(WIFI_STA_CONFIG_2_vht_su_beamformee_disabled, p_c_sta->he_bitmask); - - if (p_a_sta->vht_mu_beamformee_disabled) - H_SET_BIT(WIFI_STA_CONFIG_2_vht_mu_beamformee_disabled, p_c_sta->he_bitmask); - - if (p_a_sta->vht_mcs8_enabled) - H_SET_BIT(WIFI_STA_CONFIG_2_vht_mcs8_enabled, p_c_sta->he_bitmask); -#endif - #if H_DECODE_WIFI_RESERVED_FIELD #if H_WIFI_NEW_RESERVED_FIELD_NAMES WIFI_STA_CONFIG_2_SET_RESERVED_VAL(p_a_sta->reserved2, p_c_sta->he_bitmask); @@ -269,6 +260,7 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) #endif p_c_sta->sae_pwe_h2e = p_a_sta->sae_pwe_h2e; + p_c_sta->sae_pk_mode = p_a_sta->sae_pk_mode; p_c_sta->failure_retry_cnt = p_a_sta->failure_retry_cnt; if (p_a_sta->he_dcm_set) @@ -297,7 +289,7 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) if (p_a_sta->he_trig_cqi_feedback_disabled) H_SET_BIT(WIFI_STA_CONFIG_2_he_trig_cqi_feedback_disabled_BIT, p_c_sta->he_bitmask); -#if H_WIFI_VHT_FIELDS_AVAILABLE +#if H_PRESENT_IN_ESP_IDF_5_5_0 if (p_a_sta->vht_su_beamformee_disabled) H_SET_BIT(WIFI_STA_CONFIG_2_vht_su_beamformee_disabled, p_c_sta->he_bitmask); @@ -333,11 +325,22 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) p_c_ap->ssid_hidden = p_a_ap->ssid_hidden; p_c_ap->max_connection = p_a_ap->max_connection; p_c_ap->beacon_interval = p_a_ap->beacon_interval; + p_c_ap->csa_count = p_a_ap->csa_count; + p_c_ap->dtim_period = p_a_ap->dtim_period; p_c_ap->pairwise_cipher = p_a_ap->pairwise_cipher; p_c_ap->ftm_responder = p_a_ap->ftm_responder; RPC_ALLOC_ELEMENT(WifiPmfConfig, p_c_ap->pmf_cfg, wifi_pmf_config__init); p_c_ap->pmf_cfg->capable = p_a_ap->pmf_cfg.capable; p_c_ap->pmf_cfg->required = p_a_ap->pmf_cfg.required; + p_c_ap->sae_pwe_h2e = p_a_ap->sae_pwe_h2e; + p_c_ap->transition_disable = p_a_ap->transition_disable; +#if H_PRESENT_IN_ESP_IDF_5_5_0 + p_c_ap->sae_ext = p_a_ap->sae_ext; + RPC_ALLOC_ELEMENT(WifiBssMaxIdleConfig, p_c_ap->bss_max_idle_cfg, wifi_bss_max_idle_config__init); + p_c_ap->bss_max_idle_cfg->period = p_a_ap->bss_max_idle_cfg.period; + p_c_ap->bss_max_idle_cfg->protected_keep_alive = p_a_ap->bss_max_idle_cfg.protected_keep_alive; + p_c_ap->gtk_rekey_interval = p_a_ap->gtk_rekey_interval; +#endif break; } default: { ESP_LOGE(TAG, "unexpected wifi iface [%u]\n", p_a->iface); @@ -380,6 +383,10 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) p_c->home_chan_dwell_time = p_a->home_chan_dwell_time; + RPC_ALLOC_ELEMENT(WifiScanChannelBitmap, p_c->channel_bitmap, wifi_scan_channel_bitmap__init); + p_c->channel_bitmap->ghz_2_channels = p_a->channel_bitmap.ghz_2_channels; + p_c->channel_bitmap->ghz_5_channels = p_a->channel_bitmap.ghz_5_channels; + req_payload->config_set = 1; } ESP_LOGI(TAG, "Scan start Req\n"); diff --git a/host/drivers/rpc/core/rpc_rsp.c b/host/drivers/rpc/core/rpc_rsp.c index 809485e1..ea704ec0 100644 --- a/host/drivers/rpc/core/rpc_rsp.c +++ b/host/drivers/rpc/core/rpc_rsp.c @@ -7,7 +7,6 @@ #include "esp_hosted_wifi_config.h" #include "esp_hosted_transport.h" #include "esp_hosted_bitmasks.h" -#include "esp_idf_version.h" #include "esp_hosted_config.h" DEFINE_LOG_TAG(rpc_rsp); @@ -254,13 +253,19 @@ int rpc_parse_rsp(Rpc *rpc_msg, ctrl_cmd_t *app_resp) p_a_sta->channel = p_c_sta->channel; p_a_sta->listen_interval = p_c_sta->listen_interval; p_a_sta->sort_method = p_c_sta->sort_method; - p_a_sta->threshold.rssi = p_c_sta->threshold->rssi; - p_a_sta->threshold.authmode = p_c_sta->threshold->authmode; + if (p_c_sta->threshold) { + p_a_sta->threshold.rssi = p_c_sta->threshold->rssi; + p_a_sta->threshold.authmode = p_c_sta->threshold->authmode; +#if H_PRESENT_IN_ESP_IDF_5_4_0 + p_a_sta->threshold.rssi_5g_adjustment = p_c_sta->threshold->rssi_5g_adjustment; +#endif + } //p_a_sta->ssid_hidden = p_c_sta->ssid_hidden; //p_a_sta->max_connections = p_c_sta->max_connections; - p_a_sta->pmf_cfg.capable = p_c_sta->pmf_cfg->capable; - p_a_sta->pmf_cfg.required = p_c_sta->pmf_cfg->required; - + if (p_c_sta->pmf_cfg) { + p_a_sta->pmf_cfg.capable = p_c_sta->pmf_cfg->capable; + p_a_sta->pmf_cfg.required = p_c_sta->pmf_cfg->required; + } p_a_sta->rm_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_rm_enabled, p_c_sta->bitmask); p_a_sta->btm_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_btm_enabled, p_c_sta->bitmask); p_a_sta->mbo_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_mbo_enabled, p_c_sta->bitmask); @@ -277,6 +282,7 @@ int rpc_parse_rsp(Rpc *rpc_msg, ctrl_cmd_t *app_resp) #endif p_a_sta->sae_pwe_h2e = p_c_sta->sae_pwe_h2e; + p_a_sta->sae_pk_mode = p_c_sta->sae_pk_mode; p_a_sta->failure_retry_cnt = p_c_sta->failure_retry_cnt; p_a_sta->he_dcm_set = H_GET_BIT(WIFI_STA_CONFIG_2_he_dcm_set_BIT, p_c_sta->he_bitmask); @@ -291,7 +297,7 @@ int rpc_parse_rsp(Rpc *rpc_msg, ctrl_cmd_t *app_resp) p_a_sta->he_trig_mu_bmforming_partial_feedback_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_trig_mu_bmforming_partial_feedback_disabled_BIT, p_c_sta->bitmask); p_a_sta->he_trig_cqi_feedback_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_trig_cqi_feedback_disabled_BIT, p_c_sta->bitmask); -#if H_WIFI_VHT_FIELDS_AVAILABLE +#if H_PRESENT_IN_ESP_IDF_5_5_0 p_a_sta->vht_su_beamformee_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_vht_su_beamformee_disabled, p_c_sta->he_bitmask); p_a_sta->vht_mu_beamformee_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_vht_mu_beamformee_disabled, p_c_sta->he_bitmask); p_a_sta->vht_mcs8_enabled = H_GET_BIT(WIFI_STA_CONFIG_2_vht_mcs8_enabled, p_c_sta->he_bitmask); @@ -319,10 +325,24 @@ int rpc_parse_rsp(Rpc *rpc_msg, ctrl_cmd_t *app_resp) p_a_ap->ssid_hidden = p_c_ap->ssid_hidden; p_a_ap->max_connection = p_c_ap->max_connection; p_a_ap->beacon_interval = p_c_ap->beacon_interval; + p_a_ap->csa_count = p_c_ap->csa_count; + p_a_ap->dtim_period = p_c_ap->dtim_period; p_a_ap->pairwise_cipher = p_c_ap->pairwise_cipher; p_a_ap->ftm_responder = p_c_ap->ftm_responder; - p_a_ap->pmf_cfg.capable = p_c_ap->pmf_cfg->capable; - p_a_ap->pmf_cfg.required = p_c_ap->pmf_cfg->required; + if (p_c_ap->pmf_cfg) { + p_a_ap->pmf_cfg.capable = p_c_ap->pmf_cfg->capable; + p_a_ap->pmf_cfg.required = p_c_ap->pmf_cfg->required; + } + p_a_ap->sae_pwe_h2e = p_c_ap->sae_pwe_h2e; + p_a_ap->transition_disable = p_c_ap->transition_disable; +#if H_PRESENT_IN_ESP_IDF_5_5_0 + p_a_ap->sae_ext = p_c_ap->sae_ext; + if (p_c_ap->bss_max_idle_cfg) { + p_a_ap->bss_max_idle_cfg.period = p_c_ap->bss_max_idle_cfg->period; + p_a_ap->bss_max_idle_cfg.protected_keep_alive = p_c_ap->bss_max_idle_cfg->protected_keep_alive; + } + p_a_ap->gtk_rekey_interval = p_c_ap->gtk_rekey_interval; +#endif break; } default: diff --git a/host/port/esp/freertos/include/esp_hosted_wifi_config.h b/host/port/esp/freertos/include/esp_hosted_wifi_config.h index 7a93ebd3..514bdf0a 100644 --- a/host/port/esp/freertos/include/esp_hosted_wifi_config.h +++ b/host/port/esp/freertos/include/esp_hosted_wifi_config.h @@ -19,10 +19,16 @@ /* ESP-IDF 5.5.0 breaking change: reserved/he_reserved renamed to reserved1/reserved2 */ #if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 5, 0) #define H_WIFI_NEW_RESERVED_FIELD_NAMES 1 - #define H_WIFI_VHT_FIELDS_AVAILABLE 1 + #define H_PRESENT_IN_ESP_IDF_5_5_0 1 #else #define H_WIFI_NEW_RESERVED_FIELD_NAMES 0 - #define H_WIFI_VHT_FIELDS_AVAILABLE 0 + #define H_PRESENT_IN_ESP_IDF_5_5_0 0 +#endif + +#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 0) + #define H_PRESENT_IN_ESP_IDF_5_4_0 1 +#else + #define H_PRESENT_IN_ESP_IDF_5_4_0 0 #endif /* User-controllable reserved field decoding - works regardless of IDF version */ diff --git a/idf_component.yml b/idf_component.yml index 66957d29..dbbf52ba 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.0.10" +version: "2.0.11" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/slave_control.c b/slave/main/slave_control.c index 3f7655e4..33dfd2a8 100644 --- a/slave/main/slave_control.c +++ b/slave/main/slave_control.c @@ -27,14 +27,19 @@ #include "esp_hosted_bitmasks.h" #include "esp_idf_version.h" -/* ESP-IDF 5.5.0: renamed reserved fields to reserved1/reserved2 - * and added VHT beamforming/MCS fields */ +/* ESP-IDF 5.5.0: renamed reserved fields to reserved1/reserved2 */ #if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 5, 0) #define H_WIFI_NEW_RESERVED_FIELD_NAMES 1 -#define H_WIFI_VHT_FIELDS_AVAILABLE 1 +#define H_PRESENT_IN_ESP_IDF_5_5_0 1 #else #define H_WIFI_NEW_RESERVED_FIELD_NAMES 0 -#define H_WIFI_VHT_FIELDS_AVAILABLE 0 +#define H_PRESENT_IN_ESP_IDF_5_5_0 0 +#endif + +#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 0) +#define H_PRESENT_IN_ESP_IDF_5_4_0 1 +#else +#define H_PRESENT_IN_ESP_IDF_5_4_0 0 #endif /* Slave-side: Always support reserved field decoding for maximum compatibility @@ -878,13 +883,19 @@ static esp_err_t req_wifi_set_config(Rpc *req, Rpc *resp, void *priv_data) p_a_sta->channel = p_c_sta->channel; p_a_sta->listen_interval = p_c_sta->listen_interval; p_a_sta->sort_method = p_c_sta->sort_method; - p_a_sta->threshold.rssi = p_c_sta->threshold->rssi; - p_a_sta->threshold.authmode = p_c_sta->threshold->authmode; + if (p_c_sta->threshold) { + p_a_sta->threshold.rssi = p_c_sta->threshold->rssi; + p_a_sta->threshold.authmode = p_c_sta->threshold->authmode; +#if H_PRESENT_IN_ESP_IDF_5_4_0 + p_a_sta->threshold.rssi_5g_adjustment = p_c_sta->threshold->rssi_5g_adjustment; +#endif + } //p_a_sta->ssid_hidden = p_c_sta->ssid_hidden; //p_a_sta->max_connections = p_c_sta->max_connections; - p_a_sta->pmf_cfg.capable = p_c_sta->pmf_cfg->capable; - p_a_sta->pmf_cfg.required = p_c_sta->pmf_cfg->required; - + if (p_c_sta->pmf_cfg) { + p_a_sta->pmf_cfg.capable = p_c_sta->pmf_cfg->capable; + p_a_sta->pmf_cfg.required = p_c_sta->pmf_cfg->required; + } p_a_sta->rm_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_rm_enabled, p_c_sta->bitmask); p_a_sta->btm_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_btm_enabled, p_c_sta->bitmask); p_a_sta->mbo_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_mbo_enabled, p_c_sta->bitmask); @@ -900,6 +911,7 @@ static esp_err_t req_wifi_set_config(Rpc *req, Rpc *resp, void *priv_data) #endif p_a_sta->sae_pwe_h2e = p_c_sta->sae_pwe_h2e; + p_a_sta->sae_pk_mode = p_c_sta->sae_pk_mode; p_a_sta->failure_retry_cnt = p_c_sta->failure_retry_cnt; p_a_sta->he_dcm_set = H_GET_BIT(WIFI_STA_CONFIG_2_he_dcm_set_BIT, p_c_sta->he_bitmask); @@ -914,7 +926,7 @@ static esp_err_t req_wifi_set_config(Rpc *req, Rpc *resp, void *priv_data) p_a_sta->he_trig_mu_bmforming_partial_feedback_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_trig_mu_bmforming_partial_feedback_disabled_BIT, p_c_sta->he_bitmask); p_a_sta->he_trig_cqi_feedback_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_trig_cqi_feedback_disabled_BIT, p_c_sta->he_bitmask); -#if H_WIFI_VHT_FIELDS_AVAILABLE +#if H_PRESENT_IN_ESP_IDF_5_5_0 p_a_sta->vht_su_beamformee_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_vht_su_beamformee_disabled, p_c_sta->he_bitmask); p_a_sta->vht_mu_beamformee_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_vht_mu_beamformee_disabled, p_c_sta->he_bitmask); p_a_sta->vht_mcs8_enabled = H_GET_BIT(WIFI_STA_CONFIG_2_vht_mcs8_enabled, p_c_sta->he_bitmask); @@ -948,11 +960,24 @@ static esp_err_t req_wifi_set_config(Rpc *req, Rpc *resp, void *priv_data) p_a_ap->ssid_hidden = p_c_ap->ssid_hidden; p_a_ap->max_connection = p_c_ap->max_connection; p_a_ap->beacon_interval = p_c_ap->beacon_interval; + p_a_ap->csa_count = p_c_ap->csa_count; + p_a_ap->dtim_period = p_c_ap->dtim_period; p_a_ap->pairwise_cipher = p_c_ap->pairwise_cipher; p_a_ap->ftm_responder = p_c_ap->ftm_responder; - p_a_ap->pmf_cfg.capable = p_c_ap->pmf_cfg->capable; - p_a_ap->pmf_cfg.required = p_c_ap->pmf_cfg->required; + if (p_c_ap->pmf_cfg) { + p_a_ap->pmf_cfg.capable = p_c_ap->pmf_cfg->capable; + p_a_ap->pmf_cfg.required = p_c_ap->pmf_cfg->required; + } p_a_ap->sae_pwe_h2e = p_c_ap->sae_pwe_h2e; + p_a_ap->transition_disable = p_c_ap->transition_disable; +#if H_PRESENT_IN_ESP_IDF_5_5_0 + p_a_ap->sae_ext = p_c_ap->sae_ext; + if (p_c_ap->bss_max_idle_cfg) { + p_a_ap->bss_max_idle_cfg.period = p_c_ap->bss_max_idle_cfg->period; + p_a_ap->bss_max_idle_cfg.protected_keep_alive = p_c_ap->bss_max_idle_cfg->protected_keep_alive; + } + p_a_ap->gtk_rekey_interval = p_c_ap->gtk_rekey_interval; +#endif } RPC_RET_FAIL_IF(esp_wifi_set_config(req_payload->iface, &cfg)); @@ -999,6 +1024,9 @@ static esp_err_t req_wifi_get_config(Rpc *req, Rpc *resp, void *priv_data) RPC_ALLOC_ELEMENT(WifiScanThreshold, p_c_sta->threshold, wifi_scan_threshold__init); p_c_sta->threshold->rssi = p_a_sta->threshold.rssi; p_c_sta->threshold->authmode = p_a_sta->threshold.authmode; +#if H_PRESENT_IN_ESP_IDF_5_4_0 + p_c_sta->threshold->rssi_5g_adjustment = p_a_sta->threshold.rssi_5g_adjustment; +#endif RPC_ALLOC_ELEMENT(WifiPmfConfig, p_c_sta->pmf_cfg, wifi_pmf_config__init); p_c_sta->pmf_cfg->capable = p_a_sta->pmf_cfg.capable; p_c_sta->pmf_cfg->required = p_a_sta->pmf_cfg.required; @@ -1030,6 +1058,7 @@ static esp_err_t req_wifi_get_config(Rpc *req, Rpc *resp, void *priv_data) #endif p_c_sta->sae_pwe_h2e = p_a_sta->sae_pwe_h2e; + p_c_sta->sae_pk_mode = p_a_sta->sae_pk_mode; p_c_sta->failure_retry_cnt = p_a_sta->failure_retry_cnt; /* HE field handling */ @@ -1060,7 +1089,7 @@ static esp_err_t req_wifi_get_config(Rpc *req, Rpc *resp, void *priv_data) if (p_a_sta->he_trig_cqi_feedback_disabled) H_SET_BIT(WIFI_STA_CONFIG_2_he_trig_cqi_feedback_disabled_BIT, p_c_sta->he_bitmask); -#if H_WIFI_VHT_FIELDS_AVAILABLE +#if H_PRESENT_IN_ESP_IDF_5_5_0 if (p_a_sta->vht_su_beamformee_disabled) H_SET_BIT(WIFI_STA_CONFIG_2_vht_su_beamformee_disabled, p_c_sta->he_bitmask); @@ -1089,19 +1118,29 @@ static esp_err_t req_wifi_get_config(Rpc *req, Rpc *resp, void *priv_data) WifiApConfig * p_c_ap = resp_payload->cfg->ap; RPC_RESP_COPY_STR(p_c_ap->password, p_a_ap->password, PASSWORD_LENGTH); p_c_ap->ssid_len = p_a_ap->ssid_len; + if (p_c_ap->ssid_len) + RPC_RESP_COPY_STR(p_c_ap->ssid, p_a_ap->ssid, SSID_LENGTH); p_c_ap->channel = p_a_ap->channel; p_c_ap->authmode = p_a_ap->authmode; p_c_ap->ssid_hidden = p_a_ap->ssid_hidden; p_c_ap->max_connection = p_a_ap->max_connection; p_c_ap->beacon_interval = p_a_ap->beacon_interval; + p_c_ap->csa_count = p_a_ap->csa_count; + p_c_ap->dtim_period = p_a_ap->dtim_period; p_c_ap->pairwise_cipher = p_a_ap->pairwise_cipher; p_c_ap->ftm_responder = p_a_ap->ftm_responder; RPC_ALLOC_ELEMENT(WifiPmfConfig, p_c_ap->pmf_cfg, wifi_pmf_config__init); p_c_ap->pmf_cfg->capable = p_a_ap->pmf_cfg.capable; p_c_ap->pmf_cfg->required = p_a_ap->pmf_cfg.required; - if (p_c_ap->ssid_len) - RPC_RESP_COPY_STR(p_c_ap->ssid, p_a_ap->ssid, SSID_LENGTH); p_c_ap->sae_pwe_h2e = p_a_ap->sae_pwe_h2e; + p_c_ap->transition_disable = p_a_ap->transition_disable; +#if H_PRESENT_IN_ESP_IDF_5_5_0 + p_c_ap->sae_ext = p_a_ap->sae_ext; + RPC_ALLOC_ELEMENT(WifiBssMaxIdleConfig, p_c_ap->bss_max_idle_cfg, wifi_bss_max_idle_config__init); + p_c_ap->bss_max_idle_cfg->period = p_a_ap->bss_max_idle_cfg.period; + p_c_ap->bss_max_idle_cfg->protected_keep_alive = p_a_ap->bss_max_idle_cfg.protected_keep_alive; + p_c_ap->gtk_rekey_interval = p_a_ap->gtk_rekey_interval; +#endif break; } default: @@ -1149,6 +1188,11 @@ static esp_err_t req_wifi_scan_start(Rpc *req, Rpc *resp, void *priv_data) p_a_st->active.max = p_c_st->active->max ; p_a->home_chan_dwell_time = p_c->home_chan_dwell_time; + + if (p_c->channel_bitmap) { + p_a->channel_bitmap.ghz_2_channels = p_c->channel_bitmap->ghz_2_channels; + p_a->channel_bitmap.ghz_5_channels = p_c->channel_bitmap->ghz_5_channels; + } } RPC_RET_FAIL_IF(esp_wifi_scan_start(p_a, req_payload->block)); @@ -1715,7 +1759,7 @@ static esp_err_t req_wifi_sta_get_negotiated_phymode(Rpc *req, Rpc *resp, void * static esp_err_t req_wifi_set_protocols(Rpc *req, Rpc *resp, void *priv_data) { -#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 0) +#if H_PRESENT_IN_ESP_IDF_5_4_0 RPC_TEMPLATE(RpcRespWifiSetProtocols, resp_wifi_set_protocols, RpcReqWifiSetProtocols, req_wifi_set_protocols, rpc__resp__wifi_set_protocols__init); @@ -1742,7 +1786,7 @@ static esp_err_t req_wifi_set_protocols(Rpc *req, Rpc *resp, void *priv_data) static esp_err_t req_wifi_get_protocols(Rpc *req, Rpc *resp, void *priv_data) { -#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 0) +#if H_PRESENT_IN_ESP_IDF_5_4_0 RPC_TEMPLATE(RpcRespWifiGetProtocols, resp_wifi_get_protocols, RpcReqWifiGetProtocols, req_wifi_get_protocols, rpc__resp__wifi_get_protocols__init); @@ -1770,7 +1814,7 @@ static esp_err_t req_wifi_get_protocols(Rpc *req, Rpc *resp, void *priv_data) static esp_err_t req_wifi_set_bandwidths(Rpc *req, Rpc *resp, void *priv_data) { -#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 0) +#if H_PRESENT_IN_ESP_IDF_5_4_0 RPC_TEMPLATE(RpcRespWifiSetBandwidths, resp_wifi_set_bandwidths, RpcReqWifiSetBandwidths, req_wifi_set_bandwidths, rpc__resp__wifi_set_bandwidths__init); @@ -1798,7 +1842,7 @@ static esp_err_t req_wifi_set_bandwidths(Rpc *req, Rpc *resp, void *priv_data) static esp_err_t req_wifi_get_bandwidths(Rpc *req, Rpc *resp, void *priv_data) { -#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 0) +#if H_PRESENT_IN_ESP_IDF_5_4_0 RPC_TEMPLATE(RpcRespWifiGetBandwidths, resp_wifi_get_bandwidths, RpcReqWifiGetBandwidths, req_wifi_get_bandwidths, rpc__resp__wifi_get_bandwidths__init); @@ -1826,7 +1870,7 @@ static esp_err_t req_wifi_get_bandwidths(Rpc *req, Rpc *resp, void *priv_data) static esp_err_t req_wifi_set_band(Rpc *req, Rpc *resp, void *priv_data) { -#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 0) +#if H_PRESENT_IN_ESP_IDF_5_4_0 RPC_TEMPLATE(RpcRespWifiSetBand, resp_wifi_set_band, RpcReqWifiSetBand, req_wifi_set_band, rpc__resp__wifi_set_band__init); @@ -1846,7 +1890,7 @@ static esp_err_t req_wifi_set_band(Rpc *req, Rpc *resp, void *priv_data) static esp_err_t req_wifi_get_band(Rpc *req, Rpc *resp, void *priv_data) { -#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 0) +#if H_PRESENT_IN_ESP_IDF_5_4_0 RPC_TEMPLATE_SIMPLE(RpcRespWifiGetBand, resp_wifi_get_band, RpcReqWifiGetBand, req_wifi_get_band, rpc__resp__wifi_get_band__init); @@ -1866,7 +1910,7 @@ static esp_err_t req_wifi_get_band(Rpc *req, Rpc *resp, void *priv_data) static esp_err_t req_wifi_set_band_mode(Rpc *req, Rpc *resp, void *priv_data) { -#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 0) +#if H_PRESENT_IN_ESP_IDF_5_4_0 RPC_TEMPLATE(RpcRespWifiSetBandMode, resp_wifi_set_bandmode, RpcReqWifiSetBandMode, req_wifi_set_bandmode, rpc__resp__wifi_set_band_mode__init); @@ -1886,7 +1930,7 @@ static esp_err_t req_wifi_set_band_mode(Rpc *req, Rpc *resp, void *priv_data) static esp_err_t req_wifi_get_band_mode(Rpc *req, Rpc *resp, void *priv_data) { -#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 0) +#if H_PRESENT_IN_ESP_IDF_5_4_0 RPC_TEMPLATE_SIMPLE(RpcRespWifiGetBandMode, resp_wifi_get_bandmode, RpcReqWifiGetBandMode, req_wifi_get_bandmode, rpc__resp__wifi_get_band_mode__init); From 55ea395911875d411db7f3ecfa7d63672e6bda39 Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Fri, 20 Jun 2025 18:05:37 +0800 Subject: [PATCH 040/114] fix(CI_test_more_versions): Test against more ESP IDF versions - latest - release-v5.5 - release-v5.4, v5.4, v5.4.1 - release-v5.3, v5.3.3, v5.3.2, v5.3.1 - fixed build break caused by missing `transition_disable` in some IDF versions - Closes: https://github.com/espressif/esp-hosted-mcu/issues/62 --- .gitlab-ci.yml | 15 ++++--- host/drivers/rpc/core/rpc_req.c | 2 + host/drivers/rpc/core/rpc_rsp.c | 2 + .../freertos/include/esp_hosted_wifi_config.h | 14 +++++++ idf_component.yml | 2 +- slave/main/slave_control.c | 21 +++------- slave/main/slave_wifi_config.h | 40 +++++++++++++++++++ 7 files changed, 73 insertions(+), 23 deletions(-) create mode 100644 slave/main/slave_wifi_config.h diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bcd622ea..2ea7bb49 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -65,30 +65,33 @@ before_script: build_idf_v5.3: extends: .build_template - image: espressif/idf:release-v5.3 + image: espressif/idf:${IDF_VER} parallel: matrix: - - IDF_TARGET: ["esp32p4", "esp32h2"] + - IDF_VER: ["v5.3.1", "v5.3.2", "v5.3.3", "release-v5.3"] + IDF_TARGET: ["esp32p4", "esp32h2"] IDF_SLAVE_TARGET: ["esp32c6"] IDF_EXAMPLE_PATH: examples/protocols/mqtt/tcp #IDF_EXAMPLE_PATH: [examples/wifi/iperf] build_idf_v5.4: extends: .build_template - image: espressif/idf:release-v5.4 + image: espressif/idf:${IDF_VER} parallel: matrix: - - IDF_TARGET: ["esp32p4", "esp32h2"] + - IDF_VER: ["v5.4", "v5.4.1", "release-v5.4"] + IDF_TARGET: ["esp32p4", "esp32h2"] IDF_SLAVE_TARGET: ["esp32c6"] IDF_EXAMPLE_PATH: examples/protocols/mqtt/tcp #IDF_EXAMPLE_PATH: [examples/wifi/iperf] build_idf_v5.5: extends: .build_template - image: espressif/idf:release-v5.5 + image: espressif/idf:${IDF_VER} parallel: matrix: - - IDF_TARGET: ["esp32p4", "esp32h2"] + - IDF_VER: ["release-v5.5"] + IDF_TARGET: ["esp32p4", "esp32h2"] IDF_SLAVE_TARGET: ["esp32c6", "esp32c5", "esp32", "esp32c2", "esp32c3", "esp32s3" ] IDF_EXAMPLE_PATH: [examples/wifi/iperf] diff --git a/host/drivers/rpc/core/rpc_req.c b/host/drivers/rpc/core/rpc_req.c index 477e3716..d4feec99 100644 --- a/host/drivers/rpc/core/rpc_req.c +++ b/host/drivers/rpc/core/rpc_req.c @@ -333,7 +333,9 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) p_c_ap->pmf_cfg->capable = p_a_ap->pmf_cfg.capable; p_c_ap->pmf_cfg->required = p_a_ap->pmf_cfg.required; p_c_ap->sae_pwe_h2e = p_a_ap->sae_pwe_h2e; +#if H_GOT_AP_CONFIG_PARAM_TRANSITION_DISABLE p_c_ap->transition_disable = p_a_ap->transition_disable; +#endif #if H_PRESENT_IN_ESP_IDF_5_5_0 p_c_ap->sae_ext = p_a_ap->sae_ext; RPC_ALLOC_ELEMENT(WifiBssMaxIdleConfig, p_c_ap->bss_max_idle_cfg, wifi_bss_max_idle_config__init); diff --git a/host/drivers/rpc/core/rpc_rsp.c b/host/drivers/rpc/core/rpc_rsp.c index ea704ec0..b96f565d 100644 --- a/host/drivers/rpc/core/rpc_rsp.c +++ b/host/drivers/rpc/core/rpc_rsp.c @@ -334,7 +334,9 @@ int rpc_parse_rsp(Rpc *rpc_msg, ctrl_cmd_t *app_resp) p_a_ap->pmf_cfg.required = p_c_ap->pmf_cfg->required; } p_a_ap->sae_pwe_h2e = p_c_ap->sae_pwe_h2e; +#if H_GOT_AP_CONFIG_PARAM_TRANSITION_DISABLE p_a_ap->transition_disable = p_c_ap->transition_disable; +#endif #if H_PRESENT_IN_ESP_IDF_5_5_0 p_a_ap->sae_ext = p_c_ap->sae_ext; if (p_c_ap->bss_max_idle_cfg) { diff --git a/host/port/esp/freertos/include/esp_hosted_wifi_config.h b/host/port/esp/freertos/include/esp_hosted_wifi_config.h index 514bdf0a..ad6a6916 100644 --- a/host/port/esp/freertos/include/esp_hosted_wifi_config.h +++ b/host/port/esp/freertos/include/esp_hosted_wifi_config.h @@ -9,6 +9,10 @@ #include "esp_idf_version.h" #include "esp_hosted_config.h" +#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 3, 1) +#error ESP-IDF version used is not supported +#endif + #if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 0) /* dual band API support available */ #define H_WIFI_DUALBAND_SUPPORT 1 @@ -38,4 +42,14 @@ #define H_DECODE_WIFI_RESERVED_FIELD 0 #endif +/* wifi_ap_config_t::transition_disable only found in + * IDF v5.3.3 and above, or + * IDF v5.4.1 and above + */ +#if (ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 3, 3)) || (ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 4, 1)) +#define H_GOT_AP_CONFIG_PARAM_TRANSITION_DISABLE 0 +#else +#define H_GOT_AP_CONFIG_PARAM_TRANSITION_DISABLE 1 +#endif + #endif /* __ESP_HOSTED_WIFI_CONFIG_H__ */ diff --git a/idf_component.yml b/idf_component.yml index dbbf52ba..069b4522 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.0.11" +version: "2.0.12" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/slave_control.c b/slave/main/slave_control.c index 33dfd2a8..8019832c 100644 --- a/slave/main/slave_control.c +++ b/slave/main/slave_control.c @@ -25,22 +25,7 @@ #include "esp_hosted_rpc.h" #include "esp_hosted_transport.h" #include "esp_hosted_bitmasks.h" -#include "esp_idf_version.h" - -/* ESP-IDF 5.5.0: renamed reserved fields to reserved1/reserved2 */ -#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 5, 0) -#define H_WIFI_NEW_RESERVED_FIELD_NAMES 1 -#define H_PRESENT_IN_ESP_IDF_5_5_0 1 -#else -#define H_WIFI_NEW_RESERVED_FIELD_NAMES 0 -#define H_PRESENT_IN_ESP_IDF_5_5_0 0 -#endif - -#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 0) -#define H_PRESENT_IN_ESP_IDF_5_4_0 1 -#else -#define H_PRESENT_IN_ESP_IDF_5_4_0 0 -#endif +#include "slave_wifi_config.h" /* Slave-side: Always support reserved field decoding for maximum compatibility * The host may or may not have CONFIG_ESP_HOSTED_DECODE_WIFI_RESERVED_FIELD enabled @@ -969,7 +954,9 @@ static esp_err_t req_wifi_set_config(Rpc *req, Rpc *resp, void *priv_data) p_a_ap->pmf_cfg.required = p_c_ap->pmf_cfg->required; } p_a_ap->sae_pwe_h2e = p_c_ap->sae_pwe_h2e; +#if H_GOT_AP_CONFIG_PARAM_TRANSITION_DISABLE p_a_ap->transition_disable = p_c_ap->transition_disable; +#endif #if H_PRESENT_IN_ESP_IDF_5_5_0 p_a_ap->sae_ext = p_c_ap->sae_ext; if (p_c_ap->bss_max_idle_cfg) { @@ -1133,7 +1120,9 @@ static esp_err_t req_wifi_get_config(Rpc *req, Rpc *resp, void *priv_data) p_c_ap->pmf_cfg->capable = p_a_ap->pmf_cfg.capable; p_c_ap->pmf_cfg->required = p_a_ap->pmf_cfg.required; p_c_ap->sae_pwe_h2e = p_a_ap->sae_pwe_h2e; +#if H_GOT_AP_CONFIG_PARAM_TRANSITION_DISABLE p_c_ap->transition_disable = p_a_ap->transition_disable; +#endif #if H_PRESENT_IN_ESP_IDF_5_5_0 p_c_ap->sae_ext = p_a_ap->sae_ext; RPC_ALLOC_ELEMENT(WifiBssMaxIdleConfig, p_c_ap->bss_max_idle_cfg, wifi_bss_max_idle_config__init); diff --git a/slave/main/slave_wifi_config.h b/slave/main/slave_wifi_config.h new file mode 100644 index 00000000..7283c098 --- /dev/null +++ b/slave/main/slave_wifi_config.h @@ -0,0 +1,40 @@ +/* + * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef __SLAVE_WIFI_CONFIG_H__ +#define __SLAVE_WIFI_CONFIG_H__ + +#include "esp_idf_version.h" + +#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 3, 1) +#error ESP-IDF version used is not supported +#endif + +/* ESP-IDF 5.5.0: renamed reserved fields to reserved1/reserved2 */ +#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 5, 0) +#define H_WIFI_NEW_RESERVED_FIELD_NAMES 1 +#define H_PRESENT_IN_ESP_IDF_5_5_0 1 +#else +#define H_WIFI_NEW_RESERVED_FIELD_NAMES 0 +#define H_PRESENT_IN_ESP_IDF_5_5_0 0 +#endif + +#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 0) +#define H_PRESENT_IN_ESP_IDF_5_4_0 1 +#else +#define H_PRESENT_IN_ESP_IDF_5_4_0 0 +#endif + +/* wifi_ap_config_t::transition_disable only found in + * IDF v5.3.3 and above, or + * IDF v5.4.1 and above + */ +#if (ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 3, 3)) || (ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 4, 1)) +#define H_GOT_AP_CONFIG_PARAM_TRANSITION_DISABLE 0 +#else +#define H_GOT_AP_CONFIG_PARAM_TRANSITION_DISABLE 1 +#endif + +#endif From 0abadf1a61ee5ee61710b4f098da6f60994717ad Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Mon, 23 Jun 2025 17:02:38 +0800 Subject: [PATCH 041/114] fix(create_const_char): use const char for h_thread_create - updated `_h_thread_create_` to use `const char` to remove -Wdiscarded-qualifiers compiler warning --- host/hosted_os_abstraction.h | 2 +- host/port/esp/freertos/src/os_wrapper.c | 2 +- idf_component.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/host/hosted_os_abstraction.h b/host/hosted_os_abstraction.h index 8d2b17a9..dad5e8cb 100644 --- a/host/hosted_os_abstraction.h +++ b/host/hosted_os_abstraction.h @@ -19,7 +19,7 @@ typedef struct { /* 8 */ void (*_h_free_align)(void* ptr); /* Thread */ -/* 11 */ void* (*_h_thread_create)(char *tname, uint32_t tprio, uint32_t tstack_size, void (*start_routine)(void const *), void *sr_arg); +/* 11 */ void* (*_h_thread_create)(const char *tname, uint32_t tprio, uint32_t tstack_size, void (*start_routine)(void const *), void *sr_arg); /* 12 */ int (*_h_thread_cancel)(void *thread_handle); /* Sleeps */ diff --git a/host/port/esp/freertos/src/os_wrapper.c b/host/port/esp/freertos/src/os_wrapper.c index 19b016b9..d574a5a0 100644 --- a/host/port/esp/freertos/src/os_wrapper.c +++ b/host/port/esp/freertos/src/os_wrapper.c @@ -146,7 +146,7 @@ void hosted_init_hook(void) /* -------- Threads ---------- */ -void *hosted_thread_create(char *tname, uint32_t tprio, uint32_t tstack_size, void (*start_routine)(void const *), void *sr_arg) +void *hosted_thread_create(const char *tname, uint32_t tprio, uint32_t tstack_size, void (*start_routine)(void const *), void *sr_arg) { int task_created = RET_OK; diff --git a/idf_component.yml b/idf_component.yml index 069b4522..1d982675 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.0.12" +version: "2.0.13" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: From ea84a914cbf00a6bb9b5764bc6108994640de4ba Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Mon, 30 Jun 2025 11:58:41 +0800 Subject: [PATCH 042/114] fix(ci_5_4_2): Added v5.4.2 to CI - add ESP-IDF v5.4.2 to CI for coverage - https://github.com/espressif/esp-idf/releases/tag/v5.4.2 --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2ea7bb49..b6c1f45f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -79,7 +79,7 @@ build_idf_v5.4: image: espressif/idf:${IDF_VER} parallel: matrix: - - IDF_VER: ["v5.4", "v5.4.1", "release-v5.4"] + - IDF_VER: ["v5.4", "v5.4.1", "v5.4.2", "release-v5.4"] IDF_TARGET: ["esp32p4", "esp32h2"] IDF_SLAVE_TARGET: ["esp32c6"] IDF_EXAMPLE_PATH: examples/protocols/mqtt/tcp From 2264cfe5498ad48a286f344283d2c55daf7049f7 Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Thu, 10 Jul 2025 18:02:47 +0800 Subject: [PATCH 043/114] bugfix(wifi_init): Updated to add missing wifi init configs - updated protobuf and RPC for missing wifi init configs - checked incoming wifi init config from host - disable cache_tx_buffer in config if slave does not have SPIRAM enabled - bug fix in stats.c for CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS --- common/proto/esp_hosted_rpc.pb-c.c | 58 +++++++++++++- common/proto/esp_hosted_rpc.pb-c.h | 18 ++++- common/proto/esp_hosted_rpc.proto | 4 + host/drivers/rpc/core/rpc_req.c | 5 ++ idf_component.yml | 2 +- slave/main/slave_control.c | 120 +++++++++++++++++++++++------ slave/main/stats.c | 2 +- 7 files changed, 181 insertions(+), 28 deletions(-) diff --git a/common/proto/esp_hosted_rpc.pb-c.c b/common/proto/esp_hosted_rpc.pb-c.c index 6516892e..84b5b4ec 100644 --- a/common/proto/esp_hosted_rpc.pb-c.c +++ b/common/proto/esp_hosted_rpc.pb-c.c @@ -7387,7 +7387,7 @@ void rpc__free_unpacked assert(message->base.descriptor == &rpc__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -static const ProtobufCFieldDescriptor wifi_init_config__field_descriptors[20] = +static const ProtobufCFieldDescriptor wifi_init_config__field_descriptors[24] = { { "static_rx_buf_num", @@ -7629,6 +7629,54 @@ static const ProtobufCFieldDescriptor wifi_init_config__field_descriptors[20] = 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "rx_mgmt_buf_type", + 21, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, rx_mgmt_buf_type), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rx_mgmt_buf_num", + 22, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, rx_mgmt_buf_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "tx_hetb_queue_num", + 23, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, tx_hetb_queue_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dump_hesigb_enable", + 24, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, dump_hesigb_enable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, }; static const unsigned wifi_init_config__field_indices_by_name[] = { 7, /* field[7] = ampdu_rx_enable */ @@ -7637,6 +7685,7 @@ static const unsigned wifi_init_config__field_indices_by_name[] = { 14, /* field[14] = beacon_max_len */ 5, /* field[5] = cache_tx_buf_num */ 6, /* field[6] = csi_enable */ + 23, /* field[23] = dump_hesigb_enable */ 1, /* field[1] = dynamic_rx_buf_num */ 4, /* field[4] = dynamic_tx_buf_num */ 18, /* field[18] = espnow_max_encrypt_num */ @@ -7646,16 +7695,19 @@ static const unsigned wifi_init_config__field_indices_by_name[] = { 11, /* field[11] = nano_enable */ 10, /* field[10] = nvs_enable */ 12, /* field[12] = rx_ba_win */ + 21, /* field[21] = rx_mgmt_buf_num */ + 20, /* field[20] = rx_mgmt_buf_type */ 17, /* field[17] = sta_disconnected_pm */ 0, /* field[0] = static_rx_buf_num */ 3, /* field[3] = static_tx_buf_num */ 2, /* field[2] = tx_buf_type */ + 22, /* field[22] = tx_hetb_queue_num */ 13, /* field[13] = wifi_task_core_id */ }; static const ProtobufCIntRange wifi_init_config__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 20 } + { 0, 24 } }; const ProtobufCMessageDescriptor wifi_init_config__descriptor = { @@ -7665,7 +7717,7 @@ const ProtobufCMessageDescriptor wifi_init_config__descriptor = "WifiInitConfig", "", sizeof(WifiInitConfig), - 20, + 24, wifi_init_config__field_descriptors, wifi_init_config__field_indices_by_name, 1, wifi_init_config__number_ranges, diff --git a/common/proto/esp_hosted_rpc.pb-c.h b/common/proto/esp_hosted_rpc.pb-c.h index 2bfc6a4f..ca2b379c 100644 --- a/common/proto/esp_hosted_rpc.pb-c.h +++ b/common/proto/esp_hosted_rpc.pb-c.h @@ -803,10 +803,26 @@ struct WifiInitConfig **< WiFi init magic number, it should be the last field */ int32_t magic; + /* + **< WiFi RX MGMT buffer type + */ + int32_t rx_mgmt_buf_type; + /* + **< WiFi RX MGMT buffer number + */ + int32_t rx_mgmt_buf_num; + /* + **< WiFi TX HE TB QUEUE number for STA HE TB PPDU transmission + */ + int32_t tx_hetb_queue_num; + /* + **< enable dump sigb field + */ + int32_t dump_hesigb_enable; }; #define WIFI_INIT_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_init_config__descriptor) \ - , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } struct WifiCountry diff --git a/common/proto/esp_hosted_rpc.proto b/common/proto/esp_hosted_rpc.proto index 7500fb71..0993b495 100644 --- a/common/proto/esp_hosted_rpc.proto +++ b/common/proto/esp_hosted_rpc.proto @@ -581,6 +581,10 @@ message wifi_init_config { bool sta_disconnected_pm = 18; /**< WiFi Power Management for station at disconnected status */ int32 espnow_max_encrypt_num = 19; /**< Maximum encrypt number of peers supported by espnow */ int32 magic = 20; /**< WiFi init magic number, it should be the last field */ + int32 rx_mgmt_buf_type = 21; /**< WiFi RX MGMT buffer type */ + int32 rx_mgmt_buf_num = 22; /**< WiFi RX MGMT buffer number */ + int32 tx_hetb_queue_num = 23; /**< WiFi TX HE TB QUEUE number for STA HE TB PPDU transmission */ + int32 dump_hesigb_enable = 24; /**< enable dump sigb field */ } message wifi_country { diff --git a/host/drivers/rpc/core/rpc_req.c b/host/drivers/rpc/core/rpc_req.c index d4feec99..cfe37cb3 100644 --- a/host/drivers/rpc/core/rpc_req.c +++ b/host/drivers/rpc/core/rpc_req.c @@ -168,6 +168,8 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) req_payload->cfg->tx_buf_type = p_a->tx_buf_type ; req_payload->cfg->static_tx_buf_num = p_a->static_tx_buf_num ; req_payload->cfg->dynamic_tx_buf_num = p_a->dynamic_tx_buf_num ; + req_payload->cfg->rx_mgmt_buf_type = p_a->rx_mgmt_buf_type ; + req_payload->cfg->rx_mgmt_buf_num = p_a->rx_mgmt_buf_num ; req_payload->cfg->cache_tx_buf_num = p_a->cache_tx_buf_num ; req_payload->cfg->csi_enable = p_a->csi_enable ; req_payload->cfg->ampdu_rx_enable = p_a->ampdu_rx_enable ; @@ -178,9 +180,12 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) req_payload->cfg->rx_ba_win = p_a->rx_ba_win ; req_payload->cfg->wifi_task_core_id = p_a->wifi_task_core_id ; req_payload->cfg->beacon_max_len = p_a->beacon_max_len ; + req_payload->cfg->feature_caps = p_a->feature_caps ; req_payload->cfg->mgmt_sbuf_num = p_a->mgmt_sbuf_num ; req_payload->cfg->sta_disconnected_pm = p_a->sta_disconnected_pm ; req_payload->cfg->espnow_max_encrypt_num = p_a->espnow_max_encrypt_num ; + req_payload->cfg->tx_hetb_queue_num = p_a->tx_hetb_queue_num ; + req_payload->cfg->dump_hesigb_enable = p_a->dump_hesigb_enable ; req_payload->cfg->magic = p_a->magic ; /* uint64 - TODO: portable? */ diff --git a/idf_component.yml b/idf_component.yml index 1d982675..110e48c7 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.0.13" +version: "2.0.14" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/slave_control.c b/slave/main/slave_control.c index 8019832c..cece2533 100644 --- a/slave/main/slave_control.c +++ b/slave/main/slave_control.c @@ -739,6 +739,103 @@ static void event_handler(void* arg, esp_event_base_t event_base, } } +// macros to format output +#define PRINT_HEADER() ESP_LOGI(TAG, " Wifi Init Param | Default | Host | Actual"); +#define PRINT_FOOTER() ESP_LOGI(TAG, " End Wifi Init Param |"); +#define PRINT_USE_HOST_VALUE(param_str, default, host, final) \ + ESP_LOGD(TAG, "% 20s | % 7d | % 7d | % 7d", param_str, default, host, final); +#define PRINT_USE_DEFAULT_VALUE(param_str, default, host, final) \ + ESP_LOGW(TAG, "% 20s | % 7d | % 7d | % 7d", param_str, default, host, final); +#define PRINT_HEX64_USE_HOST_VALUE(param_str, default, host, final) \ + ESP_LOGD(TAG, "% 20s | 0x% 5"PRIx32" | 0x% 5"PRIx64" | 0x% 5"PRIx64, param_str, default, host, final); +#define PRINT_HEX64_USE_DEFAULT_VALUE(param_str, default, host, final) \ + ESP_LOGW(TAG, "% 20s | % 7"PRIx32" | % 7"PRIx64" | % 7"PRIx64, param_str, default, host, final); + +// macros to copy host or default value +#define USE_HOST_VALUE(PARAM_STR, DEFAULT, PARAM) \ + do { \ + dst_config->PARAM = src_config->PARAM; \ + PRINT_USE_HOST_VALUE(PARAM_STR, \ + DEFAULT, \ + src_config->PARAM, \ + dst_config->PARAM); \ + } while(0); + +#define USE_DEFAULT_VALUE(PARAM_STR, DEFAULT, PARAM) \ + do { \ + dst_config->PARAM = DEFAULT; \ + PRINT_USE_DEFAULT_VALUE(PARAM_STR, \ + DEFAULT, \ + src_config->PARAM, \ + dst_config->PARAM); \ + } while(0); + +/** Returns the merged wifi init config + * Compares the src config from the host with our Wi-Fi defaults + * and adjust dst_config as necessary. + * + * Also displays the changed configs. + */ +static wifi_init_config_t * get_merged_init_config(wifi_init_config_t *dst_config, WifiInitConfig *src_config) +{ + /* always use value from host, except for + * - cache_tx_buf_num + * - feature_caps + */ + PRINT_HEADER(); + USE_HOST_VALUE("static_rx_buf", CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM, static_rx_buf_num); + USE_HOST_VALUE("dynamic_rx_buf", CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM, dynamic_rx_buf_num); + USE_HOST_VALUE("tx_buf_type", CONFIG_ESP_WIFI_TX_BUFFER_TYPE, tx_buf_type); + USE_HOST_VALUE("static_tx_buf", WIFI_STATIC_TX_BUFFER_NUM, static_tx_buf_num); + USE_HOST_VALUE("dynamic_tx_buf", WIFI_DYNAMIC_TX_BUFFER_NUM, dynamic_tx_buf_num); + USE_HOST_VALUE("rx_mgmt_buf_type", CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUF, rx_mgmt_buf_type); + USE_HOST_VALUE("rx_mgmt_buf", WIFI_RX_MGMT_BUF_NUM_DEF, rx_mgmt_buf_num); + + if (WIFI_ENABLE_CACHE_TX_BUFFER) { + // use setting from host + USE_HOST_VALUE("cache_tx_buf", WIFI_CACHE_TX_BUFFER_NUM, cache_tx_buf_num); + dst_config->feature_caps = src_config->feature_caps; + PRINT_HEX64_USE_HOST_VALUE("feature_caps", WIFI_FEATURE_CAPS, + src_config->feature_caps, + dst_config->feature_caps); + } else { + if (WIFI_FEATURE_CAPS != src_config->feature_caps) { + // don't use host setting, which may have enabled CACHE_TX_BUFFER + USE_DEFAULT_VALUE("cache_tx_buf", WIFI_CACHE_TX_BUFFER_NUM, cache_tx_buf_num); + dst_config->feature_caps = WIFI_FEATURE_CAPS; + PRINT_HEX64_USE_DEFAULT_VALUE("feature_caps", WIFI_FEATURE_CAPS, + src_config->feature_caps, + dst_config->feature_caps); + } else { + USE_HOST_VALUE("cache_tx_buf", WIFI_CACHE_TX_BUFFER_NUM, cache_tx_buf_num); + dst_config->feature_caps = src_config->feature_caps; + PRINT_HEX64_USE_HOST_VALUE("feature_caps", WIFI_FEATURE_CAPS, + src_config->feature_caps, + dst_config->feature_caps); + } + } + + USE_HOST_VALUE("csi_enable", WIFI_CSI_ENABLED, csi_enable); + USE_HOST_VALUE("ampdu_rx_enable", WIFI_AMPDU_RX_ENABLED, ampdu_rx_enable); + USE_HOST_VALUE("ampdu_tx_enable", WIFI_AMPDU_TX_ENABLED, ampdu_tx_enable); + USE_HOST_VALUE("amsdu_tx_enable", WIFI_AMSDU_TX_ENABLED, amsdu_tx_enable); + USE_HOST_VALUE("nvs_enable", WIFI_NVS_ENABLED, nvs_enable); + USE_HOST_VALUE("nano_enable", WIFI_NANO_FORMAT_ENABLED, nano_enable); + USE_HOST_VALUE("rx_ba_win", WIFI_DEFAULT_RX_BA_WIN, rx_ba_win); + USE_HOST_VALUE("wifi_task_core", WIFI_TASK_CORE_ID, wifi_task_core_id); + USE_HOST_VALUE("beacon_max_len", WIFI_SOFTAP_BEACON_MAX_LEN, beacon_max_len); + USE_HOST_VALUE("mgmt_sbuf_num", WIFI_MGMT_SBUF_NUM, mgmt_sbuf_num); + USE_HOST_VALUE("sta_disconnected_pm", WIFI_STA_DISCONNECTED_PM_ENABLED, sta_disconnected_pm); + USE_HOST_VALUE("espnow_max_encrypt",CONFIG_ESP_WIFI_ESPNOW_MAX_ENCRYPT_NUM, espnow_max_encrypt_num); + USE_HOST_VALUE("tx_hetb_queue", WIFI_TX_HETB_QUEUE_NUM, tx_hetb_queue_num); + USE_HOST_VALUE("dump_hesigb_enable", WIFI_DUMP_HESIGB_ENABLED, dump_hesigb_enable); + PRINT_FOOTER(); + + dst_config->magic = src_config->magic; + + return dst_config; +} + static esp_err_t req_wifi_init(Rpc *req, Rpc *resp, void *priv_data) { wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); @@ -748,28 +845,7 @@ static esp_err_t req_wifi_init(Rpc *req, Rpc *resp, void *priv_data) rpc__resp__wifi_init__init); RPC_RET_FAIL_IF(!req_payload->cfg); - cfg.static_rx_buf_num = req_payload->cfg->static_rx_buf_num ; - cfg.dynamic_rx_buf_num = req_payload->cfg->dynamic_rx_buf_num ; - cfg.tx_buf_type = req_payload->cfg->tx_buf_type ; - cfg.static_tx_buf_num = req_payload->cfg->static_tx_buf_num ; - cfg.dynamic_tx_buf_num = req_payload->cfg->dynamic_tx_buf_num ; - cfg.cache_tx_buf_num = req_payload->cfg->cache_tx_buf_num ; - cfg.csi_enable = req_payload->cfg->csi_enable ; - cfg.ampdu_rx_enable = req_payload->cfg->ampdu_rx_enable ; - cfg.ampdu_tx_enable = req_payload->cfg->ampdu_tx_enable ; - cfg.amsdu_tx_enable = req_payload->cfg->amsdu_tx_enable ; - cfg.nvs_enable = req_payload->cfg->nvs_enable ; - cfg.nano_enable = req_payload->cfg->nano_enable ; - cfg.rx_ba_win = req_payload->cfg->rx_ba_win ; - cfg.wifi_task_core_id = req_payload->cfg->wifi_task_core_id ; - cfg.beacon_max_len = req_payload->cfg->beacon_max_len ; - cfg.mgmt_sbuf_num = req_payload->cfg->mgmt_sbuf_num ; - cfg.feature_caps = req_payload->cfg->feature_caps ; - cfg.sta_disconnected_pm = req_payload->cfg->sta_disconnected_pm ; - cfg.espnow_max_encrypt_num = req_payload->cfg->espnow_max_encrypt_num ; - cfg.magic = req_payload->cfg->magic ; - - RPC_RET_FAIL_IF(esp_wifi_init(&cfg)); + RPC_RET_FAIL_IF(esp_wifi_init(get_merged_init_config(&cfg, req_payload->cfg))); ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT, ESP_EVENT_ANY_ID, diff --git a/slave/main/stats.c b/slave/main/stats.c index 260c4db9..aa31062a 100644 --- a/slave/main/stats.c +++ b/slave/main/stats.c @@ -19,7 +19,7 @@ #include "esp_log.h" #include "esp_hosted_transport_init.h" -#if TEST_RAW_TP || ESP_PKT_STATS +#if TEST_RAW_TP || ESP_PKT_STATS || CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS static const char TAG[] = "stats"; #endif From 1a70814ca535dfc90b21086607f3beff6ddab913 Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Fri, 4 Jul 2025 14:48:44 +0800 Subject: [PATCH 044/114] Fix: Free buffer of error case in SDIO streaming mode --- host/drivers/transport/sdio/sdio_drv.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/host/drivers/transport/sdio/sdio_drv.c b/host/drivers/transport/sdio/sdio_drv.c index a73aa010..9e15819b 100644 --- a/host/drivers/transport/sdio/sdio_drv.c +++ b/host/drivers/transport/sdio/sdio_drv.c @@ -706,7 +706,8 @@ static esp_err_t sdio_push_data_to_queue(uint8_t * buf, uint32_t buf_len) packet_size = len + offset; if (packet_size > buf_len) { - ESP_LOGE(TAG, "packet size too big for remaining stream data"); + ESP_LOGE(TAG, "packet size[%lu]>[%lu] too big for remaining stream data", + packet_size, buf_len); return ESP_FAIL; } memcpy(pkt_rxbuff, buf, packet_size); @@ -770,7 +771,7 @@ static void sdio_read_task(void const* pvParameters) // wait for transport to be in reset state while (true) { - vTaskDelay(pdMS_TO_TICKS(100)); + g_h.funcs->_h_msleep(100); if (is_transport_rx_ready()) { break; } @@ -929,6 +930,7 @@ static void sdio_read_task(void const* pvParameters) g_h.funcs->_h_post_semaphore(sem_double_buf_xfer_data); } else { // error: task to copy data to queue still running + sdio_rx_free_buffer(rxbuff); ESP_LOGE(TAG, "task still writing Rx data to queue!"); // don't send data to task, or update write_index } From 92a0385a63859963707984d6d6da849e9d1f71a5 Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Tue, 24 Jun 2025 11:19:25 +0800 Subject: [PATCH 045/114] fix(p4_spi_gpios): Use IO_MUX for P4 SPI, unless it is dev board - updated SPI FD documentation on P4, included note on power domains - updated Kconfig for SPI-FD, SPI-HD, SDIO, UART - used IO_MUX GPIOs for P4 if no development board selected - updated Kconfig to support C2 on dev board - added SDIO config for P4-C5 Core Board --- Kconfig | 418 +++++++++++++++++++++++++++-------- docs/spi_full_duplex.md | 40 ++-- idf_component.yml | 2 +- slave/main/Kconfig.projbuild | 11 +- 4 files changed, 360 insertions(+), 111 deletions(-) diff --git a/Kconfig b/Kconfig index 929e3567..d928d067 100644 --- a/Kconfig +++ b/Kconfig @@ -24,6 +24,31 @@ menu "ESP-Hosted config" comment "ESP32-C61 is Slave Target from Wi-Fi Remote Component" depends on SLAVE_IDF_TARGET_ESP32C61 + choice ESP_HOSTED_P4_DEV_BOARD + bool "Configure GPIOs for Development Board" + depends on IDF_TARGET_ESP32P4 + default ESP_HOSTED_P4_DEV_BOARD_NONE + help + Sets GPIOs used for transport on these ESP32-P4 Development Boards + - ESP32-P4 Function_EV_Board with on-board ESP32-C6 + - ESP32-P4 Function_EV_Board with ESP32-C5 on a EV board + - ESP32-P4 Function_EV_Board with ESP32-C2 on a EV board + - ESP32-P4-C5 Code Board with on-board ESP32-C5 + Select "No development board" if you want to modify GPIOs used + + config ESP_HOSTED_P4_DEV_BOARD_NONE + bool "No development board" + + config ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD + depends on SLAVE_IDF_TARGET_ESP32C6 || SLAVE_IDF_TARGET_ESP32C5 || SLAVE_IDF_TARGET_ESP32C2 + bool "ESP32-P4-Function-EV-Board with on-board C6 or C5/C2 on EV board" + + config ESP_HOSTED_P4_C5_CORE_BOARD + depends on SLAVE_IDF_TARGET_ESP32C5 + bool "ESP32-P4-C5 Core Board with on-board C5" + + endchoice + # y if SDIO Transport is available, based on host and slave selection config ESP_HOSTED_PRIV_SDIO_OPTION bool @@ -185,51 +210,107 @@ menu "ESP-Hosted config" bool "RESET: Active Low" endchoice + config ESP_HOSTED_SPI_MOSI_RANGE_MIN + int + default 14 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 23 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 23 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 0 + + config ESP_HOSTED_SPI_MOSI_RANGE_MAX + int + default 14 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 23 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 23 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 100 + config ESP_HOSTED_SPI_HSPI_GPIO_MOSI depends on ESP_HOSTED_SPI_HSPI int "GPIO pin for Host MOSI" - default 14 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 - default 23 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 + default 8 if IDF_TARGET_ESP32P4 default 13 if IDF_TARGET_ESP32 default 11 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 default 5 if IDF_TARGET_ESP32H2 default 7 + range ESP_HOSTED_SPI_MOSI_RANGE_MIN ESP_HOSTED_SPI_MOSI_RANGE_MAX help SPI controller Host MOSI + config ESP_HOSTED_SPI_MISO_RANGE_MIN + int + default 15 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 22 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 22 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 0 + + config ESP_HOSTED_SPI_MISO_RANGE_MAX + int + default 15 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 22 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 22 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 100 + config ESP_HOSTED_SPI_HSPI_GPIO_MISO depends on ESP_HOSTED_SPI_HSPI int "GPIO pin for Host MISO" - default 15 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 - default 22 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 + default 10 if IDF_TARGET_ESP32P4 default 12 if IDF_TARGET_ESP32 default 13 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 default 0 if IDF_TARGET_ESP32H2 default 2 + range ESP_HOSTED_SPI_MISO_RANGE_MIN ESP_HOSTED_SPI_MISO_RANGE_MAX help SPI controller Host MISO + config ESP_HOSTED_SPI_CLK_RANGE_MIN + int + default 18 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 33 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 33 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 0 + + config ESP_HOSTED_SPI_CLK_RANGE_MAX + int + default 18 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 33 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 33 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 100 + config ESP_HOSTED_SPI_HSPI_GPIO_CLK depends on ESP_HOSTED_SPI_HSPI int "GPIO pin for Host CLK" - default 18 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 - default 33 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 + default 9 if IDF_TARGET_ESP32P4 default 14 if IDF_TARGET_ESP32 default 12 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 default 4 if IDF_TARGET_ESP32H2 default 6 + range ESP_HOSTED_SPI_CLK_RANGE_MIN ESP_HOSTED_SPI_CLK_RANGE_MAX help SPI controller Host CLK + config ESP_HOSTED_SPI_CS_RANGE_MIN + int + default 19 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 4 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 4 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 0 + + config ESP_HOSTED_SPI_CS_RANGE_MAX + int + default 19 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 4 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 4 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 100 + config ESP_HOSTED_SPI_HSPI_GPIO_CS depends on ESP_HOSTED_SPI_HSPI int "GPIO pin for Host CS" - default 19 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 - default 4 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 + default 7 if IDF_TARGET_ESP32P4 default 15 if IDF_TARGET_ESP32 default 10 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 default 1 if IDF_TARGET_ESP32H2 default 10 + range ESP_HOSTED_SPI_CS_RANGE_MIN ESP_HOSTED_SPI_CS_RANGE_MAX help SPI controller Host CS @@ -281,32 +362,74 @@ menu "ESP-Hosted config" default ESP_HOSTED_SPI_VSPI_GPIO_CS if ESP_HOSTED_SPI_VSPI default ESP_HOSTED_SPI_HSPI_GPIO_CS + config ESP_HOSTED_SPI_HANDSHAKE_RANGE_MIN + int + default 16 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 21 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 21 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 0 + + config ESP_HOSTED_SPI_HANDSHAKE_RANGE_MAX + int + default 16 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 21 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 21 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 100 + config ESP_HOSTED_SPI_GPIO_HANDSHAKE int "GPIO pin for handshake" - default 16 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 - default 21 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 + default 6 if IDF_TARGET_ESP32P4 default 3 if IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32C6 default 17 if IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32S2 default 22 if IDF_TARGET_ESP32H2 default 26 + range ESP_HOSTED_SPI_HANDSHAKE_RANGE_MIN ESP_HOSTED_SPI_HANDSHAKE_RANGE_MAX help GPIO pin to use for handshake with other spi controller + config ESP_HOSTED_SPI_DATA_READY_RANGE_MIN + int + default 17 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 32 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 32 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 0 + + config ESP_HOSTED_SPI_DATA_READY_RANGE_MAX + int + default 17 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 32 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 32 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 100 + config ESP_HOSTED_SPI_GPIO_DATA_READY int "GPIO pin for data ready interrupt" - default 17 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 - default 32 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 + default 11 if IDF_TARGET_ESP32P4 default 12 if IDF_TARGET_ESP32H2 default 4 + range ESP_HOSTED_SPI_DATA_READY_RANGE_MIN ESP_HOSTED_SPI_DATA_READY_RANGE_MAX help GPIO pin for indicating host that SPI slave has data to be read by host + config ESP_HOSTED_SPI_RESET_RANGE_MIN + int + default 54 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 53 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 53 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 0 + + config ESP_HOSTED_SPI_RESET_RANGE_MAX + int + default 54 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 53 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 53 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 100 + config ESP_HOSTED_SPI_GPIO_RESET_SLAVE int "GPIO pin for Reseting slave ESP" - default 54 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 - default 53 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 + default 12 if IDF_TARGET_ESP32P4 default 10 if IDF_TARGET_ESP32H2 default 5 + range ESP_HOSTED_SPI_RESET_RANGE_MIN ESP_HOSTED_SPI_RESET_RANGE_MAX help GPIO pin for Resetting ESP SPI slave device. Should be connected to RST/EN of ESP SPI slave device. endmenu @@ -478,115 +601,117 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 help "Optimize SDIO CLK by increasing till host practically can support. Clock frequency for ESP32-P4 as host <= 40MHz" - config ESP_HOSTED_CUSTOM_SDIO_PINS - bool "Use custom SDIO GPIO pins" - default n - help - Enable this to use custom GPIO pins for SDIO on ESP32-P4 and ESP32-S3. - ESP32 has fixed GPIOs for SDIO host (Do not use custom GPIOs) - ESP32-P4 slot 0 is fixed GPIOs for SDIO host (Do not use custom GPIOs) - ESP32-P4 slot 1, ESP32-S3 slot 0/1 is flexible GPIOs for SDIO host (Flexible GPIOs) - config ESP_HOSTED_SDIO_CMD_GPIO_RANGE_MIN int - default 4 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 - default 19 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 + default 51 if ESP_HOSTED_P4_C5_CORE_BOARD + default 19 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 4 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 default 15 if IDF_TARGET_ESP32 default 0 config ESP_HOSTED_SDIO_CMD_GPIO_RANGE_MAX int - default 4 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 - default 19 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 + default 51 if ESP_HOSTED_P4_C5_CORE_BOARD + default 19 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 4 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 default 15 if IDF_TARGET_ESP32 default 100 config ESP_HOSTED_SDIO_CLK_GPIO_RANGE_MIN int - default 33 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 - default 18 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 + default 50 if ESP_HOSTED_P4_C5_CORE_BOARD + default 18 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 33 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 default 14 if IDF_TARGET_ESP32 default 0 config ESP_HOSTED_SDIO_CLK_GPIO_RANGE_MAX int - default 33 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 - default 18 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 + default 50 if ESP_HOSTED_P4_C5_CORE_BOARD + default 18 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 33 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 default 14 if IDF_TARGET_ESP32 default 100 config ESP_HOSTED_SDIO_D0_GPIO_RANGE_MIN int - default 20 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 - default 14 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 + default 49 if ESP_HOSTED_P4_C5_CORE_BOARD + default 14 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 20 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 default 2 if IDF_TARGET_ESP32 default 0 config ESP_HOSTED_SDIO_D0_GPIO_RANGE_MAX int - default 20 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 - default 14 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 + default 49 if ESP_HOSTED_P4_C5_CORE_BOARD + default 14 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 20 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 default 2 if IDF_TARGET_ESP32 default 100 config ESP_HOSTED_SDIO_D1_GPIO_RANGE_MIN int - default 23 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 - default 15 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 + default 48 if ESP_HOSTED_P4_C5_CORE_BOARD + default 15 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 23 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 default 4 if IDF_TARGET_ESP32 default 0 config ESP_HOSTED_SDIO_D1_GPIO_RANGE_MAX int - default 23 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 - default 15 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 + default 48 if ESP_HOSTED_P4_C5_CORE_BOARD + default 15 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 23 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 default 4 if IDF_TARGET_ESP32 default 100 config ESP_HOSTED_SDIO_D2_GPIO_RANGE_MIN int - default 21 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 - default 16 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 + default 53 if ESP_HOSTED_P4_C5_CORE_BOARD + default 16 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 21 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 default 12 if IDF_TARGET_ESP32 default 0 config ESP_HOSTED_SDIO_D2_GPIO_RANGE_MAX int - default 21 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 - default 16 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 + default 53 if ESP_HOSTED_P4_C5_CORE_BOARD + default 16 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 21 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 default 12 if IDF_TARGET_ESP32 default 100 config ESP_HOSTED_SDIO_D3_GPIO_RANGE_MIN int - default 22 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 - default 17 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 + default 52 if ESP_HOSTED_P4_C5_CORE_BOARD + default 17 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 22 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 default 13 if IDF_TARGET_ESP32 default 0 config ESP_HOSTED_SDIO_D3_GPIO_RANGE_MAX int - default 22 if !ESP_HOSTED_CUSTOM_SDIO_PINS && SLAVE_IDF_TARGET_ESP32C5 && IDF_TARGET_ESP32P4 - default 17 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 + default 52 if ESP_HOSTED_P4_C5_CORE_BOARD + default 17 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 22 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 default 13 if IDF_TARGET_ESP32 default 100 config ESP_HOSTED_SDIO_RESET_SLAVE_GPIO_MIN int - default 53 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 - default 54 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 - default 42 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32S3 - default 5 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32 + default 54 if ESP_HOSTED_P4_C5_CORE_BOARD + default 54 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 53 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 5 if IDF_TARGET_ESP32 default 0 help GPIO pin for Resetting ESP SDIO slave device. Should be connected to RST/EN of ESP SDIO slave device. config ESP_HOSTED_SDIO_RESET_SLAVE_GPIO_MAX int - default 53 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 - default 54 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32P4 - default 42 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32S3 - default 5 if !ESP_HOSTED_CUSTOM_SDIO_PINS && IDF_TARGET_ESP32 + default 54 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 53 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 5 if IDF_TARGET_ESP32 default 100 ### *START* GPIO SDIO pin configurations for Slot 0 and 1 @@ -603,13 +728,11 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 depends on ESP_HOSTED_SDIO_SLOT_1 int "CMD GPIO number" default 47 if IDF_TARGET_ESP32S3 - default 4 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 default 19 if IDF_TARGET_ESP32P4 default 15 if IDF_TARGET_ESP32 range ESP_HOSTED_SDIO_CMD_GPIO_RANGE_MIN ESP_HOSTED_SDIO_CMD_GPIO_RANGE_MAX help CMD GPIO pin for SDIO. Range enforced dynamically based on slave target to ensure IOMUX compliance. - Enable 'Use custom SDIO GPIO pins' to disable range restrictions. config ESP_HOSTED_PRIV_SDIO_PIN_CLK_SLOT_0 depends on ESP_HOSTED_SDIO_SLOT_0 @@ -624,13 +747,11 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 depends on ESP_HOSTED_SDIO_SLOT_1 int "CLK GPIO number" default 19 if IDF_TARGET_ESP32S3 - default 33 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 default 18 if IDF_TARGET_ESP32P4 default 14 if IDF_TARGET_ESP32 range ESP_HOSTED_SDIO_CLK_GPIO_RANGE_MIN ESP_HOSTED_SDIO_CLK_GPIO_RANGE_MAX help CLK GPIO pin for SDIO. Range enforced dynamically based on slave target to ensure IOMUX compliance. - Enable 'Use custom SDIO GPIO pins' to disable range restrictions. config ESP_HOSTED_PRIV_SDIO_PIN_D0_SLOT_0 depends on ESP_HOSTED_SDIO_SLOT_0 @@ -645,13 +766,11 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 depends on ESP_HOSTED_SDIO_SLOT_1 int "D0 GPIO number" default 13 if IDF_TARGET_ESP32S3 - default 20 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 default 14 if IDF_TARGET_ESP32P4 default 2 if IDF_TARGET_ESP32 range ESP_HOSTED_SDIO_D0_GPIO_RANGE_MIN ESP_HOSTED_SDIO_D0_GPIO_RANGE_MAX help D0 GPIO pin for SDIO. Range enforced dynamically based on slave target to ensure IOMUX compliance. - Enable 'Use custom SDIO GPIO pins' to disable range restrictions. if ESP_HOSTED_SDIO_4_BIT_BUS config ESP_HOSTED_PRIV_SDIO_PIN_D1_4BIT_BUS_SLOT_0 @@ -667,13 +786,11 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 depends on ESP_HOSTED_SDIO_SLOT_1 int "D1 GPIO number" default 35 if IDF_TARGET_ESP32S3 - default 23 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 default 15 if IDF_TARGET_ESP32P4 default 4 if IDF_TARGET_ESP32 range ESP_HOSTED_SDIO_D1_GPIO_RANGE_MIN ESP_HOSTED_SDIO_D1_GPIO_RANGE_MAX help D1 GPIO pin for SDIO. Range enforced dynamically based on slave target to ensure IOMUX compliance. - Enable 'Use custom SDIO GPIO pins' to disable range restrictions. config ESP_HOSTED_PRIV_SDIO_PIN_D2_4BIT_BUS_SLOT_0 depends on ESP_HOSTED_SDIO_SLOT_0 @@ -688,13 +805,11 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 depends on ESP_HOSTED_SDIO_SLOT_1 int "D2 GPIO number" default 20 if IDF_TARGET_ESP32S3 - default 21 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 default 16 if IDF_TARGET_ESP32P4 default 12 if IDF_TARGET_ESP32 range ESP_HOSTED_SDIO_D2_GPIO_RANGE_MIN ESP_HOSTED_SDIO_D2_GPIO_RANGE_MAX help D2 GPIO pin for SDIO. Range enforced dynamically based on slave target to ensure IOMUX compliance. - Enable 'Use custom SDIO GPIO pins' to disable range restrictions. config ESP_HOSTED_PRIV_SDIO_PIN_D3_4BIT_BUS_SLOT_0 depends on ESP_HOSTED_SDIO_SLOT_0 @@ -709,13 +824,11 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 depends on ESP_HOSTED_SDIO_SLOT_1 int "D3 GPIO number" default 9 if IDF_TARGET_ESP32S3 - default 22 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 default 17 if IDF_TARGET_ESP32P4 default 13 if IDF_TARGET_ESP32 range ESP_HOSTED_SDIO_D3_GPIO_RANGE_MIN ESP_HOSTED_SDIO_D3_GPIO_RANGE_MAX help D3 GPIO pin for SDIO. Range enforced dynamically based on slave target to ensure IOMUX compliance. - Enable 'Use custom SDIO GPIO pins' to disable range restrictions. endif if !ESP_HOSTED_SDIO_4_BIT_BUS @@ -731,22 +844,19 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 depends on ESP_HOSTED_SDIO_SLOT_1 int "D1 GPIO number (Interrupt Line)" default 35 if IDF_TARGET_ESP32S3 - default 23 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 default 15 if IDF_TARGET_ESP32P4 default 4 if IDF_TARGET_ESP32 range ESP_HOSTED_SDIO_D1_GPIO_RANGE_MIN ESP_HOSTED_SDIO_D1_GPIO_RANGE_MAX help D1 GPIO pin for SDIO. Range enforced dynamically based on slave target to ensure IOMUX compliance. - Enable 'Use custom SDIO GPIO pins' to disable range restrictions. endif config ESP_HOSTED_SDIO_GPIO_RESET_SLAVE int "GPIO pin for Reseting slave ESP" - range ESP_HOSTED_SDIO_RESET_SLAVE_GPIO_MIN ESP_HOSTED_SDIO_RESET_SLAVE_GPIO_MAX - default 53 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 default 54 if IDF_TARGET_ESP32P4 default 42 if IDF_TARGET_ESP32S3 default 5 if IDF_TARGET_ESP32 + range ESP_HOSTED_SDIO_RESET_SLAVE_GPIO_MIN ESP_HOSTED_SDIO_RESET_SLAVE_GPIO_MAX help GPIO pin for Resetting ESP SDIO slave device. Should be connected to RST/EN of ESP SDIO slave device. @@ -866,85 +976,197 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 endchoice menu "Host GPIOs Config" + config ESP_HOSTED_SPI_HD_CS_RANGE_MIN + int + default 19 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 4 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 4 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 0 + + config ESP_HOSTED_SPI_HD_CS_RANGE_MAX + int + default 19 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 4 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 4 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 100 + config ESP_HOSTED_SPI_HD_GPIO_CS int "GPIO pin for Host CS" + default 7 if IDF_TARGET_ESP32P4 default 10 if IDF_TARGET_ESP32S3 - default 4 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 - default 19 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 default 1 if IDF_TARGET_ESP32H2 default 15 + range ESP_HOSTED_SPI_HD_CS_RANGE_MIN ESP_HOSTED_SPI_HD_CS_RANGE_MAX help SPI Half-duplex controller Host CS + config ESP_HOSTED_SPI_HD_CLK_RANGE_MIN + int + default 18 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 33 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 33 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 0 + + config ESP_HOSTED_SPI_HD_CLK_RANGE_MAX + int + default 18 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 33 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 33 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 100 + config ESP_HOSTED_SPI_HD_GPIO_CLK int "GPIO pin for Host CLK" + default 9 if IDF_TARGET_ESP32P4 default 12 if IDF_TARGET_ESP32S3 - default 33 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 - default 18 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 default 4 if IDF_TARGET_ESP32H2 default 18 + range ESP_HOSTED_SPI_HD_CLK_RANGE_MIN ESP_HOSTED_SPI_HD_CLK_RANGE_MAX help SPI Half-duplex controller Host CLK + config ESP_HOSTED_SPI_HD_D0_RANGE_MIN + int + default 14 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 23 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 23 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 0 + + config ESP_HOSTED_SPI_HD_D0_RANGE_MAX + int + default 14 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 23 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 23 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 100 + config ESP_HOSTED_SPI_HD_GPIO_D0 int "GPIO pin for Host D0" + default 8 if IDF_TARGET_ESP32P4 default 11 if IDF_TARGET_ESP32S3 - default 23 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 - default 14 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 default 5 if IDF_TARGET_ESP32H2 default 2 + range ESP_HOSTED_SPI_HD_D0_RANGE_MIN ESP_HOSTED_SPI_HD_D0_RANGE_MAX help SPI Half-duplex controller Host D0 + config ESP_HOSTED_SPI_HD_D1_RANGE_MIN + int + default 15 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 22 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 22 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 0 + + config ESP_HOSTED_SPI_HD_D1_RANGE_MAX + int + default 15 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 22 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 22 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 100 + config ESP_HOSTED_SPI_HD_GPIO_D1 int "GPIO pin for Host D1" + default 10 if IDF_TARGET_ESP32P4 default 13 if IDF_TARGET_ESP32S3 - default 22 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 - default 15 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 default 0 if IDF_TARGET_ESP32H2 default 4 + range ESP_HOSTED_SPI_HD_D1_RANGE_MIN ESP_HOSTED_SPI_HD_D1_RANGE_MAX help SPI Half-duplex controller Host D1 + config ESP_HOSTED_SPI_HD_D2_RANGE_MIN + int + default 16 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 20 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 20 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 0 + + config ESP_HOSTED_SPI_HD_D2_RANGE_MAX + int + default 16 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 20 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 20 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 100 + config ESP_HOSTED_SPI_HD_GPIO_D2 depends on ESP_HOSTED_SPI_HD_PRIV_INTERFACE_4_DATA_LINES int "GPIO pin for Host D2" + default 11 if IDF_TARGET_ESP32P4 default 14 if IDF_TARGET_ESP32S3 - default 20 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 - default 16 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 default 2 if IDF_TARGET_ESP32H2 default 12 + range ESP_HOSTED_SPI_HD_D2_RANGE_MIN ESP_HOSTED_SPI_HD_D2_RANGE_MAX help SPI Half-duplex controller Host D2 + config ESP_HOSTED_SPI_HD_D3_RANGE_MIN + int + default 17 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 21 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 21 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 0 + + config ESP_HOSTED_SPI_HD_D3_RANGE_MAX + int + default 17 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 21 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 21 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 100 + config ESP_HOSTED_SPI_HD_GPIO_D3 depends on ESP_HOSTED_SPI_HD_PRIV_INTERFACE_4_DATA_LINES int "GPIO pin for Host D3" + default 6 if IDF_TARGET_ESP32P4 default 9 if IDF_TARGET_ESP32S3 - default 21 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 - default 17 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 default 3 if IDF_TARGET_ESP32H2 default 13 + range ESP_HOSTED_SPI_HD_D3_RANGE_MIN ESP_HOSTED_SPI_HD_D3_RANGE_MAX help SPI Half-duplex controller Host D3 + config ESP_HOSTED_SPI_HD_DATA_READY_RANGE_MIN + int + default 6 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 32 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 32 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 0 + + config ESP_HOSTED_SPI_HD_DATA_READY_RANGE_MAX + int + default 6 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 32 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 32 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 100 + config ESP_HOSTED_SPI_HD_GPIO_DATA_READY int "GPIO pin for data ready interrupt" + default 13 if IDF_TARGET_ESP32P4 default 4 if IDF_TARGET_ESP32S3 - default 32 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 - default 6 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 default 12 if IDF_TARGET_ESP32H2 default 8 + range ESP_HOSTED_SPI_HD_DATA_READY_RANGE_MIN ESP_HOSTED_SPI_HD_DATA_READY_RANGE_MAX help GPIO pin for indicating host that slave has data to be read by host + config ESP_HOSTED_SPI_HD_RESET_RANGE_MIN + int + default 54 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 53 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 53 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 0 + + config ESP_HOSTED_SPI_HD_RESET_RANGE_MAX + int + default 54 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 53 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 + default 53 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 + default 100 + config ESP_HOSTED_SPI_HD_GPIO_RESET_SLAVE int "GPIO pin for Reseting slave ESP" + default 12 if IDF_TARGET_ESP32P4 default 5 if IDF_TARGET_ESP32S3 - default 53 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C5 - default 54 if IDF_TARGET_ESP32P4 && SLAVE_IDF_TARGET_ESP32C6 default 10 if IDF_TARGET_ESP32H2 default 5 + range ESP_HOSTED_SPI_HD_RESET_RANGE_MIN ESP_HOSTED_SPI_HD_RESET_RANGE_MAX help GPIO pin for Resetting ESP slave device. Should be connected to RST/EN of ESP SPI slave device. endmenu @@ -1025,6 +1247,16 @@ ESP32XX_SPI_HD_CLK_FREQ_RANGE_MAX := 40 help Select UART Port to Use. Do not select the UART Port used for console output (if enabled) + config ESP_HOSTED_UART_TX_RANGE_MIN + int + default 14 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 0 + + config ESP_HOSTED_UART_TX_RANGE_MAX + int + default 14 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 100 + config ESP_HOSTED_UART_PIN_TX int "TX GPIO number" default 13 if IDF_TARGET_ESP32 @@ -1033,9 +1265,20 @@ ESP32XX_SPI_HD_CLK_FREQ_RANGE_MAX := 40 default 21 if IDF_TARGET_ESP32C6 default 5 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 default 14 if IDF_TARGET_ESP32P4 + range ESP_HOSTED_UART_TX_RANGE_MIN ESP_HOSTED_UART_TX_RANGE_MAX help GPIO used for UART TX + config ESP_HOSTED_UART_RX_RANGE_MIN + int + default 15 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 0 + + config ESP_HOSTED_UART_RX_RANGE_MAX + int + default 15 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 + default 100 + config ESP_HOSTED_UART_PIN_RX int "RX GPIO number" default 12 if IDF_TARGET_ESP32 @@ -1044,6 +1287,7 @@ ESP32XX_SPI_HD_CLK_FREQ_RANGE_MAX := 40 default 20 if IDF_TARGET_ESP32C6 default 4 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 default 15 if IDF_TARGET_ESP32P4 + range ESP_HOSTED_UART_RX_RANGE_MIN ESP_HOSTED_UART_RX_RANGE_MAX help GPIO used for UART RX diff --git a/docs/spi_full_duplex.md b/docs/spi_full_duplex.md index dad9738d..a1c0a525 100644 --- a/docs/spi_full_duplex.md +++ b/docs/spi_full_duplex.md @@ -177,32 +177,34 @@ For optimal performance and reliability in production designs: Setting up the hardware involves connecting the master and co-processor devices via the SPI pins and ensuring all extra GPIO signals are properly connected. Below is the table of connections for the SPI full duplex setup between an host ESP chipset and another ESP chipset as co-processor: - ### Host connections -| Signal | ESP32 | ESP32-S2/S3 | ESP32-C2/C3/C5/C6 | ESP32-P4 (ESP32-P4-Function-EV-Board) | -|-------------|-------|-------------|-------------------|---------------------------------------| -| CLK | 14 | 12 | 6 | 18 | -| MOSI | 13 | 11 | 7 | 14 | -| MISO | 12 | 13 | 2 | 15 | -| CS | 15 | 10 | 10 | 19 | -| Handshake | 26 | 17 | 3 | 16 | -| Data Ready | 4 | 4 | 4 | 17 | -| Reset Out | 5 | 5 | 5 | 54 | +| Signal | ESP32 | ESP32-S2/S3 | ESP32-C2/C3/C5/C6 | ESP32-P4 | +|-------------|-------|-------------|-------------------|----------| +| CLK | 14 | 12 | 6 | 9 | +| MOSI | 13 | 11 | 7 | 8 | +| MISO | 12 | 13 | 2 | 10 | +| CS | 15 | 10 | 10 | 7 | +| Handshake | 26 | 17 | 3 | 6 | +| Data Ready | 4 | 4 | 4 | 11 | +| Reset Out | 5 | 5 | 5 | 12 | +> [!NOTE] +> The GPIOs pins on the ESP32-P4 are SPI IO_MUX pins and powered by the `VDD_LP` pin. If you use a different set of GPIOs, check that they are powered to 3.3V by the pin(s) providing power for the GPIOs based on your ESP32-P4 schematic. See the ESP32-P4 Datasheet, [Table 2-1. Pin Overview](https://www.espressif.com/sites/default/files/documentation/esp32-p4_datasheet_en.pdf#table.2.1), for a list of GPIO pins and the pins providing the power for the GPIOs. +> +> If the pins providing power are connected to an internal Low Dropout Voltage Regulator (LDO), set the LDO to output 3.3V. See [Low Dropout Voltage Regulator (LDO)](https://docs.espressif.com/projects/esp-idf/en/latest/esp32p4/api-reference/peripherals/ldo_regulator.html) for more information on programming the internal LDOs. ### Co-processor connections | Signal | ESP32 | ESP32-C2/C3/C5/C6 | ESP32-S2/S3 | ESP32-C6 on ESP32-P4-Function-EV-Board | -|-------------|-------|-------------------|-------------|---------------------------------------| -| CLK | 14 | 6 | 12 | 19 | -| MOSI | 13 | 7 | 11 | 20 | -| MISO | 12 | 2 | 13 | 21 | -| CS | 15 | 10 | 10 | 18 | -| Handshake | 26 | 3 | 17 | 22 | -| Data Ready | 4 | 4 | 5 | 23 | -| Reset In | EN | EN/RST | EN/RST | EN/RST | - +|-------------|-------|-------------------|-------------|----------------------------------------| +| CLK | 14 | 6 | 12 | 19 | +| MOSI | 13 | 7 | 11 | 20 | +| MISO | 12 | 2 | 13 | 21 | +| CS | 15 | 10 | 10 | 18 | +| Handshake | 26 | 3 | 17 | 22 | +| Data Ready | 4 | 4 | 5 | 23 | +| Reset In | EN | EN/RST | EN/RST | EN/RST | > [!NOTE] > - Always try to use IO_MUX pins from the datasheet for optimal performance on both sides. diff --git a/idf_component.yml b/idf_component.yml index 110e48c7..60af32f3 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.0.14" +version: "2.0.15" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/Kconfig.projbuild b/slave/main/Kconfig.projbuild index 4025af24..c77df3b6 100644 --- a/slave/main/Kconfig.projbuild +++ b/slave/main/Kconfig.projbuild @@ -124,6 +124,7 @@ menu "Example Configuration" int "Slave GPIO pin for Host CLK" default 19 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD default 3 if IDF_TARGET_ESP32C5 + default 0 if IDF_TARGET_ESP32C2 default 14 if IDF_TARGET_ESP32 default 12 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 default 6 @@ -191,8 +192,8 @@ menu "Example Configuration" config ESP_SPI_GPIO_HANDSHAKE int "Slave GPIO pin for handshake" default 22 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD - default 4 if IDF_TARGET_ESP32C5 - default 3 if IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32C6 + default 4 if IDF_TARGET_ESP32C5 || IDF_TARGET_ESP32C2 + default 3 if IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32C6 default 17 if IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32S2 default 26 help @@ -201,8 +202,8 @@ menu "Example Configuration" config ESP_SPI_GPIO_DATA_READY int "Slave GPIO pin for data ready interrupt" default 23 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD - default 0 if IDF_TARGET_ESP32C5 - default 13 if IDF_TARGET_ESP32C5 + default 0 if IDF_TARGET_ESP32C5 + default 1 if IDF_TARGET_ESP32C2 default 4 help Slave GPIO pin for indicating host that SPI slave has data to be read by host @@ -434,6 +435,7 @@ menu "Example Configuration" int "Slave GPIO pin for Host CLK" default 19 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD default 3 if IDF_TARGET_ESP32C5 + default 0 if IDF_TARGET_ESP32C2 default 6 help SPI HD controller Host CS @@ -472,6 +474,7 @@ menu "Example Configuration" int "Slave GPIO pin for Data Ready" default 2 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD default 0 if IDF_TARGET_ESP32C5 + default 1 if IDF_TARGET_ESP32C2 default 11 help Slave GPIO pin for indicating host that SPI slave has data to be read by host From ee772f4ff13ef4107215a5a3a4acd83264cf83c4 Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Tue, 15 Jul 2025 16:30:03 +0800 Subject: [PATCH 046/114] Update GitHub upload component script to v2 --- .github/workflows/upload_component.yml | 4 ++-- idf_component.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/upload_component.yml b/.github/workflows/upload_component.yml index dae3a3d1..9337483d 100644 --- a/.github/workflows/upload_component.yml +++ b/.github/workflows/upload_component.yml @@ -20,8 +20,8 @@ jobs: sed -n 's/^version: "\(.*\)"/\1/p' idf_component.yml > slave/main/coprocessor_fw_version.txt - name: Upload component to the component registry - uses: espressif/upload-components-ci-action@v1 + uses: espressif/upload-components-ci-action@v2 with: - name: "esp_hosted" + components: "esp_hosted:." namespace: "espressif" api_token: ${{ secrets.IDF_COMPONENT_API_TOKEN }} diff --git a/idf_component.yml b/idf_component.yml index 60af32f3..cbbb36ca 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.0.15" +version: "2.0.16" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: From 8c7e79a6b35cf784469d9d104508e0a63e0e9afe Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Fri, 18 Jul 2025 12:05:02 +0800 Subject: [PATCH 047/114] fix: build warning in trace --- slave/main/stats.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slave/main/stats.c b/slave/main/stats.c index aa31062a..e506f162 100644 --- a/slave/main/stats.c +++ b/slave/main/stats.c @@ -92,7 +92,7 @@ static esp_err_t log_real_time_stats(TickType_t xTicksToWait) { if (k >= 0) { uint32_t task_elapsed_time = end_array[k].ulRunTimeCounter - start_array[i].ulRunTimeCounter; uint32_t percentage_time = (task_elapsed_time * 100UL) / (total_elapsed_time * portNUM_PROCESSORS); - ESP_LOGI(TAG,"| %s | %d | %d%%\n", start_array[i].pcTaskName, task_elapsed_time, percentage_time); + ESP_LOGI(TAG,"| %s | %" PRIu32 " | %" PRIu32 "%%\n", start_array[i].pcTaskName, task_elapsed_time, percentage_time); } } From 78cbf7de38151baf1ae467f8ac61c2e052cc6c47 Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Mon, 21 Jul 2025 18:52:12 +0800 Subject: [PATCH 048/114] bugfix(bssid): Always return BSSID in get_config Always return BSSID when returning station config. `bssid_set` only indicates that host provided bssid when connecting to an AP. --- host/drivers/rpc/core/rpc_rsp.c | 5 +---- idf_component.yml | 2 +- slave/main/slave_control.c | 6 +----- 3 files changed, 3 insertions(+), 10 deletions(-) diff --git a/host/drivers/rpc/core/rpc_rsp.c b/host/drivers/rpc/core/rpc_rsp.c index b96f565d..4cd79d71 100644 --- a/host/drivers/rpc/core/rpc_rsp.c +++ b/host/drivers/rpc/core/rpc_rsp.c @@ -246,10 +246,7 @@ int rpc_parse_rsp(Rpc *rpc_msg, ctrl_cmd_t *app_resp) RPC_RSP_COPY_BYTES(p_a_sta->password, p_c_sta->password); p_a_sta->scan_method = p_c_sta->scan_method; p_a_sta->bssid_set = p_c_sta->bssid_set; - - if (p_a_sta->bssid_set) - RPC_RSP_COPY_BYTES(p_a_sta->bssid, p_c_sta->bssid); - + RPC_RSP_COPY_BYTES(p_a_sta->bssid, p_c_sta->bssid); p_a_sta->channel = p_c_sta->channel; p_a_sta->listen_interval = p_c_sta->listen_interval; p_a_sta->sort_method = p_c_sta->sort_method; diff --git a/idf_component.yml b/idf_component.yml index cbbb36ca..99d93841 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.0.16" +version: "2.0.17" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/slave_control.c b/slave/main/slave_control.c index cece2533..03034536 100644 --- a/slave/main/slave_control.c +++ b/slave/main/slave_control.c @@ -1076,11 +1076,7 @@ static esp_err_t req_wifi_get_config(Rpc *req, Rpc *resp, void *priv_data) RPC_RESP_COPY_STR(p_c_sta->password, p_a_sta->password, PASSWORD_LENGTH); p_c_sta->scan_method = p_a_sta->scan_method; p_c_sta->bssid_set = p_a_sta->bssid_set; - - //TODO: Expected to break python for bssid - if (p_c_sta->bssid_set) - RPC_RESP_COPY_BYTES(p_c_sta->bssid, p_a_sta->bssid, BSSID_BYTES_SIZE); - + RPC_RESP_COPY_BYTES(p_c_sta->bssid, p_a_sta->bssid, BSSID_BYTES_SIZE); p_c_sta->channel = p_a_sta->channel; p_c_sta->listen_interval = p_a_sta->listen_interval; p_c_sta->sort_method = p_a_sta->sort_method; From 64031ca053aa0ad68ad51851aea363e7f67006fc Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Tue, 22 Jul 2025 10:20:10 +0800 Subject: [PATCH 049/114] feature(ci_v5_5): Updated CI to build with IDF v5.5 tag --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b6c1f45f..fbafbd97 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -90,7 +90,7 @@ build_idf_v5.5: image: espressif/idf:${IDF_VER} parallel: matrix: - - IDF_VER: ["release-v5.5"] + - IDF_VER: ["v5.5", "release-v5.5"] IDF_TARGET: ["esp32p4", "esp32h2"] IDF_SLAVE_TARGET: ["esp32c6", "esp32c5", "esp32", "esp32c2", "esp32c3", "esp32s3" ] IDF_EXAMPLE_PATH: [examples/wifi/iperf] From c170b976df30f7a5aaa3c62c96d1cb325e4f7906 Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Tue, 17 Jun 2025 19:43:18 +0530 Subject: [PATCH 050/114] Add Network split and Host power save features --- .gitlab-ci.yml | 25 +- CMakeLists.txt | 22 +- Kconfig | 248 ++- common/esp_hosted_header.h | 9 + common/esp_hosted_lwip_src_port_hook.h | 73 + common/log/esp_hosted_log.h | 19 +- common/proto/esp_hosted_rpc.pb-c.c | 1414 ++++++++++++---- common/proto/esp_hosted_rpc.pb-c.h | 227 ++- common/proto/esp_hosted_rpc.proto | 72 +- common/transport/esp_hosted_transport_init.h | 2 + common/utils/esp_hosted_cli.c | 448 +++++ common/utils/esp_hosted_cli.h | 33 + docs/esp32_p4_function_ev_board.md | 9 +- docs/feature_host_deep_sleep.md | 385 +++++ docs/feature_network_split.md | 229 +++ docs/sdio.md | 40 +- docs/spi_full_duplex.md | 14 +- docs/spi_half_duplex.md | 14 +- docs/uart.md | 8 +- host/api/include/esp_hosted_config.h | 626 ++++--- host/api/include/esp_hosted_power_save.h | 84 + .../api/include/esp_hosted_transport_config.h | 4 +- host/api/priv/esp_hosted_api_priv.h | 2 +- host/api/src/esp_hosted_api.c | 71 +- host/drivers/bt/vhci_drv.c | 10 +- host/drivers/power_save/power_save_drv.c | 360 ++++ host/drivers/power_save/power_save_drv.h | 37 + host/drivers/rpc/core/rpc_core.c | 56 +- host/drivers/rpc/core/rpc_core.h | 2 + host/drivers/rpc/core/rpc_evt.c | 30 +- host/drivers/rpc/core/rpc_req.c | 17 + host/drivers/rpc/core/rpc_rsp.c | 4 + host/drivers/rpc/slaveif/rpc_slave_if.c | 18 + host/drivers/rpc/slaveif/rpc_slave_if.h | 19 + host/drivers/rpc/wrap/rpc_wrap.c | 142 +- host/drivers/rpc/wrap/rpc_wrap.h | 6 + host/drivers/serial/serial_drv.c | 8 +- host/drivers/serial/serial_ll_if.c | 36 +- host/drivers/serial/serial_ll_if.h | 4 +- host/drivers/transport/sdio/sdio_drv.c | 418 ++++- host/drivers/transport/spi/spi_drv.c | 326 +++- host/drivers/transport/spi_hd/spi_hd_drv.c | 149 +- host/drivers/transport/transport_drv.c | 239 ++- host/drivers/transport/transport_drv.h | 50 +- host/drivers/transport/uart/uart_drv.c | 125 +- host/drivers/virtual_serial_if/serial_if.c | 42 +- host/hosted_os_abstraction.h | 55 +- .../freertos/include/esp_hosted_wifi_config.h | 6 + host/port/esp/freertos/include/os_wrapper.h | 47 +- host/port/esp/freertos/include/sdio_wrapper.h | 5 +- host/port/esp/freertos/include/spi_wrapper.h | 3 + host/port/esp/freertos/src/os_wrapper.c | 185 +- host/port/esp/freertos/src/sdio_wrapper.c | 35 +- host/port/esp/freertos/src/spi_wrapper.c | 47 +- host/utils/common.c | 12 +- host/utils/common.h | 10 - host/utils/stats.c | 31 +- host/utils/stats.h | 39 +- host/utils/util.c | 18 +- host/utils/util.h | 6 +- sdkconfig.ci.all_features_enabled | 11 + slave/CMakeLists.txt | 25 +- slave/main/CMakeLists.txt | 44 +- slave/main/Kconfig.projbuild | 1497 +++++++++++------ .../{app_main.c => esp_hosted_coprocessor.c} | 771 ++++++--- .../{app_main.h => esp_hosted_coprocessor.h} | 2 + slave/main/host_power_save.c | 338 ++++ slave/main/host_power_save.h | 56 + slave/main/http_req.c | 129 ++ slave/main/idf_component.yml | 9 + slave/main/interface.h | 6 +- slave/main/lwip_filter.c | 527 ++++++ slave/main/lwip_filter.h | 29 + slave/main/mempool.c | 16 +- slave/main/mempool_ll.c | 6 + slave/main/mempool_ll.h | 17 +- slave/main/mqtt_example.c | 279 +++ slave/main/mqtt_example.h | 23 + slave/main/protocomm_pserial.c | 13 +- slave/main/sdio_slave_api.c | 429 +++-- slave/main/slave_bt.c | 36 +- slave/main/slave_control.c | 1224 +++++++++++--- slave/main/slave_control.h | 193 +++ slave/main/spi_hd_slave_api.c | 62 +- slave/main/spi_slave_api.c | 356 ++-- slave/main/stats.c | 347 ++-- slave/main/stats.h | 127 +- slave/main/uart_slave_api.c | 51 +- slave/partitions.esp32c5.csv | 18 +- slave/sdkconfig.defaults | 2 +- slave/sdkconfig.defaults.esp32 | 1 - slave/sdkconfig.defaults.esp32c2 | 121 +- slave/sdkconfig.defaults.esp32c3 | 107 +- slave/sdkconfig.defaults.esp32c5 | 102 +- slave/sdkconfig.defaults.esp32c6 | 86 +- 95 files changed, 11060 insertions(+), 2675 deletions(-) create mode 100644 common/esp_hosted_lwip_src_port_hook.h create mode 100644 common/utils/esp_hosted_cli.c create mode 100644 common/utils/esp_hosted_cli.h create mode 100644 docs/feature_host_deep_sleep.md create mode 100644 docs/feature_network_split.md create mode 100644 host/api/include/esp_hosted_power_save.h create mode 100644 host/drivers/power_save/power_save_drv.c create mode 100644 host/drivers/power_save/power_save_drv.h create mode 100644 sdkconfig.ci.all_features_enabled rename slave/main/{app_main.c => esp_hosted_coprocessor.c} (53%) rename slave/main/{app_main.h => esp_hosted_coprocessor.h} (95%) create mode 100644 slave/main/host_power_save.c create mode 100644 slave/main/host_power_save.h create mode 100644 slave/main/http_req.c create mode 100644 slave/main/idf_component.yml create mode 100644 slave/main/lwip_filter.c create mode 100644 slave/main/lwip_filter.h create mode 100644 slave/main/mqtt_example.c create mode 100644 slave/main/mqtt_example.h diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fbafbd97..fcb8ced0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -38,14 +38,23 @@ before_script: echo "CONFIG_SLAVE_IDF_TARGET_${IDF_SLAVE_TARGET^^}=y" >> sdkconfig.defaults echo "Added slave target CONFIG_SLAVE_IDF_TARGET_${IDF_SLAVE_TARGET^^}=y to sdkconfig.defaults" fi + # Copy specific sdkconfig.ci file if SDKCONFIG_CI_FILE is specified + - | + if [ ! -z "${SDKCONFIG_CI_FILE}" ]; then + cp ${OVERRIDE_PATH}/${SDKCONFIG_CI_FILE} ./sdkconfig.ci.custom + echo "Using custom sdkconfig: ${SDKCONFIG_CI_FILE}" + SDKCONFIG_PATTERN="sdkconfig.ci.custom" + else + SDKCONFIG_PATTERN="sdkconfig.ci*" + fi # Build with IDF pedantic flags and IDF build apps script - export PEDANTIC_FLAGS="-DIDF_CI_BUILD -Werror -Werror=deprecated-declarations -Werror=unused-variable -Werror=unused-but-set-variable -Werror=unused-function" - export EXTRA_CFLAGS="${PEDANTIC_FLAGS} -Wstrict-prototypes" - export EXTRA_CXXFLAGS="${PEDANTIC_FLAGS}" # Remove the conflicting extconn config that disables hosted - rm -f sdkconfig.ci.*extconn* - - idf-build-apps find --config sdkconfig.ci* -vv --target ${IDF_TARGET} - - idf-build-apps build --config sdkconfig.ci* -vv --target ${IDF_TARGET} + - idf-build-apps find --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} + - idf-build-apps build --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} # - echo "----------- last sdkconfig.defaults,ci* used (${IDF_TARGET}-${IDF_SLAVE_TARGET}) --------------" # - cat sdkconfig.defaults # - cat sdkconfig.ci* @@ -98,9 +107,19 @@ build_idf_v5.5: build_idf_master: extends: .build_template image: espressif/idf:latest - allow_failure: true parallel: matrix: - IDF_TARGET: ["esp32p4", "esp32h2"] IDF_SLAVE_TARGET: ["esp32c6", "esp32c5", "esp32", "esp32c2", "esp32c3", "esp32s3" ] IDF_EXAMPLE_PATH: [examples/protocols/mqtt/tcp, examples/wifi/iperf] + + +build_all_features_enabled_master: + extends: .build_template + image: espressif/idf:latest + parallel: + matrix: + - IDF_TARGET: ["esp32p4"] + IDF_SLAVE_TARGET: ["esp32c5", "esp32c6"] + IDF_EXAMPLE_PATH: examples/wifi/iperf + SDKCONFIG_CI_FILE: "sdkconfig.ci.all_features_enabled" \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 3f79b2fc..df766832 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,6 +37,10 @@ if(CONFIG_ESP_HOSTED_ENABLED) # host ESP32 specific files list(APPEND srcs "${host_dir}/port/esp/freertos/src/esp_hosted_ota.c") + # cli + list(APPEND srcs "${common_dir}/utils/esp_hosted_cli.c") + list(APPEND priv_include "${common_dir}/utils") + # bt (NimBLE) ### TODO config for HCI over UART list(APPEND priv_include "${host_dir}/drivers/bt") @@ -46,6 +50,10 @@ if(CONFIG_ESP_HOSTED_ENABLED) list(APPEND srcs "${host_dir}/drivers/bt/hci_stub_drv.c") endif() + # power save + list(APPEND priv_include "${host_dir}/drivers/power_save") + list(APPEND srcs "${host_dir}/drivers/power_save/power_save_drv.c") + # transport files if(CONFIG_ESP_HOSTED_SDIO_HOST_INTERFACE) list(APPEND srcs "${host_dir}/drivers/transport/sdio/sdio_drv.c") @@ -76,7 +84,7 @@ if(CONFIG_ESP_HOSTED_ENABLED) endif() idf_component_register(SRCS ${srcs} - PRIV_REQUIRES soc esp_event esp_netif esp_timer driver esp_wifi bt esp_http_client + PRIV_REQUIRES soc esp_event esp_netif esp_timer driver esp_wifi bt esp_http_client console INCLUDE_DIRS ${pub_include} PRIV_INCLUDE_DIRS ${priv_include}) @@ -92,3 +100,15 @@ endif() # # used to workaround SPI transfer issue # idf_component_optional_requires(PRIVATE esp_mm) # endif() + + +idf_component_get_property(lwip lwip COMPONENT_LIB) +if(TARGET ${lwip}) + # Use generator expressions to only apply to non-INTERFACE targets + get_target_property(lwip_type ${lwip} TYPE) + if(NOT lwip_type STREQUAL "INTERFACE_LIBRARY") + message(STATUS "********** Configuring LWIP for network split mode with custom hook **********") + target_include_directories(${lwip} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/common") + target_compile_definitions(${lwip} PRIVATE "-DESP_IDF_LWIP_HOOK_FILENAME=\"${CMAKE_CURRENT_SOURCE_DIR}/common/esp_hosted_lwip_src_port_hook.h\"") + endif() +endif() diff --git a/Kconfig b/Kconfig index d928d067..ab101c69 100644 --- a/Kconfig +++ b/Kconfig @@ -981,7 +981,7 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 default 19 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 default 4 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 default 4 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 - default 0 + default -1 config ESP_HOSTED_SPI_HD_CS_RANGE_MAX int @@ -995,7 +995,7 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 default 7 if IDF_TARGET_ESP32P4 default 10 if IDF_TARGET_ESP32S3 default 1 if IDF_TARGET_ESP32H2 - default 15 + default -1 if !IDF_TARGET_ESP32P4 || !IDF_TARGET_ESP32H2 || !IDF_TARGET_ESP32S3 range ESP_HOSTED_SPI_HD_CS_RANGE_MIN ESP_HOSTED_SPI_HD_CS_RANGE_MAX help SPI Half-duplex controller Host CS @@ -1005,7 +1005,7 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 default 18 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 default 33 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 default 33 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 - default 0 + default -1 config ESP_HOSTED_SPI_HD_CLK_RANGE_MAX int @@ -1019,7 +1019,7 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 default 9 if IDF_TARGET_ESP32P4 default 12 if IDF_TARGET_ESP32S3 default 4 if IDF_TARGET_ESP32H2 - default 18 + default -1 if !IDF_TARGET_ESP32P4 || !IDF_TARGET_ESP32H2 || !IDF_TARGET_ESP32S3 range ESP_HOSTED_SPI_HD_CLK_RANGE_MIN ESP_HOSTED_SPI_HD_CLK_RANGE_MAX help SPI Half-duplex controller Host CLK @@ -1029,7 +1029,7 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 default 14 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 default 23 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 default 23 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 - default 0 + default -1 config ESP_HOSTED_SPI_HD_D0_RANGE_MAX int @@ -1043,7 +1043,7 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 default 8 if IDF_TARGET_ESP32P4 default 11 if IDF_TARGET_ESP32S3 default 5 if IDF_TARGET_ESP32H2 - default 2 + default -1 if !IDF_TARGET_ESP32P4 || !IDF_TARGET_ESP32H2 || !IDF_TARGET_ESP32S3 range ESP_HOSTED_SPI_HD_D0_RANGE_MIN ESP_HOSTED_SPI_HD_D0_RANGE_MAX help SPI Half-duplex controller Host D0 @@ -1053,7 +1053,7 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 default 15 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 default 22 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 default 22 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 - default 0 + default -1 config ESP_HOSTED_SPI_HD_D1_RANGE_MAX int @@ -1067,7 +1067,7 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 default 10 if IDF_TARGET_ESP32P4 default 13 if IDF_TARGET_ESP32S3 default 0 if IDF_TARGET_ESP32H2 - default 4 + default -1 if !IDF_TARGET_ESP32P4 || !IDF_TARGET_ESP32H2 || !IDF_TARGET_ESP32S3 range ESP_HOSTED_SPI_HD_D1_RANGE_MIN ESP_HOSTED_SPI_HD_D1_RANGE_MAX help SPI Half-duplex controller Host D1 @@ -1077,7 +1077,7 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 default 16 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 default 20 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 default 20 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 - default 0 + default -1 config ESP_HOSTED_SPI_HD_D2_RANGE_MAX int @@ -1092,7 +1092,7 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 default 11 if IDF_TARGET_ESP32P4 default 14 if IDF_TARGET_ESP32S3 default 2 if IDF_TARGET_ESP32H2 - default 12 + default -1 if !IDF_TARGET_ESP32P4 || !IDF_TARGET_ESP32H2 || !IDF_TARGET_ESP32S3 range ESP_HOSTED_SPI_HD_D2_RANGE_MIN ESP_HOSTED_SPI_HD_D2_RANGE_MAX help SPI Half-duplex controller Host D2 @@ -1102,7 +1102,7 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 default 17 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 default 21 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 default 21 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 - default 0 + default -1 config ESP_HOSTED_SPI_HD_D3_RANGE_MAX int @@ -1117,7 +1117,7 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 default 6 if IDF_TARGET_ESP32P4 default 9 if IDF_TARGET_ESP32S3 default 3 if IDF_TARGET_ESP32H2 - default 13 + default -1 if !IDF_TARGET_ESP32P4 || !IDF_TARGET_ESP32H2 || !IDF_TARGET_ESP32S3 range ESP_HOSTED_SPI_HD_D3_RANGE_MIN ESP_HOSTED_SPI_HD_D3_RANGE_MAX help SPI Half-duplex controller Host D3 @@ -1127,7 +1127,7 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 default 6 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 default 32 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 default 32 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 - default 0 + default -1 config ESP_HOSTED_SPI_HD_DATA_READY_RANGE_MAX int @@ -1141,7 +1141,7 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 default 13 if IDF_TARGET_ESP32P4 default 4 if IDF_TARGET_ESP32S3 default 12 if IDF_TARGET_ESP32H2 - default 8 + default -1 if !IDF_TARGET_ESP32P4 || !IDF_TARGET_ESP32H2 || !IDF_TARGET_ESP32S3 range ESP_HOSTED_SPI_HD_DATA_READY_RANGE_MIN ESP_HOSTED_SPI_HD_DATA_READY_RANGE_MAX help GPIO pin for indicating host that slave has data to be read by host @@ -1151,7 +1151,7 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 default 54 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C6 default 53 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C5 default 53 if ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD && SLAVE_IDF_TARGET_ESP32C2 - default 0 + default -1 config ESP_HOSTED_SPI_HD_RESET_RANGE_MAX int @@ -1165,7 +1165,7 @@ ESP32XX_SDIO_CLK_FREQ_KHZ_RANGE_MAX := 50000 default 12 if IDF_TARGET_ESP32P4 default 5 if IDF_TARGET_ESP32S3 default 10 if IDF_TARGET_ESP32H2 - default 5 + default -1 if !IDF_TARGET_ESP32P4 || !IDF_TARGET_ESP32H2 || !IDF_TARGET_ESP32S3 range ESP_HOSTED_SPI_HD_RESET_RANGE_MIN ESP_HOSTED_SPI_HD_RESET_RANGE_MAX help GPIO pin for Resetting ESP slave device. Should be connected to RST/EN of ESP SPI slave device. @@ -1370,6 +1370,51 @@ ESP32XX_SPI_HD_CLK_FREQ_RANGE_MAX := 40 ENABLE/DISABLE software UART checksum endmenu + menu "Common Slave Reset Strategy" + choice ESP_HOSTED_SLAVE_RESET_STRATEGY + bool "When to reset the slave device" + default ESP_HOSTED_SLAVE_RESET_ON_EVERY_HOST_BOOTUP + help + Select Select when to reset the slave + + config ESP_HOSTED_SLAVE_RESET_ON_EVERY_HOST_BOOTUP + bool "Reset slave on every host bootup" + help + Reset the slave device every time the host boots up. This ensures a clean + transport state and prevents any inconsistent states, but causes + the slave to reboot every time. + + config ESP_HOSTED_SLAVE_RESET_ONLY_IF_NECESSARY + bool "Reset slave only if necessary" + depends on ESP_HOSTED_SDIO_HOST_INTERFACE + help + Only reset the slave if initialization fails. This reduces slave + reboots but assumes the slave interface is in a consistent state. + If initialization fails, the host will assume the slave is in an + inconsistent or deinitialized state and will reset it. + Note: This option is only available for SDIO transport. + endchoice + + config ESP_HOSTED_HOST_RESTART_NO_COMMUNICATION_WITH_SLAVE + bool "Enable host auto-restart on communication failure" + depends on ESP_HOSTED_SLAVE_RESET_ONLY_IF_NECESSARY + default y + help + Enable host to automatically restart if it fails to establish communication with the slave. + When enabled, the host will reset itself to recover the connection if the slave + becomes non-responsive for the configured timeout period. This acts as a safeguard + in case the slave does not issue the first event on the transport line. + + config ESP_HOSTED_HOST_RESTART_NO_COMMUNICATION_WITH_SLAVE_TIMEOUT + depends on ESP_HOSTED_HOST_RESTART_NO_COMMUNICATION_WITH_SLAVE + int "Communication failure timeout (seconds)" + default 5 + help + Maximum time in seconds that the host will wait for a response from the slave + before triggering an automatic restart. If no communication is established within + this period, the host will reset itself to recover the connection. + endmenu + config ESP_HOSTED_GPIO_SLAVE_RESET_SLAVE int default ESP_HOSTED_SPI_GPIO_RESET_SLAVE if ESP_HOSTED_SPI_HOST_INTERFACE @@ -1478,6 +1523,20 @@ ESP32XX_SPI_HD_CLK_FREQ_RANGE_MAX := 40 Increase this number if you need to send more simultaneous RPC requests. Note: the slave will only process one RPC request (sync and async) at a time + config ESP_HOSTED_CLI_ENABLED + bool "Enable CLI Shell" + default y + help + Only registers ESP-Hosted cli commands to the existing CLI session opened earlier by other components than esp-hosted + + config ESP_HOSTED_CLI_NEW_INSTANCE + depends on ESP_HOSTED_CLI_ENABLED + bool "Create new instance & do not re-use existing session if any" + default n + help + Starts a new CLI instance when enabled & registers esp hosted as well. + Refrain from enabling this option, if your example already creates cli session, for example, iperf example. + menu "Debug Settings" config ESP_HOSTED_RAW_THROUGHPUT_TRANSPORT @@ -1523,6 +1582,11 @@ ESP32XX_SPI_HD_CLK_FREQ_RANGE_MAX := 40 help On comparing with slave packet stats helps to understand any packet loss at hosted + config ESP_PKT_STATS_INTERVAL_SEC + depends on ESP_PKT_STATS + int "Packet stats reporting interval (sec)" + default 30 + endmenu menu "Data path options" @@ -1597,4 +1661,156 @@ ESP32XX_SPI_HD_CLK_FREQ_RANGE_MAX := 40 Enable this option if you want to copy these values between host and co-processor. It is usually safe to ignore these reserved values. + config ESP_HOSTED_NETWORK_SPLIT_ENABLED + bool "Enable Network Split: Shared IP address between host and slave" + default n + help + Enables the LWIP stack on the slave to process its own set of ports, + alongside the host stack. Helps split network traffic and allows + background tasks on the slave, even when the host is in low-power mode. + + menu "LWIP port config" + depends on ESP_HOSTED_NETWORK_SPLIT_ENABLED + + menu "Host side (remote) LWIP port config" + config LWIP_TCP_LOCAL_PORT_RANGE_START + int "Host TCP start port" + default 49152 + help + Host side TCP start port. Slave defaults to 61440 + Slave range: 61440-65535 + Host range: 49152-61439 + + config LWIP_TCP_LOCAL_PORT_RANGE_END + int "Host TCP end port" + default 61439 + help + Host side TCP end port. Slave defaults to 65535 + Slave range: 61440-65535 + Host range: 49152-61439 + + config LWIP_UDP_LOCAL_PORT_RANGE_START + int "Host UDP start port" + default 49152 + help + Host side UDP start port. Slave defaults to 61440 + Slave range: 61440-65535 + Host range: 49152-61439 + + config LWIP_UDP_LOCAL_PORT_RANGE_END + int "Host UDP end port" + default 61439 + help + Host side UDP end port. Slave defaults to 65535 + Slave range: 61440-65535 + Host range: 49152-61439 + endmenu + + menu "Slave side (remote) LWIP port config" + config LWIP_TCP_REMOTE_PORT_RANGE_START + int "Slave TCP start port" + default 61440 + help + Slave side TCP start port. Host defaults to 49152 + Slave range: 61440-65535 + Host range: 49152-61439 + + config LWIP_TCP_REMOTE_PORT_RANGE_END + int "Slave TCP end port" + default 65535 + help + Slave side TCP end port. Host defaults to 61439 + Slave range: 61440-65535 + Host range: 49152-61439 + + config LWIP_UDP_REMOTE_PORT_RANGE_START + int "Slave UDP start port" + default 61440 + help + Slave side UDP start port. Host defaults to 49152 + Slave range: 61440-65535 + Host range: 49152-61439 + + config LWIP_UDP_REMOTE_PORT_RANGE_END + int "Slave UDP end port" + default 65535 + help + Slave side UDP end port. Host defaults to 61439 + Slave range: 61440-65535 + Host range: 49152-61439 + endmenu + + endmenu + + config ESP_HOSTED_HOST_POWER_SAVE_ENABLED + bool "Allow host to power save" + depends on SOC_LIGHT_SLEEP_SUPPORTED || (SOC_DEEP_SLEEP_SUPPORTED && SOC_GPIO_SUPPORT_DEEPSLEEP_WAKEUP) + depends on ESP_HOSTED_SDIO_HOST_INTERFACE # by the time, light sleep is not added + default n + + config ESP_HOSTED_HOST_DEEP_SLEEP_ALLOWED + bool "Allow host to enter deep sleep. Slave will wakeup host using GPIO" + depends on ESP_HOSTED_HOST_POWER_SAVE_ENABLED && (SOC_GPIO_SUPPORT_DEEPSLEEP_WAKEUP && SOC_DEEP_SLEEP_SUPPORTED) + depends on ESP_HOSTED_SDIO_HOST_INTERFACE + default y + help + Allow host to deep sleep for highest power saving. Only RTC memory and RTC GPIOs remain + powered during deep sleep. Slave will wake up host using a GPIO when needed. Host must + configure a valid RTC GPIO for wakeup. Deep sleep provides maximum power savings but has + longer wakeup time compared to light sleep. + + + menu "Host Power Save Configuration" + depends on ESP_HOSTED_HOST_DEEP_SLEEP_ALLOWED + + config ESP_HOSTED_HOST_WAKEUP_GPIO + int "Host Wakeup GPIO" + default 5 if C2_C5_MODULE_SUB_BOARD + default 6 if IDF_TARGET_ESP32P4 && SLAVE_CHIPSET_ESP32C6 && !ESP_HOSTED_SPI_HD_HOST_INTERFACE + default 4 if IDF_TARGET_ESP32P4 && SLAVE_CHIPSET_ESP32C6 && ESP_HOSTED_SPI_HD_HOST_INTERFACE + default 6 if IDF_TARGET_ESP32P4 && SLAVE_CHIPSET_ESP32C5 + default 6 if IDF_TARGET_ESP32P4 && !SLAVE_CHIPSET_ESP32C6 && !SLAVE_CHIPSET_ESP32C5 + default 1 if IDF_TARGET_ESP32C3 + default -1 + range -1 15 if IDF_TARGET_ESP32P4 + help + GPIO number to use for host wakeup from sleep. + Set to -1 to disable GPIO wakeup. + Only RTC GPIOs are supported for deep-sleep-wakeup. + + choice PRIV_HOST_WAKEUP_GPIO_LEVEL + bool "Host Wakeup GPIO Level" + default PRIV_HOST_WAKEUP_GPIO_LEVEL_HIGH + + config PRIV_HOST_WAKEUP_GPIO_LEVEL_HIGH + bool "High" + config PRIV_HOST_WAKEUP_GPIO_LEVEL_LOW + bool "Low" + endchoice + + config ESP_HOSTED_HOST_WAKEUP_GPIO_LEVEL + int + default 1 if PRIV_HOST_WAKEUP_GPIO_LEVEL_HIGH + default 0 if PRIV_HOST_WAKEUP_GPIO_LEVEL_LOW + help + GPIO level to use for host wakeup from sleep. + Set to 0 to use low level, set to 1 to use high level. + + endmenu + + # Config Validation + if ESP_HOSTED_HOST_DEEP_SLEEP_ALLOWED + if !ESP_HOSTED_SDIO_HOST_INTERFACE && ESP_HOSTED_SLAVE_RESET_ONLY_IF_NECESSARY + comment "Error: Invalid configuration. Slave reset is mandatory for non SDIO transports" + endif + + if ESP_HOSTED_HOST_WAKEUP_GPIO = -1 + comment "Error: Host wake-up GPIO is mandatory" + endif + + if ESP_HOSTED_SLAVE_RESET_ONLY_IF_NECESSARY && !ESP_HOSTED_HOST_RESTART_NO_COMMUNICATION_WITH_SLAVE + comment "Recommended to set up 'auto-restart of host' if communication with slave fails" + endif + endif + endmenu diff --git a/common/esp_hosted_header.h b/common/esp_hosted_header.h index be13c3a9..d7c16bad 100644 --- a/common/esp_hosted_header.h +++ b/common/esp_hosted_header.h @@ -4,6 +4,9 @@ #ifndef __ESP_HOSTED_HEADER__H #define __ESP_HOSTED_HEADER__H +/* Add packet number to debug any drops or out-of-seq packets */ +//#define ESP_PKT_NUM_DEBUG 1 + struct esp_payload_header { uint8_t if_type:4; uint8_t if_num:4; @@ -14,6 +17,9 @@ struct esp_payload_header { uint16_t seq_num; uint8_t throttle_cmd:2; uint8_t reserved2:6; +#ifdef ESP_PKT_NUM_DEBUG + uint16_t pkt_num; +#endif /* Position of union field has to always be last, * this is required for hci_pkt_type */ union { @@ -26,6 +32,9 @@ struct esp_payload_header { /* ESP Payload Header Flags */ #define MORE_FRAGMENT (1 << 0) +#define FLAG_WAKEUP_PKT (1 << 1) +#define FLAG_POWER_SAVE_STARTED (1 << 2) +#define FLAG_POWER_SAVE_STOPPED (1 << 3) #define H_ESP_PAYLOAD_HEADER_OFFSET sizeof(struct esp_payload_header) diff --git a/common/esp_hosted_lwip_src_port_hook.h b/common/esp_hosted_lwip_src_port_hook.h new file mode 100644 index 00000000..4ea558f3 --- /dev/null +++ b/common/esp_hosted_lwip_src_port_hook.h @@ -0,0 +1,73 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Unlicense OR CC0-1.0 + */ + + +#ifndef __ESP_HOSTED_LWIP_SRC_PORT_HOOK_H__ +#define __ESP_HOSTED_LWIP_SRC_PORT_HOOK_H__ + +#include "sdkconfig.h" + +#if defined(CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED) +#include "lwip/opt.h" +/* ----------------------------------Slave (local) Port Config---------------------------------------- */ +/* If configured, Any new UDP socket would automatically bind as local port within this specified UDP port range. + * Please note, Reserved ports (generally <1024) like DHCP, etc would still work as they generally are hardcoded + */ + +#define ENSURE_PORT_RANGE(port, START, END) \ + (((port) >= (START) && (port) <= (END)) ? \ + (port) : \ + (((port) % ((END) - (START) + 1)) + (START))) + +#ifdef CONFIG_LWIP_TCP_LOCAL_PORT_RANGE_START +#define TCP_LOCAL_PORT_RANGE_START CONFIG_LWIP_TCP_LOCAL_PORT_RANGE_START +#define TCP_LOCAL_PORT_RANGE_END CONFIG_LWIP_TCP_LOCAL_PORT_RANGE_END +#define TCP_ENSURE_LOCAL_PORT_RANGE(port) ENSURE_PORT_RANGE(port, TCP_LOCAL_PORT_RANGE_START, TCP_LOCAL_PORT_RANGE_END) +#if CONFIG_LWIP_TCP_LOCAL_PORT_RANGE_END == 0xffff + #define IS_LOCAL_TCP_PORT(port) (port>=TCP_LOCAL_PORT_RANGE_START) +#else + #define IS_LOCAL_TCP_PORT(port) (port>=TCP_LOCAL_PORT_RANGE_START && (port<=CONFIG_LWIP_TCP_LOCAL_PORT_RANGE_END)) +#endif +#endif + +#ifdef CONFIG_LWIP_TCP_REMOTE_PORT_RANGE_START +#define TCP_REMOTE_PORT_RANGE_START CONFIG_LWIP_TCP_REMOTE_PORT_RANGE_START +#define TCP_REMOTE_PORT_RANGE_END CONFIG_LWIP_TCP_REMOTE_PORT_RANGE_END +#define TCP_ENSURE_REMOTE_PORT_RANGE(port) ENSURE_PORT_RANGE(port, TCP_REMOTE_PORT_RANGE_START, TCP_REMOTE_PORT_RANGE_END) +#if CONFIG_LWIP_TCP_REMOTE_PORT_RANGE_END == 0xffff + #define IS_REMOTE_TCP_PORT(port) (port>=TCP_REMOTE_PORT_RANGE_START) +#else + #define IS_REMOTE_TCP_PORT(port) (port>=TCP_REMOTE_PORT_RANGE_START && (port<=CONFIG_LWIP_TCP_REMOTE_PORT_RANGE_END)) +#endif +#endif + +#ifdef CONFIG_LWIP_UDP_LOCAL_PORT_RANGE_START +#define UDP_LOCAL_PORT_RANGE_START CONFIG_LWIP_UDP_LOCAL_PORT_RANGE_START +#define UDP_LOCAL_PORT_RANGE_END CONFIG_LWIP_UDP_LOCAL_PORT_RANGE_END +#define UDP_ENSURE_LOCAL_PORT_RANGE(port) ENSURE_PORT_RANGE(port, UDP_LOCAL_PORT_RANGE_START, UDP_LOCAL_PORT_RANGE_END) + +#if CONFIG_LWIP_UDP_LOCAL_PORT_RANGE_END == 0xffff + #define IS_LOCAL_UDP_PORT(port) (port>=UDP_LOCAL_PORT_RANGE_START) +#else + #define IS_LOCAL_UDP_PORT(port) (port>=UDP_LOCAL_PORT_RANGE_START && (port<=CONFIG_LWIP_UDP_LOCAL_PORT_RANGE_END)) +#endif +#define DNS_PORT_ALLOWED(port) IS_LOCAL_UDP_PORT(port) +#endif + +#ifdef CONFIG_LWIP_UDP_REMOTE_PORT_RANGE_START +#define UDP_REMOTE_PORT_RANGE_START CONFIG_LWIP_UDP_REMOTE_PORT_RANGE_START +#define UDP_REMOTE_PORT_RANGE_END CONFIG_LWIP_UDP_REMOTE_PORT_RANGE_END +#define UDP_ENSURE_REMOTE_PORT_RANGE(port) ENSURE_PORT_RANGE(port, UDP_REMOTE_PORT_RANGE_START, UDP_REMOTE_PORT_RANGE_END) + +#if CONFIG_LWIP_UDP_REMOTE_PORT_RANGE_END == 0xffff + #define IS_REMOTE_UDP_PORT(port) (port>=UDP_REMOTE_PORT_RANGE_START) +#else + #define IS_REMOTE_UDP_PORT(port) (port>=UDP_REMOTE_PORT_RANGE_START && (port<=CONFIG_LWIP_UDP_REMOTE_PORT_RANGE_END)) +#endif +#endif + +#endif +#endif /* __ESP_HOSTED_LWIP_SOURCE_PORT_BINDING_HOOK_H__ */ diff --git a/common/log/esp_hosted_log.h b/common/log/esp_hosted_log.h index 6ddc6cda..2c012710 100644 --- a/common/log/esp_hosted_log.h +++ b/common/log/esp_hosted_log.h @@ -18,17 +18,20 @@ #define __ESP_HOSTED_LOG_H #include "esp_log.h" -#define ESP_PRIV_HEXDUMP(tag1, tag2, buff, len, curr_level) \ +#define ESP_PRIV_HEXDUMP(tag1, tag2, buff, buf_len, display_len, curr_level) \ if ( LOG_LOCAL_LEVEL >= curr_level) { \ - ESP_LOG_LEVEL_LOCAL(curr_level, tag1, "%s: len[%d]", tag2, (int)len); \ - ESP_LOG_BUFFER_HEXDUMP(tag2, buff, len, curr_level); \ + int len_to_print = 0; \ + len_to_print = display_lenbase.descriptor == &rpc__resp__get_coprocessor_fw_version__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } +void rpc__req__set_dhcp_dns_status__init + (RpcReqSetDhcpDnsStatus *message) +{ + static const RpcReqSetDhcpDnsStatus init_value = RPC__REQ__SET_DHCP_DNS_STATUS__INIT; + *message = init_value; +} +size_t rpc__req__set_dhcp_dns_status__get_packed_size + (const RpcReqSetDhcpDnsStatus *message) +{ + assert(message->base.descriptor == &rpc__req__set_dhcp_dns_status__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__set_dhcp_dns_status__pack + (const RpcReqSetDhcpDnsStatus *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__set_dhcp_dns_status__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__set_dhcp_dns_status__pack_to_buffer + (const RpcReqSetDhcpDnsStatus *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__set_dhcp_dns_status__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqSetDhcpDnsStatus * + rpc__req__set_dhcp_dns_status__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqSetDhcpDnsStatus *) + protobuf_c_message_unpack (&rpc__req__set_dhcp_dns_status__descriptor, + allocator, len, data); +} +void rpc__req__set_dhcp_dns_status__free_unpacked + (RpcReqSetDhcpDnsStatus *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__set_dhcp_dns_status__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__set_dhcp_dns_status__init + (RpcRespSetDhcpDnsStatus *message) +{ + static const RpcRespSetDhcpDnsStatus init_value = RPC__RESP__SET_DHCP_DNS_STATUS__INIT; + *message = init_value; +} +size_t rpc__resp__set_dhcp_dns_status__get_packed_size + (const RpcRespSetDhcpDnsStatus *message) +{ + assert(message->base.descriptor == &rpc__resp__set_dhcp_dns_status__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__set_dhcp_dns_status__pack + (const RpcRespSetDhcpDnsStatus *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__set_dhcp_dns_status__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__set_dhcp_dns_status__pack_to_buffer + (const RpcRespSetDhcpDnsStatus *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__set_dhcp_dns_status__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespSetDhcpDnsStatus * + rpc__resp__set_dhcp_dns_status__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespSetDhcpDnsStatus *) + protobuf_c_message_unpack (&rpc__resp__set_dhcp_dns_status__descriptor, + allocator, len, data); +} +void rpc__resp__set_dhcp_dns_status__free_unpacked + (RpcRespSetDhcpDnsStatus *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__set_dhcp_dns_status__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__get_dhcp_dns_status__init + (RpcReqGetDhcpDnsStatus *message) +{ + static const RpcReqGetDhcpDnsStatus init_value = RPC__REQ__GET_DHCP_DNS_STATUS__INIT; + *message = init_value; +} +size_t rpc__req__get_dhcp_dns_status__get_packed_size + (const RpcReqGetDhcpDnsStatus *message) +{ + assert(message->base.descriptor == &rpc__req__get_dhcp_dns_status__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__get_dhcp_dns_status__pack + (const RpcReqGetDhcpDnsStatus *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__get_dhcp_dns_status__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__get_dhcp_dns_status__pack_to_buffer + (const RpcReqGetDhcpDnsStatus *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__get_dhcp_dns_status__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqGetDhcpDnsStatus * + rpc__req__get_dhcp_dns_status__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqGetDhcpDnsStatus *) + protobuf_c_message_unpack (&rpc__req__get_dhcp_dns_status__descriptor, + allocator, len, data); +} +void rpc__req__get_dhcp_dns_status__free_unpacked + (RpcReqGetDhcpDnsStatus *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__get_dhcp_dns_status__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__get_dhcp_dns_status__init + (RpcRespGetDhcpDnsStatus *message) +{ + static const RpcRespGetDhcpDnsStatus init_value = RPC__RESP__GET_DHCP_DNS_STATUS__INIT; + *message = init_value; +} +size_t rpc__resp__get_dhcp_dns_status__get_packed_size + (const RpcRespGetDhcpDnsStatus *message) +{ + assert(message->base.descriptor == &rpc__resp__get_dhcp_dns_status__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__get_dhcp_dns_status__pack + (const RpcRespGetDhcpDnsStatus *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__get_dhcp_dns_status__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__get_dhcp_dns_status__pack_to_buffer + (const RpcRespGetDhcpDnsStatus *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__get_dhcp_dns_status__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespGetDhcpDnsStatus * + rpc__resp__get_dhcp_dns_status__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespGetDhcpDnsStatus *) + protobuf_c_message_unpack (&rpc__resp__get_dhcp_dns_status__descriptor, + allocator, len, data); +} +void rpc__resp__get_dhcp_dns_status__free_unpacked + (RpcRespGetDhcpDnsStatus *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__get_dhcp_dns_status__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} void rpc__event__wifi_event_no_args__init (RpcEventWifiEventNoArgs *message) { @@ -7342,6 +7522,51 @@ void rpc__event__sta_disconnected__free_unpacked assert(message->base.descriptor == &rpc__event__sta_disconnected__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } +void rpc__event__dhcp_dns_status__init + (RpcEventDhcpDnsStatus *message) +{ + static const RpcEventDhcpDnsStatus init_value = RPC__EVENT__DHCP_DNS_STATUS__INIT; + *message = init_value; +} +size_t rpc__event__dhcp_dns_status__get_packed_size + (const RpcEventDhcpDnsStatus *message) +{ + assert(message->base.descriptor == &rpc__event__dhcp_dns_status__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__event__dhcp_dns_status__pack + (const RpcEventDhcpDnsStatus *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__event__dhcp_dns_status__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__event__dhcp_dns_status__pack_to_buffer + (const RpcEventDhcpDnsStatus *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__event__dhcp_dns_status__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcEventDhcpDnsStatus * + rpc__event__dhcp_dns_status__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcEventDhcpDnsStatus *) + protobuf_c_message_unpack (&rpc__event__dhcp_dns_status__descriptor, + allocator, len, data); +} +void rpc__event__dhcp_dns_status__free_unpacked + (RpcEventDhcpDnsStatus *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__event__dhcp_dns_status__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} void rpc__init (Rpc *message) { @@ -15506,197 +15731,570 @@ const ProtobufCMessageDescriptor rpc__resp__get_coprocessor_fw_version__descript (ProtobufCMessageInit) rpc__resp__get_coprocessor_fw_version__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__wifi_event_no_args__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__set_dhcp_dns_status__field_descriptors[9] = { { - "resp", + "iface", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventWifiEventNoArgs, resp), + offsetof(RpcReqSetDhcpDnsStatus, iface), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "event_id", + "net_link_up", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventWifiEventNoArgs, event_id), + offsetof(RpcReqSetDhcpDnsStatus, net_link_up), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__event__wifi_event_no_args__field_indices_by_name[] = { - 1, /* field[1] = event_id */ - 0, /* field[0] = resp */ -}; -static const ProtobufCIntRange rpc__event__wifi_event_no_args__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor rpc__event__wifi_event_no_args__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_WifiEventNoArgs", - "RpcEventWifiEventNoArgs", - "RpcEventWifiEventNoArgs", - "", - sizeof(RpcEventWifiEventNoArgs), - 2, - rpc__event__wifi_event_no_args__field_descriptors, - rpc__event__wifi_event_no_args__field_indices_by_name, - 1, rpc__event__wifi_event_no_args__number_ranges, - (ProtobufCMessageInit) rpc__event__wifi_event_no_args__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__event__espinit__field_descriptors[1] = -{ { - "init_data", - 1, + "dhcp_up", + 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventESPInit, init_data), + offsetof(RpcReqSetDhcpDnsStatus, dhcp_up), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__event__espinit__field_indices_by_name[] = { - 0, /* field[0] = init_data */ -}; -static const ProtobufCIntRange rpc__event__espinit__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__event__espinit__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_ESPInit", - "RpcEventESPInit", - "RpcEventESPInit", - "", - sizeof(RpcEventESPInit), - 1, - rpc__event__espinit__field_descriptors, - rpc__event__espinit__field_indices_by_name, - 1, rpc__event__espinit__number_ranges, - (ProtobufCMessageInit) rpc__event__espinit__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__event__heartbeat__field_descriptors[1] = -{ { - "hb_num", - 1, + "dhcp_ip", + 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcEventHeartbeat, hb_num), + offsetof(RpcReqSetDhcpDnsStatus, dhcp_ip), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__event__heartbeat__field_indices_by_name[] = { - 0, /* field[0] = hb_num */ -}; -static const ProtobufCIntRange rpc__event__heartbeat__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__event__heartbeat__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_Heartbeat", - "RpcEventHeartbeat", - "RpcEventHeartbeat", - "", - sizeof(RpcEventHeartbeat), - 1, - rpc__event__heartbeat__field_descriptors, - rpc__event__heartbeat__field_indices_by_name, - 1, rpc__event__heartbeat__number_ranges, - (ProtobufCMessageInit) rpc__event__heartbeat__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__event__ap__sta_disconnected__field_descriptors[5] = -{ { - "resp", - 1, + "dhcp_nm", + 5, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaDisconnected, resp), + offsetof(RpcReqSetDhcpDnsStatus, dhcp_nm), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "mac", - 2, + "dhcp_gw", + 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaDisconnected, mac), + offsetof(RpcReqSetDhcpDnsStatus, dhcp_gw), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "aid", - 3, + "dns_up", + 7, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaDisconnected, aid), + offsetof(RpcReqSetDhcpDnsStatus, dns_up), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "is_mesh_child", - 4, + "dns_ip", + 8, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaDisconnected, is_mesh_child), + offsetof(RpcReqSetDhcpDnsStatus, dns_ip), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "reason", - 5, + "dns_type", + 9, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaDisconnected, reason), + offsetof(RpcReqSetDhcpDnsStatus, dns_type), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__ap__sta_disconnected__field_indices_by_name[] = { +static const unsigned rpc__req__set_dhcp_dns_status__field_indices_by_name[] = { + 5, /* field[5] = dhcp_gw */ + 3, /* field[3] = dhcp_ip */ + 4, /* field[4] = dhcp_nm */ + 2, /* field[2] = dhcp_up */ + 7, /* field[7] = dns_ip */ + 8, /* field[8] = dns_type */ + 6, /* field[6] = dns_up */ + 0, /* field[0] = iface */ + 1, /* field[1] = net_link_up */ +}; +static const ProtobufCIntRange rpc__req__set_dhcp_dns_status__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 9 } +}; +const ProtobufCMessageDescriptor rpc__req__set_dhcp_dns_status__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_SetDhcpDnsStatus", + "RpcReqSetDhcpDnsStatus", + "RpcReqSetDhcpDnsStatus", + "", + sizeof(RpcReqSetDhcpDnsStatus), + 9, + rpc__req__set_dhcp_dns_status__field_descriptors, + rpc__req__set_dhcp_dns_status__field_indices_by_name, + 1, rpc__req__set_dhcp_dns_status__number_ranges, + (ProtobufCMessageInit) rpc__req__set_dhcp_dns_status__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__set_dhcp_dns_status__field_descriptors[1] = +{ + { + "resp", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespSetDhcpDnsStatus, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__resp__set_dhcp_dns_status__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__set_dhcp_dns_status__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__set_dhcp_dns_status__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_SetDhcpDnsStatus", + "RpcRespSetDhcpDnsStatus", + "RpcRespSetDhcpDnsStatus", + "", + sizeof(RpcRespSetDhcpDnsStatus), + 1, + rpc__resp__set_dhcp_dns_status__field_descriptors, + rpc__resp__set_dhcp_dns_status__field_indices_by_name, + 1, rpc__resp__set_dhcp_dns_status__number_ranges, + (ProtobufCMessageInit) rpc__resp__set_dhcp_dns_status__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__get_dhcp_dns_status__field_descriptors[1] = +{ + { + "iface", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcReqGetDhcpDnsStatus, iface), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__req__get_dhcp_dns_status__field_indices_by_name[] = { + 0, /* field[0] = iface */ +}; +static const ProtobufCIntRange rpc__req__get_dhcp_dns_status__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__req__get_dhcp_dns_status__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_GetDhcpDnsStatus", + "RpcReqGetDhcpDnsStatus", + "RpcReqGetDhcpDnsStatus", + "", + sizeof(RpcReqGetDhcpDnsStatus), + 1, + rpc__req__get_dhcp_dns_status__field_descriptors, + rpc__req__get_dhcp_dns_status__field_indices_by_name, + 1, rpc__req__get_dhcp_dns_status__number_ranges, + (ProtobufCMessageInit) rpc__req__get_dhcp_dns_status__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__get_dhcp_dns_status__field_descriptors[10] = +{ + { + "iface", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespGetDhcpDnsStatus, iface), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "net_link_up", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespGetDhcpDnsStatus, net_link_up), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dhcp_up", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespGetDhcpDnsStatus, dhcp_up), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dhcp_ip", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcRespGetDhcpDnsStatus, dhcp_ip), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dhcp_nm", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcRespGetDhcpDnsStatus, dhcp_nm), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dhcp_gw", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcRespGetDhcpDnsStatus, dhcp_gw), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dns_up", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespGetDhcpDnsStatus, dns_up), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dns_ip", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcRespGetDhcpDnsStatus, dns_ip), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dns_type", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespGetDhcpDnsStatus, dns_type), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespGetDhcpDnsStatus, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__resp__get_dhcp_dns_status__field_indices_by_name[] = { + 5, /* field[5] = dhcp_gw */ + 3, /* field[3] = dhcp_ip */ + 4, /* field[4] = dhcp_nm */ + 2, /* field[2] = dhcp_up */ + 7, /* field[7] = dns_ip */ + 8, /* field[8] = dns_type */ + 6, /* field[6] = dns_up */ + 0, /* field[0] = iface */ + 1, /* field[1] = net_link_up */ + 9, /* field[9] = resp */ +}; +static const ProtobufCIntRange rpc__resp__get_dhcp_dns_status__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 10 } +}; +const ProtobufCMessageDescriptor rpc__resp__get_dhcp_dns_status__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_GetDhcpDnsStatus", + "RpcRespGetDhcpDnsStatus", + "RpcRespGetDhcpDnsStatus", + "", + sizeof(RpcRespGetDhcpDnsStatus), + 10, + rpc__resp__get_dhcp_dns_status__field_descriptors, + rpc__resp__get_dhcp_dns_status__field_indices_by_name, + 1, rpc__resp__get_dhcp_dns_status__number_ranges, + (ProtobufCMessageInit) rpc__resp__get_dhcp_dns_status__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__event__wifi_event_no_args__field_descriptors[2] = +{ + { + "resp", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcEventWifiEventNoArgs, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "event_id", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcEventWifiEventNoArgs, event_id), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__event__wifi_event_no_args__field_indices_by_name[] = { + 1, /* field[1] = event_id */ + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__event__wifi_event_no_args__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor rpc__event__wifi_event_no_args__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Event_WifiEventNoArgs", + "RpcEventWifiEventNoArgs", + "RpcEventWifiEventNoArgs", + "", + sizeof(RpcEventWifiEventNoArgs), + 2, + rpc__event__wifi_event_no_args__field_descriptors, + rpc__event__wifi_event_no_args__field_indices_by_name, + 1, rpc__event__wifi_event_no_args__number_ranges, + (ProtobufCMessageInit) rpc__event__wifi_event_no_args__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__event__espinit__field_descriptors[1] = +{ + { + "init_data", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcEventESPInit, init_data), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__event__espinit__field_indices_by_name[] = { + 0, /* field[0] = init_data */ +}; +static const ProtobufCIntRange rpc__event__espinit__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__event__espinit__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Event_ESPInit", + "RpcEventESPInit", + "RpcEventESPInit", + "", + sizeof(RpcEventESPInit), + 1, + rpc__event__espinit__field_descriptors, + rpc__event__espinit__field_indices_by_name, + 1, rpc__event__espinit__number_ranges, + (ProtobufCMessageInit) rpc__event__espinit__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__event__heartbeat__field_descriptors[1] = +{ + { + "hb_num", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcEventHeartbeat, hb_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__event__heartbeat__field_indices_by_name[] = { + 0, /* field[0] = hb_num */ +}; +static const ProtobufCIntRange rpc__event__heartbeat__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__event__heartbeat__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Event_Heartbeat", + "RpcEventHeartbeat", + "RpcEventHeartbeat", + "", + sizeof(RpcEventHeartbeat), + 1, + rpc__event__heartbeat__field_descriptors, + rpc__event__heartbeat__field_indices_by_name, + 1, rpc__event__heartbeat__number_ranges, + (ProtobufCMessageInit) rpc__event__heartbeat__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__event__ap__sta_disconnected__field_descriptors[5] = +{ + { + "resp", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcEventAPStaDisconnected, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "mac", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcEventAPStaDisconnected, mac), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "aid", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(RpcEventAPStaDisconnected, aid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "is_mesh_child", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(RpcEventAPStaDisconnected, is_mesh_child), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "reason", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(RpcEventAPStaDisconnected, reason), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__event__ap__sta_disconnected__field_indices_by_name[] = { 2, /* field[2] = aid */ 3, /* field[3] = is_mesh_child */ 1, /* field[1] = mac */ @@ -15953,7 +16551,162 @@ const ProtobufCMessageDescriptor rpc__event__sta_disconnected__descriptor = (ProtobufCMessageInit) rpc__event__sta_disconnected__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__field_descriptors[121] = +static const ProtobufCFieldDescriptor rpc__event__dhcp_dns_status__field_descriptors[10] = +{ + { + "iface", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcEventDhcpDnsStatus, iface), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "net_link_up", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcEventDhcpDnsStatus, net_link_up), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dhcp_up", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcEventDhcpDnsStatus, dhcp_up), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dhcp_ip", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcEventDhcpDnsStatus, dhcp_ip), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dhcp_nm", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcEventDhcpDnsStatus, dhcp_nm), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dhcp_gw", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcEventDhcpDnsStatus, dhcp_gw), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dns_up", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcEventDhcpDnsStatus, dns_up), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dns_ip", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcEventDhcpDnsStatus, dns_ip), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dns_type", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcEventDhcpDnsStatus, dns_type), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcEventDhcpDnsStatus, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__event__dhcp_dns_status__field_indices_by_name[] = { + 5, /* field[5] = dhcp_gw */ + 3, /* field[3] = dhcp_ip */ + 4, /* field[4] = dhcp_nm */ + 2, /* field[2] = dhcp_up */ + 7, /* field[7] = dns_ip */ + 8, /* field[8] = dns_type */ + 6, /* field[6] = dns_up */ + 0, /* field[0] = iface */ + 1, /* field[1] = net_link_up */ + 9, /* field[9] = resp */ +}; +static const ProtobufCIntRange rpc__event__dhcp_dns_status__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 10 } +}; +const ProtobufCMessageDescriptor rpc__event__dhcp_dns_status__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Event_DhcpDnsStatus", + "RpcEventDhcpDnsStatus", + "RpcEventDhcpDnsStatus", + "", + sizeof(RpcEventDhcpDnsStatus), + 10, + rpc__event__dhcp_dns_status__field_descriptors, + rpc__event__dhcp_dns_status__field_indices_by_name, + 1, rpc__event__dhcp_dns_status__number_ranges, + (ProtobufCMessageInit) rpc__event__dhcp_dns_status__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__field_descriptors[126] = { { "msg_type", @@ -16651,6 +17404,30 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[121] = 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "req_set_dhcp_dns", + 352, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_set_dhcp_dns), + &rpc__req__set_dhcp_dns_status__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_get_dhcp_dns", + 353, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_get_dhcp_dns), + &rpc__req__get_dhcp_dns_status__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, { "resp_get_mac_address", 513, @@ -17311,6 +18088,30 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[121] = 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "resp_set_dhcp_dns", + 608, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_set_dhcp_dns), + &rpc__resp__set_dhcp_dns_status__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_get_dhcp_dns", + 609, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_get_dhcp_dns), + &rpc__resp__get_dhcp_dns_status__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, { "event_esp_init", 769, @@ -17407,26 +18208,41 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[121] = 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "event_dhcp_dns", + 777, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, event_dhcp_dns), + &rpc__event__dhcp_dns_status__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, }; static const unsigned rpc__field_indices_by_name[] = { - 115, /* field[115] = event_ap_sta_connected */ - 116, /* field[116] = event_ap_sta_disconnected */ - 113, /* field[113] = event_esp_init */ - 114, /* field[114] = event_heartbeat */ - 119, /* field[119] = event_sta_connected */ - 120, /* field[120] = event_sta_disconnected */ - 118, /* field[118] = event_sta_scan_done */ - 117, /* field[117] = event_wifi_event_no_args */ + 119, /* field[119] = event_ap_sta_connected */ + 120, /* field[120] = event_ap_sta_disconnected */ + 125, /* field[125] = event_dhcp_dns */ + 117, /* field[117] = event_esp_init */ + 118, /* field[118] = event_heartbeat */ + 123, /* field[123] = event_sta_connected */ + 124, /* field[124] = event_sta_disconnected */ + 122, /* field[122] = event_sta_scan_done */ + 121, /* field[121] = event_wifi_event_no_args */ 1, /* field[1] = msg_id */ 0, /* field[0] = msg_type */ 14, /* field[14] = req_config_heartbeat */ 56, /* field[56] = req_get_coprocessor_fwversion */ + 59, /* field[59] = req_get_dhcp_dns */ 3, /* field[3] = req_get_mac_address */ 13, /* field[13] = req_get_wifi_max_tx_power */ 5, /* field[5] = req_get_wifi_mode */ 9, /* field[9] = req_ota_begin */ 11, /* field[11] = req_ota_end */ 10, /* field[10] = req_ota_write */ + 58, /* field[58] = req_set_dhcp_dns */ 4, /* field[4] = req_set_mac_address */ 12, /* field[12] = req_set_wifi_max_tx_power */ 6, /* field[6] = req_set_wifi_mode */ @@ -17474,61 +18290,63 @@ static const unsigned rpc__field_indices_by_name[] = { 47, /* field[47] = req_wifi_sta_get_rssi */ 17, /* field[17] = req_wifi_start */ 18, /* field[18] = req_wifi_stop */ - 69, /* field[69] = resp_config_heartbeat */ - 111, /* field[111] = resp_get_coprocessor_fwversion */ - 58, /* field[58] = resp_get_mac_address */ - 68, /* field[68] = resp_get_wifi_max_tx_power */ - 60, /* field[60] = resp_get_wifi_mode */ - 64, /* field[64] = resp_ota_begin */ - 66, /* field[66] = resp_ota_end */ - 65, /* field[65] = resp_ota_write */ - 59, /* field[59] = resp_set_mac_address */ - 67, /* field[67] = resp_set_wifi_max_tx_power */ - 61, /* field[61] = resp_set_wifi_mode */ - 96, /* field[96] = resp_wifi_ap_get_sta_aid */ - 95, /* field[95] = resp_wifi_ap_get_sta_list */ - 82, /* field[82] = resp_wifi_clear_ap_list */ - 84, /* field[84] = resp_wifi_clear_fast_connect */ - 74, /* field[74] = resp_wifi_connect */ - 85, /* field[85] = resp_wifi_deauth_sta */ - 71, /* field[71] = resp_wifi_deinit */ - 75, /* field[75] = resp_wifi_disconnect */ - 108, /* field[108] = resp_wifi_get_band */ - 110, /* field[110] = resp_wifi_get_bandmode */ - 90, /* field[90] = resp_wifi_get_bandwidth */ - 106, /* field[106] = resp_wifi_get_bandwidths */ - 92, /* field[92] = resp_wifi_get_channel */ - 77, /* field[77] = resp_wifi_get_config */ - 94, /* field[94] = resp_wifi_get_country */ - 99, /* field[99] = resp_wifi_get_country_code */ - 88, /* field[88] = resp_wifi_get_protocol */ - 104, /* field[104] = resp_wifi_get_protocols */ - 63, /* field[63] = resp_wifi_get_ps */ - 70, /* field[70] = resp_wifi_init */ - 83, /* field[83] = resp_wifi_restore */ - 80, /* field[80] = resp_wifi_scan_get_ap_num */ - 112, /* field[112] = resp_wifi_scan_get_ap_record */ - 81, /* field[81] = resp_wifi_scan_get_ap_records */ - 78, /* field[78] = resp_wifi_scan_start */ - 79, /* field[79] = resp_wifi_scan_stop */ - 107, /* field[107] = resp_wifi_set_band */ - 109, /* field[109] = resp_wifi_set_bandmode */ - 89, /* field[89] = resp_wifi_set_bandwidth */ - 105, /* field[105] = resp_wifi_set_bandwidths */ - 91, /* field[91] = resp_wifi_set_channel */ - 76, /* field[76] = resp_wifi_set_config */ - 93, /* field[93] = resp_wifi_set_country */ - 98, /* field[98] = resp_wifi_set_country_code */ - 87, /* field[87] = resp_wifi_set_protocol */ - 103, /* field[103] = resp_wifi_set_protocols */ - 62, /* field[62] = resp_wifi_set_ps */ - 97, /* field[97] = resp_wifi_set_storage */ - 100, /* field[100] = resp_wifi_sta_get_aid */ - 86, /* field[86] = resp_wifi_sta_get_ap_info */ - 101, /* field[101] = resp_wifi_sta_get_negotiated_phymode */ - 102, /* field[102] = resp_wifi_sta_get_rssi */ - 72, /* field[72] = resp_wifi_start */ - 73, /* field[73] = resp_wifi_stop */ + 71, /* field[71] = resp_config_heartbeat */ + 113, /* field[113] = resp_get_coprocessor_fwversion */ + 116, /* field[116] = resp_get_dhcp_dns */ + 60, /* field[60] = resp_get_mac_address */ + 70, /* field[70] = resp_get_wifi_max_tx_power */ + 62, /* field[62] = resp_get_wifi_mode */ + 66, /* field[66] = resp_ota_begin */ + 68, /* field[68] = resp_ota_end */ + 67, /* field[67] = resp_ota_write */ + 115, /* field[115] = resp_set_dhcp_dns */ + 61, /* field[61] = resp_set_mac_address */ + 69, /* field[69] = resp_set_wifi_max_tx_power */ + 63, /* field[63] = resp_set_wifi_mode */ + 98, /* field[98] = resp_wifi_ap_get_sta_aid */ + 97, /* field[97] = resp_wifi_ap_get_sta_list */ + 84, /* field[84] = resp_wifi_clear_ap_list */ + 86, /* field[86] = resp_wifi_clear_fast_connect */ + 76, /* field[76] = resp_wifi_connect */ + 87, /* field[87] = resp_wifi_deauth_sta */ + 73, /* field[73] = resp_wifi_deinit */ + 77, /* field[77] = resp_wifi_disconnect */ + 110, /* field[110] = resp_wifi_get_band */ + 112, /* field[112] = resp_wifi_get_bandmode */ + 92, /* field[92] = resp_wifi_get_bandwidth */ + 108, /* field[108] = resp_wifi_get_bandwidths */ + 94, /* field[94] = resp_wifi_get_channel */ + 79, /* field[79] = resp_wifi_get_config */ + 96, /* field[96] = resp_wifi_get_country */ + 101, /* field[101] = resp_wifi_get_country_code */ + 90, /* field[90] = resp_wifi_get_protocol */ + 106, /* field[106] = resp_wifi_get_protocols */ + 65, /* field[65] = resp_wifi_get_ps */ + 72, /* field[72] = resp_wifi_init */ + 85, /* field[85] = resp_wifi_restore */ + 82, /* field[82] = resp_wifi_scan_get_ap_num */ + 114, /* field[114] = resp_wifi_scan_get_ap_record */ + 83, /* field[83] = resp_wifi_scan_get_ap_records */ + 80, /* field[80] = resp_wifi_scan_start */ + 81, /* field[81] = resp_wifi_scan_stop */ + 109, /* field[109] = resp_wifi_set_band */ + 111, /* field[111] = resp_wifi_set_bandmode */ + 91, /* field[91] = resp_wifi_set_bandwidth */ + 107, /* field[107] = resp_wifi_set_bandwidths */ + 93, /* field[93] = resp_wifi_set_channel */ + 78, /* field[78] = resp_wifi_set_config */ + 95, /* field[95] = resp_wifi_set_country */ + 100, /* field[100] = resp_wifi_set_country_code */ + 89, /* field[89] = resp_wifi_set_protocol */ + 105, /* field[105] = resp_wifi_set_protocols */ + 64, /* field[64] = resp_wifi_set_ps */ + 99, /* field[99] = resp_wifi_set_storage */ + 102, /* field[102] = resp_wifi_sta_get_aid */ + 88, /* field[88] = resp_wifi_sta_get_ap_info */ + 103, /* field[103] = resp_wifi_sta_get_negotiated_phymode */ + 104, /* field[104] = resp_wifi_sta_get_rssi */ + 74, /* field[74] = resp_wifi_start */ + 75, /* field[75] = resp_wifi_stop */ 2, /* field[2] = uid */ }; static const ProtobufCIntRange rpc__number_ranges[16 + 1] = @@ -17541,15 +18359,15 @@ static const ProtobufCIntRange rpc__number_ranges[16 + 1] = { 334, 43 }, { 338, 45 }, { 341, 47 }, - { 513, 58 }, - { 526, 62 }, - { 553, 87 }, - { 567, 95 }, - { 590, 98 }, - { 594, 100 }, - { 597, 102 }, - { 769, 113 }, - { 0, 121 } + { 513, 60 }, + { 526, 64 }, + { 553, 89 }, + { 567, 97 }, + { 590, 100 }, + { 594, 102 }, + { 597, 104 }, + { 769, 117 }, + { 0, 126 } }; const ProtobufCMessageDescriptor rpc__descriptor = { @@ -17559,7 +18377,7 @@ const ProtobufCMessageDescriptor rpc__descriptor = "Rpc", "", sizeof(Rpc), - 121, + 126, rpc__field_descriptors, rpc__field_indices_by_name, 16, rpc__number_ranges, @@ -17736,7 +18554,7 @@ const ProtobufCEnumDescriptor rpc_type__descriptor = rpc_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; -static const ProtobufCEnumValue rpc_id__enum_values_by_number[183] = +static const ProtobufCEnumValue rpc_id__enum_values_by_number[188] = { { "MsgId_Invalid", "RPC_ID__MsgId_Invalid", 0 }, { "Req_Base", "RPC_ID__Req_Base", 256 }, @@ -17824,7 +18642,9 @@ static const ProtobufCEnumValue rpc_id__enum_values_by_number[183] = { "Req_WifiGetBandMode", "RPC_ID__Req_WifiGetBandMode", 349 }, { "Req_GetCoprocessorFwVersion", "RPC_ID__Req_GetCoprocessorFwVersion", 350 }, { "Req_WifiScanGetApRecord", "RPC_ID__Req_WifiScanGetApRecord", 351 }, - { "Req_Max", "RPC_ID__Req_Max", 352 }, + { "Req_SetDhcpDnsStatus", "RPC_ID__Req_SetDhcpDnsStatus", 352 }, + { "Req_GetDhcpDnsStatus", "RPC_ID__Req_GetDhcpDnsStatus", 353 }, + { "Req_Max", "RPC_ID__Req_Max", 354 }, { "Resp_Base", "RPC_ID__Resp_Base", 512 }, { "Resp_GetMACAddress", "RPC_ID__Resp_GetMACAddress", 513 }, { "Resp_SetMacAddress", "RPC_ID__Resp_SetMacAddress", 514 }, @@ -17910,7 +18730,9 @@ static const ProtobufCEnumValue rpc_id__enum_values_by_number[183] = { "Resp_WifiGetBandMode", "RPC_ID__Resp_WifiGetBandMode", 605 }, { "Resp_GetCoprocessorFwVersion", "RPC_ID__Resp_GetCoprocessorFwVersion", 606 }, { "Resp_WifiScanGetApRecord", "RPC_ID__Resp_WifiScanGetApRecord", 607 }, - { "Resp_Max", "RPC_ID__Resp_Max", 608 }, + { "Resp_SetDhcpDnsStatus", "RPC_ID__Resp_SetDhcpDnsStatus", 608 }, + { "Resp_GetDhcpDnsStatus", "RPC_ID__Resp_GetDhcpDnsStatus", 609 }, + { "Resp_Max", "RPC_ID__Resp_Max", 610 }, { "Event_Base", "RPC_ID__Event_Base", 768 }, { "Event_ESPInit", "RPC_ID__Event_ESPInit", 769 }, { "Event_Heartbeat", "RPC_ID__Event_Heartbeat", 770 }, @@ -17920,33 +18742,37 @@ static const ProtobufCEnumValue rpc_id__enum_values_by_number[183] = { "Event_StaScanDone", "RPC_ID__Event_StaScanDone", 774 }, { "Event_StaConnected", "RPC_ID__Event_StaConnected", 775 }, { "Event_StaDisconnected", "RPC_ID__Event_StaDisconnected", 776 }, - { "Event_Max", "RPC_ID__Event_Max", 777 }, + { "Event_DhcpDnsStatus", "RPC_ID__Event_DhcpDnsStatus", 777 }, + { "Event_Max", "RPC_ID__Event_Max", 778 }, }; static const ProtobufCIntRange rpc_id__value_ranges[] = { -{0, 0},{256, 1},{270, 6},{297, 31},{512, 87},{526, 92},{553, 117},{768, 173},{0, 183} -}; -static const ProtobufCEnumValueIndex rpc_id__enum_values_by_name[183] = -{ - { "Event_AP_StaConnected", 176 }, - { "Event_AP_StaDisconnected", 177 }, - { "Event_Base", 173 }, - { "Event_ESPInit", 174 }, - { "Event_Heartbeat", 175 }, - { "Event_Max", 182 }, - { "Event_StaConnected", 180 }, - { "Event_StaDisconnected", 181 }, - { "Event_StaScanDone", 179 }, - { "Event_WifiEventNoArgs", 178 }, +{0, 0},{256, 1},{270, 6},{297, 31},{512, 89},{526, 94},{553, 119},{768, 177},{0, 188} +}; +static const ProtobufCEnumValueIndex rpc_id__enum_values_by_name[188] = +{ + { "Event_AP_StaConnected", 180 }, + { "Event_AP_StaDisconnected", 181 }, + { "Event_Base", 177 }, + { "Event_DhcpDnsStatus", 186 }, + { "Event_ESPInit", 178 }, + { "Event_Heartbeat", 179 }, + { "Event_Max", 187 }, + { "Event_StaConnected", 184 }, + { "Event_StaDisconnected", 185 }, + { "Event_StaScanDone", 183 }, + { "Event_WifiEventNoArgs", 182 }, { "MsgId_Invalid", 0 }, { "Req_Base", 1 }, { "Req_ConfigHeartbeat", 13 }, { "Req_GetCoprocessorFwVersion", 84 }, + { "Req_GetDhcpDnsStatus", 87 }, { "Req_GetMACAddress", 2 }, { "Req_GetWifiMode", 4 }, - { "Req_Max", 86 }, + { "Req_Max", 88 }, { "Req_OTABegin", 8 }, { "Req_OTAEnd", 10 }, { "Req_OTAWrite", 9 }, + { "Req_SetDhcpDnsStatus", 86 }, { "Req_SetMacAddress", 3 }, { "Req_SetWifiMode", 5 }, { "Req_Wifi80211Tx", 51 }, @@ -18024,92 +18850,94 @@ static const ProtobufCEnumValueIndex rpc_id__enum_values_by_name[183] = { "Req_WifiStart", 16 }, { "Req_WifiStatisDump", 61 }, { "Req_WifiStop", 17 }, - { "Resp_Base", 87 }, - { "Resp_ConfigHeartbeat", 99 }, - { "Resp_GetCoprocessorFwVersion", 170 }, - { "Resp_GetMACAddress", 88 }, - { "Resp_GetWifiMode", 90 }, - { "Resp_Max", 172 }, - { "Resp_OTABegin", 94 }, - { "Resp_OTAEnd", 96 }, - { "Resp_OTAWrite", 95 }, - { "Resp_SetMacAddress", 89 }, - { "Resp_SetWifiMode", 91 }, - { "Resp_Wifi80211Tx", 137 }, - { "Resp_WifiApGetStaAid", 132 }, - { "Resp_WifiApGetStaList", 131 }, - { "Resp_WifiClearApList", 112 }, - { "Resp_WifiClearFastConnect", 114 }, - { "Resp_WifiConfig11bRate", 152 }, - { "Resp_WifiConfig80211TxRate", 156 }, - { "Resp_WifiConnect", 104 }, - { "Resp_WifiConnectionlessModuleSetWakeInterval", 153 }, - { "Resp_WifiDeauthSta", 115 }, - { "Resp_WifiDeinit", 101 }, - { "Resp_WifiDisablePmfConfig", 157 }, - { "Resp_WifiDisconnect", 105 }, - { "Resp_WifiFtmEndSession", 150 }, - { "Resp_WifiFtmInitiateSession", 149 }, - { "Resp_WifiFtmRespSetOffset", 151 }, - { "Resp_WifiGetAnt", 143 }, - { "Resp_WifiGetAntGpio", 141 }, - { "Resp_WifiGetBand", 167 }, - { "Resp_WifiGetBandMode", 169 }, - { "Resp_WifiGetBandwidth", 120 }, - { "Resp_WifiGetBandwidths", 165 }, - { "Resp_WifiGetChannel", 122 }, - { "Resp_WifiGetConfig", 107 }, - { "Resp_WifiGetCountry", 124 }, - { "Resp_WifiGetCountryCode", 155 }, - { "Resp_WifiGetEventMask", 136 }, - { "Resp_WifiGetInactiveTime", 146 }, - { "Resp_WifiGetMaxTxPower", 98 }, - { "Resp_WifiGetPromiscuous", 126 }, - { "Resp_WifiGetPromiscuousCtrlFilter", 130 }, - { "Resp_WifiGetPromiscuousFilter", 128 }, - { "Resp_WifiGetProtocol", 118 }, - { "Resp_WifiGetProtocols", 163 }, - { "Resp_WifiGetPs", 93 }, - { "Resp_WifiGetTsfTime", 144 }, - { "Resp_WifiInit", 100 }, - { "Resp_WifiRestore", 113 }, - { "Resp_WifiScanGetApNum", 110 }, - { "Resp_WifiScanGetApRecord", 171 }, - { "Resp_WifiScanGetApRecords", 111 }, - { "Resp_WifiScanStart", 108 }, - { "Resp_WifiScanStop", 109 }, - { "Resp_WifiSetAnt", 142 }, - { "Resp_WifiSetAntGpio", 140 }, - { "Resp_WifiSetBand", 166 }, - { "Resp_WifiSetBandMode", 168 }, - { "Resp_WifiSetBandwidth", 119 }, - { "Resp_WifiSetBandwidths", 164 }, - { "Resp_WifiSetChannel", 121 }, - { "Resp_WifiSetConfig", 106 }, - { "Resp_WifiSetCountry", 123 }, - { "Resp_WifiSetCountryCode", 154 }, - { "Resp_WifiSetCsi", 139 }, - { "Resp_WifiSetCsiConfig", 138 }, - { "Resp_WifiSetDynamicCs", 160 }, - { "Resp_WifiSetEventMask", 135 }, - { "Resp_WifiSetInactiveTime", 145 }, - { "Resp_WifiSetMaxTxPower", 97 }, - { "Resp_WifiSetPromiscuous", 125 }, - { "Resp_WifiSetPromiscuousCtrlFilter", 129 }, - { "Resp_WifiSetPromiscuousFilter", 127 }, - { "Resp_WifiSetProtocol", 117 }, - { "Resp_WifiSetProtocols", 162 }, - { "Resp_WifiSetPs", 92 }, - { "Resp_WifiSetRssiThreshold", 148 }, - { "Resp_WifiSetStorage", 133 }, - { "Resp_WifiSetVendorIe", 134 }, - { "Resp_WifiStaGetAid", 158 }, - { "Resp_WifiStaGetApInfo", 116 }, - { "Resp_WifiStaGetNegotiatedPhymode", 159 }, - { "Resp_WifiStaGetRssi", 161 }, - { "Resp_WifiStart", 102 }, - { "Resp_WifiStatisDump", 147 }, - { "Resp_WifiStop", 103 }, + { "Resp_Base", 89 }, + { "Resp_ConfigHeartbeat", 101 }, + { "Resp_GetCoprocessorFwVersion", 172 }, + { "Resp_GetDhcpDnsStatus", 175 }, + { "Resp_GetMACAddress", 90 }, + { "Resp_GetWifiMode", 92 }, + { "Resp_Max", 176 }, + { "Resp_OTABegin", 96 }, + { "Resp_OTAEnd", 98 }, + { "Resp_OTAWrite", 97 }, + { "Resp_SetDhcpDnsStatus", 174 }, + { "Resp_SetMacAddress", 91 }, + { "Resp_SetWifiMode", 93 }, + { "Resp_Wifi80211Tx", 139 }, + { "Resp_WifiApGetStaAid", 134 }, + { "Resp_WifiApGetStaList", 133 }, + { "Resp_WifiClearApList", 114 }, + { "Resp_WifiClearFastConnect", 116 }, + { "Resp_WifiConfig11bRate", 154 }, + { "Resp_WifiConfig80211TxRate", 158 }, + { "Resp_WifiConnect", 106 }, + { "Resp_WifiConnectionlessModuleSetWakeInterval", 155 }, + { "Resp_WifiDeauthSta", 117 }, + { "Resp_WifiDeinit", 103 }, + { "Resp_WifiDisablePmfConfig", 159 }, + { "Resp_WifiDisconnect", 107 }, + { "Resp_WifiFtmEndSession", 152 }, + { "Resp_WifiFtmInitiateSession", 151 }, + { "Resp_WifiFtmRespSetOffset", 153 }, + { "Resp_WifiGetAnt", 145 }, + { "Resp_WifiGetAntGpio", 143 }, + { "Resp_WifiGetBand", 169 }, + { "Resp_WifiGetBandMode", 171 }, + { "Resp_WifiGetBandwidth", 122 }, + { "Resp_WifiGetBandwidths", 167 }, + { "Resp_WifiGetChannel", 124 }, + { "Resp_WifiGetConfig", 109 }, + { "Resp_WifiGetCountry", 126 }, + { "Resp_WifiGetCountryCode", 157 }, + { "Resp_WifiGetEventMask", 138 }, + { "Resp_WifiGetInactiveTime", 148 }, + { "Resp_WifiGetMaxTxPower", 100 }, + { "Resp_WifiGetPromiscuous", 128 }, + { "Resp_WifiGetPromiscuousCtrlFilter", 132 }, + { "Resp_WifiGetPromiscuousFilter", 130 }, + { "Resp_WifiGetProtocol", 120 }, + { "Resp_WifiGetProtocols", 165 }, + { "Resp_WifiGetPs", 95 }, + { "Resp_WifiGetTsfTime", 146 }, + { "Resp_WifiInit", 102 }, + { "Resp_WifiRestore", 115 }, + { "Resp_WifiScanGetApNum", 112 }, + { "Resp_WifiScanGetApRecord", 173 }, + { "Resp_WifiScanGetApRecords", 113 }, + { "Resp_WifiScanStart", 110 }, + { "Resp_WifiScanStop", 111 }, + { "Resp_WifiSetAnt", 144 }, + { "Resp_WifiSetAntGpio", 142 }, + { "Resp_WifiSetBand", 168 }, + { "Resp_WifiSetBandMode", 170 }, + { "Resp_WifiSetBandwidth", 121 }, + { "Resp_WifiSetBandwidths", 166 }, + { "Resp_WifiSetChannel", 123 }, + { "Resp_WifiSetConfig", 108 }, + { "Resp_WifiSetCountry", 125 }, + { "Resp_WifiSetCountryCode", 156 }, + { "Resp_WifiSetCsi", 141 }, + { "Resp_WifiSetCsiConfig", 140 }, + { "Resp_WifiSetDynamicCs", 162 }, + { "Resp_WifiSetEventMask", 137 }, + { "Resp_WifiSetInactiveTime", 147 }, + { "Resp_WifiSetMaxTxPower", 99 }, + { "Resp_WifiSetPromiscuous", 127 }, + { "Resp_WifiSetPromiscuousCtrlFilter", 131 }, + { "Resp_WifiSetPromiscuousFilter", 129 }, + { "Resp_WifiSetProtocol", 119 }, + { "Resp_WifiSetProtocols", 164 }, + { "Resp_WifiSetPs", 94 }, + { "Resp_WifiSetRssiThreshold", 150 }, + { "Resp_WifiSetStorage", 135 }, + { "Resp_WifiSetVendorIe", 136 }, + { "Resp_WifiStaGetAid", 160 }, + { "Resp_WifiStaGetApInfo", 118 }, + { "Resp_WifiStaGetNegotiatedPhymode", 161 }, + { "Resp_WifiStaGetRssi", 163 }, + { "Resp_WifiStart", 104 }, + { "Resp_WifiStatisDump", 149 }, + { "Resp_WifiStop", 105 }, }; const ProtobufCEnumDescriptor rpc_id__descriptor = { @@ -18118,9 +18946,9 @@ const ProtobufCEnumDescriptor rpc_id__descriptor = "RpcId", "RpcId", "", - 183, + 188, rpc_id__enum_values_by_number, - 183, + 188, rpc_id__enum_values_by_name, 8, rpc_id__value_ranges, diff --git a/common/proto/esp_hosted_rpc.pb-c.h b/common/proto/esp_hosted_rpc.pb-c.h index ca2b379c..a6f90296 100644 --- a/common/proto/esp_hosted_rpc.pb-c.h +++ b/common/proto/esp_hosted_rpc.pb-c.h @@ -170,6 +170,10 @@ typedef struct RpcReqWifiGetBandMode RpcReqWifiGetBandMode; typedef struct RpcRespWifiGetBandMode RpcRespWifiGetBandMode; typedef struct RpcReqGetCoprocessorFwVersion RpcReqGetCoprocessorFwVersion; typedef struct RpcRespGetCoprocessorFwVersion RpcRespGetCoprocessorFwVersion; +typedef struct RpcReqSetDhcpDnsStatus RpcReqSetDhcpDnsStatus; +typedef struct RpcRespSetDhcpDnsStatus RpcRespSetDhcpDnsStatus; +typedef struct RpcReqGetDhcpDnsStatus RpcReqGetDhcpDnsStatus; +typedef struct RpcRespGetDhcpDnsStatus RpcRespGetDhcpDnsStatus; typedef struct RpcEventWifiEventNoArgs RpcEventWifiEventNoArgs; typedef struct RpcEventESPInit RpcEventESPInit; typedef struct RpcEventHeartbeat RpcEventHeartbeat; @@ -178,6 +182,7 @@ typedef struct RpcEventAPStaConnected RpcEventAPStaConnected; typedef struct RpcEventStaScanDone RpcEventStaScanDone; typedef struct RpcEventStaConnected RpcEventStaConnected; typedef struct RpcEventStaDisconnected RpcEventStaDisconnected; +typedef struct RpcEventDhcpDnsStatus RpcEventDhcpDnsStatus; typedef struct Rpc Rpc; @@ -584,14 +589,22 @@ typedef enum _RpcId { *0x15f */ RPC_ID__Req_WifiScanGetApRecord = 351, + /* + *0x160 + */ + RPC_ID__Req_SetDhcpDnsStatus = 352, + /* + *0x161 + */ + RPC_ID__Req_GetDhcpDnsStatus = 353, /* * Add new control path command response before Req_Max * and update Req_Max */ /* - *0x160 + *0x162 */ - RPC_ID__Req_Max = 352, + RPC_ID__Req_Max = 354, /* ** Response Msgs * */ @@ -693,11 +706,13 @@ typedef enum _RpcId { RPC_ID__Resp_WifiGetBandMode = 605, RPC_ID__Resp_GetCoprocessorFwVersion = 606, RPC_ID__Resp_WifiScanGetApRecord = 607, + RPC_ID__Resp_SetDhcpDnsStatus = 608, + RPC_ID__Resp_GetDhcpDnsStatus = 609, /* * Add new control path command response before Resp_Max * and update Resp_Max */ - RPC_ID__Resp_Max = 608, + RPC_ID__Resp_Max = 610, /* ** Event Msgs * */ @@ -710,11 +725,12 @@ typedef enum _RpcId { RPC_ID__Event_StaScanDone = 774, RPC_ID__Event_StaConnected = 775, RPC_ID__Event_StaDisconnected = 776, + RPC_ID__Event_DhcpDnsStatus = 777, /* * Add new control path command notification before Event_Max * and update Event_Max */ - RPC_ID__Event_Max = 777 + RPC_ID__Event_Max = 778 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(RPC_ID) } RpcId; @@ -3200,6 +3216,63 @@ struct RpcRespGetCoprocessorFwVersion , 0, 0, 0, 0 } +struct RpcReqSetDhcpDnsStatus +{ + ProtobufCMessage base; + int32_t iface; + int32_t net_link_up; + int32_t dhcp_up; + ProtobufCBinaryData dhcp_ip; + ProtobufCBinaryData dhcp_nm; + ProtobufCBinaryData dhcp_gw; + int32_t dns_up; + ProtobufCBinaryData dns_ip; + int32_t dns_type; +}; +#define RPC__REQ__SET_DHCP_DNS_STATUS__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__set_dhcp_dns_status__descriptor) \ + , 0, 0, 0, {0,NULL}, {0,NULL}, {0,NULL}, 0, {0,NULL}, 0 } + + +struct RpcRespSetDhcpDnsStatus +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__SET_DHCP_DNS_STATUS__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__set_dhcp_dns_status__descriptor) \ + , 0 } + + +struct RpcReqGetDhcpDnsStatus +{ + ProtobufCMessage base; + int32_t iface; +}; +#define RPC__REQ__GET_DHCP_DNS_STATUS__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__get_dhcp_dns_status__descriptor) \ + , 0 } + + +struct RpcRespGetDhcpDnsStatus +{ + ProtobufCMessage base; + int32_t iface; + int32_t net_link_up; + int32_t dhcp_up; + ProtobufCBinaryData dhcp_ip; + ProtobufCBinaryData dhcp_nm; + ProtobufCBinaryData dhcp_gw; + int32_t dns_up; + ProtobufCBinaryData dns_ip; + int32_t dns_type; + int32_t resp; +}; +#define RPC__RESP__GET_DHCP_DNS_STATUS__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__get_dhcp_dns_status__descriptor) \ + , 0, 0, 0, {0,NULL}, {0,NULL}, {0,NULL}, 0, {0,NULL}, 0, 0 } + + struct RpcEventWifiEventNoArgs { ProtobufCMessage base; @@ -3291,6 +3364,25 @@ struct RpcEventStaDisconnected , 0, NULL } +struct RpcEventDhcpDnsStatus +{ + ProtobufCMessage base; + int32_t iface; + int32_t net_link_up; + int32_t dhcp_up; + ProtobufCBinaryData dhcp_ip; + ProtobufCBinaryData dhcp_nm; + ProtobufCBinaryData dhcp_gw; + int32_t dns_up; + ProtobufCBinaryData dns_ip; + int32_t dns_type; + int32_t resp; +}; +#define RPC__EVENT__DHCP_DNS_STATUS__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__event__dhcp_dns_status__descriptor) \ + , 0, 0, 0, {0,NULL}, {0,NULL}, {0,NULL}, 0, {0,NULL}, 0, 0 } + + typedef enum { RPC__PAYLOAD__NOT_SET = 0, RPC__PAYLOAD_REQ_GET_MAC_ADDRESS = 257, @@ -3348,6 +3440,8 @@ typedef enum { RPC__PAYLOAD_REQ_WIFI_GET_BANDMODE = 349, RPC__PAYLOAD_REQ_GET_COPROCESSOR_FWVERSION = 350, RPC__PAYLOAD_REQ_WIFI_SCAN_GET_AP_RECORD = 351, + RPC__PAYLOAD_REQ_SET_DHCP_DNS = 352, + RPC__PAYLOAD_REQ_GET_DHCP_DNS = 353, RPC__PAYLOAD_RESP_GET_MAC_ADDRESS = 513, RPC__PAYLOAD_RESP_SET_MAC_ADDRESS = 514, RPC__PAYLOAD_RESP_GET_WIFI_MODE = 515, @@ -3403,6 +3497,8 @@ typedef enum { RPC__PAYLOAD_RESP_WIFI_GET_BANDMODE = 605, RPC__PAYLOAD_RESP_GET_COPROCESSOR_FWVERSION = 606, RPC__PAYLOAD_RESP_WIFI_SCAN_GET_AP_RECORD = 607, + RPC__PAYLOAD_RESP_SET_DHCP_DNS = 608, + RPC__PAYLOAD_RESP_GET_DHCP_DNS = 609, RPC__PAYLOAD_EVENT_ESP_INIT = 769, RPC__PAYLOAD_EVENT_HEARTBEAT = 770, RPC__PAYLOAD_EVENT_AP_STA_CONNECTED = 771, @@ -3410,7 +3506,8 @@ typedef enum { RPC__PAYLOAD_EVENT_WIFI_EVENT_NO_ARGS = 773, RPC__PAYLOAD_EVENT_STA_SCAN_DONE = 774, RPC__PAYLOAD_EVENT_STA_CONNECTED = 775, - RPC__PAYLOAD_EVENT_STA_DISCONNECTED = 776 + RPC__PAYLOAD_EVENT_STA_DISCONNECTED = 776, + RPC__PAYLOAD_EVENT_DHCP_DNS = 777 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(RPC__PAYLOAD__CASE) } Rpc__PayloadCase; @@ -3489,6 +3586,8 @@ struct Rpc RpcReqWifiGetBandMode *req_wifi_get_bandmode; RpcReqGetCoprocessorFwVersion *req_get_coprocessor_fwversion; RpcReqWifiScanGetApRecord *req_wifi_scan_get_ap_record; + RpcReqSetDhcpDnsStatus *req_set_dhcp_dns; + RpcReqGetDhcpDnsStatus *req_get_dhcp_dns; /* ** Responses * */ @@ -3547,6 +3646,8 @@ struct Rpc RpcRespWifiGetBandMode *resp_wifi_get_bandmode; RpcRespGetCoprocessorFwVersion *resp_get_coprocessor_fwversion; RpcRespWifiScanGetApRecord *resp_wifi_scan_get_ap_record; + RpcRespSetDhcpDnsStatus *resp_set_dhcp_dns; + RpcRespGetDhcpDnsStatus *resp_get_dhcp_dns; /* ** Notifications * */ @@ -3558,6 +3659,7 @@ struct Rpc RpcEventStaScanDone *event_sta_scan_done; RpcEventStaConnected *event_sta_connected; RpcEventStaDisconnected *event_sta_disconnected; + RpcEventDhcpDnsStatus *event_dhcp_dns; }; }; #define RPC__INIT \ @@ -6510,6 +6612,82 @@ RpcRespGetCoprocessorFwVersion * void rpc__resp__get_coprocessor_fw_version__free_unpacked (RpcRespGetCoprocessorFwVersion *message, ProtobufCAllocator *allocator); +/* RpcReqSetDhcpDnsStatus methods */ +void rpc__req__set_dhcp_dns_status__init + (RpcReqSetDhcpDnsStatus *message); +size_t rpc__req__set_dhcp_dns_status__get_packed_size + (const RpcReqSetDhcpDnsStatus *message); +size_t rpc__req__set_dhcp_dns_status__pack + (const RpcReqSetDhcpDnsStatus *message, + uint8_t *out); +size_t rpc__req__set_dhcp_dns_status__pack_to_buffer + (const RpcReqSetDhcpDnsStatus *message, + ProtobufCBuffer *buffer); +RpcReqSetDhcpDnsStatus * + rpc__req__set_dhcp_dns_status__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__set_dhcp_dns_status__free_unpacked + (RpcReqSetDhcpDnsStatus *message, + ProtobufCAllocator *allocator); +/* RpcRespSetDhcpDnsStatus methods */ +void rpc__resp__set_dhcp_dns_status__init + (RpcRespSetDhcpDnsStatus *message); +size_t rpc__resp__set_dhcp_dns_status__get_packed_size + (const RpcRespSetDhcpDnsStatus *message); +size_t rpc__resp__set_dhcp_dns_status__pack + (const RpcRespSetDhcpDnsStatus *message, + uint8_t *out); +size_t rpc__resp__set_dhcp_dns_status__pack_to_buffer + (const RpcRespSetDhcpDnsStatus *message, + ProtobufCBuffer *buffer); +RpcRespSetDhcpDnsStatus * + rpc__resp__set_dhcp_dns_status__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__set_dhcp_dns_status__free_unpacked + (RpcRespSetDhcpDnsStatus *message, + ProtobufCAllocator *allocator); +/* RpcReqGetDhcpDnsStatus methods */ +void rpc__req__get_dhcp_dns_status__init + (RpcReqGetDhcpDnsStatus *message); +size_t rpc__req__get_dhcp_dns_status__get_packed_size + (const RpcReqGetDhcpDnsStatus *message); +size_t rpc__req__get_dhcp_dns_status__pack + (const RpcReqGetDhcpDnsStatus *message, + uint8_t *out); +size_t rpc__req__get_dhcp_dns_status__pack_to_buffer + (const RpcReqGetDhcpDnsStatus *message, + ProtobufCBuffer *buffer); +RpcReqGetDhcpDnsStatus * + rpc__req__get_dhcp_dns_status__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__get_dhcp_dns_status__free_unpacked + (RpcReqGetDhcpDnsStatus *message, + ProtobufCAllocator *allocator); +/* RpcRespGetDhcpDnsStatus methods */ +void rpc__resp__get_dhcp_dns_status__init + (RpcRespGetDhcpDnsStatus *message); +size_t rpc__resp__get_dhcp_dns_status__get_packed_size + (const RpcRespGetDhcpDnsStatus *message); +size_t rpc__resp__get_dhcp_dns_status__pack + (const RpcRespGetDhcpDnsStatus *message, + uint8_t *out); +size_t rpc__resp__get_dhcp_dns_status__pack_to_buffer + (const RpcRespGetDhcpDnsStatus *message, + ProtobufCBuffer *buffer); +RpcRespGetDhcpDnsStatus * + rpc__resp__get_dhcp_dns_status__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__get_dhcp_dns_status__free_unpacked + (RpcRespGetDhcpDnsStatus *message, + ProtobufCAllocator *allocator); /* RpcEventWifiEventNoArgs methods */ void rpc__event__wifi_event_no_args__init (RpcEventWifiEventNoArgs *message); @@ -6662,6 +6840,25 @@ RpcEventStaDisconnected * void rpc__event__sta_disconnected__free_unpacked (RpcEventStaDisconnected *message, ProtobufCAllocator *allocator); +/* RpcEventDhcpDnsStatus methods */ +void rpc__event__dhcp_dns_status__init + (RpcEventDhcpDnsStatus *message); +size_t rpc__event__dhcp_dns_status__get_packed_size + (const RpcEventDhcpDnsStatus *message); +size_t rpc__event__dhcp_dns_status__pack + (const RpcEventDhcpDnsStatus *message, + uint8_t *out); +size_t rpc__event__dhcp_dns_status__pack_to_buffer + (const RpcEventDhcpDnsStatus *message, + ProtobufCBuffer *buffer); +RpcEventDhcpDnsStatus * + rpc__event__dhcp_dns_status__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__event__dhcp_dns_status__free_unpacked + (RpcEventDhcpDnsStatus *message, + ProtobufCAllocator *allocator); /* Rpc methods */ void rpc__init (Rpc *message); @@ -7148,6 +7345,18 @@ typedef void (*RpcReqGetCoprocessorFwVersion_Closure) typedef void (*RpcRespGetCoprocessorFwVersion_Closure) (const RpcRespGetCoprocessorFwVersion *message, void *closure_data); +typedef void (*RpcReqSetDhcpDnsStatus_Closure) + (const RpcReqSetDhcpDnsStatus *message, + void *closure_data); +typedef void (*RpcRespSetDhcpDnsStatus_Closure) + (const RpcRespSetDhcpDnsStatus *message, + void *closure_data); +typedef void (*RpcReqGetDhcpDnsStatus_Closure) + (const RpcReqGetDhcpDnsStatus *message, + void *closure_data); +typedef void (*RpcRespGetDhcpDnsStatus_Closure) + (const RpcRespGetDhcpDnsStatus *message, + void *closure_data); typedef void (*RpcEventWifiEventNoArgs_Closure) (const RpcEventWifiEventNoArgs *message, void *closure_data); @@ -7172,6 +7381,9 @@ typedef void (*RpcEventStaConnected_Closure) typedef void (*RpcEventStaDisconnected_Closure) (const RpcEventStaDisconnected *message, void *closure_data); +typedef void (*RpcEventDhcpDnsStatus_Closure) + (const RpcEventDhcpDnsStatus *message, + void *closure_data); typedef void (*Rpc_Closure) (const Rpc *message, void *closure_data); @@ -7342,6 +7554,10 @@ extern const ProtobufCMessageDescriptor rpc__req__wifi_get_band_mode__descriptor extern const ProtobufCMessageDescriptor rpc__resp__wifi_get_band_mode__descriptor; extern const ProtobufCMessageDescriptor rpc__req__get_coprocessor_fw_version__descriptor; extern const ProtobufCMessageDescriptor rpc__resp__get_coprocessor_fw_version__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__set_dhcp_dns_status__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__set_dhcp_dns_status__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__get_dhcp_dns_status__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__get_dhcp_dns_status__descriptor; extern const ProtobufCMessageDescriptor rpc__event__wifi_event_no_args__descriptor; extern const ProtobufCMessageDescriptor rpc__event__espinit__descriptor; extern const ProtobufCMessageDescriptor rpc__event__heartbeat__descriptor; @@ -7350,6 +7566,7 @@ extern const ProtobufCMessageDescriptor rpc__event__ap__sta_connected__descripto extern const ProtobufCMessageDescriptor rpc__event__sta_scan_done__descriptor; extern const ProtobufCMessageDescriptor rpc__event__sta_connected__descriptor; extern const ProtobufCMessageDescriptor rpc__event__sta_disconnected__descriptor; +extern const ProtobufCMessageDescriptor rpc__event__dhcp_dns_status__descriptor; extern const ProtobufCMessageDescriptor rpc__descriptor; PROTOBUF_C__END_DECLS diff --git a/common/proto/esp_hosted_rpc.proto b/common/proto/esp_hosted_rpc.proto index 0993b495..7640856e 100644 --- a/common/proto/esp_hosted_rpc.proto +++ b/common/proto/esp_hosted_rpc.proto @@ -414,9 +414,12 @@ enum RpcId { Req_WifiScanGetApRecord = 351; //0x15f + Req_SetDhcpDnsStatus = 352; //0x160 + Req_GetDhcpDnsStatus = 353; //0x161 + /* Add new control path command response before Req_Max * and update Req_Max */ - Req_Max = 352; //0x160 + Req_Max = 354; //0x162 /** Response Msgs **/ Resp_Base = 512; @@ -540,9 +543,12 @@ enum RpcId { Resp_WifiScanGetApRecord = 607; + Resp_SetDhcpDnsStatus = 608; + Resp_GetDhcpDnsStatus = 609; + /* Add new control path command response before Resp_Max * and update Resp_Max */ - Resp_Max = 608; + Resp_Max = 610; /** Event Msgs **/ Event_Base = 768; @@ -554,10 +560,11 @@ enum RpcId { Event_StaScanDone = 774; Event_StaConnected = 775; Event_StaDisconnected = 776; + Event_DhcpDnsStatus = 777; /* Add new control path command notification before Event_Max * and update Event_Max */ - Event_Max = 777; + Event_Max = 778; } message wifi_init_config { @@ -1557,6 +1564,43 @@ message Rpc_Resp_GetCoprocessorFwVersion { uint32 patch1 = 4; } +message Rpc_Req_SetDhcpDnsStatus { + int32 iface = 1; + int32 net_link_up = 2; + + int32 dhcp_up = 3; + bytes dhcp_ip = 4; + bytes dhcp_nm = 5; + bytes dhcp_gw = 6; + + int32 dns_up = 7; + bytes dns_ip = 8; + int32 dns_type = 9; +} + +message Rpc_Resp_SetDhcpDnsStatus { + int32 resp = 1; +} + +message Rpc_Req_GetDhcpDnsStatus { + int32 iface = 1; +} + +message Rpc_Resp_GetDhcpDnsStatus { + int32 iface = 1; + int32 net_link_up = 2; + + int32 dhcp_up = 3; + bytes dhcp_ip = 4; + bytes dhcp_nm = 5; + bytes dhcp_gw = 6; + + int32 dns_up = 7; + bytes dns_ip = 8; + int32 dns_type = 9; + int32 resp = 10; +} + /** Event structure **/ message Rpc_Event_WifiEventNoArgs { @@ -1602,6 +1646,21 @@ message Rpc_Event_StaDisconnected { wifi_event_sta_disconnected sta_disconnected = 2; } +message Rpc_Event_DhcpDnsStatus { + int32 iface = 1; + int32 net_link_up = 2; + + int32 dhcp_up = 3; + bytes dhcp_ip = 4; + bytes dhcp_nm = 5; + bytes dhcp_gw = 6; + + int32 dns_up = 7; + bytes dns_ip = 8; + int32 dns_type = 9; + int32 resp = 10; +} + message Rpc { /* msg_type could be req, resp or Event */ RpcType msg_type = 1; @@ -1696,6 +1755,9 @@ message Rpc { Rpc_Req_WifiScanGetApRecord req_wifi_scan_get_ap_record = 351; + Rpc_Req_SetDhcpDnsStatus req_set_dhcp_dns = 352; + Rpc_Req_GetDhcpDnsStatus req_get_dhcp_dns = 353; + /** Responses **/ Rpc_Resp_GetMacAddress resp_get_mac_address = 513; Rpc_Resp_SetMacAddress resp_set_mac_address = 514; @@ -1777,6 +1839,9 @@ message Rpc { Rpc_Resp_WifiScanGetApRecord resp_wifi_scan_get_ap_record = 607; + Rpc_Resp_SetDhcpDnsStatus resp_set_dhcp_dns = 608; + Rpc_Resp_GetDhcpDnsStatus resp_get_dhcp_dns = 609; + /** Notifications **/ Rpc_Event_ESPInit event_esp_init = 769; Rpc_Event_Heartbeat event_heartbeat = 770; @@ -1786,6 +1851,7 @@ message Rpc { Rpc_Event_StaScanDone event_sta_scan_done = 774; Rpc_Event_StaConnected event_sta_connected = 775; Rpc_Event_StaDisconnected event_sta_disconnected = 776; + Rpc_Event_DhcpDnsStatus event_dhcp_dns = 777; } } diff --git a/common/transport/esp_hosted_transport_init.h b/common/transport/esp_hosted_transport_init.h index ef7e5867..dd248f5b 100644 --- a/common/transport/esp_hosted_transport_init.h +++ b/common/transport/esp_hosted_transport_init.h @@ -10,6 +10,8 @@ typedef enum { ESP_OPEN_DATA_PATH, ESP_CLOSE_DATA_PATH, ESP_RESET, + ESP_POWER_SAVE_ON, + ESP_POWER_SAVE_OFF, ESP_MAX_HOST_INTERRUPT, } ESP_HOST_INTERRUPT; diff --git a/common/utils/esp_hosted_cli.c b/common/utils/esp_hosted_cli.c new file mode 100644 index 00000000..f8005c88 --- /dev/null +++ b/common/utils/esp_hosted_cli.c @@ -0,0 +1,448 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + + +#include "esp_hosted_cli.h" +#include "sdkconfig.h" +#include "esp_idf_version.h" + +#include "esp_console.h" + +#ifdef CONFIG_ESP_HOSTED_ENABLED +#include "esp_hosted_config.h" +#include "esp_hosted_power_save.h" +#endif + +#ifdef H_ESP_HOSTED_CLI_ENABLED + +#include +#include +#include +#include + +#ifdef CONFIG_HEAP_TRACING + #include +#endif + + +#include +#include +#include +#include "lwip/sockets.h" + +/* This should be agnostic, later */ +#ifdef CONFIG_ESP_HOSTED_COPROCESSOR + #include "iperf.h" + #include "wifi_cmd.h" + #include "iperf_cmd.h" + #include "ping_cmd.h" +#endif + +static const char *TAG = "esp_cli"; + +static int task_dump_cli_handler(int argc, char *argv[]) +{ + /* Just to go to the next line */ + printf("\n"); +#ifndef CONFIG_FREERTOS_USE_TRACE_FACILITY + printf("%s: To use this utility enable: Component config > FreeRTOS > Kernel > configUSE_TRACEFACILITY\n", TAG); +#else + int num_of_tasks = uxTaskGetNumberOfTasks(); + TaskStatus_t *task_array = calloc(1, num_of_tasks * sizeof(TaskStatus_t)); + if (!task_array) { + ESP_LOGE(TAG, "Memory not allocated for task list."); + return 0; + } + num_of_tasks = uxTaskGetSystemState(task_array, num_of_tasks, NULL); + printf("\tName\tNumber\tPriority\tStackWaterMark\n"); + for (int i = 0; i < num_of_tasks; i++) { + printf("%16s\t%u\t%u\t%u\n", + task_array[i].pcTaskName, + (unsigned) task_array[i].xTaskNumber, + (unsigned) task_array[i].uxCurrentPriority, + (unsigned) task_array[i].usStackHighWaterMark); + } + free(task_array); +#endif + return 0; +} + +static int cpu_dump_cli_handler(int argc, char *argv[]) +{ + /* Just to go to the next line */ + printf("\n"); +#ifndef CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS + printf("%s: To use this utility enable: Component config > FreeRTOS > Kernel > configGENERATE_RUN_TIME_STATS\n", TAG); +#else + char *buf = calloc(1, 2 * 1024); + vTaskGetRunTimeStats(buf); + printf("%s: Run Time Stats:\n%s\n", TAG, buf); + free(buf); +#endif + return 0; +} + +static void print_heap_stats(void) +{ + uint32_t freeSize = esp_get_free_heap_size(); + printf("The available total size of heap:%" PRIu32 "\n", freeSize); + + printf("\tDescription\tInternal\tSPIRAM\n"); + printf("Current Free Memory\t%d\t\t%d\n", + heap_caps_get_free_size(MALLOC_CAP_8BIT) - heap_caps_get_free_size(MALLOC_CAP_SPIRAM), + heap_caps_get_free_size(MALLOC_CAP_SPIRAM)); + printf("Largest Free Block\t%d\t\t%d\n", + heap_caps_get_largest_free_block(MALLOC_CAP_8BIT | MALLOC_CAP_INTERNAL), + heap_caps_get_largest_free_block(MALLOC_CAP_SPIRAM)); + printf("Min. Ever Free Size\t%d\t\t%d\n", + heap_caps_get_minimum_free_size(MALLOC_CAP_8BIT | MALLOC_CAP_INTERNAL), + heap_caps_get_minimum_free_size(MALLOC_CAP_SPIRAM)); +} + +static int mem_dump_cli_handler(int argc, char *argv[]) +{ + /* Just to go to the next line */ + printf("\n"); + print_heap_stats(); + return 0; +} + +#ifdef CONFIG_HEAP_TRACING +static int heap_trace_records; +static heap_trace_record_t *heap_trace_records_buf; +static void cli_heap_trace_start(void) +{ + /* Just to go to the next line */ + printf("\n"); + if (!heap_trace_records_buf) { + heap_trace_records_buf = malloc(heap_trace_records * sizeof(heap_trace_record_t)); + if (!heap_trace_records_buf) { + printf("%s: Failed to allocate records buffer\n", TAG); + return; + } + if (heap_trace_init_standalone(heap_trace_records_buf, heap_trace_records) != ESP_OK) { + printf("%s: Failed to initialise tracing\n", TAG); + goto error1; + } + } + if (heap_trace_start(HEAP_TRACE_LEAKS) != ESP_OK) { + printf("%s: Failed to start heap trace\n", TAG); + goto error2; + } + return; +error2: + heap_trace_init_standalone(NULL, 0); +error1: + free(heap_trace_records_buf); + heap_trace_records_buf = NULL; + return; +} + +static void cli_heap_trace_stop(void) +{ + /* Just to go to the next line */ + printf("\n"); + if (!heap_trace_records_buf) { + printf("%s: Tracing not started?\n", TAG); + return; + } + heap_trace_stop(); + heap_trace_dump(); + heap_trace_init_standalone(NULL, 0); + free(heap_trace_records_buf); + heap_trace_records_buf = NULL; +} +#endif + +static int heap_trace_cli_handler(int argc, char *argv[]) +{ + /* Just to go to the next line */ + printf("\n"); +#ifndef CONFIG_HEAP_TRACING + printf("%s: To use this utility enable: Component config --> Heap memory debugging --> Enable heap tracing\n", TAG); +#else + if (argc < 2) { + printf("%s: Incorrect arguments\n", TAG); + return 0; + } + if (strcmp(argv[1], "start") == 0) { +#define DEFAULT_HEAP_TRACE_RECORDS 200 + if (argc != 3) { + heap_trace_records = DEFAULT_HEAP_TRACE_RECORDS; + } else { + heap_trace_records = atoi(argv[2]); + } + printf("%s: Using a buffer to trace %d records\n", TAG, heap_trace_records); + cli_heap_trace_start(); + } else if (strcmp(argv[1], "stop") == 0) { + cli_heap_trace_stop(); + } else { + printf("%s: Invalid argument:%s:\n", TAG, argv[1]); + } +#endif + return 0; +} + +static int reboot_cli_handler(int argc, char *argv[]) +{ + /* Just to go to the next line */ + printf("\n"); + esp_unregister_shutdown_handler((shutdown_handler_t)esp_wifi_stop); + esp_restart(); + return 0; +} + +static int crash_device_handler(int argc, char** argv) +{ + printf("Crashing the device now...\n"); + + // Writing at invalid address + *(int *) (0x0) = 0; + return ESP_OK; +} + +static int sock_dump_cli_handler(int argc, char *argv[]) +{ + printf("\n"); + int i, ret, used_sockets = 0; + + struct sockaddr_in local_sock, peer_sock; + socklen_t local_sock_len = sizeof(struct sockaddr_in), peer_sock_len = sizeof(struct sockaddr_in); + char local_ip_addr[16], peer_ip_addr[16]; + unsigned int local_port, peer_port; + + int sock_type; + socklen_t sock_type_len; + +#define TOTAL_NUM_SOCKETS MEMP_NUM_NETCONN + printf("sock_fd\tprotocol\tlocal_addr\t\tpeer_addr\n"); + for (i = LWIP_SOCKET_OFFSET; i < LWIP_SOCKET_OFFSET + TOTAL_NUM_SOCKETS; i++) { + memset(&local_sock, 0, sizeof(struct sockaddr_in)); + memset(&peer_sock, 0, sizeof(struct sockaddr_in)); + local_sock_len = sizeof(struct sockaddr); + peer_sock_len = sizeof(struct sockaddr); + memset(local_ip_addr, 0, sizeof(local_ip_addr)); + memset(peer_ip_addr, 0, sizeof(peer_ip_addr)); + local_port = 0; + peer_port = 0; + sock_type = 0; + sock_type_len = sizeof(int); + + ret = getsockname(i, (struct sockaddr *)&local_sock, &local_sock_len); + if (ret >= 0) { + used_sockets++; + inet_ntop(AF_INET, &local_sock.sin_addr, local_ip_addr, sizeof(local_ip_addr)); + local_port = ntohs(local_sock.sin_port); + getsockopt(i, SOL_SOCKET, SO_TYPE, &sock_type, &sock_type_len); + printf("%d\t%d:%s\t%16s:%d", i, sock_type, sock_type == SOCK_STREAM ? "tcp" : sock_type == SOCK_DGRAM ? "udp" : "raw", local_ip_addr, local_port); + + ret = getpeername(i, (struct sockaddr *)&peer_sock, &peer_sock_len); + if (ret >= 0) { + inet_ntop(AF_INET, &peer_sock.sin_addr, peer_ip_addr, sizeof(peer_ip_addr)); + peer_port = ntohs(peer_sock.sin_port); + printf("\t%16s:%d", peer_ip_addr, peer_port); + } + printf("\n"); + } + } + printf("Remaining sockets: %d\n", TOTAL_NUM_SOCKETS - used_sockets); + return 0; +} + +#if defined(H_HOST_PS_ALLOWED) +#ifdef H_ESP_HOSTED_HOST +static int deep_sleep_cli_handler(int argc, char *argv[]) +{ + ESP_LOGI(TAG, "Putting ESP32-P4 into deep sleep..."); + esp_hosted_power_save_start(HOSTED_POWER_SAVE_TYPE_DEEP_SLEEP); + return 0; +} +#endif + +#ifdef CONFIG_ESP_HOSTED_COPROCESSOR +static int wakeup_cli_handler(int argc, char *argv[]) +{ + ESP_LOGI(TAG, "Asking P4 to wake-up..."); + wakeup_host(portMAX_DELAY); + return 0; +} +#endif +#endif + +static esp_console_cmd_t diag_cmds[] = { + { + .command = "crash", + .help = "Crash the device writing at invalid address", + .func = &crash_device_handler, + }, + { + .command = "reboot", + .help = "Reboot the device", + .func = reboot_cli_handler, + }, + { + .command = "mem-dump", + .help = "Prints memory stats", + .func = mem_dump_cli_handler, + }, + { + .command = "task-dump", + .help = "Print task snapshots", + .func = task_dump_cli_handler, + }, + { + .command = "cpu-dump", + .help = "Print CPU consumption data at the moment", + .func = cpu_dump_cli_handler, + }, + { + .command = "heap-trace", + .help = " [trace-buf-size]", + .func = heap_trace_cli_handler, + }, + { + .command = "sock-dump", + .help = "", + .func = sock_dump_cli_handler, + }, + +#if defined(H_HOST_PS_ALLOWED) +#ifdef H_ESP_HOSTED_HOST + { + .command = "deep-sleep", + .help = "Put P4 into deep sleep", + .func = deep_sleep_cli_handler, + }, +#endif +#ifdef CONFIG_ESP_HOSTED_COPROCESSOR + { + .command = "wake-up", + .help = "Wake-up host from deep sleep", + .func = wakeup_cli_handler, + }, +#endif +#endif +}; + +#ifdef CONFIG_ESP_HOSTED_COPROCESSOR + + #if CONFIG_ESP_WIFI_ENABLE_WIFI_TX_STATS || CONFIG_ESP_WIFI_ENABLE_WIFI_RX_STATS + #include "esp_wifi_he.h" + #endif + + #if CONFIG_ESP_WIFI_ENABLE_WIFI_TX_STATS + extern int wifi_cmd_get_tx_statistics(int argc, char **argv); + extern int wifi_cmd_clr_tx_statistics(int argc, char **argv); + #endif + + #if CONFIG_ESP_WIFI_ENABLE_WIFI_RX_STATS + extern int wifi_cmd_get_rx_statistics(int argc, char **argv); + extern int wifi_cmd_clr_rx_statistics(int argc, char **argv); + #endif + +void iperf_hook_show_wifi_stats(iperf_traffic_type_t type, iperf_status_t status) +{ + if (status == IPERF_STARTED) { + #if CONFIG_ESP_WIFI_ENABLE_WIFI_TX_STATS + if (type != IPERF_UDP_SERVER) { + wifi_cmd_clr_tx_statistics(0, NULL); + } + #endif + #if CONFIG_ESP_WIFI_ENABLE_WIFI_RX_STATS + if (type != IPERF_UDP_CLIENT) { + wifi_cmd_clr_rx_statistics(0, NULL); + } + #endif + } + + if (status == IPERF_STOPPED) { + #if CONFIG_ESP_WIFI_ENABLE_WIFI_TX_STATS + if (type != IPERF_UDP_SERVER) { + wifi_cmd_get_tx_statistics(0, NULL); + } + #endif + #if CONFIG_ESP_WIFI_ENABLE_WIFI_RX_STATS + if (type != IPERF_UDP_CLIENT) { + wifi_cmd_get_rx_statistics(0, NULL); + } + #endif + } + +} +#endif + +int esp_cli_register_cmds(void) +{ + int cmds_num = sizeof(diag_cmds) / sizeof(esp_console_cmd_t); + int i; + +#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 0) + /* esp_console_cmd_deregister was added in ESP-IDF v5.4+ */ + const char* remove_cmd = "deep_sleep"; + ESP_LOGI(TAG, "Remove any existing deep_sleep cmd in cli"); + esp_console_cmd_deregister(remove_cmd); +#endif + + for (i = 0; i < cmds_num; i++) { + ESP_LOGI(TAG, "Registering command: %s", diag_cmds[i].command); + esp_console_cmd_register(&diag_cmds[i]); + } + +#ifdef CONFIG_ESP_HOSTED_COPROCESSOR + + app_register_all_wifi_commands(); + app_register_iperf_commands(); + app_register_ping_commands(); + app_register_iperf_hook_func(iperf_hook_show_wifi_stats); +#endif + return 0; +} + + +#ifdef CONFIG_ESP_HOSTED_CLI_NEW_INSTANCE +int esp_hosted_cli_start(void) +{ + static int cli_started; + if (cli_started) { + return 0; + } + + esp_console_repl_t *repl = NULL; + esp_console_repl_config_t repl_config = ESP_CONSOLE_REPL_CONFIG_DEFAULT(); + #ifdef CONFIG_ESP_HOSTED_COPROCESSOR + repl_config.prompt = "coprocessor> "; + #elif defined(H_ESP_HOSTED_HOST) + repl_config.prompt = "host> "; + #endif + esp_console_register_help_command(); + esp_cli_register_cmds(); + + #if defined(CONFIG_ESP_CONSOLE_UART_DEFAULT) || defined(CONFIG_ESP_CONSOLE_UART_CUSTOM) + esp_console_dev_uart_config_t hw_config = ESP_CONSOLE_DEV_UART_CONFIG_DEFAULT(); + ESP_ERROR_CHECK(esp_console_new_repl_uart(&hw_config, &repl_config, &repl)); + + #elif defined(CONFIG_ESP_CONSOLE_USB_CDC) + esp_console_dev_usb_cdc_config_t hw_config = ESP_CONSOLE_DEV_CDC_CONFIG_DEFAULT(); + ESP_ERROR_CHECK(esp_console_new_repl_usb_cdc(&hw_config, &repl_config, &repl)); + + #elif defined(CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG) + esp_console_dev_usb_serial_jtag_config_t hw_config = ESP_CONSOLE_DEV_USB_SERIAL_JTAG_CONFIG_DEFAULT(); + ESP_ERROR_CHECK(esp_console_new_repl_usb_serial_jtag(&hw_config, &repl_config, &repl)); + #else + #error Unsupported console type + #endif + ESP_ERROR_CHECK(esp_console_start_repl(repl)); + cli_started = 1; + return 0; +} +#else +int esp_hosted_cli_start(void) +{ + return esp_cli_register_cmds(); +} +#endif + +#endif /*ESP_HOSTED_CLI_ENABLED*/ diff --git a/common/utils/esp_hosted_cli.h b/common/utils/esp_hosted_cli.h new file mode 100644 index 00000000..e604064e --- /dev/null +++ b/common/utils/esp_hosted_cli.h @@ -0,0 +1,33 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef _ESP_HOSTED_CLI_H_ +#define _ESP_HOSTED_CLI_H_ + +#include "sdkconfig.h" + +/* host */ +#ifdef CONFIG_ESP_HOSTED_ENABLED + #include "esp_hosted_config.h" + #include "power_save_drv.h" +#endif + +/* coprocessor */ +#ifdef CONFIG_ESP_HOSTED_COPROCESSOR + + #ifdef CONFIG_ESP_HOSTED_CLI_ENABLED + #include "host_power_save.h" + #define H_ESP_HOSTED_CLI_ENABLED 1 + #endif /*CONFIG_ESP_HOSTED_CLI_ENABLED*/ + +#endif /*CONFIG_ESP_HOSTED_COPROCESSOR*/ + + +#ifdef H_ESP_HOSTED_CLI_ENABLED + int esp_hosted_cli_start(void); +#endif + +#endif /* _ESP_HOSTED_CLI_H_ */ diff --git a/docs/esp32_p4_function_ev_board.md b/docs/esp32_p4_function_ev_board.md index 9061d1f6..da8bc362 100644 --- a/docs/esp32_p4_function_ev_board.md +++ b/docs/esp32_p4_function_ev_board.md @@ -266,8 +266,13 @@ idf.py set-target esp32c6 idf.py menuconfig ``` -3. Under **Example Configuration**, ensure that the Hosted transport - selected is `SDIO`. +3. Navigate and ensure SDIO is enabled. By default it should already be enabled. + ``` + Example Configuration + └── Bus Config in between Host and Co-processor + └── Transport layer + └── Select "SDIO" + ``` 4. Build the firmware: diff --git a/docs/feature_host_deep_sleep.md b/docs/feature_host_deep_sleep.md new file mode 100644 index 00000000..df899597 --- /dev/null +++ b/docs/feature_host_deep_sleep.md @@ -0,0 +1,385 @@ +# Host Deep Sleep Wake-up (ESP-Hosted MCU) + +## Overview + +The Host Deep Sleep feature allows the host MCU to enter a low-power deep sleep mode while the ESP slave handles network continuity. This enables efficient power usage in battery-operated devices. + +Key features include: +- Host sleeps, network stays online +- Slave intelligently wakes host +- Power state synchronization between host and slave +- Seamless network handover during sleep +- Integration with Network Split + +> Deep sleep currently supported on SDIO transport only. +--- +## Configuration + +### Host Configuration + +In host example project, run `idf.py menuconfig` and Enable `Allow host to power save` +``` +# Host side kconfig +Component config + └── ESP-Hosted config + └── [*] Allow host to power save <== Enable This + └── [*] Allow host to enter deep sleep. ─┐ + ├── () Host Wakeup GPIO │ + └── Host Wakeup GPIO Level ├── Default config (No change) + └── (X) High ─┘ +``` +> [!NOTE] +> 1. The wakeup GPIO number must be an RTC-capable GPIO. +> 2. Deep Sleep is currently only available for the SDIO transport for ESP hosts. + +### Slave Configuration + +In slave project, run `idf.py menuconfig` and Enable `Allow host to power save` + +``` +# Slave side kconfig +Example Configuration +└── [*] Allow host to power save <== Enable This + └── [*] Allow host to enter deep sleep. ─┐ + ├── () Host wakeup GPIO │ + └── Host Wakeup GPIO Level ├── Default config (No change) + └── (X) High ─┘ +``` + +--- +## High Level Understanding + +The power management system coordinates between the host MCU and ESP slave to ensure smooth transitions between active and sleep states. + +```mermaid +sequenceDiagram + participant Host as Host MCU + participant Slave as ESP Slave + participant Network as Network/WiFi + + Host->>Slave: Power Save Start Signal + Note over Slave: Slave takes over network operations + Host->>Host: Enter Deep Sleep + + Network->>Slave: Incoming packets + Slave->>Slave: Packet needs host + Slave->>Host: Trigger Wake-up GPIO + Host->>Host: Exit Deep Sleep + Host->>Slave: Power Save Stop Signal + Slave->>Slave: Resume packet delivery +``` + +### Wake-up Mechanisms + +The slave initiates a wake-up by toggling a dedicated GPIO line to the host when one of the following triggers occurs: + +* Periodic Timer-based Wake-up +* CLI-based Wake-up +* Network-triggered Wake-up + +```mermaid +flowchart TD + A[💤 Host in Deep Sleep] --> B{⏱️ Trigger on Slave?} + B -->|🕒 Timer Expired| C[🔔 Send Wake-up GPIO] + B -->|🧑‍💻 CLI Command| C + B -->|🌐 Network Packet| C + C --> D[⚡ Host Wakes Up] + D --> E[▶️ Resume Operations] + + classDef sleep fill:#f5f5f5,stroke:#888,font-size:14px; + classDef event fill:#e3f2fd,stroke:#2196f3,font-size:14px; + classDef action fill:#e0f7e9,stroke:#4caf50,font-size:14px; + + class A sleep + class B,C event + class D,E action +``` + +### State transitions + +- Active → PreparingSleep: Host prepares (notifies slave, configures GPIO) +- PreparingSleep → Sleeping: Host sleeps; slave handles network +- Sleeping → Waking: Slave triggers wakeup on event (timer/packet/CLI) +- Waking → Active: Host re-inits system, syncs with slave + +```mermaid +stateDiagram + [*] --> Active + Active --> PreparingSleep: 🥱 start_host_power_save() + PreparingSleep --> Sleeping: 😴 Deep Sleep Entry + Sleeping --> Waking: 😳 Wake Event + Waking --> Active: 😊 Slave sync-up complete + +``` +--- +## Low Level Understanding + +### 💤 Host Enters Deep Sleep + +When the host application initiates deep sleep, the following function sequence occurs to safely coordinate with the slave. + +```mermaid +sequenceDiagram + participant App as Host Application (or CLI) + participant PowerSaveDrv as power_save_drv.c + participant TransportDrv as transport_drv.c + participant Slave as Slave MCU + + App->>PowerSaveDrv: start_host_power_save() + PowerSaveDrv->>TransportDrv: notify_slave_host_power_save_start() + TransportDrv->>Slave: bus_inform_slave_host_power_save_start() + Slave-->>TransportDrv: Ack + TransportDrv-->>PowerSaveDrv: Ack + Note right of TransportDrv: Slave is now aware
host is going to sleep. + PowerSaveDrv->>PowerSaveDrv: hold_slave_reset_gpio_pre_deep_sleep() + Note right of PowerSaveDrv: Prevents slave from resetting. + PowerSaveDrv->>PowerSaveDrv: _h_config_host_power_save_hal_impl() + Note right of PowerSaveDrv: Configures wakeup GPIO. + PowerSaveDrv->>PowerSaveDrv: _h_start_host_power_save_hal_impl() + Note right of PowerSaveDrv: Host enters deep sleep. +``` + +### Host Wake-up and Synchronization Sequence + +The slave wakes the host using a GPIO signal. Upon rebooting, the host detects the wake-up reason and synchronizes with the slave through a handshake mechanism, after which normal operation resumes. + +```mermaid +sequenceDiagram + participant SlaveApp as Slave
(App/CLI) + participant SlavePS as Slave
(host_power_save.c) + participant HostHW as Host MCU
(Hardware) + participant HostTransport as Host
(transport_drv.c) + participant HostPS as Host
(power_save_drv.c) + + SlaveApp->>SlavePS: wakeup_host() + SlavePS->>SlavePS: wakeup_host_mandate() + SlavePS->>HostHW: Toggles Wake-up GPIO + Note over SlavePS: Now blocks, waiting
for wakeup_sem. + + HostHW-->>HostTransport: Host reboots from deep sleep + Note over HostTransport: esp_hosted_init() is called,
which calls transport_drv_reconfigure(). + + HostTransport->>HostPS: is_host_reboot_due_to_deep_sleep() + HostPS-->>HostTransport: Returns true + + HostTransport->>HostPS: stop_host_power_save() + HostPS->>HostTransport: notify_slave_host_power_save_stop() + HostTransport-->>SlavePS: Sends "Power Save Off" event
via transport layer. + + Note over SlavePS: host_power_save_alert() handles the event. + SlavePS->>SlavePS: Gives wakeup_sem. + Note over SlavePS: Handshake complete. + SlavePS-->>SlaveApp: wakeup_host_mandate() returns,
unblocking the application. + + Note over HostTransport, SlavePS: System is now fully active. + SlavePS->>HostTransport: Resume packet delivery for Network Packet Wake-up case +``` +--- +## APIs + +### Sources + +#### Host Files + +- `host/api/include/esp_hosted_power_save.h`: enums and APIs +- `host/drivers/power_save/power_save_drv.c`: deep sleep logic +- `host/drivers/transport/transport_drv.c`: slave communication +- `host/drivers/transport/{sdio,spi}/...`: bus specific deep sleep hooks + +#### Slave Files + +- `slave/main/host_power_save.h`: slave enums and APIs +- `slave/main/host_power_save.c`: wake-up management +- `slave/main/lwip_filter.c`: packet inspection (for wake-up) + +### Functions + +#### Host APIs + +```c +/* Power save driver APIs (host side) */ +int esp_hosted_power_save_enabled(void); +int esp_hosted_power_save_init(void); +int esp_hosted_woke_from_deep_sleep(void); +int esp_hosted_power_saving(void); +int esp_hosted_power_save_start(esp_hosted_power_save_type_t power_save_type); +int esp_hosted_power_save_timer_start(uint32_t time_ms, int timer_type); +int esp_hosted_power_save_timer_stop(void); + +/* Retain GPIO during sleep */ +int hold_slave_reset_gpio_pre_deep_sleep(void); +int release_slave_reset_gpio_post_wakeup(void); +``` + +#### Slave APIs + + +```c +/* Slave-side power save APIs */ +int host_power_save_init(void (*host_wakeup_callback)(void)); +int is_host_power_saving(void); +int is_host_wakeup_needed(interface_buffer_handle_t *buf_handle); +int wakeup_host_mandate(uint32_t timeout_ms); +int wakeup_host(uint32_t timeout_ms); +int host_power_save_alert(uint32_t ps_evt); +``` + +--- + +## CLI Demo + +### Enter Deep Sleep + +1. **Enable CLI**: Ensure `ESP_HOSTED_CLI_ENABLED` is enabled in the host's `menuconfig`. +2. **Start the CLI**: The CLI starts automatically when `esp_hosted_init()` is called. +3. **Enter the command**: At the `host>` prompt, type the `deep_sleep` command. + +```sh +host> deep_sleep +I (11147) esp_cli: Putting ESP32-P4 into deep sleep... +I (11147) H_power_save: Inform slave: Host PS start +I (11148) H_SDIO_DRV: Inform slave, host power save is started +ESP-ROM:esp32p4... +... +``` +This command calls `start_host_power_save()`, which signals the slave and puts the host into deep sleep. The host will not execute any further code until it is woken up. + +### Wake-up from Slave + +The host can be woken up by the slave under several conditions, such as receiving a specific network packet. On the slave, a CLI command `wake-up` is available for demonstration. + +1. **Network Packet Wake-up**: By default, the slave is configured to wake the host upon receiving certain network traffic (e.g., on priority ports like SSH, or MQTT messages containing a "wakeup-host" payload). +2. **Manual Wake-up (Demo)**: Use the `wake-up` command in the slave's terminal. + +**Slave Log:** +```sh +coprocessor> wake-up +I (13730) esp_cli: Asking P4 to wake-up... +I (13730) host_ps: WAKE UP Host!!!!! +I (13741) host_ps: Cleared wakeup gpio, IO2 +... +I (15543) host_ps: Wakeup semaphore given +I (15543) host_ps: host woke up +``` + +**Host Log (After Wake-up):** +```sh +... +I (430) H_power_save: Wakeup using deep sleep +I (432) transport: Waiting for power save to be off +I (1137) H_SDIO_DRV: Host woke up from deep sleep +... +``` +When the host wakes up, checks boot-up reason, and re-establish slave connectivity automatically. + +--- + +## Coding Example + +While the CLI provides a easy demo, most applications would trigger sleep - wake ups using deep sleep APIs. + +### Host example + +The example below shows how to check wake-up reason and enter deep sleep programmatically: + +```c +#include "esp_hosted.h" +#include "esp_hosted_power_save.h" + +static const char* TAG = "HOST_APP"; + +void app_main(void) +{ + /* First, check the reason for this boot cycle */ + if (esp_hosted_woke_from_deep_sleep()) { + ESP_LOGI(TAG, "Host woke up from deep sleep."); + } + + esp_hosted_init(); + esp_hosted_power_save_init(); + + /* + * The call to esp_hosted_init() automatically handles informing the + * slave that the host has woken up. No explicit call to + * stop_host_power_save() is needed here. + */ + + ESP_LOGI(TAG, "Application running. Entering deep sleep in 15 seconds."); + vTaskDelay(pdMS_TO_TICKS(15000)); + + ESP_LOGI(TAG, "Initiating deep sleep now."); + /* This function does not return. The host will enter deep sleep + * and reboot from app_main upon wake-up. */ + esp_hosted_power_save_start(HOSTED_POWER_SAVE_TYPE_DEEP_SLEEP); +} +``` + +### Slave Example + +The slave wakes the host automatically for host destined network packets. +The example below demonstrates manual wake-up using timer + +```c +#include "host_power_save.h" + +static const char* TAG = "SLAVE_APP"; + +void wake_host_task(void *pvParameters) +{ + /* Wait for a while before attempting to wake the host */ + vTaskDelay(pdMS_TO_TICKS(30000)); + + ESP_LOGI(TAG, "Checking host power state."); + + /* Check if the host is actually sleeping */ + if (is_host_power_saving()) { + ESP_LOGI(TAG, "Host is in power save mode. Sending wake-up signal."); + + /* + * Attempt to wake the host. The timeout (in ms) is for the + * handshake to complete after the host wakes up. + */ + int ret = wakeup_host(5000); + if (ret == 0) { + ESP_LOGI(TAG, "Host wake-up process initiated successfully."); + } else { + ESP_LOGE(TAG, "Failed to wake up host. Error: %d", ret); + } + } else { + ESP_LOGI(TAG, "Host is already awake."); + } + + vTaskDelete(NULL); +} + +void app_main(void) +{ + /* + * Initialize slave-side components... + * host_power_save_init() is called internally by the ESP-Hosted component. + */ + + /* Create a task to wake up the host */ + xTaskCreate(wake_host_task, "wake_host_task", 2048, NULL, 5, NULL); +} +``` + +--- + +## Troubleshooting + +1. **Wake-up Failures** + - Check GPIO configuration and physical connections. + - Verify `CONFIG_ESP_HOSTED_HOST_WAKEUP_GPIO` is set correctly on both host and slave. + - Check that the GPIO level configuration (High/Low) matches on both devices. + +2. **Conflicting GPIOs** + - Ensure you use Host Wakeup GPIO different from the GPIOs used in communication bus underlying + +3. **Network Connectivity Loss** + - Verify the slave maintains its WiFi connection while the host is asleep. + - Check the Network Split configuration if enabled. + +4. **Transport Synchronization Issues** + - Ensure the correct power state signals are being sent. After wake-up, the host should log that it is informing the slave it has woken up. + diff --git a/docs/feature_network_split.md b/docs/feature_network_split.md new file mode 100644 index 00000000..d7d7f79a --- /dev/null +++ b/docs/feature_network_split.md @@ -0,0 +1,229 @@ +# Network Split Feature for ESP-Hosted MCU + + +| Supported Slave Targets | ESP32-C5 | ESP32-C6 | ESP32-S2 | ESP32-S3 | +|------------------------|:--------:|:--------:|:--------:|:--------:| + + +## Overview + +**Network Split** allows the **Host MCU** and **ESP32 Slave** to share one IP address and split traffic between them. + +It is especially useful when the host sleeps — the ESP continues handling selected network activity (e.g., MQTT, DNS). + +**Highlights:** + +* Port-based traffic routing +* Shared IP address +* Packet filtering and DPI +* Wake-on-packet support (e.g., MQTT) +* Power management integration +* **Supported Slave Targets:** ESP32-C5/C6/S2/S3 only + +--- + +## Configuration + +### On the Slave + +1. Run: + + ```bash + idf.py menuconfig + ``` +2. Enable: + + ``` + Example Configuration + └── [*] Enable Network Split + ``` +3. (Optional) Customize under `Network Split Configuration`: + + ``` + ├── Host Static Port Forwarding + │ ├── TCP dst: 22,80,443,8080,8554 + │ └── UDP dst: 53,123 + ├── Port Ranges + │ ├── Host: 49152–61439 + │ └── Slave: 61440–65535 + └── Default Destination: slave / host / both + ``` + +### On the Host + +1. Run: + + ```bash + idf.py menuconfig + ``` +2. Enable: + + ``` + Component config + └── ESP-Hosted config + └── [*] Enable Network Split + ``` +3. Match **port ranges** with the slave: + + ``` + └── LWIP port config + ├── Host LWIP: 49152–61439 + └── Slave LWIP: 61440–65535 + ``` +4. Integrate into your app: + ```c + #include "esp_hosted.h" + + void app_main(void) { + esp_hosted_init(); + // Host now shares IP and splits traffic with slave + } + ``` + +> [!TIP] +> +> The port ranges on the host and slave must match perfectly to avoid routing issues. + +--- + +## Packet Routing Decisions + +All incoming network packets arriving at the slave device are evaluated by the logic in `lwip_filter.c`. For each packet received from the WiFi router, the slave determines whether it should be processed locally, forwarded to the host, or handled by both network stacks, according to defined routing rules. + +| Packet Type | Destination Port Condition | Routed To | +|--------------------------------------- |--------------------------------------------|------------------------------------| +| Broadcast, ARP Request, ICMP Request | N/A | Slave Network Stack | +| ARP Response, ICMP Response | N/A | Both Network Stacks | +| DHCP | Any | Both Network Stacks | +| TCP/UDP | Listed in Static Port Forwarding | Host Network Stack | +| TCP/UDP | Within Host Port Range | Host Network Stack | +| TCP/UDP | Within Slave Port Range | Slave Network Stack | +| TCP/UDP | Port 5001 (iperf) | Both Network Stacks | +| MQTT (Port 1883) | Payload contains `"wakeup-host"` | Host Network Stack (Wake-up) | +| Others | Not matched by any rule | Default Destination (as configured)| +| Packet destined for Host Network Stack | Host is in deep sleep | Dropped (unless wake-up packet) | + +> [!TIP] +> +> The packet routing logic is fully customizable within the `lwip_filter.c` file, allowing users to adapt the network management behavior to their specific requirements. + +The following diagrams illustrate the decision-making process for packet routing in the Network Split feature. + +```mermaid +flowchart TD + A[New Packet] --> B{MAC Broadcast?} + B -->|Yes| C[Send to
Slave Network Stack] + B -->|No| D{IP Packet?} + D -->|Yes| E[Protocol Processing] + D -->|No| F[ARP Processing] + + E --> G{TCP?} + E --> H{UDP?} + E --> I{ICMP?} + + classDef slaveNode fill:#d9f7be,stroke:#389e0d + classDef hostNode fill:#d6e4ff,stroke:#1d39c4 + classDef invalidNode fill:#ffccc7,stroke:#cf1322 + classDef bothNode fill:#fff1b8,stroke:#d4b106 + + class C slaveNode +``` + +#### TCP/UDP Packet Processing + +Specific case of UDP/TCP packet processing is illustrated below + +```mermaid +flowchart TD + G[TCP/UDP Packet] --> G1{Port config in
Host Static Forwarding List?
} + G1 -->|Yes| K[Send to
Host Network Stack] + + G1 -->|No| G2{Dest Port in
Slave Range?} + G2 -->|Yes| C[Send to
Slave Network Stack] + + G2 -->|No| G3{Dest Port in
Host Range?} + G3 -->|Yes| G4{Host Awake?} + G4 -->|Yes| K + G4 -->|No| G5{MQTT with
wakeup signal?} + G5 -->|Yes| K + G5 -->|No| L[Drop Packet] + + G3 -->|No| D[Send to
Default Network Stack
from config] + + classDef slaveNode fill:#d9f7be,stroke:#389e0d + classDef hostNode fill:#d6e4ff,stroke:#1d39c4 + classDef invalidNode fill:#ffccc7,stroke:#cf1322 + classDef defaultNode fill:#fff,stroke:#333 + + class K hostNode + class C slaveNode + class L invalidNode + class D defaultNode +``` + +--- + +## Internals + +### Core Routing API + +```c +// lwip_filter.c +hosted_l2_bridge filter_and_route_packet(void *frame_data, uint16_t frame_length); + +typedef enum { + SLAVE_LWIP_BRIDGE = 0, + HOST_LWIP_BRIDGE = 1, + BOTH_LWIP_BRIDGE = 2, + INVALID_BRIDGE = 3 +} hosted_l2_bridge; +``` + +### Wake-Up on MQTT + +```c +static bool host_mqtt_wakeup_triggered(const void *payload, uint16_t length) { + return memcmp(payload, "wakeup-host", strlen("wakeup-host")) == 0; +} +``` + +--- + +## Extras + +### Use Same Port on Both Sides? + +Yes — port 5001 (iperf) is a working example. Others can be added similarly in `lwip_filter.c`. + +--- + +## Files of Interest + +| Purpose | File | +| ---------------- | -------------------------------------- | +| Routing logic | `slave/main/lwip_filter.c` | +| Host-side config | `host/api/include/esp_hosted_config.h` | +| Slave control | `slave/main/interface.h` | +| API entry point | `esp_hosted_init()` | + + +## Debugging & Tips + +### Checklist + +- Port ranges must not overlap +- Logs from `lwip_filter.c` help debug routing +- Static forwarding can override port ranges +- Only supported on ESP32-C5/C6/S2/S3 + +### Debug Logging + +Enable verbose logs in `lwip_filter.c`: + +```c +esp_log_level_set("lwip_filter", ESP_LOG_VERBOSE); +``` + +Wi-Fi sniffer to inspect raw traffic (if really needed) + +--- diff --git a/docs/sdio.md b/docs/sdio.md index 219d02d7..3e065324 100644 --- a/docs/sdio.md +++ b/docs/sdio.md @@ -238,11 +238,11 @@ There are four steps to flash the ESP-Hosted co-processor firmware: ``` #### 6.2.1 Transport config - - Navigate to "Example configuration" -> "Transport layer" - - Select "SDIO" + - Navigate to "Example configuration" -> "Bus Config in between Host and Co-processor" + - In "Transport layer", select "SDIO" #### 6.2.2 Any other config - - Optionally, Configure any additional SDIO-specific settings like co-processor GPIOs, SDIO Mode, SDIO timing,etc. + - Optionally, Configure any additional SDIO-specific settings in the "SDIO Configuration" menu, like co-processor GPIOs, SDIO Mode, SDIO timing,etc. ###### Generated files - Generated config files are (1) `sdkconfig` file and (2) internal `sdkconfig.h` file. @@ -591,7 +591,7 @@ In SDIO streaming mode, the host receives SDIO data from the co-processor in one For Host systems with high heap memory usage, you can reduce the amount of heap memory used by ESP-Hosted for buffers, at the cost of reduced throughput, by adjusting the number of Tx buffers used by the co-processor. -**On the co-processor**: run `idf.py menuconfig` ---> `Example Configuration` ---> `SDIO Configuration` and adjust `SDIO Tx queue size`. The default queue size is `20`. +**On the co-processor**: run `idf.py menuconfig` -> `Example Configuration` -> `Bus Config in between Host and Co-processor` -> `SDIO Configuration` and adjust `SDIO Tx queue size`. The default queue size is `20`. The table below shows the effect of changing `SDIO Tx queue size` on throughput and memory usage on the Host. The throughput numbers are obtained by using the RawTP option in ESP-Hosted to send / receive raw SDIO data. @@ -616,7 +616,14 @@ From the table above, throughput is more or less stagnant on and above Rx queue To reduce memory usage on the co-processor, you can reduce the number of buffers the co-processor uses to receive data from the Host. -**On the co-processor**: run `idf.py menuconfig` ---> `Example Configuration` ---> `SDIO Configuration` and adjust `SDIO Rx queue size`. The default queue size is `20`. +**On the co-processor**: run `idf.py menuconfig` + +``` +Example Configuration +└── Bus Config in between Host and Co-processor + └── SDIO Configuration + └── SDIO Rx queue size (default: 20) +``` Reducing the number of Rx buffers on the co-processor can affect the Tx throughput from the Host if the number of Rx buffers is set to a small value. @@ -624,11 +631,26 @@ Reducing the number of Rx buffers on the co-processor can affect the Tx throughp For mimimal memory usage with a lower throughput, you can switch to Packet Mode. To do this: -- on the co-processor: run `idf.py menuconfig` ---> `Example Configuration` ---> `SDIO Configuration` and untoggle `Enable SDIO Streaming Mode` -- on the host: run `idf.py menuconfig` ---> `Component config` ---> `ESP-Hosted config` ---> `Hosted SDIO COnfiguration` ---> `SDIO Receive Optimization` and select either `No optimization` or `Always Rx Max Packet size`. `Always Rx Max Packet size` will give a slightly higher throughput. - +- on the co-processor: run `idf.py menuconfig` + + ``` + Example Configuration + └── Bus Config in between Host and Co-processor + └── SDIO Configuration + └── Enable SDIO Streaming Mode [Deselect this option] + ``` + +- on the host: run `idf.py menuconfig` + ``` + ── Component config + └── ESP-Hosted config + └── Hosted SDIO Configuration + └── SDIO Receive Optimization + ├── No optimization + ├── Always Rx Max Packet size [Change to this, preferably] + └── Use Streaming Mode [Default was selected, change to one of above] + ``` In Packet Mode, the host uses `2 * 1536` or `3,072` bytes of memory for Rx buffers. - - with `No optimization`, Rx Raw Throughput is 33.0 Mbits/s - with `Always Rx Max Packet size`, Rx Raw Throughput is 33.2 Mbits/s diff --git a/docs/spi_full_duplex.md b/docs/spi_full_duplex.md index a1c0a525..1c6def6f 100644 --- a/docs/spi_full_duplex.md +++ b/docs/spi_full_duplex.md @@ -271,13 +271,17 @@ idf.py menuconfig ``` #### 7.2.1 Transport config - - Navigate to "Example configuration" -> "Transport layer" - - Select "SPI Full-duplex" - +Navigate & change to following +``` +-- "Example configuration" + └── "Bus Config in between Host and Co-processor" + └── "Transport layer" + └── Select "SPI Full-duplex" +``` #### 7.2.2 Any other config Optionally, configure any additional SPI-specific settings under "SPI Full-duplex" - Set the GPIO pins for SPI signals (MOSI, MISO, CLK, CS), Handshake, Data Ready, Reset - - Configure SPI mode (0, 1, 2, or 3) + - Configure SPI mode (1, 2, or 3) - Set the SPI clock frequency - Checksum enable/disable (Checksum is recommended to be enabled as spi hardware doesn't have any error detection) @@ -447,7 +451,7 @@ If you happen to have both, host and co-processor as same ESP chipset type (for ESP-Hosted-MCU host configurations are available under "Component config" -> "ESP-Hosted config" 1. Select "SPI Full-duplex" as the transport layer 2. Change co chipset to connect to under "slave chipset to be used" - 3. Optionally, configure SPI-specific settings like + 3. Optionally, configure SPI-specific settings in the "SPI Configuration" menu, like: - SPI Clock Freq (MHz) - SPI Mode - SPI Pins diff --git a/docs/spi_half_duplex.md b/docs/spi_half_duplex.md index ed35b539..14d538c7 100644 --- a/docs/spi_half_duplex.md +++ b/docs/spi_half_duplex.md @@ -507,11 +507,15 @@ idf.py menuconfig ``` #### 9.2.1 Transport config - - Navigate to "Example configuration" -> "Transport layer" - - Select "SPI Half-duplex" - +Navigate and change as following: + ``` + Example Configuration + └── Bus Config in between Host and Co-processor + └── Transport layer + └── Select "SPI Half-duplex" + ``` #### 9.2.2 Any other config - - Optionally, Configure any additional SPI-specific settings like co-processor GPIOs, SPI mode, etc. + - Optionally, Configure any additional SPI-specific settings in the "SPI Half-duplex Configuration" menu, like co-processor GPIOs, SPI mode, etc. ###### Generated files - Generated config files are (1) `sdkconfig` file and (2) internal `sdkconfig.h` file. @@ -692,7 +696,7 @@ Now that ESP-IDF is set up, follow these steps to prepare the host: 1. Select "SPI Half-duplex" as the transport layer 2. Change co-processor chipset to connect to under "Slave chipset to be used" 3. Change Number of data lines to 2 or 4 based on the co-processor using "SPI Half-duplex Configuration" -> "Num Data Lines to use" - 4. Optionally, Configure SPI-specific settings like + 4. Optionally, Configure SPI-specific settings in the "SPI Half-duplex Configuration" menu, like: - SPI Clock Freq (MHz) - SPI Mode - SPI Host GPIO Pins diff --git a/docs/uart.md b/docs/uart.md index 0caa6eaf..915483c6 100644 --- a/docs/uart.md +++ b/docs/uart.md @@ -147,11 +147,11 @@ idf.py menuconfig ``` #### 6.2.1 Transport config - - Navigate to "Example configuration" -> "Transport layer" - - Select "UART" + - Navigate to "Example configuration" -> "Bus Config in between Host and Co-processor" + - In "Transport layer", select "UART" #### 6.2.2 Any other config - - Optionally, Configure any additional UART-specific settings like TX and Rx GPIOs, baud rate, etc. + - Optionally, Configure any additional UART-specific settings in the "UART Configuration" menu, like TX and Rx GPIOs, baud rate, etc. ###### Generated files - Generated config files are (1) `sdkconfig` file and (2) internal `sdkconfig.h` file. @@ -327,7 +327,7 @@ Now that ESP-IDF is set up, follow these steps to prepare the host: ESP-Hosted-MCU host configurations are available under "Component config" -> "ESP-Hosted config" 1. Select "UART" as the transport layer 2. Change co-processor chipset to connect to under "Slave chipset to be used" - 3. Optionally, Configure UART-specific settings like + 3. Optionally, Configure UART-specific settings in the "UART Configuration" menu, like: - UART Tx and Rx GPIOs - UART baud rate - UART Checksum Enable/Disable (Checksum is recommended to be enabled) diff --git a/host/api/include/esp_hosted_config.h b/host/api/include/esp_hosted_config.h index f4e796d8..7bae907c 100644 --- a/host/api/include/esp_hosted_config.h +++ b/host/api/include/esp_hosted_config.h @@ -1,5 +1,5 @@ /* -* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD +* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -10,14 +10,26 @@ #include "sdkconfig.h" #include "esp_task.h" +#ifdef CONFIG_ESP_HOSTED_ENABLED + #define H_ESP_HOSTED_HOST 1 +#endif + +#ifdef CONFIG_ESP_HOSTED_DFLT_TASK_STACK + #define H_ESP_HOSTED_DFLT_TASK_STACK CONFIG_ESP_HOSTED_DFLT_TASK_STACK +#endif + #define H_TRANSPORT_NONE 0 #define H_TRANSPORT_SDIO 1 #define H_TRANSPORT_SPI_HD 2 #define H_TRANSPORT_SPI 3 #define H_TRANSPORT_UART 4 +#ifdef CONFIG_ESP_HOSTED_SDIO_HOST_INTERFACE + #include "driver/sdmmc_host.h" +#endif + #ifdef CONFIG_ESP_HOSTED_UART_HOST_INTERFACE -#include "hal/uart_types.h" + #include "hal/uart_types.h" #endif /* This file is to tune the main ESP-Hosted configurations. @@ -27,36 +39,39 @@ #define H_GPIO_LOW 0 #define H_GPIO_HIGH 1 +#define H_ENABLE 1 +#define H_DISABLE 0 + enum { - H_GPIO_INTR_DISABLE = 0, /*!< Disable GPIO interrupt */ - H_GPIO_INTR_POSEDGE = 1, /*!< GPIO interrupt type : rising edge */ - H_GPIO_INTR_NEGEDGE = 2, /*!< GPIO interrupt type : falling edge */ - H_GPIO_INTR_ANYEDGE = 3, /*!< GPIO interrupt type : both rising and falling edge */ - H_GPIO_INTR_LOW_LEVEL = 4, /*!< GPIO interrupt type : input low level trigger */ - H_GPIO_INTR_HIGH_LEVEL = 5, /*!< GPIO interrupt type : input high level trigger */ - H_GPIO_INTR_MAX, + H_GPIO_INTR_DISABLE = 0, /*!< Disable GPIO interrupt */ + H_GPIO_INTR_POSEDGE = 1, /*!< GPIO interrupt type : rising edge */ + H_GPIO_INTR_NEGEDGE = 2, /*!< GPIO interrupt type : falling edge */ + H_GPIO_INTR_ANYEDGE = 3, /*!< GPIO interrupt type : both rising and falling edge */ + H_GPIO_INTR_LOW_LEVEL = 4, /*!< GPIO interrupt type : input low level trigger */ + H_GPIO_INTR_HIGH_LEVEL = 5, /*!< GPIO interrupt type : input high level trigger */ + H_GPIO_INTR_MAX, }; #if CONFIG_SLAVE_IDF_TARGET_ESP32 -#define H_SLAVE_TARGET_ESP32 1 + #define H_SLAVE_TARGET_ESP32 1 #elif CONFIG_SLAVE_IDF_TARGET_ESP32S2 -#define H_SLAVE_TARGET_ESP32S2 1 + #define H_SLAVE_TARGET_ESP32S2 1 #elif CONFIG_SLAVE_IDF_TARGET_ESP32C3 -#define H_SLAVE_TARGET_ESP32C3 1 + #define H_SLAVE_TARGET_ESP32C3 1 #elif CONFIG_SLAVE_IDF_TARGET_ESP32S3 -#define H_SLAVE_TARGET_ESP32S3 1 + #define H_SLAVE_TARGET_ESP32S3 1 #elif CONFIG_SLAVE_IDF_TARGET_ESP32C2 -#define H_SLAVE_TARGET_ESP32C2 1 + #define H_SLAVE_TARGET_ESP32C2 1 #elif CONFIG_SLAVE_IDF_TARGET_ESP32C6 -#define H_SLAVE_TARGET_ESP32C6 1 + #define H_SLAVE_TARGET_ESP32C6 1 #elif CONFIG_SLAVE_IDF_TARGET_ESP32C5 -#define H_SLAVE_TARGET_ESP32C5 1 + #define H_SLAVE_TARGET_ESP32C5 1 #else -#error "Unknown Slave Target" + #error "Unknown Slave Target" #endif #if CONFIG_ESP_HOSTED_USE_MEMPOOL -#define H_USE_MEMPOOL 1 + #define H_USE_MEMPOOL 1 #endif #define H_MAX_SYNC_RPC_REQUESTS CONFIG_ESP_HOSTED_MAX_SIMULTANEOUS_SYNC_RPC_REQUESTS @@ -65,254 +80,254 @@ enum { #undef H_TRANSPORT_IN_USE #ifdef CONFIG_ESP_HOSTED_SPI_HOST_INTERFACE -#define H_TRANSPORT_IN_USE H_TRANSPORT_SPI -/* -------------------------- SPI Master Config start ---------------------- */ -/* -Pins in use. The SPI Master can use the GPIO mux, -so feel free to change these if needed. -*/ + #define H_TRANSPORT_IN_USE H_TRANSPORT_SPI + /* -------------------------- SPI Master Config start ---------------------- */ + /* Pins in use. The SPI Master can use the GPIO mux, + so feel free to change these if needed. + */ -/* SPI config */ + /* SPI config */ -#ifdef CONFIG_ESP_HOSTED_HS_ACTIVE_LOW - #define H_HANDSHAKE_ACTIVE_HIGH 0 -#else - /* Default HS: Active High */ - #define H_HANDSHAKE_ACTIVE_HIGH 1 -#endif + #ifdef CONFIG_ESP_HOSTED_HS_ACTIVE_LOW + #define H_HANDSHAKE_ACTIVE_HIGH 0 + #else + /* Default HS: Active High */ + #define H_HANDSHAKE_ACTIVE_HIGH 1 + #endif -#ifdef CONFIG_ESP_HOSTED_DR_ACTIVE_LOW - #define H_DATAREADY_ACTIVE_HIGH 0 -#else - /* Default DR: Active High */ - #define H_DATAREADY_ACTIVE_HIGH 1 -#endif + #ifdef CONFIG_ESP_HOSTED_DR_ACTIVE_LOW + #define H_DATAREADY_ACTIVE_HIGH 0 + #else + /* Default DR: Active High */ + #define H_DATAREADY_ACTIVE_HIGH 1 + #endif -#if H_HANDSHAKE_ACTIVE_HIGH - #define H_HS_VAL_ACTIVE H_GPIO_HIGH - #define H_HS_VAL_INACTIVE H_GPIO_LOW - #define H_HS_INTR_EDGE H_GPIO_INTR_POSEDGE -#else - #define H_HS_VAL_ACTIVE H_GPIO_LOW - #define H_HS_VAL_INACTIVE H_GPIO_HIGH - #define H_HS_INTR_EDGE H_GPIO_INTR_NEGEDGE -#endif + #if H_HANDSHAKE_ACTIVE_HIGH + #define H_HS_VAL_ACTIVE H_GPIO_HIGH + #define H_HS_VAL_INACTIVE H_GPIO_LOW + #define H_HS_INTR_EDGE H_GPIO_INTR_POSEDGE + #else + #define H_HS_VAL_ACTIVE H_GPIO_LOW + #define H_HS_VAL_INACTIVE H_GPIO_HIGH + #define H_HS_INTR_EDGE H_GPIO_INTR_NEGEDGE + #endif -#if H_DATAREADY_ACTIVE_HIGH - #define H_DR_VAL_ACTIVE H_GPIO_HIGH - #define H_DR_VAL_INACTIVE H_GPIO_LOW - #define H_DR_INTR_EDGE H_GPIO_INTR_POSEDGE -#else - #define H_DR_VAL_ACTIVE H_GPIO_LOW - #define H_DR_VAL_INACTIVE H_GPIO_HIGH - #define H_DR_INTR_EDGE H_GPIO_INTR_NEGEDGE -#endif + #if H_DATAREADY_ACTIVE_HIGH + #define H_DR_VAL_ACTIVE H_GPIO_HIGH + #define H_DR_VAL_INACTIVE H_GPIO_LOW + #define H_DR_INTR_EDGE H_GPIO_INTR_POSEDGE + #else + #define H_DR_VAL_ACTIVE H_GPIO_LOW + #define H_DR_VAL_INACTIVE H_GPIO_HIGH + #define H_DR_INTR_EDGE H_GPIO_INTR_NEGEDGE + #endif -#define H_GPIO_HANDSHAKE_Port NULL -#define H_GPIO_HANDSHAKE_Pin CONFIG_ESP_HOSTED_SPI_GPIO_HANDSHAKE -#define H_GPIO_DATA_READY_Port NULL -#define H_GPIO_DATA_READY_Pin CONFIG_ESP_HOSTED_SPI_GPIO_DATA_READY + #define H_GPIO_HANDSHAKE_Port NULL + #define H_GPIO_HANDSHAKE_Pin CONFIG_ESP_HOSTED_SPI_GPIO_HANDSHAKE + #define H_GPIO_DATA_READY_Port NULL + #define H_GPIO_DATA_READY_Pin CONFIG_ESP_HOSTED_SPI_GPIO_DATA_READY -#define H_GPIO_MOSI_Port NULL -#define H_GPIO_MOSI_Pin CONFIG_ESP_HOSTED_SPI_GPIO_MOSI -#define H_GPIO_MISO_Port NULL -#define H_GPIO_MISO_Pin CONFIG_ESP_HOSTED_SPI_GPIO_MISO -#define H_GPIO_SCLK_Port NULL -#define H_GPIO_SCLK_Pin CONFIG_ESP_HOSTED_SPI_GPIO_CLK -#define H_GPIO_CS_Port NULL -#define H_GPIO_CS_Pin CONFIG_ESP_HOSTED_SPI_GPIO_CS + #define H_GPIO_MOSI_Port NULL + #define H_GPIO_MOSI_Pin CONFIG_ESP_HOSTED_SPI_GPIO_MOSI + #define H_GPIO_MISO_Port NULL + #define H_GPIO_MISO_Pin CONFIG_ESP_HOSTED_SPI_GPIO_MISO + #define H_GPIO_SCLK_Port NULL + #define H_GPIO_SCLK_Pin CONFIG_ESP_HOSTED_SPI_GPIO_CLK + #define H_GPIO_CS_Port NULL + #define H_GPIO_CS_Pin CONFIG_ESP_HOSTED_SPI_GPIO_CS -#define H_SPI_TX_Q CONFIG_ESP_HOSTED_SPI_TX_Q_SIZE -#define H_SPI_RX_Q CONFIG_ESP_HOSTED_SPI_RX_Q_SIZE + #define H_SPI_TX_Q CONFIG_ESP_HOSTED_SPI_TX_Q_SIZE + #define H_SPI_RX_Q CONFIG_ESP_HOSTED_SPI_RX_Q_SIZE -#define H_SPI_MODE CONFIG_ESP_HOSTED_SPI_MODE -#define H_SPI_INIT_CLK_MHZ CONFIG_ESP_HOSTED_SPI_CLK_FREQ + #define H_SPI_MODE CONFIG_ESP_HOSTED_SPI_MODE + #define H_SPI_FD_CLK_MHZ CONFIG_ESP_HOSTED_SPI_CLK_FREQ -/* -------------------------- SPI Master Config end ------------------------ */ + /* -------------------------- SPI Master Config end ------------------------ */ #endif #ifdef CONFIG_ESP_HOSTED_SDIO_HOST_INTERFACE -#define H_TRANSPORT_IN_USE H_TRANSPORT_SDIO -/* -------------------------- SDIO Host Config start ----------------------- */ + #define H_TRANSPORT_IN_USE H_TRANSPORT_SDIO + /* -------------------------- SDIO Host Config start ----------------------- */ -#ifdef CONFIG_SOC_SDMMC_USE_GPIO_MATRIX -#define H_SDIO_SOC_USE_GPIO_MATRIX -#endif - -#define H_SDIO_CLOCK_FREQ_KHZ CONFIG_ESP_HOSTED_SDIO_CLOCK_FREQ_KHZ -#define H_SDIO_BUS_WIDTH CONFIG_ESP_HOSTED_SDIO_BUS_WIDTH -#define H_SDMMC_HOST_SLOT CONFIG_ESP_HOSTED_SDIO_SLOT - -#ifdef H_SDIO_SOC_USE_GPIO_MATRIX - #define H_SDIO_PIN_CLK CONFIG_ESP_HOSTED_SDIO_PIN_CLK - #define H_SDIO_PIN_CMD CONFIG_ESP_HOSTED_SDIO_PIN_CMD - #define H_SDIO_PIN_D0 CONFIG_ESP_HOSTED_SDIO_PIN_D0 - #define H_SDIO_PIN_D1 CONFIG_ESP_HOSTED_SDIO_PIN_D1 - #if (H_SDIO_BUS_WIDTH == 4) - #define H_SDIO_PIN_D2 CONFIG_ESP_HOSTED_SDIO_PIN_D2 - #define H_SDIO_PIN_D3 CONFIG_ESP_HOSTED_SDIO_PIN_D3 - #else - #define H_SDIO_PIN_D2 -1 - #define H_SDIO_PIN_D3 -1 + #ifdef CONFIG_SOC_SDMMC_USE_GPIO_MATRIX + #define H_SDIO_SOC_USE_GPIO_MATRIX #endif -#else - #define H_SDIO_PIN_CLK -1 - #define H_SDIO_PIN_CMD -1 - #define H_SDIO_PIN_D0 -1 - #define H_SDIO_PIN_D1 -1 - #if (H_SDIO_BUS_WIDTH == 4) - #define H_SDIO_PIN_D2 -1 - #define H_SDIO_PIN_D3 -1 + + #define H_SDIO_CLOCK_FREQ_KHZ CONFIG_ESP_HOSTED_SDIO_CLOCK_FREQ_KHZ + #define H_SDIO_BUS_WIDTH CONFIG_ESP_HOSTED_SDIO_BUS_WIDTH + #define H_SDMMC_HOST_SLOT CONFIG_ESP_HOSTED_SDIO_SLOT + + #ifdef H_SDIO_SOC_USE_GPIO_MATRIX + #define H_SDIO_PIN_CLK CONFIG_ESP_HOSTED_SDIO_PIN_CLK + #define H_SDIO_PIN_CMD CONFIG_ESP_HOSTED_SDIO_PIN_CMD + #define H_SDIO_PIN_D0 CONFIG_ESP_HOSTED_SDIO_PIN_D0 + #define H_SDIO_PIN_D1 CONFIG_ESP_HOSTED_SDIO_PIN_D1 + #if (H_SDIO_BUS_WIDTH == 4) + #define H_SDIO_PIN_D2 CONFIG_ESP_HOSTED_SDIO_PIN_D2 + #define H_SDIO_PIN_D3 CONFIG_ESP_HOSTED_SDIO_PIN_D3 + #else + #define H_SDIO_PIN_D2 -1 + #define H_SDIO_PIN_D3 -1 + #endif #else - #define H_SDIO_PIN_D2 -1 - #define H_SDIO_PIN_D3 -1 + #define H_SDIO_PIN_CLK -1 + #define H_SDIO_PIN_CMD -1 + #define H_SDIO_PIN_D0 -1 + #define H_SDIO_PIN_D1 -1 + #if (H_SDIO_BUS_WIDTH == 4) + #define H_SDIO_PIN_D2 -1 + #define H_SDIO_PIN_D3 -1 + #else + #define H_SDIO_PIN_D2 -1 + #define H_SDIO_PIN_D3 -1 + #endif #endif -#endif -#define H_SDIO_TX_Q CONFIG_ESP_HOSTED_SDIO_TX_Q_SIZE -#define H_SDIO_RX_Q CONFIG_ESP_HOSTED_SDIO_RX_Q_SIZE + #define H_SDIO_TX_Q CONFIG_ESP_HOSTED_SDIO_TX_Q_SIZE + #define H_SDIO_RX_Q CONFIG_ESP_HOSTED_SDIO_RX_Q_SIZE -#define H_SDIO_CHECKSUM CONFIG_ESP_HOSTED_SDIO_CHECKSUM + #define H_SDIO_CHECKSUM CONFIG_ESP_HOSTED_SDIO_CHECKSUM -#define H_SDIO_HOST_STREAMING_MODE 1 -#define H_SDIO_ALWAYS_HOST_RX_MAX_TRANSPORT_SIZE 2 -#define H_SDIO_OPTIMIZATION_RX_NONE 3 + #define H_SDIO_HOST_STREAMING_MODE 1 + #define H_SDIO_ALWAYS_HOST_RX_MAX_TRANSPORT_SIZE 2 + #define H_SDIO_OPTIMIZATION_RX_NONE 3 -#ifdef CONFIG_ESP_HOSTED_SDIO_OPTIMIZATION_RX_STREAMING_MODE - #define H_SDIO_HOST_RX_MODE H_SDIO_HOST_STREAMING_MODE -#elif defined(CONFIG_ESP_HOSTED_SDIO_OPTIMIZATION_RX_MAX_SIZE) - #define H_SDIO_HOST_RX_MODE H_SDIO_ALWAYS_HOST_RX_MAX_TRANSPORT_SIZE -#else - /* Use this if unsure */ - #define H_SDIO_HOST_RX_MODE H_SDIO_OPTIMIZATION_RX_NONE -#endif + #ifdef CONFIG_ESP_HOSTED_SDIO_OPTIMIZATION_RX_STREAMING_MODE + #define H_SDIO_HOST_RX_MODE H_SDIO_HOST_STREAMING_MODE + #elif defined(CONFIG_ESP_HOSTED_SDIO_OPTIMIZATION_RX_MAX_SIZE) + #define H_SDIO_HOST_RX_MODE H_SDIO_ALWAYS_HOST_RX_MAX_TRANSPORT_SIZE + #else + /* Use this if unsure */ + #define H_SDIO_HOST_RX_MODE H_SDIO_OPTIMIZATION_RX_NONE + #endif -// Pad transfer len for host operation -#define H_SDIO_TX_LEN_TO_TRANSFER(x) ((x + 3) & (~3)) -#define H_SDIO_RX_LEN_TO_TRANSFER(x) ((x + 3) & (~3)) - -/* Do Block Mode only transfers - * - * When enabled, SDIO only uses block mode transfers for higher - * throughput. Data lengths are padded to multiples of ESP_BLOCK_SIZE. - * - * This is safe for the SDIO slave: - * - for Host Tx: slave will ignore extra data sent by Host - * - for Host Rx: slave will send extra 0 data, ignored by Host - */ -#define H_SDIO_TX_BLOCK_ONLY_XFER (1) -#define H_SDIO_RX_BLOCK_ONLY_XFER (1) - -// workarounds for some SDIO transfer errors that may occur -#if 0 -/* Below workarounds could be enabled for non-ESP MCUs to test first - * Once everything is stable, can disable workarounds and test again - * */ -#define H_SDIO_TX_LIMIT_XFER_SIZE_WORKAROUND // limit transfer to one ESP_BLOCK_SIZE at a time -#define H_SDIO_RX_LIMIT_XFER_SIZE_WORKDAROUND // limit transfer to one ESP_BLOCK_SIZE at a time -#endif + // Pad transfer len for host operation + #define H_SDIO_TX_LEN_TO_TRANSFER(x) ((x + 3) & (~3)) + #define H_SDIO_RX_LEN_TO_TRANSFER(x) ((x + 3) & (~3)) + + /* Do Block Mode only transfers + * + * When enabled, SDIO only uses block mode transfers for higher + * throughput. Data lengths are padded to multiples of ESP_BLOCK_SIZE. + * + * This is safe for the SDIO slave: + * - for Host Tx: slave will ignore extra data sent by Host + * - for Host Rx: slave will send extra 0 data, ignored by Host + */ + #define H_SDIO_TX_BLOCK_ONLY_XFER (1) + #define H_SDIO_RX_BLOCK_ONLY_XFER (1) + + // workarounds for some SDIO transfer errors that may occur + #if 0 + /* Below workarounds could be enabled for non-ESP MCUs to test first + * Once everything is stable, can disable workarounds and test again + * */ + #define H_SDIO_TX_LIMIT_XFER_SIZE_WORKAROUND // limit transfer to one ESP_BLOCK_SIZE at a time + #define H_SDIO_RX_LIMIT_XFER_SIZE_WORKDAROUND // limit transfer to one ESP_BLOCK_SIZE at a time + #endif -#if defined(H_SDIO_TX_LIMIT_XFER_SIZE_WORKAROUND) -#define H_SDIO_TX_BLOCKS_TO_TRANSFER(x) (1) -#else -#define H_SDIO_TX_BLOCKS_TO_TRANSFER(x) (x / ESP_BLOCK_SIZE) -#endif + #if defined(H_SDIO_TX_LIMIT_XFER_SIZE_WORKAROUND) + #define H_SDIO_TX_BLOCKS_TO_TRANSFER(x) (1) + #else + #define H_SDIO_TX_BLOCKS_TO_TRANSFER(x) (x / ESP_BLOCK_SIZE) + #endif -#if defined(H_SDIO_RX_LIMIT_XFER_SIZE_WORKDAROUND) -#define H_SDIO_RX_BLOCKS_TO_TRANSFER(x) (1) -#else -#define H_SDIO_RX_BLOCKS_TO_TRANSFER(x) (x / ESP_BLOCK_SIZE) -#endif + #if defined(H_SDIO_RX_LIMIT_XFER_SIZE_WORKDAROUND) + #define H_SDIO_RX_BLOCKS_TO_TRANSFER(x) (1) + #else + #define H_SDIO_RX_BLOCKS_TO_TRANSFER(x) (x / ESP_BLOCK_SIZE) + #endif -/* -------------------------- SDIO Host Config end ------------------------- */ + /* -------------------------- SDIO Host Config end ------------------------- */ #endif #ifdef CONFIG_ESP_HOSTED_SPI_HD_HOST_INTERFACE -#define H_TRANSPORT_IN_USE H_TRANSPORT_SPI_HD -/* -------------------------- SPI_HD Host Config start ----------------------- */ + #define H_TRANSPORT_IN_USE H_TRANSPORT_SPI_HD + /* -------------------------- SPI_HD Host Config start ----------------------- */ -#define H_SPI_HD_HOST_INTERFACE 1 + #define H_SPI_HD_HOST_INTERFACE 1 -enum { - H_SPI_HD_CONFIG_2_DATA_LINES, - H_SPI_HD_CONFIG_4_DATA_LINES, -}; + enum { + H_SPI_HD_CONFIG_2_DATA_LINES, + H_SPI_HD_CONFIG_4_DATA_LINES, + }; -#if CONFIG_ESP_HOSTED_SPI_HD_DR_ACTIVE_HIGH - #define H_SPI_HD_DATAREADY_ACTIVE_HIGH 1 -#else - #define H_SPI_HD_DATAREADY_ACTIVE_HIGH 0 -#endif + #if CONFIG_ESP_HOSTED_SPI_HD_DR_ACTIVE_HIGH + #define H_SPI_HD_DATAREADY_ACTIVE_HIGH 1 + #else + #define H_SPI_HD_DATAREADY_ACTIVE_HIGH 0 + #endif -#if H_SPI_HD_DATAREADY_ACTIVE_HIGH - #define H_SPI_HD_DR_VAL_ACTIVE H_GPIO_HIGH - #define H_SPI_HD_DR_VAL_INACTIVE H_GPIO_LOW - #define H_SPI_HD_DR_INTR_EDGE H_GPIO_INTR_POSEDGE -#else - #define H_SPI_HD_DR_VAL_ACTIVE H_GPIO_LOW - #define H_SPI_HD_DR_VAL_INACTIVE H_GPIO_HIGH - #define H_SPI_HD_DR_INTR_EDGE H_GPIO_INTR_NEGEDGE -#endif + #if H_SPI_HD_DATAREADY_ACTIVE_HIGH + #define H_SPI_HD_DR_VAL_ACTIVE H_GPIO_HIGH + #define H_SPI_HD_DR_VAL_INACTIVE H_GPIO_LOW + #define H_SPI_HD_DR_INTR_EDGE H_GPIO_INTR_POSEDGE + #else + #define H_SPI_HD_DR_VAL_ACTIVE H_GPIO_LOW + #define H_SPI_HD_DR_VAL_INACTIVE H_GPIO_HIGH + #define H_SPI_HD_DR_INTR_EDGE H_GPIO_INTR_NEGEDGE + #endif -#define H_SPI_HD_HOST_NUM_DATA_LINES CONFIG_ESP_HOSTED_SPI_HD_INTERFACE_NUM_DATA_LINES + #define H_SPI_HD_HOST_NUM_DATA_LINES CONFIG_ESP_HOSTED_SPI_HD_INTERFACE_NUM_DATA_LINES -#define H_SPI_HD_PIN_D0 CONFIG_ESP_HOSTED_SPI_HD_GPIO_D0 -#define H_SPI_HD_PIN_D1 CONFIG_ESP_HOSTED_SPI_HD_GPIO_D1 -#if (CONFIG_ESP_HOSTED_SPI_HD_INTERFACE_NUM_DATA_LINES == 4) -#define H_SPI_HD_PIN_D2 CONFIG_ESP_HOSTED_SPI_HD_GPIO_D2 -#define H_SPI_HD_PIN_D3 CONFIG_ESP_HOSTED_SPI_HD_GPIO_D3 -#else -#define H_SPI_HD_PIN_D2 -1 -#define H_SPI_HD_PIN_D3 -1 -#endif -#define H_SPI_HD_PIN_CS CONFIG_ESP_HOSTED_SPI_HD_GPIO_CS -#define H_SPI_HD_PIN_CLK CONFIG_ESP_HOSTED_SPI_HD_GPIO_CLK -#define H_SPI_HD_GPIO_DATA_READY_Port NULL -#define H_SPI_HD_PIN_DATA_READY CONFIG_ESP_HOSTED_SPI_HD_GPIO_DATA_READY + #define H_SPI_HD_PIN_D0 CONFIG_ESP_HOSTED_SPI_HD_GPIO_D0 + #define H_SPI_HD_PIN_D1 CONFIG_ESP_HOSTED_SPI_HD_GPIO_D1 + #if (CONFIG_ESP_HOSTED_SPI_HD_INTERFACE_NUM_DATA_LINES == 4) + #define H_SPI_HD_PIN_D2 CONFIG_ESP_HOSTED_SPI_HD_GPIO_D2 + #define H_SPI_HD_PIN_D3 CONFIG_ESP_HOSTED_SPI_HD_GPIO_D3 + #else + #define H_SPI_HD_PIN_D2 -1 + #define H_SPI_HD_PIN_D3 -1 + #endif -#define H_SPI_HD_CLK_MHZ CONFIG_ESP_HOSTED_SPI_HD_CLK_FREQ -#define H_SPI_HD_MODE CONFIG_ESP_HOSTED_SPI_HD_MODE -#define H_SPI_HD_TX_QUEUE_SIZE CONFIG_ESP_HOSTED_SPI_HD_TX_Q_SIZE -#define H_SPI_HD_RX_QUEUE_SIZE CONFIG_ESP_HOSTED_SPI_HD_RX_Q_SIZE + #define H_SPI_HD_PIN_CS CONFIG_ESP_HOSTED_SPI_HD_GPIO_CS + #define H_SPI_HD_PIN_CLK CONFIG_ESP_HOSTED_SPI_HD_GPIO_CLK + #define H_SPI_HD_GPIO_DATA_READY_Port NULL + #define H_SPI_HD_PIN_DATA_READY CONFIG_ESP_HOSTED_SPI_HD_GPIO_DATA_READY -#define H_SPI_HD_CHECKSUM CONFIG_ESP_HOSTED_SPI_HD_CHECKSUM + #define H_SPI_HD_CLK_MHZ CONFIG_ESP_HOSTED_SPI_HD_CLK_FREQ + #define H_SPI_HD_MODE CONFIG_ESP_HOSTED_SPI_HD_MODE + #define H_SPI_HD_TX_QUEUE_SIZE CONFIG_ESP_HOSTED_SPI_HD_TX_Q_SIZE + #define H_SPI_HD_RX_QUEUE_SIZE CONFIG_ESP_HOSTED_SPI_HD_RX_Q_SIZE -#define H_SPI_HD_NUM_COMMAND_BITS 8 -#define H_SPI_HD_NUM_ADDRESS_BITS 8 -#define H_SPI_HD_NUM_DUMMY_BITS 8 + #define H_SPI_HD_CHECKSUM CONFIG_ESP_HOSTED_SPI_HD_CHECKSUM + + #define H_SPI_HD_NUM_COMMAND_BITS 8 + #define H_SPI_HD_NUM_ADDRESS_BITS 8 + #define H_SPI_HD_NUM_DUMMY_BITS 8 /* -------------------------- SPI_HD Host Config end ------------------------- */ #else -#define H_SPI_HD_HOST_INTERFACE 0 + #define H_SPI_HD_HOST_INTERFACE 0 #endif #ifdef CONFIG_ESP_HOSTED_UART_HOST_INTERFACE -#define H_TRANSPORT_IN_USE H_TRANSPORT_UART -/* -------------------------- UART Host Config start ------------------------- */ - -#define H_UART_HOST_TRANSPORT 1 - -#define H_UART_PORT CONFIG_ESP_HOSTED_UART_PORT -#define H_UART_NUM_DATA_BITS CONFIG_ESP_HOSTED_UART_NUM_DATA_BITS -#define H_UART_PARITY CONFIG_ESP_HOSTED_UART_PARITY -#define H_UART_START_BITS 1 -#define H_UART_STOP_BITS CONFIG_ESP_HOSTED_UART_STOP_BITS -#define H_UART_FLOWCTRL UART_HW_FLOWCTRL_DISABLE -#define H_UART_CLK_SRC UART_SCLK_DEFAULT - -#define H_UART_CHECKSUM CONFIG_ESP_HOSTED_UART_CHECKSUM -#define H_UART_BAUD_RATE CONFIG_ESP_HOSTED_UART_BAUDRATE -#define H_UART_TX_PIN CONFIG_ESP_HOSTED_UART_PIN_TX -#define H_UART_RX_PIN CONFIG_ESP_HOSTED_UART_PIN_RX -#define H_UART_TX_QUEUE_SIZE CONFIG_ESP_HOSTED_UART_TX_Q_SIZE -#define H_UART_RX_QUEUE_SIZE CONFIG_ESP_HOSTED_UART_RX_Q_SIZE - -/* -------------------------- UART Host Config end ------------------------- */ + #define H_TRANSPORT_IN_USE H_TRANSPORT_UART + /* -------------------------- UART Host Config start ------------------------- */ + + #define H_UART_HOST_TRANSPORT 1 + + #define H_UART_PORT CONFIG_ESP_HOSTED_UART_PORT + #define H_UART_NUM_DATA_BITS CONFIG_ESP_HOSTED_UART_NUM_DATA_BITS + #define H_UART_PARITY CONFIG_ESP_HOSTED_UART_PARITY + #define H_UART_START_BITS 1 + #define H_UART_STOP_BITS CONFIG_ESP_HOSTED_UART_STOP_BITS + #define H_UART_FLOWCTRL UART_HW_FLOWCTRL_DISABLE + #define H_UART_CLK_SRC UART_SCLK_DEFAULT + + #define H_UART_CHECKSUM CONFIG_ESP_HOSTED_UART_CHECKSUM + #define H_UART_BAUD_RATE CONFIG_ESP_HOSTED_UART_BAUDRATE + #define H_UART_TX_PIN CONFIG_ESP_HOSTED_UART_PIN_TX + #define H_UART_RX_PIN CONFIG_ESP_HOSTED_UART_PIN_RX + #define H_UART_TX_QUEUE_SIZE CONFIG_ESP_HOSTED_UART_TX_Q_SIZE + #define H_UART_RX_QUEUE_SIZE CONFIG_ESP_HOSTED_UART_RX_Q_SIZE + + /* -------------------------- UART Host Config end ------------------------- */ #else -#define H_UART_HOST_TRANSPORT 0 + #define H_UART_HOST_TRANSPORT 0 #endif /* Generic reset pin config */ @@ -335,6 +350,69 @@ enum { #define H_RESET_VAL_INACTIVE H_GPIO_HIGH #endif +/* --------------------- Common slave reset strategy ------------------- */ + +#if defined(CONFIG_ESP_HOSTED_SLAVE_RESET_ON_EVERY_HOST_BOOTUP) + /* Always reset the slave when host boots up + * This ensures a clean transport state and prevents any inconsistent states, + * but causes the slave to reboot every time the host boots up + */ + #define H_SLAVE_RESET_ON_EVERY_HOST_BOOTUP 1 + #define H_SLAVE_RESET_ONLY_IF_NECESSARY 0 +#elif defined(CONFIG_ESP_HOSTED_SLAVE_RESET_ONLY_IF_NECESSARY) + /* Only reset the slave if initialization fails + * This reduces slave reboots but assumes the slave interface is in a consistent state. + * If initialization fails, the host will assume the slave is in an inconsistent + * or deinitialized state and will reset it. + */ + #define H_SLAVE_RESET_ON_EVERY_HOST_BOOTUP 0 + #define H_SLAVE_RESET_ONLY_IF_NECESSARY 1 +#else + /* Default to always reset for backward compatibility */ + #define H_SLAVE_RESET_ON_EVERY_HOST_BOOTUP 1 + #define H_SLAVE_RESET_ONLY_IF_NECESSARY 0 +#endif + +#if !defined(CONFIG_ESP_SDIO_HOST_INTERFACE) && H_SLAVE_RESET_ONLY_IF_NECESSARY +#error "Invalid combination. H_SLAVE_RESET_ONLY_IF_NECESSARY is only supported for SDIO host interface, for now" +#endif + +/* Auto-restart on communication failure */ +#ifdef CONFIG_ESP_HOSTED_HOST_RESTART_NO_COMMUNICATION_WITH_SLAVE + /* Enable host auto-restart if communication with slave is lost + * When enabled, the host will reset itself to recover the connection + * if the slave becomes non-responsive for the configured timeout period. + * This acts as a safeguard in case the slave does not issue the first event. + */ + #define H_HOST_RESTART_NO_COMMUNICATION_WITH_SLAVE 1 +#else + /* Disable host auto-restart on communication failure */ + #define H_HOST_RESTART_NO_COMMUNICATION_WITH_SLAVE 0 +#endif + +#if defined(CONFIG_ESP_HOSTED_HOST_RESTART_NO_COMMUNICATION_WITH_SLAVE_TIMEOUT) + /* Timeout in seconds before host restarts due to no communication + * Maximum time that the host will wait for a response from the slave + * before triggering an automatic restart. + */ + #define H_HOST_RESTART_NO_COMMUNICATION_WITH_SLAVE_TIMEOUT CONFIG_ESP_HOSTED_HOST_RESTART_NO_COMMUNICATION_WITH_SLAVE_TIMEOUT +#else + /* Default timeout value (-1 means disabled) */ + #define H_HOST_RESTART_NO_COMMUNICATION_WITH_SLAVE_TIMEOUT -1 +#endif + +#if H_HOST_RESTART_NO_COMMUNICATION_WITH_SLAVE && H_HOST_RESTART_NO_COMMUNICATION_WITH_SLAVE_TIMEOUT == -1 + #error "Invalid combination. Host Restart No Communication With Slave is enabled but timeout is not configured" +#endif + +#if H_SLAVE_RESET_ON_EVERY_HOST_BOOTUP && H_SLAVE_RESET_ONLY_IF_NECESSARY + #error "Invalid combination. Reset on every bootup and reset only if necessary cannot be enabled at the same time" +#endif + +#if H_SLAVE_RESET_ON_EVERY_HOST_BOOTUP && H_HOST_RESTART_NO_COMMUNICATION_WITH_SLAVE + #error "Invalid combination. H_HOST_RESTART_NO_COMMUNICATION_WITH_SLAVE should not be logically required if H_SLAVE_RESET_ONLY_IF_NECESSARY is enabled" +#endif + #define TIMEOUT_PSERIAL_RESP 30 @@ -358,21 +436,73 @@ enum { #define H_TEST_RAW_TP CONFIG_ESP_HOSTED_RAW_THROUGHPUT_TRANSPORT #if H_TEST_RAW_TP -#define H_RAW_TP_REPORT_INTERVAL CONFIG_ESP_HOSTED_RAW_TP_REPORT_INTERVAL -#define H_RAW_TP_PKT_LEN CONFIG_ESP_HOSTED_RAW_TP_HOST_TO_ESP_PKT_LEN - -#if CONFIG_ESP_HOSTED_RAW_THROUGHPUT_TX_TO_SLAVE -#define H_TEST_RAW_TP_DIR (ESP_TEST_RAW_TP__HOST_TO_ESP) -#elif CONFIG_ESP_HOSTED_RAW_THROUGHPUT_RX_FROM_SLAVE -#define H_TEST_RAW_TP_DIR (ESP_TEST_RAW_TP__ESP_TO_HOST) -#elif CONFIG_ESP_HOSTED_RAW_THROUGHPUT_BIDIRECTIONAL -#define H_TEST_RAW_TP_DIR (ESP_TEST_RAW_TP__BIDIRECTIONAL) + + #define H_RAW_TP_REPORT_INTERVAL CONFIG_ESP_HOSTED_RAW_TP_REPORT_INTERVAL + #define H_RAW_TP_PKT_LEN CONFIG_ESP_HOSTED_RAW_TP_HOST_TO_ESP_PKT_LEN + + #if CONFIG_ESP_HOSTED_RAW_THROUGHPUT_TX_TO_SLAVE + #define H_TEST_RAW_TP_DIR (ESP_TEST_RAW_TP__HOST_TO_ESP) + #elif CONFIG_ESP_HOSTED_RAW_THROUGHPUT_RX_FROM_SLAVE + #define H_TEST_RAW_TP_DIR (ESP_TEST_RAW_TP__ESP_TO_HOST) + #elif CONFIG_ESP_HOSTED_RAW_THROUGHPUT_BIDIRECTIONAL + #define H_TEST_RAW_TP_DIR (ESP_TEST_RAW_TP__BIDIRECTIONAL) + #else + #error Test Raw TP direction not defined + #endif + #else -#error Test Raw TP direction not defined + #define H_TEST_RAW_TP_DIR (ESP_TEST_RAW_TP_NONE) +#endif + +/* ----------------------- Enable packet stats ------------------------------- */ +#ifdef CONFIG_ESP_PKT_STATS + #define ESP_PKT_STATS 1 + #define ESP_PKT_STATS_REPORT_INTERVAL CONFIG_ESP_PKT_STATS_INTERVAL_SEC #endif +/* ----------------- Host to slave Wi-Fi flow control ------------------------ */ +/* Bit0: slave request host to enable flow control */ +#define H_EVTGRP_BIT_FC_ALLOW_WIFI BIT(0) + + +/* --------------------- Host Power saving ----------------------------------- */ + +#if defined(CONFIG_ESP_HOSTED_HOST_POWER_SAVE_ENABLED) + #if defined(CONFIG_ESP_HOSTED_HOST_DEEP_SLEEP_ALLOWED) + #define H_HOST_PS_ALLOWED 1 + #define H_HOST_PS_ALLOWED_LIGHT_SLEEP 0 + #else + #define H_HOST_PS_ALLOWED 0 + #endif + + /* Amend later for light sleep */ +#else + #define H_HOST_PS_ALLOWED 0 +#endif + +#if defined(CONFIG_ESP_HOSTED_HOST_WAKEUP_GPIO) + #define H_HOST_WAKEUP_GPIO_PORT NULL + #define H_HOST_WAKEUP_GPIO CONFIG_ESP_HOSTED_HOST_WAKEUP_GPIO #else -#define H_TEST_RAW_TP_DIR (ESP_TEST_RAW_TP_NONE) + #define H_HOST_WAKEUP_GPIO -1 +#endif + +#if defined(CONFIG_ESP_HOSTED_HOST_WAKEUP_GPIO_LEVEL) + #define H_HOST_WAKEUP_GPIO_LEVEL CONFIG_ESP_HOSTED_HOST_WAKEUP_GPIO_LEVEL +#else + #define H_HOST_WAKEUP_GPIO_LEVEL 1 /* High */ +#endif + +/* Conflict checks for host power save configuration */ +#if (H_HOST_PS_ALLOWED == 1) + #if (H_HOST_WAKEUP_GPIO == -1) + #error "Conflict: Host wake-up GPIO is mandatory when deep sleep is allowed" + #endif +#endif + +/* --------------------- Host CLI -------------------------------------------- */ +#ifdef CONFIG_ESP_HOSTED_CLI_ENABLED + #define H_ESP_HOSTED_CLI_ENABLED 1 #endif /* ---------------------- ESP-IDF Specific Config start -------------------- */ @@ -382,14 +512,44 @@ enum { /* Controls whether an Internal LDO powers the SDIO connection */ #if CONFIG_ESP_HOSTED_SD_PWR_CTRL_LDO_INTERNAL_IO -#define H_SDIO_PWR_CTRL_LDO 1 -#define H_SDIO_PWR_CTRL_LDO_ID CONFIG_ESP_HOSTED_SD_PWR_CTRL_LDO_IO_ID + #define H_SDIO_PWR_CTRL_LDO 1 + #define H_SDIO_PWR_CTRL_LDO_ID CONFIG_ESP_HOSTED_SD_PWR_CTRL_LDO_IO_ID #else -#define H_SDIO_PWR_CTRL_LDO 0 + #define H_SDIO_PWR_CTRL_LDO 0 #endif /* ---------------------- ESP-IDF Specific Config end ---------------------- */ +/* --------------------- Network Split -------------------------------------- */ +#ifdef CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED + #define H_NETWORK_SPLIT_ENABLED 1 +#else + #define H_NETWORK_SPLIT_ENABLED 0 +#endif + +#if H_NETWORK_SPLIT_ENABLED +#if !defined(CONFIG_LWIP_TCP_LOCAL_PORT_RANGE_START) || \ + !defined(CONFIG_LWIP_TCP_LOCAL_PORT_RANGE_END) || \ + !defined(CONFIG_LWIP_UDP_LOCAL_PORT_RANGE_START) || \ + !defined(CONFIG_LWIP_UDP_LOCAL_PORT_RANGE_END) +#error "LWIP ports at host need to configured, ensure they are exclusive and different from slave" +#endif + +#define H_HOST_TCP_LOCAL_PORT_RANGE_START CONFIG_LWIP_TCP_LOCAL_PORT_RANGE_START +#define H_HOST_TCP_LOCAL_PORT_RANGE_END CONFIG_LWIP_TCP_LOCAL_PORT_RANGE_END +#define H_HOST_UDP_LOCAL_PORT_RANGE_START CONFIG_LWIP_UDP_LOCAL_PORT_RANGE_START +#define H_HOST_UDP_LOCAL_PORT_RANGE_END CONFIG_LWIP_UDP_LOCAL_PORT_RANGE_END + +#define H_SLAVE_TCP_REMOTE_PORT_RANGE_START CONFIG_LWIP_TCP_REMOTE_PORT_RANGE_START +#define H_SLAVE_TCP_REMOTE_PORT_RANGE_END CONFIG_LWIP_TCP_REMOTE_PORT_RANGE_END +#define H_SLAVE_UDP_REMOTE_PORT_RANGE_START CONFIG_LWIP_UDP_REMOTE_PORT_RANGE_START +#define H_SLAVE_UDP_REMOTE_PORT_RANGE_END CONFIG_LWIP_UDP_REMOTE_PORT_RANGE_END + +#endif + + +#define H_HOST_USES_STATIC_NETIF 0 /* yet unsupported */ + esp_err_t esp_hosted_set_default_config(void); bool esp_hosted_is_config_valid(void); diff --git a/host/api/include/esp_hosted_power_save.h b/host/api/include/esp_hosted_power_save.h new file mode 100644 index 00000000..b4bf3316 --- /dev/null +++ b/host/api/include/esp_hosted_power_save.h @@ -0,0 +1,84 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ESP_HOSTED_POWER_SAVE_API_H +#define ESP_HOSTED_POWER_SAVE_API_H + +typedef enum { + HOSTED_WAKEUP_UNDEFINED = 0, + HOSTED_WAKEUP_NORMAL_REBOOT, + HOSTED_WAKEUP_DEEP_SLEEP, +} esp_hosted_wakeup_reason_t; + +typedef enum { + HOSTED_POWER_SAVE_TYPE_NONE = 0, + HOSTED_POWER_SAVE_TYPE_LIGHT_SLEEP, + HOSTED_POWER_SAVE_TYPE_DEEP_SLEEP, +} esp_hosted_power_save_type_t; + +/* + * @brief Initializes the power save driver. + * This function is typically called automatically during esp_hosted_init(). + */ +int esp_hosted_power_save_init(void); + +/* + * @brief Deinitializes the power save driver. + * This function is typically called automatically during esp_hosted_deinit(). + */ +int esp_hosted_power_save_deinit(void); + +/** + * @brief Checks if the host power save feature is enabled in Kconfig. + * + * @return int Returns 1 if the feature is enabled, 0 otherwise. + */ +int esp_hosted_power_save_enabled(void); + +/** + * @brief Determines if the host rebooted due to deep sleep. + * + * @return int Returns 1 if the host rebooted due to deep sleep, 0 otherwise. + */ +int esp_hosted_woke_from_deep_sleep(void); + +/** + * @brief Checks if the host is currently in power saving mode. + * + * @return int Returns 1 if the host is in power saving mode, 0 otherwise. + */ +int esp_hosted_power_saving(void); + +/** + * @brief Initiates the host power save mode (deep sleep). + * @note This function does not return. The host will enter deep sleep + * and reboot upon wake-up. + * + * @param power_save_type The type of power save mode to enter. + * Currently, only HOSTED_POWER_SAVE_TYPE_DEEP_SLEEP is supported. + * @return int Returns 0 on success, or a nonzero value on failure (e.g., if the feature is disabled). + */ +int esp_hosted_power_save_start(esp_hosted_power_save_type_t power_save_type); + +/** + * @brief Starts a timer that will place the host into deep sleep upon expiration. + * + * @param time_ms The duration in milliseconds after which the host will enter deep sleep. + * @param timer_type The type of timer to start. Use H_TIMER_TYPE_ONESHOT for a single event. + * Use H_TIMER_TYPE_PERIODIC for periodic events. + * @return int Returns 0 on success or a nonzero value on failure. + */ +int esp_hosted_power_save_timer_start(uint32_t time_ms, int timer_type); + +/** + * @brief Stops the host power save timer. + * + * @return int Returns 0 on success or a nonzero value on failure. + */ +int esp_hosted_power_save_timer_stop(void); + + +#endif diff --git a/host/api/include/esp_hosted_transport_config.h b/host/api/include/esp_hosted_transport_config.h index fd03de33..68ef9ebd 100644 --- a/host/api/include/esp_hosted_transport_config.h +++ b/host/api/include/esp_hosted_transport_config.h @@ -20,7 +20,7 @@ typedef enum { /* GPIO pin configuration structure */ typedef struct { void *port; - uint8_t pin; + int pin; } gpio_pin_t; /* New Configuration Structures */ @@ -178,7 +178,7 @@ struct esp_hosted_transport_config { .tx_queue_size = H_SPI_TX_Q, \ .rx_queue_size = H_SPI_RX_Q, \ .mode = H_SPI_MODE, \ - .clk_mhz = H_SPI_INIT_CLK_MHZ, \ + .clk_mhz = H_SPI_FD_CLK_MHZ, \ } #endif diff --git a/host/api/priv/esp_hosted_api_priv.h b/host/api/priv/esp_hosted_api_priv.h index 94a817bc..be85e117 100644 --- a/host/api/priv/esp_hosted_api_priv.h +++ b/host/api/priv/esp_hosted_api_priv.h @@ -81,4 +81,4 @@ esp_err_t esp_wifi_remote_get_bandwidths(wifi_interface_t ifx, wifi_bandwidths_t } #endif -#endif /* __ESP_HOSTED_API_PRIV_H__ */ \ No newline at end of file +#endif /* __ESP_HOSTED_API_PRIV_H__ */ diff --git a/host/api/src/esp_hosted_api.c b/host/api/src/esp_hosted_api.c index 01aa034b..2c9df8f3 100644 --- a/host/api/src/esp_hosted_api.c +++ b/host/api/src/esp_hosted_api.c @@ -1,5 +1,5 @@ /* -* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD +* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -22,6 +22,12 @@ extern "C" { static const char *TAG="H_API"; static uint8_t esp_hosted_init_done; +static uint8_t esp_hosted_transport_up; + + +#define check_transport_up() \ +if (!esp_hosted_transport_up) return ESP_FAIL + /** Exported variables **/ struct esp_remote_channel { @@ -35,7 +41,8 @@ struct esp_remote_channel { /** Exported Functions **/ static void transport_active_cb(void) { - //g_h.funcs->_h_post_semaphore(transport_up_sem); + ESP_LOGI(TAG, "Transport active"); + esp_hosted_transport_up = 1; } #if 0 @@ -107,8 +114,8 @@ int esp_hosted_init(void) } else { ESP_ERROR_CHECK(esp_hosted_set_default_config()); } - ESP_ERROR_CHECK(transport_drv_init(transport_active_cb)); ESP_ERROR_CHECK(add_esp_wifi_remote_channels()); + ESP_ERROR_CHECK(setup_transport(transport_active_cb)); ESP_ERROR_CHECK(rpc_init()); rpc_register_event_callbacks(); @@ -121,7 +128,7 @@ int esp_hosted_deinit(void) ESP_LOGI(TAG, "ESP-Hosted deinit\n"); rpc_unregister_event_callbacks(); ESP_ERROR_CHECK(rpc_deinit()); - ESP_ERROR_CHECK(transport_drv_deinit()); + ESP_ERROR_CHECK(teardown_transport()); esp_hosted_init_done = 0; return ESP_OK; } @@ -133,7 +140,7 @@ static inline esp_err_t esp_hosted_reconfigure(void) return ESP_FAIL; } - ESP_ERROR_CHECK(transport_drv_reconfigure()); + ESP_ERROR_CHECK_WITHOUT_ABORT(transport_drv_reconfigure()); return ESP_OK; } @@ -177,260 +184,312 @@ esp_err_t esp_hosted_remove_channel(esp_remote_channel_t eh_chan) esp_err_t esp_wifi_remote_init(const wifi_init_config_t *arg) { - ESP_ERROR_CHECK(esp_hosted_reconfigure()); + ESP_ERROR_CHECK_WITHOUT_ABORT(esp_hosted_reconfigure()); + check_transport_up(); return rpc_wifi_init(arg); } esp_err_t esp_wifi_remote_deinit(void) { + esp_hosted_transport_up = 0; + check_transport_up(); return rpc_wifi_deinit(); } esp_err_t esp_wifi_remote_set_mode(wifi_mode_t mode) { + check_transport_up(); return rpc_wifi_set_mode(mode); } esp_err_t esp_wifi_remote_get_mode(wifi_mode_t* mode) { + check_transport_up(); return rpc_wifi_get_mode(mode); } esp_err_t esp_wifi_remote_start(void) { + check_transport_up(); return rpc_wifi_start(); } esp_err_t esp_wifi_remote_stop(void) { + check_transport_up(); return rpc_wifi_stop(); } esp_err_t esp_wifi_remote_connect(void) { ESP_LOGI(TAG, "%s",__func__); + check_transport_up(); return rpc_wifi_connect(); } esp_err_t esp_wifi_remote_disconnect(void) { + check_transport_up(); return rpc_wifi_disconnect(); } esp_err_t esp_wifi_remote_set_config(wifi_interface_t interface, wifi_config_t *conf) { + check_transport_up(); return rpc_wifi_set_config(interface, conf); } esp_err_t esp_wifi_remote_get_config(wifi_interface_t interface, wifi_config_t *conf) { + check_transport_up(); return rpc_wifi_get_config(interface, conf); } esp_err_t esp_wifi_remote_get_mac(wifi_interface_t mode, uint8_t mac[6]) { + check_transport_up(); return rpc_wifi_get_mac(mode, mac); } esp_err_t esp_wifi_remote_set_mac(wifi_interface_t mode, const uint8_t mac[6]) { + check_transport_up(); return rpc_wifi_set_mac(mode, mac); } esp_err_t esp_wifi_remote_scan_start(const wifi_scan_config_t *config, bool block) { + check_transport_up(); return rpc_wifi_scan_start(config, block); } esp_err_t esp_wifi_remote_scan_stop(void) { + check_transport_up(); return rpc_wifi_scan_stop(); } esp_err_t esp_wifi_remote_scan_get_ap_num(uint16_t *number) { + check_transport_up(); return rpc_wifi_scan_get_ap_num(number); } esp_err_t esp_wifi_remote_scan_get_ap_record(wifi_ap_record_t *ap_record) { + check_transport_up(); return rpc_wifi_scan_get_ap_record(ap_record); } esp_err_t esp_wifi_remote_scan_get_ap_records(uint16_t *number, wifi_ap_record_t *ap_records) { + check_transport_up(); return rpc_wifi_scan_get_ap_records(number, ap_records); } esp_err_t esp_wifi_remote_clear_ap_list(void) { + check_transport_up(); return rpc_wifi_clear_ap_list(); } esp_err_t esp_wifi_remote_restore(void) { + check_transport_up(); return rpc_wifi_restore(); } esp_err_t esp_wifi_remote_clear_fast_connect(void) { + check_transport_up(); return rpc_wifi_clear_fast_connect(); } esp_err_t esp_wifi_remote_deauth_sta(uint16_t aid) { + check_transport_up(); return rpc_wifi_deauth_sta(aid); } esp_err_t esp_wifi_remote_sta_get_ap_info(wifi_ap_record_t *ap_info) { + check_transport_up(); return rpc_wifi_sta_get_ap_info(ap_info); } esp_err_t esp_wifi_remote_set_ps(wifi_ps_type_t type) { + check_transport_up(); return rpc_wifi_set_ps(type); } esp_err_t esp_wifi_remote_get_ps(wifi_ps_type_t *type) { + check_transport_up(); return rpc_wifi_get_ps(type); } esp_err_t esp_wifi_remote_set_storage(wifi_storage_t storage) { + check_transport_up(); return rpc_wifi_set_storage(storage); } esp_err_t esp_wifi_remote_set_bandwidth(wifi_interface_t ifx, wifi_bandwidth_t bw) { + check_transport_up(); return rpc_wifi_set_bandwidth(ifx, bw); } esp_err_t esp_wifi_remote_get_bandwidth(wifi_interface_t ifx, wifi_bandwidth_t *bw) { + check_transport_up(); return rpc_wifi_get_bandwidth(ifx, bw); } esp_err_t esp_wifi_remote_set_channel(uint8_t primary, wifi_second_chan_t second) { + check_transport_up(); return rpc_wifi_set_channel(primary, second); } esp_err_t esp_wifi_remote_get_channel(uint8_t *primary, wifi_second_chan_t *second) { + check_transport_up(); return rpc_wifi_get_channel(primary, second); } esp_err_t esp_wifi_remote_set_country_code(const char *country, bool ieee80211d_enabled) { + check_transport_up(); return rpc_wifi_set_country_code(country, ieee80211d_enabled); } esp_err_t esp_wifi_remote_get_country_code(char *country) { + check_transport_up(); return rpc_wifi_get_country_code(country); } esp_err_t esp_wifi_remote_set_country(const wifi_country_t *country) { + check_transport_up(); return rpc_wifi_set_country(country); } esp_err_t esp_wifi_remote_get_country(wifi_country_t *country) { + check_transport_up(); return rpc_wifi_get_country(country); } esp_err_t esp_wifi_remote_ap_get_sta_list(wifi_sta_list_t *sta) { + check_transport_up(); return rpc_wifi_ap_get_sta_list(sta); } esp_err_t esp_wifi_remote_ap_get_sta_aid(const uint8_t mac[6], uint16_t *aid) { + check_transport_up(); return rpc_wifi_ap_get_sta_aid(mac, aid); } esp_err_t esp_wifi_remote_sta_get_rssi(int *rssi) { + check_transport_up(); return rpc_wifi_sta_get_rssi(rssi); } esp_err_t esp_wifi_remote_set_protocol(wifi_interface_t ifx, uint8_t protocol_bitmap) { + check_transport_up(); return rpc_wifi_set_protocol(ifx, protocol_bitmap); } esp_err_t esp_wifi_remote_get_protocol(wifi_interface_t ifx, uint8_t *protocol_bitmap) { + check_transport_up(); return rpc_wifi_get_protocol(ifx, protocol_bitmap); } esp_err_t esp_wifi_remote_set_max_tx_power(int8_t power) { + check_transport_up(); return rpc_wifi_set_max_tx_power(power); } esp_err_t esp_wifi_remote_get_max_tx_power(int8_t *power) { + check_transport_up(); return rpc_wifi_get_max_tx_power(power); } esp_err_t esp_wifi_remote_sta_get_negotiated_phymode(wifi_phy_mode_t *phymode) { + check_transport_up(); return rpc_wifi_sta_get_negotiated_phymode(phymode); } esp_err_t esp_wifi_remote_sta_get_aid(uint16_t *aid) { + check_transport_up(); return rpc_wifi_sta_get_aid(aid); } #if H_WIFI_DUALBAND_SUPPORT /* Dual-band WiFi API - always available at high level, but returns ESP_ERR_NOT_SUPPORTED when co-processor do not support */ esp_err_t esp_wifi_remote_set_band(wifi_band_t band) { + check_transport_up(); return rpc_wifi_set_band(band); } esp_err_t esp_wifi_remote_get_band(wifi_band_t *band) { + check_transport_up(); return rpc_wifi_get_band(band); } esp_err_t esp_wifi_remote_set_band_mode(wifi_band_mode_t band_mode) { + check_transport_up(); return rpc_wifi_set_band_mode(band_mode); } esp_err_t esp_wifi_remote_get_band_mode(wifi_band_mode_t *band_mode) { + check_transport_up(); return rpc_wifi_get_band_mode(band_mode); } esp_err_t esp_wifi_remote_set_protocols(wifi_interface_t ifx, wifi_protocols_t *protocols) { + check_transport_up(); return rpc_wifi_set_protocols(ifx, protocols); } esp_err_t esp_wifi_remote_get_protocols(wifi_interface_t ifx, wifi_protocols_t *protocols) { + check_transport_up(); return rpc_wifi_get_protocols(ifx, protocols); } esp_err_t esp_wifi_remote_set_bandwidths(wifi_interface_t ifx, wifi_bandwidths_t *bw) { + check_transport_up(); return rpc_wifi_set_bandwidths(ifx, bw); } esp_err_t esp_wifi_remote_get_bandwidths(wifi_interface_t ifx, wifi_bandwidths_t *bw) { + check_transport_up(); return rpc_wifi_get_bandwidths(ifx, bw); } #endif esp_err_t esp_hosted_get_coprocessor_fwversion(esp_hosted_coprocessor_fwver_t *ver_info) { + check_transport_up(); return rpc_get_coprocessor_fwversion(ver_info); } diff --git a/host/drivers/bt/vhci_drv.c b/host/drivers/bt/vhci_drv.c index 4a1fa850..9e172a7f 100644 --- a/host/drivers/bt/vhci_drv.c +++ b/host/drivers/bt/vhci_drv.c @@ -44,7 +44,7 @@ void hci_drv_show_configuration(void) /** * HCI_H4_xxx is the first byte of the received data */ -int hci_rx_handler(interface_buffer_handle_t *buf_handle) +__WEAK__ int hci_rx_handler(interface_buffer_handle_t *buf_handle) { uint8_t * data = buf_handle->payload; uint32_t len_total_read = buf_handle->payload_len; @@ -167,7 +167,7 @@ int ble_transport_to_ll_acl_impl(struct os_mbuf *om) goto exit; } - res = esp_hosted_tx(ESP_HCI_IF, 0, data, data_len, H_BUFF_NO_ZEROCOPY, H_DEFLT_FREE_FUNC); + res = esp_hosted_tx(ESP_HCI_IF, 0, data, data_len, H_BUFF_NO_ZEROCOPY, H_DEFLT_FREE_FUNC, 0); exit: os_mbuf_free_chain(om); @@ -195,7 +195,7 @@ int ble_transport_to_ll_cmd_impl(void *buf) data[0] = HCI_H4_CMD; memcpy(&data[1], buf, buf_len - 1); - res = esp_hosted_tx(ESP_HCI_IF, 0, data, buf_len, H_BUFF_NO_ZEROCOPY, H_DEFLT_FREE_FUNC); + res = esp_hosted_tx(ESP_HCI_IF, 0, data, buf_len, H_BUFF_NO_ZEROCOPY, H_DEFLT_FREE_FUNC, 0); exit: ble_transport_free(buf); @@ -207,7 +207,7 @@ int ble_transport_to_ll_cmd_impl(void *buf) #if H_BT_HOST_ESP_BLUEDROID static esp_bluedroid_hci_driver_callbacks_t s_callback = { 0 }; -int hci_rx_handler(interface_buffer_handle_t *buf_handle) +__WEAK__ int hci_rx_handler(interface_buffer_handle_t *buf_handle) { uint8_t * data = buf_handle->payload; uint32_t len_total_read = buf_handle->payload_len; @@ -248,7 +248,7 @@ void hosted_hci_bluedroid_send(uint8_t *data, uint16_t len) } memcpy(ptr, data, len); - res = esp_hosted_tx(ESP_HCI_IF, 0, ptr, len, H_BUFF_NO_ZEROCOPY, H_DEFLT_FREE_FUNC); + res = esp_hosted_tx(ESP_HCI_IF, 0, ptr, len, H_BUFF_NO_ZEROCOPY, H_DEFLT_FREE_FUNC, 0); if (res) { ESP_LOGE(TAG, "%s: Tx failed", __func__); diff --git a/host/drivers/power_save/power_save_drv.c b/host/drivers/power_save/power_save_drv.c new file mode 100644 index 00000000..e568c266 --- /dev/null +++ b/host/drivers/power_save/power_save_drv.c @@ -0,0 +1,360 @@ +// SPDX-License-Identifier: Apache-2.0 +// Copyright 2015-2023 Espressif Systems (Shanghai) PTE LTD + +/** Includes **/ +#include "esp_log.h" +#include "esp_hosted_log.h" +#include "power_save_drv.h" +#include "stats.h" +#include "transport_drv.h" +#include "esp_hosted_config.h" +#include "esp_hosted_power_save.h" +#include "esp_hosted_transport_config.h" + +static const char TAG[] = "H_power_save"; + +static uint8_t power_save_on; + +static uint8_t power_save_drv_init_done; + +/* Add state tracking */ +static volatile bool reset_in_progress = false; + +#if H_HOST_PS_ALLOWED && H_HOST_WAKEUP_GPIO != -1 +/* ISR handler for wakeup GPIO */ +static void IRAM_ATTR wakeup_gpio_isr_handler(void* arg) +{ + + if (!power_save_on && !reset_in_progress) { + + int current_level = g_h.funcs->_h_read_gpio(H_HOST_WAKEUP_GPIO_PORT, H_HOST_WAKEUP_GPIO); + + /* Double check GPIO level and state before reset */ + if (current_level == H_HOST_WAKEUP_GPIO_LEVEL) { + ESP_EARLY_LOGW(TAG, "Slave reset detected via wakeup GPIO, level: %d", current_level); + ESP_EARLY_LOGE(TAG, "------------------ Reseting host -----------------"); + + /* Set flag to prevent re-entry */ + reset_in_progress = true; + + /* Disable interrupt and remove handler before reset */ + g_h.funcs->_h_teardown_gpio_interrupt(H_HOST_WAKEUP_GPIO_PORT, H_HOST_WAKEUP_GPIO); + + /* Force power save off and trigger reset */ + g_h.funcs->_h_restart_host(); + } + } +} +#endif + +/* Initialize power save driver and configure GPIO for slave reset detection */ +int esp_hosted_power_save_init(void) +{ + + if (power_save_drv_init_done) { + ESP_LOGI(TAG, "Power save driver already initialized"); + return 0; + } + +#if H_HOST_PS_ALLOWED + #if H_HOST_WAKEUP_GPIO + int ret = 0; + + uint32_t gpio_num = H_HOST_WAKEUP_GPIO; + void *gpio_port = H_HOST_WAKEUP_GPIO_PORT; + int level = H_HOST_WAKEUP_GPIO_LEVEL; + + ESP_LOGI(TAG, "power_save_drv_init with gpio_num: %" PRIu32, gpio_num); + + /* Reset state flags */ + power_save_on = 0; + reset_in_progress = false; + + int initial_level = g_h.funcs->_h_read_gpio(gpio_port, gpio_num); + ESP_LOGI(TAG, "Initial GPIO level: %d", initial_level); + + g_h.funcs->_h_write_gpio(gpio_port, gpio_num, !level); + + /* Only proceed with ISR setup if conditions are right */ + if (!power_save_on && initial_level == 0) { + ret = g_h.funcs->_h_config_gpio_as_interrupt(gpio_port, gpio_num, level, wakeup_gpio_isr_handler, NULL); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to add GPIO ISR handler, err %d", ret); + return -1; + } + } + + ESP_LOGI(TAG, "Initialized wakeup/reset GPIO %" PRIu32 " for slave reset detection", gpio_num); + #else + ESP_LOGI(TAG, "power save driver not enabled at host/slave"); + return -1; + #endif + power_save_drv_init_done = 1; +#endif + + return 0; +} + +int esp_hosted_power_save_deinit(void) +{ +#if H_HOST_PS_ALLOWED + if (power_save_on) { + ESP_LOGE(TAG, "Power save is on, cannot deinit"); + return -1; + } + power_save_drv_init_done = 0; +#endif + +#if H_HOST_PS_ALLOWED && H_HOST_WAKEUP_GPIO != -1 + g_h.funcs->_h_teardown_gpio_interrupt(H_HOST_WAKEUP_GPIO_PORT, H_HOST_WAKEUP_GPIO); +#endif + return 0; +} + +int esp_hosted_power_save_enabled(void) +{ +#if H_HOST_PS_ALLOWED + return 1; +#endif + return 0; +} + + +int esp_hosted_woke_from_deep_sleep(void) +{ +#if H_HOST_PS_ALLOWED + int reason = g_h.funcs->_h_get_host_wakeup_or_reboot_reason(); + if (reason == HOSTED_WAKEUP_DEEP_SLEEP) { + ESP_LOGI(TAG, "Wakeup using deep sleep"); + return 1; + } else { + ESP_LOGI(TAG, "Wakeup using reason: %d", reason); + } +#endif + return 0; +} + +int esp_hosted_power_saving(void) +{ +#if H_HOST_PS_ALLOWED + return power_save_on; +#else + return 0; +#endif +} + + +#include "esp_hosted_transport_init.h" +#include "sdio_drv.h" +esp_err_t sdio_generate_slave_intr(uint8_t intr_no); + +#if H_HOST_PS_ALLOWED +static int notify_slave_host_power_save_start(void) +{ + ESP_LOGI(TAG, "Inform slave: Host PS start"); + return bus_inform_slave_host_power_save_start(); +} + + +static int notify_slave_host_power_save_stop(void) +{ + ESP_LOGI(TAG, "Inform slave: Host PS stop"); + return bus_inform_slave_host_power_save_stop(); +} +#endif + +int hold_slave_reset_gpio_pre_deep_sleep(void) +{ +#if H_HOST_PS_ALLOWED + gpio_pin_t reset_pin = { .port = H_GPIO_PIN_RESET_Port, .pin = H_GPIO_PIN_RESET_Pin }; + + if (ESP_TRANSPORT_OK != esp_hosted_transport_get_reset_config(&reset_pin)) { + ESP_LOGE(TAG, "Unable to get RESET config for transport"); + return -1; + } + + if(reset_pin.pin == -1) { + ESP_LOGE(TAG, "RESET pin is not configured"); + return -1; + } + + return g_h.funcs->_h_hold_gpio(reset_pin.port, reset_pin.pin, H_ENABLE); +#endif + return 0; +} + +int release_slave_reset_gpio_post_wakeup(void) +{ +#if H_HOST_PS_ALLOWED + gpio_pin_t reset_pin = { .port = H_GPIO_PIN_RESET_Port, .pin = H_GPIO_PIN_RESET_Pin }; + + if (ESP_TRANSPORT_OK != esp_hosted_transport_get_reset_config(&reset_pin)) { + ESP_LOGE(TAG, "Unable to get RESET config for transport"); + return -1; + } + + if(reset_pin.pin == -1) { + ESP_LOGE(TAG, "RESET pin is not configured"); + return -1; + } + + return g_h.funcs->_h_hold_gpio(reset_pin.port, reset_pin.pin, H_DISABLE); +#endif + return 0; +} + + +int esp_hosted_power_save_start(esp_hosted_power_save_type_t power_save_type) +{ + + if (power_save_on) + return 0; + + if (!power_save_drv_init_done) { + ESP_LOGE(TAG, "Power save driver not initialized, might be disabled at host/slave"); + return -1; + } + +#if H_HOST_PS_ALLOWED + void* sleep_gpio_port = H_HOST_WAKEUP_GPIO_PORT; + int sleep_gpio = H_HOST_WAKEUP_GPIO; + int ret = 0; + + if (power_save_type != HOSTED_POWER_SAVE_TYPE_DEEP_SLEEP) { + ESP_LOGE(TAG, "Invalid or not supported power save type: %d", power_save_type); + return -1; + } + + /* Inform slave, host power save is started */ + if (notify_slave_host_power_save_start()) { + ESP_LOGE(TAG, "Failed to notify slave, host power save is started"); + return -1; + } + + if (reset_in_progress) { + ESP_LOGE(TAG, "Reset in progress is set"); + return -1; + } + + /* Clear prior configured interrupt */ + g_h.funcs->_h_teardown_gpio_interrupt(sleep_gpio_port, sleep_gpio); + + /* Hold reset pin of slave */ + if (hold_slave_reset_gpio_pre_deep_sleep()) { + ESP_LOGE(TAG, "Failed to hold reset pin of slave"); + return -1; + } + + g_h.funcs->_h_msleep(50); + + /* Configure GPIO for deep sleep wakeup */ + ret = g_h.funcs->_h_config_host_power_save_hal_impl(power_save_type, sleep_gpio_port, sleep_gpio, H_HOST_WAKEUP_GPIO_LEVEL); + if (ret != 0) { + ESP_LOGE(TAG, "Failed to enable deep sleep wakeup for GPIO %d", sleep_gpio); + return -1; + } + + /* Lower GPIO to non-sleepable edge */ + if (sleep_gpio != -1) { + g_h.funcs->_h_write_gpio(sleep_gpio_port, sleep_gpio, !H_HOST_WAKEUP_GPIO_LEVEL); + } + + /* Disable pull-up and configure pull-down based on wakeup level */ + if (H_HOST_WAKEUP_GPIO_LEVEL) { + g_h.funcs->_h_pull_gpio(sleep_gpio_port, sleep_gpio, H_GPIO_PULL_UP, H_DISABLE); + g_h.funcs->_h_pull_gpio(sleep_gpio_port, sleep_gpio, H_GPIO_PULL_DOWN, H_ENABLE); + } else { + g_h.funcs->_h_pull_gpio(sleep_gpio_port, sleep_gpio, H_GPIO_PULL_DOWN, H_DISABLE); + g_h.funcs->_h_pull_gpio(sleep_gpio_port, sleep_gpio, H_GPIO_PULL_UP, H_ENABLE); + } + + power_save_on = 1; + + /* Start deep sleep */ + g_h.funcs->_h_start_host_power_save_hal_impl(power_save_type); + + + while (1) { + g_h.funcs->_h_msleep(1000); + /* dead loop */ + } +#endif + return -1; +} + +int stop_host_power_save(void) +{ + +#if H_HOST_PS_ALLOWED + /* Inform slave, host power save is stopped */ + if (notify_slave_host_power_save_stop()) { + ESP_LOGE(TAG, "Failed to notify slave, host power save is stopped"); + return -1; + } + + power_save_on = 0; +#endif + + return 0; +} + +#if H_HOST_PS_ALLOWED +static esp_timer_handle_t timer_handle = NULL; + +static void deep_sleep_timer_callback(void *arg) +{ + ESP_LOGI(TAG, "Firing deep sleep as timer expiry"); + esp_hosted_power_save_start(HOSTED_POWER_SAVE_TYPE_DEEP_SLEEP); +} +#endif +int esp_hosted_power_save_timer_start(uint32_t time_ms, int type) +{ + +#if H_HOST_PS_ALLOWED + int err = 0; + + if ((type != H_TIMER_TYPE_ONESHOT) && (type != H_TIMER_TYPE_PERIODIC)) { + ESP_LOGE(TAG, "Invalid timer type"); + return -1; + } + + if (time_ms == 0) { + ESP_LOGE(TAG, "Timer duration is 0, not starting timer"); + return -1; + } + + + if (timer_handle) { + ESP_LOGW(TAG, "Timer already exists"); + err = g_h.funcs->_h_timer_stop(timer_handle); + if (err != 0) { + ESP_LOGE(TAG, "Failed to stop timer"); + } + timer_handle = NULL; + return -1; + } + + + timer_handle = g_h.funcs->_h_timer_start("deep_sleep_timer", time_ms, type, deep_sleep_timer_callback, NULL); + if (err != 0) { + ESP_LOGE(TAG, "Failed to start timer"); + } +#endif + return 0; +} + +int esp_hosted_power_save_timer_stop(void) +{ +#if H_HOST_PS_ALLOWED + int err = 0; + if (!timer_handle) { + ESP_LOGW(TAG, "No timer exists"); + return -1; + } + err = g_h.funcs->_h_timer_stop(timer_handle); + if (err != 0) { + ESP_LOGE(TAG, "Failed to stop timer"); + } +#endif + return 0; +} diff --git a/host/drivers/power_save/power_save_drv.h b/host/drivers/power_save/power_save_drv.h new file mode 100644 index 00000000..e77991fa --- /dev/null +++ b/host/drivers/power_save/power_save_drv.h @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: Apache-2.0 + * Copyright 2015-2025 Espressif Systems (Shanghai) PTE LTD + */ + +/* This file is internal to ESP-Hosted */ + +#ifndef __POWER_SAVE_DRV_H +#define __POWER_SAVE_DRV_H + +#include "common.h" + +/** + * @brief Stops the host power save mode. + * @note This is an internal function called during the wake-up sequence. + * + * @return int Returns 0 on success, or a nonzero value on failure. + */ +int stop_host_power_save(void); + +/** + * @brief Holds the slave reset GPIO before deep sleep. + * @note Holding the slave reset GPIO before deep sleep is required, + * to ensure that the slave doesn't reset during deep sleep. + * However, this would consume some power. + * + * @return int Returns 0 on success, or a nonzero value on failure. + */ +int hold_slave_reset_gpio_pre_deep_sleep(void); + +/** + * @brief Releases the slave reset GPIO after wakeup from deep sleep. + * + * @return int Returns 0 on success, or a nonzero value on failure. + */ +int release_slave_reset_gpio_post_wakeup(void); + +#endif /* __POWER_SAVE_DRV_H */ diff --git a/host/drivers/rpc/core/rpc_core.c b/host/drivers/rpc/core/rpc_core.c index 389d6af8..99b65c34 100644 --- a/host/drivers/rpc/core/rpc_core.c +++ b/host/drivers/rpc/core/rpc_core.c @@ -14,7 +14,7 @@ #include "esp_hosted_config.h" -DEFINE_LOG_TAG(rpc_core); +static const char *TAG = "rpc_core"; #define RPC_LIB_STATE_INACTIVE 0 @@ -119,17 +119,24 @@ static inline void set_rpc_lib_state(int state) rpc_lib_ctxt.state = state; } -static inline int is_rpc_lib_state(int state) +static inline int is_rpc_lib_ready(void) { - if (rpc_lib_ctxt.state == state) + if (rpc_lib_ctxt.state >= RPC_LIB_STATE_READY) return 1; return 0; } +static inline int is_rpc_lib_inactive(void) +{ + if (rpc_lib_ctxt.state == RPC_LIB_STATE_INACTIVE) + return 1; + return 0; +} /* RPC TX indication */ static void rpc_tx_ind(void) { + ESP_LOGV(TAG, "posting rpc tx semaphore"); g_h.funcs->_h_post_semaphore(rpc_tx_sem); } @@ -194,6 +201,7 @@ static int process_rpc_tx_msg(ctrl_cmd_t *app_req) /* 5. Assign response callback, if valid */ if (app_req->rpc_rsp_cb) { + ESP_LOGD(TAG, "setting async resp callback for req[%u]",req.msg_id); ret = set_async_resp_callback(app_req, app_req->rpc_rsp_cb); if (ret < 0) { ESP_LOGE(TAG, "could not set callback for req[%u]",req.msg_id); @@ -206,7 +214,8 @@ static int process_rpc_tx_msg(ctrl_cmd_t *app_req) * For sync procedures, g_h.funcs->_h_get_semaphore takes care to * handle timeout situations */ if (app_req->rpc_rsp_cb) { - async_timer_hdl = g_h.funcs->_h_timer_start(app_req->rsp_timeout_sec, RPC__TIMER_ONESHOT, + ESP_LOGD(TAG, "starting async resp timer for req[%u]",req.msg_id); + async_timer_hdl = g_h.funcs->_h_timer_start("rpc_async_timeout_timer", SEC_TO_MILLISEC(app_req->rsp_timeout_sec), H_TIMER_TYPE_ONESHOT, rpc_async_timeout_handler, app_req); if (!async_timer_hdl) { ESP_LOGE(TAG, "Failed to start async resp timer"); @@ -217,6 +226,7 @@ static int process_rpc_tx_msg(ctrl_cmd_t *app_req) /* 7. Pack in protobuf and send the request */ rpc__pack(&req, tx_data); + ESP_LOGD(TAG, "sending rpc req[%u]",req.msg_id); if (transport_pserial_send(tx_data, tx_len)) { ESP_LOGE(TAG, "Send RPC req[0x%x] failed",req.msg_id); failure_status = RPC_ERR_TRANSPORT_SEND; @@ -262,7 +272,7 @@ static int process_rpc_tx_msg(ctrl_cmd_t *app_req) * Prevents timeout waiting for a response that will never come * as request was never sent */ - ESP_LOGV(TAG, "put failed response into rx queue"); + ESP_LOGW(TAG, "RPC Sync proc failed"); ctrl_cmd_t *app_resp = NULL; @@ -451,7 +461,7 @@ static void rpc_rx_thread(void const *arg) Rpc *resp = NULL; /* Block on read of protobuf encoded msg */ - if (is_rpc_lib_state(RPC_LIB_STATE_INACTIVE)) { + if (!is_rpc_lib_ready()) { g_h.funcs->_h_sleep(1); continue; } @@ -471,7 +481,9 @@ static void rpc_rx_thread(void const *arg) HOSTED_FREE(buf); /* Send for further processing as event or response */ + ESP_LOGV(TAG, "Before process_rpc_rx_msg"); process_rpc_rx_msg(resp, rpc_rx_func); + ESP_LOGV(TAG, "after process_rpc_rx_msg"); continue; /* Failed - cleanup */ @@ -507,22 +519,27 @@ static void rpc_tx_thread(void const *arg) /* Infinite loop to process incoming msg on serial interface */ while (1) { + ESP_LOGV(TAG, "Loop: Wait for next RPC request"); /* 4.1 Block on read of protobuf encoded msg */ - if (is_rpc_lib_state(RPC_LIB_STATE_INACTIVE)) { + if (!is_rpc_lib_ready()) { g_h.funcs->_h_sleep(1); - ESP_LOGV(TAG, "%s:%u rpc lib inactive",__func__,__LINE__); + ESP_LOGD(TAG, "%s:%u rpc lib not ready",__func__,__LINE__); continue; } + ESP_LOGV(TAG, "Waiting for RPC TX semaphore"); g_h.funcs->_h_get_semaphore(rpc_tx_sem, HOSTED_BLOCKING); + ESP_LOGV(TAG, "RPC TX semaphore acquired"); + ESP_LOGV(TAG, "Dequeueing RPC TX Q"); if (g_h.funcs->_h_dequeue_item(rpc_tx_q, &app_req, HOSTED_BLOCK_MAX)) { ESP_LOGE(TAG, "RPC TX Q Failed to dequeue"); continue; } if (app_req) { + ESP_LOGV(TAG, "Processing RPC TX msg"); process_rpc_tx_msg(app_req); } else { ESP_LOGE(TAG, "RPC Tx Q empty or uninitialised"); @@ -588,7 +605,7 @@ static ctrl_cmd_t * get_response(int *read_len, ctrl_cmd_t *app_req) /* Wait for response */ ret = wait_for_sync_response(app_req); if (ret) { - if (ret == RET_FAIL_TIMEOUT) + if ((ret == RET_FAIL_TIMEOUT) || (errno == ETIMEDOUT)) ESP_LOGW(TAG, "Timeout waiting for Resp for Req[0x%x]", app_req->msg_id); else ESP_LOGE(TAG, "ERR [%u] ret[%d] for Req[0x%x]", errno, ret, app_req->msg_id); @@ -919,7 +936,7 @@ int rpc_send_req(ctrl_cmd_t *app_req) ESP_LOGE(TAG, "Invalid param in rpc_send_req"); return FAILURE; } - ESP_LOGV(TAG, "app_req msgid[0x%x]", app_req->msg_id); + uid++; // handle rollover in uid value @@ -927,6 +944,7 @@ int rpc_send_req(ctrl_cmd_t *app_req) uid++; app_req->uid = uid; + ESP_LOGD(TAG, "app_req msgid[0x%x] with uid %" PRIu32, app_req->msg_id, app_req->uid); if (!app_req->rpc_rsp_cb) { /* sync proc only */ if (set_sync_resp_sem(app_req)) { @@ -937,6 +955,7 @@ int rpc_send_req(ctrl_cmd_t *app_req) app_req->msg_type = RPC_TYPE__Req; + ESP_LOGV(TAG, "queueing rpc tx q with uid %" PRIu32, app_req->uid); if (g_h.funcs->_h_queue_item(rpc_tx_q, &app_req, HOSTED_BLOCK_MAX)) { ESP_LOGE(TAG, "Failed to new app rpc req[0x%x] in tx queue", app_req->msg_id); goto fail_req; @@ -944,7 +963,8 @@ int rpc_send_req(ctrl_cmd_t *app_req) rpc_tx_ind(); - H_FREE_PTR_WITH_FUNC(app_req->app_free_buff_func, app_req->app_free_buff_hdl); + /* TODO : commenting, Review again to avoid duable free */ + //H_FREE_PTR_WITH_FUNC(app_req->app_free_buff_func, app_req->app_free_buff_hdl); return SUCCESS; @@ -963,7 +983,7 @@ int rpc_core_deinit(void) { int ret = SUCCESS; - if (is_rpc_lib_state(RPC_LIB_STATE_INACTIVE)) + if (is_rpc_lib_inactive()) return ret; set_rpc_lib_state(RPC_LIB_STATE_INACTIVE); @@ -1037,7 +1057,7 @@ int rpc_core_init(void) goto free_bufs; /* state init */ - set_rpc_lib_state(RPC_LIB_STATE_READY); + set_rpc_lib_state(RPC_LIB_STATE_INIT); return ret; @@ -1047,4 +1067,14 @@ int rpc_core_init(void) } +int rpc_core_start(void) +{ + set_rpc_lib_state(RPC_LIB_STATE_READY); + return SUCCESS; +} +int rpc_core_stop(void) +{ + set_rpc_lib_state(RPC_LIB_STATE_INIT); + return SUCCESS; +} diff --git a/host/drivers/rpc/core/rpc_core.h b/host/drivers/rpc/core/rpc_core.h index 690d4905..6ca0fdc3 100644 --- a/host/drivers/rpc/core/rpc_core.h +++ b/host/drivers/rpc/core/rpc_core.h @@ -93,6 +93,8 @@ typedef struct q_element { } int rpc_core_init(void); +int rpc_core_start(void); +int rpc_core_stop(void); int rpc_core_deinit(void); /* * Allows user app to create low level protobuf request diff --git a/host/drivers/rpc/core/rpc_evt.c b/host/drivers/rpc/core/rpc_evt.c index dd40b04c..dc7fe09f 100644 --- a/host/drivers/rpc/core/rpc_evt.c +++ b/host/drivers/rpc/core/rpc_evt.c @@ -4,7 +4,7 @@ #include "rpc_core.h" #include "rpc_slave_if.h" #include "esp_log.h" -#include "esp_hosted_transport.h" +#include DEFINE_LOG_TAG(rpc_evt); @@ -84,7 +84,7 @@ int rpc_parse_evt(Rpc *rpc_msg, ctrl_cmd_t *app_ntfy) } case RPC_ID__Event_WifiEventNoArgs: { RPC_FAIL_ON_NULL(event_wifi_event_no_args); app_ntfy->resp_event_status = rpc_msg->event_wifi_event_no_args->resp; - ESP_LOGI(TAG, "Event [0x%lx] received", rpc_msg->event_wifi_event_no_args->event_id); + ESP_LOGI(TAG, "Event [0x%" PRIx32 "] received", rpc_msg->event_wifi_event_no_args->event_id); app_ntfy->u.e_wifi_simple.wifi_event_id = rpc_msg->event_wifi_event_no_args->event_id; switch (rpc_msg->event_wifi_event_no_args->event_id) { @@ -116,6 +116,12 @@ int rpc_parse_evt(Rpc *rpc_msg, ctrl_cmd_t *app_ntfy) case WIFI_EVENT_AP_STOP: ESP_LOGI(TAG, "EVT rcvd: Wi-Fi AP stop"); break; + case WIFI_EVENT_HOME_CHANNEL_CHANGE: + ESP_LOGI(TAG, "EVT rcvd: Wi-Fi Home channel change"); + break; + default: + ESP_LOGI(TAG, "EVT rcvd: Wi-Fi Event[%" PRId32 "] ignored", rpc_msg->event_wifi_event_no_args->event_id); + break; } break; } case RPC_ID__Event_StaScanDone: { @@ -123,7 +129,7 @@ int rpc_parse_evt(Rpc *rpc_msg, ctrl_cmd_t *app_ntfy) wifi_event_sta_scan_done_t *p_a = &app_ntfy->u.e_wifi_sta_scan_done; RPC_FAIL_ON_NULL(event_sta_scan_done); app_ntfy->resp_event_status = p_c->resp; - ESP_LOGI(TAG, "Event Scan Done, %ld items", rpc_msg->event_sta_scan_done->scan_done->number); + ESP_LOGI(TAG, "Event Scan Done, %" PRIu32 " items", rpc_msg->event_sta_scan_done->scan_done->number); p_a->status = p_c->scan_done->status; p_a->number = p_c->scan_done->number; p_a->scan_id = p_c->scan_done->scan_id; @@ -160,6 +166,24 @@ int rpc_parse_evt(Rpc *rpc_msg, ctrl_cmd_t *app_ntfy) p_a->reason = p_c->reason; p_a->rssi = p_c->rssi; } + break; + } case RPC_ID__Event_DhcpDnsStatus: { + RPC_FAIL_ON_NULL(event_dhcp_dns); + RpcEventDhcpDnsStatus *p_c = rpc_msg->event_dhcp_dns; + rpc_set_dhcp_dns_status_t* p_a = &app_ntfy->u.slave_dhcp_dns_status; + app_ntfy->resp_event_status = rpc_msg->event_dhcp_dns->resp; + + p_a->iface = p_c->iface; + p_a->dhcp_up = p_c->dhcp_up; + p_a->dns_up = p_c->dns_up; + p_a->dns_type = p_c->dns_type; + p_a->net_link_up = p_c->net_link_up; + + g_h.funcs->_h_memcpy(p_a->dhcp_ip, p_c->dhcp_ip.data, p_c->dhcp_ip.len); + g_h.funcs->_h_memcpy(p_a->dhcp_nm, p_c->dhcp_nm.data, p_c->dhcp_nm.len); + g_h.funcs->_h_memcpy(p_a->dhcp_gw, p_c->dhcp_gw.data, p_c->dhcp_gw.len); + g_h.funcs->_h_memcpy(p_a->dns_ip, p_c->dns_ip.data, p_c->dns_ip.len); + break; } default: { ESP_LOGE(TAG, "Invalid/unsupported event[%u] received\n",rpc_msg->msg_id); diff --git a/host/drivers/rpc/core/rpc_req.c b/host/drivers/rpc/core/rpc_req.c index cfe37cb3..23723b52 100644 --- a/host/drivers/rpc/core/rpc_req.c +++ b/host/drivers/rpc/core/rpc_req.c @@ -512,6 +512,23 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) req_payload->bandmode = app_req->u.wifi_band_mode; break; #endif + } case RPC_ID__Req_SetDhcpDnsStatus: { + RPC_ALLOC_ASSIGN(RpcReqSetDhcpDnsStatus, req_set_dhcp_dns, + rpc__req__set_dhcp_dns_status__init); + RpcReqSetDhcpDnsStatus *p_c = req_payload; + rpc_set_dhcp_dns_status_t* p_a = &app_req->u.slave_dhcp_dns_status; + + p_c->iface = p_a->iface; + p_c->dhcp_up = p_a->dhcp_up; + p_c->dns_up = p_a->dns_up; + p_c->dns_type = p_a->dns_type; + p_c->net_link_up = p_a->net_link_up; + + RPC_REQ_COPY_STR(p_c->dhcp_ip, p_a->dhcp_ip, 64); + RPC_REQ_COPY_STR(p_c->dhcp_nm, p_a->dhcp_nm, 64); + RPC_REQ_COPY_STR(p_c->dhcp_gw, p_a->dhcp_gw, 64); + RPC_REQ_COPY_STR(p_c->dns_ip, p_a->dns_ip, 64); + break; } default: { *failure_status = RPC_ERR_UNSUPPORTED_MSG; ESP_LOGE(TAG, "Unsupported RPC Req[%u]",req->msg_id); diff --git a/host/drivers/rpc/core/rpc_rsp.c b/host/drivers/rpc/core/rpc_rsp.c index 4cd79d71..cdb50dc9 100644 --- a/host/drivers/rpc/core/rpc_rsp.c +++ b/host/drivers/rpc/core/rpc_rsp.c @@ -626,6 +626,10 @@ int rpc_parse_rsp(Rpc *rpc_msg, ctrl_cmd_t *app_resp) rpc_msg->resp_wifi_get_bandmode->bandmode; break; #endif + } case RPC_ID__Resp_SetDhcpDnsStatus: { + RPC_FAIL_ON_NULL(resp_set_dhcp_dns); + RPC_ERR_IN_RESP(resp_set_dhcp_dns); + break; } default: { ESP_LOGE(TAG, "Unsupported rpc Resp[%u]", rpc_msg->msg_id); goto fail_parse_rpc_msg; diff --git a/host/drivers/rpc/slaveif/rpc_slave_if.c b/host/drivers/rpc/slaveif/rpc_slave_if.c index 7495223e..d7b38d47 100644 --- a/host/drivers/rpc/slaveif/rpc_slave_if.c +++ b/host/drivers/rpc/slaveif/rpc_slave_if.c @@ -33,6 +33,18 @@ int rpc_slaveif_init(void) return rpc_core_init(); } +int rpc_slaveif_start(void) +{ + ESP_LOGD(TAG, "%s", __func__); + return rpc_core_start(); +} + +int rpc_slaveif_stop(void) +{ + ESP_LOGD(TAG, "%s", __func__); + return rpc_core_stop(); +} + int rpc_slaveif_deinit(void) { ESP_LOGD(TAG, "%s", __func__); @@ -371,3 +383,9 @@ ctrl_cmd_t * rpc_slaveif_wifi_get_band_mode(ctrl_cmd_t *req) RPC_DECODE_RSP_IF_NOT_ASYNC(); } #endif + +ctrl_cmd_t * rpc_slaveif_set_slave_dhcp_dns_status(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_SetDhcpDnsStatus); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} diff --git a/host/drivers/rpc/slaveif/rpc_slave_if.h b/host/drivers/rpc/slaveif/rpc_slave_if.h index 685531a9..c8663815 100644 --- a/host/drivers/rpc/slaveif/rpc_slave_if.h +++ b/host/drivers/rpc/slaveif/rpc_slave_if.h @@ -166,6 +166,18 @@ typedef struct { wifi_bandwidth_t ghz_5g; } rpc_wifi_bandwidths_t; +typedef struct { + int iface; + int net_link_up; + int dhcp_up; + uint8_t dhcp_ip[64]; + uint8_t dhcp_nm[64]; + uint8_t dhcp_gw[64]; + int dns_up; + uint8_t dns_ip[64]; + int dns_type; +} rpc_set_dhcp_dns_status_t; + typedef struct { /* event */ uint32_t hb_num; @@ -249,6 +261,8 @@ typedef struct Ctrl_cmd_t { wifi_band_mode_t wifi_band_mode; #endif + rpc_set_dhcp_dns_status_t slave_dhcp_dns_status; + event_heartbeat_t e_heartbeat; event_wifi_simple_t e_wifi_simple; @@ -376,6 +390,10 @@ int rpc_slaveif_init(void); **/ int rpc_slaveif_deinit(void); +int rpc_slaveif_start(void); + +int rpc_slaveif_stop(void); + /* Get the MAC address of station or softAP interface of ESP32 */ ctrl_cmd_t * rpc_slaveif_wifi_get_mac(ctrl_cmd_t *req); @@ -463,6 +481,7 @@ ctrl_cmd_t * rpc_slaveif_wifi_set_band(ctrl_cmd_t *req); ctrl_cmd_t * rpc_slaveif_wifi_get_band(ctrl_cmd_t *req); ctrl_cmd_t * rpc_slaveif_wifi_set_band_mode(ctrl_cmd_t *req); ctrl_cmd_t * rpc_slaveif_wifi_get_band_mode(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_set_slave_dhcp_dns_status(ctrl_cmd_t *req); #ifdef __cplusplus } diff --git a/host/drivers/rpc/wrap/rpc_wrap.c b/host/drivers/rpc/wrap/rpc_wrap.c index 47aa1cdb..1d7e4346 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.c +++ b/host/drivers/rpc/wrap/rpc_wrap.c @@ -31,7 +31,7 @@ #include "esp_hosted_wifi_config.h" #include "esp_hosted_transport.h" -DEFINE_LOG_TAG(rpc_wrap); +static const char *TAG = "RPC_WRAP"; uint8_t restart_after_slave_ota = 0; @@ -42,10 +42,14 @@ uint8_t restart_after_slave_ota = 0; #define VENDOR_OUI_2 3 #define VENDOR_OUI_TYPE 22 #define CHUNK_SIZE 1400 + #define OTA_BEGIN_RSP_TIMEOUT_SEC 15 +#define WIFI_INIT_RSP_TIMEOUT_SEC 10 #define OTA_FROM_WEB_URL 1 +/* Forward declarations */ +static int rpc_wifi_connect_async(void); static ctrl_cmd_t * RPC_DEFAULT_REQ(void) { @@ -88,6 +92,18 @@ int rpc_init(void) return rpc_slaveif_init(); } +int rpc_start(void) +{ + ESP_LOGD(TAG, "%s", __func__); + return rpc_slaveif_start(); +} + +int rpc_stop(void) +{ + ESP_LOGD(TAG, "%s", __func__); + return rpc_slaveif_stop(); +} + int rpc_deinit(void) { ESP_LOGD(TAG, "%s", __func__); @@ -97,6 +113,8 @@ int rpc_deinit(void) static int rpc_event_callback(ctrl_cmd_t * app_event) { + static bool netif_started = false; + static bool netif_connected = false; ESP_LOGV(TAG, "%u",app_event->msg_id); if (!app_event || (app_event->msg_type != RPC_TYPE__Event)) { if (app_event) @@ -123,30 +141,42 @@ static int rpc_event_callback(ctrl_cmd_t * app_event) wifi_event_ap_staconnected_t *p_e = &app_event->u.e_wifi_ap_staconnected; if (strlen((char*)p_e->mac)) { - ESP_LOGV(TAG, "ESP Event: SoftAP mode: connected station"); - g_h.funcs->_h_event_wifi_post(WIFI_EVENT_AP_STACONNECTED, - p_e, sizeof(wifi_event_ap_staconnected_t), HOSTED_BLOCK_MAX); + ESP_LOGI(TAG, "ESP Event: SoftAP mode: connected station"); + if (netif_started) { + g_h.funcs->_h_event_wifi_post(WIFI_EVENT_STA_CONNECTED, + p_e, sizeof(wifi_event_sta_connected_t), HOSTED_BLOCK_MAX); + } else { + ESP_LOGW(TAG, "Netif not started, deferring STA_CONNECTED event"); + } } break; } case RPC_ID__Event_AP_StaDisconnected: { wifi_event_ap_stadisconnected_t *p_e = &app_event->u.e_wifi_ap_stadisconnected; if (strlen((char*)p_e->mac)) { - ESP_LOGV(TAG, "ESP Event: SoftAP mode: disconnected MAC"); + ESP_LOGI(TAG, "ESP Event: SoftAP mode: disconnected MAC"); g_h.funcs->_h_event_wifi_post(WIFI_EVENT_AP_STADISCONNECTED, p_e, sizeof(wifi_event_ap_stadisconnected_t), HOSTED_BLOCK_MAX); } break; } case RPC_ID__Event_StaConnected: { - ESP_LOGV(TAG, "ESP Event: Station mode: Connected"); + ESP_LOGI(TAG, "ESP Event: Station mode: Connected"); + wifi_event_sta_connected_t *p_e = &app_event->u.e_wifi_sta_connected; - g_h.funcs->_h_event_wifi_post(WIFI_EVENT_STA_CONNECTED, - p_e, sizeof(wifi_event_sta_connected_t), HOSTED_BLOCK_MAX); + + if (!netif_connected && netif_started) { + g_h.funcs->_h_event_wifi_post(WIFI_EVENT_STA_STOP, 0, 0, HOSTED_BLOCK_MAX); + g_h.funcs->_h_event_wifi_post(WIFI_EVENT_STA_START, 0, 0, HOSTED_BLOCK_MAX); + g_h.funcs->_h_event_wifi_post(WIFI_EVENT_STA_CONNECTED, + p_e, sizeof(wifi_event_sta_connected_t), HOSTED_BLOCK_MAX); + netif_connected = true; + } break; } case RPC_ID__Event_StaDisconnected: { - ESP_LOGV(TAG, "ESP Event: Station mode: Disconnected"); + ESP_LOGI(TAG, "ESP Event: Station mode: Disconnected"); wifi_event_sta_disconnected_t *p_e = &app_event->u.e_wifi_sta_disconnected; g_h.funcs->_h_event_wifi_post(WIFI_EVENT_STA_DISCONNECTED, p_e, sizeof(wifi_event_sta_disconnected_t), HOSTED_BLOCK_MAX); + netif_connected = false; break; } case RPC_ID__Event_WifiEventNoArgs: { int wifi_event_id = app_event->u.e_wifi_simple.wifi_event_id; @@ -154,38 +184,66 @@ static int rpc_event_callback(ctrl_cmd_t * app_event) switch (wifi_event_id) { case WIFI_EVENT_STA_START: - ESP_LOGV(TAG, "ESP Event: wifi station started"); + ESP_LOGI(TAG, "ESP Event: wifi station started"); + /* Trigger connection when station is started */ + if (!netif_connected) { + rpc_wifi_connect_async(); + } + netif_started = true; break; case WIFI_EVENT_STA_STOP: - ESP_LOGV(TAG, "ESP Event: wifi station stopped"); + ESP_LOGI(TAG, "ESP Event: wifi station stopped"); + netif_started = false; + netif_connected = false; break; case WIFI_EVENT_AP_START: - ESP_LOGD(TAG,"ESP Event: softap started"); + ESP_LOGI(TAG,"ESP Event: softap started"); break; case WIFI_EVENT_AP_STOP: - ESP_LOGD(TAG,"ESP Event: softap stopped"); + ESP_LOGI(TAG,"ESP Event: softap stopped"); break; case WIFI_EVENT_HOME_CHANNEL_CHANGE: ESP_LOGD(TAG,"ESP Event: Home channel changed"); break; + case WIFI_EVENT_AP_STACONNECTED: + ESP_LOGI(TAG,"ESP Event: softap station connected"); + break; + + case WIFI_EVENT_AP_STADISCONNECTED: + ESP_LOGI(TAG,"ESP Event: softap station disconnected"); + break; default: - ESP_LOGW(TAG, "ESP Event: Event[%x] - unhandled", wifi_event_id); + ESP_LOGV(TAG, "ESP Event: Event[%x]", wifi_event_id); break; } /* inner switch case */ - g_h.funcs->_h_event_wifi_post(wifi_event_id, 0, 0, HOSTED_BLOCK_MAX); + + if ((wifi_event_id != WIFI_EVENT_AP_START) && + (wifi_event_id != WIFI_EVENT_AP_STACONNECTED) && + (wifi_event_id != WIFI_EVENT_AP_STADISCONNECTED)) { + + /* For STA_START, only post if netif is not already started */ + if (wifi_event_id == WIFI_EVENT_STA_START && !netif_started) { + ESP_LOGW(TAG, "Posting STA_START event"); + g_h.funcs->_h_event_wifi_post(wifi_event_id, 0, 0, HOSTED_BLOCK_MAX); + } else if (wifi_event_id != WIFI_EVENT_STA_START) { + g_h.funcs->_h_event_wifi_post(wifi_event_id, 0, 0, HOSTED_BLOCK_MAX); + } + } break; } case RPC_ID__Event_StaScanDone: { wifi_event_sta_scan_done_t *p_e = &app_event->u.e_wifi_sta_scan_done; - ESP_LOGV(TAG, "ESP Event: StaScanDone"); + ESP_LOGI(TAG, "ESP Event: StaScanDone"); ESP_LOGV(TAG, "scan: status: %lu number:%u scan_id:%u", p_e->status, p_e->number, p_e->scan_id); g_h.funcs->_h_event_wifi_post(WIFI_EVENT_SCAN_DONE, p_e, sizeof(wifi_event_sta_scan_done_t), HOSTED_BLOCK_MAX); break; + } case RPC_ID__Event_DhcpDnsStatus: { + break; } default: { ESP_LOGW(TAG, "Invalid event[0x%x] to parse", app_event->msg_id); break; @@ -291,6 +349,7 @@ int rpc_register_event_callbacks(void) { RPC_ID__Event_StaScanDone, rpc_event_callback }, { RPC_ID__Event_StaConnected, rpc_event_callback }, { RPC_ID__Event_StaDisconnected, rpc_event_callback }, + { RPC_ID__Event_DhcpDnsStatus, rpc_event_callback }, }; for (evt=0; evtresp_event_status == SUCCESS) { g_h.funcs->_h_memcpy(out_mac, resp->u.wifi_mac.mac, BSSID_BYTES_SIZE); - ESP_LOGV(TAG, "mac address is [" MACSTR "]", MAC2STR(out_mac)); + ESP_LOGI(TAG, "%s mac address is [" MACSTR "]", + mode==WIFI_IF_STA? "sta":"ap", MAC2STR(out_mac)); } return rpc_rsp_callback(resp); } @@ -810,6 +871,8 @@ int rpc_wifi_init(const wifi_init_config_t *arg) ctrl_cmd_t *req = RPC_DEFAULT_REQ(); ctrl_cmd_t *resp = NULL; + req->rsp_timeout_sec = WIFI_INIT_RSP_TIMEOUT_SEC; + if (!arg) return FAILURE; @@ -877,26 +940,24 @@ int rpc_wifi_stop(void) int rpc_wifi_connect(void) { -#if 1 /* implemented synchronous */ ctrl_cmd_t *req = RPC_DEFAULT_REQ(); ctrl_cmd_t *resp = NULL; resp = rpc_slaveif_wifi_connect(req); return rpc_rsp_callback(resp); - return 0; -#else +} + +static int rpc_wifi_connect_async(void) +{ /* implemented asynchronous */ ctrl_cmd_t *req = RPC_DEFAULT_REQ(); - ctrl_cmd_t *resp = NULL; req->rpc_rsp_cb = rpc_rsp_callback; - ESP_LOGE(TAG, "Async call registerd: %p", rpc_rsp_callback); rpc_slaveif_wifi_connect(req); return SUCCESS; -#endif } int rpc_wifi_disconnect(void) @@ -1361,3 +1422,36 @@ int rpc_wifi_get_protocol(wifi_interface_t ifx, uint8_t *protocol_bitmap) return rpc_rsp_callback(resp); } + +esp_err_t rpc_set_dhcp_dns_status(wifi_interface_t ifx, uint8_t link_up, + uint8_t dhcp_up, char *dhcp_ip, char *dhcp_nm, char *dhcp_gw, + uint8_t dns_up, char *dns_ip, uint8_t dns_type) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + ESP_LOGI(TAG, "iface:%u link_up:%u dhcp_up:%u dns_up:%u dns_type:%u", + ifx, link_up, dhcp_up, dns_up, dns_type); + ESP_LOGI(TAG, "dhcp ip:%s nm:%s gw:%s dns ip:%s", + dhcp_ip, dhcp_nm, dhcp_gw, dns_ip); + req->u.slave_dhcp_dns_status.iface = ifx; + req->u.slave_dhcp_dns_status.net_link_up = link_up; + req->u.slave_dhcp_dns_status.dhcp_up = dhcp_up; + req->u.slave_dhcp_dns_status.dns_up = dns_up; + req->u.slave_dhcp_dns_status.dns_type = dns_type; + + if (dhcp_ip) + strlcpy((char *)req->u.slave_dhcp_dns_status.dhcp_ip, dhcp_ip, 64); + if (dhcp_nm) + strlcpy((char *)req->u.slave_dhcp_dns_status.dhcp_nm, dhcp_nm, 64); + if (dhcp_gw) + strlcpy((char *)req->u.slave_dhcp_dns_status.dhcp_gw, dhcp_gw, 64); + + if (dns_ip) + strlcpy((char *)req->u.slave_dhcp_dns_status.dns_ip, dns_ip, 64); + + + resp = rpc_slaveif_set_slave_dhcp_dns_status(req); + return rpc_rsp_callback(resp); +} diff --git a/host/drivers/rpc/wrap/rpc_wrap.h b/host/drivers/rpc/wrap/rpc_wrap.h index 04c64f3d..10600be1 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.h +++ b/host/drivers/rpc/wrap/rpc_wrap.h @@ -34,6 +34,8 @@ extern "C" { /** Exported Functions **/ esp_err_t rpc_init(void); +esp_err_t rpc_start(void); +esp_err_t rpc_stop(void); esp_err_t rpc_deinit(void); esp_err_t rpc_unregister_event_callbacks(void); esp_err_t rpc_register_event_callbacks(void); @@ -99,6 +101,10 @@ esp_err_t rpc_wifi_set_bandwidths(wifi_interface_t ifx, wifi_bandwidths_t *bw); esp_err_t rpc_wifi_get_bandwidths(wifi_interface_t ifx, wifi_bandwidths_t *bw); #endif +esp_err_t rpc_set_dhcp_dns_status(wifi_interface_t interface, uint8_t link_up, + uint8_t dhcp_up, char *dhcp_ip, char *dhcp_nm, char *dhcp_gw, + uint8_t dns_up, char *dns_ip, uint8_t dns_type); + #ifdef __cplusplus } #endif diff --git a/host/drivers/serial/serial_drv.c b/host/drivers/serial/serial_drv.c index 9ed01633..512050ff 100644 --- a/host/drivers/serial/serial_drv.c +++ b/host/drivers/serial/serial_drv.c @@ -69,7 +69,7 @@ int serial_drv_write (struct serial_drv_handle_t* serial_drv_handle, return RET_INVALID; } - ESP_HEXLOGV("serial_write", buf, in_count); + ESP_HEXLOGV("serial_write", buf, in_count, 32); ret = serial_ll_if_g->fops->write(serial_ll_if_g, buf, in_count); if (ret != RET_OK) { *out_count = 0; @@ -108,6 +108,7 @@ uint8_t * serial_drv_read(struct serial_drv_handle_t *serial_drv_handle, return NULL; } + ESP_LOGV(TAG, "Wait for serial_ll_semaphore"); g_h.funcs->_h_get_semaphore(readSemaphore, HOSTED_BLOCK_MAX); if( (!serial_ll_if_g) || @@ -116,6 +117,7 @@ uint8_t * serial_drv_read(struct serial_drv_handle_t *serial_drv_handle, ESP_LOGE(TAG,"serial interface refusing to read\n\r"); return NULL; } + ESP_LOGV(TAG, "Starting serial_ll read"); /* Get buffer from serial interface */ read_buf = serial_ll_if_g->fops->read(serial_ll_if_g, &rx_buf_len); @@ -123,7 +125,7 @@ uint8_t * serial_drv_read(struct serial_drv_handle_t *serial_drv_handle, ESP_LOGE(TAG,"serial read failed\n\r"); return NULL; } - ESP_HEXLOGV("serial_read", read_buf, rx_buf_len); + ESP_HEXLOGV("serial_read", read_buf, rx_buf_len, 32); /* * Read Operation happens in two steps because total read length is unknown @@ -167,6 +169,7 @@ uint8_t * serial_drv_read(struct serial_drv_handle_t *serial_drv_handle, ESP_LOGE(TAG,"Failed to parse RX data \n\r"); goto free_bufs; } + ESP_LOGV(TAG, "TLV parsed"); if (rx_buf_len < (init_read_len + buf_len)) { ESP_LOGE(TAG,"Buf read on serial iface is smaller than expected len\n"); @@ -189,6 +192,7 @@ uint8_t * serial_drv_read(struct serial_drv_handle_t *serial_drv_handle, HOSTED_FREE(read_buf); *out_nbyte = buf_len; + ESP_LOGV(TAG, "Serial payload size(after removing TLV): %" PRIu32, *out_nbyte); return buf; free_bufs: diff --git a/host/drivers/serial/serial_ll_if.c b/host/drivers/serial/serial_ll_if.c index 9a056cae..e7c96273 100644 --- a/host/drivers/serial/serial_ll_if.c +++ b/host/drivers/serial/serial_ll_if.c @@ -21,12 +21,13 @@ #include "transport_drv.h" #include "esp_hosted_transport.h" #include "esp_hosted_header.h" +#include "esp_hosted_log.h" DEFINE_LOG_TAG(serial_ll); /** Macros / Constants **/ #define MAX_SERIAL_INTF 2 -#define TO_SERIAL_INFT_QUEUE_SIZE 100 +#define TO_SERIAL_INFT_QUEUE_SIZE 10 typedef enum { INIT, @@ -74,11 +75,12 @@ static int serial_ll_open(serial_ll_handle_t *serial_ll_hdl) { if (! serial_ll_hdl) { ESP_LOGE(TAG, "serial invalid hdr"); - return STM_FAIL; + return -1; } if (serial_ll_hdl->queue) { /* clean up earlier queue */ + ESP_LOGW(TAG, "Flush existing serial queue"); g_h.funcs->_h_destroy_queue(serial_ll_hdl->queue); } @@ -88,11 +90,11 @@ static int serial_ll_open(serial_ll_handle_t *serial_ll_hdl) if (! serial_ll_hdl->queue) { serial_ll_close(serial_ll_hdl); - return STM_FAIL; + return -1; } serial_ll_hdl->state = ACTIVE; - return STM_OK; + return 0; } /** @@ -108,6 +110,7 @@ static serial_ll_handle_t * get_serial_ll_handle(const uint8_t iface_num) return interface_handle_g[iface_num]; } + ESP_LOGE(TAG, "%s Failed to get interface handle", __func__); return NULL; } @@ -121,6 +124,7 @@ static int serial_ll_close(serial_ll_handle_t * serial_ll_hdl) serial_ll_hdl->state = DESTROY; if (serial_ll_hdl->queue) { + ESP_LOGI(TAG, "Clean-up serial queue"); g_h.funcs->_h_destroy_queue(serial_ll_hdl->queue); serial_ll_hdl->queue = NULL; } @@ -134,7 +138,7 @@ static int serial_ll_close(serial_ll_handle_t * serial_ll_hdl) g_h.funcs->_h_free(serial_ll_hdl); serial_ll_hdl = NULL; } - return STM_OK; + return 0; } @@ -172,18 +176,23 @@ static uint8_t * serial_ll_read(const serial_ll_handle_t * serial_ll_hdl, * * In our example, first approach of blocking read is used. */ + ESP_LOGV(TAG, "before deQ for ll_read"); if (g_h.funcs->_h_dequeue_item(serial_ll_hdl->queue, &buf_handle, HOSTED_BLOCK_MAX)) { ESP_LOGE(TAG, "serial queue recv failed "); return NULL; } + ESP_LOGV(TAG, "after deQ for ll_read"); /* proceed only if payload and length are sane */ if (!buf_handle.payload || !buf_handle.payload_len) { + ESP_LOGE(TAG, "%s: Dequeue result in empty buffer",__func__); return NULL; } *rlen = buf_handle.payload_len; + ESP_HEXLOGV("ll_read", buf_handle.payload, buf_handle.payload_len, 32); + return buf_handle.payload; } @@ -192,7 +201,7 @@ static uint8_t * serial_ll_read(const serial_ll_handle_t * serial_ll_hdl, * @param serial_ll_hdl - handle * wlen - number of bytes to write * wbuffer - buffer to send - * @retval STM_FAIL/STM_OK + * @retval 0 on success, -1 on failure */ static int serial_ll_write(const serial_ll_handle_t * serial_ll_hdl, uint8_t * wbuffer, const uint16_t wlen) @@ -200,11 +209,11 @@ static int serial_ll_write(const serial_ll_handle_t * serial_ll_hdl, if ((! serial_ll_hdl) || (serial_ll_hdl->state != ACTIVE)) { ESP_LOGE(TAG, "serial invalid interface for write"); - return STM_FAIL; + return -1; } return esp_hosted_tx(serial_ll_hdl->if_type, - serial_ll_hdl->if_num, wbuffer, wlen, H_BUFF_NO_ZEROCOPY, H_DEFLT_FREE_FUNC); + serial_ll_hdl->if_num, wbuffer, wlen, H_BUFF_NO_ZEROCOPY, H_DEFLT_FREE_FUNC, 0); } /** @@ -217,7 +226,7 @@ static int serial_ll_write(const serial_ll_handle_t * serial_ll_hdl, * flag_more_frags - Flags for fragmentation * @retval 0 on success, else failure */ -stm_ret_t serial_ll_rx_handler(interface_buffer_handle_t * buf_handle) +int serial_ll_rx_handler(interface_buffer_handle_t * buf_handle) { #define SERIAL_ALLOC_REALLOC_RDATA() \ @@ -260,7 +269,7 @@ stm_ret_t serial_ll_rx_handler(interface_buffer_handle_t * buf_handle) g_h.funcs->_h_memcpy((r.data + r.len), buf_handle->payload, buf_handle->payload_len); r.len += buf_handle->payload_len; - return STM_OK; + return 0; } SERIAL_ALLOC_REALLOC_RDATA(); @@ -292,12 +301,14 @@ stm_ret_t serial_ll_rx_handler(interface_buffer_handle_t * buf_handle) g_h.funcs->_h_free(r.data); r.data = NULL; + ESP_LOGV(TAG, "before ENQ for ll_read"); /* send to serial queue */ if (g_h.funcs->_h_queue_item(serial_ll_hdl->queue, &new_buf_handle, HOSTED_BLOCK_MAX)) { ESP_LOGE(TAG, "Failed send serialif queue[%u]", new_buf_handle.if_num); goto serial_buff_cleanup; } + ESP_LOGV(TAG, "after ENQ for ll_read"); /* Indicate higher layer about data ready for consumption */ if (serial_ll_hdl->serial_rx_callback) { @@ -306,10 +317,11 @@ stm_ret_t serial_ll_rx_handler(interface_buffer_handle_t * buf_handle) goto serial_buff_cleanup; } - return STM_OK; + return 0; serial_buff_cleanup: + ESP_LOGE(TAG, "Err occured, discard current buffer"); H_FREE_PTR_WITH_FUNC(buf_handle->free_buf_handle, buf_handle->priv_buffer_handle); r.len = 0; @@ -317,7 +329,7 @@ stm_ret_t serial_ll_rx_handler(interface_buffer_handle_t * buf_handle) H_FREE_PTR_WITH_FUNC(new_buf_handle.free_buf_handle, new_buf_handle.priv_buffer_handle); g_h.funcs->_h_free(r.data); - return STM_FAIL; + return -1; } /** Exported Functions **/ diff --git a/host/drivers/serial/serial_ll_if.h b/host/drivers/serial/serial_ll_if.h index 08258b48..edff022d 100644 --- a/host/drivers/serial/serial_ll_if.h +++ b/host/drivers/serial/serial_ll_if.h @@ -78,7 +78,7 @@ struct serial_ll_operations { * @param serial_ll_hdl - handle * wlen - number of bytes to write * wbuffer - buffer to send - * @retval STM_FAIL/STM_OK + * @retval 0 on success, -1 on failure */ int (*write) (const serial_ll_handle_t * serial_ll_hdl, uint8_t * wbuffer, const uint16_t wlen); @@ -99,7 +99,7 @@ struct serial_ll_operations { */ serial_ll_handle_t * serial_ll_init(void(*rx_data_ind)(void)); -stm_ret_t serial_ll_rx_handler(interface_buffer_handle_t * buf_handle); +int serial_ll_rx_handler(interface_buffer_handle_t * buf_handle); #ifdef __cplusplus } #endif diff --git a/host/drivers/transport/sdio/sdio_drv.c b/host/drivers/transport/sdio/sdio_drv.c index 9e15819b..c0a79d22 100644 --- a/host/drivers/transport/sdio/sdio_drv.c +++ b/host/drivers/transport/sdio/sdio_drv.c @@ -1,3 +1,62 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/* + * SDIO Driver + * =========== + * + * TX Path (Host -> Slave): + * ------------------------ + * 1. `esp_hosted_tx()`: Higher-level modules call this function to send data. + * 2. `to_slave_queue`: The data is placed into a priority queue. + * 3. `sdio_write_task`: This thread waits for data on the queue, retrieves it, + * and writes it to the SDIO bus. + * + * RX Path (Slave -> Host): + * ------------------------ + * 1. `sdio_read_task`: This thread waits for an interrupt from the slave, + * reads the raw data stream into a double buffer, and signals the next + * thread. + * 2. `sdio_data_to_rx_buf_task`: Processes the stream from the double buffer, + * extracts individual packets, and places them onto the `from_slave_queue`. + * 3. `sdio_process_rx_task`: Retrieves packets from the queue and dispatches + * them to the appropriate higher-level handler (e.g., WiFi, BT). + * + * + * + * Host MCU + * +--------------------------------------------------------------------------------------------------+ + * | TX Path (Host -> Slave) RX Path (Slave -> Host) | + * | +------------------------------------------------------+ +-----------------------------------+ | + * | | Higher Layers (e.g. Wi-Fi) | | SDIO Bus | | + * | | | | | | | | + * | | v | | v | | + * | | esp_hosted_tx() | | sdio_read_task (Thread) | | + * | | | | | | | | + * | | v | | | Data Stream | | + * | | to_slave_queue (Queue) | | v | | + * | | | | | Double Buffer | | + * | | v | | | | | + * | | sdio_write_task (Thread) | | v | | + * | | | | | sdio_data_to_rx_buf_task (Thread) | | + * | | v | | | | | + * | | SDIO Bus | | | Packets | | + * | +------------------------------------------------------+ | v | | + * | | from_slave_queue (Queue) | | + * | | | | | + * | | v | | + * | | sdio_process_rx_task (Thread) | | + * | | | | | + * | | v | | + * | | Higher Layers (Wi-Fi, BT, etc) | | + * | +-----------------------------------+ | + * +--------------------------------------------------------------------------------------------------+ + * + * + */ // SPDX-License-Identifier: Apache-2.0 // Copyright 2015-2023 Espressif Systems (Shanghai) PTE LTD // @@ -19,11 +78,15 @@ #include "sdio_reg.h" #include "serial_drv.h" #include "stats.h" -#include "esp_log.h" #include "esp_hosted_log.h" #include "hci_drv.h" #include "endian.h" #include "esp_hosted_transport_init.h" +#include "power_save_drv.h" +#include "esp_hosted_power_save.h" +#include "esp_hosted_config.h" +#include "esp_hosted_transport_config.h" + static const char TAG[] = "H_SDIO_DRV"; @@ -37,9 +100,10 @@ static const char TAG[] = "H_SDIO_DRV"; #define TO_SLAVE_QUEUE_SIZE H_SDIO_TX_Q #define FROM_SLAVE_QUEUE_SIZE H_SDIO_RX_Q -#define RX_TASK_STACK_SIZE 4096 -#define TX_TASK_STACK_SIZE 4096 -#define PROCESS_RX_TASK_STACK_SIZE 4096 +#define RX_TASK_STACK_SIZE CONFIG_ESP_HOSTED_DFLT_TASK_STACK +#define TX_TASK_STACK_SIZE CONFIG_ESP_HOSTED_DFLT_TASK_STACK +#define PROCESS_RX_TASK_STACK_SIZE CONFIG_ESP_HOSTED_DFLT_TASK_STACK +#define RX_BUF_TASK_STACK_SIZE CONFIG_ESP_HOSTED_DFLT_TASK_STACK #define RX_TIMEOUT_TICKS 50 #define BUFFER_AVAILABLE 1 @@ -86,7 +150,6 @@ static uint8_t *reg_buf = NULL; /* Create mempool for cache mallocs */ static struct mempool * buf_mp_g; -/* TODO to move this in transport drv */ extern transport_channel_t *chan_arr[ESP_MAX_IF]; static void * sdio_handle = NULL; @@ -126,7 +189,9 @@ typedef struct { int write_index; } double_buf_t; -static double_buf_t double_buf; +static double_buf_t double_buf = { + .read_index = -1, +}; // sem to trigger sdio_data_to_rx_buf_task() static semaphore_handle_t sem_double_buf_xfer_data; @@ -134,7 +199,7 @@ static semaphore_handle_t sem_double_buf_xfer_data; static void * sdio_rx_buf_thread; static void sdio_data_to_rx_buf_task(void const* pvParameters); -static esp_err_t sdio_generate_slave_intr(uint8_t intr_no); +static int sdio_generate_slave_intr(uint8_t intr_no); static void sdio_write_task(void const* pvParameters); static void sdio_read_task(void const* pvParameters); @@ -164,9 +229,66 @@ static inline void sdio_buffer_free(void *buf) mempool_free(buf_mp_g, buf); } -void transport_deinit_internal(void) +void bus_deinit_internal(void *bus_handle) { - /* TODO */ + uint8_t prio_q_idx = 0; + + if (sdio_read_thread) { + g_h.funcs->_h_thread_cancel(sdio_read_thread); + sdio_read_thread = NULL; + } + + if (sdio_write_thread) { + g_h.funcs->_h_thread_cancel(sdio_write_thread); + sdio_write_thread = NULL; + } + + if (sdio_process_rx_thread) { + g_h.funcs->_h_thread_cancel(sdio_process_rx_thread); + sdio_process_rx_thread = NULL; + } + + if (sdio_rx_buf_thread) { + g_h.funcs->_h_thread_cancel(sdio_rx_buf_thread); + sdio_rx_buf_thread = NULL; + } + + for (prio_q_idx=0; prio_q_idx_h_destroy_queue(to_slave_queue[prio_q_idx]); + to_slave_queue[prio_q_idx] = NULL; + } + if (from_slave_queue[prio_q_idx]) { + g_h.funcs->_h_destroy_queue(from_slave_queue[prio_q_idx]); + from_slave_queue[prio_q_idx] = NULL; + } + } + + if (sem_to_slave_queue) { + g_h.funcs->_h_destroy_semaphore(sem_to_slave_queue); + sem_to_slave_queue = NULL; + } + if (sem_from_slave_queue) { + g_h.funcs->_h_destroy_semaphore(sem_from_slave_queue); + sem_from_slave_queue = NULL; + } + if (sem_double_buf_xfer_data) { + g_h.funcs->_h_destroy_semaphore(sem_double_buf_xfer_data); + sem_double_buf_xfer_data = NULL; + } + +#if defined(USE_DRIVER_LOCK) + if (sdio_bus_lock) { + g_h.funcs->_h_destroy_mutex(sdio_bus_lock); + sdio_bus_lock = NULL; + } +#endif + + sdio_mempool_destroy(); + if (bus_handle) { + g_h.funcs->_h_bus_deinit(bus_handle); + } + sdio_handle = NULL; } static int sdio_generate_slave_intr(uint8_t intr_no) @@ -370,6 +492,7 @@ static void sdio_write_task(void const* pvParameters) uint32_t len_to_send; uint32_t buf_needed; uint8_t tx_needed = 1; + uint8_t flag = 0; while (!sdio_start_write_thread) g_h.funcs->_h_msleep(10); @@ -385,13 +508,19 @@ static void sdio_write_task(void const* pvParameters) tx_needed = 0; /* No Tx msg */ } - if (tx_needed) + if (tx_needed) { len = buf_handle.payload_len; + flag = buf_handle.flag; + } - if (!len) { + if (!flag && !len) { ESP_LOGE(TAG, "%s: Empty len", __func__); goto done; } +#if ESP_PKT_STATS + if (buf_handle.if_type == ESP_STA_IF) + pkt_stats.sta_tx_trans_in++; +#endif if (!buf_handle.payload_zcopy) { sendbuf = sdio_buffer_alloc(MEMSET_REQUIRED); @@ -425,6 +554,8 @@ static void sdio_write_task(void const* pvParameters) payload_header->seq_num = htole16(buf_handle.seq_num); payload_header->flags = buf_handle.flag; + UPDATE_HEADER_TX_PKT_NO(payload_header); + if (payload_header->if_type == ESP_HCI_IF) { // special handling for HCI if (!buf_handle.payload_zcopy) { @@ -452,13 +583,17 @@ static void sdio_write_task(void const* pvParameters) ret = sdio_is_write_buffer_available(buf_needed); if (ret != BUFFER_AVAILABLE) { ESP_LOGV(TAG, "no SDIO write buffers on slave device"); +#if ESP_PKT_STATS + if (payload_header->if_type == ESP_STA_IF) + pkt_stats.sta_tx_out_drop++; +#endif goto unlock_done; } pos = sendbuf; data_left = len + sizeof(struct esp_payload_header); - ESP_HEXLOGV("h_sdio_tx", sendbuf, min(32,data_left)); + ESP_HEXLOGV("bus_TX", sendbuf, data_left, 32); len_to_send = 0; retries = 0; @@ -502,8 +637,8 @@ static void sdio_write_task(void const* pvParameters) sdio_tx_buf_count = sdio_tx_buf_count % ESP_TX_BUFFER_MAX; #if ESP_PKT_STATS - if (buf_handle.if_type == ESP_STA_IF) - pkt_stats.sta_tx_out++; + if (buf_handle.if_type == ESP_STA_IF) + pkt_stats.sta_tx_out++; #endif unlock_done: @@ -524,13 +659,21 @@ static int is_valid_sdio_rx_packet(uint8_t *rxbuff_a, uint16_t *len_a, uint16_t #if H_SDIO_CHECKSUM uint16_t rx_checksum = 0, checksum = 0; #endif + uint8_t is_wakeup_pkt = 0; + UPDATE_HEADER_RX_PKT_NO(h); if (!h || !len_a || !offset_a) return 0; /* Fetch length and offset from payload header */ len = le16toh(h->len); offset = le16toh(h->offset); + is_wakeup_pkt = h->flags & FLAG_WAKEUP_PKT; + + if (is_wakeup_pkt && len<1500) { + ESP_LOGI(TAG, "Host wakeup triggered, len: %u ", len); + ESP_HEXLOGW("Wakeup_pkt", rxbuff_a+offset, len, min(len,128)); + } if ((!len) || (len > MAX_PAYLOAD_SIZE) || @@ -542,6 +685,12 @@ static int is_valid_sdio_rx_packet(uint8_t *rxbuff_a, uint16_t *len_a, uint16_t * 3. payload header size mismatch, * wrong header/bit packing? * */ + + if (len) { + ESP_LOGE(TAG, "len[%u]>max[%u] OR offset[%u] != exp[%u], Drop", + len, MAX_PAYLOAD_SIZE, offset, sizeof(struct esp_payload_header)); + } + return 0; } @@ -595,6 +744,11 @@ static esp_err_t sdio_push_pkt_to_queue(uint8_t * rxbuff, uint16_t len, uint16_t pkt_prio = PRIO_Q_BT; /* else OTHERS by default */ + if( (!from_slave_queue[pkt_prio]) || (!sem_from_slave_queue)) { + ESP_LOGI(TAG, "uninitialised from_slave_queue or sem_from_slave_queue"); + return ESP_FAIL; + } + g_h.funcs->_h_queue_item(from_slave_queue[pkt_prio], &buf_handle, HOSTED_BLOCK_MAX); g_h.funcs->_h_post_semaphore(sem_from_slave_queue); @@ -639,7 +793,7 @@ static esp_err_t sdio_push_data_to_queue(uint8_t * buf, uint32_t buf_len) * 3. payload header size mismatch, * wrong header/bit packing? * */ - ESP_LOGE(TAG, "Dropping packet"); + ESP_LOGW(TAG, "Dropping packet"); HOSTED_FREE(buf); return ESP_FAIL; } @@ -698,6 +852,7 @@ static esp_err_t sdio_push_data_to_queue(uint8_t * buf, uint32_t buf_len) /* Have to drop packets in the stream as we cannot decode * them after this error */ ESP_LOGE(TAG, "Dropping packet(s) from stream"); + /* TODO: Free by caller? */ return ESP_FAIL; } /* Allocate rx buffer */ @@ -731,6 +886,8 @@ static void sdio_data_to_rx_buf_task(void const* pvParameters) uint8_t * buf; uint32_t len; + ESP_LOGI(TAG, "sdio_data_to_rx_buf_task started"); + while (1) { g_h.funcs->_h_get_semaphore(sem_double_buf_xfer_data, HOSTED_BLOCK_MAX); @@ -750,9 +907,51 @@ static void sdio_data_to_rx_buf_task(void const* pvParameters) } } + +#if H_HOST_USES_STATIC_NETIF +esp_netif_t *s_netif_sta = NULL; + +esp_netif_t * create_sta_netif_with_static_ip(void) +{ + ESP_LOGI(TAG, "Create netif with static IP"); + /* Create "almost" default station, but with un-flagged DHCP client */ + esp_netif_inherent_config_t netif_cfg; + memcpy(&netif_cfg, ESP_NETIF_BASE_DEFAULT_WIFI_STA, sizeof(netif_cfg)); + netif_cfg.flags &= ~ESP_NETIF_DHCP_CLIENT; + esp_netif_config_t cfg_sta = { + .base = &netif_cfg, + .stack = ESP_NETIF_NETSTACK_DEFAULT_WIFI_STA, + }; + esp_netif_t *sta_netif = esp_netif_new(&cfg_sta); + assert(sta_netif); + + ESP_LOGI(TAG, "Creating slave sta netif with static IP"); + + ESP_ERROR_CHECK(esp_netif_attach_wifi_station(sta_netif)); + ESP_ERROR_CHECK(esp_wifi_set_default_wifi_sta_handlers()); + + /* stop dhcpc */ + ESP_ERROR_CHECK(esp_netif_dhcpc_stop(sta_netif)); + + return sta_netif; +} + +static esp_err_t create_static_netif(void) +{ + /* Only initialize networking stack if not already initialized */ + if (!s_netif_sta) { + esp_netif_init(); + esp_event_loop_create_default(); + s_netif_sta = create_sta_netif_with_static_ip(); + assert(s_netif_sta); + } + return ESP_OK; +} +#endif + static void sdio_read_task(void const* pvParameters) { - esp_err_t res; + esp_err_t res = ESP_OK; uint8_t *rxbuff = NULL; int ret; uint32_t len_from_slave; @@ -776,14 +975,10 @@ static void sdio_read_task(void const* pvParameters) break; } } +#if H_HOST_USES_STATIC_NETIF + create_static_netif(); +#endif - res = g_h.funcs->_h_sdio_card_init(sdio_handle); - if (res != ESP_OK) { - ESP_LOGE(TAG, "sdio card init failed"); - return; - } - - create_debugging_tasks(); #if DO_COMBINED_REG_READ reg_buf = MEM_ALLOC(REG_BUF_LEN); @@ -797,16 +992,18 @@ static void sdio_read_task(void const* pvParameters) ESP_LOGI(TAG, "SDIO Host operating in PACKET MODE"); #endif - ESP_LOGI(TAG, "generate slave intr"); + ESP_LOGI(TAG, "Open data path at slave"); + - // inform the slave device that we are ready sdio_generate_slave_intr(ESP_OPEN_DATA_PATH); for (;;) { // wait for sdio interrupt from slave - // call will block until there is an interrupt, timeout or error + /* call will block until there is an interrupt, timeout or error */ + ESP_LOGD(TAG, "--- Wait for SDIO intr ---"); res = g_h.funcs->_h_sdio_wait_slave_intr(sdio_handle, HOSTED_BLOCK_MAX); + ESP_LOGD(TAG, "--- SDIO intr received ---"); if (res != ESP_OK) { ESP_LOGE(TAG, "wait_slave_intr error: %d", res); @@ -820,6 +1017,8 @@ static void sdio_read_task(void const* pvParameters) ESP_LOGE(TAG, "failed to read registers"); SDIO_DRV_UNLOCK(); + ESP_LOGI(TAG, "Host is reseting itself, to avoid any sdio race condition"); + g_h.funcs->_h_restart_host(); continue; } @@ -871,10 +1070,12 @@ static void sdio_read_task(void const* pvParameters) ret = sdio_get_len_from_slave(&len_from_slave, ACQUIRE_LOCK); #endif if (ret || !len_from_slave) { - ESP_LOGD(TAG, "invalid ret or len_from_slave: %d %ld", ret, len_from_slave); + ESP_LOGW(TAG, "invalid ret or len_from_slave: %d %ld", ret, len_from_slave); SDIO_DRV_UNLOCK(); continue; + } else { + ESP_LOGD(TAG, "len_from_slave: %ld", len_from_slave); } #endif @@ -937,9 +1138,6 @@ static void sdio_read_task(void const* pvParameters) } } -/** - * TODO: unify sdio_process_rx_task() and spi_process_rx_task() - */ static void sdio_process_rx_task(void const* pvParameters) { interface_buffer_handle_t buf_handle_l = {0}; @@ -968,8 +1166,9 @@ static void sdio_process_rx_task(void const* pvParameters) buf_handle = &buf_handle_l; - ESP_LOGV(TAG, "h_sdio_rx: iftype:%d", (int)buf_handle->if_type); - ESP_HEXLOGV("h_sdio_rx", buf_handle->payload, min(buf_handle->payload_len,32)); + ESP_LOGV(TAG, "bus_rx: iftype:%d", (int)buf_handle->if_type); + ESP_HEXLOGV("bus_rx", buf_handle->priv_buffer_handle, + buf_handle->payload_len+H_ESP_PAYLOAD_HEADER_OFFSET, 32); if (buf_handle->if_type == ESP_SERIAL_IF) { /* serial interface path */ @@ -986,6 +1185,10 @@ static void sdio_process_rx_task(void const* pvParameters) memcpy(copy_payload, buf_handle->payload, buf_handle->payload_len); H_FREE_PTR_WITH_FUNC(buf_handle->free_buf_handle, buf_handle->priv_buffer_handle); +#if ESP_PKT_STATS + if (buf_handle->if_type == ESP_STA_IF) + pkt_stats.sta_rx_out++; +#endif ret = chan_arr[buf_handle->if_type]->rx(chan_arr[buf_handle->if_type]->api_chan, copy_payload, copy_payload, buf_handle->payload_len); if (unlikely(ret)) @@ -998,16 +1201,20 @@ static void sdio_process_rx_task(void const* pvParameters) } #endif } else if (buf_handle->if_type == ESP_PRIV_IF) { + ESP_LOGI(TAG, "Received ESP_PRIV_IF type message"); process_priv_communication(buf_handle); hci_drv_show_configuration(); /* priv transaction received */ ESP_LOGI(TAG, "Received INIT event"); - sdio_start_write_thread = true; event = (struct esp_priv_event *) (buf_handle->payload); + ESP_LOGI(TAG, "Event type: 0x%x", event->event_type); if (event->event_type != ESP_PRIV_EVENT_INIT) { /* User can re-use this type of transaction */ + ESP_LOGW(TAG, "Not an ESP_PRIV_EVENT_INIT event: 0x%x", event->event_type); } + ESP_LOGI(TAG, "Write thread started"); + sdio_start_write_thread = true; } else if (buf_handle->if_type == ESP_HCI_IF) { hci_rx_handler(buf_handle); } else if (buf_handle->if_type == ESP_TEST_IF) { @@ -1019,11 +1226,6 @@ static void sdio_process_rx_task(void const* pvParameters) ESP_LOGW(TAG, "unknown type %d ", buf_handle->if_type); } -#if ESP_PKT_STATS - if (buf_handle->if_type == ESP_STA_IF) - pkt_stats.sta_rx_out++; -#endif - /* Free buffer handle */ /* When buffer offloaded to other module, that module is * responsible for freeing buffer. In case not offloaded or @@ -1036,7 +1238,7 @@ static void sdio_process_rx_task(void const* pvParameters) } } -void transport_init_internal(void) +void *bus_init_internal(void) { uint8_t prio_q_idx = 0; /* register callback */ @@ -1082,10 +1284,10 @@ void transport_init_internal(void) sem_double_buf_xfer_data = g_h.funcs->_h_create_semaphore(1); assert(sem_double_buf_xfer_data); - g_h.funcs->_h_get_semaphore(sem_double_buf_xfer_data, HOSTED_BLOCK_MAX); + g_h.funcs->_h_get_semaphore(sem_double_buf_xfer_data, 0); sdio_rx_buf_thread = g_h.funcs->_h_thread_create("sdio_rx_buf", - DFLT_TASK_PRIO, DFLT_TASK_STACK_SIZE, sdio_data_to_rx_buf_task, NULL); + DFLT_TASK_PRIO, RX_BUF_TASK_STACK_SIZE, sdio_data_to_rx_buf_task, NULL); sdio_read_thread = g_h.funcs->_h_thread_create("sdio_read", DFLT_TASK_PRIO, DFLT_TASK_STACK_SIZE, sdio_read_task, NULL); @@ -1101,11 +1303,14 @@ void transport_init_internal(void) sdio_bus_lock = g_h.funcs->_h_create_mutex(); assert(sdio_bus_lock); #endif + ESP_LOGD(TAG, "sdio bus init done"); + + return sdio_handle; } int esp_hosted_tx(uint8_t iface_type, uint8_t iface_num, uint8_t * wbuffer, uint16_t wlen, uint8_t buff_zcopy, - void (*free_wbuf_fun)(void* ptr)) + void (*free_wbuf_fun)(void* ptr), uint8_t flag) { interface_buffer_handle_t buf_handle = {0}; void (*free_func)(void* ptr) = NULL; @@ -1115,9 +1320,9 @@ int esp_hosted_tx(uint8_t iface_type, uint8_t iface_num, if (free_wbuf_fun) free_func = free_wbuf_fun; - if (!wbuffer || !wlen || - (wlen > MAX_PAYLOAD_SIZE) || - !transport_up) { + + if ((!wbuffer || !wlen || (wlen > MAX_PAYLOAD_SIZE) || !transport_up)) { + ESP_LOGE(TAG, "tx fail: NULL buff, invalid len (%u) or len > max len (%u), transport_up(%u))", wlen, MAX_PAYLOAD_SIZE, transport_up); H_FREE_PTR_WITH_FUNC(free_func, wbuffer); @@ -1130,6 +1335,7 @@ int esp_hosted_tx(uint8_t iface_type, uint8_t iface_num, buf_handle.payload = wbuffer; buf_handle.priv_buffer_handle = wbuffer; buf_handle.free_buf_handle = free_func; + buf_handle.flag = flag; if (buf_handle.if_type == ESP_SERIAL_IF) pkt_prio = PRIO_Q_SERIAL; @@ -1137,13 +1343,129 @@ int esp_hosted_tx(uint8_t iface_type, uint8_t iface_num, pkt_prio = PRIO_Q_BT; /* else OTHERS by default */ - g_h.funcs->_h_queue_item(to_slave_queue[pkt_prio], &buf_handle, HOSTED_BLOCK_MAX); - g_h.funcs->_h_post_semaphore(sem_to_slave_queue); - #if ESP_PKT_STATS if (buf_handle.if_type == ESP_STA_IF) pkt_stats.sta_tx_in_pass++; #endif + g_h.funcs->_h_queue_item(to_slave_queue[pkt_prio], &buf_handle, HOSTED_BLOCK_MAX); + g_h.funcs->_h_post_semaphore(sem_to_slave_queue); + + + return ESP_OK; +} + +void check_if_max_freq_used(uint8_t chip_type) +{ +#ifdef CONFIG_IDF_TARGET + if (H_SDIO_CLOCK_FREQ_KHZ < 40000) { + ESP_LOGW(TAG, "SDIO clock freq set to [%u]KHz, Max possible (on PCB) is 40000KHz", H_SDIO_CLOCK_FREQ_KHZ); + } +#else + if (H_SDIO_CLOCK_FREQ_KHZ < 50000) { + ESP_LOGW(TAG, "SDIO clock freq set to [%u]KHz, Max possible (on PCB) is 50000KHz", H_SDIO_CLOCK_FREQ_KHZ); + } +#endif +} + + +static esp_err_t transport_card_init(void *bus_handle) +{ + return g_h.funcs->_h_sdio_card_init(bus_handle); +} + +static esp_err_t transport_gpio_reset(void *bus_handle, gpio_pin_t reset_pin) +{ + g_h.funcs->_h_config_gpio(reset_pin.port, reset_pin.pin, H_GPIO_MODE_DEF_OUTPUT); + g_h.funcs->_h_write_gpio(reset_pin.port, reset_pin.pin, H_RESET_VAL_ACTIVE); + g_h.funcs->_h_msleep(1); + g_h.funcs->_h_write_gpio(reset_pin.port, reset_pin.pin, H_RESET_VAL_INACTIVE); + g_h.funcs->_h_msleep(1); + g_h.funcs->_h_write_gpio(reset_pin.port, reset_pin.pin, H_RESET_VAL_ACTIVE); + g_h.funcs->_h_msleep(1200); return ESP_OK; } + +int ensure_slave_bus_ready(void *bus_handle) +{ + int res = -1; + gpio_pin_t reset_pin = { .port = H_GPIO_PIN_RESET_Port, .pin = H_GPIO_PIN_RESET_Pin }; + + if (ESP_TRANSPORT_OK != esp_hosted_transport_get_reset_config(&reset_pin)) { + ESP_LOGE(TAG, "Unable to get RESET config for transport"); + return -1; + } + + assert(reset_pin.pin != -1); + + release_slave_reset_gpio_post_wakeup(); + +#if H_SLAVE_RESET_ONLY_IF_NECESSARY + { + /* Reset will be done later if needed during communication initialization */ + res = transport_card_init(bus_handle); + if (res) { + ESP_LOGE(TAG, "card init failed"); + } else { + ESP_LOGI(TAG, "Card init success, TRANSPORT_RX_ACTIVE"); + set_transport_state(TRANSPORT_RX_ACTIVE); + return 0; + } + + /* Give a chance to reset and recover the slave */ + if (res) { + ESP_LOGI(TAG, "Attempt slave reset"); + transport_gpio_reset(bus_handle, reset_pin); + } + + res = transport_card_init(bus_handle); + if (res) { + ESP_LOGE(TAG, "card init failed even after slave reset"); + } else { + ESP_LOGI(TAG, "Card init success"); + set_transport_state(TRANSPORT_RX_ACTIVE); + return 0; + } + } +#else /* H_RESET_ON_EVERY_BOOTUP */ + if (esp_hosted_woke_from_deep_sleep()) { + ESP_LOGI(TAG, "Host woke up from deep sleep"); + + g_h.funcs->_h_msleep(500); + set_transport_state(TRANSPORT_RX_ACTIVE); + + res = transport_card_init(bus_handle); + if (res) { + ESP_LOGE(TAG, "card init failed"); + } else { + ESP_LOGI(TAG, "Card init success, TRANSPORT_RX_ACTIVE"); + stop_host_power_save(); + } + } else { + /* Always reset slave on host bootup */ + ESP_LOGW(TAG, "Reset slave using GPIO[%u]", reset_pin.pin); + transport_gpio_reset(bus_handle, reset_pin); + + res = transport_card_init(bus_handle); + if (res) { + ESP_LOGE(TAG, "card init failed"); + } else { + ESP_LOGI(TAG, "Card init success, TRANSPORT_RX_ACTIVE"); + set_transport_state(TRANSPORT_RX_ACTIVE); + } + } +#endif + return res; +} + +int bus_inform_slave_host_power_save_start(void) +{ + ESP_LOGI(TAG, "Inform slave, host power save is started"); + return sdio_generate_slave_intr(ESP_POWER_SAVE_ON); +} + +int bus_inform_slave_host_power_save_stop(void) +{ + ESP_LOGI(TAG, "Inform slave, host power save is stopped"); + return sdio_generate_slave_intr(ESP_POWER_SAVE_OFF); +} diff --git a/host/drivers/transport/spi/spi_drv.c b/host/drivers/transport/spi/spi_drv.c index 3305a485..94259fe9 100644 --- a/host/drivers/transport/spi/spi_drv.c +++ b/host/drivers/transport/spi/spi_drv.c @@ -16,7 +16,6 @@ #include "mempool.h" #include "common.h" #include "esp_hosted_config.h" -//#include "netdev_if.h" #include "transport_drv.h" #include "spi_drv.h" #include "serial_drv.h" @@ -26,17 +25,15 @@ #include "stats.h" #include "hci_drv.h" #include "endian.h" +#include "power_save_drv.h" +#include "esp_hosted_power_save.h" +#include "esp_hosted_transport_config.h" DEFINE_LOG_TAG(spi); void * spi_handle = NULL; semaphore_handle_t spi_trans_ready_sem; -#if DEBUG_HOST_TX_SEMAPHORE -#define H_DEBUG_GPIO_PIN_Host_Tx_Port NULL -#define H_DEBUG_GPIO_PIN_Host_Tx_Pin -1 -#endif - static uint8_t schedule_dummy_rx = 0; static void * spi_transaction_thread; @@ -65,6 +62,48 @@ static void spi_transaction_task(void const* pvParameters); static void spi_process_rx_task(void const* pvParameters); static uint8_t * get_next_tx_buffer(uint8_t *is_valid_tx_buf, void (**free_func)(void* ptr)); +#if H_HOST_USES_STATIC_NETIF +/* Netif creation is now handled by the example code */ +esp_netif_t *s_netif_sta = NULL; + +esp_netif_t * create_sta_netif_with_static_ip(void) +{ + ESP_LOGI(TAG, "Create netif with static IP"); + /* Create "almost" default station, but with un-flagged DHCP client */ + esp_netif_inherent_config_t netif_cfg; + memcpy(&netif_cfg, ESP_NETIF_BASE_DEFAULT_WIFI_STA, sizeof(netif_cfg)); + netif_cfg.flags &= ~ESP_NETIF_DHCP_CLIENT; + esp_netif_config_t cfg_sta = { + .base = &netif_cfg, + .stack = ESP_NETIF_NETSTACK_DEFAULT_WIFI_STA, + }; + esp_netif_t *sta_netif = esp_netif_new(&cfg_sta); + assert(sta_netif); + + ESP_LOGI(TAG, "Creating slave sta netif with static IP"); + + ESP_ERROR_CHECK(esp_netif_attach_wifi_station(sta_netif)); + ESP_ERROR_CHECK(esp_wifi_set_default_wifi_sta_handlers()); + + /* stop dhcpc */ + ESP_ERROR_CHECK(esp_netif_dhcpc_stop(sta_netif)); + + return sta_netif; +} + +static esp_err_t create_static_netif(void) +{ + /* Only initialize networking stack if not already initialized */ + if (!s_netif_sta) { + esp_netif_init(); + esp_event_loop_create_default(); + s_netif_sta = create_sta_netif_with_static_ip(); + assert(s_netif_sta); + } + return ESP_OK; +} +#endif + static inline void spi_mempool_create(void) { MEM_DUMP("spi_mempool_create"); @@ -119,9 +158,81 @@ static void FAST_RAM_ATTR gpio_dr_isr_handler(void* arg) ESP_EARLY_LOGV(TAG, "%s", __func__); } -void transport_deinit_internal(void) +void bus_deinit_internal(void *bus_handle) { - /* TODO */ + if (!bus_handle) { + ESP_LOGE(TAG, "Invalid bus handle for deinit"); + return; + } + + ESP_LOGI(TAG, "Deinitializing SPI bus"); + + /* Disable interrupts first */ + if (H_GPIO_HANDSHAKE_Pin != -1) { + g_h.funcs->_h_teardown_gpio_interrupt(H_GPIO_HANDSHAKE_Port, H_GPIO_HANDSHAKE_Pin); + } + + if (H_GPIO_DATA_READY_Pin != -1) { + g_h.funcs->_h_teardown_gpio_interrupt(H_GPIO_DATA_READY_Port, H_GPIO_DATA_READY_Pin); + } + + /* Delete threads */ + if (spi_transaction_thread) { + g_h.funcs->_h_thread_cancel(spi_transaction_thread); + spi_transaction_thread = NULL; + } + + if (spi_rx_thread) { + g_h.funcs->_h_thread_cancel(spi_rx_thread); + spi_rx_thread = NULL; + } + + /* Deinitialize SPI bus through platform-specific handler */ + if (spi_handle) { + g_h.funcs->_h_bus_deinit(bus_handle); + spi_handle = NULL; + } + + /* Delete semaphores */ + if (spi_trans_ready_sem) { + g_h.funcs->_h_destroy_semaphore(spi_trans_ready_sem); + spi_trans_ready_sem = NULL; + } + + /* Destroy memory pool */ + spi_mempool_destroy(); + + /* Delete queues */ + for (uint8_t prio_q_idx = 0; prio_q_idx < MAX_PRIORITY_QUEUES; prio_q_idx++) { + if (from_slave_queue[prio_q_idx]) { + g_h.funcs->_h_destroy_queue(from_slave_queue[prio_q_idx]); + from_slave_queue[prio_q_idx] = NULL; + } + + if (to_slave_queue[prio_q_idx]) { + g_h.funcs->_h_destroy_queue(to_slave_queue[prio_q_idx]); + to_slave_queue[prio_q_idx] = NULL; + } + } + + /* Delete semaphores for queues */ + if (sem_from_slave_queue) { + g_h.funcs->_h_destroy_semaphore(sem_from_slave_queue); + sem_from_slave_queue = NULL; + } + + if (sem_to_slave_queue) { + g_h.funcs->_h_destroy_semaphore(sem_to_slave_queue); + sem_to_slave_queue = NULL; + } + + /* Delete mutex */ + if (spi_bus_lock) { + g_h.funcs->_h_destroy_mutex(spi_bus_lock); + spi_bus_lock = NULL; + } + + ESP_LOGI(TAG, "SPI bus deinitialized"); } /** @@ -129,7 +240,7 @@ void transport_deinit_internal(void) * @param transport_evt_handler_fp - event handler * @retval None */ -void transport_init_internal(void) +void *bus_init_internal(void) { uint8_t prio_q_idx; @@ -139,8 +250,10 @@ void transport_init_internal(void) sem_to_slave_queue = g_h.funcs->_h_create_semaphore(TO_SLAVE_QUEUE_SIZE*MAX_PRIORITY_QUEUES); assert(sem_to_slave_queue); + g_h.funcs->_h_get_semaphore(sem_to_slave_queue, 0); sem_from_slave_queue = g_h.funcs->_h_create_semaphore(FROM_SLAVE_QUEUE_SIZE*MAX_PRIORITY_QUEUES); assert(sem_from_slave_queue); + g_h.funcs->_h_get_semaphore(sem_from_slave_queue, 0); for (prio_q_idx=0; prio_q_idx_h_thread_create("spi_rx", DFLT_TASK_PRIO, DFLT_TASK_STACK_SIZE, spi_process_rx_task, NULL); assert(spi_rx_thread); + + return spi_handle; } @@ -186,30 +301,37 @@ void transport_init_internal(void) */ static int process_spi_rx_buf(uint8_t * rxbuff) { - struct esp_payload_header *payload_header; + struct esp_payload_header *h; uint16_t rx_checksum = 0, checksum = 0; interface_buffer_handle_t buf_handle = {0}; uint16_t len, offset; int ret = 0; uint8_t pkt_prio = PRIO_Q_OTHERS; + uint8_t is_wakeup_pkt = 0; if (!rxbuff) return -1; - ESP_HEXLOGV("h_spi_rx", rxbuff, 16); - /* create buffer rx handle, used for processing */ - payload_header = (struct esp_payload_header *) rxbuff; + h = (struct esp_payload_header *) rxbuff; /* Fetch length and offset from payload header */ - len = le16toh(payload_header->len); - offset = le16toh(payload_header->offset); + len = le16toh(h->len); + offset = le16toh(h->offset); + is_wakeup_pkt = h->flags & FLAG_WAKEUP_PKT; - if (ESP_MAX_IF == payload_header->if_type) + if (is_wakeup_pkt && len<1500) { + ESP_LOGW(TAG, "Host wakeup triggered, if_type: %u, len: %u ", h->if_type, len); + //ESP_HEXLOGW("Wakeup_pkt", rxbuff+offset, len, min(len, 128)); + } + + ESP_HEXLOGD("h_spi_rx", rxbuff, len, 32); + + if (ESP_MAX_IF == h->if_type) schedule_dummy_rx = 0; if (!len) { - wifi_tx_throttling = payload_header->throttle_cmd; + wifi_tx_throttling = h->throttle_cmd; ret = -5; goto done; } @@ -228,8 +350,8 @@ static int process_spi_rx_buf(uint8_t * rxbuff) goto done; } else { - rx_checksum = le16toh(payload_header->checksum); - payload_header->checksum = 0; + rx_checksum = le16toh(h->checksum); + h->checksum = 0; checksum = compute_checksum(rxbuff, len+offset); //TODO: checksum needs to be configurable from menuconfig @@ -237,12 +359,12 @@ static int process_spi_rx_buf(uint8_t * rxbuff) buf_handle.priv_buffer_handle = rxbuff; buf_handle.free_buf_handle = spi_buffer_free; buf_handle.payload_len = len; - buf_handle.if_type = payload_header->if_type; - buf_handle.if_num = payload_header->if_num; + buf_handle.if_type = h->if_type; + buf_handle.if_num = h->if_num; buf_handle.payload = rxbuff + offset; - buf_handle.seq_num = le16toh(payload_header->seq_num); - buf_handle.flag = payload_header->flags; - wifi_tx_throttling = payload_header->throttle_cmd; + buf_handle.seq_num = le16toh(h->seq_num); + buf_handle.flag = h->flags; + wifi_tx_throttling = h->throttle_cmd; #if 0 #if CONFIG_H_LOWER_MEMCOPY if ((buf_handle.if_type == ESP_STA_IF) || @@ -333,7 +455,7 @@ static int check_and_execute_spi_transaction(void) schedule_dummy_tx = 0; } else { schedule_dummy_tx = 1; - ESP_HEXLOGV("h_spi_tx", txbuff, 16); + ESP_HEXLOGD("h_spi_tx", txbuff, 32, 32); } ESP_LOGV(TAG, "dr %u tx_valid %u\n", gpio_rx_data_ready, is_valid_tx_buf); @@ -384,8 +506,6 @@ static int check_and_execute_spi_transaction(void) return ret; } - - /** * @brief Send to slave via SPI * @param iface_type -type of interface @@ -395,22 +515,23 @@ static int check_and_execute_spi_transaction(void) * @retval sendbuf - Tx buffer */ int esp_hosted_tx(uint8_t iface_type, uint8_t iface_num, - uint8_t * wbuffer, uint16_t wlen, uint8_t buff_zcopy, void (*free_wbuf_fun)(void* ptr)) + uint8_t * wbuffer, uint16_t wlen, uint8_t buff_zcopy, + void (*free_wbuf_fun)(void* ptr), uint8_t flag) { interface_buffer_handle_t buf_handle = {0}; void (*free_func)(void* ptr) = NULL; - uint8_t transport_up = is_transport_tx_ready(); uint8_t pkt_prio = PRIO_Q_OTHERS; if (free_wbuf_fun) free_func = free_wbuf_fun; - if (!wbuffer || !wlen || (wlen > MAX_PAYLOAD_SIZE) || !transport_up) { - ESP_LOGE(TAG, "write fail: trans_ready[%u] buff(%p) 0? OR (0 MAX_PAYLOAD_SIZE))) { + ESP_LOGE(TAG, "write fail: buff(%p) 0? OR (0_h_memset(&buf_handle, 0, sizeof(buf_handle)); buf_handle.payload_zcopy = buff_zcopy; buf_handle.if_type = iface_type; @@ -419,8 +540,9 @@ int esp_hosted_tx(uint8_t iface_type, uint8_t iface_num, buf_handle.payload = wbuffer; buf_handle.priv_buffer_handle = wbuffer; buf_handle.free_buf_handle = free_func; + buf_handle.flag = flag; - ESP_LOGV(TAG, "ifype: %u wbuff:%p, free: %p wlen:%u ", iface_type, wbuffer, free_func, wlen); + ESP_LOGV(TAG, "ifype: %u wbuff:%p, free: %p wlen:%u flag:%u", iface_type, wbuffer, free_func, wlen, flag); if (buf_handle.if_type == ESP_SERIAL_IF) pkt_prio = PRIO_Q_SERIAL; @@ -436,13 +558,9 @@ int esp_hosted_tx(uint8_t iface_type, uint8_t iface_num, pkt_stats.sta_tx_in_pass++; #endif -#if DEBUG_HOST_TX_SEMAPHORE - if (H_DEBUG_GPIO_PIN_Host_Tx_Pin != -1) - g_h.funcs->_h_write_gpio(H_DEBUG_GPIO_PIN_Host_Tx_Port, H_DEBUG_GPIO_PIN_Host_Tx_Pin, H_GPIO_HIGH); -#endif g_h.funcs->_h_post_semaphore(spi_trans_ready_sem); - return STM_OK; + return 0; } @@ -456,18 +574,18 @@ int esp_hosted_tx(uint8_t iface_type, uint8_t iface_num, */ static void spi_transaction_task(void const* pvParameters) { - - ESP_LOGD(TAG, "Staring SPI task"); -#if DEBUG_HOST_TX_SEMAPHORE - if (H_DEBUG_GPIO_PIN_Host_Tx_Pin != -1) - g_h.funcs->_h_config_gpio(H_DEBUG_GPIO_PIN_Host_Tx_Port, H_DEBUG_GPIO_PIN_Host_Tx_Pin, H_GPIO_MODE_DEF_OUTPUT); + /* Netif creation is now handled by the example code */ +#if H_HOST_USES_STATIC_NETIF + create_static_netif(); #endif + ESP_LOGI(TAG, "Staring SPI task"); + g_h.funcs->_h_config_gpio_as_interrupt(H_GPIO_HANDSHAKE_Port, H_GPIO_HANDSHAKE_Pin, - H_HS_INTR_EDGE, gpio_hs_isr_handler); + H_HS_INTR_EDGE, gpio_hs_isr_handler, NULL); g_h.funcs->_h_config_gpio_as_interrupt(H_GPIO_DATA_READY_Port, H_GPIO_DATA_READY_Pin, - H_DR_INTR_EDGE, gpio_dr_isr_handler); + H_DR_INTR_EDGE, gpio_dr_isr_handler, NULL); #if !H_HANDSHAKE_ACTIVE_HIGH ESP_LOGI(TAG, "Handshake: Active Low"); @@ -478,13 +596,12 @@ static void spi_transaction_task(void const* pvParameters) ESP_LOGD(TAG, "SPI GPIOs configured"); - create_debugging_tasks(); - for (;;) { if ((!is_transport_rx_ready()) || (!spi_trans_ready_sem)) { - g_h.funcs->_h_msleep(300); + ESP_LOGD(TAG, "SPI transaction task sleep"); + g_h.funcs->_h_msleep(100); continue; } @@ -494,10 +611,6 @@ static void spi_transaction_task(void const* pvParameters) */ if (!g_h.funcs->_h_get_semaphore(spi_trans_ready_sem, HOSTED_BLOCK_MAX)) { -#if DEBUG_HOST_TX_SEMAPHORE - if (H_DEBUG_GPIO_PIN_Host_Tx_Pin != -1) - g_h.funcs->_h_write_gpio(H_DEBUG_GPIO_PIN_Host_Tx_Port, H_DEBUG_GPIO_PIN_Host_Tx_Pin, H_GPIO_LOW); -#endif check_and_execute_spi_transaction(); } @@ -515,6 +628,14 @@ static void spi_process_rx_task(void const* pvParameters) interface_buffer_handle_t *buf_handle = NULL; int ret = 0; +#if H_HOST_PS_ALLOWED + if (esp_hosted_woke_from_deep_sleep()) { + ESP_LOGW(TAG, "Host Woke-up"); + /* Inform slave, host power save is stopped */ + stop_host_power_save(); + } +#endif + while (1) { g_h.funcs->_h_get_semaphore(sem_from_slave_queue, HOSTED_BLOCK_MAX); @@ -642,9 +763,14 @@ static uint8_t * get_next_tx_buffer(uint8_t *is_valid_tx_buf, void (**free_func) len = buf_handle.payload_len; } - if (len) { + if (buf_handle.flag || len) { + /* Continue transfer if flag or buffer is valid */ + *is_valid_tx_buf = 1; + } - ESP_HEXLOGD("h_spi_tx", buf_handle.payload, 16); + if (*is_valid_tx_buf) { + + ESP_HEXLOGD("h_spi_tx", buf_handle.payload, len, 16); if (!buf_handle.payload_zcopy) { sendbuf = spi_buffer_alloc(MEMSET_REQUIRED); @@ -664,10 +790,6 @@ static uint8_t * get_next_tx_buffer(uint8_t *is_valid_tx_buf, void (**free_func) goto done; } - //g_h.funcs->_h_memset(sendbuf, 0, MAX_SPI_BUFFER_SIZE); - - *is_valid_tx_buf = 1; - /* Form Tx header */ payload_header = (struct esp_payload_header *) sendbuf; payload = sendbuf + sizeof(struct esp_payload_header); @@ -675,6 +797,7 @@ static uint8_t * get_next_tx_buffer(uint8_t *is_valid_tx_buf, void (**free_func) payload_header->offset = htole16(sizeof(struct esp_payload_header)); payload_header->if_type = buf_handle.if_type; payload_header->if_num = buf_handle.if_num; + payload_header->flags = buf_handle.flag; if (payload_header->if_type == ESP_HCI_IF) { // special handling for HCI @@ -686,9 +809,11 @@ static uint8_t * get_next_tx_buffer(uint8_t *is_valid_tx_buf, void (**free_func) payload_header->len = htole16(len); g_h.funcs->_h_memcpy(payload, &buf_handle.payload[1], len); } - } else - if (!buf_handle.payload_zcopy) - g_h.funcs->_h_memcpy(payload, buf_handle.payload, min(len, MAX_PAYLOAD_SIZE)); + } else { + /* Non HCI packets */ + if (!buf_handle.payload_zcopy && len) + g_h.funcs->_h_memcpy(payload, buf_handle.payload, min(len, MAX_PAYLOAD_SIZE)); + } //TODO: checksum should be configurable from menuconfig payload_header->checksum = htole16(compute_checksum(sendbuf, @@ -696,6 +821,7 @@ static uint8_t * get_next_tx_buffer(uint8_t *is_valid_tx_buf, void (**free_func) } done: +/* TODO: check if this is needed for only flag */ if (len && !buf_handle.payload_zcopy) { /* free allocated buffer, only if zerocopy is not requested */ H_FREE_PTR_WITH_FUNC(buf_handle.free_buf_handle, buf_handle.priv_buffer_handle); @@ -711,3 +837,79 @@ static uint8_t * get_next_tx_buffer(uint8_t *is_valid_tx_buf, void (**free_func) return sendbuf; } + +void check_if_max_freq_used(uint8_t chip_type) +{ + switch (chip_type) { + case ESP_PRIV_FIRMWARE_CHIP_ESP32: + if (H_SPI_FD_CLK_MHZ < 10) { + ESP_LOGW(TAG, "SPI FD clock in-use: [%u]MHz. Can optimize in 1MHz steps till Max[%u]MHz", H_SPI_FD_CLK_MHZ, 10); + } + break; + case ESP_PRIV_FIRMWARE_CHIP_ESP32S3: + case ESP_PRIV_FIRMWARE_CHIP_ESP32S2: + case ESP_PRIV_FIRMWARE_CHIP_ESP32C3: + case ESP_PRIV_FIRMWARE_CHIP_ESP32C2: + case ESP_PRIV_FIRMWARE_CHIP_ESP32C6: + case ESP_PRIV_FIRMWARE_CHIP_ESP32C5: + if (H_SPI_FD_CLK_MHZ < 40) { + ESP_LOGW(TAG, "SPI FDclock in-use: [%u]MHz. Can optimize in 1MHz steps till Max[%u]MHz", H_SPI_FD_CLK_MHZ, 40); + } + break; + } +} +static esp_err_t transport_gpio_reset(void *bus_handle, gpio_pin_t reset_pin) +{ + ESP_LOGI(TAG, "Resetting slave on SPI bus with pin %d", reset_pin.pin); + g_h.funcs->_h_config_gpio(reset_pin.port, reset_pin.pin, H_GPIO_MODE_DEF_OUTPUT); + g_h.funcs->_h_write_gpio(reset_pin.port, reset_pin.pin, H_RESET_VAL_ACTIVE); + g_h.funcs->_h_msleep(1); + g_h.funcs->_h_write_gpio(reset_pin.port, reset_pin.pin, H_RESET_VAL_INACTIVE); + g_h.funcs->_h_msleep(1); + g_h.funcs->_h_write_gpio(reset_pin.port, reset_pin.pin, H_RESET_VAL_ACTIVE); + //g_h.funcs->_h_msleep(1500); + return ESP_OK; +} + +int ensure_slave_bus_ready(void *bus_handle) +{ + esp_err_t res = ESP_OK; + gpio_pin_t reset_pin = { .port = H_GPIO_PIN_RESET_Port, .pin = H_GPIO_PIN_RESET_Pin }; + + if (ESP_TRANSPORT_OK != esp_hosted_transport_get_reset_config(&reset_pin)) { + ESP_LOGE(TAG, "Unable to get RESET config for transport"); + return ESP_FAIL; + } + + assert(reset_pin.pin != -1); + + release_slave_reset_gpio_post_wakeup(); + + if (esp_hosted_woke_from_deep_sleep()) { + g_h.funcs->_h_msleep(700); + stop_host_power_save(); + } else { + ESP_LOGI(TAG, "Resetting slave"); + transport_gpio_reset(bus_handle, reset_pin); + } + + return res; +} + +int bus_inform_slave_host_power_save_start(void) +{ + ESP_LOGI(TAG, "Inform slave, host power save is started"); + int ret = ESP_OK; + ret = esp_hosted_tx(ESP_SERIAL_IF, 0, NULL, 0, + H_BUFF_NO_ZEROCOPY, NULL, FLAG_POWER_SAVE_STARTED); + return ret; +} + +int bus_inform_slave_host_power_save_stop(void) +{ + ESP_LOGI(TAG, "Inform slave, host power save is stopped"); + int ret = ESP_OK; + ret = esp_hosted_tx(ESP_SERIAL_IF, 0, NULL, 0, + H_BUFF_NO_ZEROCOPY, NULL, FLAG_POWER_SAVE_STOPPED); + return ret; +} diff --git a/host/drivers/transport/spi_hd/spi_hd_drv.c b/host/drivers/transport/spi_hd/spi_hd_drv.c index 5e37471a..85d8e71c 100644 --- a/host/drivers/transport/spi_hd/spi_hd_drv.c +++ b/host/drivers/transport/spi_hd/spi_hd_drv.c @@ -29,6 +29,10 @@ #include "esp_hosted_config.h" #include "esp_hosted_log.h" +#include "power_save_drv.h" +#include "esp_hosted_power_save.h" +#include "esp_hosted_transport_config.h" + static const char TAG[] = "H_SPI_HD_DRV"; // this locks the spi_hd transaction at the driver level, instead of at the HAL layer @@ -133,6 +137,7 @@ static inline void spi_hd_buffer_free(void *buf) */ static void FAST_RAM_ATTR gpio_dr_isr_handler(void* arg) { + ESP_EARLY_LOGD(TAG, "gpio_dr_isr_handler"); g_h.funcs->_h_post_semaphore_from_isr(spi_hd_data_ready_sem); } @@ -219,7 +224,7 @@ static void spi_hd_write_task(void const* pvParameters) if (tx_needed) len = buf_handle.payload_len; - if (!len) { + if (!buf_handle.flag && !len) { ESP_LOGE(TAG, "%s: Empty len", __func__); goto done; } @@ -289,7 +294,7 @@ static void spi_hd_write_task(void const* pvParameters) data_left = len + sizeof(struct esp_payload_header); - ESP_HEXLOGV("h_spi_hd_tx", sendbuf, data_left); + ESP_HEXLOGD("h_spi_hd_tx", sendbuf, data_left, 32); ret = g_h.funcs->_h_spi_hd_write_dma(sendbuf, data_left, ACQUIRE_LOCK); if (ret) { @@ -461,6 +466,7 @@ static void spi_hd_read_task(void const* pvParameters) while (true) { vTaskDelay(pdMS_TO_TICKS(100)); if (is_transport_rx_ready()) { + ESP_LOGI(TAG, "spi_hd_read_task: transport rx ready"); break; } } @@ -472,17 +478,15 @@ static void spi_hd_read_task(void const* pvParameters) ESP_LOGE(TAG, "Error reading slave register"); } else if (data == SPI_HD_STATE_SLAVE_READY) { - ESP_LOGV(TAG, "Slave is ready"); + ESP_LOGI(TAG, "Slave is ready"); break; } vTaskDelay(pdMS_TO_TICKS(100)); } - create_debugging_tasks(); - // slave is ready: initialise Data Ready as interrupt input g_h.funcs->_h_config_gpio_as_interrupt(H_SPI_HD_GPIO_DATA_READY_Port, H_SPI_HD_PIN_DATA_READY, - H_SPI_HD_DR_INTR_EDGE, gpio_dr_isr_handler); + H_SPI_HD_DR_INTR_EDGE, gpio_dr_isr_handler, NULL); // tell slave to open data path data = SPI_HD_CTRL_DATAPATH_ON; @@ -492,6 +496,7 @@ static void spi_hd_read_task(void const* pvParameters) while (1) { // wait for read semaphore to trigger g_h.funcs->_h_get_semaphore(spi_hd_data_ready_sem, HOSTED_BLOCK_MAX); + ESP_LOGV(TAG, "spi_hd_read_task: data ready intr"); SPI_HD_DRV_LOCK(); @@ -550,6 +555,7 @@ static void spi_hd_read_task(void const* pvParameters) rxbuff = spi_hd_buffer_alloc(MEMSET_REQUIRED); assert(rxbuff); + ESP_LOGV(TAG, "spi_hd_read_task: trigger spi hd dma read"); // read data res = g_h.funcs->_h_spi_hd_read_dma(rxbuff, size_to_xfer, ACQUIRE_LOCK); @@ -563,7 +569,7 @@ static void spi_hd_read_task(void const* pvParameters) continue; } - ESP_HEXLOGV("spi_hd_rx", rxbuff, size_to_xfer); + ESP_HEXLOGD("spi_hd_rx", rxbuff, size_to_xfer, 32); if (spi_hd_push_data_to_queue(rxbuff, size_to_xfer)) ESP_LOGE(TAG, "Failed to push data to rx queue"); @@ -581,10 +587,13 @@ static void spi_hd_process_rx_task(void const* pvParameters) while (true) { vTaskDelay(pdMS_TO_TICKS(100)); if (is_transport_rx_ready()) { + ESP_LOGI(TAG, "transport rx not yet up"); break; } } + ESP_LOGI(TAG, "spi_hd_process_rx_task: transport rx ready"); + while (1) { g_h.funcs->_h_get_semaphore(sem_from_slave_queue, HOSTED_BLOCK_MAX); @@ -598,7 +607,7 @@ static void spi_hd_process_rx_task(void const* pvParameters) buf_handle = &buf_handle_l; ESP_LOGV(TAG, "spi_hd iftype:%d", (int)buf_handle->if_type); - ESP_HEXLOGV("rx", buf_handle->payload, buf_handle->payload_len); + ESP_HEXLOGD("rx", buf_handle->payload, buf_handle->payload_len, 32); if (buf_handle->if_type == ESP_SERIAL_IF) { /* serial interface path */ @@ -665,7 +674,7 @@ static void spi_hd_process_rx_task(void const* pvParameters) } } -void transport_init_internal(void) +void * bus_init_internal(void) { uint8_t prio_q_idx = 0; @@ -710,18 +719,75 @@ void transport_init_internal(void) ESP_LOGE(TAG, "could not create spi_hd handle, exiting\n"); assert(spi_hd_handle); } + + ESP_LOGI(TAG, "Initialised SPI HD driver"); + return spi_hd_handle; } -void transport_deinit_internal(void) +void bus_deinit_internal(void *bus_handle) { - /* TODO */ + uint8_t prio_q_idx = 0; + + /* Stop threads */ + if (spi_hd_read_thread) { + g_h.funcs->_h_thread_cancel(spi_hd_read_thread); + spi_hd_read_thread = NULL; + } + + if (spi_hd_process_rx_thread) { + g_h.funcs->_h_thread_cancel(spi_hd_process_rx_thread); + spi_hd_process_rx_thread = NULL; + } + + if (spi_hd_write_thread) { + g_h.funcs->_h_thread_cancel(spi_hd_write_thread); + spi_hd_write_thread = NULL; + } + + /* Clean up queues */ + for (prio_q_idx = 0; prio_q_idx < MAX_PRIORITY_QUEUES; prio_q_idx++) { + if (from_slave_queue[prio_q_idx]) { + g_h.funcs->_h_destroy_queue(from_slave_queue[prio_q_idx]); + from_slave_queue[prio_q_idx] = NULL; + } + + if (to_slave_queue[prio_q_idx]) { + g_h.funcs->_h_destroy_queue(to_slave_queue[prio_q_idx]); + to_slave_queue[prio_q_idx] = NULL; + } + } + + /* Clean up semaphores */ + if (sem_to_slave_queue) { + g_h.funcs->_h_destroy_semaphore(sem_to_slave_queue); + sem_to_slave_queue = NULL; + } + + if (sem_from_slave_queue) { + g_h.funcs->_h_destroy_semaphore(sem_from_slave_queue); + sem_from_slave_queue = NULL; + } + + if (spi_hd_data_ready_sem) { + g_h.funcs->_h_destroy_semaphore(spi_hd_data_ready_sem); + spi_hd_data_ready_sem = NULL; + } + + /* Deinitialize the SPI HD bus */ + if (spi_hd_handle) { + g_h.funcs->_h_bus_deinit(bus_handle); + spi_hd_handle = NULL; + } SPI_HD_DRV_LOCK_DESTROY(); + + spi_hd_mempool_destroy(); + ESP_LOGI(TAG, "Deinitialised SPI HD driver"); } int esp_hosted_tx(uint8_t iface_type, uint8_t iface_num, uint8_t * wbuffer, uint16_t wlen, uint8_t buff_zcopy, - void (*free_wbuf_fun)(void* ptr)) + void (*free_wbuf_fun)(void* ptr), uint8_t flag) { interface_buffer_handle_t buf_handle = {0}; void (*free_func)(void* ptr) = NULL; @@ -733,9 +799,8 @@ int esp_hosted_tx(uint8_t iface_type, uint8_t iface_num, if (free_wbuf_fun) free_func = free_wbuf_fun; - if (!wbuffer || !wlen || - (wlen > MAX_PAYLOAD_SIZE) || - !transport_up) { + if ((!flag) && + (!wbuffer || !wlen ||(wlen > MAX_PAYLOAD_SIZE) || !transport_up)) { ESP_LOGE(TAG, "tx fail: NULL buff, invalid len (%u) or len > max len (%u), transport_up(%u))", wlen, MAX_PAYLOAD_SIZE, transport_up); H_FREE_PTR_WITH_FUNC(free_func, wbuffer); @@ -749,6 +814,7 @@ int esp_hosted_tx(uint8_t iface_type, uint8_t iface_num, buf_handle.payload = wbuffer; buf_handle.priv_buffer_handle = wbuffer; buf_handle.free_buf_handle = free_func; + buf_handle.flag = flag; if (buf_handle.if_type == ESP_SERIAL_IF) pkt_prio = PRIO_Q_SERIAL; @@ -765,3 +831,56 @@ int esp_hosted_tx(uint8_t iface_type, uint8_t iface_num, return ESP_OK; } + +void check_if_max_freq_used(uint8_t chip_type) +{ + if (H_SPI_HD_CLK_MHZ < 40) { + ESP_LOGW(TAG, "SPI HD FD clock in-use: [%u]MHz. Can optimize in 1MHz steps till Max[%u]MHz", H_SPI_HD_CLK_MHZ, 40); + } +} + +int ensure_slave_bus_ready(void *bus_handle) +{ + esp_err_t res = ESP_OK; + gpio_pin_t reset_pin = { .port = H_GPIO_PIN_RESET_Port, .pin = H_GPIO_PIN_RESET_Pin }; + + if (ESP_TRANSPORT_OK != esp_hosted_transport_get_reset_config(&reset_pin)) { + ESP_LOGE(TAG, "Unable to get RESET config for transport"); + return ESP_FAIL; + } + + assert(reset_pin.pin != -1); + + release_slave_reset_gpio_post_wakeup(); + + if (!esp_hosted_woke_from_deep_sleep()) { + /* Reset the slave */ + ESP_LOGI(TAG, "Resetting slave on SPI HD bus with pin %d", reset_pin.pin); + g_h.funcs->_h_config_gpio(reset_pin.port, reset_pin.pin, H_GPIO_MODE_DEF_OUTPUT); + g_h.funcs->_h_write_gpio(reset_pin.port, reset_pin.pin, H_RESET_VAL_ACTIVE); + g_h.funcs->_h_msleep(1); + g_h.funcs->_h_write_gpio(reset_pin.port, reset_pin.pin, H_RESET_VAL_INACTIVE); + g_h.funcs->_h_msleep(1); + g_h.funcs->_h_write_gpio(reset_pin.port, reset_pin.pin, H_RESET_VAL_ACTIVE); + } + + return res; +} + +int bus_inform_slave_host_power_save_start(void) +{ + ESP_LOGI(TAG, "Inform slave, host power save is started"); + int ret = ESP_OK; + ret = esp_hosted_tx(ESP_SERIAL_IF, 0, NULL, 0, + H_BUFF_NO_ZEROCOPY, NULL, FLAG_POWER_SAVE_STARTED); + return ret; +} + +int bus_inform_slave_host_power_save_stop(void) +{ + ESP_LOGI(TAG, "Inform slave, host power save is stopped"); + int ret = ESP_OK; + ret = esp_hosted_tx(ESP_SERIAL_IF, 0, NULL, 0, + H_BUFF_NO_ZEROCOPY, NULL, FLAG_POWER_SAVE_STOPPED); + return ret; +} diff --git a/host/drivers/transport/transport_drv.c b/host/drivers/transport/transport_drv.c index f3022149..5cbf228f 100644 --- a/host/drivers/transport/transport_drv.c +++ b/host/drivers/transport/transport_drv.c @@ -32,6 +32,13 @@ #include "errno.h" #include "hci_drv.h" +#if H_HOST_PS_ALLOWED +#include "esp_hosted_power_save.h" +#endif + +#include "esp_hosted_cli.h" +#include "rpc_wrap.h" + /** * @brief Slave capabilities are parsed * Currently no added functionality to that @@ -44,12 +51,24 @@ static char chip_type = ESP_PRIV_FIRMWARE_CHIP_UNRECOGNIZED; void(*transport_esp_hosted_up_cb)(void) = NULL; transport_channel_t *chan_arr[ESP_MAX_IF]; volatile uint8_t wifi_tx_throttling; +void *bus_handle = NULL; -static uint8_t transport_state = TRANSPORT_INACTIVE; +static volatile uint8_t transport_state = TRANSPORT_INACTIVE; static void process_event(uint8_t *evt_buf, uint16_t len); +static int process_init_event(uint8_t *evt_buf, uint16_t len); + + +#if H_HOST_RESTART_NO_COMMUNICATION_WITH_SLAVE && H_HOST_RESTART_NO_COMMUNICATION_WITH_SLAVE_TIMEOUT != -1 +static void *init_timeout_timer = NULL; +static void init_timeout_cb(void *arg) +{ + ESP_LOGE(TAG, "Init event not received within timeout, Reseting myself"); + g_h.funcs->_h_restart_host(); +} +#endif uint8_t is_transport_rx_ready(void) { @@ -61,27 +80,6 @@ uint8_t is_transport_tx_ready(void) return (transport_state >= TRANSPORT_TX_ACTIVE); } -static void reset_slave(void) -{ - gpio_pin_t reset_pin = { 0 }; - if (ESP_TRANSPORT_OK != esp_hosted_transport_get_reset_config(&reset_pin)) { - ESP_LOGE(TAG, "Unable to get RESET config for transport"); - return; - } - - ESP_LOGI(TAG, "Reset slave using GPIO[%u]", reset_pin.pin); - g_h.funcs->_h_config_gpio(H_GPIO_PIN_RESET_Port, reset_pin.pin, H_GPIO_MODE_DEF_OUTPUT); - - g_h.funcs->_h_write_gpio(reset_pin.port, reset_pin.pin, H_RESET_VAL_ACTIVE); - g_h.funcs->_h_msleep(50); - g_h.funcs->_h_write_gpio(reset_pin.port, reset_pin.pin, H_RESET_VAL_INACTIVE); - g_h.funcs->_h_msleep(50); - g_h.funcs->_h_write_gpio(reset_pin.port, reset_pin.pin, H_RESET_VAL_ACTIVE); - - /* stop spi transactions short time to avoid slave sync issues */ - g_h.funcs->_h_msleep(1500); -} - static void transport_driver_event_handler(uint8_t event) { switch(event) @@ -89,30 +87,66 @@ static void transport_driver_event_handler(uint8_t event) case TRANSPORT_TX_ACTIVE: { /* Initiate control path now */ - ESP_LOGI(TAG, "Base transport is set-up\n\r"); + ESP_LOGI(TAG, "Base transport is set-up, TRANSPORT_TX_ACTIVE"); if (transport_esp_hosted_up_cb) transport_esp_hosted_up_cb(); transport_state = TRANSPORT_TX_ACTIVE; break; } + case TRANSPORT_INACTIVE: + case TRANSPORT_RX_ACTIVE: + transport_state = event; + break; + default: - break; + break; } } -esp_err_t transport_drv_deinit(void) +void set_transport_state(uint8_t state) { - transport_deinit_internal(); + ESP_LOGI(TAG, "set_transport_state: %u", state); + transport_driver_event_handler(state); +} + +static void transport_drv_init(void) +{ + bus_handle = bus_init_internal(); + ESP_LOGD(TAG, "Bus handle: %p", bus_handle); + assert(bus_handle); +#if H_NETWORK_SPLIT_ENABLED + ESP_LOGI(TAG, "Network split enabled. Port ranges- Host:TCP(%d-%d), UDP(%d-%d), Slave:TCP(%d-%d), UDP(%d-%d)", + H_HOST_TCP_LOCAL_PORT_RANGE_START, H_HOST_TCP_LOCAL_PORT_RANGE_END, + H_HOST_UDP_LOCAL_PORT_RANGE_START, H_HOST_UDP_LOCAL_PORT_RANGE_END, + H_SLAVE_TCP_REMOTE_PORT_RANGE_START, H_SLAVE_TCP_REMOTE_PORT_RANGE_END, + H_SLAVE_UDP_REMOTE_PORT_RANGE_START, H_SLAVE_UDP_REMOTE_PORT_RANGE_END); +#endif + hci_drv_init(); +} + +esp_err_t teardown_transport(void) +{ + #if H_HOST_RESTART_NO_COMMUNICATION_WITH_SLAVE && H_HOST_RESTART_NO_COMMUNICATION_WITH_SLAVE_TIMEOUT != -1 + /* Stop and cleanup init timeout timer if still active */ + if (init_timeout_timer) { + g_h.funcs->_h_timer_stop(init_timeout_timer); + init_timeout_timer = NULL; + } + #endif + + if (bus_handle) { + bus_deinit_internal(bus_handle); + } + ESP_LOGI(TAG, "TRANSPORT_INACTIVE"); transport_state = TRANSPORT_INACTIVE; return ESP_OK; } -esp_err_t transport_drv_init(void(*esp_hosted_up_cb)(void)) +esp_err_t setup_transport(void(*esp_hosted_up_cb)(void)) { g_h.funcs->_h_hosted_init_hook(); - transport_init_internal(); - hci_drv_init(); + transport_drv_init(); transport_esp_hosted_up_cb = esp_hosted_up_cb; return ESP_OK; @@ -122,27 +156,56 @@ esp_err_t transport_drv_reconfigure(void) { static int retry_slave_connection = 0; - ESP_LOGI(TAG, "Attempt connection with slave: retry[%u]",retry_slave_connection); + ESP_LOGI(TAG, "Attempt connection with slave: retry[%u]", retry_slave_connection); + +#if H_HOST_RESTART_NO_COMMUNICATION_WITH_SLAVE && H_HOST_RESTART_NO_COMMUNICATION_WITH_SLAVE_TIMEOUT != -1 + /* Start init timeout timer if not already started */ + if (!init_timeout_timer) { + init_timeout_timer = g_h.funcs->_h_timer_start("slave_unresponsive_timer", H_HOST_RESTART_NO_COMMUNICATION_WITH_SLAVE_TIMEOUT, H_TIMER_TYPE_ONESHOT, init_timeout_cb, NULL); + if (!init_timeout_timer) { + ESP_LOGE(TAG, "Failed to create init timeout timer"); + return ESP_FAIL; + } + ESP_LOGI(TAG, "Started host communication init timer of %u seconds", H_HOST_RESTART_NO_COMMUNICATION_WITH_SLAVE_TIMEOUT); + } +#endif + + int retry_power_save_recover = 5; + if (esp_hosted_woke_from_deep_sleep()) { + ESP_LOGI(TAG, "Waiting for power save to be off"); + g_h.funcs->_h_msleep(700); + + while (retry_power_save_recover) { + if (is_transport_tx_ready()) { + break; + } + retry_power_save_recover--; + } + } + + /* This would come into picture, only if the host has + * reset pin connected to slave's 'EN' or 'RST' GPIO */ if (!is_transport_tx_ready()) { - reset_slave(); + ensure_slave_bus_ready(bus_handle); transport_state = TRANSPORT_RX_ACTIVE; - + ESP_LOGI(TAG, "Waiting for esp_hosted slave to be ready"); while (!is_transport_tx_ready()) { if (retry_slave_connection < MAX_RETRY_TRANSPORT_ACTIVE) { retry_slave_connection++; - if (retry_slave_connection%10==0) { - ESP_LOGE(TAG, "Not able to connect with ESP-Hosted slave device"); - reset_slave(); + if (retry_slave_connection%50==0) { + ESP_LOGI(TAG, "Not able to connect with ESP-Hosted slave device"); + ensure_slave_bus_ready(bus_handle); } } else { - ESP_LOGE(TAG, "Failed to get ESP_Hosted slave transport up"); + ESP_LOGW(TAG, "Failed to get ESP_Hosted slave transport up"); return ESP_FAIL; } - g_h.funcs->_h_sleep(1); + g_h.funcs->_h_msleep(200); } } else { ESP_LOGI(TAG, "Transport is already up"); } + retry_slave_connection = 0; return ESP_OK; } @@ -174,29 +237,6 @@ esp_err_t transport_drv_remove_channel(transport_channel_t *channel) return ESP_OK; } -#if 0 -esp_err_t transport_drv_tx(void *h, void *buffer, size_t len) -{ - if (!h) { - esp_wifi_internal_free_rx_buffer(buffer); - return ESP_FAIL; - } - - /* Buffer will be freed always in the called function */ - return esp_hosted_tx(h->if_type, 0, buffer, len, H_BUFF_NO_ZEROCOPY, esp_wifi_internal_free_rx_buffer); - -} -#endif - -#if 0 -static esp_err_t transport_drv_sta_tx(void *h, void *buffer, transport_free_cb_t free_cb, size_t len) -{ - ESP_LOGI(TAG, "%s", __func__); - assert(h && h==chan_arr[ESP_STA_IF]->api_chan); - return esp_hosted_tx(ESP_STA_IF, 0, buffer, len, H_BUFF_NO_ZEROCOPY, free_cb); -} -#endif - static void transport_sta_free_cb(void *buf) { mempool_free(chan_arr[ESP_STA_IF]->memp, buf); @@ -221,7 +261,7 @@ static esp_err_t transport_drv_sta_tx(void *h, void *buffer, size_t len) if (unlikely(wifi_tx_throttling)) { #if ESP_PKT_STATS - pkt_stats.sta_tx_in_drop++; + pkt_stats.sta_tx_flowctrl_drop++; #endif errno = -ENOBUFS; //return ESP_ERR_NO_BUFFS; @@ -239,7 +279,7 @@ static esp_err_t transport_drv_sta_tx(void *h, void *buffer, size_t len) assert(copy_buff); g_h.funcs->_h_memcpy(copy_buff+H_ESP_PAYLOAD_HEADER_OFFSET, buffer, len); - return esp_hosted_tx(ESP_STA_IF, 0, copy_buff, len, H_BUFF_ZEROCOPY, transport_sta_free_cb); + return esp_hosted_tx(ESP_STA_IF, 0, copy_buff, len, H_BUFF_ZEROCOPY, transport_sta_free_cb, 0); } static esp_err_t transport_drv_ap_tx(void *h, void *buffer, size_t len) @@ -256,14 +296,14 @@ static esp_err_t transport_drv_ap_tx(void *h, void *buffer, size_t len) assert(copy_buff); g_h.funcs->_h_memcpy(copy_buff+H_ESP_PAYLOAD_HEADER_OFFSET, buffer, len); - return esp_hosted_tx(ESP_AP_IF, 0, copy_buff, len, H_BUFF_ZEROCOPY, transport_ap_free_cb); + return esp_hosted_tx(ESP_AP_IF, 0, copy_buff, len, H_BUFF_ZEROCOPY, transport_ap_free_cb, 0); } esp_err_t transport_drv_serial_tx(void *h, void *buffer, size_t len) { /* TODO */ assert(h && h==chan_arr[ESP_SERIAL_IF]->api_chan); - return esp_hosted_tx(ESP_SERIAL_IF, 0, buffer, len, H_BUFF_NO_ZEROCOPY, transport_serial_free_cb); + return esp_hosted_tx(ESP_SERIAL_IF, 0, buffer, len, H_BUFF_NO_ZEROCOPY, transport_serial_free_cb, 0); } @@ -271,6 +311,7 @@ transport_channel_t *transport_drv_add_channel(void *api_chan, esp_hosted_if_type_t if_type, uint8_t secure, transport_channel_tx_fn_t *tx, const transport_channel_rx_fn_t rx) { + ESP_LOGD(TAG, "Adding channel IF[%u]: S[%u] Tx[%p] Rx[%p]", if_type, secure, tx, rx); transport_channel_t *channel = NULL; ESP_ERROR_CHECK(if_type >= ESP_MAX_IF); @@ -329,7 +370,7 @@ transport_channel_t *transport_drv_add_channel(void *api_chan, return channel; } -void process_capabilities(uint8_t cap) +static void process_capabilities(uint8_t cap) { ESP_LOGI(TAG, "capabilities: 0x%x",cap); } @@ -356,7 +397,7 @@ void process_priv_communication(interface_buffer_handle_t *buf_handle) process_event(buf_handle->payload, buf_handle->payload_len); } -void print_capabilities(uint32_t cap) +static void print_capabilities(uint32_t cap) { ESP_LOGI(TAG, "Features supported are:"); if (cap & ESP_WLAN_SDIO_SUPPORT) @@ -418,11 +459,16 @@ static void process_event(uint8_t *evt_buf, uint16_t len) if (event->event_type == ESP_PRIV_EVENT_INIT) { ESP_LOGI(TAG, "Received INIT event from ESP32 peripheral"); - ESP_HEXLOGD("Slave_init_evt", event->event_data, event->event_len); + ESP_HEXLOGD("Slave_init_evt", event->event_data, event->event_len, 32); ret = process_init_event(event->event_data, event->event_len); if (ret) { ESP_LOGE(TAG, "failed to init event\n\r"); + } else { + +#if H_HOST_PS_ALLOWED && H_HOST_WAKEUP_GPIO + esp_hosted_power_save_init(); +#endif } } else { ESP_LOGW(TAG, "Drop unknown event\n\r"); @@ -487,17 +533,18 @@ static void verify_host_config_for_slave(uint8_t chip_type) #else ESP_LOGW(TAG, "Incorrect host config for ESP slave chipset[%x]", chip_type); #endif - if (chip_type!=exp_chip_id) { - char slave_str[20], exp_str[20]; + char slave_str[20] = {0}; + get_chip_str_from_id(chip_type, slave_str); - memset(slave_str, '\0', 20); - memset(exp_str, '\0', 20); - - get_chip_str_from_id(chip_type, slave_str); + if (chip_type!=exp_chip_id) { + char exp_str[20] = {0}; get_chip_str_from_id(exp_chip_id, exp_str); ESP_LOGE(TAG, "Identified slave [%s] != Expected [%s]\n\t\trun 'idf.py menuconfig' at host to reselect the slave?\n\t\tAborting.. ", slave_str, exp_str); g_h.funcs->_h_sleep(10); assert(0!=0); + } else { + ESP_LOGI(TAG, "Identified slave [%s]", slave_str); + check_if_max_freq_used(chip_type); } } @@ -539,14 +586,20 @@ esp_err_t send_slave_config(uint8_t host_cap, uint8_t firmware_chip_id, *pos = LENGTH_1_BYTE; pos++;len++; *pos = raw_tp_direction; pos++;len++; - *pos = SLV_CONFIG_THROTTLE_HIGH_THRESHOLD; pos++;len++; + *pos = SLV_CONFIG_THROTTLE_HIGH_THRESHOLD; pos++;len++; *pos = LENGTH_1_BYTE; pos++;len++; *pos = high_thr_thesh; pos++;len++; - *pos = SLV_CONFIG_THROTTLE_LOW_THRESHOLD; pos++;len++; + *pos = SLV_CONFIG_THROTTLE_LOW_THRESHOLD; pos++;len++; *pos = LENGTH_1_BYTE; pos++;len++; *pos = low_thr_thesh; pos++;len++; + ESP_LOGI(TAG, "raw_tp_dir[%s], flow_ctrl: low[%u] high[%u]", + raw_tp_direction == ESP_TEST_RAW_TP__HOST_TO_ESP? "h2s": + raw_tp_direction == ESP_TEST_RAW_TP__ESP_TO_HOST? "s2h": + raw_tp_direction == ESP_TEST_RAW_TP__BIDIRECTIONAL? "bi-dir": + "-", low_thr_thesh, high_thr_thesh); + /* TLVs end */ event->event_len = len; @@ -554,10 +607,24 @@ esp_err_t send_slave_config(uint8_t host_cap, uint8_t firmware_chip_id, /* payload len = Event len + sizeof(event type) + sizeof(event len) */ len += 2; - return esp_hosted_tx(ESP_PRIV_IF, 0, sendbuf, len, H_BUFF_NO_ZEROCOPY, g_h.funcs->_h_free); + return esp_hosted_tx(ESP_PRIV_IF, 0, sendbuf, len, H_BUFF_NO_ZEROCOPY, g_h.funcs->_h_free, 0); } -int process_init_event(uint8_t *evt_buf, uint16_t len) +static int transport_delayed_init(void) +{ + ESP_LOGI(TAG, "transport_delayed_init"); + rpc_start(); + /* Add up cli */ +#ifdef H_ESP_HOSTED_CLI_ENABLED + esp_hosted_cli_start(); +#endif + create_debugging_tasks(); + + return 0; +} + + +static int process_init_event(uint8_t *evt_buf, uint16_t len) { uint8_t len_left = len, tag_len; uint8_t *pos; @@ -567,6 +634,15 @@ int process_init_event(uint8_t *evt_buf, uint16_t len) if (!evt_buf) return ESP_FAIL; +#if H_HOST_RESTART_NO_COMMUNICATION_WITH_SLAVE && H_HOST_RESTART_NO_COMMUNICATION_WITH_SLAVE_TIMEOUT != -1 + /* Stop and delete the init timeout timer since we received the init event */ + if (init_timeout_timer) { + g_h.funcs->_h_timer_stop(init_timeout_timer); + init_timeout_timer = NULL; + ESP_LOGI(TAG, "Init event received within timeout, cleared timer"); + } +#endif + pos = evt_buf; ESP_LOGD(TAG, "Init event length: %u", len); if (len > 64) { @@ -655,9 +731,14 @@ int process_init_event(uint8_t *evt_buf, uint16_t len) } transport_driver_event_handler(TRANSPORT_TX_ACTIVE); - return send_slave_config(0, chip_type, raw_tp_config, + + ESP_ERROR_CHECK(send_slave_config(0, chip_type, raw_tp_config, H_WIFI_TX_DATA_THROTTLE_LOW_THRESHOLD, - H_WIFI_TX_DATA_THROTTLE_HIGH_THRESHOLD); + H_WIFI_TX_DATA_THROTTLE_HIGH_THRESHOLD)); + + transport_delayed_init(); + + return 0; } int serial_rx_handler(interface_buffer_handle_t * buf_handle) diff --git a/host/drivers/transport/transport_drv.h b/host/drivers/transport/transport_drv.h index 58735d98..8b70be6a 100644 --- a/host/drivers/transport/transport_drv.h +++ b/host/drivers/transport/transport_drv.h @@ -24,11 +24,7 @@ extern "C" { /** Includes **/ #include "common.h" -#if 0 -#include "os_wrapper.h" -#include "trace.h" -#endif -//#include "netdev_if.h" + #include "esp_hosted_transport.h" #include "esp_hosted_config.h" #include "esp_hosted_api_types.h" @@ -64,9 +60,9 @@ struct esp_private { }; struct hosted_transport_context_t { - uint8_t *tx_buf; - uint32_t tx_buf_size; - uint8_t *rx_buf; + uint8_t *tx_buf; + uint32_t tx_buf_size; + uint8_t *rx_buf; }; extern volatile uint8_t wifi_tx_throttling; @@ -80,36 +76,27 @@ typedef esp_err_t (*transport_channel_rx_fn_t)(void *h, void *buffer, void * buf typedef struct { void * api_chan; esp_hosted_if_type_t if_type; - uint8_t secure; + uint8_t secure; transport_channel_tx_fn_t tx; transport_channel_rx_fn_t rx; void *memp; } transport_channel_t; -#if 0 -/* netdev APIs*/ -int esp_netdev_open(netdev_handle_t netdev); -int esp_netdev_close(netdev_handle_t netdev); -int esp_netdev_xmit(netdev_handle_t netdev, struct pbuf *net_buf); -#endif - -esp_err_t transport_drv_init(void(*esp_hosted_up_cb)(void)); -esp_err_t transport_drv_deinit(void); +esp_err_t setup_transport(void(*esp_hosted_up_cb)(void)); +esp_err_t teardown_transport(void); esp_err_t transport_drv_reconfigure(void); transport_channel_t *transport_drv_add_channel(void *api_chan, esp_hosted_if_type_t if_type, uint8_t secure, transport_channel_tx_fn_t *tx, const transport_channel_rx_fn_t rx); esp_err_t transport_drv_remove_channel(transport_channel_t *channel); -/* TODO To move to private header */ -void process_capabilities(uint8_t cap); -void transport_init_internal(void); -void transport_deinit_internal(void); + +void *bus_init_internal(void); +void bus_deinit_internal(void *bus_handle); void process_priv_communication(interface_buffer_handle_t *buf_handle); -void print_capabilities(uint32_t cap); -int process_init_event(uint8_t *evt_buf, uint16_t len); + esp_err_t send_slave_config(uint8_t host_cap, uint8_t firmware_chip_id, uint8_t raw_tp_direction, uint8_t low_thr_thesh, uint8_t high_thr_thesh); @@ -121,16 +108,21 @@ uint8_t is_transport_tx_ready(void); #define H_DEFLT_FREE_FUNC g_h.funcs->_h_free -#define MAX_RETRY_TRANSPORT_ACTIVE 1000 +#define MAX_RETRY_TRANSPORT_ACTIVE 100 int esp_hosted_tx(uint8_t iface_type, uint8_t iface_num, - uint8_t * buffer, uint16_t len, uint8_t buff_zerocopy, void (*free_buf_fun)(void* ptr)); - -int esp_hosted_register_wifi_rxcb(int ifx, hosted_rxcb_t fn); -int esp_hosted_register_wifi_txcb(int ifx, hosted_rxcb_t fn); + uint8_t * buffer, uint16_t len, uint8_t buff_zerocopy, void (*free_buf_fun)(void* ptr), uint8_t flag); int serial_rx_handler(interface_buffer_handle_t * buf_handle); +void set_transport_state(uint8_t state); + +int ensure_slave_bus_ready(void *bus_handle); +void check_if_max_freq_used(uint8_t chip_type); + +int bus_inform_slave_host_power_save_start(void); +int bus_inform_slave_host_power_save_stop(void); + #ifdef __cplusplus } #endif diff --git a/host/drivers/transport/uart/uart_drv.c b/host/drivers/transport/uart/uart_drv.c index 1708149c..f9ed09fc 100644 --- a/host/drivers/transport/uart/uart_drv.c +++ b/host/drivers/transport/uart/uart_drv.c @@ -23,6 +23,9 @@ #include "esp_hosted_log.h" #include "transport_drv.h" #include "stats.h" +#include "esp_hosted_power_save.h" +#include "esp_hosted_transport_config.h" + static const char TAG[] = "H_UART_DRV"; @@ -226,7 +229,7 @@ static void h_uart_process_rx_task(void const* pvParameters) buf_handle = &buf_handle_l; - ESP_HEXLOGV("rx", buf_handle->payload, buf_handle->payload_len); + ESP_HEXLOGV("h_uart_rx", buf_handle->payload, buf_handle->payload_len, 32); if (buf_handle->if_type == ESP_SERIAL_IF) { /* serial interface path */ @@ -468,7 +471,7 @@ static void h_uart_read_task(void const* pvParameters) } } -void transport_init_internal(void) +void *bus_init_internal(void) { uint8_t prio_q_idx = 0; @@ -506,11 +509,13 @@ void transport_init_internal(void) h_uart_write_task_info = g_h.funcs->_h_thread_create("uart_tx", DFLT_TASK_PRIO, DFLT_TASK_STACK_SIZE, h_uart_write_task, NULL); + + return uart_handle; } int esp_hosted_tx(uint8_t iface_type, uint8_t iface_num, uint8_t * wbuffer, uint16_t wlen, uint8_t buff_zcopy, - void (*free_wbuf_fun)(void* ptr)) + void (*free_wbuf_fun)(void* ptr), uint8_t flag) { interface_buffer_handle_t buf_handle = {0}; void (*free_func)(void* ptr) = NULL; @@ -536,6 +541,7 @@ int esp_hosted_tx(uint8_t iface_type, uint8_t iface_num, buf_handle.payload = wbuffer; buf_handle.priv_buffer_handle = wbuffer; buf_handle.free_buf_handle = free_func; + buf_handle.flag = flag; if (buf_handle.if_type == ESP_SERIAL_IF) pkt_prio = PRIO_Q_SERIAL; @@ -552,3 +558,116 @@ int esp_hosted_tx(uint8_t iface_type, uint8_t iface_num, return ESP_OK; } + +void bus_deinit_internal(void *bus_handle) +{ + uint8_t prio_q_idx = 0; + + /* Stop threads */ + if (h_uart_write_task_info) { + g_h.funcs->_h_thread_cancel(h_uart_write_task_info); + h_uart_write_task_info = NULL; + } + + if (h_uart_read_task_info) { + g_h.funcs->_h_thread_cancel(h_uart_read_task_info); + h_uart_read_task_info = NULL; + } + + if (h_uart_process_rx_task_info) { + g_h.funcs->_h_thread_cancel(h_uart_process_rx_task_info); + h_uart_process_rx_task_info = NULL; + } + + /* Clean up queues */ + for (prio_q_idx = 0; prio_q_idx < MAX_PRIORITY_QUEUES; prio_q_idx++) { + if (from_slave_queue[prio_q_idx]) { + g_h.funcs->_h_destroy_queue(from_slave_queue[prio_q_idx]); + from_slave_queue[prio_q_idx] = NULL; + } + + if (to_slave_queue[prio_q_idx]) { + g_h.funcs->_h_destroy_queue(to_slave_queue[prio_q_idx]); + to_slave_queue[prio_q_idx] = NULL; + } + } + + /* Clean up semaphores */ + if (sem_to_slave_queue) { + g_h.funcs->_h_destroy_semaphore(sem_to_slave_queue); + sem_to_slave_queue = NULL; + } + + if (sem_from_slave_queue) { + g_h.funcs->_h_destroy_semaphore(sem_from_slave_queue); + sem_from_slave_queue = NULL; + } + + /* Deinitialize the UART bus */ + if (uart_handle) { + ESP_LOGI(TAG, "Deinitializing UART bus"); + if (bus_handle) { + g_h.funcs->_h_bus_deinit(bus_handle); + } + + if (buf_mp_g) { + mempool_destroy(buf_mp_g); + buf_mp_g = NULL; + } + uart_handle = NULL; + } +} + +int ensure_slave_bus_ready(void *bus_handle) +{ + esp_err_t res = ESP_OK; + gpio_pin_t reset_pin = { .port = H_GPIO_PIN_RESET_Port, .pin = H_GPIO_PIN_RESET_Pin }; + + if (ESP_TRANSPORT_OK != esp_hosted_transport_get_reset_config(&reset_pin)) { + ESP_LOGE(TAG, "Unable to get RESET config for transport"); + return ESP_FAIL; + } + + assert(reset_pin.pin != -1); + + release_slave_reset_gpio_post_wakeup(); + + if (!esp_hosted_is_reboot_due_to_deep_sleep()) { + /* Reset the slave */ + ESP_LOGI(TAG, "Resetting slave on UART bus with pin %d", reset_pin.pin); + g_h.funcs->_h_config_gpio(reset_pin.port, reset_pin.pin, H_GPIO_MODE_DEF_OUTPUT); + g_h.funcs->_h_write_gpio(reset_pin.port, reset_pin.pin, H_RESET_VAL_ACTIVE); + g_h.funcs->_h_msleep(1); + g_h.funcs->_h_write_gpio(reset_pin.port, reset_pin.pin, H_RESET_VAL_INACTIVE); + g_h.funcs->_h_msleep(1); + g_h.funcs->_h_write_gpio(reset_pin.port, reset_pin.pin, H_RESET_VAL_ACTIVE); + g_h.funcs->_h_msleep(1500); + } else { + g_h.funcs->_h_msleep(700); + } + + return res; +} + +int bus_inform_slave_host_power_save_start(void) +{ + ESP_LOGI(TAG, "Inform slave, host power save is started"); + int ret = ESP_OK; + ret = esp_hosted_tx(ESP_SERIAL_IF, 0, NULL, 0, + H_BUFF_NO_ZEROCOPY, NULL, FLAG_POWER_SAVE_STARTED); + return ret; +} + +int bus_inform_slave_host_power_save_stop(void) +{ + ESP_LOGI(TAG, "Inform slave, host power save is stopped"); + int ret = ESP_OK; + ret = esp_hosted_tx(ESP_SERIAL_IF, 0, NULL, 0, + H_BUFF_NO_ZEROCOPY, NULL, FLAG_POWER_SAVE_STOPPED); + return ret; +} + +void check_if_max_freq_used(uint8_t chip_type) +{ + /* TODO: Implement */ +} diff --git a/host/drivers/virtual_serial_if/serial_if.c b/host/drivers/virtual_serial_if/serial_if.c index 569b0992..baa8700e 100644 --- a/host/drivers/virtual_serial_if/serial_if.c +++ b/host/drivers/virtual_serial_if/serial_if.c @@ -18,24 +18,6 @@ DEFINE_LOG_TAG(serial_if); #define PROTO_PSER_TLV_T_EPNAME 0x01 #define PROTO_PSER_TLV_T_DATA 0x02 -#if 0 -#ifdef MCU_SYS -#define command_log(format, ...) printf(format "\r", ##__VA_ARGS__); -#else -#define command_log(...) printf("%s:%u ",__func__,__LINE__); \ - printf(__VA_ARGS__); -#endif -#endif - -#if 0 -#define HOSTED_CALLOC(buff,nbytes) do { \ - buff = (uint8_t *)g_h.funcs->_h_calloc(1, nbytes); \ - if (!buff) { \ - printf("%s, Failed to allocate memory \n", __func__); \ - goto free_bufs; \ - } \ -} while(0); -#endif /** Exported variables **/ struct serial_drv_handle_t* serial_handle = NULL; @@ -171,6 +153,11 @@ int transport_pserial_send(uint8_t* data, uint16_t data_length) uint16_t buf_len = 0; uint8_t *write_buf = NULL; + if (!data || !data_length) { + ESP_LOGW(TAG, "Empty RPC data, ignored"); + return FAILURE; + } + /* * TLV (Type - Length - Value) structure is as follows: * -------------------------------------------------------------------------------------------- @@ -185,30 +172,31 @@ int transport_pserial_send(uint8_t* data, uint16_t data_length) buf_len = SIZE_OF_TYPE + SIZE_OF_LENGTH + strlen(ep_name) + SIZE_OF_TYPE + SIZE_OF_LENGTH + data_length; - HOSTED_CALLOC(uint8_t,write_buf,buf_len,free_bufs); + HOSTED_CALLOC(uint8_t,write_buf,buf_len,free_bufs2); if (!serial_handle) { ESP_LOGE(TAG, "Serial connection closed?\n"); - goto free_bufs; + goto free_bufs1; } count = compose_tlv(write_buf, data, data_length); if (!count) { ESP_LOGE(TAG, "Failed to compose TX data\n"); - goto free_bufs; + goto free_bufs1; } ret = serial_drv_write(serial_handle, write_buf, count, &count); if (ret != SUCCESS) { ESP_LOGE(TAG, "Failed to write TX data\n"); - goto free_bufs; - } - return SUCCESS; -free_bufs: - if (write_buf) { - g_h.funcs->_h_free(write_buf); + goto free_bufs2; } + return ret; + +free_bufs1: + HOSTED_FREE(write_buf); +free_bufs2: + /* write_buf is supposed to be freed by serial_drv_write() */ return FAILURE; } diff --git a/host/hosted_os_abstraction.h b/host/hosted_os_abstraction.h index dad5e8cb..2722d98f 100644 --- a/host/hosted_os_abstraction.h +++ b/host/hosted_os_abstraction.h @@ -6,6 +6,7 @@ #define __HOSTED_OS_ABSTRACTION_H__ #include "esp_hosted_config.h" +#include "esp_hosted_power_save.h" typedef struct { /* Memory */ @@ -53,7 +54,7 @@ typedef struct { /* Timer */ /* 32 */ int (*_h_timer_stop)(void *timer_handle); -/* 33 */ void* (*_h_timer_start)(int duration, int type, void (*timeout_handler)(void *), void *arg); +/* 33 */ void* (*_h_timer_start)(const char *name, int duration_ms, int type, void (*timeout_handler)(void *), void *arg); /* Mempool */ #ifdef H_USE_MEMPOOL @@ -64,47 +65,57 @@ typedef struct { /* GPIO */ /* 37 */ int (*_h_config_gpio)(void* gpio_port, uint32_t gpio_num, uint32_t mode); -/* 38 */ int (*_h_config_gpio_as_interrupt)(void* gpio_port, uint32_t gpio_num, uint32_t intr_type, void (*gpio_isr_handler)(void* arg)); +/* 38 */ int (*_h_config_gpio_as_interrupt)(void* gpio_port, uint32_t gpio_num, uint32_t intr_type, void (*gpio_isr_handler)(void* arg), void *arg); +/* 39 */ int (*_h_teardown_gpio_interrupt)(void* gpio_port, uint32_t gpio_num); /* 39 */ int (*_h_read_gpio)(void* gpio_port, uint32_t gpio_num); /* 40 */ int (*_h_write_gpio)(void* gpio_port, uint32_t gpio_num, uint32_t value); - +/* 40 */ int (*_h_pull_gpio)(void* gpio_port, uint32_t gpio_num, uint32_t pull_value, uint32_t enable); +/* 41 */ int (*_h_hold_gpio)(void* gpio_port, uint32_t gpio_num, uint32_t hold_value); +/* 42 */ int (*_h_get_host_wakeup_or_reboot_reason)(void); /* All Transports - Init */ /* 41 */ void * (*_h_bus_init)(void); +/* 42 */ int (*_h_bus_deinit)(void*); /* Transport - SPI */ #if H_TRANSPORT_IN_USE == H_TRANSPORT_SPI -/* 42 */ int (*_h_do_bus_transfer)(void *transfer_context); +/* 43 */ int (*_h_do_bus_transfer)(void *transfer_context); #endif -/* 43 */ int (*_h_event_wifi_post)(int32_t event_id, void* event_data, size_t event_data_size, uint32_t ticks_to_wait); -/* 44 */ void (*_h_printf)(int level, const char *tag, const char *format, ...); -/* 45 */ void (*_h_hosted_init_hook)(void); +/* 44 */ int (*_h_event_wifi_post)(int32_t event_id, void* event_data, size_t event_data_size, uint32_t ticks_to_wait); +// 45 - int (*_h_event_ip_post)(int32_t event_id, void* event_data, size_t event_data_size, uint32_t ticks_to_wait); +/* 45 */ void (*_h_printf)(int level, const char *tag, const char *format, ...); +/* 46 */ void (*_h_hosted_init_hook)(void); #if H_TRANSPORT_IN_USE == H_TRANSPORT_SDIO /* Transport - SDIO */ -/* 46 */ int (*_h_sdio_card_init)(void *ctx); -/* 47 */ int (*_h_sdio_read_reg)(void *ctx, uint32_t reg, uint8_t *data, uint16_t size, bool lock_required); -/* 48 */ int (*_h_sdio_write_reg)(void *ctx, uint32_t reg, uint8_t *data, uint16_t size, bool lock_required); -/* 49 */ int (*_h_sdio_read_block)(void *ctx, uint32_t reg, uint8_t *data, uint16_t size, bool lock_required); -/* 50 */ int (*_h_sdio_write_block)(void *ctx, uint32_t reg, uint8_t *data, uint16_t size, bool lock_required); -/* 51 */ int (*_h_sdio_wait_slave_intr)(void *ctx, uint32_t ticks_to_wait); +/* 47 */ int (*_h_sdio_card_init)(void *ctx); +/* 48 */ int (*_h_sdio_card_deinit)(void*ctx); +/* 49 */ int (*_h_sdio_read_reg)(void *ctx, uint32_t reg, uint8_t *data, uint16_t size, bool lock_required); +/* 50 */ int (*_h_sdio_write_reg)(void *ctx, uint32_t reg, uint8_t *data, uint16_t size, bool lock_required); +/* 51 */ int (*_h_sdio_read_block)(void *ctx, uint32_t reg, uint8_t *data, uint16_t size, bool lock_required); +/* 52 */ int (*_h_sdio_write_block)(void *ctx, uint32_t reg, uint8_t *data, uint16_t size, bool lock_required); +/* 53 */ int (*_h_sdio_wait_slave_intr)(void *ctx, uint32_t ticks_to_wait); #endif #if H_TRANSPORT_IN_USE == H_TRANSPORT_SPI_HD /* Transport - SPI HD */ -/* 51 */ int (*_h_spi_hd_read_reg)(uint32_t reg, uint32_t *data, int poll, bool lock_required); -/* 52 */ int (*_h_spi_hd_write_reg)(uint32_t reg, uint32_t *data, bool lock_required); -/* 53 */ int (*_h_spi_hd_read_dma)(uint8_t *data, uint16_t size, bool lock_required); -/* 54 */ int (*_h_spi_hd_write_dma)(uint8_t *data, uint16_t size, bool lock_required); -/* 55 */ int (*_h_spi_hd_set_data_lines)(uint32_t data_lines); -/* 56 */ int (*_h_spi_hd_send_cmd9)(void); +/* 54 */ int (*_h_spi_hd_read_reg)(uint32_t reg, uint32_t *data, int poll, bool lock_required); +/* 55 */ int (*_h_spi_hd_write_reg)(uint32_t reg, uint32_t *data, bool lock_required); +/* 56 */ int (*_h_spi_hd_read_dma)(uint8_t *data, uint16_t size, bool lock_required); +/* 57 */ int (*_h_spi_hd_write_dma)(uint8_t *data, uint16_t size, bool lock_required); +/* 58 */ int (*_h_spi_hd_set_data_lines)(uint32_t data_lines); +/* 59 */ int (*_h_spi_hd_send_cmd9)(void); #endif #if H_TRANSPORT_IN_USE == H_TRANSPORT_UART /* Transport - UART */ -/* 57 */ int (*_h_uart_read)(void *ctx, uint8_t *data, uint16_t size); -/* 58 */ int (*_h_uart_write)(void *ctx, uint8_t *data, uint16_t size); +/* 60 */ int (*_h_uart_read)(void *ctx, uint8_t *data, uint16_t size); +/* 61 */ int (*_h_uart_write)(void *ctx, uint8_t *data, uint16_t size); #endif -/* 59 */ int (*_h_restart_host)(void); +/* 62 */ int (*_h_restart_host)(void); + +/* 63 */ int (*_h_config_host_power_save_hal_impl)(uint32_t power_save_type, void* gpio_port, uint32_t gpio_num, int level); +/* 64 */ int (*_h_start_host_power_save_hal_impl)(uint32_t power_save_type); + } hosted_osi_funcs_t; struct hosted_config_t { diff --git a/host/port/esp/freertos/include/esp_hosted_wifi_config.h b/host/port/esp/freertos/include/esp_hosted_wifi_config.h index ad6a6916..68f759e2 100644 --- a/host/port/esp/freertos/include/esp_hosted_wifi_config.h +++ b/host/port/esp/freertos/include/esp_hosted_wifi_config.h @@ -52,4 +52,10 @@ #define H_GOT_AP_CONFIG_PARAM_TRANSITION_DISABLE 1 #endif +#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(6, 0, 0) + #define H_PRESENT_IN_ESP_IDF_6_0_0 1 +#else + #define H_PRESENT_IN_ESP_IDF_6_0_0 0 +#endif + #endif /* __ESP_HOSTED_WIFI_CONFIG_H__ */ diff --git a/host/port/esp/freertos/include/os_wrapper.h b/host/port/esp/freertos/include/os_wrapper.h index da061581..4858cf75 100644 --- a/host/port/esp/freertos/include/os_wrapper.h +++ b/host/port/esp/freertos/include/os_wrapper.h @@ -32,8 +32,11 @@ ESP_EVENT_DECLARE_BASE(WIFI_EVENT); #define MAX_PAYLOAD_SIZE (MAX_TRANSPORT_BUFFER_SIZE-H_ESP_PAYLOAD_HEADER_OFFSET) -#define RPC__TIMER_ONESHOT 0 -#define RPC__TIMER_PERIODIC 1 +typedef enum { + H_TIMER_TYPE_ONESHOT = 0, + H_TIMER_TYPE_PERIODIC = 1, +} esp_hosted_timer_type_t; + #define HOSTED_BLOCKING -1 #define HOSTED_NON_BLOCKING 0 @@ -74,23 +77,8 @@ enum { H_GPIO_MODE_INPUT_OUTPUT = ((H_GPIO_MODE_DEF_INPUT) | (H_GPIO_MODE_DEF_OUTPUT)), /*!< GPIO mode : output and input mode */ }; -#if 0 -#if 0 //defined OS_CMSIS -#define thread_handle_t osThreadId -#define osThreadId osThreadId -#define semaphore_handle_t osSemaphoreId -#define mutex_handle_t osMutexId -#else //if defined OS_FREERTOS -#define thread_handle_t TaskHandle_t -#define queue_handle_t QueueHandle_t -#define semaphore_handle_t SemaphoreHandle_t -#define mutex_handle_t SemaphoreHandle_t -#define osDelay vTaskDelay -//#else -//#error "Port the os calls to your system" -#endif -#endif - +#define H_GPIO_PULL_UP (1) +#define H_GPIO_PULL_DOWN (0) #define RET_OK 0 #define RET_FAIL -1 @@ -111,7 +99,7 @@ enum { /** Enumeration **/ enum hardware_type_e { HARDWARE_TYPE_ESP32, - HARDWARE_TYPE_OTHER_ESP_CHIPS, + HARDWARE_TYPE_OTHER_ESP_CHIPSETS, HARDWARE_TYPE_INVALID, }; @@ -124,7 +112,7 @@ enum hardware_type_e { #define TICKS_PER_SEC(x) (1000*(x) / portTICK_PERIOD_MS) #define SEC_TO_MILLISEC(x) (1000*(x)) #define SEC_TO_MICROSEC(x) (1000*1000*(x)) - +#define MILLISEC_TO_MICROSEC(x) (1000*(x)) #define MEM_DUMP(s) \ printf("%s free:%lu min-free:%lu lfb-def:%u lfb-8bit:%u\n\n", s, \ @@ -132,16 +120,6 @@ enum hardware_type_e { heap_caps_get_largest_free_block(MALLOC_CAP_DEFAULT), \ heap_caps_get_largest_free_block(MALLOC_CAP_8BIT)) -#if 0 -#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(4, 4, 0) - #define ESP_MUTEX_INIT(mUtEx) portMUX_INITIALIZE(&(mUtEx)); -#else - #define ESP_MUTEX_INIT(mUtEx) vPortCPUInitializeMutex(&(mUtEx)); -#endif -#endif - - - /* -------- Create handle ------- */ #define HOSTED_CREATE_HANDLE(tYPE, hANDLE) { \ @@ -152,6 +130,13 @@ enum hardware_type_e { } \ } +#define HOSTED_FREE_HANDLE(handle) { \ + if (handle) { \ + g_h.funcs->_h_free(handle); \ + handle = NULL; \ + } \ +} + /* -------- Calloc, Free handle ------- */ #define HOSTED_FREE(buff) if (buff) { g_h.funcs->_h_free(buff); buff = NULL; } #define HOSTED_CALLOC(struct_name, buff, nbytes, gotosym) do { \ diff --git a/host/port/esp/freertos/include/sdio_wrapper.h b/host/port/esp/freertos/include/sdio_wrapper.h index 9491841f..c134d283 100644 --- a/host/port/esp/freertos/include/sdio_wrapper.h +++ b/host/port/esp/freertos/include/sdio_wrapper.h @@ -30,11 +30,14 @@ void * hosted_sdio_init(void); /* Hosted SDIO deinit function * expects a pointer to the sdio context */ -esp_err_t hosted_sdio_deinit(void *ctx); +int hosted_sdio_deinit(void *ctx); /* Hosted SDIO to initialise the SDIO card */ int hosted_sdio_card_init(void *ctx); +/* Hosted SDIO to deinitialise the SDIO card */ +int hosted_sdio_card_deinit(void *ctx); + /* Hosted SDIO functions to read / write to slave scratch registers * and to read / write block data * If lock_required is true, call will hold a mutex for the duration of the call */ diff --git a/host/port/esp/freertos/include/spi_wrapper.h b/host/port/esp/freertos/include/spi_wrapper.h index 057ade85..1a5ec3c0 100644 --- a/host/port/esp/freertos/include/spi_wrapper.h +++ b/host/port/esp/freertos/include/spi_wrapper.h @@ -23,6 +23,9 @@ * returns a pointer to the spi context */ void * hosted_spi_init(void); +/* Hosted SPI deinit function */ +int hosted_spi_deinit(void *handle); + /* Hosted SPI transfer function */ int hosted_do_spi_transfer(void *trans); diff --git a/host/port/esp/freertos/src/os_wrapper.c b/host/port/esp/freertos/src/os_wrapper.c index d574a5a0..f94df64b 100644 --- a/host/port/esp/freertos/src/os_wrapper.c +++ b/host/port/esp/freertos/src/os_wrapper.c @@ -17,6 +17,7 @@ #include "esp_log.h" #include "os_wrapper.h" #include "esp_log.h" +#include #include "driver/gpio.h" #include "esp_event.h" #include "esp_heap_caps.h" @@ -24,6 +25,13 @@ #include "esp_macros.h" #include "esp_hosted_config.h" #include "esp_wifi.h" +#include "esp_sleep.h" +#include "esp_hosted_power_save.h" +#include "esp_system.h" +#include "hal/gpio_types.h" +#include "driver/gpio.h" +#include "esp_hosted_wifi_config.h" + /* Wi-Fi headers are reused at ESP-Hosted */ #include "esp_wifi_crypto_types.h" @@ -52,12 +60,10 @@ struct mempool * nw_mp_g = NULL; const wpa_crypto_funcs_t g_wifi_default_wpa_crypto_funcs; wifi_osi_funcs_t g_wifi_osi_funcs; -//ESP_EVENT_DECLARE_BASE(WIFI_EVENT); -ESP_EVENT_DEFINE_BASE(WIFI_EVENT); +ESP_EVENT_DECLARE_BASE(WIFI_EVENT); struct hosted_config_t g_h = HOSTED_CONFIG_INIT_DEFAULT(); struct timer_handle_t { - //osTimerId timer_id; esp_timer_handle_t timer_id; }; @@ -162,14 +168,6 @@ void *hosted_thread_create(const char *tname, uint32_t tprio, uint32_t tstack_si return NULL; } -#if 0 - osThreadDef( - Ctrl_port_tsk, - start_routine, - CTRL_PATH_TASK_PRIO, 0, - CTRL_PATH_TASK_STACK_SIZE); - *thread_handle = osThreadCreate(osThread(Ctrl_port_tsk), arg); -#endif task_created = xTaskCreate((void (*)(void *))start_routine, tname, tstack_size, sr_arg, tprio, thread_handle); if (!(*thread_handle)) { ESP_LOGE(TAG, "Failed to create thread: %s\n", tname); @@ -198,12 +196,6 @@ int hosted_thread_cancel(void *thread_handle) thread_hdl = (thread_handle_t *)thread_handle; - //ret = osThreadTerminate(*thread_hdl); - //if (ret) { - // ESP_LOGE(TAG, "Prob in pthread_cancel, destroy handle anyway\n"); - // HOSTED_FREE(thread_handle); - // return RET_INVALID; - //} vTaskDelete(*thread_hdl); HOSTED_FREE(thread_handle); @@ -213,9 +205,7 @@ int hosted_thread_cancel(void *thread_handle) /* -------- Sleeps -------------- */ unsigned int hosted_msleep(unsigned int mseconds) { - //osDelay(mseconds); vTaskDelay(pdMS_TO_TICKS(mseconds)); - //usleep(mseconds*1000UL); return 0; } @@ -227,7 +217,6 @@ unsigned int hosted_usleep(unsigned int useconds) unsigned int hosted_sleep(unsigned int seconds) { - //osDelay(seconds * 1000); return hosted_msleep(seconds * 1000UL); } @@ -642,22 +631,22 @@ int hosted_timer_stop(void *timer_handle) * } **/ -//void *hosted_timer_start(int duration, int type, -// void (*timeout_handler)(void const *), void *arg) -void *hosted_timer_start(int duration, int type, +void *hosted_timer_start(const char *name, int duration_ms, int type, void (*timeout_handler)(void *), void *arg) { struct timer_handle_t *timer_handle = NULL; int ret = RET_OK; - ESP_LOGD(TAG, "Start the timer %u\n", duration); + esp_hosted_timer_type_t esp_timer_type = type; + + ESP_LOGD(TAG, "Start the timer %u\n", duration_ms); //os_timer_type timer_type = osTimerOnce; //osTimerDef (timerNew, timeout_handler); const esp_timer_create_args_t timerNew_args = { .callback = timeout_handler, /* argument specified here will be passed to timer callback function */ .arg = (void*) arg, - .name = "one-shot" + .name = name, }; @@ -681,16 +670,18 @@ void *hosted_timer_start(int duration, int type, } /* Start depending upon timer type */ - if (type == RPC__TIMER_PERIODIC) { - ret = esp_timer_start_periodic(timer_handle->timer_id, SEC_TO_MICROSEC(duration)); - } else if (type == RPC__TIMER_ONESHOT) { - ret = esp_timer_start_once(timer_handle->timer_id, SEC_TO_MICROSEC(duration)); + if (esp_timer_type == H_TIMER_TYPE_PERIODIC) { + ret = esp_timer_start_periodic(timer_handle->timer_id, MILLISEC_TO_MICROSEC(duration_ms)); + } else if (esp_timer_type == H_TIMER_TYPE_ONESHOT) { + ret = esp_timer_start_once(timer_handle->timer_id, MILLISEC_TO_MICROSEC(duration_ms)); } else { ESP_LOGE(TAG, "Unsupported timer type. supported: one_shot, periodic\n"); esp_timer_delete(timer_handle->timer_id); HOSTED_FREE(timer_handle); return NULL; } + /* This is a workaround to kick the timer task to pick up the timer */ + vTaskDelay(100); if (ret) { esp_timer_delete(timer_handle->timer_id); @@ -718,11 +709,14 @@ int hosted_config_gpio(void* gpio_port, uint32_t gpio_num, uint32_t mode) return 0; } -int hosted_config_gpio_as_interrupt(void* gpio_port, uint32_t gpio_num, uint32_t intr_type, void (*new_gpio_isr_handler)(void* arg)) +int hosted_setup_gpio_interrupt(void* gpio_port, uint32_t gpio_num, uint32_t intr_type, void (*fn)(void *), void *arg) { + int ret = 0; + static bool isr_service_installed = false; + gpio_config_t new_gpio_io_conf={ - .intr_type=intr_type, .mode=GPIO_MODE_INPUT, + .intr_type = GPIO_INTR_DISABLE, .pin_bit_mask=(1ULL<_h_malloc(sizeof(sdmmc_card_t)); - if (!context.card) + if (!context.card) { + ESP_LOGE(TAG, "Failed to allocate memory for SDMMC card"); return NULL; + } // initialise mutex for bus locking sdio_bus_lock = g_h.funcs->_h_create_mutex(); @@ -367,7 +382,11 @@ int hosted_sdio_card_init(void *ctx) SDIO_FAIL_IF_NULL(ctx); sdmmc_context_t *context = (sdmmc_context_t *)ctx; + SDIO_FAIL_IF_NULL(ctx); + struct esp_hosted_sdio_config *sdio_config = &context->config; + SDIO_FAIL_IF_NULL(sdio_config); + SDIO_FAIL_IF_NULL(context->card); sdmmc_host_t config = SDMMC_HOST_DEFAULT(); config.slot = sdio_config->slot; // override default slot set @@ -433,7 +452,7 @@ int hosted_sdio_card_init(void *ctx) return ESP_FAIL; } -esp_err_t hosted_sdio_deinit(void *ctx) +int hosted_sdio_card_deinit(void *ctx) { SDIO_FAIL_IF_NULL(ctx); @@ -442,7 +461,6 @@ esp_err_t hosted_sdio_deinit(void *ctx) if (card) { sdmmc_host_deinit(); - HOSTED_FREE(card); return ESP_OK; } return ESP_FAIL; @@ -456,9 +474,11 @@ int hosted_sdio_read_reg(void *ctx, uint32_t reg, uint8_t *data, uint16_t size, sdmmc_context_t *context = (sdmmc_context_t *)ctx; sdmmc_card_t *card = context->card; + SDIO_FAIL_IF_NULL(card); /* Need to apply address mask when reading/writing slave registers */ reg &= ESP_ADDRESS_MASK; + ESP_LOGV(TAG, "%s: reg[0x%" PRIx32"] size[%u]", __func__, reg, size); SDIO_LOCK(lock_required); if (size <= 1) { @@ -481,6 +501,7 @@ int hosted_sdio_write_reg(void *ctx, uint32_t reg, uint8_t *data, uint16_t size, /* Need to apply address mask when reading/writing slave registers */ reg &= ESP_ADDRESS_MASK; + ESP_LOGV(TAG, "%s: reg[0x%" PRIx32"] size[%u]", __func__, reg, size); SDIO_LOCK(lock_required); if (size <= 1) { @@ -500,6 +521,8 @@ int hosted_sdio_read_block(void *ctx, uint32_t reg, uint8_t *data, uint16_t size sdmmc_context_t *context = (sdmmc_context_t *)ctx; sdmmc_card_t *card = context->card; + SDIO_FAIL_IF_NULL(card); + ESP_LOGV(TAG, "%s: reg[0x%" PRIx32"] size[%u]", __func__, reg, size); SDIO_LOCK(lock_required); if (size <= 1) { @@ -519,6 +542,8 @@ int hosted_sdio_write_block(void *ctx, uint32_t reg, uint8_t *data, uint16_t siz sdmmc_context_t *context = (sdmmc_context_t *)ctx; sdmmc_card_t *card = context->card; + SDIO_FAIL_IF_NULL(card); + ESP_LOGV(TAG, "%s: reg[0x%" PRIx32"] size[%u]", __func__, reg, size); SDIO_LOCK(lock_required); if (size <= 1) { @@ -538,5 +563,7 @@ int hosted_sdio_wait_slave_intr(void *ctx, uint32_t ticks_to_wait) sdmmc_context_t *context = (sdmmc_context_t *)ctx; sdmmc_card_t *card = context->card; + SDIO_FAIL_IF_NULL(card); + return sdmmc_io_wait_int(card, ticks_to_wait); } diff --git a/host/port/esp/freertos/src/spi_wrapper.c b/host/port/esp/freertos/src/spi_wrapper.c index 56cee511..275bf4b9 100644 --- a/host/port/esp/freertos/src/spi_wrapper.c +++ b/host/port/esp/freertos/src/spi_wrapper.c @@ -38,21 +38,18 @@ DEFINE_LOG_TAG(spi_wrapper); extern void * spi_handle; -void * hosted_spi_init(void) -{ #ifdef CONFIG_IDF_TARGET_ESP32 -#define SENDER_HOST HSPI_HOST - + #define SENDER_HOST HSPI_HOST #else -#define SENDER_HOST SPI2_HOST - + #define SENDER_HOST SPI2_HOST #endif - +void * hosted_spi_init(void) +{ esp_err_t ret; ESP_LOGI(TAG, "Transport: SPI, Mode:%u Freq:%uMHz TxQ:%u RxQ:%u\n GPIOs: CLK:%u MOSI:%u MISO:%u CS:%u HS:%u DR:%u SlaveReset:%u", - H_SPI_MODE, H_SPI_INIT_CLK_MHZ, H_SPI_TX_Q, H_SPI_RX_Q, + H_SPI_MODE, H_SPI_FD_CLK_MHZ, H_SPI_TX_Q, H_SPI_RX_Q, H_GPIO_SCLK_Pin, H_GPIO_MOSI_Pin, H_GPIO_MISO_Pin, H_GPIO_CS_Pin, H_GPIO_HANDSHAKE_Pin, H_GPIO_DATA_READY_Pin, H_GPIO_PIN_RESET_Pin); @@ -78,7 +75,7 @@ void * hosted_spi_init(void) #ifdef CONFIG_IDF_TARGET_ESP32P4 .clock_source = SPI_CLK_SRC_SPLL, #endif - .clock_speed_hz=MHZ_TO_HZ(H_SPI_INIT_CLK_MHZ), + .clock_speed_hz=MHZ_TO_HZ(H_SPI_FD_CLK_MHZ), .duty_cycle_pos=128, //50% duty cycle .mode=H_SPI_MODE, .spics_io_num=H_GPIO_CS_Pin, @@ -99,6 +96,38 @@ void * hosted_spi_init(void) return spi_handle; } +int hosted_spi_deinit(void *handle) +{ + if (!handle) { + ESP_LOGE(TAG, "Invalid handle for SPI deinit"); + return -1; + } + + spi_device_handle_t *spi_dev_handle = (spi_device_handle_t *)handle; + + /* Remove device from SPI bus */ + esp_err_t ret = spi_bus_remove_device(*spi_dev_handle); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to remove SPI device: %d", ret); + return -1; + } + + /* Free the SPI bus */ + ret = spi_bus_free(SENDER_HOST); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to free SPI bus: %d", ret); + return -1; + } + + /* Free the handle */ + HOSTED_FREE_HANDLE(handle); + spi_handle = NULL; + + ESP_LOGI(TAG, "SPI deinitialized"); + return 0; +} + + int hosted_do_spi_transfer(void *trans) { spi_transaction_t t = {0}; diff --git a/host/utils/common.c b/host/utils/common.c index 601c0976..a52306d1 100644 --- a/host/utils/common.c +++ b/host/utils/common.c @@ -90,7 +90,7 @@ int min(int x, int y) { * @brief get numbers from string * @param val - return integer value, * arg - input string - * @retval STM_OK on success, else STM_FAIL + * @retval 0 on success, else -1 */ int get_num_from_string(int *val, char *arg) { @@ -99,12 +99,12 @@ int get_num_from_string(int *val, char *arg) if (!arg || (arg[0]=='\0')) { ESP_LOGE(TAG, "No number Identified \n"); - return STM_FAIL; + return -1; } if (!val) { ESP_LOGE(TAG, "No memory allocated \n"); - return STM_FAIL; + return -1; } errno = 0; @@ -114,16 +114,16 @@ int get_num_from_string(int *val, char *arg) if (endptr == str) { ESP_LOGE(TAG, "No digits found \n"); *val = 0; - return STM_FAIL; + return -1; } if ((errno == ERANGE) && ((*val == INT32_MAX) || (*val == INT32_MIN))) { perror("strtol"); *val = 0; - return STM_FAIL; + return -1; } - return STM_OK; + return 0; } #endif diff --git a/host/utils/common.h b/host/utils/common.h index 30b0e6b0..66775b9b 100644 --- a/host/utils/common.h +++ b/host/utils/common.h @@ -58,16 +58,6 @@ extern "C" { #define SUCCESS 0 #define FAILURE -1 -typedef enum stm_ret_s { - STM_OK = 0, - STM_FAIL = -1, - STM_FAIL_TIMEOUT = -2, - STM_FAIL_INVALID_ARG = -3, - STM_FAIL_NO_MEMORY = -4, - STM_FAIL_NOT_FOUND = -5, - STM_FAIL_NOT_FINISHED = -6, - STM_FAIL_ALIGNMENT = -7 -}stm_ret_t; typedef enum { TRANSPORT_INACTIVE, diff --git a/host/utils/stats.c b/host/utils/stats.c index 35cd61c8..bfd71f63 100644 --- a/host/utils/stats.c +++ b/host/utils/stats.c @@ -17,11 +17,12 @@ /** Includes **/ #include "stats.h" +#include "esp_hosted_header.h" #include "esp_hosted_config.h" #if TEST_RAW_TP -#include "os_wrapper.h" #include "transport_drv.h" #endif +#include "os_wrapper.h" #include "esp_log.h" #include "esp_hosted_transport_init.h" @@ -31,11 +32,14 @@ #if ESP_PKT_STATS struct pkt_stats_t pkt_stats; void *pkt_stats_thread = NULL; -extern volatile uint8_t wifi_tx_throttling; +#endif + +#ifdef ESP_PKT_NUM_DEBUG +struct dbg_stats_t dbg_stats; #endif #if ESP_PKT_STATS || TEST_RAW_TP -DEFINE_LOG_TAG(stats); +static const char *TAG = "stats"; #endif /** Constants/Macros **/ @@ -92,7 +96,6 @@ void raw_tp_timer_func(void * arg) #endif int32_t div = 1024; - actual_bandwidth_tx = (test_raw_tx_len*8)/TEST_RAW_TP__TIMEOUT; actual_bandwidth_rx = (test_raw_rx_len*8)/TEST_RAW_TP__TIMEOUT; #if USE_FLOATING_POINT @@ -127,7 +130,7 @@ static void raw_tp_tx_task(void const* pvParameters) for (i=0; i<(TEST_RAW_TP__BUF_SIZE/4-1); i++, ptr++) *ptr = 0xBAADF00D; - ret = esp_hosted_tx(ESP_TEST_IF, 0, raw_tp_tx_buf, TEST_RAW_TP__BUF_SIZE, H_BUFF_ZEROCOPY, H_DEFLT_FREE_FUNC); + ret = esp_hosted_tx(ESP_TEST_IF, 0, raw_tp_tx_buf, TEST_RAW_TP__BUF_SIZE, H_BUFF_ZEROCOPY, H_DEFLT_FREE_FUNC, 0); #else raw_tp_tx_buf = mempool_alloc(buf_mp_g, MAX_TRANSPORT_BUFFER_SIZE, true); @@ -136,9 +139,9 @@ static void raw_tp_tx_task(void const* pvParameters) for (i=0; i<(TEST_RAW_TP__BUF_SIZE/4-1); i++, ptr++) *ptr = 0xBAADF00D; - ret = esp_hosted_tx(ESP_TEST_IF, 0, raw_tp_tx_buf, TEST_RAW_TP__BUF_SIZE, H_BUFF_ZEROCOPY, stats_mempool_free); + ret = esp_hosted_tx(ESP_TEST_IF, 0, raw_tp_tx_buf, TEST_RAW_TP__BUF_SIZE, H_BUFF_ZEROCOPY, stats_mempool_free, 0); #endif - if (ret != STM_OK) { + if (ret) { ESP_LOGE(TAG, "Failed to send to queue\n"); continue; } @@ -155,8 +158,8 @@ static void process_raw_tp_flags(uint8_t cap) test_raw_tp_cleanup(); if (test_raw_tp) { - hosted_timer_handler = g_h.funcs->_h_timer_start(TEST_RAW_TP__TIMEOUT, - RPC__TIMER_PERIODIC, raw_tp_timer_func, NULL); + hosted_timer_handler = g_h.funcs->_h_timer_start("raw_tp_timer", SEC_TO_MILLISEC(TEST_RAW_TP__TIMEOUT), + HOSTED_TIMER_PERIODIC, raw_tp_timer_func, NULL); if (!hosted_timer_handler) { ESP_LOGE(TAG, "Failed to create timer\n\r"); return; @@ -209,10 +212,10 @@ struct mem_stats h_stats_g; #if ESP_PKT_STATS void stats_timer_func(void * arg) { - ESP_LOGI(TAG, "slave: sta_rx_in: %lu sta_rx_out: %lu sta_tx_in [pass: %lu drop: %lu] sta_tx_out: %lu, throttling %u", + ESP_LOGI(TAG, "STA: s2h{in[%lu] out[%lu]} h2s{in(flowctrl_drop[%lu] in[%lu or %lu]) out(ok[%lu] drop[%lu])} flwctl{on[%lu] off[%lu]}", pkt_stats.sta_rx_in,pkt_stats.sta_rx_out, - pkt_stats.sta_tx_in_pass, pkt_stats.sta_tx_in_drop, pkt_stats.sta_tx_out, - wifi_tx_throttling); + pkt_stats.sta_tx_flowctrl_drop, pkt_stats.sta_tx_in_pass, pkt_stats.sta_tx_trans_in, pkt_stats.sta_tx_out, pkt_stats.sta_tx_out_drop, + pkt_stats.sta_flow_ctrl_on, pkt_stats.sta_flow_ctrl_off); ESP_LOGI(TAG, "internal: free %d l-free %d min-free %d, psram: free %d l-free %d min-free %d", heap_caps_get_free_size(MALLOC_CAP_8BIT) - heap_caps_get_free_size(MALLOC_CAP_SPIRAM), heap_caps_get_largest_free_block(MALLOC_CAP_8BIT | MALLOC_CAP_INTERNAL), @@ -228,8 +231,8 @@ void create_debugging_tasks(void) #if ESP_PKT_STATS if (ESP_PKT_STATS_REPORT_INTERVAL) { ESP_LOGI(TAG, "Start Pkt_stats reporting thread [timer: %u sec]", ESP_PKT_STATS_REPORT_INTERVAL); - pkt_stats_thread = g_h.funcs->_h_timer_start(ESP_PKT_STATS_REPORT_INTERVAL, - RPC__TIMER_PERIODIC, stats_timer_func, NULL); + pkt_stats_thread = g_h.funcs->_h_timer_start("pkt_stats_timer", SEC_TO_MILLISEC(ESP_PKT_STATS_REPORT_INTERVAL), + HOSTED_TIMER_PERIODIC, stats_timer_func, NULL); assert(pkt_stats_thread); } #endif diff --git a/host/utils/stats.h b/host/utils/stats.h index 24095d56..1540aa1b 100644 --- a/host/utils/stats.h +++ b/host/utils/stats.h @@ -23,6 +23,7 @@ extern "C" { #include "common.h" #include "esp_hosted_config.h" +#include "esp_hosted_header.h" /* Stats CONFIG: * @@ -116,20 +117,50 @@ struct mem_stats { }; extern struct mem_stats h_stats_g; -#endif +#endif /*H_MEM_STATS*/ + +#ifdef ESP_PKT_NUM_DEBUG +struct dbg_stats_t { + uint16_t tx_pkt_num; + uint16_t exp_rx_pkt_num; +}; + +extern struct dbg_stats_t dbg_stats; +#define UPDATE_HEADER_TX_PKT_NO(h) h->pkt_num = htole16(dbg_stats.tx_pkt_num++) +#define UPDATE_HEADER_RX_PKT_NO(h) \ + do { \ + uint16_t rcvd_pkt_num = le16toh(h->pkt_num); \ + if (dbg_stats.exp_rx_pkt_num != rcvd_pkt_num) { \ + ESP_LOGI(TAG, "exp_pkt_num[%u], rx_pkt_num[%u]", \ + dbg_stats.exp_rx_pkt_num, rcvd_pkt_num); \ + dbg_stats.exp_rx_pkt_num = rcvd_pkt_num; \ + } \ + dbg_stats.exp_rx_pkt_num++; \ + } while(0); + +#else /*ESP_PKT_NUM_DEBUG*/ + + #define UPDATE_HEADER_TX_PKT_NO(h) + #define UPDATE_HEADER_RX_PKT_NO(h) + +#endif /*ESP_PKT_NUM_DEBUG*/ #if ESP_PKT_STATS -#define ESP_PKT_STATS_REPORT_INTERVAL 10 struct pkt_stats_t { uint32_t sta_rx_in; uint32_t sta_rx_out; uint32_t sta_tx_in_pass; - uint32_t sta_tx_in_drop; + uint32_t sta_tx_trans_in; + uint32_t sta_tx_flowctrl_drop; uint32_t sta_tx_out; + uint32_t sta_tx_out_drop; + uint32_t sta_flow_ctrl_on; + uint32_t sta_flow_ctrl_off; }; extern struct pkt_stats_t pkt_stats; -#endif +#endif /*ESP_PKT_STATS*/ + #ifdef __cplusplus } #endif diff --git a/host/utils/util.c b/host/utils/util.c index e215047b..16f17672 100644 --- a/host/utils/util.c +++ b/host/utils/util.c @@ -168,15 +168,15 @@ char * ipv4_addr_ntoa(uint32_t addr, char *buf, int buflen) * @brief Convert mac string to byte stream * @param out - output mac in bytes * s - input mac string - * @retval STM_OK/STM_FAIL + * @retval 0 on success, else -1 */ -stm_ret_t convert_mac_to_bytes(uint8_t *out, const char *s) +int convert_mac_to_bytes(uint8_t *out, const char *s) { int mac[MAC_LEN] = {0}; int num_bytes = 0; if (!s || (strlen(s) < MIN_MAC_STRING_LEN)) { - return STM_FAIL; + return -1; } num_bytes = sscanf(s, "%2x:%2x:%2x:%2x:%2x:%2x", @@ -189,7 +189,7 @@ stm_ret_t convert_mac_to_bytes(uint8_t *out, const char *s) (mac[3] > 0xFF) || (mac[4] > 0xFF) || (mac[5] > 0xFF)) { - return STM_FAIL; + return -1; } out[0] = mac[0]&0xff; @@ -199,7 +199,7 @@ stm_ret_t convert_mac_to_bytes(uint8_t *out, const char *s) out[4] = mac[4]&0xff; out[5] = mac[5]&0xff; - return STM_OK; + return 0; } /** @@ -240,16 +240,16 @@ uint8_t is_same_buff(void *buff1, void *buff2, uint16_t len) * @brief Get ip in 32bit from dotted string notation * @param ip_s - input ip address in string * ip_x - output ip address in 32 bit - * @retval STM_OK/STM_FAIL + * @retval 0 on success, else -1 */ -stm_ret_t get_ipaddr_from_str(const char *ip_s, uint32_t *ip_x) +int get_ipaddr_from_str(const char *ip_s, uint32_t *ip_x) { uint32_t ip_nw = 0; if (! ipv4_addr_aton(ip_s, &ip_nw)) { - return STM_FAIL; + return -1; } /* ipv4_addr_aton does conversion in network order. reverse */ *ip_x = ntoh_long(ip_nw); - return STM_OK; + return 0; } diff --git a/host/utils/util.h b/host/utils/util.h index 5461d454..a31d0e31 100644 --- a/host/utils/util.h +++ b/host/utils/util.h @@ -32,12 +32,12 @@ extern "C" { /** Exported Functions **/ -stm_ret_t get_ipaddr_from_str(const char *ip_s, uint32_t *ip_x); +int get_ipaddr_from_str(const char *ip_s, uint32_t *ip_x); int ipv4_addr_aton(const char *cp, uint32_t *ip_uint32); char * ipv4_addr_ntoa(const uint32_t addr, char *buf, int buflen); -stm_ret_t convert_mac_to_bytes(uint8_t *out, const char *s); +int convert_mac_to_bytes(uint8_t *out, const char *s); uint8_t is_same_buff(void *buff1, void *buff2, uint16_t len); -stm_ret_t get_self_ip(int iface_type, uint32_t *self_ip); +int get_self_ip(int iface_type, uint32_t *self_ip); #ifdef __cplusplus } diff --git a/sdkconfig.ci.all_features_enabled b/sdkconfig.ci.all_features_enabled new file mode 100644 index 00000000..3fdfddc6 --- /dev/null +++ b/sdkconfig.ci.all_features_enabled @@ -0,0 +1,11 @@ +# ESP-Hosted All Features Enabled Configuration +# This configuration enables network split, power save, CLI, and SDIO with minimal overrides + +# Network Split Configuration (not default) +CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED=y + +# Host Power Save Configuration (default is y when supported) +CONFIG_ESP_HOSTED_HOST_POWER_SAVE_ENABLED=y + +# CLI Configuration (default is y) +CONFIG_ESP_HOSTED_CLI_ENABLED=y diff --git a/slave/CMakeLists.txt b/slave/CMakeLists.txt index 7ae51de1..09067876 100644 --- a/slave/CMakeLists.txt +++ b/slave/CMakeLists.txt @@ -2,11 +2,14 @@ # in this exact order for cmake to work correctly cmake_minimum_required(VERSION 3.5) +# Add the wrap flag for esp_wifi_init +add_compile_options(-Wl,--wrap=esp_wifi_init) + include($ENV{IDF_PATH}/tools/cmake/project.cmake) list(APPEND EXCLUDE_COMPONENTS lwip esp_netif) -#set(COMPONENTS main nvs_flash protocomm esp_rom) -set(COMPONENTS esp_timer esptool_py bootloader main nvs_flash esp_rom esp_wifi protocomm driver) -#set(COMPONENTS main nvs_flash protocomm esp_gdbstub) # incase gdbsub needed + +set(COMPONENTS esp_timer esptool_py bootloader main nvs_flash esp_rom esp_wifi protocomm driver mqtt) +#list(APPEND COMPONENTS esp_gdbstub) # incase gdbstub needed project(network_adapter) idf_build_set_property(COMPILE_OPTIONS "-fdiagnostics-color=always" APPEND) @@ -29,6 +32,16 @@ endif() add_custom_target(version_header DEPENDS "${PROJECT_DIR}/main/coprocessor_fw_version.h") add_dependencies(${PROJECT_NAME}.elf version_header) -### clean up generated file when project is cleaned -set_property(DIRECTORY "${PROJECT_DIR}" APPEND PROPERTY - ADDITIONAL_CLEAN_FILES "${PROJECT_DIR}/main/coprocessor_fw_version.h") + +if(EXISTS "${PROJECT_DIR}/../common/esp_hosted_lwip_src_port_hook.h") +idf_component_get_property(lwip lwip COMPONENT_LIB) +if(TARGET ${lwip}) + # Use generator expressions to only apply to non-INTERFACE targets + get_target_property(lwip_type ${lwip} TYPE) + if(NOT lwip_type STREQUAL "INTERFACE_LIBRARY") + message(STATUS "********** Configuring LWIP for network split mode with custom hook **********") + target_include_directories(${lwip} PRIVATE "${PROJECT_DIR}/../common") + target_compile_definitions(${lwip} PRIVATE "-DESP_IDF_LWIP_HOOK_FILENAME=\"${PROJECT_DIR}/../common/esp_hosted_lwip_src_port_hook.h\"") + endif() +endif() +endif() diff --git a/slave/main/CMakeLists.txt b/slave/main/CMakeLists.txt index b0d22bb3..e98e0648 100644 --- a/slave/main/CMakeLists.txt +++ b/slave/main/CMakeLists.txt @@ -1,11 +1,31 @@ if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/common") - set(common_dir "${CMAKE_CURRENT_SOURCE_DIR}/common") + set(common_dir "${CMAKE_CURRENT_SOURCE_DIR}/common") else() - set(common_dir "../../common") + set(common_dir "../../common") endif() -set(COMPONENT_SRCS "slave_control.c" "${common_dir}/proto/esp_hosted_rpc.pb-c.c" "protocomm_pserial.c" "app_main.c" "slave_bt.c" "mempool.c" "stats.c" "mempool_ll.c") -set(COMPONENT_ADD_INCLUDEDIRS "." "${common_dir}" "${common_dir}/log" "${common_dir}/proto" "${common_dir}/rpc" "${common_dir}/transport") +set(COMPONENT_SRCS + "slave_control.c" + "${common_dir}/proto/esp_hosted_rpc.pb-c.c" + "${common_dir}/utils/esp_hosted_cli.c" + "protocomm_pserial.c" + "esp_hosted_coprocessor.c" + "slave_bt.c" + "mempool.c" + "stats.c" + "mempool_ll.c" + "host_power_save.c" + "lwip_filter.c" +) + +set(COMPONENT_ADD_INCLUDEDIRS + "." + "${common_dir}" + "${common_dir}/log" + "${common_dir}/proto" + "${common_dir}/rpc" + "${common_dir}/transport" +) # Select BT UART code based on IDF Target if(CONFIG_IDF_TARGET_ESP32) @@ -26,8 +46,24 @@ else(CONFIG_ESP_UART_HOST_INTERFACE) list(APPEND COMPONENT_SRCS uart_slave_api.c) endif() +if(CONFIG_ESP_HOSTED_COPROCESSOR_EXAMPLE_MQTT) + list(APPEND COMPONENT_SRCS mqtt_example.c) +endif() + +if(CONFIG_ESP_HOSTED_COPROCESSOR_EXAMPLE_HTTP_CLIENT) + list(APPEND COMPONENT_SRCS http_req.c) +endif() + +# cli +list(APPEND COMPONENT_ADD_INCLUDEDIRS "${common_dir}/utils") +list(APPEND COMPONENT_SRCS "${common_dir}/utils/esp_hosted_cli.c") + + register_component() # Add directory of protocomm_priv.h to include paths idf_component_get_property(protocomm_dir protocomm COMPONENT_DIR) target_include_directories(${COMPONENT_LIB} PRIVATE "${protocomm_dir}/src/common") + +# Add linker options to wrap esp_wifi_init function +target_link_libraries(${COMPONENT_LIB} INTERFACE "-Wl,--wrap=esp_wifi_init") diff --git a/slave/main/Kconfig.projbuild b/slave/main/Kconfig.projbuild index c77df3b6..25e98b50 100644 --- a/slave/main/Kconfig.projbuild +++ b/slave/main/Kconfig.projbuild @@ -1,638 +1,654 @@ menu "Example Configuration" - choice ESP_HOST_DEV_BOARD - bool "Configure GPIOs based on an ESP Development Board" - depends on IDF_TARGET_ESP32C6 - default ESP_HOST_DEV_BOARD_NONE - help - "Preconfigures GPIOs to use based on an ESP Development Board" - - config ESP_HOST_DEV_BOARD_NONE - bool "No specific development board" + config ESP_HOSTED_COPROCESSOR + bool + default y - config ESP_HOST_DEV_BOARD_P4_FUNC_BOARD - bool "ESP32-P4-Function-EV-Board" + menu "Bus Config in between Host and Co-processor" + choice ESP_HOST_DEV_BOARD + bool "Configure GPIOs based on an ESP Development Board" + default ESP_HOST_DEV_BOARD_NONE + help + "Preconfigures GPIOs to use based on an ESP Development Board" - endchoice + config ESP_HOST_DEV_BOARD_NONE + bool "No specific development board" - choice ESP_HOST_INTERFACE - bool "Transport layer" - default ESP_SDIO_HOST_INTERFACE if SOC_SDIO_SLAVE_SUPPORTED - default ESP_SPI_HOST_INTERFACE - help - Bus interface to be used for communication with the host + config ESP_HOST_DEV_BOARD_P4_FUNC_BOARD + bool "ESP32-P4-Function-EV-Board" + depends on IDF_TARGET_ESP32C6 - config ESP_SPI_HOST_INTERFACE - bool "SPI Full-duplex" - help - Enable/Disable SPI Full-duplex host interface - - config ESP_SDIO_HOST_INTERFACE - bool "SDIO" - depends on SOC_SDIO_SLAVE_SUPPORTED - help - Enable/Disable SDIO host interface + config C2_C5_MODULE_SUB_BOARD + bool "ESP32-P4 EV Sub-Board for C2 & C5" + depends on IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32C5 + endchoice - # SPI Half Duplex is not supported in ESP32 - config ESP_SPI_HD_HOST_INTERFACE - bool "SPI Half-duplex" - depends on !IDF_TARGET_ESP32 + choice ESP_HOST_INTERFACE + bool "Transport layer" + default ESP_SDIO_HOST_INTERFACE if SOC_SDIO_SLAVE_SUPPORTED + default ESP_SPI_HOST_INTERFACE help - Enable/Disable SPI Half-duplex host interface + Bus interface to be used for communication with the host - config ESP_UART_HOST_INTERFACE - bool "UART" - help - Enable/Disable UART host interface - endchoice + config ESP_SPI_HOST_INTERFACE + bool "SPI Full-duplex" + help + Enable/Disable SPI Full-duplex host interface - menu "SPI Full-duplex Configuration" - depends on ESP_SPI_HOST_INTERFACE + config ESP_SDIO_HOST_INTERFACE + bool "SDIO" + depends on SOC_SDIO_SLAVE_SUPPORTED + help + Enable/Disable SDIO host interface - choice ESP_SPI_PRIV_MODE - bool "Slave SPI mode" - default ESP_SPI_PRIV_MODE_2 if IDF_TARGET_ESP32 - default ESP_SPI_PRIV_MODE_3 + # SPI Half Duplex is not supported in ESP32 + config ESP_SPI_HD_HOST_INTERFACE + bool "SPI Half-duplex" + depends on !IDF_TARGET_ESP32 + help + Enable/Disable SPI Half-duplex host interface - config ESP_SPI_PRIV_MODE_0 - bool "Slave SPI mode 0" + config ESP_UART_HOST_INTERFACE + bool "UART" + help + Enable/Disable UART host interface + endchoice - config ESP_SPI_PRIV_MODE_1 - bool "Slave SPI mode 1" + menu "SPI Full-duplex Configuration" + depends on ESP_SPI_HOST_INTERFACE + depends on C2_C5_MODULE_SUB_BOARD || !C2_C5_MODULE_SUB_BOARD - config ESP_SPI_PRIV_MODE_2 - bool "Slave SPI mode 2" + choice ESP_SPI_PRIV_MODE + bool "Slave SPI mode" + default ESP_SPI_PRIV_MODE_2 if IDF_TARGET_ESP32 + default ESP_SPI_PRIV_MODE_3 - config ESP_SPI_PRIV_MODE_3 - bool "Slave SPI mode 3" - endchoice + config ESP_SPI_PRIV_MODE_0 + bool "Slave SPI mode 0" - config ESP_SPI_MODE - int - default 0 if ESP_SPI_PRIV_MODE_0 - default 1 if ESP_SPI_PRIV_MODE_1 - default 2 if ESP_SPI_PRIV_MODE_2 - default 3 if ESP_SPI_PRIV_MODE_3 - default 3 + config ESP_SPI_PRIV_MODE_1 + bool "Slave SPI mode 1" + config ESP_SPI_PRIV_MODE_2 + bool "Slave SPI mode 2" - choice SPI_CONTROLLER - bool "SPI controller to use" - default SPI_HSPI + config ESP_SPI_PRIV_MODE_3 + bool "Slave SPI mode 3" + endchoice - config SPI_HSPI - bool "FSPI/HSPI" - help - "HSPI/FSPI: SPI_controller_1" + config ESP_SPI_MODE + int + default 0 if ESP_SPI_PRIV_MODE_0 + default 1 if ESP_SPI_PRIV_MODE_1 + default 2 if ESP_SPI_PRIV_MODE_2 + default 3 if ESP_SPI_PRIV_MODE_3 + default 3 - config SPI_VSPI - depends on IDF_TARGET_ESP32 - bool "VSPI" - help - "VSPI: SPI_controller_2" - endchoice + choice SPI_CONTROLLER + bool "SPI controller to use" + default SPI_HSPI - config ESP_SPI_CONTROLLER - int - default 2 if SPI_VSPI - default 1 + config SPI_HSPI + bool "FSPI/HSPI" + help + "HSPI/FSPI: SPI_controller_1" - menu "Hosted SPI GPIOs" - config ESP_SPI_HSPI_GPIO_MOSI - depends on SPI_HSPI - int "Slave GPIO pin for Host MOSI" - default 20 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD - default 13 if IDF_TARGET_ESP32 - default 11 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 - default 7 - help - SPI controller Host MOSI + config SPI_VSPI + depends on IDF_TARGET_ESP32 + bool "VSPI" + help + "VSPI: SPI_controller_2" - config ESP_SPI_HSPI_GPIO_MISO - depends on SPI_HSPI - int "Slave GPIO pin for Host MISO" - default 21 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD - default 12 if IDF_TARGET_ESP32 - default 13 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 - default 2 - help - SPI controller Host MISO - - config ESP_SPI_HSPI_GPIO_CLK - depends on SPI_HSPI - int "Slave GPIO pin for Host CLK" - default 19 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD - default 3 if IDF_TARGET_ESP32C5 - default 0 if IDF_TARGET_ESP32C2 - default 14 if IDF_TARGET_ESP32 - default 12 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 - default 6 - help - SPI controller Host CLK - - config ESP_SPI_HSPI_GPIO_CS - depends on SPI_HSPI - int "Slave GPIO pin for Host CS" - default 18 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD - default 15 if IDF_TARGET_ESP32 - default 10 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 - default 10 - help - SPI controller Host CS + endchoice - config ESP_SPI_VSPI_GPIO_MOSI - depends on SPI_VSPI - int "Slave GPIO pin for Host MOSI" - default 23 + config ESP_SPI_CONTROLLER + int + default 2 if SPI_VSPI + default 1 + + menu "Hosted SPI GPIOs" + config ESP_SPI_HSPI_GPIO_MOSI + depends on SPI_HSPI + int "Slave GPIO pin for Host MOSI" + default 20 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD + default 13 if IDF_TARGET_ESP32 + default 11 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 + default 7 + help + SPI controller Host MOSI + + config ESP_SPI_HSPI_GPIO_MISO + depends on SPI_HSPI + int "Slave GPIO pin for Host MISO" + default 21 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD + default 12 if IDF_TARGET_ESP32 + default 13 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 + default 2 + help + SPI controller Host MISO + + config ESP_SPI_HSPI_GPIO_CLK + depends on SPI_HSPI + int "Slave GPIO pin for Host CLK" + default 19 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD + default 3 if IDF_TARGET_ESP32C5 + default 0 if IDF_TARGET_ESP32C2 && C2_C5_MODULE_SUB_BOARD + default 14 if IDF_TARGET_ESP32 + default 12 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 + default 6 + help + SPI controller Host CLK + + config ESP_SPI_HSPI_GPIO_CS + depends on SPI_HSPI + int "Slave GPIO pin for Host CS" + default 18 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD + default 15 if IDF_TARGET_ESP32 + default 10 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 + default 10 + help + SPI controller Host CS + + config ESP_SPI_VSPI_GPIO_MOSI + depends on SPI_VSPI + int "Slave GPIO pin for Host MOSI" + default 23 + help + SPI controller Host MOSI + + config ESP_SPI_VSPI_GPIO_MISO + depends on SPI_VSPI + int "Slave GPIO pin for Host MISO" + default 19 + help + SPI controller Host MISO + + config ESP_SPI_VSPI_GPIO_CLK + depends on SPI_VSPI + int "Slave GPIO pin for Host CLK" + default 18 + help + SPI controller Host CLK + + config ESP_SPI_VSPI_GPIO_CS + depends on SPI_VSPI + int "Slave GPIO pin for Host CS" + default 5 + help + SPI controller Host CS + + config ESP_SPI_GPIO_MOSI + int + default ESP_SPI_VSPI_GPIO_MOSI if SPI_VSPI + default ESP_SPI_HSPI_GPIO_MOSI + + config ESP_SPI_GPIO_MISO + int + default ESP_SPI_VSPI_GPIO_MISO if SPI_VSPI + default ESP_SPI_HSPI_GPIO_MISO + + config ESP_SPI_GPIO_CLK + int + default ESP_SPI_VSPI_GPIO_CLK if SPI_VSPI + default ESP_SPI_HSPI_GPIO_CLK + + config ESP_SPI_GPIO_CS + int + default ESP_SPI_VSPI_GPIO_CS if SPI_VSPI + default ESP_SPI_HSPI_GPIO_CS + + config ESP_SPI_GPIO_HANDSHAKE + int "Slave GPIO pin for handshake" + default 22 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD + default 4 if IDF_TARGET_ESP32C5 && !C2_C5_MODULE_SUB_BOARD + default 1 if IDF_TARGET_ESP32C5 && C2_C5_MODULE_SUB_BOARD + default 18 if IDF_TARGET_ESP32C2 && C2_C5_MODULE_SUB_BOARD + default 3 if IDF_TARGET_ESP32C2 && !C2_C5_MODULE_SUB_BOARD + default 3 if IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32C6 + default 17 if IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32S2 + default 26 + help + Slave GPIO pin to use for handshake with other spi controller + + config ESP_SPI_GPIO_DATA_READY + int "Slave GPIO pin for data ready interrupt" + default 23 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD + default 1 if IDF_TARGET_ESP32C2 && C2_C5_MODULE_SUB_BOARD + default 4 if IDF_TARGET_ESP32C2 && !C2_C5_MODULE_SUB_BOARD + default 0 if IDF_TARGET_ESP32C5 && C2_C5_MODULE_SUB_BOARD + default 4 if IDF_TARGET_ESP32C5 && !C2_C5_MODULE_SUB_BOARD + default 4 + help + Slave GPIO pin for indicating host that SPI slave has data to be read by host + + config ESP_SPI_GPIO_RESET + int "Slave GPIO pin to reset itself" + default -1 + help + Host uses this pin to reset the slave ESP. To re-use ESP 'RST' or 'EN' GPIO, set value to -1 + endmenu + + config ESP_SPI_DEASSERT_HS_ON_CS + bool "Deassert Handshake when SPI CS is deasserted" + default y help - SPI controller Host MOSI - - config ESP_SPI_VSPI_GPIO_MISO - depends on SPI_VSPI - int "Slave GPIO pin for Host MISO" - default 19 + Deassert Handshake and prepare a new SPI transaction only after + CS has been deasserted. This helps prevent data loss with MCUs + that delay deasserting CS after the end of a SPI transaction + by prematurely starting a new slave SPI transaction + since CS is detected by the slave as still asserted. + + config ESP_SPI_TX_Q_SIZE + int "ESP to Host SPI queue size" + default 10 if IDF_TARGET_ESP32 + default 6 if IDF_TARGET_ESP32C2 && BT_ENABLED + default 10 if IDF_TARGET_ESP32C2 + default 20 help - SPI controller Host MISO - - config ESP_SPI_VSPI_GPIO_CLK - depends on SPI_VSPI - int "Slave GPIO pin for Host CLK" - default 18 + Very small tx queue will lower ESP -- SPI --> Host data rate + + config ESP_SPI_RX_Q_SIZE + int "Host to ESP SPI queue size" + default 10 if IDF_TARGET_ESP32 + default 6 if IDF_TARGET_ESP32C2 && BT_ENABLED + default 7 if IDF_TARGET_ESP32C2 + default 20 help - SPI controller Host CLK + Very small RX queue will lower ESP <-- SPI -- Host data rate - config ESP_SPI_VSPI_GPIO_CS - depends on SPI_VSPI - int "Slave GPIO pin for Host CS" - default 5 + config ESP_SPI_CHECKSUM + bool "SPI checksum ENABLE/DISABLE" + default y help - SPI controller Host CS - - config ESP_SPI_GPIO_MOSI - int - default ESP_SPI_VSPI_GPIO_MOSI if SPI_VSPI - default ESP_SPI_HSPI_GPIO_MOSI - - config ESP_SPI_GPIO_MISO - int - default ESP_SPI_VSPI_GPIO_MISO if SPI_VSPI - default ESP_SPI_HSPI_GPIO_MISO - - config ESP_SPI_GPIO_CLK - int - default ESP_SPI_VSPI_GPIO_CLK if SPI_VSPI - default ESP_SPI_HSPI_GPIO_CLK - - config ESP_SPI_GPIO_CS - int - default ESP_SPI_VSPI_GPIO_CS if SPI_VSPI - default ESP_SPI_HSPI_GPIO_CS + ENABLE/DISABLE software SPI checksum + endmenu - config ESP_SPI_GPIO_HANDSHAKE - int "Slave GPIO pin for handshake" - default 22 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD - default 4 if IDF_TARGET_ESP32C5 || IDF_TARGET_ESP32C2 - default 3 if IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32C6 - default 17 if IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32S2 - default 26 - help - Slave GPIO pin to use for handshake with other spi controller + menu "SDIO Configuration" + depends on ESP_SDIO_HOST_INTERFACE - config ESP_SPI_GPIO_DATA_READY - int "Slave GPIO pin for data ready interrupt" - default 23 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD - default 0 if IDF_TARGET_ESP32C5 - default 1 if IDF_TARGET_ESP32C2 - default 4 + config ESP_SDIO_STREAMING_MODE + bool "Enable SDIO Streaming Mode" + default y help - Slave GPIO pin for indicating host that SPI slave has data to be read by host + Enable Streaming Mode. Host to receive queued data from slave + as one stream instead of individual packets. This can improve + host SDIO read performance by doing one large read transaction + instead of many smaller read transactions. - config ESP_SPI_GPIO_RESET + config ESP_SDIO_GPIO_RESET int "Slave GPIO pin to reset itself" default -1 help Host uses this pin to reset the slave ESP. To re-use ESP 'RST' or 'EN' GPIO, set value to -1 - endmenu - - config ESP_SPI_DEASSERT_HS_ON_CS - bool "Deassert Handshake when SPI CS is deasserted" - default y - help - Deassert Handshake and prepare a new SPI transaction only after - CS has been deasserted. This helps prevent data loss with MCUs - that delay deasserting CS after the end of a SPI transaction - by prematurely starting a new slave SPI transaction - since CS is detected by the slave as still asserted. - - config ESP_SPI_TX_Q_SIZE - int "ESP to Host SPI queue size" - default 10 if IDF_TARGET_ESP32 - default 6 if IDF_TARGET_ESP32C2 && BT_ENABLED - default 10 if IDF_TARGET_ESP32C2 - default 20 - help - Very small tx queue will lower ESP -- SPI --> Host data rate - - config ESP_SPI_RX_Q_SIZE - int "Host to ESP SPI queue size" - default 10 if IDF_TARGET_ESP32 - default 6 if IDF_TARGET_ESP32C2 && BT_ENABLED - default 7 if IDF_TARGET_ESP32C2 - default 20 - help - Very small RX queue will lower ESP <-- SPI -- Host data rate - - config ESP_SPI_CHECKSUM - bool "SPI checksum ENABLE/DISABLE" - default y - help - ENABLE/DISABLE software SPI checksum - endmenu - menu "SDIO Configuration" - depends on ESP_SDIO_HOST_INTERFACE + choice + prompt "SDIO Bus Speed" + default ESP_SDIO_HIGH_SPEED + help + Select the SDIO Slave Bus Speed. Actual speed in use depends on SDIO bus speed the SDIO Master can support - config ESP_SDIO_STREAMING_MODE - bool "Enable SDIO Streaming Mode" - default y - help - Enable Streaming Mode. Host to receive queued data from slave - as one stream instead of individual packets. This can improve - host SDIO read performance by doing one large read transaction - instead of many smaller read transactions. + config ESP_SDIO_DEFAULT_SPEED + bool "Default Speed (20 MHz)" - config ESP_SDIO_GPIO_RESET - int "Slave GPIO pin to reset itself" - default -1 - help - Host uses this pin to reset the slave ESP. To re-use ESP 'RST' or 'EN' GPIO, set value to -1 + config ESP_SDIO_HIGH_SPEED + bool "High Speed (40 MHz)" + endchoice - choice - prompt "SDIO Bus Speed" - default ESP_SDIO_HIGH_SPEED - help - Select the SDIO Slave Bus Speed. Actual speed in use depends on SDIO bus speed the SDIO Master can support + # from /components/soc//include/soc/sdio_slave_pins.h + menu "Hosted SDIO GPIOs" + config ESP_SDIO_PIN_CMD + int "CMD GPIO number" + range 15 15 if IDF_TARGET_ESP32 + range 18 18 if IDF_TARGET_ESP32C6 + range 10 10 if IDF_TARGET_ESP32C5 + help + "Value cannot be configured. Displayed for reference." + + config ESP_SDIO_PIN_CLK + int "CLK GPIO number" + range 14 14 if IDF_TARGET_ESP32 + range 19 19 if IDF_TARGET_ESP32C6 + range 9 9 if IDF_TARGET_ESP32C5 + help + "Value cannot be configured. Displayed for reference." + + config ESP_SDIO_PIN_D0 + int "D0 GPIO number" + range 2 2 if IDF_TARGET_ESP32 + range 20 20 if IDF_TARGET_ESP32C6 + range 8 8 if IDF_TARGET_ESP32C5 + help + "Value cannot be configured. Displayed for reference." + + config ESP_SDIO_PIN_D1 + int "D1 GPIO number" + range 4 4 if IDF_TARGET_ESP32 + range 21 21 if IDF_TARGET_ESP32C6 + range 7 7 if IDF_TARGET_ESP32C5 + help + "Value cannot be configured. Displayed for reference." + + config ESP_SDIO_PIN_D2 + int "D2 GPIO number" + range 12 12 if IDF_TARGET_ESP32 + range 22 22 if IDF_TARGET_ESP32C6 + range 14 14 if IDF_TARGET_ESP32C5 + help + "Value cannot be configured. Displayed for reference." + + config ESP_SDIO_PIN_D3 + int "D3 GPIO number" + range 13 13 if IDF_TARGET_ESP32 + range 23 23 if IDF_TARGET_ESP32C6 + range 13 13 if IDF_TARGET_ESP32C5 + help + "Value cannot be configured. Displayed for reference." + endmenu + + choice + prompt "SDIO Slave Timing" + default ESP_SDIO_PSEND_PSAMPLE + help + Select the SDIO timing used by slave. Default value works with most + SDMMC controllers but if transfer errors are encountered, selecting a + different timing may help resolve the errors. + See https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/sdio_slave.html#_CPPv419sdio_slave_timing_t + for more information - config ESP_SDIO_DEFAULT_SPEED - bool "Default Speed (20 MHz)" + config ESP_SDIO_PSEND_PSAMPLE + bool "Send at positive edge, sample at positive edge" - config ESP_SDIO_HIGH_SPEED - bool "High Speed (40 MHz)" - endchoice + config ESP_SDIO_NSEND_PSAMPLE + bool "Send at negative edge, sample at positive edge" - # from /components/soc//include/soc/sdio_slave_pins.h - menu "Hosted SDIO GPIOs" - config ESP_SDIO_PIN_CMD - int "CMD GPIO number" - range 15 15 if IDF_TARGET_ESP32 - range 18 18 if IDF_TARGET_ESP32C6 - range 10 10 if IDF_TARGET_ESP32C5 - help - "Value cannot be configured. Displayed for reference." + config ESP_SDIO_PSEND_NSAMPLE + bool "Send at positive edge, sample at negative edge" - config ESP_SDIO_PIN_CLK - int "CLK GPIO number" - range 14 14 if IDF_TARGET_ESP32 - range 19 19 if IDF_TARGET_ESP32C6 - range 9 9 if IDF_TARGET_ESP32C5 - help - "Value cannot be configured. Displayed for reference." + config ESP_SDIO_NSEND_NSAMPLE + bool "Send at negative edge, sample at negative edge" + endchoice - config ESP_SDIO_PIN_D0 - int "D0 GPIO number" - range 2 2 if IDF_TARGET_ESP32 - range 20 20 if IDF_TARGET_ESP32C6 - range 8 8 if IDF_TARGET_ESP32C5 + config ESP_SDIO_TX_Q_SIZE + int "SDIO TX queue size" + default 20 help - "Value cannot be configured. Displayed for reference." + Very small TX queue will lower ESP --> SDIO -- Host data rate - config ESP_SDIO_PIN_D1 - int "D1 GPIO number" - range 4 4 if IDF_TARGET_ESP32 - range 21 21 if IDF_TARGET_ESP32C6 - range 7 7 if IDF_TARGET_ESP32C5 + config ESP_SDIO_RX_Q_SIZE + int "SDIO RX queue size" + default 20 help - "Value cannot be configured. Displayed for reference." + Very small RX queue will lower ESP <-- SDIO -- Host data rate - config ESP_SDIO_PIN_D2 - int "D2 GPIO number" - range 12 12 if IDF_TARGET_ESP32 - range 22 22 if IDF_TARGET_ESP32C6 - range 14 14 if IDF_TARGET_ESP32C5 + config ESP_SDIO_CHECKSUM + bool "SDIO checksum ENABLE/DISABLE" + default n help - "Value cannot be configured. Displayed for reference." + ENABLE/DISABLE software SDIO checksum - config ESP_SDIO_PIN_D3 - int "D3 GPIO number" - range 13 13 if IDF_TARGET_ESP32 - range 23 23 if IDF_TARGET_ESP32C6 - range 13 13 if IDF_TARGET_ESP32C5 - help - "Value cannot be configured. Displayed for reference." endmenu - choice - prompt "SDIO Slave Timing" - default ESP_SDIO_PSEND_PSAMPLE - help - Select the SDIO timing used by slave. Default value works with most - SDMMC controllers but if transfer errors are encountered, selecting a - different timing may help resolve the errors. - See https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/sdio_slave.html#_CPPv419sdio_slave_timing_t - for more information - - config ESP_SDIO_PSEND_PSAMPLE - bool "Send at positive edge, sample at positive edge" - - config ESP_SDIO_NSEND_PSAMPLE - bool "Send at negative edge, sample at positive edge" - - config ESP_SDIO_PSEND_NSAMPLE - bool "Send at positive edge, sample at negative edge" - - config ESP_SDIO_NSEND_NSAMPLE - bool "Send at negative edge, sample at negative edge" - endchoice - - config ESP_SDIO_TX_Q_SIZE - int "SDIO TX queue size" - default 20 - help - Very small TX queue will lower ESP --> SDIO -- Host data rate - - config ESP_SDIO_RX_Q_SIZE - int "SDIO RX queue size" - default 20 - help - Very small RX queue will lower ESP <-- SDIO -- Host data rate - - config ESP_SDIO_CHECKSUM - bool "SDIO checksum ENABLE/DISABLE" - default n - help - ENABLE/DISABLE software SDIO checksum - - endmenu + menu "SPI Half-duplex Configuration" + depends on ESP_SPI_HD_HOST_INTERFACE - menu "SPI Half-duplex Configuration" - depends on ESP_SPI_HD_HOST_INTERFACE + choice ESP_SPI_HD_PRIV_MODE + bool "Slave SPI mode" + default ESP_SPI_HD_PRIV_MODE_3 - choice ESP_SPI_HD_PRIV_MODE - bool "Slave SPI mode" - default ESP_SPI_HD_PRIV_MODE_3 + config ESP_SPI_HD_PRIV_MODE_0 + bool "Slave SPI mode 0" - config ESP_SPI_HD_PRIV_MODE_0 - bool "Slave SPI mode 0" + config ESP_SPI_HD_PRIV_MODE_1 + bool "Slave SPI mode 1" - config ESP_SPI_HD_PRIV_MODE_1 - bool "Slave SPI mode 1" + config ESP_SPI_HD_PRIV_MODE_2 + bool "Slave SPI mode 2" - config ESP_SPI_HD_PRIV_MODE_2 - bool "Slave SPI mode 2" - - config ESP_SPI_HD_PRIV_MODE_3 - bool "Slave SPI mode 3" - endchoice - - config ESP_SPI_HD_MODE - int - default 0 if ESP_SPI_HD_PRIV_MODE_0 - default 1 if ESP_SPI_HD_PRIV_MODE_1 - default 2 if ESP_SPI_HD_PRIV_MODE_2 - default 3 if ESP_SPI_HD_PRIV_MODE_3 - help - SPI Mode to use. The same mode must be used on both host and slave. - - choice ESP_SPI_HD_PRIV_INTERFACE_NUM_DATA_LINES - bool "Num Data Lines to use" - default ESP_SPI_HD_PRIV_INTERFACE_4_DATA_LINES - help - Number of Data Lines to use in the SPI HD interface - - config ESP_SPI_HD_PRIV_INTERFACE_4_DATA_LINES - bool "4 data lines" + config ESP_SPI_HD_PRIV_MODE_3 + bool "Slave SPI mode 3" + endchoice - config ESP_SPI_HD_PRIV_INTERFACE_2_DATA_LINES - bool "2 data lines" - endchoice + config ESP_SPI_HD_MODE + int + default 0 if ESP_SPI_HD_PRIV_MODE_0 + default 1 if ESP_SPI_HD_PRIV_MODE_1 + default 2 if ESP_SPI_HD_PRIV_MODE_2 + default 3 if ESP_SPI_HD_PRIV_MODE_3 + help + SPI Mode to use. The same mode must be used on both host and slave. - config ESP_SPI_HD_INTERFACE_NUM_DATA_LINES - int - default 4 if ESP_SPI_HD_PRIV_INTERFACE_4_DATA_LINES - default 2 if ESP_SPI_HD_PRIV_INTERFACE_2_DATA_LINES + choice ESP_SPI_HD_PRIV_INTERFACE_NUM_DATA_LINES + bool "Num Data Lines to use" + default ESP_SPI_HD_PRIV_INTERFACE_4_DATA_LINES + help + Number of Data Lines to use in the SPI HD interface - menu "GPIOs" + config ESP_SPI_HD_PRIV_INTERFACE_4_DATA_LINES + bool "4 data lines" - config ESP_SPI_HD_GPIO_CS - int "Slave GPIO pin for Host CS" - default 18 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD - default 10 - help - SPI HD controller Host CS + config ESP_SPI_HD_PRIV_INTERFACE_2_DATA_LINES + bool "2 data lines" + endchoice - config ESP_SPI_HD_GPIO_CLK - int "Slave GPIO pin for Host CLK" - default 19 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD - default 3 if IDF_TARGET_ESP32C5 - default 0 if IDF_TARGET_ESP32C2 - default 6 + config ESP_SPI_HD_INTERFACE_NUM_DATA_LINES + int + default 4 if ESP_SPI_HD_PRIV_INTERFACE_4_DATA_LINES + default 2 if ESP_SPI_HD_PRIV_INTERFACE_2_DATA_LINES + + menu "GPIOs" + + config ESP_SPI_HD_GPIO_CS + int "Slave GPIO pin for Host CS" + default 18 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD + default 10 + help + SPI HD controller Host CS + + config ESP_SPI_HD_GPIO_CLK + int "Slave GPIO pin for Host CLK" + default 19 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD + default 3 if IDF_TARGET_ESP32C5 + default 0 if IDF_TARGET_ESP32C2 + default 6 + help + SPI HD controller Host CS + + config ESP_SPI_HD_GPIO_D0 + int "Slave GPIO pin for Host D0" + default 20 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD + default 7 + help + SPI HD controller Host D0 + + config ESP_SPI_HD_GPIO_D1 + int "Slave GPIO pin for Host D1" + default 21 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD + default 2 + help + SPI HD controller Host D1 + + config ESP_SPI_HD_GPIO_D2 + depends on ESP_SPI_HD_PRIV_INTERFACE_4_DATA_LINES + int "Slave GPIO pin for Host D2" + default 22 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD + default 5 + help + SPI HD controller Host D2 + + config ESP_SPI_HD_GPIO_D3 + depends on ESP_SPI_HD_PRIV_INTERFACE_4_DATA_LINES + int "Slave GPIO pin for Host D3" + default 23 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD + default 4 + help + SPI HD controller Host D3 + + config ESP_SPI_HD_GPIO_DATA_READY + int "Slave GPIO pin for Data Ready" + default 2 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD + default 0 if IDF_TARGET_ESP32C5 + default 1 if IDF_TARGET_ESP32C2 + default 11 + help + Slave GPIO pin for indicating host that SPI slave has data to be read by host + + choice ESP_SPI_HD_DATAREADY_GPIO_CONFIG + bool "DataReady GPIO Config" + default ESP_DR_ACTIVE_HIGH + help + Configure Data Ready to be active high (default) or active low + + config ESP_DR_ACTIVE_HIGH + bool "Active High" + config ESP_DR_ACTIVE_LOW + bool "Active Low" + endchoice + + config ESP_SPI_HD_GPIO_RESET + int "Slave GPIO pin to reset itself" + default -1 + help + Host uses this pin to reset the slave ESP. To re-use ESP 'RST' or 'EN' GPIO, set value to -1 + + endmenu + + config ESP_SPI_HD_Q_SIZE + int "Queue size" + default 12 if IDF_TARGET_ESP32C2 + default 10 if IDF_TARGET_ESP32C5 + default 20 help - SPI HD controller Host CS + Very small queue will lower SPI HD data rate - config ESP_SPI_HD_GPIO_D0 - int "Slave GPIO pin for Host D0" - default 20 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD - default 7 + config ESP_SPI_HD_CHECKSUM + bool "Checksum ENABLE/DISABLE" + default y help - SPI HD controller Host D0 + ENABLE/DISABLE SPI HD software checksum - config ESP_SPI_HD_GPIO_D1 - int "Slave GPIO pin for Host D1" - default 21 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD - default 2 - help - SPI HD controller Host D1 + endmenu - config ESP_SPI_HD_GPIO_D2 - depends on ESP_SPI_HD_PRIV_INTERFACE_4_DATA_LINES - int "Slave GPIO pin for Host D2" - default 22 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD - default 5 + menu "UART Configuration" + depends on ESP_UART_HOST_INTERFACE + + config ESP_UART_PORT + int "UART Port to Use" + default 1 + range 0 2 if IDF_TARGET_ESP32 + range 0 1 if IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32C5 || IDF_TARGET_ESP32C6 + range 0 2 if IDF_TARGET_ESP32C61 + range 0 1 if IDF_TARGET_ESP32S2 + range 0 2 if IDF_TARGET_ESP32S3 help - SPI HD controller Host D2 + Select UART Port to Use. Do not select the UART Port used for console output (if enabled) - config ESP_SPI_HD_GPIO_D3 - depends on ESP_SPI_HD_PRIV_INTERFACE_4_DATA_LINES - int "Slave GPIO pin for Host D3" - default 23 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD - default 4 + config ESP_UART_PIN_TX + int "TX GPIO number" + default 13 if IDF_TARGET_ESP32 + default 5 if IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32C3 + default 14 if IDF_TARGET_ESP32C5 + default 21 if IDF_TARGET_ESP32C6 + default 5 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 help - SPI HD controller Host D3 + GPIO used for UART TX - config ESP_SPI_HD_GPIO_DATA_READY - int "Slave GPIO pin for Data Ready" - default 2 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD - default 0 if IDF_TARGET_ESP32C5 - default 1 if IDF_TARGET_ESP32C2 - default 11 + config ESP_UART_PIN_RX + int "RX GPIO number" + default 12 if IDF_TARGET_ESP32 + default 4 if IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32C3 + default 13 if IDF_TARGET_ESP32C5 + default 20 if IDF_TARGET_ESP32C6 + default 4 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 help - Slave GPIO pin for indicating host that SPI slave has data to be read by host + GPIO used for UART RX - choice ESP_SPI_HD_DATAREADY_GPIO_CONFIG - bool "DataReady GPIO Config" - default ESP_DR_ACTIVE_HIGH + config ESP_UART_BAUDRATE + int "Baud Rate" + default 921600 + range 9600 3500000 help - Configure Data Ready to be active high (default) or active low + Baud Rate to Use. Make sure Hardware supports the rate. Standard rates are 9600, 19200, 38400, 57600, 115200, 460800, 921600 - config ESP_DR_ACTIVE_HIGH - bool "Active High" - config ESP_DR_ACTIVE_LOW - bool "Active Low" - endchoice - - config ESP_SPI_HD_GPIO_RESET - int "Slave GPIO pin to reset itself" - default -1 + config ESP_UART_NUM_DATA_BITS + int "Number of Data Bits" + default 8 + range 5 8 help - Host uses this pin to reset the slave ESP. To re-use ESP 'RST' or 'EN' GPIO, set value to -1 - - endmenu + Number of Data Bits to use - config ESP_SPI_HD_Q_SIZE - int "Queue size" - default 12 if IDF_TARGET_ESP32C2 - default 10 if IDF_TARGET_ESP32C5 - default 20 - help - Very small queue will lower SPI HD data rate + choice ESP_UART_PRIV_PARITY + bool "Parity" - config ESP_SPI_HD_CHECKSUM - bool "Checksum ENABLE/DISABLE" - default y - help - ENABLE/DISABLE SPI HD software checksum - - endmenu + config ESP_UART_PRIV_PARITY_NONE + bool "None" - menu "UART Configuration" - depends on ESP_UART_HOST_INTERFACE + config ESP_UART_PRIV_PARITY_EVEN + bool "Even" - config ESP_UART_PORT - int "UART Port to Use" - default 1 - range 0 2 if IDF_TARGET_ESP32 - range 0 1 if IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32C5 || IDF_TARGET_ESP32C6 - range 0 2 if IDF_TARGET_ESP32C61 - range 0 1 if IDF_TARGET_ESP32S2 - range 0 2 if IDF_TARGET_ESP32S3 - help - Select UART Port to Use. Do not select the UART Port used for console output (if enabled) - - config ESP_UART_PIN_TX - int "TX GPIO number" - default 13 if IDF_TARGET_ESP32 - default 5 if IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32C3 - default 14 if IDF_TARGET_ESP32C5 - default 21 if IDF_TARGET_ESP32C6 - default 5 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 - help - GPIO used for UART TX - - config ESP_UART_PIN_RX - int "RX GPIO number" - default 12 if IDF_TARGET_ESP32 - default 4 if IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32C3 - default 13 if IDF_TARGET_ESP32C5 - default 20 if IDF_TARGET_ESP32C6 - default 4 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 - help - GPIO used for UART RX - - config ESP_UART_BAUDRATE - int "Baud Rate" - default 921600 - range 9600 3500000 - help - Baud Rate to Use. Make sure Hardware supports the rate. Standard rates are 9600, 19200, 38400, 57600, 115200, 460800, 921600 + config ESP_UART_PRIV_PARITY_ODD + bool "Odd" + endchoice - config ESP_UART_NUM_DATA_BITS - int "Number of Data Bits" - default 8 - range 5 8 - help - Number of Data Bits to use + config ESP_UART_PARITY + int + default 0 if ESP_UART_PRIV_PARITY_NONE + default 1 if ESP_UART_PRIV_PARITY_EVEN + default 2 if ESP_UART_PRIV_PARITY_ODD - choice ESP_UART_PRIV_PARITY - bool "Parity" + choice ESP_UART_PRIV_STOP_BITS + bool "Number of Stop Bits" - config ESP_UART_PRIV_PARITY_NONE - bool "None" + config ESP_UART_PRIV_STOP_BITS_1 + bool "1" - config ESP_UART_PRIV_PARITY_EVEN - bool "Even" + config ESP_UART_PRIV_STOP_BITS_1_5 + bool "1.5" - config ESP_UART_PRIV_PARITY_ODD - bool "Odd" - endchoice + config ESP_UART_PRIV_STOP_BITS_2 + bool "2" + endchoice - config ESP_UART_PARITY - int - default 0 if ESP_UART_PRIV_PARITY_NONE - default 1 if ESP_UART_PRIV_PARITY_EVEN - default 2 if ESP_UART_PRIV_PARITY_ODD + config ESP_UART_STOP_BITS + int + default 0 if ESP_UART_PRIV_STOP_BITS_1 + default 1 if ESP_UART_PRIV_STOP_BITS_1_5 + default 2 if ESP_UART_PRIV_STOP_BITS_2 - choice ESP_UART_PRIV_STOP_BITS - bool "Number of Stop Bits" + config ESP_UART_GPIO_RESET + int "Slave GPIO pin to reset itself" + default -1 + help + Host uses this pin to reset the slave ESP. To re-use ESP 'RST' or 'EN' GPIO, set value to -1 - config ESP_UART_PRIV_STOP_BITS_1 - bool "1" + config ESP_UART_TX_Q_SIZE + int "Tx Queue Size" + default 5 + help + UART rates are low, so large queue sizes are not required - config ESP_UART_PRIV_STOP_BITS_1_5 - bool "1.5" + config ESP_UART_RX_Q_SIZE + int "Rx Queue Size" + default 5 + help + UART rates are low, so large queue sizes are not required - config ESP_UART_PRIV_STOP_BITS_2 - bool "2" - endchoice + config ESP_UART_CHECKSUM + bool "UART checksum ENABLE/DISABLE" + default y + help + ENABLE/DISABLE software UART checksum + endmenu - config ESP_UART_STOP_BITS + config ESP_GPIO_SLAVE_RESET int - default 0 if ESP_UART_PRIV_STOP_BITS_1 - default 1 if ESP_UART_PRIV_STOP_BITS_1_5 - default 2 if ESP_UART_PRIV_STOP_BITS_2 - - config ESP_UART_GPIO_RESET - int "Slave GPIO pin to reset itself" - default -1 - help - Host uses this pin to reset the slave ESP. To re-use ESP 'RST' or 'EN' GPIO, set value to -1 - - config ESP_UART_TX_Q_SIZE - int "Tx Queue Size" - default 5 - help - UART rates are low, so large queue sizes are not required + default ESP_SPI_GPIO_RESET if ESP_SPI_HOST_INTERFACE + default ESP_SDIO_GPIO_RESET if ESP_SDIO_HOST_INTERFACE + default ESP_SPI_HD_GPIO_RESET if ESP_SPI_HD_HOST_INTERFACE + default ESP_UART_GPIO_RESET if ESP_UART_HOST_INTERFACE - config ESP_UART_RX_Q_SIZE - int "Rx Queue Size" - default 5 - help - UART rates are low, so large queue sizes are not required - - config ESP_UART_CHECKSUM - bool "UART checksum ENABLE/DISABLE" - default y - help - ENABLE/DISABLE software UART checksum endmenu - config ESP_GPIO_SLAVE_RESET - int - default ESP_SPI_GPIO_RESET if ESP_SPI_HOST_INTERFACE - default ESP_SDIO_GPIO_RESET if ESP_SDIO_HOST_INTERFACE - default ESP_SPI_HD_GPIO_RESET if ESP_SPI_HD_HOST_INTERFACE - default ESP_UART_GPIO_RESET if ESP_UART_HOST_INTERFACE - # HCI UART menu for ESP32-C3/S3 menu "HCI UART Settings" depends on BT_CTRL_HCI_MODE_UART_H4 && (IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32S3) @@ -797,13 +813,13 @@ menu "Example Configuration" endmenu - config ESP_DEFAULT_TASK_STACK_SIZE + config ESP_HOSTED_DEFAULT_TASK_STACK_SIZE int "ESP-Hosted task stack size" default 4096 help Default task size of ESP-Hosted tasks - config ESP_DEFAULT_TASK_PRIO + config ESP_HOSTED_DEFAULT_TASK_PRIORITY int "ESP-Hosted task priority" default 22 help @@ -839,10 +855,405 @@ menu "Example Configuration" int "RawTP: periodic duration to report stats accumulated" default 10 - config ESP_PKT_STATS - bool "Transport level packet stats" - default n + config ESP_PKT_STATS + bool "Transport level packet stats" + default n + help + On comparing with slave packet stats helps to understand any packet loss at hosted + + config ESP_PKT_STATS_INTERVAL_SEC + depends on ESP_PKT_STATS + int "Packet stats reporting interval (sec)" + default 30 + + config ESP_HOSTED_FUNCTION_PROFILING + bool "Enable function execution time profiling" + default n + help + Enable this option to measure and report function execution times. + This is useful for performance profiling and optimization. + + config ESP_HOSTED_FUNCTION_PROFILING_MAX_ENTRIES + int "Maximum number of functions to profile" + depends on ESP_HOSTED_FUNCTION_PROFILING + default 10 + range 1 50 + help + Maximum number of unique functions that can be profiled simultaneously. + Each entry consumes memory, so keep this value reasonable based on + available memory. + endmenu + + config ESP_HOSTED_NETWORK_SPLIT_ENABLED + bool "Enable Network Split: Shared IP address between host and slave" + depends on !IDF_TARGET_ESP32C2 && !IDF_TARGET_ESP32C3 + default n + help + Enables the LWIP stack on the slave to process its own set of ports, + alongside the host stack. Helps split network traffic and allows + background tasks on the slave, even when the host is in low-power mode. + + menu "Network Split Configuration" + depends on ESP_HOSTED_NETWORK_SPLIT_ENABLED + + choice + prompt "Destination LWIP for unfiltered packet" + default ESP_DEFAULT_LWIP_SLAVE + help + Packets having destination port within 'remote' port range are forwarded to host. Rest unfiltered packets, are to be sent to this LWIP. Please note: + (1) These settings are only for IP packets, yet. + (2) Extra filtering may be in effect to respond some packets locally by slave LWIP. + + config ESP_DEFAULT_LWIP_SLAVE + bool "Send packet to slave LWIP" + + config ESP_DEFAULT_LWIP_HOST + bool "Send packet to host LWIP" + + config ESP_DEFAULT_LWIP_BOTH + bool "Send packet to both LWIPs" + endchoice + + menu "Host Static Port Forwarding" + + config ESP_HOSTED_HOST_RESERVED_PORTS_CONFIGURED + bool "Extra port forwarding to host (static)" + default y + help + Enable static port forwarding to host for specific ports + + config ESP_HOSTED_HOST_RESERVED_TCP_SRC_PORTS + depends on ESP_HOSTED_HOST_RESERVED_PORTS_CONFIGURED + string "TCP source ports to forward to host (comma separated)" + default "22,8554" + help + Comma separated list of TCP source ports that will be allowed from host (Max 10) + + config ESP_HOSTED_HOST_RESERVED_TCP_DEST_PORTS + depends on ESP_HOSTED_HOST_RESERVED_PORTS_CONFIGURED + string "TCP destination ports to forward to host (comma separated)" + default "22,80,443,8080,8554" + help + Comma separated list of TCP destination ports that will be forwarded to host (Max 10) + + config ESP_HOSTED_HOST_RESERVED_UDP_SRC_PORTS + depends on ESP_HOSTED_HOST_RESERVED_PORTS_CONFIGURED + string "UDP source ports to allowed from host (comma separated)" + default "" + help + Comma separated list of UDP source ports that will be forwarded to host (Max 10) + + config ESP_HOSTED_HOST_RESERVED_UDP_DEST_PORTS + depends on ESP_HOSTED_HOST_RESERVED_PORTS_CONFIGURED + string "UDP destination ports to forward to host (comma separated)" + default "53,123" + help + Comma separated list of UDP destination ports that will be forwarded to host (Max 10) + endmenu + + menu "Slave side (local) LWIP port range" + config LWIP_TCP_LOCAL_PORT_RANGE_START + int "Slave TCP start port" + default 61440 + help + Slave side TCP start port. Host defaults to 49152 + Slave range: 61440-65535 + Host range: 49152-61439 + + config LWIP_TCP_LOCAL_PORT_RANGE_END + int "Slave TCP end port" + default 65535 + help + Slave side TCP end port. Host defaults to 61439 + Slave range: 61440-65535 + Host range: 49152-61439 + + config LWIP_UDP_LOCAL_PORT_RANGE_START + int "Slave UDP start port" + default 61440 + help + Slave side UDP start port. Host defaults to 49152 + Slave range: 61440-65535 + Host range: 49152-61439 + + config LWIP_UDP_LOCAL_PORT_RANGE_END + int "Slave UDP end port" + default 65535 + help + Slave side UDP end port. Host defaults to 61439 + Slave range: 61440-65535 + Host range: 49152-61439 + endmenu + + menu "Host side (remote) LWIP port range" + config LWIP_TCP_REMOTE_PORT_RANGE_START + int "Host TCP start port" + default 49152 + help + Host side TCP start port. Slave defaults to 61440 + Slave range: 61440-65535 + Host range: 49152-61439 + + config LWIP_TCP_REMOTE_PORT_RANGE_END + int "Host TCP end port" + default 61439 + help + Host side TCP end port. Slave defaults to 65535 + Slave range: 61440-65535 + Host range: 49152-61439 + + config LWIP_UDP_REMOTE_PORT_RANGE_START + int "Host UDP start port" + default 49152 + help + Host side UDP start port. Slave defaults to 61440 + Slave range: 61440-65535 + Host range: 49152-61439 + + config LWIP_UDP_REMOTE_PORT_RANGE_END + int "Host UDP end port" + default 61439 help - On comparing with slave packet stats helps to understand any packet loss at hosted + Host side UDP end port. Slave defaults to 65535 + Slave range: 61440-65535 + Host range: 49152-61439 + endmenu + + endmenu + + config ESP_HOSTED_HOST_POWER_SAVE_ENABLED + bool "Allow host to power save" + depends on ESP_SDIO_HOST_INTERFACE # by the time light sleep not added + default n + help + Allow host to enter power save mode. + Host will notify slave before entering and exiting the power save + + menu "Host power save config" + depends on ESP_HOSTED_HOST_POWER_SAVE_ENABLED + + config ESP_HOSTED_HOST_DEEP_SLEEP_ALLOWED + depends on ESP_HOSTED_HOST_POWER_SAVE_ENABLED + depends on ESP_SDIO_HOST_INTERFACE + bool "Allow host to enter deep sleep. Slave will wakeup host using GPIO when needed" + default y if ESP_HOSTED_HOST_POWER_SAVE_ENABLED + select ESP_HOSTED_CLI_ENABLED + help + Allow host to enter deep sleep mode. Host will notify slave before entering deep sleep. + + menu "Host deep sleep - wakeup config" + depends on ESP_HOSTED_HOST_DEEP_SLEEP_ALLOWED + config ESP_HOSTED_HOST_WAKEUP_GPIO + int "Host wakeup GPIO" + default 2 if IDF_TARGET_ESP32C6 && !ESP_SPI_HD_HOST_INTERFACE + default 9 if IDF_TARGET_ESP32C6 && ESP_SPI_HD_HOST_INTERFACE + default 1 if IDF_TARGET_ESP32C3 + default 25 if IDF_TARGET_ESP32C5 + default 6 if IDF_TARGET_ESP32C2 && C2_C5_MODULE_SUB_BOARD + default -1 + + choice ESP_HOSTED_HOST_WAKEUP_GPIO_LEVEL + prompt "Host Wakeup GPIO Level" + default ESP_HOSTED_HOST_WAKEUP_GPIO_LEVEL_HIGH + + config ESP_HOSTED_HOST_WAKEUP_GPIO_LEVEL_HIGH + bool "High" + config ESP_HOSTED_HOST_WAKEUP_GPIO_LEVEL_LOW + bool "Low" + endchoice + + config ESP_HOSTED_HOST_WAKEUP_GPIO_LEVEL + int + default 1 if ESP_HOSTED_HOST_WAKEUP_GPIO_LEVEL_HIGH + default 0 if ESP_HOSTED_HOST_WAKEUP_GPIO_LEVEL_LOW + help + GPIO level to use for host wakeup from sleep. + Set to 0 to use low level, set to 1 to use high level. + endmenu + + config ESP_HOSTED_UNLOAD_BUS_DRIVER_DURING_HOST_SLEEP + depends on ESP_HOSTED_HOST_POWER_SAVE_ENABLED + bool "Unload low level BUS driver during host deep sleep" + default n + + config PRINT_HOST_WAKEUP_PACKET_PORT + bool "Print the wakeup packet port" + default y + + config PRINT_HOST_WAKEUP_PACKET_FULL_PKT + bool "Print the full wakeup packet" + default y + + endmenu + + + config ESP_HOSTED_CLI_ENABLED + bool "Enable CLI Shell" + default y if ESP_HOSTED_HOST_DEEP_SLEEP_ALLOWED + default n if !ESP_HOSTED_HOST_DEEP_SLEEP_ALLOWED + help + Enable CLI shell for debugging and control purposes. + + config ESP_HOSTED_CLI_NEW_INSTANCE + depends on ESP_HOSTED_CLI_ENABLED + bool "Create new instance & do not re-use existing session if any" + default y + + config ESP_HOSTED_USE_EXAMPLE_WIFI_PRE_PROVISION_CONFIG + bool "Wi-Fi default config (pre-provisioning)" + default n + help + Enable this option to use a predefined Wi-Fi configuration for examples. + This can be useful for testing and development purposes where a known + Wi-Fi setup is required. + + + menu "Wi-Fi default config (pre-provisioning)" + depends on ESP_HOSTED_USE_EXAMPLE_WIFI_PRE_PROVISION_CONFIG + + config ESP_WIFI_SSID + string "WiFi SSID" + default "myssid" + help + SSID (network name) for the example to connect to. + + config ESP_WIFI_PASSWORD + string "WiFi Password" + default "mypassword" + help + WiFi password (WPA or WPA2) for the example to use. + + choice ESP_WIFI_SAE_MODE + prompt "WPA3 SAE mode selection" + default ESP_WPA3_SAE_PWE_BOTH + help + Select mode for SAE as Hunt and Peck, H2E or both. + config ESP_WPA3_SAE_PWE_HUNT_AND_PECK + bool "HUNT AND PECK" + config ESP_WPA3_SAE_PWE_HASH_TO_ELEMENT + bool "H2E" + config ESP_WPA3_SAE_PWE_BOTH + bool "BOTH" + endchoice + + config ESP_WIFI_PW_ID + string "PASSWORD IDENTIFIER" + depends on ESP_WPA3_SAE_PWE_HASH_TO_ELEMENT|| ESP_WPA3_SAE_PWE_BOTH + default "" + help + password identifier for SAE H2E + + config ESP_MAXIMUM_RETRY + int "Maximum retry" + default 5 + help + Set the Maximum retry to avoid station reconnecting to the AP unlimited when the AP is really inexistent. + + choice ESP_WIFI_SCAN_AUTH_MODE_THRESHOLD + prompt "WiFi Scan auth mode threshold" + default ESP_WIFI_AUTH_WPA2_PSK + help + The weakest authmode to accept in the scan mode. + This value defaults to ESP_WIFI_AUTH_WPA2_PSK incase password is present and ESP_WIFI_AUTH_OPEN is used. + Please select ESP_WIFI_AUTH_WEP/ESP_WIFI_AUTH_WPA_PSK incase AP is operating in WEP/WPA mode. + + config ESP_WIFI_AUTH_OPEN + bool "OPEN" + config ESP_WIFI_AUTH_WEP + bool "WEP" + config ESP_WIFI_AUTH_WPA_PSK + bool "WPA PSK" + config ESP_WIFI_AUTH_WPA2_PSK + bool "WPA2 PSK" + config ESP_WIFI_AUTH_WPA_WPA2_PSK + bool "WPA/WPA2 PSK" + config ESP_WIFI_AUTH_WPA3_PSK + bool "WPA3 PSK" + config ESP_WIFI_AUTH_WPA2_WPA3_PSK + bool "WPA2/WPA3 PSK" + config ESP_WIFI_AUTH_WAPI_PSK + bool "WAPI PSK" + + endchoice + + choice WIFI_CMD_DEFAULT_COUNTRY + prompt "Set default country during initialize wifi" + default WIFI_CMD_DEFAULT_COUNTRY_CN + help + Set default wifi country during initialize wifi + + config WIFI_CMD_DEFAULT_COUNTRY_NONE + bool + prompt "Do not set country code" + + config WIFI_CMD_DEFAULT_COUNTRY_CN + bool + prompt "Set country code to CN (1-13)" + endchoice + endmenu + + config ESP_HOSTED_EXTRA_EXAMPLES + depends on ESP_HOSTED_NETWORK_SPLIT_ENABLED + bool "Additional higher layer examples to run" + default n + help + Extra set of optional examples to run at slave + + menu "Select Examples to run" + depends on ESP_HOSTED_EXTRA_EXAMPLES + + config ESP_HOSTED_COPROCESSOR_EXAMPLE_MQTT + bool "MQTT client example" + default y + + menu "MQTT client config" + depends on ESP_HOSTED_COPROCESSOR_EXAMPLE_MQTT + choice BROKER_CHOICE + prompt "MQTT Broker" + default BROKER_HIVEMQ + + config BROKER_ECLIPSEPROJECTS + bool "mqtt.eclipseprojects.io" + config BROKER_HIVEMQ + bool "broker.hivemq.com" + endchoice + + config BROKER_URL + string + default "mqtt://mqtt.eclipseprojects.io" if BROKER_ECLIPSEPROJECTS + default "mqtt://broker.hivemq.com" if BROKER_HIVEMQ + help + URL of the broker to connect to + + config BROKER_URL_FROM_STDIN + bool + default y if BROKER_URL = "FROM_STDIN" + + endmenu + + config ESP_HOSTED_COPROCESSOR_EXAMPLE_HTTP_CLIENT + bool "HTTP client example" + default y + + menu "HTTP client config" + depends on ESP_HOSTED_COPROCESSOR_EXAMPLE_HTTP_CLIENT + + config HTTP_WEBSERVER + string "HTTP webserver to send req" + default "example.com" + + config HTTP_WEBSERVER_PORT + string "HTTP webserver port" + default "80" + + config HTTP_WEBSERVER_PATH + string "HTTP webserver path" + default "/" + + config HTTP_REQ_DELAY + int "Delay after every http request (seconds)" + default 10 + + endmenu endmenu endmenu diff --git a/slave/main/app_main.c b/slave/main/esp_hosted_coprocessor.c similarity index 53% rename from slave/main/app_main.c rename to slave/main/esp_hosted_coprocessor.c index 106f954c..69e1c4d6 100644 --- a/slave/main/app_main.c +++ b/slave/main/esp_hosted_coprocessor.c @@ -20,14 +20,15 @@ #include "esp_private/wifi.h" #include "interface.h" #include "esp_wpa.h" -#include "app_main.h" +#include "esp_hosted_coprocessor.h" #include "driver/gpio.h" #include "freertos/task.h" #include "freertos/queue.h" -#if CONFIG_BT_ENABLED +#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_SOC_BT_SUPPORTED) #include "esp_bt.h" #endif + #include "endian.h" #include @@ -40,30 +41,28 @@ #include "mempool.h" #include "coprocessor_fw_version.h" +#include "esp_hosted_cli.h" +#include "host_power_save.h" -static const char *TAG = "fg_mcu_slave"; +#if CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED + #include "esp_hosted_rpc.pb-c.h" + volatile uint8_t station_got_ip = 0; + #define H_SLAVE_LWIP_DHCP_AT_SLAVE 1 +#endif +#include "lwip_filter.h" -//#define BYPASS_TX_PRIORITY_Q 1 -#ifdef CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS -#define STATS_TICKS pdMS_TO_TICKS(1000*2) -#define ARRAY_SIZE_OFFSET 5 -#endif +static const char *TAG = "co-pro-main"; -#define UNKNOWN_RPC_MSG_ID 0 +#define BYPASS_TX_PRIORITY_Q 1 -#if CONFIG_ESP_SPI_HOST_INTERFACE - #ifdef CONFIG_IDF_TARGET_ESP32S2 - #define TO_HOST_QUEUE_SIZE 5 - #else - #define TO_HOST_QUEUE_SIZE 20 - #endif -#else - #define TO_HOST_QUEUE_SIZE 20 -#endif +#define UNKNOWN_RPC_MSG_ID 0 + +#define TO_HOST_QUEUE_SIZE 10 #define ETH_DATA_LEN 1500 -#define MAX_WIFI_STA_TX_RETRY 6 +#define MAX_WIFI_STA_TX_RETRY 2 + volatile uint8_t datapath = 0; volatile uint8_t station_connected = 0; @@ -79,8 +78,10 @@ static QueueHandle_t meta_to_host_queue = NULL; static QueueHandle_t to_host_queue[MAX_PRIORITY_QUEUES] = {NULL}; #endif +esp_netif_t *slave_sta_netif = NULL; static protocomm_t *pc_pserial; +SemaphoreHandle_t host_reset_sem; static struct rx_data { uint8_t valid; @@ -99,7 +100,7 @@ static void print_firmware_version() { ESP_LOGI(TAG, "*********************************************************************"); ESP_LOGI(TAG, " ESP-Hosted-MCU Slave FW version :: %d.%d.%d ", - PROJECT_VERSION_MAJOR_1, PROJECT_VERSION_MINOR_1, PROJECT_VERSION_PATCH_1); + (int)PROJECT_VERSION_MAJOR_1, (int)PROJECT_VERSION_MINOR_1, (int)PROJECT_VERSION_PATCH_1); #if CONFIG_ESP_SPI_HOST_INTERFACE #if BLUETOOTH_UART ESP_LOGI(TAG, " Transport used :: SPI + UART "); @@ -141,7 +142,9 @@ static uint8_t get_capabilities(void) cap |= ESP_CHECKSUM_ENABLED; #endif +#ifdef CONFIG_BT_ENABLED cap |= get_bluetooth_capabilities(); +#endif ESP_LOGI(TAG, "capabilities: 0x%x", cap); return cap; @@ -181,6 +184,32 @@ static uint32_t get_capabilities_ext(void) return ext_cap; } +static inline esp_err_t populate_buff_handle(interface_buffer_handle_t *buf_handle, + uint8_t if_type, + uint8_t *buf, + uint16_t len, + void (*free_buf_func)(void *data), + void *free_buf_handle, + uint8_t flag, + uint8_t if_num, + uint16_t seq_num) +{ + buf_handle->if_type = if_type; + buf_handle->payload = buf; + buf_handle->payload_len = len; + buf_handle->priv_buffer_handle = free_buf_handle; + buf_handle->free_buf_handle = free_buf_func; + buf_handle->flag = flag; + buf_handle->if_num = if_num; + buf_handle->seq_num = seq_num; + + return ESP_OK; +} + +#define populate_wifi_buffer_handle(Buf_hdL, TypE, BuF, LeN) \ + populate_buff_handle(Buf_hdL, TypE, BuF, LeN, esp_wifi_internal_free_rx_buffer, eb, 0, 0, 0); + + esp_err_t wlan_ap_rx_callback(void *buffer, uint16_t len, void *eb) { interface_buffer_handle_t buf_handle = {0}; @@ -191,7 +220,7 @@ esp_err_t wlan_ap_rx_callback(void *buffer, uint16_t len, void *eb) } return ESP_OK; } - ESP_HEXLOGV("AP_Get", buffer, len); + ESP_HEXLOGV("AP_Get", buffer, len, 32); #if 0 /* Only enable this is you want to avoid multi and bradcast @@ -206,12 +235,7 @@ esp_err_t wlan_ap_rx_callback(void *buffer, uint16_t len, void *eb) } #endif - buf_handle.if_type = ESP_AP_IF; - buf_handle.if_num = 0; - buf_handle.payload_len = len; - buf_handle.payload = buffer; - buf_handle.wlan_buf_handle = eb; - buf_handle.free_buf_handle = esp_wifi_internal_free_rx_buffer; + populate_wifi_buffer_handle(&buf_handle, ESP_AP_IF, buffer, len); if (send_to_host_queue(&buf_handle, PRIO_Q_OTHERS)) goto DONE; @@ -223,42 +247,129 @@ esp_err_t wlan_ap_rx_callback(void *buffer, uint16_t len, void *eb) return ESP_OK; } +/* This function would check the incoming packet from AP + * to send it to local lwip or host lwip depending upon the + * destination port used in the packet + */ esp_err_t wlan_sta_rx_callback(void *buffer, uint16_t len, void *eb) { interface_buffer_handle_t buf_handle = {0}; - if (!buffer || !eb || !datapath) { + if (!buffer || !eb) { if (eb) { esp_wifi_internal_free_rx_buffer(eb); } return ESP_OK; } - ESP_HEXLOGV("STA_Get", buffer, len); - buf_handle.if_type = ESP_STA_IF; - buf_handle.if_num = 0; - buf_handle.payload_len = len; - buf_handle.payload = buffer; - buf_handle.wlan_buf_handle = eb; - buf_handle.free_buf_handle = esp_wifi_internal_free_rx_buffer; + ESP_HEXLOGV("STA_Get", buffer, len, 32); #if ESP_PKT_STATS - pkt_stats.sta_sh_in++; + pkt_stats.sta_lwip_in++; #endif - if (send_to_host_queue(&buf_handle, PRIO_Q_OTHERS)) - goto DONE; +#ifdef CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED + hosted_l2_bridge bridge_to_use = HOST_LWIP_BRIDGE; + + /* Filtering based on destination port */ + bridge_to_use = filter_and_route_packet(buffer, len); + + + switch (bridge_to_use) { + case HOST_LWIP_BRIDGE: + /* Send to Host */ + if (!datapath) { + /* Drop packet */ + if (eb) { + esp_wifi_internal_free_rx_buffer(eb); + } + return ESP_OK; + } + ESP_LOGV(TAG, "host packet"); + populate_wifi_buffer_handle(&buf_handle, ESP_STA_IF, buffer, len); + + if (unlikely(send_to_host_queue(&buf_handle, PRIO_Q_OTHERS))) + goto DONE; + + #if ESP_PKT_STATS + pkt_stats.sta_sh_in++; + pkt_stats.sta_host_lwip_out++; + #endif + break; + + case SLAVE_LWIP_BRIDGE: + /* Send to local LWIP */ + ESP_LOGV(TAG, "slave packet"); + esp_netif_receive(slave_sta_netif, buffer, len, eb); + #if ESP_PKT_STATS + pkt_stats.sta_slave_lwip_out++; + #endif + break; + case BOTH_LWIP_BRIDGE: + ESP_LOGV(TAG, "slave & host packet"); + void * copy_buff = malloc(len); + assert(copy_buff); + memcpy(copy_buff, buffer, len); + + /* slave LWIP */ + esp_netif_receive(slave_sta_netif, buffer, len, eb); + //netif would free eb after processing + + ESP_LOGV(TAG, "slave & host packet"); + + /* Host LWIP, free up wifi buffers */ + populate_buff_handle(&buf_handle, ESP_STA_IF, copy_buff, len, free, copy_buff, 0, 0, 0); + if (unlikely(send_to_host_queue(&buf_handle, PRIO_Q_OTHERS))) { + /* Free copy_buff since we couldn't queue it */ + free(copy_buff); + return ESP_OK; + } + + #if ESP_PKT_STATS + pkt_stats.sta_sh_in++; + pkt_stats.sta_both_lwip_out++; + #endif + break; + + default: + ESP_LOGV(TAG, "Packet filtering failed, drop packet"); + goto DONE; + } +#else + if (!datapath) { + /* Drop packet */ + if (eb) { + esp_wifi_internal_free_rx_buffer(eb); + } + return ESP_OK; + } + + /* default as co-processor mode */ + populate_wifi_buffer_handle(&buf_handle, ESP_STA_IF, buffer, len); + + if (unlikely(send_to_host_queue(&buf_handle, PRIO_Q_OTHERS))) + goto DONE; + + #if ESP_PKT_STATS + pkt_stats.sta_sh_in++; + pkt_stats.sta_host_lwip_out++; + #endif +#endif return ESP_OK; DONE: - esp_wifi_internal_free_rx_buffer(eb); + if (eb) { + esp_wifi_internal_free_rx_buffer(eb); + } return ESP_OK; } -void process_tx_pkt(interface_buffer_handle_t *buf_handle) +static void process_tx_pkt(interface_buffer_handle_t *buf_handle) { + int host_awake = 1; + /* Check if data path is not yet open */ if (!datapath) { /* Post processing */ @@ -267,12 +378,25 @@ void process_tx_pkt(interface_buffer_handle_t *buf_handle) buf_handle->priv_buffer_handle = NULL; } ESP_LOGD(TAG, "Data path stopped"); - usleep(100*1000); + vTaskDelay(pdMS_TO_TICKS(100)); return; } if (if_context && if_context->if_ops && if_context->if_ops->write) { - if_context->if_ops->write(if_handle, buf_handle); + + if (is_host_power_saving() && is_host_wakeup_needed(buf_handle)) { + ESP_LOGI(TAG, "Host sleeping, trigger wake-up"); + ESP_HEXLOGW("Wakeup_pkt", buf_handle->payload+H_ESP_PAYLOAD_HEADER_OFFSET, + buf_handle->payload_len, /*buf_handle->payload_len*/ 32); + host_awake = wakeup_host(portMAX_DELAY); + buf_handle->flag |= FLAG_WAKEUP_PKT; + } + + if (host_awake) + if_context->if_ops->write(if_handle, buf_handle); + else + ESP_LOGI(TAG, "Host wakeup failed, drop packet"); } + /* Post processing */ if (buf_handle->free_buf_handle && buf_handle->priv_buffer_handle) { buf_handle->free_buf_handle(buf_handle->priv_buffer_handle); @@ -282,7 +406,7 @@ void process_tx_pkt(interface_buffer_handle_t *buf_handle) #if !BYPASS_TX_PRIORITY_Q /* Send data to host */ -void send_task(void* pvParameters) +static void send_task(void* pvParameters) { uint8_t queue_type = 0; interface_buffer_handle_t buf_handle = {0}; @@ -290,7 +414,7 @@ void send_task(void* pvParameters) while (1) { if (!datapath) { - usleep(100*1000); + vTaskDelay(pdMS_TO_TICKS(100)); continue; } @@ -301,7 +425,33 @@ void send_task(void* pvParameters) } #endif -void parse_protobuf_req(void) +static void host_reset_task(void* pvParameters) +{ + uint8_t capa = 0; + uint32_t ext_capa = 0; + + ESP_LOGI(TAG, "host reset handler task started"); + + while (1) { + + if (host_reset_sem) { + xSemaphoreTake(host_reset_sem, portMAX_DELAY); + } else { + vTaskDelay(pdMS_TO_TICKS(100)); + continue; + } + + capa = get_capabilities(); + ext_capa = get_capabilities_ext(); + + /* send capabilities to host */ + ESP_LOGI(TAG,"host reconfig event"); + generate_startup_event(capa, ext_capa); + send_event_to_host(RPC_ID__Event_ESPInit); + } +} + +static void parse_protobuf_req(void) { protocomm_pserial_data_ready(pc_pserial, r.data, r.len, UNKNOWN_RPC_MSG_ID); @@ -323,7 +473,7 @@ void send_event_data_to_host(int event_id, void *data, int size) protocomm_pserial_data_ready(pc_pserial, data, size, event_id); } -void process_serial_rx_pkt(uint8_t *buf) +static void process_serial_rx_pkt(uint8_t *buf) { struct esp_payload_header *header = NULL; uint16_t payload_len = 0; @@ -335,7 +485,7 @@ void process_serial_rx_pkt(uint8_t *buf) payload = buf + le16toh(header->offset); rem_buff_size = sizeof(r.data) - r.len; - ESP_HEXLOGV("serial_rx", payload, payload_len); + ESP_HEXLOGV("serial_rx", payload, payload_len, 32); while (r.valid) { @@ -352,6 +502,7 @@ void process_serial_rx_pkt(uint8_t *buf) if (header->seq_num != r.cur_seq_no) { /* Sequence number mismatch */ r.valid = 1; + ESP_LOGV(TAG, "Final Frag: r.valid=1"); parse_protobuf_req(); return; } @@ -362,6 +513,7 @@ void process_serial_rx_pkt(uint8_t *buf) if (!(header->flags & MORE_FRAGMENT)) { /* Received complete buffer */ r.valid = 1; + ESP_LOGV(TAG, "no frag case: r.valid=1"); parse_protobuf_req(); } } @@ -430,19 +582,19 @@ static int host_to_slave_reconfig(uint8_t *evt_buf, uint16_t len) } else if (*pos == SLV_CONFIG_THROTTLE_HIGH_THRESHOLD) { slv_cfg_g.throttle_high_threshold = *(pos + 2); - ESP_LOGI(TAG, "ESP<-Host high data throttle threshold [%u%%]", + ESP_LOGI(TAG, "ESP<-Host wifi flow ctl start thres [%u%%]", slv_cfg_g.throttle_high_threshold); /* Warn if FreeRTOS tick is small */ if ((slv_cfg_g.throttle_low_threshold > 0) && (CONFIG_FREERTOS_HZ < 1000)) { - ESP_LOGW(TAG, "FreeRTOS tick[%d]<1000. Enabling throttling with lower FrerRTOS tick may result in lower peak data throughput", (int) CONFIG_FREERTOS_HZ); + ESP_LOGW(TAG, "FreeRTOS tick[%d]<1000. Enabling flow control with lower FrerRTOS tick may result in lower peak data throughput", (int) CONFIG_FREERTOS_HZ); } } else if (*pos == SLV_CONFIG_THROTTLE_LOW_THRESHOLD) { slv_cfg_g.throttle_low_threshold = *(pos + 2); - ESP_LOGI(TAG, "ESP<-Host low data throttle threshold [%u%%]", + ESP_LOGI(TAG, "ESP<-Host wifi flow ctl clear thres [%u%%]", slv_cfg_g.throttle_low_threshold); } else { @@ -454,7 +606,10 @@ static int host_to_slave_reconfig(uint8_t *evt_buf, uint16_t len) pos += (tag_len+2); len_left -= (tag_len+2); } - +#if CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED + /* Host should be in position to get DHCP/DNS info */ + //send_dhcp_dns_info_to_host(1, 0); +#endif return ESP_OK; } @@ -471,7 +626,7 @@ static void process_priv_pkt(uint8_t *payload, uint16_t payload_len) if (event->event_type == ESP_PRIV_EVENT_INIT) { ESP_LOGI(TAG, "Slave init_config received from host"); - ESP_HEXLOGD("init_config", event->event_data, event->event_len); + ESP_HEXLOGD("init_config", event->event_data, event->event_len, 32); ret = host_to_slave_reconfig(event->event_data, event->event_len); if (ret) { @@ -482,7 +637,7 @@ static void process_priv_pkt(uint8_t *payload, uint16_t payload_len) } } -void process_rx_pkt(interface_buffer_handle_t *buf_handle) +static void process_rx_pkt(interface_buffer_handle_t *buf_handle) { struct esp_payload_header *header = NULL; uint8_t *payload = NULL; @@ -494,40 +649,34 @@ void process_rx_pkt(interface_buffer_handle_t *buf_handle) payload = buf_handle->payload + le16toh(header->offset); payload_len = le16toh(header->len); - ESP_HEXLOGD("rx_new", buf_handle->payload, min(32,buf_handle->payload_len)); + ESP_HEXLOGD("bus_RX", buf_handle->payload, buf_handle->payload_len, 32); + if (buf_handle->if_type == ESP_STA_IF && station_connected) { /* Forward data to wlan driver */ do { ret = esp_wifi_internal_tx(ESP_IF_WIFI_STA, payload, payload_len); - - /* Delay only if throttling is enabled */ - if (ret && - slv_cfg_g.throttle_high_threshold && - (retry_wifi_tx<(MAX_WIFI_STA_TX_RETRY/2))) { - vTaskDelay(2); + if (ret) { + vTaskDelay(pdMS_TO_TICKS(1)); } retry_wifi_tx--; } while (ret && retry_wifi_tx); - ESP_HEXLOGV("STA_Put", payload, payload_len); - if (ESP_OK == ret) { -#if ESP_PKT_STATS - pkt_stats.hs_bus_sta_out++; -#endif - } else { + ESP_HEXLOGV("STA_Put", payload, payload_len, 32); #if ESP_PKT_STATS + if (ret) pkt_stats.hs_bus_sta_fail++; + else + pkt_stats.hs_bus_sta_out++; #endif - } } else if (buf_handle->if_type == ESP_AP_IF && softap_started) { /* Forward data to wlan driver */ esp_wifi_internal_tx(ESP_IF_WIFI_AP, payload, payload_len); - ESP_HEXLOGV("AP_Put", payload, payload_len); + ESP_HEXLOGV("AP_Put", payload, payload_len, 32); } else if (buf_handle->if_type == ESP_SERIAL_IF) { #if ESP_PKT_STATS - pkt_stats.serial_rx++; + pkt_stats.serial_rx++; #endif process_serial_rx_pkt(buf_handle->payload); } else if (buf_handle->if_type == ESP_PRIV_IF) { @@ -549,18 +698,18 @@ void process_rx_pkt(interface_buffer_handle_t *buf_handle) buf_handle->free_buf_handle(buf_handle->priv_buffer_handle); buf_handle->priv_buffer_handle = NULL; } + } /* Get data from host */ -void recv_task(void* pvParameters) +static void recv_task(void* pvParameters) { interface_buffer_handle_t buf_handle = {0}; for (;;) { - if (!datapath) { - /* Datapath is not enabled by host yet*/ - usleep(100*1000); + if (is_host_power_saving() || !datapath) { + vTaskDelay(pdMS_TO_TICKS(100)); continue; } @@ -568,7 +717,7 @@ void recv_task(void* pvParameters) if (if_context && if_context->if_ops && if_context->if_ops->read) { int len = if_context->if_ops->read(if_handle, &buf_handle); if (len <= 0) { - usleep(10*1000); + vTaskDelay(pdMS_TO_TICKS(1)); continue; } } @@ -602,6 +751,7 @@ int send_to_host_queue(interface_buffer_handle_t *buf_handle, uint8_t queue_type ESP_LOGE(TAG, "Failed to send buffer into queue[%u]\n",queue_type); return ESP_FAIL; } + if (queue_type == PRIO_Q_SERIAL) ret = xQueueSendToFront(meta_to_host_queue, &queue_type, portMAX_DELAY); else @@ -653,7 +803,7 @@ static esp_err_t serial_write_data(uint8_t* data, ssize_t len) return ESP_FAIL; } - ESP_HEXLOGV("serial_tx_create", data, frag_len); + ESP_HEXLOGV("serial_tx_create", data, frag_len, 32); left_len -= frag_len; pos += frag_len; @@ -662,6 +812,15 @@ static esp_err_t serial_write_data(uint8_t* data, ssize_t len) return ESP_OK; } +// This new function will run in a temporary, separate task. +static void power_save_alert_task(void *pvParameters) +{ + uint32_t event = (uint32_t)pvParameters; + host_power_save_alert(event); + /* The task deletes itself after running. */ + vTaskDelete(NULL); +} + int event_handler(uint8_t val) { switch(val) { @@ -670,6 +829,11 @@ int event_handler(uint8_t val) if_handle->state = ACTIVE; datapath = 1; ESP_EARLY_LOGI(TAG, "Start Data Path"); + if (host_reset_sem) { + xSemaphoreGive(host_reset_sem); + } else { + ESP_EARLY_LOGI(TAG, "Failed to give host_reset_sem"); + } } else { ESP_EARLY_LOGI(TAG, "Failed to Start Data Path"); } @@ -684,118 +848,28 @@ int event_handler(uint8_t val) ESP_EARLY_LOGI(TAG, "Failed to Stop Data Path"); } break; - } - return 0; -} - -#ifdef CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS -/* These functions are only for debugging purpose - * Please do not enable in production environments - */ -static esp_err_t print_real_time_stats(TickType_t xTicksToWait) -{ - TaskStatus_t *start_array = NULL, *end_array = NULL; - UBaseType_t start_array_size, end_array_size; - uint32_t start_run_time, end_run_time; - esp_err_t ret; - - /* Allocate array to store current task states */ - start_array_size = uxTaskGetNumberOfTasks() + ARRAY_SIZE_OFFSET; - start_array = malloc(sizeof(TaskStatus_t) * start_array_size); - if (start_array == NULL) { - ret = ESP_ERR_NO_MEM; - goto exit; - } - /* Get current task states */ - start_array_size = uxTaskGetSystemState(start_array, - start_array_size, &start_run_time); - if (start_array_size == 0) { - ret = ESP_ERR_INVALID_SIZE; - goto exit; - } - - vTaskDelay(xTicksToWait); - - /* Allocate array to store tasks states post delay */ - end_array_size = uxTaskGetNumberOfTasks() + ARRAY_SIZE_OFFSET; - end_array = malloc(sizeof(TaskStatus_t) * end_array_size); - if (end_array == NULL) { - ret = ESP_ERR_NO_MEM; - goto exit; - } - /* Get post delay task states */ - end_array_size = uxTaskGetSystemState(end_array, end_array_size, &end_run_time); - if (end_array_size == 0) { - ret = ESP_ERR_INVALID_SIZE; - goto exit; - } - - /* Calculate total_elapsed_time in units of run time stats clock period */ - uint32_t total_elapsed_time = (end_run_time - start_run_time); - if (total_elapsed_time == 0) { - ret = ESP_ERR_INVALID_STATE; - goto exit; - } - - ESP_LOGI(TAG,"| Task | Run Time | Percentage"); - /* Match each task in start_array to those in the end_array */ - for (int i = 0; i < start_array_size; i++) { - int k = -1; - for (int j = 0; j < end_array_size; j++) { - if (start_array[i].xHandle == end_array[j].xHandle) { - k = j; - /* Mark that task have been matched by overwriting their handles */ - start_array[i].xHandle = NULL; - end_array[j].xHandle = NULL; - break; - } - } - /* Check if matching task found */ - if (k >= 0) { - uint32_t task_elapsed_time = end_array[k].ulRunTimeCounter - - start_array[i].ulRunTimeCounter; - uint32_t percentage_time = (task_elapsed_time * 100UL) / - (total_elapsed_time * portNUM_PROCESSORS); - ESP_LOGI(TAG,"| %s | %d | %d%%", start_array[i].pcTaskName, - task_elapsed_time, percentage_time); - } - } - /* Print unmatched tasks */ - for (int i = 0; i < start_array_size; i++) { - if (start_array[i].xHandle != NULL) { - ESP_LOGI(TAG,"| %s | Deleted", start_array[i].pcTaskName); - } - } - for (int i = 0; i < end_array_size; i++) { - if (end_array[i].xHandle != NULL) { - ESP_LOGI(TAG,"| %s | Created", end_array[i].pcTaskName); - } - } - ret = ESP_OK; - -exit: /* Common return path */ - if (start_array) - free(start_array); - if (end_array) - free(end_array); - return ret; -} + case ESP_POWER_SAVE_ON: + xTaskCreate(power_save_alert_task, "ps_alert_task", 3072, (void *)ESP_POWER_SAVE_ON, tskIDLE_PRIORITY + 5, NULL); + break; -void task_runtime_stats_task(void* pvParameters) -{ - while (1) { - ESP_LOGI(TAG,"\n\nGetting real time stats over %d ticks", STATS_TICKS); - if (print_real_time_stats(STATS_TICKS) == ESP_OK) { - ESP_LOGI(TAG,"Real time stats obtained"); - } else { - ESP_LOGI(TAG,"Error getting real time stats"); - } - vTaskDelay(pdMS_TO_TICKS(1000*2)); + case ESP_POWER_SAVE_OFF: + //if (if_handle && if_handle->state >= DEACTIVE) { + datapath = 1; + if_handle->state = ACTIVE; + /*} else { + ESP_EARLY_LOGI(TAG, "Failed to set state to ACTIVE"); + }*/ + xTaskCreate(power_save_alert_task, "ps_alert_task", 3072, (void *)ESP_POWER_SAVE_OFF, tskIDLE_PRIORITY + 5, NULL); + if (host_reset_sem) { + xSemaphoreGive(host_reset_sem); + } + break; } + return 0; } -#endif +#if defined(CONFIG_ESP_GPIO_SLAVE_RESET) && (CONFIG_ESP_GPIO_SLAVE_RESET != -1) static void IRAM_ATTR gpio_resetpin_isr_handler(void* arg) { @@ -841,105 +915,328 @@ static void register_reset_pin(uint32_t gpio_num) gpio_isr_handler_add(gpio_num, gpio_resetpin_isr_handler, NULL); } } +#endif +#ifdef CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED +void create_slave_sta_netif(uint8_t dhcp_at_slave) +{ + /* Create "almost" default station, but with un-flagged DHCP client */ + esp_netif_inherent_config_t netif_cfg; + memcpy(&netif_cfg, ESP_NETIF_BASE_DEFAULT_WIFI_STA, sizeof(netif_cfg)); + + if (!dhcp_at_slave) + netif_cfg.flags &= ~ESP_NETIF_DHCP_CLIENT; + + esp_netif_config_t cfg_sta = { + .base = &netif_cfg, + .stack = ESP_NETIF_NETSTACK_DEFAULT_WIFI_STA, + }; + esp_netif_t *netif_sta = esp_netif_new(&cfg_sta); + assert(netif_sta); + + ESP_ERROR_CHECK(esp_netif_attach_wifi_station(netif_sta)); + ESP_ERROR_CHECK(esp_wifi_set_default_wifi_sta_handlers()); + + if (!dhcp_at_slave) { + ESP_ERROR_CHECK(esp_netif_dhcpc_stop(netif_sta)); + ESP_LOGI(TAG, "No DHCP at slave"); + } else { + ESP_LOGI(TAG, "DHCP at slave"); + /* TODO: Is below line needed? */ + //ESP_ERROR_CHECK(esp_netif_dhcpc_start(netif_sta)); + } + + slave_sta_netif = netif_sta; +} +#endif + +#ifdef CONFIG_ESP_HOSTED_USE_EXAMPLE_WIFI_PRE_PROVISION_CONFIG +#define EXAMPLE_ESP_WIFI_SSID CONFIG_ESP_WIFI_SSID +#define EXAMPLE_ESP_WIFI_PASS CONFIG_ESP_WIFI_PASSWORD +#define EXAMPLE_ESP_MAXIMUM_RETRY CONFIG_ESP_MAXIMUM_RETRY + +#if CONFIG_ESP_WPA3_SAE_PWE_HUNT_AND_PECK + #define ESP_WIFI_SAE_MODE WPA3_SAE_PWE_HUNT_AND_PECK + #define EXAMPLE_H2E_IDENTIFIER "" +#elif CONFIG_ESP_WPA3_SAE_PWE_HASH_TO_ELEMENT + #define ESP_WIFI_SAE_MODE WPA3_SAE_PWE_HASH_TO_ELEMENT + #define EXAMPLE_H2E_IDENTIFIER CONFIG_ESP_WIFI_PW_ID +#elif CONFIG_ESP_WPA3_SAE_PWE_BOTH + #define ESP_WIFI_SAE_MODE WPA3_SAE_PWE_BOTH + #define EXAMPLE_H2E_IDENTIFIER CONFIG_ESP_WIFI_PW_ID +#endif + +#if CONFIG_ESP_WIFI_AUTH_OPEN + #define ESP_WIFI_SCAN_AUTH_MODE_THRESHOLD WIFI_AUTH_OPEN +#elif CONFIG_ESP_WIFI_AUTH_WEP + #define ESP_WIFI_SCAN_AUTH_MODE_THRESHOLD WIFI_AUTH_WEP +#elif CONFIG_ESP_WIFI_AUTH_WPA_PSK + #define ESP_WIFI_SCAN_AUTH_MODE_THRESHOLD WIFI_AUTH_WPA_PSK +#elif CONFIG_ESP_WIFI_AUTH_WPA2_PSK + #define ESP_WIFI_SCAN_AUTH_MODE_THRESHOLD WIFI_AUTH_WPA2_PSK +#elif CONFIG_ESP_WIFI_AUTH_WPA_WPA2_PSK + #define ESP_WIFI_SCAN_AUTH_MODE_THRESHOLD WIFI_AUTH_WPA_WPA2_PSK +#elif CONFIG_ESP_WIFI_AUTH_WPA3_PSK + #define ESP_WIFI_SCAN_AUTH_MODE_THRESHOLD WIFI_AUTH_WPA3_PSK +#elif CONFIG_ESP_WIFI_AUTH_WPA2_WPA3_PSK + #define ESP_WIFI_SCAN_AUTH_MODE_THRESHOLD WIFI_AUTH_WPA2_WPA3_PSK +#elif CONFIG_ESP_WIFI_AUTH_WAPI_PSK + #define ESP_WIFI_SCAN_AUTH_MODE_THRESHOLD WIFI_AUTH_WAPI_PSK +#endif -void app_main() + +static int fallback_to_sdkconfig_wifi_config(void) { - esp_err_t ret; - uint8_t capa = 0; - uint32_t ext_capa = 0; - uint8_t prio_q_idx = 0; + wifi_config_t wifi_config = { + .sta = { + .ssid = EXAMPLE_ESP_WIFI_SSID, + .password = EXAMPLE_ESP_WIFI_PASS, + /* Authmode threshold resets to WPA2 as default if password matches WPA2 standards (password len => 8). + * If you want to connect the device to deprecated WEP/WPA networks, Please set the threshold value + * to WIFI_AUTH_WEP/WIFI_AUTH_WPA_PSK and set the password with length and format matching to + * WIFI_AUTH_WEP/WIFI_AUTH_WPA_PSK standards. + */ + .threshold.authmode = ESP_WIFI_SCAN_AUTH_MODE_THRESHOLD, + .sae_pwe_h2e = ESP_WIFI_SAE_MODE, + .sae_h2e_identifier = EXAMPLE_H2E_IDENTIFIER, + }, + }; + + ESP_ERROR_CHECK(esp_hosted_set_sta_config(WIFI_IF_STA, &wifi_config) ); - print_firmware_version(); - register_reset_pin(CONFIG_ESP_GPIO_SLAVE_RESET); + return ESP_OK; +} +#endif - capa = get_capabilities(); - ext_capa = get_capabilities_ext(); +#ifdef CONFIG_ESP_HOSTED_USE_EXAMPLE_WIFI_PRE_PROVISION_CONFIG +static bool wifi_is_provisioned(void) +{ + wifi_config_t wifi_cfg = {0}; - /* Initialize NVS */ - ret = nvs_flash_init(); + if (esp_wifi_get_config(WIFI_IF_STA, &wifi_cfg) != ESP_OK) { + ESP_LOGI(TAG, "Wifi get config failed"); + return false; + } - if (ret == ESP_ERR_NVS_NO_FREE_PAGES || - ret == ESP_ERR_NVS_NEW_VERSION_FOUND) { - ESP_ERROR_CHECK(nvs_flash_erase()); - ret = nvs_flash_init(); + ESP_LOGI(TAG, "SSID: %s", wifi_cfg.sta.ssid); + + if (strlen((const char *) wifi_cfg.sta.ssid)) { + ESP_LOGI(TAG, "Wifi provisioned"); + return true; } - ESP_ERROR_CHECK( ret ); + ESP_LOGI(TAG, "Wifi not provisioned, Fallback to example config"); + + return false; +} +#endif + +#if defined(CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED) || defined(CONFIG_ESP_HOSTED_USE_EXAMPLE_WIFI_PRE_PROVISION_CONFIG) +static int connect_sta(void) +{ + wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); + + ESP_ERROR_CHECK(esp_wifi_init(&cfg)); + ESP_ERROR_CHECK(esp_wifi_set_storage(WIFI_STORAGE_FLASH)); + esp_hosted_register_wifi_event_handlers(); + + ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA) ); + +#ifdef CONFIG_ESP_HOSTED_USE_EXAMPLE_WIFI_PRE_PROVISION_CONFIG +#if CONFIG_WIFI_CMD_DEFAULT_COUNTRY_CN + /* Only set country once during first initialize wifi */ + static bool country_code_has_set = false; + if (country_code_has_set == false) { + wifi_country_t country = { + .cc = "CN", + .schan = 1, + .nchan = 13, + .policy = 0 + }; + esp_wifi_set_country(&country); + country_code_has_set = true; + } +#endif + + if (! wifi_is_provisioned()) { + fallback_to_sdkconfig_wifi_config(); + } +#endif + + ESP_ERROR_CHECK(esp_wifi_set_ps(WIFI_PS_NONE)); + + ESP_ERROR_CHECK(esp_wifi_start() ); + +#ifdef CONFIG_ESP_HOSTED_USE_EXAMPLE_WIFI_PRE_PROVISION_CONFIG +#if CONFIG_ESP_WIFI_ENABLE_WIFI_RX_STATS + #if CONFIG_ESP_WIFI_ENABLE_WIFI_RX_MU_STATS + esp_wifi_enable_rx_statistics(true, true); + #else + esp_wifi_enable_rx_statistics(true, false); + #endif +#endif + +#if CONFIG_ESP_WIFI_ENABLE_WIFI_TX_STATS + esp_wifi_enable_tx_statistics(ESP_WIFI_ACI_BE, true); +#endif +#endif + + return ESP_OK; +} +#endif + + + +static void host_wakeup_callback(void) +{ +#if H_HOST_PS_ALLOWED + /* Interrupt context */ +#endif +} + +esp_err_t esp_hosted_coprocessor_init(void) +{ + static bool esp_hosted_rcp_init_done = false; + if (esp_hosted_rcp_init_done) { + return ESP_OK; + } + esp_hosted_rcp_init_done = true; + + assert(host_reset_sem = xSemaphoreCreateBinary()); + xSemaphoreTake(host_reset_sem, 0); + + print_firmware_version(); + + if_context = interface_insert_driver(event_handler); + if (!if_context || !if_context->if_ops) { + ESP_LOGE(TAG, "Failed to insert driver\n"); + return ESP_FAIL; + } + + if_handle = if_context->if_ops->init(); + if (!if_handle) { + ESP_LOGE(TAG, "Failed to initialize driver\n"); + return ESP_FAIL; + } + assert(xTaskCreate(recv_task , "recv_task" , + CONFIG_ESP_HOSTED_DEFAULT_TASK_STACK_SIZE, NULL , + CONFIG_ESP_HOSTED_DEFAULT_TASK_PRIORITY, NULL) == pdTRUE); +#if CONFIG_ESP_SPI_HOST_INTERFACE + datapath = 1; + if (host_reset_sem) + xSemaphoreGive(host_reset_sem); +#endif + +#if CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED + ESP_ERROR_CHECK(esp_netif_init()); +#endif + ESP_ERROR_CHECK(esp_event_loop_create_default()); + +#if defined(CONFIG_ESP_GPIO_SLAVE_RESET) && (CONFIG_ESP_GPIO_SLAVE_RESET != -1) + register_reset_pin(CONFIG_ESP_GPIO_SLAVE_RESET); +#endif + +#if defined(CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED) && defined(CONFIG_ESP_HOSTED_HOST_RESERVED_PORTS_CONFIGURED) + ESP_LOGI(TAG, "Configuring host static port forwarding rules from slave kconfig"); + configure_host_static_port_forwarding_rules(CONFIG_ESP_HOSTED_HOST_RESERVED_TCP_SRC_PORTS, + CONFIG_ESP_HOSTED_HOST_RESERVED_TCP_DEST_PORTS, + CONFIG_ESP_HOSTED_HOST_RESERVED_UDP_SRC_PORTS, + CONFIG_ESP_HOSTED_HOST_RESERVED_UDP_DEST_PORTS); +#endif + +#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_SOC_BT_SUPPORTED) initialise_bluetooth(); +#endif pc_pserial = protocomm_new(); if (pc_pserial == NULL) { ESP_LOGE(TAG,"Failed to allocate memory for new instance of protocomm "); - return; + return ESP_FAIL; } /* Endpoint for control command responses */ if (protocomm_add_endpoint(pc_pserial, RPC_EP_NAME_RSP, data_transfer_handler, NULL) != ESP_OK) { ESP_LOGE(TAG, "Failed to add enpoint"); - return; + return ESP_FAIL; } /* Endpoint for control notifications for events subscribed by user */ if (protocomm_add_endpoint(pc_pserial, RPC_EP_NAME_EVT, rpc_evt_handler, NULL) != ESP_OK) { ESP_LOGE(TAG, "Failed to add enpoint"); - return; + return ESP_FAIL; } protocomm_pserial_start(pc_pserial, serial_write_data, serial_read_data); - if_context = interface_insert_driver(event_handler); - -#if CONFIG_ESP_SPI_HOST_INTERFACE - datapath = 1; -#endif - - if (!if_context || !if_context->if_ops) { - ESP_LOGE(TAG, "Failed to insert driver\n"); - return; - } - - if_handle = if_context->if_ops->init(); - - if (!if_handle) { - ESP_LOGE(TAG, "Failed to initialize driver\n"); - return; - } - - - assert(xTaskCreate(recv_task , "recv_task" , - CONFIG_ESP_DEFAULT_TASK_STACK_SIZE, NULL , - CONFIG_ESP_DEFAULT_TASK_PRIO, NULL) == pdTRUE); #if !BYPASS_TX_PRIORITY_Q meta_to_host_queue = xQueueCreate(TO_HOST_QUEUE_SIZE*3, sizeof(uint8_t)); assert(meta_to_host_queue); - for (prio_q_idx=0; prio_q_idx +#include "esp_timer.h" +#include "interface.h" +static char *TAG = "host_ps"; + +#if H_HOST_PS_ALLOWED + + uint8_t power_save_on; + + #if H_HOST_PS_DEEP_SLEEP_ALLOWED + SemaphoreHandle_t wakeup_sem; + + #define GPIO_HOST_WAKEUP (H_HOST_WAKE_UP_GPIO) + + /* Assuming wakup gpio neg 'level' interrupt */ + #define set_host_wakeup_gpio() gpio_set_level(GPIO_HOST_WAKEUP, 1) + #define reset_host_wakeup_gpio() gpio_set_level(GPIO_HOST_WAKEUP, 0) + #endif + static void (*host_wakeup_cb)(void); +#endif + +extern interface_context_t *if_context; +extern interface_handle_t *if_handle; + +int is_host_wakeup_needed(interface_buffer_handle_t *buf_handle) +{ + int wakup_needed = 0; + char reason[100] = ""; +#if H_HOST_PS_ALLOWED + uint8_t *buf_start; + + buf_start = buf_handle->payload; + + +#if CONFIG_ESP_SPI_HD_HOST_INTERFACE || CONFIG_ESP_UART_HOST_INTERFACE || CONFIG_ESP_SPI_HOST_INTERFACE + /* Flow control packet cannot miss */ + if (buf_handle->wifi_flow_ctrl_en) { + strlcpy(reason, "flow_ctl_pkt", sizeof(reason)); + wakup_needed = 1; + goto end; + } +#endif + + if (!buf_start) { + /* Do not wake up */ + strlcpy(reason, "NULL_TxBuff", sizeof(reason)); + wakup_needed = 0; + goto end; + } + + /* Wake up for serial msg */ + switch (buf_handle->if_type) { + + case ESP_SERIAL_IF: + strlcpy(reason, "serial tx msg", sizeof(reason)); + wakup_needed = 1; + goto end; + break; + + case ESP_HCI_IF: + strlcpy(reason, "bt tx msg", sizeof(reason)); + wakup_needed = 1; + goto end; + break; + + case ESP_PRIV_IF: + strlcpy(reason, "priv tx msg", sizeof(reason)); + wakup_needed = 1; + goto end; + break; + + case ESP_TEST_IF: + strlcpy(reason, "test tx msg", sizeof(reason)); + wakup_needed = 1; + goto end; + break; + + case ESP_STA_IF: + + /* TODO: parse packet if lwip split not configured. + * Decide if packets need to reach to host or not + **/ + strlcpy(reason, "sta tx msg", sizeof(reason)); + wakup_needed = 1; + goto end; + break; + + case ESP_AP_IF: + strlcpy(reason, "ap tx msg", sizeof(reason)); + wakup_needed = 1; + goto end; + break; + } + +end: +#else + strlcpy(reason, "host_ps_disabled", sizeof(reason)); + wakup_needed = 0; +#endif + + if (wakup_needed) { + ESP_LOGI(TAG, "Wakeup needed, reason %s", reason); + } else { + ESP_LOGI(TAG, "Wakeup not needed"); + } + return wakup_needed; +} + + +int host_power_save_init(void (*fn_host_wakeup_cb)(void)) +{ +#if H_HOST_PS_ALLOWED + +#if H_HOST_PS_DEEP_SLEEP_ALLOWED + assert(GPIO_HOST_WAKEUP != -1); + /* Configuration for the OOB line */ + gpio_config_t io_conf={ + .intr_type=GPIO_INTR_DISABLE, + .mode=GPIO_MODE_OUTPUT, + .pin_bit_mask=(1ULL< timeout_ms) { + /* timeout */ + ESP_LOGI(TAG, "%s:%u timeout Curr:%llu start:%llu timeout:%lu", + __func__,__LINE__, GET_CURR_TIME_IN_MS(), start_time, timeout_ms); + break; + } + + } while (1); + + /* Clean up timer if it's still active */ + if (timer) { + esp_timer_stop(timer); + esp_timer_delete(timer); + } + + return wakeup_success; + +#else + return 1; +#endif +} + +int wakeup_host(uint32_t timeout_ms) +{ + +#if H_HOST_PS_ALLOWED + int wakeup_success = 0; + + if(!is_host_power_saving()) { + return 1; + } + + if (!if_handle || !if_context) { + ESP_LOGE(TAG, "Failed to wakeup, if_handle or if_context is NULL"); + return 0; + } + + if (if_handle->state < DEACTIVE) { + ESP_LOGI(TAG, "%s:%u Re-Initializing driver\n", __func__, __LINE__); + + /* host wakeup mandated in sdio init */ + wakeup_success = 1; + if_handle = if_context->if_ops->init(); + if (!if_handle) { + ESP_LOGE(TAG, "%s:%u Failed to initialize driver\n", __func__, __LINE__); + return ESP_FAIL; + } + } + + if (power_save_on) { + wakeup_success = wakeup_host_mandate(timeout_ms); + ESP_LOGI(TAG, "host %s woke up", is_host_power_saving() ? "not" : ""); + } + + return wakeup_success; +#else + return 1; +#endif +} + +int host_power_save_alert(uint32_t ps_evt) +{ + +#if H_HOST_PS_ALLOWED + /* Running in interrupt context - Keep it short and simple */ + BaseType_t do_yeild = pdFALSE; + + if (ESP_POWER_SAVE_ON == ps_evt) { + ESP_EARLY_LOGI(TAG, "Host Sleep"); + #if H_HOST_PS_DEEP_SLEEP_ALLOWED + if (wakeup_sem) { + /* Host sleeping */ + xSemaphoreTakeFromISR(wakeup_sem, &do_yeild); + } + #endif + power_save_on = 1; + + if (!if_handle || !if_context || if_handle->state < DEACTIVE) { + ESP_EARLY_LOGE(TAG, "%s:%u Failed to bring down transport", __func__, __LINE__); + } + + if (if_handle->state >= DEACTIVE) { + if (!if_context->if_ops || !if_context->if_ops->deinit) { + ESP_EARLY_LOGI(TAG, "%s:%u if_context->if_ops->deinit not available", __func__, __LINE__); + } else { + ESP_EARLY_LOGI(TAG, "%s:%u Deinitializing driver", __func__, __LINE__); + if_context->if_ops->deinit(if_handle); + /* if_handle->state would be changed to DEINIT */ + } + } + } else if ((ESP_POWER_SAVE_OFF == ps_evt) || (ESP_OPEN_DATA_PATH == ps_evt)) { + ESP_EARLY_LOGI(TAG, "Host Awake, transport state: %u", if_handle->state); + + power_save_on = 0; + if (host_wakeup_cb) { + host_wakeup_cb(); + } + #if H_HOST_PS_DEEP_SLEEP_ALLOWED + if (wakeup_sem) { + xSemaphoreGiveFromISR(wakeup_sem, &do_yeild); + } + #endif + } else { + ESP_EARLY_LOGI(TAG, "Ignore event[%u]", ps_evt); + } + + if (do_yeild == pdTRUE) { + portYIELD_FROM_ISR(); + } +#endif + return 0; +} + diff --git a/slave/main/host_power_save.h b/slave/main/host_power_save.h new file mode 100644 index 00000000..7701eadb --- /dev/null +++ b/slave/main/host_power_save.h @@ -0,0 +1,56 @@ +/* + * SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef __HOST_POWER_SAVE_H__ +#define __HOST_POWER_SAVE_H__ + +#include +#include "sdkconfig.h" +#include "interface.h" + +#if defined(CONFIG_ESP_HOSTED_HOST_POWER_SAVE_ENABLED) + #define H_HOST_PS_ALLOWED 1 + extern uint8_t power_save_on; +#else + #define H_HOST_PS_ALLOWED 0 +#endif + +#if H_HOST_PS_ALLOWED && defined(CONFIG_ESP_HOSTED_HOST_DEEP_SLEEP_ALLOWED) + #define H_HOST_PS_DEEP_SLEEP_ALLOWED 1 +#else + #define H_HOST_PS_DEEP_SLEEP_ALLOWED 0 +#endif + +#if H_HOST_PS_DEEP_SLEEP_ALLOWED && CONFIG_ESP_HOSTED_HOST_WAKEUP_GPIO == -1 + #error "CONFIG_HOST_WAKEUP_GPIO is not configured. Either disable host power save or configure the host wakeup GPIO pin" +#else + #define H_HOST_WAKE_UP_GPIO CONFIG_ESP_HOSTED_HOST_WAKEUP_GPIO +#endif + +#if defined(CONFIG_ESP_HOSTED_UNLOAD_BUS_DRIVER_DURING_HOST_SLEEP) + #define H_PS_UNLOAD_BUS_WHILE_PS 1 +#else + #define H_PS_UNLOAD_BUS_WHILE_PS 0 +#endif + + +int host_power_save_init(void (*host_wakeup_callback)(void)); +int host_power_save_deinit(void); +int is_host_wakeup_needed(interface_buffer_handle_t *buf_handle); +int wakeup_host_mandate(uint32_t timeout_ms); +int wakeup_host(uint32_t timeout_ms); +int host_power_save_alert(uint32_t ps_evt); +static inline int is_host_power_saving(void) +{ +#if H_HOST_PS_ALLOWED + return power_save_on; +#else + return 0; +#endif +} + + +#endif diff --git a/slave/main/http_req.c b/slave/main/http_req.c new file mode 100644 index 00000000..707a3436 --- /dev/null +++ b/slave/main/http_req.c @@ -0,0 +1,129 @@ +/* HTTP GET Example using plain POSIX sockets + + This example code is in the Public Domain (or CC0 licensed, at your option.) + + Unless required by applicable law or agreed to in writing, this + software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + CONDITIONS OF ANY KIND, either express or implied. +*/ +#include +#include "sdkconfig.h" + +#ifdef CONFIG_ESP_HOSTED_COPROCESSOR_EXAMPLE_HTTP_CLIENT +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "esp_system.h" +#include "esp_log.h" + +#include "lwip/err.h" +#include "lwip/sockets.h" +#include "lwip/sys.h" +#include "lwip/netdb.h" +#include "lwip/dns.h" + +extern volatile uint8_t station_connected; +/* Constants that aren't configurable in menuconfig */ +#define WEB_SERVER CONFIG_HTTP_WEBSERVER +#define WEB_PORT CONFIG_HTTP_WEBSERVER_PORT +#define WEB_PATH CONFIG_HTTP_WEBSERVER_PATH + +static const char *TAG = "http_req"; + +static const char *REQUEST = "GET " WEB_PATH " HTTP/1.0\r\n" + "Host: "WEB_SERVER":"WEB_PORT"\r\n" + "User-Agent: esp-idf/1.0 esp32\r\n" + "\r\n"; + +static void http_get_task(void *pvParameters) +{ + const struct addrinfo hints = { + .ai_family = AF_INET, + .ai_socktype = SOCK_STREAM, + }; + struct addrinfo *res; + struct in_addr *addr; + int s, r; + char recv_buf[64]; + + while(1) { + int err = getaddrinfo(WEB_SERVER, WEB_PORT, &hints, &res); + + if(err != 0 || res == NULL) { + ESP_LOGE(TAG, "DNS lookup failed err=%d res=%p", err, res); + vTaskDelay(1000 / portTICK_PERIOD_MS); + continue; + } + + /* Code to print the resolved IP. + +Note: inet_ntoa is non-reentrant, look at ipaddr_ntoa_r for "real" code */ + addr = &((struct sockaddr_in *)res->ai_addr)->sin_addr; + ESP_LOGV(TAG, "DNS lookup succeeded. IP=%s", inet_ntoa(*addr)); + + s = socket(res->ai_family, res->ai_socktype, 0); + if(s < 0) { + ESP_LOGE(TAG, "... Failed to allocate socket."); + freeaddrinfo(res); + vTaskDelay(1000 / portTICK_PERIOD_MS); + continue; + } + ESP_LOGV(TAG, "... allocated socket"); + + if(connect(s, res->ai_addr, res->ai_addrlen) != 0) { + ESP_LOGE(TAG, "... socket connect failed errno=%d", errno); + close(s); + freeaddrinfo(res); + vTaskDelay(4000 / portTICK_PERIOD_MS); + continue; + } + + ESP_LOGV(TAG, "... connected"); + freeaddrinfo(res); + + if (write(s, REQUEST, strlen(REQUEST)) < 0) { + ESP_LOGE(TAG, "... socket send failed"); + close(s); + vTaskDelay(4000 / portTICK_PERIOD_MS); + continue; + } + ESP_LOGV(TAG, "... socket send success"); + + struct timeval receiving_timeout; + receiving_timeout.tv_sec = 5; + receiving_timeout.tv_usec = 0; + if (setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &receiving_timeout, + sizeof(receiving_timeout)) < 0) { + ESP_LOGE(TAG, "... failed to set socket receiving timeout"); + close(s); + vTaskDelay(4000 / portTICK_PERIOD_MS); + continue; + } + ESP_LOGV(TAG, "... set socket receiving timeout success"); + + /* Read HTTP response */ + do { + bzero(recv_buf, sizeof(recv_buf)); + r = read(s, recv_buf, sizeof(recv_buf)-1); +#if 0 + for(int i = 0; i < r; i++) { + putchar(recv_buf[i]); + } +#endif + } while(r > 0); + + if (r) + ESP_LOGE(TAG, "HTTP req: return=%d errno=%d.", r, errno); + else + ESP_LOGI(TAG, "HTTP req fetched successful"); + + close(s); + + vTaskDelay(CONFIG_HTTP_REQ_DELAY * 1000 / portTICK_PERIOD_MS); + } +} + +void slave_http_req_example(void) +{ + xTaskCreate(&http_get_task, "http_get_task", 4096, NULL, 5, NULL); +} +#endif diff --git a/slave/main/idf_component.yml b/slave/main/idf_component.yml new file mode 100644 index 00000000..fa9a6e59 --- /dev/null +++ b/slave/main/idf_component.yml @@ -0,0 +1,9 @@ +dependencies: + cmd_system: + path: ${IDF_PATH}/examples/system/console/advanced/components/cmd_system + espressif/iperf-cmd: + version: "~0.1.1" + esp-qa/wifi-cmd: + version: "~0.1.0" + esp-qa/ping-cmd: + version: "~0.0.1" diff --git a/slave/main/interface.h b/slave/main/interface.h index 09711247..f4e82605 100644 --- a/slave/main/interface.h +++ b/slave/main/interface.h @@ -52,9 +52,8 @@ typedef enum { typedef enum { DEINIT, - INIT, - ACTIVE, DEACTIVE, + ACTIVE, } INTERFACE_STATE; typedef struct { @@ -74,7 +73,7 @@ typedef struct { uint8_t flag; uint16_t payload_len; uint16_t seq_num; -#if CONFIG_ESP_SPI_HD_HOST_INTERFACE || CONFIG_ESP_UART_HOST_INTERFACE +#if CONFIG_ESP_SPI_HD_HOST_INTERFACE || CONFIG_ESP_UART_HOST_INTERFACE || CONFIG_ESP_SPI_HOST_INTERFACE uint8_t wifi_flow_ctrl_en; #endif @@ -129,6 +128,7 @@ interface_context_t * interface_insert_driver(int (*callback)(uint8_t val)); int interface_remove_driver(); void generate_startup_event(uint8_t cap, uint32_t ext_cap); int send_to_host_queue(interface_buffer_handle_t *buf_handle, uint8_t queue_type); +void send_dhcp_dns_info_to_host(uint8_t network_up, uint8_t send_wifi_connected); #ifndef min #define min(a, b) ((a) < (b) ? (a) : (b)) diff --git a/slave/main/lwip_filter.c b/slave/main/lwip_filter.c new file mode 100644 index 00000000..50cc5a61 --- /dev/null +++ b/slave/main/lwip_filter.c @@ -0,0 +1,527 @@ +/* + * SPDX-FileCopyrightText: 2021-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +/* LWIP packet filtering implementation */ + +#include +#include +#include + +#include "esp_log.h" +#include "esp_timer.h" +#include "host_power_save.h" +#include "lwip_filter.h" + +#if defined(CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED) && defined(CONFIG_LWIP_ENABLE) +#include "lwip/opt.h" +#include "lwip/err.h" +#include "lwip/sys.h" +#include "lwip/etharp.h" +#include "lwip/prot/iana.h" +#include "lwip/prot/ip.h" +#include "lwip/prot/tcp.h" +#include "lwip/prot/udp.h" +#include "lwip/prot/icmp.h" +#include "lwip/tcp.h" +#include "lwip/udp.h" +#include "lwip/priv/tcp_priv.h" + + + +static const char *TAG = "lwip_filter"; + +#define MQTT_PORT 1883 +#define WAKEUP_HOST_STRING "wakeup-host" +#define DEFAULT_IPERF_PORT 5001 + +/* Use LWIP's port range macros instead of redefining */ +/* #define IS_REMOTE_TCP_PORT(port) ((port) != MQTT_PORT) */ +/* #define IS_REMOTE_UDP_PORT(port) (1) */ + +/* TODO: This should be done using the filter functions */ +#define DHCP_LWIP_BRIDGE BOTH_LWIP_BRIDGE + +#if defined(CONFIG_ESP_DEFAULT_LWIP_SLAVE) + #define DEFAULT_LWIP_TO_SEND SLAVE_LWIP_BRIDGE +#elif defined(CONFIG_ESP_DEFAULT_LWIP_HOST) + #define DEFAULT_LWIP_TO_SEND HOST_LWIP_BRIDGE +#elif defined(CONFIG_ESP_DEFAULT_LWIP_BOTH) + #define DEFAULT_LWIP_TO_SEND BOTH_LWIP_BRIDGE +#else + #error "Select one of the LWIP to forward" +#endif + +/* Cache for TCP port checks */ +static struct { + uint64_t last_check_time; + int last_result; + uint16_t last_port; +} tcp_cache = {0}; + +/* Cache for UDP port checks */ +static struct { + uint64_t last_check_time; + int last_result; + uint16_t last_port; +} udp_cache = {0}; + +#define MAX_ALLOWED_TCP_SRC_PORTS 10 +#define MAX_ALLOWED_UDP_SRC_PORTS 10 +#define MAX_ALLOWED_TCP_DST_PORTS 10 +#define MAX_ALLOWED_UDP_DST_PORTS 10 + +/* In the file-scope variables section */ +static uint16_t allowed_tcp_src_ports[MAX_ALLOWED_TCP_SRC_PORTS] = {0}; +static uint16_t allowed_udp_src_ports[MAX_ALLOWED_UDP_SRC_PORTS] = {0}; +static uint16_t allowed_tcp_dst_ports[MAX_ALLOWED_TCP_DST_PORTS] = {0}; +static uint16_t allowed_udp_dst_ports[MAX_ALLOWED_UDP_DST_PORTS] = {0}; +static int allowed_tcp_src_ports_count = 0; +static int allowed_udp_src_ports_count = 0; +static int allowed_tcp_dst_ports_count = 0; +static int allowed_udp_dst_ports_count = 0; + +/* Parse a comma-separated list of ports into an array */ +static int init_allowed_ports(const char *ports_str, int *ports_count, uint16_t *ports_array, int max_ports, const char *port_type) { + /* Only initialize once */ + static bool tcp_src_initialized = false; + static bool tcp_dst_initialized = false; + static bool udp_src_initialized = false; + static bool udp_dst_initialized = false; + + /* Check if already initialized for this port type */ + if ((strcmp(port_type, "tcp_src") == 0 && tcp_src_initialized) || + (strcmp(port_type, "tcp_dst") == 0 && tcp_dst_initialized) || + (strcmp(port_type, "udp_src") == 0 && udp_src_initialized) || + (strcmp(port_type, "udp_dst") == 0 && udp_dst_initialized)) { + return 0; + } + + /* Reset counter */ + *ports_count = 0; + + /* If no ports string provided, return */ + if (!ports_str || !ports_str[0]) { + ESP_LOGI(TAG, "No %s ports configured", port_type); + return 0; + } + + char port_buf[6]; /* Max 5 digits for a port + null terminator */ + int port_buf_idx = 0; + + for (int i = 0; ports_str[i] != '\0' && *ports_count < max_ports; i++) { + if (isdigit((unsigned char)ports_str[i])) { /* Fix: cast to unsigned char */ + port_buf[port_buf_idx++] = ports_str[i]; + if (port_buf_idx >= sizeof(port_buf) - 1) { + port_buf_idx = sizeof(port_buf) - 2; /* Prevent overflow */ + } + } else if (ports_str[i] == ',') { + if (port_buf_idx > 0) { + port_buf[port_buf_idx] = '\0'; + ports_array[(*ports_count)++] = atoi(port_buf); + port_buf_idx = 0; + } + } + } + + /* Process the last port if there's no trailing comma */ + if (port_buf_idx > 0) { + port_buf[port_buf_idx] = '\0'; + ports_array[(*ports_count)++] = atoi(port_buf); + } + + /* Log the results */ + ESP_LOGI(TAG, "Initialized %d allowed %s ports:", *ports_count, port_type); + for (int i = 0; i < *ports_count; i++) { + ESP_LOGI(TAG, " - Port %d", ports_array[i]); + } + + /* Mark as initialized */ + if (strcmp(port_type, "tcp_src") == 0) { + tcp_src_initialized = true; + } else if (strcmp(port_type, "tcp_dst") == 0) { + tcp_dst_initialized = true; + } else if (strcmp(port_type, "udp_src") == 0) { + udp_src_initialized = true; + } else if (strcmp(port_type, "udp_dst") == 0) { + udp_dst_initialized = true; + } + + return 0; +} + + +static int init_allowed_tcp_ports(const char *ports_str_src, const char *ports_str_dst) { + int ret1 = 0, ret2 = 0; + + if (ports_str_src && strlen(ports_str_src) > 0) { + ESP_LOGI(TAG, "Host reserved TCP src ports: %s", ports_str_src); + ret1 = init_allowed_ports(ports_str_src, &allowed_tcp_src_ports_count, + allowed_tcp_src_ports, MAX_ALLOWED_TCP_SRC_PORTS, "tcp_src"); + } + + if (ports_str_dst && strlen(ports_str_dst) > 0) { + ESP_LOGI(TAG, "Host reserved TCP dst ports: %s", ports_str_dst); + ret2 = init_allowed_ports(ports_str_dst, &allowed_tcp_dst_ports_count, + allowed_tcp_dst_ports, MAX_ALLOWED_TCP_DST_PORTS, "tcp_dst"); + } + + if (ret1) { + ESP_LOGE(TAG, "Failed to initialize allowed TCP src ports"); + return ret1; + } + if (ret2) { + ESP_LOGE(TAG, "Failed to initialize allowed TCP dst ports"); + return ret2; + } + return 0; +} + +static int init_allowed_udp_ports(const char *ports_str_src, const char *ports_str_dst) { + int ret1=0, ret2=0; + if (ports_str_src && strlen(ports_str_src) > 0) { + ESP_LOGI(TAG, "host reserved udp src ports: %s", ports_str_src); + ret1 = init_allowed_ports(ports_str_src, &allowed_udp_src_ports_count, allowed_udp_src_ports, MAX_ALLOWED_UDP_SRC_PORTS, "udp_src"); + } + if (ports_str_dst && strlen(ports_str_dst) > 0) { + ESP_LOGI(TAG, "host reserved udp dst ports: %s", ports_str_dst); + ret2 = init_allowed_ports(ports_str_dst, &allowed_udp_dst_ports_count, allowed_udp_dst_ports, MAX_ALLOWED_UDP_DST_PORTS, "udp_dst"); + } + + if (ret1) { + ESP_LOGE(TAG, "Failed to initialize allowed udp src ports"); + return ret1; + } + if (ret2) { + ESP_LOGE(TAG, "Failed to initialize allowed udp dst ports"); + return ret2; + } + return 0; +} + +static int punch_hole_for_host_ports_from_config(const char *ports_str_tcp_src, + const char *ports_str_tcp_dst, + const char *ports_str_udp_src, + const char *ports_str_udp_dst) { + int ret1 = 0, ret2 = 0; + + ESP_LOGI(TAG, "Host reserved TCP src ports: %s", + ports_str_tcp_src && strlen(ports_str_tcp_src) > 0 ? ports_str_tcp_src : "none"); + ESP_LOGI(TAG, "Host reserved TCP dst ports: %s", + ports_str_tcp_dst && strlen(ports_str_tcp_dst) > 0 ? ports_str_tcp_dst : "none"); + ret1 = init_allowed_tcp_ports(ports_str_tcp_src, ports_str_tcp_dst); + + ESP_LOGI(TAG, "Host reserved UDP src ports: %s", + ports_str_udp_src && strlen(ports_str_udp_src) > 0 ? ports_str_udp_src : "none"); + ESP_LOGI(TAG, "Host reserved UDP dst ports: %s", + ports_str_udp_dst && strlen(ports_str_udp_dst) > 0 ? ports_str_udp_dst : "none"); + ret2 = init_allowed_udp_ports(ports_str_udp_src, ports_str_udp_dst); + + if (ret1) { + ESP_LOGE(TAG, "Failed to initialize allowed TCP ports"); + return ret1; + } + if (ret2) { + ESP_LOGE(TAG, "Failed to initialize allowed UDP ports"); + return ret2; + } + return 0; +} + +/* Port filtering functions */ +static inline bool is_tcp_src_port_allowed(uint16_t port) { + for (int i = 0; i < allowed_tcp_src_ports_count; i++) { + if (port == allowed_tcp_src_ports[i]) { + return true; + } + } + return false; +} + +static inline bool is_tcp_dst_port_allowed(uint16_t port) { + for (int i = 0; i < allowed_tcp_dst_ports_count; i++) { + if (port == allowed_tcp_dst_ports[i]) { + return true; + } + } + return false; +} + +static inline bool is_udp_src_port_allowed(uint16_t port) { + for (int i = 0; i < allowed_udp_src_ports_count; i++) { + if (port == allowed_udp_src_ports[i]) { + return true; + } + } + return false; +} + +static inline bool is_udp_dst_port_allowed(uint16_t port) { + for (int i = 0; i < allowed_udp_dst_ports_count; i++) { + if (port == allowed_udp_dst_ports[i]) { + return true; + } + } + return false; +} + +static bool host_mqtt_wakeup_triggered(const void *payload, uint16_t payload_length) +{ + /* Check if payload contains "wakeup-host" string */ + if (payload_length >= strlen(WAKEUP_HOST_STRING) && + memcmp(payload, WAKEUP_HOST_STRING, strlen(WAKEUP_HOST_STRING)) == 0) { + return true; + } + return false; +} + +static int is_local_tcp_port_open(uint16_t port) +{ + uint64_t current_time = esp_timer_get_time() >> 10; /* Approx ms */ + + /* Return cached result if within 1 sec window */ + if (tcp_cache.last_port == port && + (current_time - tcp_cache.last_check_time) < 1000) { + tcp_cache.last_check_time = current_time; + return tcp_cache.last_result; + } + + /* Use LWIP protection for thread safety */ + SYS_ARCH_DECL_PROTECT(old_level); + SYS_ARCH_PROTECT(old_level); + + int found = 0; + struct tcp_pcb *pcb; + for(pcb = tcp_listen_pcbs.pcbs; pcb != NULL; pcb = pcb->next) { + if (pcb->local_port == port) { + found = 1; + break; + } + } + + SYS_ARCH_UNPROTECT(old_level); + + /* Cache the result */ + tcp_cache.last_check_time = current_time; + tcp_cache.last_result = found; + tcp_cache.last_port = port; + + ESP_LOGI(TAG, "is_local_tcp_port (%u) open: %d", port, found); + return found; +} + +static int is_local_udp_port_open(uint16_t port) +{ + uint64_t current_time = esp_timer_get_time() >> 10; /* Approx ms */ + + /* Return cached result if within 1 sec window */ + if (udp_cache.last_port == port && + (current_time - udp_cache.last_check_time) < 1000) { + udp_cache.last_check_time = current_time; + return udp_cache.last_result; + } + + /* Use LWIP protection for thread safety */ + SYS_ARCH_DECL_PROTECT(old_level); + SYS_ARCH_PROTECT(old_level); + + int found = 0; + struct udp_pcb *pcb; + for(pcb = udp_pcbs; pcb != NULL; pcb = pcb->next) { + if (pcb->local_port == port) { + found = 1; + break; + } + } + + SYS_ARCH_UNPROTECT(old_level); + + /* Cache the result */ + udp_cache.last_check_time = current_time; + udp_cache.last_result = found; + udp_cache.last_port = port; + + ESP_LOGI(TAG, "is_local_udp_port (%u) open: %d", port, found); + return found; +} + +hosted_l2_bridge filter_and_route_packet(void *frame_data, uint16_t frame_length) +{ + hosted_l2_bridge result = DEFAULT_LWIP_TO_SEND; + + struct eth_hdr *ethhdr = (struct eth_hdr *)frame_data; + struct ip_hdr *iphdr; + u8_t proto; + u16_t dst_port = 0; + u16_t src_port = 0; + + /* Check if the frame is a MAC broadcast */ + if (ethhdr->dest.addr[0] & 0x01) { + result = SLAVE_LWIP_BRIDGE; + return result; + } + + /* Check if the frame contains an IP packet */ + if (lwip_ntohs(ethhdr->type) == ETHTYPE_IP) { + ESP_LOGV(TAG, "new ip packet"); + + /* Get the IP header */ + iphdr = (struct ip_hdr *)((u8_t *)frame_data + SIZEOF_ETH_HDR); + /* Get the protocol from the IP header */ + proto = IPH_PROTO(iphdr); + + if (proto == IP_PROTO_TCP) { + struct tcp_hdr *tcphdr = (struct tcp_hdr *)((u8_t *)iphdr + IPH_HL(iphdr) * 4); + dst_port = lwip_ntohs(tcphdr->dest); + src_port = lwip_ntohs(tcphdr->src); + + ESP_LOGV(TAG, "dst_port: %u, src_port: %u", dst_port, src_port); + + /* Check for allowed ports (SSH, RTSP, etc.) */ + if (is_tcp_src_port_allowed(src_port) || is_tcp_dst_port_allowed(dst_port)) { + ESP_LOGV(TAG, "Priority tcp port traffic detected, forwarding to host"); + result = HOST_LWIP_BRIDGE; + return result; + } + + /* Check for iperf port */ + if (dst_port == DEFAULT_IPERF_PORT) { + ESP_LOGV(TAG, "iperf pkt %u", DEFAULT_IPERF_PORT); + if (is_local_tcp_port_open(dst_port)) { + result = SLAVE_LWIP_BRIDGE; + return result; + } else if (!is_host_power_saving()) { + result = HOST_LWIP_BRIDGE; + return result; + } + } + + if (IS_REMOTE_TCP_PORT(dst_port)) { + if (is_host_power_saving()) { + /* filter host destined mqtt packet says 'wake-up-host' */ + if (src_port == MQTT_PORT) { + #define TCP_HDR_LEN(tcphdr) ((TCPH_FLAGS(tcphdr) >> 12) * 4) + + u16_t tcp_hdr_len = TCP_HDR_LEN(tcphdr); + u16_t mqtt_payload_length = lwip_ntohs(tcphdr->wnd); + u8_t *mqtt_payload = (u8_t *)tcphdr + tcp_hdr_len; + + if (host_mqtt_wakeup_triggered(mqtt_payload, mqtt_payload_length)) { + ESP_LOGV(TAG, "Wakeup host: MQTT wakeup pkt"); + result = HOST_LWIP_BRIDGE; + return result; + } else { + /* drop any other host destined mqtt packet */ + result = INVALID_BRIDGE; + ESP_LOGW(TAG, "mqtt pkt DROPPED dst %u src %u => lwip %u", dst_port, src_port, result); + return result; + } + } else { + ESP_LOGV(TAG, "Wakeup host: TCP pkt"); + result = INVALID_BRIDGE; + ESP_LOGW(TAG, "host pkt dropped in power save (dst %u src %u)", dst_port, src_port); + return result; + } + } else { + /* As host is not sleeping, send packets freely */ + result = HOST_LWIP_BRIDGE; + return result; + } + } else if (IS_LOCAL_TCP_PORT(dst_port)) { + result = SLAVE_LWIP_BRIDGE; + return result; + } + + } else if (proto == IP_PROTO_UDP) { + ESP_LOGV(TAG, "new udp packet"); + struct udp_hdr *udphdr = (struct udp_hdr *)((u8_t *)iphdr + IPH_HL(iphdr) * 4); + dst_port = lwip_ntohs(udphdr->dest); + src_port = lwip_ntohs(udphdr->src); + + ESP_LOGV(TAG, "UDP dst_port: %u, src_port: %u", dst_port, src_port); + + /* Check for allowed ports */ + if (is_udp_src_port_allowed(src_port) || is_udp_dst_port_allowed(dst_port)) { + ESP_LOGV(TAG, "Priority udp port traffic detected, forwarding to host"); + result = HOST_LWIP_BRIDGE; + return result; + } + + /* Check for iperf UDP port */ + if (dst_port == DEFAULT_IPERF_PORT) { + ESP_LOGV(TAG, "Detected iperf UDP packet on port %u", DEFAULT_IPERF_PORT); + if (is_local_udp_port_open(dst_port)) { + result = SLAVE_LWIP_BRIDGE; + return result; + } else if (!is_host_power_saving()) { + result = HOST_LWIP_BRIDGE; + return result; + } + } + + if (dst_port == LWIP_IANA_PORT_DHCP_CLIENT) { + result = DHCP_LWIP_BRIDGE; + return result; + } + + if (IS_REMOTE_UDP_PORT(dst_port)) { + if (is_host_power_saving()) { + ESP_LOGW(TAG, "host pkt dropped in power save (dst %u src %u)", dst_port, src_port); + result = INVALID_BRIDGE; + return result; + } else { + result = HOST_LWIP_BRIDGE; + return result; + } + } else if (IS_LOCAL_UDP_PORT(dst_port)) { + result = SLAVE_LWIP_BRIDGE; + return result; + } + + } else if (proto == IP_PROTO_ICMP) { + ESP_LOGV(TAG, "new icmp packet"); + struct icmp_echo_hdr *icmphdr = (struct icmp_echo_hdr *)((u8_t *)iphdr + IPH_HL(iphdr) * 4); + if (icmphdr->type == ICMP_ECHO) { + /* ping request */ + result = SLAVE_LWIP_BRIDGE; + return result; + } else if (icmphdr->type == ICMP_ER) { + if (is_host_power_saving()) { + result = SLAVE_LWIP_BRIDGE; + return result; + } else { + /* ping response */ + ESP_HEXLOGV("icmp_er", frame_data, frame_length, 64); + result = BOTH_LWIP_BRIDGE; + return result; + } + } + } + + } else if (lwip_ntohs(ethhdr->type) == ETHTYPE_ARP) { + ESP_LOGV(TAG, "new arp packet"); + struct etharp_hdr *arphdr = (struct etharp_hdr *)((u8_t *)frame_data + SIZEOF_ETH_HDR); + + if (arphdr->opcode == lwip_htons(ARP_REQUEST)) { + result = SLAVE_LWIP_BRIDGE; + return result; + } else { + if (is_host_power_saving()) { + result = SLAVE_LWIP_BRIDGE; + return result; + } else { + ESP_HEXLOGV("arp_reply", frame_data, frame_length, 64); + result = BOTH_LWIP_BRIDGE; + return result; + } + } + } + + return result; +} + +int configure_host_static_port_forwarding_rules(const char *ports_str_tcp_src, const char *ports_str_tcp_dst, const char *ports_str_udp_src, const char *ports_str_udp_dst) { + return punch_hole_for_host_ports_from_config(ports_str_tcp_src, ports_str_tcp_dst, ports_str_udp_src, ports_str_udp_dst); +} +#endif diff --git a/slave/main/lwip_filter.h b/slave/main/lwip_filter.h new file mode 100644 index 00000000..7d7fc075 --- /dev/null +++ b/slave/main/lwip_filter.h @@ -0,0 +1,29 @@ +/* + * SPDX-FileCopyrightText: 2021-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +#ifndef __LWIP_FILTER_H__ +#define __LWIP_FILTER_H__ + +#include +#include +#include + +typedef enum { + SLAVE_LWIP_BRIDGE, + HOST_LWIP_BRIDGE, + BOTH_LWIP_BRIDGE, + INVALID_BRIDGE, +} hosted_l2_bridge; + +#if defined(CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED) && defined(CONFIG_LWIP_ENABLE) +#include "esp_hosted_lwip_src_port_hook.h" + +hosted_l2_bridge filter_and_route_packet(void *frame_data, uint16_t frame_length); + +int configure_host_static_port_forwarding_rules(const char *ports_str_tcp_src, const char *ports_str_tcp_dst, + const char *ports_str_udp_src, const char *ports_str_udp_dst); +#endif + +#endif diff --git a/slave/main/mempool.c b/slave/main/mempool.c index 098f2723..5e38bfd8 100644 --- a/slave/main/mempool.c +++ b/slave/main/mempool.c @@ -16,6 +16,7 @@ #include "mempool.h" #include "esp_log.h" +#include "sdkconfig.h" const char *TAG = "HS_MP"; @@ -101,6 +102,7 @@ void hosted_mempool_destroy(struct hosted_mempool *mempool) ESP_LOGI(MEM_TAG, "Destroy mempool %p num_blk[%lu] blk_size:[%lu]", mempool->pool, mempool->num_blocks, mempool->block_size); #endif + os_mempool_unregister(mempool->pool); FREE(mempool->pool); if (!mempool->static_heap) @@ -116,8 +118,10 @@ void * hosted_mempool_alloc(struct hosted_mempool *mempool, void *mem = NULL; #ifdef CONFIG_ESP_CACHE_MALLOC - if (!mempool) + if (!mempool) { + ESP_LOGE(TAG, "mempool %p is NULL", mempool); return NULL; + } #if MYNEWT_VAL(OS_MEMPOOL_CHECK) assert(mempool->heap); @@ -137,16 +141,22 @@ void * hosted_mempool_alloc(struct hosted_mempool *mempool, if (mem && need_memset) memset(mem, 0, nbytes); + if (!mem) { + ESP_LOGE(TAG, "mempool %p alloc failed nbytes[%u]", mempool, nbytes); + } return mem; } int hosted_mempool_free(struct hosted_mempool *mempool, void *mem) { - if (!mem) + if (!mem) { return 0; + } #ifdef CONFIG_ESP_CACHE_MALLOC - if (!mempool) + if (!mempool) { + ESP_LOGE(TAG, "%s: mempool %p is NULL", __func__, mempool); return MEMPOOL_FAIL; + } #if MYNEWT_VAL(OS_MEMPOOL_CHECK) assert(mempool->heap); diff --git a/slave/main/mempool_ll.c b/slave/main/mempool_ll.c index fbb15ff9..d60286b7 100644 --- a/slave/main/mempool_ll.c +++ b/slave/main/mempool_ll.c @@ -191,6 +191,12 @@ os_mempool_ext_clear(struct os_mempool_ext *mpe) return os_mempool_clear(&mpe->mpe_mp); } +void +os_mempool_unregister(struct os_mempool *mp) +{ + STAILQ_REMOVE(&g_os_hosted_mempool_list, mp, os_mempool, mp_list); +} + bool os_mempool_is_sane(const struct os_mempool *mp) { diff --git a/slave/main/mempool_ll.h b/slave/main/mempool_ll.h index 739923f2..8fbf08bd 100644 --- a/slave/main/mempool_ll.h +++ b/slave/main/mempool_ll.h @@ -268,16 +268,25 @@ os_error_t os_mempool_ext_init(struct os_mempool_ext *mpe, uint16_t blocks, uint32_t block_size, void *membuf, const char *name); /** - * Clears a memory pool. + * Clear a memory pool. * - * @param mp The mempool to clear. + * @param mp The mempool to clear. * - * @return os_error_t + * @return 0 on success, error code on failure. */ os_error_t os_mempool_clear(struct os_mempool *mp); /** - * Clears an extended memory pool. + * Unregister a memory pool. + * + * @param mp The mempool to unregister. + * + * @return 0 on success, error code on failure. + */ +void os_mempool_unregister(struct os_mempool *mp); + +/** + * Clear an extended memory pool. * * @param mpe The extended memory pool to clear. * diff --git a/slave/main/mqtt_example.c b/slave/main/mqtt_example.c new file mode 100644 index 00000000..accb4420 --- /dev/null +++ b/slave/main/mqtt_example.c @@ -0,0 +1,279 @@ +/* + * SPDX-FileCopyrightText: 2021-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +/* MQTT (over TCP) Example + + This example code is in the Public Domain (or CC0 licensed, at your option.) + + Unless required by applicable law or agreed to in writing, this + software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + CONDITIONS OF ANY KIND, either express or implied. +*/ + +#include +#include +#include +#include +#include "sdkconfig.h" + +#ifdef CONFIG_ESP_HOSTED_COPROCESSOR_EXAMPLE_MQTT + +#include "esp_wifi.h" +#include "esp_system.h" +#include "nvs_flash.h" +#include "esp_event.h" +#include "esp_netif.h" +//#include "protocol_examples_common.h" + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "freertos/semphr.h" +#include "freertos/queue.h" + + +#include "esp_log.h" +#include "mqtt_client.h" +#include "host_power_save.h" + +#include "lwip/sockets.h" +#include "lwip/dns.h" +#include "lwip/netdb.h" + +static const char *TAG = "mqtt_example"; +static esp_mqtt_client_handle_t client; +static uint8_t client_started; + +#define WAKEUP_HOST_STRING "wakeup-host" + +static void log_error_if_nonzero(const char *message, int error_code) +{ + if (error_code != 0) { + ESP_LOGE(TAG, "Last error %s: 0x%x", message, error_code); + } +} + +static bool host_mqtt_wakeup_triggered(const void *payload, uint16_t payload_length) +{ + /* Check if payload contains "wakeup-host" string */ + if (payload_length >= strlen(WAKEUP_HOST_STRING) && + memcmp(payload, WAKEUP_HOST_STRING, strlen(WAKEUP_HOST_STRING)) == 0) { + return true; + } + return false; +} + +/* + * @brief Event handler registered to receive MQTT events + * + * This function is called by the MQTT client event loop. + * + * @param handler_args user data registered to the event. + * @param base Event base for the handler(always MQTT Base in this example). + * @param event_id The id for the received event. + * @param event_data The data for the event, esp_mqtt_event_handle_t. + */ +static void mqtt_event_handler(void *handler_args, esp_event_base_t base, int32_t event_id, void *event_data) +{ + ESP_LOGD(TAG, "Event dispatched from event loop base=%s, event_id=%" PRIi32 "", base, event_id); + esp_mqtt_event_handle_t event = event_data; + esp_mqtt_client_handle_t client = event->client; + int msg_id; + switch ((esp_mqtt_event_id_t)event_id) { + case MQTT_EVENT_CONNECTED: + ESP_LOGI(TAG, "MQTT_EVENT_CONNECTED"); + msg_id = esp_mqtt_client_publish(client, "/topic/qos1", "data_3", 0, 1, 0); + ESP_LOGI(TAG, "sent publish successful, msg_id=%d", msg_id); + + msg_id = esp_mqtt_client_subscribe(client, "/topic/qos0", 0); + ESP_LOGI(TAG, "sent subscribe successful, msg_id=%d", msg_id); + + msg_id = esp_mqtt_client_subscribe(client, "/topic/qos1", 1); + ESP_LOGI(TAG, "sent subscribe successful, msg_id=%d", msg_id); + + msg_id = esp_mqtt_client_unsubscribe(client, "/topic/qos1"); + ESP_LOGI(TAG, "sent unsubscribe successful, msg_id=%d", msg_id); + break; + case MQTT_EVENT_DISCONNECTED: + ESP_LOGI(TAG, "MQTT_EVENT_DISCONNECTED"); + break; + + case MQTT_EVENT_SUBSCRIBED: + ESP_LOGI(TAG, "MQTT_EVENT_SUBSCRIBED, msg_id=%d", event->msg_id); + msg_id = esp_mqtt_client_publish(client, "/topic/qos0", "data", 0, 0, 0); + ESP_LOGI(TAG, "sent publish successful, msg_id=%d", msg_id); + break; + case MQTT_EVENT_UNSUBSCRIBED: + ESP_LOGI(TAG, "MQTT_EVENT_UNSUBSCRIBED, msg_id=%d", event->msg_id); + break; + case MQTT_EVENT_PUBLISHED: + ESP_LOGI(TAG, "MQTT_EVENT_PUBLISHED, msg_id=%d", event->msg_id); + break; + case MQTT_EVENT_DATA: + ESP_LOGI(TAG, "MQTT_EVENT_DATA"); + printf("TOPIC=%.*s\r\n", event->topic_len, event->topic); + printf("DATA=%.*s\r\n", event->data_len, event->data); + + if (host_mqtt_wakeup_triggered(event->data, event->data_len)) { + wakeup_host(portMAX_DELAY); + } + break; + case MQTT_EVENT_ERROR: + ESP_LOGI(TAG, "MQTT_EVENT_ERROR"); + if (event->error_handle->error_type == MQTT_ERROR_TYPE_TCP_TRANSPORT) { + log_error_if_nonzero("reported from esp-tls", event->error_handle->esp_tls_last_esp_err); + log_error_if_nonzero("reported from tls stack", event->error_handle->esp_tls_stack_err); + log_error_if_nonzero("captured as transport's socket errno", event->error_handle->esp_transport_sock_errno); + ESP_LOGI(TAG, "Last errno string (%s)", strerror(event->error_handle->esp_transport_sock_errno)); + + } + break; + default: + ESP_LOGI(TAG, "Other event id:%d", event->event_id); + break; + } +} + +#if 0 +static int check_ip_reachability(const char *ip, int port) +{ + int sock; + struct sockaddr_in server; + + // Create socket + sock = socket(AF_INET, SOCK_STREAM, 0); + if (sock == -1) { + printf("Could not create socket\n"); + return ESP_FAIL; + } + + // Configure the server address + server.sin_addr.s_addr = inet_addr(ip); + server.sin_family = AF_INET; + server.sin_port = htons(port); + + // Set a timeout for the connection attempt + struct timeval timeout; + timeout.tv_sec = 5; // 5 seconds timeout + timeout.tv_usec = 0; + setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (char*)&timeout, sizeof(timeout)); + + // Try to connect to the server + if (connect(sock, (struct sockaddr *)&server, sizeof(server)) < 0) { + printf("Connection to %s on port %d failed\n", ip, port); + close(sock); + return ESP_FAIL; + } + + printf("Successfully connected to %s on port %d\n", ip, port); + close(sock); + return ESP_OK; +} +#endif + +static esp_mqtt_client_handle_t example_mqtt_init_internal(void) +{ + esp_mqtt_client_config_t mqtt_cfg = { + .broker.address.uri = CONFIG_BROKER_URL, + }; +#if CONFIG_BROKER_URL_FROM_STDIN + char line[128]; + + if (strcmp(mqtt_cfg.broker.address.uri, "FROM_STDIN") == 0) { + int count = 0; + printf("Please enter url of mqtt broker\n"); + while (count < 128) { + int c = fgetc(stdin); + if (c == '\n') { + line[count] = '\0'; + break; + } else if (c > 0 && c < 127) { + line[count] = c; + ++count; + } + vTaskDelay(10 / portTICK_PERIOD_MS); + } + mqtt_cfg.broker.address.uri = line; + printf("Broker url: %s\n", line); + } else { + ESP_LOGE(TAG, "Configuration mismatch: wrong broker url"); + abort(); + } +#endif /* CONFIG_BROKER_URL_FROM_STDIN */ + + client = esp_mqtt_client_init(&mqtt_cfg); + /* The last argument may be used to pass data to the event handler, in this example mqtt_event_handler */ + esp_mqtt_client_register_event(client, ESP_EVENT_ANY_ID, mqtt_event_handler, NULL); + + return client; +} + +esp_err_t example_mqtt_init(void) +{ +#if 0 + esp_err_t err; + err = check_ip_reachability("8.8.8.8", 53); + if (err) { + ESP_LOGI(TAG, "Failed to start the mqtt"); + return NULL; + } +#endif + + ESP_LOGI(TAG, "[APP] Startup.."); + ESP_LOGI(TAG, "[APP] Free memory: %" PRIu32 " bytes", esp_get_free_heap_size()); + ESP_LOGI(TAG, "[APP] IDF version: %s", esp_get_idf_version()); + + esp_log_level_set("*", ESP_LOG_INFO); + esp_log_level_set("mqtt_client", ESP_LOG_VERBOSE); + esp_log_level_set("mqtt_example", ESP_LOG_VERBOSE); + esp_log_level_set("transport_base", ESP_LOG_VERBOSE); + esp_log_level_set("esp-tls", ESP_LOG_VERBOSE); + esp_log_level_set("transport", ESP_LOG_VERBOSE); + esp_log_level_set("outbox", ESP_LOG_VERBOSE); + + example_mqtt_init_internal(); + + if (client) + return ESP_OK; + else + return ESP_FAIL; +} + +esp_err_t example_mqtt_resume(void) +{ + if (!client) { + example_mqtt_init(); + } + + if (client && !client_started) { + client_started = 1; + ESP_LOGV(TAG, "mqtt client started"); + return esp_mqtt_client_start(client); + } + ESP_LOGV(TAG, "%s : client[%p] client_started[%u]", + __func__, client, client_started); + + return ESP_OK; +} + +esp_err_t example_mqtt_pause(void) +{ + if (client && client_started) { + client_started = 0; + ESP_LOGV(TAG, "mqtt client stopped"); + return esp_mqtt_client_stop(client); +#if 0 + if (ESP_OK == esp_mqtt_client_destroy(client)) { + client = NULL; + } +#endif + } + ESP_LOGV(TAG, "%s : client[%p] client_started[%u]", + __func__, client, client_started); + + return ESP_OK; +} + + +#endif diff --git a/slave/main/mqtt_example.h b/slave/main/mqtt_example.h new file mode 100644 index 00000000..354afb39 --- /dev/null +++ b/slave/main/mqtt_example.h @@ -0,0 +1,23 @@ +/* + * SPDX-FileCopyrightText: 2021-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +/* MQTT (over TCP) Example + + This example code is in the Public Domain (or CC0 licensed, at your option.) + + Unless required by applicable law or agreed to in writing, this + software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + CONDITIONS OF ANY KIND, either express or implied. +*/ +#ifndef __MQTT_EXAMPLE_H__ +#define __MQTT_EXAMPLE_H__ + +#ifdef CONFIG_ESP_HOSTED_COPROCESSOR_EXAMPLE_MQTT +esp_err_t example_mqtt_init(void); +esp_err_t example_mqtt_resume(void); +esp_err_t example_mqtt_pause(void); +#endif +#endif + diff --git a/slave/main/protocomm_pserial.c b/slave/main/protocomm_pserial.c index 63f3227c..c7eb00b6 100644 --- a/slave/main/protocomm_pserial.c +++ b/slave/main/protocomm_pserial.c @@ -25,6 +25,7 @@ #include #include "protocomm_pserial.h" #include "esp_hosted_transport.h" +#include "esp_hosted_log.h" static const char TAG[] = "protocomm_pserial"; @@ -92,7 +93,7 @@ static esp_err_t compose_tlv(char *epname, uint8_t **out, size_t *outlen) ep_len + SIZE_OF_TYPE + SIZE_OF_LENGTH + *outlen; uint8_t *buf = (uint8_t *)calloc(1, buf_len); if (buf == NULL) { - ESP_LOGE(TAG,"%s Failed to allocate memory", __func__); + ESP_LOGE(TAG,"%s Mem Alloc Failed [%d]bytes", __func__, (int)buf_len); return ESP_FAIL; } buf[len] = PROTO_PSER_TLV_T_EPNAME; @@ -283,6 +284,7 @@ static void pserial_task(void *params) if ((arg.msg_id > RPC_ID__Event_Base) && (arg.msg_id < RPC_ID__Event_Max)) { /* Events */ + ESP_HEXLOGV("pserial_evt_rx", arg.data, arg.len, 32); ret = rpc_evt_handler(pc, arg.data, arg.len, arg.msg_id); if (ret) ESP_LOGI(TAG, "protobuf rpc event handling failed %d\n", ret); @@ -290,7 +292,7 @@ static void pserial_task(void *params) /* Request */ len = pserial_cfg->recv(arg.data, arg.len); if (len) { - /*ESP_LOG_BUFFER_HEXDUMP("serial_rx", arg.data, len<16?len:16, ESP_LOG_INFO);*/ + ESP_HEXLOGV("pserial_req_rx", arg.data, arg.len, 32); ret = rpc_req_handler(pc, arg.data, len); if (ret) ESP_LOGI(TAG, "protocom rpc req handling failed %d\n", ret); @@ -326,8 +328,11 @@ esp_err_t protocomm_pserial_start(protocomm_t *pc, pc->priv = pserial_cfg; - xTaskCreate(pserial_task, "pserial_task", 1024*5, - (void *) pc, CONFIG_ESP_DEFAULT_TASK_PRIO, NULL); +#define ESP_HOSTED_PROTOBUF_TASK_STACK_SIZE (CONFIG_ESP_HOSTED_DEFAULT_TASK_STACK_SIZE+1024) + + xTaskCreate(pserial_task, "pserial_task", + ESP_HOSTED_PROTOBUF_TASK_STACK_SIZE, + (void *) pc, CONFIG_ESP_HOSTED_DEFAULT_TASK_PRIORITY, NULL); return ESP_OK; } diff --git a/slave/main/sdio_slave_api.c b/slave/main/sdio_slave_api.c index 40ccbe0a..84be96a6 100644 --- a/slave/main/sdio_slave_api.c +++ b/slave/main/sdio_slave_api.c @@ -30,21 +30,22 @@ #include "esp_hosted_header.h" #include "esp_hosted_transport.h" #include "esp_hosted_transport_init.h" +#include "host_power_save.h" //#define SIMPLIFIED_SDIO_SLAVE 1 -#define SDIO_SLAVE_QUEUE_SIZE CONFIG_ESP_SDIO_TX_Q_SIZE -#define NUM_RX_BUFFERS CONFIG_ESP_SDIO_RX_Q_SIZE -#define BUFFER_SIZE MAX_TRANSPORT_BUF_SIZE -static uint8_t sdio_slave_rx_buffer[NUM_RX_BUFFERS][BUFFER_SIZE]; +#define SDIO_DRIVER_TX_QUEUE_SIZE CONFIG_ESP_SDIO_TX_Q_SIZE +#define SDIO_RX_BUFFER_SIZE MAX_TRANSPORT_BUF_SIZE +#define SDIO_NUM_RX_BUFFERS CONFIG_ESP_SDIO_RX_Q_SIZE +static uint8_t sdio_slave_rx_buffer[SDIO_NUM_RX_BUFFERS][SDIO_RX_BUFFER_SIZE]; -#define SDIO_MEMPOOL_NUM_BLOCKS 40 +/* TODO: Need to cross check once in priority queue properly handled */ +#define SDIO_MEMPOOL_NUM_BLOCKS 40 static struct hosted_mempool * buf_mp_tx_g; interface_context_t context; interface_handle_t if_handle_g; -static const char TAG[] = "SDIO_SLAVE"; - -#define SDIO_TX_QUEUE_SIZE CONFIG_ESP_SDIO_TX_Q_SIZE +static const char *TAG = "SDIO_SLAVE"; +static uint8_t hosted_constructs_created = 0; #if !SIMPLIFIED_SDIO_SLAVE static SemaphoreHandle_t sdio_rx_sem; @@ -93,7 +94,7 @@ if_ops_t if_ops = { static inline void sdio_mempool_create(void) { - buf_mp_tx_g = hosted_mempool_create(NULL, 0, SDIO_MEMPOOL_NUM_BLOCKS, BUFFER_SIZE); + buf_mp_tx_g = hosted_mempool_create(NULL, 0, SDIO_MEMPOOL_NUM_BLOCKS, SDIO_RX_BUFFER_SIZE); #ifdef CONFIG_ESP_CACHE_MALLOC assert(buf_mp_tx_g); #endif @@ -107,7 +108,7 @@ static inline void sdio_mempool_destroy(void) static inline void *sdio_buffer_tx_alloc(size_t nbytes, uint need_memset) { /* TODO: When Mempool is not needed, SDIO should use - * exact bytes for allocation instead of BUFFER_SIZE + * exact bytes for allocation instead of SDIO_RX_BUFFER_SIZE * To reduce strain on system memory */ return hosted_mempool_alloc(buf_mp_tx_g, nbytes, need_memset); } @@ -131,14 +132,15 @@ static void start_rx_data_throttling_if_needed(void) queue_load = uxQueueMessagesWaiting(sdio_rx_queue[PRIO_Q_OTHERS]); -#if ESP_PKT_STATS - pkt_stats.slave_wifi_rx_msg_loaded = queue_load; -#endif - load_percent = (queue_load*100/NUM_RX_BUFFERS); + load_percent = (queue_load*100/SDIO_NUM_RX_BUFFERS); if (load_percent > slv_cfg_g.throttle_high_threshold) { slv_state_g.current_throttling = 1; ESP_LOGV(TAG, "start data throttling at host"); +#if ESP_PKT_STATS + pkt_stats.sta_flowctrl_on++; +#endif + sdio_slave_send_host_int(HOST_INT_START_THROTTLE); } } @@ -152,14 +154,14 @@ static void stop_rx_data_throttling_if_needed(void) if (slv_state_g.current_throttling) { queue_load = uxQueueMessagesWaiting(sdio_rx_queue[PRIO_Q_OTHERS]); -#if ESP_PKT_STATS - pkt_stats.slave_wifi_rx_msg_loaded = queue_load; -#endif - load_percent = (queue_load*100/NUM_RX_BUFFERS); + load_percent = (queue_load*100/SDIO_NUM_RX_BUFFERS); if (load_percent < slv_cfg_g.throttle_low_threshold) { slv_state_g.current_throttling = 0; ESP_LOGV(TAG, "stop data throttling at host"); +#if ESP_PKT_STATS + pkt_stats.sta_flowctrl_off++; +#endif sdio_slave_send_host_int(HOST_INT_STOP_THROTTLE); } } @@ -187,13 +189,31 @@ int interface_remove_driver() IRAM_ATTR static void event_cb(uint8_t val) { if (val == ESP_RESET) { + /* Force power save off state when host resets */ + host_power_save_alert(ESP_POWER_SAVE_OFF); sdio_reset(&if_handle_g); return; } + if (val == ESP_OPEN_DATA_PATH) { + /* Also force power save off on data path open */ + host_power_save_alert(ESP_POWER_SAVE_OFF); + sdio_reset(&if_handle_g); + } + + if (val == ESP_POWER_SAVE_OFF) { + //sdio_reset(&if_handle_g); + host_power_save_alert(ESP_POWER_SAVE_OFF); + sdio_reset(&if_handle_g); + } + if (context.event_handler) { context.event_handler(val); } + + if (val == ESP_POWER_SAVE_ON) { + sdio_reset(&if_handle_g); + } } void generate_startup_event(uint8_t cap, uint32_t ext_cap) @@ -219,6 +239,7 @@ void generate_startup_event(uint8_t cap, uint32_t ext_cap) header->if_num = 0; header->offset = htole16(sizeof(struct esp_payload_header)); header->priv_pkt_type = ESP_PACKET_TYPE_EVENT; + UPDATE_HEADER_TX_PKT_NO(header); /* Populate event data */ event = (struct esp_priv_event *) (buf_handle.payload + sizeof(struct esp_payload_header)); @@ -246,11 +267,16 @@ void generate_startup_event(uint8_t cap, uint32_t ext_cap) *pos = ESP_PRIV_TX_Q_SIZE; pos++;len++; *pos = LENGTH_1_BYTE; pos++;len++; - *pos = SDIO_TX_QUEUE_SIZE; pos++;len++; + *pos = SDIO_DRIVER_TX_QUEUE_SIZE; pos++;len++; *pos = ESP_PRIV_RX_Q_SIZE; pos++;len++; *pos = LENGTH_1_BYTE; pos++;len++; - *pos = NUM_RX_BUFFERS; pos++;len++; + +#if !SIMPLIFIED_SDIO_SLAVE + *pos = SDIO_NUM_RX_BUFFERS; pos++;len++; +#else + *pos = 0; pos++;len++; +#endif /* TLVs end */ event->event_len = len; @@ -264,7 +290,7 @@ void generate_startup_event(uint8_t cap, uint32_t ext_cap) header->checksum = htole16(compute_checksum(buf_handle.payload, buf_handle.payload_len)); #endif - ESP_HEXLOGD("sdio_tx_init", buf_handle.payload, buf_handle.payload_len); + ESP_HEXLOGV("bus_tx_init", buf_handle.payload, buf_handle.payload_len, 32); #if !SIMPLIFIED_SDIO_SLAVE xSemaphoreTake(sdio_send_queue_sem, portMAX_DELAY); @@ -286,24 +312,26 @@ void generate_startup_event(uint8_t cap, uint32_t ext_cap) static void sdio_read_done(void *handle) { + ESP_LOGV(TAG, "sdio_read_done, reloading buf"); sdio_slave_recv_load_buf((sdio_slave_buf_handle_t) handle); } static interface_handle_t * sdio_init(void) { -#if !SIMPLIFIED_SDIO_SLAVE - uint16_t prio_q_idx = 0; -#endif + if (if_handle_g.state >= DEACTIVE) { + return &if_handle_g; + } + esp_err_t ret = ESP_OK; sdio_slave_buf_handle_t handle = {0}; sdio_slave_config_t config = { -#if CONFIG_ESP_SDIO_STREAMING_MODE +#if H_ESP_SDIO_STREAMING_MODE .sending_mode = SDIO_SLAVE_SEND_STREAM, #else .sending_mode = SDIO_SLAVE_SEND_PACKET, #endif - .send_queue_size = SDIO_SLAVE_QUEUE_SIZE, - .recv_buffer_size = BUFFER_SIZE, + .send_queue_size = SDIO_DRIVER_TX_QUEUE_SIZE, + .recv_buffer_size = SDIO_RX_BUFFER_SIZE, .event_cb = event_cb, /* Note: For small devkits there may be no pullups on the board. @@ -323,27 +351,27 @@ static interface_handle_t * sdio_init(void) .timing = SDIO_SLAVE_TIMING, }; -#if CONFIG_ESP_SDIO_STREAMING_MODE +#if !SIMPLIFIED_SDIO_SLAVE + #if H_ESP_SDIO_STREAMING_MODE ESP_LOGI(TAG, "%s: sending mode: SDIO_SLAVE_SEND_STREAM", __func__); -#else + #else ESP_LOGI(TAG, "%s: sending mode: SDIO_SLAVE_SEND_PACKET", __func__); + #endif #endif -#if defined(CONFIG_IDF_TARGET_ESP32C6) - ESP_LOGI(TAG, "%s: ESP32-C6 SDIO TxQ[%d] timing[%u]\n", __func__, SDIO_TX_QUEUE_SIZE, config.timing); -#else - ESP_LOGI(TAG, "%s: ESP32 SDIO TxQ[%d] timing[%u]\n", __func__, SDIO_TX_QUEUE_SIZE, config.timing); -#endif + ESP_LOGI(TAG, "%s: ESP32 SDIO DriverTxQ[%d] timing[%u]\n", __func__, SDIO_DRIVER_TX_QUEUE_SIZE, config.timing); #if !SIMPLIFIED_SDIO_SLAVE - sdio_send_queue_sem = xSemaphoreCreateCounting(SDIO_SLAVE_QUEUE_SIZE, SDIO_SLAVE_QUEUE_SIZE); - assert(sdio_send_queue_sem); + if (hosted_constructs_created == 0) { + sdio_send_queue_sem = xSemaphoreCreateCounting(SDIO_DRIVER_TX_QUEUE_SIZE, SDIO_DRIVER_TX_QUEUE_SIZE); + assert(sdio_send_queue_sem); - sdio_rx_sem = xSemaphoreCreateCounting(NUM_RX_BUFFERS * MAX_PRIORITY_QUEUES, 0); - assert(sdio_rx_sem != NULL); + sdio_rx_sem = xSemaphoreCreateCounting(SDIO_NUM_RX_BUFFERS* MAX_PRIORITY_QUEUES, 0); + assert(sdio_rx_sem != NULL); - for (prio_q_idx=0; prio_q_idxif_type = buf_handle->if_type; + header->if_num = buf_handle->if_num; + header->len = htole16(buf_handle->payload_len); + header->offset = htole16(offset); + header->seq_num = htole16(buf_handle->seq_num); + header->flags = buf_handle->flag; + //header->throttle_cmd = buf_handle->flow_ctl_en; + UPDATE_HEADER_TX_PKT_NO(header); + +#if CONFIG_ESP_SDIO_CHECKSUM + header->checksum = htole16(compute_checksum(sendbuf, + offset+buf_handle->payload_len)); +#endif + + return header; +} + +static inline esp_err_t copy_tx_payload(uint8_t *sendbuf, uint8_t* payload, uint16_t len) +{ + memcpy(sendbuf + sizeof(struct esp_payload_header), payload, len); + return ESP_OK; +} + static int32_t sdio_write(interface_handle_t *handle, interface_buffer_handle_t *buf_handle) { - esp_err_t ret = ESP_OK; int32_t total_len = 0; uint8_t* sendbuf = NULL; uint16_t offset = sizeof(struct esp_payload_header); - struct esp_payload_header *header = NULL; + int ret = 0; if (!handle || !buf_handle) { ESP_LOGE(TAG , "Invalid arguments"); return ESP_FAIL; } - if (handle->state != ACTIVE) { + if (handle->state < ACTIVE) { + ESP_LOGI(TAG, "Driver state not active, drop"); return ESP_FAIL; } - if (!buf_handle->payload_len || !buf_handle->payload) { - ESP_LOGE(TAG , "Invalid arguments, len:%d", buf_handle->payload_len); + if (is_host_power_saving()) { + ESP_LOGI(TAG, "Host sleeping, drop"); + return ESP_FAIL; + } + + if (!buf_handle->payload_len && !buf_handle->payload && !buf_handle->flag) { + ESP_LOGW(TAG , "Invalid arguments, len:%d, payload:%p, flag:%d, drop", buf_handle->payload_len, buf_handle->payload, buf_handle->flag); return ESP_FAIL; } @@ -444,39 +523,29 @@ static int32_t sdio_write(interface_handle_t *handle, interface_buffer_handle_t sendbuf = sdio_buffer_tx_alloc(total_len, MEMSET_REQUIRED); if (sendbuf == NULL) { - ESP_LOGE(TAG , "send buffer[%"PRIu32"] malloc fail", total_len); + ESP_LOGE(TAG, "send buffer[%"PRIu32"] malloc fail", total_len); return ESP_FAIL; } - header = (struct esp_payload_header *) sendbuf; + copy_tx_payload(sendbuf, buf_handle->payload, buf_handle->payload_len); + update_tx_header(sendbuf, buf_handle); - memset (header, 0, sizeof(struct esp_payload_header)); - - /* Initialize header */ - header->if_type = buf_handle->if_type; - header->if_num = buf_handle->if_num; - header->len = htole16(buf_handle->payload_len); - header->offset = htole16(offset); - header->seq_num = htole16(buf_handle->seq_num); - header->flags = buf_handle->flag; - - memcpy(sendbuf + offset, buf_handle->payload, buf_handle->payload_len); - -#if CONFIG_ESP_SDIO_CHECKSUM - header->checksum = htole16(compute_checksum(sendbuf, - offset+buf_handle->payload_len)); -#endif - - ESP_HEXLOGD("sdio_tx", sendbuf, min(32,total_len)); + ESP_HEXLOGV("bus_tx", sendbuf, total_len, 32); #if !SIMPLIFIED_SDIO_SLAVE - xSemaphoreTake(sdio_send_queue_sem, portMAX_DELAY); + if (xSemaphoreTake(sdio_send_queue_sem, portMAX_DELAY) != pdTRUE) { + sdio_buffer_tx_free(sendbuf); + return ESP_FAIL; + } ret = sdio_slave_send_queue(sendbuf, total_len, sendbuf, portMAX_DELAY); #else ret = sdio_slave_transmit(sendbuf, total_len); #endif if (ret != ESP_OK) { ESP_LOGE(TAG , "sdio slave transmit error, ret : 0x%x\r\n", ret); +#if !SIMPLIFIED_SDIO_SLAVE + xSemaphoreGive(sdio_send_queue_sem); +#endif sdio_buffer_tx_free(sendbuf); return ESP_FAIL; } @@ -486,30 +555,32 @@ static int32_t sdio_write(interface_handle_t *handle, interface_buffer_handle_t #endif #if ESP_PKT_STATS - if (header->if_type == ESP_STA_IF) + if (buf_handle->if_type == ESP_STA_IF) pkt_stats.sta_sh_out++; - else if (header->if_type == ESP_SERIAL_IF) + else if (buf_handle->if_type == ESP_SERIAL_IF) pkt_stats.serial_tx_total++; #endif + return buf_handle->payload_len; } #if !SIMPLIFIED_SDIO_SLAVE static int sdio_read(interface_handle_t *if_handle, interface_buffer_handle_t *buf_handle) { - if (!if_handle || (if_handle->state != ACTIVE) || !buf_handle) { + if (!if_handle || (if_handle->state < DEACTIVE) || !buf_handle) { ESP_LOGE(TAG, "%s: Invalid state/args", __func__); return ESP_FAIL; } + xSemaphoreTake(sdio_rx_sem, portMAX_DELAY); if (pdFALSE == xQueueReceive(sdio_rx_queue[PRIO_Q_SERIAL], buf_handle, 0)) if (pdFALSE == xQueueReceive(sdio_rx_queue[PRIO_Q_BT], buf_handle, 0)) if (pdFALSE == xQueueReceive(sdio_rx_queue[PRIO_Q_OTHERS], buf_handle, 0)) { ESP_LOGE(TAG, "%s No element in rx queue", __func__); - return ESP_FAIL; - } + return ESP_FAIL; + } stop_rx_data_throttling_if_needed(); @@ -520,25 +591,53 @@ static void sdio_rx_task(void* pvParameters) { esp_err_t ret = ESP_OK; struct esp_payload_header *header = NULL; -#if CONFIG_ESP_SDIO_CHECKSUM + #if CONFIG_ESP_SDIO_CHECKSUM uint16_t rx_checksum = 0, checksum = 0; -#endif + #endif uint16_t len = 0, offset = 0; size_t sdio_read_len = 0; interface_buffer_handle_t buf_handle = {0}; + uint8_t flags = 0; + uint32_t recv_timeout = portMAX_DELAY; for(;;) { + /* Check if SDIO is deinitialized */ + if (if_handle_g.state < DEACTIVE) { + ESP_LOGV(TAG, "SDIO is deinitialized, cannot read"); + vTaskDelay(pdMS_TO_TICKS(100)); + continue; + } + +#if H_PS_UNLOAD_BUS_WHILE_PS + recv_timeout = pdMS_TO_TICKS(10); +#endif ret = sdio_slave_recv(&(buf_handle.sdio_buf_handle), &(buf_handle.payload), - &(sdio_read_len), portMAX_DELAY); + &(sdio_read_len), recv_timeout); if (ret) { - ESP_LOGE(TAG, "sdio_slave_recv returned failure"); + /* Not an error if timed out, just return and let caller try again */ + if (ret == ESP_ERR_TIMEOUT) { + continue; + } + ESP_LOGE(TAG, "sdio_slave_recv failed. ret [0x%x]", ret); continue; } buf_handle.payload_len = sdio_read_len & 0xFFFF; header = (struct esp_payload_header *) buf_handle.payload; + UPDATE_HEADER_RX_PKT_NO(header); + + flags = header->flags; + if (flags & FLAG_POWER_SAVE_STARTED) { + if (context.event_handler) { + context.event_handler(ESP_POWER_SAVE_ON); + } + } else if (flags & FLAG_POWER_SAVE_STOPPED) { + if (context.event_handler) { + context.event_handler(ESP_POWER_SAVE_OFF); + } + } len = le16toh(header->len); if (!len) { @@ -556,7 +655,7 @@ static void sdio_rx_task(void* pvParameters) continue; } -#if CONFIG_ESP_SDIO_CHECKSUM + #if CONFIG_ESP_SDIO_CHECKSUM rx_checksum = le16toh(header->checksum); header->checksum = 0; @@ -567,18 +666,19 @@ static void sdio_rx_task(void* pvParameters) sdio_read_done(buf_handle.sdio_buf_handle); continue; } -#endif + #endif buf_handle.if_type = header->if_type; buf_handle.if_num = header->if_num; buf_handle.free_buf_handle = sdio_read_done; + #if ESP_PKT_STATS + if (header->if_type == ESP_STA_IF) + pkt_stats.hs_bus_sta_in++; + #endif start_rx_data_throttling_if_needed(); -#if ESP_PKT_STATS - if (header->if_type == ESP_STA_IF) - pkt_stats.hs_bus_sta_in++; -#endif + if (header->if_type == ESP_SERIAL_IF) { xQueueSend(sdio_rx_queue[PRIO_Q_SERIAL], &buf_handle, portMAX_DELAY); } else if (header->if_type == ESP_HCI_IF) { @@ -595,24 +695,32 @@ static int sdio_read(interface_handle_t *if_handle, interface_buffer_handle_t *b { esp_err_t ret = ESP_OK; struct esp_payload_header *header = NULL; -#if CONFIG_ESP_SDIO_CHECKSUM + #if CONFIG_ESP_SDIO_CHECKSUM uint16_t rx_checksum = 0, checksum = 0; -#endif + #endif uint16_t len = 0; size_t sdio_read_len = 0; - + uint32_t recv_timeout = portMAX_DELAY; if (!if_handle || !buf_handle) { ESP_LOGE(TAG, "Invalid arguments to sdio_read"); return ESP_FAIL; } - if (if_handle->state != ACTIVE) + if (if_handle->state < DEACTIVE) return ESP_FAIL; +#if H_PS_UNLOAD_BUS_WHILE_PS + recv_timeout = pdMS_TO_TICKS(10); +#endif + /* Use a timeout instead of indefinite blocking to allow processing reset events */ ret = sdio_slave_recv(&(buf_handle->sdio_buf_handle), &(buf_handle->payload), - &(sdio_read_len), portMAX_DELAY); + &(sdio_read_len), recv_timeout); if (ret) { + /* Not an error if timed out, just return and let caller try again */ + if (ret == ESP_ERR_TIMEOUT) { + return 0; + } ESP_LOGD(TAG, "sdio_slave_recv returned failure"); return ESP_FAIL; } @@ -620,10 +728,22 @@ static int sdio_read(interface_handle_t *if_handle, interface_buffer_handle_t *b buf_handle->payload_len = sdio_read_len & 0xFFFF; header = (struct esp_payload_header *) buf_handle->payload; + UPDATE_HEADER_RX_PKT_NO(header); + +#if 0 + if (header->flags & FLAG_POWER_SAVE_STARTED) { + ESP_LOGI(TAG, "Host informed starting to power sleep"); + event_cb(ESP_POWER_SAVE_ON); + } + if (header->flags & FLAG_POWER_SAVE_STOPPED) { + ESP_LOGI(TAG, "Host informed that it waken up"); + event_cb(ESP_OPEN_DATA_PATH); + } +#endif len = le16toh(header->len) + le16toh(header->offset); -#if CONFIG_ESP_SDIO_CHECKSUM + #if CONFIG_ESP_SDIO_CHECKSUM rx_checksum = le16toh(header->checksum); header->checksum = 0; @@ -634,11 +754,12 @@ static int sdio_read(interface_handle_t *if_handle, interface_buffer_handle_t *b sdio_read_done(buf_handle->sdio_buf_handle); return ESP_FAIL; } -#endif -#if ESP_PKT_STATS + #endif + + #if ESP_PKT_STATS if (header->if_type == ESP_STA_IF) pkt_stats.hs_bus_sta_in++; -#endif + #endif buf_handle->if_type = header->if_type; buf_handle->if_num = header->if_num; @@ -647,15 +768,18 @@ static int sdio_read(interface_handle_t *if_handle, interface_buffer_handle_t *b } #endif /* !SIMPLIFIED_SDIO_SLAVE */ -static esp_err_t sdio_reset(interface_handle_t *handle) +static void sdio_reset_task(void *pvParameters) { + interface_handle_t *handle = (interface_handle_t *)pvParameters; esp_err_t ret = ESP_OK; sdio_slave_stop(); ret = sdio_slave_reset(); - if (ret != ESP_OK) - return ret; + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to reset SDIO slave: %d", ret); + goto exit; + } /* ESP-Hosted uses bit6 and bit 7 internal use, rest bits free */ sdio_slave_set_host_intena(SDIO_SLAVE_HOSTINT_SEND_NEW_PACKET | @@ -669,32 +793,107 @@ static esp_err_t sdio_reset(interface_handle_t *handle) SDIO_SLAVE_HOSTINT_BIT7); ret = sdio_slave_start(); - if (ret != ESP_OK) - return ret; + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to start SDIO slave: %d", ret); + goto exit; + } - while (1) { - sdio_slave_buf_handle_t handle = NULL; +exit: + handle->state = ACTIVE; + vTaskDelete(NULL); +} + +static esp_err_t sdio_reset(interface_handle_t *handle) +{ + if (handle->state >= DEACTIVE) { + handle->state = DEACTIVE; + return ESP_OK; + } + + /* Create a task to handle SDIO reset */ + xTaskCreate(sdio_reset_task, "sdio_reset", + CONFIG_ESP_HOSTED_DEFAULT_TASK_STACK_SIZE, handle, + CONFIG_ESP_HOSTED_DEFAULT_TASK_PRIORITY, NULL); + + return ESP_OK; +} + +#if H_PS_UNLOAD_BUS_WHILE_PS +static void sdio_deinit_task(void *pvParameters) +{ + esp_err_t ret = ESP_OK; + + ESP_LOGI(TAG, "Deinitializing SDIO interface"); + + /* First stop SDIO to prevent new operations */ + sdio_slave_stop(); + + /* Give some time for ongoing operations to complete */ + vTaskDelay(pdMS_TO_TICKS(20)); - /* Return buffers to driver */ - ret = sdio_slave_send_get_finished(&handle, 0); - if (ret != ESP_OK) + /* Clear all pending interrupts */ + sdio_slave_clear_host_int(SDIO_SLAVE_HOSTINT_SEND_NEW_PACKET | + SDIO_SLAVE_HOSTINT_BIT0 | + SDIO_SLAVE_HOSTINT_BIT1 | + SDIO_SLAVE_HOSTINT_BIT2 | + SDIO_SLAVE_HOSTINT_BIT3 | + SDIO_SLAVE_HOSTINT_BIT4 | + SDIO_SLAVE_HOSTINT_BIT5 | + SDIO_SLAVE_HOSTINT_BIT6 | + SDIO_SLAVE_HOSTINT_BIT7); + + /* Disable all interrupts */ + sdio_slave_set_host_intena(0); + + /* Reset the SDIO slave peripheral */ + sdio_slave_reset(); + + /* Now try to clean up buffers with timeout */ + int retry = 3; + while (retry--) { + sdio_slave_buf_handle_t buf_handle = NULL; + ret = sdio_slave_send_get_finished(&buf_handle, 10); // 10ms timeout + if (ret == ESP_ERR_TIMEOUT) { + ESP_LOGW(TAG, "Buffer cleanup timed out, retrying..."); + continue; + } + if (ret != ESP_OK || !buf_handle) { break; + } + #if !SIMPLIFIED_SDIO_SLAVE - xSemaphoreGive(sdio_send_queue_sem); + if (sdio_send_queue_sem) { + xSemaphoreGive(sdio_send_queue_sem); + } #endif - if (handle) { - ret = sdio_slave_recv_load_buf(handle); + if (buf_handle) { + ret = sdio_slave_recv_unregister_buf(buf_handle); ESP_ERROR_CHECK_WITHOUT_ABORT(ret); } } - return ESP_OK; + /* Final deinit */ + sdio_slave_deinit(); + if_handle_g.state = DEINIT; + + ESP_LOGI(TAG, "SDIO interface deinitialized"); + vTaskDelete(NULL); } +#endif static void sdio_deinit(interface_handle_t *handle) { - sdio_mempool_destroy(); - sdio_slave_stop(); - sdio_slave_reset(); +#if H_PS_UNLOAD_BUS_WHILE_PS + if (if_handle_g.state == DEINIT) { + ESP_LOGW(TAG, "SDIO already deinitialized"); + return; + } + if_handle_g.state = DEINIT; + + /* Create a task to handle SDIO deinitialization */ + xTaskCreate(sdio_deinit_task, "sdio_deinit", + CONFIG_ESP_HOSTED_DEFAULT_TASK_STACK_SIZE, handle, + CONFIG_ESP_HOSTED_DEFAULT_TASK_PRIORITY, NULL); +#endif } diff --git a/slave/main/slave_bt.c b/slave/main/slave_bt.c index 9896b669..7ec4953b 100644 --- a/slave/main/slave_bt.c +++ b/slave/main/slave_bt.c @@ -71,7 +71,7 @@ static int host_rcv_pkt(uint8_t *data, uint16_t len) buf_handle.wlan_buf_handle = buf; buf_handle.free_buf_handle = free; - ESP_HEXLOGV("bt_tx new", data, len); + ESP_HEXLOGV("bt_tx new", data, len, 32); if (send_to_host_queue(&buf_handle, PRIO_Q_BT)) { free(buf); @@ -90,7 +90,7 @@ void process_hci_rx_pkt(uint8_t *payload, uint16_t payload_len) { /* VHCI needs one extra byte at the start of payload */ /* that is accomodated in esp_payload_header */ - ESP_HEXLOGV("bt_rx", payload, payload_len); + ESP_HEXLOGV("bt_rx", payload, payload_len, 32); payload--; payload_len++; @@ -138,24 +138,24 @@ typedef enum { void esp_vhci_host_send_packet(uint8_t *data, uint16_t len) { - if (*(data) == DATA_TYPE_COMMAND) { - struct ble_hci_cmd *cmd = NULL; - cmd = (struct ble_hci_cmd *) ble_hci_trans_buf_alloc(BLE_HCI_TRANS_BUF_CMD); - if (!cmd) { - ESP_LOGE(TAG, "Failed to allocate memory for HCI transport buffer"); - return; - } + if (*(data) == DATA_TYPE_COMMAND) { + struct ble_hci_cmd *cmd = NULL; + cmd = (struct ble_hci_cmd *) ble_hci_trans_buf_alloc(BLE_HCI_TRANS_BUF_CMD); + if (!cmd) { + ESP_LOGE(TAG, "Failed to allocate memory for HCI transport buffer"); + return; + } - memcpy((uint8_t *)cmd, data + 1, len - 1); - ble_hci_trans_hs_cmd_tx((uint8_t *)cmd); - } + memcpy((uint8_t *)cmd, data + 1, len - 1); + ble_hci_trans_hs_cmd_tx((uint8_t *)cmd); + } - if (*(data) == DATA_TYPE_ACL) { - struct os_mbuf *om = os_msys_get_pkthdr(len, ACL_DATA_MBUF_LEADINGSPACE); - assert(om); - os_mbuf_append(om, &data[1], len - 1); - ble_hci_trans_hs_acl_tx(om); - } + if (*(data) == DATA_TYPE_ACL) { + struct os_mbuf *om = os_msys_get_pkthdr(len, ACL_DATA_MBUF_LEADINGSPACE); + assert(om); + os_mbuf_append(om, &data[1], len - 1); + ble_hci_trans_hs_acl_tx(om); + } } diff --git a/slave/main/slave_control.c b/slave/main/slave_control.c index 03034536..1f30214f 100644 --- a/slave/main/slave_control.c +++ b/slave/main/slave_control.c @@ -26,6 +26,7 @@ #include "esp_hosted_transport.h" #include "esp_hosted_bitmasks.h" #include "slave_wifi_config.h" +#include "esp_hosted_log.h" /* Slave-side: Always support reserved field decoding for maximum compatibility * The host may or may not have CONFIG_ESP_HOSTED_DECODE_WIFI_RESERVED_FIELD enabled @@ -34,196 +35,35 @@ #include "coprocessor_fw_version.h" +#ifdef CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED +#include "esp_check.h" +#include "lwip/inet.h" +#include "host_power_save.h" +#include "mqtt_example.h" +#endif + #define MAC_STR_LEN 17 #define MAC2STR(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5] #define MACSTR "%02x:%02x:%02x:%02x:%02x:%02x" #define SUCCESS 0 #define FAILURE -1 -#define SSID_LENGTH 32 -#define PASSWORD_LENGTH 64 #define MIN_TX_POWER 8 #define MAX_TX_POWER 84 -/* Bits for wifi connect event */ -#define WIFI_CONNECTED_BIT BIT0 -#define WIFI_FAIL_BIT BIT1 -#define WIFI_NO_AP_FOUND_BIT BIT2 -#define WIFI_WRONG_PASSWORD_BIT BIT3 -#define WIFI_HOST_REQUEST_BIT BIT4 - #define MAX_STA_CONNECT_ATTEMPTS 3 #define TIMEOUT_IN_MIN (60*TIMEOUT_IN_SEC) #define TIMEOUT_IN_HOUR (60*TIMEOUT_IN_MIN) -#define TIMEOUT (2*TIMEOUT_IN_MIN) #define RESTART_TIMEOUT (5*TIMEOUT_IN_SEC) #define MIN_HEARTBEAT_INTERVAL (10) #define MAX_HEARTBEAT_INTERVAL (60*60) -#define mem_free(x) \ - { \ - if (x) { \ - free(x); \ - x = NULL; \ - } \ - } - -#define NTFY_TEMPLATE(NtFy_MsgId, NtFy_TyPe, NtFy_StRuCt, InIt_FuN) \ - NtFy_TyPe *ntfy_payload = NULL; \ - ntfy_payload = (NtFy_TyPe*)calloc(1,sizeof(NtFy_TyPe)); \ - if (!ntfy_payload) { \ - ESP_LOGE(TAG,"Failed to allocate memory"); \ - return ESP_ERR_NO_MEM; \ - } \ - InIt_FuN(ntfy_payload); \ - ntfy->payload_case = NtFy_MsgId; \ - ntfy->NtFy_StRuCt = ntfy_payload; \ - ntfy_payload->resp = SUCCESS; -#define RPC_TEMPLATE(RspTyPe, RspStRuCt, ReqType, ReqStruct, InIt_FuN) \ - RspTyPe *resp_payload = NULL; \ - ReqType *req_payload = NULL; \ - if (!req || !resp || !req->ReqStruct) { \ - ESP_LOGE(TAG, "Invalid parameters"); \ - return ESP_FAIL; \ - } \ - req_payload = req->ReqStruct; \ - resp_payload = (RspTyPe *)calloc(1, sizeof(RspTyPe)); \ - if (!resp_payload) { \ - ESP_LOGE(TAG, "Failed to alloc mem for resp.%s\n",#RspStRuCt); \ - return ESP_ERR_NO_MEM; \ - } \ - resp->RspStRuCt = resp_payload; \ - InIt_FuN(resp_payload); \ - resp_payload->resp = SUCCESS; \ - - -/* Simple is same above just, we dod not need req_payload unused warning */ -#define RPC_TEMPLATE_SIMPLE(RspTyPe, RspStRuCt, ReqType, ReqStruct, InIt_FuN) \ - RspTyPe *resp_payload = NULL; \ - if (!req || !resp) { \ - ESP_LOGE(TAG, "Invalid parameters"); \ - return ESP_FAIL; \ - } \ - resp_payload = (RspTyPe *)calloc(1, sizeof(RspTyPe)); \ - if (!resp_payload) { \ - ESP_LOGE(TAG, "Failed to alloc mem for resp.%s\n",#RspStRuCt); \ - return ESP_ERR_NO_MEM; \ - } \ - resp->RspStRuCt = resp_payload; \ - InIt_FuN(resp_payload); \ - resp_payload->resp = SUCCESS; \ - -#define RPC_RESP_ASSIGN_FIELD(PaRaM) \ - resp_payload->PaRaM = PaRaM - -#define RPC_RET_FAIL_IF(ConDiTiOn) do { \ - int rEt = (ConDiTiOn); \ - if (rEt) { \ - resp_payload->resp = rEt; \ - ESP_LOGE(TAG, "%s:%u failed [%s] = [%d]", __func__,__LINE__,#ConDiTiOn, rEt); \ - return ESP_OK; \ - } \ -} while(0); - - -#define RPC_ALLOC_ELEMENT(TyPe,MsG_StRuCt,InIt_FuN) { \ - TyPe *NeW_AllocN = (TyPe *)calloc(1, sizeof(TyPe)); \ - if (!NeW_AllocN) { \ - ESP_LOGI(TAG,"Failed to allocate memory for req.%s\n",#MsG_StRuCt); \ - resp_payload->resp = RPC_ERR_MEMORY_FAILURE; \ - goto err; \ - } \ - MsG_StRuCt = NeW_AllocN; \ - InIt_FuN(MsG_StRuCt); \ -} - -#define NTFY_ALLOC_ELEMENT(TyPe,MsG_StRuCt,InIt_FuN) { \ - TyPe *NeW_AllocN = (TyPe *)calloc(1, sizeof(TyPe)); \ - if (!NeW_AllocN) { \ - ESP_LOGI(TAG,"Failed to allocate memory for req.%s\n",#MsG_StRuCt); \ - ntfy_payload->resp = RPC_ERR_MEMORY_FAILURE; \ - goto err; \ - } \ - MsG_StRuCt = NeW_AllocN; \ - InIt_FuN(MsG_StRuCt); \ -} - -#define NTFY_COPY_BYTES(dest, src, num) \ - do { \ - if (num) { \ - dest.data = (uint8_t *)calloc(1, num); \ - if (!dest.data) { \ - ESP_LOGE(TAG, "%s:%u Failed to duplicate bytes\n",__func__,__LINE__); \ - ntfy_payload->resp = FAILURE; \ - return ESP_OK; \ - } \ - memcpy(dest.data, src, num); \ - dest.len = num; \ - } \ - } while(0) - -#define RPC_REQ_COPY_BYTES(dest, src, num_bytes) \ - if (src.len && src.data) \ - memcpy((char*)dest, src.data, min(min(sizeof(dest), num_bytes), src.len)); - -#define RPC_REQ_COPY_STR RPC_REQ_COPY_BYTES - - -#define RPC_RESP_COPY_STR(dest, src, max_len) \ - if (src) { \ - dest.data = (uint8_t*)strndup((char*)src, max_len); \ - if (!dest.data) { \ - ESP_LOGE(TAG, "%s:%u Failed to duplicate bytes\n",__func__,__LINE__); \ - resp_payload->resp = FAILURE; \ - return ESP_OK; \ - } \ - dest.len = min(max_len,strlen((char*)src)+1); \ - } - -#define RPC_RESP_COPY_BYTES_SRC_UNCHECKED(dest, src, num) \ - do { \ - if (num) { \ - dest.data = (uint8_t *)calloc(1, num); \ - if (!dest.data) { \ - ESP_LOGE(TAG, "%s:%u Failed to duplicate bytes\n",__func__,__LINE__); \ - resp_payload->resp = FAILURE; \ - return ESP_OK; \ - } \ - memcpy(dest.data, src, num); \ - dest.len = num; \ - } \ - } while(0) - -#define RPC_RESP_COPY_BYTES(dest, src, num) \ - if (src) { \ - RPC_RESP_COPY_BYTES_SRC_UNCHECKED(dest, src, num); \ - } - -#define RPC_COPY_STR(dest, src, max_len) \ - if (src) { \ - dest.data = (uint8_t*)strndup((char*)src, max_len); \ - if (!dest.data) { \ - ESP_LOGE(TAG, "%s:%u Failed to duplicate bytes\n",__func__,__LINE__); \ - return FAILURE; \ - } \ - dest.len = min(max_len,strlen((char*)src)+1); \ - } - -#define RPC_COPY_BYTES(dest, src, num) \ - do { \ - if (num) { \ - dest.data = (uint8_t *)calloc(1, num); \ - if (!dest.data) { \ - ESP_LOGE(TAG, "%s:%u Failed to duplicate bytes\n",__func__,__LINE__); \ - return FAILURE; \ - } \ - memcpy(dest.data, src, num); \ - dest.len = num; \ - } \ - } while(0) +static wifi_config_t new_wifi_config = {0}; +static bool new_config_recvd = false; +static wifi_event_sta_connected_t lkg_sta_connected_event = {0}; typedef struct esp_rpc_cmd { int req_num; @@ -232,12 +72,18 @@ typedef struct esp_rpc_cmd { } esp_rpc_req_t; -static const char* TAG = "slave_ctrl"; +static const char* TAG = "slave_rpc"; static TimerHandle_t handle_heartbeat_task; static uint32_t hb_num; /* FreeRTOS event group to signal when we are connected*/ static esp_event_handler_instance_t instance_any_id; +#ifdef CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED +static esp_event_handler_instance_t instance_ip; +extern volatile uint8_t station_got_ip; +static rpc_dhcp_dns_status_t s2h_dhcp_dns = {0}; + +#endif static esp_ota_handle_t handle; const esp_partition_t* update_partition = NULL; @@ -248,11 +94,132 @@ extern esp_err_t wlan_ap_rx_callback(void *buffer, uint16_t len, void *eb); extern volatile uint8_t station_connected; extern volatile uint8_t softap_started; +static volatile bool station_connecting = false; +static volatile bool wifi_started = false; +static volatile bool wifi_initialized = false; + +static void send_wifi_event_data_to_host(int event, void *event_data, int event_size) +{ + send_event_data_to_host(event, event_data, event_size); +} + +#ifdef CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED +/* DHCP/DNS event handling */ +void send_dhcp_dns_info_to_host(uint8_t network_up, uint8_t send_wifi_connected) +{ + rpc_dhcp_dns_status_t s2h_dhcp_dns_DOWN = {0}; + rpc_dhcp_dns_status_t *evnt_to_send = &s2h_dhcp_dns_DOWN; + + if (network_up && s2h_dhcp_dns.dhcp_up && s2h_dhcp_dns.net_link_up && s2h_dhcp_dns.dns_up) { + evnt_to_send = &s2h_dhcp_dns; + } + send_event_data_to_host(RPC_ID__Event_DhcpDnsStatus, + evnt_to_send, sizeof(rpc_dhcp_dns_status_t)); + + vTaskDelay(pdMS_TO_TICKS(10)); + if (send_wifi_connected && station_connected) { + send_wifi_event_data_to_host(RPC_ID__Event_StaConnected, + &lkg_sta_connected_event, sizeof(wifi_event_sta_connected_t)); + } + + ESP_EARLY_LOGI(TAG, "Send DHCP-DNS status to Host: IP: %s, NM: %s, GW: %s, DNS IP: %s, Type: %"PRId32, + (char *)evnt_to_send->dhcp_ip, + (char *)evnt_to_send->dhcp_nm, + (char *)evnt_to_send->dhcp_gw, + (char *)evnt_to_send->dns_ip, + evnt_to_send->dns_type); +} + +/* Get DNS information */ +esp_err_t get_slave_dns(wifi_interface_t iface, esp_netif_dns_info_t *dns) +{ + esp_netif_t *netif = NULL; + + if (!dns) { + return ESP_ERR_INVALID_ARG; + } + + if (iface == WIFI_IF_STA) { + netif = esp_netif_get_handle_from_ifkey("WIFI_STA_DEF"); + } else if (iface == WIFI_IF_AP) { + netif = esp_netif_get_handle_from_ifkey("WIFI_AP_DEF"); + } + + if (!netif) { + return ESP_FAIL; + } + + return esp_netif_get_dns_info(netif, ESP_NETIF_DNS_MAIN, dns); +} + +/* Set DNS information */ +esp_err_t set_slave_dns(wifi_interface_t iface, char *ip, uint8_t type) +{ + esp_netif_t *netif = NULL; + esp_netif_dns_info_t dns = {0}; + + if (!ip) { + return ESP_ERR_INVALID_ARG; + } + + if (iface == WIFI_IF_STA) { + netif = esp_netif_get_handle_from_ifkey("WIFI_STA_DEF"); + } else if (iface == WIFI_IF_AP) { + netif = esp_netif_get_handle_from_ifkey("WIFI_AP_DEF"); + } + + if (!netif) { + return ESP_FAIL; + } + + /* Convert IP string to IP address */ + if (esp_netif_str_to_ip4(ip, &dns.ip.u_addr.ip4) != ESP_OK) { + return ESP_FAIL; + } + + dns.ip.type = type; + return esp_netif_set_dns_info(netif, ESP_NETIF_DNS_MAIN, &dns); +} + +/* Get static IP information */ +esp_err_t get_slave_static_ip(wifi_interface_t iface, esp_netif_ip_info_t *ip_info, uint8_t *netlink_up) +{ + esp_netif_t *netif = NULL; + + if (!ip_info || !netlink_up) { + return ESP_ERR_INVALID_ARG; + } + + if (iface == WIFI_IF_STA) { + netif = esp_netif_get_handle_from_ifkey("WIFI_STA_DEF"); + } else if (iface == WIFI_IF_AP) { + netif = esp_netif_get_handle_from_ifkey("WIFI_AP_DEF"); + } + + if (!netif) { + return ESP_FAIL; + } + + /* Get network interface status */ + *netlink_up = esp_netif_is_netif_up(netif); + + /* Get IP info only if interface is up */ + if (*netlink_up) { + return esp_netif_get_ip_info(netif, ip_info); + } + + /* Clear IP info if interface is down */ + memset(ip_info, 0, sizeof(esp_netif_ip_info_t)); + return ESP_OK; +} +#endif /* CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED */ + /* OTA end timer callback */ void vTimerCallback( TimerHandle_t xTimer ) { xTimerDelete(xTimer, 0); + esp_unregister_shutdown_handler((shutdown_handler_t)esp_wifi_stop); esp_restart(); } @@ -298,39 +265,44 @@ static esp_err_t req_wifi_get_mode(Rpc *req, static esp_err_t req_wifi_set_mode(Rpc *req, Rpc *resp, void *priv_data) { - wifi_mode_t num = 0; + wifi_mode_t current_mode = WIFI_MODE_NULL; + RPC_TEMPLATE(RpcRespSetMode, resp_set_wifi_mode, + RpcReqSetMode, req_set_wifi_mode, + rpc__resp__set_mode__init); - RPC_TEMPLATE(RpcRespSetMode, resp_set_wifi_mode, - RpcReqSetMode, req_set_wifi_mode, - rpc__resp__set_mode__init); + /* Get current mode first */ + RPC_RET_FAIL_IF(esp_wifi_get_mode(¤t_mode)); - num = req_payload->mode; - RPC_RET_FAIL_IF(esp_wifi_set_mode(num)); - - return ESP_OK; + /* Only set if different */ + if (current_mode != req_payload->mode) { + RPC_RET_FAIL_IF(esp_wifi_set_mode(req_payload->mode)); + } + return ESP_OK; } /* Function sets MAC address for station/softap */ static esp_err_t req_wifi_set_mac(Rpc *req, Rpc *resp, void *priv_data) { - uint8_t * mac = NULL; + uint8_t current_mac[BSSID_BYTES_SIZE] = {0}; RPC_TEMPLATE(RpcRespSetMacAddress, resp_set_mac_address, RpcReqSetMacAddress, req_set_mac_address, rpc__resp__set_mac_address__init); if (!req_payload->mac.data || (req_payload->mac.len != BSSID_BYTES_SIZE)) { - ESP_LOGE(TAG, "Invalid MAC address data or len: %d", req->req_set_mac_address->mac.len); + ESP_LOGE(TAG, "Invalid MAC address data or len: %d", req_payload->mac.len); resp_payload->resp = ESP_ERR_INVALID_ARG; - goto err; + return ESP_OK; } - mac = req_payload->mac.data; - ESP_LOGD(TAG, "mac: " MACSTR, MAC2STR(mac)); + /* Get current MAC first */ + RPC_RET_FAIL_IF(esp_wifi_get_mac(req_payload->mode, current_mac)); - RPC_RET_FAIL_IF(esp_wifi_set_mac(req_payload->mode, mac)); -err: + /* Only set if different */ + if (memcmp(current_mac, req_payload->mac.data, BSSID_BYTES_SIZE) != 0) { + RPC_RET_FAIL_IF(esp_wifi_set_mac(req_payload->mode, req_payload->mac.data)); + } return ESP_OK; } @@ -338,11 +310,20 @@ static esp_err_t req_wifi_set_mac(Rpc *req, static esp_err_t req_wifi_set_ps(Rpc *req, Rpc *resp, void *priv_data) { - RPC_TEMPLATE(RpcRespSetPs, resp_wifi_set_ps, - RpcReqSetPs, req_wifi_set_ps, - rpc__resp__set_ps__init); - RPC_RET_FAIL_IF(esp_wifi_set_ps(req_payload->type)); - return ESP_OK; + wifi_ps_type_t current_ps = WIFI_PS_NONE; + + RPC_TEMPLATE(RpcRespSetPs, resp_wifi_set_ps, + RpcReqSetPs, req_wifi_set_ps, + rpc__resp__set_ps__init); + + /* Get current power save type first */ + RPC_RET_FAIL_IF(esp_wifi_get_ps(¤t_ps)); + + /* Only set if different */ + if (current_ps != req_payload->type) { + RPC_RET_FAIL_IF(esp_wifi_set_ps(req_payload->type)); + } + return ESP_OK; } /* Function returns current power save mode */ @@ -529,8 +510,8 @@ static esp_err_t req_set_softap_vender_specific_ie_handler (Rpc *req, ESP_LOGI(TAG,"Enable softap vendor IE\n"); if (!p_vid || - !p_vid->payload.len || - !p_vid->payload.data) { + !p_vid->payload.len || + !p_vid->payload.data) { ESP_LOGE(TAG, "Invalid parameters"); return ESP_FAIL; } @@ -619,7 +600,7 @@ static void heartbeat_timer_cb(TimerHandle_t xTimer) static void stop_heartbeat(void) { if (handle_heartbeat_task && - xTimerIsTimerActive(handle_heartbeat_task)) { + xTimerIsTimerActive(handle_heartbeat_task)) { ESP_LOGI(TAG, "Stopping HB timer"); xTimerStop(handle_heartbeat_task, portMAX_DELAY); xTimerDelete(handle_heartbeat_task, portMAX_DELAY); @@ -688,7 +669,92 @@ static esp_err_t req_config_heartbeat(Rpc *req, } -static void event_handler(void* arg, esp_event_base_t event_base, + +#if CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED +static void event_handler_ip(void* arg, esp_event_base_t event_base, + int32_t event_id, void* event_data) +{ + char ip_s[16] = {0}; + char nm_s[16] = {0}; + char gw_s[16] = {0}; + char dns_ip_s[16] = {0}; + + if (event_base == IP_EVENT) { + switch (event_id) { + + case IP_EVENT_STA_GOT_IP: { + ESP_LOGI(TAG, "Got IP"); + ip_event_got_ip_t* event = event_data; + esp_netif_t *netif = event->esp_netif; + esp_netif_dns_info_t dns = {0}; + + //memcpy(&lkg_sta_got_ip_event, event_data, sizeof(ip_event_got_ip_t)); + ESP_ERROR_CHECK(esp_wifi_internal_set_sta_ip()); + ESP_ERROR_CHECK(esp_netif_get_dns_info(netif, ESP_NETIF_DNS_MAIN, &dns)); + + esp_ip4addr_ntoa(&event->ip_info.ip, ip_s, sizeof(ip_s)); + esp_ip4addr_ntoa(&event->ip_info.netmask, nm_s, sizeof(nm_s)); + esp_ip4addr_ntoa(&event->ip_info.gw, gw_s, sizeof(gw_s)); + esp_ip4addr_ntoa(&dns.ip.u_addr.ip4, dns_ip_s, sizeof(dns_ip_s)); + + ESP_LOGI(TAG, "Slave sta dhcp {IP[%s] NM[%s] GW[%s]} dns{type[%u] ip[%s]}", + ip_s, nm_s, gw_s, dns.ip.type, dns_ip_s); + + s2h_dhcp_dns.net_link_up = 1; + s2h_dhcp_dns.dhcp_up = 1; + s2h_dhcp_dns.dns_up = 1; + strlcpy((char*)s2h_dhcp_dns.dhcp_ip, ip_s, sizeof(s2h_dhcp_dns.dhcp_ip)); + strlcpy((char*)s2h_dhcp_dns.dhcp_nm, nm_s, sizeof(s2h_dhcp_dns.dhcp_nm)); + strlcpy((char*)s2h_dhcp_dns.dhcp_gw, gw_s, sizeof(s2h_dhcp_dns.dhcp_gw)); + strlcpy((char*)s2h_dhcp_dns.dns_ip, dns_ip_s, sizeof(s2h_dhcp_dns.dns_ip)); + s2h_dhcp_dns.dns_type = ESP_NETIF_DNS_MAIN; + + + //send_dhcp_dns_info_to_host(1, 0); + station_got_ip = 1; +#ifdef CONFIG_ESP_HOSTED_COPROCESSOR_EXAMPLE_MQTT + example_mqtt_resume(); +#endif + break; + } case IP_EVENT_STA_LOST_IP: { +#ifdef CONFIG_ESP_HOSTED_COPROCESSOR_EXAMPLE_MQTT + example_mqtt_pause(); +#endif + ESP_LOGI(TAG, "Lost IP address"); + station_got_ip = 0; + memset(&s2h_dhcp_dns, 0, sizeof(s2h_dhcp_dns)); + //send_dhcp_dns_info_to_host(0, 0); + break; + } + + } + } +} + + +extern esp_netif_t *slave_sta_netif; + +static esp_err_t set_slave_static_ip(wifi_interface_t iface, char *ip, char *nm, char *gw) +{ + + esp_netif_ip_info_t ip_info = {0}; + + ESP_RETURN_ON_FALSE(iface == WIFI_IF_STA, ESP_FAIL, TAG, "only sta iface supported yet"); + + ip_info.ip.addr = ipaddr_addr(ip); + ip_info.netmask.addr = ipaddr_addr(nm); + ip_info.gw.addr = ipaddr_addr(gw); + + ESP_LOGI(TAG, "Set static IP addr ip:%s nm:%s gw:%s", ip, nm, gw); + ESP_ERROR_CHECK(esp_netif_set_ip_info(slave_sta_netif, &ip_info)); + esp_wifi_internal_reg_rxcb(ESP_IF_WIFI_STA, (wifi_rxcb_t) wlan_sta_rx_callback); + + return ESP_OK; +} +#endif + +#include "esp_wifi_netif.h" +static void event_handler_wifi(void* arg, esp_event_base_t event_base, int32_t event_id, void* event_data) { if (event_base == WIFI_EVENT) { @@ -712,14 +778,39 @@ static void event_handler(void* arg, esp_event_base_t event_base, event_data, sizeof(wifi_event_sta_scan_done_t)); } else if (event_id == WIFI_EVENT_STA_CONNECTED) { ESP_LOGI(TAG, "Sta mode connected"); + if (new_config_recvd) { + ESP_LOGI(TAG, "New wifi config still unapplied, applying it"); + /* Still not applied new config, so apply it */ + int ret = esp_wifi_set_config(WIFI_IF_STA, &new_wifi_config); + if (ret) { + ESP_LOGE(TAG, "Error[0x%x] while setting the wifi config", ret); + } else { + new_config_recvd = 0; + } + esp_wifi_disconnect(); + return; + } + station_connecting = false; send_event_data_to_host(RPC_ID__Event_StaConnected, event_data, sizeof(wifi_event_sta_connected_t)); + memcpy(&lkg_sta_connected_event, event_data, sizeof(wifi_event_sta_connected_t)); esp_wifi_internal_reg_rxcb(ESP_IF_WIFI_STA, (wifi_rxcb_t) wlan_sta_rx_callback); station_connected = true; } else if (event_id == WIFI_EVENT_STA_DISCONNECTED) { station_connected = false; + if (new_config_recvd) { + ESP_LOGI(TAG, "New wifi config still unapplied, applying it"); + /* Still not applied new config, so apply it */ + int ret = esp_wifi_set_config(WIFI_IF_STA, &new_wifi_config); + if (ret) { + ESP_LOGE(TAG, "Error[0x%x] while setting the wifi config", ret); + } else { + new_config_recvd = 0; + } + } esp_wifi_internal_reg_rxcb(ESP_IF_WIFI_STA, NULL); ESP_LOGI(TAG, "Sta mode disconnect"); + station_connecting = false; send_event_data_to_host(RPC_ID__Event_StaDisconnected, event_data, sizeof(wifi_event_sta_disconnected_t)); } else { @@ -732,9 +823,24 @@ static void event_handler(void* arg, esp_event_base_t event_base, esp_wifi_internal_reg_rxcb(ESP_IF_WIFI_AP, NULL); softap_started = 0; } - +#if 0 + if (event_id == WIFI_EVENT_STA_START && station_connected) { + ESP_LOGI(TAG, "Sta mode start, send connected event"); + //station_connecting = false; + //send_event_data_to_host(RPC_ID__Event_StaConnected, + // &lkg_sta_connected_event, sizeof(wifi_event_sta_connected_t)); + } +#endif + if (event_id == WIFI_EVENT_STA_START) { + wifi_started = true; + station_connecting = true; + esp_wifi_connect(); + } else if (event_id == WIFI_EVENT_STA_STOP) { + wifi_started = false; + station_connecting = false; + } send_event_data_to_host(RPC_ID__Event_WifiEventNoArgs, - &event_id, sizeof(event_id)); + &event_id, sizeof(event_id)); } } } @@ -836,8 +942,241 @@ static wifi_init_config_t * get_merged_init_config(wifi_init_config_t *dst_confi return dst_config; } +esp_err_t esp_hosted_register_wifi_event_handlers(void) +{ + int ret1; + + esp_event_handler_instance_unregister(WIFI_EVENT, ESP_EVENT_ANY_ID, &instance_any_id); + + ret1 = esp_event_handler_instance_register(WIFI_EVENT, + ESP_EVENT_ANY_ID, + &event_handler_wifi, + NULL, + &instance_any_id); + + if (ret1) { + ESP_LOGW(TAG, "Failed to register WiFi events"); + } +#ifdef CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED + int ret2, ret3; + + esp_event_handler_instance_unregister(IP_EVENT, IP_EVENT_STA_GOT_IP, &instance_any_id); + ret2 = esp_event_handler_instance_register(IP_EVENT, + IP_EVENT_STA_GOT_IP, + &event_handler_ip, + NULL, + &instance_ip); + esp_event_handler_instance_unregister(IP_EVENT, IP_EVENT_STA_LOST_IP, &instance_any_id); + ret3 = esp_event_handler_instance_register(IP_EVENT, + IP_EVENT_STA_LOST_IP, + &event_handler_ip, + NULL, + &instance_ip); + + if (ret2 || ret3) { + ESP_LOGW(TAG, "Failed to register IP events"); + } +#endif + return ESP_OK; +} + +/* Cached WiFi init configuration for comparison when reinitializing */ +static wifi_init_config_t cached_wifi_init_config = {0}; +static bool has_cached_config = false; + +/* External declaration of the real esp_wifi_init function */ +extern esp_err_t __real_esp_wifi_init(const wifi_init_config_t *config); + +/** + * @brief Compare only the relevant wifi init config fields that we care about + * + * This function compares only the specific fields that are set in req_wifi_init() + * to determine if we need to reinitialize WiFi + */ +static bool wifi_init_config_changed(const wifi_init_config_t *new_cfg, const wifi_init_config_t *cached_cfg) +{ + if (!new_cfg || !cached_cfg) { + ESP_LOGI(TAG, "WiFi init config comparison: One of the configs is NULL"); + return true; + } + + /* Compare only the fields that are explicitly set in req_wifi_init */ + bool changed = false; + + if (new_cfg->static_rx_buf_num != cached_cfg->static_rx_buf_num) { + ESP_LOGI(TAG, "WiFi init config: static_rx_buf_num changed: %lu -> %lu", + (unsigned long)cached_cfg->static_rx_buf_num, (unsigned long)new_cfg->static_rx_buf_num); + changed = true; + } + + if (new_cfg->dynamic_rx_buf_num != cached_cfg->dynamic_rx_buf_num) { + ESP_LOGI(TAG, "WiFi init config: dynamic_rx_buf_num changed: %lu -> %lu", + (unsigned long)cached_cfg->dynamic_rx_buf_num, (unsigned long)new_cfg->dynamic_rx_buf_num); + changed = true; + } + + if (new_cfg->tx_buf_type != cached_cfg->tx_buf_type) { + ESP_LOGI(TAG, "WiFi init config: tx_buf_type changed: %lu -> %lu", + (unsigned long)cached_cfg->tx_buf_type, (unsigned long)new_cfg->tx_buf_type); + changed = true; + } + + if (new_cfg->static_tx_buf_num != cached_cfg->static_tx_buf_num) { + ESP_LOGI(TAG, "WiFi init config: static_tx_buf_num changed: %lu -> %lu", + (unsigned long)cached_cfg->static_tx_buf_num, (unsigned long)new_cfg->static_tx_buf_num); + changed = true; + } + + if (new_cfg->dynamic_tx_buf_num != cached_cfg->dynamic_tx_buf_num) { + ESP_LOGI(TAG, "WiFi init config: dynamic_tx_buf_num changed: %lu -> %lu", + (unsigned long)cached_cfg->dynamic_tx_buf_num, (unsigned long)new_cfg->dynamic_tx_buf_num); + changed = true; + } + + if (new_cfg->cache_tx_buf_num != cached_cfg->cache_tx_buf_num) { + ESP_LOGI(TAG, "WiFi init config: cache_tx_buf_num changed: %lu -> %lu", + (unsigned long)cached_cfg->cache_tx_buf_num, (unsigned long)new_cfg->cache_tx_buf_num); + changed = true; + } + + if (new_cfg->csi_enable != cached_cfg->csi_enable) { + ESP_LOGI(TAG, "WiFi init config: csi_enable changed: %lu -> %lu", + (unsigned long)cached_cfg->csi_enable, (unsigned long)new_cfg->csi_enable); + changed = true; + } + + if (new_cfg->ampdu_rx_enable != cached_cfg->ampdu_rx_enable) { + ESP_LOGI(TAG, "WiFi init config: ampdu_rx_enable changed: %lu -> %lu", + (unsigned long)cached_cfg->ampdu_rx_enable, (unsigned long)new_cfg->ampdu_rx_enable); + changed = true; + } + + if (new_cfg->ampdu_tx_enable != cached_cfg->ampdu_tx_enable) { + ESP_LOGI(TAG, "WiFi init config: ampdu_tx_enable changed: %lu -> %lu", + (unsigned long)cached_cfg->ampdu_tx_enable, (unsigned long)new_cfg->ampdu_tx_enable); + changed = true; + } + + if (new_cfg->amsdu_tx_enable != cached_cfg->amsdu_tx_enable) { + ESP_LOGI(TAG, "WiFi init config: amsdu_tx_enable changed: %lu -> %lu", + (unsigned long)cached_cfg->amsdu_tx_enable, (unsigned long)new_cfg->amsdu_tx_enable); + changed = true; + } + + if (new_cfg->nvs_enable != cached_cfg->nvs_enable) { + ESP_LOGI(TAG, "WiFi init config: nvs_enable changed: %lu -> %lu", + (unsigned long)cached_cfg->nvs_enable, (unsigned long)new_cfg->nvs_enable); + changed = true; + } + + if (new_cfg->nano_enable != cached_cfg->nano_enable) { + ESP_LOGI(TAG, "WiFi init config: nano_enable changed: %lu -> %lu", + (unsigned long)cached_cfg->nano_enable, (unsigned long)new_cfg->nano_enable); + changed = true; + } + + if (new_cfg->rx_ba_win != cached_cfg->rx_ba_win) { + ESP_LOGI(TAG, "WiFi init config: rx_ba_win changed: %lu -> %lu", + (unsigned long)cached_cfg->rx_ba_win, (unsigned long)new_cfg->rx_ba_win); + changed = true; + } + + if (new_cfg->wifi_task_core_id != cached_cfg->wifi_task_core_id) { + ESP_LOGI(TAG, "WiFi init config: wifi_task_core_id changed: %lu -> %lu", + (unsigned long)cached_cfg->wifi_task_core_id, (unsigned long)new_cfg->wifi_task_core_id); + changed = true; + } + + if (new_cfg->beacon_max_len != cached_cfg->beacon_max_len) { + ESP_LOGI(TAG, "WiFi init config: beacon_max_len changed: %lu -> %lu", + (unsigned long)cached_cfg->beacon_max_len, (unsigned long)new_cfg->beacon_max_len); + changed = true; + } + + if (new_cfg->mgmt_sbuf_num != cached_cfg->mgmt_sbuf_num) { + ESP_LOGI(TAG, "WiFi init config: mgmt_sbuf_num changed: %lu -> %lu", + (unsigned long)cached_cfg->mgmt_sbuf_num, (unsigned long)new_cfg->mgmt_sbuf_num); + changed = true; + } + + if (new_cfg->feature_caps != cached_cfg->feature_caps) { + ESP_LOGI(TAG, "WiFi init config: feature_caps changed: %lu -> %lu", + (unsigned long)cached_cfg->feature_caps, (unsigned long)new_cfg->feature_caps); + changed = true; + } + + if (new_cfg->sta_disconnected_pm != cached_cfg->sta_disconnected_pm) { + ESP_LOGI(TAG, "WiFi init config: sta_disconnected_pm changed: %lu -> %lu", + (unsigned long)cached_cfg->sta_disconnected_pm, (unsigned long)new_cfg->sta_disconnected_pm); + changed = true; + } + + if (new_cfg->espnow_max_encrypt_num != cached_cfg->espnow_max_encrypt_num) { + ESP_LOGI(TAG, "WiFi init config: espnow_max_encrypt_num changed: %lu -> %lu", + (unsigned long)cached_cfg->espnow_max_encrypt_num, (unsigned long)new_cfg->espnow_max_encrypt_num); + changed = true; + } + + if (new_cfg->magic != cached_cfg->magic) { + ESP_LOGI(TAG, "WiFi init config: magic changed: %lu -> %lu", + (unsigned long)cached_cfg->magic, (unsigned long)new_cfg->magic); + changed = true; + } + + return changed; +} + +/** + * @brief Wrapper function for esp_wifi_init that caches config and handles reinitialization + * + * This function intercepts calls to esp_wifi_init, caches the configuration, + * and compares with previous config. If config has changed and WiFi is already + * initialized, it will stop, deinit, and reinitialize with the new parameters. + */ +esp_err_t __wrap_esp_wifi_init(const wifi_init_config_t *config) +{ + esp_err_t ret; + bool should_reinit = false; + ESP_LOGI(TAG, "=== __wrap_esp_wifi_init called ==="); + + if (wifi_initialized) { + /* Compare with cached config */ + if (has_cached_config && wifi_init_config_changed(config, &cached_wifi_init_config)) { + ESP_LOGI(TAG, "WiFi init config changed, reinitializing"); + esp_wifi_stop(); + esp_wifi_deinit(); + wifi_initialized = false; + should_reinit = true; + } else { + ESP_LOGW(TAG, "WiFi already initialized with same parameters"); + return ESP_OK; + } + } else { + ESP_LOGI(TAG, "First-time WiFi initialization"); + } + + /* Cache the config for future comparisons */ + if (config) { + memcpy(&cached_wifi_init_config, config, sizeof(wifi_init_config_t)); + has_cached_config = true; + } + + /* Call the real init function */ + ESP_LOGI(TAG, "Calling __real_esp_wifi_init..."); + ret = __real_esp_wifi_init(config); + ESP_LOGI(TAG, "__real_esp_wifi_init returned: %d", ret); + + if (ret == ESP_OK && !should_reinit) { + wifi_initialized = true; + } + + return ret; +} + static esp_err_t req_wifi_init(Rpc *req, Rpc *resp, void *priv_data) { + int ret = 0; + wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); RPC_TEMPLATE(RpcRespWifiInit, resp_wifi_init, @@ -845,15 +1184,51 @@ static esp_err_t req_wifi_init(Rpc *req, Rpc *resp, void *priv_data) rpc__resp__wifi_init__init); RPC_RET_FAIL_IF(!req_payload->cfg); + + cfg.static_rx_buf_num = req_payload->cfg->static_rx_buf_num ; + cfg.dynamic_rx_buf_num = req_payload->cfg->dynamic_rx_buf_num ; + cfg.tx_buf_type = req_payload->cfg->tx_buf_type ; + cfg.static_tx_buf_num = req_payload->cfg->static_tx_buf_num ; + cfg.dynamic_tx_buf_num = req_payload->cfg->dynamic_tx_buf_num ; + +#if CONFIG_IDF_TARGET_ESP32C2 + /* Hardcode: No static tx buffers for c2 due to low memory issues */ + if (!cfg.tx_buf_type) { + cfg.tx_buf_type = 1; + + if (!cfg.dynamic_tx_buf_num) + cfg.dynamic_tx_buf_num = 16; + } +#endif + cfg.cache_tx_buf_num = req_payload->cfg->cache_tx_buf_num ; + cfg.csi_enable = req_payload->cfg->csi_enable ; + cfg.ampdu_rx_enable = req_payload->cfg->ampdu_rx_enable ; + cfg.ampdu_tx_enable = req_payload->cfg->ampdu_tx_enable ; + cfg.amsdu_tx_enable = req_payload->cfg->amsdu_tx_enable ; + cfg.nvs_enable = req_payload->cfg->nvs_enable ; + cfg.nano_enable = req_payload->cfg->nano_enable ; + cfg.rx_ba_win = req_payload->cfg->rx_ba_win ; + cfg.wifi_task_core_id = req_payload->cfg->wifi_task_core_id ; + cfg.beacon_max_len = req_payload->cfg->beacon_max_len ; + cfg.mgmt_sbuf_num = req_payload->cfg->mgmt_sbuf_num ; + cfg.feature_caps = req_payload->cfg->feature_caps ; + cfg.sta_disconnected_pm = req_payload->cfg->sta_disconnected_pm ; + cfg.espnow_max_encrypt_num = req_payload->cfg->espnow_max_encrypt_num ; + cfg.magic = req_payload->cfg->magic ; + + ESP_LOGV(TAG, "Wifi-config: static_rx_buf_num[%lu] dynamic_rx_buf_num[%lu] tx_buf_type[%lu]", (unsigned long)cfg.static_rx_buf_num, (unsigned long)cfg.dynamic_rx_buf_num, (unsigned long)cfg.tx_buf_type); + ESP_LOGV(TAG, "Wifi-config: static_tx_buf_num[%lu] dynamic_tx_buf_num[%lu] cache_tx_buf_num[%lu]", (unsigned long)cfg.static_tx_buf_num, (unsigned long)cfg.dynamic_tx_buf_num, (unsigned long)cfg.cache_tx_buf_num); + ESP_LOGV(TAG, "Wifi-config: csi_enable[%lu] ampdu_rx_enable[%lu] ampdu_tx_enable[%lu] amsdu_tx_enable[%lu]", (unsigned long)cfg.csi_enable, (unsigned long)cfg.ampdu_rx_enable, (unsigned long)cfg.ampdu_tx_enable, (unsigned long)cfg.amsdu_tx_enable); + ESP_LOGV(TAG, "Wifi-config: nvs_enable[%lu] nano_enable[%lu] rx_ba_win[%lu] wifi_task_core_id[%lu]", (unsigned long)cfg.nvs_enable, (unsigned long)cfg.nano_enable, (unsigned long)cfg.rx_ba_win, (unsigned long)cfg.wifi_task_core_id); + ESP_LOGV(TAG, "Wifi-config: beacon_max_len[%lu] mgmt_sbuf_num[%lu] feature_caps[%lu] sta_disconnected_pm[%lu]", (unsigned long)cfg.beacon_max_len, (unsigned long)cfg.mgmt_sbuf_num, (unsigned long)cfg.feature_caps, (unsigned long)cfg.sta_disconnected_pm); + ESP_LOGV(TAG, "Wifi-config: espnow_max_encrypt_num[%lu] magic[%lu]", (unsigned long)cfg.espnow_max_encrypt_num, (unsigned long)cfg.magic); + + /* Use our wrapper directly instead of esp_hosted_wifi_init */ RPC_RET_FAIL_IF(esp_wifi_init(get_merged_init_config(&cfg, req_payload->cfg))); - ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT, - ESP_EVENT_ANY_ID, - &event_handler, - NULL, - &instance_any_id)); + esp_hosted_register_wifi_event_handlers(); - return ESP_OK; + return ret; } static esp_err_t req_wifi_deinit(Rpc *req, Rpc *resp, void *priv_data) @@ -874,6 +1249,14 @@ static esp_err_t req_wifi_start(Rpc *req, Rpc *resp, void *priv_data) RpcReqWifiStart, req_wifi_start, rpc__resp__wifi_start__init); + if (wifi_started) { + ESP_LOGW(TAG, "Wifi is already started"); + int event_id = WIFI_EVENT_STA_START; + send_wifi_event_data_to_host(RPC_ID__Event_WifiEventNoArgs, + &event_id, sizeof(event_id)); + return ESP_OK; + } + RPC_RET_FAIL_IF(esp_wifi_start()); return ESP_OK; } @@ -883,7 +1266,7 @@ static esp_err_t req_wifi_stop(Rpc *req, Rpc *resp, void *priv_data) RPC_TEMPLATE_SIMPLE(RpcRespWifiStop, resp_wifi_stop, RpcReqWifiStop, req_wifi_stop, rpc__resp__wifi_stop__init); - + wifi_started = false; RPC_RET_FAIL_IF(esp_wifi_stop()); return ESP_OK; @@ -891,12 +1274,50 @@ static esp_err_t req_wifi_stop(Rpc *req, Rpc *resp, void *priv_data) static esp_err_t req_wifi_connect(Rpc *req, Rpc *resp, void *priv_data) { + int ret = ESP_OK; + wifi_config_t wifi_cfg = {0}; + RPC_TEMPLATE_SIMPLE(RpcRespWifiConnect, resp_wifi_connect, RpcReqWifiConnect, req_wifi_connect, rpc__resp__wifi_connect__init); - ESP_LOGI(TAG, "************ connect ****************"); - RPC_RET_FAIL_IF(esp_wifi_connect()); + // Check if WiFi config has valid SSID before attempting connection + if (esp_wifi_get_config(WIFI_IF_STA, &wifi_cfg) != ESP_OK) { + ESP_LOGE(TAG, "Failed to get WiFi config"); + resp_payload->resp = ESP_ERR_WIFI_NOT_INIT; + return ESP_OK; + } + + if (strlen((char*)wifi_cfg.sta.ssid) == 0) { + ESP_LOGE(TAG, "No SSID configured, cannot connect"); + resp_payload->resp = ESP_ERR_WIFI_SSID; + return ESP_OK; + } + + ESP_LOGI(TAG, "Attempting to connect to SSID: %s", wifi_cfg.sta.ssid); + + if (new_config_recvd || !station_connected) { + ESP_LOGI(TAG, "************ connect ****************"); + //station_connecting = true; + ret = esp_wifi_connect(); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to connect to WiFi: %d", ret); + station_connecting = false; + } + } else { + ESP_LOGI(TAG, "connect recvd, ack with connected event"); + + +#if CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED + //send_dhcp_dns_info_to_host(1, 0); +#endif + + send_wifi_event_data_to_host(RPC_ID__Event_StaConnected, + &lkg_sta_connected_event, sizeof(wifi_event_sta_connected_t)); + } + + if (ret != ESP_ERR_WIFI_CONN) + resp_payload->resp = ret; return ESP_OK; } @@ -912,6 +1333,98 @@ static esp_err_t req_wifi_disconnect(Rpc *req, Rpc *resp, void *priv_data) return ESP_OK; } +static bool wifi_is_provisioned(wifi_config_t *wifi_cfg) +{ + if (!wifi_cfg) { + ESP_LOGI(TAG, "NULL wifi cfg passed, ignore"); + return false; + } + + if (esp_wifi_get_config(WIFI_IF_STA, wifi_cfg) != ESP_OK) { + ESP_LOGI(TAG, "Wifi get config failed"); + return false; + } + + ESP_LOGI(TAG, "SSID: %s", wifi_cfg->sta.ssid); + + if (strlen((const char *) wifi_cfg->sta.ssid)) { + ESP_LOGI(TAG, "Wifi provisioned"); + return true; + } + ESP_LOGI(TAG, "Wifi not provisioned, Fallback to example config"); + + return false; +} + +/* Function to compare two WiFi configurations */ +static bool is_wifi_config_equal(const wifi_config_t *cfg1, const wifi_config_t *cfg2) +{ + if (!cfg1 || !cfg2) { + return false; + } + /* Compare SSID */ + if (strcmp((char *)cfg1->sta.ssid, (char *)cfg2->sta.ssid) != 0) { + ESP_LOGD(TAG, "SSID different: '%s' vs '%s'", cfg1->sta.ssid, cfg2->sta.ssid); + return false; + } + + /* Compare password */ + if (strcmp((char *)cfg1->sta.password, (char *)cfg2->sta.password) != 0) { + ESP_LOGD(TAG, "Password different"); + return false; + } + + /* Compare BSSID if set */ + if (cfg1->sta.bssid_set && cfg2->sta.bssid_set) { + if (memcmp(cfg1->sta.bssid, cfg2->sta.bssid, BSSID_BYTES_SIZE) != 0) { + ESP_LOGD(TAG, "BSSID different"); + return false; + } + } else if (cfg1->sta.bssid_set != cfg2->sta.bssid_set) { + ESP_LOGD(TAG, "BSSID set status different: %d vs %d", + cfg1->sta.bssid_set, cfg2->sta.bssid_set); + return false; + } + + /* Compare channel if set */ + if (cfg1->sta.channel != 0 && cfg2->sta.channel != 0) { + if (cfg1->sta.channel != cfg2->sta.channel) { + ESP_LOGD(TAG, "Channel different: %d vs %d", + cfg1->sta.channel, cfg2->sta.channel); + return false; + } + } + + return true; +} + + +/* Function to handle WiFi configuration */ +esp_err_t esp_hosted_set_sta_config(wifi_interface_t iface, wifi_config_t *cfg) +{ + wifi_config_t current_config = {0}; + if (!wifi_is_provisioned(¤t_config)) { + if (esp_wifi_set_config(WIFI_IF_STA, cfg) != ESP_OK) { + ESP_LOGW(TAG, "not provisioned and failed to set wifi config"); + } else { + ESP_LOGI(TAG, "Provisioned new Wi-Fi config"); + new_config_recvd = true; + station_connecting = false; + } + } + + if (!is_wifi_config_equal(cfg, ¤t_config)) { + new_config_recvd = true; + station_connecting = false; + ESP_LOGI(TAG, "Setting new WiFi config SSID: %s", cfg->sta.ssid); + memcpy(&new_wifi_config, cfg, sizeof(wifi_config_t)); + } else { + ESP_LOGI(TAG, "WiFi config unchanged, keeping current connection"); + new_config_recvd = false; + } + + return ESP_OK; +} static esp_err_t req_wifi_set_config(Rpc *req, Rpc *resp, void *priv_data) { @@ -925,7 +1438,9 @@ static esp_err_t req_wifi_set_config(Rpc *req, Rpc *resp, void *priv_data) (req_payload->iface != WIFI_IF_AP)); RPC_RET_FAIL_IF(!req_payload->cfg); + if (req_payload->iface == WIFI_IF_STA) { + wifi_sta_config_t * p_a_sta = &(cfg.sta); WifiStaConfig * p_c_sta = req_payload->cfg->sta; RPC_RET_FAIL_IF(!req_payload->cfg->sta); @@ -934,7 +1449,7 @@ static esp_err_t req_wifi_set_config(Rpc *req, Rpc *resp, void *priv_data) ESP_LOGI(TAG, "STA set config: SSID:%s", p_a_sta->ssid); RPC_REQ_COPY_STR(p_a_sta->password, p_c_sta->password, PASSWORD_LENGTH); if (strlen((char*)p_a_sta->password)) - ESP_LOGD(TAG, "STA: password:%s", p_a_sta->password); + ESP_LOGD(TAG, "STA: password:xxxxxxxx"); p_a_sta->scan_method = p_c_sta->scan_method; p_a_sta->bssid_set = p_c_sta->bssid_set; @@ -1043,8 +1558,7 @@ static esp_err_t req_wifi_set_config(Rpc *req, Rpc *resp, void *priv_data) #endif } - RPC_RET_FAIL_IF(esp_wifi_set_config(req_payload->iface, &cfg)); - + RPC_RET_FAIL_IF(esp_hosted_set_sta_config(req_payload->iface, &cfg)); return ESP_OK; } @@ -1265,12 +1779,19 @@ static esp_err_t req_wifi_scan_start(Rpc *req, Rpc *resp, void *priv_data) static esp_err_t req_wifi_set_protocol(Rpc *req, Rpc *resp, void *priv_data) { + uint8_t protocol_bitmap = 0; RPC_TEMPLATE(RpcRespWifiSetProtocol, resp_wifi_set_protocol, - RpcReqWifiSetProtocol, req_wifi_set_protocol, - rpc__resp__wifi_set_protocol__init); + RpcReqWifiSetProtocol, req_wifi_set_protocol, + rpc__resp__wifi_set_protocol__init); + + /* Get current protocol first */ + RPC_RET_FAIL_IF(esp_wifi_get_protocol(req_payload->ifx, &protocol_bitmap)); - RPC_RET_FAIL_IF(esp_wifi_set_protocol(req_payload->ifx, + /* Only set if different */ + if (protocol_bitmap != req_payload->protocol_bitmap) { + RPC_RET_FAIL_IF(esp_wifi_set_protocol(req_payload->ifx, req_payload->protocol_bitmap)); + } return ESP_OK; } @@ -1580,18 +2101,28 @@ static esp_err_t req_wifi_set_storage(Rpc *req, Rpc *resp, void *priv_data) RpcReqWifiSetStorage, req_wifi_set_storage, rpc__resp__wifi_set_storage__init); + ESP_LOGI(TAG, "Setting wifi storage: %lu", req_payload->storage); + RPC_RET_FAIL_IF(esp_wifi_set_storage(req_payload->storage)); + return ESP_OK; } static esp_err_t req_wifi_set_bandwidth(Rpc *req, Rpc *resp, void *priv_data) { - RPC_TEMPLATE(RpcRespWifiSetBandwidth, resp_wifi_set_bandwidth, - RpcReqWifiSetBandwidth, req_wifi_set_bandwidth, - rpc__resp__wifi_set_bandwidth__init); + wifi_bandwidth_t current_bw = 0; + RPC_TEMPLATE(RpcRespWifiSetBandwidth, resp_wifi_set_bandwidth, + RpcReqWifiSetBandwidth, req_wifi_set_bandwidth, + rpc__resp__wifi_set_bandwidth__init); - RPC_RET_FAIL_IF(esp_wifi_set_bandwidth(req_payload->ifx, req_payload->bw)); - return ESP_OK; + /* Get current bandwidth first */ + RPC_RET_FAIL_IF(esp_wifi_get_bandwidth(req_payload->ifx, ¤t_bw)); + + /* Only set if different */ + if (current_bw != req_payload->bw) { + RPC_RET_FAIL_IF(esp_wifi_set_bandwidth(req_payload->ifx, req_payload->bw)); + } + return ESP_OK; } static esp_err_t req_wifi_get_bandwidth(Rpc *req, Rpc *resp, void *priv_data) @@ -1609,12 +2140,20 @@ static esp_err_t req_wifi_get_bandwidth(Rpc *req, Rpc *resp, void *priv_data) static esp_err_t req_wifi_set_channel(Rpc *req, Rpc *resp, void *priv_data) { - RPC_TEMPLATE(RpcRespWifiSetChannel, resp_wifi_set_channel, - RpcReqWifiSetChannel, req_wifi_set_channel, - rpc__resp__wifi_set_channel__init); + uint8_t current_primary = 0; + wifi_second_chan_t current_second = 0; + RPC_TEMPLATE(RpcRespWifiSetChannel, resp_wifi_set_channel, + RpcReqWifiSetChannel, req_wifi_set_channel, + rpc__resp__wifi_set_channel__init); - RPC_RET_FAIL_IF(esp_wifi_set_channel(req_payload->primary, req_payload->second)); - return ESP_OK; + /* Get current channel config first */ + RPC_RET_FAIL_IF(esp_wifi_get_channel(¤t_primary, ¤t_second)); + + /* Only set if different */ + if (current_primary != req_payload->primary || current_second != req_payload->second) { + RPC_RET_FAIL_IF(esp_wifi_set_channel(req_payload->primary, req_payload->second)); + } + return ESP_OK; } static esp_err_t req_wifi_get_channel(Rpc *req, Rpc *resp, void *priv_data) @@ -1639,11 +2178,18 @@ static esp_err_t req_wifi_set_country_code(Rpc *req, Rpc *resp, void *priv_data) rpc__resp__wifi_set_country_code__init); char cc[3] = {0}; // country code + char current_cc[3] = {0}; // current country code RPC_RET_FAIL_IF(!req_payload->country.data); RPC_REQ_COPY_STR(&cc[0], req_payload->country, 2); // only copy the first two chars - RPC_RET_FAIL_IF(esp_wifi_set_country_code(&cc[0], - req_payload->ieee80211d_enabled)); + /* Get current country code first */ + RPC_RET_FAIL_IF(esp_wifi_get_country_code(¤t_cc[0])); + + /* Only set if different */ + if (strncmp(cc, current_cc, 2) != 0 || req_payload->ieee80211d_enabled) { + RPC_RET_FAIL_IF(esp_wifi_set_country_code(&cc[0], + req_payload->ieee80211d_enabled)); + } return ESP_OK; } @@ -1671,6 +2217,7 @@ static esp_err_t req_wifi_set_country(Rpc *req, Rpc *resp, void *priv_data) RPC_RET_FAIL_IF(!req_payload->country); wifi_country_t country = {0}; + wifi_country_t current_country = {0}; WifiCountry * p_c_country = req_payload->country; RPC_REQ_COPY_BYTES(&country.cc[0], p_c_country->cc, sizeof(country.cc)); country.schan = p_c_country->schan; @@ -1678,7 +2225,13 @@ static esp_err_t req_wifi_set_country(Rpc *req, Rpc *resp, void *priv_data) country.max_tx_power = p_c_country->max_tx_power; country.policy = p_c_country->policy; - RPC_RET_FAIL_IF(esp_wifi_set_country(&country)); + /* Get current country first */ + RPC_RET_FAIL_IF(esp_wifi_get_country(¤t_country)); + + /* Only set if different */ + if (memcmp(&country, ¤t_country, sizeof(wifi_country_t)) != 0) { + RPC_RET_FAIL_IF(esp_wifi_set_country(&country)); + } return ESP_OK; } @@ -1832,12 +2385,19 @@ static esp_err_t req_wifi_set_protocols(Rpc *req, Rpc *resp, void *priv_data) resp_payload->ifx = ifx; wifi_protocols_t protocols; + wifi_protocols_t current_protocols; protocols.ghz_2g = req_payload->protocols->ghz_2g; protocols.ghz_5g = req_payload->protocols->ghz_5g; ESP_LOGI(TAG, "set protocols: ghz_2g %d, ghz_5g %d", protocols.ghz_2g, protocols.ghz_5g); - RPC_RET_FAIL_IF(esp_wifi_set_protocols(ifx, &protocols)); + /* Get current protocols first */ + RPC_RET_FAIL_IF(esp_wifi_get_protocols(ifx, ¤t_protocols)); + + /* Only set if different */ + if (memcmp(&protocols, ¤t_protocols, sizeof(wifi_protocols_t)) != 0) { + RPC_RET_FAIL_IF(esp_wifi_set_protocols(ifx, &protocols)); + } return ESP_OK; #else @@ -1887,13 +2447,20 @@ static esp_err_t req_wifi_set_bandwidths(Rpc *req, Rpc *resp, void *priv_data) resp_payload->ifx = ifx; wifi_bandwidths_t bw; + wifi_bandwidths_t current_bw; bw.ghz_2g = req_payload->bandwidths->ghz_2g; bw.ghz_5g = req_payload->bandwidths->ghz_5g; ESP_LOGI(TAG, "set bandwidths: ghz_2g %d, ghz_5g %d", bw.ghz_2g, bw.ghz_5g); - RPC_RET_FAIL_IF(esp_wifi_set_bandwidths(ifx, &bw)); + /* Get current bandwidths first */ + RPC_RET_FAIL_IF(esp_wifi_get_bandwidths(ifx, ¤t_bw)); + + /* Only set if different */ + if (memcmp(&bw, ¤t_bw, sizeof(wifi_bandwidths_t)) != 0) { + RPC_RET_FAIL_IF(esp_wifi_set_bandwidths(ifx, &bw)); + } return ESP_OK; #else @@ -1937,11 +2504,18 @@ static esp_err_t req_wifi_set_band(Rpc *req, Rpc *resp, void *priv_data) rpc__resp__wifi_set_band__init); wifi_band_t band; + wifi_band_t current_band; band = req_payload->band; ESP_LOGW(TAG, "set band: %d", band); - RPC_RET_FAIL_IF(esp_wifi_set_band(band)); + /* Get current band first */ + RPC_RET_FAIL_IF(esp_wifi_get_band(¤t_band)); + + /* Only set if different */ + if (current_band != band) { + RPC_RET_FAIL_IF(esp_wifi_set_band(band)); + } return ESP_OK; #else @@ -1977,11 +2551,18 @@ static esp_err_t req_wifi_set_band_mode(Rpc *req, Rpc *resp, void *priv_data) rpc__resp__wifi_set_band_mode__init); wifi_band_mode_t band_mode; + wifi_band_mode_t current_band_mode; band_mode = req_payload->bandmode; - ESP_LOGW(TAG, "set band_mode: %d", band_mode); + ESP_LOGW(TAG, "set band mode: %d", band_mode); - RPC_RET_FAIL_IF(esp_wifi_set_band_mode(band_mode)); + /* Get current band mode first */ + RPC_RET_FAIL_IF(esp_wifi_get_band_mode(¤t_band_mode)); + + /* Only set if different */ + if (current_band_mode != band_mode) { + RPC_RET_FAIL_IF(esp_wifi_set_band_mode(band_mode)); + } return ESP_OK; #else @@ -2009,6 +2590,135 @@ static esp_err_t req_wifi_get_band_mode(Rpc *req, Rpc *resp, void *priv_data) #endif } +/* Get DHCP/DNS status handler */ +static esp_err_t req_get_dhcp_dns_status(Rpc *req, Rpc *resp, void *priv_data) +{ +#ifdef CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED + RPC_TEMPLATE(RpcRespGetDhcpDnsStatus, resp_get_dhcp_dns, + RpcReqGetDhcpDnsStatus, req_get_dhcp_dns, + rpc__resp__get_dhcp_dns_status__init); +#else + RPC_TEMPLATE_SIMPLE(RpcRespGetDhcpDnsStatus, resp_get_dhcp_dns, + RpcReqGetDhcpDnsStatus, req_get_dhcp_dns, + rpc__resp__get_dhcp_dns_status__init); +#endif + +#ifdef CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED + int ret1, ret2; + esp_netif_ip_info_t ip_info = {0}; + esp_netif_dns_info_t dns = {0}; + uint8_t netlink_up = 0; + + ret1 = get_slave_static_ip(req_payload->iface, &ip_info, &netlink_up); + ret2 = get_slave_dns(req_payload->iface, &dns); + + if (ret1 || ret2) { + ESP_LOGE(TAG, "Failed to get DHCP/DNS status"); + resp_payload->resp = ESP_FAIL; + resp_payload->dhcp_up = 0; + resp_payload->dns_up = 0; + resp_payload->net_link_up = 0; + return ESP_OK; + } + ESP_LOGI(TAG, "static_ip_ret: %d dns_ret: %d", ret1, ret2); + + resp_payload->net_link_up = netlink_up; + resp_payload->dhcp_up = netlink_up; + resp_payload->dns_up = netlink_up; + resp_payload->dns_type = dns.ip.type; + + char sta_ip[64] = {0}; + char sta_nm[64] = {0}; + char sta_gw[64] = {0}; + char sta_dns_ip[64] = {0}; + + if (esp_ip4addr_ntoa(&ip_info.ip, sta_ip, sizeof(sta_ip))) { + strlcpy((char *)resp_payload->dhcp_ip.data, sta_ip, sizeof(resp_payload->dhcp_ip.data)); + resp_payload->dhcp_ip.len = strlen(sta_ip); + } + if (esp_ip4addr_ntoa(&ip_info.netmask, sta_nm, sizeof(sta_nm))) { + strlcpy((char *)resp_payload->dhcp_nm.data, sta_nm, sizeof(resp_payload->dhcp_nm.data)); + resp_payload->dhcp_nm.len = strlen(sta_nm); + } + if (esp_ip4addr_ntoa(&ip_info.gw, sta_gw, sizeof(sta_gw))) { + strlcpy((char *)resp_payload->dhcp_gw.data, sta_gw, sizeof(resp_payload->dhcp_gw.data)); + resp_payload->dhcp_gw.len = strlen(sta_gw); + } + if (esp_ip4addr_ntoa(&dns.ip.u_addr.ip4, sta_dns_ip, sizeof(sta_dns_ip))) { + strlcpy((char *)resp_payload->dns_ip.data, sta_dns_ip, sizeof(resp_payload->dns_ip.data)); + resp_payload->dns_ip.len = strlen(sta_dns_ip); + } + + ESP_LOGI(TAG, "Fetched IP: %s, NM: %s, GW: %s, DNS IP: %s, Type: %d", + resp_payload->dhcp_ip.data, + resp_payload->dhcp_nm.data, + resp_payload->dhcp_gw.data, + resp_payload->dns_ip.data, + resp_payload->dns_type); + + resp_payload->resp = ESP_OK; +#else + resp_payload->resp = ESP_FAIL; +#endif + return ESP_OK; +} + +static esp_err_t req_set_dhcp_dns_status(Rpc *req, Rpc *resp, void *priv_data) +{ + +#ifdef CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED + RPC_TEMPLATE(RpcRespSetDhcpDnsStatus, resp_set_dhcp_dns, + RpcReqSetDhcpDnsStatus, req_set_dhcp_dns, + rpc__resp__set_dhcp_dns_status__init); +#else + RPC_TEMPLATE_SIMPLE(RpcRespSetDhcpDnsStatus, resp_set_dhcp_dns, + RpcReqSetDhcpDnsStatus, req_set_dhcp_dns, + rpc__resp__set_dhcp_dns_status__init); +#endif + +#ifdef CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED + + uint8_t iface = req_payload->iface; + uint8_t net_link_up = req_payload->net_link_up; + uint8_t dhcp_up = req_payload->dhcp_up; + uint8_t dns_up = req_payload->dns_up; + uint8_t dns_type = req_payload->dns_type; + + char dhcp_ip[64] = {0}; + char dhcp_nm[64] = {0}; + char dhcp_gw[64] = {0}; + char dns_ip[64] = {0}; + + ESP_LOGI(TAG, "iface: %u link_up:%u dhcp_up:%u dns_up:%u dns_type:%u", + iface, net_link_up, dhcp_up, dns_up, dns_type); + + if (req_payload->dhcp_ip.len) + ESP_LOGI(TAG, "dhcp ip: %s" , req_payload->dhcp_ip.data); + if (req_payload->dhcp_nm.len) + ESP_LOGI(TAG, "dhcp nm: %s" , req_payload->dhcp_nm.data); + if (req_payload->dhcp_gw.len) + ESP_LOGI(TAG, "dhcp gw: %s" , req_payload->dhcp_gw.data); + if (req_payload->dns_ip.len) + ESP_LOGI(TAG, "dns ip: %s" , req_payload->dns_ip.data); + + RPC_REQ_COPY_BYTES(dhcp_ip, req_payload->dhcp_ip, sizeof(dhcp_ip)); + RPC_REQ_COPY_BYTES(dhcp_nm, req_payload->dhcp_nm, sizeof(dhcp_nm)); + RPC_REQ_COPY_BYTES(dhcp_gw, req_payload->dhcp_gw, sizeof(dhcp_gw)); + RPC_REQ_COPY_BYTES(dns_ip, req_payload->dns_ip, sizeof(dns_ip)); + + if (dhcp_up) + set_slave_static_ip(iface, dhcp_ip, dhcp_nm, dhcp_gw); + + if (dns_up) + set_slave_dns(iface, dns_ip, dns_type); +#else + + resp_payload->resp = ESP_FAIL; + +#endif + + return ESP_OK; +} static esp_err_t req_get_coprocessor_fw_version(Rpc *req, Rpc *resp, void *priv_data) { RPC_TEMPLATE_SIMPLE(RpcRespGetCoprocessorFwVersion, resp_get_coprocessor_fwversion, @@ -2023,19 +2733,6 @@ static esp_err_t req_get_coprocessor_fw_version(Rpc *req, Rpc *resp, void *priv_ return ESP_OK; } -#if 0 -static esp_err_t req_wifi_(Rpc *req, Rpc *resp, void *priv_data) -{ - RPC_TEMPLATE(RpcRespWifi, resp_wifi_, - RpcReqWifi, req_wifi_, - rpc__resp__wifi___init); - - RPC_RET_FAIL_IF(esp_wifi_(&cfg)); - - return ESP_OK; -} -#endif - static esp_rpc_req_t req_table[] = { { .req_num = RPC_ID__Req_GetMACAddress , @@ -2257,6 +2954,14 @@ static esp_rpc_req_t req_table[] = { .req_num = RPC_ID__Req_GetCoprocessorFwVersion, .command_handler = req_get_coprocessor_fw_version }, + { + .req_num = RPC_ID__Req_SetDhcpDnsStatus, + .command_handler = req_set_dhcp_dns_status + }, + { + .req_num = RPC_ID__Req_GetDhcpDnsStatus, + .command_handler = req_get_dhcp_dns_status + }, }; @@ -2549,8 +3254,34 @@ static esp_err_t rpc_evt_Event_WifiEventNoArgs(Rpc *ntfy, ntfy_payload->event_id = event_id; + ntfy_payload->resp = SUCCESS; return ESP_OK; } +#ifdef CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED +static esp_err_t rpc_evt_Event_DhcpDnsStatus(Rpc *ntfy, + const uint8_t *data, ssize_t len) +{ + NTFY_TEMPLATE(RPC_ID__Event_DhcpDnsStatus, + RpcEventDhcpDnsStatus, event_dhcp_dns, + rpc__event__dhcp_dns_status__init); + + rpc_dhcp_dns_status_t * p_a = (rpc_dhcp_dns_status_t*)data; + + ntfy_payload->iface = p_a->iface; + ntfy_payload->net_link_up = p_a->net_link_up; + ntfy_payload->dhcp_up = p_a->dhcp_up; + ntfy_payload->dns_up = p_a->dns_up; + ntfy_payload->dns_type = p_a->dns_type; + + NTFY_COPY_BYTES(ntfy_payload->dhcp_ip, p_a->dhcp_ip, sizeof(p_a->dhcp_ip)); + NTFY_COPY_BYTES(ntfy_payload->dhcp_nm, p_a->dhcp_nm, sizeof(p_a->dhcp_nm)); + NTFY_COPY_BYTES(ntfy_payload->dhcp_gw, p_a->dhcp_gw, sizeof(p_a->dhcp_gw)); + NTFY_COPY_BYTES(ntfy_payload->dns_ip, p_a->dns_ip, sizeof(p_a->dns_ip)); + + ntfy_payload->resp = SUCCESS; + return ESP_OK; +} +#endif esp_err_t rpc_evt_handler(uint32_t session_id,const uint8_t *inbuf, ssize_t inlen, uint8_t **outbuf, ssize_t *outlen, void *priv_data) @@ -2597,6 +3328,11 @@ esp_err_t rpc_evt_handler(uint32_t session_id,const uint8_t *inbuf, } case RPC_ID__Event_WifiEventNoArgs: { ret = rpc_evt_Event_WifiEventNoArgs(ntfy, inbuf, inlen); break; +#ifdef CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED + } case RPC_ID__Event_DhcpDnsStatus: { + ret = rpc_evt_Event_DhcpDnsStatus(ntfy, inbuf, inlen); + break; +#endif } default: { ESP_LOGE(TAG, "Incorrect/unsupported Ctrl Notification[%u]\n",ntfy->msg_id); goto err; diff --git a/slave/main/slave_control.h b/slave/main/slave_control.h index a2ef28a8..d05588c7 100644 --- a/slave/main/slave_control.h +++ b/slave/main/slave_control.h @@ -17,6 +17,7 @@ #define __SLAVE_CONTROL__H__ #include #include "interface.h" +#include "sdkconfig.h" #if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0) #define TIMEOUT_IN_SEC (1000 / portTICK_PERIOD_MS) @@ -28,6 +29,174 @@ #define PASSWORD_LENGTH 64 #define VENDOR_OUI_BUF 3 + + +#define mem_free(x) \ + { \ + if (x) { \ + free(x); \ + x = NULL; \ + } \ + } + + +#define NTFY_TEMPLATE(NtFy_MsgId, NtFy_TyPe, NtFy_StRuCt, InIt_FuN) \ + NtFy_TyPe *ntfy_payload = NULL; \ + ntfy_payload = (NtFy_TyPe*)calloc(1,sizeof(NtFy_TyPe)); \ + if (!ntfy_payload) { \ + ESP_LOGE(TAG,"Failed to allocate memory"); \ + return ESP_ERR_NO_MEM; \ + } \ + InIt_FuN(ntfy_payload); \ + ntfy->payload_case = NtFy_MsgId; \ + ntfy->NtFy_StRuCt = ntfy_payload; \ + ntfy_payload->resp = SUCCESS; + +#define RPC_TEMPLATE(RspTyPe, RspStRuCt, ReqType, ReqStruct, InIt_FuN) \ + RspTyPe *resp_payload = NULL; \ + ReqType *req_payload = NULL; \ + if (!req || !resp || !req->ReqStruct) { \ + ESP_LOGE(TAG, "Invalid parameters"); \ + return ESP_FAIL; \ + } \ + req_payload = req->ReqStruct; \ + resp_payload = (RspTyPe *)calloc(1, sizeof(RspTyPe)); \ + if (!resp_payload) { \ + ESP_LOGE(TAG, "Failed to alloc mem for resp.%s\n",#RspStRuCt); \ + return ESP_ERR_NO_MEM; \ + } \ + resp->RspStRuCt = resp_payload; \ + InIt_FuN(resp_payload); \ + resp_payload->resp = SUCCESS; \ + + +/* Simple is same above just, we dod not need req_payload unused warning */ +#define RPC_TEMPLATE_SIMPLE(RspTyPe, RspStRuCt, ReqType, ReqStruct, InIt_FuN) \ + RspTyPe *resp_payload = NULL; \ + if (!req || !resp) { \ + ESP_LOGE(TAG, "Invalid parameters"); \ + return ESP_FAIL; \ + } \ + resp_payload = (RspTyPe *)calloc(1, sizeof(RspTyPe)); \ + if (!resp_payload) { \ + ESP_LOGE(TAG, "Failed to alloc mem for resp.%s\n",#RspStRuCt); \ + return ESP_ERR_NO_MEM; \ + } \ + resp->RspStRuCt = resp_payload; \ + InIt_FuN(resp_payload); \ + resp_payload->resp = SUCCESS; \ + +#define RPC_RESP_ASSIGN_FIELD(PaRaM) \ + resp_payload->PaRaM = PaRaM + +#define RPC_RET_FAIL_IF(ConDiTiOn) do { \ + int rEt = (ConDiTiOn); \ + if (rEt) { \ + resp_payload->resp = rEt; \ + ESP_LOGE(TAG, "%s:%u failed [%s] = [%d]", __func__,__LINE__,#ConDiTiOn, rEt); \ + return ESP_OK; \ + } \ +} while(0); + + +#define RPC_ALLOC_ELEMENT(TyPe,MsG_StRuCt,InIt_FuN) { \ + TyPe *NeW_AllocN = (TyPe *)calloc(1, sizeof(TyPe)); \ + if (!NeW_AllocN) { \ + ESP_LOGI(TAG,"Failed to allocate memory for req.%s\n",#MsG_StRuCt); \ + resp_payload->resp = RPC_ERR_MEMORY_FAILURE; \ + goto err; \ + } \ + MsG_StRuCt = NeW_AllocN; \ + InIt_FuN(MsG_StRuCt); \ +} + +#define NTFY_ALLOC_ELEMENT(TyPe,MsG_StRuCt,InIt_FuN) { \ + TyPe *NeW_AllocN = (TyPe *)calloc(1, sizeof(TyPe)); \ + if (!NeW_AllocN) { \ + ESP_LOGI(TAG,"Failed to allocate memory for req.%s\n",#MsG_StRuCt); \ + ntfy_payload->resp = RPC_ERR_MEMORY_FAILURE; \ + goto err; \ + } \ + MsG_StRuCt = NeW_AllocN; \ + InIt_FuN(MsG_StRuCt); \ +} + +#define NTFY_COPY_BYTES(dest, src, num) \ + do { \ + if (num) { \ + dest.data = (uint8_t *)calloc(1, num); \ + if (!dest.data) { \ + ESP_LOGE(TAG, "%s:%u Failed to duplicate bytes\n",__func__,__LINE__); \ + ntfy_payload->resp = FAILURE; \ + return ESP_OK; \ + } \ + memcpy(dest.data, src, num); \ + dest.len = num; \ + } \ + } while(0) + +#define RPC_REQ_COPY_BYTES(dest, src, num_bytes) \ + if (src.len && src.data) \ + memcpy((char*)dest, src.data, min(min(sizeof(dest), num_bytes), src.len)); + +#define RPC_REQ_COPY_STR RPC_REQ_COPY_BYTES + + +#define RPC_RESP_COPY_STR(dest, src, max_len) \ + if (src) { \ + dest.data = (uint8_t*)strndup((char*)src, max_len); \ + if (!dest.data) { \ + ESP_LOGE(TAG, "%s:%u Failed to duplicate bytes\n",__func__,__LINE__); \ + resp_payload->resp = FAILURE; \ + return ESP_OK; \ + } \ + dest.len = min(max_len,strlen((char*)src)+1); \ + } + +#define RPC_RESP_COPY_BYTES_SRC_UNCHECKED(dest, src, num) \ + do { \ + if (num) { \ + dest.data = (uint8_t *)calloc(1, num); \ + if (!dest.data) { \ + ESP_LOGE(TAG, "%s:%u Failed to duplicate bytes\n",__func__,__LINE__); \ + resp_payload->resp = FAILURE; \ + return ESP_OK; \ + } \ + memcpy(dest.data, src, num); \ + dest.len = num; \ + } \ + } while(0) + +#define RPC_RESP_COPY_BYTES(dest, src, num) \ + if (src) { \ + RPC_RESP_COPY_BYTES_SRC_UNCHECKED(dest, src, num); \ + } + +#define RPC_COPY_STR(dest, src, max_len) \ + if (src) { \ + dest.data = (uint8_t*)strndup((char*)src, max_len); \ + if (!dest.data) { \ + ESP_LOGE(TAG, "%s:%u Failed to duplicate bytes\n",__func__,__LINE__); \ + return FAILURE; \ + } \ + dest.len = min(max_len,strlen((char*)src)+1); \ + } + +#define RPC_COPY_BYTES(dest, src, num) \ + do { \ + if (num) { \ + dest.data = (uint8_t *)calloc(1, num); \ + if (!dest.data) { \ + ESP_LOGE(TAG, "%s:%u Failed to duplicate bytes\n",__func__,__LINE__); \ + return FAILURE; \ + } \ + memcpy(dest.data, src, num); \ + dest.len = num; \ + } \ + } while(0) + + + esp_err_t data_transfer_handler(uint32_t session_id,const uint8_t *inbuf, ssize_t inlen,uint8_t **outbuf, ssize_t *outlen, void *priv_data); esp_err_t rpc_evt_handler(uint32_t session_id,const uint8_t *inbuf, @@ -35,4 +204,28 @@ esp_err_t rpc_evt_handler(uint32_t session_id,const uint8_t *inbuf, void send_event_to_host(int event_id); void send_event_data_to_host(int event_id, void *data, int size); + +#include "esp_wifi.h" + +esp_err_t esp_hosted_set_sta_config(wifi_interface_t iface, wifi_config_t *cfg); +esp_err_t esp_hosted_register_wifi_event_handlers(void); + +#ifdef CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED +/* DHCP/DNS status structure */ +typedef struct { + int iface; + int net_link_up; + int dhcp_up; + uint8_t dhcp_ip[64]; + uint8_t dhcp_nm[64]; + uint8_t dhcp_gw[64]; + int dns_up; + uint8_t dns_ip[64]; + int dns_type; +} rpc_dhcp_dns_status_t; + +/* Function declarations */ + +#endif /* CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED */ + #endif /*__SLAVE_CONTROL__H__*/ diff --git a/slave/main/spi_hd_slave_api.c b/slave/main/spi_hd_slave_api.c index 6bb1f503..a12eb6a9 100644 --- a/slave/main/spi_hd_slave_api.c +++ b/slave/main/spi_hd_slave_api.c @@ -289,14 +289,14 @@ static void start_rx_data_throttling_if_needed(void) return; queue_load = uxQueueMessagesWaiting(spi_hd_rx_queue[PRIO_Q_OTHERS]); -#if ESP_PKT_STATS - pkt_stats.slave_wifi_rx_msg_loaded = queue_load; -#endif load_percent = (queue_load*100/SPI_HD_QUEUE_SIZE); if (load_percent > slv_cfg_g.throttle_high_threshold) { slv_state_g.current_throttling = 1; wifi_flow_ctrl = 1; +#if ESP_PKT_STATS + pkt_stats.sta_flowctrl_on++; +#endif TRIGGER_FLOW_CTRL(); } } @@ -310,14 +310,15 @@ static void stop_rx_data_throttling_if_needed(void) if (slv_state_g.current_throttling) { queue_load = uxQueueMessagesWaiting(spi_hd_rx_queue[PRIO_Q_OTHERS]); -#if ESP_PKT_STATS - pkt_stats.slave_wifi_rx_msg_loaded = queue_load; -#endif + load_percent = (queue_load*100/SPI_HD_QUEUE_SIZE); if (load_percent < slv_cfg_g.throttle_low_threshold) { slv_state_g.current_throttling = 0; wifi_flow_ctrl = 0; +#if ESP_PKT_STATS + pkt_stats.sta_flowctrl_off++; +#endif TRIGGER_FLOW_CTRL(); } } @@ -406,6 +407,7 @@ static void spi_hd_rx_task(void* pvParameters) spi_slave_hd_data_t *ret_trans = NULL; esp_err_t res; uint16_t len = 0, offset = 0; + uint8_t flags = 0; struct esp_payload_header *header = NULL; interface_buffer_handle_t buf_handle = {0}; @@ -413,6 +415,8 @@ static void spi_hd_rx_task(void* pvParameters) uint16_t rx_checksum = 0, checksum = 0; #endif + ESP_LOGD(TAG, "starting spi_hd_rx_task"); + // prepare buffers and preload rx transactions for (i = 0; i < SPI_HD_QUEUE_SIZE; i++) { buf = spi_hd_buffer_rx_alloc(MEMSET_REQUIRED); @@ -433,7 +437,10 @@ static void spi_hd_rx_task(void* pvParameters) // spi hd now ready: open data path if (context.event_handler) { + ESP_LOGD(TAG, "Trigger open data path at slave"); context.event_handler(ESP_OPEN_DATA_PATH); + } else { + ESP_LOGW(TAG, "No event handler, skipping open data path"); } while (1) { @@ -460,7 +467,19 @@ static void spi_hd_rx_task(void* pvParameters) header = (struct esp_payload_header *)buf_handle.payload; len = le16toh(header->len); offset = le16toh(header->offset); - + flags = header->flags; + + if (flags & FLAG_POWER_SAVE_STARTED) { + ESP_LOGI(TAG, "Host informed starting to power sleep"); + if (context.event_handler) { + context.event_handler(ESP_POWER_SAVE_ON); + } + } else if (flags & FLAG_POWER_SAVE_STOPPED) { + ESP_LOGI(TAG, "Host informed that it waken up"); + if (context.event_handler) { + context.event_handler(ESP_POWER_SAVE_OFF); + } + } if (buf_handle.payload_len < len+offset) { ESP_LOGE(TAG, "%s: err: read_len[%u] < len[%u]+offset[%u]", __func__, buf_handle.payload_len, len, offset); @@ -529,6 +548,10 @@ static void spi_hd_tx_done_task(void* pvParameters) static interface_handle_t * esp_spi_hd_init(void) { + if (if_handle_g.state >= DEACTIVE) { + return &if_handle_g; + } + esp_err_t ret = ESP_OK; uint32_t value = 0; uint16_t prio_q_idx = 0; @@ -559,7 +582,7 @@ static interface_handle_t * esp_spi_hd_init(void) gpio_set_pull_mode(GPIO_SCLK, GPIO_PULLUP_ONLY); gpio_set_pull_mode(GPIO_CS, GPIO_PULLUP_ONLY); - ESP_LOGI(TAG, "SPI HD Host:%"PRIu16 " mode: %"PRIu16 ", Freq:ConfigAtHost", + ESP_LOGI(TAG, "SPI HD Host:%"PRIu16" mode: %"PRIu16 ", Freq:ConfigAtHost", SPI_HOST, slave_hd_cfg.mode); #if (NUM_DATA_BITS == 4) ESP_LOGI(TAG, "SPI HD GPIOs: Dat0: %"PRIu16 ", Dat1: %"PRIu16 ", Dat2: %"PRIu16 @@ -627,27 +650,33 @@ static interface_handle_t * esp_spi_hd_init(void) } assert(xTaskCreate(spi_hd_rx_task, "spi_hd_rx_task" , - CONFIG_ESP_DEFAULT_TASK_STACK_SIZE, NULL, - CONFIG_ESP_DEFAULT_TASK_PRIO, NULL) == pdTRUE); + CONFIG_ESP_HOSTED_DEFAULT_TASK_STACK_SIZE, NULL, + CONFIG_ESP_HOSTED_DEFAULT_TASK_PRIORITY, NULL) == pdTRUE); // task to clean up after doing tx assert(xTaskCreate(spi_hd_tx_done_task, "spi_hd_tx_done_task" , - CONFIG_ESP_DEFAULT_TASK_STACK_SIZE, NULL, - CONFIG_ESP_DEFAULT_TASK_PRIO, NULL) == pdTRUE); + CONFIG_ESP_HOSTED_DEFAULT_TASK_STACK_SIZE, NULL, + CONFIG_ESP_HOSTED_DEFAULT_TASK_PRIORITY, NULL) == pdTRUE); assert(xTaskCreate(flow_ctrl_task, "flow_ctrl_task" , - CONFIG_ESP_DEFAULT_TASK_STACK_SIZE, NULL , - CONFIG_ESP_DEFAULT_TASK_PRIO, NULL) == pdTRUE); + CONFIG_ESP_HOSTED_DEFAULT_TASK_STACK_SIZE, NULL , + CONFIG_ESP_HOSTED_DEFAULT_TASK_PRIORITY, NULL) == pdTRUE); // data path opened. Continue memset(&if_handle_g, 0, sizeof(if_handle_g)); - if_handle_g.state = INIT; + if_handle_g.state = ACTIVE; return &if_handle_g; } static void esp_spi_hd_deinit(interface_handle_t * handle) { +#if H_HOST_PS_ALLOWED && H_PS_UNLOAD_BUS_WHILE_PS + if (if_handle_g.state == DEINIT) { + ESP_LOGW(TAG, "SPI HD already deinitialized"); + return; + } + if_handle_g.state = DEINIT; spi_hd_mempool_destroy(); vSemaphoreDelete(mempool_tx_sem); mempool_tx_sem = NULL; @@ -658,6 +687,7 @@ static void esp_spi_hd_deinit(interface_handle_t * handle) } assert(spi_slave_hd_deinit(SPI_HOST) == ESP_OK); +#endif } static esp_err_t esp_spi_hd_reset(interface_handle_t *handle) @@ -734,7 +764,7 @@ static int32_t esp_spi_hd_write(interface_handle_t *handle, interface_buffer_han #endif ESP_LOGD(TAG, "sending %"PRIu32 " bytes", total_len); - ESP_HEXLOGD("spi_hd_tx", sendbuf, total_len); + ESP_HEXLOGD("spi_hd_tx", sendbuf, total_len, 32); tx_trans = spi_hd_trans_tx_alloc(MEMSET_REQUIRED); tx_trans->data = sendbuf; diff --git a/slave/main/spi_slave_api.c b/slave/main/spi_slave_api.c index a89d71c8..c0375893 100644 --- a/slave/main/spi_slave_api.c +++ b/slave/main/spi_slave_api.c @@ -1,17 +1,5 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2015-2021 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* SPDX-License-Identifier: Apache-2.0 */ +/* Copyright 2015-2025 Espressif Systems (Shanghai) PTE LTD */ #include "sdkconfig.h" #include @@ -32,6 +20,8 @@ #include "esp_hosted_transport.h" #include "esp_hosted_transport_init.h" #include "esp_hosted_header.h" +#include "host_power_save.h" +#include "esp_hosted_interface.h" static const char TAG[] = "SPI_DRIVER"; /* SPI settings */ @@ -122,9 +112,6 @@ static SemaphoreHandle_t wait_cs_deassert_sem; #endif static QueueHandle_t spi_rx_queue[MAX_PRIORITY_QUEUES]; static QueueHandle_t spi_tx_queue[MAX_PRIORITY_QUEUES]; -#if DUMMY_TRANS_DESIGN -static SemaphoreHandle_t spi_sema; -#endif static interface_handle_t * esp_spi_init(void); static int32_t esp_spi_write(interface_handle_t *handle, @@ -133,9 +120,7 @@ static int esp_spi_read(interface_handle_t *if_handle, interface_buffer_handle_t static esp_err_t esp_spi_reset(interface_handle_t *handle); static void esp_spi_deinit(interface_handle_t *handle); static void esp_spi_read_done(void *handle); -#if !DUMMY_TRANS_DESIGN static void queue_next_transaction(void); -#endif if_ops_t if_ops = { .init = esp_spi_init, @@ -149,9 +134,6 @@ if_ops_t if_ops = { static struct hosted_mempool * buf_mp_tx_g; static struct hosted_mempool * buf_mp_rx_g; static struct hosted_mempool * trans_mp_g; -#if DUMMY_TRANS_DESIGN -static uint8_t dummy_queued = pdFALSE; -#endif static inline void spi_mempool_create() { @@ -165,6 +147,8 @@ static inline void spi_mempool_create() assert(buf_mp_tx_g); assert(buf_mp_rx_g); assert(trans_mp_g); +#else + ESP_LOGI(TAG, "Using dynamic heap for mem alloc"); #endif } @@ -239,20 +223,23 @@ static inline int find_wifi_tx_throttling_to_be_set(void) } queue_load = uxQueueMessagesWaiting(spi_rx_queue[PRIO_Q_OTHERS]); -#if ESP_PKT_STATS - pkt_stats.slave_wifi_rx_msg_loaded = queue_load; -#endif load_percent = (queue_load*100/SPI_RX_QUEUE_SIZE); if (load_percent > slv_cfg_g.throttle_high_threshold) { slv_state_g.current_throttling = 1; ESP_LOGV(TAG, "throttling started"); +#if ESP_PKT_STATS + pkt_stats.sta_flowctrl_on++; +#endif } if (load_percent < slv_cfg_g.throttle_low_threshold) { slv_state_g.current_throttling = 0; ESP_LOGV(TAG, "throttling stopped"); +#if ESP_PKT_STATS + pkt_stats.sta_flowctrl_off++; +#endif } return slv_state_g.current_throttling; @@ -280,7 +267,7 @@ void generate_startup_event(uint8_t cap, uint32_t ext_cap) header->if_num = 0; header->offset = htole16(sizeof(struct esp_payload_header)); header->priv_pkt_type = ESP_PACKET_TYPE_EVENT; - header->throttle_cmd = find_wifi_tx_throttling_to_be_set(); + header->throttle_cmd = 0; /* Populate event data */ event = (struct esp_priv_event *) (buf_handle.payload + sizeof(struct esp_payload_header)); @@ -338,11 +325,9 @@ void generate_startup_event(uint8_t cap, uint32_t ext_cap) xQueueSend(spi_tx_queue[PRIO_Q_OTHERS], &buf_handle, portMAX_DELAY); xSemaphoreGive(spi_tx_sem); -#if !DUMMY_TRANS_DESIGN set_dataready_gpio(); /* process first data packet here to start transactions */ queue_next_transaction(); -#endif } @@ -353,47 +338,10 @@ static void IRAM_ATTR spi_post_setup_cb(spi_slave_transaction_t *trans) set_handshake_gpio(); } -#if DUMMY_TRANS_DESIGN -static inline int is_valid_trans_buffer(uint8_t *trans_buf) -{ - struct esp_payload_header *header; - uint16_t len, offset; - - if (!trans_buf) { - return pdFALSE; - } - - header = (struct esp_payload_header *) trans_buf; - - len = le16toh(header->len); - offset = le16toh(header->offset); - - if (!len || (len > SPI_BUFFER_SIZE) || - (offset != sizeof(struct esp_payload_header))) { - return pdFALSE; - } - - if ((header->if_type >= ESP_MAX_IF) || (header->if_num)) { - return pdFALSE; - } - - return pdTRUE; -} -#endif /* Invoked after transaction is sent/received. * Use this to set the handshake line low */ static void IRAM_ATTR spi_post_trans_cb(spi_slave_transaction_t *trans) { -#if DUMMY_TRANS_DESIGN - if (trans && is_valid_trans_buffer((uint8_t *)trans->tx_buffer)) { - /* Host has consumed a valid TX buffer - * Clear Data ready line and release semaphore */ - reset_dataready_gpio(); - - if (spi_sema) - xSemaphoreGive(spi_sema); - } -#endif #if !HS_DEASSERT_ON_CS /* Clear handshake line */ reset_handshake_gpio(); @@ -431,17 +379,8 @@ static uint8_t * get_next_tx_buffer(uint32_t *len) return buf_handle.payload; } -#if DUMMY_TRANS_DESIGN - /* Dummy transaction is already queued. Return. */ - if (dummy_queued) { - if (len) - *len = 0; - return NULL; - } -#else /* No real data pending, clear ready line and indicate host an idle state */ reset_dataready_gpio(); -#endif /* Create empty dummy buffer */ sendbuf = spi_buffer_tx_alloc(MEMSET_REQUIRED); @@ -471,6 +410,7 @@ static int process_spi_rx(interface_buffer_handle_t *buf_handle) { struct esp_payload_header *header = NULL; uint16_t len = 0, offset = 0; + uint8_t flags = 0; #if CONFIG_ESP_SPI_CHECKSUM uint16_t rx_checksum = 0, checksum = 0; #endif @@ -485,12 +425,28 @@ static int process_spi_rx(interface_buffer_handle_t *buf_handle) header = (struct esp_payload_header *) buf_handle->payload; len = le16toh(header->len); offset = le16toh(header->offset); + flags = header->flags; + ESP_LOGV(TAG, "process_spi_rx: flags[%u]", flags); - if (!len) + if (flags & FLAG_POWER_SAVE_STARTED) { + ESP_LOGI(TAG, "Host informed starting to power sleep"); + if (context.event_handler) { + context.event_handler(ESP_POWER_SAVE_ON); + } + } else if (flags & FLAG_POWER_SAVE_STOPPED) { + ESP_LOGI(TAG, "Host informed that it waken up"); + if (context.event_handler) { + context.event_handler(ESP_POWER_SAVE_OFF); + } + } + + if (!len) { + ESP_LOGV(TAG, "rx_pkt len[%u] is 0, dropping it", len); return -1; + } if ((len+offset) > SPI_BUFFER_SIZE) { - ESP_LOGE(TAG, "rx_pkt len[%u]>max[%u], dropping it", len+offset, SPI_BUFFER_SIZE); + ESP_LOGE(TAG, "rx_pkt len+offset[%u]>max[%u], dropping it", len+offset, SPI_BUFFER_SIZE); return -1; } @@ -507,6 +463,7 @@ static int process_spi_rx(interface_buffer_handle_t *buf_handle) return -1; } #endif + ESP_HEXLOGD("spi_rx", header, len, 32); /* Buffer is valid */ buf_handle->if_type = header->if_type; @@ -532,112 +489,28 @@ static int process_spi_rx(interface_buffer_handle_t *buf_handle) return 0; } -#if DUMMY_TRANS_DESIGN -static void spi_transaction_tx_task(void* pvParameters) -{ - spi_slave_transaction_t *spi_trans; - esp_err_t ret = 0; - interface_buffer_handle_t buf_handle; - - for(;;) { - xSemaphoreTake(spi_tx_sem, portMAX_DELAY); - - if (pdFALSE == xQueueReceive(spi_tx_queue[PRIO_Q_SERIAL], &buf_handle, 0)) - if (pdFALSE == xQueueReceive(spi_tx_queue[PRIO_Q_BT], &buf_handle, 0)) - if (pdFALSE == xQueueReceive(spi_tx_queue[PRIO_Q_OTHERS], &buf_handle, 0)) - ret = pdFALSE; - - if (ret == pdTRUE && buf_handle.payload) { - spi_trans = spi_trans_alloc(MEMSET_REQUIRED); - assert(spi_trans); - - /* Attach Rx Buffer */ - spi_trans->rx_buffer = spi_buffer_rx_alloc(MEMSET_REQUIRED); - assert(spi_trans->rx_buffer); - - /* Attach Tx Buffer */ - spi_trans->tx_buffer = buf_handle.payload; - - /* Transaction len */ - spi_trans->length = SPI_BUFFER_SIZE * SPI_BITS_PER_WORD; - - /* Execute transaction */ - xSemaphoreTake(spi_sema, portMAX_DELAY); - - spi_slave_queue_trans(ESP_SPI_CONTROLLER, spi_trans, - portMAX_DELAY); - - /* Set Data ready high */ - set_dataready_gpio(); - } - } -} - -static void queue_dummy_transaction() -{ - spi_slave_transaction_t *spi_trans = NULL; - esp_err_t ret = ESP_OK; - uint32_t len = 0; - uint8_t *tx_buffer = NULL; - - tx_buffer = get_next_tx_buffer(&len); - if (!tx_buffer) { - /* No need to queue dummy transaction */ - xSemaphoreGive(spi_sema); - return; - } - - spi_trans = spi_trans_alloc(MEMSET_REQUIRED); - assert(spi_trans); - - /* Attach Rx Buffer */ - spi_trans->rx_buffer = spi_buffer_rx_alloc(MEMSET_REQUIRED); - assert(spi_trans->rx_buffer); - - /* Attach Tx Buffer */ - spi_trans->tx_buffer = tx_buffer; - - /* Transaction len */ - spi_trans->length = SPI_BUFFER_SIZE * SPI_BITS_PER_WORD; - - ret = spi_slave_queue_trans(ESP_SPI_CONTROLLER, spi_trans, 0); - if (ret != ESP_OK) { - free(spi_trans->rx_buffer); - free((void *)spi_trans->tx_buffer); - free(spi_trans); - xSemaphoreGive(spi_sema); - return; - } - - if (!len) { - /* queued dummy transaction, release semaphore */ - dummy_queued = pdTRUE; - xSemaphoreGive(spi_sema); - } else { - /* Queued transaction with valid TX Buffer. Set Data ready high. */ - set_dataready_gpio(); - } -} - -#else static void queue_next_transaction(void) { spi_slave_transaction_t *spi_trans = NULL; uint32_t len = 0; uint8_t *tx_buffer = get_next_tx_buffer(&len); - if (!tx_buffer) { + if (unlikely(!tx_buffer)) { /* Queue next transaction failed */ ESP_LOGE(TAG , "Failed to queue new transaction\r\n"); return; } - ESP_HEXLOGD("spi_tx", tx_buffer, len); + ESP_HEXLOGD("spi_tx", tx_buffer, len, 32); spi_trans = spi_trans_alloc(MEMSET_REQUIRED); - assert(spi_trans); + if (unlikely(!spi_trans)) { + assert(spi_trans); + } /* Attach Rx Buffer */ spi_trans->rx_buffer = spi_buffer_rx_alloc(MEMSET_REQUIRED); - assert(spi_trans->rx_buffer); + if (unlikely(!spi_trans->rx_buffer)) { + assert(spi_trans->rx_buffer); + } /* Attach Tx Buffer */ spi_trans->tx_buffer = tx_buffer; @@ -647,18 +520,61 @@ static void queue_next_transaction(void) spi_slave_queue_trans(ESP_SPI_CONTROLLER, spi_trans, portMAX_DELAY); } -#endif static void spi_transaction_post_process_task(void* pvParameters) { spi_slave_transaction_t *spi_trans = NULL; -#if DUMMY_TRANS_DESIGN - struct esp_payload_header *header; -#endif esp_err_t ret = ESP_OK; interface_buffer_handle_t rx_buf_handle; + ESP_LOGI(TAG, "SPI post process task started"); for (;;) { + /* Check if interface is being deinitialized */ +#if H_PS_UNLOAD_BUS_WHILE_PS + if (if_handle_g.state == DEINIT) { + ESP_LOGI(TAG, "SPI deinit requested, cleaning up and exiting task..."); + + xSemaphoreGive(spi_rx_sem); + gpio_set_level(GPIO_HANDSHAKE, 0); + gpio_set_level(GPIO_DATA_READY, 0); /* Perform all resource cleanup from the task itself */ + gpio_uninstall_isr_service(); + spi_slave_disable(ESP_SPI_CONTROLLER); + spi_slave_free(ESP_SPI_CONTROLLER); + + if (spi_rx_sem) { + xSemaphoreGive(spi_rx_sem); + vSemaphoreDelete(spi_rx_sem); + spi_rx_sem = NULL; + } + for (int i = 0; i < MAX_PRIORITY_QUEUES; i++) { + if (spi_rx_queue[i]) { + vQueueDelete(spi_rx_queue[i]); + spi_rx_queue[i] = NULL; + } + } + if (spi_tx_sem) { + xSemaphoreGive(spi_tx_sem); + vSemaphoreDelete(spi_tx_sem); + spi_tx_sem = NULL; + } + for (int i = 0; i < MAX_PRIORITY_QUEUES; i++) { + if (spi_tx_queue[i]) { + vQueueDelete(spi_tx_queue[i]); + spi_tx_queue[i] = NULL; + } + } + spi_mempool_destroy(); + + // Allow re-initialization on next wakeup + spi_init_done = 0; + if_handle_g.state = DEINIT; + + ESP_LOGI(TAG, "SPI cleanup complete. Task terminating."); + vTaskDelete(NULL); + return; + } +#endif + memset(&rx_buf_handle, 0, sizeof(rx_buf_handle)); /* Await transmission result, after any kind of transmission a new packet @@ -666,32 +582,6 @@ static void spi_transaction_post_process_task(void* pvParameters) */ ESP_ERROR_CHECK(spi_slave_get_trans_result(ESP_SPI_CONTROLLER, &spi_trans, portMAX_DELAY)); -#if DUMMY_TRANS_DESIGN - if (spi_trans->tx_buffer) { - header = (struct esp_payload_header *) spi_trans->tx_buffer; - - if (header->if_type == 0xF && header->if_num == 0xF && header->offset == 0) { - /* Dummy Tx buffer consumed by host */ - dummy_queued = pdFALSE; - } - - spi_buffer_tx_free((void *)spi_trans->tx_buffer); - spi_trans->tx_buffer = NULL; - } - - /* Check if dummy transaction is needed - * - * If failed to obtain spi_sema: - * - Transaction is already queued. - * - No need to queue dummy transaction - * - * If spi_sema is obtained: queue dummy transaction - **/ - - ret = xSemaphoreTake(spi_sema, 0); - if (ret == pdTRUE) - queue_dummy_transaction(); -#else #if HS_DEASSERT_ON_CS /* Wait until CS has been deasserted before we queue a new transaction. @@ -715,17 +605,15 @@ static void spi_transaction_post_process_task(void* pvParameters) /* Free any tx buffer, data is not relevant anymore */ spi_buffer_tx_free((void *)spi_trans->tx_buffer); -#endif - /* Process received data */ - if (spi_trans->rx_buffer) { + if (likely(spi_trans->rx_buffer)) { rx_buf_handle.payload = spi_trans->rx_buffer; ret = process_spi_rx(&rx_buf_handle); /* free rx_buffer if process_spi_rx returns an error * In success case it will be freed later */ - if (ret != ESP_OK) { + if (unlikely(ret)) { spi_buffer_rx_free((void *)spi_trans->rx_buffer); } } else { @@ -774,6 +662,9 @@ static void register_hs_disable_pin(uint32_t gpio_num) static interface_handle_t * esp_spi_init(void) { + if (unlikely(if_handle_g.state >= DEACTIVE)) { + return &if_handle_g; + } esp_err_t ret = ESP_OK; uint16_t prio_q_idx = 0; @@ -869,7 +760,7 @@ static interface_handle_t * esp_spi_init(void) #endif memset(&if_handle_g, 0, sizeof(if_handle_g)); - if_handle_g.state = INIT; + if_handle_g.state = ACTIVE; spi_tx_sem = xSemaphoreCreateCounting(SPI_TX_QUEUE_SIZE*3, 0); assert(spi_tx_sem != NULL); @@ -884,20 +775,10 @@ static interface_handle_t * esp_spi_init(void) assert(spi_tx_queue[prio_q_idx] != NULL); } -#if DUMMY_TRANS_DESIGN - spi_sema = xSemaphoreCreateBinary(); - assert(spi_sema != NULL); - xSemaphoreGive(spi_sema); - - assert(xTaskCreate(spi_transaction_tx_task , "spi_tx_task" , - CONFIG_ESP_DEFAULT_TASK_STACK_SIZE, NULL, - CONFIG_ESP_DEFAULT_TASK_PRIO+1, NULL) == pdTRUE); -#endif assert(xTaskCreate(spi_transaction_post_process_task , "spi_post_process_task" , - CONFIG_ESP_DEFAULT_TASK_STACK_SIZE, NULL, - CONFIG_ESP_DEFAULT_TASK_PRIO, NULL) == pdTRUE); + CONFIG_ESP_HOSTED_DEFAULT_TASK_STACK_SIZE, NULL, + CONFIG_ESP_HOSTED_DEFAULT_TASK_PRIORITY, NULL) == pdTRUE); - usleep(500); return &if_handle_g; } @@ -909,12 +790,17 @@ static int32_t esp_spi_write(interface_handle_t *handle, interface_buffer_handle struct esp_payload_header *header = NULL; interface_buffer_handle_t tx_buf_handle = {0}; - if (!handle || !buf_handle) { + if (unlikely(handle->state < ACTIVE)) { + ESP_LOGE(TAG, "SPI is not active\n"); + return ESP_FAIL; + } + + if (unlikely(!handle || !buf_handle)) { ESP_LOGE(TAG , "Invalid arguments\n"); return ESP_FAIL; } - if (!buf_handle->payload_len || !buf_handle->payload) { + if (unlikely(!buf_handle->payload_len || !buf_handle->payload)) { ESP_LOGE(TAG , "Invalid arguments, len:%d\n", buf_handle->payload_len); return ESP_FAIL; } @@ -926,7 +812,7 @@ static int32_t esp_spi_write(interface_handle_t *handle, interface_buffer_handle MAKE_SPI_DMA_ALIGNED(total_len); } - if (total_len > SPI_BUFFER_SIZE) { + if (unlikely(total_len > SPI_BUFFER_SIZE)) { #if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0) ESP_LOGE(TAG, "Max frame length exceeded %ld.. drop it\n", total_len); #else @@ -955,7 +841,7 @@ static int32_t esp_spi_write(interface_handle_t *handle, interface_buffer_handle header->seq_num = htole16(buf_handle->seq_num); header->flags = buf_handle->flag; - header->throttle_cmd = find_wifi_tx_throttling_to_be_set(); + tx_buf_handle.wifi_flow_ctrl_en = find_wifi_tx_throttling_to_be_set(); /* copy the data from caller */ memcpy(tx_buf_handle.payload + offset, buf_handle->payload, buf_handle->payload_len); @@ -988,12 +874,18 @@ static void IRAM_ATTR esp_spi_read_done(void *handle) static int esp_spi_read(interface_handle_t *if_handle, interface_buffer_handle_t *buf_handle) { - if (!if_handle) { + if (unlikely(!if_handle)) { ESP_LOGE(TAG, "Invalid arguments to esp_spi_read\n"); return ESP_FAIL; } - xSemaphoreTake(spi_rx_sem, portMAX_DELAY); + if (likely(spi_rx_sem)) { + xSemaphoreTake(spi_rx_sem, portMAX_DELAY); + } + if (unlikely(if_handle->state < DEACTIVE)) { + ESP_LOGE(TAG, "spi slave bus inactive\n"); + return ESP_FAIL; + } if (pdFALSE == xQueueReceive(spi_rx_queue[PRIO_Q_SERIAL], buf_handle, 0)) if (pdFALSE == xQueueReceive(spi_rx_queue[PRIO_Q_BT], buf_handle, 0)) @@ -1017,23 +909,15 @@ static esp_err_t esp_spi_reset(interface_handle_t *handle) static void esp_spi_deinit(interface_handle_t *handle) { - esp_err_t ret = ESP_OK; - - spi_mempool_destroy(); -#if DUMMY_TRANS_DESIGN - if (spi_sema) - vSemaphoreDelete(spi_sema); -#endif - - ret = spi_slave_free(ESP_SPI_CONTROLLER); - if (ESP_OK != ret) { - ESP_LOGE(TAG, "spi slave bus free failed\n"); + if (!handle) { return; } - - ret = spi_bus_free(ESP_SPI_CONTROLLER); - if (ESP_OK != ret) { - ESP_LOGE(TAG, "spi all bus free failed\n"); +#if H_PS_UNLOAD_BUS_WHILE_PS + if (if_handle_g.state == DEINIT) { + ESP_LOGW(TAG, "SPI already deinitialized"); return; } + handle->state = DEINIT; + ESP_LOGI(TAG, "SPI deinit requested. Signaling spi task to exit."); +#endif } diff --git a/slave/main/stats.c b/slave/main/stats.c index e506f162..23bb2d6a 100644 --- a/slave/main/stats.c +++ b/slave/main/stats.c @@ -1,134 +1,205 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2015-2022 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// +/* SPDX-License-Identifier: Apache-2.0 + * Copyright 2015-2025 Espressif Systems (Shanghai) PTE LTD + */ #include "stats.h" #include #include "esp_log.h" #include "esp_hosted_transport_init.h" +#include "esp_hosted_header.h" #if TEST_RAW_TP || ESP_PKT_STATS || CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS static const char TAG[] = "stats"; -#endif +#endif /* TEST_RAW_TP || ESP_PKT_STATS || CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS || ESP_PKT_NUM_DEBUG */ -#if ESP_PKT_STATS || TEST_RAW_TP -#define ESP_PKT_STATS_REPORT_INTERVAL 10 -struct pkt_stats_t pkt_stats; -#endif +#if ESP_PKT_NUM_DEBUG +struct dbg_stats_t dbg_stats; +#endif /* ESP_PKT_NUM_DEBUG */ + +#if ESP_PKT_STATS + #define ESP_PKT_STATS_REPORT_INTERVAL CONFIG_ESP_PKT_STATS_INTERVAL_SEC + struct pkt_stats_t pkt_stats; +#endif /* ESP_PKT_STATS */ + +#ifdef ESP_FUNCTION_PROFILING +/* Define the global variables */ +struct timing_stats_entry timing_entries[CONFIG_ESP_HOSTED_FUNCTION_PROFILING_MAX_ENTRIES] = {0}; +int num_timing_entries = 0; + +/* Function to register new timing stats */ +struct timing_stats* register_prof_stats(const char *func_name) +{ + if (num_timing_entries >= CONFIG_ESP_HOSTED_FUNCTION_PROFILING_MAX_ENTRIES) { + ESP_LOGE(TAG, "Max timing stats reached"); + return NULL; + } + + /* Check if already registered */ + for (int i = 0; i < num_timing_entries; i++) { + if (strcmp(timing_entries[i].name, func_name) == 0) { + return &timing_entries[i].stats; + } + } + + /* Add new entry */ + timing_entries[num_timing_entries].name = func_name; + timing_entries[num_timing_entries].active = true; + num_timing_entries++; + + return &timing_entries[num_timing_entries-1].stats; +} + +/* Function to get timing measure for a stats entry */ +struct timing_measure* get_prof_data(struct timing_stats *s) +{ + for (int i = 0; i < num_timing_entries; i++) { + if (&timing_entries[i].stats == s) { + return &timing_entries[i].measure; + } + } + return NULL; +} + +/* Print timing stats function */ +static void print_timing_stats(struct timing_measure *t, struct timing_stats *s, const char *name) +{ + if (!t || !s || !name) { + ESP_LOGE(TAG, "Invalid arguments"); + return; + } + + s->avg_time = t->total_time / t->count; + + ESP_LOGI(TAG, "[%s] Timing Stats - Count: %" PRIu32 ", Min: %" PRIu32 " us, Max: %" PRIu32 " us, Avg: %" PRIu32 " us", + name, + t->count, + s->min_time, + s->max_time, + s->avg_time); +} +#endif /* ESP_FUNCTION_PROFILING */ #ifdef CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS /* These functions are only for debugging purpose * Please do not enable in production environments */ -static esp_err_t log_real_time_stats(TickType_t xTicksToWait) { - TaskStatus_t *start_array = NULL, *end_array = NULL; - UBaseType_t start_array_size, end_array_size; - uint32_t start_run_time, end_run_time; - esp_err_t ret; - - /*Allocate array to store current task states*/ - start_array_size = uxTaskGetNumberOfTasks() + ARRAY_SIZE_OFFSET; - start_array = malloc(sizeof(TaskStatus_t) * start_array_size); - if (start_array == NULL) { - ret = ESP_ERR_NO_MEM; - goto exit; - } - /*Get current task states*/ - start_array_size = uxTaskGetSystemState(start_array, start_array_size, &start_run_time); - if (start_array_size == 0) { - ret = ESP_ERR_INVALID_SIZE; - goto exit; - } - - vTaskDelay(xTicksToWait); - - /*Allocate array to store tasks states post delay*/ - end_array_size = uxTaskGetNumberOfTasks() + ARRAY_SIZE_OFFSET; - end_array = malloc(sizeof(TaskStatus_t) * end_array_size); - if (end_array == NULL) { - ret = ESP_ERR_NO_MEM; - goto exit; - } - /*Get post delay task states*/ - end_array_size = uxTaskGetSystemState(end_array, end_array_size, &end_run_time); - if (end_array_size == 0) { - ret = ESP_ERR_INVALID_SIZE; - goto exit; - } - - /*Calculate total_elapsed_time in units of run time stats clock period.*/ - uint32_t total_elapsed_time = (end_run_time - start_run_time); - if (total_elapsed_time == 0) { - ret = ESP_ERR_INVALID_STATE; - goto exit; - } - - ESP_LOGI(TAG,"| Task | Run Time | Percentage\n"); - /*Match each task in start_array to those in the end_array*/ - for (int i = 0; i < start_array_size; i++) { - int k = -1; - for (int j = 0; j < end_array_size; j++) { - if (start_array[i].xHandle == end_array[j].xHandle) { - k = j; - /*Mark that task have been matched by overwriting their handles*/ - start_array[i].xHandle = NULL; - end_array[j].xHandle = NULL; - break; - } - } - /*Check if matching task found*/ - if (k >= 0) { - uint32_t task_elapsed_time = end_array[k].ulRunTimeCounter - start_array[i].ulRunTimeCounter; - uint32_t percentage_time = (task_elapsed_time * 100UL) / (total_elapsed_time * portNUM_PROCESSORS); +static esp_err_t log_real_time_stats(TickType_t xTicksToWait) +{ + TaskStatus_t *start_array = NULL, *end_array = NULL; + UBaseType_t start_array_size, end_array_size; + uint32_t start_run_time, end_run_time; + esp_err_t ret; + + /*Allocate array to store current task states*/ + start_array_size = uxTaskGetNumberOfTasks() + ARRAY_SIZE_OFFSET; + start_array = malloc(sizeof(TaskStatus_t) * start_array_size); + if (start_array == NULL) { + ret = ESP_ERR_NO_MEM; + goto exit; + } + /*Get current task states*/ + start_array_size = uxTaskGetSystemState(start_array, start_array_size, &start_run_time); + if (start_array_size == 0) { + ret = ESP_ERR_INVALID_SIZE; + goto exit; + } + + vTaskDelay(xTicksToWait); + + /*Allocate array to store tasks states post delay*/ + end_array_size = uxTaskGetNumberOfTasks() + ARRAY_SIZE_OFFSET; + end_array = malloc(sizeof(TaskStatus_t) * end_array_size); + if (end_array == NULL) { + ret = ESP_ERR_NO_MEM; + goto exit; + } + /*Get post delay task states*/ + end_array_size = uxTaskGetSystemState(end_array, end_array_size, &end_run_time); + if (end_array_size == 0) { + ret = ESP_ERR_INVALID_SIZE; + goto exit; + } + + /*Calculate total_elapsed_time in units of run time stats clock period.*/ + uint32_t total_elapsed_time = (end_run_time - start_run_time); + if (total_elapsed_time == 0) { + ret = ESP_ERR_INVALID_STATE; + goto exit; + } + + ESP_LOGI(TAG,"| Task | Run Time | Percentage\n"); + /*Match each task in start_array to those in the end_array*/ + for (int i = 0; i < start_array_size; i++) { + int k = -1; + for (int j = 0; j < end_array_size; j++) { + if (start_array[i].xHandle == end_array[j].xHandle) { + k = j; + /*Mark that task have been matched by overwriting their handles*/ + start_array[i].xHandle = NULL; + end_array[j].xHandle = NULL; + break; + } + } + /*Check if matching task found*/ + if (k >= 0) { + uint32_t task_elapsed_time = end_array[k].ulRunTimeCounter - start_array[i].ulRunTimeCounter; + uint32_t percentage_time = (task_elapsed_time * 100UL) / (total_elapsed_time * portNUM_PROCESSORS); ESP_LOGI(TAG,"| %s | %" PRIu32 " | %" PRIu32 "%%\n", start_array[i].pcTaskName, task_elapsed_time, percentage_time); - } - } - - /*Print unmatched tasks*/ - for (int i = 0; i < start_array_size; i++) { - if (start_array[i].xHandle != NULL) { - ESP_LOGI(TAG,"| %s | Deleted\n", start_array[i].pcTaskName); - } - } - for (int i = 0; i < end_array_size; i++) { - if (end_array[i].xHandle != NULL) { - ESP_LOGI(TAG,"| %s | Created\n", end_array[i].pcTaskName); - } - } - ret = ESP_OK; + } + } + + /*Print unmatched tasks*/ + for (int i = 0; i < start_array_size; i++) { + if (start_array[i].xHandle != NULL) { + ESP_LOGI(TAG,"| %s | Deleted\n", start_array[i].pcTaskName); + } + } + for (int i = 0; i < end_array_size; i++) { + if (end_array[i].xHandle != NULL) { + ESP_LOGI(TAG,"| %s | Created\n", end_array[i].pcTaskName); + } + } + ret = ESP_OK; exit: /*Common return path*/ if (start_array) free(start_array); if (end_array) free(end_array); - return ret; + return ret; } -static void log_runtime_stats_task(void* pvParameters) { - while (1) { - ESP_LOGI(TAG,"\n\nGetting real time stats over %d ticks\n", STATS_TICKS); - if (log_real_time_stats(STATS_TICKS) == ESP_OK) { - ESP_LOGI(TAG,"Real time stats obtained\n"); - } else { - ESP_LOGE(TAG,"Error getting real time stats\n"); - } - vTaskDelay(pdMS_TO_TICKS(1000*2)); - } +static void print_mem_stats() +{ + uint32_t freeSize = esp_get_free_heap_size(); + printf("The available total size of heap:%" PRIu32 "\n", freeSize); + + printf("\tDescription\tInternal\tSPIRAM\n"); + printf("Current Free Memory\t%d\t\t%d\n", + heap_caps_get_free_size(MALLOC_CAP_8BIT) - heap_caps_get_free_size(MALLOC_CAP_SPIRAM), + heap_caps_get_free_size(MALLOC_CAP_SPIRAM)); + printf("Largest Free Block\t%d\t\t%d\n", + heap_caps_get_largest_free_block(MALLOC_CAP_8BIT | MALLOC_CAP_INTERNAL), + heap_caps_get_largest_free_block(MALLOC_CAP_SPIRAM)); + printf("Min. Ever Free Size\t%d\t\t%d\n", + heap_caps_get_minimum_free_size(MALLOC_CAP_8BIT | MALLOC_CAP_INTERNAL), + heap_caps_get_minimum_free_size(MALLOC_CAP_SPIRAM)); } -#endif + +static void log_runtime_stats_task(void* pvParameters) +{ + while (1) { + ESP_LOGI(TAG, "\n\nGetting real time stats over %d ticks\n", (int)STATS_TICKS); + if (log_real_time_stats(STATS_TICKS) == ESP_OK) { + ESP_LOGI(TAG, "Real time stats obtained\n"); + } else { + ESP_LOGE(TAG, "Error getting real time stats\n"); + } + print_mem_stats(); + vTaskDelay(STATS_TICKS); + } +} +#endif /* CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS */ #if TEST_RAW_TP uint64_t test_raw_tp_rx_len; @@ -136,10 +207,10 @@ uint64_t test_raw_tp_tx_len; void debug_update_raw_tp_rx_count(uint16_t len) { - test_raw_tp_rx_len += (len); + test_raw_tp_rx_len += len; } -// static buffer to hold tx data during test +/* static buffer to hold tx data during test */ DMA_ATTR static uint8_t tx_buf[TEST_RAW_TP__BUF_SIZE]; extern volatile uint8_t datapath; @@ -153,10 +224,10 @@ static void raw_tp_tx_task(void* pvParameters) sleep(5); - // initialise the static buffer + /* initialise the static buffer */ raw_tp_tx_buf = tx_buf; ptr = (uint32_t*)raw_tp_tx_buf; - // initialise the tx buffer + /* initialise the tx buffer */ for (i=0; i<(TEST_RAW_TP__BUF_SIZE/4-1); i++, ptr++) *ptr = 0xdeadbeef; @@ -172,7 +243,7 @@ static void raw_tp_tx_task(void* pvParameters) buf_handle.payload = raw_tp_tx_buf; buf_handle.payload_len = TEST_RAW_TP__BUF_SIZE; - // free the buffer after it has been sent + /* free the buffer after it has been sent */ buf_handle.free_buf_handle = NULL; buf_handle.priv_buffer_handle = buf_handle.payload; @@ -185,12 +256,13 @@ static void raw_tp_tx_task(void* pvParameters) test_raw_tp_tx_len += (TEST_RAW_TP__BUF_SIZE); } } -#endif +#endif /* TEST_RAW_TP */ #if TEST_RAW_TP || ESP_PKT_STATS static void stats_timer_func(void* arg) { + /* Rest of existing stats_timer_func code */ #if TEST_RAW_TP static int32_t cur = 0; double actual_bandwidth_rx = 0; @@ -208,13 +280,40 @@ static void stats_timer_func(void* arg) test_raw_tp_rx_len = test_raw_tp_tx_len = 0; #endif #if ESP_PKT_STATS - ESP_LOGI(TAG, "slave StaRxQLoad: %8lu \nH=>S: sta: in: %8lu out: %8lu fail: %8lu \nH<=S: sta: in: %8lu out: %8lu \n serial : in: %8lu rsp: %8lu evt: %8lu", - pkt_stats.slave_wifi_rx_msg_loaded, + ESP_LOGI(TAG, "STA: flw_ctrl(on[%lu] off[%lu]) H2S(in[%lu] out[%lu] fail[%lu]) S2H(in[%lu] out[%lu]) Ctrl: (in[%lu] rsp[%lu] evt[%lu])", + pkt_stats.sta_flowctrl_on, pkt_stats.sta_flowctrl_off, pkt_stats.hs_bus_sta_in,pkt_stats.hs_bus_sta_out, pkt_stats.hs_bus_sta_fail, pkt_stats.sta_sh_in,pkt_stats.sta_sh_out, pkt_stats.serial_rx, pkt_stats.serial_tx_total, pkt_stats.serial_tx_evt); + ESP_LOGI(TAG, "Lwip: in[%lu] slave_out[%lu] host_out[%lu] both_out[%lu]", + pkt_stats.sta_lwip_in, pkt_stats.sta_slave_lwip_out, + pkt_stats.sta_host_lwip_out, pkt_stats.sta_both_lwip_out); + +#ifdef ESP_FUNCTION_PROFILING + /* Print timing stats for all active entries */ + for (int i = 0; i < num_timing_entries; i++) { + if (!timing_entries[i].active || !timing_entries[i].measure.count) { + continue; + } + + struct timing_measure *t = &timing_entries[i].measure; + struct timing_stats *s = &timing_entries[i].stats; + + /* Calculate rate and print stats in one pass */ + uint32_t rate = (uint32_t)(t->count / CONFIG_ESP_PKT_STATS_INTERVAL_SEC); + s->avg_time = t->total_time / t->count; + + ESP_LOGI(TAG, "[%s] Stats - Count: %" PRIu32 ", Min: %" PRIu32 ", Max: %" PRIu32 ", Avg: %" PRIu32 " us, Rate: %" PRIu32 "/s", + timing_entries[i].name, + t->count, + s->min_time, + s->max_time, + s->avg_time, + rate); + } +#endif /* ESP_FUNCTION_PROFILING */ +#endif /* ESP_PKT_STATS */ -#endif } static void start_timer_to_display_stats(int periodic_time_sec) @@ -233,7 +332,7 @@ static void start_timer_to_display_stats(int periodic_time_sec) ESP_ERROR_CHECK(esp_timer_start_periodic(raw_tp_timer, SEC_TO_USEC(periodic_time_sec))); } -#endif +#endif /* TEST_RAW_TP || ESP_PKT_STATS */ #if TEST_RAW_TP @@ -241,21 +340,21 @@ void process_test_capabilities(uint8_t capabilities) { ESP_LOGD(TAG, "capabilites: %d", capabilities); if ((capabilities & ESP_TEST_RAW_TP__ESP_TO_HOST) || - (capabilities & ESP_TEST_RAW_TP__BIDIRECTIONAL)) { + (capabilities & ESP_TEST_RAW_TP__BIDIRECTIONAL)) { assert(xTaskCreate(raw_tp_tx_task , "raw_tp_tx_task", - CONFIG_ESP_DEFAULT_TASK_STACK_SIZE, NULL , - CONFIG_ESP_DEFAULT_TASK_PRIO, NULL) == pdTRUE); + CONFIG_ESP_HOSTED_DEFAULT_TASK_STACK_SIZE, NULL , + CONFIG_ESP_HOSTED_DEFAULT_TASK_PRIORITY, NULL) == pdTRUE); } } -#endif +#endif /* TEST_RAW_TP */ void create_debugging_tasks(void) { #ifdef CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS assert(xTaskCreate(log_runtime_stats_task, "log_runtime_stats_task", - CONFIG_ESP_DEFAULT_TASK_STACK_SIZE, NULL, - CONFIG_ESP_DEFAULT_TASK_PRIO, NULL) == pdTRUE); -#endif + CONFIG_ESP_HOSTED_DEFAULT_TASK_STACK_SIZE, NULL, + /*CONFIG_ESP_HOSTED_DEFAULT_TASK_PRIORITY*/ 1, NULL) == pdTRUE); +#endif /* CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS */ #if TEST_RAW_TP || ESP_PKT_STATS start_timer_to_display_stats(ESP_PKT_STATS_REPORT_INTERVAL); diff --git a/slave/main/stats.h b/slave/main/stats.h index 14dea402..148e26bd 100644 --- a/slave/main/stats.h +++ b/slave/main/stats.h @@ -1,5 +1,5 @@ // SPDX-License-Identifier: Apache-2.0 -// Copyright 2015-2021 Espressif Systems (Shanghai) PTE LTD +// Copyright 2015-2025 Espressif Systems (Shanghai) PTE LTD // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -23,11 +23,18 @@ #include "freertos/FreeRTOS.h" #include "freertos/semphr.h" #include "freertos/task.h" +#include "esp_timer.h" +#include "esp_hosted_header.h" #define SEC_TO_MSEC(x) (x*1000) #define MSEC_TO_USEC(x) (x*1000) #define SEC_TO_USEC(x) (x*1000*1000) +/* Change the feature flag definition */ +#ifdef CONFIG_ESP_HOSTED_FUNCTION_PROFILING +#define ESP_FUNCTION_PROFILING 1 +#endif + /* Stats CONFIG: * @@ -104,7 +111,33 @@ typedef struct { void debug_update_raw_tp_rx_count(uint16_t len); #endif -#if ESP_PKT_STATS || TEST_RAW_TP +#ifdef ESP_PKT_NUM_DEBUG +struct dbg_stats_t { + uint16_t tx_pkt_num; + uint16_t exp_rx_pkt_num; +}; + +extern struct dbg_stats_t dbg_stats; +#define UPDATE_HEADER_TX_PKT_NO(h) h->pkt_num = htole16(dbg_stats.tx_pkt_num++) +#define UPDATE_HEADER_RX_PKT_NO(h) \ + do { \ + uint16_t rcvd_pkt_num = le16toh(header->pkt_num); \ + if (dbg_stats.exp_rx_pkt_num != rcvd_pkt_num) { \ + ESP_LOGW(TAG, "exp_pkt_num[%u], rx_pkt_num[%u]", \ + dbg_stats.exp_rx_pkt_num, rcvd_pkt_num); \ + dbg_stats.exp_rx_pkt_num = rcvd_pkt_num; \ + } \ + dbg_stats.exp_rx_pkt_num++; \ + } while(0); + +#else /*ESP_PKT_NUM_DEBUG*/ + +#define UPDATE_HEADER_TX_PKT_NO(h) +#define UPDATE_HEADER_RX_PKT_NO(h) + +#endif /*ESP_PKT_NUM_DEBUG*/ + +#if ESP_PKT_STATS struct pkt_stats_t { uint32_t sta_sh_in; uint32_t sta_sh_out; @@ -114,14 +147,102 @@ struct pkt_stats_t { uint32_t serial_rx; uint32_t serial_tx_total; uint32_t serial_tx_evt; - uint32_t slave_wifi_rx_msg_loaded; + uint32_t sta_flowctrl_on; + uint32_t sta_flowctrl_off; + uint32_t sta_lwip_in; + uint32_t sta_slave_lwip_out; + uint32_t sta_host_lwip_out; + uint32_t sta_both_lwip_out; }; extern struct pkt_stats_t pkt_stats; + #endif void process_test_capabilities(uint8_t capabilities); void create_debugging_tasks(void); uint8_t debug_get_raw_tp_conf(void); + +/* Add these declarations before the macros */ + +#ifdef ESP_FUNCTION_PROFILING + +/* Timing measurement stats */ +struct timing_measure { + uint32_t start_time; + uint32_t end_time; + uint32_t total_time; + uint32_t count; +}; + +struct timing_stats { + uint32_t min_time; + uint32_t max_time; + uint32_t avg_time; +}; + +/* Move struct definition to header file */ +struct timing_stats_entry { + const char *name; + struct timing_measure measure; + struct timing_stats stats; + bool active; +}; + + +#define ESP_HOSTED_FUNC_PROF_START(func_name) do { \ + struct timing_stats *s = register_prof_stats(func_name); \ + if (!s) { \ + ESP_LOGE(TAG, "Failed to register timing stats for %s", func_name); \ + break; \ + } \ + struct timing_measure *t = get_prof_data(s); \ + if (!t) { \ + ESP_LOGE(TAG, "Failed to get timing measure for %s", func_name); \ + break; \ + } \ + t->start_time = esp_timer_get_time(); \ +} while(0) + +#define ESP_HOSTED_FUNC_PROF_END(func_name) do { \ + struct timing_stats *s = NULL; \ + struct timing_measure *t = NULL; \ + for (int i = 0; i < num_timing_entries; i++) { \ + if (strcmp(timing_entries[i].name, func_name) == 0) { \ + s = &timing_entries[i].stats; \ + t = &timing_entries[i].measure; \ + break; \ + } \ + } \ + if (!s || !t) { \ + ESP_LOGE(TAG, "Failed to find timing stats for %s", func_name); \ + break; \ + } \ + t->end_time = esp_timer_get_time(); \ + t->count++; \ + int64_t elapsed = t->end_time - t->start_time; \ + t->total_time += elapsed; \ + if (s->min_time == 0 || elapsed < s->min_time) { \ + s->min_time = elapsed; \ + } \ + if (elapsed > s->max_time) { \ + s->max_time = elapsed; \ + } \ + if (t->count > 0) { \ + s->avg_time = t->total_time / t->count; \ + } \ +} while(0) + +extern struct timing_stats_entry timing_entries[CONFIG_ESP_HOSTED_FUNCTION_PROFILING_MAX_ENTRIES]; +extern int num_timing_entries; + +/* Function declarations */ +struct timing_stats* register_prof_stats(const char *func_name); +struct timing_measure* get_prof_data(struct timing_stats *s); +#else +#define ESP_HOSTED_FUNC_PROF_START(func_name) +#define ESP_HOSTED_FUNC_PROF_END(func_name) +#endif + #endif /*__STATS__H__*/ diff --git a/slave/main/uart_slave_api.c b/slave/main/uart_slave_api.c index d3a618ab..c298bd87 100644 --- a/slave/main/uart_slave_api.c +++ b/slave/main/uart_slave_api.c @@ -174,14 +174,15 @@ static void start_rx_data_throttling_if_needed(void) return; queue_load = uxQueueMessagesWaiting(uart_rx_queue[PRIO_Q_OTHERS]); -#if ESP_PKT_STATS - pkt_stats.slave_wifi_rx_msg_loaded = queue_load; -#endif + load_percent = (queue_load*100/HOSTED_UART_RX_QUEUE_SIZE); if (load_percent > slv_cfg_g.throttle_high_threshold) { slv_state_g.current_throttling = 1; wifi_flow_ctrl = 1; +#if ESP_PKT_STATS + pkt_stats.sta_flowctrl_on++; +#endif TRIGGER_FLOW_CTRL(); } } @@ -195,14 +196,15 @@ static void stop_rx_data_throttling_if_needed(void) if (slv_state_g.current_throttling) { queue_load = uxQueueMessagesWaiting(uart_rx_queue[PRIO_Q_OTHERS]); -#if ESP_PKT_STATS - pkt_stats.slave_wifi_rx_msg_loaded = queue_load; -#endif + load_percent = (queue_load*100/HOSTED_UART_RX_QUEUE_SIZE); if (load_percent < slv_cfg_g.throttle_low_threshold) { slv_state_g.current_throttling = 0; wifi_flow_ctrl = 0; +#if ESP_PKT_STATS + pkt_stats.sta_flowctrl_off++; +#endif TRIGGER_FLOW_CTRL(); } } @@ -229,6 +231,7 @@ static void uart_rx_task(void* pvParameters) #endif int bytes_read; int total_len; + uint8_t flags = 0; // delay for a while to let app main threads start and become ready vTaskDelay(100 / portTICK_PERIOD_MS); @@ -256,6 +259,19 @@ static void uart_rx_task(void* pvParameters) continue; } + flags = header->flags; + + if (flags & FLAG_POWER_SAVE_STARTED) { + ESP_LOGI(TAG, "Host informed starting to power sleep"); + if (context.event_handler) { + context.event_handler(ESP_POWER_SAVE_ON); + } + } else if (flags & FLAG_POWER_SAVE_STOPPED) { + ESP_LOGI(TAG, "Host informed that it waken up"); + if (context.event_handler) { + context.event_handler(ESP_POWER_SAVE_OFF); + } + } len = le16toh(header->len); offset = le16toh(header->offset); total_len = len + sizeof(struct esp_payload_header); @@ -397,7 +413,7 @@ static int32_t h_uart_write(interface_handle_t *handle, interface_buffer_handle_ #endif ESP_LOGD(TAG, "sending %"PRIu32 " bytes", total_len); - ESP_HEXLOGD("spi_hd_tx", sendbuf, total_len); + ESP_HEXLOGD("uart_tx", sendbuf, total_len, 32); tx_len = uart_write_bytes(HOSTED_UART, (const char*)sendbuf, total_len); @@ -424,6 +440,10 @@ static int32_t h_uart_write(interface_handle_t *handle, interface_buffer_handle_ static interface_handle_t * h_uart_init(void) { + if (if_handle_g.state >= DEACTIVE) { + return &if_handle_g; + } + uint16_t prio_q_idx = 0; uart_word_length_t uart_word_length; uart_parity_t parity; @@ -506,23 +526,29 @@ static interface_handle_t * h_uart_init(void) // start up tasks assert(xTaskCreate(uart_rx_task, "uart_rx_task" , - CONFIG_ESP_DEFAULT_TASK_STACK_SIZE, NULL, - CONFIG_ESP_DEFAULT_TASK_PRIO, NULL) == pdTRUE); + CONFIG_ESP_HOSTED_DEFAULT_TASK_STACK_SIZE, NULL, + CONFIG_ESP_HOSTED_DEFAULT_TASK_PRIORITY, NULL) == pdTRUE); assert(xTaskCreate(flow_ctrl_task, "flow_ctrl_task" , - CONFIG_ESP_DEFAULT_TASK_STACK_SIZE, NULL , - CONFIG_ESP_DEFAULT_TASK_PRIO, NULL) == pdTRUE); + CONFIG_ESP_HOSTED_DEFAULT_TASK_STACK_SIZE, NULL , + CONFIG_ESP_HOSTED_DEFAULT_TASK_PRIORITY, NULL) == pdTRUE); // data path opened memset(&if_handle_g, 0, sizeof(if_handle_g)); - if_handle_g.state = INIT; + if_handle_g.state = ACTIVE; return &if_handle_g; } static void h_uart_deinit(interface_handle_t * handle) { +#if H_HOST_PS_ALLOWED && H_PS_UNLOAD_BUS_WHILE_PS esp_err_t ret; + if (if_handle_g.state == DEINIT) { + ESP_LOGW(TAG, "UART already deinitialized"); + return; + } + if_handle_g.state = DEINIT; h_uart_mempool_destroy(); @@ -538,6 +564,7 @@ static void h_uart_deinit(interface_handle_t * handle) if (ret != ESP_OK) ESP_LOGE(TAG, "%s: Failed to flush uart Tx", __func__); uart_driver_delete(HOSTED_UART); +#endif } static esp_err_t h_uart_reset(interface_handle_t *handle) diff --git a/slave/partitions.esp32c5.csv b/slave/partitions.esp32c5.csv index 0252a551..a35ba86f 100644 --- a/slave/partitions.esp32c5.csv +++ b/slave/partitions.esp32c5.csv @@ -1,7 +1,11 @@ -# ESP-IDF Partition Table -# Name, Type, SubType, Offset, Size, Flags -nvs,data,nvs,0x9000,16K, -otadata,data,ota,0xd000,8K, -phy_init,data,phy,0xf000,4K, -ota_0,app,ota_0,0x10000,1536K, -ota_1,app,ota_1,0x190000,1536K, +#Name,Type,SubType,Offset,Size,Flags +#Note:Firmware partition offset needs to be 64K aligned,initial 36K(9 sectors)are reserved for bootloader and partition table +esp_secure_cert,0x3F,,0xD000,0x2000,encrypted +nvs_key,data,nvs_keys,0xF000,0x1000,encrypted +nvs,data,nvs,0x10000,0x6000, +otadata,data,ota,,0x2000 +phy_init,data,phy,,0x1000, +ota_0,app,ota_0,0x20000,0x1E0000, +ota_1,app,ota_1,0x200000,0x1E0000, +reserved,0x06,,0x3E0000,0x1A000, +fctry,data,nvs,0x3FA000,0x6000 diff --git a/slave/sdkconfig.defaults b/slave/sdkconfig.defaults index 2ff48b15..bc2062ac 100644 --- a/slave/sdkconfig.defaults +++ b/slave/sdkconfig.defaults @@ -8,5 +8,5 @@ CONFIG_PARTITION_TABLE_TWO_OTA=y # OS CONFIG_FREERTOS_HZ=1000 - +CONFIG_ESP_WIFI_NVS_ENABLED=y CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF=y diff --git a/slave/sdkconfig.defaults.esp32 b/slave/sdkconfig.defaults.esp32 index 644bc570..39049fa7 100644 --- a/slave/sdkconfig.defaults.esp32 +++ b/slave/sdkconfig.defaults.esp32 @@ -1,5 +1,4 @@ CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y -CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240 CONFIG_SDIO_DAT2_DISABLED= # BT Configuration diff --git a/slave/sdkconfig.defaults.esp32c2 b/slave/sdkconfig.defaults.esp32c2 index cbfecde8..1bc6b7cb 100644 --- a/slave/sdkconfig.defaults.esp32c2 +++ b/slave/sdkconfig.defaults.esp32c2 @@ -1,19 +1,120 @@ -CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y -CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 -CONFIG_FREERTOS_UNICORE=y -CONFIG_SDIO_DAT2_DISABLED= +# 1. CPU +#-------- +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_120=y -# BT Configuration -CONFIG_BT_ENABLED=n ## temporary disable +# 2. BT Configuration +#--------------------- +CONFIG_BT_ENABLED=n CONFIG_BT_CONTROLLER_ONLY=y CONFIG_BT_BLUEDROID_ENABLED= CONFIG_BT_LE_SLEEP_ENABLE=y -CONFIG_ESPTOOLPY_FLASHSIZE_4MB=n -CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y -CONFIG_PARTITION_TABLE_TWO_OTA=y +# 3.1 BLE over SPI/SDIO +#----------------------- +CONFIG_BT_LE_HCI_INTERFACE_USE_RAM=y + +# 3.2 BLE over UART +#------------------- +#UART pins, Enable below config, delete sdkconfig and rebuild +#CONFIG_BT_LE_HCI_INTERFACE_USE_UART=y +#CONFIG_BT_LE_HCI_UART_FLOWCTRL=n +#CONFIG_BT_LE_HCI_UART_TX_PIN=5 +#CONFIG_BT_LE_HCI_UART_RX_PIN=18 + + +# 4. Partition Table +#-------------------- CONFIG_PARTITION_TABLE_CUSTOM=y CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.esp32c2.csv" -CONFIG_PARTITION_TABLE_FILENAME="partitions.esp32c2.csv" + +# 5. Mempool +#------------ +CONFIG_ESP_CACHE_MALLOC=y + + +# 6.1 LWIP split +#--------------- +#CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED=n +#CONFIG_LWIP_TCP_LOCAL_PORT_RANGE_START=61440 +#CONFIG_LWIP_TCP_LOCAL_PORT_RANGE_END=65535 +#CONFIG_LWIP_UDP_LOCAL_PORT_RANGE_START=61440 +#CONFIG_LWIP_UDP_LOCAL_PORT_RANGE_END=65535 + +# 6.2 LWIP split examples +#------------------------- +#CONFIG_ESP_HOSTED_COPROCESSOR_EXAMPLE_MQTT=n + + +# 7. Transport config +#--------------------- +# CONFIG_ESP_SDIO_NSEND_PSAMPLE=y +# CONFIG_ESP_SDIO_DEFAULT_SPEED=y +# CONFIG_ESP_SDIO_STREAMING_MODE=n + + + +# 8. Wifi config +#---------------- +CONFIG_WIFI_CMD_BASIC_ONLY=y + +CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=8 +CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=16 +CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=16 +CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP_WIFI_TX_BA_WIN=8 +CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP_WIFI_RX_BA_WIN=8 + +CONFIG_ESP_WIFI_RX_IRAM_OPT=y +CONFIG_ESP_WIFI_IRAM_OPT=y + +# 9. LWIP config +#---------------- +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=11520 +CONFIG_LWIP_TCP_WND_DEFAULT=11520 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=16 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_TCP_SACK_OUT=y +CONFIG_LWIP_TCPIP_CORE_LOCKING=y +CONFIG_LWIP_TCPIP_CORE_LOCKING_INPUT=y + + +# 10. Optimizations +#------------------- +CONFIG_COMPILER_OPTIMIZATION_SIZE=y +#CONFIG_COMPILER_OPTIMIZATION_PERF=y +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_ESPTOOLPY_FLASHFREQ_80M=y + + +# 11. Stats +#----------- +#CONFIG_ESP_HOSTED_FUNCTION_PROFILING=y +CONFIG_ESP_PKT_STATS=y + +# 12. Priorities +---------------- +CONFIG_IPERF_TRAFFIC_TASK_PRIORITY=18 +CONFIG_IPERF_REPORT_TASK_PRIORITY=18 + + +#13. Mem optimizations +#--------------------- +CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH=y +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=120 +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_120=y +CONFIG_FREERTOS_UNICORE=y + +#14. C2 specific opts +#--------------------- +CONFIG_ESPTOOLPY_FLASHSIZE_4MB=n +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y CONFIG_ESP_DEFAULT_TASK_STACK_SIZE=2048 +CONFIG_C2_C5_MODULE_SUB_BOARD=y + +#15. For C2 26 MHz XTAL chips only +#--------------------------------- +CONFIG_SOC_XTAL_SUPPORT_26M=y +CONFIG_XTAL_FREQ_26=y diff --git a/slave/sdkconfig.defaults.esp32c3 b/slave/sdkconfig.defaults.esp32c3 index 3f8bab9a..a3f9cd99 100644 --- a/slave/sdkconfig.defaults.esp32c3 +++ b/slave/sdkconfig.defaults.esp32c3 @@ -1,10 +1,107 @@ -CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y -CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 -CONFIG_FREERTOS_UNICORE=y -CONFIG_SDIO_DAT2_DISABLED= +# 1. CPU +#-------- +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y -# BT Configuration +# 2. BT Configuration +#--------------------- CONFIG_BT_ENABLED=y CONFIG_BT_CONTROLLER_ONLY=y CONFIG_BT_BLUEDROID_ENABLED= CONFIG_BT_LE_SLEEP_ENABLE=y + +# 3.1 BLE over SPI/SDIO +#----------------------- +CONFIG_BT_LE_HCI_INTERFACE_USE_RAM=y + +# 3.2 BLE over UART +#------------------- +# Enable below config, delete sdkconfig, build/ and rebuild +# CONFIG_BT_LE_HCI_INTERFACE_USE_UART=y +# CONFIG_BT_LE_HCI_UART_TX_PIN=5 +# CONFIG_BT_LE_HCI_UART_RX_PIN=18 +# CONFIG_BT_LE_HCI_UART_FLOWCTRL=n +# #CONFIG_BT_LE_HCI_UART_RTS_PIN=19 +# #CONFIG_BT_LE_HCI_UART_CTS_PIN=8 + + +# 4. Partition Table +#-------------------- +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.esp32c3.csv" + +# 5. Mempool +#------------ +CONFIG_ESP_CACHE_MALLOC=y + + +# 6.1 LWIP split +#--------------- +#CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED=n +#CONFIG_LWIP_TCP_LOCAL_PORT_RANGE_START=61440 +#CONFIG_LWIP_TCP_LOCAL_PORT_RANGE_END=65535 +#CONFIG_LWIP_UDP_LOCAL_PORT_RANGE_START=61440 +#CONFIG_LWIP_UDP_LOCAL_PORT_RANGE_END=65535 + + +# 6.2 LWIP split examples +#------------------------- +CONFIG_ESP_HOSTED_COPROCESSOR_EXAMPLE_MQTT=n + + +# 7. Transport config +#--------------------- +# CONFIG_ESP_SDIO_NSEND_PSAMPLE=y +# CONFIG_ESP_SDIO_DEFAULT_SPEED=y +# CONFIG_ESP_SDIO_STREAMING_MODE=n + + + +# 8. Wifi config +#---------------- +CONFIG_WIFI_CMD_BASIC_ONLY=y + +CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP_WIFI_TX_BA_WIN=16 +CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP_WIFI_RX_BA_WIN=16 + +CONFIG_ESP_WIFI_RX_IRAM_OPT=y +CONFIG_ESP_WIFI_IRAM_OPT=y + +# 9. LWIP config +#---------------- +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=11520 +CONFIG_LWIP_TCP_WND_DEFAULT=11520 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=16 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_TCP_SACK_OUT=y +CONFIG_LWIP_TCPIP_CORE_LOCKING=y +CONFIG_LWIP_TCPIP_CORE_LOCKING_INPUT=y + + +# 10. Optimizations +#------------------- +CONFIG_COMPILER_OPTIMIZATION_PERF=y +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_ESPTOOLPY_FLASHFREQ_80M=y + + +# 11. Stats +#----------- +#CONFIG_ESP_HOSTED_FUNCTION_PROFILING=y +CONFIG_ESP_PKT_STATS=y + +# 12. Priorities +---------------- +CONFIG_IPERF_TRAFFIC_TASK_PRIORITY=18 +CONFIG_IPERF_REPORT_TASK_PRIORITY=18 +CONFIG_ESP_HOSTED_DEFAULT_TASK_STACK_SIZE=4096 + + +#13. Mem optimizations +#--------------------- +CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH=y diff --git a/slave/sdkconfig.defaults.esp32c5 b/slave/sdkconfig.defaults.esp32c5 index acfbb017..c6bacd69 100644 --- a/slave/sdkconfig.defaults.esp32c5 +++ b/slave/sdkconfig.defaults.esp32c5 @@ -1,10 +1,106 @@ -CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y -CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240 +# 1. CPU +#-------- +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y -# BT Configuration +# 2. BT Configuration +#--------------------- CONFIG_BT_ENABLED=y CONFIG_BT_CONTROLLER_ONLY=y CONFIG_BT_BLUEDROID_ENABLED= CONFIG_BT_LE_SLEEP_ENABLE=y + +# 3.1 BLE over SPI/SDIO +#----------------------- +CONFIG_BT_LE_HCI_INTERFACE_USE_RAM=y + +# 3.2 BLE over UART +#------------------- +# Enable below config, delete sdkconfig, build/ and rebuild +# CONFIG_BT_LE_HCI_INTERFACE_USE_UART=y +# CONFIG_BT_LE_HCI_UART_TX_PIN=5 +# CONFIG_BT_LE_HCI_UART_RX_PIN=18 +# CONFIG_BT_LE_HCI_UART_FLOWCTRL=n +# #CONFIG_BT_LE_HCI_UART_RTS_PIN=19 +# #CONFIG_BT_LE_HCI_UART_CTS_PIN=8 + + +# 4. Partition Table +#-------------------- +CONFIG_PARTITION_TABLE_OFFSET=0xc000 CONFIG_PARTITION_TABLE_CUSTOM=y CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.esp32c5.csv" + +# 5. Mempool +#------------ +CONFIG_ESP_CACHE_MALLOC=y + + +# 6.1 LWIP split +#--------------- + +#CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED=n +#CONFIG_LWIP_TCP_LOCAL_PORT_RANGE_START=61440 +#CONFIG_LWIP_TCP_LOCAL_PORT_RANGE_END=65535 +#CONFIG_LWIP_UDP_LOCAL_PORT_RANGE_START=61440 +#CONFIG_LWIP_UDP_LOCAL_PORT_RANGE_END=65535 + + +# 6.2 LWIP split examples +#------------------------- +#CONFIG_ESP_HOSTED_COPROCESSOR_EXAMPLE_MQTT=n + + +# 7. Transport config +#--------------------- +# CONFIG_ESP_SDIO_NSEND_PSAMPLE=y +# CONFIG_ESP_SDIO_DEFAULT_SPEED=y +# CONFIG_ESP_SDIO_STREAMING_MODE=n + + +# 8. Wifi config +#---------------- +CONFIG_WIFI_CMD_BASIC_ONLY=y + +CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP_WIFI_TX_BA_WIN=16 +CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP_WIFI_RX_BA_WIN=16 + +CONFIG_ESP_WIFI_RX_IRAM_OPT=y +CONFIG_ESP_WIFI_IRAM_OPT=y + +# 9. LWIP config +#---------------- +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=11520 +CONFIG_LWIP_TCP_WND_DEFAULT=11520 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=16 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_TCP_SACK_OUT=y +CONFIG_LWIP_TCPIP_CORE_LOCKING=y +CONFIG_LWIP_TCPIP_CORE_LOCKING_INPUT=y + +# 10. Optimizations +#------------------- +CONFIG_COMPILER_OPTIMIZATION_PERF=y +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_ESPTOOLPY_FLASHFREQ_80M=y + + +# 11. Stats +#----------- +#CONFIG_ESP_HOSTED_FUNCTION_PROFILING=y +CONFIG_ESP_PKT_STATS=y + +# 12. Priorities +#---------------- +CONFIG_IPERF_TRAFFIC_TASK_PRIORITY=18 +CONFIG_IPERF_REPORT_TASK_PRIORITY=18 + + +#13. Mem optimizations +#--------------------- +CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH=y diff --git a/slave/sdkconfig.defaults.esp32c6 b/slave/sdkconfig.defaults.esp32c6 index d67e40de..a4762334 100644 --- a/slave/sdkconfig.defaults.esp32c6 +++ b/slave/sdkconfig.defaults.esp32c6 @@ -1,15 +1,20 @@ +# 1. CPU +#-------- CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y -# BT Configuration +# 2. BT Configuration +#--------------------- CONFIG_BT_ENABLED=y CONFIG_BT_CONTROLLER_ONLY=y CONFIG_BT_BLUEDROID_ENABLED= CONFIG_BT_LE_SLEEP_ENABLE=y -# SPI/SDIO only +# 3.1 BLE over SPI/SDIO +#----------------------- CONFIG_BT_LE_HCI_INTERFACE_USE_RAM=y -# BLE over UART: +# 3.2 BLE over UART +#------------------- # Enable below config, delete sdkconfig, build/ and rebuild # CONFIG_BT_LE_HCI_INTERFACE_USE_UART=y # CONFIG_BT_LE_HCI_UART_TX_PIN=5 @@ -19,8 +24,79 @@ CONFIG_BT_LE_HCI_INTERFACE_USE_RAM=y # #CONFIG_BT_LE_HCI_UART_RTS_PIN=9 # #CONFIG_BT_LE_HCI_UART_CTS_PIN=13 -CONFIG_ESP_CACHE_MALLOC=n +# 4. Partition Table +#-------------------- CONFIG_PARTITION_TABLE_CUSTOM=y CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.esp32c6.csv" -CONFIG_ESP_PKT_STATS=y + +# 5. Mempool +#------------ +CONFIG_ESP_CACHE_MALLOC=n + + +# 6 Network split +#----------------- + +# # 6.1 LWIP split +# #--------------- +# +# CONFIG_LWIP_TCP_LOCAL_PORT_RANGE_START=61440 +# CONFIG_LWIP_TCP_LOCAL_PORT_RANGE_END=65535 +# CONFIG_LWIP_UDP_LOCAL_PORT_RANGE_START=61440 +# CONFIG_LWIP_UDP_LOCAL_PORT_RANGE_END=65535 +# +# # 6.2 LWIP split examples +# #------------------------- +# CONFIG_ESP_HOSTED_COPROCESSOR_EXAMPLE_MQTT=n + + +# 7. Transport config +#--------------------- +# CONFIG_ESP_SDIO_NSEND_PSAMPLE=y +# CONFIG_ESP_SDIO_DEFAULT_SPEED=y +# CONFIG_ESP_SDIO_STREAMING_MODE=n + +# For SPI Full duplex C6 on ESP32-P4-Function-EV-Board, please uncomment below +#CONFIG_ESP_HOST_DEV_BOARD_P4_FUNC_BOARD=y +#CONFIG_ESP_SPI_HOST_INTERFACE=y + + +# 8. Wifi config +#---------------- +CONFIG_WIFI_CMD_BASIC_ONLY=y + +CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP_WIFI_TX_BA_WIN=32 +CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP_WIFI_RX_BA_WIN=6 + +CONFIG_ESP_WIFI_RX_IRAM_OPT=y +CONFIG_ESP_WIFI_IRAM_OPT=y + +# 9. LWIP config +#---------------- +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=11520 +CONFIG_LWIP_TCP_WND_DEFAULT=11520 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=16 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_TCP_SACK_OUT=y +CONFIG_LWIP_TCPIP_CORE_LOCKING=y +CONFIG_LWIP_TCPIP_CORE_LOCKING_INPUT=y + + +# 10. Optimizations +#------------------- +CONFIG_COMPILER_OPTIMIZATION_PERF=y +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_ESPTOOLPY_FLASHFREQ_80M=y + + +# 11. Stats +#----------- +#CONFIG_ESP_HOSTED_FUNCTION_PROFILING=y +#CONFIG_ESP_PKT_STATS=y From b64ed152b567519f3f7ffe1c7261ef9cf90fffa0 Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Sun, 27 Jul 2025 10:00:44 +0800 Subject: [PATCH 051/114] Bug fixes in rpc for async timer & power saving support for SPI-FD/SPI-HD/UART 1. Fix(wifi): use NVS in wifi init config, if enabled at host 2. Fix(async): Create & destroy different async timer for every request 3. Fix(power_save): Add support for uart, spi half duplex and spi full duplex 4. Fix(build): fix build failure for idf < 6.0 5. feat(debug): Add extra logs when wifi is unprovisioned --- Kconfig | 2 - host/drivers/rpc/core/rpc_core.c | 126 +++++----- host/drivers/rpc/wrap/rpc_wrap.c | 4 + host/drivers/transport/spi/spi_drv.c | 139 +++++++++-- host/drivers/transport/spi_hd/spi_hd_drv.c | 273 ++++++++++++++------- host/drivers/transport/transport_drv.c | 2 +- host/drivers/transport/uart/uart_drv.c | 244 +++++++++++------- host/port/esp/freertos/src/os_wrapper.c | 4 +- slave/main/Kconfig.projbuild | 2 - slave/main/esp_hosted_coprocessor.c | 15 +- slave/main/host_power_save.c | 1 + slave/main/spi_hd_slave_api.c | 22 +- slave/main/spi_slave_api.c | 179 ++++++-------- 13 files changed, 636 insertions(+), 377 deletions(-) diff --git a/Kconfig b/Kconfig index ab101c69..af7f1837 100644 --- a/Kconfig +++ b/Kconfig @@ -1745,13 +1745,11 @@ ESP32XX_SPI_HD_CLK_FREQ_RANGE_MAX := 40 config ESP_HOSTED_HOST_POWER_SAVE_ENABLED bool "Allow host to power save" depends on SOC_LIGHT_SLEEP_SUPPORTED || (SOC_DEEP_SLEEP_SUPPORTED && SOC_GPIO_SUPPORT_DEEPSLEEP_WAKEUP) - depends on ESP_HOSTED_SDIO_HOST_INTERFACE # by the time, light sleep is not added default n config ESP_HOSTED_HOST_DEEP_SLEEP_ALLOWED bool "Allow host to enter deep sleep. Slave will wakeup host using GPIO" depends on ESP_HOSTED_HOST_POWER_SAVE_ENABLED && (SOC_GPIO_SUPPORT_DEEPSLEEP_WAKEUP && SOC_DEEP_SLEEP_SUPPORTED) - depends on ESP_HOSTED_SDIO_HOST_INTERFACE default y help Allow host to deep sleep for highest power saving. Only RTC memory and RTC GPIOs remain diff --git a/host/drivers/rpc/core/rpc_core.c b/host/drivers/rpc/core/rpc_core.c index 99b65c34..5c7f8c83 100644 --- a/host/drivers/rpc/core/rpc_core.c +++ b/host/drivers/rpc/core/rpc_core.c @@ -35,20 +35,8 @@ static queue_handle_t rpc_tx_q = NULL; static void * rpc_rx_thread_hdl; static void * rpc_tx_thread_hdl; static void * rpc_tx_sem; -static void * async_timer_hdl; static struct rpc_lib_context rpc_lib_ctxt; -static int call_event_callback(ctrl_cmd_t *app_event); -static int is_async_resp_callback_available(ctrl_cmd_t *app_resp); -static int is_sync_resp_sem_available(uint32_t uid); -static int clear_async_resp_callback(ctrl_cmd_t *app_resp); -static int call_async_resp_callback(ctrl_cmd_t *app_resp); -static int set_async_resp_callback(ctrl_cmd_t *app_req, rpc_rsp_cb_t resp_cb); -static int set_sync_resp_sem(ctrl_cmd_t *app_req); -static int wait_for_sync_response(ctrl_cmd_t *app_req); -static void rpc_async_timeout_handler(void *arg); -static int post_sync_resp_sem(ctrl_cmd_t *app_resp); - /* uid to link between requests and responses */ /* uids are incrementing values from 1 onwards. * 0 means not a valid id */ @@ -64,6 +52,7 @@ typedef struct { typedef struct { uint32_t uid; rpc_rsp_cb_t cb; + void * timer_hdl; } async_rsp_t; /* rpc response callbacks @@ -94,6 +83,19 @@ static async_rsp_t async_rsp_table[MAX_ASYNC_RPC_TRANSACTIONS] = { 0 }; */ static rpc_evt_cb_t rpc_evt_cb_table[RPC_ID__Event_Max - RPC_ID__Event_Base] = { NULL }; + +static int call_event_callback(ctrl_cmd_t *app_event); +static int is_async_resp_callback_available(ctrl_cmd_t *app_resp); +static int is_sync_resp_sem_available(uint32_t uid); +static int clear_async_resp_callback(async_rsp_t *async_rsp_item); +static int call_async_resp_callback(ctrl_cmd_t *app_resp); +static int set_async_resp_callback(ctrl_cmd_t *app_req, rpc_rsp_cb_t resp_cb, void *timer_hdl); +static int set_sync_resp_sem(ctrl_cmd_t *app_req); +static int wait_for_sync_response(ctrl_cmd_t *app_req); +static void rpc_async_timeout_handler(void *arg); +static int post_sync_resp_sem(ctrl_cmd_t *app_resp); + + /* Open serial interface * This function may fail if the ESP32 kernel module is not loaded **/ @@ -201,8 +203,21 @@ static int process_rpc_tx_msg(ctrl_cmd_t *app_req) /* 5. Assign response callback, if valid */ if (app_req->rpc_rsp_cb) { + + /* 5.1 Start timeout for response for async only + * For sync procedures, g_h.funcs->_h_get_semaphore takes care to + * handle timeout situations */ + ESP_LOGI(TAG, "starting async resp timer for req[%u]",req.msg_id); + void *timer_hdl = g_h.funcs->_h_timer_start("rpc_async_timeout_timer", SEC_TO_MILLISEC(app_req->rsp_timeout_sec), H_TIMER_TYPE_ONESHOT, + rpc_async_timeout_handler, app_req); + if (!timer_hdl) { + ESP_LOGE(TAG, "Failed to start async resp timer"); + goto fail_req; + } + + /* 5.2 set async resp callback */ ESP_LOGD(TAG, "setting async resp callback for req[%u]",req.msg_id); - ret = set_async_resp_callback(app_req, app_req->rpc_rsp_cb); + ret = set_async_resp_callback(app_req, app_req->rpc_rsp_cb, timer_hdl); if (ret < 0) { ESP_LOGE(TAG, "could not set callback for req[%u]",req.msg_id); failure_status = RPC_ERR_SET_ASYNC_CB; @@ -210,20 +225,6 @@ static int process_rpc_tx_msg(ctrl_cmd_t *app_req) } } - /* 6. Start timeout for response for async only - * For sync procedures, g_h.funcs->_h_get_semaphore takes care to - * handle timeout situations */ - if (app_req->rpc_rsp_cb) { - ESP_LOGD(TAG, "starting async resp timer for req[%u]",req.msg_id); - async_timer_hdl = g_h.funcs->_h_timer_start("rpc_async_timeout_timer", SEC_TO_MILLISEC(app_req->rsp_timeout_sec), H_TIMER_TYPE_ONESHOT, - rpc_async_timeout_handler, app_req); - if (!async_timer_hdl) { - ESP_LOGE(TAG, "Failed to start async resp timer"); - goto fail_req; - } - } - - /* 7. Pack in protobuf and send the request */ rpc__pack(&req, tx_data); ESP_LOGD(TAG, "sending rpc req[%u]",req.msg_id); @@ -359,17 +360,6 @@ static int process_rpc_rx_msg(Rpc * proto_msg, rpc_rx_ind_t rpc_rx_func) /* Allocate app struct for response */ HOSTED_CALLOC(ctrl_cmd_t, app_resp, sizeof(ctrl_cmd_t), free_buffers); - - /* If this was async procedure, timer would have - * been running for response. - * As response received, stop timer */ - if (async_timer_hdl) { - ESP_LOGD(TAG, "Stopping the asyn timer for resp"); - /* async_timer_hdl will be cleaned in g_h.funcs->_h_timer_stop */ - g_h.funcs->_h_timer_stop(async_timer_hdl); - async_timer_hdl = NULL; - } - /* Decode protobuf buffer of response and * copy into app structures */ if (rpc_parse_rsp(proto_msg, app_resp)) { @@ -388,7 +378,6 @@ static int process_rpc_rx_msg(Rpc * proto_msg, rpc_rx_ind_t rpc_rx_func) * return to select */ call_async_resp_callback(app_resp); - clear_async_resp_callback(app_resp); } else { /* as RPC async response callback function is @@ -632,19 +621,22 @@ static ctrl_cmd_t * get_response(int *read_len, ctrl_cmd_t *app_req) return NULL; } -static int clear_async_resp_callback(ctrl_cmd_t *app_resp) +static int clear_async_resp_callback(async_rsp_t *async_rsp_item) { - int i; + if (async_rsp_item->uid != 0) { - for (i = 0; i < MAX_ASYNC_RPC_TRANSACTIONS; i++) { - if (async_rsp_table[i].uid == app_resp->uid) { - async_rsp_table[i].uid = 0; - async_rsp_table[i].cb = NULL; - return ESP_OK; + if (async_rsp_item->timer_hdl) { + g_h.funcs->_h_timer_stop(async_rsp_item->timer_hdl); + async_rsp_item->timer_hdl = NULL; } - } - return CALLBACK_NOT_REGISTERED; + async_rsp_item->uid = 0; + async_rsp_item->cb = NULL; + return SUCCESS; + } else { + ESP_LOGW(TAG, "async_rsp_item to be cleared already has uid 0"); + } + return FAILURE; } /* Check and call rpc response asynchronous callback if available @@ -663,7 +655,11 @@ static int call_async_resp_callback(ctrl_cmd_t *app_resp) for (i = 0; i < MAX_ASYNC_RPC_TRANSACTIONS; i++) { if (async_rsp_table[i].uid == app_resp->uid) { - return async_rsp_table[i].cb(app_resp); + int ret = async_rsp_table[i].cb(app_resp); + + clear_async_resp_callback(&async_rsp_table[i]); + + return ret; } } @@ -711,7 +707,7 @@ static int call_event_callback(ctrl_cmd_t *app_event) /* Set asynchronous rpc response callback from rpc **request** */ -static int set_async_resp_callback(ctrl_cmd_t *app_req, rpc_rsp_cb_t resp_cb) +static int set_async_resp_callback(ctrl_cmd_t *app_req, rpc_rsp_cb_t resp_cb, void *timer_hdl) { int i; @@ -725,6 +721,7 @@ static int set_async_resp_callback(ctrl_cmd_t *app_req, rpc_rsp_cb_t resp_cb) if (!async_rsp_table[i].uid) { async_rsp_table[i].uid = app_req->uid; async_rsp_table[i].cb = resp_cb; + async_rsp_table[i].timer_hdl = timer_hdl; return CALLBACK_SET_SUCCESS; } } @@ -978,6 +975,29 @@ int rpc_send_req(ctrl_cmd_t *app_req) return FAILURE; } +static int cleanup_sync_async_timer_table(void) +{ + for (int i = 0; i < MAX_ASYNC_RPC_TRANSACTIONS; i++) { + if (async_rsp_table[i].timer_hdl) { + g_h.funcs->_h_timer_stop(async_rsp_table[i].timer_hdl); + } + async_rsp_table[i].timer_hdl = NULL; + async_rsp_table[i].uid = 0; + async_rsp_table[i].cb = NULL; + } + + for (int i = 0; i < MAX_SYNC_RPC_TRANSACTIONS; i++) { + if (sync_rsp_table[i].sem) { + g_h.funcs->_h_get_semaphore(sync_rsp_table[i].sem, 0); + g_h.funcs->_h_destroy_semaphore(sync_rsp_table[i].sem); + } + sync_rsp_table[i].uid = 0; + sync_rsp_table[i].sem = NULL; + } + + return SUCCESS; +} + /* De-init hosted rpc lib */ int rpc_core_deinit(void) { @@ -1001,11 +1021,7 @@ int rpc_core_deinit(void) ESP_LOGE(TAG, "read sem tx deinit failed"); } - if (async_timer_hdl) { - /* async_timer_hdl will be cleaned in g_h.funcs->_h_timer_stop */ - g_h.funcs->_h_timer_stop(async_timer_hdl); - async_timer_hdl = NULL; - } + cleanup_sync_async_timer_table(); if (serial_deinit()) { ret = FAILURE; diff --git a/host/drivers/rpc/wrap/rpc_wrap.c b/host/drivers/rpc/wrap/rpc_wrap.c index 1d7e4346..a768c91d 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.c +++ b/host/drivers/rpc/wrap/rpc_wrap.c @@ -877,6 +877,10 @@ int rpc_wifi_init(const wifi_init_config_t *arg) return FAILURE; g_h.funcs->_h_memcpy(&req->u.wifi_init_config, (void*)arg, sizeof(wifi_init_config_t)); + +#ifdef CONFIG_ESP_WIFI_NVS_ENABLED + req->u.wifi_init_config.nvs_enable = YES; +#endif resp = rpc_slaveif_wifi_init(req); return rpc_rsp_callback(resp); diff --git a/host/drivers/transport/spi/spi_drv.c b/host/drivers/transport/spi/spi_drv.c index 94259fe9..a3a912d1 100644 --- a/host/drivers/transport/spi/spi_drv.c +++ b/host/drivers/transport/spi/spi_drv.c @@ -33,6 +33,7 @@ DEFINE_LOG_TAG(spi); void * spi_handle = NULL; semaphore_handle_t spi_trans_ready_sem; +static volatile uint8_t dr_isr_triggered = 0; static uint8_t schedule_dummy_rx = 0; @@ -155,6 +156,7 @@ This ISR is called when the handshake or data_ready line goes high. static void FAST_RAM_ATTR gpio_dr_isr_handler(void* arg) { g_h.funcs->_h_post_semaphore_from_isr(spi_trans_ready_sem); + dr_isr_triggered = 1; ESP_EARLY_LOGV(TAG, "%s", __func__); } @@ -312,6 +314,8 @@ static int process_spi_rx_buf(uint8_t * rxbuff) if (!rxbuff) return -1; + ESP_HEXLOGD("h_spi_rx", rxbuff, 32, 32); + /* create buffer rx handle, used for processing */ h = (struct esp_payload_header *) rxbuff; @@ -325,8 +329,6 @@ static int process_spi_rx_buf(uint8_t * rxbuff) //ESP_HEXLOGW("Wakeup_pkt", rxbuff+offset, len, min(len, 128)); } - ESP_HEXLOGD("h_spi_rx", rxbuff, len, 32); - if (ESP_MAX_IF == h->if_type) schedule_dummy_rx = 0; @@ -350,6 +352,7 @@ static int process_spi_rx_buf(uint8_t * rxbuff) goto done; } else { + dr_isr_triggered = 0; rx_checksum = le16toh(h->checksum); h->checksum = 0; @@ -364,7 +367,7 @@ static int process_spi_rx_buf(uint8_t * rxbuff) buf_handle.payload = rxbuff + offset; buf_handle.seq_num = le16toh(h->seq_num); buf_handle.flag = h->flags; - wifi_tx_throttling = h->throttle_cmd; + wifi_tx_throttling = h->throttle_cmd; #if 0 #if CONFIG_H_LOWER_MEMCOPY if ((buf_handle.if_type == ESP_STA_IF) || @@ -431,12 +434,14 @@ static int check_and_execute_spi_transaction(void) gpio_rx_data_ready = g_h.funcs->_h_read_gpio(H_GPIO_DATA_READY_Port, H_GPIO_DATA_READY_Pin); + uint8_t data_ready_active = (gpio_rx_data_ready == H_DR_VAL_ACTIVE) || dr_isr_triggered; + if (gpio_handshake == H_HS_VAL_ACTIVE) { /* Get next tx buffer to be sent */ txbuff = get_next_tx_buffer(&is_valid_tx_buf, &tx_buff_free_func); - if ( (gpio_rx_data_ready == H_DR_VAL_ACTIVE) || + if ( (data_ready_active) || (is_valid_tx_buf) || schedule_dummy_tx || schedule_dummy_rx ) { if (!txbuff) { @@ -458,7 +463,7 @@ static int check_and_execute_spi_transaction(void) ESP_HEXLOGD("h_spi_tx", txbuff, 32, 32); } - ESP_LOGV(TAG, "dr %u tx_valid %u\n", gpio_rx_data_ready, is_valid_tx_buf); + ESP_LOGD(TAG, "dr %u tx_valid %u\n", gpio_rx_data_ready, is_valid_tx_buf); /* Allocate rx buffer */ rxbuff = spi_buffer_alloc(MEMSET_REQUIRED); assert(rxbuff); @@ -531,7 +536,6 @@ int esp_hosted_tx(uint8_t iface_type, uint8_t iface_num, H_FREE_PTR_WITH_FUNC(free_func, wbuffer); return -1; } - //g_h.funcs->_h_memset(&buf_handle, 0, sizeof(buf_handle)); buf_handle.payload_zcopy = buff_zcopy; buf_handle.if_type = iface_type; @@ -600,7 +604,6 @@ static void spi_transaction_task(void const* pvParameters) if ((!is_transport_rx_ready()) || (!spi_trans_ready_sem)) { - ESP_LOGD(TAG, "SPI transaction task sleep"); g_h.funcs->_h_msleep(100); continue; } @@ -610,8 +613,7 @@ static void spi_transaction_task(void const* pvParameters) * on Either Data ready and Handshake pin */ - if (!g_h.funcs->_h_get_semaphore(spi_trans_ready_sem, HOSTED_BLOCK_MAX)) { - + if (g_h.funcs->_h_get_semaphore(spi_trans_ready_sem, HOSTED_BLOCK_MAX) == SUCCESS) { check_and_execute_spi_transaction(); } } @@ -628,14 +630,6 @@ static void spi_process_rx_task(void const* pvParameters) interface_buffer_handle_t *buf_handle = NULL; int ret = 0; -#if H_HOST_PS_ALLOWED - if (esp_hosted_woke_from_deep_sleep()) { - ESP_LOGW(TAG, "Host Woke-up"); - /* Inform slave, host power save is stopped */ - stop_host_power_save(); - } -#endif - while (1) { g_h.funcs->_h_get_semaphore(sem_from_slave_queue, HOSTED_BLOCK_MAX); @@ -654,6 +648,7 @@ static void spi_process_rx_task(void const* pvParameters) /* process received buffer for all possible interface types */ if (buf_handle->if_type == ESP_SERIAL_IF) { + schedule_dummy_rx = 1; /* serial interface path */ serial_rx_handler(buf_handle); @@ -821,7 +816,6 @@ static uint8_t * get_next_tx_buffer(uint8_t *is_valid_tx_buf, void (**free_func) } done: -/* TODO: check if this is needed for only flag */ if (len && !buf_handle.payload_zcopy) { /* free allocated buffer, only if zerocopy is not requested */ H_FREE_PTR_WITH_FUNC(buf_handle.free_buf_handle, buf_handle.priv_buffer_handle); @@ -886,10 +880,9 @@ int ensure_slave_bus_ready(void *bus_handle) release_slave_reset_gpio_post_wakeup(); if (esp_hosted_woke_from_deep_sleep()) { - g_h.funcs->_h_msleep(700); stop_host_power_save(); } else { - ESP_LOGI(TAG, "Resetting slave"); + ESP_LOGI(TAG, "Reseting slave"); transport_gpio_reset(bus_handle, reset_pin); } @@ -900,8 +893,57 @@ int bus_inform_slave_host_power_save_start(void) { ESP_LOGI(TAG, "Inform slave, host power save is started"); int ret = ESP_OK; - ret = esp_hosted_tx(ESP_SERIAL_IF, 0, NULL, 0, - H_BUFF_NO_ZEROCOPY, NULL, FLAG_POWER_SAVE_STARTED); + + /* + * If the transport is not ready yet (which happens before receiving INIT event), + * we need to send the power save message directly to avoid deadlock. + * Otherwise, use the normal queue mechanism. + */ + if (!is_transport_rx_ready()) { + uint8_t *txbuff = NULL; + uint8_t *rxbuff = NULL; + struct esp_payload_header *h = NULL; + struct hosted_transport_context_t spi_trans = {0}; + + ESP_LOGI(TAG, "Sending power save start message directly"); + + /* Create tx buffer with power save flag */ + txbuff = spi_buffer_alloc(MEMSET_REQUIRED); + assert(txbuff); + + h = (struct esp_payload_header *) txbuff; + h->if_type = ESP_SERIAL_IF; + h->if_num = 0; + h->len = htole16(0); + h->offset = htole16(sizeof(struct esp_payload_header)); + h->seq_num = htole16(0); + h->flags = FLAG_POWER_SAVE_STARTED; + + /* Allocate rx buffer for transaction */ + rxbuff = spi_buffer_alloc(MEMSET_REQUIRED); + assert(rxbuff); + + /* Set up SPI transaction */ + spi_trans.tx_buf = txbuff; + spi_trans.tx_buf_size = MAX_SPI_BUFFER_SIZE; + spi_trans.rx_buf = rxbuff; + + /* Execute direct SPI transaction - bypass all queues */ + g_h.funcs->_h_lock_mutex(spi_bus_lock, HOSTED_BLOCK_MAX); + ret = g_h.funcs->_h_do_bus_transfer(&spi_trans); + g_h.funcs->_h_unlock_mutex(spi_bus_lock); + + /* Free buffers */ + spi_buffer_free(txbuff); + if (!ret) { + process_spi_rx_buf(spi_trans.rx_buf); + } + } else { + /* Use normal queue mechanism */ + ret = esp_hosted_tx(ESP_SERIAL_IF, 0, NULL, 0, + H_BUFF_NO_ZEROCOPY, NULL, FLAG_POWER_SAVE_STARTED); + } + return ret; } @@ -909,7 +951,56 @@ int bus_inform_slave_host_power_save_stop(void) { ESP_LOGI(TAG, "Inform slave, host power save is stopped"); int ret = ESP_OK; - ret = esp_hosted_tx(ESP_SERIAL_IF, 0, NULL, 0, - H_BUFF_NO_ZEROCOPY, NULL, FLAG_POWER_SAVE_STOPPED); + + /* + * If the transport is not ready yet (which happens before receiving INIT event), + * we need to send the power save message directly to avoid deadlock. + * Otherwise, use the normal queue mechanism. + */ + if (!is_transport_rx_ready()) { + uint8_t *txbuff = NULL; + uint8_t *rxbuff = NULL; + struct esp_payload_header *h = NULL; + struct hosted_transport_context_t spi_trans = {0}; + + ESP_LOGI(TAG, "Sending power save stop message directly"); + + /* Create tx buffer with power save flag */ + txbuff = spi_buffer_alloc(MEMSET_REQUIRED); + assert(txbuff); + + h = (struct esp_payload_header *) txbuff; + h->if_type = ESP_SERIAL_IF; + h->if_num = 0; + h->len = htole16(0); + h->offset = htole16(sizeof(struct esp_payload_header)); + h->seq_num = htole16(0); + h->flags = FLAG_POWER_SAVE_STOPPED; + + /* Allocate rx buffer for transaction */ + rxbuff = spi_buffer_alloc(MEMSET_REQUIRED); + assert(rxbuff); + + /* Set up SPI transaction */ + spi_trans.tx_buf = txbuff; + spi_trans.tx_buf_size = MAX_SPI_BUFFER_SIZE; + spi_trans.rx_buf = rxbuff; + + /* Execute direct SPI transaction - bypass all queues */ + g_h.funcs->_h_lock_mutex(spi_bus_lock, HOSTED_BLOCK_MAX); + ret = g_h.funcs->_h_do_bus_transfer(&spi_trans); + g_h.funcs->_h_unlock_mutex(spi_bus_lock); + + /* Free buffers */ + spi_buffer_free(txbuff); + if (!ret) { + process_spi_rx_buf(spi_trans.rx_buf); + } + } else { + /* Use normal queue mechanism */ + ret = esp_hosted_tx(ESP_SERIAL_IF, 0, NULL, 0, + H_BUFF_NO_ZEROCOPY, NULL, FLAG_POWER_SAVE_STOPPED); + } + return ret; } diff --git a/host/drivers/transport/spi_hd/spi_hd_drv.c b/host/drivers/transport/spi_hd/spi_hd_drv.c index 85d8e71c..923be195 100644 --- a/host/drivers/transport/spi_hd/spi_hd_drv.c +++ b/host/drivers/transport/spi_hd/spi_hd_drv.c @@ -193,23 +193,19 @@ static int spi_hd_is_write_buffer_available(uint32_t buf_needed) return BUFFER_AVAILABLE; } +/* Forward declaration */ +static int spi_hd_write_packet(interface_buffer_handle_t *buf_handle); + static void spi_hd_write_task(void const* pvParameters) { - uint16_t len = 0; - uint8_t *sendbuf = NULL; - void (*free_func)(void* ptr) = NULL; interface_buffer_handle_t buf_handle = {0}; - uint8_t * payload = NULL; - struct esp_payload_header * payload_header = NULL; - - int ret = 0; - uint32_t data_left; - uint32_t buf_needed; uint8_t tx_needed = 1; while (!spi_hd_start_write_thread) g_h.funcs->_h_msleep(10); + ESP_LOGD(TAG, "spi_hd_write_task: write thread started"); + for (;;) { /* Check if higher layers have anything to transmit */ g_h.funcs->_h_get_semaphore(sem_to_slave_queue, HOSTED_BLOCK_MAX); @@ -221,103 +217,131 @@ static void spi_hd_write_task(void const* pvParameters) tx_needed = 0; /* No Tx msg */ } - if (tx_needed) - len = buf_handle.payload_len; + if (!tx_needed) + continue; - if (!buf_handle.flag && !len) { - ESP_LOGE(TAG, "%s: Empty len", __func__); - goto done; - } + /* Send the packet */ + spi_hd_write_packet(&buf_handle); + } +} - if (!buf_handle.payload_zcopy) { - sendbuf = spi_hd_buffer_alloc(MEMSET_REQUIRED); - assert(sendbuf); - free_func = spi_hd_buffer_free; - } else { - sendbuf = buf_handle.payload; - free_func = buf_handle.free_buf_handle; - } +/* + * Write a packet to the SPI HD bus + * Returns ESP_OK on success, ESP_FAIL on failure + */ +static int spi_hd_write_packet(interface_buffer_handle_t *buf_handle) +{ + uint16_t len = 0; + uint8_t *sendbuf = NULL; + void (*free_func)(void* ptr) = NULL; + uint8_t * payload = NULL; + struct esp_payload_header * payload_header = NULL; + int ret = 0; + uint32_t data_left; + uint32_t buf_needed; + int result = ESP_OK; + + if (unlikely(!buf_handle)) + return ESP_FAIL; + len = buf_handle->payload_len; + + if (unlikely(!buf_handle->flag && !len)) { + ESP_LOGE(TAG, "%s: Empty len", __func__); + return ESP_FAIL; + } + + if (!buf_handle->payload_zcopy) { + sendbuf = spi_hd_buffer_alloc(MEMSET_REQUIRED); if (!sendbuf) { ESP_LOGE(TAG, "spi_hd buff malloc failed"); - free_func = NULL; - goto done; + return ESP_FAIL; } + free_func = spi_hd_buffer_free; + } else { + sendbuf = buf_handle->payload; + free_func = buf_handle->free_buf_handle; + } - if (buf_handle.payload_len > MAX_SPI_HD_BUFFER_SIZE - sizeof(struct esp_payload_header)) { - ESP_LOGE(TAG, "Pkt len [%u] > Max [%u]. Drop", - buf_handle.payload_len, MAX_SPI_HD_BUFFER_SIZE - sizeof(struct esp_payload_header)); - goto done; - } + if (buf_handle->payload_len > MAX_SPI_HD_BUFFER_SIZE - sizeof(struct esp_payload_header)) { + ESP_LOGE(TAG, "Pkt len [%u] > Max [%u]. Drop", + buf_handle->payload_len, MAX_SPI_HD_BUFFER_SIZE - sizeof(struct esp_payload_header)); + result = ESP_FAIL; + goto done; + } - /* Form Tx header */ - payload_header = (struct esp_payload_header *) sendbuf; - payload = sendbuf + sizeof(struct esp_payload_header); - - payload_header->len = htole16(len); - payload_header->offset = htole16(sizeof(struct esp_payload_header)); - payload_header->if_type = buf_handle.if_type; - payload_header->if_num = buf_handle.if_num; - payload_header->seq_num = htole16(buf_handle.seq_num); - payload_header->flags = buf_handle.flag; - - if (payload_header->if_type == ESP_HCI_IF) { - // special handling for HCI - if (!buf_handle.payload_zcopy) { - // copy first byte of payload into header - payload_header->hci_pkt_type = buf_handle.payload[0]; - // adjust actual payload len - len -= 1; - payload_header->len = htole16(len); - g_h.funcs->_h_memcpy(payload, &buf_handle.payload[1], len); - } - } else - if (!buf_handle.payload_zcopy) - g_h.funcs->_h_memcpy(payload, buf_handle.payload, len); + /* Form Tx header */ + payload_header = (struct esp_payload_header *) sendbuf; + payload = sendbuf + sizeof(struct esp_payload_header); + + payload_header->len = htole16(len); + payload_header->offset = htole16(sizeof(struct esp_payload_header)); + payload_header->if_type = buf_handle->if_type; + payload_header->if_num = buf_handle->if_num; + payload_header->seq_num = htole16(buf_handle->seq_num); + payload_header->flags = buf_handle->flag; + + if (payload_header->if_type == ESP_HCI_IF) { + // special handling for HCI + if (!buf_handle->payload_zcopy) { + // copy first byte of payload into header + payload_header->hci_pkt_type = buf_handle->payload[0]; + // adjust actual payload len + len -= 1; + payload_header->len = htole16(len); + g_h.funcs->_h_memcpy(payload, &buf_handle->payload[1], len); + } + } else { + if (!buf_handle->payload_zcopy) { + g_h.funcs->_h_memcpy(payload, buf_handle->payload, len); + } + } #if H_SPI_HD_CHECKSUM - payload_header->checksum = htole16(compute_checksum(sendbuf, - sizeof(struct esp_payload_header) + len)); + payload_header->checksum = htole16(compute_checksum(sendbuf, + sizeof(struct esp_payload_header) + len)); #endif - buf_needed = (len + sizeof(struct esp_payload_header) + MAX_SPI_HD_BUFFER_SIZE - 1) - / MAX_SPI_HD_BUFFER_SIZE; + buf_needed = (len + sizeof(struct esp_payload_header) + MAX_SPI_HD_BUFFER_SIZE - 1) + / MAX_SPI_HD_BUFFER_SIZE; - SPI_HD_DRV_LOCK(); + SPI_HD_DRV_LOCK(); - // ESP_LOGW(TAG, "spi_hd_is_write_buffer_available()"); - ret = spi_hd_is_write_buffer_available(buf_needed); - if (ret != BUFFER_AVAILABLE) { - ESP_LOGV(TAG, "no SPI_HD write buffers on slave device"); - goto unlock_done; - } + ret = spi_hd_is_write_buffer_available(buf_needed); + if (ret != BUFFER_AVAILABLE) { + ESP_LOGW(TAG, "no SPI_HD write buffers on slave device, drop pkt"); + result = ESP_FAIL; + goto unlock_done; + } - data_left = len + sizeof(struct esp_payload_header); + data_left = len + sizeof(struct esp_payload_header); - ESP_HEXLOGD("h_spi_hd_tx", sendbuf, data_left, 32); + ESP_HEXLOGD("h_spi_hd_tx", sendbuf, data_left, 32); - ret = g_h.funcs->_h_spi_hd_write_dma(sendbuf, data_left, ACQUIRE_LOCK); - if (ret) { - ESP_LOGE(TAG, "%s: Failed to send data", __func__); - goto unlock_done; - } + ret = g_h.funcs->_h_spi_hd_write_dma(sendbuf, data_left, ACQUIRE_LOCK); + if (ret) { + ESP_LOGE(TAG, "%s: Failed to send data", __func__); + result = ESP_FAIL; + goto unlock_done; + } - spi_hd_tx_buf_count += buf_needed; + spi_hd_tx_buf_count += buf_needed; #if ESP_PKT_STATS - if (buf_handle.if_type == ESP_STA_IF) - pkt_stats.sta_tx_out++; + if (buf_handle->if_type == ESP_STA_IF) + pkt_stats.sta_tx_out++; #endif unlock_done: - SPI_HD_DRV_UNLOCK(); + SPI_HD_DRV_UNLOCK(); done: - if (len && !buf_handle.payload_zcopy) { - /* free allocated buffer, only if zerocopy is not requested */ - H_FREE_PTR_WITH_FUNC(buf_handle.free_buf_handle, buf_handle.priv_buffer_handle); - } - H_FREE_PTR_WITH_FUNC(free_func, sendbuf); + if (len && !buf_handle->payload_zcopy) { + /* free allocated buffer, only if zerocopy is not requested */ + H_FREE_PTR_WITH_FUNC(buf_handle->free_buf_handle, buf_handle->priv_buffer_handle); } + H_FREE_PTR_WITH_FUNC(free_func, sendbuf); + + return result; } static int is_valid_spi_hd_rx_packet(uint8_t *rxbuff_a, uint16_t *len_a, uint16_t *offset_a) @@ -428,7 +452,7 @@ static esp_err_t spi_hd_push_data_to_queue(uint8_t * buf, uint32_t buf_len) if (update_flow_ctrl(buf)) { // detected and updated flow control // no need to further process the packet - HOSTED_FREE(buf); + spi_hd_buffer_free(buf); return ESP_OK; } @@ -441,12 +465,13 @@ static esp_err_t spi_hd_push_data_to_queue(uint8_t * buf, uint32_t buf_len) * wrong header/bit packing? * */ ESP_LOGE(TAG, "Dropping packet"); - HOSTED_FREE(buf); + spi_hd_buffer_free(buf); return ESP_FAIL; } if (spi_hd_push_pkt_to_queue(buf, len, offset)) { ESP_LOGE(TAG, "Failed to push Rx packet to queue"); + spi_hd_buffer_free(buf); return ESP_FAIL; } @@ -476,14 +501,14 @@ static void spi_hd_read_task(void const* pvParameters) res = g_h.funcs->_h_spi_hd_read_reg(SPI_HD_REG_SLAVE_READY, &data, POLLING_READ, ACQUIRE_LOCK); if (res) { ESP_LOGE(TAG, "Error reading slave register"); - } - else if (data == SPI_HD_STATE_SLAVE_READY) { + } else if (data == SPI_HD_STATE_SLAVE_READY) { ESP_LOGI(TAG, "Slave is ready"); break; } vTaskDelay(pdMS_TO_TICKS(100)); } + ESP_LOGD(TAG, "Open Data path"); // slave is ready: initialise Data Ready as interrupt input g_h.funcs->_h_config_gpio_as_interrupt(H_SPI_HD_GPIO_DATA_READY_Port, H_SPI_HD_PIN_DATA_READY, H_SPI_HD_DR_INTR_EDGE, gpio_dr_isr_handler, NULL); @@ -492,11 +517,12 @@ static void spi_hd_read_task(void const* pvParameters) data = SPI_HD_CTRL_DATAPATH_ON; g_h.funcs->_h_spi_hd_write_reg(SPI_HD_REG_SLAVE_CTRL, &data, ACQUIRE_LOCK); + ESP_LOGD(TAG, "spi_hd_read_task: post open data path"); // we are now ready to receive data from slave while (1) { // wait for read semaphore to trigger g_h.funcs->_h_get_semaphore(spi_hd_data_ready_sem, HOSTED_BLOCK_MAX); - ESP_LOGV(TAG, "spi_hd_read_task: data ready intr"); + ESP_LOGV(TAG, "spi_hd_read_task: data ready intr received"); SPI_HD_DRV_LOCK(); @@ -510,6 +536,7 @@ static void spi_hd_read_task(void const* pvParameters) // send cmd9 to clear the interrupts on the slave g_h.funcs->_h_spi_hd_send_cmd9(); + ESP_LOGV(TAG, "spi_hd_read_task: sent cmd9"); // save the int mask int_mask = curr_rx_value & SPI_HD_INT_MASK; @@ -551,11 +578,22 @@ static void spi_hd_read_task(void const* pvParameters) continue; } + /* Validate transfer size to prevent buffer overflow */ + if (size_to_xfer > MAX_SPI_HD_BUFFER_SIZE) { + ESP_LOGE(TAG, "read_bytes[%"PRIu32"] > MAX_SPI_HD_BUFFER_SIZE[%d]. Ignoring read request", + size_to_xfer, MAX_SPI_HD_BUFFER_SIZE); + + SPI_HD_DRV_UNLOCK(); + continue; + } + // allocate rx buffer rxbuff = spi_hd_buffer_alloc(MEMSET_REQUIRED); assert(rxbuff); - ESP_LOGV(TAG, "spi_hd_read_task: trigger spi hd dma read"); + ESP_LOGV(TAG, "spi_hd_read_task: spi hd dma read: read_bytes[%"PRIu32"], curr_rx[%"PRIu32"], rx_count[%"PRIu32"]", + size_to_xfer, curr_rx_value & SPI_HD_TX_BUF_LEN_MASK, spi_hd_rx_byte_count); + // read data res = g_h.funcs->_h_spi_hd_read_dma(rxbuff, size_to_xfer, ACQUIRE_LOCK); @@ -566,6 +604,7 @@ static void spi_hd_read_task(void const* pvParameters) if (res) { ESP_LOGE(TAG, "error reading data"); + spi_hd_buffer_free(rxbuff); continue; } @@ -855,13 +894,15 @@ int ensure_slave_bus_ready(void *bus_handle) if (!esp_hosted_woke_from_deep_sleep()) { /* Reset the slave */ - ESP_LOGI(TAG, "Resetting slave on SPI HD bus with pin %d", reset_pin.pin); + ESP_LOGI(TAG, "Reseting slave on SPI HD bus with pin %d", reset_pin.pin); g_h.funcs->_h_config_gpio(reset_pin.port, reset_pin.pin, H_GPIO_MODE_DEF_OUTPUT); g_h.funcs->_h_write_gpio(reset_pin.port, reset_pin.pin, H_RESET_VAL_ACTIVE); g_h.funcs->_h_msleep(1); g_h.funcs->_h_write_gpio(reset_pin.port, reset_pin.pin, H_RESET_VAL_INACTIVE); g_h.funcs->_h_msleep(1); g_h.funcs->_h_write_gpio(reset_pin.port, reset_pin.pin, H_RESET_VAL_ACTIVE); + } else { + stop_host_power_save(); } return res; @@ -871,8 +912,32 @@ int bus_inform_slave_host_power_save_start(void) { ESP_LOGI(TAG, "Inform slave, host power save is started"); int ret = ESP_OK; - ret = esp_hosted_tx(ESP_SERIAL_IF, 0, NULL, 0, - H_BUFF_NO_ZEROCOPY, NULL, FLAG_POWER_SAVE_STARTED); + + /* + * If the write thread is not started yet (which happens after receiving INIT event), + * we need to send the power save message directly to avoid deadlock. + * Otherwise, use the normal queue mechanism. + */ + if (!spi_hd_start_write_thread) { + interface_buffer_handle_t buf_handle = {0}; + + buf_handle.payload_zcopy = H_BUFF_NO_ZEROCOPY; + buf_handle.if_type = ESP_SERIAL_IF; + buf_handle.if_num = 0; + buf_handle.payload_len = 0; + buf_handle.payload = NULL; + buf_handle.priv_buffer_handle = NULL; + buf_handle.free_buf_handle = NULL; + buf_handle.flag = FLAG_POWER_SAVE_STARTED; + + ESP_LOGI(TAG, "Sending power save start message directly"); + ret = spi_hd_write_packet(&buf_handle); + } else { + /* Use normal queue mechanism */ + ret = esp_hosted_tx(ESP_SERIAL_IF, 0, NULL, 0, + H_BUFF_NO_ZEROCOPY, NULL, FLAG_POWER_SAVE_STARTED); + } + return ret; } @@ -880,7 +945,31 @@ int bus_inform_slave_host_power_save_stop(void) { ESP_LOGI(TAG, "Inform slave, host power save is stopped"); int ret = ESP_OK; - ret = esp_hosted_tx(ESP_SERIAL_IF, 0, NULL, 0, - H_BUFF_NO_ZEROCOPY, NULL, FLAG_POWER_SAVE_STOPPED); + + /* + * If the write thread is not started yet (which happens after receiving INIT event), + * we need to send the power save message directly to avoid deadlock. + * Otherwise, use the normal queue mechanism. + */ + if (!spi_hd_start_write_thread) { + interface_buffer_handle_t buf_handle = {0}; + + buf_handle.payload_zcopy = H_BUFF_NO_ZEROCOPY; + buf_handle.if_type = ESP_SERIAL_IF; + buf_handle.if_num = 0; + buf_handle.payload_len = 0; + buf_handle.payload = NULL; + buf_handle.priv_buffer_handle = NULL; + buf_handle.free_buf_handle = NULL; + buf_handle.flag = FLAG_POWER_SAVE_STOPPED; + + ESP_LOGI(TAG, "Sending power save stop message directly"); + ret = spi_hd_write_packet(&buf_handle); + } else { + /* Use normal queue mechanism */ + ret = esp_hosted_tx(ESP_SERIAL_IF, 0, NULL, 0, + H_BUFF_NO_ZEROCOPY, NULL, FLAG_POWER_SAVE_STOPPED); + } + return ret; } diff --git a/host/drivers/transport/transport_drv.c b/host/drivers/transport/transport_drv.c index 5cbf228f..41d5571d 100644 --- a/host/drivers/transport/transport_drv.c +++ b/host/drivers/transport/transport_drv.c @@ -557,7 +557,7 @@ esp_err_t send_slave_config(uint8_t host_cap, uint8_t firmware_chip_id, uint16_t len = 0; uint8_t *sendbuf = NULL; - sendbuf = g_h.funcs->_h_malloc(512); + sendbuf = g_h.funcs->_h_malloc_align(MEMPOOL_ALIGNED(256), MEMPOOL_ALIGNMENT_BYTES); assert(sendbuf); /* Populate event data */ diff --git a/host/drivers/transport/uart/uart_drv.c b/host/drivers/transport/uart/uart_drv.c index f9ed09fc..c9f0b545 100644 --- a/host/drivers/transport/uart/uart_drv.c +++ b/host/drivers/transport/uart/uart_drv.c @@ -25,6 +25,7 @@ #include "stats.h" #include "esp_hosted_power_save.h" #include "esp_hosted_transport_config.h" +#include "power_save_drv.h" static const char TAG[] = "H_UART_DRV"; @@ -77,110 +78,131 @@ static inline void h_uart_buffer_free(void *buf) mempool_free(buf_mp_g, buf); } -static void h_uart_write_task(void const* pvParameters) +/* + * Write a packet to the UART bus + * Returns ESP_OK on success, ESP_FAIL on failure + */ +static int h_uart_write_packet(interface_buffer_handle_t *buf_handle) { uint16_t len = 0; uint8_t *sendbuf = NULL; void (*free_func)(void* ptr) = NULL; - interface_buffer_handle_t buf_handle = {0}; uint8_t * payload = NULL; struct esp_payload_header * payload_header = NULL; - - uint8_t tx_needed = 1; - int tx_len_to_send; int tx_len; + int result = ESP_OK; - while (!uart_start_write_thread) - g_h.funcs->_h_msleep(10); - - while (1) { - /* Check if higher layers have anything to transmit */ - g_h.funcs->_h_get_semaphore(sem_to_slave_queue, HOSTED_BLOCK_MAX); - - /* Tx msg is present as per sem */ - if (g_h.funcs->_h_dequeue_item(to_slave_queue[PRIO_Q_SERIAL], &buf_handle, 0)) - if (g_h.funcs->_h_dequeue_item(to_slave_queue[PRIO_Q_BT], &buf_handle, 0)) - if (g_h.funcs->_h_dequeue_item(to_slave_queue[PRIO_Q_OTHERS], &buf_handle, 0)) { - tx_needed = 0; /* No Tx msg */ - } - - if (tx_needed) - len = buf_handle.payload_len; + if (unlikely(!buf_handle)) + return ESP_FAIL; - if (!len) { - ESP_LOGE(TAG, "%s: Empty len", __func__); - goto done; - } + len = buf_handle->payload_len; - if (!buf_handle.payload_zcopy) { - sendbuf = h_uart_buffer_alloc(MEMSET_REQUIRED); - assert(sendbuf); - free_func = h_uart_buffer_free; - } else { - sendbuf = buf_handle.payload; - free_func = buf_handle.free_buf_handle; - } + if (unlikely(!buf_handle->flag && !len)) { + ESP_LOGE(TAG, "%s: Empty len", __func__); + return ESP_FAIL; + } + if (!buf_handle->payload_zcopy) { + sendbuf = h_uart_buffer_alloc(MEMSET_REQUIRED); if (!sendbuf) { ESP_LOGE(TAG, "uart buff malloc failed"); - free_func = NULL; - goto done; + return ESP_FAIL; } + free_func = h_uart_buffer_free; + } else { + sendbuf = buf_handle->payload; + free_func = buf_handle->free_buf_handle; + } - if (buf_handle.payload_len > MAX_UART_BUFFER_SIZE - sizeof(struct esp_payload_header)) { - ESP_LOGE(TAG, "Pkt len [%u] > Max [%u]. Drop", - buf_handle.payload_len, MAX_UART_BUFFER_SIZE - sizeof(struct esp_payload_header)); - goto done; - } + if (buf_handle->payload_len > MAX_UART_BUFFER_SIZE - sizeof(struct esp_payload_header)) { + ESP_LOGE(TAG, "Pkt len [%u] > Max [%u]. Drop", + buf_handle->payload_len, MAX_UART_BUFFER_SIZE - sizeof(struct esp_payload_header)); + result = ESP_FAIL; + goto done; + } - /* Form Tx header */ - payload_header = (struct esp_payload_header *) sendbuf; - payload = sendbuf + sizeof(struct esp_payload_header); - - payload_header->len = htole16(len); - payload_header->offset = htole16(sizeof(struct esp_payload_header)); - payload_header->if_type = buf_handle.if_type; - payload_header->if_num = buf_handle.if_num; - payload_header->seq_num = htole16(buf_handle.seq_num); - payload_header->flags = buf_handle.flag; - - if (payload_header->if_type == ESP_HCI_IF) { - // special handling for HCI - if (!buf_handle.payload_zcopy) { - // copy first byte of payload into header - payload_header->hci_pkt_type = buf_handle.payload[0]; - // adjust actual payload len - len -= 1; - payload_header->len = htole16(len); - g_h.funcs->_h_memcpy(payload, &buf_handle.payload[1], len); - } - } else - if (!buf_handle.payload_zcopy) - g_h.funcs->_h_memcpy(payload, buf_handle.payload, len); + /* Form Tx header */ + payload_header = (struct esp_payload_header *) sendbuf; + payload = sendbuf + sizeof(struct esp_payload_header); + + payload_header->len = htole16(len); + payload_header->offset = htole16(sizeof(struct esp_payload_header)); + payload_header->if_type = buf_handle->if_type; + payload_header->if_num = buf_handle->if_num; + payload_header->seq_num = htole16(buf_handle->seq_num); + payload_header->flags = buf_handle->flag; + + if (payload_header->if_type == ESP_HCI_IF) { + // special handling for HCI + if (!buf_handle->payload_zcopy) { + // copy first byte of payload into header + payload_header->hci_pkt_type = buf_handle->payload[0]; + // adjust actual payload len + len -= 1; + payload_header->len = htole16(len); + g_h.funcs->_h_memcpy(payload, &buf_handle->payload[1], len); + } + } else { + if (!buf_handle->payload_zcopy) { + g_h.funcs->_h_memcpy(payload, buf_handle->payload, len); + } + } #if H_UART_CHECKSUM - payload_header->checksum = htole16(compute_checksum(sendbuf, - sizeof(struct esp_payload_header) + len)); + payload_header->checksum = htole16(compute_checksum(sendbuf, + sizeof(struct esp_payload_header) + len)); #endif - tx_len_to_send = len + sizeof(struct esp_payload_header); - tx_len = g_h.funcs->_h_uart_write(uart_handle, sendbuf, tx_len_to_send); - if (tx_len != tx_len_to_send) { - ESP_LOGE(TAG, "failed to send uart data"); - } + tx_len_to_send = len + sizeof(struct esp_payload_header); + tx_len = g_h.funcs->_h_uart_write(uart_handle, sendbuf, tx_len_to_send); + if (tx_len != tx_len_to_send) { + ESP_LOGE(TAG, "failed to send uart data"); + result = ESP_FAIL; + goto done; + } #if ESP_PKT_STATS - if (buf_handle.if_type == ESP_STA_IF) - pkt_stats.sta_tx_out++; + if (buf_handle->if_type == ESP_STA_IF) + pkt_stats.sta_tx_out++; #endif done: - if (len && !buf_handle.payload_zcopy) { - /* free allocated buffer, only if zerocopy is not requested */ - H_FREE_PTR_WITH_FUNC(buf_handle.free_buf_handle, buf_handle.priv_buffer_handle); - } - H_FREE_PTR_WITH_FUNC(free_func, sendbuf); + if (len && !buf_handle->payload_zcopy) { + /* free allocated buffer, only if zerocopy is not requested */ + H_FREE_PTR_WITH_FUNC(buf_handle->free_buf_handle, buf_handle->priv_buffer_handle); + } + H_FREE_PTR_WITH_FUNC(free_func, sendbuf); + + return result; +} + +static void h_uart_write_task(void const* pvParameters) +{ + interface_buffer_handle_t buf_handle = {0}; + uint8_t tx_needed = 1; + + while (!uart_start_write_thread) + g_h.funcs->_h_msleep(10); + + ESP_LOGD(TAG, "h_uart_write_task: write thread started"); + + while (1) { + /* Check if higher layers have anything to transmit */ + g_h.funcs->_h_get_semaphore(sem_to_slave_queue, HOSTED_BLOCK_MAX); + + /* Tx msg is present as per sem */ + if (g_h.funcs->_h_dequeue_item(to_slave_queue[PRIO_Q_SERIAL], &buf_handle, 0)) + if (g_h.funcs->_h_dequeue_item(to_slave_queue[PRIO_Q_BT], &buf_handle, 0)) + if (g_h.funcs->_h_dequeue_item(to_slave_queue[PRIO_Q_OTHERS], &buf_handle, 0)) { + tx_needed = 0; /* No Tx msg */ + } + + if (!tx_needed) + continue; + + /* Send the packet */ + h_uart_write_packet(&buf_handle); } } @@ -525,9 +547,8 @@ int esp_hosted_tx(uint8_t iface_type, uint8_t iface_num, if (free_wbuf_fun) free_func = free_wbuf_fun; - if (!wbuffer || !wlen || - (wlen > MAX_PAYLOAD_SIZE) || - !transport_up) { + if ((!flag) && + (!wbuffer || !wlen ||(wlen > MAX_PAYLOAD_SIZE) || !transport_up)) { ESP_LOGE(TAG, "tx fail: NULL buff, invalid len (%u) or len > max len (%u), transport_up(%u))", wlen, MAX_PAYLOAD_SIZE, transport_up); H_FREE_PTR_WITH_FUNC(free_func, wbuffer); @@ -632,7 +653,7 @@ int ensure_slave_bus_ready(void *bus_handle) release_slave_reset_gpio_post_wakeup(); - if (!esp_hosted_is_reboot_due_to_deep_sleep()) { + if (!esp_hosted_woke_from_deep_sleep()) { /* Reset the slave */ ESP_LOGI(TAG, "Resetting slave on UART bus with pin %d", reset_pin.pin); g_h.funcs->_h_config_gpio(reset_pin.port, reset_pin.pin, H_GPIO_MODE_DEF_OUTPUT); @@ -643,7 +664,7 @@ int ensure_slave_bus_ready(void *bus_handle) g_h.funcs->_h_write_gpio(reset_pin.port, reset_pin.pin, H_RESET_VAL_ACTIVE); g_h.funcs->_h_msleep(1500); } else { - g_h.funcs->_h_msleep(700); + stop_host_power_save(); } return res; @@ -653,8 +674,32 @@ int bus_inform_slave_host_power_save_start(void) { ESP_LOGI(TAG, "Inform slave, host power save is started"); int ret = ESP_OK; - ret = esp_hosted_tx(ESP_SERIAL_IF, 0, NULL, 0, - H_BUFF_NO_ZEROCOPY, NULL, FLAG_POWER_SAVE_STARTED); + + /* + * If the write thread is not started yet (which happens after receiving INIT event), + * we need to send the power save message directly to avoid deadlock. + * Otherwise, use the normal queue mechanism. + */ + if (!uart_start_write_thread) { + interface_buffer_handle_t buf_handle = {0}; + + buf_handle.payload_zcopy = H_BUFF_NO_ZEROCOPY; + buf_handle.if_type = ESP_SERIAL_IF; + buf_handle.if_num = 0; + buf_handle.payload_len = 0; + buf_handle.payload = NULL; + buf_handle.priv_buffer_handle = NULL; + buf_handle.free_buf_handle = NULL; + buf_handle.flag = FLAG_POWER_SAVE_STARTED; + + ESP_LOGI(TAG, "Sending power save start message directly"); + ret = h_uart_write_packet(&buf_handle); + } else { + /* Use normal queue mechanism */ + ret = esp_hosted_tx(ESP_SERIAL_IF, 0, NULL, 0, + H_BUFF_NO_ZEROCOPY, NULL, FLAG_POWER_SAVE_STARTED); + } + return ret; } @@ -662,8 +707,33 @@ int bus_inform_slave_host_power_save_stop(void) { ESP_LOGI(TAG, "Inform slave, host power save is stopped"); int ret = ESP_OK; - ret = esp_hosted_tx(ESP_SERIAL_IF, 0, NULL, 0, - H_BUFF_NO_ZEROCOPY, NULL, FLAG_POWER_SAVE_STOPPED); + + + /* + * If the write thread is not started yet (which happens after receiving INIT event), + * we need to send the power save message directly to avoid deadlock. + * Otherwise, use the normal queue mechanism. + */ + if (!uart_start_write_thread) { + interface_buffer_handle_t buf_handle = {0}; + + buf_handle.payload_zcopy = H_BUFF_NO_ZEROCOPY; + buf_handle.if_type = ESP_SERIAL_IF; + buf_handle.if_num = 0; + buf_handle.payload_len = 0; + buf_handle.payload = NULL; + buf_handle.priv_buffer_handle = NULL; + buf_handle.free_buf_handle = NULL; + buf_handle.flag = FLAG_POWER_SAVE_STOPPED; + + ESP_LOGI(TAG, "Sending power save start message directly"); + ret = h_uart_write_packet(&buf_handle); + } else { + /* Use normal queue mechanism */ + ret = esp_hosted_tx(ESP_SERIAL_IF, 0, NULL, 0, + H_BUFF_NO_ZEROCOPY, NULL, FLAG_POWER_SAVE_STOPPED); + } + return ret; } diff --git a/host/port/esp/freertos/src/os_wrapper.c b/host/port/esp/freertos/src/os_wrapper.c index f94df64b..c1ca5a49 100644 --- a/host/port/esp/freertos/src/os_wrapper.c +++ b/host/port/esp/freertos/src/os_wrapper.c @@ -857,8 +857,8 @@ int hosted_get_host_wakeup_or_reboot_reason(void) uint32_t wakeup_causes = esp_sleep_get_wakeup_causes(); wakeup_due_to_gpio = (wakeup_causes & BIT(ESP_SLEEP_WAKEUP_GPIO)); #else - uint32_t wakeup_causes = esp_sleep_get_wakeup_cause(); - wakeup_due_to_gpio = (wakeup_reason == ESP_SLEEP_WAKEUP_GPIO); + uint32_t wakeup_cause = esp_sleep_get_wakeup_cause(); + wakeup_due_to_gpio = (wakeup_cause == ESP_SLEEP_WAKEUP_GPIO); #endif if (reboot_reason == ESP_RST_POWERON) { diff --git a/slave/main/Kconfig.projbuild b/slave/main/Kconfig.projbuild index 25e98b50..1a9c8af0 100644 --- a/slave/main/Kconfig.projbuild +++ b/slave/main/Kconfig.projbuild @@ -1023,7 +1023,6 @@ menu "Example Configuration" config ESP_HOSTED_HOST_POWER_SAVE_ENABLED bool "Allow host to power save" - depends on ESP_SDIO_HOST_INTERFACE # by the time light sleep not added default n help Allow host to enter power save mode. @@ -1034,7 +1033,6 @@ menu "Example Configuration" config ESP_HOSTED_HOST_DEEP_SLEEP_ALLOWED depends on ESP_HOSTED_HOST_POWER_SAVE_ENABLED - depends on ESP_SDIO_HOST_INTERFACE bool "Allow host to enter deep sleep. Slave will wakeup host using GPIO when needed" default y if ESP_HOSTED_HOST_POWER_SAVE_ENABLED select ESP_HOSTED_CLI_ENABLED diff --git a/slave/main/esp_hosted_coprocessor.c b/slave/main/esp_hosted_coprocessor.c index 69e1c4d6..62568c45 100644 --- a/slave/main/esp_hosted_coprocessor.c +++ b/slave/main/esp_hosted_coprocessor.c @@ -447,7 +447,7 @@ static void host_reset_task(void* pvParameters) /* send capabilities to host */ ESP_LOGI(TAG,"host reconfig event"); generate_startup_event(capa, ext_capa); - send_event_to_host(RPC_ID__Event_ESPInit); + //send_event_to_host(RPC_ID__Event_ESPInit); } } @@ -818,6 +818,12 @@ static void power_save_alert_task(void *pvParameters) uint32_t event = (uint32_t)pvParameters; host_power_save_alert(event); /* The task deletes itself after running. */ + if (event == ESP_POWER_SAVE_OFF) { + sleep(2); + if (host_reset_sem) { + xSemaphoreGive(host_reset_sem); + } + } vTaskDelete(NULL); } @@ -843,7 +849,9 @@ int event_handler(uint8_t val) datapath = 0; if (if_handle) { ESP_EARLY_LOGI(TAG, "Stop Data Path"); - if_handle->state = DEACTIVE; + if (if_handle->state > DEACTIVE) { + if_handle->state = DEACTIVE; + } } else { ESP_EARLY_LOGI(TAG, "Failed to Stop Data Path"); } @@ -861,9 +869,6 @@ int event_handler(uint8_t val) ESP_EARLY_LOGI(TAG, "Failed to set state to ACTIVE"); }*/ xTaskCreate(power_save_alert_task, "ps_alert_task", 3072, (void *)ESP_POWER_SAVE_OFF, tskIDLE_PRIORITY + 5, NULL); - if (host_reset_sem) { - xSemaphoreGive(host_reset_sem); - } break; } return 0; diff --git a/slave/main/host_power_save.c b/slave/main/host_power_save.c index 8530ec6e..85c18edf 100644 --- a/slave/main/host_power_save.c +++ b/slave/main/host_power_save.c @@ -260,6 +260,7 @@ int wakeup_host(uint32_t timeout_ms) return 0; } + ESP_LOGI(TAG, "if_handle->state: %u", if_handle->state); if (if_handle->state < DEACTIVE) { ESP_LOGI(TAG, "%s:%u Re-Initializing driver\n", __func__, __LINE__); diff --git a/slave/main/spi_hd_slave_api.c b/slave/main/spi_hd_slave_api.c index a12eb6a9..530e453c 100644 --- a/slave/main/spi_hd_slave_api.c +++ b/slave/main/spi_hd_slave_api.c @@ -96,11 +96,11 @@ static const char TAG[] = "SPI_HD_DRIVER"; #endif #if H_DATAREADY_ACTIVE_HIGH - #define set_dataready_gpio() { data_ready_gpio_active = true; gpio_set_level(GPIO_DATA_READY, 1); } - #define reset_dataready_gpio() { gpio_set_level(GPIO_DATA_READY, 0); data_ready_gpio_active = false; } + #define set_dataready_gpio() { ESP_EARLY_LOGV(TAG, "set_dataready_gpio"); data_ready_gpio_active = true; gpio_set_level(GPIO_DATA_READY, 1); } + #define reset_dataready_gpio() { ESP_EARLY_LOGV(TAG, "reset_dataready_gpio"); gpio_set_level(GPIO_DATA_READY, 0); data_ready_gpio_active = false; } #else - #define set_dataready_gpio() { data_ready_gpio_active = true; gpio_set_level(GPIO_DATA_READY, 0); } - #define reset_dataready_gpio() { gpio_set_level(GPIO_DATA_READY, 1); data_ready_gpio_active = false; } + #define set_dataready_gpio() { ESP_EARLY_LOGV(TAG, "set_dataready_gpio"); data_ready_gpio_active = true; gpio_set_level(GPIO_DATA_READY, 0); } + #define reset_dataready_gpio() { ESP_EARLY_LOGV(TAG, "reset_dataready_gpio"); gpio_set_level(GPIO_DATA_READY, 1); data_ready_gpio_active = false; } #endif // for flow control @@ -214,6 +214,7 @@ static inline void spi_hd_trans_rx_free(spi_slave_hd_data_t *trans) static bool cb_rx_ready(void *arg, spi_slave_hd_event_t *event, BaseType_t *awoken) { // rx dma buffer ready + ESP_EARLY_LOGV(TAG, "cb_rx_ready"); // update count rx_ready_buf_num++; @@ -226,7 +227,7 @@ static bool cb_rx_ready(void *arg, spi_slave_hd_event_t *event, BaseType_t *awok static bool cb_tx_ready(void *arg, spi_slave_hd_event_t *event, BaseType_t *awoken) { // tx buffer loaded to DMA - + ESP_EARLY_LOGD(TAG, "cb_tx_ready %u (current %u)", event->trans->len, tx_ready_buf_size); // save the int mask uint32_t int_mask = tx_ready_buf_size & SPI_HD_INT_MASK; @@ -251,6 +252,7 @@ static bool cb_cmd9_recv(void *arg, spi_slave_hd_event_t *event, BaseType_t *awo // clear the mask tx_ready_buf_size &= SPI_HD_TX_BUF_LEN_MASK; + ESP_EARLY_LOGD(TAG, "cb_cmd9_recv %u", tx_ready_buf_size); // clear Data Ready reset_dataready_gpio(); @@ -444,6 +446,7 @@ static void spi_hd_rx_task(void* pvParameters) } while (1) { + // wait for incoming transactions res = spi_slave_hd_get_trans_res(SPI_HOST, SPI_SLAVE_CHAN_RX, &ret_trans, portMAX_DELAY); @@ -469,6 +472,8 @@ static void spi_hd_rx_task(void* pvParameters) offset = le16toh(header->offset); flags = header->flags; + ESP_LOGV(TAG, "Received flags: 0x%02x", flags); + if (flags & FLAG_POWER_SAVE_STARTED) { ESP_LOGI(TAG, "Host informed starting to power sleep"); if (context.event_handler) { @@ -476,6 +481,7 @@ static void spi_hd_rx_task(void* pvParameters) } } else if (flags & FLAG_POWER_SAVE_STOPPED) { ESP_LOGI(TAG, "Host informed that it waken up"); + tx_ready_buf_size = 0; if (context.event_handler) { context.event_handler(ESP_POWER_SAVE_OFF); } @@ -671,7 +677,8 @@ static interface_handle_t * esp_spi_hd_init(void) static void esp_spi_hd_deinit(interface_handle_t * handle) { -#if H_HOST_PS_ALLOWED && H_PS_UNLOAD_BUS_WHILE_PS +#if H_PS_UNLOAD_BUS_WHILE_PS + if (if_handle_g.state == DEINIT) { ESP_LOGW(TAG, "SPI HD already deinitialized"); return; @@ -755,6 +762,7 @@ static int32_t esp_spi_hd_write(interface_handle_t *handle, interface_buffer_han header->seq_num = htole16(buf_handle->seq_num); header->flags = buf_handle->flag; header->throttle_cmd = buf_handle->wifi_flow_ctrl_en; + header->flags = buf_handle->flag; memcpy(sendbuf + offset, buf_handle->payload, buf_handle->payload_len); @@ -763,7 +771,7 @@ static int32_t esp_spi_hd_write(interface_handle_t *handle, interface_buffer_han offset+buf_handle->payload_len)); #endif - ESP_LOGD(TAG, "sending %"PRIu32 " bytes", total_len); + ESP_LOGD(TAG, "sending %"PRIu32 " bytes, flag: 0x%02x", total_len, buf_handle->flag); ESP_HEXLOGD("spi_hd_tx", sendbuf, total_len, 32); tx_trans = spi_hd_trans_tx_alloc(MEMSET_REQUIRED); diff --git a/slave/main/spi_slave_api.c b/slave/main/spi_slave_api.c index c0375893..42249b0d 100644 --- a/slave/main/spi_slave_api.c +++ b/slave/main/spi_slave_api.c @@ -65,6 +65,7 @@ static const char TAG[] = "SPI_DRIVER"; #else #define DMA_CHAN SPI_DMA_CH_AUTO #endif +static uint8_t hosted_constructs_init_done = 0; #if ESP_SPI_MODE==0 @@ -187,11 +188,11 @@ static inline void spi_trans_free(spi_slave_transaction_t *trans) { hosted_mempool_free(trans_mp_g, trans); } - -#define set_handshake_gpio() gpio_set_level(GPIO_HANDSHAKE, 1); -#define reset_handshake_gpio() gpio_set_level(GPIO_HANDSHAKE, 0); -#define set_dataready_gpio() gpio_set_level(GPIO_DATA_READY, 1); -#define reset_dataready_gpio() gpio_set_level(GPIO_DATA_READY, 0); +volatile uint8_t data_ready_flag = 0; +#define set_handshake_gpio() ESP_EARLY_LOGD(TAG, "+ set handshake gpio");gpio_set_level(GPIO_HANDSHAKE, 1); +#define reset_handshake_gpio() ESP_EARLY_LOGD(TAG, "- reset handshake gpio");gpio_set_level(GPIO_HANDSHAKE, 0); +#define set_dataready_gpio() if (!data_ready_flag) {ESP_EARLY_LOGD(TAG, "+ set dataready gpio");gpio_set_level(GPIO_DATA_READY, 1);data_ready_flag = 1;} +#define reset_dataready_gpio() if (data_ready_flag) {ESP_EARLY_LOGD(TAG, "- reset dataready gpio");gpio_set_level(GPIO_DATA_READY, 0);data_ready_flag = 0;} interface_context_t *interface_insert_driver(int (*event_handler)(uint8_t val)) { @@ -532,46 +533,9 @@ static void spi_transaction_post_process_task(void* pvParameters) /* Check if interface is being deinitialized */ #if H_PS_UNLOAD_BUS_WHILE_PS if (if_handle_g.state == DEINIT) { - ESP_LOGI(TAG, "SPI deinit requested, cleaning up and exiting task..."); - - xSemaphoreGive(spi_rx_sem); - gpio_set_level(GPIO_HANDSHAKE, 0); - gpio_set_level(GPIO_DATA_READY, 0); /* Perform all resource cleanup from the task itself */ - gpio_uninstall_isr_service(); - spi_slave_disable(ESP_SPI_CONTROLLER); - spi_slave_free(ESP_SPI_CONTROLLER); - - if (spi_rx_sem) { - xSemaphoreGive(spi_rx_sem); - vSemaphoreDelete(spi_rx_sem); - spi_rx_sem = NULL; - } - for (int i = 0; i < MAX_PRIORITY_QUEUES; i++) { - if (spi_rx_queue[i]) { - vQueueDelete(spi_rx_queue[i]); - spi_rx_queue[i] = NULL; - } - } - if (spi_tx_sem) { - xSemaphoreGive(spi_tx_sem); - vSemaphoreDelete(spi_tx_sem); - spi_tx_sem = NULL; - } - for (int i = 0; i < MAX_PRIORITY_QUEUES; i++) { - if (spi_tx_queue[i]) { - vQueueDelete(spi_tx_queue[i]); - spi_tx_queue[i] = NULL; - } - } - spi_mempool_destroy(); - - // Allow re-initialization on next wakeup - spi_init_done = 0; - if_handle_g.state = DEINIT; - - ESP_LOGI(TAG, "SPI cleanup complete. Task terminating."); - vTaskDelete(NULL); - return; + vTaskDelay(pdMS_TO_TICKS(10)); + ESP_LOGI(TAG, "spi deinit"); + continue; } #endif @@ -665,6 +629,13 @@ static interface_handle_t * esp_spi_init(void) if (unlikely(if_handle_g.state >= DEACTIVE)) { return &if_handle_g; } + + if (hosted_constructs_init_done) { + spi_slave_enable(ESP_SPI_CONTROLLER); + if_handle_g.state = ACTIVE; + return &if_handle_g; + } + esp_err_t ret = ESP_OK; uint16_t prio_q_idx = 0; @@ -695,89 +666,96 @@ static interface_handle_t * esp_spi_init(void) .post_trans_cb=spi_post_trans_cb }; - /* Configuration for the handshake line */ - gpio_config_t io_conf={ - .intr_type=GPIO_INTR_DISABLE, - .mode=GPIO_MODE_OUTPUT, - .pin_bit_mask=GPIO_MASK_HANDSHAKE - }; + if (!hosted_constructs_init_done) { + /* Configuration for the handshake line */ + gpio_config_t io_conf={ + .intr_type=GPIO_INTR_DISABLE, + .mode=GPIO_MODE_OUTPUT, + .pin_bit_mask=GPIO_MASK_HANDSHAKE + }; - /* Configuration for data_ready line */ - gpio_config_t io_data_ready_conf={ - .intr_type=GPIO_INTR_DISABLE, - .mode=GPIO_MODE_OUTPUT, - .pin_bit_mask=GPIO_MASK_DATA_READY - }; + /* Configuration for data_ready line */ + gpio_config_t io_data_ready_conf={ + .intr_type=GPIO_INTR_DISABLE, + .mode=GPIO_MODE_OUTPUT, + .pin_bit_mask=GPIO_MASK_DATA_READY + }; - spi_mempool_create(); + spi_mempool_create(); - /* Configure handshake and data_ready lines as output */ - gpio_config(&io_conf); - gpio_config(&io_data_ready_conf); - reset_handshake_gpio(); - reset_dataready_gpio(); + /* Configure handshake and data_ready lines as output */ + gpio_config(&io_conf); + gpio_config(&io_data_ready_conf); + reset_handshake_gpio(); + reset_dataready_gpio(); - /* Enable pull-ups on SPI lines - * so that no rogue pulses when no master is connected - */ - gpio_set_pull_mode(CONFIG_ESP_SPI_GPIO_HANDSHAKE, H_HS_PULL_REGISTER); - gpio_set_pull_mode(CONFIG_ESP_SPI_GPIO_DATA_READY, H_DR_PULL_REGISTER); - gpio_set_pull_mode(GPIO_MOSI, GPIO_PULLUP_ONLY); - gpio_set_pull_mode(GPIO_SCLK, GPIO_PULLUP_ONLY); - gpio_set_pull_mode(GPIO_CS, GPIO_PULLUP_ONLY); + /* Enable pull-ups on SPI lines + * so that no rogue pulses when no master is connected + */ + gpio_set_pull_mode(CONFIG_ESP_SPI_GPIO_HANDSHAKE, H_HS_PULL_REGISTER); + gpio_set_pull_mode(CONFIG_ESP_SPI_GPIO_DATA_READY, H_DR_PULL_REGISTER); + gpio_set_pull_mode(GPIO_MOSI, GPIO_PULLUP_ONLY); + gpio_set_pull_mode(GPIO_SCLK, GPIO_PULLUP_ONLY); + gpio_set_pull_mode(GPIO_CS, GPIO_PULLUP_ONLY); - ESP_LOGI(TAG, "SPI Ctrl:%u mode: %u, Freq:ConfigAtHost\nGPIOs: CLK:%u MOSI:%u MISO:%u CS:%u HS:%u DR:%u\n", - ESP_SPI_CONTROLLER, slvcfg.mode, - GPIO_SCLK, GPIO_MOSI, GPIO_MISO, GPIO_CS, - GPIO_HANDSHAKE, GPIO_DATA_READY); + ESP_LOGI(TAG, "SPI Ctrl:%u mode: %u, Freq:ConfigAtHost\nGPIOs: CLK:%u MOSI:%u MISO:%u CS:%u HS:%u DR:%u\n", + ESP_SPI_CONTROLLER, slvcfg.mode, + GPIO_SCLK, GPIO_MOSI, GPIO_MISO, GPIO_CS, + GPIO_HANDSHAKE, GPIO_DATA_READY); - ESP_LOGI(TAG, "Hosted SPI queue size: Tx:%u Rx:%u", SPI_TX_QUEUE_SIZE, SPI_RX_QUEUE_SIZE); - register_hs_disable_pin(GPIO_CS); + ESP_LOGI(TAG, "Hosted SPI queue size: Tx:%u Rx:%u", SPI_TX_QUEUE_SIZE, SPI_RX_QUEUE_SIZE); + register_hs_disable_pin(GPIO_CS); #if !H_HANDSHAKE_ACTIVE_HIGH - ESP_LOGI(TAG, "Handshake: Active Low"); + ESP_LOGI(TAG, "Handshake: Active Low"); #endif #if !H_DATAREADY_ACTIVE_HIGH - ESP_LOGI(TAG, "DataReady: Active Low"); + ESP_LOGI(TAG, "DataReady: Active Low"); #endif + } /* Initialize SPI slave interface */ ret=spi_slave_initialize(ESP_SPI_CONTROLLER, &buscfg, &slvcfg, DMA_CHAN); assert(ret==ESP_OK); - //gpio_set_drive_capability(CONFIG_ESP_SPI_GPIO_HANDSHAKE, GPIO_DRIVE_CAP_3); - //gpio_set_drive_capability(CONFIG_ESP_SPI_GPIO_DATA_READY, GPIO_DRIVE_CAP_3); - gpio_set_drive_capability(GPIO_SCLK, GPIO_DRIVE_CAP_3); - gpio_set_drive_capability(GPIO_MISO, GPIO_DRIVE_CAP_3); - gpio_set_pull_mode(GPIO_MISO, GPIO_PULLDOWN_ONLY); + if (!hosted_constructs_init_done) { + //gpio_set_drive_capability(CONFIG_ESP_SPI_GPIO_HANDSHAKE, GPIO_DRIVE_CAP_3); + //gpio_set_drive_capability(CONFIG_ESP_SPI_GPIO_DATA_READY, GPIO_DRIVE_CAP_3); + gpio_set_drive_capability(GPIO_SCLK, GPIO_DRIVE_CAP_3); + gpio_set_drive_capability(GPIO_MISO, GPIO_DRIVE_CAP_3); + gpio_set_pull_mode(GPIO_MISO, GPIO_PULLDOWN_ONLY); #if HS_DEASSERT_ON_CS - wait_cs_deassert_sem = xSemaphoreCreateBinary(); - assert(wait_cs_deassert_sem!= NULL); - ret = xSemaphoreTake(wait_cs_deassert_sem, 0); + wait_cs_deassert_sem = xSemaphoreCreateBinary(); + assert(wait_cs_deassert_sem!= NULL); + ret = xSemaphoreTake(wait_cs_deassert_sem, 0); #endif + } memset(&if_handle_g, 0, sizeof(if_handle_g)); if_handle_g.state = ACTIVE; - spi_tx_sem = xSemaphoreCreateCounting(SPI_TX_QUEUE_SIZE*3, 0); - assert(spi_tx_sem != NULL); - spi_rx_sem = xSemaphoreCreateCounting(SPI_RX_QUEUE_SIZE*3, 0); - assert(spi_rx_sem != NULL); + if (!hosted_constructs_init_done) { + spi_tx_sem = xSemaphoreCreateCounting(SPI_TX_QUEUE_SIZE*3, 0); + assert(spi_tx_sem != NULL); + spi_rx_sem = xSemaphoreCreateCounting(SPI_RX_QUEUE_SIZE*3, 0); + assert(spi_rx_sem != NULL); - for (prio_q_idx=0; prio_q_idxstate = DEINIT; ESP_LOGI(TAG, "SPI deinit requested. Signaling spi task to exit."); #endif From de5ad58f09137e6d2d6173fdae6fdd6dbeb2ff63 Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Mon, 28 Jul 2025 10:37:55 +0800 Subject: [PATCH 052/114] CI fixes and Review comments --- .gitlab-ci.yml | 3 ++- docs/feature_host_deep_sleep.md | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fcb8ced0..ae49e5ba 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -15,6 +15,7 @@ before_script: expire_in: 4 days script: - source ${IDF_PATH}/export.sh + - pip install idf-ci - pip install idf-component-manager idf-build-apps --upgrade # Need to rename the cloned "esp_hosted_mcu" directory since the injected component name is "esp_hosted" - cd .. && rm -rf esp_hosted && mv esp_hosted_mcu esp_hosted && cd esp_hosted @@ -122,4 +123,4 @@ build_all_features_enabled_master: - IDF_TARGET: ["esp32p4"] IDF_SLAVE_TARGET: ["esp32c5", "esp32c6"] IDF_EXAMPLE_PATH: examples/wifi/iperf - SDKCONFIG_CI_FILE: "sdkconfig.ci.all_features_enabled" \ No newline at end of file + SDKCONFIG_CI_FILE: "sdkconfig.ci.all_features_enabled" diff --git a/docs/feature_host_deep_sleep.md b/docs/feature_host_deep_sleep.md index df899597..6a2de83e 100644 --- a/docs/feature_host_deep_sleep.md +++ b/docs/feature_host_deep_sleep.md @@ -11,7 +11,6 @@ Key features include: - Seamless network handover during sleep - Integration with Network Split -> Deep sleep currently supported on SDIO transport only. --- ## Configuration @@ -30,7 +29,7 @@ Component config ``` > [!NOTE] > 1. The wakeup GPIO number must be an RTC-capable GPIO. -> 2. Deep Sleep is currently only available for the SDIO transport for ESP hosts. +> 2. Ensure the wake up GPIO is unused ### Slave Configuration From 3cf878b3fe34730ec831e0cdbd0febc97ab3b01b Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Mon, 28 Jul 2025 12:12:02 +0800 Subject: [PATCH 053/114] doc fixes for host deep sleep and wake up --- Kconfig | 2 +- docs/feature_host_deep_sleep.md | 22 +++++++++++----------- slave/main/Kconfig.projbuild | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Kconfig b/Kconfig index af7f1837..c902ecc7 100644 --- a/Kconfig +++ b/Kconfig @@ -1762,7 +1762,7 @@ ESP32XX_SPI_HD_CLK_FREQ_RANGE_MAX := 40 depends on ESP_HOSTED_HOST_DEEP_SLEEP_ALLOWED config ESP_HOSTED_HOST_WAKEUP_GPIO - int "Host Wakeup GPIO" + int "Host in: Host Wakeup GPIO" default 5 if C2_C5_MODULE_SUB_BOARD default 6 if IDF_TARGET_ESP32P4 && SLAVE_CHIPSET_ESP32C6 && !ESP_HOSTED_SPI_HD_HOST_INTERFACE default 4 if IDF_TARGET_ESP32P4 && SLAVE_CHIPSET_ESP32C6 && ESP_HOSTED_SPI_HD_HOST_INTERFACE diff --git a/docs/feature_host_deep_sleep.md b/docs/feature_host_deep_sleep.md index 6a2de83e..2cc4a149 100644 --- a/docs/feature_host_deep_sleep.md +++ b/docs/feature_host_deep_sleep.md @@ -22,10 +22,10 @@ In host example project, run `idf.py menuconfig` and Enable `Allow host to power Component config └── ESP-Hosted config └── [*] Allow host to power save <== Enable This - └── [*] Allow host to enter deep sleep. ─┐ - ├── () Host Wakeup GPIO │ - └── Host Wakeup GPIO Level ├── Default config (No change) - └── (X) High ─┘ + └── [*] Allow host to enter deep sleep. ─┐ + ├── () Host in: Host Wakeup GPIO │ + └── Host Wakeup GPIO Level ├── Default config (No change) + └── (X) High ─┘ ``` > [!NOTE] > 1. The wakeup GPIO number must be an RTC-capable GPIO. @@ -39,14 +39,14 @@ In slave project, run `idf.py menuconfig` and Enable `Allow host to power save` # Slave side kconfig Example Configuration └── [*] Allow host to power save <== Enable This - └── [*] Allow host to enter deep sleep. ─┐ - ├── () Host wakeup GPIO │ - └── Host Wakeup GPIO Level ├── Default config (No change) - └── (X) High ─┘ + └── [*] Allow host to enter deep sleep. ─┐ + ├── () Slave out: Host wakeup GPIO │ + └── Host Wakeup GPIO Level ├── Default config (No change) + └── (X) High ─┘ ``` --- -## High Level Understanding +## High Level Overview The power management system coordinates between the host MCU and ESP slave to ensure smooth transitions between active and sleep states. @@ -57,7 +57,7 @@ sequenceDiagram participant Network as Network/WiFi Host->>Slave: Power Save Start Signal - Note over Slave: Slave takes over network operations + Note over Slave: Slave takes over network operations Host->>Host: Enter Deep Sleep Network->>Slave: Incoming packets @@ -111,7 +111,7 @@ stateDiagram ``` --- -## Low Level Understanding +## Deep Dive ### 💤 Host Enters Deep Sleep diff --git a/slave/main/Kconfig.projbuild b/slave/main/Kconfig.projbuild index 1a9c8af0..b448685d 100644 --- a/slave/main/Kconfig.projbuild +++ b/slave/main/Kconfig.projbuild @@ -1042,7 +1042,7 @@ menu "Example Configuration" menu "Host deep sleep - wakeup config" depends on ESP_HOSTED_HOST_DEEP_SLEEP_ALLOWED config ESP_HOSTED_HOST_WAKEUP_GPIO - int "Host wakeup GPIO" + int "Slave out: Host wakeup GPIO" default 2 if IDF_TARGET_ESP32C6 && !ESP_SPI_HD_HOST_INTERFACE default 9 if IDF_TARGET_ESP32C6 && ESP_SPI_HD_HOST_INTERFACE default 1 if IDF_TARGET_ESP32C3 From 3e77ea846ef2bbc2f90f2d78b56c156d8f58ee40 Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Mon, 28 Jul 2025 13:02:55 +0800 Subject: [PATCH 054/114] Update minor version to 2.1.0 --- idf_component.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/idf_component.yml b/idf_component.yml index 99d93841..7a1148a1 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.0.17" +version: "2.1.0" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: From 0d30f552fa50d919264959a04594c0adee86970c Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Mon, 28 Jul 2025 14:36:05 +0800 Subject: [PATCH 055/114] bugfix(build_break): Fixed build break - updated ESP_LOG lines to use PRx values - added extra macro to handle boolean values - corrected spacing in code --- idf_component.yml | 2 +- slave/main/slave_control.c | 781 +++++++++++++++++++------------------ 2 files changed, 405 insertions(+), 378 deletions(-) diff --git a/idf_component.yml b/idf_component.yml index 7a1148a1..cb7f9f2b 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.1.0" +version: "2.1.1" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/slave_control.c b/slave/main/slave_control.c index 1f30214f..792bc4f7 100644 --- a/slave/main/slave_control.c +++ b/slave/main/slave_control.c @@ -107,20 +107,20 @@ static void send_wifi_event_data_to_host(int event, void *event_data, int event_ /* DHCP/DNS event handling */ void send_dhcp_dns_info_to_host(uint8_t network_up, uint8_t send_wifi_connected) { - rpc_dhcp_dns_status_t s2h_dhcp_dns_DOWN = {0}; - rpc_dhcp_dns_status_t *evnt_to_send = &s2h_dhcp_dns_DOWN; + rpc_dhcp_dns_status_t s2h_dhcp_dns_DOWN = {0}; + rpc_dhcp_dns_status_t *evnt_to_send = &s2h_dhcp_dns_DOWN; - if (network_up && s2h_dhcp_dns.dhcp_up && s2h_dhcp_dns.net_link_up && s2h_dhcp_dns.dns_up) { - evnt_to_send = &s2h_dhcp_dns; - } - send_event_data_to_host(RPC_ID__Event_DhcpDnsStatus, - evnt_to_send, sizeof(rpc_dhcp_dns_status_t)); + if (network_up && s2h_dhcp_dns.dhcp_up && s2h_dhcp_dns.net_link_up && s2h_dhcp_dns.dns_up) { + evnt_to_send = &s2h_dhcp_dns; + } + send_event_data_to_host(RPC_ID__Event_DhcpDnsStatus, + evnt_to_send, sizeof(rpc_dhcp_dns_status_t)); vTaskDelay(pdMS_TO_TICKS(10)); - if (send_wifi_connected && station_connected) { - send_wifi_event_data_to_host(RPC_ID__Event_StaConnected, - &lkg_sta_connected_event, sizeof(wifi_event_sta_connected_t)); - } + if (send_wifi_connected && station_connected) { + send_wifi_event_data_to_host(RPC_ID__Event_StaConnected, + &lkg_sta_connected_event, sizeof(wifi_event_sta_connected_t)); + } ESP_EARLY_LOGI(TAG, "Send DHCP-DNS status to Host: IP: %s, NM: %s, GW: %s, DNS IP: %s, Type: %"PRId32, (char *)evnt_to_send->dhcp_ip, @@ -133,83 +133,83 @@ void send_dhcp_dns_info_to_host(uint8_t network_up, uint8_t send_wifi_connected) /* Get DNS information */ esp_err_t get_slave_dns(wifi_interface_t iface, esp_netif_dns_info_t *dns) { - esp_netif_t *netif = NULL; + esp_netif_t *netif = NULL; - if (!dns) { - return ESP_ERR_INVALID_ARG; - } + if (!dns) { + return ESP_ERR_INVALID_ARG; + } - if (iface == WIFI_IF_STA) { - netif = esp_netif_get_handle_from_ifkey("WIFI_STA_DEF"); - } else if (iface == WIFI_IF_AP) { - netif = esp_netif_get_handle_from_ifkey("WIFI_AP_DEF"); - } + if (iface == WIFI_IF_STA) { + netif = esp_netif_get_handle_from_ifkey("WIFI_STA_DEF"); + } else if (iface == WIFI_IF_AP) { + netif = esp_netif_get_handle_from_ifkey("WIFI_AP_DEF"); + } - if (!netif) { - return ESP_FAIL; - } + if (!netif) { + return ESP_FAIL; + } - return esp_netif_get_dns_info(netif, ESP_NETIF_DNS_MAIN, dns); + return esp_netif_get_dns_info(netif, ESP_NETIF_DNS_MAIN, dns); } /* Set DNS information */ esp_err_t set_slave_dns(wifi_interface_t iface, char *ip, uint8_t type) { - esp_netif_t *netif = NULL; - esp_netif_dns_info_t dns = {0}; + esp_netif_t *netif = NULL; + esp_netif_dns_info_t dns = {0}; - if (!ip) { - return ESP_ERR_INVALID_ARG; - } + if (!ip) { + return ESP_ERR_INVALID_ARG; + } - if (iface == WIFI_IF_STA) { - netif = esp_netif_get_handle_from_ifkey("WIFI_STA_DEF"); - } else if (iface == WIFI_IF_AP) { - netif = esp_netif_get_handle_from_ifkey("WIFI_AP_DEF"); - } + if (iface == WIFI_IF_STA) { + netif = esp_netif_get_handle_from_ifkey("WIFI_STA_DEF"); + } else if (iface == WIFI_IF_AP) { + netif = esp_netif_get_handle_from_ifkey("WIFI_AP_DEF"); + } - if (!netif) { - return ESP_FAIL; - } + if (!netif) { + return ESP_FAIL; + } - /* Convert IP string to IP address */ - if (esp_netif_str_to_ip4(ip, &dns.ip.u_addr.ip4) != ESP_OK) { - return ESP_FAIL; - } + /* Convert IP string to IP address */ + if (esp_netif_str_to_ip4(ip, &dns.ip.u_addr.ip4) != ESP_OK) { + return ESP_FAIL; + } - dns.ip.type = type; - return esp_netif_set_dns_info(netif, ESP_NETIF_DNS_MAIN, &dns); + dns.ip.type = type; + return esp_netif_set_dns_info(netif, ESP_NETIF_DNS_MAIN, &dns); } /* Get static IP information */ esp_err_t get_slave_static_ip(wifi_interface_t iface, esp_netif_ip_info_t *ip_info, uint8_t *netlink_up) { - esp_netif_t *netif = NULL; + esp_netif_t *netif = NULL; - if (!ip_info || !netlink_up) { - return ESP_ERR_INVALID_ARG; - } + if (!ip_info || !netlink_up) { + return ESP_ERR_INVALID_ARG; + } - if (iface == WIFI_IF_STA) { - netif = esp_netif_get_handle_from_ifkey("WIFI_STA_DEF"); - } else if (iface == WIFI_IF_AP) { - netif = esp_netif_get_handle_from_ifkey("WIFI_AP_DEF"); - } + if (iface == WIFI_IF_STA) { + netif = esp_netif_get_handle_from_ifkey("WIFI_STA_DEF"); + } else if (iface == WIFI_IF_AP) { + netif = esp_netif_get_handle_from_ifkey("WIFI_AP_DEF"); + } - if (!netif) { - return ESP_FAIL; - } + if (!netif) { + return ESP_FAIL; + } - /* Get network interface status */ - *netlink_up = esp_netif_is_netif_up(netif); + /* Get network interface status */ + *netlink_up = esp_netif_is_netif_up(netif); - /* Get IP info only if interface is up */ - if (*netlink_up) { - return esp_netif_get_ip_info(netif, ip_info); - } + /* Get IP info only if interface is up */ + if (*netlink_up) { + return esp_netif_get_ip_info(netif, ip_info); + } - /* Clear IP info if interface is down */ - memset(ip_info, 0, sizeof(esp_netif_ip_info_t)); + /* Clear IP info if interface is down */ + memset(ip_info, 0, sizeof(esp_netif_ip_info_t)); return ESP_OK; } #endif /* CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED */ @@ -265,19 +265,19 @@ static esp_err_t req_wifi_get_mode(Rpc *req, static esp_err_t req_wifi_set_mode(Rpc *req, Rpc *resp, void *priv_data) { - wifi_mode_t current_mode = WIFI_MODE_NULL; - RPC_TEMPLATE(RpcRespSetMode, resp_set_wifi_mode, - RpcReqSetMode, req_set_wifi_mode, - rpc__resp__set_mode__init); + wifi_mode_t current_mode = WIFI_MODE_NULL; + RPC_TEMPLATE(RpcRespSetMode, resp_set_wifi_mode, + RpcReqSetMode, req_set_wifi_mode, + rpc__resp__set_mode__init); - /* Get current mode first */ - RPC_RET_FAIL_IF(esp_wifi_get_mode(¤t_mode)); + /* Get current mode first */ + RPC_RET_FAIL_IF(esp_wifi_get_mode(¤t_mode)); - /* Only set if different */ - if (current_mode != req_payload->mode) { - RPC_RET_FAIL_IF(esp_wifi_set_mode(req_payload->mode)); - } - return ESP_OK; + /* Only set if different */ + if (current_mode != req_payload->mode) { + RPC_RET_FAIL_IF(esp_wifi_set_mode(req_payload->mode)); + } + return ESP_OK; } /* Function sets MAC address for station/softap */ @@ -310,20 +310,20 @@ static esp_err_t req_wifi_set_mac(Rpc *req, static esp_err_t req_wifi_set_ps(Rpc *req, Rpc *resp, void *priv_data) { - wifi_ps_type_t current_ps = WIFI_PS_NONE; + wifi_ps_type_t current_ps = WIFI_PS_NONE; - RPC_TEMPLATE(RpcRespSetPs, resp_wifi_set_ps, - RpcReqSetPs, req_wifi_set_ps, - rpc__resp__set_ps__init); + RPC_TEMPLATE(RpcRespSetPs, resp_wifi_set_ps, + RpcReqSetPs, req_wifi_set_ps, + rpc__resp__set_ps__init); - /* Get current power save type first */ - RPC_RET_FAIL_IF(esp_wifi_get_ps(¤t_ps)); + /* Get current power save type first */ + RPC_RET_FAIL_IF(esp_wifi_get_ps(¤t_ps)); - /* Only set if different */ - if (current_ps != req_payload->type) { - RPC_RET_FAIL_IF(esp_wifi_set_ps(req_payload->type)); - } - return ESP_OK; + /* Only set if different */ + if (current_ps != req_payload->type) { + RPC_RET_FAIL_IF(esp_wifi_set_ps(req_payload->type)); + } + return ESP_OK; } /* Function returns current power save mode */ @@ -510,8 +510,8 @@ static esp_err_t req_set_softap_vender_specific_ie_handler (Rpc *req, ESP_LOGI(TAG,"Enable softap vendor IE\n"); if (!p_vid || - !p_vid->payload.len || - !p_vid->payload.data) { + !p_vid->payload.len || + !p_vid->payload.data) { ESP_LOGE(TAG, "Invalid parameters"); return ESP_FAIL; } @@ -600,7 +600,7 @@ static void heartbeat_timer_cb(TimerHandle_t xTimer) static void stop_heartbeat(void) { if (handle_heartbeat_task && - xTimerIsTimerActive(handle_heartbeat_task)) { + xTimerIsTimerActive(handle_heartbeat_task)) { ESP_LOGI(TAG, "Stopping HB timer"); xTimerStop(handle_heartbeat_task, portMAX_DELAY); xTimerDelete(handle_heartbeat_task, portMAX_DELAY); @@ -848,33 +848,60 @@ static void event_handler_wifi(void* arg, esp_event_base_t event_base, // macros to format output #define PRINT_HEADER() ESP_LOGI(TAG, " Wifi Init Param | Default | Host | Actual"); #define PRINT_FOOTER() ESP_LOGI(TAG, " End Wifi Init Param |"); + +// need several ESP_LOGx formats due to different sizes of variables to be printed +// int (PRI16), int32_t (PRI32), bool (PRI16) #define PRINT_USE_HOST_VALUE(param_str, default, host, final) \ - ESP_LOGD(TAG, "% 20s | % 7d | % 7d | % 7d", param_str, default, host, final); + ESP_LOGD(TAG, "%20s | %7"PRIu16" | %7"PRIi32" | %7"PRIi16, param_str, default, host, final); #define PRINT_USE_DEFAULT_VALUE(param_str, default, host, final) \ - ESP_LOGW(TAG, "% 20s | % 7d | % 7d | % 7d", param_str, default, host, final); -#define PRINT_HEX64_USE_HOST_VALUE(param_str, default, host, final) \ - ESP_LOGD(TAG, "% 20s | 0x% 5"PRIx32" | 0x% 5"PRIx64" | 0x% 5"PRIx64, param_str, default, host, final); + ESP_LOGW(TAG, "%20s | %7"PRIu16" | %7"PRIi32" | %7"PRIi16, param_str, default, host, final); + +#define PRINT_USE_HOST_VALUE_BOOL(param_str, default, host, final) \ + ESP_LOGD(TAG, "%20s | %7"PRIu16" | %7"PRIi16" | %7"PRIi16, param_str, default, host, final); +#define PRINT_USE_DEFAULT_VALUE_BOOL(param_str, default, host, final) \ + ESP_LOGI(TAG, "%20s | %7"PRIu16" | %7"PRIi16" | %7"PRIi16, param_str, default, host, final); + +#define PRINT_HEX64_USE_HOST_VALUE(param_str, default, host, final) \ + ESP_LOGD(TAG, "%20s | 0x%5"PRIx16" | 0x%5"PRIx64" | 0x%5"PRIx64, param_str, default, host, final); #define PRINT_HEX64_USE_DEFAULT_VALUE(param_str, default, host, final) \ - ESP_LOGW(TAG, "% 20s | % 7"PRIx32" | % 7"PRIx64" | % 7"PRIx64, param_str, default, host, final); + ESP_LOGW(TAG, "%20s | %7"PRIx16" | %7"PRIx64" | %7"PRIx64, param_str, default, host, final); // macros to copy host or default value #define USE_HOST_VALUE(PARAM_STR, DEFAULT, PARAM) \ - do { \ - dst_config->PARAM = src_config->PARAM; \ - PRINT_USE_HOST_VALUE(PARAM_STR, \ - DEFAULT, \ - src_config->PARAM, \ - dst_config->PARAM); \ - } while(0); + do { \ + dst_config->PARAM = src_config->PARAM; \ + PRINT_USE_HOST_VALUE(PARAM_STR, \ + DEFAULT, \ + src_config->PARAM, \ + dst_config->PARAM); \ + } while(0); + +#define USE_HOST_VALUE_BOOL(PARAM_STR, DEFAULT, PARAM) \ + do { \ + dst_config->PARAM = src_config->PARAM; \ + PRINT_USE_HOST_VALUE_BOOL(PARAM_STR, \ + DEFAULT, \ + src_config->PARAM, \ + dst_config->PARAM); \ + } while(0); #define USE_DEFAULT_VALUE(PARAM_STR, DEFAULT, PARAM) \ - do { \ - dst_config->PARAM = DEFAULT; \ - PRINT_USE_DEFAULT_VALUE(PARAM_STR, \ - DEFAULT, \ - src_config->PARAM, \ - dst_config->PARAM); \ - } while(0); + do { \ + dst_config->PARAM = DEFAULT; \ + PRINT_USE_DEFAULT_VALUE(PARAM_STR, \ + DEFAULT, \ + src_config->PARAM, \ + dst_config->PARAM); \ + } while(0); + +#define USE_DEFAULT_VALUE_BOOL(PARAM_STR, DEFAULT, PARAM) \ + do { \ + dst_config->PARAM = DEFAULT; \ + PRINT_USE_DEFAULT_VALUE_BOOL(PARAM_STR, \ + DEFAULT, \ + src_config->PARAM, \ + dst_config->PARAM); \ + } while(0); /** Returns the merged wifi init config * Compares the src config from the host with our Wi-Fi defaults @@ -931,7 +958,7 @@ static wifi_init_config_t * get_merged_init_config(wifi_init_config_t *dst_confi USE_HOST_VALUE("wifi_task_core", WIFI_TASK_CORE_ID, wifi_task_core_id); USE_HOST_VALUE("beacon_max_len", WIFI_SOFTAP_BEACON_MAX_LEN, beacon_max_len); USE_HOST_VALUE("mgmt_sbuf_num", WIFI_MGMT_SBUF_NUM, mgmt_sbuf_num); - USE_HOST_VALUE("sta_disconnected_pm", WIFI_STA_DISCONNECTED_PM_ENABLED, sta_disconnected_pm); + USE_HOST_VALUE_BOOL("sta_disconnected_pm", WIFI_STA_DISCONNECTED_PM_ENABLED, sta_disconnected_pm); USE_HOST_VALUE("espnow_max_encrypt",CONFIG_ESP_WIFI_ESPNOW_MAX_ENCRYPT_NUM, espnow_max_encrypt_num); USE_HOST_VALUE("tx_hetb_queue", WIFI_TX_HETB_QUEUE_NUM, tx_hetb_queue_num); USE_HOST_VALUE("dump_hesigb_enable", WIFI_DUMP_HESIGB_ENABLED, dump_hesigb_enable); @@ -995,135 +1022,135 @@ extern esp_err_t __real_esp_wifi_init(const wifi_init_config_t *config); */ static bool wifi_init_config_changed(const wifi_init_config_t *new_cfg, const wifi_init_config_t *cached_cfg) { - if (!new_cfg || !cached_cfg) { - ESP_LOGI(TAG, "WiFi init config comparison: One of the configs is NULL"); - return true; - } - - /* Compare only the fields that are explicitly set in req_wifi_init */ - bool changed = false; - - if (new_cfg->static_rx_buf_num != cached_cfg->static_rx_buf_num) { - ESP_LOGI(TAG, "WiFi init config: static_rx_buf_num changed: %lu -> %lu", - (unsigned long)cached_cfg->static_rx_buf_num, (unsigned long)new_cfg->static_rx_buf_num); - changed = true; - } - - if (new_cfg->dynamic_rx_buf_num != cached_cfg->dynamic_rx_buf_num) { - ESP_LOGI(TAG, "WiFi init config: dynamic_rx_buf_num changed: %lu -> %lu", - (unsigned long)cached_cfg->dynamic_rx_buf_num, (unsigned long)new_cfg->dynamic_rx_buf_num); - changed = true; - } - - if (new_cfg->tx_buf_type != cached_cfg->tx_buf_type) { - ESP_LOGI(TAG, "WiFi init config: tx_buf_type changed: %lu -> %lu", - (unsigned long)cached_cfg->tx_buf_type, (unsigned long)new_cfg->tx_buf_type); - changed = true; - } - - if (new_cfg->static_tx_buf_num != cached_cfg->static_tx_buf_num) { - ESP_LOGI(TAG, "WiFi init config: static_tx_buf_num changed: %lu -> %lu", - (unsigned long)cached_cfg->static_tx_buf_num, (unsigned long)new_cfg->static_tx_buf_num); - changed = true; - } - - if (new_cfg->dynamic_tx_buf_num != cached_cfg->dynamic_tx_buf_num) { - ESP_LOGI(TAG, "WiFi init config: dynamic_tx_buf_num changed: %lu -> %lu", - (unsigned long)cached_cfg->dynamic_tx_buf_num, (unsigned long)new_cfg->dynamic_tx_buf_num); - changed = true; - } - - if (new_cfg->cache_tx_buf_num != cached_cfg->cache_tx_buf_num) { - ESP_LOGI(TAG, "WiFi init config: cache_tx_buf_num changed: %lu -> %lu", - (unsigned long)cached_cfg->cache_tx_buf_num, (unsigned long)new_cfg->cache_tx_buf_num); - changed = true; - } - - if (new_cfg->csi_enable != cached_cfg->csi_enable) { - ESP_LOGI(TAG, "WiFi init config: csi_enable changed: %lu -> %lu", - (unsigned long)cached_cfg->csi_enable, (unsigned long)new_cfg->csi_enable); - changed = true; - } - - if (new_cfg->ampdu_rx_enable != cached_cfg->ampdu_rx_enable) { - ESP_LOGI(TAG, "WiFi init config: ampdu_rx_enable changed: %lu -> %lu", - (unsigned long)cached_cfg->ampdu_rx_enable, (unsigned long)new_cfg->ampdu_rx_enable); - changed = true; - } - - if (new_cfg->ampdu_tx_enable != cached_cfg->ampdu_tx_enable) { - ESP_LOGI(TAG, "WiFi init config: ampdu_tx_enable changed: %lu -> %lu", - (unsigned long)cached_cfg->ampdu_tx_enable, (unsigned long)new_cfg->ampdu_tx_enable); - changed = true; - } - - if (new_cfg->amsdu_tx_enable != cached_cfg->amsdu_tx_enable) { - ESP_LOGI(TAG, "WiFi init config: amsdu_tx_enable changed: %lu -> %lu", - (unsigned long)cached_cfg->amsdu_tx_enable, (unsigned long)new_cfg->amsdu_tx_enable); - changed = true; - } - - if (new_cfg->nvs_enable != cached_cfg->nvs_enable) { - ESP_LOGI(TAG, "WiFi init config: nvs_enable changed: %lu -> %lu", - (unsigned long)cached_cfg->nvs_enable, (unsigned long)new_cfg->nvs_enable); - changed = true; - } - - if (new_cfg->nano_enable != cached_cfg->nano_enable) { - ESP_LOGI(TAG, "WiFi init config: nano_enable changed: %lu -> %lu", - (unsigned long)cached_cfg->nano_enable, (unsigned long)new_cfg->nano_enable); - changed = true; - } - - if (new_cfg->rx_ba_win != cached_cfg->rx_ba_win) { - ESP_LOGI(TAG, "WiFi init config: rx_ba_win changed: %lu -> %lu", - (unsigned long)cached_cfg->rx_ba_win, (unsigned long)new_cfg->rx_ba_win); - changed = true; - } - - if (new_cfg->wifi_task_core_id != cached_cfg->wifi_task_core_id) { - ESP_LOGI(TAG, "WiFi init config: wifi_task_core_id changed: %lu -> %lu", - (unsigned long)cached_cfg->wifi_task_core_id, (unsigned long)new_cfg->wifi_task_core_id); - changed = true; - } - - if (new_cfg->beacon_max_len != cached_cfg->beacon_max_len) { - ESP_LOGI(TAG, "WiFi init config: beacon_max_len changed: %lu -> %lu", - (unsigned long)cached_cfg->beacon_max_len, (unsigned long)new_cfg->beacon_max_len); - changed = true; - } - - if (new_cfg->mgmt_sbuf_num != cached_cfg->mgmt_sbuf_num) { - ESP_LOGI(TAG, "WiFi init config: mgmt_sbuf_num changed: %lu -> %lu", - (unsigned long)cached_cfg->mgmt_sbuf_num, (unsigned long)new_cfg->mgmt_sbuf_num); - changed = true; - } - - if (new_cfg->feature_caps != cached_cfg->feature_caps) { - ESP_LOGI(TAG, "WiFi init config: feature_caps changed: %lu -> %lu", - (unsigned long)cached_cfg->feature_caps, (unsigned long)new_cfg->feature_caps); - changed = true; - } - - if (new_cfg->sta_disconnected_pm != cached_cfg->sta_disconnected_pm) { - ESP_LOGI(TAG, "WiFi init config: sta_disconnected_pm changed: %lu -> %lu", - (unsigned long)cached_cfg->sta_disconnected_pm, (unsigned long)new_cfg->sta_disconnected_pm); - changed = true; - } - - if (new_cfg->espnow_max_encrypt_num != cached_cfg->espnow_max_encrypt_num) { - ESP_LOGI(TAG, "WiFi init config: espnow_max_encrypt_num changed: %lu -> %lu", - (unsigned long)cached_cfg->espnow_max_encrypt_num, (unsigned long)new_cfg->espnow_max_encrypt_num); - changed = true; - } - - if (new_cfg->magic != cached_cfg->magic) { - ESP_LOGI(TAG, "WiFi init config: magic changed: %lu -> %lu", - (unsigned long)cached_cfg->magic, (unsigned long)new_cfg->magic); - changed = true; - } - - return changed; + if (!new_cfg || !cached_cfg) { + ESP_LOGI(TAG, "WiFi init config comparison: One of the configs is NULL"); + return true; + } + + /* Compare only the fields that are explicitly set in req_wifi_init */ + bool changed = false; + + if (new_cfg->static_rx_buf_num != cached_cfg->static_rx_buf_num) { + ESP_LOGI(TAG, "WiFi init config: static_rx_buf_num changed: %lu -> %lu", + (unsigned long)cached_cfg->static_rx_buf_num, (unsigned long)new_cfg->static_rx_buf_num); + changed = true; + } + + if (new_cfg->dynamic_rx_buf_num != cached_cfg->dynamic_rx_buf_num) { + ESP_LOGI(TAG, "WiFi init config: dynamic_rx_buf_num changed: %lu -> %lu", + (unsigned long)cached_cfg->dynamic_rx_buf_num, (unsigned long)new_cfg->dynamic_rx_buf_num); + changed = true; + } + + if (new_cfg->tx_buf_type != cached_cfg->tx_buf_type) { + ESP_LOGI(TAG, "WiFi init config: tx_buf_type changed: %lu -> %lu", + (unsigned long)cached_cfg->tx_buf_type, (unsigned long)new_cfg->tx_buf_type); + changed = true; + } + + if (new_cfg->static_tx_buf_num != cached_cfg->static_tx_buf_num) { + ESP_LOGI(TAG, "WiFi init config: static_tx_buf_num changed: %lu -> %lu", + (unsigned long)cached_cfg->static_tx_buf_num, (unsigned long)new_cfg->static_tx_buf_num); + changed = true; + } + + if (new_cfg->dynamic_tx_buf_num != cached_cfg->dynamic_tx_buf_num) { + ESP_LOGI(TAG, "WiFi init config: dynamic_tx_buf_num changed: %lu -> %lu", + (unsigned long)cached_cfg->dynamic_tx_buf_num, (unsigned long)new_cfg->dynamic_tx_buf_num); + changed = true; + } + + if (new_cfg->cache_tx_buf_num != cached_cfg->cache_tx_buf_num) { + ESP_LOGI(TAG, "WiFi init config: cache_tx_buf_num changed: %lu -> %lu", + (unsigned long)cached_cfg->cache_tx_buf_num, (unsigned long)new_cfg->cache_tx_buf_num); + changed = true; + } + + if (new_cfg->csi_enable != cached_cfg->csi_enable) { + ESP_LOGI(TAG, "WiFi init config: csi_enable changed: %lu -> %lu", + (unsigned long)cached_cfg->csi_enable, (unsigned long)new_cfg->csi_enable); + changed = true; + } + + if (new_cfg->ampdu_rx_enable != cached_cfg->ampdu_rx_enable) { + ESP_LOGI(TAG, "WiFi init config: ampdu_rx_enable changed: %lu -> %lu", + (unsigned long)cached_cfg->ampdu_rx_enable, (unsigned long)new_cfg->ampdu_rx_enable); + changed = true; + } + + if (new_cfg->ampdu_tx_enable != cached_cfg->ampdu_tx_enable) { + ESP_LOGI(TAG, "WiFi init config: ampdu_tx_enable changed: %lu -> %lu", + (unsigned long)cached_cfg->ampdu_tx_enable, (unsigned long)new_cfg->ampdu_tx_enable); + changed = true; + } + + if (new_cfg->amsdu_tx_enable != cached_cfg->amsdu_tx_enable) { + ESP_LOGI(TAG, "WiFi init config: amsdu_tx_enable changed: %lu -> %lu", + (unsigned long)cached_cfg->amsdu_tx_enable, (unsigned long)new_cfg->amsdu_tx_enable); + changed = true; + } + + if (new_cfg->nvs_enable != cached_cfg->nvs_enable) { + ESP_LOGI(TAG, "WiFi init config: nvs_enable changed: %lu -> %lu", + (unsigned long)cached_cfg->nvs_enable, (unsigned long)new_cfg->nvs_enable); + changed = true; + } + + if (new_cfg->nano_enable != cached_cfg->nano_enable) { + ESP_LOGI(TAG, "WiFi init config: nano_enable changed: %lu -> %lu", + (unsigned long)cached_cfg->nano_enable, (unsigned long)new_cfg->nano_enable); + changed = true; + } + + if (new_cfg->rx_ba_win != cached_cfg->rx_ba_win) { + ESP_LOGI(TAG, "WiFi init config: rx_ba_win changed: %lu -> %lu", + (unsigned long)cached_cfg->rx_ba_win, (unsigned long)new_cfg->rx_ba_win); + changed = true; + } + + if (new_cfg->wifi_task_core_id != cached_cfg->wifi_task_core_id) { + ESP_LOGI(TAG, "WiFi init config: wifi_task_core_id changed: %lu -> %lu", + (unsigned long)cached_cfg->wifi_task_core_id, (unsigned long)new_cfg->wifi_task_core_id); + changed = true; + } + + if (new_cfg->beacon_max_len != cached_cfg->beacon_max_len) { + ESP_LOGI(TAG, "WiFi init config: beacon_max_len changed: %lu -> %lu", + (unsigned long)cached_cfg->beacon_max_len, (unsigned long)new_cfg->beacon_max_len); + changed = true; + } + + if (new_cfg->mgmt_sbuf_num != cached_cfg->mgmt_sbuf_num) { + ESP_LOGI(TAG, "WiFi init config: mgmt_sbuf_num changed: %lu -> %lu", + (unsigned long)cached_cfg->mgmt_sbuf_num, (unsigned long)new_cfg->mgmt_sbuf_num); + changed = true; + } + + if (new_cfg->feature_caps != cached_cfg->feature_caps) { + ESP_LOGI(TAG, "WiFi init config: feature_caps changed: %lu -> %lu", + (unsigned long)cached_cfg->feature_caps, (unsigned long)new_cfg->feature_caps); + changed = true; + } + + if (new_cfg->sta_disconnected_pm != cached_cfg->sta_disconnected_pm) { + ESP_LOGI(TAG, "WiFi init config: sta_disconnected_pm changed: %lu -> %lu", + (unsigned long)cached_cfg->sta_disconnected_pm, (unsigned long)new_cfg->sta_disconnected_pm); + changed = true; + } + + if (new_cfg->espnow_max_encrypt_num != cached_cfg->espnow_max_encrypt_num) { + ESP_LOGI(TAG, "WiFi init config: espnow_max_encrypt_num changed: %lu -> %lu", + (unsigned long)cached_cfg->espnow_max_encrypt_num, (unsigned long)new_cfg->espnow_max_encrypt_num); + changed = true; + } + + if (new_cfg->magic != cached_cfg->magic) { + ESP_LOGI(TAG, "WiFi init config: magic changed: %lu -> %lu", + (unsigned long)cached_cfg->magic, (unsigned long)new_cfg->magic); + changed = true; + } + + return changed; } /** @@ -1135,42 +1162,42 @@ static bool wifi_init_config_changed(const wifi_init_config_t *new_cfg, const wi */ esp_err_t __wrap_esp_wifi_init(const wifi_init_config_t *config) { - esp_err_t ret; - bool should_reinit = false; - ESP_LOGI(TAG, "=== __wrap_esp_wifi_init called ==="); - - if (wifi_initialized) { - /* Compare with cached config */ - if (has_cached_config && wifi_init_config_changed(config, &cached_wifi_init_config)) { - ESP_LOGI(TAG, "WiFi init config changed, reinitializing"); - esp_wifi_stop(); - esp_wifi_deinit(); - wifi_initialized = false; - should_reinit = true; - } else { - ESP_LOGW(TAG, "WiFi already initialized with same parameters"); - return ESP_OK; - } - } else { - ESP_LOGI(TAG, "First-time WiFi initialization"); - } - - /* Cache the config for future comparisons */ - if (config) { - memcpy(&cached_wifi_init_config, config, sizeof(wifi_init_config_t)); - has_cached_config = true; - } - - /* Call the real init function */ - ESP_LOGI(TAG, "Calling __real_esp_wifi_init..."); - ret = __real_esp_wifi_init(config); - ESP_LOGI(TAG, "__real_esp_wifi_init returned: %d", ret); - - if (ret == ESP_OK && !should_reinit) { - wifi_initialized = true; - } - - return ret; + esp_err_t ret; + bool should_reinit = false; + ESP_LOGI(TAG, "=== __wrap_esp_wifi_init called ==="); + + if (wifi_initialized) { + /* Compare with cached config */ + if (has_cached_config && wifi_init_config_changed(config, &cached_wifi_init_config)) { + ESP_LOGI(TAG, "WiFi init config changed, reinitializing"); + esp_wifi_stop(); + esp_wifi_deinit(); + wifi_initialized = false; + should_reinit = true; + } else { + ESP_LOGW(TAG, "WiFi already initialized with same parameters"); + return ESP_OK; + } + } else { + ESP_LOGI(TAG, "First-time WiFi initialization"); + } + + /* Cache the config for future comparisons */ + if (config) { + memcpy(&cached_wifi_init_config, config, sizeof(wifi_init_config_t)); + has_cached_config = true; + } + + /* Call the real init function */ + ESP_LOGI(TAG, "Calling __real_esp_wifi_init..."); + ret = __real_esp_wifi_init(config); + ESP_LOGI(TAG, "__real_esp_wifi_init returned: %d", ret); + + if (ret == ESP_OK && !should_reinit) { + wifi_initialized = true; + } + + return ret; } static esp_err_t req_wifi_init(Rpc *req, Rpc *resp, void *priv_data) @@ -1312,8 +1339,8 @@ static esp_err_t req_wifi_connect(Rpc *req, Rpc *resp, void *priv_data) //send_dhcp_dns_info_to_host(1, 0); #endif - send_wifi_event_data_to_host(RPC_ID__Event_StaConnected, - &lkg_sta_connected_event, sizeof(wifi_event_sta_connected_t)); + send_wifi_event_data_to_host(RPC_ID__Event_StaConnected, + &lkg_sta_connected_event, sizeof(wifi_event_sta_connected_t)); } if (ret != ESP_ERR_WIFI_CONN) @@ -1402,28 +1429,28 @@ static bool is_wifi_config_equal(const wifi_config_t *cfg1, const wifi_config_t /* Function to handle WiFi configuration */ esp_err_t esp_hosted_set_sta_config(wifi_interface_t iface, wifi_config_t *cfg) { - wifi_config_t current_config = {0}; - if (!wifi_is_provisioned(¤t_config)) { - if (esp_wifi_set_config(WIFI_IF_STA, cfg) != ESP_OK) { - ESP_LOGW(TAG, "not provisioned and failed to set wifi config"); - } else { - ESP_LOGI(TAG, "Provisioned new Wi-Fi config"); - new_config_recvd = true; + wifi_config_t current_config = {0}; + if (!wifi_is_provisioned(¤t_config)) { + if (esp_wifi_set_config(WIFI_IF_STA, cfg) != ESP_OK) { + ESP_LOGW(TAG, "not provisioned and failed to set wifi config"); + } else { + ESP_LOGI(TAG, "Provisioned new Wi-Fi config"); + new_config_recvd = true; station_connecting = false; - } - } + } + } - if (!is_wifi_config_equal(cfg, ¤t_config)) { - new_config_recvd = true; + if (!is_wifi_config_equal(cfg, ¤t_config)) { + new_config_recvd = true; station_connecting = false; - ESP_LOGI(TAG, "Setting new WiFi config SSID: %s", cfg->sta.ssid); - memcpy(&new_wifi_config, cfg, sizeof(wifi_config_t)); - } else { - ESP_LOGI(TAG, "WiFi config unchanged, keeping current connection"); - new_config_recvd = false; - } + ESP_LOGI(TAG, "Setting new WiFi config SSID: %s", cfg->sta.ssid); + memcpy(&new_wifi_config, cfg, sizeof(wifi_config_t)); + } else { + ESP_LOGI(TAG, "WiFi config unchanged, keeping current connection"); + new_config_recvd = false; + } - return ESP_OK; + return ESP_OK; } static esp_err_t req_wifi_set_config(Rpc *req, Rpc *resp, void *priv_data) @@ -2110,19 +2137,19 @@ static esp_err_t req_wifi_set_storage(Rpc *req, Rpc *resp, void *priv_data) static esp_err_t req_wifi_set_bandwidth(Rpc *req, Rpc *resp, void *priv_data) { - wifi_bandwidth_t current_bw = 0; - RPC_TEMPLATE(RpcRespWifiSetBandwidth, resp_wifi_set_bandwidth, - RpcReqWifiSetBandwidth, req_wifi_set_bandwidth, - rpc__resp__wifi_set_bandwidth__init); + wifi_bandwidth_t current_bw = 0; + RPC_TEMPLATE(RpcRespWifiSetBandwidth, resp_wifi_set_bandwidth, + RpcReqWifiSetBandwidth, req_wifi_set_bandwidth, + rpc__resp__wifi_set_bandwidth__init); - /* Get current bandwidth first */ - RPC_RET_FAIL_IF(esp_wifi_get_bandwidth(req_payload->ifx, ¤t_bw)); + /* Get current bandwidth first */ + RPC_RET_FAIL_IF(esp_wifi_get_bandwidth(req_payload->ifx, ¤t_bw)); - /* Only set if different */ - if (current_bw != req_payload->bw) { - RPC_RET_FAIL_IF(esp_wifi_set_bandwidth(req_payload->ifx, req_payload->bw)); - } - return ESP_OK; + /* Only set if different */ + if (current_bw != req_payload->bw) { + RPC_RET_FAIL_IF(esp_wifi_set_bandwidth(req_payload->ifx, req_payload->bw)); + } + return ESP_OK; } static esp_err_t req_wifi_get_bandwidth(Rpc *req, Rpc *resp, void *priv_data) @@ -2140,20 +2167,20 @@ static esp_err_t req_wifi_get_bandwidth(Rpc *req, Rpc *resp, void *priv_data) static esp_err_t req_wifi_set_channel(Rpc *req, Rpc *resp, void *priv_data) { - uint8_t current_primary = 0; - wifi_second_chan_t current_second = 0; - RPC_TEMPLATE(RpcRespWifiSetChannel, resp_wifi_set_channel, - RpcReqWifiSetChannel, req_wifi_set_channel, - rpc__resp__wifi_set_channel__init); + uint8_t current_primary = 0; + wifi_second_chan_t current_second = 0; + RPC_TEMPLATE(RpcRespWifiSetChannel, resp_wifi_set_channel, + RpcReqWifiSetChannel, req_wifi_set_channel, + rpc__resp__wifi_set_channel__init); - /* Get current channel config first */ - RPC_RET_FAIL_IF(esp_wifi_get_channel(¤t_primary, ¤t_second)); + /* Get current channel config first */ + RPC_RET_FAIL_IF(esp_wifi_get_channel(¤t_primary, ¤t_second)); - /* Only set if different */ - if (current_primary != req_payload->primary || current_second != req_payload->second) { - RPC_RET_FAIL_IF(esp_wifi_set_channel(req_payload->primary, req_payload->second)); - } - return ESP_OK; + /* Only set if different */ + if (current_primary != req_payload->primary || current_second != req_payload->second) { + RPC_RET_FAIL_IF(esp_wifi_set_channel(req_payload->primary, req_payload->second)); + } + return ESP_OK; } static esp_err_t req_wifi_get_channel(Rpc *req, Rpc *resp, void *priv_data) @@ -2594,73 +2621,73 @@ static esp_err_t req_wifi_get_band_mode(Rpc *req, Rpc *resp, void *priv_data) static esp_err_t req_get_dhcp_dns_status(Rpc *req, Rpc *resp, void *priv_data) { #ifdef CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED - RPC_TEMPLATE(RpcRespGetDhcpDnsStatus, resp_get_dhcp_dns, - RpcReqGetDhcpDnsStatus, req_get_dhcp_dns, - rpc__resp__get_dhcp_dns_status__init); + RPC_TEMPLATE(RpcRespGetDhcpDnsStatus, resp_get_dhcp_dns, + RpcReqGetDhcpDnsStatus, req_get_dhcp_dns, + rpc__resp__get_dhcp_dns_status__init); #else - RPC_TEMPLATE_SIMPLE(RpcRespGetDhcpDnsStatus, resp_get_dhcp_dns, - RpcReqGetDhcpDnsStatus, req_get_dhcp_dns, - rpc__resp__get_dhcp_dns_status__init); + RPC_TEMPLATE_SIMPLE(RpcRespGetDhcpDnsStatus, resp_get_dhcp_dns, + RpcReqGetDhcpDnsStatus, req_get_dhcp_dns, + rpc__resp__get_dhcp_dns_status__init); #endif #ifdef CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED - int ret1, ret2; - esp_netif_ip_info_t ip_info = {0}; - esp_netif_dns_info_t dns = {0}; - uint8_t netlink_up = 0; - - ret1 = get_slave_static_ip(req_payload->iface, &ip_info, &netlink_up); - ret2 = get_slave_dns(req_payload->iface, &dns); - - if (ret1 || ret2) { - ESP_LOGE(TAG, "Failed to get DHCP/DNS status"); - resp_payload->resp = ESP_FAIL; - resp_payload->dhcp_up = 0; - resp_payload->dns_up = 0; - resp_payload->net_link_up = 0; - return ESP_OK; - } - ESP_LOGI(TAG, "static_ip_ret: %d dns_ret: %d", ret1, ret2); - - resp_payload->net_link_up = netlink_up; - resp_payload->dhcp_up = netlink_up; - resp_payload->dns_up = netlink_up; - resp_payload->dns_type = dns.ip.type; - - char sta_ip[64] = {0}; - char sta_nm[64] = {0}; - char sta_gw[64] = {0}; - char sta_dns_ip[64] = {0}; - - if (esp_ip4addr_ntoa(&ip_info.ip, sta_ip, sizeof(sta_ip))) { - strlcpy((char *)resp_payload->dhcp_ip.data, sta_ip, sizeof(resp_payload->dhcp_ip.data)); - resp_payload->dhcp_ip.len = strlen(sta_ip); - } - if (esp_ip4addr_ntoa(&ip_info.netmask, sta_nm, sizeof(sta_nm))) { - strlcpy((char *)resp_payload->dhcp_nm.data, sta_nm, sizeof(resp_payload->dhcp_nm.data)); - resp_payload->dhcp_nm.len = strlen(sta_nm); - } - if (esp_ip4addr_ntoa(&ip_info.gw, sta_gw, sizeof(sta_gw))) { - strlcpy((char *)resp_payload->dhcp_gw.data, sta_gw, sizeof(resp_payload->dhcp_gw.data)); - resp_payload->dhcp_gw.len = strlen(sta_gw); - } - if (esp_ip4addr_ntoa(&dns.ip.u_addr.ip4, sta_dns_ip, sizeof(sta_dns_ip))) { - strlcpy((char *)resp_payload->dns_ip.data, sta_dns_ip, sizeof(resp_payload->dns_ip.data)); - resp_payload->dns_ip.len = strlen(sta_dns_ip); - } - - ESP_LOGI(TAG, "Fetched IP: %s, NM: %s, GW: %s, DNS IP: %s, Type: %d", - resp_payload->dhcp_ip.data, - resp_payload->dhcp_nm.data, - resp_payload->dhcp_gw.data, - resp_payload->dns_ip.data, - resp_payload->dns_type); - - resp_payload->resp = ESP_OK; + int ret1, ret2; + esp_netif_ip_info_t ip_info = {0}; + esp_netif_dns_info_t dns = {0}; + uint8_t netlink_up = 0; + + ret1 = get_slave_static_ip(req_payload->iface, &ip_info, &netlink_up); + ret2 = get_slave_dns(req_payload->iface, &dns); + + if (ret1 || ret2) { + ESP_LOGE(TAG, "Failed to get DHCP/DNS status"); + resp_payload->resp = ESP_FAIL; + resp_payload->dhcp_up = 0; + resp_payload->dns_up = 0; + resp_payload->net_link_up = 0; + return ESP_OK; + } + ESP_LOGI(TAG, "static_ip_ret: %d dns_ret: %d", ret1, ret2); + + resp_payload->net_link_up = netlink_up; + resp_payload->dhcp_up = netlink_up; + resp_payload->dns_up = netlink_up; + resp_payload->dns_type = dns.ip.type; + + char sta_ip[64] = {0}; + char sta_nm[64] = {0}; + char sta_gw[64] = {0}; + char sta_dns_ip[64] = {0}; + + if (esp_ip4addr_ntoa(&ip_info.ip, sta_ip, sizeof(sta_ip))) { + strlcpy((char *)resp_payload->dhcp_ip.data, sta_ip, sizeof(resp_payload->dhcp_ip.data)); + resp_payload->dhcp_ip.len = strlen(sta_ip); + } + if (esp_ip4addr_ntoa(&ip_info.netmask, sta_nm, sizeof(sta_nm))) { + strlcpy((char *)resp_payload->dhcp_nm.data, sta_nm, sizeof(resp_payload->dhcp_nm.data)); + resp_payload->dhcp_nm.len = strlen(sta_nm); + } + if (esp_ip4addr_ntoa(&ip_info.gw, sta_gw, sizeof(sta_gw))) { + strlcpy((char *)resp_payload->dhcp_gw.data, sta_gw, sizeof(resp_payload->dhcp_gw.data)); + resp_payload->dhcp_gw.len = strlen(sta_gw); + } + if (esp_ip4addr_ntoa(&dns.ip.u_addr.ip4, sta_dns_ip, sizeof(sta_dns_ip))) { + strlcpy((char *)resp_payload->dns_ip.data, sta_dns_ip, sizeof(resp_payload->dns_ip.data)); + resp_payload->dns_ip.len = strlen(sta_dns_ip); + } + + ESP_LOGI(TAG, "Fetched IP: %s, NM: %s, GW: %s, DNS IP: %s, Type: %d", + resp_payload->dhcp_ip.data, + resp_payload->dhcp_nm.data, + resp_payload->dhcp_gw.data, + resp_payload->dns_ip.data, + resp_payload->dns_type); + + resp_payload->resp = ESP_OK; #else - resp_payload->resp = ESP_FAIL; + resp_payload->resp = ESP_FAIL; #endif - return ESP_OK; + return ESP_OK; } static esp_err_t req_set_dhcp_dns_status(Rpc *req, Rpc *resp, void *priv_data) From da4a955f10985813bd2956ee7b5a10d5252647af Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Mon, 28 Jul 2025 16:38:25 +0800 Subject: [PATCH 056/114] feature(ci_coprocessor): Add CI for co-processor - SOC: ESP32C6 - transports: sdio, spi, spi_hd, uart - all_features: (host power save, network split, pre-provisioning) - fixed error causing CI failure - reused config for WIFI_ENABLE_SPIRAM for ESP-IDF v5.3.2, v5.3.1 --- .gitlab-ci.yml | 66 ++++++++++++++++++++++++++++- idf_component.yml | 2 +- slave/main/esp_hosted_coprocessor.c | 2 +- slave/main/interface.h | 2 +- slave/main/slave_wifi_config.h | 8 ++++ slave/sdkconfig.ci.all_features | 6 +++ slave/sdkconfig.ci.sdio | 1 + slave/sdkconfig.ci.spi | 1 + slave/sdkconfig.ci.spi_hd | 1 + slave/sdkconfig.ci.uart | 1 + 10 files changed, 85 insertions(+), 5 deletions(-) create mode 100644 slave/sdkconfig.ci.all_features create mode 100644 slave/sdkconfig.ci.sdio create mode 100644 slave/sdkconfig.ci.spi create mode 100644 slave/sdkconfig.ci.spi_hd create mode 100644 slave/sdkconfig.ci.uart diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ae49e5ba..a3fc3e09 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,9 +1,30 @@ stages: + - build_coprocessor - build before_script: - git submodule update --init --recursive +.build_template_coprocessor: + stage: build_coprocessor + tags: + - build + artifacts: + when: always + expire_in: 4 days + script: + - source ${IDF_PATH}/export.sh + - pip install idf-ci + - pip install idf-component-manager idf-build-apps --upgrade + - SDKCONFIG_PATTERN="sdkconfig.ci.{SLAVE_CI_FILE}" + # Build with IDF pedantic flags and IDF build apps script + - export PEDANTIC_FLAGS="-DIDF_CI_BUILD -Werror -Werror=deprecated-declarations -Werror=unused-variable -Werror=unused-but-set-variable -Werror=unused-function" + - export EXTRA_CFLAGS="${PEDANTIC_FLAGS} -Wstrict-prototypes" + - export EXTRA_CXXFLAGS="${PEDANTIC_FLAGS}" + - cd slave + - idf-build-apps find --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} + - idf-build-apps build --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} + .build_template: stage: build tags: @@ -72,7 +93,6 @@ before_script: # Rename back, since post scripts expect the original name - cd ${OVERRIDE_PATH} && cd .. && mv esp_hosted esp_hosted_mcu - build_idf_v5.3: extends: .build_template image: espressif/idf:${IDF_VER} @@ -114,7 +134,6 @@ build_idf_master: IDF_SLAVE_TARGET: ["esp32c6", "esp32c5", "esp32", "esp32c2", "esp32c3", "esp32s3" ] IDF_EXAMPLE_PATH: [examples/protocols/mqtt/tcp, examples/wifi/iperf] - build_all_features_enabled_master: extends: .build_template image: espressif/idf:latest @@ -124,3 +143,46 @@ build_all_features_enabled_master: IDF_SLAVE_TARGET: ["esp32c5", "esp32c6"] IDF_EXAMPLE_PATH: examples/wifi/iperf SDKCONFIG_CI_FILE: "sdkconfig.ci.all_features_enabled" + +build_coprocessor_idf_v5.3: + extends: .build_template_coprocessor + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_TARGET: ["esp32c6"] + IDF_VER: ["v5.3.1", "v5.3.2", "v5.3.3", "release-v5.3"] + SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart"] + +build_coprocessor_idf_v5.4: + extends: .build_template_coprocessor + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_TARGET: ["esp32c6"] + IDF_VER: ["v5.4", "v5.4.1", "v5.4.2", "release-v5.4"] + SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart"] + +build_coprocessor_idf_v5.5: + extends: .build_template_coprocessor + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_TARGET: ["esp32c6"] + IDF_VER: ["v5.5", "release-v5.5"] + SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart"] + +build_coprocessor_idf_master: + extends: .build_template_coprocessor + image: espressif/idf:latest + parallel: + matrix: + - IDF_TARGET: ["esp32c6"] + SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart"] + +build_coprocessor_idf_master_all_features_enabled: + extends: .build_template_coprocessor + image: espressif/idf:latest + parallel: + matrix: + - IDF_TARGET: ["esp32c6"] + SLAVE_CI_FILE: ["all_features"] diff --git a/idf_component.yml b/idf_component.yml index cb7f9f2b..70c59164 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.1.1" +version: "2.1.2" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/esp_hosted_coprocessor.c b/slave/main/esp_hosted_coprocessor.c index 62568c45..856efa55 100644 --- a/slave/main/esp_hosted_coprocessor.c +++ b/slave/main/esp_hosted_coprocessor.c @@ -96,7 +96,7 @@ uint8_t ap_mac[BSSID_BYTES_SIZE] = {0}; #error "Hosted UART Interface cannot be used with Bluetooth HCI over UART" #endif -static void print_firmware_version() +static void print_firmware_version(void) { ESP_LOGI(TAG, "*********************************************************************"); ESP_LOGI(TAG, " ESP-Hosted-MCU Slave FW version :: %d.%d.%d ", diff --git a/slave/main/interface.h b/slave/main/interface.h index f4e82605..fbc79175 100644 --- a/slave/main/interface.h +++ b/slave/main/interface.h @@ -125,7 +125,7 @@ typedef struct { } slave_state_t; interface_context_t * interface_insert_driver(int (*callback)(uint8_t val)); -int interface_remove_driver(); +int interface_remove_driver(void); void generate_startup_event(uint8_t cap, uint32_t ext_cap); int send_to_host_queue(interface_buffer_handle_t *buf_handle, uint8_t queue_type); void send_dhcp_dns_info_to_host(uint8_t network_up, uint8_t send_wifi_connected); diff --git a/slave/main/slave_wifi_config.h b/slave/main/slave_wifi_config.h index 7283c098..9f9955d2 100644 --- a/slave/main/slave_wifi_config.h +++ b/slave/main/slave_wifi_config.h @@ -37,4 +37,12 @@ #define H_GOT_AP_CONFIG_PARAM_TRANSITION_DISABLE 1 #endif +/* WIFI_ENABLE_CACHE_TX_BUFFER only found in + * IDF 5.3.3 and above + * reused config for WIFI_ENABLE_SPIRAM + */ +#ifndef WIFI_ENABLE_CACHE_TX_BUFFER +#define WIFI_ENABLE_CACHE_TX_BUFFER WIFI_ENABLE_SPIRAM +#endif + #endif diff --git a/slave/sdkconfig.ci.all_features b/slave/sdkconfig.ci.all_features new file mode 100644 index 00000000..9aee346b --- /dev/null +++ b/slave/sdkconfig.ci.all_features @@ -0,0 +1,6 @@ +CONFIG_ESP_SDIO_HOST_INTERFACE=y + +CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED=y +CONFIG_ESP_HOSTED_HOST_POWER_SAVE_ENABLED=y +CONFIG_ESP_HOSTED_CLI_ENABLED=y +CONFIG_ESP_HOSTED_USE_EXAMPLE_WIFI_PRE_PROVISION_CONFIG=y diff --git a/slave/sdkconfig.ci.sdio b/slave/sdkconfig.ci.sdio new file mode 100644 index 00000000..289917fa --- /dev/null +++ b/slave/sdkconfig.ci.sdio @@ -0,0 +1 @@ +CONFIG_ESP_SDIO_HOST_INTERFACE=y diff --git a/slave/sdkconfig.ci.spi b/slave/sdkconfig.ci.spi new file mode 100644 index 00000000..7c46fdf0 --- /dev/null +++ b/slave/sdkconfig.ci.spi @@ -0,0 +1 @@ +CONFIG_ESP_SPI_HOST_INTERFACE=y diff --git a/slave/sdkconfig.ci.spi_hd b/slave/sdkconfig.ci.spi_hd new file mode 100644 index 00000000..e2ec35db --- /dev/null +++ b/slave/sdkconfig.ci.spi_hd @@ -0,0 +1 @@ +CONFIG_ESP_SPI_HD_HOST_INTERFACE=y diff --git a/slave/sdkconfig.ci.uart b/slave/sdkconfig.ci.uart new file mode 100644 index 00000000..68990b64 --- /dev/null +++ b/slave/sdkconfig.ci.uart @@ -0,0 +1 @@ +CONFIG_ESP_UART_HOST_INTERFACE=y From 8c1e7737eec0510c8ab7dbd1561c5c8e90f2037f Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Tue, 29 Jul 2025 13:38:07 +0800 Subject: [PATCH 057/114] fix(doc): Correct terminology from deep sleep to power save, at required places fix(api): change api name from `esp_hosted_woke_from_deep_sleep()` to `esp_hosted_woke_from_power_save()` fix(build): Slave build fix for idf < v5.5 --- common/utils/esp_hosted_cli.c | 16 ++-- ...ep_sleep.md => feature_host_power_save.md} | 96 ++++++++++--------- host/api/include/esp_hosted_power_save.h | 2 +- host/drivers/power_save/power_save_drv.c | 16 ++-- host/drivers/transport/sdio/sdio_drv.c | 4 +- host/drivers/transport/spi/spi_drv.c | 2 +- host/drivers/transport/spi_hd/spi_hd_drv.c | 2 +- host/drivers/transport/transport_drv.c | 2 +- host/drivers/transport/uart/uart_drv.c | 2 +- idf_component.yml | 2 +- slave/main/Kconfig.projbuild | 6 +- slave/main/esp_hosted_coprocessor.c | 8 +- slave/main/slave_wifi_config.h | 2 + slave/main/spi_slave_api.c | 8 ++ 14 files changed, 91 insertions(+), 77 deletions(-) rename docs/{feature_host_deep_sleep.md => feature_host_power_save.md} (75%) diff --git a/common/utils/esp_hosted_cli.c b/common/utils/esp_hosted_cli.c index f8005c88..a907a119 100644 --- a/common/utils/esp_hosted_cli.c +++ b/common/utils/esp_hosted_cli.c @@ -254,9 +254,9 @@ static int sock_dump_cli_handler(int argc, char *argv[]) #if defined(H_HOST_PS_ALLOWED) #ifdef H_ESP_HOSTED_HOST -static int deep_sleep_cli_handler(int argc, char *argv[]) +static int power_save_cli_handler(int argc, char *argv[]) { - ESP_LOGI(TAG, "Putting ESP32-P4 into deep sleep..."); + ESP_LOGI(TAG, "Putting ESP32-P4 into power save..."); esp_hosted_power_save_start(HOSTED_POWER_SAVE_TYPE_DEEP_SLEEP); return 0; } @@ -265,7 +265,7 @@ static int deep_sleep_cli_handler(int argc, char *argv[]) #ifdef CONFIG_ESP_HOSTED_COPROCESSOR static int wakeup_cli_handler(int argc, char *argv[]) { - ESP_LOGI(TAG, "Asking P4 to wake-up..."); + ESP_LOGI(TAG, "Asking host to wake-up..."); wakeup_host(portMAX_DELAY); return 0; } @@ -312,15 +312,15 @@ static esp_console_cmd_t diag_cmds[] = { #if defined(H_HOST_PS_ALLOWED) #ifdef H_ESP_HOSTED_HOST { - .command = "deep-sleep", - .help = "Put P4 into deep sleep", - .func = deep_sleep_cli_handler, + .command = "host-power-save", + .help = "Put Host into power save", + .func = power_save_cli_handler, }, #endif #ifdef CONFIG_ESP_HOSTED_COPROCESSOR { - .command = "wake-up", - .help = "Wake-up host from deep sleep", + .command = "wake-up-host", + .help = "Wake-up host from power save", .func = wakeup_cli_handler, }, #endif diff --git a/docs/feature_host_deep_sleep.md b/docs/feature_host_power_save.md similarity index 75% rename from docs/feature_host_deep_sleep.md rename to docs/feature_host_power_save.md index 2cc4a149..3aaa456d 100644 --- a/docs/feature_host_deep_sleep.md +++ b/docs/feature_host_power_save.md @@ -1,14 +1,18 @@ -# Host Deep Sleep Wake-up (ESP-Hosted MCU) +# Host Power Save (ESP-Hosted MCU) ## Overview -The Host Deep Sleep feature allows the host MCU to enter a low-power deep sleep mode while the ESP slave handles network continuity. This enables efficient power usage in battery-operated devices. +The **Host Power Save** feature allows the host MCU to enter low-power states while the ESP slave maintains network connectivity. This enables efficient power usage in battery-operated devices. + +**Host Power Save Modes:** +- **Deep Sleep at Host**: Ultra-low power consumption with GPIO wake-up +- **Light Sleep at Host**: *(Coming Soon)* Faster wake-up with reduced power savings Key features include: -- Host sleeps, network stays online -- Slave intelligently wakes host +- Host enters power save mode, network stays online +- Slave intelligently wakes host when needed - Power state synchronization between host and slave -- Seamless network handover during sleep +- Seamless network handover during power save - Integration with Network Split --- @@ -48,7 +52,7 @@ Example Configuration --- ## High Level Overview -The power management system coordinates between the host MCU and ESP slave to ensure smooth transitions between active and sleep states. +The power management system coordinates between the host MCU and ESP slave to ensure smooth transitions between active and power save states. ```mermaid sequenceDiagram @@ -57,13 +61,13 @@ sequenceDiagram participant Network as Network/WiFi Host->>Slave: Power Save Start Signal - Note over Slave: Slave takes over network operations - Host->>Host: Enter Deep Sleep + Note over Slave: Slave takes over network operations + Host->>Host: Enter Power Save Mode Network->>Slave: Incoming packets Slave->>Slave: Packet needs host Slave->>Host: Trigger Wake-up GPIO - Host->>Host: Exit Deep Sleep + Host->>Host: Exit Power Save Mode Host->>Slave: Power Save Stop Signal Slave->>Slave: Resume packet delivery ``` @@ -78,7 +82,7 @@ The slave initiates a wake-up by toggling a dedicated GPIO line to the host when ```mermaid flowchart TD - A[💤 Host in Deep Sleep] --> B{⏱️ Trigger on Slave?} + A[💤 Host in Power Save Mode] --> B{⏱️ Trigger on Slave?} B -->|🕒 Timer Expired| C[🔔 Send Wake-up GPIO] B -->|🧑‍💻 CLI Command| C B -->|🌐 Network Packet| C @@ -96,26 +100,26 @@ flowchart TD ### State transitions -- Active → PreparingSleep: Host prepares (notifies slave, configures GPIO) -- PreparingSleep → Sleeping: Host sleeps; slave handles network -- Sleeping → Waking: Slave triggers wakeup on event (timer/packet/CLI) +- Active → Preparing: Host prepares (notifies slave, configures GPIO) +- Preparing → PowerSave: Host enters power save mode; slave handles network +- PowerSave → Waking: Slave triggers wakeup on event (timer/packet/CLI) - Waking → Active: Host re-inits system, syncs with slave ```mermaid stateDiagram [*] --> Active - Active --> PreparingSleep: 🥱 start_host_power_save() - PreparingSleep --> Sleeping: 😴 Deep Sleep Entry - Sleeping --> Waking: 😳 Wake Event + Active --> Preparing: 🥱 start_host_power_save() + Preparing --> PowerSave: 😴 Power Save Entry + PowerSave --> Waking: 😳 Wake Event Waking --> Active: 😊 Slave sync-up complete ``` --- ## Deep Dive -### 💤 Host Enters Deep Sleep +### 💤 Host Enters Power Save Mode -When the host application initiates deep sleep, the following function sequence occurs to safely coordinate with the slave. +When the host application initiates power save mode, the following function sequence occurs to safely coordinate with the slave. ```mermaid sequenceDiagram @@ -129,13 +133,13 @@ sequenceDiagram TransportDrv->>Slave: bus_inform_slave_host_power_save_start() Slave-->>TransportDrv: Ack TransportDrv-->>PowerSaveDrv: Ack - Note right of TransportDrv: Slave is now aware
host is going to sleep. - PowerSaveDrv->>PowerSaveDrv: hold_slave_reset_gpio_pre_deep_sleep() + Note right of TransportDrv: Slave is now aware
host is entering power save. + PowerSaveDrv->>PowerSaveDrv: hold_slave_reset_gpio_pre_power_save() Note right of PowerSaveDrv: Prevents slave from resetting. PowerSaveDrv->>PowerSaveDrv: _h_config_host_power_save_hal_impl() Note right of PowerSaveDrv: Configures wakeup GPIO. PowerSaveDrv->>PowerSaveDrv: _h_start_host_power_save_hal_impl() - Note right of PowerSaveDrv: Host enters deep sleep. + Note right of PowerSaveDrv: Host enters power save mode. ``` ### Host Wake-up and Synchronization Sequence @@ -155,10 +159,10 @@ sequenceDiagram SlavePS->>HostHW: Toggles Wake-up GPIO Note over SlavePS: Now blocks, waiting
for wakeup_sem. - HostHW-->>HostTransport: Host reboots from deep sleep + HostHW-->>HostTransport: Host wakes from power save Note over HostTransport: esp_hosted_init() is called,
which calls transport_drv_reconfigure(). - HostTransport->>HostPS: is_host_reboot_due_to_deep_sleep() + HostTransport->>HostPS: esp_hosted_woke_from_power_save() HostPS-->>HostTransport: Returns true HostTransport->>HostPS: stop_host_power_save() @@ -181,9 +185,9 @@ sequenceDiagram #### Host Files - `host/api/include/esp_hosted_power_save.h`: enums and APIs -- `host/drivers/power_save/power_save_drv.c`: deep sleep logic +- `host/drivers/power_save/power_save_drv.c`: power save logic - `host/drivers/transport/transport_drv.c`: slave communication -- `host/drivers/transport/{sdio,spi}/...`: bus specific deep sleep hooks +- `host/drivers/transport/{sdio,spi}/...`: bus specific power save hooks #### Slave Files @@ -199,14 +203,14 @@ sequenceDiagram /* Power save driver APIs (host side) */ int esp_hosted_power_save_enabled(void); int esp_hosted_power_save_init(void); -int esp_hosted_woke_from_deep_sleep(void); +int esp_hosted_woke_from_power_save(void); int esp_hosted_power_saving(void); int esp_hosted_power_save_start(esp_hosted_power_save_type_t power_save_type); int esp_hosted_power_save_timer_start(uint32_t time_ms, int timer_type); int esp_hosted_power_save_timer_stop(void); -/* Retain GPIO during sleep */ -int hold_slave_reset_gpio_pre_deep_sleep(void); +/* Retain GPIO during power save */ +int hold_slave_reset_gpio_pre_power_save(void); int release_slave_reset_gpio_post_wakeup(void); ``` @@ -227,21 +231,21 @@ int host_power_save_alert(uint32_t ps_evt); ## CLI Demo -### Enter Deep Sleep +### Enter Power Save Mode 1. **Enable CLI**: Ensure `ESP_HOSTED_CLI_ENABLED` is enabled in the host's `menuconfig`. 2. **Start the CLI**: The CLI starts automatically when `esp_hosted_init()` is called. -3. **Enter the command**: At the `host>` prompt, type the `deep_sleep` command. +3. **Enter the command**: At the `host>` prompt, type the `power_save` command. ```sh -host> deep_sleep -I (11147) esp_cli: Putting ESP32-P4 into deep sleep... +host> host-power-save +I (11147) esp_cli: Putting ESP32-P4 into power save mode... I (11147) H_power_save: Inform slave: Host PS start I (11148) H_SDIO_DRV: Inform slave, host power save is started ESP-ROM:esp32p4... ... ``` -This command calls `start_host_power_save()`, which signals the slave and puts the host into deep sleep. The host will not execute any further code until it is woken up. +This command calls `esp_hosted_power_save_start()`, which signals the slave and puts the host into the configured power save mode. If it is deep sleep power save, The host would not be able to execute any further code until it is woken up. ### Wake-up from Slave @@ -252,7 +256,7 @@ The host can be woken up by the slave under several conditions, such as receivin **Slave Log:** ```sh -coprocessor> wake-up +coprocessor> wake-up-host I (13730) esp_cli: Asking P4 to wake-up... I (13730) host_ps: WAKE UP Host!!!!! I (13741) host_ps: Cleared wakeup gpio, IO2 @@ -264,22 +268,22 @@ I (15543) host_ps: host woke up **Host Log (After Wake-up):** ```sh ... -I (430) H_power_save: Wakeup using deep sleep +I (430) H_power_save: Wakeup from power save I (432) transport: Waiting for power save to be off -I (1137) H_SDIO_DRV: Host woke up from deep sleep +I (1137) H_SDIO_DRV: Host woke up from power save ... ``` -When the host wakes up, checks boot-up reason, and re-establish slave connectivity automatically. +When the host wakes up, checks wake-up reason, and re-establishes slave connectivity automatically. --- ## Coding Example -While the CLI provides a easy demo, most applications would trigger sleep - wake ups using deep sleep APIs. +While the CLI provides an easy demo, most applications would trigger power save modes using the power save APIs. ### Host example -The example below shows how to check wake-up reason and enter deep sleep programmatically: +The example below shows how to check wake-up reason and enter power save mode programmatically: ```c #include "esp_hosted.h" @@ -289,9 +293,9 @@ static const char* TAG = "HOST_APP"; void app_main(void) { - /* First, check the reason for this boot cycle */ - if (esp_hosted_woke_from_deep_sleep()) { - ESP_LOGI(TAG, "Host woke up from deep sleep."); + /* First, check the reason of host bootup. is it deep sleep? */ + if (esp_hosted_woke_from_power_save()) { + ESP_LOGI(TAG, "Host woke up from power save mode."); } esp_hosted_init(); @@ -303,12 +307,12 @@ void app_main(void) * stop_host_power_save() is needed here. */ - ESP_LOGI(TAG, "Application running. Entering deep sleep in 15 seconds."); + ESP_LOGI(TAG, "Application running. Entering power save in 15 seconds."); vTaskDelay(pdMS_TO_TICKS(15000)); - ESP_LOGI(TAG, "Initiating deep sleep now."); - /* This function does not return. The host will enter deep sleep - * and reboot from app_main upon wake-up. */ + ESP_LOGI(TAG, "Initiating power save now."); + /* This function does not return. The host will enter power save mode + * and wake up from app_main upon wake-up event. */ esp_hosted_power_save_start(HOSTED_POWER_SAVE_TYPE_DEEP_SLEEP); } ``` diff --git a/host/api/include/esp_hosted_power_save.h b/host/api/include/esp_hosted_power_save.h index b4bf3316..6cc3d0a9 100644 --- a/host/api/include/esp_hosted_power_save.h +++ b/host/api/include/esp_hosted_power_save.h @@ -43,7 +43,7 @@ int esp_hosted_power_save_enabled(void); * * @return int Returns 1 if the host rebooted due to deep sleep, 0 otherwise. */ -int esp_hosted_woke_from_deep_sleep(void); +int esp_hosted_woke_from_power_save(void); /** * @brief Checks if the host is currently in power saving mode. diff --git a/host/drivers/power_save/power_save_drv.c b/host/drivers/power_save/power_save_drv.c index e568c266..56408393 100644 --- a/host/drivers/power_save/power_save_drv.c +++ b/host/drivers/power_save/power_save_drv.c @@ -120,12 +120,12 @@ int esp_hosted_power_save_enabled(void) } -int esp_hosted_woke_from_deep_sleep(void) +int esp_hosted_woke_from_power_save(void) { #if H_HOST_PS_ALLOWED int reason = g_h.funcs->_h_get_host_wakeup_or_reboot_reason(); if (reason == HOSTED_WAKEUP_DEEP_SLEEP) { - ESP_LOGI(TAG, "Wakeup using deep sleep"); + ESP_LOGI(TAG, "Wakeup from power save"); return 1; } else { ESP_LOGI(TAG, "Wakeup using reason: %d", reason); @@ -163,7 +163,7 @@ static int notify_slave_host_power_save_stop(void) } #endif -int hold_slave_reset_gpio_pre_deep_sleep(void) +int hold_slave_reset_gpio_pre_power_save(void) { #if H_HOST_PS_ALLOWED gpio_pin_t reset_pin = { .port = H_GPIO_PIN_RESET_Port, .pin = H_GPIO_PIN_RESET_Pin }; @@ -240,7 +240,7 @@ int esp_hosted_power_save_start(esp_hosted_power_save_type_t power_save_type) g_h.funcs->_h_teardown_gpio_interrupt(sleep_gpio_port, sleep_gpio); /* Hold reset pin of slave */ - if (hold_slave_reset_gpio_pre_deep_sleep()) { + if (hold_slave_reset_gpio_pre_power_save()) { ESP_LOGE(TAG, "Failed to hold reset pin of slave"); return -1; } @@ -270,7 +270,7 @@ int esp_hosted_power_save_start(esp_hosted_power_save_type_t power_save_type) power_save_on = 1; - /* Start deep sleep */ + /* Start host power save with port layer */ g_h.funcs->_h_start_host_power_save_hal_impl(power_save_type); @@ -301,9 +301,9 @@ int stop_host_power_save(void) #if H_HOST_PS_ALLOWED static esp_timer_handle_t timer_handle = NULL; -static void deep_sleep_timer_callback(void *arg) +static void power_save_timer_callback(void *arg) { - ESP_LOGI(TAG, "Firing deep sleep as timer expiry"); + ESP_LOGI(TAG, "Firing power save as timer expiry"); esp_hosted_power_save_start(HOSTED_POWER_SAVE_TYPE_DEEP_SLEEP); } #endif @@ -335,7 +335,7 @@ int esp_hosted_power_save_timer_start(uint32_t time_ms, int type) } - timer_handle = g_h.funcs->_h_timer_start("deep_sleep_timer", time_ms, type, deep_sleep_timer_callback, NULL); + timer_handle = g_h.funcs->_h_timer_start("power_save_timer", time_ms, type, power_save_timer_callback, NULL); if (err != 0) { ESP_LOGE(TAG, "Failed to start timer"); } diff --git a/host/drivers/transport/sdio/sdio_drv.c b/host/drivers/transport/sdio/sdio_drv.c index c0a79d22..63e65e64 100644 --- a/host/drivers/transport/sdio/sdio_drv.c +++ b/host/drivers/transport/sdio/sdio_drv.c @@ -1428,8 +1428,8 @@ int ensure_slave_bus_ready(void *bus_handle) } } #else /* H_RESET_ON_EVERY_BOOTUP */ - if (esp_hosted_woke_from_deep_sleep()) { - ESP_LOGI(TAG, "Host woke up from deep sleep"); + if (esp_hosted_woke_from_power_save()) { + ESP_LOGI(TAG, "Host woke up from power save"); g_h.funcs->_h_msleep(500); set_transport_state(TRANSPORT_RX_ACTIVE); diff --git a/host/drivers/transport/spi/spi_drv.c b/host/drivers/transport/spi/spi_drv.c index a3a912d1..fff47e17 100644 --- a/host/drivers/transport/spi/spi_drv.c +++ b/host/drivers/transport/spi/spi_drv.c @@ -879,7 +879,7 @@ int ensure_slave_bus_ready(void *bus_handle) release_slave_reset_gpio_post_wakeup(); - if (esp_hosted_woke_from_deep_sleep()) { + if (esp_hosted_woke_from_power_save()) { stop_host_power_save(); } else { ESP_LOGI(TAG, "Reseting slave"); diff --git a/host/drivers/transport/spi_hd/spi_hd_drv.c b/host/drivers/transport/spi_hd/spi_hd_drv.c index 923be195..32a415fe 100644 --- a/host/drivers/transport/spi_hd/spi_hd_drv.c +++ b/host/drivers/transport/spi_hd/spi_hd_drv.c @@ -892,7 +892,7 @@ int ensure_slave_bus_ready(void *bus_handle) release_slave_reset_gpio_post_wakeup(); - if (!esp_hosted_woke_from_deep_sleep()) { + if (!esp_hosted_woke_from_power_save()) { /* Reset the slave */ ESP_LOGI(TAG, "Reseting slave on SPI HD bus with pin %d", reset_pin.pin); g_h.funcs->_h_config_gpio(reset_pin.port, reset_pin.pin, H_GPIO_MODE_DEF_OUTPUT); diff --git a/host/drivers/transport/transport_drv.c b/host/drivers/transport/transport_drv.c index 41d5571d..e7c7690e 100644 --- a/host/drivers/transport/transport_drv.c +++ b/host/drivers/transport/transport_drv.c @@ -171,7 +171,7 @@ esp_err_t transport_drv_reconfigure(void) #endif int retry_power_save_recover = 5; - if (esp_hosted_woke_from_deep_sleep()) { + if (esp_hosted_woke_from_power_save()) { ESP_LOGI(TAG, "Waiting for power save to be off"); g_h.funcs->_h_msleep(700); diff --git a/host/drivers/transport/uart/uart_drv.c b/host/drivers/transport/uart/uart_drv.c index c9f0b545..bfc9ee03 100644 --- a/host/drivers/transport/uart/uart_drv.c +++ b/host/drivers/transport/uart/uart_drv.c @@ -653,7 +653,7 @@ int ensure_slave_bus_ready(void *bus_handle) release_slave_reset_gpio_post_wakeup(); - if (!esp_hosted_woke_from_deep_sleep()) { + if (!esp_hosted_woke_from_power_save()) { /* Reset the slave */ ESP_LOGI(TAG, "Resetting slave on UART bus with pin %d", reset_pin.pin); g_h.funcs->_h_config_gpio(reset_pin.port, reset_pin.pin, H_GPIO_MODE_DEF_OUTPUT); diff --git a/idf_component.yml b/idf_component.yml index 70c59164..00e85855 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.1.2" +version: "2.1.3" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/Kconfig.projbuild b/slave/main/Kconfig.projbuild index b448685d..00dfd93d 100644 --- a/slave/main/Kconfig.projbuild +++ b/slave/main/Kconfig.projbuild @@ -1074,13 +1074,9 @@ menu "Example Configuration" bool "Unload low level BUS driver during host deep sleep" default n - config PRINT_HOST_WAKEUP_PACKET_PORT - bool "Print the wakeup packet port" - default y - config PRINT_HOST_WAKEUP_PACKET_FULL_PKT bool "Print the full wakeup packet" - default y + default n endmenu diff --git a/slave/main/esp_hosted_coprocessor.c b/slave/main/esp_hosted_coprocessor.c index 856efa55..299c7496 100644 --- a/slave/main/esp_hosted_coprocessor.c +++ b/slave/main/esp_hosted_coprocessor.c @@ -384,9 +384,13 @@ static void process_tx_pkt(interface_buffer_handle_t *buf_handle) if (if_context && if_context->if_ops && if_context->if_ops->write) { if (is_host_power_saving() && is_host_wakeup_needed(buf_handle)) { - ESP_LOGI(TAG, "Host sleeping, trigger wake-up"); + uint16_t wakeup_pkt_display_len = 32; + ESP_LOGI(TAG, "Host sleeping, trigger host wake-up"); + #ifdef CONFIG_PRINT_HOST_WAKEUP_PACKET_FULL_PKT + wakeup_pkt_display_len = buf_handle->payload_len>1600?1600:buf_handle->payload_len; + #endif ESP_HEXLOGW("Wakeup_pkt", buf_handle->payload+H_ESP_PAYLOAD_HEADER_OFFSET, - buf_handle->payload_len, /*buf_handle->payload_len*/ 32); + buf_handle->payload_len, wakeup_pkt_display_len); host_awake = wakeup_host(portMAX_DELAY); buf_handle->flag |= FLAG_WAKEUP_PKT; } diff --git a/slave/main/slave_wifi_config.h b/slave/main/slave_wifi_config.h index 9f9955d2..61650d5a 100644 --- a/slave/main/slave_wifi_config.h +++ b/slave/main/slave_wifi_config.h @@ -16,9 +16,11 @@ #if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 5, 0) #define H_WIFI_NEW_RESERVED_FIELD_NAMES 1 #define H_PRESENT_IN_ESP_IDF_5_5_0 1 +#define H_IF_AVAILABLE_SPI_SLAVE_ENABLE_DISABLE 1 #else #define H_WIFI_NEW_RESERVED_FIELD_NAMES 0 #define H_PRESENT_IN_ESP_IDF_5_5_0 0 +#define H_IF_AVAILABLE_SPI_SLAVE_ENABLE_DISABLE 0 #endif #if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 0) diff --git a/slave/main/spi_slave_api.c b/slave/main/spi_slave_api.c index 42249b0d..3f1ac76e 100644 --- a/slave/main/spi_slave_api.c +++ b/slave/main/spi_slave_api.c @@ -22,6 +22,7 @@ #include "esp_hosted_header.h" #include "host_power_save.h" #include "esp_hosted_interface.h" +#include "slave_wifi_config.h" static const char TAG[] = "SPI_DRIVER"; /* SPI settings */ @@ -630,11 +631,16 @@ static interface_handle_t * esp_spi_init(void) return &if_handle_g; } +#if H_PS_UNLOAD_BUS_WHILE_PS if (hosted_constructs_init_done) { + + #if H_IF_AVAILABLE_SPI_SLAVE_ENABLE_DISABLE spi_slave_enable(ESP_SPI_CONTROLLER); + #endif if_handle_g.state = ACTIVE; return &if_handle_g; } +#endif esp_err_t ret = ESP_OK; uint16_t prio_q_idx = 0; @@ -895,7 +901,9 @@ static void esp_spi_deinit(interface_handle_t *handle) ESP_LOGW(TAG, "SPI already deinitialized"); return; } + #if H_IF_AVAILABLE_SPI_SLAVE_ENABLE_DISABLE spi_slave_disable(ESP_SPI_CONTROLLER); + #endif handle->state = DEINIT; ESP_LOGI(TAG, "SPI deinit requested. Signaling spi task to exit."); #endif From b47a9ace9883c3a876d94beae0f3e0532b4c27f4 Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Tue, 29 Jul 2025 10:19:27 +0800 Subject: [PATCH 058/114] bugfix(ci_coprocessor): Fixed coprocessor CI - build coprocessor CI targets with actual transport targets - resolved errors encountered by CI --- .gitlab-ci.yml | 2 +- idf_component.yml | 2 +- slave/main/spi_hd_slave_api.c | 4 ++-- slave/main/spi_slave_api.c | 4 ++-- slave/main/uart_slave_api.c | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a3fc3e09..a2aafef9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -16,7 +16,7 @@ before_script: - source ${IDF_PATH}/export.sh - pip install idf-ci - pip install idf-component-manager idf-build-apps --upgrade - - SDKCONFIG_PATTERN="sdkconfig.ci.{SLAVE_CI_FILE}" + - SDKCONFIG_PATTERN="sdkconfig.ci.${SLAVE_CI_FILE}" # Build with IDF pedantic flags and IDF build apps script - export PEDANTIC_FLAGS="-DIDF_CI_BUILD -Werror -Werror=deprecated-declarations -Werror=unused-variable -Werror=unused-but-set-variable -Werror=unused-function" - export EXTRA_CFLAGS="${PEDANTIC_FLAGS} -Wstrict-prototypes" diff --git a/idf_component.yml b/idf_component.yml index 00e85855..e6d428fa 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.1.3" +version: "2.1.4" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/spi_hd_slave_api.c b/slave/main/spi_hd_slave_api.c index 530e453c..47d39b85 100644 --- a/slave/main/spi_hd_slave_api.c +++ b/slave/main/spi_hd_slave_api.c @@ -145,7 +145,7 @@ static struct hosted_mempool * trans_tx_g; static struct hosted_mempool * trans_rx_g; static SemaphoreHandle_t mempool_tx_sem = NULL; // to count number of Tx bufs in IDF SPI HD driver -static inline void spi_hd_mempool_create() +static inline void spi_hd_mempool_create(void) { buf_mp_tx_g = hosted_mempool_create(NULL, 0, TX_MEMPOOL_NUM_BLOCKS, SPI_HD_BUFFER_SIZE); @@ -163,7 +163,7 @@ static inline void spi_hd_mempool_create() #endif } -static inline void spi_hd_mempool_destroy() +static inline void spi_hd_mempool_destroy(void) { hosted_mempool_destroy(buf_mp_tx_g); hosted_mempool_destroy(buf_mp_rx_g); diff --git a/slave/main/spi_slave_api.c b/slave/main/spi_slave_api.c index 3f1ac76e..529b65ea 100644 --- a/slave/main/spi_slave_api.c +++ b/slave/main/spi_slave_api.c @@ -137,7 +137,7 @@ static struct hosted_mempool * buf_mp_tx_g; static struct hosted_mempool * buf_mp_rx_g; static struct hosted_mempool * trans_mp_g; -static inline void spi_mempool_create() +static inline void spi_mempool_create(void) { buf_mp_tx_g = hosted_mempool_create(NULL, 0, SPI_MEMPOOL_NUM_BLOCKS, SPI_BUFFER_SIZE); @@ -154,7 +154,7 @@ static inline void spi_mempool_create() #endif } -static inline void spi_mempool_destroy() +static inline void spi_mempool_destroy(void) { hosted_mempool_destroy(buf_mp_tx_g); hosted_mempool_destroy(trans_mp_g); diff --git a/slave/main/uart_slave_api.c b/slave/main/uart_slave_api.c index c298bd87..99433911 100644 --- a/slave/main/uart_slave_api.c +++ b/slave/main/uart_slave_api.c @@ -103,7 +103,7 @@ static QueueHandle_t uart_rx_queue[MAX_PRIORITY_QUEUES]; static void uart_rx_task(void* pvParameters); -static inline void h_uart_mempool_create() +static inline void h_uart_mempool_create(void) { buf_mp_tx_g = hosted_mempool_create(NULL, 0, HOSTED_UART_TX_QUEUE_SIZE, BUFFER_SIZE); @@ -115,7 +115,7 @@ static inline void h_uart_mempool_create() #endif } -static inline void h_uart_mempool_destroy() +static inline void h_uart_mempool_destroy(void) { hosted_mempool_destroy(buf_mp_tx_g); hosted_mempool_destroy(buf_mp_rx_g); From 683708e1c735bfe60322578ea48df6e0aa4a1a07 Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Wed, 30 Jul 2025 16:40:21 +0800 Subject: [PATCH 059/114] Add host example for network split + host power save with P4-sdio-C6 --- .../CMakeLists.txt | 8 + .../host_network_split__power_save/README.md | 331 ++++++++++++++++++ .../README_iperf.md | 119 +++++++ .../main/CMakeLists.txt | 2 + .../main/idf_component.yml | 17 + .../main/iperf_example_main.c | 140 ++++++++ .../sdkconfig.defaults | 24 ++ .../sdkconfig.defaults.esp32 | 23 ++ .../sdkconfig.defaults.esp32c2 | 26 ++ .../sdkconfig.defaults.esp32c3 | 26 ++ .../sdkconfig.defaults.esp32c5 | 43 +++ .../sdkconfig.defaults.esp32c6 | 28 ++ .../sdkconfig.defaults.esp32c61 | 43 +++ .../sdkconfig.defaults.esp32p4 | 23 ++ .../sdkconfig.defaults.esp32s2 | 30 ++ .../sdkconfig.defaults.esp32s3 | 27 ++ slave/README.md | 133 +++++++ 17 files changed, 1043 insertions(+) create mode 100644 examples/host_network_split__power_save/CMakeLists.txt create mode 100644 examples/host_network_split__power_save/README.md create mode 100644 examples/host_network_split__power_save/README_iperf.md create mode 100644 examples/host_network_split__power_save/main/CMakeLists.txt create mode 100644 examples/host_network_split__power_save/main/idf_component.yml create mode 100644 examples/host_network_split__power_save/main/iperf_example_main.c create mode 100644 examples/host_network_split__power_save/sdkconfig.defaults create mode 100644 examples/host_network_split__power_save/sdkconfig.defaults.esp32 create mode 100644 examples/host_network_split__power_save/sdkconfig.defaults.esp32c2 create mode 100644 examples/host_network_split__power_save/sdkconfig.defaults.esp32c3 create mode 100644 examples/host_network_split__power_save/sdkconfig.defaults.esp32c5 create mode 100644 examples/host_network_split__power_save/sdkconfig.defaults.esp32c6 create mode 100644 examples/host_network_split__power_save/sdkconfig.defaults.esp32c61 create mode 100644 examples/host_network_split__power_save/sdkconfig.defaults.esp32p4 create mode 100644 examples/host_network_split__power_save/sdkconfig.defaults.esp32s2 create mode 100644 examples/host_network_split__power_save/sdkconfig.defaults.esp32s3 create mode 100644 slave/README.md diff --git a/examples/host_network_split__power_save/CMakeLists.txt b/examples/host_network_split__power_save/CMakeLists.txt new file mode 100644 index 00000000..ee2035eb --- /dev/null +++ b/examples/host_network_split__power_save/CMakeLists.txt @@ -0,0 +1,8 @@ +# The following lines of boilerplate have to be in your project's CMakeLists +# in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.16) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +# "Trim" the build. Include the minimal set of components, main, and anything it depends on. +idf_build_set_property(MINIMAL_BUILD ON) +project(iperf) diff --git a/examples/host_network_split__power_save/README.md b/examples/host_network_split__power_save/README.md new file mode 100644 index 00000000..0564235f --- /dev/null +++ b/examples/host_network_split__power_save/README.md @@ -0,0 +1,331 @@ +# Network Split with Host Deep Sleep Example + +This example shows how to use two powerful ESP-Hosted features together: **Network Split** and **Host Deep Sleep**. These features allow a host MCU to save power by sleeping while the slave device keeps the network connection alive and only wakes the host when necessary. + +## What This Example Does + +**Network Split** - Smart traffic routing: +- Host handles important traffic (ports 49152-61439) +- Slave handles background traffic (ports 61440-65535) +- No unnecessary host wake-ups + + +**Host Deep Sleep** - Ultra-low power mode: +- Host can sleep while slave stays connected to WiFi +- Slave wakes host only for important traffic +- Wake-up can also be triggered by commands or MQTT messages + +## Supported Platforms and Transports + +### Supported Co-processors + +| Co-Processors Supported | ESP32-C5 | ESP32-C6/C61 | ESP32 | ESP32-S2 | ESP32-S3 | +| :---------------------- | :------- | :----------- | :---- | :------- | :------- | + +### Supported Host MCUs + +| Hosts Supported | ESP32-P4 | ESP32-H2 | Any other MCU hosts | +| :-------------- | :------- | :------- | :------------------ | + +### Supported Transport Interfaces + +| Transport Interface | SDIO | SPI Full-Duplex | SPI Half-Duplex | UART | +| :------------------ | :--- | :-------------- | :-------------- | :--- | + +## Example Hardware Used + +This example is designed for the **ESP32-P4-Function-EV-Board** with its built-in ESP32-C6. + +**Default setup:** +- **Host**: ESP32-P4 (handles important network traffic) +- **Slave**: ESP32-C6 (maintains WiFi and handles background traffic) +- **Connection**: SDIO (pre-wired on the board) +- **Wake-up wire**: Already connected between GPIO2 (slave) and GPIO6 (host) + +All listed items in default setup are customizable to suit specific use cases and requirements. + + +## Flash the Slave (ESP32-C6) + +The slave needs ESP-Hosted firmware with Network Split and Host Power Save enabled. + +With below additional configuration, Flash the slave using setup instructions, see: [Slave Example Guide](../../slave/README.md) + + +#### Slave Side Configuration: + +Using `idf.py menuconfig`, Enable: + +``` +# Minimal slave config +Example Configuration +├── [*] Enable Network Split +└── [*] Allow host to power save +``` + +**Advanced slave settings** (optional): +``` +Example Configuration +└── Network Split Configuration + ├── Host Static Port Forwarding + │ ├── TCP dst: 22,80,443,8080,8554 + │ └── UDP dst: 53,123 + ├── Port Ranges + │ ├── Host: 49152–61439 + │ └── Slave: 61440–65535 + └── Host power save config + ├── Allow host to enter deep sleep + ├── Slave out: Host wakeup GPIO (2) + └── Host Wakeup GPIO Level (High) +``` + +Continue to build and flash slave using [Slave Example Guide](../../slave/README.md) + + +## Flash the Host (ESP32-P4) + +The host needs ESP-Hosted firmware with Network Split and Host Power Save configured. + +**Essential host configuration:** +1. Set target: `idf.py set-target esp32p4` + +2. Network split and Host power save is pre-configured in this example. +(Optionally) customise the configuration using `idf.py menuconfig` +``` +Component config +└── ESP-Hosted config + ├── [*] Enable Network Split + │ └── Network Split Configuration + │ └── Port Ranges + │ ├── Host: 49152–61439 + │ └── Slave: 61440–65535 + └── [*] Enable Host Power Save + └── Host Power Save Configuration + [*] Allow host to enter deep sleep. + └── Deep Sleep Configuration + ├── Host Wakeup GPIO (6) + └── Host wakeup GPIO active low +``` + +3. Build and flash: `idf.py build && idf.py -p flash monitor` + +## Testing the Example + +### Basic Power Save Test +1. Wait for both devices to connect to WiFi +2. Connect to AP using command, `sta_connect ` +3. On host console: type `host-power-save` +4. Host goes to sleep, slave stays connected +5. On slave console: type `wake-up-host` to wake the host + +### Smart Wake-up Test +1. Put host to sleep using `host-power-save` +2. Send dummy TCP/UDP packet to the device IP in host ports (49152–61439) → host wakes automatically +3. Send dummy TCP/UDP packet to the device IP in slave ports (61440-65535) → slave handles without waking host + +##### Sample program to test Network based `Smart Wake-up Test` + +C program to send UDP packet:

send_udp_pkt.c
+
+ +```c +// SPDX-License-Identifier: Apache-2.0 +// Copyright 2015-2025 Espressif Systems (Shanghai) PTE LTD + +/* This is just sample program to send sample udp packet */ + +/* +==================================================================== + send_udp_pkt.c +==================================================================== +*/ + +#include +#include +#include +#include +#include +#include +#include +#include + +int main(int argc, char *argv[]) { + if (argc != 3) { + fprintf(stderr, "Usage: %s \n", argv[0]); + return EXIT_FAILURE; + } + + const char *ip = argv[1]; + int port = atoi(argv[2]); + const char *msg = "Hello, UDP!"; + + int sock = socket(AF_INET, SOCK_DGRAM, 0); + if (sock < 0) { + perror("socket"); + return EXIT_FAILURE; + } + + // Non-blocking mode + int flags = fcntl(sock, F_GETFL, 0); + fcntl(sock, F_SETFL, flags | O_NONBLOCK); + + struct sockaddr_in addr = { + .sin_family = AF_INET, + .sin_port = htons(port), + }; + inet_pton(AF_INET, ip, &addr.sin_addr); + + ssize_t sent = sendto(sock, msg, strlen(msg), 0, + (struct sockaddr *)&addr, sizeof(addr)); + + if (sent < 0) { + if (errno == EWOULDBLOCK || errno == EAGAIN) { + fprintf(stderr, "sendto would block, try again later\n"); + } else { + perror("sendto"); + } + } else { + printf("Sent %zd bytes to %s:%d\n", sent, ip, port); + } + + close(sock); + return EXIT_SUCCESS; +} +``` +
+ + +Shell script to trigger wake-up:

send_udp_pkt.sh
+
+ +```bash +#!/bin/bash + +# Simple script to build and run send_udp_pkt.c + +#==================================================================== +# send_udp_pkt.sh +#==================================================================== +# Check if IP address is provided +if [ $# -eq 0 ]; then + echo "❌ Error: IP address is required!" + echo "Usage: $0 [port]" + echo "Example: $0 192.168.1.100 60000" + exit 1 +fi + +IP_ADDRESS="$1" +DEFAULT_PORT="60000" + +# Check if port is provided as second argument +if [ $# -ge 2 ]; then + PORT="$2" +else + PORT="$DEFAULT_PORT" + echo "No port specified, using default port: $DEFAULT_PORT" +fi + +echo "===== Network Split Host Wakeup with UDP Packet Tool =====" +echo "Target: $IP_ADDRESS:$PORT" +echo "Building and running network wakeup utility..." + +# Compile the program +gcc -o send_udp_pkt send_udp_pkt.c -pthread + +# Check if compilation succeeded +if [ $? -ne 0 ]; then + echo "❌ Compilation failed!" + exit 1 +fi + +echo "✅ Build successful!" +echo "Starting network wakeup utility..." +echo "-------------------------------------------" + +# Run the program with IP address and port +./send_udp_pkt $IP_ADDRESS $PORT + +# Capture result +RESULT=$? +if [ $RESULT -eq 0 ]; then + echo "-------------------------------------------" + echo "✅ Network wakeup packet sent successfully to $IP_ADDRESS:$PORT!" +else + echo "-------------------------------------------" + echo "❌ Network wakeup failed with code: $RESULT" +fi + +exit $RESULT +``` +
+ +Create both files in some temporary directory and run: +```bash +bash send_udp_pkt.sh 62000 # Send packet to slave port --> ❌ No host wake up + +bash send_udp_pkt.sh 123 # Send packet to host reserved udp port ==> ✅ host wake up +``` + +> [!TIP] +> +> You can design your packet routing & filtering as per application application use-case and deploy in slave firmware. +> Refer to the https://github.com/espressif/esp-hosted-mcu/blob/663d6631af6e7a6735755e2247ab60363fda87c8/slave/main/lwip_filter.c#L349 + +### Performance Test +1. Run iPerf server: `iperf -s -p 5001` +2. From another device: `iperf -c -p 5001` +3. Watch logs to see which device handles the traffic +For more details on iperf tests, refer [iperf test](README_iperf.md) + +## Customizing for Other Hardware + +#### Different Transport (e.g., SPI instead of SDIO) + +**Slave side:** +``` +Example Configuration +└── Bus Config in between Host and Co-processor + └── Transport layer + └── (X) SPI Full-duplex +``` + +**Host side:** +``` +Component config +└── ESP-Hosted config + └── Transport layer + └── (X) SPI Full-duplex +``` + +Configure the specific GPIO pins for the chosen transport bus and Host wake up GPIO pin + +#### Different MCU Combination +1. Change `idf.py set-target` to your MCU +2. Update GPIO pins in menuconfig to match your wiring +3. Make sure wake-up GPIO on host supports deep sleep wake-up + +## Troubleshooting + +**Host won't wake up:** +- Check GPIO wire connection between slave GPIO2 and host GPIO6 +- Verify host GPIO6 supports RTC wake-up +- Check GPIO level settings match on both sides + +**WiFi connection fails:** +- Double-check WiFi credentials in both devices +- Make sure both devices use the same WiFi settings + +**Traffic not splitting correctly:** +- Check port range settings in slave menuconfig +- Monitor logs to see packet routing decisions +- Verify Network Split is enabled on slave + +## References + +- [Network Split Documentation](../../docs/feature_network_split.md) +- [Host Power Save Documentation](../../docs/feature_host_power_save.md) +- [ESP32-P4-Function-EV-Board Guide](../../docs/esp32_p4_function_ev_board.md) +- [Slave Example Guide](../../slave/README.md) +- [Main ESP-Hosted Documentation](../../README.md) + + diff --git a/examples/host_network_split__power_save/README_iperf.md b/examples/host_network_split__power_save/README_iperf.md new file mode 100644 index 00000000..4e253247 --- /dev/null +++ b/examples/host_network_split__power_save/README_iperf.md @@ -0,0 +1,119 @@ +| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-P4 | ESP32-S2 | ESP32-S3 | +| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- | -------- | + +# Iperf Example + +## Note about iperf version +The iperf example doesn't support all features in standard iperf. It's compatible with iperf version 2.x. + +- Refer to the ESP Component Registry iperf-cmd page for more information: https://components.espressif.com/components/espressif/iperf-cmd + +## Note about 80MHz flash frequency (ESP32) +The iperf can get better throughput if the SPI flash frequency is set to 80MHz, but the system may crash in 80MHz mode for ESP-WROVER-KIT. +Removing R140\~R145 from the board can fix this issue. Currently the default SPI frequency is set to 40MHz, if you want to change the SPI flash +frequency to 80MHz, please make sure R140\~R145 are removed from ESP-WROVER-KIT or use ESP32 DevKitC. + +## Introduction +This example implements the protocol used by the common performance measurement tool [iPerf](https://iperf.fr/). +Performance can be measured between two ESP targets running this example, or between a single ESP target and a computer running the iPerf tool + +Demo steps to test station TCP Tx performance: + +- Configure in `menuconfig` which serial output you are using. Execute `idf.py menuconfig` and go to `Component config/ESP System Settings/Channel for console output`, then select the appropriate interface. By default the UART0 interface is used, this means that for example in the ESP32-S3-DevKitC-1 or ESP32-C6-DevKitC-1 you should connect to the micro-usb connector labeled as UART and not to the one labeled as USB. To use the one labeled as USB you should change the aforementioned setting to `USB Serial/JTAG Controller`. + +- Build and flash the iperf example with `sdkconfig.defaults`, which contains performance test specific configurations + - Use `help` for detailed command usage information. + +- Run the demo as station mode and join the target AP + - `sta_connect ` + - NOTE: the dut is started in station mode by default. If you want to use the dut as softap, please set wifi mode first: + - `wifi_mode ap` + - `ap_set ` + +- Run iperf as server on AP side + - `iperf -s -i 3` + +- Run iperf as client on ESP side + - `iperf -c 192.168.10.42 -i 3 -t 60` + +The console output, which is printed by station TCP RX throughput test, looks like: + + ``` + iperf> sta_connect testap-11 ******** + I (36836) WIFI: Connecting to testap-11... + I (36839) WIFI: DONE.WIFI_CONNECT_START,OK. + iperf> I (39248) WIFI: WIFI_EVENT_STA_DISCONNECTED! reason: 201 + I (39249) WIFI: trying to reconnect... + I (41811) wifi:new:<11,2>, old:<1,0>, ap:<255,255>, sta:<11,2>, prof:1, snd_ch_cfg:0x0 + I (41813) wifi:state: init -> auth (0xb0) + I (41816) wifi:state: auth -> assoc (0x0) + I (41840) wifi:state: assoc -> run (0x10) + I (41847) wifi:idx:0 (ifx:0, 30:5a:3a:74:90:f0), tid:0, ssn:0, winSize:64 + I (41914) wifi:connected with testap-11, aid = 1, channel 11, 40D, bssid = 30:5a:3a:74:90:f0 + I (41915) wifi:security: WPA2-PSK, phy: bgn, rssi: -34 + I (41926) wifi:pm start, type: 0 + + I (41927) wifi:dp: 1, bi: 102400, li: 3, scale listen interval from 307200 us to 307200 us + I (41929) WIFI: WIFI_EVENT_STA_CONNECTED! + I (41983) wifi:AP's beacon interval = 102400 us, DTIM period = 3 + I (42929) esp_netif_handlers: sta ip: 192.168.1.79, mask: 255.255.255.0, gw: 192.168.1.1 + I (42930) WIFI: IP_EVENT_STA_GOT_IP: Interface "sta" address: 192.168.1.79 + I (42942) WIFI: - IPv4 address: 192.168.1.79, + iperf> + iperf> iperf -s -i 2 + I (84810) IPERF: mode=tcp-server sip=0.0.0.0:5001, dip=0.0.0.0:5001, interval=2, time=30 + I (84812) iperf: Socket created + iperf> I (87967) iperf: accept: 192.168.1.2,43726 + + Interval Bandwidth + 0.0- 2.0 sec 24.36 Mbits/sec + 2.0- 4.0 sec 23.38 Mbits/sec + 4.0- 6.0 sec 24.02 Mbits/sec + 6.0- 8.0 sec 25.27 Mbits/sec + 8.0-10.0 sec 23.84 Mbits/sec + ``` + +Steps to test station/soft-AP TCP/UDP RX/TX throughput are similar as test steps in station TCP TX. + +#### Host Flashing Steps + +* Set the ESP32-P4 as the target + +```sh +idf.py set-target esp32p4 +``` + +You may see lines similar to this: + +``` +NOTICE: Processing 11 dependencies: +NOTICE: [1/11] cmd_system (*) (/home/esp/esp-idf/examples/system/console/advanced/components/cmd_system) +NOTICE: [2/11] esp-qa/ping-cmd (1.0.0) +NOTICE: [3/11] esp-qa/wifi-cmd (0.1.10) +NOTICE: [4/11] espressif/eppp_link (0.2.0) +NOTICE: [5/11] espressif/esp-extconn (0.1.0) +NOTICE: [6/11] espressif/esp_hosted (1.1.1) +NOTICE: [7/11] espressif/esp_serial_slave_link (1.1.0) +NOTICE: [8/11] espressif/esp_wifi_remote (0.5.3) +NOTICE: [9/11] espressif/iperf (0.1.3) +NOTICE: [10/11] espressif/iperf-cmd (0.1.3) +NOTICE: [11/11] idf (5.5.0) +``` + +The Wi-Fi Remote and ESP-Hosted components are automatically fetched during the configuration. + +* Build + + ```sh + idf.py build + ``` +* Flash + + ```sh + idf.py -p flash + ``` +* Monitor + + ```sh + idf.py -p monitor + ``` diff --git a/examples/host_network_split__power_save/main/CMakeLists.txt b/examples/host_network_split__power_save/main/CMakeLists.txt new file mode 100644 index 00000000..156c3bfc --- /dev/null +++ b/examples/host_network_split__power_save/main/CMakeLists.txt @@ -0,0 +1,2 @@ +idf_component_register(SRCS "iperf_example_main.c" + INCLUDE_DIRS ".") diff --git a/examples/host_network_split__power_save/main/idf_component.yml b/examples/host_network_split__power_save/main/idf_component.yml new file mode 100644 index 00000000..f20a9ca5 --- /dev/null +++ b/examples/host_network_split__power_save/main/idf_component.yml @@ -0,0 +1,17 @@ +dependencies: + cmd_system: + path: ${IDF_PATH}/examples/system/console/advanced/components/cmd_system + espressif/iperf-cmd: + version: "~0.1.1" + esp-qa/wifi-cmd: + version: "~0.1.8" + esp-qa/ping-cmd: + version: "~1.0.0" + espressif/esp_wifi_remote: + version: "*" + rules: + - if: "target in [esp32p4, esp32h2]" + espressif/esp_hosted: + version: "*" + rules: + - if: "target in [esp32p4, esp32h2]" diff --git a/examples/host_network_split__power_save/main/iperf_example_main.c b/examples/host_network_split__power_save/main/iperf_example_main.c new file mode 100644 index 00000000..478fab79 --- /dev/null +++ b/examples/host_network_split__power_save/main/iperf_example_main.c @@ -0,0 +1,140 @@ +/* Wi-Fi iperf Example + + This example code is in the Public Domain (or CC0 licensed, at your option.) + + Unless required by applicable law or agreed to in writing, this + software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + CONDITIONS OF ANY KIND, either express or implied. +*/ + +#include +#include +#include "esp_wifi.h" +#include "esp_log.h" +#include "esp_err.h" +#include "nvs_flash.h" +#include "esp_console.h" +#include "cmd_system.h" + +/* component manager */ +#include "iperf.h" +#include "wifi_cmd.h" +#include "iperf_cmd.h" +#include "ping_cmd.h" + + +#if CONFIG_ESP_WIFI_ENABLE_WIFI_TX_STATS || CONFIG_ESP_WIFI_ENABLE_WIFI_RX_STATS +#include "esp_wifi_he.h" +#endif +#if CONFIG_ESP_WIFI_ENABLE_WIFI_TX_STATS +extern int wifi_cmd_get_tx_statistics(int argc, char **argv); +extern int wifi_cmd_clr_tx_statistics(int argc, char **argv); +#endif +#if CONFIG_ESP_WIFI_ENABLE_WIFI_RX_STATS +extern int wifi_cmd_get_rx_statistics(int argc, char **argv); +extern int wifi_cmd_clr_rx_statistics(int argc, char **argv); +#endif + +#if defined(CONFIG_ESP_EXT_CONN_ENABLE) && defined(CONFIG_ESP_HOST_WIFI_ENABLED) +#include "esp_extconn.h" +#endif + +void iperf_hook_show_wifi_stats(iperf_traffic_type_t type, iperf_status_t status) +{ + if (status == IPERF_STARTED) { +#if CONFIG_ESP_WIFI_ENABLE_WIFI_TX_STATS + if (type != IPERF_UDP_SERVER) { + wifi_cmd_clr_tx_statistics(0, NULL); + } +#endif +#if CONFIG_ESP_WIFI_ENABLE_WIFI_RX_STATS + if (type != IPERF_UDP_CLIENT) { + wifi_cmd_clr_rx_statistics(0, NULL); + } +#endif + } + + if (status == IPERF_STOPPED) { +#if CONFIG_ESP_WIFI_ENABLE_WIFI_TX_STATS + if (type != IPERF_UDP_SERVER) { + wifi_cmd_get_tx_statistics(0, NULL); + } +#endif +#if CONFIG_ESP_WIFI_ENABLE_WIFI_RX_STATS + if (type != IPERF_UDP_CLIENT) { + wifi_cmd_get_rx_statistics(0, NULL); + } +#endif + } + +} + + +void app_main(void) +{ +#if defined(CONFIG_ESP_EXT_CONN_ENABLE) && defined(CONFIG_ESP_HOST_WIFI_ENABLED) + esp_extconn_config_t ext_config = ESP_EXTCONN_CONFIG_DEFAULT(); + esp_extconn_init(&ext_config); +#endif + + esp_err_t ret = nvs_flash_init(); + if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) { + ESP_ERROR_CHECK(nvs_flash_erase()); + ret = nvs_flash_init(); + } + ESP_ERROR_CHECK( ret ); + + /* initialise wifi */ + app_wifi_initialise_config_t config = APP_WIFI_CONFIG_DEFAULT(); + config.storage = WIFI_STORAGE_RAM; + config.ps_type = WIFI_PS_NONE; + app_initialise_wifi(&config); +#if CONFIG_ESP_WIFI_ENABLE_WIFI_RX_STATS +#if CONFIG_ESP_WIFI_ENABLE_WIFI_RX_MU_STATS + esp_wifi_enable_rx_statistics(true, true); +#else + esp_wifi_enable_rx_statistics(true, false); +#endif +#endif +#if CONFIG_ESP_WIFI_ENABLE_WIFI_TX_STATS + esp_wifi_enable_tx_statistics(ESP_WIFI_ACI_BE, true); +#endif + + + esp_console_repl_t *repl = NULL; + esp_console_repl_config_t repl_config = ESP_CONSOLE_REPL_CONFIG_DEFAULT(); + repl_config.prompt = "iperf>"; + + // init console REPL environment +#if CONFIG_ESP_CONSOLE_UART + esp_console_dev_uart_config_t uart_config = ESP_CONSOLE_DEV_UART_CONFIG_DEFAULT(); + ESP_ERROR_CHECK(esp_console_new_repl_uart(&uart_config, &repl_config, &repl)); +#elif CONFIG_ESP_CONSOLE_USB_CDC + esp_console_dev_usb_cdc_config_t cdc_config = ESP_CONSOLE_DEV_CDC_CONFIG_DEFAULT(); + ESP_ERROR_CHECK(esp_console_new_repl_usb_cdc(&cdc_config, &repl_config, &repl)); +#elif CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG + esp_console_dev_usb_serial_jtag_config_t usbjtag_config = ESP_CONSOLE_DEV_USB_SERIAL_JTAG_CONFIG_DEFAULT(); + ESP_ERROR_CHECK(esp_console_new_repl_usb_serial_jtag(&usbjtag_config, &repl_config, &repl)); +#endif + + /* Register commands */ + register_system(); + app_register_all_wifi_commands(); + app_register_iperf_commands(); + ping_cmd_register_ping(); + app_register_iperf_hook_func(iperf_hook_show_wifi_stats); + + + printf("\n ==================================================\n"); + printf(" | Steps to test WiFi throughput |\n"); + printf(" | |\n"); + printf(" | 1. Print 'help' to gain overview of commands |\n"); + printf(" | 2. Configure device to station or soft-AP |\n"); + printf(" | 3. Setup WiFi connection |\n"); + printf(" | 4. Run iperf to test UDP/TCP RX/TX throughput |\n"); + printf(" | |\n"); + printf(" =================================================\n\n"); + + // start console REPL + ESP_ERROR_CHECK(esp_console_start_repl(repl)); +} diff --git a/examples/host_network_split__power_save/sdkconfig.defaults b/examples/host_network_split__power_save/sdkconfig.defaults new file mode 100644 index 00000000..21e5ea0c --- /dev/null +++ b/examples/host_network_split__power_save/sdkconfig.defaults @@ -0,0 +1,24 @@ +CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=4096 + +CONFIG_FREERTOS_UNICORE=n +CONFIG_FREERTOS_HZ=1000 + +CONFIG_ESP_INT_WDT=n +CONFIG_ESP_TASK_WDT_EN=n + +CONFIG_LWIP_IRAM_OPTIMIZATION=y +CONFIG_LWIP_TCPIP_TASK_PRIO=23 + +CONFIG_IPERF_TRAFFIC_TASK_PRIORITY=23 +CONFIG_IPERF_REPORT_TASK_PRIORITY=24 +CONFIG_COMPILER_OPTIMIZATION_PERF=y + +CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE=y + +# Enable Network Split +CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED=y + +#Enable Host power save +CONFIG_ESP_HOSTED_HOST_POWER_SAVE_ENABLED=y +CONFIG_ESP_HOSTED_HOST_DEEP_SLEEP_ALLOWED=y +#CONFIG_ESP_HOSTED_HOST_WAKEUP_GPIO=6 diff --git a/examples/host_network_split__power_save/sdkconfig.defaults.esp32 b/examples/host_network_split__power_save/sdkconfig.defaults.esp32 new file mode 100644 index 00000000..084ab233 --- /dev/null +++ b/examples/host_network_split__power_save/sdkconfig.defaults.esp32 @@ -0,0 +1,23 @@ +# +# ESP32-specific +# + +CONFIG_WIFI_RMT_STATIC_RX_BUFFER_NUM=16 +CONFIG_WIFI_RMT_DYNAMIC_RX_BUFFER_NUM=64 +CONFIG_WIFI_RMT_DYNAMIC_TX_BUFFER_NUM=64 +CONFIG_WIFI_RMT_AMPDU_TX_ENABLED=y +CONFIG_WIFI_RMT_TX_BA_WIN=32 +CONFIG_WIFI_RMT_AMPDU_RX_ENABLED=y +CONFIG_WIFI_RMT_RX_BA_WIN=32 + +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=65534 +CONFIG_LWIP_TCP_WND_DEFAULT=65534 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=64 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=64 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64 + +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y + +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=240 diff --git a/examples/host_network_split__power_save/sdkconfig.defaults.esp32c2 b/examples/host_network_split__power_save/sdkconfig.defaults.esp32c2 new file mode 100644 index 00000000..fdc4aed6 --- /dev/null +++ b/examples/host_network_split__power_save/sdkconfig.defaults.esp32c2 @@ -0,0 +1,26 @@ +# +# ESP32-C2 +# + +CONFIG_WIFI_RMT_STATIC_RX_BUFFER_NUM=14 +CONFIG_WIFI_RMT_DYNAMIC_RX_BUFFER_NUM=14 +CONFIG_WIFI_RMT_DYNAMIC_TX_BUFFER_NUM=18 +CONFIG_WIFI_RMT_AMPDU_TX_ENABLED=y +CONFIG_WIFI_RMT_TX_BA_WIN=16 +CONFIG_WIFI_RMT_AMPDU_RX_ENABLED=y +CONFIG_WIFI_RMT_RX_BA_WIN=14 + +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=7200 +CONFIG_LWIP_TCP_WND_DEFAULT=11520 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=32 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=32 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 + +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_120=y +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=120 + +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_ESPTOOLPY_FLASHFREQ_60M=y + +CONFIG_LWIP_TCPIP_CORE_LOCKING=y +CONFIG_LWIP_TCPIP_CORE_LOCKING_INPUT=y diff --git a/examples/host_network_split__power_save/sdkconfig.defaults.esp32c3 b/examples/host_network_split__power_save/sdkconfig.defaults.esp32c3 new file mode 100644 index 00000000..6c60e9d3 --- /dev/null +++ b/examples/host_network_split__power_save/sdkconfig.defaults.esp32c3 @@ -0,0 +1,26 @@ +# +# ESP32C3 +# + +CONFIG_WIFI_RMT_STATIC_RX_BUFFER_NUM=20 +CONFIG_WIFI_RMT_DYNAMIC_RX_BUFFER_NUM=40 +CONFIG_WIFI_RMT_DYNAMIC_TX_BUFFER_NUM=40 +CONFIG_WIFI_RMT_AMPDU_TX_ENABLED=y +CONFIG_WIFI_RMT_TX_BA_WIN=32 +CONFIG_WIFI_RMT_AMPDU_RX_ENABLED=y +CONFIG_WIFI_RMT_RX_BA_WIN=32 + +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=40960 +CONFIG_LWIP_TCP_WND_DEFAULT=40960 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=64 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=64 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64 + +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160 + +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_ESPTOOLPY_FLASHFREQ_80M=y + +CONFIG_LWIP_TCPIP_CORE_LOCKING=y +CONFIG_LWIP_TCPIP_CORE_LOCKING_INPUT=y diff --git a/examples/host_network_split__power_save/sdkconfig.defaults.esp32c5 b/examples/host_network_split__power_save/sdkconfig.defaults.esp32c5 new file mode 100644 index 00000000..4d15c8b7 --- /dev/null +++ b/examples/host_network_split__power_save/sdkconfig.defaults.esp32c5 @@ -0,0 +1,43 @@ +# +# ESP32C5-Specific +# +CONFIG_IDF_ENV_FPGA=n + +CONFIG_WIFI_RMT_STATIC_RX_BUFFER_NUM=20 +CONFIG_WIFI_RMT_DYNAMIC_RX_BUFFER_NUM=48 +CONFIG_WIFI_RMT_DYNAMIC_TX_BUFFER_NUM=48 +CONFIG_WIFI_RMT_AMPDU_TX_ENABLED=y +CONFIG_WIFI_RMT_TX_BA_WIN=32 +CONFIG_WIFI_RMT_AMPDU_RX_ENABLED=y +CONFIG_WIFI_RMT_RX_BA_WIN=22 + +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=41760 +CONFIG_LWIP_TCP_WND_DEFAULT=65535 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=48 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=64 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=48 +CONFIG_LWIP_IP_REASS_MAX_PBUFS=15 + +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_ESPTOOLPY_FLASHFREQ_80M=y + +# +# Wi-Fi +# +CONFIG_ESP_WIFI_ENABLE_WIFI_TX_STATS=y +CONFIG_ESP_WIFI_ENABLE_WIFI_RX_STATS=y +CONFIG_ESP_WIFI_ENABLE_WIFI_RX_MU_STATS=n +CONFIG_ESP_WIFI_ENABLE_DUMP_HESIGB=n +CONFIG_ESP_WIFI_ENABLE_DUMP_MU_CFO=n +CONFIG_ESP_WIFI_ENABLE_DUMP_CTRL_NDPA=n +CONFIG_ESP_WIFI_ENABLE_DUMP_CTRL_BFRP=n +CONFIG_ESP_WIFI_SLP_IRAM_OPT=n +CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION=n + +CONFIG_LWIP_TCPIP_CORE_LOCKING=y +CONFIG_LWIP_TCPIP_CORE_LOCKING_INPUT=y + +CONFIG_IPERF_DEF_TCP_TX_BUFFER_LEN=2880 diff --git a/examples/host_network_split__power_save/sdkconfig.defaults.esp32c6 b/examples/host_network_split__power_save/sdkconfig.defaults.esp32c6 new file mode 100644 index 00000000..0183b3dd --- /dev/null +++ b/examples/host_network_split__power_save/sdkconfig.defaults.esp32c6 @@ -0,0 +1,28 @@ +# +# ESP32C6-Specific +# + +CONFIG_WIFI_RMT_STATIC_RX_BUFFER_NUM=40 +CONFIG_WIFI_RMT_DYNAMIC_RX_BUFFER_NUM=60 +CONFIG_WIFI_RMT_DYNAMIC_TX_BUFFER_NUM=40 +CONFIG_WIFI_RMT_AMPDU_TX_ENABLED=y +CONFIG_WIFI_RMT_TX_BA_WIN=32 +CONFIG_WIFI_RMT_AMPDU_RX_ENABLED=y +CONFIG_WIFI_RMT_RX_BA_WIN=32 + +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=51200 +CONFIG_LWIP_TCP_WND_DEFAULT=65535 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=64 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=64 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64 + +CONFIG_LWIP_IP_REASS_MAX_PBUFS=15 + +CONFIG_ESP_WIFI_ENABLE_WIFI_RX_STATS=n +CONFIG_ESP_WIFI_ENABLE_WIFI_TX_STATS=n +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_ESPTOOLPY_FLASHFREQ_80M=y +CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION=y + +CONFIG_LWIP_TCPIP_CORE_LOCKING=y +CONFIG_LWIP_TCPIP_CORE_LOCKING_INPUT=y diff --git a/examples/host_network_split__power_save/sdkconfig.defaults.esp32c61 b/examples/host_network_split__power_save/sdkconfig.defaults.esp32c61 new file mode 100644 index 00000000..3f90fe0e --- /dev/null +++ b/examples/host_network_split__power_save/sdkconfig.defaults.esp32c61 @@ -0,0 +1,43 @@ +# +# ESP32C61-Specific +# +CONFIG_IDF_ENV_FPGA=n + +CONFIG_WIFI_RMT_STATIC_RX_BUFFER_NUM=20 +CONFIG_WIFI_RMT_DYNAMIC_RX_BUFFER_NUM=40 +CONFIG_WIFI_RMT_DYNAMIC_TX_BUFFER_NUM=36 +CONFIG_WIFI_RMT_AMPDU_TX_ENABLED=y +CONFIG_WIFI_RMT_TX_BA_WIN=32 +CONFIG_WIFI_RMT_AMPDU_RX_ENABLED=y +CONFIG_WIFI_RMT_RX_BA_WIN=20 + +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=25920 +CONFIG_LWIP_TCP_WND_DEFAULT=43200 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=48 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=64 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=48 +CONFIG_LWIP_IP_REASS_MAX_PBUFS=15 + +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_ESPTOOLPY_FLASHFREQ_80M=y + +# +# Wi-Fi +# +CONFIG_ESP_WIFI_ENABLE_WIFI_TX_STATS=y +CONFIG_ESP_WIFI_ENABLE_WIFI_RX_STATS=y +CONFIG_ESP_WIFI_ENABLE_WIFI_RX_MU_STATS=n +CONFIG_ESP_WIFI_ENABLE_DUMP_HESIGB=n +CONFIG_ESP_WIFI_ENABLE_DUMP_MU_CFO=n +CONFIG_ESP_WIFI_ENABLE_DUMP_CTRL_NDPA=n +CONFIG_ESP_WIFI_ENABLE_DUMP_CTRL_BFRP=n +CONFIG_ESP_WIFI_SLP_IRAM_OPT=n +CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION=n + +CONFIG_LWIP_TCPIP_CORE_LOCKING=y +CONFIG_LWIP_TCPIP_CORE_LOCKING_INPUT=y + +CONFIG_IPERF_DEF_TCP_TX_BUFFER_LEN=2880 diff --git a/examples/host_network_split__power_save/sdkconfig.defaults.esp32p4 b/examples/host_network_split__power_save/sdkconfig.defaults.esp32p4 new file mode 100644 index 00000000..ba68d0dd --- /dev/null +++ b/examples/host_network_split__power_save/sdkconfig.defaults.esp32p4 @@ -0,0 +1,23 @@ +# +# ESP32-P4 specific +# + +CONFIG_SLAVE_IDF_TARGET_ESP32C6=y +CONFIG_ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD=y + + +CONFIG_WIFI_RMT_STATIC_RX_BUFFER_NUM=16 +CONFIG_WIFI_RMT_DYNAMIC_RX_BUFFER_NUM=64 +CONFIG_WIFI_RMT_DYNAMIC_TX_BUFFER_NUM=64 +CONFIG_WIFI_RMT_AMPDU_TX_ENABLED=y +CONFIG_WIFI_RMT_TX_BA_WIN=32 +CONFIG_WIFI_RMT_AMPDU_RX_ENABLED=y +CONFIG_WIFI_RMT_RX_BA_WIN=32 + +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=65534 +CONFIG_LWIP_TCP_WND_DEFAULT=65534 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=64 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=64 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64 + +CONFIG_LWIP_TCP_SACK_OUT=y diff --git a/examples/host_network_split__power_save/sdkconfig.defaults.esp32s2 b/examples/host_network_split__power_save/sdkconfig.defaults.esp32s2 new file mode 100644 index 00000000..01799145 --- /dev/null +++ b/examples/host_network_split__power_save/sdkconfig.defaults.esp32s2 @@ -0,0 +1,30 @@ +# +# ESP32S2-specific +# + +CONFIG_WIFI_RMT_STATIC_RX_BUFFER_NUM=8 +CONFIG_WIFI_RMT_DYNAMIC_RX_BUFFER_NUM=24 +CONFIG_WIFI_RMT_DYNAMIC_TX_BUFFER_NUM=24 +CONFIG_WIFI_RMT_AMPDU_TX_ENABLED=y +CONFIG_WIFI_RMT_TX_BA_WIN=16 +CONFIG_WIFI_RMT_AMPDU_RX_ENABLED=y +CONFIG_WIFI_RMT_RX_BA_WIN=16 + +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=17280 +CONFIG_LWIP_TCP_WND_DEFAULT=28000 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=32 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=32 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 + +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=240 + +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_ESPTOOLPY_FLASHFREQ_80M=y + +CONFIG_ESP32S2_INSTRUCTION_CACHE_16KB=y +CONFIG_ESP32S2_INSTRUCTION_CACHE_LINE_16B=y +CONFIG_ESP32S2_INSTRUCTION_CACHE_WRAP=y + +CONFIG_LWIP_TCPIP_CORE_LOCKING=y +CONFIG_LWIP_TCPIP_CORE_LOCKING_INPUT=y diff --git a/examples/host_network_split__power_save/sdkconfig.defaults.esp32s3 b/examples/host_network_split__power_save/sdkconfig.defaults.esp32s3 new file mode 100644 index 00000000..73bdb029 --- /dev/null +++ b/examples/host_network_split__power_save/sdkconfig.defaults.esp32s3 @@ -0,0 +1,27 @@ +# +# ESP32S3-specific +# + +CONFIG_WIFI_RMT_STATIC_RX_BUFFER_NUM=16 +CONFIG_WIFI_RMT_DYNAMIC_RX_BUFFER_NUM=64 +CONFIG_WIFI_RMT_DYNAMIC_TX_BUFFER_NUM=64 +CONFIG_WIFI_RMT_AMPDU_TX_ENABLED=y +CONFIG_WIFI_RMT_TX_BA_WIN=32 +CONFIG_WIFI_RMT_AMPDU_RX_ENABLED=y +CONFIG_WIFI_RMT_RX_BA_WIN=32 + +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=65535 +CONFIG_LWIP_TCP_WND_DEFAULT=65535 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=64 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=64 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64 + +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=240 + +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_ESPTOOLPY_FLASHFREQ_80M=y + +CONFIG_ESP32S3_INSTRUCTION_CACHE_32KB=y +CONFIG_ESP32S3_INSTRUCTION_CACHE_LINE_32B=y +CONFIG_ESP32S3_INSTRUCTION_CACHE_WRAP=y diff --git a/slave/README.md b/slave/README.md new file mode 100644 index 00000000..48c5f324 --- /dev/null +++ b/slave/README.md @@ -0,0 +1,133 @@ +# ESP-Hosted-MCU Slave example + +This document details the **ESP-Hosted MCU Slave Example**, demonstrating the slave firmware that provides Wi-Fi and Bluetooth connectivity to host MCUs via ESP32 series co-processors. + +## Overview + +The slave firmware enables host MCUs to utilize the Wi-Fi and Bluetooth capabilities of ESP32 series chips through **SDIO, SPI, or UART** interfaces. This minimal example focuses on basic connectivity; however, advanced features like Network Split and Host Power Save can be configured for optimized network traffic and power management. + +## Supported Co-processors and Transports + +The following table summarizes the supported co-processors and transport communication buses between the slave and host. This example specifically utilizes **SDIO** as the transport and **ESP32-C6** as the slave co-processor. + +| Transport Supported | SDIO | SPI Full-Duplex | SPI Half-Duplex | UART | +|---|:---:|:---:|:---:|:---:| +| **Co-Processors Supported** | | | | | +| ESP32 | ✓ | ✓ | × | ✓ | +| ESP32-C2 | × | ✓ | ✓ | ✓ | +| ESP32-C3 | × | ✓ | ✓ | ✓ | +| ESP32-C5 | ✓ | ✓ | ✓ | ✓ | +| ESP32-C6/C61 | ✓ | ✓ | ✓ | ✓ | +| ESP32-S2 | × | ✓ | ✓ | ✓ | +| ESP32-S3 | × | ✓ | ✓ | ✓ | + + +## Example Hardware Connections + +This example uses the SDIO interface. The default SDIO pin connections for the ESP32-C6 slave are as follows: + +### SDIO Interface (Default for ESP32-P4-Function-EV-Board) + +| Signal | GPIO | Notes | +|:-------|:-----|:------------| +| CLK | 19 | Clock | +| CMD | 18 | Command | +| D0 | 20 | Data 0 | +| D1 | 21 | Data 1 | +| D2 | 22 | Data 2 | +| D3 | 23 | Data 3 | +| Reset | EN | Reset input | + +For detailed SDIO hardware connection requirements, refer to the official documentation at [https://github.com/espressif/esp-hosted-mcu/blob/main/docs/sdio.md\#3-hardware-considerations](https://github.com/espressif/esp-hosted-mcu/blob/main/docs/sdio.md#3-hardware-considerations). The GPIO pins and transport can be configured as explained in later sections. + + +## Quick Start Guide + +### 1. Obtain the Slave Example + +Execute the following commands to retrieve the slave example: + +```bash +idf.py create-project-from-example "espressif/esp_hosted:slave" +cd slave +``` + +### 2. Set Up ESP-IDF + +It is presumed that ESP-IDF has already been set up. If not, please proceed with the setup using one of the following options: + +#### Option 1: Installer Way + + * **Windows** + + * Install and set up ESP-IDF on Windows as documented in the [Standard Setup of Toolchain for Windows](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/windows-setup.html). + * Use the ESP-IDF [Powershell Command Prompt](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/windows-setup.html#using-the-command-prompt) for subsequent commands. + + * **Linux or macOS** + + * For bash: + ```bash + bash docs/setup_esp_idf__latest_stable__linux_macos.sh + ``` + * For fish: + ```fish + fish docs/setup_esp_idf__latest_stable__linux_macos.fish + ``` + +#### Option 2: Manual Way + +Please follow the [ESP-IDF Get Started Guide](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html) for manual installation. + +### 3. Set Target + +Set the target co-processor using the command below: + +```bash +idf.py set-target esp32c6 +``` + +> [!TIP] +> You can **customize** the target co-processor by replacing `esp32c6` with your desired ESP32 series chip. + +### 4. Customizing Configuration: Transport and Features + +This is optional step. By default, SDIO transport is pre-configured. + +You can access the configuration menu to choose desired configuration and features using: + +```bash +idf.py menuconfig +``` + +The default configuration tree looks like this: +``` +Example Configuration +└── Bus Config in between Host and Co-processor + └── Transport layer + └── Select transport: SDIO/SPI-Full-Duplex/SPI-Half-Duplex/UART + └── +``` + + +> [!TIP] +> You can optinally **customize** the transport layer (SDIO, SPI Full-Duplex, SPI Half-Duplex, or UART), their GPIOs in use and other optional features within this menu. + +### 5. Build and Flash + +Build and flash the firmware to your device using the commands below, replacing `` with your device's serial port: + +```bash +idf.py build +idf.py -p flash monitor +``` + +> [!TIP] +> You can **customize** the serial port (``) to match your specific hardware connection. + + +## References + +- [ESP-Hosted MCU Documentation](../../README.md) +- [ESP32-P4-Function-EV-Board Setup](../../docs/esp32_p4_function_ev_board.md) +- [Transport Layer Documentation](../../docs/) +- [Troubleshooting Guide](../../docs/troubleshooting.md) From b2f75586c4b4984a5ac5c7ff8b695417effe36f6 Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Thu, 31 Jul 2025 02:27:48 +0000 Subject: [PATCH 060/114] Edit idf_component.yml --- idf_component.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/idf_component.yml b/idf_component.yml index e6d428fa..3fbdc561 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.1.4" +version: "2.1.5" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: From 4094d1045ca3d04e42480c34ca7c17a714699fa1 Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Tue, 22 Jul 2025 11:19:07 +0800 Subject: [PATCH 061/114] feature(fw_version_precommit_ci) Added version checking - added co-processor version to init event passed to host - compared co-processor and host version and output a warning if they don't match (major.minor) - updated RPC code to return a ERR_NOT_SUPPORTED if RPC command is not supported - added python script to check and update version headers if different for component version - added prebuild check in CI to check version information - removed cmake auto generation of slave version header from component version - removed generation of version text file during component upload - updated YAML spacing rules in editorconfig --- .editorconfig | 5 + .github/workflows/upload_component.yml | 4 - .gitignore | 2 - .gitlab-ci.yml | 14 ++ .pre-commit-config.yaml | 15 ++ common/transport/esp_hosted_transport_init.h | 6 + host/drivers/rpc/core/rpc_core.c | 10 +- host/drivers/rpc/core/rpc_rsp.c | 6 +- host/drivers/rpc/wrap/rpc_wrap.c | 8 +- host/drivers/transport/transport_drv.c | 50 +++++ host/esp_hosted.h | 1 + host/esp_hosted_host_fw_ver.h | 11 ++ idf_component.yml | 2 +- slave/CMakeLists.txt | 40 ++-- slave/ExtractVersion.cmake | 43 ----- slave/main/esp_hosted_coprocessor.c | 2 +- slave/main/esp_hosted_coprocessor_fw_ver.h | 11 ++ slave/main/sdio_slave_api.c | 16 ++ slave/main/slave_control.c | 13 +- slave/main/spi_hd_slave_api.c | 15 ++ slave/main/spi_slave_api.c | 15 ++ slave/main/uart_slave_api.c | 15 ++ tools/check_copyright_config.yaml | 35 ++++ tools/check_fw_versions.py | 184 +++++++++++++++++++ 24 files changed, 441 insertions(+), 82 deletions(-) create mode 100644 .pre-commit-config.yaml create mode 100644 host/esp_hosted_host_fw_ver.h delete mode 100644 slave/ExtractVersion.cmake create mode 100644 slave/main/esp_hosted_coprocessor_fw_ver.h create mode 100644 tools/check_copyright_config.yaml create mode 100755 tools/check_fw_versions.py diff --git a/.editorconfig b/.editorconfig index d394d9db..10b38431 100644 --- a/.editorconfig +++ b/.editorconfig @@ -17,3 +17,8 @@ insert_final_newline = true # Some Mermaid diagram commands need to end with a trailing whitespace in Markdown files [*.md] trim_trailing_whitespace = false + +# Use two spaces for YAML files +[{*.yml,*.yaml}] +indent_style = space +indent_size = 2 diff --git a/.github/workflows/upload_component.yml b/.github/workflows/upload_component.yml index 9337483d..269ef361 100644 --- a/.github/workflows/upload_component.yml +++ b/.github/workflows/upload_component.yml @@ -15,10 +15,6 @@ jobs: - name : Copy common dir into slave run: cp -r common slave/main/ - - name : Extract and save version info - run: | - sed -n 's/^version: "\(.*\)"/\1/p' idf_component.yml > slave/main/coprocessor_fw_version.txt - - name: Upload component to the component registry uses: espressif/upload-components-ci-action@v2 with: diff --git a/.gitignore b/.gitignore index 6edbbdf3..030c24ef 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,3 @@ dependencies.lock managed_components sdkconfig sdkconfig.old -slave/main/coprocessor_fw_version.h -slave/main/coprocessor_fw_version.txt diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a2aafef9..1d94d248 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,10 +1,20 @@ stages: + - pre - build_coprocessor - build before_script: - git submodule update --init --recursive +.check_ver_template: + stage: pre + tags: + - build + script: + - source ${IDF_PATH}/export.sh + # check the exported fw versions + - python tools/check_fw_versions.py + .build_template_coprocessor: stage: build_coprocessor tags: @@ -93,6 +103,10 @@ before_script: # Rename back, since post scripts expect the original name - cd ${OVERRIDE_PATH} && cd .. && mv esp_hosted esp_hosted_mcu +check_ver: + extends: .check_ver_template + image: espressif/idf:latest + build_idf_v5.3: extends: .build_template image: espressif/idf:${IDF_VER} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000..fc2965cc --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,15 @@ +repos: + - repo: local + hooks: + - id: version-checker + name: ESP-Hosted Version Checker + entry: tools/check_fw_versions.py + language: python + args: [ "--update" ] + always_run: true + pass_filenames: false + - repo: https://github.com/espressif/check-copyright/ + rev: v1.1.1 + hooks: + - id: check-copyright + args: ['--config', 'tools/check_copyright_config.yaml'] diff --git a/common/transport/esp_hosted_transport_init.h b/common/transport/esp_hosted_transport_init.h index dd248f5b..d7ac7444 100644 --- a/common/transport/esp_hosted_transport_init.h +++ b/common/transport/esp_hosted_transport_init.h @@ -57,6 +57,12 @@ typedef enum { ESP_PRIV_RX_Q_SIZE, ESP_PRIV_TX_Q_SIZE, ESP_PRIV_CAP_EXT, // extended capability (4 bytes) + ESP_PRIV_FIRMWARE_VERSION, } ESP_PRIV_TAG_TYPE; +/** + * Macro to convert version number into an integer + */ +#define ESP_HOSTED_VERSION_VAL(major, minor, patch) ((major << 16) | (minor << 8) | (patch)) + #endif diff --git a/host/drivers/rpc/core/rpc_core.c b/host/drivers/rpc/core/rpc_core.c index 5c7f8c83..bdeeac90 100644 --- a/host/drivers/rpc/core/rpc_core.c +++ b/host/drivers/rpc/core/rpc_core.c @@ -648,7 +648,8 @@ static int call_async_resp_callback(ctrl_cmd_t *app_resp) { int i; - if ((app_resp->msg_id <= RPC_ID__Resp_Base) || + // msg_id of RPC_ID__Resp_Base now means Invalid RPC Request + if ((app_resp->msg_id < RPC_ID__Resp_Base) || (app_resp->msg_id >= RPC_ID__Resp_Max)) { return MSG_ID_OUT_OF_ORDER; } @@ -671,7 +672,8 @@ static int post_sync_resp_sem(ctrl_cmd_t *app_resp) { int i; - if ((app_resp->msg_id <= RPC_ID__Resp_Base) || + // msg_id of RPC_ID__Resp_Base now means Invalid RPC Request + if ((app_resp->msg_id < RPC_ID__Resp_Base) || (app_resp->msg_id >= RPC_ID__Resp_Max)) { return MSG_ID_OUT_OF_ORDER; } @@ -812,7 +814,8 @@ static int is_async_resp_callback_available(ctrl_cmd_t *app_resp) { int i; - if ((app_resp->msg_id <= RPC_ID__Resp_Base) || (app_resp->msg_id >= RPC_ID__Resp_Max)) { + // msg_id of RPC_ID__Resp_Base now means Invalid RPC Request + if ((app_resp->msg_id < RPC_ID__Resp_Base) || (app_resp->msg_id >= RPC_ID__Resp_Max)) { ESP_LOGE(TAG, "resp id[0x%x] out of range", app_resp->msg_id); return MSG_ID_OUT_OF_ORDER; } @@ -1082,7 +1085,6 @@ int rpc_core_init(void) return FAILURE; } - int rpc_core_start(void) { set_rpc_lib_state(RPC_LIB_STATE_READY); diff --git a/host/drivers/rpc/core/rpc_rsp.c b/host/drivers/rpc/core/rpc_rsp.c index cdb50dc9..eaa0369d 100644 --- a/host/drivers/rpc/core/rpc_rsp.c +++ b/host/drivers/rpc/core/rpc_rsp.c @@ -134,7 +134,11 @@ int rpc_parse_rsp(Rpc *rpc_msg, ctrl_cmd_t *app_resp) /* 3. parse Rpc into ctrl_cmd_t */ switch (rpc_msg->msg_id) { - + case RPC_ID__Resp_Base : { + // RPC Request not supported + app_resp->resp_event_status = ESP_ERR_NOT_SUPPORTED; + goto fail_parse_rpc_msg; + } case RPC_ID__Resp_GetMACAddress : { RPC_FAIL_ON_NULL(resp_get_mac_address); RPC_ERR_IN_RESP(resp_get_mac_address); diff --git a/host/drivers/rpc/wrap/rpc_wrap.c b/host/drivers/rpc/wrap/rpc_wrap.c index a768c91d..abb5e61c 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.c +++ b/host/drivers/rpc/wrap/rpc_wrap.c @@ -374,7 +374,8 @@ int rpc_rsp_callback(ctrl_cmd_t * app_resp) goto fail_resp; } - if ((app_resp->msg_id <= RPC_ID__Resp_Base) || (app_resp->msg_id >= RPC_ID__Resp_Max)) { + // msg_id of RPC_ID__Resp_Base now means Invalid RPC Request + if ((app_resp->msg_id < RPC_ID__Resp_Base) || (app_resp->msg_id >= RPC_ID__Resp_Max)) { ESP_LOGE(TAG, "Response Msg ID[0x%x] is not correct",app_resp->msg_id); goto fail_resp; } @@ -385,7 +386,10 @@ int rpc_rsp_callback(ctrl_cmd_t * app_resp) } switch(app_resp->msg_id) { - + case RPC_ID__Resp_Base : { + ESP_LOGV(TAG, "RPC Request is not supported"); + break; + } case RPC_ID__Resp_GetMACAddress: { ESP_LOGV(TAG, "mac address is [" MACSTR "]", MAC2STR(app_resp->u.wifi_mac.mac)); break; diff --git a/host/drivers/transport/transport_drv.c b/host/drivers/transport/transport_drv.c index e7c7690e..73873019 100644 --- a/host/drivers/transport/transport_drv.c +++ b/host/drivers/transport/transport_drv.c @@ -21,6 +21,7 @@ #include "esp_hosted_transport.h" #include "esp_hosted_transport_init.h" #include "esp_hosted_transport_config.h" +#include "esp_hosted_host_fw_ver.h" #include "stats.h" #include "esp_log.h" #include "esp_hosted_log.h" @@ -548,6 +549,43 @@ static void verify_host_config_for_slave(uint8_t chip_type) } } +/** return values: + * - 0 if versions as the same + * - -1 if host version is smaller than slave version + * - 1 if host version is bigger than slave version + */ +static int compare_fw_version(uint32_t slave_version) +{ + uint32_t host_version = ESP_HOSTED_VERSION_VAL(ESP_HOSTED_VERSION_MAJOR_1, + ESP_HOSTED_VERSION_MINOR_1, + ESP_HOSTED_VERSION_PATCH_1); + + // mask out patch level + // compare major.minor only + slave_version &= 0xFFFFFF00; + host_version &= 0xFFFFFF00; + + if (host_version == slave_version) { + // versions match + return 0; + } else if (host_version > slave_version) { + // host version > slave version + ESP_LOGW(TAG, "=== ESP-Hosted Version Warning ==="); + printf("Version on Host is NEWER than version on co-processor\n"); + printf("RPC requests sent by host may encounter timeout errors\n"); + printf("or may not be supported by co-processor\n"); + ESP_LOGW(TAG, "=== ESP-Hosted Version Warning ==="); + return -1; + } else { + // host version < slave version + ESP_LOGW(TAG, "=== ESP-Hosted Version Warning ==="); + printf("Version on Host is OLDER than version on co-processor\n"); + printf("Host may not be compatible with co-processor\n"); + ESP_LOGW(TAG, "=== ESP-Hosted Version Warning ==="); + return 1; + } +} + esp_err_t send_slave_config(uint8_t host_cap, uint8_t firmware_chip_id, uint8_t raw_tp_direction, uint8_t low_thr_thesh, uint8_t high_thr_thesh) { @@ -630,6 +668,7 @@ static int process_init_event(uint8_t *evt_buf, uint16_t len) uint8_t *pos; uint8_t raw_tp_config = H_TEST_RAW_TP_DIR; uint32_t ext_cap = 0; + uint32_t slave_fw_version = 0; if (!evt_buf) return ESP_FAIL; @@ -680,6 +719,14 @@ static int process_init_event(uint8_t *evt_buf, uint16_t len) ESP_LOGD(TAG, "slave rx queue size: %u", *(pos + 2)); } else if (*pos == ESP_PRIV_TX_Q_SIZE) { ESP_LOGD(TAG, "slave tx queue size: %u", *(pos + 2)); + } else if (*pos == ESP_PRIV_FIRMWARE_VERSION) { + // fw_version sent as a little-endian uint32_t + slave_fw_version = + *(pos + 2) | + (*(pos + 3) << 8) | + (*(pos + 4) << 16) | + (*(pos + 5) << 24); + ESP_LOGD(TAG, "slave fw version: 0x%08" PRIx32, slave_fw_version); } else { ESP_LOGD(TAG, "Unsupported EVENT: %2x", *pos); } @@ -687,6 +734,9 @@ static int process_init_event(uint8_t *evt_buf, uint16_t len) len_left -= (tag_len+2); } + // if ESP_PRIV_FIRMWARE_VERSION was not received, slave version will be 0.0.0 + compare_fw_version(slave_fw_version); + if ((chip_type != ESP_PRIV_FIRMWARE_CHIP_ESP32) && (chip_type != ESP_PRIV_FIRMWARE_CHIP_ESP32S2) && (chip_type != ESP_PRIV_FIRMWARE_CHIP_ESP32S3) && diff --git a/host/esp_hosted.h b/host/esp_hosted.h index 31c77680..1cdaab8c 100644 --- a/host/esp_hosted.h +++ b/host/esp_hosted.h @@ -15,6 +15,7 @@ extern "C" { #include "esp_hosted_bt_config.h" #include "esp_hosted_transport_config.h" #include "esp_hosted_api_types.h" +#include "esp_hosted_host_fw_ver.h" #include "esp_hosted_ota.h" typedef struct esp_hosted_transport_config esp_hosted_config_t; diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h new file mode 100644 index 00000000..8cbb13d7 --- /dev/null +++ b/host/esp_hosted_host_fw_ver.h @@ -0,0 +1,11 @@ +/* + * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +#ifndef __ESP_HOSTED_HOST_FW_VERSION_H__ +#define __ESP_HOSTED_HOST_FW_VERSION_H__ +#define ESP_HOSTED_VERSION_MAJOR_1 2 +#define ESP_HOSTED_VERSION_MINOR_1 1 +#define ESP_HOSTED_VERSION_PATCH_1 6 +#endif diff --git a/idf_component.yml b/idf_component.yml index 3fbdc561..8d66570e 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.1.5" +version: "2.1.6" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/CMakeLists.txt b/slave/CMakeLists.txt index 09067876..bebd5273 100644 --- a/slave/CMakeLists.txt +++ b/slave/CMakeLists.txt @@ -13,26 +13,6 @@ set(COMPONENTS esp_timer esptool_py bootloader main nvs_flash esp_rom esp_wifi p project(network_adapter) idf_build_set_property(COMPILE_OPTIONS "-fdiagnostics-color=always" APPEND) -### add custom dependency for generated version header file -### reference: https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/build-system.html#source-code-generation -if(EXISTS "${PROJECT_DIR}/main/coprocessor_fw_version.txt") - add_custom_command(OUTPUT "${PROJECT_DIR}/main/coprocessor_fw_version.h" - COMMAND ${CMAKE_COMMAND} -P "${PROJECT_DIR}/ExtractVersion.cmake" - DEPENDS "${PROJECT_DIR}/main/coprocessor_fw_version.txt" - VERBATIM) -elseif(EXISTS "${PROJECT_DIR}/../idf_component.yml") - add_custom_command(OUTPUT "${PROJECT_DIR}/main/coprocessor_fw_version.h" - COMMAND ${CMAKE_COMMAND} -P "${PROJECT_DIR}/ExtractVersion.cmake" - DEPENDS "${PROJECT_DIR}/../idf_component.yml" - VERBATIM) -else() - message(FATAL_ERROR "***** coprocessor_fw_version.txt and idf_component.yml NOT found.\nUnable to generate comprocessor fw version info to build") -endif() - -add_custom_target(version_header DEPENDS "${PROJECT_DIR}/main/coprocessor_fw_version.h") -add_dependencies(${PROJECT_NAME}.elf version_header) - - if(EXISTS "${PROJECT_DIR}/../common/esp_hosted_lwip_src_port_hook.h") idf_component_get_property(lwip lwip COMPONENT_LIB) if(TARGET ${lwip}) @@ -45,3 +25,23 @@ if(TARGET ${lwip}) endif() endif() endif() + +### read and display FW Version +file(READ "${CMAKE_CURRENT_LIST_DIR}/main/esp_hosted_coprocessor_fw_ver.h" HEADER_CONTENTS) +set(PROJECT_VERSION_REGEX "#define[ \t]+PROJECT_VERSION_MAJOR_1[ \t]+([0-9]+)[ \t\n]+#define[ \t]+PROJECT_VERSION_MINOR_1[ \t]+([0-9]+)[ \t\n]+#define[ \t]+PROJECT_VERSION_PATCH_1[ \t]+([0-9]+)") +string(REGEX MATCH "${PROJECT_VERSION_REGEX}" PROJECT_VERSION_MATCH "${HEADER_CONTENTS}") + +if(PROJECT_VERSION_MATCH) + set(PROJECT_VERSION_MAJOR_1 "${CMAKE_MATCH_1}") + set(PROJECT_VERSION_MINOR_1 "${CMAKE_MATCH_2}") + set(PROJECT_VERSION_PATCH_1 "${CMAKE_MATCH_3}") + + # Construct project version + set(PROJECT_VER "${PROJECT_VERSION_MAJOR_1}.${PROJECT_VERSION_MINOR_1}.${PROJECT_VERSION_PATCH_1}") + + message(*************************************************************************************) + message(" Building ESP-Hosted-MCU FW :: ${PROJECT_VER} ") + message(*************************************************************************************) +else() + message(FATAL_ERROR "Failed to read project version from main/esp_hosted_coprocessor_fw_ver.h") +endif() diff --git a/slave/ExtractVersion.cmake b/slave/ExtractVersion.cmake deleted file mode 100644 index 6d77c044..00000000 --- a/slave/ExtractVersion.cmake +++ /dev/null @@ -1,43 +0,0 @@ -### if code is from Component Registry, generate from coprocessor_fw_version.txt -### if code is from git, generate from top level idf_component.yml - -if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/main/coprocessor_fw_version.txt") - file(READ "${CMAKE_CURRENT_LIST_DIR}/main/coprocessor_fw_version.txt" VERSION_CONTENTS) - set(VERSION_REGEX "^([0-9]+).([0-9]+).([0-9]+)") - string(REGEX MATCH "${VERSION_REGEX}" VERSION_MATCH "${VERSION_CONTENTS}") - if(VERSION_MATCH) - set(VERSION_GENERATOR "coprocessor_fw_version.txt") - else() - message(FATAL_ERROR "version info not found in coprocessor_fw_version.txt") - endif() -elseif(EXISTS "${CMAKE_CURRENT_LIST_DIR}/../idf_component.yml") - file(READ "${CMAKE_CURRENT_LIST_DIR}/../idf_component.yml" VERSION_CONTENTS) - set(VERSION_REGEX "^version: \"([0-9]+).([0-9]+).([0-9]+)\"") - string(REGEX MATCH "${VERSION_REGEX}" VERSION_MATCH "${VERSION_CONTENTS}") - if(VERSION_MATCH) - set(VERSION_GENERATOR "idf_component.yml") - else() - message(FATAL_ERROR "version info not found in idf_component.yml") - endif() -else() - message(FATAL_ERROR "idf_component.yml not found") -endif() - -# generate header file from the version info -file(WRITE "${CMAKE_CURRENT_LIST_DIR}/main/coprocessor_fw_version.h" - "/* this is a generated file - do not modify\n" - " * generated from ${VERSION_GENERATOR} */\n" - "#ifndef __COPROCESSOR_FW_VERSION_H__\n" - "#define __COPROCESSOR_FW_VERSION_H__\n" - "#define PROJECT_VERSION_MAJOR_1 ${CMAKE_MATCH_1}\n" - "#define PROJECT_VERSION_MINOR_1 ${CMAKE_MATCH_2}\n" - "#define PROJECT_VERSION_PATCH_1 ${CMAKE_MATCH_3}\n" - "#endif\n") - -set(PROJECT_VERSION_MAJOR_1 "${CMAKE_MATCH_1}") -set(PROJECT_VERSION_MINOR_1 "${CMAKE_MATCH_2}") -set(PROJECT_VERSION_PATCH_1 "${CMAKE_MATCH_3}") - -message(*************************************************************************************) -message(" Building ESP-Hosted-MCU FW :: ${PROJECT_VERSION_MAJOR_1}.${PROJECT_VERSION_MINOR_1}.${PROJECT_VERSION_PATCH_1} ") -message(*************************************************************************************) diff --git a/slave/main/esp_hosted_coprocessor.c b/slave/main/esp_hosted_coprocessor.c index 299c7496..efaa5d45 100644 --- a/slave/main/esp_hosted_coprocessor.c +++ b/slave/main/esp_hosted_coprocessor.c @@ -40,7 +40,7 @@ #include "esp_timer.h" #include "mempool.h" -#include "coprocessor_fw_version.h" +#include "esp_hosted_coprocessor_fw_ver.h" #include "esp_hosted_cli.h" #include "host_power_save.h" diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h new file mode 100644 index 00000000..84e3013c --- /dev/null +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -0,0 +1,11 @@ +/* + * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +#ifndef __ESP_HOSTED_COPROCESSOR_FW_VER_H__ +#define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ +#define PROJECT_VERSION_MAJOR_1 2 +#define PROJECT_VERSION_MINOR_1 1 +#define PROJECT_VERSION_PATCH_1 6 +#endif diff --git a/slave/main/sdio_slave_api.c b/slave/main/sdio_slave_api.c index 84be96a6..06555465 100644 --- a/slave/main/sdio_slave_api.c +++ b/slave/main/sdio_slave_api.c @@ -31,6 +31,7 @@ #include "esp_hosted_transport.h" #include "esp_hosted_transport_init.h" #include "host_power_save.h" +#include "esp_hosted_coprocessor_fw_ver.h" //#define SIMPLIFIED_SDIO_SLAVE 1 #define SDIO_DRIVER_TX_QUEUE_SIZE CONFIG_ESP_SDIO_TX_Q_SIZE @@ -277,6 +278,21 @@ void generate_startup_event(uint8_t cap, uint32_t ext_cap) #else *pos = 0; pos++;len++; #endif + + // convert fw version into a uint32_t + uint32_t fw_version = ESP_HOSTED_VERSION_VAL(PROJECT_VERSION_MAJOR_1, + PROJECT_VERSION_MINOR_1, + PROJECT_VERSION_PATCH_1); + + // send fw version as a little-endian uint32_t + *pos = ESP_PRIV_FIRMWARE_VERSION; pos++;len++; + *pos = LENGTH_4_BYTE; pos++;len++; + // send fw_version as a little endian 32bit value + *pos = (fw_version & 0xff); pos++;len++; + *pos = (fw_version >> 8) & 0xff; pos++;len++; + *pos = (fw_version >> 16) & 0xff; pos++;len++; + *pos = (fw_version >> 24) & 0xff; pos++;len++; + /* TLVs end */ event->event_len = len; diff --git a/slave/main/slave_control.c b/slave/main/slave_control.c index 792bc4f7..6ac5755e 100644 --- a/slave/main/slave_control.c +++ b/slave/main/slave_control.c @@ -27,14 +27,13 @@ #include "esp_hosted_bitmasks.h" #include "slave_wifi_config.h" #include "esp_hosted_log.h" +#include "esp_hosted_coprocessor_fw_ver.h" /* Slave-side: Always support reserved field decoding for maximum compatibility * The host may or may not have CONFIG_ESP_HOSTED_DECODE_WIFI_RESERVED_FIELD enabled */ #define H_DECODE_WIFI_RESERVED_FIELD 1 -#include "coprocessor_fw_version.h" - #ifdef CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED #include "esp_check.h" #include "lwip/inet.h" @@ -3017,6 +3016,7 @@ static esp_err_t esp_rpc_command_dispatcher( if ((req->msg_id <= RPC_ID__Req_Base) || (req->msg_id >= RPC_ID__Req_Max)) { ESP_LOGE(TAG, "Invalid command request lookup"); + goto err_not_supported; } ESP_LOGI(TAG, "Received Req [0x%x]", req->msg_id); @@ -3024,15 +3024,20 @@ static esp_err_t esp_rpc_command_dispatcher( req_index = lookup_req_handler(req->msg_id); if (req_index < 0) { ESP_LOGE(TAG, "Invalid command handler lookup"); - return ESP_FAIL; + goto err_not_supported; } ret = req_table[req_index].command_handler(req, resp, priv_data); if (ret) { ESP_LOGE(TAG, "Error executing command handler"); - return ESP_FAIL; + goto err_cmd_error; } + return ESP_OK; + err_not_supported: + // response ID Resp_Base means RPC Request was not supported + resp->msg_id = RPC_ID__Resp_Base; + err_cmd_error: return ESP_OK; } diff --git a/slave/main/spi_hd_slave_api.c b/slave/main/spi_hd_slave_api.c index 47d39b85..2a6325c5 100644 --- a/slave/main/spi_hd_slave_api.c +++ b/slave/main/spi_hd_slave_api.c @@ -31,6 +31,7 @@ #include "esp_hosted_transport.h" #include "esp_hosted_transport_init.h" #include "esp_hosted_transport_spi_hd.h" +#include "esp_hosted_coprocessor_fw_ver.h" #include "esp_log.h" static const char TAG[] = "SPI_HD_DRIVER"; @@ -881,6 +882,20 @@ void generate_startup_event(uint8_t cap, uint32_t ext_cap) *pos = LENGTH_1_BYTE; pos++;len++; *pos = SPI_HD_QUEUE_SIZE; pos++;len++; + // convert fw version into a uint32_t + uint32_t fw_version = ESP_HOSTED_VERSION_VAL(PROJECT_VERSION_MAJOR_1, + PROJECT_VERSION_MINOR_1, + PROJECT_VERSION_PATCH_1); + + // send fw version as a little-endian uint32_t + *pos = ESP_PRIV_FIRMWARE_VERSION; pos++;len++; + *pos = LENGTH_4_BYTE; pos++;len++; + // send fw_version as a little endian 32bit value + *pos = (fw_version & 0xff); pos++;len++; + *pos = (fw_version >> 8) & 0xff; pos++;len++; + *pos = (fw_version >> 16) & 0xff; pos++;len++; + *pos = (fw_version >> 24) & 0xff; pos++;len++; + /* TLVs end */ event->event_len = len; diff --git a/slave/main/spi_slave_api.c b/slave/main/spi_slave_api.c index 529b65ea..6f9db3b7 100644 --- a/slave/main/spi_slave_api.c +++ b/slave/main/spi_slave_api.c @@ -23,6 +23,7 @@ #include "host_power_save.h" #include "esp_hosted_interface.h" #include "slave_wifi_config.h" +#include "esp_hosted_coprocessor_fw_ver.h" static const char TAG[] = "SPI_DRIVER"; /* SPI settings */ @@ -304,6 +305,20 @@ void generate_startup_event(uint8_t cap, uint32_t ext_cap) *pos = LENGTH_1_BYTE; pos++;len++; *pos = SPI_TX_QUEUE_SIZE; pos++;len++; + // convert fw version into a uint32_t + uint32_t fw_version = ESP_HOSTED_VERSION_VAL(PROJECT_VERSION_MAJOR_1, + PROJECT_VERSION_MINOR_1, + PROJECT_VERSION_PATCH_1); + + // send fw version as a little-endian uint32_t + *pos = ESP_PRIV_FIRMWARE_VERSION; pos++;len++; + *pos = LENGTH_4_BYTE; pos++;len++; + // send fw_version as a little endian 32bit value + *pos = (fw_version & 0xff); pos++;len++; + *pos = (fw_version >> 8) & 0xff; pos++;len++; + *pos = (fw_version >> 16) & 0xff; pos++;len++; + *pos = (fw_version >> 24) & 0xff; pos++;len++; + /* TLVs end */ event->event_len = len; diff --git a/slave/main/uart_slave_api.c b/slave/main/uart_slave_api.c index 99433911..1cfc4d91 100644 --- a/slave/main/uart_slave_api.c +++ b/slave/main/uart_slave_api.c @@ -32,6 +32,7 @@ #include "esp_hosted_transport.h" #include "esp_hosted_transport_init.h" #include "esp_hosted_header.h" +#include "esp_hosted_coprocessor_fw_ver.h" #define HOSTED_UART CONFIG_ESP_UART_PORT #define HOSTED_UART_GPIO_TX CONFIG_ESP_UART_PIN_TX @@ -663,6 +664,20 @@ void generate_startup_event(uint8_t cap, uint32_t ext_cap) *pos = LENGTH_1_BYTE; pos++;len++; *pos = HOSTED_UART_TX_QUEUE_SIZE; pos++;len++; + // convert fw version into a uint32_t + uint32_t fw_version = ESP_HOSTED_VERSION_VAL(PROJECT_VERSION_MAJOR_1, + PROJECT_VERSION_MINOR_1, + PROJECT_VERSION_PATCH_1); + + // send fw version as a little-endian uint32_t + *pos = ESP_PRIV_FIRMWARE_VERSION; pos++;len++; + *pos = LENGTH_4_BYTE; pos++;len++; + // send fw_version as a little endian 32bit value + *pos = (fw_version & 0xff); pos++;len++; + *pos = (fw_version >> 8) & 0xff; pos++;len++; + *pos = (fw_version >> 16) & 0xff; pos++;len++; + *pos = (fw_version >> 24) & 0xff; pos++;len++; + /* TLVs end */ event->event_len = len; diff --git a/tools/check_copyright_config.yaml b/tools/check_copyright_config.yaml new file mode 100644 index 00000000..2c567a62 --- /dev/null +++ b/tools/check_copyright_config.yaml @@ -0,0 +1,35 @@ +# don't modify this section! +DEFAULT: + perform_check: yes # should the check be performed? + # Sections setting this to 'no' don't need to include any other options as they are ignored + # When a file is using a section with the option set to 'no', no checks are performed. + + # what licenses (or license expressions) are allowed for files in this section + # when setting this option in a section, you need to list all the allowed licenses + allowed_licenses: + - Apache-2.0 + license_for_new_files: Apache-2.0 # license to be used when inserting a new copyright notice + new_notice_c: | # notice for new C, CPP, H, HPP and LD files + /* + * SPDX-FileCopyrightText: {years} Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: {license} + */ + new_notice_python: | # notice for new python files + # SPDX-FileCopyrightText: {years} Espressif Systems (Shanghai) CO LTD + # SPDX-License-Identifier: {license} + + # comment lines matching: + # SPDX-FileCopyrightText: year[-year] Espressif Systems + # or + # SPDX-FileContributor: year[-year] Espressif Systems + # are replaced with this template prefixed with the correct comment notation (# or // or *) and SPDX- notation + espressif_copyright: '{years} Espressif Systems (Shanghai) CO LTD' + +ignore: # You can also select ignoring files here + perform_check: no # Don't check files from that block + include: + - common/proto/ + - common/protobuf-c/ + - build/ + - docs/ diff --git a/tools/check_fw_versions.py b/tools/check_fw_versions.py new file mode 100755 index 00000000..cecbeb9d --- /dev/null +++ b/tools/check_fw_versions.py @@ -0,0 +1,184 @@ +#!/usr/bin/env python +# +# SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD +# SPDX-License-Identifier: Apache-2.0 + +# check the host and co-processor version numbers aginst the value in +# idf_component.yml +# exit with 0 if ok +# exit with 1 if fail + +import argparse +from datetime import date +import os +import re +import sys + +# paths to files to check +yml_file = "idf_component.yml" +coprocessor_version_file = "slave/main/esp_hosted_coprocessor_fw_ver.h" +host_version_file = "host/esp_hosted_host_fw_ver.h" + +# year starts from 2025 +start_year = 2025 + +def get_idf_yml_version() -> (int, int, int): + # read the yml file + file_info = open(yml_file, "r") + info = file_info.read() + file_info.close() + + # extract the version info + ver = re.search("^version: \"([0-9]+).([0-9]+).([0-9]+)\"", info) + #print("yml:", ver.group(1), ver.group(2), ver.group(3)) + + # return version info as a tuple (major, minor, patch) + return (ver.group(1), ver.group(2), ver.group(3)) + +def get_coprocessor_version() -> (int, int, int): + # read the coprocessor file + try: + file_info = open(coprocessor_version_file, "r") + except: + print("Coprocessor file open error: default to 0.0.0") + return (0, 0, 0) + info = file_info.read() + file_info.close() + + # extract the version info + major_re = re.search("_VERSION_MAJOR_1 ([0-9]+)", info) + minor_re = re.search("_VERSION_MINOR_1 ([0-9]+)", info) + patch_re = re.search("_VERSION_PATCH_1 ([0-9]+)", info) + + if ((not major_re) or (not minor_re) or (not patch_re)): + print("No coprocessor version info found: default to 0.0.0") + return (0, 0, 0) + + #print("coprocessor:", major_re.group(1), minor_re.group(1), patch_re.group(1)) + + return (major_re.group(1), minor_re.group(1), patch_re.group(1)) + +def get_host_version() -> (int, int, int): + # read the host file + try: + file_info = open(host_version_file, "r") + except: + print("Host file open error: default to 0.0.0") + return (0, 0, 0) + info = file_info.read() + file_info.close() + + # extract the version info + major_re = re.search("_VERSION_MAJOR_1 ([0-9]+)", info) + minor_re = re.search("_VERSION_MINOR_1 ([0-9]+)", info) + patch_re = re.search("_VERSION_PATCH_1 ([0-9]+)", info) + + if ((not major_re) or (not minor_re) or (not patch_re)): + print("No host version info found: default to 0.0.0") + return (0, 0, 0) + + #print("host:", major_re.group(1), minor_re.group(1), patch_re.group(1)) + + return (major_re.group(1), minor_re.group(1), patch_re.group(1)) + +# write common header using the provided file handle +def write_common_header(file_info): + year = date.today().year + + file_info.write("/*\n") + if (year == start_year): + file_info.write(f" * SPDX-FileCopyrightText: {year} Espressif Systems (Shanghai) CO LTD\n") + else: + file_info.write(f" * SPDX-FileCopyrightText: {start_year}-{year} Espressif Systems (Shanghai) CO LTD\n") + file_info.write(" *\n") + file_info.write(" * SPDX-License-Identifier: Apache-2.0\n") + file_info.write(" */\n") + +def set_coprocessor_version(version: tuple) -> int: + # write the coprocessor file + file_info = open(coprocessor_version_file, "w") + + write_common_header(file_info) + + file_info.write("#ifndef __ESP_HOSTED_COPROCESSOR_FW_VER_H__\n") + file_info.write("#define __ESP_HOSTED_COPROCESSOR_FW_VER_H__\n") + ver = version[0] + file_info.write(f"#define PROJECT_VERSION_MAJOR_1 {ver}\n") + ver = version[1] + file_info.write(f"#define PROJECT_VERSION_MINOR_1 {ver}\n") + ver = version[2] + file_info.write(f"#define PROJECT_VERSION_PATCH_1 {ver}\n") + file_info.write("#endif\n") + file_info.close() + return 0 + +def set_host_version(version: tuple) -> int: + # write the host file + file_info = open(host_version_file, "w") + + write_common_header(file_info) + + file_info.write("#ifndef __ESP_HOSTED_HOST_FW_VERSION_H__\n"); + file_info.write("#define __ESP_HOSTED_HOST_FW_VERSION_H__\n"); + ver = version[0] + file_info.write(f"#define ESP_HOSTED_VERSION_MAJOR_1 {ver}\n") + ver = version[1] + file_info.write(f"#define ESP_HOSTED_VERSION_MINOR_1 {ver}\n") + ver = version[2] + file_info.write(f"#define ESP_HOSTED_VERSION_PATCH_1 {ver}\n") + file_info.write("#endif\n") + file_info.close() + return 0 + +def check_slave_version(yml_version: tuple) -> int: + version = get_coprocessor_version() + if (version == yml_version): + return 0 + else: + return 1 + +def check_host_version(yml_version: tuple) -> int: + version = get_host_version() + if (version == yml_version): + return 0 + else: + return 1 + +def check(args) -> int: + ret = 0 + yml_version = get_idf_yml_version() + update = args.update + force = args.force + + if (check_slave_version(yml_version)): + print(f"Co-processor version check failed. Info in {coprocessor_version_file} different from {yml_file}.") + if (update or force): + print(f"{coprocessor_version_file} updated with correct version info.") + set_coprocessor_version(yml_version) + ret = 1 + elif force: + print(f"Force updating version info in {coprocessor_version_file}.") + set_coprocessor_version(yml_version) + + if (check_host_version(yml_version)): + print(f"Host version check failed. Info in {host_version_file} different from {yml_file}.") + if (update or force): + set_host_version(yml_version) + print(f"{host_version_file} updated with correct version info.") + ret = 1 + elif force: + print(f"Force updating version info in {host_version_file}.") + set_host_version(yml_version) + + return ret + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description = "Check, update version headers against component version") + parser.add_argument('-u', '--update', action = 'store_true', + help = "Updates version headers if different from component version") + parser.add_argument('-f', '--force', action = 'store_true', + help = "Force update version headers") + + args = parser.parse_args() + + sys.exit(check(args)) From 3aaf2c94e38c6a1ff756fbb38de9ea3fb066df61 Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Thu, 31 Jul 2025 20:42:48 +0800 Subject: [PATCH 062/114] Fixes #https://github.com/espressif/esp-hosted-mcu/issues/86 --- examples/host_bluedroid_host_only/README.md | 17 +++++++++++++---- host/esp_hosted_host_fw_ver.h | 2 +- idf_component.yml | 2 +- slave/main/esp_hosted_coprocessor_fw_ver.h | 2 +- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/examples/host_bluedroid_host_only/README.md b/examples/host_bluedroid_host_only/README.md index 71b1e5ff..1aa3cef0 100644 --- a/examples/host_bluedroid_host_only/README.md +++ b/examples/host_bluedroid_host_only/README.md @@ -1,5 +1,8 @@ -| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-H2 | ESP32-S3 | ESP32-P4 | ESP32-H2 | -| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- | -------- | -------- | +| Supported Hosts | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-H2 | ESP32-S3 | ESP32-P4 | ESP32-H2 | Any other MCU hosts | +| --------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- | -------- | -------- | ------------------- | + +| Supported Co-Processors | ESP32 | +| ----------------------- | ----- | ESP-IDF ESP-Hosted Hosted HCI Host ================================== @@ -79,9 +82,15 @@ See the ESP-IDF [UART HCI Host example](https://github.com/espressif/esp-idf/tre ### Configure the project +First, set the host target to ESP32-P4: + +``` +idf.py set-target esp32p4 +``` + For the ESP32 co-processor, run `idf.py menuconfig` and configure `Example Configuration` for SPI Full-duplex with the correct SPI mode and GPIOs. -For the ESP32-P4 co-processor, run `idf.py menuconfig` and under `Component config ---> ESP-Hosted config`: +For the ESP32-P4 host, run `idf.py menuconfig` and under `Component config ---> ESP-Hosted config`: * set the transport to be `SPI Full-duplex` with the correct SPI modem GPIOs (see above table) and SPI Clock frequency (10 MHz max). * set the Slave chipset used as `ESP32`. @@ -89,7 +98,7 @@ For the ESP32-P4 co-processor, run `idf.py menuconfig` and under `Component conf ### Build and Flash -Build and flash the co-processor and host projects, then run monitor tool to view serial output on both the ESP32 and ESP32-P4: +After setting the host target and configuring the project, build and flash the co-processor and host projects, then run monitor tool to view serial output on both the ESP32 and ESP32-P4: ``` idf.py -p PORT flash monitor diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index 8cbb13d7..3ed0b1cd 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 #define ESP_HOSTED_VERSION_MINOR_1 1 -#define ESP_HOSTED_VERSION_PATCH_1 6 +#define ESP_HOSTED_VERSION_PATCH_1 7 #endif diff --git a/idf_component.yml b/idf_component.yml index 8d66570e..18b7418b 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.1.6" +version: "2.1.7" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index 84e3013c..14458390 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 #define PROJECT_VERSION_MINOR_1 1 -#define PROJECT_VERSION_PATCH_1 6 +#define PROJECT_VERSION_PATCH_1 7 #endif From f49ca024597043b7653c5b3560616e7a60735112 Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Thu, 31 Jul 2025 22:07:13 +0800 Subject: [PATCH 063/114] fix(partition): Add partition files for C3, C2, S3 fix(sdkconfig): Fix sdkconfig for S3 --- host/esp_hosted_host_fw_ver.h | 2 +- idf_component.yml | 2 +- slave/main/esp_hosted_coprocessor_fw_ver.h | 2 +- slave/partitions.esp32c3.csv | 7 +++++ slave/partitions.esp32s2.csv | 7 +++++ slave/partitions.esp32s3.csv | 7 +++++ slave/sdkconfig.defaults.esp32s3 | 30 ++++++++++++++++++++++ 7 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 slave/partitions.esp32c3.csv create mode 100644 slave/partitions.esp32s2.csv create mode 100644 slave/partitions.esp32s3.csv diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index 3ed0b1cd..c1f7ecda 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 #define ESP_HOSTED_VERSION_MINOR_1 1 -#define ESP_HOSTED_VERSION_PATCH_1 7 +#define ESP_HOSTED_VERSION_PATCH_1 8 #endif diff --git a/idf_component.yml b/idf_component.yml index 18b7418b..0172786c 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.1.7" +version: "2.1.8" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index 14458390..d76e181a 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 #define PROJECT_VERSION_MINOR_1 1 -#define PROJECT_VERSION_PATCH_1 7 +#define PROJECT_VERSION_PATCH_1 8 #endif diff --git a/slave/partitions.esp32c3.csv b/slave/partitions.esp32c3.csv new file mode 100644 index 00000000..0252a551 --- /dev/null +++ b/slave/partitions.esp32c3.csv @@ -0,0 +1,7 @@ +# ESP-IDF Partition Table +# Name, Type, SubType, Offset, Size, Flags +nvs,data,nvs,0x9000,16K, +otadata,data,ota,0xd000,8K, +phy_init,data,phy,0xf000,4K, +ota_0,app,ota_0,0x10000,1536K, +ota_1,app,ota_1,0x190000,1536K, diff --git a/slave/partitions.esp32s2.csv b/slave/partitions.esp32s2.csv new file mode 100644 index 00000000..0252a551 --- /dev/null +++ b/slave/partitions.esp32s2.csv @@ -0,0 +1,7 @@ +# ESP-IDF Partition Table +# Name, Type, SubType, Offset, Size, Flags +nvs,data,nvs,0x9000,16K, +otadata,data,ota,0xd000,8K, +phy_init,data,phy,0xf000,4K, +ota_0,app,ota_0,0x10000,1536K, +ota_1,app,ota_1,0x190000,1536K, diff --git a/slave/partitions.esp32s3.csv b/slave/partitions.esp32s3.csv new file mode 100644 index 00000000..0252a551 --- /dev/null +++ b/slave/partitions.esp32s3.csv @@ -0,0 +1,7 @@ +# ESP-IDF Partition Table +# Name, Type, SubType, Offset, Size, Flags +nvs,data,nvs,0x9000,16K, +otadata,data,ota,0xd000,8K, +phy_init,data,phy,0xf000,4K, +ota_0,app,ota_0,0x10000,1536K, +ota_1,app,ota_1,0x190000,1536K, diff --git a/slave/sdkconfig.defaults.esp32s3 b/slave/sdkconfig.defaults.esp32s3 index e137797c..86c2914a 100644 --- a/slave/sdkconfig.defaults.esp32s3 +++ b/slave/sdkconfig.defaults.esp32s3 @@ -7,3 +7,33 @@ CONFIG_BT_ENABLED=y CONFIG_BT_CONTROLLER_ONLY=y CONFIG_BT_BLUEDROID_ENABLED= CONFIG_BT_LE_SLEEP_ENABLE=y + +# Partition +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.esp32c6.csv" + +# Wifi config +CONFIG_WIFI_CMD_BASIC_ONLY=y +CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP_WIFI_TX_BA_WIN=32 +CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP_WIFI_RX_BA_WIN=6 +CONFIG_ESP_WIFI_RX_IRAM_OPT=y +CONFIG_ESP_WIFI_IRAM_OPT=y + +# LWIP config +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=11520 +CONFIG_LWIP_TCP_WND_DEFAULT=11520 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=16 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_TCP_SACK_OUT=y +CONFIG_LWIP_TCPIP_CORE_LOCKING=y +CONFIG_LWIP_TCPIP_CORE_LOCKING_INPUT=y + + +# Optimizations +CONFIG_COMPILER_OPTIMIZATION_PERF=y From 83bc9fdc361636015842899797fdff207e3d0763 Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Fri, 1 Aug 2025 01:10:23 +0800 Subject: [PATCH 064/114] fix(build): nw_split on 5.4.2 fixes https://github.com/espressif/esp-hosted-mcu/issues/87 --- host/esp_hosted_host_fw_ver.h | 2 +- idf_component.yml | 2 +- slave/main/esp_hosted_coprocessor_fw_ver.h | 2 +- slave/main/slave_control.c | 20 ++++++-------------- 4 files changed, 9 insertions(+), 17 deletions(-) diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index c1f7ecda..d6138d92 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 #define ESP_HOSTED_VERSION_MINOR_1 1 -#define ESP_HOSTED_VERSION_PATCH_1 8 +#define ESP_HOSTED_VERSION_PATCH_1 9 #endif diff --git a/idf_component.yml b/idf_component.yml index 0172786c..02b0552d 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.1.8" +version: "2.1.9" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index d76e181a..040cb2fd 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 #define PROJECT_VERSION_MINOR_1 1 -#define PROJECT_VERSION_PATCH_1 8 +#define PROJECT_VERSION_PATCH_1 9 #endif diff --git a/slave/main/slave_control.c b/slave/main/slave_control.c index 6ac5755e..a4119c6f 100644 --- a/slave/main/slave_control.c +++ b/slave/main/slave_control.c @@ -1,17 +1,9 @@ // SPDX-License-Identifier: Apache-2.0 -// Copyright 2015-2021 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #include @@ -2675,7 +2667,7 @@ static esp_err_t req_get_dhcp_dns_status(Rpc *req, Rpc *resp, void *priv_data) resp_payload->dns_ip.len = strlen(sta_dns_ip); } - ESP_LOGI(TAG, "Fetched IP: %s, NM: %s, GW: %s, DNS IP: %s, Type: %d", + ESP_LOGI(TAG, "Fetched IP: %s, NM: %s, GW: %s, DNS IP: %s, Type: %"PRId32, resp_payload->dhcp_ip.data, resp_payload->dhcp_nm.data, resp_payload->dhcp_gw.data, From 42220534f274d85453a85a66841350d317a53a59 Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Fri, 1 Aug 2025 09:52:28 +0800 Subject: [PATCH 065/114] fix(partition): Fix type for S3 partition name --- host/esp_hosted_host_fw_ver.h | 2 +- idf_component.yml | 2 +- slave/main/esp_hosted_coprocessor_fw_ver.h | 2 +- slave/sdkconfig.defaults.esp32s3 | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index d6138d92..4945f7ba 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 #define ESP_HOSTED_VERSION_MINOR_1 1 -#define ESP_HOSTED_VERSION_PATCH_1 9 +#define ESP_HOSTED_VERSION_PATCH_1 10 #endif diff --git a/idf_component.yml b/idf_component.yml index 02b0552d..f480a3bd 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.1.9" +version: "2.1.10" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index 040cb2fd..b2fd3362 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 #define PROJECT_VERSION_MINOR_1 1 -#define PROJECT_VERSION_PATCH_1 9 +#define PROJECT_VERSION_PATCH_1 10 #endif diff --git a/slave/sdkconfig.defaults.esp32s3 b/slave/sdkconfig.defaults.esp32s3 index 86c2914a..21045edd 100644 --- a/slave/sdkconfig.defaults.esp32s3 +++ b/slave/sdkconfig.defaults.esp32s3 @@ -10,7 +10,7 @@ CONFIG_BT_LE_SLEEP_ENABLE=y # Partition CONFIG_PARTITION_TABLE_CUSTOM=y -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.esp32c6.csv" +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.esp32s3.csv" # Wifi config CONFIG_WIFI_CMD_BASIC_ONLY=y From a51850f149bbbf6c2f4a15e03e71e0c3d49d01db Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Thu, 31 Jul 2025 15:16:04 +0800 Subject: [PATCH 066/114] feature(scheduled_pipeline): Added jobs to run on a scheduled pipeline - reorganised ci jobs into separate yml files in `.gitlab/ci` directory - broke up jobs into merge request and scheduled pipeline jobs - merge request jobs: - runs on ESP-IDF master and v5.5 - builds for ESP32-P4 as host - builds for ESP32-C6 and C5 as co-processor - scheduled pipeline jobs: - runs on ESP-IDF master, v5.5, v5.4, v5.3 - builds for ESP32-P4 and H2 as host - builds for ESP32-C3, C2, S3, ESP32 --- .gitlab-ci.yml | 199 +------------------------ .gitlab/ci/merge_request_jobs.yml | 51 +++++++ .gitlab/ci/rules.yml | 17 +++ .gitlab/ci/scheduled_pipeline_jobs.yml | 106 +++++++++++++ .gitlab/ci/templates.yml | 98 ++++++++++++ 5 files changed, 277 insertions(+), 194 deletions(-) create mode 100644 .gitlab/ci/merge_request_jobs.yml create mode 100644 .gitlab/ci/rules.yml create mode 100644 .gitlab/ci/scheduled_pipeline_jobs.yml create mode 100644 .gitlab/ci/templates.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1d94d248..e19127dd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,197 +6,8 @@ stages: before_script: - git submodule update --init --recursive -.check_ver_template: - stage: pre - tags: - - build - script: - - source ${IDF_PATH}/export.sh - # check the exported fw versions - - python tools/check_fw_versions.py - -.build_template_coprocessor: - stage: build_coprocessor - tags: - - build - artifacts: - when: always - expire_in: 4 days - script: - - source ${IDF_PATH}/export.sh - - pip install idf-ci - - pip install idf-component-manager idf-build-apps --upgrade - - SDKCONFIG_PATTERN="sdkconfig.ci.${SLAVE_CI_FILE}" - # Build with IDF pedantic flags and IDF build apps script - - export PEDANTIC_FLAGS="-DIDF_CI_BUILD -Werror -Werror=deprecated-declarations -Werror=unused-variable -Werror=unused-but-set-variable -Werror=unused-function" - - export EXTRA_CFLAGS="${PEDANTIC_FLAGS} -Wstrict-prototypes" - - export EXTRA_CXXFLAGS="${PEDANTIC_FLAGS}" - - cd slave - - idf-build-apps find --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} - - idf-build-apps build --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} - -.build_template: - stage: build - tags: - - build - artifacts: - paths: - - "artifacts_*/" - when: always - expire_in: 4 days - script: - - source ${IDF_PATH}/export.sh - - pip install idf-ci - - pip install idf-component-manager idf-build-apps --upgrade - # Need to rename the cloned "esp_hosted_mcu" directory since the injected component name is "esp_hosted" - - cd .. && rm -rf esp_hosted && mv esp_hosted_mcu esp_hosted && cd esp_hosted - # Replaces esp_hosted component in example's deps with the one from the current repository - - export OVERRIDE_PATH=`pwd` - - cd ${IDF_PATH}/${IDF_EXAMPLE_PATH} - # Create components directory and link esp_hosted component - - mkdir -p components - - ln -sf ${OVERRIDE_PATH} components/esp_hosted - - echo "Created components directory with esp_hosted link:" - - ls -la components/ - # Override component dependency as backup only if not already present - - | - if ! grep -q "esp_hosted" main/idf_component.yml 2>/dev/null; then - cat ${OVERRIDE_PATH}/.gitlab-ci-override-idf-component.yml >> main/idf_component.yml - echo "Added esp_hosted override to idf_component.yml" - fi - # Add slave target configuration if specified - - | - if [ ! -z "${IDF_SLAVE_TARGET}" ]; then - echo "CONFIG_SLAVE_IDF_TARGET_${IDF_SLAVE_TARGET^^}=y" >> sdkconfig.defaults - echo "Added slave target CONFIG_SLAVE_IDF_TARGET_${IDF_SLAVE_TARGET^^}=y to sdkconfig.defaults" - fi - # Copy specific sdkconfig.ci file if SDKCONFIG_CI_FILE is specified - - | - if [ ! -z "${SDKCONFIG_CI_FILE}" ]; then - cp ${OVERRIDE_PATH}/${SDKCONFIG_CI_FILE} ./sdkconfig.ci.custom - echo "Using custom sdkconfig: ${SDKCONFIG_CI_FILE}" - SDKCONFIG_PATTERN="sdkconfig.ci.custom" - else - SDKCONFIG_PATTERN="sdkconfig.ci*" - fi - # Build with IDF pedantic flags and IDF build apps script - - export PEDANTIC_FLAGS="-DIDF_CI_BUILD -Werror -Werror=deprecated-declarations -Werror=unused-variable -Werror=unused-but-set-variable -Werror=unused-function" - - export EXTRA_CFLAGS="${PEDANTIC_FLAGS} -Wstrict-prototypes" - - export EXTRA_CXXFLAGS="${PEDANTIC_FLAGS}" - # Remove the conflicting extconn config that disables hosted - - rm -f sdkconfig.ci.*extconn* - - idf-build-apps find --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} - - idf-build-apps build --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} -# - echo "----------- last sdkconfig.defaults,ci* used (${IDF_TARGET}-${IDF_SLAVE_TARGET}) --------------" -# - cat sdkconfig.defaults -# - cat sdkconfig.ci* -# - echo "----------- last (generated) sdkconfig used (${IDF_TARGET}-${IDF_SLAVE_TARGET}) --------------" -# - cat sdkconfig -# - echo "----------------------------------------------" - # Copy config files back to project directory for artifacts - - mkdir -p ${OVERRIDE_PATH}/artifacts_${IDF_TARGET}_${IDF_SLAVE_TARGET} - - cp sdkconfig* ${OVERRIDE_PATH}/artifacts_${IDF_TARGET}_${IDF_SLAVE_TARGET}/ 2>/dev/null || echo "No sdkconfig files found" - - cp main/idf_component.yml ${OVERRIDE_PATH}/artifacts_${IDF_TARGET}_${IDF_SLAVE_TARGET}/ 2>/dev/null || echo "No component file found" - # Clean up the component symlink - - unlink components/esp_hosted - - echo "Cleaned up esp_hosted component symlink" - # Rename back, since post scripts expect the original name - - cd ${OVERRIDE_PATH} && cd .. && mv esp_hosted esp_hosted_mcu - -check_ver: - extends: .check_ver_template - image: espressif/idf:latest - -build_idf_v5.3: - extends: .build_template - image: espressif/idf:${IDF_VER} - parallel: - matrix: - - IDF_VER: ["v5.3.1", "v5.3.2", "v5.3.3", "release-v5.3"] - IDF_TARGET: ["esp32p4", "esp32h2"] - IDF_SLAVE_TARGET: ["esp32c6"] - IDF_EXAMPLE_PATH: examples/protocols/mqtt/tcp - #IDF_EXAMPLE_PATH: [examples/wifi/iperf] - -build_idf_v5.4: - extends: .build_template - image: espressif/idf:${IDF_VER} - parallel: - matrix: - - IDF_VER: ["v5.4", "v5.4.1", "v5.4.2", "release-v5.4"] - IDF_TARGET: ["esp32p4", "esp32h2"] - IDF_SLAVE_TARGET: ["esp32c6"] - IDF_EXAMPLE_PATH: examples/protocols/mqtt/tcp - #IDF_EXAMPLE_PATH: [examples/wifi/iperf] - -build_idf_v5.5: - extends: .build_template - image: espressif/idf:${IDF_VER} - parallel: - matrix: - - IDF_VER: ["v5.5", "release-v5.5"] - IDF_TARGET: ["esp32p4", "esp32h2"] - IDF_SLAVE_TARGET: ["esp32c6", "esp32c5", "esp32", "esp32c2", "esp32c3", "esp32s3" ] - IDF_EXAMPLE_PATH: [examples/wifi/iperf] - -build_idf_master: - extends: .build_template - image: espressif/idf:latest - parallel: - matrix: - - IDF_TARGET: ["esp32p4", "esp32h2"] - IDF_SLAVE_TARGET: ["esp32c6", "esp32c5", "esp32", "esp32c2", "esp32c3", "esp32s3" ] - IDF_EXAMPLE_PATH: [examples/protocols/mqtt/tcp, examples/wifi/iperf] - -build_all_features_enabled_master: - extends: .build_template - image: espressif/idf:latest - parallel: - matrix: - - IDF_TARGET: ["esp32p4"] - IDF_SLAVE_TARGET: ["esp32c5", "esp32c6"] - IDF_EXAMPLE_PATH: examples/wifi/iperf - SDKCONFIG_CI_FILE: "sdkconfig.ci.all_features_enabled" - -build_coprocessor_idf_v5.3: - extends: .build_template_coprocessor - image: espressif/idf:${IDF_VER} - parallel: - matrix: - - IDF_TARGET: ["esp32c6"] - IDF_VER: ["v5.3.1", "v5.3.2", "v5.3.3", "release-v5.3"] - SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart"] - -build_coprocessor_idf_v5.4: - extends: .build_template_coprocessor - image: espressif/idf:${IDF_VER} - parallel: - matrix: - - IDF_TARGET: ["esp32c6"] - IDF_VER: ["v5.4", "v5.4.1", "v5.4.2", "release-v5.4"] - SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart"] - -build_coprocessor_idf_v5.5: - extends: .build_template_coprocessor - image: espressif/idf:${IDF_VER} - parallel: - matrix: - - IDF_TARGET: ["esp32c6"] - IDF_VER: ["v5.5", "release-v5.5"] - SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart"] - -build_coprocessor_idf_master: - extends: .build_template_coprocessor - image: espressif/idf:latest - parallel: - matrix: - - IDF_TARGET: ["esp32c6"] - SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart"] - -build_coprocessor_idf_master_all_features_enabled: - extends: .build_template_coprocessor - image: espressif/idf:latest - parallel: - matrix: - - IDF_TARGET: ["esp32c6"] - SLAVE_CI_FILE: ["all_features"] +include: + - '.gitlab/ci/templates.yml' + - '.gitlab/ci/rules.yml' + - '.gitlab/ci/scheduled_pipeline_jobs.yml' + - '.gitlab/ci/merge_request_jobs.yml' diff --git a/.gitlab/ci/merge_request_jobs.yml b/.gitlab/ci/merge_request_jobs.yml new file mode 100644 index 00000000..2b78fbe6 --- /dev/null +++ b/.gitlab/ci/merge_request_jobs.yml @@ -0,0 +1,51 @@ +# Holds jobs that run from a merge request + +check_ver: + rules: + - !reference [.default_rules, rules] + extends: .check_ver_template + image: espressif/idf:latest + +build_idf_v5.5: + rules: + - !reference [.default_rules, rules] + extends: .build_template + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_VER: ["v5.5", "release-v5.5"] + IDF_TARGET: ["esp32p4"] + IDF_SLAVE_TARGET: ["esp32c6", "esp32c5"] + IDF_EXAMPLE_PATH: [examples/wifi/iperf] + +build_idf_master: + rules: + - !reference [.default_rules, rules] + extends: .build_template + image: espressif/idf:latest + parallel: + matrix: + - IDF_TARGET: ["esp32p4"] + IDF_SLAVE_TARGET: ["esp32c6", "esp32c5" ] + IDF_EXAMPLE_PATH: [examples/protocols/mqtt/tcp, examples/wifi/iperf] + +build_coprocessor_idf_v5.5: + rules: + - !reference [.default_rules, rules] + extends: .build_template_coprocessor + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_TARGET: ["esp32c6", "esp32c5"] + IDF_VER: ["v5.5", "release-v5.5"] + SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart"] + +build_coprocessor_idf_master: + rules: + - !reference [.default_rules, rules] + extends: .build_template_coprocessor + image: espressif/idf:latest + parallel: + matrix: + - IDF_TARGET: ["esp32c6", "esp32c5"] + SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart"] diff --git a/.gitlab/ci/rules.yml b/.gitlab/ci/rules.yml new file mode 100644 index 00000000..2b586f81 --- /dev/null +++ b/.gitlab/ci/rules.yml @@ -0,0 +1,17 @@ +# Holds rules for running jobs + +# default rule +# used for running jobs on a merge request +.default_rules: + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" + when: never + - if: $CI_PIPELINE_SOURCE == "merge_request_event" + +# scheduled pipeline rule +# used for running jobs on a scheduled pipeline +.scheduled_pipeline_rules: + rules: + - if: $CI_PIPELINE_SOURCE == "merge_request_event" + when: never + - if: $CI_PIPELINE_SOURCE == "schedule" diff --git a/.gitlab/ci/scheduled_pipeline_jobs.yml b/.gitlab/ci/scheduled_pipeline_jobs.yml new file mode 100644 index 00000000..2e9d1276 --- /dev/null +++ b/.gitlab/ci/scheduled_pipeline_jobs.yml @@ -0,0 +1,106 @@ +# Holds jobs that run from the scheduled pipeline + +build_idf_v5.3_scheduled: + tags: + - scheduled_build + rules: + - !reference [.scheduled_pipeline_rules, rules] + extends: .build_template + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_VER: ["v5.3.1", "v5.3.2", "v5.3.3", "release-v5.3"] + IDF_TARGET: ["esp32p4", "esp32h2"] + IDF_SLAVE_TARGET: ["esp32c6"] + IDF_EXAMPLE_PATH: examples/protocols/mqtt/tcp + #IDF_EXAMPLE_PATH: [examples/wifi/iperf] + +build_idf_v5.4_scheduled: + tags: + - scheduled_build + rules: + - !reference [.scheduled_pipeline_rules, rules] + extends: .build_template + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_VER: ["v5.4", "v5.4.1", "v5.4.2", "release-v5.4"] + IDF_TARGET: ["esp32p4", "esp32h2"] + IDF_SLAVE_TARGET: ["esp32c6"] + IDF_EXAMPLE_PATH: examples/protocols/mqtt/tcp + #IDF_EXAMPLE_PATH: [examples/wifi/iperf] + +build_idf_v5.5_scheduled: + tags: + - scheduled_build + rules: + - !reference [.scheduled_pipeline_rules, rules] + extends: .build_template + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_VER: ["v5.5", "release-v5.5"] + IDF_TARGET: ["esp32p4", "esp32h2"] + IDF_SLAVE_TARGET: ["esp32", "esp32c2", "esp32c3", "esp32s3" ] + IDF_EXAMPLE_PATH: [examples/wifi/iperf] + +build_idf_master_scheduled: + tags: + - scheduled_build + rules: + - !reference [.scheduled_pipeline_rules, rules] + extends: .build_template + image: espressif/idf:latest + parallel: + matrix: + - IDF_TARGET: ["esp32p4", "esp32h2"] + IDF_SLAVE_TARGET: ["esp32", "esp32c2", "esp32c3", "esp32s3" ] + IDF_EXAMPLE_PATH: [examples/protocols/mqtt/tcp, examples/wifi/iperf] + +build_all_features_enabled_master_scheduled: + rules: + - !reference [.scheduled_pipeline_rules, rules] + extends: .build_template + image: espressif/idf:latest + parallel: + matrix: + - IDF_TARGET: ["esp32p4"] + IDF_SLAVE_TARGET: ["esp32c6", "esp32c5"] + IDF_EXAMPLE_PATH: [examples/wifi/iperf] + SDKCONFIG_CI_FILE: "sdkconfig.ci.all_features_enabled" + +build_coprocessor_idf_v5.3_scheduled: + tags: + - scheduled_build + rules: + - !reference [.scheduled_pipeline_rules, rules] + extends: .build_template_coprocessor + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_TARGET: ["esp32c6"] + IDF_VER: ["v5.3.1", "v5.3.2", "v5.3.3", "release-v5.3"] + SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart"] + +build_coprocessor_idf_v5.4_scheduled: + tags: + - scheduled_build + rules: + - !reference [.scheduled_pipeline_rules, rules] + extends: .build_template_coprocessor + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_TARGET: ["esp32c6"] + IDF_VER: ["v5.4", "v5.4.1", "v5.4.2", "release-v5.4"] + SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart"] + +build_coprocessor_idf_master_all_features_enabled_scheduled: + rules: + - !reference [.scheduled_pipeline_rules, rules] + extends: .build_template_coprocessor + image: espressif/idf:latest + parallel: + matrix: + - IDF_TARGET: ["esp32c6"] + SLAVE_CI_FILE: ["all_features"] diff --git a/.gitlab/ci/templates.yml b/.gitlab/ci/templates.yml new file mode 100644 index 00000000..e910c627 --- /dev/null +++ b/.gitlab/ci/templates.yml @@ -0,0 +1,98 @@ +# Holds templates used for jobs + +.check_ver_template: + stage: pre + tags: + - build + script: + - source ${IDF_PATH}/export.sh + # check the exported fw versions + - python tools/check_fw_versions.py + +.build_template_coprocessor: + stage: build_coprocessor + tags: + - build + artifacts: + when: always + expire_in: 4 days + script: + - source ${IDF_PATH}/export.sh + - pip install idf-ci + - pip install idf-component-manager idf-build-apps --upgrade + - SDKCONFIG_PATTERN="sdkconfig.ci.${SLAVE_CI_FILE}" + # Build with IDF pedantic flags and IDF build apps script + - export PEDANTIC_FLAGS="-DIDF_CI_BUILD -Werror -Werror=deprecated-declarations -Werror=unused-variable -Werror=unused-but-set-variable -Werror=unused-function" + - export EXTRA_CFLAGS="${PEDANTIC_FLAGS} -Wstrict-prototypes" + - export EXTRA_CXXFLAGS="${PEDANTIC_FLAGS}" + - cd slave + - idf-build-apps find --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} + - idf-build-apps build --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} + +.build_template: + stage: build + tags: + - build + artifacts: + paths: + - "artifacts_*/" + when: always + expire_in: 4 days + script: + - source ${IDF_PATH}/export.sh + - pip install idf-ci + - pip install idf-component-manager idf-build-apps --upgrade + # Need to rename the cloned "esp_hosted_mcu" directory since the injected component name is "esp_hosted" + - cd .. && rm -rf esp_hosted && mv esp_hosted_mcu esp_hosted && cd esp_hosted + # Replaces esp_hosted component in example's deps with the one from the current repository + - export OVERRIDE_PATH=`pwd` + - cd ${IDF_PATH}/${IDF_EXAMPLE_PATH} + # Create components directory and link esp_hosted component + - mkdir -p components + - ln -sf ${OVERRIDE_PATH} components/esp_hosted + - echo "Created components directory with esp_hosted link:" + - ls -la components/ + # Override component dependency as backup only if not already present + - | + if ! grep -q "esp_hosted" main/idf_component.yml 2>/dev/null; then + cat ${OVERRIDE_PATH}/.gitlab-ci-override-idf-component.yml >> main/idf_component.yml + echo "Added esp_hosted override to idf_component.yml" + fi + # Add slave target configuration if specified + - | + if [ ! -z "${IDF_SLAVE_TARGET}" ]; then + echo "CONFIG_SLAVE_IDF_TARGET_${IDF_SLAVE_TARGET^^}=y" >> sdkconfig.defaults + echo "Added slave target CONFIG_SLAVE_IDF_TARGET_${IDF_SLAVE_TARGET^^}=y to sdkconfig.defaults" + fi + # Copy specific sdkconfig.ci file if SDKCONFIG_CI_FILE is specified + - | + if [ ! -z "${SDKCONFIG_CI_FILE}" ]; then + cp ${OVERRIDE_PATH}/${SDKCONFIG_CI_FILE} ./sdkconfig.ci.custom + echo "Using custom sdkconfig: ${SDKCONFIG_CI_FILE}" + SDKCONFIG_PATTERN="sdkconfig.ci.custom" + else + SDKCONFIG_PATTERN="sdkconfig.ci*" + fi + # Build with IDF pedantic flags and IDF build apps script + - export PEDANTIC_FLAGS="-DIDF_CI_BUILD -Werror -Werror=deprecated-declarations -Werror=unused-variable -Werror=unused-but-set-variable -Werror=unused-function" + - export EXTRA_CFLAGS="${PEDANTIC_FLAGS} -Wstrict-prototypes" + - export EXTRA_CXXFLAGS="${PEDANTIC_FLAGS}" + # Remove the conflicting extconn config that disables hosted + - rm -f sdkconfig.ci.*extconn* + - idf-build-apps find --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} + - idf-build-apps build --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} +# - echo "----------- last sdkconfig.defaults,ci* used (${IDF_TARGET}-${IDF_SLAVE_TARGET}) --------------" +# - cat sdkconfig.defaults +# - cat sdkconfig.ci* +# - echo "----------- last (generated) sdkconfig used (${IDF_TARGET}-${IDF_SLAVE_TARGET}) --------------" +# - cat sdkconfig +# - echo "----------------------------------------------" + # Copy config files back to project directory for artifacts + - mkdir -p ${OVERRIDE_PATH}/artifacts_${IDF_TARGET}_${IDF_SLAVE_TARGET} + - cp sdkconfig* ${OVERRIDE_PATH}/artifacts_${IDF_TARGET}_${IDF_SLAVE_TARGET}/ 2>/dev/null || echo "No sdkconfig files found" + - cp main/idf_component.yml ${OVERRIDE_PATH}/artifacts_${IDF_TARGET}_${IDF_SLAVE_TARGET}/ 2>/dev/null || echo "No component file found" + # Clean up the component symlink + - unlink components/esp_hosted + - echo "Cleaned up esp_hosted component symlink" + # Rename back, since post scripts expect the original name + - cd ${OVERRIDE_PATH} && cd .. && mv esp_hosted esp_hosted_mcu From 1e298b8798cf935fbe0e0b74d117fa738c5d93c7 Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Fri, 1 Aug 2025 16:47:56 +0800 Subject: [PATCH 067/114] bugfix(ap_operation): Fixed SoftAP operation - softap not started properly after integration of lwIP split - on host: - fixed sending of event for AP_StaConnected and AP_StaDisconnected - post event STA_START only if sta netif was not started - post event AP_START only if ap netif was not started - on co-processor: - send wifi_start/stop, ap_start/stop events at wifi_start(), so if host was waken from deep-sleep, it will get the required events - prevent sending of multiple start events to host based on state - save config only for incoming station config. Passthrough for incoming SoftAp config --- host/drivers/rpc/wrap/rpc_wrap.c | 77 ++++++++---------- host/esp_hosted_host_fw_ver.h | 2 +- idf_component.yml | 2 +- slave/main/esp_hosted_coprocessor_fw_ver.h | 2 +- slave/main/slave_control.c | 90 ++++++++++++++-------- 5 files changed, 92 insertions(+), 81 deletions(-) diff --git a/host/drivers/rpc/wrap/rpc_wrap.c b/host/drivers/rpc/wrap/rpc_wrap.c index abb5e61c..f6d0ff17 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.c +++ b/host/drivers/rpc/wrap/rpc_wrap.c @@ -1,23 +1,9 @@ /* - * Espressif Systems Wireless LAN device driver + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD * - * Copyright (C) 2015-2021 Espressif Systems (Shanghai) PTE LTD - * - * This software file (the "File") is distributed by Espressif Systems (Shanghai) - * PTE LTD under the terms of the GNU General Public License Version 2, June 1991 - * (the "License"). You may use, redistribute and/or modify this File in - * accordance with the terms and conditions of the License, a copy of which - * is available by writing to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or on the - * worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. - * - * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE - * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE - * ARE EXPRESSLY DISCLAIMED. The License provides additional details about - * this warranty disclaimer. + * SPDX-License-Identifier: Apache-2.0 */ - #include "common.h" #include #include @@ -30,6 +16,7 @@ #include "esp_log.h" #include "esp_hosted_wifi_config.h" #include "esp_hosted_transport.h" +#include "esp_netif.h" static const char *TAG = "RPC_WRAP"; @@ -80,7 +67,6 @@ static ctrl_cmd_t * RPC_DEFAULT_REQ(void) #define NO 0 #define HEARTBEAT_DURATION_SEC 20 - typedef struct { int event; rpc_rsp_cb_t fun; @@ -110,11 +96,19 @@ int rpc_deinit(void) return rpc_slaveif_deinit(); } +// returns true if the netif is up for the wifi interface +static bool is_wifi_netif_started(wifi_interface_t wifi_if) { + esp_netif_t* netif = esp_netif_get_handle_from_ifkey( + (wifi_if == WIFI_IF_STA) ? "WIFI_STA_DEF" : "WIFI_AP_DEF"); + return (netif != NULL) && esp_netif_is_netif_up(netif); +} static int rpc_event_callback(ctrl_cmd_t * app_event) { static bool netif_started = false; static bool netif_connected = false; + static bool softap_started = false; + ESP_LOGV(TAG, "%u",app_event->msg_id); if (!app_event || (app_event->msg_type != RPC_TYPE__Event)) { if (app_event) @@ -123,7 +117,7 @@ static int rpc_event_callback(ctrl_cmd_t * app_event) } if ((app_event->msg_id <= RPC_ID__Event_Base) || - (app_event->msg_id >= RPC_ID__Event_Max)) { + (app_event->msg_id >= RPC_ID__Event_Max)) { ESP_LOGE(TAG, "Event Msg ID[0x%x] is not correct",app_event->msg_id); goto fail_parsing; } @@ -139,21 +133,16 @@ static int rpc_event_callback(ctrl_cmd_t * app_event) break; } case RPC_ID__Event_AP_StaConnected: { wifi_event_ap_staconnected_t *p_e = &app_event->u.e_wifi_ap_staconnected; - if (strlen((char*)p_e->mac)) { - ESP_LOGI(TAG, "ESP Event: SoftAP mode: connected station"); - if (netif_started) { - g_h.funcs->_h_event_wifi_post(WIFI_EVENT_STA_CONNECTED, - p_e, sizeof(wifi_event_sta_connected_t), HOSTED_BLOCK_MAX); - } else { - ESP_LOGW(TAG, "Netif not started, deferring STA_CONNECTED event"); - } + ESP_LOGI(TAG, "ESP Event: SoftAP mode: station connected with MAC Addr " MACSTR, MAC2STR(p_e->mac)); + g_h.funcs->_h_event_wifi_post(WIFI_EVENT_AP_STACONNECTED, + p_e, sizeof(wifi_event_ap_staconnected_t), HOSTED_BLOCK_MAX); } break; } case RPC_ID__Event_AP_StaDisconnected: { wifi_event_ap_stadisconnected_t *p_e = &app_event->u.e_wifi_ap_stadisconnected; if (strlen((char*)p_e->mac)) { - ESP_LOGI(TAG, "ESP Event: SoftAP mode: disconnected MAC"); + ESP_LOGI(TAG, "ESP Event: SoftAP mode: disconnected station"); g_h.funcs->_h_event_wifi_post(WIFI_EVENT_AP_STADISCONNECTED, p_e, sizeof(wifi_event_ap_stadisconnected_t), HOSTED_BLOCK_MAX); } @@ -186,54 +175,52 @@ static int rpc_event_callback(ctrl_cmd_t * app_event) case WIFI_EVENT_STA_START: ESP_LOGI(TAG, "ESP Event: wifi station started"); /* Trigger connection when station is started */ - if (!netif_connected) { + if (!netif_started && !is_wifi_netif_started(WIFI_IF_STA)) { + g_h.funcs->_h_event_wifi_post(wifi_event_id, 0, 0, HOSTED_BLOCK_MAX); rpc_wifi_connect_async(); + netif_started = true; } - netif_started = true; break; case WIFI_EVENT_STA_STOP: ESP_LOGI(TAG, "ESP Event: wifi station stopped"); netif_started = false; netif_connected = false; + g_h.funcs->_h_event_wifi_post(wifi_event_id, 0, 0, HOSTED_BLOCK_MAX); break; case WIFI_EVENT_AP_START: ESP_LOGI(TAG,"ESP Event: softap started"); + if (!softap_started && !is_wifi_netif_started(WIFI_IF_AP)) { + g_h.funcs->_h_event_wifi_post(wifi_event_id, 0, 0, HOSTED_BLOCK_MAX); + softap_started = true; + } break; case WIFI_EVENT_AP_STOP: ESP_LOGI(TAG,"ESP Event: softap stopped"); + softap_started = false; + g_h.funcs->_h_event_wifi_post(wifi_event_id, 0, 0, HOSTED_BLOCK_MAX); break; case WIFI_EVENT_HOME_CHANNEL_CHANGE: ESP_LOGD(TAG,"ESP Event: Home channel changed"); + g_h.funcs->_h_event_wifi_post(wifi_event_id, 0, 0, HOSTED_BLOCK_MAX); break; case WIFI_EVENT_AP_STACONNECTED: - ESP_LOGI(TAG,"ESP Event: softap station connected"); + // should be RPC_ID__Event_AP_StaConnected + ESP_LOGE(TAG,"Incorrect ESP Event: softap station connected"); break; case WIFI_EVENT_AP_STADISCONNECTED: - ESP_LOGI(TAG,"ESP Event: softap station disconnected"); + // should be RPC_ID__Event_AP_StaDisconnected + ESP_LOGE(TAG,"Incorrect ESP Event: softap station disconnected"); break; + default: ESP_LOGV(TAG, "ESP Event: Event[%x]", wifi_event_id); break; } /* inner switch case */ - - - if ((wifi_event_id != WIFI_EVENT_AP_START) && - (wifi_event_id != WIFI_EVENT_AP_STACONNECTED) && - (wifi_event_id != WIFI_EVENT_AP_STADISCONNECTED)) { - - /* For STA_START, only post if netif is not already started */ - if (wifi_event_id == WIFI_EVENT_STA_START && !netif_started) { - ESP_LOGW(TAG, "Posting STA_START event"); - g_h.funcs->_h_event_wifi_post(wifi_event_id, 0, 0, HOSTED_BLOCK_MAX); - } else if (wifi_event_id != WIFI_EVENT_STA_START) { - g_h.funcs->_h_event_wifi_post(wifi_event_id, 0, 0, HOSTED_BLOCK_MAX); - } - } break; } case RPC_ID__Event_StaScanDone: { wifi_event_sta_scan_done_t *p_e = &app_event->u.e_wifi_sta_scan_done; diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index 4945f7ba..344b2e5a 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 #define ESP_HOSTED_VERSION_MINOR_1 1 -#define ESP_HOSTED_VERSION_PATCH_1 10 +#define ESP_HOSTED_VERSION_PATCH_1 11 #endif diff --git a/idf_component.yml b/idf_component.yml index f480a3bd..0ee36140 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.1.10" +version: "2.1.11" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index b2fd3362..6f2e17fc 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 #define PROJECT_VERSION_MINOR_1 1 -#define PROJECT_VERSION_PATCH_1 10 +#define PROJECT_VERSION_PATCH_1 11 #endif diff --git a/slave/main/slave_control.c b/slave/main/slave_control.c index a4119c6f..a3ed649b 100644 --- a/slave/main/slave_control.c +++ b/slave/main/slave_control.c @@ -86,7 +86,6 @@ extern esp_err_t wlan_ap_rx_callback(void *buffer, uint16_t len, void *eb); extern volatile uint8_t station_connected; extern volatile uint8_t softap_started; static volatile bool station_connecting = false; -static volatile bool wifi_started = false; static volatile bool wifi_initialized = false; static void send_wifi_event_data_to_host(int event, void *event_data, int event_size) @@ -805,33 +804,40 @@ static void event_handler_wifi(void* arg, esp_event_base_t event_base, send_event_data_to_host(RPC_ID__Event_StaDisconnected, event_data, sizeof(wifi_event_sta_disconnected_t)); } else { + // ensure start events are only sent once during a state change if (event_id == WIFI_EVENT_AP_START) { - ESP_LOGI(TAG,"softap started"); - esp_wifi_internal_reg_rxcb(ESP_IF_WIFI_AP, (wifi_rxcb_t) wlan_ap_rx_callback); - softap_started = 1; + if (!softap_started) { + ESP_LOGI(TAG,"softap started"); + esp_wifi_internal_reg_rxcb(ESP_IF_WIFI_AP, (wifi_rxcb_t) wlan_ap_rx_callback); + softap_started = 1; + send_event_data_to_host(RPC_ID__Event_WifiEventNoArgs, + &event_id, sizeof(event_id)); + } } else if (event_id == WIFI_EVENT_AP_STOP) { - ESP_LOGI(TAG,"softap stopped"); - esp_wifi_internal_reg_rxcb(ESP_IF_WIFI_AP, NULL); - softap_started = 0; - } -#if 0 - if (event_id == WIFI_EVENT_STA_START && station_connected) { - ESP_LOGI(TAG, "Sta mode start, send connected event"); - //station_connecting = false; - //send_event_data_to_host(RPC_ID__Event_StaConnected, - // &lkg_sta_connected_event, sizeof(wifi_event_sta_connected_t)); - } -#endif - if (event_id == WIFI_EVENT_STA_START) { - wifi_started = true; - station_connecting = true; - esp_wifi_connect(); + if (softap_started) { + ESP_LOGI(TAG,"softap stopped"); + esp_wifi_internal_reg_rxcb(ESP_IF_WIFI_AP, NULL); + softap_started = 0; + send_event_data_to_host(RPC_ID__Event_WifiEventNoArgs, + &event_id, sizeof(event_id)); + } + } else if (event_id == WIFI_EVENT_STA_START) { + if (!station_connecting) { + ESP_LOGI(TAG, "sta started"); + station_connecting = true; + esp_wifi_connect(); + send_event_data_to_host(RPC_ID__Event_WifiEventNoArgs, + &event_id, sizeof(event_id)); + } } else if (event_id == WIFI_EVENT_STA_STOP) { - wifi_started = false; + ESP_LOGI(TAG, "sta stopped"); station_connecting = false; + send_event_data_to_host(RPC_ID__Event_WifiEventNoArgs, + &event_id, sizeof(event_id)); + } else { + send_event_data_to_host(RPC_ID__Event_WifiEventNoArgs, + &event_id, sizeof(event_id)); } - send_event_data_to_host(RPC_ID__Event_WifiEventNoArgs, - &event_id, sizeof(event_id)); } } } @@ -1267,15 +1273,32 @@ static esp_err_t req_wifi_start(Rpc *req, Rpc *resp, void *priv_data) RpcReqWifiStart, req_wifi_start, rpc__resp__wifi_start__init); - if (wifi_started) { - ESP_LOGW(TAG, "Wifi is already started"); - int event_id = WIFI_EVENT_STA_START; - send_wifi_event_data_to_host(RPC_ID__Event_WifiEventNoArgs, - &event_id, sizeof(event_id)); - return ESP_OK; + RPC_RET_FAIL_IF(esp_wifi_start()); + + /** + * check the current wifi mode and send the STA/AP start event(s) + * to handle the case where the host wakes up from deep sleep. + * In this case, the wifi was already started on the co-processor + * and does not generate the required start events + */ + wifi_mode_t mode; + int event_id; + esp_err_t res = esp_wifi_get_mode(&mode); + if (res == ESP_OK) { + if ((mode == WIFI_MODE_STA) || (mode == WIFI_MODE_APSTA)) { + ESP_LOGI(TAG, "send WIFI_EVENT_STA_START"); + event_id = WIFI_EVENT_STA_START; + send_wifi_event_data_to_host(RPC_ID__Event_WifiEventNoArgs, + &event_id, sizeof(event_id)); + } + if ((mode == WIFI_MODE_AP) || (mode == WIFI_MODE_APSTA)) { + ESP_LOGI(TAG, "send WIFI_EVENT_AP_START"); + event_id = WIFI_EVENT_AP_START; + send_wifi_event_data_to_host(RPC_ID__Event_WifiEventNoArgs, + &event_id, sizeof(event_id)); + } } - RPC_RET_FAIL_IF(esp_wifi_start()); return ESP_OK; } @@ -1284,9 +1307,8 @@ static esp_err_t req_wifi_stop(Rpc *req, Rpc *resp, void *priv_data) RPC_TEMPLATE_SIMPLE(RpcRespWifiStop, resp_wifi_stop, RpcReqWifiStop, req_wifi_stop, rpc__resp__wifi_stop__init); - wifi_started = false; - RPC_RET_FAIL_IF(esp_wifi_stop()); + RPC_RET_FAIL_IF(esp_wifi_stop()); return ESP_OK; } @@ -1541,6 +1563,7 @@ static esp_err_t req_wifi_set_config(Rpc *req, Rpc *resp, void *priv_data) p_a_sta->sort_method = WIFI_CONNECT_AP_BY_SIGNAL; RPC_REQ_COPY_STR(p_a_sta->sae_h2e_identifier, p_c_sta->sae_h2e_identifier, SAE_H2E_IDENTIFIER_LEN); + RPC_RET_FAIL_IF(esp_hosted_set_sta_config(req_payload->iface, &cfg)); } else if (req_payload->iface == WIFI_IF_AP) { wifi_ap_config_t * p_a_ap = &(cfg.ap); WifiApConfig * p_c_ap = req_payload->cfg->ap; @@ -1574,9 +1597,10 @@ static esp_err_t req_wifi_set_config(Rpc *req, Rpc *resp, void *priv_data) } p_a_ap->gtk_rekey_interval = p_c_ap->gtk_rekey_interval; #endif + + RPC_RET_FAIL_IF(esp_wifi_set_config(req_payload->iface, &cfg)); } - RPC_RET_FAIL_IF(esp_hosted_set_sta_config(req_payload->iface, &cfg)); return ESP_OK; } From 041bd571016749b909769ef8b773d4c0fe3c4ce5 Mon Sep 17 00:00:00 2001 From: Shreyas Sheth Date: Tue, 10 Jun 2025 17:36:32 +0530 Subject: [PATCH 068/114] feat(trans_frag): Add support for fragmentation of packets from sdio host to slave --- common/transport/esp_hosted_transport.h | 2 + host/drivers/bt/vhci_drv.c | 6 +-- host/drivers/serial/serial_ll_if.c | 50 +++++++++++++++++++++- host/drivers/transport/sdio/sdio_drv.c | 35 +++++++++------ host/drivers/transport/spi/spi_drv.c | 40 +++++++++-------- host/drivers/transport/spi_hd/spi_hd_drv.c | 39 +++++++++++------ host/drivers/transport/transport_drv.c | 8 ++-- host/drivers/transport/transport_drv.h | 3 +- host/drivers/transport/uart/uart_drv.c | 39 +++++++++++------ host/esp_hosted_host_fw_ver.h | 4 +- host/utils/stats.c | 2 +- idf_component.yml | 2 +- slave/main/esp_hosted_coprocessor.c | 2 +- slave/main/esp_hosted_coprocessor_fw_ver.h | 4 +- 14 files changed, 160 insertions(+), 76 deletions(-) diff --git a/common/transport/esp_hosted_transport.h b/common/transport/esp_hosted_transport.h index 15615077..0fc612da 100644 --- a/common/transport/esp_hosted_transport.h +++ b/common/transport/esp_hosted_transport.h @@ -43,6 +43,8 @@ typedef enum { #define ESP_TRANSPORT_SPI_HD_MAX_BUF_SIZE 1600 #define ESP_TRANSPORT_UART_MAX_BUF_SIZE 1600 +#define MAX_FRAGMENTABLE_PAYLOAD_SIZE 8192 + struct esp_priv_event { uint8_t event_type; uint8_t event_len; diff --git a/host/drivers/bt/vhci_drv.c b/host/drivers/bt/vhci_drv.c index 9e172a7f..3e4f6305 100644 --- a/host/drivers/bt/vhci_drv.c +++ b/host/drivers/bt/vhci_drv.c @@ -167,7 +167,7 @@ int ble_transport_to_ll_acl_impl(struct os_mbuf *om) goto exit; } - res = esp_hosted_tx(ESP_HCI_IF, 0, data, data_len, H_BUFF_NO_ZEROCOPY, H_DEFLT_FREE_FUNC, 0); + res = esp_hosted_tx(ESP_HCI_IF, 0, data, data_len, H_BUFF_NO_ZEROCOPY, data, H_DEFLT_FREE_FUNC, 0); exit: os_mbuf_free_chain(om); @@ -195,7 +195,7 @@ int ble_transport_to_ll_cmd_impl(void *buf) data[0] = HCI_H4_CMD; memcpy(&data[1], buf, buf_len - 1); - res = esp_hosted_tx(ESP_HCI_IF, 0, data, buf_len, H_BUFF_NO_ZEROCOPY, H_DEFLT_FREE_FUNC, 0); + res = esp_hosted_tx(ESP_HCI_IF, 0, data, buf_len, H_BUFF_NO_ZEROCOPY, data, H_DEFLT_FREE_FUNC, 0); exit: ble_transport_free(buf); @@ -248,7 +248,7 @@ void hosted_hci_bluedroid_send(uint8_t *data, uint16_t len) } memcpy(ptr, data, len); - res = esp_hosted_tx(ESP_HCI_IF, 0, ptr, len, H_BUFF_NO_ZEROCOPY, H_DEFLT_FREE_FUNC, 0); + res = esp_hosted_tx(ESP_HCI_IF, 0, ptr, len, H_BUFF_NO_ZEROCOPY, ptr, H_DEFLT_FREE_FUNC, 0); if (res) { ESP_LOGE(TAG, "%s: Tx failed", __func__); diff --git a/host/drivers/serial/serial_ll_if.c b/host/drivers/serial/serial_ll_if.c index e7c96273..72fdfcb5 100644 --- a/host/drivers/serial/serial_ll_if.c +++ b/host/drivers/serial/serial_ll_if.c @@ -212,8 +212,54 @@ static int serial_ll_write(const serial_ll_handle_t * serial_ll_hdl, return -1; } - return esp_hosted_tx(serial_ll_hdl->if_type, - serial_ll_hdl->if_num, wbuffer, wlen, H_BUFF_NO_ZEROCOPY, H_DEFLT_FREE_FUNC, 0); + if (!wbuffer || !wlen) { + return -1; + } + + if (wlen > MAX_FRAGMENTABLE_PAYLOAD_SIZE) { + ESP_LOGE(TAG, "Payload too large: %u bytes (max allowed: %u)", wlen, MAX_FRAGMENTABLE_PAYLOAD_SIZE); + return -1; + } + + uint16_t offset = 0; + uint16_t remaining_len = wlen; + void (*free_func)(void *) = NULL; + uint8_t *buf_to_free = NULL; + + while (remaining_len > 0) { + uint16_t frag_len = (remaining_len > MAX_PAYLOAD_SIZE) ? MAX_PAYLOAD_SIZE : remaining_len; + uint8_t *frag_ptr = wbuffer + offset; + + uint8_t flags = 0; + if (remaining_len > MAX_PAYLOAD_SIZE) { + flags |= MORE_FRAGMENT; + } + else { + // FRAGMENTATION COMPLETED + buf_to_free = wbuffer; + free_func = H_DEFLT_FREE_FUNC; + } + + int ret = esp_hosted_tx(serial_ll_hdl->if_type, + serial_ll_hdl->if_num, + frag_ptr, + frag_len, + H_BUFF_NO_ZEROCOPY, + buf_to_free, free_func, + flags); + if (ret != ESP_OK) { + if (flags & MORE_FRAGMENT) { + H_FREE_PTR_WITH_FUNC(H_DEFLT_FREE_FUNC, wbuffer); + } + ESP_LOGE(TAG, "esp_hosted_tx failed at offset=%u len=%u", offset, frag_len); + return ret; + } + + offset += frag_len; + remaining_len -= frag_len; + } + + return 0; } /** diff --git a/host/drivers/transport/sdio/sdio_drv.c b/host/drivers/transport/sdio/sdio_drv.c index 63e65e64..217da010 100644 --- a/host/drivers/transport/sdio/sdio_drv.c +++ b/host/drivers/transport/sdio/sdio_drv.c @@ -1308,34 +1308,43 @@ void *bus_init_internal(void) return sdio_handle; } +/** + * @brief Send to slave + * @param iface_type -type of interface + * iface_num - interface number + * payload_buf - tx buffer + * payload_len - size of tx buffer + * buffer_to_free - buffer to be freed after tx + * free_buf_func - function used to free buffer_to_free + * flags - flags to set + * @retval int - ESP_OK or ESP_FAIL + */ int esp_hosted_tx(uint8_t iface_type, uint8_t iface_num, - uint8_t * wbuffer, uint16_t wlen, uint8_t buff_zcopy, - void (*free_wbuf_fun)(void* ptr), uint8_t flag) + uint8_t *payload_buf, uint16_t payload_len, uint8_t buff_zcopy, + uint8_t *buffer_to_free, void (*free_buf_func)(void *ptr), uint8_t flags) { interface_buffer_handle_t buf_handle = {0}; void (*free_func)(void* ptr) = NULL; uint8_t pkt_prio = PRIO_Q_OTHERS; uint8_t transport_up = is_transport_tx_ready(); - if (free_wbuf_fun) - free_func = free_wbuf_fun; - - - if ((!wbuffer || !wlen || (wlen > MAX_PAYLOAD_SIZE) || !transport_up)) { + if (free_buf_func) + free_func = free_buf_func; + if (!payload_buf || !payload_len || (payload_len > MAX_PAYLOAD_SIZE) || !transport_up) { ESP_LOGE(TAG, "tx fail: NULL buff, invalid len (%u) or len > max len (%u), transport_up(%u))", - wlen, MAX_PAYLOAD_SIZE, transport_up); - H_FREE_PTR_WITH_FUNC(free_func, wbuffer); + payload_len, MAX_PAYLOAD_SIZE, transport_up); + H_FREE_PTR_WITH_FUNC(free_func, buffer_to_free); return ESP_FAIL; } buf_handle.payload_zcopy = buff_zcopy; buf_handle.if_type = iface_type; buf_handle.if_num = iface_num; - buf_handle.payload_len = wlen; - buf_handle.payload = wbuffer; - buf_handle.priv_buffer_handle = wbuffer; + buf_handle.payload_len = payload_len; + buf_handle.payload = payload_buf; + buf_handle.priv_buffer_handle = buffer_to_free; buf_handle.free_buf_handle = free_func; - buf_handle.flag = flag; + buf_handle.flag = flags; if (buf_handle.if_type == ESP_SERIAL_IF) pkt_prio = PRIO_Q_SERIAL; diff --git a/host/drivers/transport/spi/spi_drv.c b/host/drivers/transport/spi/spi_drv.c index fff47e17..68241e6c 100644 --- a/host/drivers/transport/spi/spi_drv.c +++ b/host/drivers/transport/spi/spi_drv.c @@ -515,38 +515,42 @@ static int check_and_execute_spi_transaction(void) * @brief Send to slave via SPI * @param iface_type -type of interface * iface_num - interface number - * wbuffer - tx buffer - * wlen - size of wbuffer - * @retval sendbuf - Tx buffer + * payload_buf - tx buffer + * payload_len - size of tx buffer + * buffer_to_free - buffer to be freed after tx + * free_buf_func - function used to free buffer_to_free + * flags - flags to set + * @retval int - STM_PASS or STM_FAIL */ int esp_hosted_tx(uint8_t iface_type, uint8_t iface_num, - uint8_t * wbuffer, uint16_t wlen, uint8_t buff_zcopy, - void (*free_wbuf_fun)(void* ptr), uint8_t flag) + uint8_t *payload_buf, uint16_t payload_len, uint8_t buff_zcopy, + uint8_t *buffer_to_free, void (*free_buf_func)(void *ptr), uint8_t flags) { interface_buffer_handle_t buf_handle = {0}; void (*free_func)(void* ptr) = NULL; uint8_t pkt_prio = PRIO_Q_OTHERS; - if (free_wbuf_fun) - free_func = free_wbuf_fun; + if (free_buf_func) + free_func = free_buf_func; - if ((!flag) && (!wbuffer || !wlen || (wlen > MAX_PAYLOAD_SIZE))) { + if ((flags == 0 || flags == MORE_FRAGMENT) && + (!payload_buf || !payload_len || (payload_len > MAX_PAYLOAD_SIZE))) { ESP_LOGE(TAG, "write fail: buff(%p) 0? OR (0_h_memset(&buf_handle, 0, sizeof(buf_handle)); buf_handle.payload_zcopy = buff_zcopy; buf_handle.if_type = iface_type; buf_handle.if_num = iface_num; - buf_handle.payload_len = wlen; - buf_handle.payload = wbuffer; - buf_handle.priv_buffer_handle = wbuffer; + buf_handle.payload_len = payload_len; + buf_handle.payload = payload_buf; + buf_handle.priv_buffer_handle = buffer_to_free; buf_handle.free_buf_handle = free_func; - buf_handle.flag = flag; + buf_handle.flag = flags; - ESP_LOGV(TAG, "ifype: %u wbuff:%p, free: %p wlen:%u flag:%u", iface_type, wbuffer, free_func, wlen, flag); + ESP_LOGV(TAG, "ifype: %u wbuff:%p, free: %p wlen:%u flag:%u", iface_type, payload_buf, free_func, payload_len, flags); if (buf_handle.if_type == ESP_SERIAL_IF) pkt_prio = PRIO_Q_SERIAL; @@ -792,7 +796,7 @@ static uint8_t * get_next_tx_buffer(uint8_t *is_valid_tx_buf, void (**free_func) payload_header->offset = htole16(sizeof(struct esp_payload_header)); payload_header->if_type = buf_handle.if_type; payload_header->if_num = buf_handle.if_num; - payload_header->flags = buf_handle.flag; + payload_header->flags = buf_handle.flag; if (payload_header->if_type == ESP_HCI_IF) { // special handling for HCI @@ -941,7 +945,7 @@ int bus_inform_slave_host_power_save_start(void) } else { /* Use normal queue mechanism */ ret = esp_hosted_tx(ESP_SERIAL_IF, 0, NULL, 0, - H_BUFF_NO_ZEROCOPY, NULL, FLAG_POWER_SAVE_STARTED); + H_BUFF_NO_ZEROCOPY, NULL, NULL, FLAG_POWER_SAVE_STARTED); } return ret; @@ -999,7 +1003,7 @@ int bus_inform_slave_host_power_save_stop(void) } else { /* Use normal queue mechanism */ ret = esp_hosted_tx(ESP_SERIAL_IF, 0, NULL, 0, - H_BUFF_NO_ZEROCOPY, NULL, FLAG_POWER_SAVE_STOPPED); + H_BUFF_NO_ZEROCOPY, NULL, NULL, FLAG_POWER_SAVE_STOPPED); } return ret; diff --git a/host/drivers/transport/spi_hd/spi_hd_drv.c b/host/drivers/transport/spi_hd/spi_hd_drv.c index 32a415fe..53002c22 100644 --- a/host/drivers/transport/spi_hd/spi_hd_drv.c +++ b/host/drivers/transport/spi_hd/spi_hd_drv.c @@ -824,9 +824,20 @@ void bus_deinit_internal(void *bus_handle) ESP_LOGI(TAG, "Deinitialised SPI HD driver"); } +/** + * @brief Send to slave + * @param iface_type -type of interface + * iface_num - interface number + * payload_buf - tx buffer + * payload_len - size of tx buffer + * buffer_to_free - buffer to be freed after tx + * free_buf_func - function used to free buffer_to_free + * flags - flags to set + * @retval int - ESP_OK or ESP_FAIL + */ int esp_hosted_tx(uint8_t iface_type, uint8_t iface_num, - uint8_t * wbuffer, uint16_t wlen, uint8_t buff_zcopy, - void (*free_wbuf_fun)(void* ptr), uint8_t flag) + uint8_t *payload_buf, uint16_t payload_len, uint8_t buff_zcopy, + uint8_t *buffer_to_free, void (*free_buf_func)(void *ptr), uint8_t flags) { interface_buffer_handle_t buf_handle = {0}; void (*free_func)(void* ptr) = NULL; @@ -835,25 +846,25 @@ int esp_hosted_tx(uint8_t iface_type, uint8_t iface_num, // ESP_LOGW(TAG, "%s, %"PRIu8, __func__, transport_up); - if (free_wbuf_fun) - free_func = free_wbuf_fun; + if (free_buf_func) + free_func = free_buf_func; - if ((!flag) && - (!wbuffer || !wlen ||(wlen > MAX_PAYLOAD_SIZE) || !transport_up)) { + if ((flags == 0 || flags == MORE_FRAGMENT) && + (!payload_buf || !payload_len || (payload_len > MAX_PAYLOAD_SIZE) || !transport_up)) { ESP_LOGE(TAG, "tx fail: NULL buff, invalid len (%u) or len > max len (%u), transport_up(%u))", - wlen, MAX_PAYLOAD_SIZE, transport_up); - H_FREE_PTR_WITH_FUNC(free_func, wbuffer); + payload_len, MAX_PAYLOAD_SIZE, transport_up); + H_FREE_PTR_WITH_FUNC(free_func, buffer_to_free); return ESP_FAIL; } buf_handle.payload_zcopy = buff_zcopy; buf_handle.if_type = iface_type; buf_handle.if_num = iface_num; - buf_handle.payload_len = wlen; - buf_handle.payload = wbuffer; - buf_handle.priv_buffer_handle = wbuffer; + buf_handle.payload_len = payload_len; + buf_handle.payload = payload_buf; + buf_handle.priv_buffer_handle = buffer_to_free; buf_handle.free_buf_handle = free_func; - buf_handle.flag = flag; + buf_handle.flag = flags; if (buf_handle.if_type == ESP_SERIAL_IF) pkt_prio = PRIO_Q_SERIAL; @@ -935,7 +946,7 @@ int bus_inform_slave_host_power_save_start(void) } else { /* Use normal queue mechanism */ ret = esp_hosted_tx(ESP_SERIAL_IF, 0, NULL, 0, - H_BUFF_NO_ZEROCOPY, NULL, FLAG_POWER_SAVE_STARTED); + H_BUFF_NO_ZEROCOPY, NULL, NULL, FLAG_POWER_SAVE_STARTED); } return ret; @@ -968,7 +979,7 @@ int bus_inform_slave_host_power_save_stop(void) } else { /* Use normal queue mechanism */ ret = esp_hosted_tx(ESP_SERIAL_IF, 0, NULL, 0, - H_BUFF_NO_ZEROCOPY, NULL, FLAG_POWER_SAVE_STOPPED); + H_BUFF_NO_ZEROCOPY, NULL, NULL, FLAG_POWER_SAVE_STOPPED); } return ret; diff --git a/host/drivers/transport/transport_drv.c b/host/drivers/transport/transport_drv.c index 73873019..9edc6f5d 100644 --- a/host/drivers/transport/transport_drv.c +++ b/host/drivers/transport/transport_drv.c @@ -280,7 +280,7 @@ static esp_err_t transport_drv_sta_tx(void *h, void *buffer, size_t len) assert(copy_buff); g_h.funcs->_h_memcpy(copy_buff+H_ESP_PAYLOAD_HEADER_OFFSET, buffer, len); - return esp_hosted_tx(ESP_STA_IF, 0, copy_buff, len, H_BUFF_ZEROCOPY, transport_sta_free_cb, 0); + return esp_hosted_tx(ESP_STA_IF, 0, copy_buff, len, H_BUFF_ZEROCOPY, copy_buff, transport_sta_free_cb, 0); } static esp_err_t transport_drv_ap_tx(void *h, void *buffer, size_t len) @@ -297,14 +297,14 @@ static esp_err_t transport_drv_ap_tx(void *h, void *buffer, size_t len) assert(copy_buff); g_h.funcs->_h_memcpy(copy_buff+H_ESP_PAYLOAD_HEADER_OFFSET, buffer, len); - return esp_hosted_tx(ESP_AP_IF, 0, copy_buff, len, H_BUFF_ZEROCOPY, transport_ap_free_cb, 0); + return esp_hosted_tx(ESP_AP_IF, 0, copy_buff, len, H_BUFF_ZEROCOPY, copy_buff, transport_ap_free_cb, 0); } esp_err_t transport_drv_serial_tx(void *h, void *buffer, size_t len) { /* TODO */ assert(h && h==chan_arr[ESP_SERIAL_IF]->api_chan); - return esp_hosted_tx(ESP_SERIAL_IF, 0, buffer, len, H_BUFF_NO_ZEROCOPY, transport_serial_free_cb, 0); + return esp_hosted_tx(ESP_SERIAL_IF, 0, buffer, len, H_BUFF_NO_ZEROCOPY, buffer, transport_serial_free_cb, 0); } @@ -645,7 +645,7 @@ esp_err_t send_slave_config(uint8_t host_cap, uint8_t firmware_chip_id, /* payload len = Event len + sizeof(event type) + sizeof(event len) */ len += 2; - return esp_hosted_tx(ESP_PRIV_IF, 0, sendbuf, len, H_BUFF_NO_ZEROCOPY, g_h.funcs->_h_free, 0); + return esp_hosted_tx(ESP_PRIV_IF, 0, sendbuf, len, H_BUFF_NO_ZEROCOPY, sendbuf, g_h.funcs->_h_free, 0); } static int transport_delayed_init(void) diff --git a/host/drivers/transport/transport_drv.h b/host/drivers/transport/transport_drv.h index 8b70be6a..f221623d 100644 --- a/host/drivers/transport/transport_drv.h +++ b/host/drivers/transport/transport_drv.h @@ -112,7 +112,8 @@ uint8_t is_transport_tx_ready(void); int esp_hosted_tx(uint8_t iface_type, uint8_t iface_num, - uint8_t * buffer, uint16_t len, uint8_t buff_zerocopy, void (*free_buf_fun)(void* ptr), uint8_t flag); + uint8_t *payload_buf, uint16_t payload_len, uint8_t buff_zerocopy, + uint8_t *buffer_to_free, void (*free_buf_func)(void *ptr), uint8_t flags); int serial_rx_handler(interface_buffer_handle_t * buf_handle); void set_transport_state(uint8_t state); diff --git a/host/drivers/transport/uart/uart_drv.c b/host/drivers/transport/uart/uart_drv.c index bfc9ee03..dc136f88 100644 --- a/host/drivers/transport/uart/uart_drv.c +++ b/host/drivers/transport/uart/uart_drv.c @@ -535,34 +535,45 @@ void *bus_init_internal(void) return uart_handle; } +/** + * @brief Send to slave + * @param iface_type -type of interface + * iface_num - interface number + * payload_buf - tx buffer + * payload_len - size of tx buffer + * buffer_to_free - buffer to be freed after tx + * free_buf_func - function used to free buffer_to_free + * flags - flags to set + * @retval int - ESP_OK or ESP_FAIL + */ int esp_hosted_tx(uint8_t iface_type, uint8_t iface_num, - uint8_t * wbuffer, uint16_t wlen, uint8_t buff_zcopy, - void (*free_wbuf_fun)(void* ptr), uint8_t flag) + uint8_t *payload_buf, uint16_t payload_len, uint8_t buff_zcopy, + uint8_t *buffer_to_free, void (*free_buf_func)(void *ptr), uint8_t flags) { interface_buffer_handle_t buf_handle = {0}; void (*free_func)(void* ptr) = NULL; uint8_t pkt_prio = PRIO_Q_OTHERS; uint8_t transport_up = is_transport_tx_ready(); - if (free_wbuf_fun) - free_func = free_wbuf_fun; + if (free_buf_func) + free_func = free_buf_func; - if ((!flag) && - (!wbuffer || !wlen ||(wlen > MAX_PAYLOAD_SIZE) || !transport_up)) { + if ((flags == 0 || flags == MORE_FRAGMENT) && + (!payload_buf || !payload_len || (payload_len > MAX_PAYLOAD_SIZE) || !transport_up)) { ESP_LOGE(TAG, "tx fail: NULL buff, invalid len (%u) or len > max len (%u), transport_up(%u))", - wlen, MAX_PAYLOAD_SIZE, transport_up); - H_FREE_PTR_WITH_FUNC(free_func, wbuffer); + payload_len, MAX_PAYLOAD_SIZE, transport_up); + H_FREE_PTR_WITH_FUNC(free_func, buffer_to_free); return ESP_FAIL; } buf_handle.payload_zcopy = buff_zcopy; buf_handle.if_type = iface_type; buf_handle.if_num = iface_num; - buf_handle.payload_len = wlen; - buf_handle.payload = wbuffer; - buf_handle.priv_buffer_handle = wbuffer; + buf_handle.payload_len = payload_len; + buf_handle.payload = payload_buf; + buf_handle.priv_buffer_handle = buffer_to_free; buf_handle.free_buf_handle = free_func; - buf_handle.flag = flag; + buf_handle.flag = flags; if (buf_handle.if_type == ESP_SERIAL_IF) pkt_prio = PRIO_Q_SERIAL; @@ -697,7 +708,7 @@ int bus_inform_slave_host_power_save_start(void) } else { /* Use normal queue mechanism */ ret = esp_hosted_tx(ESP_SERIAL_IF, 0, NULL, 0, - H_BUFF_NO_ZEROCOPY, NULL, FLAG_POWER_SAVE_STARTED); + H_BUFF_NO_ZEROCOPY, NULL, NULL, FLAG_POWER_SAVE_STARTED); } return ret; @@ -731,7 +742,7 @@ int bus_inform_slave_host_power_save_stop(void) } else { /* Use normal queue mechanism */ ret = esp_hosted_tx(ESP_SERIAL_IF, 0, NULL, 0, - H_BUFF_NO_ZEROCOPY, NULL, FLAG_POWER_SAVE_STOPPED); + H_BUFF_NO_ZEROCOPY, NULL, NULL, FLAG_POWER_SAVE_STOPPED); } return ret; diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index 344b2e5a..ff960088 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -6,6 +6,6 @@ #ifndef __ESP_HOSTED_HOST_FW_VERSION_H__ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 -#define ESP_HOSTED_VERSION_MINOR_1 1 -#define ESP_HOSTED_VERSION_PATCH_1 11 +#define ESP_HOSTED_VERSION_MINOR_1 2 +#define ESP_HOSTED_VERSION_PATCH_1 0 #endif diff --git a/host/utils/stats.c b/host/utils/stats.c index bfd71f63..6978243e 100644 --- a/host/utils/stats.c +++ b/host/utils/stats.c @@ -130,7 +130,7 @@ static void raw_tp_tx_task(void const* pvParameters) for (i=0; i<(TEST_RAW_TP__BUF_SIZE/4-1); i++, ptr++) *ptr = 0xBAADF00D; - ret = esp_hosted_tx(ESP_TEST_IF, 0, raw_tp_tx_buf, TEST_RAW_TP__BUF_SIZE, H_BUFF_ZEROCOPY, H_DEFLT_FREE_FUNC, 0); + ret = esp_hosted_tx(ESP_TEST_IF, 0, raw_tp_tx_buf, TEST_RAW_TP__BUF_SIZE, H_BUFF_ZEROCOPY, raw_tp_tx_buf, H_DEFLT_FREE_FUNC, 0); #else raw_tp_tx_buf = mempool_alloc(buf_mp_g, MAX_TRANSPORT_BUFFER_SIZE, true); diff --git a/idf_component.yml b/idf_component.yml index 0ee36140..6db79366 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.1.11" +version: "2.2.0" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/esp_hosted_coprocessor.c b/slave/main/esp_hosted_coprocessor.c index efaa5d45..22dbb871 100644 --- a/slave/main/esp_hosted_coprocessor.c +++ b/slave/main/esp_hosted_coprocessor.c @@ -87,7 +87,7 @@ static struct rx_data { uint8_t valid; uint16_t cur_seq_no; int len; - uint8_t data[4096]; + uint8_t data[8192]; } r; uint8_t ap_mac[BSSID_BYTES_SIZE] = {0}; diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index 6f2e17fc..fa9353ee 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -6,6 +6,6 @@ #ifndef __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 -#define PROJECT_VERSION_MINOR_1 1 -#define PROJECT_VERSION_PATCH_1 11 +#define PROJECT_VERSION_MINOR_1 2 +#define PROJECT_VERSION_PATCH_1 0 #endif From 8291effc72397de7de083acaa7fd050947faafd1 Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Mon, 4 Aug 2025 11:26:59 +0800 Subject: [PATCH 069/114] feature(override_bt_rx): Allow external code to override Hosted BT Tx function - made `hci_rx_handler()` a WEAK reference - updated `hci_rx_handler()` to allow it to be overriden by an external function - added `H_WEAK_REF` and used it for all WEAK references in code Co-Authored-By: Jason2866 <24528715+Jason2866@users.noreply.github.com> --- host/api/include/esp_hosted_config.h | 11 +- host/api/src/esp_wifi_weak.c | 121 ++++++++++----------- host/drivers/bt/hci_drv.h | 10 +- host/drivers/bt/vhci_drv.c | 21 ++-- host/drivers/transport/sdio/sdio_drv.c | 4 +- host/drivers/transport/spi/spi_drv.c | 21 ++-- host/drivers/transport/spi_hd/spi_hd_drv.c | 21 ++-- host/drivers/transport/uart/uart_drv.c | 22 ++-- host/esp_hosted.h | 9 +- host/esp_hosted_bt.h | 10 +- host/esp_hosted_host_fw_ver.h | 2 +- idf_component.yml | 2 +- slave/main/esp_hosted_coprocessor_fw_ver.h | 2 +- 13 files changed, 117 insertions(+), 139 deletions(-) diff --git a/host/api/include/esp_hosted_config.h b/host/api/include/esp_hosted_config.h index 7bae907c..684b1d97 100644 --- a/host/api/include/esp_hosted_config.h +++ b/host/api/include/esp_hosted_config.h @@ -1,8 +1,8 @@ /* -* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD -* -* SPDX-License-Identifier: Apache-2.0 -*/ + * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #ifndef __ESP_HOSTED_CONFIG_H__ #define __ESP_HOSTED_CONFIG_H__ @@ -18,6 +18,9 @@ #define H_ESP_HOSTED_DFLT_TASK_STACK CONFIG_ESP_HOSTED_DFLT_TASK_STACK #endif +// to allow external code to override Hosted Functions if required +#define H_WEAK_REF __attribute__((weak)) + #define H_TRANSPORT_NONE 0 #define H_TRANSPORT_SDIO 1 #define H_TRANSPORT_SPI_HD 2 diff --git a/host/api/src/esp_wifi_weak.c b/host/api/src/esp_wifi_weak.c index ba9374d4..d286c661 100644 --- a/host/api/src/esp_wifi_weak.c +++ b/host/api/src/esp_wifi_weak.c @@ -1,17 +1,8 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2024 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ /** * Weak version of esp_wifi API. @@ -22,255 +13,253 @@ #include "esp_hosted_api_priv.h" #include "esp_hosted_wifi_config.h" -#define WEAK __attribute__((weak)) - -WEAK esp_err_t esp_wifi_init(const wifi_init_config_t *config) +H_WEAK_REF esp_err_t esp_wifi_init(const wifi_init_config_t *config) { return esp_wifi_remote_init(config); } -WEAK esp_err_t esp_wifi_deinit(void) +H_WEAK_REF esp_err_t esp_wifi_deinit(void) { return esp_wifi_remote_deinit(); } -WEAK esp_err_t esp_wifi_set_mode(wifi_mode_t mode) +H_WEAK_REF esp_err_t esp_wifi_set_mode(wifi_mode_t mode) { return esp_wifi_remote_set_mode(mode); } -WEAK esp_err_t esp_wifi_get_mode(wifi_mode_t *mode) +H_WEAK_REF esp_err_t esp_wifi_get_mode(wifi_mode_t *mode) { return esp_wifi_remote_get_mode(mode); } -WEAK esp_err_t esp_wifi_start(void) +H_WEAK_REF esp_err_t esp_wifi_start(void) { return esp_wifi_remote_start(); } -WEAK esp_err_t esp_wifi_stop(void) +H_WEAK_REF esp_err_t esp_wifi_stop(void) { return esp_wifi_remote_stop(); } -WEAK esp_err_t esp_wifi_restore(void) +H_WEAK_REF esp_err_t esp_wifi_restore(void) { return esp_wifi_remote_restore(); } -WEAK esp_err_t esp_wifi_connect(void) +H_WEAK_REF esp_err_t esp_wifi_connect(void) { return esp_wifi_remote_connect(); } -WEAK esp_err_t esp_wifi_disconnect(void) +H_WEAK_REF esp_err_t esp_wifi_disconnect(void) { return esp_wifi_remote_disconnect(); } -WEAK esp_err_t esp_wifi_clear_fast_connect(void) +H_WEAK_REF esp_err_t esp_wifi_clear_fast_connect(void) { return esp_wifi_remote_clear_fast_connect(); } -WEAK esp_err_t esp_wifi_deauth_sta(uint16_t aid) +H_WEAK_REF esp_err_t esp_wifi_deauth_sta(uint16_t aid) { return esp_wifi_remote_deauth_sta(aid); } -WEAK esp_err_t esp_wifi_scan_start(const wifi_scan_config_t *config, bool block) +H_WEAK_REF esp_err_t esp_wifi_scan_start(const wifi_scan_config_t *config, bool block) { return esp_wifi_remote_scan_start(config, block); } -WEAK esp_err_t esp_wifi_scan_stop(void) +H_WEAK_REF esp_err_t esp_wifi_scan_stop(void) { return esp_wifi_remote_scan_stop(); } -WEAK esp_err_t esp_wifi_scan_get_ap_num(uint16_t *number) +H_WEAK_REF esp_err_t esp_wifi_scan_get_ap_num(uint16_t *number) { return esp_wifi_remote_scan_get_ap_num(number); } -WEAK esp_err_t esp_wifi_scan_get_ap_record(wifi_ap_record_t *ap_record) +H_WEAK_REF esp_err_t esp_wifi_scan_get_ap_record(wifi_ap_record_t *ap_record) { return esp_wifi_remote_scan_get_ap_record(ap_record); } -WEAK esp_err_t esp_wifi_scan_get_ap_records(uint16_t *number, wifi_ap_record_t *ap_records) +H_WEAK_REF esp_err_t esp_wifi_scan_get_ap_records(uint16_t *number, wifi_ap_record_t *ap_records) { return esp_wifi_remote_scan_get_ap_records(number, ap_records); } -WEAK esp_err_t esp_wifi_clear_ap_list(void) +H_WEAK_REF esp_err_t esp_wifi_clear_ap_list(void) { return esp_wifi_remote_clear_ap_list(); } -WEAK esp_err_t esp_wifi_sta_get_ap_info(wifi_ap_record_t *ap_info) +H_WEAK_REF esp_err_t esp_wifi_sta_get_ap_info(wifi_ap_record_t *ap_info) { return esp_wifi_remote_sta_get_ap_info(ap_info); } -WEAK esp_err_t esp_wifi_set_ps(wifi_ps_type_t type) +H_WEAK_REF esp_err_t esp_wifi_set_ps(wifi_ps_type_t type) { return esp_wifi_remote_set_ps(type); } -WEAK esp_err_t esp_wifi_get_ps(wifi_ps_type_t *type) +H_WEAK_REF esp_err_t esp_wifi_get_ps(wifi_ps_type_t *type) { return esp_wifi_remote_get_ps(type); } -WEAK esp_err_t esp_wifi_set_protocol(wifi_interface_t ifx, uint8_t protocol_bitmap) +H_WEAK_REF esp_err_t esp_wifi_set_protocol(wifi_interface_t ifx, uint8_t protocol_bitmap) { return esp_wifi_remote_set_protocol(ifx, protocol_bitmap); } -WEAK esp_err_t esp_wifi_get_protocol(wifi_interface_t ifx, uint8_t *protocol_bitmap) +H_WEAK_REF esp_err_t esp_wifi_get_protocol(wifi_interface_t ifx, uint8_t *protocol_bitmap) { return esp_wifi_remote_get_protocol(ifx, protocol_bitmap); } -WEAK esp_err_t esp_wifi_set_bandwidth(wifi_interface_t ifx, wifi_bandwidth_t bw) +H_WEAK_REF esp_err_t esp_wifi_set_bandwidth(wifi_interface_t ifx, wifi_bandwidth_t bw) { return esp_wifi_remote_set_bandwidth(ifx, bw); } -WEAK esp_err_t esp_wifi_get_bandwidth(wifi_interface_t ifx, wifi_bandwidth_t *bw) +H_WEAK_REF esp_err_t esp_wifi_get_bandwidth(wifi_interface_t ifx, wifi_bandwidth_t *bw) { return esp_wifi_remote_get_bandwidth(ifx, bw); } -WEAK esp_err_t esp_wifi_set_channel(uint8_t primary, wifi_second_chan_t second) +H_WEAK_REF esp_err_t esp_wifi_set_channel(uint8_t primary, wifi_second_chan_t second) { return esp_wifi_remote_set_channel(primary, second); } -WEAK esp_err_t esp_wifi_get_channel(uint8_t *primary, wifi_second_chan_t *second) +H_WEAK_REF esp_err_t esp_wifi_get_channel(uint8_t *primary, wifi_second_chan_t *second) { return esp_wifi_remote_get_channel(primary, second); } -WEAK esp_err_t esp_wifi_set_country(const wifi_country_t *country) +H_WEAK_REF esp_err_t esp_wifi_set_country(const wifi_country_t *country) { return esp_wifi_remote_set_country(country); } -WEAK esp_err_t esp_wifi_get_country(wifi_country_t *country) +H_WEAK_REF esp_err_t esp_wifi_get_country(wifi_country_t *country) { return esp_wifi_remote_get_country(country); } -WEAK esp_err_t esp_wifi_set_mac(wifi_interface_t ifx, const uint8_t mac[6]) +H_WEAK_REF esp_err_t esp_wifi_set_mac(wifi_interface_t ifx, const uint8_t mac[6]) { return esp_wifi_remote_set_mac(ifx, mac); } -WEAK esp_err_t esp_wifi_get_mac(wifi_interface_t ifx, uint8_t mac[6]) +H_WEAK_REF esp_err_t esp_wifi_get_mac(wifi_interface_t ifx, uint8_t mac[6]) { return esp_wifi_remote_get_mac(ifx, mac); } -WEAK esp_err_t esp_wifi_set_config(wifi_interface_t interface, wifi_config_t *conf) +H_WEAK_REF esp_err_t esp_wifi_set_config(wifi_interface_t interface, wifi_config_t *conf) { return esp_wifi_remote_set_config(interface, conf); } -WEAK esp_err_t esp_wifi_get_config(wifi_interface_t interface, wifi_config_t *conf) +H_WEAK_REF esp_err_t esp_wifi_get_config(wifi_interface_t interface, wifi_config_t *conf) { return esp_wifi_remote_get_config(interface, conf); } -WEAK esp_err_t esp_wifi_ap_get_sta_list(wifi_sta_list_t *sta) +H_WEAK_REF esp_err_t esp_wifi_ap_get_sta_list(wifi_sta_list_t *sta) { return esp_wifi_remote_ap_get_sta_list(sta); } -WEAK esp_err_t esp_wifi_ap_get_sta_aid(const uint8_t mac[6], uint16_t *aid) +H_WEAK_REF esp_err_t esp_wifi_ap_get_sta_aid(const uint8_t mac[6], uint16_t *aid) { return esp_wifi_remote_ap_get_sta_aid(mac, aid); } -WEAK esp_err_t esp_wifi_set_storage(wifi_storage_t storage) +H_WEAK_REF esp_err_t esp_wifi_set_storage(wifi_storage_t storage) { return esp_wifi_remote_set_storage(storage); } -WEAK esp_err_t esp_wifi_set_max_tx_power(int8_t power) +H_WEAK_REF esp_err_t esp_wifi_set_max_tx_power(int8_t power) { return esp_wifi_remote_set_max_tx_power(power); } -WEAK esp_err_t esp_wifi_get_max_tx_power(int8_t *power) +H_WEAK_REF esp_err_t esp_wifi_get_max_tx_power(int8_t *power) { return esp_wifi_remote_get_max_tx_power(power); } -WEAK esp_err_t esp_wifi_set_country_code(const char *country, bool ieee80211d_enabled) +H_WEAK_REF esp_err_t esp_wifi_set_country_code(const char *country, bool ieee80211d_enabled) { return esp_wifi_remote_set_country_code(country, ieee80211d_enabled); } -WEAK esp_err_t esp_wifi_get_country_code(char *country) +H_WEAK_REF esp_err_t esp_wifi_get_country_code(char *country) { return esp_wifi_remote_get_country_code(country); } -WEAK esp_err_t esp_wifi_sta_get_negotiated_phymode(wifi_phy_mode_t *phymode) +H_WEAK_REF esp_err_t esp_wifi_sta_get_negotiated_phymode(wifi_phy_mode_t *phymode) { return esp_wifi_remote_sta_get_negotiated_phymode(phymode); } -WEAK esp_err_t esp_wifi_sta_get_aid(uint16_t *aid) +H_WEAK_REF esp_err_t esp_wifi_sta_get_aid(uint16_t *aid) { return esp_wifi_remote_sta_get_aid(aid); } -WEAK esp_err_t esp_wifi_sta_get_rssi(int *rssi) +H_WEAK_REF esp_err_t esp_wifi_sta_get_rssi(int *rssi) { return esp_wifi_remote_sta_get_rssi(rssi); } #if H_WIFI_DUALBAND_SUPPORT -WEAK esp_err_t esp_wifi_set_band(wifi_band_t band) +H_WEAK_REF esp_err_t esp_wifi_set_band(wifi_band_t band) { return esp_wifi_remote_set_band(band); } -WEAK esp_err_t esp_wifi_get_band(wifi_band_t *band) +H_WEAK_REF esp_err_t esp_wifi_get_band(wifi_band_t *band) { return esp_wifi_remote_get_band(band); } -WEAK esp_err_t esp_wifi_set_band_mode(wifi_band_mode_t band_mode) +H_WEAK_REF esp_err_t esp_wifi_set_band_mode(wifi_band_mode_t band_mode) { return esp_wifi_remote_set_band_mode(band_mode); } -WEAK esp_err_t esp_wifi_get_band_mode(wifi_band_mode_t *band_mode) +H_WEAK_REF esp_err_t esp_wifi_get_band_mode(wifi_band_mode_t *band_mode) { return esp_wifi_remote_get_band_mode(band_mode); } -WEAK esp_err_t esp_wifi_set_protocols(wifi_interface_t ifx, wifi_protocols_t *protocols) +H_WEAK_REF esp_err_t esp_wifi_set_protocols(wifi_interface_t ifx, wifi_protocols_t *protocols) { return esp_wifi_remote_set_protocols(ifx, protocols); } -WEAK esp_err_t esp_wifi_get_protocols(wifi_interface_t ifx, wifi_protocols_t *protocols) +H_WEAK_REF esp_err_t esp_wifi_get_protocols(wifi_interface_t ifx, wifi_protocols_t *protocols) { return esp_wifi_remote_get_protocols(ifx, protocols); } -WEAK esp_err_t esp_wifi_set_bandwidths(wifi_interface_t ifx, wifi_bandwidths_t *bw) +H_WEAK_REF esp_err_t esp_wifi_set_bandwidths(wifi_interface_t ifx, wifi_bandwidths_t *bw) { return esp_wifi_remote_set_bandwidths(ifx, bw); } -WEAK esp_err_t esp_wifi_get_bandwidths(wifi_interface_t ifx, wifi_bandwidths_t *bw) +H_WEAK_REF esp_err_t esp_wifi_get_bandwidths(wifi_interface_t ifx, wifi_bandwidths_t *bw) { return esp_wifi_remote_get_bandwidths(ifx, bw); } diff --git a/host/drivers/bt/hci_drv.h b/host/drivers/bt/hci_drv.h index 5eb01ff8..c3770275 100644 --- a/host/drivers/bt/hci_drv.h +++ b/host/drivers/bt/hci_drv.h @@ -1,5 +1,8 @@ -// Copyright 2015-2024 Espressif Systems (Shanghai) PTE LTD -/* SPDX-License-Identifier: GPL-2.0 OR Apache-2.0 */ +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #ifndef __HOSTED_HCI_DRV_H #define __HOSTED_HCI_DRV_H @@ -12,7 +15,4 @@ void hci_drv_init(void); void hci_drv_show_configuration(void); -// Handles BT Rx -int hci_rx_handler(interface_buffer_handle_t *buf_handle); - #endif diff --git a/host/drivers/bt/vhci_drv.c b/host/drivers/bt/vhci_drv.c index 3e4f6305..7edcd4f0 100644 --- a/host/drivers/bt/vhci_drv.c +++ b/host/drivers/bt/vhci_drv.c @@ -1,5 +1,8 @@ -// Copyright 2015-2024 Espressif Systems (Shanghai) PTE LTD -/* SPDX-License-Identifier: GPL-2.0 OR Apache-2.0 */ +/* + * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #include @@ -17,9 +20,7 @@ #include "nimble/hci_common.h" #endif -#if H_BT_HOST_ESP_BLUEDROID #include "esp_hosted_bt.h" -#endif #include "esp_hosted_log.h" static const char TAG[] = "vhci_drv"; @@ -44,10 +45,10 @@ void hci_drv_show_configuration(void) /** * HCI_H4_xxx is the first byte of the received data */ -__WEAK__ int hci_rx_handler(interface_buffer_handle_t *buf_handle) +H_WEAK_REF int hci_rx_handler(uint8_t *buf, size_t buf_len) { - uint8_t * data = buf_handle->payload; - uint32_t len_total_read = buf_handle->payload_len; + uint8_t * data = buf; + uint32_t len_total_read = buf_len; int rc; @@ -207,10 +208,10 @@ int ble_transport_to_ll_cmd_impl(void *buf) #if H_BT_HOST_ESP_BLUEDROID static esp_bluedroid_hci_driver_callbacks_t s_callback = { 0 }; -__WEAK__ int hci_rx_handler(interface_buffer_handle_t *buf_handle) +H_WEAK_REF int hci_rx_handler(uint8_t *buf, size_t buf_len) { - uint8_t * data = buf_handle->payload; - uint32_t len_total_read = buf_handle->payload_len; + uint8_t * data = buf; + uint32_t len_total_read = buf_len; if (s_callback.notify_host_recv) { s_callback.notify_host_recv(data, len_total_read); diff --git a/host/drivers/transport/sdio/sdio_drv.c b/host/drivers/transport/sdio/sdio_drv.c index 217da010..95ef49d1 100644 --- a/host/drivers/transport/sdio/sdio_drv.c +++ b/host/drivers/transport/sdio/sdio_drv.c @@ -86,7 +86,7 @@ #include "esp_hosted_power_save.h" #include "esp_hosted_config.h" #include "esp_hosted_transport_config.h" - +#include "esp_hosted_bt.h" static const char TAG[] = "H_SDIO_DRV"; @@ -1216,7 +1216,7 @@ static void sdio_process_rx_task(void const* pvParameters) ESP_LOGI(TAG, "Write thread started"); sdio_start_write_thread = true; } else if (buf_handle->if_type == ESP_HCI_IF) { - hci_rx_handler(buf_handle); + hci_rx_handler(buf_handle->payload, buf_handle->payload_len); } else if (buf_handle->if_type == ESP_TEST_IF) { #if TEST_RAW_TP update_test_raw_tp_rx_len(buf_handle->payload_len + diff --git a/host/drivers/transport/spi/spi_drv.c b/host/drivers/transport/spi/spi_drv.c index 68241e6c..a4c64528 100644 --- a/host/drivers/transport/spi/spi_drv.c +++ b/host/drivers/transport/spi/spi_drv.c @@ -1,16 +1,8 @@ -// Copyright 2015-2021 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #include "mempool.h" @@ -28,6 +20,7 @@ #include "power_save_drv.h" #include "esp_hosted_power_save.h" #include "esp_hosted_transport_config.h" +#include "esp_hosted_bt.h" DEFINE_LOG_TAG(spi); @@ -690,7 +683,7 @@ static void spi_process_rx_task(void const* pvParameters) /* User can re-use this type of transaction */ } } else if (buf_handle->if_type == ESP_HCI_IF) { - hci_rx_handler(buf_handle); + hci_rx_handler(buf_handle->payload, buf_handle->payload_len); } else if (buf_handle->if_type == ESP_TEST_IF) { #if TEST_RAW_TP update_test_raw_tp_rx_len(buf_handle->payload_len+H_ESP_PAYLOAD_HEADER_OFFSET); diff --git a/host/drivers/transport/spi_hd/spi_hd_drv.c b/host/drivers/transport/spi_hd/spi_hd_drv.c index 53002c22..fe5f0cbc 100644 --- a/host/drivers/transport/spi_hd/spi_hd_drv.c +++ b/host/drivers/transport/spi_hd/spi_hd_drv.c @@ -1,17 +1,9 @@ // SPDX-License-Identifier: Apache-2.0 -// Copyright 2024 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ /** Includes **/ @@ -32,6 +24,7 @@ #include "power_save_drv.h" #include "esp_hosted_power_save.h" #include "esp_hosted_transport_config.h" +#include "esp_hosted_bt.h" static const char TAG[] = "H_SPI_HD_DRV"; @@ -686,7 +679,7 @@ static void spi_hd_process_rx_task(void const* pvParameters) /* User can re-use this type of transaction */ } } else if (buf_handle->if_type == ESP_HCI_IF) { - hci_rx_handler(buf_handle); + hci_rx_handler(buf_handle->payload, buf_handle->payload_len); } else if (buf_handle->if_type == ESP_TEST_IF) { #if TEST_RAW_TP update_test_raw_tp_rx_len(buf_handle->payload_len + diff --git a/host/drivers/transport/uart/uart_drv.c b/host/drivers/transport/uart/uart_drv.c index dc136f88..44880c12 100644 --- a/host/drivers/transport/uart/uart_drv.c +++ b/host/drivers/transport/uart/uart_drv.c @@ -1,17 +1,9 @@ // SPDX-License-Identifier: Apache-2.0 -// Copyright 2015-2024 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ /** Includes **/ @@ -26,7 +18,7 @@ #include "esp_hosted_power_save.h" #include "esp_hosted_transport_config.h" #include "power_save_drv.h" - +#include "esp_hosted_bt.h" static const char TAG[] = "H_UART_DRV"; @@ -291,7 +283,7 @@ static void h_uart_process_rx_task(void const* pvParameters) /* User can re-use this type of transaction */ } } else if (buf_handle->if_type == ESP_HCI_IF) { - hci_rx_handler(buf_handle); + hci_rx_handler(buf_handle->payload, buf_handle->payload_len); } else if (buf_handle->if_type == ESP_TEST_IF) { #if TEST_RAW_TP update_test_raw_tp_rx_len(buf_handle->payload_len + diff --git a/host/esp_hosted.h b/host/esp_hosted.h index 1cdaab8c..8194ff0a 100644 --- a/host/esp_hosted.h +++ b/host/esp_hosted.h @@ -1,8 +1,8 @@ /* -* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD -* -* SPDX-License-Identifier: Apache-2.0 -*/ + * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #ifndef __ESP_HOSTED_H__ #define __ESP_HOSTED_H__ @@ -12,6 +12,7 @@ extern "C" { #endif #include "esp_hosted_config.h" +#include "esp_hosted_bt.h" #include "esp_hosted_bt_config.h" #include "esp_hosted_transport_config.h" #include "esp_hosted_api_types.h" diff --git a/host/esp_hosted_bt.h b/host/esp_hosted_bt.h index 3e6d86a0..9c0c364d 100644 --- a/host/esp_hosted_bt.h +++ b/host/esp_hosted_bt.h @@ -1,11 +1,17 @@ -// Copyright 2015-2024 Espressif Systems (Shanghai) PTE LTD -/* SPDX-License-Identifier: GPL-2.0 OR Apache-2.0 */ +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #ifndef __ESP_HOSTED_BT_H #define __ESP_HOSTED_BT_H #include "esp_hosted_bt_config.h" +// Handles BT Rx +int hci_rx_handler(uint8_t *buf, size_t buf_len); + #if H_BT_HOST_ESP_BLUEDROID #include "esp_bluedroid_hci.h" diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index ff960088..8bbd3c92 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 #define ESP_HOSTED_VERSION_MINOR_1 2 -#define ESP_HOSTED_VERSION_PATCH_1 0 +#define ESP_HOSTED_VERSION_PATCH_1 1 #endif diff --git a/idf_component.yml b/idf_component.yml index 6db79366..df0b378c 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.2.0" +version: "2.2.1" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index fa9353ee..2b2f9b85 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 #define PROJECT_VERSION_MINOR_1 2 -#define PROJECT_VERSION_PATCH_1 0 +#define PROJECT_VERSION_PATCH_1 1 #endif From 06df029b9660851215f6e9373a508d938d9cd753 Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Fri, 13 Jun 2025 17:57:01 +0800 Subject: [PATCH 070/114] feature(ps_itwt): Add new RPC interfaces to support power save and itwt Added these esp_wifi APIs - `esp_wifi_set_inactive_time()` - `esp_wifi_get_inactive_time()` - `esp_wifi_sta_twt_config()` - `esp_wifi_sta_itwt_setup()` - `esp_wifi_sta_itwt_teardown()` - `esp_wifi_sta_itwt_suspend()` - `esp_wifi_sta_itwt_get_flow_id_status()` - `esp_wifi_sta_itwt_send_probe_req()` - `esp_wifi_sta_itwt_set_target_wake_time_offset()` Added these esp_wifi events: - `WIFI_EVENT_ITWT_SETUP` - `WIFI_EVENT_ITWT_TEARDOWN` - `WIFI_EVENT_ITWT_SUSPEND` - `WIFI_EVENT_ITWT_PROBE` Added Kconfig on host to enable/disable iTWT support if SOC supports iTwt Added itwt example - added new itwt commands to test supported itwt APIs - get flowid bitmap - update target wake time offset Updated copyright check to allow Unlicensed or CC0-1.0 Tested with C6 and C5 as co-processor --- Kconfig | 9 + common/proto/esp_hosted_rpc.pb-c.c | 11563 ++++++++++------ common/proto/esp_hosted_rpc.pb-c.h | 949 +- common/proto/esp_hosted_rpc.proto | 179 +- common/rpc/esp_hosted_bitmasks.h | 21 + examples/host_wifi_itwt/CMakeLists.txt | 8 + examples/host_wifi_itwt/README.md | 31 + examples/host_wifi_itwt/main/CMakeLists.txt | 5 + .../host_wifi_itwt/main/Kconfig.projbuild | 179 + .../host_wifi_itwt/main/idf_component.yml | 13 + examples/host_wifi_itwt/main/itwt_main.c | 374 + examples/host_wifi_itwt/main/wifi_cmd.h | 18 + examples/host_wifi_itwt/main/wifi_itwt_cmd.c | 259 + examples/host_wifi_itwt/main/wifi_stats_cmd.c | 584 + examples/host_wifi_itwt/sdkconfig.defaults | 19 + .../host_wifi_itwt/sdkconfig.defaults.esp32p4 | 1 + host/api/priv/esp_hosted_api_priv.h | 12 + host/api/src/esp_hosted_api.c | 48 + host/api/src/esp_wifi_weak.c | 48 + host/drivers/rpc/core/rpc_evt.c | 79 +- host/drivers/rpc/core/rpc_req.c | 81 + host/drivers/rpc/core/rpc_rsp.c | 42 + host/drivers/rpc/slaveif/rpc_slave_if.c | 62 +- host/drivers/rpc/slaveif/rpc_slave_if.h | 55 +- host/drivers/rpc/wrap/rpc_wrap.c | 162 +- host/drivers/rpc/wrap/rpc_wrap.h | 13 +- host/esp_hosted_host_fw_ver.h | 2 +- .../freertos/include/esp_hosted_wifi_config.h | 6 + idf_component.yml | 2 +- slave/main/esp_hosted_coprocessor_fw_ver.h | 2 +- slave/main/slave_control.c | 502 +- tools/check_copyright_config.yaml | 2 + 32 files changed, 10679 insertions(+), 4651 deletions(-) create mode 100644 examples/host_wifi_itwt/CMakeLists.txt create mode 100644 examples/host_wifi_itwt/README.md create mode 100644 examples/host_wifi_itwt/main/CMakeLists.txt create mode 100644 examples/host_wifi_itwt/main/Kconfig.projbuild create mode 100644 examples/host_wifi_itwt/main/idf_component.yml create mode 100644 examples/host_wifi_itwt/main/itwt_main.c create mode 100644 examples/host_wifi_itwt/main/wifi_cmd.h create mode 100644 examples/host_wifi_itwt/main/wifi_itwt_cmd.c create mode 100644 examples/host_wifi_itwt/main/wifi_stats_cmd.c create mode 100644 examples/host_wifi_itwt/sdkconfig.defaults create mode 100644 examples/host_wifi_itwt/sdkconfig.defaults.esp32p4 diff --git a/Kconfig b/Kconfig index c902ecc7..4df1daaa 100644 --- a/Kconfig +++ b/Kconfig @@ -1497,6 +1497,15 @@ ESP32XX_SPI_HD_CLK_FREQ_RANGE_MAX := 40 default 3072 endmenu + config ESP_HOSTED_ENABLE_ITWT + bool "Enable iTWT support" + depends on SLAVE_SOC_WIFI_HE_SUPPORT + default y + help + Enable Wi-Fi iTWT (individual Target Wake Time) APIs on Host. Using the API, Host + can instruct the co-processor to negotiate specific wake and sleep schedules with + the access point (AP) for lower power consumption. + config ESP_HOSTED_USE_MEMPOOL bool "Cache allocated memory like mempool - helps to reduce malloc calls" default y diff --git a/common/proto/esp_hosted_rpc.pb-c.c b/common/proto/esp_hosted_rpc.pb-c.c index b23b20e8..649b988c 100644 --- a/common/proto/esp_hosted_rpc.pb-c.c +++ b/common/proto/esp_hosted_rpc.pb-c.c @@ -1987,6 +1987,96 @@ void wifi_bandwidths__free_unpacked assert(message->base.descriptor == &wifi_bandwidths__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } +void wifi_itwt_setup_config__init + (WifiItwtSetupConfig *message) +{ + static const WifiItwtSetupConfig init_value = WIFI_ITWT_SETUP_CONFIG__INIT; + *message = init_value; +} +size_t wifi_itwt_setup_config__get_packed_size + (const WifiItwtSetupConfig *message) +{ + assert(message->base.descriptor == &wifi_itwt_setup_config__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t wifi_itwt_setup_config__pack + (const WifiItwtSetupConfig *message, + uint8_t *out) +{ + assert(message->base.descriptor == &wifi_itwt_setup_config__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t wifi_itwt_setup_config__pack_to_buffer + (const WifiItwtSetupConfig *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &wifi_itwt_setup_config__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +WifiItwtSetupConfig * + wifi_itwt_setup_config__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (WifiItwtSetupConfig *) + protobuf_c_message_unpack (&wifi_itwt_setup_config__descriptor, + allocator, len, data); +} +void wifi_itwt_setup_config__free_unpacked + (WifiItwtSetupConfig *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &wifi_itwt_setup_config__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void wifi_twt_config__init + (WifiTwtConfig *message) +{ + static const WifiTwtConfig init_value = WIFI_TWT_CONFIG__INIT; + *message = init_value; +} +size_t wifi_twt_config__get_packed_size + (const WifiTwtConfig *message) +{ + assert(message->base.descriptor == &wifi_twt_config__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t wifi_twt_config__pack + (const WifiTwtConfig *message, + uint8_t *out) +{ + assert(message->base.descriptor == &wifi_twt_config__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t wifi_twt_config__pack_to_buffer + (const WifiTwtConfig *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &wifi_twt_config__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +WifiTwtConfig * + wifi_twt_config__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (WifiTwtConfig *) + protobuf_c_message_unpack (&wifi_twt_config__descriptor, + allocator, len, data); +} +void wifi_twt_config__free_unpacked + (WifiTwtConfig *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &wifi_twt_config__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} void connected_stalist__init (ConnectedSTAList *message) { @@ -6892,1873 +6982,3122 @@ void rpc__resp__wifi_get_band_mode__free_unpacked assert(message->base.descriptor == &rpc__resp__wifi_get_band_mode__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__req__get_coprocessor_fw_version__init - (RpcReqGetCoprocessorFwVersion *message) +void rpc__req__wifi_set_inactive_time__init + (RpcReqWifiSetInactiveTime *message) { - static const RpcReqGetCoprocessorFwVersion init_value = RPC__REQ__GET_COPROCESSOR_FW_VERSION__INIT; + static const RpcReqWifiSetInactiveTime init_value = RPC__REQ__WIFI_SET_INACTIVE_TIME__INIT; *message = init_value; } -size_t rpc__req__get_coprocessor_fw_version__get_packed_size - (const RpcReqGetCoprocessorFwVersion *message) +size_t rpc__req__wifi_set_inactive_time__get_packed_size + (const RpcReqWifiSetInactiveTime *message) { - assert(message->base.descriptor == &rpc__req__get_coprocessor_fw_version__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_set_inactive_time__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__req__get_coprocessor_fw_version__pack - (const RpcReqGetCoprocessorFwVersion *message, +size_t rpc__req__wifi_set_inactive_time__pack + (const RpcReqWifiSetInactiveTime *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__req__get_coprocessor_fw_version__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_set_inactive_time__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__req__get_coprocessor_fw_version__pack_to_buffer - (const RpcReqGetCoprocessorFwVersion *message, +size_t rpc__req__wifi_set_inactive_time__pack_to_buffer + (const RpcReqWifiSetInactiveTime *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__req__get_coprocessor_fw_version__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_set_inactive_time__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcReqGetCoprocessorFwVersion * - rpc__req__get_coprocessor_fw_version__unpack +RpcReqWifiSetInactiveTime * + rpc__req__wifi_set_inactive_time__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcReqGetCoprocessorFwVersion *) - protobuf_c_message_unpack (&rpc__req__get_coprocessor_fw_version__descriptor, + return (RpcReqWifiSetInactiveTime *) + protobuf_c_message_unpack (&rpc__req__wifi_set_inactive_time__descriptor, allocator, len, data); } -void rpc__req__get_coprocessor_fw_version__free_unpacked - (RpcReqGetCoprocessorFwVersion *message, +void rpc__req__wifi_set_inactive_time__free_unpacked + (RpcReqWifiSetInactiveTime *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__req__get_coprocessor_fw_version__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_set_inactive_time__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__resp__get_coprocessor_fw_version__init - (RpcRespGetCoprocessorFwVersion *message) +void rpc__resp__wifi_set_inactive_time__init + (RpcRespWifiSetInactiveTime *message) { - static const RpcRespGetCoprocessorFwVersion init_value = RPC__RESP__GET_COPROCESSOR_FW_VERSION__INIT; + static const RpcRespWifiSetInactiveTime init_value = RPC__RESP__WIFI_SET_INACTIVE_TIME__INIT; *message = init_value; } -size_t rpc__resp__get_coprocessor_fw_version__get_packed_size - (const RpcRespGetCoprocessorFwVersion *message) +size_t rpc__resp__wifi_set_inactive_time__get_packed_size + (const RpcRespWifiSetInactiveTime *message) { - assert(message->base.descriptor == &rpc__resp__get_coprocessor_fw_version__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_set_inactive_time__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__resp__get_coprocessor_fw_version__pack - (const RpcRespGetCoprocessorFwVersion *message, +size_t rpc__resp__wifi_set_inactive_time__pack + (const RpcRespWifiSetInactiveTime *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__resp__get_coprocessor_fw_version__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_set_inactive_time__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__resp__get_coprocessor_fw_version__pack_to_buffer - (const RpcRespGetCoprocessorFwVersion *message, +size_t rpc__resp__wifi_set_inactive_time__pack_to_buffer + (const RpcRespWifiSetInactiveTime *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__resp__get_coprocessor_fw_version__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_set_inactive_time__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcRespGetCoprocessorFwVersion * - rpc__resp__get_coprocessor_fw_version__unpack +RpcRespWifiSetInactiveTime * + rpc__resp__wifi_set_inactive_time__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcRespGetCoprocessorFwVersion *) - protobuf_c_message_unpack (&rpc__resp__get_coprocessor_fw_version__descriptor, + return (RpcRespWifiSetInactiveTime *) + protobuf_c_message_unpack (&rpc__resp__wifi_set_inactive_time__descriptor, allocator, len, data); } -void rpc__resp__get_coprocessor_fw_version__free_unpacked - (RpcRespGetCoprocessorFwVersion *message, +void rpc__resp__wifi_set_inactive_time__free_unpacked + (RpcRespWifiSetInactiveTime *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__resp__get_coprocessor_fw_version__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_set_inactive_time__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__req__set_dhcp_dns_status__init - (RpcReqSetDhcpDnsStatus *message) +void rpc__req__wifi_get_inactive_time__init + (RpcReqWifiGetInactiveTime *message) { - static const RpcReqSetDhcpDnsStatus init_value = RPC__REQ__SET_DHCP_DNS_STATUS__INIT; + static const RpcReqWifiGetInactiveTime init_value = RPC__REQ__WIFI_GET_INACTIVE_TIME__INIT; *message = init_value; } -size_t rpc__req__set_dhcp_dns_status__get_packed_size - (const RpcReqSetDhcpDnsStatus *message) +size_t rpc__req__wifi_get_inactive_time__get_packed_size + (const RpcReqWifiGetInactiveTime *message) { - assert(message->base.descriptor == &rpc__req__set_dhcp_dns_status__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_get_inactive_time__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__req__set_dhcp_dns_status__pack - (const RpcReqSetDhcpDnsStatus *message, +size_t rpc__req__wifi_get_inactive_time__pack + (const RpcReqWifiGetInactiveTime *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__req__set_dhcp_dns_status__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_get_inactive_time__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__req__set_dhcp_dns_status__pack_to_buffer - (const RpcReqSetDhcpDnsStatus *message, +size_t rpc__req__wifi_get_inactive_time__pack_to_buffer + (const RpcReqWifiGetInactiveTime *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__req__set_dhcp_dns_status__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_get_inactive_time__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcReqSetDhcpDnsStatus * - rpc__req__set_dhcp_dns_status__unpack +RpcReqWifiGetInactiveTime * + rpc__req__wifi_get_inactive_time__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcReqSetDhcpDnsStatus *) - protobuf_c_message_unpack (&rpc__req__set_dhcp_dns_status__descriptor, + return (RpcReqWifiGetInactiveTime *) + protobuf_c_message_unpack (&rpc__req__wifi_get_inactive_time__descriptor, allocator, len, data); } -void rpc__req__set_dhcp_dns_status__free_unpacked - (RpcReqSetDhcpDnsStatus *message, +void rpc__req__wifi_get_inactive_time__free_unpacked + (RpcReqWifiGetInactiveTime *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__req__set_dhcp_dns_status__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_get_inactive_time__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__resp__set_dhcp_dns_status__init - (RpcRespSetDhcpDnsStatus *message) +void rpc__resp__wifi_get_inactive_time__init + (RpcRespWifiGetInactiveTime *message) { - static const RpcRespSetDhcpDnsStatus init_value = RPC__RESP__SET_DHCP_DNS_STATUS__INIT; + static const RpcRespWifiGetInactiveTime init_value = RPC__RESP__WIFI_GET_INACTIVE_TIME__INIT; *message = init_value; } -size_t rpc__resp__set_dhcp_dns_status__get_packed_size - (const RpcRespSetDhcpDnsStatus *message) +size_t rpc__resp__wifi_get_inactive_time__get_packed_size + (const RpcRespWifiGetInactiveTime *message) { - assert(message->base.descriptor == &rpc__resp__set_dhcp_dns_status__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_get_inactive_time__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__resp__set_dhcp_dns_status__pack - (const RpcRespSetDhcpDnsStatus *message, +size_t rpc__resp__wifi_get_inactive_time__pack + (const RpcRespWifiGetInactiveTime *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__resp__set_dhcp_dns_status__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_get_inactive_time__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__resp__set_dhcp_dns_status__pack_to_buffer - (const RpcRespSetDhcpDnsStatus *message, +size_t rpc__resp__wifi_get_inactive_time__pack_to_buffer + (const RpcRespWifiGetInactiveTime *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__resp__set_dhcp_dns_status__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_get_inactive_time__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcRespSetDhcpDnsStatus * - rpc__resp__set_dhcp_dns_status__unpack +RpcRespWifiGetInactiveTime * + rpc__resp__wifi_get_inactive_time__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcRespSetDhcpDnsStatus *) - protobuf_c_message_unpack (&rpc__resp__set_dhcp_dns_status__descriptor, + return (RpcRespWifiGetInactiveTime *) + protobuf_c_message_unpack (&rpc__resp__wifi_get_inactive_time__descriptor, allocator, len, data); } -void rpc__resp__set_dhcp_dns_status__free_unpacked - (RpcRespSetDhcpDnsStatus *message, +void rpc__resp__wifi_get_inactive_time__free_unpacked + (RpcRespWifiGetInactiveTime *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__resp__set_dhcp_dns_status__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_get_inactive_time__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__req__get_dhcp_dns_status__init - (RpcReqGetDhcpDnsStatus *message) +void rpc__req__wifi_sta_itwt_setup__init + (RpcReqWifiStaItwtSetup *message) { - static const RpcReqGetDhcpDnsStatus init_value = RPC__REQ__GET_DHCP_DNS_STATUS__INIT; + static const RpcReqWifiStaItwtSetup init_value = RPC__REQ__WIFI_STA_ITWT_SETUP__INIT; *message = init_value; } -size_t rpc__req__get_dhcp_dns_status__get_packed_size - (const RpcReqGetDhcpDnsStatus *message) +size_t rpc__req__wifi_sta_itwt_setup__get_packed_size + (const RpcReqWifiStaItwtSetup *message) { - assert(message->base.descriptor == &rpc__req__get_dhcp_dns_status__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_itwt_setup__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__req__get_dhcp_dns_status__pack - (const RpcReqGetDhcpDnsStatus *message, +size_t rpc__req__wifi_sta_itwt_setup__pack + (const RpcReqWifiStaItwtSetup *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__req__get_dhcp_dns_status__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_itwt_setup__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__req__get_dhcp_dns_status__pack_to_buffer - (const RpcReqGetDhcpDnsStatus *message, +size_t rpc__req__wifi_sta_itwt_setup__pack_to_buffer + (const RpcReqWifiStaItwtSetup *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__req__get_dhcp_dns_status__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_itwt_setup__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcReqGetDhcpDnsStatus * - rpc__req__get_dhcp_dns_status__unpack +RpcReqWifiStaItwtSetup * + rpc__req__wifi_sta_itwt_setup__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcReqGetDhcpDnsStatus *) - protobuf_c_message_unpack (&rpc__req__get_dhcp_dns_status__descriptor, + return (RpcReqWifiStaItwtSetup *) + protobuf_c_message_unpack (&rpc__req__wifi_sta_itwt_setup__descriptor, allocator, len, data); } -void rpc__req__get_dhcp_dns_status__free_unpacked - (RpcReqGetDhcpDnsStatus *message, +void rpc__req__wifi_sta_itwt_setup__free_unpacked + (RpcReqWifiStaItwtSetup *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__req__get_dhcp_dns_status__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_itwt_setup__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__resp__get_dhcp_dns_status__init - (RpcRespGetDhcpDnsStatus *message) +void rpc__resp__wifi_sta_itwt_setup__init + (RpcRespWifiStaItwtSetup *message) { - static const RpcRespGetDhcpDnsStatus init_value = RPC__RESP__GET_DHCP_DNS_STATUS__INIT; + static const RpcRespWifiStaItwtSetup init_value = RPC__RESP__WIFI_STA_ITWT_SETUP__INIT; *message = init_value; } -size_t rpc__resp__get_dhcp_dns_status__get_packed_size - (const RpcRespGetDhcpDnsStatus *message) +size_t rpc__resp__wifi_sta_itwt_setup__get_packed_size + (const RpcRespWifiStaItwtSetup *message) { - assert(message->base.descriptor == &rpc__resp__get_dhcp_dns_status__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_itwt_setup__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__resp__get_dhcp_dns_status__pack - (const RpcRespGetDhcpDnsStatus *message, +size_t rpc__resp__wifi_sta_itwt_setup__pack + (const RpcRespWifiStaItwtSetup *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__resp__get_dhcp_dns_status__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_itwt_setup__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__resp__get_dhcp_dns_status__pack_to_buffer - (const RpcRespGetDhcpDnsStatus *message, +size_t rpc__resp__wifi_sta_itwt_setup__pack_to_buffer + (const RpcRespWifiStaItwtSetup *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__resp__get_dhcp_dns_status__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_itwt_setup__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcRespGetDhcpDnsStatus * - rpc__resp__get_dhcp_dns_status__unpack +RpcRespWifiStaItwtSetup * + rpc__resp__wifi_sta_itwt_setup__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcRespGetDhcpDnsStatus *) - protobuf_c_message_unpack (&rpc__resp__get_dhcp_dns_status__descriptor, + return (RpcRespWifiStaItwtSetup *) + protobuf_c_message_unpack (&rpc__resp__wifi_sta_itwt_setup__descriptor, allocator, len, data); } -void rpc__resp__get_dhcp_dns_status__free_unpacked - (RpcRespGetDhcpDnsStatus *message, +void rpc__resp__wifi_sta_itwt_setup__free_unpacked + (RpcRespWifiStaItwtSetup *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__resp__get_dhcp_dns_status__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_itwt_setup__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__event__wifi_event_no_args__init - (RpcEventWifiEventNoArgs *message) +void rpc__req__wifi_sta_itwt_teardown__init + (RpcReqWifiStaItwtTeardown *message) { - static const RpcEventWifiEventNoArgs init_value = RPC__EVENT__WIFI_EVENT_NO_ARGS__INIT; + static const RpcReqWifiStaItwtTeardown init_value = RPC__REQ__WIFI_STA_ITWT_TEARDOWN__INIT; *message = init_value; } -size_t rpc__event__wifi_event_no_args__get_packed_size - (const RpcEventWifiEventNoArgs *message) +size_t rpc__req__wifi_sta_itwt_teardown__get_packed_size + (const RpcReqWifiStaItwtTeardown *message) { - assert(message->base.descriptor == &rpc__event__wifi_event_no_args__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_itwt_teardown__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__event__wifi_event_no_args__pack - (const RpcEventWifiEventNoArgs *message, +size_t rpc__req__wifi_sta_itwt_teardown__pack + (const RpcReqWifiStaItwtTeardown *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__event__wifi_event_no_args__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_itwt_teardown__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__event__wifi_event_no_args__pack_to_buffer - (const RpcEventWifiEventNoArgs *message, +size_t rpc__req__wifi_sta_itwt_teardown__pack_to_buffer + (const RpcReqWifiStaItwtTeardown *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__event__wifi_event_no_args__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_itwt_teardown__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcEventWifiEventNoArgs * - rpc__event__wifi_event_no_args__unpack +RpcReqWifiStaItwtTeardown * + rpc__req__wifi_sta_itwt_teardown__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcEventWifiEventNoArgs *) - protobuf_c_message_unpack (&rpc__event__wifi_event_no_args__descriptor, + return (RpcReqWifiStaItwtTeardown *) + protobuf_c_message_unpack (&rpc__req__wifi_sta_itwt_teardown__descriptor, allocator, len, data); } -void rpc__event__wifi_event_no_args__free_unpacked - (RpcEventWifiEventNoArgs *message, +void rpc__req__wifi_sta_itwt_teardown__free_unpacked + (RpcReqWifiStaItwtTeardown *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__event__wifi_event_no_args__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_itwt_teardown__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__event__espinit__init - (RpcEventESPInit *message) +void rpc__resp__wifi_sta_itwt_teardown__init + (RpcRespWifiStaItwtTeardown *message) { - static const RpcEventESPInit init_value = RPC__EVENT__ESPINIT__INIT; + static const RpcRespWifiStaItwtTeardown init_value = RPC__RESP__WIFI_STA_ITWT_TEARDOWN__INIT; *message = init_value; } -size_t rpc__event__espinit__get_packed_size - (const RpcEventESPInit *message) +size_t rpc__resp__wifi_sta_itwt_teardown__get_packed_size + (const RpcRespWifiStaItwtTeardown *message) { - assert(message->base.descriptor == &rpc__event__espinit__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_itwt_teardown__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__event__espinit__pack - (const RpcEventESPInit *message, +size_t rpc__resp__wifi_sta_itwt_teardown__pack + (const RpcRespWifiStaItwtTeardown *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__event__espinit__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_itwt_teardown__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__event__espinit__pack_to_buffer - (const RpcEventESPInit *message, +size_t rpc__resp__wifi_sta_itwt_teardown__pack_to_buffer + (const RpcRespWifiStaItwtTeardown *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__event__espinit__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_itwt_teardown__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcEventESPInit * - rpc__event__espinit__unpack +RpcRespWifiStaItwtTeardown * + rpc__resp__wifi_sta_itwt_teardown__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcEventESPInit *) - protobuf_c_message_unpack (&rpc__event__espinit__descriptor, + return (RpcRespWifiStaItwtTeardown *) + protobuf_c_message_unpack (&rpc__resp__wifi_sta_itwt_teardown__descriptor, allocator, len, data); } -void rpc__event__espinit__free_unpacked - (RpcEventESPInit *message, +void rpc__resp__wifi_sta_itwt_teardown__free_unpacked + (RpcRespWifiStaItwtTeardown *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__event__espinit__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_itwt_teardown__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__event__heartbeat__init - (RpcEventHeartbeat *message) +void rpc__req__wifi_sta_itwt_suspend__init + (RpcReqWifiStaItwtSuspend *message) { - static const RpcEventHeartbeat init_value = RPC__EVENT__HEARTBEAT__INIT; + static const RpcReqWifiStaItwtSuspend init_value = RPC__REQ__WIFI_STA_ITWT_SUSPEND__INIT; *message = init_value; } -size_t rpc__event__heartbeat__get_packed_size - (const RpcEventHeartbeat *message) +size_t rpc__req__wifi_sta_itwt_suspend__get_packed_size + (const RpcReqWifiStaItwtSuspend *message) { - assert(message->base.descriptor == &rpc__event__heartbeat__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_itwt_suspend__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__event__heartbeat__pack - (const RpcEventHeartbeat *message, +size_t rpc__req__wifi_sta_itwt_suspend__pack + (const RpcReqWifiStaItwtSuspend *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__event__heartbeat__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_itwt_suspend__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__event__heartbeat__pack_to_buffer - (const RpcEventHeartbeat *message, +size_t rpc__req__wifi_sta_itwt_suspend__pack_to_buffer + (const RpcReqWifiStaItwtSuspend *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__event__heartbeat__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_itwt_suspend__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcEventHeartbeat * - rpc__event__heartbeat__unpack +RpcReqWifiStaItwtSuspend * + rpc__req__wifi_sta_itwt_suspend__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcEventHeartbeat *) - protobuf_c_message_unpack (&rpc__event__heartbeat__descriptor, + return (RpcReqWifiStaItwtSuspend *) + protobuf_c_message_unpack (&rpc__req__wifi_sta_itwt_suspend__descriptor, allocator, len, data); } -void rpc__event__heartbeat__free_unpacked - (RpcEventHeartbeat *message, +void rpc__req__wifi_sta_itwt_suspend__free_unpacked + (RpcReqWifiStaItwtSuspend *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__event__heartbeat__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_itwt_suspend__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__event__ap__sta_disconnected__init - (RpcEventAPStaDisconnected *message) +void rpc__resp__wifi_sta_itwt_suspend__init + (RpcRespWifiStaItwtSuspend *message) { - static const RpcEventAPStaDisconnected init_value = RPC__EVENT__AP__STA_DISCONNECTED__INIT; + static const RpcRespWifiStaItwtSuspend init_value = RPC__RESP__WIFI_STA_ITWT_SUSPEND__INIT; *message = init_value; } -size_t rpc__event__ap__sta_disconnected__get_packed_size - (const RpcEventAPStaDisconnected *message) +size_t rpc__resp__wifi_sta_itwt_suspend__get_packed_size + (const RpcRespWifiStaItwtSuspend *message) { - assert(message->base.descriptor == &rpc__event__ap__sta_disconnected__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_itwt_suspend__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__event__ap__sta_disconnected__pack - (const RpcEventAPStaDisconnected *message, +size_t rpc__resp__wifi_sta_itwt_suspend__pack + (const RpcRespWifiStaItwtSuspend *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__event__ap__sta_disconnected__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_itwt_suspend__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__event__ap__sta_disconnected__pack_to_buffer - (const RpcEventAPStaDisconnected *message, +size_t rpc__resp__wifi_sta_itwt_suspend__pack_to_buffer + (const RpcRespWifiStaItwtSuspend *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__event__ap__sta_disconnected__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_itwt_suspend__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcEventAPStaDisconnected * - rpc__event__ap__sta_disconnected__unpack +RpcRespWifiStaItwtSuspend * + rpc__resp__wifi_sta_itwt_suspend__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcEventAPStaDisconnected *) - protobuf_c_message_unpack (&rpc__event__ap__sta_disconnected__descriptor, + return (RpcRespWifiStaItwtSuspend *) + protobuf_c_message_unpack (&rpc__resp__wifi_sta_itwt_suspend__descriptor, allocator, len, data); } -void rpc__event__ap__sta_disconnected__free_unpacked - (RpcEventAPStaDisconnected *message, +void rpc__resp__wifi_sta_itwt_suspend__free_unpacked + (RpcRespWifiStaItwtSuspend *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__event__ap__sta_disconnected__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_itwt_suspend__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__event__ap__sta_connected__init - (RpcEventAPStaConnected *message) +void rpc__req__wifi_sta_itwt_get_flow_id_status__init + (RpcReqWifiStaItwtGetFlowIdStatus *message) { - static const RpcEventAPStaConnected init_value = RPC__EVENT__AP__STA_CONNECTED__INIT; + static const RpcReqWifiStaItwtGetFlowIdStatus init_value = RPC__REQ__WIFI_STA_ITWT_GET_FLOW_ID_STATUS__INIT; *message = init_value; } -size_t rpc__event__ap__sta_connected__get_packed_size - (const RpcEventAPStaConnected *message) +size_t rpc__req__wifi_sta_itwt_get_flow_id_status__get_packed_size + (const RpcReqWifiStaItwtGetFlowIdStatus *message) { - assert(message->base.descriptor == &rpc__event__ap__sta_connected__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_itwt_get_flow_id_status__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__event__ap__sta_connected__pack - (const RpcEventAPStaConnected *message, +size_t rpc__req__wifi_sta_itwt_get_flow_id_status__pack + (const RpcReqWifiStaItwtGetFlowIdStatus *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__event__ap__sta_connected__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_itwt_get_flow_id_status__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__event__ap__sta_connected__pack_to_buffer - (const RpcEventAPStaConnected *message, +size_t rpc__req__wifi_sta_itwt_get_flow_id_status__pack_to_buffer + (const RpcReqWifiStaItwtGetFlowIdStatus *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__event__ap__sta_connected__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_itwt_get_flow_id_status__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcEventAPStaConnected * - rpc__event__ap__sta_connected__unpack +RpcReqWifiStaItwtGetFlowIdStatus * + rpc__req__wifi_sta_itwt_get_flow_id_status__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcEventAPStaConnected *) - protobuf_c_message_unpack (&rpc__event__ap__sta_connected__descriptor, + return (RpcReqWifiStaItwtGetFlowIdStatus *) + protobuf_c_message_unpack (&rpc__req__wifi_sta_itwt_get_flow_id_status__descriptor, allocator, len, data); } -void rpc__event__ap__sta_connected__free_unpacked - (RpcEventAPStaConnected *message, +void rpc__req__wifi_sta_itwt_get_flow_id_status__free_unpacked + (RpcReqWifiStaItwtGetFlowIdStatus *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__event__ap__sta_connected__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_itwt_get_flow_id_status__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__event__sta_scan_done__init - (RpcEventStaScanDone *message) +void rpc__resp__wifi_sta_itwt_get_flow_id_status__init + (RpcRespWifiStaItwtGetFlowIdStatus *message) { - static const RpcEventStaScanDone init_value = RPC__EVENT__STA_SCAN_DONE__INIT; + static const RpcRespWifiStaItwtGetFlowIdStatus init_value = RPC__RESP__WIFI_STA_ITWT_GET_FLOW_ID_STATUS__INIT; *message = init_value; } -size_t rpc__event__sta_scan_done__get_packed_size - (const RpcEventStaScanDone *message) +size_t rpc__resp__wifi_sta_itwt_get_flow_id_status__get_packed_size + (const RpcRespWifiStaItwtGetFlowIdStatus *message) { - assert(message->base.descriptor == &rpc__event__sta_scan_done__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_itwt_get_flow_id_status__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__event__sta_scan_done__pack - (const RpcEventStaScanDone *message, +size_t rpc__resp__wifi_sta_itwt_get_flow_id_status__pack + (const RpcRespWifiStaItwtGetFlowIdStatus *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__event__sta_scan_done__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_itwt_get_flow_id_status__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__event__sta_scan_done__pack_to_buffer - (const RpcEventStaScanDone *message, +size_t rpc__resp__wifi_sta_itwt_get_flow_id_status__pack_to_buffer + (const RpcRespWifiStaItwtGetFlowIdStatus *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__event__sta_scan_done__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_itwt_get_flow_id_status__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcEventStaScanDone * - rpc__event__sta_scan_done__unpack +RpcRespWifiStaItwtGetFlowIdStatus * + rpc__resp__wifi_sta_itwt_get_flow_id_status__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcEventStaScanDone *) - protobuf_c_message_unpack (&rpc__event__sta_scan_done__descriptor, + return (RpcRespWifiStaItwtGetFlowIdStatus *) + protobuf_c_message_unpack (&rpc__resp__wifi_sta_itwt_get_flow_id_status__descriptor, allocator, len, data); } -void rpc__event__sta_scan_done__free_unpacked - (RpcEventStaScanDone *message, +void rpc__resp__wifi_sta_itwt_get_flow_id_status__free_unpacked + (RpcRespWifiStaItwtGetFlowIdStatus *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__event__sta_scan_done__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_itwt_get_flow_id_status__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__event__sta_connected__init - (RpcEventStaConnected *message) +void rpc__req__wifi_sta_itwt_send_probe_req__init + (RpcReqWifiStaItwtSendProbeReq *message) { - static const RpcEventStaConnected init_value = RPC__EVENT__STA_CONNECTED__INIT; + static const RpcReqWifiStaItwtSendProbeReq init_value = RPC__REQ__WIFI_STA_ITWT_SEND_PROBE_REQ__INIT; *message = init_value; } -size_t rpc__event__sta_connected__get_packed_size - (const RpcEventStaConnected *message) +size_t rpc__req__wifi_sta_itwt_send_probe_req__get_packed_size + (const RpcReqWifiStaItwtSendProbeReq *message) { - assert(message->base.descriptor == &rpc__event__sta_connected__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_itwt_send_probe_req__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__event__sta_connected__pack - (const RpcEventStaConnected *message, +size_t rpc__req__wifi_sta_itwt_send_probe_req__pack + (const RpcReqWifiStaItwtSendProbeReq *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__event__sta_connected__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_itwt_send_probe_req__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__event__sta_connected__pack_to_buffer - (const RpcEventStaConnected *message, +size_t rpc__req__wifi_sta_itwt_send_probe_req__pack_to_buffer + (const RpcReqWifiStaItwtSendProbeReq *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__event__sta_connected__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_itwt_send_probe_req__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcEventStaConnected * - rpc__event__sta_connected__unpack +RpcReqWifiStaItwtSendProbeReq * + rpc__req__wifi_sta_itwt_send_probe_req__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcEventStaConnected *) - protobuf_c_message_unpack (&rpc__event__sta_connected__descriptor, + return (RpcReqWifiStaItwtSendProbeReq *) + protobuf_c_message_unpack (&rpc__req__wifi_sta_itwt_send_probe_req__descriptor, allocator, len, data); } -void rpc__event__sta_connected__free_unpacked - (RpcEventStaConnected *message, +void rpc__req__wifi_sta_itwt_send_probe_req__free_unpacked + (RpcReqWifiStaItwtSendProbeReq *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__event__sta_connected__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_itwt_send_probe_req__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__event__sta_disconnected__init - (RpcEventStaDisconnected *message) +void rpc__resp__wifi_sta_itwt_send_probe_req__init + (RpcRespWifiStaItwtSendProbeReq *message) { - static const RpcEventStaDisconnected init_value = RPC__EVENT__STA_DISCONNECTED__INIT; + static const RpcRespWifiStaItwtSendProbeReq init_value = RPC__RESP__WIFI_STA_ITWT_SEND_PROBE_REQ__INIT; *message = init_value; } -size_t rpc__event__sta_disconnected__get_packed_size - (const RpcEventStaDisconnected *message) +size_t rpc__resp__wifi_sta_itwt_send_probe_req__get_packed_size + (const RpcRespWifiStaItwtSendProbeReq *message) { - assert(message->base.descriptor == &rpc__event__sta_disconnected__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_itwt_send_probe_req__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__event__sta_disconnected__pack - (const RpcEventStaDisconnected *message, +size_t rpc__resp__wifi_sta_itwt_send_probe_req__pack + (const RpcRespWifiStaItwtSendProbeReq *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__event__sta_disconnected__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_itwt_send_probe_req__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__event__sta_disconnected__pack_to_buffer - (const RpcEventStaDisconnected *message, +size_t rpc__resp__wifi_sta_itwt_send_probe_req__pack_to_buffer + (const RpcRespWifiStaItwtSendProbeReq *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__event__sta_disconnected__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_itwt_send_probe_req__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcEventStaDisconnected * - rpc__event__sta_disconnected__unpack +RpcRespWifiStaItwtSendProbeReq * + rpc__resp__wifi_sta_itwt_send_probe_req__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcEventStaDisconnected *) - protobuf_c_message_unpack (&rpc__event__sta_disconnected__descriptor, + return (RpcRespWifiStaItwtSendProbeReq *) + protobuf_c_message_unpack (&rpc__resp__wifi_sta_itwt_send_probe_req__descriptor, allocator, len, data); } -void rpc__event__sta_disconnected__free_unpacked - (RpcEventStaDisconnected *message, +void rpc__resp__wifi_sta_itwt_send_probe_req__free_unpacked + (RpcRespWifiStaItwtSendProbeReq *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__event__sta_disconnected__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_itwt_send_probe_req__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__event__dhcp_dns_status__init - (RpcEventDhcpDnsStatus *message) +void rpc__req__wifi_sta_itwt_set_target_wake_time_offset__init + (RpcReqWifiStaItwtSetTargetWakeTimeOffset *message) { - static const RpcEventDhcpDnsStatus init_value = RPC__EVENT__DHCP_DNS_STATUS__INIT; + static const RpcReqWifiStaItwtSetTargetWakeTimeOffset init_value = RPC__REQ__WIFI_STA_ITWT_SET_TARGET_WAKE_TIME_OFFSET__INIT; *message = init_value; } -size_t rpc__event__dhcp_dns_status__get_packed_size - (const RpcEventDhcpDnsStatus *message) +size_t rpc__req__wifi_sta_itwt_set_target_wake_time_offset__get_packed_size + (const RpcReqWifiStaItwtSetTargetWakeTimeOffset *message) { - assert(message->base.descriptor == &rpc__event__dhcp_dns_status__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_itwt_set_target_wake_time_offset__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__event__dhcp_dns_status__pack - (const RpcEventDhcpDnsStatus *message, +size_t rpc__req__wifi_sta_itwt_set_target_wake_time_offset__pack + (const RpcReqWifiStaItwtSetTargetWakeTimeOffset *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__event__dhcp_dns_status__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_itwt_set_target_wake_time_offset__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__event__dhcp_dns_status__pack_to_buffer - (const RpcEventDhcpDnsStatus *message, +size_t rpc__req__wifi_sta_itwt_set_target_wake_time_offset__pack_to_buffer + (const RpcReqWifiStaItwtSetTargetWakeTimeOffset *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__event__dhcp_dns_status__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_itwt_set_target_wake_time_offset__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcEventDhcpDnsStatus * - rpc__event__dhcp_dns_status__unpack +RpcReqWifiStaItwtSetTargetWakeTimeOffset * + rpc__req__wifi_sta_itwt_set_target_wake_time_offset__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcEventDhcpDnsStatus *) - protobuf_c_message_unpack (&rpc__event__dhcp_dns_status__descriptor, + return (RpcReqWifiStaItwtSetTargetWakeTimeOffset *) + protobuf_c_message_unpack (&rpc__req__wifi_sta_itwt_set_target_wake_time_offset__descriptor, allocator, len, data); } -void rpc__event__dhcp_dns_status__free_unpacked - (RpcEventDhcpDnsStatus *message, +void rpc__req__wifi_sta_itwt_set_target_wake_time_offset__free_unpacked + (RpcReqWifiStaItwtSetTargetWakeTimeOffset *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__event__dhcp_dns_status__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_itwt_set_target_wake_time_offset__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__init - (Rpc *message) +void rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__init + (RpcRespWifiStaItwtSetTargetWakeTimeOffset *message) { - static const Rpc init_value = RPC__INIT; + static const RpcRespWifiStaItwtSetTargetWakeTimeOffset init_value = RPC__RESP__WIFI_STA_ITWT_SET_TARGET_WAKE_TIME_OFFSET__INIT; *message = init_value; } -size_t rpc__get_packed_size - (const Rpc *message) +size_t rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__get_packed_size + (const RpcRespWifiStaItwtSetTargetWakeTimeOffset *message) { - assert(message->base.descriptor == &rpc__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__pack - (const Rpc *message, +size_t rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__pack + (const RpcRespWifiStaItwtSetTargetWakeTimeOffset *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__pack_to_buffer - (const Rpc *message, +size_t rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__pack_to_buffer + (const RpcRespWifiStaItwtSetTargetWakeTimeOffset *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -Rpc * - rpc__unpack +RpcRespWifiStaItwtSetTargetWakeTimeOffset * + rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (Rpc *) - protobuf_c_message_unpack (&rpc__descriptor, + return (RpcRespWifiStaItwtSetTargetWakeTimeOffset *) + protobuf_c_message_unpack (&rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__descriptor, allocator, len, data); } -void rpc__free_unpacked - (Rpc *message, +void rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__free_unpacked + (RpcRespWifiStaItwtSetTargetWakeTimeOffset *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -static const ProtobufCFieldDescriptor wifi_init_config__field_descriptors[24] = +void rpc__req__wifi_sta_twt_config__init + (RpcReqWifiStaTwtConfig *message) { - { - "static_rx_buf_num", - 1, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, static_rx_buf_num), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "dynamic_rx_buf_num", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, dynamic_rx_buf_num), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "tx_buf_type", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, tx_buf_type), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "static_tx_buf_num", - 4, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, static_tx_buf_num), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "dynamic_tx_buf_num", - 5, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, dynamic_tx_buf_num), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "cache_tx_buf_num", - 6, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, cache_tx_buf_num), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "csi_enable", - 7, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, csi_enable), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "ampdu_rx_enable", - 8, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, ampdu_rx_enable), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "ampdu_tx_enable", - 9, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, ampdu_tx_enable), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "amsdu_tx_enable", - 10, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, amsdu_tx_enable), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "nvs_enable", - 11, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, nvs_enable), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "nano_enable", - 12, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, nano_enable), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "rx_ba_win", - 13, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, rx_ba_win), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ + static const RpcReqWifiStaTwtConfig init_value = RPC__REQ__WIFI_STA_TWT_CONFIG__INIT; + *message = init_value; +} +size_t rpc__req__wifi_sta_twt_config__get_packed_size + (const RpcReqWifiStaTwtConfig *message) +{ + assert(message->base.descriptor == &rpc__req__wifi_sta_twt_config__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__wifi_sta_twt_config__pack + (const RpcReqWifiStaTwtConfig *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__wifi_sta_twt_config__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__wifi_sta_twt_config__pack_to_buffer + (const RpcReqWifiStaTwtConfig *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__wifi_sta_twt_config__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqWifiStaTwtConfig * + rpc__req__wifi_sta_twt_config__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqWifiStaTwtConfig *) + protobuf_c_message_unpack (&rpc__req__wifi_sta_twt_config__descriptor, + allocator, len, data); +} +void rpc__req__wifi_sta_twt_config__free_unpacked + (RpcReqWifiStaTwtConfig *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__wifi_sta_twt_config__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__wifi_sta_twt_config__init + (RpcRespWifiStaTwtConfig *message) +{ + static const RpcRespWifiStaTwtConfig init_value = RPC__RESP__WIFI_STA_TWT_CONFIG__INIT; + *message = init_value; +} +size_t rpc__resp__wifi_sta_twt_config__get_packed_size + (const RpcRespWifiStaTwtConfig *message) +{ + assert(message->base.descriptor == &rpc__resp__wifi_sta_twt_config__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__wifi_sta_twt_config__pack + (const RpcRespWifiStaTwtConfig *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__wifi_sta_twt_config__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__wifi_sta_twt_config__pack_to_buffer + (const RpcRespWifiStaTwtConfig *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__wifi_sta_twt_config__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespWifiStaTwtConfig * + rpc__resp__wifi_sta_twt_config__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespWifiStaTwtConfig *) + protobuf_c_message_unpack (&rpc__resp__wifi_sta_twt_config__descriptor, + allocator, len, data); +} +void rpc__resp__wifi_sta_twt_config__free_unpacked + (RpcRespWifiStaTwtConfig *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__wifi_sta_twt_config__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__get_coprocessor_fw_version__init + (RpcReqGetCoprocessorFwVersion *message) +{ + static const RpcReqGetCoprocessorFwVersion init_value = RPC__REQ__GET_COPROCESSOR_FW_VERSION__INIT; + *message = init_value; +} +size_t rpc__req__get_coprocessor_fw_version__get_packed_size + (const RpcReqGetCoprocessorFwVersion *message) +{ + assert(message->base.descriptor == &rpc__req__get_coprocessor_fw_version__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__get_coprocessor_fw_version__pack + (const RpcReqGetCoprocessorFwVersion *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__get_coprocessor_fw_version__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__get_coprocessor_fw_version__pack_to_buffer + (const RpcReqGetCoprocessorFwVersion *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__get_coprocessor_fw_version__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqGetCoprocessorFwVersion * + rpc__req__get_coprocessor_fw_version__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqGetCoprocessorFwVersion *) + protobuf_c_message_unpack (&rpc__req__get_coprocessor_fw_version__descriptor, + allocator, len, data); +} +void rpc__req__get_coprocessor_fw_version__free_unpacked + (RpcReqGetCoprocessorFwVersion *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__get_coprocessor_fw_version__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__get_coprocessor_fw_version__init + (RpcRespGetCoprocessorFwVersion *message) +{ + static const RpcRespGetCoprocessorFwVersion init_value = RPC__RESP__GET_COPROCESSOR_FW_VERSION__INIT; + *message = init_value; +} +size_t rpc__resp__get_coprocessor_fw_version__get_packed_size + (const RpcRespGetCoprocessorFwVersion *message) +{ + assert(message->base.descriptor == &rpc__resp__get_coprocessor_fw_version__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__get_coprocessor_fw_version__pack + (const RpcRespGetCoprocessorFwVersion *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__get_coprocessor_fw_version__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__get_coprocessor_fw_version__pack_to_buffer + (const RpcRespGetCoprocessorFwVersion *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__get_coprocessor_fw_version__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespGetCoprocessorFwVersion * + rpc__resp__get_coprocessor_fw_version__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespGetCoprocessorFwVersion *) + protobuf_c_message_unpack (&rpc__resp__get_coprocessor_fw_version__descriptor, + allocator, len, data); +} +void rpc__resp__get_coprocessor_fw_version__free_unpacked + (RpcRespGetCoprocessorFwVersion *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__get_coprocessor_fw_version__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__set_dhcp_dns_status__init + (RpcReqSetDhcpDnsStatus *message) +{ + static const RpcReqSetDhcpDnsStatus init_value = RPC__REQ__SET_DHCP_DNS_STATUS__INIT; + *message = init_value; +} +size_t rpc__req__set_dhcp_dns_status__get_packed_size + (const RpcReqSetDhcpDnsStatus *message) +{ + assert(message->base.descriptor == &rpc__req__set_dhcp_dns_status__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__set_dhcp_dns_status__pack + (const RpcReqSetDhcpDnsStatus *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__set_dhcp_dns_status__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__set_dhcp_dns_status__pack_to_buffer + (const RpcReqSetDhcpDnsStatus *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__set_dhcp_dns_status__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqSetDhcpDnsStatus * + rpc__req__set_dhcp_dns_status__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqSetDhcpDnsStatus *) + protobuf_c_message_unpack (&rpc__req__set_dhcp_dns_status__descriptor, + allocator, len, data); +} +void rpc__req__set_dhcp_dns_status__free_unpacked + (RpcReqSetDhcpDnsStatus *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__set_dhcp_dns_status__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__set_dhcp_dns_status__init + (RpcRespSetDhcpDnsStatus *message) +{ + static const RpcRespSetDhcpDnsStatus init_value = RPC__RESP__SET_DHCP_DNS_STATUS__INIT; + *message = init_value; +} +size_t rpc__resp__set_dhcp_dns_status__get_packed_size + (const RpcRespSetDhcpDnsStatus *message) +{ + assert(message->base.descriptor == &rpc__resp__set_dhcp_dns_status__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__set_dhcp_dns_status__pack + (const RpcRespSetDhcpDnsStatus *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__set_dhcp_dns_status__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__set_dhcp_dns_status__pack_to_buffer + (const RpcRespSetDhcpDnsStatus *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__set_dhcp_dns_status__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespSetDhcpDnsStatus * + rpc__resp__set_dhcp_dns_status__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespSetDhcpDnsStatus *) + protobuf_c_message_unpack (&rpc__resp__set_dhcp_dns_status__descriptor, + allocator, len, data); +} +void rpc__resp__set_dhcp_dns_status__free_unpacked + (RpcRespSetDhcpDnsStatus *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__set_dhcp_dns_status__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__get_dhcp_dns_status__init + (RpcReqGetDhcpDnsStatus *message) +{ + static const RpcReqGetDhcpDnsStatus init_value = RPC__REQ__GET_DHCP_DNS_STATUS__INIT; + *message = init_value; +} +size_t rpc__req__get_dhcp_dns_status__get_packed_size + (const RpcReqGetDhcpDnsStatus *message) +{ + assert(message->base.descriptor == &rpc__req__get_dhcp_dns_status__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__get_dhcp_dns_status__pack + (const RpcReqGetDhcpDnsStatus *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__get_dhcp_dns_status__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__get_dhcp_dns_status__pack_to_buffer + (const RpcReqGetDhcpDnsStatus *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__get_dhcp_dns_status__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqGetDhcpDnsStatus * + rpc__req__get_dhcp_dns_status__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqGetDhcpDnsStatus *) + protobuf_c_message_unpack (&rpc__req__get_dhcp_dns_status__descriptor, + allocator, len, data); +} +void rpc__req__get_dhcp_dns_status__free_unpacked + (RpcReqGetDhcpDnsStatus *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__get_dhcp_dns_status__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__get_dhcp_dns_status__init + (RpcRespGetDhcpDnsStatus *message) +{ + static const RpcRespGetDhcpDnsStatus init_value = RPC__RESP__GET_DHCP_DNS_STATUS__INIT; + *message = init_value; +} +size_t rpc__resp__get_dhcp_dns_status__get_packed_size + (const RpcRespGetDhcpDnsStatus *message) +{ + assert(message->base.descriptor == &rpc__resp__get_dhcp_dns_status__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__get_dhcp_dns_status__pack + (const RpcRespGetDhcpDnsStatus *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__get_dhcp_dns_status__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__get_dhcp_dns_status__pack_to_buffer + (const RpcRespGetDhcpDnsStatus *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__get_dhcp_dns_status__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespGetDhcpDnsStatus * + rpc__resp__get_dhcp_dns_status__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespGetDhcpDnsStatus *) + protobuf_c_message_unpack (&rpc__resp__get_dhcp_dns_status__descriptor, + allocator, len, data); +} +void rpc__resp__get_dhcp_dns_status__free_unpacked + (RpcRespGetDhcpDnsStatus *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__get_dhcp_dns_status__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__event__wifi_event_no_args__init + (RpcEventWifiEventNoArgs *message) +{ + static const RpcEventWifiEventNoArgs init_value = RPC__EVENT__WIFI_EVENT_NO_ARGS__INIT; + *message = init_value; +} +size_t rpc__event__wifi_event_no_args__get_packed_size + (const RpcEventWifiEventNoArgs *message) +{ + assert(message->base.descriptor == &rpc__event__wifi_event_no_args__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__event__wifi_event_no_args__pack + (const RpcEventWifiEventNoArgs *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__event__wifi_event_no_args__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__event__wifi_event_no_args__pack_to_buffer + (const RpcEventWifiEventNoArgs *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__event__wifi_event_no_args__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcEventWifiEventNoArgs * + rpc__event__wifi_event_no_args__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcEventWifiEventNoArgs *) + protobuf_c_message_unpack (&rpc__event__wifi_event_no_args__descriptor, + allocator, len, data); +} +void rpc__event__wifi_event_no_args__free_unpacked + (RpcEventWifiEventNoArgs *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__event__wifi_event_no_args__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__event__espinit__init + (RpcEventESPInit *message) +{ + static const RpcEventESPInit init_value = RPC__EVENT__ESPINIT__INIT; + *message = init_value; +} +size_t rpc__event__espinit__get_packed_size + (const RpcEventESPInit *message) +{ + assert(message->base.descriptor == &rpc__event__espinit__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__event__espinit__pack + (const RpcEventESPInit *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__event__espinit__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__event__espinit__pack_to_buffer + (const RpcEventESPInit *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__event__espinit__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcEventESPInit * + rpc__event__espinit__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcEventESPInit *) + protobuf_c_message_unpack (&rpc__event__espinit__descriptor, + allocator, len, data); +} +void rpc__event__espinit__free_unpacked + (RpcEventESPInit *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__event__espinit__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__event__heartbeat__init + (RpcEventHeartbeat *message) +{ + static const RpcEventHeartbeat init_value = RPC__EVENT__HEARTBEAT__INIT; + *message = init_value; +} +size_t rpc__event__heartbeat__get_packed_size + (const RpcEventHeartbeat *message) +{ + assert(message->base.descriptor == &rpc__event__heartbeat__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__event__heartbeat__pack + (const RpcEventHeartbeat *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__event__heartbeat__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__event__heartbeat__pack_to_buffer + (const RpcEventHeartbeat *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__event__heartbeat__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcEventHeartbeat * + rpc__event__heartbeat__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcEventHeartbeat *) + protobuf_c_message_unpack (&rpc__event__heartbeat__descriptor, + allocator, len, data); +} +void rpc__event__heartbeat__free_unpacked + (RpcEventHeartbeat *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__event__heartbeat__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__event__ap__sta_disconnected__init + (RpcEventAPStaDisconnected *message) +{ + static const RpcEventAPStaDisconnected init_value = RPC__EVENT__AP__STA_DISCONNECTED__INIT; + *message = init_value; +} +size_t rpc__event__ap__sta_disconnected__get_packed_size + (const RpcEventAPStaDisconnected *message) +{ + assert(message->base.descriptor == &rpc__event__ap__sta_disconnected__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__event__ap__sta_disconnected__pack + (const RpcEventAPStaDisconnected *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__event__ap__sta_disconnected__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__event__ap__sta_disconnected__pack_to_buffer + (const RpcEventAPStaDisconnected *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__event__ap__sta_disconnected__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcEventAPStaDisconnected * + rpc__event__ap__sta_disconnected__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcEventAPStaDisconnected *) + protobuf_c_message_unpack (&rpc__event__ap__sta_disconnected__descriptor, + allocator, len, data); +} +void rpc__event__ap__sta_disconnected__free_unpacked + (RpcEventAPStaDisconnected *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__event__ap__sta_disconnected__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__event__ap__sta_connected__init + (RpcEventAPStaConnected *message) +{ + static const RpcEventAPStaConnected init_value = RPC__EVENT__AP__STA_CONNECTED__INIT; + *message = init_value; +} +size_t rpc__event__ap__sta_connected__get_packed_size + (const RpcEventAPStaConnected *message) +{ + assert(message->base.descriptor == &rpc__event__ap__sta_connected__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__event__ap__sta_connected__pack + (const RpcEventAPStaConnected *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__event__ap__sta_connected__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__event__ap__sta_connected__pack_to_buffer + (const RpcEventAPStaConnected *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__event__ap__sta_connected__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcEventAPStaConnected * + rpc__event__ap__sta_connected__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcEventAPStaConnected *) + protobuf_c_message_unpack (&rpc__event__ap__sta_connected__descriptor, + allocator, len, data); +} +void rpc__event__ap__sta_connected__free_unpacked + (RpcEventAPStaConnected *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__event__ap__sta_connected__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__event__sta_scan_done__init + (RpcEventStaScanDone *message) +{ + static const RpcEventStaScanDone init_value = RPC__EVENT__STA_SCAN_DONE__INIT; + *message = init_value; +} +size_t rpc__event__sta_scan_done__get_packed_size + (const RpcEventStaScanDone *message) +{ + assert(message->base.descriptor == &rpc__event__sta_scan_done__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__event__sta_scan_done__pack + (const RpcEventStaScanDone *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__event__sta_scan_done__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__event__sta_scan_done__pack_to_buffer + (const RpcEventStaScanDone *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__event__sta_scan_done__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcEventStaScanDone * + rpc__event__sta_scan_done__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcEventStaScanDone *) + protobuf_c_message_unpack (&rpc__event__sta_scan_done__descriptor, + allocator, len, data); +} +void rpc__event__sta_scan_done__free_unpacked + (RpcEventStaScanDone *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__event__sta_scan_done__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__event__sta_connected__init + (RpcEventStaConnected *message) +{ + static const RpcEventStaConnected init_value = RPC__EVENT__STA_CONNECTED__INIT; + *message = init_value; +} +size_t rpc__event__sta_connected__get_packed_size + (const RpcEventStaConnected *message) +{ + assert(message->base.descriptor == &rpc__event__sta_connected__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__event__sta_connected__pack + (const RpcEventStaConnected *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__event__sta_connected__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__event__sta_connected__pack_to_buffer + (const RpcEventStaConnected *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__event__sta_connected__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcEventStaConnected * + rpc__event__sta_connected__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcEventStaConnected *) + protobuf_c_message_unpack (&rpc__event__sta_connected__descriptor, + allocator, len, data); +} +void rpc__event__sta_connected__free_unpacked + (RpcEventStaConnected *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__event__sta_connected__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__event__sta_disconnected__init + (RpcEventStaDisconnected *message) +{ + static const RpcEventStaDisconnected init_value = RPC__EVENT__STA_DISCONNECTED__INIT; + *message = init_value; +} +size_t rpc__event__sta_disconnected__get_packed_size + (const RpcEventStaDisconnected *message) +{ + assert(message->base.descriptor == &rpc__event__sta_disconnected__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__event__sta_disconnected__pack + (const RpcEventStaDisconnected *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__event__sta_disconnected__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__event__sta_disconnected__pack_to_buffer + (const RpcEventStaDisconnected *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__event__sta_disconnected__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcEventStaDisconnected * + rpc__event__sta_disconnected__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcEventStaDisconnected *) + protobuf_c_message_unpack (&rpc__event__sta_disconnected__descriptor, + allocator, len, data); +} +void rpc__event__sta_disconnected__free_unpacked + (RpcEventStaDisconnected *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__event__sta_disconnected__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__event__dhcp_dns_status__init + (RpcEventDhcpDnsStatus *message) +{ + static const RpcEventDhcpDnsStatus init_value = RPC__EVENT__DHCP_DNS_STATUS__INIT; + *message = init_value; +} +size_t rpc__event__dhcp_dns_status__get_packed_size + (const RpcEventDhcpDnsStatus *message) +{ + assert(message->base.descriptor == &rpc__event__dhcp_dns_status__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__event__dhcp_dns_status__pack + (const RpcEventDhcpDnsStatus *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__event__dhcp_dns_status__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__event__dhcp_dns_status__pack_to_buffer + (const RpcEventDhcpDnsStatus *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__event__dhcp_dns_status__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcEventDhcpDnsStatus * + rpc__event__dhcp_dns_status__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcEventDhcpDnsStatus *) + protobuf_c_message_unpack (&rpc__event__dhcp_dns_status__descriptor, + allocator, len, data); +} +void rpc__event__dhcp_dns_status__free_unpacked + (RpcEventDhcpDnsStatus *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__event__dhcp_dns_status__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__event__sta_itwt_setup__init + (RpcEventStaItwtSetup *message) +{ + static const RpcEventStaItwtSetup init_value = RPC__EVENT__STA_ITWT_SETUP__INIT; + *message = init_value; +} +size_t rpc__event__sta_itwt_setup__get_packed_size + (const RpcEventStaItwtSetup *message) +{ + assert(message->base.descriptor == &rpc__event__sta_itwt_setup__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__event__sta_itwt_setup__pack + (const RpcEventStaItwtSetup *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__event__sta_itwt_setup__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__event__sta_itwt_setup__pack_to_buffer + (const RpcEventStaItwtSetup *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__event__sta_itwt_setup__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcEventStaItwtSetup * + rpc__event__sta_itwt_setup__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcEventStaItwtSetup *) + protobuf_c_message_unpack (&rpc__event__sta_itwt_setup__descriptor, + allocator, len, data); +} +void rpc__event__sta_itwt_setup__free_unpacked + (RpcEventStaItwtSetup *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__event__sta_itwt_setup__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__event__sta_itwt_teardown__init + (RpcEventStaItwtTeardown *message) +{ + static const RpcEventStaItwtTeardown init_value = RPC__EVENT__STA_ITWT_TEARDOWN__INIT; + *message = init_value; +} +size_t rpc__event__sta_itwt_teardown__get_packed_size + (const RpcEventStaItwtTeardown *message) +{ + assert(message->base.descriptor == &rpc__event__sta_itwt_teardown__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__event__sta_itwt_teardown__pack + (const RpcEventStaItwtTeardown *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__event__sta_itwt_teardown__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__event__sta_itwt_teardown__pack_to_buffer + (const RpcEventStaItwtTeardown *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__event__sta_itwt_teardown__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcEventStaItwtTeardown * + rpc__event__sta_itwt_teardown__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcEventStaItwtTeardown *) + protobuf_c_message_unpack (&rpc__event__sta_itwt_teardown__descriptor, + allocator, len, data); +} +void rpc__event__sta_itwt_teardown__free_unpacked + (RpcEventStaItwtTeardown *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__event__sta_itwt_teardown__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__event__sta_itwt_suspend__init + (RpcEventStaItwtSuspend *message) +{ + static const RpcEventStaItwtSuspend init_value = RPC__EVENT__STA_ITWT_SUSPEND__INIT; + *message = init_value; +} +size_t rpc__event__sta_itwt_suspend__get_packed_size + (const RpcEventStaItwtSuspend *message) +{ + assert(message->base.descriptor == &rpc__event__sta_itwt_suspend__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__event__sta_itwt_suspend__pack + (const RpcEventStaItwtSuspend *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__event__sta_itwt_suspend__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__event__sta_itwt_suspend__pack_to_buffer + (const RpcEventStaItwtSuspend *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__event__sta_itwt_suspend__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcEventStaItwtSuspend * + rpc__event__sta_itwt_suspend__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcEventStaItwtSuspend *) + protobuf_c_message_unpack (&rpc__event__sta_itwt_suspend__descriptor, + allocator, len, data); +} +void rpc__event__sta_itwt_suspend__free_unpacked + (RpcEventStaItwtSuspend *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__event__sta_itwt_suspend__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__event__sta_itwt_probe__init + (RpcEventStaItwtProbe *message) +{ + static const RpcEventStaItwtProbe init_value = RPC__EVENT__STA_ITWT_PROBE__INIT; + *message = init_value; +} +size_t rpc__event__sta_itwt_probe__get_packed_size + (const RpcEventStaItwtProbe *message) +{ + assert(message->base.descriptor == &rpc__event__sta_itwt_probe__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__event__sta_itwt_probe__pack + (const RpcEventStaItwtProbe *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__event__sta_itwt_probe__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__event__sta_itwt_probe__pack_to_buffer + (const RpcEventStaItwtProbe *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__event__sta_itwt_probe__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcEventStaItwtProbe * + rpc__event__sta_itwt_probe__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcEventStaItwtProbe *) + protobuf_c_message_unpack (&rpc__event__sta_itwt_probe__descriptor, + allocator, len, data); +} +void rpc__event__sta_itwt_probe__free_unpacked + (RpcEventStaItwtProbe *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__event__sta_itwt_probe__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__init + (Rpc *message) +{ + static const Rpc init_value = RPC__INIT; + *message = init_value; +} +size_t rpc__get_packed_size + (const Rpc *message) +{ + assert(message->base.descriptor == &rpc__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__pack + (const Rpc *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__pack_to_buffer + (const Rpc *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +Rpc * + rpc__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (Rpc *) + protobuf_c_message_unpack (&rpc__descriptor, + allocator, len, data); +} +void rpc__free_unpacked + (Rpc *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +static const ProtobufCFieldDescriptor wifi_init_config__field_descriptors[24] = +{ + { + "static_rx_buf_num", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, static_rx_buf_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dynamic_rx_buf_num", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, dynamic_rx_buf_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "tx_buf_type", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, tx_buf_type), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "static_tx_buf_num", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, static_tx_buf_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dynamic_tx_buf_num", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, dynamic_tx_buf_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cache_tx_buf_num", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, cache_tx_buf_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "csi_enable", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, csi_enable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ampdu_rx_enable", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, ampdu_rx_enable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ampdu_tx_enable", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, ampdu_tx_enable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "amsdu_tx_enable", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, amsdu_tx_enable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "nvs_enable", + 11, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, nvs_enable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "nano_enable", + 12, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, nano_enable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rx_ba_win", + 13, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, rx_ba_win), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "wifi_task_core_id", + 14, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, wifi_task_core_id), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "beacon_max_len", + 15, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, beacon_max_len), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "mgmt_sbuf_num", + 16, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, mgmt_sbuf_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "feature_caps", + 17, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, feature_caps), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sta_disconnected_pm", + 18, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, sta_disconnected_pm), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "espnow_max_encrypt_num", + 19, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, espnow_max_encrypt_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "magic", + 20, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, magic), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rx_mgmt_buf_type", + 21, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, rx_mgmt_buf_type), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rx_mgmt_buf_num", + 22, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, rx_mgmt_buf_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "tx_hetb_queue_num", + 23, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, tx_hetb_queue_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dump_hesigb_enable", + 24, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, dump_hesigb_enable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned wifi_init_config__field_indices_by_name[] = { + 7, /* field[7] = ampdu_rx_enable */ + 8, /* field[8] = ampdu_tx_enable */ + 9, /* field[9] = amsdu_tx_enable */ + 14, /* field[14] = beacon_max_len */ + 5, /* field[5] = cache_tx_buf_num */ + 6, /* field[6] = csi_enable */ + 23, /* field[23] = dump_hesigb_enable */ + 1, /* field[1] = dynamic_rx_buf_num */ + 4, /* field[4] = dynamic_tx_buf_num */ + 18, /* field[18] = espnow_max_encrypt_num */ + 16, /* field[16] = feature_caps */ + 19, /* field[19] = magic */ + 15, /* field[15] = mgmt_sbuf_num */ + 11, /* field[11] = nano_enable */ + 10, /* field[10] = nvs_enable */ + 12, /* field[12] = rx_ba_win */ + 21, /* field[21] = rx_mgmt_buf_num */ + 20, /* field[20] = rx_mgmt_buf_type */ + 17, /* field[17] = sta_disconnected_pm */ + 0, /* field[0] = static_rx_buf_num */ + 3, /* field[3] = static_tx_buf_num */ + 2, /* field[2] = tx_buf_type */ + 22, /* field[22] = tx_hetb_queue_num */ + 13, /* field[13] = wifi_task_core_id */ +}; +static const ProtobufCIntRange wifi_init_config__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 24 } +}; +const ProtobufCMessageDescriptor wifi_init_config__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_init_config", + "WifiInitConfig", + "WifiInitConfig", + "", + sizeof(WifiInitConfig), + 24, + wifi_init_config__field_descriptors, + wifi_init_config__field_indices_by_name, + 1, wifi_init_config__number_ranges, + (ProtobufCMessageInit) wifi_init_config__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_country__field_descriptors[5] = +{ + { + "cc", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(WifiCountry, cc), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "wifi_task_core_id", - 14, + "schan", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiCountry, schan), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "nchan", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiCountry, nchan), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "max_tx_power", + 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiInitConfig, wifi_task_core_id), + offsetof(WifiCountry, max_tx_power), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "beacon_max_len", - 15, + "policy", + 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiInitConfig, beacon_max_len), + offsetof(WifiCountry, policy), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned wifi_country__field_indices_by_name[] = { + 0, /* field[0] = cc */ + 3, /* field[3] = max_tx_power */ + 2, /* field[2] = nchan */ + 4, /* field[4] = policy */ + 1, /* field[1] = schan */ +}; +static const ProtobufCIntRange wifi_country__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor wifi_country__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_country", + "WifiCountry", + "WifiCountry", + "", + sizeof(WifiCountry), + 5, + wifi_country__field_descriptors, + wifi_country__field_indices_by_name, + 1, wifi_country__number_ranges, + (ProtobufCMessageInit) wifi_country__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_active_scan_time__field_descriptors[2] = +{ + { + "min", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiActiveScanTime, min), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "max", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiActiveScanTime, max), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned wifi_active_scan_time__field_indices_by_name[] = { + 1, /* field[1] = max */ + 0, /* field[0] = min */ +}; +static const ProtobufCIntRange wifi_active_scan_time__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor wifi_active_scan_time__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_active_scan_time", + "WifiActiveScanTime", + "WifiActiveScanTime", + "", + sizeof(WifiActiveScanTime), + 2, + wifi_active_scan_time__field_descriptors, + wifi_active_scan_time__field_indices_by_name, + 1, wifi_active_scan_time__number_ranges, + (ProtobufCMessageInit) wifi_active_scan_time__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_scan_time__field_descriptors[2] = +{ + { + "active", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(WifiScanTime, active), + &wifi_active_scan_time__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "passive", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiScanTime, passive), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned wifi_scan_time__field_indices_by_name[] = { + 0, /* field[0] = active */ + 1, /* field[1] = passive */ +}; +static const ProtobufCIntRange wifi_scan_time__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor wifi_scan_time__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_scan_time", + "WifiScanTime", + "WifiScanTime", + "", + sizeof(WifiScanTime), + 2, + wifi_scan_time__field_descriptors, + wifi_scan_time__field_indices_by_name, + 1, wifi_scan_time__number_ranges, + (ProtobufCMessageInit) wifi_scan_time__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_scan_channel_bitmap__field_descriptors[2] = +{ + { + "ghz_2_channels", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiScanChannelBitmap, ghz_2_channels), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ghz_5_channels", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiScanChannelBitmap, ghz_5_channels), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned wifi_scan_channel_bitmap__field_indices_by_name[] = { + 0, /* field[0] = ghz_2_channels */ + 1, /* field[1] = ghz_5_channels */ +}; +static const ProtobufCIntRange wifi_scan_channel_bitmap__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor wifi_scan_channel_bitmap__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_scan_channel_bitmap", + "WifiScanChannelBitmap", + "WifiScanChannelBitmap", + "", + sizeof(WifiScanChannelBitmap), + 2, + wifi_scan_channel_bitmap__field_descriptors, + wifi_scan_channel_bitmap__field_indices_by_name, + 1, wifi_scan_channel_bitmap__number_ranges, + (ProtobufCMessageInit) wifi_scan_channel_bitmap__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_scan_config__field_descriptors[8] = +{ + { + "ssid", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(WifiScanConfig, ssid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "mgmt_sbuf_num", - 16, + "bssid", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiInitConfig, mgmt_sbuf_num), + offsetof(WifiScanConfig, bssid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "feature_caps", - 17, + "channel", + 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT64, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiInitConfig, feature_caps), + offsetof(WifiScanConfig, channel), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "sta_disconnected_pm", - 18, + "show_hidden", + 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiInitConfig, sta_disconnected_pm), + offsetof(WifiScanConfig, show_hidden), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "espnow_max_encrypt_num", - 19, + "scan_type", + 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiInitConfig, espnow_max_encrypt_num), + offsetof(WifiScanConfig, scan_type), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "magic", - 20, + "scan_time", + 6, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(WifiInitConfig, magic), - NULL, + offsetof(WifiScanConfig, scan_time), + &wifi_scan_time__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "rx_mgmt_buf_type", - 21, + "home_chan_dwell_time", + 7, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiInitConfig, rx_mgmt_buf_type), + offsetof(WifiScanConfig, home_chan_dwell_time), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "rx_mgmt_buf_num", - 22, + "channel_bitmap", + 8, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(WifiInitConfig, rx_mgmt_buf_num), - NULL, + offsetof(WifiScanConfig, channel_bitmap), + &wifi_scan_channel_bitmap__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_scan_config__field_indices_by_name[] = { + 1, /* field[1] = bssid */ + 2, /* field[2] = channel */ + 7, /* field[7] = channel_bitmap */ + 6, /* field[6] = home_chan_dwell_time */ + 5, /* field[5] = scan_time */ + 4, /* field[4] = scan_type */ + 3, /* field[3] = show_hidden */ + 0, /* field[0] = ssid */ +}; +static const ProtobufCIntRange wifi_scan_config__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 8 } +}; +const ProtobufCMessageDescriptor wifi_scan_config__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_scan_config", + "WifiScanConfig", + "WifiScanConfig", + "", + sizeof(WifiScanConfig), + 8, + wifi_scan_config__field_descriptors, + wifi_scan_config__field_indices_by_name, + 1, wifi_scan_config__number_ranges, + (ProtobufCMessageInit) wifi_scan_config__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_he_ap_info__field_descriptors[2] = +{ { - "tx_hetb_queue_num", - 23, + "bitmask", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiInitConfig, tx_hetb_queue_num), + offsetof(WifiHeApInfo, bitmask), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dump_hesigb_enable", - 24, + "bssid_index", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiInitConfig, dump_hesigb_enable), + offsetof(WifiHeApInfo, bssid_index), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_init_config__field_indices_by_name[] = { - 7, /* field[7] = ampdu_rx_enable */ - 8, /* field[8] = ampdu_tx_enable */ - 9, /* field[9] = amsdu_tx_enable */ - 14, /* field[14] = beacon_max_len */ - 5, /* field[5] = cache_tx_buf_num */ - 6, /* field[6] = csi_enable */ - 23, /* field[23] = dump_hesigb_enable */ - 1, /* field[1] = dynamic_rx_buf_num */ - 4, /* field[4] = dynamic_tx_buf_num */ - 18, /* field[18] = espnow_max_encrypt_num */ - 16, /* field[16] = feature_caps */ - 19, /* field[19] = magic */ - 15, /* field[15] = mgmt_sbuf_num */ - 11, /* field[11] = nano_enable */ - 10, /* field[10] = nvs_enable */ - 12, /* field[12] = rx_ba_win */ - 21, /* field[21] = rx_mgmt_buf_num */ - 20, /* field[20] = rx_mgmt_buf_type */ - 17, /* field[17] = sta_disconnected_pm */ - 0, /* field[0] = static_rx_buf_num */ - 3, /* field[3] = static_tx_buf_num */ - 2, /* field[2] = tx_buf_type */ - 22, /* field[22] = tx_hetb_queue_num */ - 13, /* field[13] = wifi_task_core_id */ +static const unsigned wifi_he_ap_info__field_indices_by_name[] = { + 0, /* field[0] = bitmask */ + 1, /* field[1] = bssid_index */ }; -static const ProtobufCIntRange wifi_init_config__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_he_ap_info__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 24 } + { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_init_config__descriptor = +const ProtobufCMessageDescriptor wifi_he_ap_info__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_init_config", - "WifiInitConfig", - "WifiInitConfig", + "wifi_he_ap_info", + "WifiHeApInfo", + "WifiHeApInfo", "", - sizeof(WifiInitConfig), - 24, - wifi_init_config__field_descriptors, - wifi_init_config__field_indices_by_name, - 1, wifi_init_config__number_ranges, - (ProtobufCMessageInit) wifi_init_config__init, + sizeof(WifiHeApInfo), + 2, + wifi_he_ap_info__field_descriptors, + wifi_he_ap_info__field_indices_by_name, + 1, wifi_he_ap_info__number_ranges, + (ProtobufCMessageInit) wifi_he_ap_info__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_country__field_descriptors[5] = +static const ProtobufCFieldDescriptor wifi_ap_record__field_descriptors[15] = { { - "cc", + "bssid", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiCountry, cc), + offsetof(WifiApRecord, bssid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "schan", + "ssid", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiCountry, schan), + offsetof(WifiApRecord, ssid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "nchan", + "primary", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiCountry, nchan), + offsetof(WifiApRecord, primary), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "max_tx_power", + "second", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiCountry, max_tx_power), + offsetof(WifiApRecord, second), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "policy", + "rssi", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiCountry, policy), + offsetof(WifiApRecord, rssi), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "authmode", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiApRecord, authmode), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "pairwise_cipher", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiApRecord, pairwise_cipher), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "group_cipher", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiApRecord, group_cipher), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ant", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiApRecord, ant), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned wifi_country__field_indices_by_name[] = { - 0, /* field[0] = cc */ - 3, /* field[3] = max_tx_power */ - 2, /* field[2] = nchan */ - 4, /* field[4] = policy */ - 1, /* field[1] = schan */ -}; -static const ProtobufCIntRange wifi_country__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 5 } -}; -const ProtobufCMessageDescriptor wifi_country__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_country", - "WifiCountry", - "WifiCountry", - "", - sizeof(WifiCountry), - 5, - wifi_country__field_descriptors, - wifi_country__field_indices_by_name, - 1, wifi_country__number_ranges, - (ProtobufCMessageInit) wifi_country__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor wifi_active_scan_time__field_descriptors[2] = -{ { - "min", - 1, + "bitmask", + 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiActiveScanTime, min), + offsetof(WifiApRecord, bitmask), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "max", - 2, + "country", + 11, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(WifiActiveScanTime, max), - NULL, + offsetof(WifiApRecord, country), + &wifi_country__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned wifi_active_scan_time__field_indices_by_name[] = { - 1, /* field[1] = max */ - 0, /* field[0] = min */ -}; -static const ProtobufCIntRange wifi_active_scan_time__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor wifi_active_scan_time__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_active_scan_time", - "WifiActiveScanTime", - "WifiActiveScanTime", - "", - sizeof(WifiActiveScanTime), - 2, - wifi_active_scan_time__field_descriptors, - wifi_active_scan_time__field_indices_by_name, - 1, wifi_active_scan_time__number_ranges, - (ProtobufCMessageInit) wifi_active_scan_time__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor wifi_scan_time__field_descriptors[2] = -{ { - "active", - 1, + "he_ap", + 12, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(WifiScanTime, active), - &wifi_active_scan_time__descriptor, + offsetof(WifiApRecord, he_ap), + &wifi_he_ap_info__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "passive", - 2, + "bandwidth", + 13, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiScanTime, passive), + offsetof(WifiApRecord, bandwidth), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned wifi_scan_time__field_indices_by_name[] = { - 0, /* field[0] = active */ - 1, /* field[1] = passive */ -}; -static const ProtobufCIntRange wifi_scan_time__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor wifi_scan_time__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_scan_time", - "WifiScanTime", - "WifiScanTime", - "", - sizeof(WifiScanTime), - 2, - wifi_scan_time__field_descriptors, - wifi_scan_time__field_indices_by_name, - 1, wifi_scan_time__number_ranges, - (ProtobufCMessageInit) wifi_scan_time__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor wifi_scan_channel_bitmap__field_descriptors[2] = -{ { - "ghz_2_channels", - 1, + "vht_ch_freq1", + 14, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiScanChannelBitmap, ghz_2_channels), + offsetof(WifiApRecord, vht_ch_freq1), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ghz_5_channels", - 2, + "vht_ch_freq2", + 15, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiScanChannelBitmap, ghz_5_channels), + offsetof(WifiApRecord, vht_ch_freq2), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_scan_channel_bitmap__field_indices_by_name[] = { - 0, /* field[0] = ghz_2_channels */ - 1, /* field[1] = ghz_5_channels */ +static const unsigned wifi_ap_record__field_indices_by_name[] = { + 8, /* field[8] = ant */ + 5, /* field[5] = authmode */ + 12, /* field[12] = bandwidth */ + 9, /* field[9] = bitmask */ + 0, /* field[0] = bssid */ + 10, /* field[10] = country */ + 7, /* field[7] = group_cipher */ + 11, /* field[11] = he_ap */ + 6, /* field[6] = pairwise_cipher */ + 2, /* field[2] = primary */ + 4, /* field[4] = rssi */ + 3, /* field[3] = second */ + 1, /* field[1] = ssid */ + 13, /* field[13] = vht_ch_freq1 */ + 14, /* field[14] = vht_ch_freq2 */ }; -static const ProtobufCIntRange wifi_scan_channel_bitmap__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_ap_record__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 15 } }; -const ProtobufCMessageDescriptor wifi_scan_channel_bitmap__descriptor = +const ProtobufCMessageDescriptor wifi_ap_record__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_scan_channel_bitmap", - "WifiScanChannelBitmap", - "WifiScanChannelBitmap", + "wifi_ap_record", + "WifiApRecord", + "WifiApRecord", "", - sizeof(WifiScanChannelBitmap), - 2, - wifi_scan_channel_bitmap__field_descriptors, - wifi_scan_channel_bitmap__field_indices_by_name, - 1, wifi_scan_channel_bitmap__number_ranges, - (ProtobufCMessageInit) wifi_scan_channel_bitmap__init, + sizeof(WifiApRecord), + 15, + wifi_ap_record__field_descriptors, + wifi_ap_record__field_indices_by_name, + 1, wifi_ap_record__number_ranges, + (ProtobufCMessageInit) wifi_ap_record__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_scan_config__field_descriptors[8] = +static const ProtobufCFieldDescriptor wifi_scan_threshold__field_descriptors[3] = { { - "ssid", + "rssi", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiScanConfig, ssid), + offsetof(WifiScanThreshold, rssi), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "bssid", + "authmode", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiScanConfig, bssid), + offsetof(WifiScanThreshold, authmode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "channel", + "rssi_5g_adjustment", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiScanConfig, channel), + offsetof(WifiScanThreshold, rssi_5g_adjustment), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_scan_threshold__field_indices_by_name[] = { + 1, /* field[1] = authmode */ + 0, /* field[0] = rssi */ + 2, /* field[2] = rssi_5g_adjustment */ +}; +static const ProtobufCIntRange wifi_scan_threshold__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor wifi_scan_threshold__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_scan_threshold", + "WifiScanThreshold", + "WifiScanThreshold", + "", + sizeof(WifiScanThreshold), + 3, + wifi_scan_threshold__field_descriptors, + wifi_scan_threshold__field_indices_by_name, + 1, wifi_scan_threshold__number_ranges, + (ProtobufCMessageInit) wifi_scan_threshold__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_pmf_config__field_descriptors[2] = +{ { - "show_hidden", - 4, + "capable", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiScanConfig, show_hidden), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "scan_type", - 5, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiScanConfig, scan_type), - NULL, + offsetof(WifiPmfConfig, capable), NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "scan_time", - 6, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(WifiScanConfig, scan_time), - &wifi_scan_time__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "home_chan_dwell_time", - 7, + "required", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiScanConfig, home_chan_dwell_time), - NULL, + offsetof(WifiPmfConfig, required), NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "channel_bitmap", - 8, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(WifiScanConfig, channel_bitmap), - &wifi_scan_channel_bitmap__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_scan_config__field_indices_by_name[] = { - 1, /* field[1] = bssid */ - 2, /* field[2] = channel */ - 7, /* field[7] = channel_bitmap */ - 6, /* field[6] = home_chan_dwell_time */ - 5, /* field[5] = scan_time */ - 4, /* field[4] = scan_type */ - 3, /* field[3] = show_hidden */ - 0, /* field[0] = ssid */ +static const unsigned wifi_pmf_config__field_indices_by_name[] = { + 0, /* field[0] = capable */ + 1, /* field[1] = required */ }; -static const ProtobufCIntRange wifi_scan_config__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_pmf_config__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 8 } + { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_scan_config__descriptor = +const ProtobufCMessageDescriptor wifi_pmf_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_scan_config", - "WifiScanConfig", - "WifiScanConfig", + "wifi_pmf_config", + "WifiPmfConfig", + "WifiPmfConfig", "", - sizeof(WifiScanConfig), - 8, - wifi_scan_config__field_descriptors, - wifi_scan_config__field_indices_by_name, - 1, wifi_scan_config__number_ranges, - (ProtobufCMessageInit) wifi_scan_config__init, + sizeof(WifiPmfConfig), + 2, + wifi_pmf_config__field_descriptors, + wifi_pmf_config__field_indices_by_name, + 1, wifi_pmf_config__number_ranges, + (ProtobufCMessageInit) wifi_pmf_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_he_ap_info__field_descriptors[2] = +static const ProtobufCFieldDescriptor wifi_bss_max_idle_config__field_descriptors[2] = { { - "bitmask", + "period", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiHeApInfo, bitmask), + offsetof(WifiBssMaxIdleConfig, period), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "bssid_index", + "protected_keep_alive", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiHeApInfo, bssid_index), + offsetof(WifiBssMaxIdleConfig, protected_keep_alive), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_he_ap_info__field_indices_by_name[] = { - 0, /* field[0] = bitmask */ - 1, /* field[1] = bssid_index */ +static const unsigned wifi_bss_max_idle_config__field_indices_by_name[] = { + 0, /* field[0] = period */ + 1, /* field[1] = protected_keep_alive */ }; -static const ProtobufCIntRange wifi_he_ap_info__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_bss_max_idle_config__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_he_ap_info__descriptor = +const ProtobufCMessageDescriptor wifi_bss_max_idle_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_he_ap_info", - "WifiHeApInfo", - "WifiHeApInfo", + "wifi_bss_max_idle_config", + "WifiBssMaxIdleConfig", + "WifiBssMaxIdleConfig", "", - sizeof(WifiHeApInfo), + sizeof(WifiBssMaxIdleConfig), 2, - wifi_he_ap_info__field_descriptors, - wifi_he_ap_info__field_indices_by_name, - 1, wifi_he_ap_info__number_ranges, - (ProtobufCMessageInit) wifi_he_ap_info__init, + wifi_bss_max_idle_config__field_descriptors, + wifi_bss_max_idle_config__field_indices_by_name, + 1, wifi_bss_max_idle_config__number_ranges, + (ProtobufCMessageInit) wifi_bss_max_idle_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_ap_record__field_descriptors[15] = +static const ProtobufCFieldDescriptor wifi_ap_config__field_descriptors[18] = { { - "bssid", + "ssid", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiApRecord, bssid), + offsetof(WifiApConfig, ssid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ssid", + "password", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiApRecord, ssid), + offsetof(WifiApConfig, password), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "primary", + "ssid_len", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiApRecord, primary), + offsetof(WifiApConfig, ssid_len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "second", + "channel", 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiApRecord, second), + offsetof(WifiApConfig, channel), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "rssi", + "authmode", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiApRecord, rssi), + offsetof(WifiApConfig, authmode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "authmode", + "ssid_hidden", 6, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiApRecord, authmode), + offsetof(WifiApConfig, ssid_hidden), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "pairwise_cipher", + "max_connection", 7, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiApRecord, pairwise_cipher), + offsetof(WifiApConfig, max_connection), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "group_cipher", + "beacon_interval", 8, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiApRecord, group_cipher), + offsetof(WifiApConfig, beacon_interval), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ant", + "pairwise_cipher", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiApRecord, ant), + offsetof(WifiApConfig, pairwise_cipher), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "bitmask", + "ftm_responder", 10, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiApRecord, bitmask), + offsetof(WifiApConfig, ftm_responder), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "country", + "pmf_cfg", 11, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(WifiApRecord, country), - &wifi_country__descriptor, + offsetof(WifiApConfig, pmf_cfg), + &wifi_pmf_config__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "he_ap", + "sae_pwe_h2e", 12, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiApRecord, he_ap), - &wifi_he_ap_info__descriptor, + offsetof(WifiApConfig, sae_pwe_h2e), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "bandwidth", + "csa_count", 13, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiApRecord, bandwidth), + offsetof(WifiApConfig, csa_count), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "vht_ch_freq1", + "dtim_period", 14, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiApRecord, vht_ch_freq1), + offsetof(WifiApConfig, dtim_period), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "vht_ch_freq2", + "transition_disable", 15, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiApRecord, vht_ch_freq2), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, -}; -static const unsigned wifi_ap_record__field_indices_by_name[] = { - 8, /* field[8] = ant */ - 5, /* field[5] = authmode */ - 12, /* field[12] = bandwidth */ - 9, /* field[9] = bitmask */ - 0, /* field[0] = bssid */ - 10, /* field[10] = country */ - 7, /* field[7] = group_cipher */ - 11, /* field[11] = he_ap */ - 6, /* field[6] = pairwise_cipher */ - 2, /* field[2] = primary */ - 4, /* field[4] = rssi */ - 3, /* field[3] = second */ - 1, /* field[1] = ssid */ - 13, /* field[13] = vht_ch_freq1 */ - 14, /* field[14] = vht_ch_freq2 */ -}; -static const ProtobufCIntRange wifi_ap_record__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 15 } -}; -const ProtobufCMessageDescriptor wifi_ap_record__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_ap_record", - "WifiApRecord", - "WifiApRecord", - "", - sizeof(WifiApRecord), - 15, - wifi_ap_record__field_descriptors, - wifi_ap_record__field_indices_by_name, - 1, wifi_ap_record__number_ranges, - (ProtobufCMessageInit) wifi_ap_record__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor wifi_scan_threshold__field_descriptors[3] = -{ - { - "rssi", - 1, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiScanThreshold, rssi), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "authmode", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiScanThreshold, authmode), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "rssi_5g_adjustment", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiScanThreshold, rssi_5g_adjustment), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, -}; -static const unsigned wifi_scan_threshold__field_indices_by_name[] = { - 1, /* field[1] = authmode */ - 0, /* field[0] = rssi */ - 2, /* field[2] = rssi_5g_adjustment */ -}; -static const ProtobufCIntRange wifi_scan_threshold__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 3 } -}; -const ProtobufCMessageDescriptor wifi_scan_threshold__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_scan_threshold", - "WifiScanThreshold", - "WifiScanThreshold", - "", - sizeof(WifiScanThreshold), - 3, - wifi_scan_threshold__field_descriptors, - wifi_scan_threshold__field_indices_by_name, - 1, wifi_scan_threshold__number_ranges, - (ProtobufCMessageInit) wifi_scan_threshold__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor wifi_pmf_config__field_descriptors[2] = -{ - { - "capable", - 1, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, - 0, /* quantifier_offset */ - offsetof(WifiPmfConfig, capable), + offsetof(WifiApConfig, transition_disable), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "required", - 2, + "sae_ext", + 16, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPmfConfig, required), + offsetof(WifiApConfig, sae_ext), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned wifi_pmf_config__field_indices_by_name[] = { - 0, /* field[0] = capable */ - 1, /* field[1] = required */ -}; -static const ProtobufCIntRange wifi_pmf_config__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor wifi_pmf_config__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_pmf_config", - "WifiPmfConfig", - "WifiPmfConfig", - "", - sizeof(WifiPmfConfig), - 2, - wifi_pmf_config__field_descriptors, - wifi_pmf_config__field_indices_by_name, - 1, wifi_pmf_config__number_ranges, - (ProtobufCMessageInit) wifi_pmf_config__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor wifi_bss_max_idle_config__field_descriptors[2] = -{ { - "period", - 1, + "bss_max_idle_cfg", + 17, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(WifiBssMaxIdleConfig, period), - NULL, + offsetof(WifiApConfig, bss_max_idle_cfg), + &wifi_bss_max_idle_config__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "protected_keep_alive", - 2, + "gtk_rekey_interval", + 18, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiBssMaxIdleConfig, protected_keep_alive), + offsetof(WifiApConfig, gtk_rekey_interval), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_bss_max_idle_config__field_indices_by_name[] = { - 0, /* field[0] = period */ - 1, /* field[1] = protected_keep_alive */ +static const unsigned wifi_ap_config__field_indices_by_name[] = { + 4, /* field[4] = authmode */ + 7, /* field[7] = beacon_interval */ + 16, /* field[16] = bss_max_idle_cfg */ + 3, /* field[3] = channel */ + 12, /* field[12] = csa_count */ + 13, /* field[13] = dtim_period */ + 9, /* field[9] = ftm_responder */ + 17, /* field[17] = gtk_rekey_interval */ + 6, /* field[6] = max_connection */ + 8, /* field[8] = pairwise_cipher */ + 1, /* field[1] = password */ + 10, /* field[10] = pmf_cfg */ + 15, /* field[15] = sae_ext */ + 11, /* field[11] = sae_pwe_h2e */ + 0, /* field[0] = ssid */ + 5, /* field[5] = ssid_hidden */ + 2, /* field[2] = ssid_len */ + 14, /* field[14] = transition_disable */ }; -static const ProtobufCIntRange wifi_bss_max_idle_config__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_ap_config__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 18 } }; -const ProtobufCMessageDescriptor wifi_bss_max_idle_config__descriptor = +const ProtobufCMessageDescriptor wifi_ap_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_bss_max_idle_config", - "WifiBssMaxIdleConfig", - "WifiBssMaxIdleConfig", + "wifi_ap_config", + "WifiApConfig", + "WifiApConfig", "", - sizeof(WifiBssMaxIdleConfig), - 2, - wifi_bss_max_idle_config__field_descriptors, - wifi_bss_max_idle_config__field_indices_by_name, - 1, wifi_bss_max_idle_config__number_ranges, - (ProtobufCMessageInit) wifi_bss_max_idle_config__init, + sizeof(WifiApConfig), + 18, + wifi_ap_config__field_descriptors, + wifi_ap_config__field_indices_by_name, + 1, wifi_ap_config__number_ranges, + (ProtobufCMessageInit) wifi_ap_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_ap_config__field_descriptors[18] = +static const ProtobufCFieldDescriptor wifi_sta_config__field_descriptors[16] = { { "ssid", @@ -8766,7 +10105,7 @@ static const ProtobufCFieldDescriptor wifi_ap_config__field_descriptors[18] = PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiApConfig, ssid), + offsetof(WifiStaConfig, ssid), NULL, NULL, 0, /* flags */ @@ -8778,116 +10117,116 @@ static const ProtobufCFieldDescriptor wifi_ap_config__field_descriptors[18] = PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiApConfig, password), + offsetof(WifiStaConfig, password), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ssid_len", + "scan_method", 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiApConfig, ssid_len), + offsetof(WifiStaConfig, scan_method), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "channel", + "bssid_set", 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiApConfig, channel), + offsetof(WifiStaConfig, bssid_set), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "authmode", + "bssid", 5, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiApConfig, authmode), + offsetof(WifiStaConfig, bssid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ssid_hidden", + "channel", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiApConfig, ssid_hidden), + offsetof(WifiStaConfig, channel), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "max_connection", + "listen_interval", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiApConfig, max_connection), + offsetof(WifiStaConfig, listen_interval), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "beacon_interval", + "sort_method", 8, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiApConfig, beacon_interval), + offsetof(WifiStaConfig, sort_method), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "pairwise_cipher", + "threshold", 9, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(WifiApConfig, pairwise_cipher), - NULL, + offsetof(WifiStaConfig, threshold), + &wifi_scan_threshold__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ftm_responder", + "pmf_cfg", 10, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(WifiApConfig, ftm_responder), - NULL, + offsetof(WifiStaConfig, pmf_cfg), + &wifi_pmf_config__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "pmf_cfg", + "bitmask", 11, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiApConfig, pmf_cfg), - &wifi_pmf_config__descriptor, + offsetof(WifiStaConfig, bitmask), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ @@ -8896,2813 +10235,3496 @@ static const ProtobufCFieldDescriptor wifi_ap_config__field_descriptors[18] = "sae_pwe_h2e", 12, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiApConfig, sae_pwe_h2e), - NULL, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiStaConfig, sae_pwe_h2e), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "failure_retry_cnt", + 13, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiStaConfig, failure_retry_cnt), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "he_bitmask", + 14, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiStaConfig, he_bitmask), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sae_h2e_identifier", + 15, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(WifiStaConfig, sae_h2e_identifier), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sae_pk_mode", + 16, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiStaConfig, sae_pk_mode), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned wifi_sta_config__field_indices_by_name[] = { + 10, /* field[10] = bitmask */ + 4, /* field[4] = bssid */ + 3, /* field[3] = bssid_set */ + 5, /* field[5] = channel */ + 12, /* field[12] = failure_retry_cnt */ + 13, /* field[13] = he_bitmask */ + 6, /* field[6] = listen_interval */ + 1, /* field[1] = password */ + 9, /* field[9] = pmf_cfg */ + 14, /* field[14] = sae_h2e_identifier */ + 15, /* field[15] = sae_pk_mode */ + 11, /* field[11] = sae_pwe_h2e */ + 2, /* field[2] = scan_method */ + 7, /* field[7] = sort_method */ + 0, /* field[0] = ssid */ + 8, /* field[8] = threshold */ +}; +static const ProtobufCIntRange wifi_sta_config__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 16 } +}; +const ProtobufCMessageDescriptor wifi_sta_config__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_sta_config", + "WifiStaConfig", + "WifiStaConfig", + "", + sizeof(WifiStaConfig), + 16, + wifi_sta_config__field_descriptors, + wifi_sta_config__field_indices_by_name, + 1, wifi_sta_config__number_ranges, + (ProtobufCMessageInit) wifi_sta_config__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_config__field_descriptors[2] = +{ + { + "ap", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(WifiConfig, u_case), + offsetof(WifiConfig, ap), + &wifi_ap_config__descriptor, NULL, - 0, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "csa_count", - 13, + "sta", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiApConfig, csa_count), - NULL, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(WifiConfig, u_case), + offsetof(WifiConfig, sta), + &wifi_sta_config__descriptor, NULL, - 0, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_config__field_indices_by_name[] = { + 0, /* field[0] = ap */ + 1, /* field[1] = sta */ +}; +static const ProtobufCIntRange wifi_config__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor wifi_config__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_config", + "WifiConfig", + "WifiConfig", + "", + sizeof(WifiConfig), + 2, + wifi_config__field_descriptors, + wifi_config__field_indices_by_name, + 1, wifi_config__number_ranges, + (ProtobufCMessageInit) wifi_config__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_sta_info__field_descriptors[3] = +{ { - "dtim_period", - 14, + "mac", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiApConfig, dtim_period), + offsetof(WifiStaInfo, mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "transition_disable", - 15, + "rssi", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiApConfig, transition_disable), + offsetof(WifiStaInfo, rssi), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "sae_ext", - 16, + "bitmask", + 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiApConfig, sae_ext), + offsetof(WifiStaInfo, bitmask), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_sta_info__field_indices_by_name[] = { + 2, /* field[2] = bitmask */ + 0, /* field[0] = mac */ + 1, /* field[1] = rssi */ +}; +static const ProtobufCIntRange wifi_sta_info__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor wifi_sta_info__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_sta_info", + "WifiStaInfo", + "WifiStaInfo", + "", + sizeof(WifiStaInfo), + 3, + wifi_sta_info__field_descriptors, + wifi_sta_info__field_indices_by_name, + 1, wifi_sta_info__number_ranges, + (ProtobufCMessageInit) wifi_sta_info__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_sta_list__field_descriptors[2] = +{ { - "bss_max_idle_cfg", - 17, - PROTOBUF_C_LABEL_NONE, + "sta", + 1, + PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(WifiApConfig, bss_max_idle_cfg), - &wifi_bss_max_idle_config__descriptor, + offsetof(WifiStaList, n_sta), + offsetof(WifiStaList, sta), + &wifi_sta_info__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "gtk_rekey_interval", - 18, + "num", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiApConfig, gtk_rekey_interval), + offsetof(WifiStaList, num), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_ap_config__field_indices_by_name[] = { - 4, /* field[4] = authmode */ - 7, /* field[7] = beacon_interval */ - 16, /* field[16] = bss_max_idle_cfg */ - 3, /* field[3] = channel */ - 12, /* field[12] = csa_count */ - 13, /* field[13] = dtim_period */ - 9, /* field[9] = ftm_responder */ - 17, /* field[17] = gtk_rekey_interval */ - 6, /* field[6] = max_connection */ - 8, /* field[8] = pairwise_cipher */ - 1, /* field[1] = password */ - 10, /* field[10] = pmf_cfg */ - 15, /* field[15] = sae_ext */ - 11, /* field[11] = sae_pwe_h2e */ - 0, /* field[0] = ssid */ - 5, /* field[5] = ssid_hidden */ - 2, /* field[2] = ssid_len */ - 14, /* field[14] = transition_disable */ +static const unsigned wifi_sta_list__field_indices_by_name[] = { + 1, /* field[1] = num */ + 0, /* field[0] = sta */ }; -static const ProtobufCIntRange wifi_ap_config__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_sta_list__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 18 } + { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_ap_config__descriptor = +const ProtobufCMessageDescriptor wifi_sta_list__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_ap_config", - "WifiApConfig", - "WifiApConfig", + "wifi_sta_list", + "WifiStaList", + "WifiStaList", "", - sizeof(WifiApConfig), - 18, - wifi_ap_config__field_descriptors, - wifi_ap_config__field_indices_by_name, - 1, wifi_ap_config__number_ranges, - (ProtobufCMessageInit) wifi_ap_config__init, + sizeof(WifiStaList), + 2, + wifi_sta_list__field_descriptors, + wifi_sta_list__field_indices_by_name, + 1, wifi_sta_list__number_ranges, + (ProtobufCMessageInit) wifi_sta_list__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_sta_config__field_descriptors[16] = +static const ProtobufCFieldDescriptor wifi_pkt_rx_ctrl__field_descriptors[19] = { { - "ssid", + "rssi", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiStaConfig, ssid), + offsetof(WifiPktRxCtrl, rssi), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "password", + "rate", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiStaConfig, password), + offsetof(WifiPktRxCtrl, rate), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "scan_method", + "sig_mode", 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiStaConfig, scan_method), + offsetof(WifiPktRxCtrl, sig_mode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "bssid_set", + "mcs", 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiStaConfig, bssid_set), + offsetof(WifiPktRxCtrl, mcs), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "bssid", + "cwb", 5, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiStaConfig, bssid), + offsetof(WifiPktRxCtrl, cwb), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "channel", + "smoothing", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiStaConfig, channel), + offsetof(WifiPktRxCtrl, smoothing), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "listen_interval", + "not_sounding", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiStaConfig, listen_interval), + offsetof(WifiPktRxCtrl, not_sounding), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "sort_method", + "aggregation", 8, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiStaConfig, sort_method), + offsetof(WifiPktRxCtrl, aggregation), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "threshold", + "stbc", 9, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiStaConfig, threshold), - &wifi_scan_threshold__descriptor, + offsetof(WifiPktRxCtrl, stbc), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "fec_coding", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiPktRxCtrl, fec_coding), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sgi", + 11, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiPktRxCtrl, sgi), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "noise_floor", + 12, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiPktRxCtrl, noise_floor), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "pmf_cfg", - 10, + "ampdu_cnt", + 13, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiStaConfig, pmf_cfg), - &wifi_pmf_config__descriptor, + offsetof(WifiPktRxCtrl, ampdu_cnt), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "bitmask", - 11, + "channel", + 14, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiStaConfig, bitmask), + offsetof(WifiPktRxCtrl, channel), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "sae_pwe_h2e", - 12, + "secondary_channel", + 15, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiStaConfig, sae_pwe_h2e), + offsetof(WifiPktRxCtrl, secondary_channel), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "failure_retry_cnt", - 13, + "timestamp", + 16, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiStaConfig, failure_retry_cnt), + offsetof(WifiPktRxCtrl, timestamp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "he_bitmask", - 14, + "ant", + 17, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiStaConfig, he_bitmask), + offsetof(WifiPktRxCtrl, ant), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "sae_h2e_identifier", - 15, + "sig_len", + 18, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiStaConfig, sae_h2e_identifier), + offsetof(WifiPktRxCtrl, sig_len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "sae_pk_mode", - 16, + "rx_state", + 19, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiStaConfig, sae_pk_mode), + offsetof(WifiPktRxCtrl, rx_state), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_sta_config__field_indices_by_name[] = { - 10, /* field[10] = bitmask */ - 4, /* field[4] = bssid */ - 3, /* field[3] = bssid_set */ - 5, /* field[5] = channel */ - 12, /* field[12] = failure_retry_cnt */ - 13, /* field[13] = he_bitmask */ - 6, /* field[6] = listen_interval */ - 1, /* field[1] = password */ - 9, /* field[9] = pmf_cfg */ - 14, /* field[14] = sae_h2e_identifier */ - 15, /* field[15] = sae_pk_mode */ - 11, /* field[11] = sae_pwe_h2e */ - 2, /* field[2] = scan_method */ - 7, /* field[7] = sort_method */ - 0, /* field[0] = ssid */ - 8, /* field[8] = threshold */ +static const unsigned wifi_pkt_rx_ctrl__field_indices_by_name[] = { + 7, /* field[7] = aggregation */ + 12, /* field[12] = ampdu_cnt */ + 16, /* field[16] = ant */ + 13, /* field[13] = channel */ + 4, /* field[4] = cwb */ + 9, /* field[9] = fec_coding */ + 3, /* field[3] = mcs */ + 11, /* field[11] = noise_floor */ + 6, /* field[6] = not_sounding */ + 1, /* field[1] = rate */ + 0, /* field[0] = rssi */ + 18, /* field[18] = rx_state */ + 14, /* field[14] = secondary_channel */ + 10, /* field[10] = sgi */ + 17, /* field[17] = sig_len */ + 2, /* field[2] = sig_mode */ + 5, /* field[5] = smoothing */ + 8, /* field[8] = stbc */ + 15, /* field[15] = timestamp */ }; -static const ProtobufCIntRange wifi_sta_config__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_pkt_rx_ctrl__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 16 } + { 0, 19 } }; -const ProtobufCMessageDescriptor wifi_sta_config__descriptor = +const ProtobufCMessageDescriptor wifi_pkt_rx_ctrl__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_sta_config", - "WifiStaConfig", - "WifiStaConfig", + "wifi_pkt_rx_ctrl", + "WifiPktRxCtrl", + "WifiPktRxCtrl", "", - sizeof(WifiStaConfig), - 16, - wifi_sta_config__field_descriptors, - wifi_sta_config__field_indices_by_name, - 1, wifi_sta_config__number_ranges, - (ProtobufCMessageInit) wifi_sta_config__init, + sizeof(WifiPktRxCtrl), + 19, + wifi_pkt_rx_ctrl__field_descriptors, + wifi_pkt_rx_ctrl__field_indices_by_name, + 1, wifi_pkt_rx_ctrl__number_ranges, + (ProtobufCMessageInit) wifi_pkt_rx_ctrl__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_config__field_descriptors[2] = +static const ProtobufCFieldDescriptor wifi_promiscuous_pkt__field_descriptors[2] = { { - "ap", + "rx_ctrl", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, - offsetof(WifiConfig, u_case), - offsetof(WifiConfig, ap), - &wifi_ap_config__descriptor, + 0, /* quantifier_offset */ + offsetof(WifiPromiscuousPkt, rx_ctrl), + &wifi_pkt_rx_ctrl__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "sta", + "payload", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - offsetof(WifiConfig, u_case), - offsetof(WifiConfig, sta), - &wifi_sta_config__descriptor, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(WifiPromiscuousPkt, payload), NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + NULL, + 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_config__field_indices_by_name[] = { - 0, /* field[0] = ap */ - 1, /* field[1] = sta */ +static const unsigned wifi_promiscuous_pkt__field_indices_by_name[] = { + 1, /* field[1] = payload */ + 0, /* field[0] = rx_ctrl */ }; -static const ProtobufCIntRange wifi_config__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_promiscuous_pkt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_config__descriptor = +const ProtobufCMessageDescriptor wifi_promiscuous_pkt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_config", - "WifiConfig", - "WifiConfig", + "wifi_promiscuous_pkt", + "WifiPromiscuousPkt", + "WifiPromiscuousPkt", "", - sizeof(WifiConfig), + sizeof(WifiPromiscuousPkt), 2, - wifi_config__field_descriptors, - wifi_config__field_indices_by_name, - 1, wifi_config__number_ranges, - (ProtobufCMessageInit) wifi_config__init, + wifi_promiscuous_pkt__field_descriptors, + wifi_promiscuous_pkt__field_indices_by_name, + 1, wifi_promiscuous_pkt__number_ranges, + (ProtobufCMessageInit) wifi_promiscuous_pkt__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_sta_info__field_descriptors[3] = +static const ProtobufCFieldDescriptor wifi_promiscuous_filter__field_descriptors[1] = { { - "mac", + "filter_mask", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiPromiscuousFilter, filter_mask), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned wifi_promiscuous_filter__field_indices_by_name[] = { + 0, /* field[0] = filter_mask */ +}; +static const ProtobufCIntRange wifi_promiscuous_filter__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor wifi_promiscuous_filter__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_promiscuous_filter", + "WifiPromiscuousFilter", + "WifiPromiscuousFilter", + "", + sizeof(WifiPromiscuousFilter), + 1, + wifi_promiscuous_filter__field_descriptors, + wifi_promiscuous_filter__field_indices_by_name, + 1, wifi_promiscuous_filter__number_ranges, + (ProtobufCMessageInit) wifi_promiscuous_filter__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_csi_config__field_descriptors[7] = +{ + { + "lltf_en", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(WifiCsiConfig, lltf_en), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "htltf_en", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(WifiCsiConfig, htltf_en), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "stbc_htltf2_en", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(WifiCsiConfig, stbc_htltf2_en), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ltf_merge_en", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(WifiCsiConfig, ltf_merge_en), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "channel_filter_en", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiStaInfo, mac), + offsetof(WifiCsiConfig, channel_filter_en), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "rssi", - 2, + "manu_scale", + 6, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiStaInfo, rssi), + offsetof(WifiCsiConfig, manu_scale), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "bitmask", - 3, + "shift", + 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiStaInfo, bitmask), + offsetof(WifiCsiConfig, shift), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_sta_info__field_indices_by_name[] = { - 2, /* field[2] = bitmask */ - 0, /* field[0] = mac */ - 1, /* field[1] = rssi */ +static const unsigned wifi_csi_config__field_indices_by_name[] = { + 4, /* field[4] = channel_filter_en */ + 1, /* field[1] = htltf_en */ + 0, /* field[0] = lltf_en */ + 3, /* field[3] = ltf_merge_en */ + 5, /* field[5] = manu_scale */ + 6, /* field[6] = shift */ + 2, /* field[2] = stbc_htltf2_en */ }; -static const ProtobufCIntRange wifi_sta_info__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_csi_config__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 3 } + { 0, 7 } }; -const ProtobufCMessageDescriptor wifi_sta_info__descriptor = +const ProtobufCMessageDescriptor wifi_csi_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_sta_info", - "WifiStaInfo", - "WifiStaInfo", + "wifi_csi_config", + "WifiCsiConfig", + "WifiCsiConfig", "", - sizeof(WifiStaInfo), - 3, - wifi_sta_info__field_descriptors, - wifi_sta_info__field_indices_by_name, - 1, wifi_sta_info__number_ranges, - (ProtobufCMessageInit) wifi_sta_info__init, + sizeof(WifiCsiConfig), + 7, + wifi_csi_config__field_descriptors, + wifi_csi_config__field_indices_by_name, + 1, wifi_csi_config__number_ranges, + (ProtobufCMessageInit) wifi_csi_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_sta_list__field_descriptors[2] = +static const ProtobufCFieldDescriptor wifi_csi_info__field_descriptors[6] = { { - "sta", + "rx_ctrl", 1, - PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, - offsetof(WifiStaList, n_sta), - offsetof(WifiStaList, sta), - &wifi_sta_info__descriptor, + 0, /* quantifier_offset */ + offsetof(WifiCsiInfo, rx_ctrl), + &wifi_pkt_rx_ctrl__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "num", + "mac", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiStaList, num), + offsetof(WifiCsiInfo, mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned wifi_sta_list__field_indices_by_name[] = { - 1, /* field[1] = num */ - 0, /* field[0] = sta */ -}; -static const ProtobufCIntRange wifi_sta_list__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor wifi_sta_list__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_sta_list", - "WifiStaList", - "WifiStaList", - "", - sizeof(WifiStaList), - 2, - wifi_sta_list__field_descriptors, - wifi_sta_list__field_indices_by_name, - 1, wifi_sta_list__number_ranges, - (ProtobufCMessageInit) wifi_sta_list__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor wifi_pkt_rx_ctrl__field_descriptors[19] = -{ { - "rssi", - 1, + "dmac", + 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, rssi), + offsetof(WifiCsiInfo, dmac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "rate", - 2, + "first_word_invalid", + 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, rate), + offsetof(WifiCsiInfo, first_word_invalid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "sig_mode", - 3, + "buf", + 5, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, sig_mode), + offsetof(WifiCsiInfo, buf), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "mcs", - 4, + "len", + 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, mcs), + offsetof(WifiCsiInfo, len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_csi_info__field_indices_by_name[] = { + 4, /* field[4] = buf */ + 2, /* field[2] = dmac */ + 3, /* field[3] = first_word_invalid */ + 5, /* field[5] = len */ + 1, /* field[1] = mac */ + 0, /* field[0] = rx_ctrl */ +}; +static const ProtobufCIntRange wifi_csi_info__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 6 } +}; +const ProtobufCMessageDescriptor wifi_csi_info__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_csi_info", + "WifiCsiInfo", + "WifiCsiInfo", + "", + sizeof(WifiCsiInfo), + 6, + wifi_csi_info__field_descriptors, + wifi_csi_info__field_indices_by_name, + 1, wifi_csi_info__number_ranges, + (ProtobufCMessageInit) wifi_csi_info__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_ant_gpio__field_descriptors[2] = +{ { - "cwb", - 5, + "gpio_select", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, cwb), + offsetof(WifiAntGpio, gpio_select), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "smoothing", - 6, + "gpio_num", + 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, smoothing), + offsetof(WifiAntGpio, gpio_num), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_ant_gpio__field_indices_by_name[] = { + 1, /* field[1] = gpio_num */ + 0, /* field[0] = gpio_select */ +}; +static const ProtobufCIntRange wifi_ant_gpio__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor wifi_ant_gpio__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_ant_gpio", + "WifiAntGpio", + "WifiAntGpio", + "", + sizeof(WifiAntGpio), + 2, + wifi_ant_gpio__field_descriptors, + wifi_ant_gpio__field_indices_by_name, + 1, wifi_ant_gpio__number_ranges, + (ProtobufCMessageInit) wifi_ant_gpio__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_ant_gpio_config__field_descriptors[1] = +{ + { + "gpio_cfgs", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(WifiAntGpioConfig, n_gpio_cfgs), + offsetof(WifiAntGpioConfig, gpio_cfgs), + &wifi_ant_gpio__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned wifi_ant_gpio_config__field_indices_by_name[] = { + 0, /* field[0] = gpio_cfgs */ +}; +static const ProtobufCIntRange wifi_ant_gpio_config__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor wifi_ant_gpio_config__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_ant_gpio_config", + "WifiAntGpioConfig", + "WifiAntGpioConfig", + "", + sizeof(WifiAntGpioConfig), + 1, + wifi_ant_gpio_config__field_descriptors, + wifi_ant_gpio_config__field_indices_by_name, + 1, wifi_ant_gpio_config__number_ranges, + (ProtobufCMessageInit) wifi_ant_gpio_config__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_ant_config__field_descriptors[5] = +{ { - "not_sounding", - 7, + "rx_ant_mode", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, not_sounding), + offsetof(WifiAntConfig, rx_ant_mode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "aggregation", - 8, + "rx_ant_default", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiAntConfig, rx_ant_default), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "tx_ant_mode", + 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, aggregation), + offsetof(WifiAntConfig, tx_ant_mode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "stbc", - 9, + "enabled_ant0", + 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, stbc), + offsetof(WifiAntConfig, enabled_ant0), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "fec_coding", - 10, + "enabled_ant1", + 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, fec_coding), + offsetof(WifiAntConfig, enabled_ant1), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_ant_config__field_indices_by_name[] = { + 3, /* field[3] = enabled_ant0 */ + 4, /* field[4] = enabled_ant1 */ + 1, /* field[1] = rx_ant_default */ + 0, /* field[0] = rx_ant_mode */ + 2, /* field[2] = tx_ant_mode */ +}; +static const ProtobufCIntRange wifi_ant_config__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor wifi_ant_config__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_ant_config", + "WifiAntConfig", + "WifiAntConfig", + "", + sizeof(WifiAntConfig), + 5, + wifi_ant_config__field_descriptors, + wifi_ant_config__field_indices_by_name, + 1, wifi_ant_config__number_ranges, + (ProtobufCMessageInit) wifi_ant_config__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_action_tx_req__field_descriptors[5] = +{ { - "sgi", - 11, + "ifx", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, sgi), + offsetof(WifiActionTxReq, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "noise_floor", - 12, + "dest_mac", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, noise_floor), + offsetof(WifiActionTxReq, dest_mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ampdu_cnt", - 13, + "no_ack", + 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, ampdu_cnt), + offsetof(WifiActionTxReq, no_ack), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "channel", - 14, + "data_len", + 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, channel), + offsetof(WifiActionTxReq, data_len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "secondary_channel", - 15, + "data", + 5, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, secondary_channel), + offsetof(WifiActionTxReq, data), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_action_tx_req__field_indices_by_name[] = { + 4, /* field[4] = data */ + 3, /* field[3] = data_len */ + 1, /* field[1] = dest_mac */ + 0, /* field[0] = ifx */ + 2, /* field[2] = no_ack */ +}; +static const ProtobufCIntRange wifi_action_tx_req__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor wifi_action_tx_req__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_action_tx_req", + "WifiActionTxReq", + "WifiActionTxReq", + "", + sizeof(WifiActionTxReq), + 5, + wifi_action_tx_req__field_descriptors, + wifi_action_tx_req__field_indices_by_name, + 1, wifi_action_tx_req__number_ranges, + (ProtobufCMessageInit) wifi_action_tx_req__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_ftm_initiator_cfg__field_descriptors[4] = +{ { - "timestamp", - 16, + "resp_mac", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, timestamp), + offsetof(WifiFtmInitiatorCfg, resp_mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ant", - 17, + "channel", + 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, ant), + offsetof(WifiFtmInitiatorCfg, channel), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "sig_len", - 18, + "frm_count", + 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, sig_len), + offsetof(WifiFtmInitiatorCfg, frm_count), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "rx_state", - 19, + "burst_period", + 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, rx_state), + offsetof(WifiFtmInitiatorCfg, burst_period), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_pkt_rx_ctrl__field_indices_by_name[] = { - 7, /* field[7] = aggregation */ - 12, /* field[12] = ampdu_cnt */ - 16, /* field[16] = ant */ - 13, /* field[13] = channel */ - 4, /* field[4] = cwb */ - 9, /* field[9] = fec_coding */ - 3, /* field[3] = mcs */ - 11, /* field[11] = noise_floor */ - 6, /* field[6] = not_sounding */ - 1, /* field[1] = rate */ - 0, /* field[0] = rssi */ - 18, /* field[18] = rx_state */ - 14, /* field[14] = secondary_channel */ - 10, /* field[10] = sgi */ - 17, /* field[17] = sig_len */ - 2, /* field[2] = sig_mode */ - 5, /* field[5] = smoothing */ - 8, /* field[8] = stbc */ - 15, /* field[15] = timestamp */ +static const unsigned wifi_ftm_initiator_cfg__field_indices_by_name[] = { + 3, /* field[3] = burst_period */ + 1, /* field[1] = channel */ + 2, /* field[2] = frm_count */ + 0, /* field[0] = resp_mac */ }; -static const ProtobufCIntRange wifi_pkt_rx_ctrl__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_ftm_initiator_cfg__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 19 } + { 0, 4 } }; -const ProtobufCMessageDescriptor wifi_pkt_rx_ctrl__descriptor = +const ProtobufCMessageDescriptor wifi_ftm_initiator_cfg__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_pkt_rx_ctrl", - "WifiPktRxCtrl", - "WifiPktRxCtrl", + "wifi_ftm_initiator_cfg", + "WifiFtmInitiatorCfg", + "WifiFtmInitiatorCfg", "", - sizeof(WifiPktRxCtrl), - 19, - wifi_pkt_rx_ctrl__field_descriptors, - wifi_pkt_rx_ctrl__field_indices_by_name, - 1, wifi_pkt_rx_ctrl__number_ranges, - (ProtobufCMessageInit) wifi_pkt_rx_ctrl__init, + sizeof(WifiFtmInitiatorCfg), + 4, + wifi_ftm_initiator_cfg__field_descriptors, + wifi_ftm_initiator_cfg__field_indices_by_name, + 1, wifi_ftm_initiator_cfg__number_ranges, + (ProtobufCMessageInit) wifi_ftm_initiator_cfg__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_promiscuous_pkt__field_descriptors[2] = +static const ProtobufCFieldDescriptor wifi_event_sta_scan_done__field_descriptors[3] = { { - "rx_ctrl", + "status", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPromiscuousPkt, rx_ctrl), - &wifi_pkt_rx_ctrl__descriptor, + offsetof(WifiEventStaScanDone, status), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "payload", + "number", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPromiscuousPkt, payload), + offsetof(WifiEventStaScanDone, number), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned wifi_promiscuous_pkt__field_indices_by_name[] = { - 1, /* field[1] = payload */ - 0, /* field[0] = rx_ctrl */ -}; -static const ProtobufCIntRange wifi_promiscuous_pkt__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor wifi_promiscuous_pkt__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_promiscuous_pkt", - "WifiPromiscuousPkt", - "WifiPromiscuousPkt", - "", - sizeof(WifiPromiscuousPkt), - 2, - wifi_promiscuous_pkt__field_descriptors, - wifi_promiscuous_pkt__field_indices_by_name, - 1, wifi_promiscuous_pkt__number_ranges, - (ProtobufCMessageInit) wifi_promiscuous_pkt__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor wifi_promiscuous_filter__field_descriptors[1] = -{ { - "filter_mask", - 1, + "scan_id", + 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPromiscuousFilter, filter_mask), + offsetof(WifiEventStaScanDone, scan_id), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_promiscuous_filter__field_indices_by_name[] = { - 0, /* field[0] = filter_mask */ +static const unsigned wifi_event_sta_scan_done__field_indices_by_name[] = { + 1, /* field[1] = number */ + 2, /* field[2] = scan_id */ + 0, /* field[0] = status */ }; -static const ProtobufCIntRange wifi_promiscuous_filter__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_event_sta_scan_done__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 3 } }; -const ProtobufCMessageDescriptor wifi_promiscuous_filter__descriptor = +const ProtobufCMessageDescriptor wifi_event_sta_scan_done__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_promiscuous_filter", - "WifiPromiscuousFilter", - "WifiPromiscuousFilter", + "wifi_event_sta_scan_done", + "WifiEventStaScanDone", + "WifiEventStaScanDone", "", - sizeof(WifiPromiscuousFilter), - 1, - wifi_promiscuous_filter__field_descriptors, - wifi_promiscuous_filter__field_indices_by_name, - 1, wifi_promiscuous_filter__number_ranges, - (ProtobufCMessageInit) wifi_promiscuous_filter__init, + sizeof(WifiEventStaScanDone), + 3, + wifi_event_sta_scan_done__field_descriptors, + wifi_event_sta_scan_done__field_indices_by_name, + 1, wifi_event_sta_scan_done__number_ranges, + (ProtobufCMessageInit) wifi_event_sta_scan_done__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_csi_config__field_descriptors[7] = +static const ProtobufCFieldDescriptor wifi_event_sta_connected__field_descriptors[6] = { { - "lltf_en", + "ssid", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiCsiConfig, lltf_en), + offsetof(WifiEventStaConnected, ssid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "htltf_en", + "ssid_len", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiCsiConfig, htltf_en), + offsetof(WifiEventStaConnected, ssid_len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "stbc_htltf2_en", + "bssid", 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiCsiConfig, stbc_htltf2_en), + offsetof(WifiEventStaConnected, bssid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ltf_merge_en", + "channel", 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiCsiConfig, ltf_merge_en), + offsetof(WifiEventStaConnected, channel), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "channel_filter_en", + "authmode", 5, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiCsiConfig, channel_filter_en), + offsetof(WifiEventStaConnected, authmode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "manu_scale", + "aid", 6, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, - 0, /* quantifier_offset */ - offsetof(WifiCsiConfig, manu_scale), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "shift", - 7, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiCsiConfig, shift), + offsetof(WifiEventStaConnected, aid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_csi_config__field_indices_by_name[] = { - 4, /* field[4] = channel_filter_en */ - 1, /* field[1] = htltf_en */ - 0, /* field[0] = lltf_en */ - 3, /* field[3] = ltf_merge_en */ - 5, /* field[5] = manu_scale */ - 6, /* field[6] = shift */ - 2, /* field[2] = stbc_htltf2_en */ +static const unsigned wifi_event_sta_connected__field_indices_by_name[] = { + 5, /* field[5] = aid */ + 4, /* field[4] = authmode */ + 2, /* field[2] = bssid */ + 3, /* field[3] = channel */ + 0, /* field[0] = ssid */ + 1, /* field[1] = ssid_len */ }; -static const ProtobufCIntRange wifi_csi_config__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_event_sta_connected__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 7 } + { 0, 6 } }; -const ProtobufCMessageDescriptor wifi_csi_config__descriptor = +const ProtobufCMessageDescriptor wifi_event_sta_connected__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_csi_config", - "WifiCsiConfig", - "WifiCsiConfig", + "wifi_event_sta_connected", + "WifiEventStaConnected", + "WifiEventStaConnected", "", - sizeof(WifiCsiConfig), - 7, - wifi_csi_config__field_descriptors, - wifi_csi_config__field_indices_by_name, - 1, wifi_csi_config__number_ranges, - (ProtobufCMessageInit) wifi_csi_config__init, + sizeof(WifiEventStaConnected), + 6, + wifi_event_sta_connected__field_descriptors, + wifi_event_sta_connected__field_indices_by_name, + 1, wifi_event_sta_connected__number_ranges, + (ProtobufCMessageInit) wifi_event_sta_connected__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_csi_info__field_descriptors[6] = +static const ProtobufCFieldDescriptor wifi_event_sta_disconnected__field_descriptors[5] = { { - "rx_ctrl", + "ssid", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiCsiInfo, rx_ctrl), - &wifi_pkt_rx_ctrl__descriptor, + offsetof(WifiEventStaDisconnected, ssid), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "mac", + "ssid_len", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiCsiInfo, mac), + offsetof(WifiEventStaDisconnected, ssid_len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dmac", + "bssid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiCsiInfo, dmac), + offsetof(WifiEventStaDisconnected, bssid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "first_word_invalid", + "reason", 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiCsiInfo, first_word_invalid), + offsetof(WifiEventStaDisconnected, reason), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "buf", + "rssi", 5, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiCsiInfo, buf), + offsetof(WifiEventStaDisconnected, rssi), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned wifi_event_sta_disconnected__field_indices_by_name[] = { + 2, /* field[2] = bssid */ + 3, /* field[3] = reason */ + 4, /* field[4] = rssi */ + 0, /* field[0] = ssid */ + 1, /* field[1] = ssid_len */ +}; +static const ProtobufCIntRange wifi_event_sta_disconnected__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor wifi_event_sta_disconnected__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_event_sta_disconnected", + "WifiEventStaDisconnected", + "WifiEventStaDisconnected", + "", + sizeof(WifiEventStaDisconnected), + 5, + wifi_event_sta_disconnected__field_descriptors, + wifi_event_sta_disconnected__field_indices_by_name, + 1, wifi_event_sta_disconnected__number_ranges, + (ProtobufCMessageInit) wifi_event_sta_disconnected__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_event_sta_authmode_change__field_descriptors[2] = +{ + { + "old_mode", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiEventStaAuthmodeChange, old_mode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "len", - 6, + "new_mode", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiCsiInfo, len), + offsetof(WifiEventStaAuthmodeChange, new_mode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_csi_info__field_indices_by_name[] = { - 4, /* field[4] = buf */ - 2, /* field[2] = dmac */ - 3, /* field[3] = first_word_invalid */ - 5, /* field[5] = len */ - 1, /* field[1] = mac */ - 0, /* field[0] = rx_ctrl */ +static const unsigned wifi_event_sta_authmode_change__field_indices_by_name[] = { + 1, /* field[1] = new_mode */ + 0, /* field[0] = old_mode */ }; -static const ProtobufCIntRange wifi_csi_info__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_event_sta_authmode_change__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 6 } + { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_csi_info__descriptor = +const ProtobufCMessageDescriptor wifi_event_sta_authmode_change__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_csi_info", - "WifiCsiInfo", - "WifiCsiInfo", + "wifi_event_sta_authmode_change", + "WifiEventStaAuthmodeChange", + "WifiEventStaAuthmodeChange", "", - sizeof(WifiCsiInfo), - 6, - wifi_csi_info__field_descriptors, - wifi_csi_info__field_indices_by_name, - 1, wifi_csi_info__number_ranges, - (ProtobufCMessageInit) wifi_csi_info__init, + sizeof(WifiEventStaAuthmodeChange), + 2, + wifi_event_sta_authmode_change__field_descriptors, + wifi_event_sta_authmode_change__field_indices_by_name, + 1, wifi_event_sta_authmode_change__number_ranges, + (ProtobufCMessageInit) wifi_event_sta_authmode_change__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_event_sta_wps_er_pin__field_descriptors[1] = +{ + { + "pin_code", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(WifiEventStaWpsErPin, pin_code), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned wifi_event_sta_wps_er_pin__field_indices_by_name[] = { + 0, /* field[0] = pin_code */ +}; +static const ProtobufCIntRange wifi_event_sta_wps_er_pin__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor wifi_event_sta_wps_er_pin__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_event_sta_wps_er_pin", + "WifiEventStaWpsErPin", + "WifiEventStaWpsErPin", + "", + sizeof(WifiEventStaWpsErPin), + 1, + wifi_event_sta_wps_er_pin__field_descriptors, + wifi_event_sta_wps_er_pin__field_indices_by_name, + 1, wifi_event_sta_wps_er_pin__number_ranges, + (ProtobufCMessageInit) wifi_event_sta_wps_er_pin__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_ant_gpio__field_descriptors[2] = +static const ProtobufCFieldDescriptor ap_cred__field_descriptors[2] = { { - "gpio_select", + "ssid", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiAntGpio, gpio_select), + offsetof(ApCred, ssid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "gpio_num", + "passphrase", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiAntGpio, gpio_num), + offsetof(ApCred, passphrase), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_ant_gpio__field_indices_by_name[] = { - 1, /* field[1] = gpio_num */ - 0, /* field[0] = gpio_select */ +static const unsigned ap_cred__field_indices_by_name[] = { + 1, /* field[1] = passphrase */ + 0, /* field[0] = ssid */ }; -static const ProtobufCIntRange wifi_ant_gpio__number_ranges[1 + 1] = +static const ProtobufCIntRange ap_cred__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_ant_gpio__descriptor = +const ProtobufCMessageDescriptor ap_cred__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_ant_gpio", - "WifiAntGpio", - "WifiAntGpio", + "ap_cred", + "ApCred", + "ApCred", "", - sizeof(WifiAntGpio), + sizeof(ApCred), 2, - wifi_ant_gpio__field_descriptors, - wifi_ant_gpio__field_indices_by_name, - 1, wifi_ant_gpio__number_ranges, - (ProtobufCMessageInit) wifi_ant_gpio__init, + ap_cred__field_descriptors, + ap_cred__field_indices_by_name, + 1, ap_cred__number_ranges, + (ProtobufCMessageInit) ap_cred__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_ant_gpio_config__field_descriptors[1] = +static const ProtobufCFieldDescriptor wifi_event_sta_wps_er_success__field_descriptors[2] = { { - "gpio_cfgs", + "ap_cred_cnt", 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiEventStaWpsErSuccess, ap_cred_cnt), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ap_creds", + 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, - offsetof(WifiAntGpioConfig, n_gpio_cfgs), - offsetof(WifiAntGpioConfig, gpio_cfgs), - &wifi_ant_gpio__descriptor, + offsetof(WifiEventStaWpsErSuccess, n_ap_creds), + offsetof(WifiEventStaWpsErSuccess, ap_creds), + &ap_cred__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_ant_gpio_config__field_indices_by_name[] = { - 0, /* field[0] = gpio_cfgs */ +static const unsigned wifi_event_sta_wps_er_success__field_indices_by_name[] = { + 0, /* field[0] = ap_cred_cnt */ + 1, /* field[1] = ap_creds */ }; -static const ProtobufCIntRange wifi_ant_gpio_config__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_event_sta_wps_er_success__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_ant_gpio_config__descriptor = +const ProtobufCMessageDescriptor wifi_event_sta_wps_er_success__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_ant_gpio_config", - "WifiAntGpioConfig", - "WifiAntGpioConfig", + "wifi_event_sta_wps_er_success", + "WifiEventStaWpsErSuccess", + "WifiEventStaWpsErSuccess", "", - sizeof(WifiAntGpioConfig), - 1, - wifi_ant_gpio_config__field_descriptors, - wifi_ant_gpio_config__field_indices_by_name, - 1, wifi_ant_gpio_config__number_ranges, - (ProtobufCMessageInit) wifi_ant_gpio_config__init, + sizeof(WifiEventStaWpsErSuccess), + 2, + wifi_event_sta_wps_er_success__field_descriptors, + wifi_event_sta_wps_er_success__field_indices_by_name, + 1, wifi_event_sta_wps_er_success__number_ranges, + (ProtobufCMessageInit) wifi_event_sta_wps_er_success__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_ant_config__field_descriptors[5] = +static const ProtobufCFieldDescriptor wifi_event_ap_probe_req_rx__field_descriptors[2] = { { - "rx_ant_mode", + "rssi", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiAntConfig, rx_ant_mode), + offsetof(WifiEventApProbeReqRx, rssi), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "rx_ant_default", + "mac", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiAntConfig, rx_ant_default), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "tx_ant_mode", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiAntConfig, tx_ant_mode), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "enabled_ant0", - 4, - PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiAntConfig, enabled_ant0), + offsetof(WifiEventApProbeReqRx, mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_event_ap_probe_req_rx__field_indices_by_name[] = { + 1, /* field[1] = mac */ + 0, /* field[0] = rssi */ +}; +static const ProtobufCIntRange wifi_event_ap_probe_req_rx__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor wifi_event_ap_probe_req_rx__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_event_ap_probe_req_rx", + "WifiEventApProbeReqRx", + "WifiEventApProbeReqRx", + "", + sizeof(WifiEventApProbeReqRx), + 2, + wifi_event_ap_probe_req_rx__field_descriptors, + wifi_event_ap_probe_req_rx__field_indices_by_name, + 1, wifi_event_ap_probe_req_rx__number_ranges, + (ProtobufCMessageInit) wifi_event_ap_probe_req_rx__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_event_bss_rssi_low__field_descriptors[1] = +{ { - "enabled_ant1", - 5, + "rssi", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiAntConfig, enabled_ant1), + offsetof(WifiEventBssRssiLow, rssi), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_ant_config__field_indices_by_name[] = { - 3, /* field[3] = enabled_ant0 */ - 4, /* field[4] = enabled_ant1 */ - 1, /* field[1] = rx_ant_default */ - 0, /* field[0] = rx_ant_mode */ - 2, /* field[2] = tx_ant_mode */ +static const unsigned wifi_event_bss_rssi_low__field_indices_by_name[] = { + 0, /* field[0] = rssi */ }; -static const ProtobufCIntRange wifi_ant_config__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_event_bss_rssi_low__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 5 } + { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_ant_config__descriptor = +const ProtobufCMessageDescriptor wifi_event_bss_rssi_low__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_ant_config", - "WifiAntConfig", - "WifiAntConfig", + "wifi_event_bss_rssi_low", + "WifiEventBssRssiLow", + "WifiEventBssRssiLow", "", - sizeof(WifiAntConfig), - 5, - wifi_ant_config__field_descriptors, - wifi_ant_config__field_indices_by_name, - 1, wifi_ant_config__number_ranges, - (ProtobufCMessageInit) wifi_ant_config__init, + sizeof(WifiEventBssRssiLow), + 1, + wifi_event_bss_rssi_low__field_descriptors, + wifi_event_bss_rssi_low__field_indices_by_name, + 1, wifi_event_bss_rssi_low__number_ranges, + (ProtobufCMessageInit) wifi_event_bss_rssi_low__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_action_tx_req__field_descriptors[5] = +static const ProtobufCFieldDescriptor wifi_ftm_report_entry__field_descriptors[7] = { { - "ifx", + "dlog_token", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiActionTxReq, ifx), + offsetof(WifiFtmReportEntry, dlog_token), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dest_mac", + "rssi", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiActionTxReq, dest_mac), + offsetof(WifiFtmReportEntry, rssi), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "no_ack", + "rtt", 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiActionTxReq, no_ack), + offsetof(WifiFtmReportEntry, rtt), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "data_len", + "t1", 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_UINT64, 0, /* quantifier_offset */ - offsetof(WifiActionTxReq, data_len), + offsetof(WifiFtmReportEntry, t1), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "data", + "t2", 5, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT64, 0, /* quantifier_offset */ - offsetof(WifiActionTxReq, data), + offsetof(WifiFtmReportEntry, t2), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "t3", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(WifiFtmReportEntry, t3), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "t4", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(WifiFtmReportEntry, t4), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_action_tx_req__field_indices_by_name[] = { - 4, /* field[4] = data */ - 3, /* field[3] = data_len */ - 1, /* field[1] = dest_mac */ - 0, /* field[0] = ifx */ - 2, /* field[2] = no_ack */ -}; -static const ProtobufCIntRange wifi_action_tx_req__number_ranges[1 + 1] = +static const unsigned wifi_ftm_report_entry__field_indices_by_name[] = { + 0, /* field[0] = dlog_token */ + 1, /* field[1] = rssi */ + 2, /* field[2] = rtt */ + 3, /* field[3] = t1 */ + 4, /* field[4] = t2 */ + 5, /* field[5] = t3 */ + 6, /* field[6] = t4 */ +}; +static const ProtobufCIntRange wifi_ftm_report_entry__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 5 } + { 0, 7 } }; -const ProtobufCMessageDescriptor wifi_action_tx_req__descriptor = +const ProtobufCMessageDescriptor wifi_ftm_report_entry__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_action_tx_req", - "WifiActionTxReq", - "WifiActionTxReq", + "wifi_ftm_report_entry", + "WifiFtmReportEntry", + "WifiFtmReportEntry", "", - sizeof(WifiActionTxReq), - 5, - wifi_action_tx_req__field_descriptors, - wifi_action_tx_req__field_indices_by_name, - 1, wifi_action_tx_req__number_ranges, - (ProtobufCMessageInit) wifi_action_tx_req__init, + sizeof(WifiFtmReportEntry), + 7, + wifi_ftm_report_entry__field_descriptors, + wifi_ftm_report_entry__field_indices_by_name, + 1, wifi_ftm_report_entry__number_ranges, + (ProtobufCMessageInit) wifi_ftm_report_entry__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_ftm_initiator_cfg__field_descriptors[4] = +static const ProtobufCFieldDescriptor wifi_event_ftm_report__field_descriptors[7] = { { - "resp_mac", + "peer_mac", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiFtmInitiatorCfg, resp_mac), + offsetof(WifiEventFtmReport, peer_mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "channel", + "status", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiFtmInitiatorCfg, channel), + offsetof(WifiEventFtmReport, status), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "frm_count", + "rtt_raw", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiFtmInitiatorCfg, frm_count), + offsetof(WifiEventFtmReport, rtt_raw), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "burst_period", + "rtt_est", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiFtmInitiatorCfg, burst_period), + offsetof(WifiEventFtmReport, rtt_est), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned wifi_ftm_initiator_cfg__field_indices_by_name[] = { - 3, /* field[3] = burst_period */ - 1, /* field[1] = channel */ - 2, /* field[2] = frm_count */ - 0, /* field[0] = resp_mac */ -}; -static const ProtobufCIntRange wifi_ftm_initiator_cfg__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 4 } -}; -const ProtobufCMessageDescriptor wifi_ftm_initiator_cfg__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_ftm_initiator_cfg", - "WifiFtmInitiatorCfg", - "WifiFtmInitiatorCfg", - "", - sizeof(WifiFtmInitiatorCfg), - 4, - wifi_ftm_initiator_cfg__field_descriptors, - wifi_ftm_initiator_cfg__field_indices_by_name, - 1, wifi_ftm_initiator_cfg__number_ranges, - (ProtobufCMessageInit) wifi_ftm_initiator_cfg__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor wifi_event_sta_scan_done__field_descriptors[3] = -{ { - "status", - 1, + "dist_est", + 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaScanDone, status), + offsetof(WifiEventFtmReport, dist_est), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "number", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiEventStaScanDone, number), - NULL, + "ftm_report_data", + 6, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(WifiEventFtmReport, n_ftm_report_data), + offsetof(WifiEventFtmReport, ftm_report_data), + &wifi_ftm_report_entry__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "scan_id", - 3, + "ftm_report_num_entries", + 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaScanDone, scan_id), + offsetof(WifiEventFtmReport, ftm_report_num_entries), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_sta_scan_done__field_indices_by_name[] = { - 1, /* field[1] = number */ - 2, /* field[2] = scan_id */ - 0, /* field[0] = status */ +static const unsigned wifi_event_ftm_report__field_indices_by_name[] = { + 4, /* field[4] = dist_est */ + 5, /* field[5] = ftm_report_data */ + 6, /* field[6] = ftm_report_num_entries */ + 0, /* field[0] = peer_mac */ + 3, /* field[3] = rtt_est */ + 2, /* field[2] = rtt_raw */ + 1, /* field[1] = status */ }; -static const ProtobufCIntRange wifi_event_sta_scan_done__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_event_ftm_report__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 3 } + { 0, 7 } }; -const ProtobufCMessageDescriptor wifi_event_sta_scan_done__descriptor = +const ProtobufCMessageDescriptor wifi_event_ftm_report__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_sta_scan_done", - "WifiEventStaScanDone", - "WifiEventStaScanDone", + "wifi_event_ftm_report", + "WifiEventFtmReport", + "WifiEventFtmReport", "", - sizeof(WifiEventStaScanDone), - 3, - wifi_event_sta_scan_done__field_descriptors, - wifi_event_sta_scan_done__field_indices_by_name, - 1, wifi_event_sta_scan_done__number_ranges, - (ProtobufCMessageInit) wifi_event_sta_scan_done__init, + sizeof(WifiEventFtmReport), + 7, + wifi_event_ftm_report__field_descriptors, + wifi_event_ftm_report__field_indices_by_name, + 1, wifi_event_ftm_report__number_ranges, + (ProtobufCMessageInit) wifi_event_ftm_report__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_sta_connected__field_descriptors[6] = +static const ProtobufCFieldDescriptor wifi_event_action_tx_status__field_descriptors[4] = { { - "ssid", + "ifx", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaConnected, ssid), + offsetof(WifiEventActionTxStatus, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ssid_len", + "context", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaConnected, ssid_len), + offsetof(WifiEventActionTxStatus, context), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "bssid", + "da", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiEventStaConnected, bssid), + offsetof(WifiEventActionTxStatus, da), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "channel", + "status", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaConnected, channel), + offsetof(WifiEventActionTxStatus, status), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_event_action_tx_status__field_indices_by_name[] = { + 1, /* field[1] = context */ + 2, /* field[2] = da */ + 0, /* field[0] = ifx */ + 3, /* field[3] = status */ +}; +static const ProtobufCIntRange wifi_event_action_tx_status__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor wifi_event_action_tx_status__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_event_action_tx_status", + "WifiEventActionTxStatus", + "WifiEventActionTxStatus", + "", + sizeof(WifiEventActionTxStatus), + 4, + wifi_event_action_tx_status__field_descriptors, + wifi_event_action_tx_status__field_indices_by_name, + 1, wifi_event_action_tx_status__number_ranges, + (ProtobufCMessageInit) wifi_event_action_tx_status__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_event_roc_done__field_descriptors[1] = +{ { - "authmode", - 5, + "context", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaConnected, authmode), + offsetof(WifiEventRocDone, context), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_event_roc_done__field_indices_by_name[] = { + 0, /* field[0] = context */ +}; +static const ProtobufCIntRange wifi_event_roc_done__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor wifi_event_roc_done__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_event_roc_done", + "WifiEventRocDone", + "WifiEventRocDone", + "", + sizeof(WifiEventRocDone), + 1, + wifi_event_roc_done__field_descriptors, + wifi_event_roc_done__field_indices_by_name, + 1, wifi_event_roc_done__number_ranges, + (ProtobufCMessageInit) wifi_event_roc_done__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_event_ap_wps_rg_pin__field_descriptors[1] = +{ { - "aid", - 6, + "pin_code", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiEventStaConnected, aid), + offsetof(WifiEventApWpsRgPin, pin_code), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_sta_connected__field_indices_by_name[] = { - 5, /* field[5] = aid */ - 4, /* field[4] = authmode */ - 2, /* field[2] = bssid */ - 3, /* field[3] = channel */ - 0, /* field[0] = ssid */ - 1, /* field[1] = ssid_len */ +static const unsigned wifi_event_ap_wps_rg_pin__field_indices_by_name[] = { + 0, /* field[0] = pin_code */ }; -static const ProtobufCIntRange wifi_event_sta_connected__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_event_ap_wps_rg_pin__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 6 } + { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_event_sta_connected__descriptor = +const ProtobufCMessageDescriptor wifi_event_ap_wps_rg_pin__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_sta_connected", - "WifiEventStaConnected", - "WifiEventStaConnected", + "wifi_event_ap_wps_rg_pin", + "WifiEventApWpsRgPin", + "WifiEventApWpsRgPin", "", - sizeof(WifiEventStaConnected), - 6, - wifi_event_sta_connected__field_descriptors, - wifi_event_sta_connected__field_indices_by_name, - 1, wifi_event_sta_connected__number_ranges, - (ProtobufCMessageInit) wifi_event_sta_connected__init, + sizeof(WifiEventApWpsRgPin), + 1, + wifi_event_ap_wps_rg_pin__field_descriptors, + wifi_event_ap_wps_rg_pin__field_indices_by_name, + 1, wifi_event_ap_wps_rg_pin__number_ranges, + (ProtobufCMessageInit) wifi_event_ap_wps_rg_pin__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_sta_disconnected__field_descriptors[5] = +static const ProtobufCFieldDescriptor wifi_event_ap_wps_rg_fail_reason__field_descriptors[2] = { { - "ssid", + "reason", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaDisconnected, ssid), + offsetof(WifiEventApWpsRgFailReason, reason), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ssid_len", + "peer_macaddr", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiEventStaDisconnected, ssid_len), + offsetof(WifiEventApWpsRgFailReason, peer_macaddr), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_event_ap_wps_rg_fail_reason__field_indices_by_name[] = { + 1, /* field[1] = peer_macaddr */ + 0, /* field[0] = reason */ +}; +static const ProtobufCIntRange wifi_event_ap_wps_rg_fail_reason__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor wifi_event_ap_wps_rg_fail_reason__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_event_ap_wps_rg_fail_reason", + "WifiEventApWpsRgFailReason", + "WifiEventApWpsRgFailReason", + "", + sizeof(WifiEventApWpsRgFailReason), + 2, + wifi_event_ap_wps_rg_fail_reason__field_descriptors, + wifi_event_ap_wps_rg_fail_reason__field_indices_by_name, + 1, wifi_event_ap_wps_rg_fail_reason__number_ranges, + (ProtobufCMessageInit) wifi_event_ap_wps_rg_fail_reason__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_event_ap_wps_rg_success__field_descriptors[1] = +{ { - "bssid", - 3, + "peer_macaddr", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiEventStaDisconnected, bssid), + offsetof(WifiEventApWpsRgSuccess, peer_macaddr), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_event_ap_wps_rg_success__field_indices_by_name[] = { + 0, /* field[0] = peer_macaddr */ +}; +static const ProtobufCIntRange wifi_event_ap_wps_rg_success__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor wifi_event_ap_wps_rg_success__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_event_ap_wps_rg_success", + "WifiEventApWpsRgSuccess", + "WifiEventApWpsRgSuccess", + "", + sizeof(WifiEventApWpsRgSuccess), + 1, + wifi_event_ap_wps_rg_success__field_descriptors, + wifi_event_ap_wps_rg_success__field_indices_by_name, + 1, wifi_event_ap_wps_rg_success__number_ranges, + (ProtobufCMessageInit) wifi_event_ap_wps_rg_success__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_protocols__field_descriptors[2] = +{ { - "reason", - 4, + "ghz_2g", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaDisconnected, reason), + offsetof(WifiProtocols, ghz_2g), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "rssi", - 5, + "ghz_5g", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaDisconnected, rssi), + offsetof(WifiProtocols, ghz_5g), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_sta_disconnected__field_indices_by_name[] = { - 2, /* field[2] = bssid */ - 3, /* field[3] = reason */ - 4, /* field[4] = rssi */ - 0, /* field[0] = ssid */ - 1, /* field[1] = ssid_len */ +static const unsigned wifi_protocols__field_indices_by_name[] = { + 0, /* field[0] = ghz_2g */ + 1, /* field[1] = ghz_5g */ }; -static const ProtobufCIntRange wifi_event_sta_disconnected__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_protocols__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 5 } + { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_event_sta_disconnected__descriptor = +const ProtobufCMessageDescriptor wifi_protocols__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_sta_disconnected", - "WifiEventStaDisconnected", - "WifiEventStaDisconnected", + "wifi_protocols", + "WifiProtocols", + "WifiProtocols", "", - sizeof(WifiEventStaDisconnected), - 5, - wifi_event_sta_disconnected__field_descriptors, - wifi_event_sta_disconnected__field_indices_by_name, - 1, wifi_event_sta_disconnected__number_ranges, - (ProtobufCMessageInit) wifi_event_sta_disconnected__init, + sizeof(WifiProtocols), + 2, + wifi_protocols__field_descriptors, + wifi_protocols__field_indices_by_name, + 1, wifi_protocols__number_ranges, + (ProtobufCMessageInit) wifi_protocols__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_sta_authmode_change__field_descriptors[2] = +static const ProtobufCFieldDescriptor wifi_bandwidths__field_descriptors[2] = { { - "old_mode", + "ghz_2g", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaAuthmodeChange, old_mode), + offsetof(WifiBandwidths, ghz_2g), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "new_mode", + "ghz_5g", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaAuthmodeChange, new_mode), + offsetof(WifiBandwidths, ghz_5g), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_sta_authmode_change__field_indices_by_name[] = { - 1, /* field[1] = new_mode */ - 0, /* field[0] = old_mode */ +static const unsigned wifi_bandwidths__field_indices_by_name[] = { + 0, /* field[0] = ghz_2g */ + 1, /* field[1] = ghz_5g */ }; -static const ProtobufCIntRange wifi_event_sta_authmode_change__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_bandwidths__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_event_sta_authmode_change__descriptor = +const ProtobufCMessageDescriptor wifi_bandwidths__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_sta_authmode_change", - "WifiEventStaAuthmodeChange", - "WifiEventStaAuthmodeChange", + "wifi_bandwidths", + "WifiBandwidths", + "WifiBandwidths", "", - sizeof(WifiEventStaAuthmodeChange), + sizeof(WifiBandwidths), 2, - wifi_event_sta_authmode_change__field_descriptors, - wifi_event_sta_authmode_change__field_indices_by_name, - 1, wifi_event_sta_authmode_change__number_ranges, - (ProtobufCMessageInit) wifi_event_sta_authmode_change__init, + wifi_bandwidths__field_descriptors, + wifi_bandwidths__field_indices_by_name, + 1, wifi_bandwidths__number_ranges, + (ProtobufCMessageInit) wifi_bandwidths__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_sta_wps_er_pin__field_descriptors[1] = +static const ProtobufCFieldDescriptor wifi_itwt_setup_config__field_descriptors[6] = { { - "pin_code", + "setup_cmd", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaWpsErPin, pin_code), + offsetof(WifiItwtSetupConfig, setup_cmd), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned wifi_event_sta_wps_er_pin__field_indices_by_name[] = { - 0, /* field[0] = pin_code */ -}; -static const ProtobufCIntRange wifi_event_sta_wps_er_pin__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor wifi_event_sta_wps_er_pin__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_sta_wps_er_pin", - "WifiEventStaWpsErPin", - "WifiEventStaWpsErPin", - "", - sizeof(WifiEventStaWpsErPin), - 1, - wifi_event_sta_wps_er_pin__field_descriptors, - wifi_event_sta_wps_er_pin__field_indices_by_name, - 1, wifi_event_sta_wps_er_pin__number_ranges, - (ProtobufCMessageInit) wifi_event_sta_wps_er_pin__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor ap_cred__field_descriptors[2] = -{ { - "ssid", - 1, + "bitmask_1", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(ApCred, ssid), + offsetof(WifiItwtSetupConfig, bitmask_1), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "passphrase", - 2, + "min_wake_dura", + 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(ApCred, passphrase), + offsetof(WifiItwtSetupConfig, min_wake_dura), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "wake_invl_mant", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiItwtSetupConfig, wake_invl_mant), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "twt_id", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiItwtSetupConfig, twt_id), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "timeout_time_ms", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiItwtSetupConfig, timeout_time_ms), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned ap_cred__field_indices_by_name[] = { - 1, /* field[1] = passphrase */ - 0, /* field[0] = ssid */ +static const unsigned wifi_itwt_setup_config__field_indices_by_name[] = { + 1, /* field[1] = bitmask_1 */ + 2, /* field[2] = min_wake_dura */ + 0, /* field[0] = setup_cmd */ + 5, /* field[5] = timeout_time_ms */ + 4, /* field[4] = twt_id */ + 3, /* field[3] = wake_invl_mant */ }; -static const ProtobufCIntRange ap_cred__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_itwt_setup_config__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 6 } }; -const ProtobufCMessageDescriptor ap_cred__descriptor = +const ProtobufCMessageDescriptor wifi_itwt_setup_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "ap_cred", - "ApCred", - "ApCred", + "wifi_itwt_setup_config", + "WifiItwtSetupConfig", + "WifiItwtSetupConfig", "", - sizeof(ApCred), - 2, - ap_cred__field_descriptors, - ap_cred__field_indices_by_name, - 1, ap_cred__number_ranges, - (ProtobufCMessageInit) ap_cred__init, + sizeof(WifiItwtSetupConfig), + 6, + wifi_itwt_setup_config__field_descriptors, + wifi_itwt_setup_config__field_indices_by_name, + 1, wifi_itwt_setup_config__number_ranges, + (ProtobufCMessageInit) wifi_itwt_setup_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_sta_wps_er_success__field_descriptors[2] = +static const ProtobufCFieldDescriptor wifi_twt_config__field_descriptors[2] = { { - "ap_cred_cnt", + "post_wakeup_event", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiEventStaWpsErSuccess, ap_cred_cnt), + offsetof(WifiTwtConfig, post_wakeup_event), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ap_creds", + "twt_enable_keep_alive", 2, - PROTOBUF_C_LABEL_REPEATED, - PROTOBUF_C_TYPE_MESSAGE, - offsetof(WifiEventStaWpsErSuccess, n_ap_creds), - offsetof(WifiEventStaWpsErSuccess, ap_creds), - &ap_cred__descriptor, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(WifiTwtConfig, twt_enable_keep_alive), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_sta_wps_er_success__field_indices_by_name[] = { - 0, /* field[0] = ap_cred_cnt */ - 1, /* field[1] = ap_creds */ +static const unsigned wifi_twt_config__field_indices_by_name[] = { + 0, /* field[0] = post_wakeup_event */ + 1, /* field[1] = twt_enable_keep_alive */ }; -static const ProtobufCIntRange wifi_event_sta_wps_er_success__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_twt_config__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_event_sta_wps_er_success__descriptor = +const ProtobufCMessageDescriptor wifi_twt_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_sta_wps_er_success", - "WifiEventStaWpsErSuccess", - "WifiEventStaWpsErSuccess", + "wifi_twt_config", + "WifiTwtConfig", + "WifiTwtConfig", "", - sizeof(WifiEventStaWpsErSuccess), + sizeof(WifiTwtConfig), 2, - wifi_event_sta_wps_er_success__field_descriptors, - wifi_event_sta_wps_er_success__field_indices_by_name, - 1, wifi_event_sta_wps_er_success__number_ranges, - (ProtobufCMessageInit) wifi_event_sta_wps_er_success__init, + wifi_twt_config__field_descriptors, + wifi_twt_config__field_indices_by_name, + 1, wifi_twt_config__number_ranges, + (ProtobufCMessageInit) wifi_twt_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_ap_probe_req_rx__field_descriptors[2] = +static const ProtobufCFieldDescriptor connected_stalist__field_descriptors[2] = { { - "rssi", + "mac", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiEventApProbeReqRx, rssi), + offsetof(ConnectedSTAList, mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "mac", + "rssi", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventApProbeReqRx, mac), + offsetof(ConnectedSTAList, rssi), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_ap_probe_req_rx__field_indices_by_name[] = { - 1, /* field[1] = mac */ - 0, /* field[0] = rssi */ +static const unsigned connected_stalist__field_indices_by_name[] = { + 0, /* field[0] = mac */ + 1, /* field[1] = rssi */ }; -static const ProtobufCIntRange wifi_event_ap_probe_req_rx__number_ranges[1 + 1] = +static const ProtobufCIntRange connected_stalist__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_event_ap_probe_req_rx__descriptor = +const ProtobufCMessageDescriptor connected_stalist__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_ap_probe_req_rx", - "WifiEventApProbeReqRx", - "WifiEventApProbeReqRx", + "ConnectedSTAList", + "ConnectedSTAList", + "ConnectedSTAList", "", - sizeof(WifiEventApProbeReqRx), + sizeof(ConnectedSTAList), 2, - wifi_event_ap_probe_req_rx__field_descriptors, - wifi_event_ap_probe_req_rx__field_indices_by_name, - 1, wifi_event_ap_probe_req_rx__number_ranges, - (ProtobufCMessageInit) wifi_event_ap_probe_req_rx__init, + connected_stalist__field_descriptors, + connected_stalist__field_indices_by_name, + 1, connected_stalist__number_ranges, + (ProtobufCMessageInit) connected_stalist__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_bss_rssi_low__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__get_mac_address__field_descriptors[1] = { { - "rssi", + "mode", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventBssRssiLow, rssi), + offsetof(RpcReqGetMacAddress, mode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_bss_rssi_low__field_indices_by_name[] = { - 0, /* field[0] = rssi */ +static const unsigned rpc__req__get_mac_address__field_indices_by_name[] = { + 0, /* field[0] = mode */ }; -static const ProtobufCIntRange wifi_event_bss_rssi_low__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__get_mac_address__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_event_bss_rssi_low__descriptor = +const ProtobufCMessageDescriptor rpc__req__get_mac_address__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_bss_rssi_low", - "WifiEventBssRssiLow", - "WifiEventBssRssiLow", + "Rpc_Req_GetMacAddress", + "RpcReqGetMacAddress", + "RpcReqGetMacAddress", "", - sizeof(WifiEventBssRssiLow), + sizeof(RpcReqGetMacAddress), 1, - wifi_event_bss_rssi_low__field_descriptors, - wifi_event_bss_rssi_low__field_indices_by_name, - 1, wifi_event_bss_rssi_low__number_ranges, - (ProtobufCMessageInit) wifi_event_bss_rssi_low__init, + rpc__req__get_mac_address__field_descriptors, + rpc__req__get_mac_address__field_indices_by_name, + 1, rpc__req__get_mac_address__number_ranges, + (ProtobufCMessageInit) rpc__req__get_mac_address__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_ftm_report_entry__field_descriptors[7] = +static const ProtobufCFieldDescriptor rpc__resp__get_mac_address__field_descriptors[2] = { { - "dlog_token", + "mac", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiFtmReportEntry, dlog_token), + offsetof(RpcRespGetMacAddress, mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "rssi", + "resp", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiFtmReportEntry, rssi), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "rtt", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiFtmReportEntry, rtt), + offsetof(RpcRespGetMacAddress, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__get_mac_address__field_indices_by_name[] = { + 0, /* field[0] = mac */ + 1, /* field[1] = resp */ +}; +static const ProtobufCIntRange rpc__resp__get_mac_address__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor rpc__resp__get_mac_address__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_GetMacAddress", + "RpcRespGetMacAddress", + "RpcRespGetMacAddress", + "", + sizeof(RpcRespGetMacAddress), + 2, + rpc__resp__get_mac_address__field_descriptors, + rpc__resp__get_mac_address__field_indices_by_name, + 1, rpc__resp__get_mac_address__number_ranges, + (ProtobufCMessageInit) rpc__resp__get_mac_address__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define rpc__req__get_mode__field_descriptors NULL +#define rpc__req__get_mode__field_indices_by_name NULL +#define rpc__req__get_mode__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__get_mode__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_GetMode", + "RpcReqGetMode", + "RpcReqGetMode", + "", + sizeof(RpcReqGetMode), + 0, + rpc__req__get_mode__field_descriptors, + rpc__req__get_mode__field_indices_by_name, + 0, rpc__req__get_mode__number_ranges, + (ProtobufCMessageInit) rpc__req__get_mode__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__get_mode__field_descriptors[2] = +{ { - "t1", - 4, + "mode", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT64, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiFtmReportEntry, t1), + offsetof(RpcRespGetMode, mode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "t2", - 5, + "resp", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT64, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiFtmReportEntry, t2), + offsetof(RpcRespGetMode, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__get_mode__field_indices_by_name[] = { + 0, /* field[0] = mode */ + 1, /* field[1] = resp */ +}; +static const ProtobufCIntRange rpc__resp__get_mode__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor rpc__resp__get_mode__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_GetMode", + "RpcRespGetMode", + "RpcRespGetMode", + "", + sizeof(RpcRespGetMode), + 2, + rpc__resp__get_mode__field_descriptors, + rpc__resp__get_mode__field_indices_by_name, + 1, rpc__resp__get_mode__number_ranges, + (ProtobufCMessageInit) rpc__resp__get_mode__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__set_mode__field_descriptors[1] = +{ { - "t3", - 6, + "mode", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT64, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiFtmReportEntry, t3), + offsetof(RpcReqSetMode, mode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__req__set_mode__field_indices_by_name[] = { + 0, /* field[0] = mode */ +}; +static const ProtobufCIntRange rpc__req__set_mode__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__req__set_mode__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_SetMode", + "RpcReqSetMode", + "RpcReqSetMode", + "", + sizeof(RpcReqSetMode), + 1, + rpc__req__set_mode__field_descriptors, + rpc__req__set_mode__field_indices_by_name, + 1, rpc__req__set_mode__number_ranges, + (ProtobufCMessageInit) rpc__req__set_mode__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__set_mode__field_descriptors[1] = +{ { - "t4", - 7, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT64, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiFtmReportEntry, t4), + offsetof(RpcRespSetMode, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_ftm_report_entry__field_indices_by_name[] = { - 0, /* field[0] = dlog_token */ - 1, /* field[1] = rssi */ - 2, /* field[2] = rtt */ - 3, /* field[3] = t1 */ - 4, /* field[4] = t2 */ - 5, /* field[5] = t3 */ - 6, /* field[6] = t4 */ +static const unsigned rpc__resp__set_mode__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange wifi_ftm_report_entry__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__set_mode__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 7 } + { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_ftm_report_entry__descriptor = +const ProtobufCMessageDescriptor rpc__resp__set_mode__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_ftm_report_entry", - "WifiFtmReportEntry", - "WifiFtmReportEntry", + "Rpc_Resp_SetMode", + "RpcRespSetMode", + "RpcRespSetMode", "", - sizeof(WifiFtmReportEntry), - 7, - wifi_ftm_report_entry__field_descriptors, - wifi_ftm_report_entry__field_indices_by_name, - 1, wifi_ftm_report_entry__number_ranges, - (ProtobufCMessageInit) wifi_ftm_report_entry__init, + sizeof(RpcRespSetMode), + 1, + rpc__resp__set_mode__field_descriptors, + rpc__resp__set_mode__field_indices_by_name, + 1, rpc__resp__set_mode__number_ranges, + (ProtobufCMessageInit) rpc__resp__set_mode__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_ftm_report__field_descriptors[7] = +#define rpc__req__get_ps__field_descriptors NULL +#define rpc__req__get_ps__field_indices_by_name NULL +#define rpc__req__get_ps__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__get_ps__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_GetPs", + "RpcReqGetPs", + "RpcReqGetPs", + "", + sizeof(RpcReqGetPs), + 0, + rpc__req__get_ps__field_descriptors, + rpc__req__get_ps__field_indices_by_name, + 0, rpc__req__get_ps__number_ranges, + (ProtobufCMessageInit) rpc__req__get_ps__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__get_ps__field_descriptors[2] = { { - "peer_mac", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventFtmReport, peer_mac), + offsetof(RpcRespGetPs, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "status", + "type", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventFtmReport, status), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "rtt_raw", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiEventFtmReport, rtt_raw), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "rtt_est", - 4, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiEventFtmReport, rtt_est), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "dist_est", - 5, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiEventFtmReport, dist_est), - NULL, + offsetof(RpcRespGetPs, type), NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "ftm_report_data", - 6, - PROTOBUF_C_LABEL_REPEATED, - PROTOBUF_C_TYPE_MESSAGE, - offsetof(WifiEventFtmReport, n_ftm_report_data), - offsetof(WifiEventFtmReport, ftm_report_data), - &wifi_ftm_report_entry__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__get_ps__field_indices_by_name[] = { + 0, /* field[0] = resp */ + 1, /* field[1] = type */ +}; +static const ProtobufCIntRange rpc__resp__get_ps__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor rpc__resp__get_ps__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_GetPs", + "RpcRespGetPs", + "RpcRespGetPs", + "", + sizeof(RpcRespGetPs), + 2, + rpc__resp__get_ps__field_descriptors, + rpc__resp__get_ps__field_indices_by_name, + 1, rpc__resp__get_ps__number_ranges, + (ProtobufCMessageInit) rpc__resp__get_ps__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__set_ps__field_descriptors[1] = +{ { - "ftm_report_num_entries", - 7, + "type", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventFtmReport, ftm_report_num_entries), + offsetof(RpcReqSetPs, type), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_ftm_report__field_indices_by_name[] = { - 4, /* field[4] = dist_est */ - 5, /* field[5] = ftm_report_data */ - 6, /* field[6] = ftm_report_num_entries */ - 0, /* field[0] = peer_mac */ - 3, /* field[3] = rtt_est */ - 2, /* field[2] = rtt_raw */ - 1, /* field[1] = status */ +static const unsigned rpc__req__set_ps__field_indices_by_name[] = { + 0, /* field[0] = type */ }; -static const ProtobufCIntRange wifi_event_ftm_report__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__set_ps__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 7 } + { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_event_ftm_report__descriptor = +const ProtobufCMessageDescriptor rpc__req__set_ps__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_ftm_report", - "WifiEventFtmReport", - "WifiEventFtmReport", + "Rpc_Req_SetPs", + "RpcReqSetPs", + "RpcReqSetPs", "", - sizeof(WifiEventFtmReport), - 7, - wifi_event_ftm_report__field_descriptors, - wifi_event_ftm_report__field_indices_by_name, - 1, wifi_event_ftm_report__number_ranges, - (ProtobufCMessageInit) wifi_event_ftm_report__init, + sizeof(RpcReqSetPs), + 1, + rpc__req__set_ps__field_descriptors, + rpc__req__set_ps__field_indices_by_name, + 1, rpc__req__set_ps__number_ranges, + (ProtobufCMessageInit) rpc__req__set_ps__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_action_tx_status__field_descriptors[4] = +static const ProtobufCFieldDescriptor rpc__resp__set_ps__field_descriptors[1] = { { - "ifx", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventActionTxStatus, ifx), + offsetof(RpcRespSetPs, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__set_ps__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__set_ps__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__set_ps__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_SetPs", + "RpcRespSetPs", + "RpcRespSetPs", + "", + sizeof(RpcRespSetPs), + 1, + rpc__resp__set_ps__field_descriptors, + rpc__resp__set_ps__field_indices_by_name, + 1, rpc__resp__set_ps__number_ranges, + (ProtobufCMessageInit) rpc__resp__set_ps__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__set_mac_address__field_descriptors[2] = +{ { - "context", - 2, + "mac", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiEventActionTxStatus, context), + offsetof(RpcReqSetMacAddress, mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "da", - 3, + "mode", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventActionTxStatus, da), + offsetof(RpcReqSetMacAddress, mode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__req__set_mac_address__field_indices_by_name[] = { + 0, /* field[0] = mac */ + 1, /* field[1] = mode */ +}; +static const ProtobufCIntRange rpc__req__set_mac_address__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor rpc__req__set_mac_address__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_SetMacAddress", + "RpcReqSetMacAddress", + "RpcReqSetMacAddress", + "", + sizeof(RpcReqSetMacAddress), + 2, + rpc__req__set_mac_address__field_descriptors, + rpc__req__set_mac_address__field_indices_by_name, + 1, rpc__req__set_mac_address__number_ranges, + (ProtobufCMessageInit) rpc__req__set_mac_address__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__set_mac_address__field_descriptors[1] = +{ { - "status", - 4, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventActionTxStatus, status), + offsetof(RpcRespSetMacAddress, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_action_tx_status__field_indices_by_name[] = { - 1, /* field[1] = context */ - 2, /* field[2] = da */ - 0, /* field[0] = ifx */ - 3, /* field[3] = status */ +static const unsigned rpc__resp__set_mac_address__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange wifi_event_action_tx_status__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__set_mac_address__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 4 } + { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_event_action_tx_status__descriptor = +const ProtobufCMessageDescriptor rpc__resp__set_mac_address__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_action_tx_status", - "WifiEventActionTxStatus", - "WifiEventActionTxStatus", + "Rpc_Resp_SetMacAddress", + "RpcRespSetMacAddress", + "RpcRespSetMacAddress", "", - sizeof(WifiEventActionTxStatus), - 4, - wifi_event_action_tx_status__field_descriptors, - wifi_event_action_tx_status__field_indices_by_name, - 1, wifi_event_action_tx_status__number_ranges, - (ProtobufCMessageInit) wifi_event_action_tx_status__init, + sizeof(RpcRespSetMacAddress), + 1, + rpc__resp__set_mac_address__field_descriptors, + rpc__resp__set_mac_address__field_indices_by_name, + 1, rpc__resp__set_mac_address__number_ranges, + (ProtobufCMessageInit) rpc__resp__set_mac_address__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_roc_done__field_descriptors[1] = +#define rpc__req__otabegin__field_descriptors NULL +#define rpc__req__otabegin__field_indices_by_name NULL +#define rpc__req__otabegin__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__otabegin__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_OTABegin", + "RpcReqOTABegin", + "RpcReqOTABegin", + "", + sizeof(RpcReqOTABegin), + 0, + rpc__req__otabegin__field_descriptors, + rpc__req__otabegin__field_indices_by_name, + 0, rpc__req__otabegin__number_ranges, + (ProtobufCMessageInit) rpc__req__otabegin__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__otabegin__field_descriptors[1] = { { - "context", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventRocDone, context), + offsetof(RpcRespOTABegin, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_roc_done__field_indices_by_name[] = { - 0, /* field[0] = context */ +static const unsigned rpc__resp__otabegin__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange wifi_event_roc_done__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__otabegin__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_event_roc_done__descriptor = +const ProtobufCMessageDescriptor rpc__resp__otabegin__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_roc_done", - "WifiEventRocDone", - "WifiEventRocDone", + "Rpc_Resp_OTABegin", + "RpcRespOTABegin", + "RpcRespOTABegin", "", - sizeof(WifiEventRocDone), + sizeof(RpcRespOTABegin), 1, - wifi_event_roc_done__field_descriptors, - wifi_event_roc_done__field_indices_by_name, - 1, wifi_event_roc_done__number_ranges, - (ProtobufCMessageInit) wifi_event_roc_done__init, + rpc__resp__otabegin__field_descriptors, + rpc__resp__otabegin__field_indices_by_name, + 1, rpc__resp__otabegin__number_ranges, + (ProtobufCMessageInit) rpc__resp__otabegin__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_ap_wps_rg_pin__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__otawrite__field_descriptors[1] = { { - "pin_code", + "ota_data", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiEventApWpsRgPin, pin_code), + offsetof(RpcReqOTAWrite, ota_data), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_ap_wps_rg_pin__field_indices_by_name[] = { - 0, /* field[0] = pin_code */ +static const unsigned rpc__req__otawrite__field_indices_by_name[] = { + 0, /* field[0] = ota_data */ }; -static const ProtobufCIntRange wifi_event_ap_wps_rg_pin__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__otawrite__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_event_ap_wps_rg_pin__descriptor = +const ProtobufCMessageDescriptor rpc__req__otawrite__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_ap_wps_rg_pin", - "WifiEventApWpsRgPin", - "WifiEventApWpsRgPin", + "Rpc_Req_OTAWrite", + "RpcReqOTAWrite", + "RpcReqOTAWrite", "", - sizeof(WifiEventApWpsRgPin), + sizeof(RpcReqOTAWrite), 1, - wifi_event_ap_wps_rg_pin__field_descriptors, - wifi_event_ap_wps_rg_pin__field_indices_by_name, - 1, wifi_event_ap_wps_rg_pin__number_ranges, - (ProtobufCMessageInit) wifi_event_ap_wps_rg_pin__init, + rpc__req__otawrite__field_descriptors, + rpc__req__otawrite__field_indices_by_name, + 1, rpc__req__otawrite__number_ranges, + (ProtobufCMessageInit) rpc__req__otawrite__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_ap_wps_rg_fail_reason__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__otawrite__field_descriptors[1] = { { - "reason", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventApWpsRgFailReason, reason), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "peer_macaddr", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, - 0, /* quantifier_offset */ - offsetof(WifiEventApWpsRgFailReason, peer_macaddr), + offsetof(RpcRespOTAWrite, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_ap_wps_rg_fail_reason__field_indices_by_name[] = { - 1, /* field[1] = peer_macaddr */ - 0, /* field[0] = reason */ +static const unsigned rpc__resp__otawrite__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange wifi_event_ap_wps_rg_fail_reason__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__otawrite__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_event_ap_wps_rg_fail_reason__descriptor = +const ProtobufCMessageDescriptor rpc__resp__otawrite__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_ap_wps_rg_fail_reason", - "WifiEventApWpsRgFailReason", - "WifiEventApWpsRgFailReason", + "Rpc_Resp_OTAWrite", + "RpcRespOTAWrite", + "RpcRespOTAWrite", "", - sizeof(WifiEventApWpsRgFailReason), - 2, - wifi_event_ap_wps_rg_fail_reason__field_descriptors, - wifi_event_ap_wps_rg_fail_reason__field_indices_by_name, - 1, wifi_event_ap_wps_rg_fail_reason__number_ranges, - (ProtobufCMessageInit) wifi_event_ap_wps_rg_fail_reason__init, + sizeof(RpcRespOTAWrite), + 1, + rpc__resp__otawrite__field_descriptors, + rpc__resp__otawrite__field_indices_by_name, + 1, rpc__resp__otawrite__number_ranges, + (ProtobufCMessageInit) rpc__resp__otawrite__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_ap_wps_rg_success__field_descriptors[1] = +#define rpc__req__otaend__field_descriptors NULL +#define rpc__req__otaend__field_indices_by_name NULL +#define rpc__req__otaend__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__otaend__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_OTAEnd", + "RpcReqOTAEnd", + "RpcReqOTAEnd", + "", + sizeof(RpcReqOTAEnd), + 0, + rpc__req__otaend__field_descriptors, + rpc__req__otaend__field_indices_by_name, + 0, rpc__req__otaend__number_ranges, + (ProtobufCMessageInit) rpc__req__otaend__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__otaend__field_descriptors[1] = { { - "peer_macaddr", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventApWpsRgSuccess, peer_macaddr), + offsetof(RpcRespOTAEnd, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_ap_wps_rg_success__field_indices_by_name[] = { - 0, /* field[0] = peer_macaddr */ +static const unsigned rpc__resp__otaend__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange wifi_event_ap_wps_rg_success__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__otaend__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_event_ap_wps_rg_success__descriptor = +const ProtobufCMessageDescriptor rpc__resp__otaend__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_ap_wps_rg_success", - "WifiEventApWpsRgSuccess", - "WifiEventApWpsRgSuccess", + "Rpc_Resp_OTAEnd", + "RpcRespOTAEnd", + "RpcRespOTAEnd", "", - sizeof(WifiEventApWpsRgSuccess), + sizeof(RpcRespOTAEnd), 1, - wifi_event_ap_wps_rg_success__field_descriptors, - wifi_event_ap_wps_rg_success__field_indices_by_name, - 1, wifi_event_ap_wps_rg_success__number_ranges, - (ProtobufCMessageInit) wifi_event_ap_wps_rg_success__init, + rpc__resp__otaend__field_descriptors, + rpc__resp__otaend__field_indices_by_name, + 1, rpc__resp__otaend__number_ranges, + (ProtobufCMessageInit) rpc__resp__otaend__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_protocols__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_max_tx_power__field_descriptors[1] = { { - "ghz_2g", + "power", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiProtocols, ghz_2g), + offsetof(RpcReqWifiSetMaxTxPower, power), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, - { - "ghz_5g", - 2, +}; +static const unsigned rpc__req__wifi_set_max_tx_power__field_indices_by_name[] = { + 0, /* field[0] = power */ +}; +static const ProtobufCIntRange rpc__req__wifi_set_max_tx_power__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__req__wifi_set_max_tx_power__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiSetMaxTxPower", + "RpcReqWifiSetMaxTxPower", + "RpcReqWifiSetMaxTxPower", + "", + sizeof(RpcReqWifiSetMaxTxPower), + 1, + rpc__req__wifi_set_max_tx_power__field_descriptors, + rpc__req__wifi_set_max_tx_power__field_indices_by_name, + 1, rpc__req__wifi_set_max_tx_power__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_max_tx_power__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_max_tx_power__field_descriptors[1] = +{ + { + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiProtocols, ghz_5g), + offsetof(RpcRespWifiSetMaxTxPower, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_protocols__field_indices_by_name[] = { - 0, /* field[0] = ghz_2g */ - 1, /* field[1] = ghz_5g */ +static const unsigned rpc__resp__wifi_set_max_tx_power__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange wifi_protocols__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_max_tx_power__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_protocols__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_max_tx_power__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_protocols", - "WifiProtocols", - "WifiProtocols", + "Rpc_Resp_WifiSetMaxTxPower", + "RpcRespWifiSetMaxTxPower", + "RpcRespWifiSetMaxTxPower", "", - sizeof(WifiProtocols), - 2, - wifi_protocols__field_descriptors, - wifi_protocols__field_indices_by_name, - 1, wifi_protocols__number_ranges, - (ProtobufCMessageInit) wifi_protocols__init, + sizeof(RpcRespWifiSetMaxTxPower), + 1, + rpc__resp__wifi_set_max_tx_power__field_descriptors, + rpc__resp__wifi_set_max_tx_power__field_indices_by_name, + 1, rpc__resp__wifi_set_max_tx_power__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_max_tx_power__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_bandwidths__field_descriptors[2] = +#define rpc__req__wifi_get_max_tx_power__field_descriptors NULL +#define rpc__req__wifi_get_max_tx_power__field_indices_by_name NULL +#define rpc__req__wifi_get_max_tx_power__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_get_max_tx_power__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiGetMaxTxPower", + "RpcReqWifiGetMaxTxPower", + "RpcReqWifiGetMaxTxPower", + "", + sizeof(RpcReqWifiGetMaxTxPower), + 0, + rpc__req__wifi_get_max_tx_power__field_descriptors, + rpc__req__wifi_get_max_tx_power__field_indices_by_name, + 0, rpc__req__wifi_get_max_tx_power__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_max_tx_power__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_max_tx_power__field_descriptors[2] = { { - "ghz_2g", + "power", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiBandwidths, ghz_2g), + offsetof(RpcRespWifiGetMaxTxPower, power), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ghz_5g", + "resp", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiBandwidths, ghz_5g), + offsetof(RpcRespWifiGetMaxTxPower, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_bandwidths__field_indices_by_name[] = { - 0, /* field[0] = ghz_2g */ - 1, /* field[1] = ghz_5g */ +static const unsigned rpc__resp__wifi_get_max_tx_power__field_indices_by_name[] = { + 0, /* field[0] = power */ + 1, /* field[1] = resp */ }; -static const ProtobufCIntRange wifi_bandwidths__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_max_tx_power__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_bandwidths__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_max_tx_power__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_bandwidths", - "WifiBandwidths", - "WifiBandwidths", + "Rpc_Resp_WifiGetMaxTxPower", + "RpcRespWifiGetMaxTxPower", + "RpcRespWifiGetMaxTxPower", "", - sizeof(WifiBandwidths), + sizeof(RpcRespWifiGetMaxTxPower), 2, - wifi_bandwidths__field_descriptors, - wifi_bandwidths__field_indices_by_name, - 1, wifi_bandwidths__number_ranges, - (ProtobufCMessageInit) wifi_bandwidths__init, + rpc__resp__wifi_get_max_tx_power__field_descriptors, + rpc__resp__wifi_get_max_tx_power__field_indices_by_name, + 1, rpc__resp__wifi_get_max_tx_power__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_max_tx_power__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor connected_stalist__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__config_heartbeat__field_descriptors[2] = { { - "mac", + "enable", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(ConnectedSTAList, mac), + offsetof(RpcReqConfigHeartbeat, enable), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "rssi", + "duration", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(ConnectedSTAList, rssi), + offsetof(RpcReqConfigHeartbeat, duration), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned connected_stalist__field_indices_by_name[] = { - 0, /* field[0] = mac */ - 1, /* field[1] = rssi */ +static const unsigned rpc__req__config_heartbeat__field_indices_by_name[] = { + 1, /* field[1] = duration */ + 0, /* field[0] = enable */ }; -static const ProtobufCIntRange connected_stalist__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__config_heartbeat__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor connected_stalist__descriptor = +const ProtobufCMessageDescriptor rpc__req__config_heartbeat__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "ConnectedSTAList", - "ConnectedSTAList", - "ConnectedSTAList", + "Rpc_Req_ConfigHeartbeat", + "RpcReqConfigHeartbeat", + "RpcReqConfigHeartbeat", "", - sizeof(ConnectedSTAList), + sizeof(RpcReqConfigHeartbeat), 2, - connected_stalist__field_descriptors, - connected_stalist__field_indices_by_name, - 1, connected_stalist__number_ranges, - (ProtobufCMessageInit) connected_stalist__init, + rpc__req__config_heartbeat__field_descriptors, + rpc__req__config_heartbeat__field_indices_by_name, + 1, rpc__req__config_heartbeat__number_ranges, + (ProtobufCMessageInit) rpc__req__config_heartbeat__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__get_mac_address__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__config_heartbeat__field_descriptors[1] = { { - "mode", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqGetMacAddress, mode), + offsetof(RpcRespConfigHeartbeat, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__get_mac_address__field_indices_by_name[] = { - 0, /* field[0] = mode */ +static const unsigned rpc__resp__config_heartbeat__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__get_mac_address__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__config_heartbeat__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__get_mac_address__descriptor = +const ProtobufCMessageDescriptor rpc__resp__config_heartbeat__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_GetMacAddress", - "RpcReqGetMacAddress", - "RpcReqGetMacAddress", + "Rpc_Resp_ConfigHeartbeat", + "RpcRespConfigHeartbeat", + "RpcRespConfigHeartbeat", "", - sizeof(RpcReqGetMacAddress), + sizeof(RpcRespConfigHeartbeat), 1, - rpc__req__get_mac_address__field_descriptors, - rpc__req__get_mac_address__field_indices_by_name, - 1, rpc__req__get_mac_address__number_ranges, - (ProtobufCMessageInit) rpc__req__get_mac_address__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__resp__get_mac_address__field_descriptors[2] = -{ - { - "mac", - 1, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, - 0, /* quantifier_offset */ - offsetof(RpcRespGetMacAddress, mac), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "resp", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcRespGetMacAddress, resp), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, -}; -static const unsigned rpc__resp__get_mac_address__field_indices_by_name[] = { - 0, /* field[0] = mac */ - 1, /* field[1] = resp */ -}; -static const ProtobufCIntRange rpc__resp__get_mac_address__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor rpc__resp__get_mac_address__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_GetMacAddress", - "RpcRespGetMacAddress", - "RpcRespGetMacAddress", - "", - sizeof(RpcRespGetMacAddress), - 2, - rpc__resp__get_mac_address__field_descriptors, - rpc__resp__get_mac_address__field_indices_by_name, - 1, rpc__resp__get_mac_address__number_ranges, - (ProtobufCMessageInit) rpc__resp__get_mac_address__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__get_mode__field_descriptors NULL -#define rpc__req__get_mode__field_indices_by_name NULL -#define rpc__req__get_mode__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__get_mode__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_GetMode", - "RpcReqGetMode", - "RpcReqGetMode", - "", - sizeof(RpcReqGetMode), - 0, - rpc__req__get_mode__field_descriptors, - rpc__req__get_mode__field_indices_by_name, - 0, rpc__req__get_mode__number_ranges, - (ProtobufCMessageInit) rpc__req__get_mode__init, + rpc__resp__config_heartbeat__field_descriptors, + rpc__resp__config_heartbeat__field_indices_by_name, + 1, rpc__resp__config_heartbeat__number_ranges, + (ProtobufCMessageInit) rpc__resp__config_heartbeat__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__get_mode__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_init__field_descriptors[1] = { { - "mode", + "cfg", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcRespGetMode, mode), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "resp", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcRespGetMode, resp), - NULL, + offsetof(RpcReqWifiInit, cfg), + &wifi_init_config__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__get_mode__field_indices_by_name[] = { - 0, /* field[0] = mode */ - 1, /* field[1] = resp */ +static const unsigned rpc__req__wifi_init__field_indices_by_name[] = { + 0, /* field[0] = cfg */ }; -static const ProtobufCIntRange rpc__resp__get_mode__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_init__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__get_mode__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_init__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_GetMode", - "RpcRespGetMode", - "RpcRespGetMode", + "Rpc_Req_WifiInit", + "RpcReqWifiInit", + "RpcReqWifiInit", "", - sizeof(RpcRespGetMode), - 2, - rpc__resp__get_mode__field_descriptors, - rpc__resp__get_mode__field_indices_by_name, - 1, rpc__resp__get_mode__number_ranges, - (ProtobufCMessageInit) rpc__resp__get_mode__init, + sizeof(RpcReqWifiInit), + 1, + rpc__req__wifi_init__field_descriptors, + rpc__req__wifi_init__field_indices_by_name, + 1, rpc__req__wifi_init__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_init__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__set_mode__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_init__field_descriptors[1] = { { - "mode", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqSetMode, mode), + offsetof(RpcRespWifiInit, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__set_mode__field_indices_by_name[] = { - 0, /* field[0] = mode */ +static const unsigned rpc__resp__wifi_init__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__set_mode__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_init__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__set_mode__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_init__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_SetMode", - "RpcReqSetMode", - "RpcReqSetMode", + "Rpc_Resp_WifiInit", + "RpcRespWifiInit", + "RpcRespWifiInit", "", - sizeof(RpcReqSetMode), + sizeof(RpcRespWifiInit), 1, - rpc__req__set_mode__field_descriptors, - rpc__req__set_mode__field_indices_by_name, - 1, rpc__req__set_mode__number_ranges, - (ProtobufCMessageInit) rpc__req__set_mode__init, + rpc__resp__wifi_init__field_descriptors, + rpc__resp__wifi_init__field_indices_by_name, + 1, rpc__resp__wifi_init__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_init__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__set_mode__field_descriptors[1] = +#define rpc__req__wifi_deinit__field_descriptors NULL +#define rpc__req__wifi_deinit__field_indices_by_name NULL +#define rpc__req__wifi_deinit__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_deinit__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiDeinit", + "RpcReqWifiDeinit", + "RpcReqWifiDeinit", + "", + sizeof(RpcReqWifiDeinit), + 0, + rpc__req__wifi_deinit__field_descriptors, + rpc__req__wifi_deinit__field_indices_by_name, + 0, rpc__req__wifi_deinit__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_deinit__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_deinit__field_descriptors[1] = { { "resp", @@ -11710,233 +13732,246 @@ static const ProtobufCFieldDescriptor rpc__resp__set_mode__field_descriptors[1] PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespSetMode, resp), + offsetof(RpcRespWifiDeinit, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__set_mode__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_deinit__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__set_mode__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_deinit__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__set_mode__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_deinit__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_SetMode", - "RpcRespSetMode", - "RpcRespSetMode", + "Rpc_Resp_WifiDeinit", + "RpcRespWifiDeinit", + "RpcRespWifiDeinit", "", - sizeof(RpcRespSetMode), + sizeof(RpcRespWifiDeinit), 1, - rpc__resp__set_mode__field_descriptors, - rpc__resp__set_mode__field_indices_by_name, - 1, rpc__resp__set_mode__number_ranges, - (ProtobufCMessageInit) rpc__resp__set_mode__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__get_ps__field_descriptors NULL -#define rpc__req__get_ps__field_indices_by_name NULL -#define rpc__req__get_ps__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__get_ps__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_GetPs", - "RpcReqGetPs", - "RpcReqGetPs", - "", - sizeof(RpcReqGetPs), - 0, - rpc__req__get_ps__field_descriptors, - rpc__req__get_ps__field_indices_by_name, - 0, rpc__req__get_ps__number_ranges, - (ProtobufCMessageInit) rpc__req__get_ps__init, + rpc__resp__wifi_deinit__field_descriptors, + rpc__resp__wifi_deinit__field_indices_by_name, + 1, rpc__resp__wifi_deinit__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_deinit__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__get_ps__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_config__field_descriptors[2] = { { - "resp", + "iface", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetPs, resp), + offsetof(RpcReqWifiSetConfig, iface), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "type", + "cfg", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcRespGetPs, type), - NULL, + offsetof(RpcReqWifiSetConfig, cfg), + &wifi_config__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__get_ps__field_indices_by_name[] = { - 0, /* field[0] = resp */ - 1, /* field[1] = type */ +static const unsigned rpc__req__wifi_set_config__field_indices_by_name[] = { + 1, /* field[1] = cfg */ + 0, /* field[0] = iface */ }; -static const ProtobufCIntRange rpc__resp__get_ps__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_config__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__get_ps__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_GetPs", - "RpcRespGetPs", - "RpcRespGetPs", + "Rpc_Req_WifiSetConfig", + "RpcReqWifiSetConfig", + "RpcReqWifiSetConfig", "", - sizeof(RpcRespGetPs), + sizeof(RpcReqWifiSetConfig), 2, - rpc__resp__get_ps__field_descriptors, - rpc__resp__get_ps__field_indices_by_name, - 1, rpc__resp__get_ps__number_ranges, - (ProtobufCMessageInit) rpc__resp__get_ps__init, + rpc__req__wifi_set_config__field_descriptors, + rpc__req__wifi_set_config__field_indices_by_name, + 1, rpc__req__wifi_set_config__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__set_ps__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_config__field_descriptors[1] = { { - "type", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqSetPs, type), + offsetof(RpcRespWifiSetConfig, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__set_ps__field_indices_by_name[] = { - 0, /* field[0] = type */ +static const unsigned rpc__resp__wifi_set_config__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__set_ps__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_config__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__set_ps__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_SetPs", - "RpcReqSetPs", - "RpcReqSetPs", + "Rpc_Resp_WifiSetConfig", + "RpcRespWifiSetConfig", + "RpcRespWifiSetConfig", "", - sizeof(RpcReqSetPs), + sizeof(RpcRespWifiSetConfig), 1, - rpc__req__set_ps__field_descriptors, - rpc__req__set_ps__field_indices_by_name, - 1, rpc__req__set_ps__number_ranges, - (ProtobufCMessageInit) rpc__req__set_ps__init, + rpc__resp__wifi_set_config__field_descriptors, + rpc__resp__wifi_set_config__field_indices_by_name, + 1, rpc__resp__wifi_set_config__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__set_ps__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_get_config__field_descriptors[1] = { { - "resp", + "iface", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespSetPs, resp), + offsetof(RpcReqWifiGetConfig, iface), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__set_ps__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_get_config__field_indices_by_name[] = { + 0, /* field[0] = iface */ }; -static const ProtobufCIntRange rpc__resp__set_ps__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_get_config__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__set_ps__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_get_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_SetPs", - "RpcRespSetPs", - "RpcRespSetPs", + "Rpc_Req_WifiGetConfig", + "RpcReqWifiGetConfig", + "RpcReqWifiGetConfig", "", - sizeof(RpcRespSetPs), + sizeof(RpcReqWifiGetConfig), 1, - rpc__resp__set_ps__field_descriptors, - rpc__resp__set_ps__field_indices_by_name, - 1, rpc__resp__set_ps__number_ranges, - (ProtobufCMessageInit) rpc__resp__set_ps__init, + rpc__req__wifi_get_config__field_descriptors, + rpc__req__wifi_get_config__field_indices_by_name, + 1, rpc__req__wifi_get_config__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__set_mac_address__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_config__field_descriptors[3] = { { - "mac", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqSetMacAddress, mac), + offsetof(RpcRespWifiGetConfig, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "mode", + "iface", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqSetMacAddress, mode), + offsetof(RpcRespWifiGetConfig, iface), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "cfg", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiGetConfig, cfg), + &wifi_config__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, }; -static const unsigned rpc__req__set_mac_address__field_indices_by_name[] = { - 0, /* field[0] = mac */ - 1, /* field[1] = mode */ +static const unsigned rpc__resp__wifi_get_config__field_indices_by_name[] = { + 2, /* field[2] = cfg */ + 1, /* field[1] = iface */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__set_mac_address__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_config__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 3 } +}; +const ProtobufCMessageDescriptor rpc__resp__wifi_get_config__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_WifiGetConfig", + "RpcRespWifiGetConfig", + "RpcRespWifiGetConfig", + "", + sizeof(RpcRespWifiGetConfig), + 3, + rpc__resp__wifi_get_config__field_descriptors, + rpc__resp__wifi_get_config__field_indices_by_name, + 1, rpc__resp__wifi_get_config__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_config__init, + NULL,NULL,NULL /* reserved[123] */ }; -const ProtobufCMessageDescriptor rpc__req__set_mac_address__descriptor = +#define rpc__req__wifi_connect__field_descriptors NULL +#define rpc__req__wifi_connect__field_indices_by_name NULL +#define rpc__req__wifi_connect__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_connect__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_SetMacAddress", - "RpcReqSetMacAddress", - "RpcReqSetMacAddress", + "Rpc_Req_WifiConnect", + "RpcReqWifiConnect", + "RpcReqWifiConnect", "", - sizeof(RpcReqSetMacAddress), - 2, - rpc__req__set_mac_address__field_descriptors, - rpc__req__set_mac_address__field_indices_by_name, - 1, rpc__req__set_mac_address__number_ranges, - (ProtobufCMessageInit) rpc__req__set_mac_address__init, + sizeof(RpcReqWifiConnect), + 0, + rpc__req__wifi_connect__field_descriptors, + rpc__req__wifi_connect__field_indices_by_name, + 0, rpc__req__wifi_connect__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_connect__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__set_mac_address__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_connect__field_descriptors[1] = { { "resp", @@ -11944,55 +13979,55 @@ static const ProtobufCFieldDescriptor rpc__resp__set_mac_address__field_descript PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespSetMacAddress, resp), + offsetof(RpcRespWifiConnect, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__set_mac_address__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_connect__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__set_mac_address__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_connect__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__set_mac_address__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_connect__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_SetMacAddress", - "RpcRespSetMacAddress", - "RpcRespSetMacAddress", + "Rpc_Resp_WifiConnect", + "RpcRespWifiConnect", + "RpcRespWifiConnect", "", - sizeof(RpcRespSetMacAddress), + sizeof(RpcRespWifiConnect), 1, - rpc__resp__set_mac_address__field_descriptors, - rpc__resp__set_mac_address__field_indices_by_name, - 1, rpc__resp__set_mac_address__number_ranges, - (ProtobufCMessageInit) rpc__resp__set_mac_address__init, + rpc__resp__wifi_connect__field_descriptors, + rpc__resp__wifi_connect__field_indices_by_name, + 1, rpc__resp__wifi_connect__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_connect__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__otabegin__field_descriptors NULL -#define rpc__req__otabegin__field_indices_by_name NULL -#define rpc__req__otabegin__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__otabegin__descriptor = +#define rpc__req__wifi_disconnect__field_descriptors NULL +#define rpc__req__wifi_disconnect__field_indices_by_name NULL +#define rpc__req__wifi_disconnect__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_disconnect__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_OTABegin", - "RpcReqOTABegin", - "RpcReqOTABegin", + "Rpc_Req_WifiDisconnect", + "RpcReqWifiDisconnect", + "RpcReqWifiDisconnect", "", - sizeof(RpcReqOTABegin), + sizeof(RpcReqWifiDisconnect), 0, - rpc__req__otabegin__field_descriptors, - rpc__req__otabegin__field_indices_by_name, - 0, rpc__req__otabegin__number_ranges, - (ProtobufCMessageInit) rpc__req__otabegin__init, + rpc__req__wifi_disconnect__field_descriptors, + rpc__req__wifi_disconnect__field_indices_by_name, + 0, rpc__req__wifi_disconnect__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_disconnect__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__otabegin__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_disconnect__field_descriptors[1] = { { "resp", @@ -12000,75 +14035,111 @@ static const ProtobufCFieldDescriptor rpc__resp__otabegin__field_descriptors[1] PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespOTABegin, resp), + offsetof(RpcRespWifiDisconnect, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__otabegin__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_disconnect__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__otabegin__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_disconnect__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__otabegin__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_disconnect__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_OTABegin", - "RpcRespOTABegin", - "RpcRespOTABegin", + "Rpc_Resp_WifiDisconnect", + "RpcRespWifiDisconnect", + "RpcRespWifiDisconnect", "", - sizeof(RpcRespOTABegin), + sizeof(RpcRespWifiDisconnect), 1, - rpc__resp__otabegin__field_descriptors, - rpc__resp__otabegin__field_indices_by_name, - 1, rpc__resp__otabegin__number_ranges, - (ProtobufCMessageInit) rpc__resp__otabegin__init, + rpc__resp__wifi_disconnect__field_descriptors, + rpc__resp__wifi_disconnect__field_indices_by_name, + 1, rpc__resp__wifi_disconnect__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_disconnect__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__otawrite__field_descriptors[1] = +#define rpc__req__wifi_start__field_descriptors NULL +#define rpc__req__wifi_start__field_indices_by_name NULL +#define rpc__req__wifi_start__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_start__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStart", + "RpcReqWifiStart", + "RpcReqWifiStart", + "", + sizeof(RpcReqWifiStart), + 0, + rpc__req__wifi_start__field_descriptors, + rpc__req__wifi_start__field_indices_by_name, + 0, rpc__req__wifi_start__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_start__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_start__field_descriptors[1] = { { - "ota_data", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqOTAWrite, ota_data), + offsetof(RpcRespWifiStart, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__otawrite__field_indices_by_name[] = { - 0, /* field[0] = ota_data */ +static const unsigned rpc__resp__wifi_start__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__otawrite__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_start__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__otawrite__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_start__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_OTAWrite", - "RpcReqOTAWrite", - "RpcReqOTAWrite", + "Rpc_Resp_WifiStart", + "RpcRespWifiStart", + "RpcRespWifiStart", "", - sizeof(RpcReqOTAWrite), + sizeof(RpcRespWifiStart), 1, - rpc__req__otawrite__field_descriptors, - rpc__req__otawrite__field_indices_by_name, - 1, rpc__req__otawrite__number_ranges, - (ProtobufCMessageInit) rpc__req__otawrite__init, + rpc__resp__wifi_start__field_descriptors, + rpc__resp__wifi_start__field_indices_by_name, + 1, rpc__resp__wifi_start__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_start__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__otawrite__field_descriptors[1] = +#define rpc__req__wifi_stop__field_descriptors NULL +#define rpc__req__wifi_stop__field_indices_by_name NULL +#define rpc__req__wifi_stop__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_stop__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStop", + "RpcReqWifiStop", + "RpcReqWifiStop", + "", + sizeof(RpcReqWifiStop), + 0, + rpc__req__wifi_stop__field_descriptors, + rpc__req__wifi_stop__field_indices_by_name, + 0, rpc__req__wifi_stop__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_stop__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_stop__field_descriptors[1] = { { "resp", @@ -12076,131 +14147,157 @@ static const ProtobufCFieldDescriptor rpc__resp__otawrite__field_descriptors[1] PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespOTAWrite, resp), + offsetof(RpcRespWifiStop, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__otawrite__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_stop__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__otawrite__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_stop__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__otawrite__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_stop__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_OTAWrite", - "RpcRespOTAWrite", - "RpcRespOTAWrite", + "Rpc_Resp_WifiStop", + "RpcRespWifiStop", + "RpcRespWifiStop", "", - sizeof(RpcRespOTAWrite), + sizeof(RpcRespWifiStop), 1, - rpc__resp__otawrite__field_descriptors, - rpc__resp__otawrite__field_indices_by_name, - 1, rpc__resp__otawrite__number_ranges, - (ProtobufCMessageInit) rpc__resp__otawrite__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__otaend__field_descriptors NULL -#define rpc__req__otaend__field_indices_by_name NULL -#define rpc__req__otaend__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__otaend__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_OTAEnd", - "RpcReqOTAEnd", - "RpcReqOTAEnd", - "", - sizeof(RpcReqOTAEnd), - 0, - rpc__req__otaend__field_descriptors, - rpc__req__otaend__field_indices_by_name, - 0, rpc__req__otaend__number_ranges, - (ProtobufCMessageInit) rpc__req__otaend__init, + rpc__resp__wifi_stop__field_descriptors, + rpc__resp__wifi_stop__field_indices_by_name, + 1, rpc__resp__wifi_stop__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_stop__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__otaend__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_scan_start__field_descriptors[3] = { { - "resp", + "config", 1, PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(RpcReqWifiScanStart, config), + &wifi_scan_config__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "block", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(RpcReqWifiScanStart, block), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "config_set", + 3, + PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespOTAEnd, resp), + offsetof(RpcReqWifiScanStart, config_set), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__otaend__field_indices_by_name[] = { - 0, /* field[0] = resp */ -}; -static const ProtobufCIntRange rpc__resp__otaend__number_ranges[1 + 1] = +static const unsigned rpc__req__wifi_scan_start__field_indices_by_name[] = { + 1, /* field[1] = block */ + 0, /* field[0] = config */ + 2, /* field[2] = config_set */ +}; +static const ProtobufCIntRange rpc__req__wifi_scan_start__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 3 } }; -const ProtobufCMessageDescriptor rpc__resp__otaend__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_scan_start__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_OTAEnd", - "RpcRespOTAEnd", - "RpcRespOTAEnd", + "Rpc_Req_WifiScanStart", + "RpcReqWifiScanStart", + "RpcReqWifiScanStart", "", - sizeof(RpcRespOTAEnd), - 1, - rpc__resp__otaend__field_descriptors, - rpc__resp__otaend__field_indices_by_name, - 1, rpc__resp__otaend__number_ranges, - (ProtobufCMessageInit) rpc__resp__otaend__init, + sizeof(RpcReqWifiScanStart), + 3, + rpc__req__wifi_scan_start__field_descriptors, + rpc__req__wifi_scan_start__field_indices_by_name, + 1, rpc__req__wifi_scan_start__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_scan_start__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_max_tx_power__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_start__field_descriptors[1] = { { - "power", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetMaxTxPower, power), + offsetof(RpcRespWifiScanStart, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_max_tx_power__field_indices_by_name[] = { - 0, /* field[0] = power */ +static const unsigned rpc__resp__wifi_scan_start__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_set_max_tx_power__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_scan_start__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_max_tx_power__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_scan_start__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetMaxTxPower", - "RpcReqWifiSetMaxTxPower", - "RpcReqWifiSetMaxTxPower", + "Rpc_Resp_WifiScanStart", + "RpcRespWifiScanStart", + "RpcRespWifiScanStart", "", - sizeof(RpcReqWifiSetMaxTxPower), + sizeof(RpcRespWifiScanStart), 1, - rpc__req__wifi_set_max_tx_power__field_descriptors, - rpc__req__wifi_set_max_tx_power__field_indices_by_name, - 1, rpc__req__wifi_set_max_tx_power__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_max_tx_power__init, + rpc__resp__wifi_scan_start__field_descriptors, + rpc__resp__wifi_scan_start__field_indices_by_name, + 1, rpc__resp__wifi_scan_start__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_scan_start__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_max_tx_power__field_descriptors[1] = +#define rpc__req__wifi_scan_stop__field_descriptors NULL +#define rpc__req__wifi_scan_stop__field_indices_by_name NULL +#define rpc__req__wifi_scan_stop__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_scan_stop__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiScanStop", + "RpcReqWifiScanStop", + "RpcReqWifiScanStop", + "", + sizeof(RpcReqWifiScanStop), + 0, + rpc__req__wifi_scan_stop__field_descriptors, + rpc__req__wifi_scan_stop__field_indices_by_name, + 0, rpc__req__wifi_scan_stop__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_scan_stop__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_stop__field_descriptors[1] = { { "resp", @@ -12208,157 +14305,226 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_max_tx_power__field_de PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetMaxTxPower, resp), + offsetof(RpcRespWifiScanStop, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_max_tx_power__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_scan_stop__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_max_tx_power__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_scan_stop__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_max_tx_power__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_scan_stop__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetMaxTxPower", - "RpcRespWifiSetMaxTxPower", - "RpcRespWifiSetMaxTxPower", + "Rpc_Resp_WifiScanStop", + "RpcRespWifiScanStop", + "RpcRespWifiScanStop", "", - sizeof(RpcRespWifiSetMaxTxPower), + sizeof(RpcRespWifiScanStop), 1, - rpc__resp__wifi_set_max_tx_power__field_descriptors, - rpc__resp__wifi_set_max_tx_power__field_indices_by_name, - 1, rpc__resp__wifi_set_max_tx_power__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_max_tx_power__init, + rpc__resp__wifi_scan_stop__field_descriptors, + rpc__resp__wifi_scan_stop__field_indices_by_name, + 1, rpc__resp__wifi_scan_stop__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_scan_stop__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_get_max_tx_power__field_descriptors NULL -#define rpc__req__wifi_get_max_tx_power__field_indices_by_name NULL -#define rpc__req__wifi_get_max_tx_power__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_get_max_tx_power__descriptor = +#define rpc__req__wifi_scan_get_ap_num__field_descriptors NULL +#define rpc__req__wifi_scan_get_ap_num__field_indices_by_name NULL +#define rpc__req__wifi_scan_get_ap_num__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_scan_get_ap_num__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetMaxTxPower", - "RpcReqWifiGetMaxTxPower", - "RpcReqWifiGetMaxTxPower", + "Rpc_Req_WifiScanGetApNum", + "RpcReqWifiScanGetApNum", + "RpcReqWifiScanGetApNum", "", - sizeof(RpcReqWifiGetMaxTxPower), + sizeof(RpcReqWifiScanGetApNum), 0, - rpc__req__wifi_get_max_tx_power__field_descriptors, - rpc__req__wifi_get_max_tx_power__field_indices_by_name, - 0, rpc__req__wifi_get_max_tx_power__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_max_tx_power__init, + rpc__req__wifi_scan_get_ap_num__field_descriptors, + rpc__req__wifi_scan_get_ap_num__field_indices_by_name, + 0, rpc__req__wifi_scan_get_ap_num__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_scan_get_ap_num__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_max_tx_power__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_num__field_descriptors[2] = { { - "power", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetMaxTxPower, power), + offsetof(RpcRespWifiScanGetApNum, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "resp", + "number", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetMaxTxPower, resp), + offsetof(RpcRespWifiScanGetApNum, number), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_max_tx_power__field_indices_by_name[] = { - 0, /* field[0] = power */ - 1, /* field[1] = resp */ +static const unsigned rpc__resp__wifi_scan_get_ap_num__field_indices_by_name[] = { + 1, /* field[1] = number */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_max_tx_power__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_scan_get_ap_num__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_max_tx_power__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_scan_get_ap_num__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetMaxTxPower", - "RpcRespWifiGetMaxTxPower", - "RpcRespWifiGetMaxTxPower", + "Rpc_Resp_WifiScanGetApNum", + "RpcRespWifiScanGetApNum", + "RpcRespWifiScanGetApNum", "", - sizeof(RpcRespWifiGetMaxTxPower), + sizeof(RpcRespWifiScanGetApNum), 2, - rpc__resp__wifi_get_max_tx_power__field_descriptors, - rpc__resp__wifi_get_max_tx_power__field_indices_by_name, - 1, rpc__resp__wifi_get_max_tx_power__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_max_tx_power__init, + rpc__resp__wifi_scan_get_ap_num__field_descriptors, + rpc__resp__wifi_scan_get_ap_num__field_indices_by_name, + 1, rpc__resp__wifi_scan_get_ap_num__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_scan_get_ap_num__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__config_heartbeat__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_scan_get_ap_records__field_descriptors[1] = { { - "enable", + "number", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqConfigHeartbeat, enable), + offsetof(RpcReqWifiScanGetApRecords, number), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__req__wifi_scan_get_ap_records__field_indices_by_name[] = { + 0, /* field[0] = number */ +}; +static const ProtobufCIntRange rpc__req__wifi_scan_get_ap_records__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__req__wifi_scan_get_ap_records__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiScanGetApRecords", + "RpcReqWifiScanGetApRecords", + "RpcReqWifiScanGetApRecords", + "", + sizeof(RpcReqWifiScanGetApRecords), + 1, + rpc__req__wifi_scan_get_ap_records__field_descriptors, + rpc__req__wifi_scan_get_ap_records__field_indices_by_name, + 1, rpc__req__wifi_scan_get_ap_records__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_scan_get_ap_records__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_records__field_descriptors[3] = +{ + { + "resp", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiScanGetApRecords, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "duration", + "number", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqConfigHeartbeat, duration), + offsetof(RpcRespWifiScanGetApRecords, number), + NULL, NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ap_records", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(RpcRespWifiScanGetApRecords, n_ap_records), + offsetof(RpcRespWifiScanGetApRecords, ap_records), + &wifi_ap_record__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__config_heartbeat__field_indices_by_name[] = { - 1, /* field[1] = duration */ - 0, /* field[0] = enable */ +static const unsigned rpc__resp__wifi_scan_get_ap_records__field_indices_by_name[] = { + 2, /* field[2] = ap_records */ + 1, /* field[1] = number */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__config_heartbeat__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_scan_get_ap_records__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 3 } }; -const ProtobufCMessageDescriptor rpc__req__config_heartbeat__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_scan_get_ap_records__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_WifiScanGetApRecords", + "RpcRespWifiScanGetApRecords", + "RpcRespWifiScanGetApRecords", + "", + sizeof(RpcRespWifiScanGetApRecords), + 3, + rpc__resp__wifi_scan_get_ap_records__field_descriptors, + rpc__resp__wifi_scan_get_ap_records__field_indices_by_name, + 1, rpc__resp__wifi_scan_get_ap_records__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_scan_get_ap_records__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define rpc__req__wifi_scan_get_ap_record__field_descriptors NULL +#define rpc__req__wifi_scan_get_ap_record__field_indices_by_name NULL +#define rpc__req__wifi_scan_get_ap_record__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_scan_get_ap_record__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_ConfigHeartbeat", - "RpcReqConfigHeartbeat", - "RpcReqConfigHeartbeat", + "Rpc_Req_WifiScanGetApRecord", + "RpcReqWifiScanGetApRecord", + "RpcReqWifiScanGetApRecord", "", - sizeof(RpcReqConfigHeartbeat), - 2, - rpc__req__config_heartbeat__field_descriptors, - rpc__req__config_heartbeat__field_indices_by_name, - 1, rpc__req__config_heartbeat__number_ranges, - (ProtobufCMessageInit) rpc__req__config_heartbeat__init, + sizeof(RpcReqWifiScanGetApRecord), + 0, + rpc__req__wifi_scan_get_ap_record__field_descriptors, + rpc__req__wifi_scan_get_ap_record__field_indices_by_name, + 0, rpc__req__wifi_scan_get_ap_record__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_scan_get_ap_record__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__config_heartbeat__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_record__field_descriptors[2] = { { "resp", @@ -12366,75 +14532,68 @@ static const ProtobufCFieldDescriptor rpc__resp__config_heartbeat__field_descrip PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespConfigHeartbeat, resp), + offsetof(RpcRespWifiScanGetApRecord, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__resp__config_heartbeat__field_indices_by_name[] = { - 0, /* field[0] = resp */ -}; -static const ProtobufCIntRange rpc__resp__config_heartbeat__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__resp__config_heartbeat__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_ConfigHeartbeat", - "RpcRespConfigHeartbeat", - "RpcRespConfigHeartbeat", - "", - sizeof(RpcRespConfigHeartbeat), - 1, - rpc__resp__config_heartbeat__field_descriptors, - rpc__resp__config_heartbeat__field_indices_by_name, - 1, rpc__resp__config_heartbeat__number_ranges, - (ProtobufCMessageInit) rpc__resp__config_heartbeat__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__req__wifi_init__field_descriptors[1] = -{ { - "cfg", - 1, + "ap_record", + 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcReqWifiInit, cfg), - &wifi_init_config__descriptor, + offsetof(RpcRespWifiScanGetApRecord, ap_record), + &wifi_ap_record__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_init__field_indices_by_name[] = { - 0, /* field[0] = cfg */ +static const unsigned rpc__resp__wifi_scan_get_ap_record__field_indices_by_name[] = { + 1, /* field[1] = ap_record */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_init__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_scan_get_ap_record__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_init__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_scan_get_ap_record__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiInit", - "RpcReqWifiInit", - "RpcReqWifiInit", + "Rpc_Resp_WifiScanGetApRecord", + "RpcRespWifiScanGetApRecord", + "RpcRespWifiScanGetApRecord", "", - sizeof(RpcReqWifiInit), - 1, - rpc__req__wifi_init__field_descriptors, - rpc__req__wifi_init__field_indices_by_name, - 1, rpc__req__wifi_init__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_init__init, + sizeof(RpcRespWifiScanGetApRecord), + 2, + rpc__resp__wifi_scan_get_ap_record__field_descriptors, + rpc__resp__wifi_scan_get_ap_record__field_indices_by_name, + 1, rpc__resp__wifi_scan_get_ap_record__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_scan_get_ap_record__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_init__field_descriptors[1] = +#define rpc__req__wifi_clear_ap_list__field_descriptors NULL +#define rpc__req__wifi_clear_ap_list__field_indices_by_name NULL +#define rpc__req__wifi_clear_ap_list__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_clear_ap_list__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiClearApList", + "RpcReqWifiClearApList", + "RpcReqWifiClearApList", + "", + sizeof(RpcReqWifiClearApList), + 0, + rpc__req__wifi_clear_ap_list__field_descriptors, + rpc__req__wifi_clear_ap_list__field_indices_by_name, + 0, rpc__req__wifi_clear_ap_list__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_clear_ap_list__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_clear_ap_list__field_descriptors[1] = { { "resp", @@ -12442,55 +14601,55 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_init__field_descriptors[1] PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiInit, resp), + offsetof(RpcRespWifiClearApList, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_init__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_clear_ap_list__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_init__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_clear_ap_list__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_init__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_clear_ap_list__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiInit", - "RpcRespWifiInit", - "RpcRespWifiInit", + "Rpc_Resp_WifiClearApList", + "RpcRespWifiClearApList", + "RpcRespWifiClearApList", "", - sizeof(RpcRespWifiInit), + sizeof(RpcRespWifiClearApList), 1, - rpc__resp__wifi_init__field_descriptors, - rpc__resp__wifi_init__field_indices_by_name, - 1, rpc__resp__wifi_init__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_init__init, + rpc__resp__wifi_clear_ap_list__field_descriptors, + rpc__resp__wifi_clear_ap_list__field_indices_by_name, + 1, rpc__resp__wifi_clear_ap_list__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_clear_ap_list__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_deinit__field_descriptors NULL -#define rpc__req__wifi_deinit__field_indices_by_name NULL -#define rpc__req__wifi_deinit__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_deinit__descriptor = +#define rpc__req__wifi_restore__field_descriptors NULL +#define rpc__req__wifi_restore__field_indices_by_name NULL +#define rpc__req__wifi_restore__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_restore__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiDeinit", - "RpcReqWifiDeinit", - "RpcReqWifiDeinit", + "Rpc_Req_WifiRestore", + "RpcReqWifiRestore", + "RpcReqWifiRestore", "", - sizeof(RpcReqWifiDeinit), + sizeof(RpcReqWifiRestore), 0, - rpc__req__wifi_deinit__field_descriptors, - rpc__req__wifi_deinit__field_indices_by_name, - 0, rpc__req__wifi_deinit__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_deinit__init, + rpc__req__wifi_restore__field_descriptors, + rpc__req__wifi_restore__field_indices_by_name, + 0, rpc__req__wifi_restore__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_restore__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_deinit__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_restore__field_descriptors[1] = { { "resp", @@ -12498,88 +14657,55 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_deinit__field_descriptors[ PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiDeinit, resp), + offsetof(RpcRespWifiRestore, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_deinit__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_restore__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_deinit__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_restore__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_deinit__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_restore__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiDeinit", - "RpcRespWifiDeinit", - "RpcRespWifiDeinit", + "Rpc_Resp_WifiRestore", + "RpcRespWifiRestore", + "RpcRespWifiRestore", "", - sizeof(RpcRespWifiDeinit), + sizeof(RpcRespWifiRestore), 1, - rpc__resp__wifi_deinit__field_descriptors, - rpc__resp__wifi_deinit__field_indices_by_name, - 1, rpc__resp__wifi_deinit__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_deinit__init, + rpc__resp__wifi_restore__field_descriptors, + rpc__resp__wifi_restore__field_indices_by_name, + 1, rpc__resp__wifi_restore__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_restore__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_config__field_descriptors[2] = -{ - { - "iface", - 1, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetConfig, iface), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "cfg", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetConfig, cfg), - &wifi_config__descriptor, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, -}; -static const unsigned rpc__req__wifi_set_config__field_indices_by_name[] = { - 1, /* field[1] = cfg */ - 0, /* field[0] = iface */ -}; -static const ProtobufCIntRange rpc__req__wifi_set_config__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor rpc__req__wifi_set_config__descriptor = +#define rpc__req__wifi_clear_fast_connect__field_descriptors NULL +#define rpc__req__wifi_clear_fast_connect__field_indices_by_name NULL +#define rpc__req__wifi_clear_fast_connect__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_clear_fast_connect__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetConfig", - "RpcReqWifiSetConfig", - "RpcReqWifiSetConfig", + "Rpc_Req_WifiClearFastConnect", + "RpcReqWifiClearFastConnect", + "RpcReqWifiClearFastConnect", "", - sizeof(RpcReqWifiSetConfig), - 2, - rpc__req__wifi_set_config__field_descriptors, - rpc__req__wifi_set_config__field_indices_by_name, - 1, rpc__req__wifi_set_config__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_config__init, + sizeof(RpcReqWifiClearFastConnect), + 0, + rpc__req__wifi_clear_fast_connect__field_descriptors, + rpc__req__wifi_clear_fast_connect__field_indices_by_name, + 0, rpc__req__wifi_clear_fast_connect__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_clear_fast_connect__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_config__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_clear_fast_connect__field_descriptors[1] = { { "resp", @@ -12587,75 +14713,75 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_config__field_descript PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetConfig, resp), + offsetof(RpcRespWifiClearFastConnect, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_config__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_clear_fast_connect__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_config__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_clear_fast_connect__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_config__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_clear_fast_connect__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetConfig", - "RpcRespWifiSetConfig", - "RpcRespWifiSetConfig", + "Rpc_Resp_WifiClearFastConnect", + "RpcRespWifiClearFastConnect", + "RpcRespWifiClearFastConnect", "", - sizeof(RpcRespWifiSetConfig), + sizeof(RpcRespWifiClearFastConnect), 1, - rpc__resp__wifi_set_config__field_descriptors, - rpc__resp__wifi_set_config__field_indices_by_name, - 1, rpc__resp__wifi_set_config__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_config__init, + rpc__resp__wifi_clear_fast_connect__field_descriptors, + rpc__resp__wifi_clear_fast_connect__field_indices_by_name, + 1, rpc__resp__wifi_clear_fast_connect__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_clear_fast_connect__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_get_config__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_deauth_sta__field_descriptors[1] = { { - "iface", + "aid", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiGetConfig, iface), + offsetof(RpcReqWifiDeauthSta, aid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_get_config__field_indices_by_name[] = { - 0, /* field[0] = iface */ +static const unsigned rpc__req__wifi_deauth_sta__field_indices_by_name[] = { + 0, /* field[0] = aid */ }; -static const ProtobufCIntRange rpc__req__wifi_get_config__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_deauth_sta__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_get_config__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_deauth_sta__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetConfig", - "RpcReqWifiGetConfig", - "RpcReqWifiGetConfig", + "Rpc_Req_WifiDeauthSta", + "RpcReqWifiDeauthSta", + "RpcReqWifiDeauthSta", "", - sizeof(RpcReqWifiGetConfig), + sizeof(RpcReqWifiDeauthSta), 1, - rpc__req__wifi_get_config__field_descriptors, - rpc__req__wifi_get_config__field_indices_by_name, - 1, rpc__req__wifi_get_config__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_config__init, + rpc__req__wifi_deauth_sta__field_descriptors, + rpc__req__wifi_deauth_sta__field_indices_by_name, + 1, rpc__req__wifi_deauth_sta__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_deauth_sta__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_config__field_descriptors[3] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_deauth_sta__field_descriptors[2] = { { "resp", @@ -12663,81 +14789,68 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_config__field_descript PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetConfig, resp), + offsetof(RpcRespWifiDeauthSta, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "iface", + "aid", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetConfig, iface), - NULL, + offsetof(RpcRespWifiDeauthSta, aid), NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "cfg", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetConfig, cfg), - &wifi_config__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_config__field_indices_by_name[] = { - 2, /* field[2] = cfg */ - 1, /* field[1] = iface */ +static const unsigned rpc__resp__wifi_deauth_sta__field_indices_by_name[] = { + 1, /* field[1] = aid */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_config__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_deauth_sta__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 3 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_config__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_deauth_sta__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetConfig", - "RpcRespWifiGetConfig", - "RpcRespWifiGetConfig", + "Rpc_Resp_WifiDeauthSta", + "RpcRespWifiDeauthSta", + "RpcRespWifiDeauthSta", "", - sizeof(RpcRespWifiGetConfig), - 3, - rpc__resp__wifi_get_config__field_descriptors, - rpc__resp__wifi_get_config__field_indices_by_name, - 1, rpc__resp__wifi_get_config__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_config__init, + sizeof(RpcRespWifiDeauthSta), + 2, + rpc__resp__wifi_deauth_sta__field_descriptors, + rpc__resp__wifi_deauth_sta__field_indices_by_name, + 1, rpc__resp__wifi_deauth_sta__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_deauth_sta__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_connect__field_descriptors NULL -#define rpc__req__wifi_connect__field_indices_by_name NULL -#define rpc__req__wifi_connect__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_connect__descriptor = +#define rpc__req__wifi_sta_get_ap_info__field_descriptors NULL +#define rpc__req__wifi_sta_get_ap_info__field_indices_by_name NULL +#define rpc__req__wifi_sta_get_ap_info__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_ap_info__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiConnect", - "RpcReqWifiConnect", - "RpcReqWifiConnect", + "Rpc_Req_WifiStaGetApInfo", + "RpcReqWifiStaGetApInfo", + "RpcReqWifiStaGetApInfo", "", - sizeof(RpcReqWifiConnect), + sizeof(RpcReqWifiStaGetApInfo), 0, - rpc__req__wifi_connect__field_descriptors, - rpc__req__wifi_connect__field_indices_by_name, - 0, rpc__req__wifi_connect__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_connect__init, + rpc__req__wifi_sta_get_ap_info__field_descriptors, + rpc__req__wifi_sta_get_ap_info__field_indices_by_name, + 0, rpc__req__wifi_sta_get_ap_info__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_get_ap_info__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_connect__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_ap_info__field_descriptors[2] = { { "resp", @@ -12745,55 +14858,101 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_connect__field_descriptors PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiConnect, resp), + offsetof(RpcRespWifiStaGetApInfo, resp), + NULL, NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ap_record", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiStaGetApInfo, ap_record), + &wifi_ap_record__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_connect__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_sta_get_ap_info__field_indices_by_name[] = { + 1, /* field[1] = ap_record */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_connect__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_get_ap_info__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_connect__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_ap_info__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiConnect", - "RpcRespWifiConnect", - "RpcRespWifiConnect", + "Rpc_Resp_WifiStaGetApInfo", + "RpcRespWifiStaGetApInfo", + "RpcRespWifiStaGetApInfo", "", - sizeof(RpcRespWifiConnect), - 1, - rpc__resp__wifi_connect__field_descriptors, - rpc__resp__wifi_connect__field_indices_by_name, - 1, rpc__resp__wifi_connect__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_connect__init, + sizeof(RpcRespWifiStaGetApInfo), + 2, + rpc__resp__wifi_sta_get_ap_info__field_descriptors, + rpc__resp__wifi_sta_get_ap_info__field_indices_by_name, + 1, rpc__resp__wifi_sta_get_ap_info__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_get_ap_info__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_disconnect__field_descriptors NULL -#define rpc__req__wifi_disconnect__field_indices_by_name NULL -#define rpc__req__wifi_disconnect__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_disconnect__descriptor = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_protocol__field_descriptors[2] = +{ + { + "ifx", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcReqWifiSetProtocol, ifx), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "protocol_bitmap", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcReqWifiSetProtocol, protocol_bitmap), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__req__wifi_set_protocol__field_indices_by_name[] = { + 0, /* field[0] = ifx */ + 1, /* field[1] = protocol_bitmap */ +}; +static const ProtobufCIntRange rpc__req__wifi_set_protocol__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor rpc__req__wifi_set_protocol__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiDisconnect", - "RpcReqWifiDisconnect", - "RpcReqWifiDisconnect", + "Rpc_Req_WifiSetProtocol", + "RpcReqWifiSetProtocol", + "RpcReqWifiSetProtocol", "", - sizeof(RpcReqWifiDisconnect), - 0, - rpc__req__wifi_disconnect__field_descriptors, - rpc__req__wifi_disconnect__field_indices_by_name, - 0, rpc__req__wifi_disconnect__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_disconnect__init, + sizeof(RpcReqWifiSetProtocol), + 2, + rpc__req__wifi_set_protocol__field_descriptors, + rpc__req__wifi_set_protocol__field_indices_by_name, + 1, rpc__req__wifi_set_protocol__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_protocol__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_disconnect__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_protocol__field_descriptors[1] = { { "resp", @@ -12801,111 +14960,75 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_disconnect__field_descript PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiDisconnect, resp), + offsetof(RpcRespWifiSetProtocol, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_disconnect__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_set_protocol__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_disconnect__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_protocol__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_disconnect__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_protocol__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiDisconnect", - "RpcRespWifiDisconnect", - "RpcRespWifiDisconnect", + "Rpc_Resp_WifiSetProtocol", + "RpcRespWifiSetProtocol", + "RpcRespWifiSetProtocol", "", - sizeof(RpcRespWifiDisconnect), + sizeof(RpcRespWifiSetProtocol), 1, - rpc__resp__wifi_disconnect__field_descriptors, - rpc__resp__wifi_disconnect__field_indices_by_name, - 1, rpc__resp__wifi_disconnect__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_disconnect__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_start__field_descriptors NULL -#define rpc__req__wifi_start__field_indices_by_name NULL -#define rpc__req__wifi_start__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_start__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStart", - "RpcReqWifiStart", - "RpcReqWifiStart", - "", - sizeof(RpcReqWifiStart), - 0, - rpc__req__wifi_start__field_descriptors, - rpc__req__wifi_start__field_indices_by_name, - 0, rpc__req__wifi_start__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_start__init, + rpc__resp__wifi_set_protocol__field_descriptors, + rpc__resp__wifi_set_protocol__field_indices_by_name, + 1, rpc__resp__wifi_set_protocol__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_protocol__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_start__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_get_protocol__field_descriptors[1] = { { - "resp", + "ifx", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStart, resp), + offsetof(RpcReqWifiGetProtocol, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_start__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_get_protocol__field_indices_by_name[] = { + 0, /* field[0] = ifx */ }; -static const ProtobufCIntRange rpc__resp__wifi_start__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_get_protocol__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_start__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_get_protocol__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStart", - "RpcRespWifiStart", - "RpcRespWifiStart", + "Rpc_Req_WifiGetProtocol", + "RpcReqWifiGetProtocol", + "RpcReqWifiGetProtocol", "", - sizeof(RpcRespWifiStart), + sizeof(RpcReqWifiGetProtocol), 1, - rpc__resp__wifi_start__field_descriptors, - rpc__resp__wifi_start__field_indices_by_name, - 1, rpc__resp__wifi_start__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_start__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_stop__field_descriptors NULL -#define rpc__req__wifi_stop__field_indices_by_name NULL -#define rpc__req__wifi_stop__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_stop__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStop", - "RpcReqWifiStop", - "RpcReqWifiStop", - "", - sizeof(RpcReqWifiStop), - 0, - rpc__req__wifi_stop__field_descriptors, - rpc__req__wifi_stop__field_indices_by_name, - 0, rpc__req__wifi_stop__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_stop__init, + rpc__req__wifi_get_protocol__field_descriptors, + rpc__req__wifi_get_protocol__field_indices_by_name, + 1, rpc__req__wifi_get_protocol__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_protocol__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_stop__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_protocol__field_descriptors[2] = { { "resp", @@ -12913,157 +15036,177 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_stop__field_descriptors[1] PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStop, resp), + offsetof(RpcRespWifiGetProtocol, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "protocol_bitmap", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiGetProtocol, protocol_bitmap), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_stop__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_get_protocol__field_indices_by_name[] = { + 1, /* field[1] = protocol_bitmap */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_stop__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_protocol__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_stop__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_protocol__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStop", - "RpcRespWifiStop", - "RpcRespWifiStop", + "Rpc_Resp_WifiGetProtocol", + "RpcRespWifiGetProtocol", + "RpcRespWifiGetProtocol", "", - sizeof(RpcRespWifiStop), - 1, - rpc__resp__wifi_stop__field_descriptors, - rpc__resp__wifi_stop__field_indices_by_name, - 1, rpc__resp__wifi_stop__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_stop__init, + sizeof(RpcRespWifiGetProtocol), + 2, + rpc__resp__wifi_get_protocol__field_descriptors, + rpc__resp__wifi_get_protocol__field_indices_by_name, + 1, rpc__resp__wifi_get_protocol__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_protocol__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_scan_start__field_descriptors[3] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_bandwidth__field_descriptors[2] = { { - "config", + "ifx", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiScanStart, config), - &wifi_scan_config__descriptor, + offsetof(RpcReqWifiSetBandwidth, ifx), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "block", + "bw", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiScanStart, block), + offsetof(RpcReqWifiSetBandwidth, bw), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__req__wifi_set_bandwidth__field_indices_by_name[] = { + 1, /* field[1] = bw */ + 0, /* field[0] = ifx */ +}; +static const ProtobufCIntRange rpc__req__wifi_set_bandwidth__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor rpc__req__wifi_set_bandwidth__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiSetBandwidth", + "RpcReqWifiSetBandwidth", + "RpcReqWifiSetBandwidth", + "", + sizeof(RpcReqWifiSetBandwidth), + 2, + rpc__req__wifi_set_bandwidth__field_descriptors, + rpc__req__wifi_set_bandwidth__field_indices_by_name, + 1, rpc__req__wifi_set_bandwidth__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_bandwidth__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_bandwidth__field_descriptors[1] = +{ { - "config_set", - 3, + "resp", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiScanStart, config_set), + offsetof(RpcRespWifiSetBandwidth, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_scan_start__field_indices_by_name[] = { - 1, /* field[1] = block */ - 0, /* field[0] = config */ - 2, /* field[2] = config_set */ +static const unsigned rpc__resp__wifi_set_bandwidth__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_scan_start__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_bandwidth__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 3 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_scan_start__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_bandwidth__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiScanStart", - "RpcReqWifiScanStart", - "RpcReqWifiScanStart", + "Rpc_Resp_WifiSetBandwidth", + "RpcRespWifiSetBandwidth", + "RpcRespWifiSetBandwidth", "", - sizeof(RpcReqWifiScanStart), - 3, - rpc__req__wifi_scan_start__field_descriptors, - rpc__req__wifi_scan_start__field_indices_by_name, - 1, rpc__req__wifi_scan_start__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_scan_start__init, + sizeof(RpcRespWifiSetBandwidth), + 1, + rpc__resp__wifi_set_bandwidth__field_descriptors, + rpc__resp__wifi_set_bandwidth__field_indices_by_name, + 1, rpc__resp__wifi_set_bandwidth__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_bandwidth__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_start__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_get_bandwidth__field_descriptors[1] = { { - "resp", + "ifx", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanStart, resp), + offsetof(RpcReqWifiGetBandwidth, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_scan_start__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_get_bandwidth__field_indices_by_name[] = { + 0, /* field[0] = ifx */ }; -static const ProtobufCIntRange rpc__resp__wifi_scan_start__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_get_bandwidth__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_scan_start__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_get_bandwidth__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiScanStart", - "RpcRespWifiScanStart", - "RpcRespWifiScanStart", + "Rpc_Req_WifiGetBandwidth", + "RpcReqWifiGetBandwidth", + "RpcReqWifiGetBandwidth", "", - sizeof(RpcRespWifiScanStart), + sizeof(RpcReqWifiGetBandwidth), 1, - rpc__resp__wifi_scan_start__field_descriptors, - rpc__resp__wifi_scan_start__field_indices_by_name, - 1, rpc__resp__wifi_scan_start__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_scan_start__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_scan_stop__field_descriptors NULL -#define rpc__req__wifi_scan_stop__field_indices_by_name NULL -#define rpc__req__wifi_scan_stop__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_scan_stop__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiScanStop", - "RpcReqWifiScanStop", - "RpcReqWifiScanStop", - "", - sizeof(RpcReqWifiScanStop), - 0, - rpc__req__wifi_scan_stop__field_descriptors, - rpc__req__wifi_scan_stop__field_indices_by_name, - 0, rpc__req__wifi_scan_stop__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_scan_stop__init, + rpc__req__wifi_get_bandwidth__field_descriptors, + rpc__req__wifi_get_bandwidth__field_indices_by_name, + 1, rpc__req__wifi_get_bandwidth__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_bandwidth__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_stop__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_bandwidth__field_descriptors[2] = { { "resp", @@ -13071,144 +15214,157 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_stop__field_descripto PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanStop, resp), + offsetof(RpcRespWifiGetBandwidth, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "bw", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiGetBandwidth, bw), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_scan_stop__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_get_bandwidth__field_indices_by_name[] = { + 1, /* field[1] = bw */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_scan_stop__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_bandwidth__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_scan_stop__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiScanStop", - "RpcRespWifiScanStop", - "RpcRespWifiScanStop", - "", - sizeof(RpcRespWifiScanStop), - 1, - rpc__resp__wifi_scan_stop__field_descriptors, - rpc__resp__wifi_scan_stop__field_indices_by_name, - 1, rpc__resp__wifi_scan_stop__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_scan_stop__init, - NULL,NULL,NULL /* reserved[123] */ + { 0, 2 } }; -#define rpc__req__wifi_scan_get_ap_num__field_descriptors NULL -#define rpc__req__wifi_scan_get_ap_num__field_indices_by_name NULL -#define rpc__req__wifi_scan_get_ap_num__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_scan_get_ap_num__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_bandwidth__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiScanGetApNum", - "RpcReqWifiScanGetApNum", - "RpcReqWifiScanGetApNum", + "Rpc_Resp_WifiGetBandwidth", + "RpcRespWifiGetBandwidth", + "RpcRespWifiGetBandwidth", "", - sizeof(RpcReqWifiScanGetApNum), - 0, - rpc__req__wifi_scan_get_ap_num__field_descriptors, - rpc__req__wifi_scan_get_ap_num__field_indices_by_name, - 0, rpc__req__wifi_scan_get_ap_num__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_scan_get_ap_num__init, + sizeof(RpcRespWifiGetBandwidth), + 2, + rpc__resp__wifi_get_bandwidth__field_descriptors, + rpc__resp__wifi_get_bandwidth__field_indices_by_name, + 1, rpc__resp__wifi_get_bandwidth__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_bandwidth__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_num__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_channel__field_descriptors[2] = { { - "resp", + "primary", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanGetApNum, resp), + offsetof(RpcReqWifiSetChannel, primary), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "number", + "second", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanGetApNum, number), + offsetof(RpcReqWifiSetChannel, second), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_scan_get_ap_num__field_indices_by_name[] = { - 1, /* field[1] = number */ - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_set_channel__field_indices_by_name[] = { + 0, /* field[0] = primary */ + 1, /* field[1] = second */ }; -static const ProtobufCIntRange rpc__resp__wifi_scan_get_ap_num__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_channel__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_scan_get_ap_num__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_channel__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiScanGetApNum", - "RpcRespWifiScanGetApNum", - "RpcRespWifiScanGetApNum", + "Rpc_Req_WifiSetChannel", + "RpcReqWifiSetChannel", + "RpcReqWifiSetChannel", "", - sizeof(RpcRespWifiScanGetApNum), + sizeof(RpcReqWifiSetChannel), 2, - rpc__resp__wifi_scan_get_ap_num__field_descriptors, - rpc__resp__wifi_scan_get_ap_num__field_indices_by_name, - 1, rpc__resp__wifi_scan_get_ap_num__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_scan_get_ap_num__init, + rpc__req__wifi_set_channel__field_descriptors, + rpc__req__wifi_set_channel__field_indices_by_name, + 1, rpc__req__wifi_set_channel__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_channel__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_scan_get_ap_records__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_channel__field_descriptors[1] = { { - "number", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiScanGetApRecords, number), + offsetof(RpcRespWifiSetChannel, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_scan_get_ap_records__field_indices_by_name[] = { - 0, /* field[0] = number */ +static const unsigned rpc__resp__wifi_set_channel__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_scan_get_ap_records__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_channel__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_scan_get_ap_records__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_channel__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiScanGetApRecords", - "RpcReqWifiScanGetApRecords", - "RpcReqWifiScanGetApRecords", + "Rpc_Resp_WifiSetChannel", + "RpcRespWifiSetChannel", + "RpcRespWifiSetChannel", "", - sizeof(RpcReqWifiScanGetApRecords), + sizeof(RpcRespWifiSetChannel), 1, - rpc__req__wifi_scan_get_ap_records__field_descriptors, - rpc__req__wifi_scan_get_ap_records__field_indices_by_name, - 1, rpc__req__wifi_scan_get_ap_records__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_scan_get_ap_records__init, + rpc__resp__wifi_set_channel__field_descriptors, + rpc__resp__wifi_set_channel__field_indices_by_name, + 1, rpc__resp__wifi_set_channel__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_channel__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_records__field_descriptors[3] = +#define rpc__req__wifi_get_channel__field_descriptors NULL +#define rpc__req__wifi_get_channel__field_indices_by_name NULL +#define rpc__req__wifi_get_channel__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_get_channel__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiGetChannel", + "RpcReqWifiGetChannel", + "RpcReqWifiGetChannel", + "", + sizeof(RpcReqWifiGetChannel), + 0, + rpc__req__wifi_get_channel__field_descriptors, + rpc__req__wifi_get_channel__field_indices_by_name, + 0, rpc__req__wifi_get_channel__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_channel__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_channel__field_descriptors[3] = { { "resp", @@ -13216,206 +15372,190 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_records__field PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanGetApRecords, resp), + offsetof(RpcRespWifiGetChannel, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "number", + "primary", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanGetApRecords, number), + offsetof(RpcRespWifiGetChannel, primary), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ap_records", + "second", 3, - PROTOBUF_C_LABEL_REPEATED, - PROTOBUF_C_TYPE_MESSAGE, - offsetof(RpcRespWifiScanGetApRecords, n_ap_records), - offsetof(RpcRespWifiScanGetApRecords, ap_records), - &wifi_ap_record__descriptor, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiGetChannel, second), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_scan_get_ap_records__field_indices_by_name[] = { - 2, /* field[2] = ap_records */ - 1, /* field[1] = number */ +static const unsigned rpc__resp__wifi_get_channel__field_indices_by_name[] = { + 1, /* field[1] = primary */ 0, /* field[0] = resp */ + 2, /* field[2] = second */ }; -static const ProtobufCIntRange rpc__resp__wifi_scan_get_ap_records__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_channel__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_scan_get_ap_records__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_channel__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiScanGetApRecords", - "RpcRespWifiScanGetApRecords", - "RpcRespWifiScanGetApRecords", + "Rpc_Resp_WifiGetChannel", + "RpcRespWifiGetChannel", + "RpcRespWifiGetChannel", "", - sizeof(RpcRespWifiScanGetApRecords), + sizeof(RpcRespWifiGetChannel), 3, - rpc__resp__wifi_scan_get_ap_records__field_descriptors, - rpc__resp__wifi_scan_get_ap_records__field_indices_by_name, - 1, rpc__resp__wifi_scan_get_ap_records__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_scan_get_ap_records__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_scan_get_ap_record__field_descriptors NULL -#define rpc__req__wifi_scan_get_ap_record__field_indices_by_name NULL -#define rpc__req__wifi_scan_get_ap_record__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_scan_get_ap_record__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiScanGetApRecord", - "RpcReqWifiScanGetApRecord", - "RpcReqWifiScanGetApRecord", - "", - sizeof(RpcReqWifiScanGetApRecord), - 0, - rpc__req__wifi_scan_get_ap_record__field_descriptors, - rpc__req__wifi_scan_get_ap_record__field_indices_by_name, - 0, rpc__req__wifi_scan_get_ap_record__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_scan_get_ap_record__init, + rpc__resp__wifi_get_channel__field_descriptors, + rpc__resp__wifi_get_channel__field_indices_by_name, + 1, rpc__resp__wifi_get_channel__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_channel__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_record__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_storage__field_descriptors[1] = { { - "resp", + "storage", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanGetApRecord, resp), + offsetof(RpcReqWifiSetStorage, storage), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__req__wifi_set_storage__field_indices_by_name[] = { + 0, /* field[0] = storage */ +}; +static const ProtobufCIntRange rpc__req__wifi_set_storage__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__req__wifi_set_storage__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiSetStorage", + "RpcReqWifiSetStorage", + "RpcReqWifiSetStorage", + "", + sizeof(RpcReqWifiSetStorage), + 1, + rpc__req__wifi_set_storage__field_descriptors, + rpc__req__wifi_set_storage__field_indices_by_name, + 1, rpc__req__wifi_set_storage__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_storage__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_storage__field_descriptors[1] = +{ { - "ap_record", - 2, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanGetApRecord, ap_record), - &wifi_ap_record__descriptor, + offsetof(RpcRespWifiSetStorage, resp), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_scan_get_ap_record__field_indices_by_name[] = { - 1, /* field[1] = ap_record */ +static const unsigned rpc__resp__wifi_set_storage__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_scan_get_ap_record__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_storage__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_scan_get_ap_record__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiScanGetApRecord", - "RpcRespWifiScanGetApRecord", - "RpcRespWifiScanGetApRecord", - "", - sizeof(RpcRespWifiScanGetApRecord), - 2, - rpc__resp__wifi_scan_get_ap_record__field_descriptors, - rpc__resp__wifi_scan_get_ap_record__field_indices_by_name, - 1, rpc__resp__wifi_scan_get_ap_record__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_scan_get_ap_record__init, - NULL,NULL,NULL /* reserved[123] */ + { 0, 1 } }; -#define rpc__req__wifi_clear_ap_list__field_descriptors NULL -#define rpc__req__wifi_clear_ap_list__field_indices_by_name NULL -#define rpc__req__wifi_clear_ap_list__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_clear_ap_list__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_storage__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiClearApList", - "RpcReqWifiClearApList", - "RpcReqWifiClearApList", + "Rpc_Resp_WifiSetStorage", + "RpcRespWifiSetStorage", + "RpcRespWifiSetStorage", "", - sizeof(RpcReqWifiClearApList), - 0, - rpc__req__wifi_clear_ap_list__field_descriptors, - rpc__req__wifi_clear_ap_list__field_indices_by_name, - 0, rpc__req__wifi_clear_ap_list__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_clear_ap_list__init, + sizeof(RpcRespWifiSetStorage), + 1, + rpc__resp__wifi_set_storage__field_descriptors, + rpc__resp__wifi_set_storage__field_indices_by_name, + 1, rpc__resp__wifi_set_storage__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_storage__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_clear_ap_list__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_country_code__field_descriptors[2] = { { - "resp", + "country", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcRespWifiClearApList, resp), + offsetof(RpcReqWifiSetCountryCode, country), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ieee80211d_enabled", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(RpcReqWifiSetCountryCode, ieee80211d_enabled), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_clear_ap_list__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_set_country_code__field_indices_by_name[] = { + 0, /* field[0] = country */ + 1, /* field[1] = ieee80211d_enabled */ }; -static const ProtobufCIntRange rpc__resp__wifi_clear_ap_list__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_country_code__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_clear_ap_list__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiClearApList", - "RpcRespWifiClearApList", - "RpcRespWifiClearApList", - "", - sizeof(RpcRespWifiClearApList), - 1, - rpc__resp__wifi_clear_ap_list__field_descriptors, - rpc__resp__wifi_clear_ap_list__field_indices_by_name, - 1, rpc__resp__wifi_clear_ap_list__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_clear_ap_list__init, - NULL,NULL,NULL /* reserved[123] */ + { 0, 2 } }; -#define rpc__req__wifi_restore__field_descriptors NULL -#define rpc__req__wifi_restore__field_indices_by_name NULL -#define rpc__req__wifi_restore__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_restore__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_country_code__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiRestore", - "RpcReqWifiRestore", - "RpcReqWifiRestore", + "Rpc_Req_WifiSetCountryCode", + "RpcReqWifiSetCountryCode", + "RpcReqWifiSetCountryCode", "", - sizeof(RpcReqWifiRestore), - 0, - rpc__req__wifi_restore__field_descriptors, - rpc__req__wifi_restore__field_indices_by_name, - 0, rpc__req__wifi_restore__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_restore__init, + sizeof(RpcReqWifiSetCountryCode), + 2, + rpc__req__wifi_set_country_code__field_descriptors, + rpc__req__wifi_set_country_code__field_indices_by_name, + 1, rpc__req__wifi_set_country_code__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_country_code__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_restore__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_country_code__field_descriptors[1] = { { "resp", @@ -13423,55 +15563,55 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_restore__field_descriptors PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiRestore, resp), + offsetof(RpcRespWifiSetCountryCode, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_restore__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_set_country_code__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_restore__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_country_code__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_restore__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_country_code__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiRestore", - "RpcRespWifiRestore", - "RpcRespWifiRestore", + "Rpc_Resp_WifiSetCountryCode", + "RpcRespWifiSetCountryCode", + "RpcRespWifiSetCountryCode", "", - sizeof(RpcRespWifiRestore), + sizeof(RpcRespWifiSetCountryCode), 1, - rpc__resp__wifi_restore__field_descriptors, - rpc__resp__wifi_restore__field_indices_by_name, - 1, rpc__resp__wifi_restore__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_restore__init, + rpc__resp__wifi_set_country_code__field_descriptors, + rpc__resp__wifi_set_country_code__field_indices_by_name, + 1, rpc__resp__wifi_set_country_code__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_country_code__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_clear_fast_connect__field_descriptors NULL -#define rpc__req__wifi_clear_fast_connect__field_indices_by_name NULL -#define rpc__req__wifi_clear_fast_connect__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_clear_fast_connect__descriptor = +#define rpc__req__wifi_get_country_code__field_descriptors NULL +#define rpc__req__wifi_get_country_code__field_indices_by_name NULL +#define rpc__req__wifi_get_country_code__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_get_country_code__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiClearFastConnect", - "RpcReqWifiClearFastConnect", - "RpcReqWifiClearFastConnect", + "Rpc_Req_WifiGetCountryCode", + "RpcReqWifiGetCountryCode", + "RpcReqWifiGetCountryCode", "", - sizeof(RpcReqWifiClearFastConnect), + sizeof(RpcReqWifiGetCountryCode), 0, - rpc__req__wifi_clear_fast_connect__field_descriptors, - rpc__req__wifi_clear_fast_connect__field_indices_by_name, - 0, rpc__req__wifi_clear_fast_connect__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_clear_fast_connect__init, + rpc__req__wifi_get_country_code__field_descriptors, + rpc__req__wifi_get_country_code__field_indices_by_name, + 0, rpc__req__wifi_get_country_code__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_country_code__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_clear_fast_connect__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_country_code__field_descriptors[2] = { { "resp", @@ -13479,75 +15619,88 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_clear_fast_connect__field_ PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiClearFastConnect, resp), + offsetof(RpcRespWifiGetCountryCode, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "country", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiGetCountryCode, country), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_clear_fast_connect__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_get_country_code__field_indices_by_name[] = { + 1, /* field[1] = country */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_clear_fast_connect__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_country_code__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_clear_fast_connect__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_country_code__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiClearFastConnect", - "RpcRespWifiClearFastConnect", - "RpcRespWifiClearFastConnect", + "Rpc_Resp_WifiGetCountryCode", + "RpcRespWifiGetCountryCode", + "RpcRespWifiGetCountryCode", "", - sizeof(RpcRespWifiClearFastConnect), - 1, - rpc__resp__wifi_clear_fast_connect__field_descriptors, - rpc__resp__wifi_clear_fast_connect__field_indices_by_name, - 1, rpc__resp__wifi_clear_fast_connect__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_clear_fast_connect__init, + sizeof(RpcRespWifiGetCountryCode), + 2, + rpc__resp__wifi_get_country_code__field_descriptors, + rpc__resp__wifi_get_country_code__field_indices_by_name, + 1, rpc__resp__wifi_get_country_code__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_country_code__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_deauth_sta__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_country__field_descriptors[1] = { { - "aid", + "country", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcReqWifiDeauthSta, aid), - NULL, + offsetof(RpcReqWifiSetCountry, country), + &wifi_country__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_deauth_sta__field_indices_by_name[] = { - 0, /* field[0] = aid */ +static const unsigned rpc__req__wifi_set_country__field_indices_by_name[] = { + 0, /* field[0] = country */ }; -static const ProtobufCIntRange rpc__req__wifi_deauth_sta__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_country__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_deauth_sta__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_country__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiDeauthSta", - "RpcReqWifiDeauthSta", - "RpcReqWifiDeauthSta", + "Rpc_Req_WifiSetCountry", + "RpcReqWifiSetCountry", + "RpcReqWifiSetCountry", "", - sizeof(RpcReqWifiDeauthSta), + sizeof(RpcReqWifiSetCountry), 1, - rpc__req__wifi_deauth_sta__field_descriptors, - rpc__req__wifi_deauth_sta__field_indices_by_name, - 1, rpc__req__wifi_deauth_sta__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_deauth_sta__init, + rpc__req__wifi_set_country__field_descriptors, + rpc__req__wifi_set_country__field_indices_by_name, + 1, rpc__req__wifi_set_country__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_country__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_deauth_sta__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_country__field_descriptors[1] = { { "resp", @@ -13555,68 +15708,55 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_deauth_sta__field_descript PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiDeauthSta, resp), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "aid", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiDeauthSta, aid), + offsetof(RpcRespWifiSetCountry, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_deauth_sta__field_indices_by_name[] = { - 1, /* field[1] = aid */ +static const unsigned rpc__resp__wifi_set_country__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_deauth_sta__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_country__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_deauth_sta__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_country__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiDeauthSta", - "RpcRespWifiDeauthSta", - "RpcRespWifiDeauthSta", + "Rpc_Resp_WifiSetCountry", + "RpcRespWifiSetCountry", + "RpcRespWifiSetCountry", "", - sizeof(RpcRespWifiDeauthSta), - 2, - rpc__resp__wifi_deauth_sta__field_descriptors, - rpc__resp__wifi_deauth_sta__field_indices_by_name, - 1, rpc__resp__wifi_deauth_sta__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_deauth_sta__init, + sizeof(RpcRespWifiSetCountry), + 1, + rpc__resp__wifi_set_country__field_descriptors, + rpc__resp__wifi_set_country__field_indices_by_name, + 1, rpc__resp__wifi_set_country__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_country__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_sta_get_ap_info__field_descriptors NULL -#define rpc__req__wifi_sta_get_ap_info__field_indices_by_name NULL -#define rpc__req__wifi_sta_get_ap_info__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_ap_info__descriptor = +#define rpc__req__wifi_get_country__field_descriptors NULL +#define rpc__req__wifi_get_country__field_indices_by_name NULL +#define rpc__req__wifi_get_country__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_get_country__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaGetApInfo", - "RpcReqWifiStaGetApInfo", - "RpcReqWifiStaGetApInfo", + "Rpc_Req_WifiGetCountry", + "RpcReqWifiGetCountry", + "RpcReqWifiGetCountry", "", - sizeof(RpcReqWifiStaGetApInfo), + sizeof(RpcReqWifiGetCountry), 0, - rpc__req__wifi_sta_get_ap_info__field_descriptors, - rpc__req__wifi_sta_get_ap_info__field_indices_by_name, - 0, rpc__req__wifi_sta_get_ap_info__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_get_ap_info__init, + rpc__req__wifi_get_country__field_descriptors, + rpc__req__wifi_get_country__field_indices_by_name, + 0, rpc__req__wifi_get_country__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_country__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_ap_info__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_country__field_descriptors[2] = { { "resp", @@ -13624,177 +15764,226 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_ap_info__field_des PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetApInfo, resp), + offsetof(RpcRespWifiGetCountry, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ap_record", + "country", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetApInfo, ap_record), - &wifi_ap_record__descriptor, + offsetof(RpcRespWifiGetCountry, country), + &wifi_country__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_get_ap_info__field_indices_by_name[] = { - 1, /* field[1] = ap_record */ +static const unsigned rpc__resp__wifi_get_country__field_indices_by_name[] = { + 1, /* field[1] = country */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_get_ap_info__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_country__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_ap_info__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_country__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaGetApInfo", - "RpcRespWifiStaGetApInfo", - "RpcRespWifiStaGetApInfo", + "Rpc_Resp_WifiGetCountry", + "RpcRespWifiGetCountry", + "RpcRespWifiGetCountry", "", - sizeof(RpcRespWifiStaGetApInfo), + sizeof(RpcRespWifiGetCountry), 2, - rpc__resp__wifi_sta_get_ap_info__field_descriptors, - rpc__resp__wifi_sta_get_ap_info__field_indices_by_name, - 1, rpc__resp__wifi_sta_get_ap_info__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_get_ap_info__init, + rpc__resp__wifi_get_country__field_descriptors, + rpc__resp__wifi_get_country__field_indices_by_name, + 1, rpc__resp__wifi_get_country__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_country__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_protocol__field_descriptors[2] = +#define rpc__req__wifi_ap_get_sta_list__field_descriptors NULL +#define rpc__req__wifi_ap_get_sta_list__field_indices_by_name NULL +#define rpc__req__wifi_ap_get_sta_list__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_ap_get_sta_list__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiApGetStaList", + "RpcReqWifiApGetStaList", + "RpcReqWifiApGetStaList", + "", + sizeof(RpcReqWifiApGetStaList), + 0, + rpc__req__wifi_ap_get_sta_list__field_descriptors, + rpc__req__wifi_ap_get_sta_list__field_indices_by_name, + 0, rpc__req__wifi_ap_get_sta_list__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_ap_get_sta_list__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_ap_get_sta_list__field_descriptors[2] = { { - "ifx", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetProtocol, ifx), + offsetof(RpcRespWifiApGetStaList, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "protocol_bitmap", + "sta_list", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetProtocol, protocol_bitmap), - NULL, + offsetof(RpcRespWifiApGetStaList, sta_list), + &wifi_sta_list__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_protocol__field_indices_by_name[] = { - 0, /* field[0] = ifx */ - 1, /* field[1] = protocol_bitmap */ +static const unsigned rpc__resp__wifi_ap_get_sta_list__field_indices_by_name[] = { + 0, /* field[0] = resp */ + 1, /* field[1] = sta_list */ }; -static const ProtobufCIntRange rpc__req__wifi_set_protocol__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_ap_get_sta_list__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_protocol__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_ap_get_sta_list__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetProtocol", - "RpcReqWifiSetProtocol", - "RpcReqWifiSetProtocol", + "Rpc_Resp_WifiApGetStaList", + "RpcRespWifiApGetStaList", + "RpcRespWifiApGetStaList", "", - sizeof(RpcReqWifiSetProtocol), + sizeof(RpcRespWifiApGetStaList), 2, - rpc__req__wifi_set_protocol__field_descriptors, - rpc__req__wifi_set_protocol__field_indices_by_name, - 1, rpc__req__wifi_set_protocol__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_protocol__init, + rpc__resp__wifi_ap_get_sta_list__field_descriptors, + rpc__resp__wifi_ap_get_sta_list__field_indices_by_name, + 1, rpc__resp__wifi_ap_get_sta_list__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_ap_get_sta_list__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_protocol__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_ap_get_sta_aid__field_descriptors[1] = { { - "resp", + "mac", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetProtocol, resp), + offsetof(RpcReqWifiApGetStaAid, mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_protocol__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_ap_get_sta_aid__field_indices_by_name[] = { + 0, /* field[0] = mac */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_protocol__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_ap_get_sta_aid__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_protocol__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_ap_get_sta_aid__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetProtocol", - "RpcRespWifiSetProtocol", - "RpcRespWifiSetProtocol", + "Rpc_Req_WifiApGetStaAid", + "RpcReqWifiApGetStaAid", + "RpcReqWifiApGetStaAid", "", - sizeof(RpcRespWifiSetProtocol), + sizeof(RpcReqWifiApGetStaAid), 1, - rpc__resp__wifi_set_protocol__field_descriptors, - rpc__resp__wifi_set_protocol__field_indices_by_name, - 1, rpc__resp__wifi_set_protocol__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_protocol__init, + rpc__req__wifi_ap_get_sta_aid__field_descriptors, + rpc__req__wifi_ap_get_sta_aid__field_indices_by_name, + 1, rpc__req__wifi_ap_get_sta_aid__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_ap_get_sta_aid__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_get_protocol__field_descriptors[1] = +#define rpc__req__wifi_sta_get_negotiated_phymode__field_descriptors NULL +#define rpc__req__wifi_sta_get_negotiated_phymode__field_indices_by_name NULL +#define rpc__req__wifi_sta_get_negotiated_phymode__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_negotiated_phymode__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStaGetNegotiatedPhymode", + "RpcReqWifiStaGetNegotiatedPhymode", + "RpcReqWifiStaGetNegotiatedPhymode", + "", + sizeof(RpcReqWifiStaGetNegotiatedPhymode), + 0, + rpc__req__wifi_sta_get_negotiated_phymode__field_descriptors, + rpc__req__wifi_sta_get_negotiated_phymode__field_indices_by_name, + 0, rpc__req__wifi_sta_get_negotiated_phymode__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_get_negotiated_phymode__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_negotiated_phymode__field_descriptors[2] = { { - "ifx", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiGetProtocol, ifx), + offsetof(RpcRespWifiStaGetNegotiatedPhymode, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "phymode", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiStaGetNegotiatedPhymode, phymode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_get_protocol__field_indices_by_name[] = { - 0, /* field[0] = ifx */ +static const unsigned rpc__resp__wifi_sta_get_negotiated_phymode__field_indices_by_name[] = { + 1, /* field[1] = phymode */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_get_protocol__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_get_negotiated_phymode__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_get_protocol__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_negotiated_phymode__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetProtocol", - "RpcReqWifiGetProtocol", - "RpcReqWifiGetProtocol", + "Rpc_Resp_WifiStaGetNegotiatedPhymode", + "RpcRespWifiStaGetNegotiatedPhymode", + "RpcRespWifiStaGetNegotiatedPhymode", "", - sizeof(RpcReqWifiGetProtocol), - 1, - rpc__req__wifi_get_protocol__field_descriptors, - rpc__req__wifi_get_protocol__field_indices_by_name, - 1, rpc__req__wifi_get_protocol__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_protocol__init, + sizeof(RpcRespWifiStaGetNegotiatedPhymode), + 2, + rpc__resp__wifi_sta_get_negotiated_phymode__field_descriptors, + rpc__resp__wifi_sta_get_negotiated_phymode__field_indices_by_name, + 1, rpc__resp__wifi_sta_get_negotiated_phymode__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_get_negotiated_phymode__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_protocol__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_ap_get_sta_aid__field_descriptors[2] = { { "resp", @@ -13802,101 +15991,137 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_protocol__field_descri PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetProtocol, resp), + offsetof(RpcRespWifiApGetStaAid, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "protocol_bitmap", + "aid", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetProtocol, protocol_bitmap), + offsetof(RpcRespWifiApGetStaAid, aid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_protocol__field_indices_by_name[] = { - 1, /* field[1] = protocol_bitmap */ +static const unsigned rpc__resp__wifi_ap_get_sta_aid__field_indices_by_name[] = { + 1, /* field[1] = aid */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_protocol__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_ap_get_sta_aid__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_protocol__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_ap_get_sta_aid__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetProtocol", - "RpcRespWifiGetProtocol", - "RpcRespWifiGetProtocol", + "Rpc_Resp_WifiApGetStaAid", + "RpcRespWifiApGetStaAid", + "RpcRespWifiApGetStaAid", "", - sizeof(RpcRespWifiGetProtocol), + sizeof(RpcRespWifiApGetStaAid), 2, - rpc__resp__wifi_get_protocol__field_descriptors, - rpc__resp__wifi_get_protocol__field_indices_by_name, - 1, rpc__resp__wifi_get_protocol__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_protocol__init, + rpc__resp__wifi_ap_get_sta_aid__field_descriptors, + rpc__resp__wifi_ap_get_sta_aid__field_indices_by_name, + 1, rpc__resp__wifi_ap_get_sta_aid__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_ap_get_sta_aid__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_bandwidth__field_descriptors[2] = +#define rpc__req__wifi_sta_get_rssi__field_descriptors NULL +#define rpc__req__wifi_sta_get_rssi__field_indices_by_name NULL +#define rpc__req__wifi_sta_get_rssi__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_rssi__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStaGetRssi", + "RpcReqWifiStaGetRssi", + "RpcReqWifiStaGetRssi", + "", + sizeof(RpcReqWifiStaGetRssi), + 0, + rpc__req__wifi_sta_get_rssi__field_descriptors, + rpc__req__wifi_sta_get_rssi__field_indices_by_name, + 0, rpc__req__wifi_sta_get_rssi__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_get_rssi__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_rssi__field_descriptors[2] = { { - "ifx", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetBandwidth, ifx), + offsetof(RpcRespWifiStaGetRssi, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "bw", + "rssi", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetBandwidth, bw), + offsetof(RpcRespWifiStaGetRssi, rssi), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_bandwidth__field_indices_by_name[] = { - 1, /* field[1] = bw */ - 0, /* field[0] = ifx */ +static const unsigned rpc__resp__wifi_sta_get_rssi__field_indices_by_name[] = { + 0, /* field[0] = resp */ + 1, /* field[1] = rssi */ }; -static const ProtobufCIntRange rpc__req__wifi_set_bandwidth__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_get_rssi__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_bandwidth__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_rssi__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetBandwidth", - "RpcReqWifiSetBandwidth", - "RpcReqWifiSetBandwidth", + "Rpc_Resp_WifiStaGetRssi", + "RpcRespWifiStaGetRssi", + "RpcRespWifiStaGetRssi", "", - sizeof(RpcReqWifiSetBandwidth), + sizeof(RpcRespWifiStaGetRssi), 2, - rpc__req__wifi_set_bandwidth__field_descriptors, - rpc__req__wifi_set_bandwidth__field_indices_by_name, - 1, rpc__req__wifi_set_bandwidth__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_bandwidth__init, + rpc__resp__wifi_sta_get_rssi__field_descriptors, + rpc__resp__wifi_sta_get_rssi__field_indices_by_name, + 1, rpc__resp__wifi_sta_get_rssi__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_get_rssi__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_bandwidth__field_descriptors[1] = +#define rpc__req__wifi_sta_get_aid__field_descriptors NULL +#define rpc__req__wifi_sta_get_aid__field_indices_by_name NULL +#define rpc__req__wifi_sta_get_aid__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_aid__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStaGetAid", + "RpcReqWifiStaGetAid", + "RpcReqWifiStaGetAid", + "", + sizeof(RpcReqWifiStaGetAid), + 0, + rpc__req__wifi_sta_get_aid__field_descriptors, + rpc__req__wifi_sta_get_aid__field_indices_by_name, + 0, rpc__req__wifi_sta_get_aid__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_get_aid__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_aid__field_descriptors[2] = { { "resp", @@ -13904,233 +16129,190 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_bandwidth__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetBandwidth, resp), + offsetof(RpcRespWifiStaGetAid, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__resp__wifi_set_bandwidth__field_indices_by_name[] = { - 0, /* field[0] = resp */ -}; -static const ProtobufCIntRange rpc__resp__wifi_set_bandwidth__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_bandwidth__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetBandwidth", - "RpcRespWifiSetBandwidth", - "RpcRespWifiSetBandwidth", - "", - sizeof(RpcRespWifiSetBandwidth), - 1, - rpc__resp__wifi_set_bandwidth__field_descriptors, - rpc__resp__wifi_set_bandwidth__field_indices_by_name, - 1, rpc__resp__wifi_set_bandwidth__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_bandwidth__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__req__wifi_get_bandwidth__field_descriptors[1] = -{ { - "ifx", - 1, + "aid", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiGetBandwidth, ifx), + offsetof(RpcRespWifiStaGetAid, aid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_get_bandwidth__field_indices_by_name[] = { - 0, /* field[0] = ifx */ +static const unsigned rpc__resp__wifi_sta_get_aid__field_indices_by_name[] = { + 1, /* field[1] = aid */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_get_bandwidth__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_get_aid__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_get_bandwidth__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_aid__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetBandwidth", - "RpcReqWifiGetBandwidth", - "RpcReqWifiGetBandwidth", + "Rpc_Resp_WifiStaGetAid", + "RpcRespWifiStaGetAid", + "RpcRespWifiStaGetAid", "", - sizeof(RpcReqWifiGetBandwidth), - 1, - rpc__req__wifi_get_bandwidth__field_descriptors, - rpc__req__wifi_get_bandwidth__field_indices_by_name, - 1, rpc__req__wifi_get_bandwidth__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_bandwidth__init, + sizeof(RpcRespWifiStaGetAid), + 2, + rpc__resp__wifi_sta_get_aid__field_descriptors, + rpc__resp__wifi_sta_get_aid__field_indices_by_name, + 1, rpc__resp__wifi_sta_get_aid__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_get_aid__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_bandwidth__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_protocols__field_descriptors[2] = { { - "resp", + "ifx", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBandwidth, resp), + offsetof(RpcReqWifiSetProtocols, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "bw", + "protocols", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBandwidth, bw), - NULL, + offsetof(RpcReqWifiSetProtocols, protocols), + &wifi_protocols__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_bandwidth__field_indices_by_name[] = { - 1, /* field[1] = bw */ - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_set_protocols__field_indices_by_name[] = { + 0, /* field[0] = ifx */ + 1, /* field[1] = protocols */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_bandwidth__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_protocols__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_bandwidth__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_protocols__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetBandwidth", - "RpcRespWifiGetBandwidth", - "RpcRespWifiGetBandwidth", + "Rpc_Req_WifiSetProtocols", + "RpcReqWifiSetProtocols", + "RpcReqWifiSetProtocols", "", - sizeof(RpcRespWifiGetBandwidth), + sizeof(RpcReqWifiSetProtocols), 2, - rpc__resp__wifi_get_bandwidth__field_descriptors, - rpc__resp__wifi_get_bandwidth__field_indices_by_name, - 1, rpc__resp__wifi_get_bandwidth__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_bandwidth__init, + rpc__req__wifi_set_protocols__field_descriptors, + rpc__req__wifi_set_protocols__field_indices_by_name, + 1, rpc__req__wifi_set_protocols__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_protocols__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_channel__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_protocols__field_descriptors[2] = { { - "primary", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetChannel, primary), + offsetof(RpcRespWifiSetProtocols, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "second", + "ifx", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetChannel, second), + offsetof(RpcRespWifiSetProtocols, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_channel__field_indices_by_name[] = { - 0, /* field[0] = primary */ - 1, /* field[1] = second */ +static const unsigned rpc__resp__wifi_set_protocols__field_indices_by_name[] = { + 1, /* field[1] = ifx */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_set_channel__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_protocols__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_channel__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_protocols__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetChannel", - "RpcReqWifiSetChannel", - "RpcReqWifiSetChannel", + "Rpc_Resp_WifiSetProtocols", + "RpcRespWifiSetProtocols", + "RpcRespWifiSetProtocols", "", - sizeof(RpcReqWifiSetChannel), + sizeof(RpcRespWifiSetProtocols), 2, - rpc__req__wifi_set_channel__field_descriptors, - rpc__req__wifi_set_channel__field_indices_by_name, - 1, rpc__req__wifi_set_channel__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_channel__init, + rpc__resp__wifi_set_protocols__field_descriptors, + rpc__resp__wifi_set_protocols__field_indices_by_name, + 1, rpc__resp__wifi_set_protocols__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_protocols__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_channel__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_get_protocols__field_descriptors[1] = { { - "resp", + "ifx", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetChannel, resp), + offsetof(RpcReqWifiGetProtocols, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_channel__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_get_protocols__field_indices_by_name[] = { + 0, /* field[0] = ifx */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_channel__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_get_protocols__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_channel__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_get_protocols__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetChannel", - "RpcRespWifiSetChannel", - "RpcRespWifiSetChannel", + "Rpc_Req_WifiGetProtocols", + "RpcReqWifiGetProtocols", + "RpcReqWifiGetProtocols", "", - sizeof(RpcRespWifiSetChannel), + sizeof(RpcReqWifiGetProtocols), 1, - rpc__resp__wifi_set_channel__field_descriptors, - rpc__resp__wifi_set_channel__field_indices_by_name, - 1, rpc__resp__wifi_set_channel__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_channel__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_get_channel__field_descriptors NULL -#define rpc__req__wifi_get_channel__field_indices_by_name NULL -#define rpc__req__wifi_get_channel__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_get_channel__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetChannel", - "RpcReqWifiGetChannel", - "RpcReqWifiGetChannel", - "", - sizeof(RpcReqWifiGetChannel), - 0, - rpc__req__wifi_get_channel__field_descriptors, - rpc__req__wifi_get_channel__field_indices_by_name, - 0, rpc__req__wifi_get_channel__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_channel__init, + rpc__req__wifi_get_protocols__field_descriptors, + rpc__req__wifi_get_protocols__field_indices_by_name, + 1, rpc__req__wifi_get_protocols__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_protocols__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_channel__field_descriptors[3] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_protocols__field_descriptors[3] = { { "resp", @@ -14138,246 +16320,203 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_channel__field_descrip PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetChannel, resp), + offsetof(RpcRespWifiGetProtocols, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "primary", + "ifx", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetChannel, primary), + offsetof(RpcRespWifiGetProtocols, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "second", + "protocols", 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetChannel, second), - NULL, + offsetof(RpcRespWifiGetProtocols, protocols), + &wifi_protocols__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_channel__field_indices_by_name[] = { - 1, /* field[1] = primary */ +static const unsigned rpc__resp__wifi_get_protocols__field_indices_by_name[] = { + 1, /* field[1] = ifx */ + 2, /* field[2] = protocols */ 0, /* field[0] = resp */ - 2, /* field[2] = second */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_channel__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_protocols__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_channel__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_protocols__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetChannel", - "RpcRespWifiGetChannel", - "RpcRespWifiGetChannel", + "Rpc_Resp_WifiGetProtocols", + "RpcRespWifiGetProtocols", + "RpcRespWifiGetProtocols", "", - sizeof(RpcRespWifiGetChannel), + sizeof(RpcRespWifiGetProtocols), 3, - rpc__resp__wifi_get_channel__field_descriptors, - rpc__resp__wifi_get_channel__field_indices_by_name, - 1, rpc__resp__wifi_get_channel__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_channel__init, + rpc__resp__wifi_get_protocols__field_descriptors, + rpc__resp__wifi_get_protocols__field_indices_by_name, + 1, rpc__resp__wifi_get_protocols__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_protocols__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_storage__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_bandwidths__field_descriptors[2] = { { - "storage", + "ifx", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetStorage, storage), + offsetof(RpcReqWifiSetBandwidths, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__req__wifi_set_storage__field_indices_by_name[] = { - 0, /* field[0] = storage */ -}; -static const ProtobufCIntRange rpc__req__wifi_set_storage__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__req__wifi_set_storage__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetStorage", - "RpcReqWifiSetStorage", - "RpcReqWifiSetStorage", - "", - sizeof(RpcReqWifiSetStorage), - 1, - rpc__req__wifi_set_storage__field_descriptors, - rpc__req__wifi_set_storage__field_indices_by_name, - 1, rpc__req__wifi_set_storage__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_storage__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_storage__field_descriptors[1] = -{ { - "resp", - 1, + "bandwidths", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetStorage, resp), - NULL, + offsetof(RpcReqWifiSetBandwidths, bandwidths), + &wifi_bandwidths__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_storage__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_set_bandwidths__field_indices_by_name[] = { + 1, /* field[1] = bandwidths */ + 0, /* field[0] = ifx */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_storage__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_bandwidths__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_storage__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_bandwidths__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetStorage", - "RpcRespWifiSetStorage", - "RpcRespWifiSetStorage", + "Rpc_Req_WifiSetBandwidths", + "RpcReqWifiSetBandwidths", + "RpcReqWifiSetBandwidths", "", - sizeof(RpcRespWifiSetStorage), - 1, - rpc__resp__wifi_set_storage__field_descriptors, - rpc__resp__wifi_set_storage__field_indices_by_name, - 1, rpc__resp__wifi_set_storage__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_storage__init, + sizeof(RpcReqWifiSetBandwidths), + 2, + rpc__req__wifi_set_bandwidths__field_descriptors, + rpc__req__wifi_set_bandwidths__field_indices_by_name, + 1, rpc__req__wifi_set_bandwidths__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_bandwidths__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_country_code__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_bandwidths__field_descriptors[2] = { { - "country", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetCountryCode, country), + offsetof(RpcRespWifiSetBandwidths, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ieee80211d_enabled", + "ifx", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetCountryCode, ieee80211d_enabled), + offsetof(RpcRespWifiSetBandwidths, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_country_code__field_indices_by_name[] = { - 0, /* field[0] = country */ - 1, /* field[1] = ieee80211d_enabled */ +static const unsigned rpc__resp__wifi_set_bandwidths__field_indices_by_name[] = { + 1, /* field[1] = ifx */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_set_country_code__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_bandwidths__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_country_code__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_bandwidths__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetCountryCode", - "RpcReqWifiSetCountryCode", - "RpcReqWifiSetCountryCode", + "Rpc_Resp_WifiSetBandwidths", + "RpcRespWifiSetBandwidths", + "RpcRespWifiSetBandwidths", "", - sizeof(RpcReqWifiSetCountryCode), + sizeof(RpcRespWifiSetBandwidths), 2, - rpc__req__wifi_set_country_code__field_descriptors, - rpc__req__wifi_set_country_code__field_indices_by_name, - 1, rpc__req__wifi_set_country_code__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_country_code__init, + rpc__resp__wifi_set_bandwidths__field_descriptors, + rpc__resp__wifi_set_bandwidths__field_indices_by_name, + 1, rpc__resp__wifi_set_bandwidths__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_bandwidths__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_country_code__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_get_bandwidths__field_descriptors[1] = { { - "resp", + "ifx", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetCountryCode, resp), + offsetof(RpcReqWifiGetBandwidths, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_country_code__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_get_bandwidths__field_indices_by_name[] = { + 0, /* field[0] = ifx */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_country_code__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_get_bandwidths__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_country_code__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_get_bandwidths__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetCountryCode", - "RpcRespWifiSetCountryCode", - "RpcRespWifiSetCountryCode", + "Rpc_Req_WifiGetBandwidths", + "RpcReqWifiGetBandwidths", + "RpcReqWifiGetBandwidths", "", - sizeof(RpcRespWifiSetCountryCode), + sizeof(RpcReqWifiGetBandwidths), 1, - rpc__resp__wifi_set_country_code__field_descriptors, - rpc__resp__wifi_set_country_code__field_indices_by_name, - 1, rpc__resp__wifi_set_country_code__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_country_code__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_get_country_code__field_descriptors NULL -#define rpc__req__wifi_get_country_code__field_indices_by_name NULL -#define rpc__req__wifi_get_country_code__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_get_country_code__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetCountryCode", - "RpcReqWifiGetCountryCode", - "RpcReqWifiGetCountryCode", - "", - sizeof(RpcReqWifiGetCountryCode), - 0, - rpc__req__wifi_get_country_code__field_descriptors, - rpc__req__wifi_get_country_code__field_indices_by_name, - 0, rpc__req__wifi_get_country_code__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_country_code__init, + rpc__req__wifi_get_bandwidths__field_descriptors, + rpc__req__wifi_get_bandwidths__field_indices_by_name, + 1, rpc__req__wifi_get_bandwidths__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_bandwidths__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_country_code__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_bandwidths__field_descriptors[3] = { { "resp", @@ -14385,144 +16524,101 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_country_code__field_de PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetCountryCode, resp), + offsetof(RpcRespWifiGetBandwidths, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "country", + "ifx", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetCountryCode, country), + offsetof(RpcRespWifiGetBandwidths, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__resp__wifi_get_country_code__field_indices_by_name[] = { - 1, /* field[1] = country */ - 0, /* field[0] = resp */ -}; -static const ProtobufCIntRange rpc__resp__wifi_get_country_code__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_country_code__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetCountryCode", - "RpcRespWifiGetCountryCode", - "RpcRespWifiGetCountryCode", - "", - sizeof(RpcRespWifiGetCountryCode), - 2, - rpc__resp__wifi_get_country_code__field_descriptors, - rpc__resp__wifi_get_country_code__field_indices_by_name, - 1, rpc__resp__wifi_get_country_code__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_country_code__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_country__field_descriptors[1] = -{ { - "country", - 1, + "bandwidths", + 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetCountry, country), - &wifi_country__descriptor, + offsetof(RpcRespWifiGetBandwidths, bandwidths), + &wifi_bandwidths__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_country__field_indices_by_name[] = { - 0, /* field[0] = country */ +static const unsigned rpc__resp__wifi_get_bandwidths__field_indices_by_name[] = { + 2, /* field[2] = bandwidths */ + 1, /* field[1] = ifx */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_set_country__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_bandwidths__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 3 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_country__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_bandwidths__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetCountry", - "RpcReqWifiSetCountry", - "RpcReqWifiSetCountry", + "Rpc_Resp_WifiGetBandwidths", + "RpcRespWifiGetBandwidths", + "RpcRespWifiGetBandwidths", "", - sizeof(RpcReqWifiSetCountry), - 1, - rpc__req__wifi_set_country__field_descriptors, - rpc__req__wifi_set_country__field_indices_by_name, - 1, rpc__req__wifi_set_country__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_country__init, + sizeof(RpcRespWifiGetBandwidths), + 3, + rpc__resp__wifi_get_bandwidths__field_descriptors, + rpc__resp__wifi_get_bandwidths__field_indices_by_name, + 1, rpc__resp__wifi_get_bandwidths__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_bandwidths__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_country__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_band__field_descriptors[1] = { { - "resp", + "band", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetCountry, resp), + offsetof(RpcReqWifiSetBand, band), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_country__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_set_band__field_indices_by_name[] = { + 0, /* field[0] = band */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_country__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_band__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_country__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_band__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetCountry", - "RpcRespWifiSetCountry", - "RpcRespWifiSetCountry", + "Rpc_Req_WifiSetBand", + "RpcReqWifiSetBand", + "RpcReqWifiSetBand", "", - sizeof(RpcRespWifiSetCountry), + sizeof(RpcReqWifiSetBand), 1, - rpc__resp__wifi_set_country__field_descriptors, - rpc__resp__wifi_set_country__field_indices_by_name, - 1, rpc__resp__wifi_set_country__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_country__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_get_country__field_descriptors NULL -#define rpc__req__wifi_get_country__field_indices_by_name NULL -#define rpc__req__wifi_get_country__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_get_country__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetCountry", - "RpcReqWifiGetCountry", - "RpcReqWifiGetCountry", - "", - sizeof(RpcReqWifiGetCountry), - 0, - rpc__req__wifi_get_country__field_descriptors, - rpc__req__wifi_get_country__field_indices_by_name, - 0, rpc__req__wifi_get_country__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_country__init, + rpc__req__wifi_set_band__field_descriptors, + rpc__req__wifi_set_band__field_indices_by_name, + 1, rpc__req__wifi_set_band__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_band__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_country__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_band__field_descriptors[1] = { { "resp", @@ -14530,68 +16626,55 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_country__field_descrip PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetCountry, resp), - NULL, + offsetof(RpcRespWifiSetBand, resp), NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "country", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetCountry, country), - &wifi_country__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_country__field_indices_by_name[] = { - 1, /* field[1] = country */ +static const unsigned rpc__resp__wifi_set_band__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_country__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_band__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_country__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_band__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetCountry", - "RpcRespWifiGetCountry", - "RpcRespWifiGetCountry", + "Rpc_Resp_WifiSetBand", + "RpcRespWifiSetBand", + "RpcRespWifiSetBand", "", - sizeof(RpcRespWifiGetCountry), - 2, - rpc__resp__wifi_get_country__field_descriptors, - rpc__resp__wifi_get_country__field_indices_by_name, - 1, rpc__resp__wifi_get_country__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_country__init, + sizeof(RpcRespWifiSetBand), + 1, + rpc__resp__wifi_set_band__field_descriptors, + rpc__resp__wifi_set_band__field_indices_by_name, + 1, rpc__resp__wifi_set_band__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_band__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_ap_get_sta_list__field_descriptors NULL -#define rpc__req__wifi_ap_get_sta_list__field_indices_by_name NULL -#define rpc__req__wifi_ap_get_sta_list__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_ap_get_sta_list__descriptor = +#define rpc__req__wifi_get_band__field_descriptors NULL +#define rpc__req__wifi_get_band__field_indices_by_name NULL +#define rpc__req__wifi_get_band__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_get_band__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiApGetStaList", - "RpcReqWifiApGetStaList", - "RpcReqWifiApGetStaList", + "Rpc_Req_WifiGetBand", + "RpcReqWifiGetBand", + "RpcReqWifiGetBand", "", - sizeof(RpcReqWifiApGetStaList), + sizeof(RpcReqWifiGetBand), 0, - rpc__req__wifi_ap_get_sta_list__field_descriptors, - rpc__req__wifi_ap_get_sta_list__field_indices_by_name, - 0, rpc__req__wifi_ap_get_sta_list__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_ap_get_sta_list__init, + rpc__req__wifi_get_band__field_descriptors, + rpc__req__wifi_get_band__field_indices_by_name, + 0, rpc__req__wifi_get_band__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_band__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_ap_get_sta_list__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_band__field_descriptors[2] = { { "resp", @@ -14599,106 +16682,88 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_ap_get_sta_list__field_des PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiApGetStaList, resp), + offsetof(RpcRespWifiGetBand, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "sta_list", + "band", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiApGetStaList, sta_list), - &wifi_sta_list__descriptor, + offsetof(RpcRespWifiGetBand, band), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_ap_get_sta_list__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_get_band__field_indices_by_name[] = { + 1, /* field[1] = band */ 0, /* field[0] = resp */ - 1, /* field[1] = sta_list */ }; -static const ProtobufCIntRange rpc__resp__wifi_ap_get_sta_list__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_band__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_ap_get_sta_list__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_band__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiApGetStaList", - "RpcRespWifiApGetStaList", - "RpcRespWifiApGetStaList", + "Rpc_Resp_WifiGetBand", + "RpcRespWifiGetBand", + "RpcRespWifiGetBand", "", - sizeof(RpcRespWifiApGetStaList), + sizeof(RpcRespWifiGetBand), 2, - rpc__resp__wifi_ap_get_sta_list__field_descriptors, - rpc__resp__wifi_ap_get_sta_list__field_indices_by_name, - 1, rpc__resp__wifi_ap_get_sta_list__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_ap_get_sta_list__init, + rpc__resp__wifi_get_band__field_descriptors, + rpc__resp__wifi_get_band__field_indices_by_name, + 1, rpc__resp__wifi_get_band__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_band__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_ap_get_sta_aid__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_band_mode__field_descriptors[1] = { { - "mac", + "bandmode", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiApGetStaAid, mac), + offsetof(RpcReqWifiSetBandMode, bandmode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_ap_get_sta_aid__field_indices_by_name[] = { - 0, /* field[0] = mac */ +static const unsigned rpc__req__wifi_set_band_mode__field_indices_by_name[] = { + 0, /* field[0] = bandmode */ }; -static const ProtobufCIntRange rpc__req__wifi_ap_get_sta_aid__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_band_mode__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_ap_get_sta_aid__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_band_mode__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiApGetStaAid", - "RpcReqWifiApGetStaAid", - "RpcReqWifiApGetStaAid", + "Rpc_Req_WifiSetBandMode", + "RpcReqWifiSetBandMode", + "RpcReqWifiSetBandMode", "", - sizeof(RpcReqWifiApGetStaAid), + sizeof(RpcReqWifiSetBandMode), 1, - rpc__req__wifi_ap_get_sta_aid__field_descriptors, - rpc__req__wifi_ap_get_sta_aid__field_indices_by_name, - 1, rpc__req__wifi_ap_get_sta_aid__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_ap_get_sta_aid__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_sta_get_negotiated_phymode__field_descriptors NULL -#define rpc__req__wifi_sta_get_negotiated_phymode__field_indices_by_name NULL -#define rpc__req__wifi_sta_get_negotiated_phymode__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_negotiated_phymode__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaGetNegotiatedPhymode", - "RpcReqWifiStaGetNegotiatedPhymode", - "RpcReqWifiStaGetNegotiatedPhymode", - "", - sizeof(RpcReqWifiStaGetNegotiatedPhymode), - 0, - rpc__req__wifi_sta_get_negotiated_phymode__field_descriptors, - rpc__req__wifi_sta_get_negotiated_phymode__field_indices_by_name, - 0, rpc__req__wifi_sta_get_negotiated_phymode__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_get_negotiated_phymode__init, + rpc__req__wifi_set_band_mode__field_descriptors, + rpc__req__wifi_set_band_mode__field_indices_by_name, + 1, rpc__req__wifi_set_band_mode__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_band_mode__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_negotiated_phymode__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_band_mode__field_descriptors[1] = { { "resp", @@ -14706,50 +16771,55 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_negotiated_phymode PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetNegotiatedPhymode, resp), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "phymode", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetNegotiatedPhymode, phymode), + offsetof(RpcRespWifiSetBandMode, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_get_negotiated_phymode__field_indices_by_name[] = { - 1, /* field[1] = phymode */ +static const unsigned rpc__resp__wifi_set_band_mode__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_get_negotiated_phymode__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_band_mode__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_negotiated_phymode__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_band_mode__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaGetNegotiatedPhymode", - "RpcRespWifiStaGetNegotiatedPhymode", - "RpcRespWifiStaGetNegotiatedPhymode", + "Rpc_Resp_WifiSetBandMode", + "RpcRespWifiSetBandMode", + "RpcRespWifiSetBandMode", + "", + sizeof(RpcRespWifiSetBandMode), + 1, + rpc__resp__wifi_set_band_mode__field_descriptors, + rpc__resp__wifi_set_band_mode__field_indices_by_name, + 1, rpc__resp__wifi_set_band_mode__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_band_mode__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define rpc__req__wifi_get_band_mode__field_descriptors NULL +#define rpc__req__wifi_get_band_mode__field_indices_by_name NULL +#define rpc__req__wifi_get_band_mode__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_get_band_mode__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiGetBandMode", + "RpcReqWifiGetBandMode", + "RpcReqWifiGetBandMode", "", - sizeof(RpcRespWifiStaGetNegotiatedPhymode), - 2, - rpc__resp__wifi_sta_get_negotiated_phymode__field_descriptors, - rpc__resp__wifi_sta_get_negotiated_phymode__field_indices_by_name, - 1, rpc__resp__wifi_sta_get_negotiated_phymode__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_get_negotiated_phymode__init, + sizeof(RpcReqWifiGetBandMode), + 0, + rpc__req__wifi_get_band_mode__field_descriptors, + rpc__req__wifi_get_band_mode__field_indices_by_name, + 0, rpc__req__wifi_get_band_mode__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_band_mode__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_ap_get_sta_aid__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_band_mode__field_descriptors[2] = { { "resp", @@ -14757,137 +16827,101 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_ap_get_sta_aid__field_desc PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiApGetStaAid, resp), + offsetof(RpcRespWifiGetBandMode, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "aid", + "bandmode", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiApGetStaAid, aid), + offsetof(RpcRespWifiGetBandMode, bandmode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_ap_get_sta_aid__field_indices_by_name[] = { - 1, /* field[1] = aid */ +static const unsigned rpc__resp__wifi_get_band_mode__field_indices_by_name[] = { + 1, /* field[1] = bandmode */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_ap_get_sta_aid__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_band_mode__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_ap_get_sta_aid__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_band_mode__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiApGetStaAid", - "RpcRespWifiApGetStaAid", - "RpcRespWifiApGetStaAid", + "Rpc_Resp_WifiGetBandMode", + "RpcRespWifiGetBandMode", + "RpcRespWifiGetBandMode", "", - sizeof(RpcRespWifiApGetStaAid), + sizeof(RpcRespWifiGetBandMode), 2, - rpc__resp__wifi_ap_get_sta_aid__field_descriptors, - rpc__resp__wifi_ap_get_sta_aid__field_indices_by_name, - 1, rpc__resp__wifi_ap_get_sta_aid__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_ap_get_sta_aid__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_sta_get_rssi__field_descriptors NULL -#define rpc__req__wifi_sta_get_rssi__field_indices_by_name NULL -#define rpc__req__wifi_sta_get_rssi__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_rssi__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaGetRssi", - "RpcReqWifiStaGetRssi", - "RpcReqWifiStaGetRssi", - "", - sizeof(RpcReqWifiStaGetRssi), - 0, - rpc__req__wifi_sta_get_rssi__field_descriptors, - rpc__req__wifi_sta_get_rssi__field_indices_by_name, - 0, rpc__req__wifi_sta_get_rssi__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_get_rssi__init, + rpc__resp__wifi_get_band_mode__field_descriptors, + rpc__resp__wifi_get_band_mode__field_indices_by_name, + 1, rpc__resp__wifi_get_band_mode__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_band_mode__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_rssi__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_inactive_time__field_descriptors[2] = { { - "resp", + "ifx", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetRssi, resp), + offsetof(RpcReqWifiSetInactiveTime, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "rssi", + "sec", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetRssi, rssi), + offsetof(RpcReqWifiSetInactiveTime, sec), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_get_rssi__field_indices_by_name[] = { - 0, /* field[0] = resp */ - 1, /* field[1] = rssi */ +static const unsigned rpc__req__wifi_set_inactive_time__field_indices_by_name[] = { + 0, /* field[0] = ifx */ + 1, /* field[1] = sec */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_get_rssi__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_inactive_time__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_rssi__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_inactive_time__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaGetRssi", - "RpcRespWifiStaGetRssi", - "RpcRespWifiStaGetRssi", + "Rpc_Req_WifiSetInactiveTime", + "RpcReqWifiSetInactiveTime", + "RpcReqWifiSetInactiveTime", "", - sizeof(RpcRespWifiStaGetRssi), + sizeof(RpcReqWifiSetInactiveTime), 2, - rpc__resp__wifi_sta_get_rssi__field_descriptors, - rpc__resp__wifi_sta_get_rssi__field_indices_by_name, - 1, rpc__resp__wifi_sta_get_rssi__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_get_rssi__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_sta_get_aid__field_descriptors NULL -#define rpc__req__wifi_sta_get_aid__field_indices_by_name NULL -#define rpc__req__wifi_sta_get_aid__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_aid__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaGetAid", - "RpcReqWifiStaGetAid", - "RpcReqWifiStaGetAid", - "", - sizeof(RpcReqWifiStaGetAid), - 0, - rpc__req__wifi_sta_get_aid__field_descriptors, - rpc__req__wifi_sta_get_aid__field_indices_by_name, - 0, rpc__req__wifi_sta_get_aid__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_get_aid__init, + rpc__req__wifi_set_inactive_time__field_descriptors, + rpc__req__wifi_set_inactive_time__field_indices_by_name, + 1, rpc__req__wifi_set_inactive_time__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_inactive_time__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_aid__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_inactive_time__field_descriptors[1] = { { "resp", @@ -14895,101 +16929,75 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_aid__field_descrip PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetAid, resp), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "aid", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetAid, aid), + offsetof(RpcRespWifiSetInactiveTime, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_get_aid__field_indices_by_name[] = { - 1, /* field[1] = aid */ +static const unsigned rpc__resp__wifi_set_inactive_time__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_get_aid__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_inactive_time__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_aid__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_inactive_time__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaGetAid", - "RpcRespWifiStaGetAid", - "RpcRespWifiStaGetAid", + "Rpc_Resp_WifiSetInactiveTime", + "RpcRespWifiSetInactiveTime", + "RpcRespWifiSetInactiveTime", "", - sizeof(RpcRespWifiStaGetAid), - 2, - rpc__resp__wifi_sta_get_aid__field_descriptors, - rpc__resp__wifi_sta_get_aid__field_indices_by_name, - 1, rpc__resp__wifi_sta_get_aid__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_get_aid__init, + sizeof(RpcRespWifiSetInactiveTime), + 1, + rpc__resp__wifi_set_inactive_time__field_descriptors, + rpc__resp__wifi_set_inactive_time__field_indices_by_name, + 1, rpc__resp__wifi_set_inactive_time__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_inactive_time__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_protocols__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_get_inactive_time__field_descriptors[1] = { { "ifx", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetProtocols, ifx), + offsetof(RpcReqWifiGetInactiveTime, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, - { - "protocols", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetProtocols, protocols), - &wifi_protocols__descriptor, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, }; -static const unsigned rpc__req__wifi_set_protocols__field_indices_by_name[] = { +static const unsigned rpc__req__wifi_get_inactive_time__field_indices_by_name[] = { 0, /* field[0] = ifx */ - 1, /* field[1] = protocols */ }; -static const ProtobufCIntRange rpc__req__wifi_set_protocols__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_get_inactive_time__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_protocols__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_get_inactive_time__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetProtocols", - "RpcReqWifiSetProtocols", - "RpcReqWifiSetProtocols", + "Rpc_Req_WifiGetInactiveTime", + "RpcReqWifiGetInactiveTime", + "RpcReqWifiGetInactiveTime", "", - sizeof(RpcReqWifiSetProtocols), - 2, - rpc__req__wifi_set_protocols__field_descriptors, - rpc__req__wifi_set_protocols__field_indices_by_name, - 1, rpc__req__wifi_set_protocols__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_protocols__init, + sizeof(RpcReqWifiGetInactiveTime), + 1, + rpc__req__wifi_get_inactive_time__field_descriptors, + rpc__req__wifi_get_inactive_time__field_indices_by_name, + 1, rpc__req__wifi_get_inactive_time__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_inactive_time__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_protocols__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_inactive_time__field_descriptors[2] = { { "resp", @@ -14997,88 +17005,88 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_protocols__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetProtocols, resp), + offsetof(RpcRespWifiGetInactiveTime, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ifx", + "sec", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetProtocols, ifx), + offsetof(RpcRespWifiGetInactiveTime, sec), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_protocols__field_indices_by_name[] = { - 1, /* field[1] = ifx */ +static const unsigned rpc__resp__wifi_get_inactive_time__field_indices_by_name[] = { 0, /* field[0] = resp */ + 1, /* field[1] = sec */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_protocols__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_inactive_time__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_protocols__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_inactive_time__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetProtocols", - "RpcRespWifiSetProtocols", - "RpcRespWifiSetProtocols", + "Rpc_Resp_WifiGetInactiveTime", + "RpcRespWifiGetInactiveTime", + "RpcRespWifiGetInactiveTime", "", - sizeof(RpcRespWifiSetProtocols), + sizeof(RpcRespWifiGetInactiveTime), 2, - rpc__resp__wifi_set_protocols__field_descriptors, - rpc__resp__wifi_set_protocols__field_indices_by_name, - 1, rpc__resp__wifi_set_protocols__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_protocols__init, + rpc__resp__wifi_get_inactive_time__field_descriptors, + rpc__resp__wifi_get_inactive_time__field_indices_by_name, + 1, rpc__resp__wifi_get_inactive_time__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_inactive_time__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_get_protocols__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_setup__field_descriptors[1] = { { - "ifx", + "setup_config", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcReqWifiGetProtocols, ifx), - NULL, + offsetof(RpcReqWifiStaItwtSetup, setup_config), + &wifi_itwt_setup_config__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_get_protocols__field_indices_by_name[] = { - 0, /* field[0] = ifx */ +static const unsigned rpc__req__wifi_sta_itwt_setup__field_indices_by_name[] = { + 0, /* field[0] = setup_config */ }; -static const ProtobufCIntRange rpc__req__wifi_get_protocols__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_sta_itwt_setup__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_get_protocols__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_setup__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetProtocols", - "RpcReqWifiGetProtocols", - "RpcReqWifiGetProtocols", + "Rpc_Req_WifiStaItwtSetup", + "RpcReqWifiStaItwtSetup", + "RpcReqWifiStaItwtSetup", "", - sizeof(RpcReqWifiGetProtocols), + sizeof(RpcReqWifiStaItwtSetup), 1, - rpc__req__wifi_get_protocols__field_descriptors, - rpc__req__wifi_get_protocols__field_indices_by_name, - 1, rpc__req__wifi_get_protocols__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_protocols__init, + rpc__req__wifi_sta_itwt_setup__field_descriptors, + rpc__req__wifi_sta_itwt_setup__field_indices_by_name, + 1, rpc__req__wifi_sta_itwt_setup__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_setup__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_protocols__field_descriptors[3] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_setup__field_descriptors[1] = { { "resp", @@ -15086,203 +17094,220 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_protocols__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetProtocols, resp), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "ifx", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetProtocols, ifx), + offsetof(RpcRespWifiStaItwtSetup, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, - { - "protocols", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetProtocols, protocols), - &wifi_protocols__descriptor, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, }; -static const unsigned rpc__resp__wifi_get_protocols__field_indices_by_name[] = { - 1, /* field[1] = ifx */ - 2, /* field[2] = protocols */ +static const unsigned rpc__resp__wifi_sta_itwt_setup__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_protocols__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_setup__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 3 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_protocols__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_setup__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetProtocols", - "RpcRespWifiGetProtocols", - "RpcRespWifiGetProtocols", + "Rpc_Resp_WifiStaItwtSetup", + "RpcRespWifiStaItwtSetup", + "RpcRespWifiStaItwtSetup", "", - sizeof(RpcRespWifiGetProtocols), - 3, - rpc__resp__wifi_get_protocols__field_descriptors, - rpc__resp__wifi_get_protocols__field_indices_by_name, - 1, rpc__resp__wifi_get_protocols__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_protocols__init, + sizeof(RpcRespWifiStaItwtSetup), + 1, + rpc__resp__wifi_sta_itwt_setup__field_descriptors, + rpc__resp__wifi_sta_itwt_setup__field_indices_by_name, + 1, rpc__resp__wifi_sta_itwt_setup__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_setup__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_bandwidths__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_teardown__field_descriptors[1] = { { - "ifx", + "flow_id", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetBandwidths, ifx), + offsetof(RpcReqWifiStaItwtTeardown, flow_id), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__req__wifi_sta_itwt_teardown__field_indices_by_name[] = { + 0, /* field[0] = flow_id */ +}; +static const ProtobufCIntRange rpc__req__wifi_sta_itwt_teardown__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_teardown__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStaItwtTeardown", + "RpcReqWifiStaItwtTeardown", + "RpcReqWifiStaItwtTeardown", + "", + sizeof(RpcReqWifiStaItwtTeardown), + 1, + rpc__req__wifi_sta_itwt_teardown__field_descriptors, + rpc__req__wifi_sta_itwt_teardown__field_indices_by_name, + 1, rpc__req__wifi_sta_itwt_teardown__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_teardown__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_teardown__field_descriptors[1] = +{ { - "bandwidths", - 2, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetBandwidths, bandwidths), - &wifi_bandwidths__descriptor, + offsetof(RpcRespWifiStaItwtTeardown, resp), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_bandwidths__field_indices_by_name[] = { - 1, /* field[1] = bandwidths */ - 0, /* field[0] = ifx */ +static const unsigned rpc__resp__wifi_sta_itwt_teardown__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_set_bandwidths__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_teardown__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_bandwidths__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_teardown__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetBandwidths", - "RpcReqWifiSetBandwidths", - "RpcReqWifiSetBandwidths", + "Rpc_Resp_WifiStaItwtTeardown", + "RpcRespWifiStaItwtTeardown", + "RpcRespWifiStaItwtTeardown", "", - sizeof(RpcReqWifiSetBandwidths), - 2, - rpc__req__wifi_set_bandwidths__field_descriptors, - rpc__req__wifi_set_bandwidths__field_indices_by_name, - 1, rpc__req__wifi_set_bandwidths__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_bandwidths__init, + sizeof(RpcRespWifiStaItwtTeardown), + 1, + rpc__resp__wifi_sta_itwt_teardown__field_descriptors, + rpc__resp__wifi_sta_itwt_teardown__field_indices_by_name, + 1, rpc__resp__wifi_sta_itwt_teardown__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_teardown__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_bandwidths__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_suspend__field_descriptors[2] = { { - "resp", + "flow_id", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetBandwidths, resp), + offsetof(RpcReqWifiStaItwtSuspend, flow_id), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ifx", + "suspend_time_ms", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetBandwidths, ifx), + offsetof(RpcReqWifiStaItwtSuspend, suspend_time_ms), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_bandwidths__field_indices_by_name[] = { - 1, /* field[1] = ifx */ - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_sta_itwt_suspend__field_indices_by_name[] = { + 0, /* field[0] = flow_id */ + 1, /* field[1] = suspend_time_ms */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_bandwidths__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_sta_itwt_suspend__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_bandwidths__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_suspend__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetBandwidths", - "RpcRespWifiSetBandwidths", - "RpcRespWifiSetBandwidths", + "Rpc_Req_WifiStaItwtSuspend", + "RpcReqWifiStaItwtSuspend", + "RpcReqWifiStaItwtSuspend", "", - sizeof(RpcRespWifiSetBandwidths), + sizeof(RpcReqWifiStaItwtSuspend), 2, - rpc__resp__wifi_set_bandwidths__field_descriptors, - rpc__resp__wifi_set_bandwidths__field_indices_by_name, - 1, rpc__resp__wifi_set_bandwidths__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_bandwidths__init, + rpc__req__wifi_sta_itwt_suspend__field_descriptors, + rpc__req__wifi_sta_itwt_suspend__field_indices_by_name, + 1, rpc__req__wifi_sta_itwt_suspend__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_suspend__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_get_bandwidths__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_suspend__field_descriptors[1] = { { - "ifx", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiGetBandwidths, ifx), + offsetof(RpcRespWifiStaItwtSuspend, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_get_bandwidths__field_indices_by_name[] = { - 0, /* field[0] = ifx */ +static const unsigned rpc__resp__wifi_sta_itwt_suspend__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_get_bandwidths__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_suspend__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_get_bandwidths__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_suspend__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetBandwidths", - "RpcReqWifiGetBandwidths", - "RpcReqWifiGetBandwidths", + "Rpc_Resp_WifiStaItwtSuspend", + "RpcRespWifiStaItwtSuspend", + "RpcRespWifiStaItwtSuspend", "", - sizeof(RpcReqWifiGetBandwidths), + sizeof(RpcRespWifiStaItwtSuspend), 1, - rpc__req__wifi_get_bandwidths__field_descriptors, - rpc__req__wifi_get_bandwidths__field_indices_by_name, - 1, rpc__req__wifi_get_bandwidths__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_bandwidths__init, + rpc__resp__wifi_sta_itwt_suspend__field_descriptors, + rpc__resp__wifi_sta_itwt_suspend__field_indices_by_name, + 1, rpc__resp__wifi_sta_itwt_suspend__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_suspend__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_bandwidths__field_descriptors[3] = +#define rpc__req__wifi_sta_itwt_get_flow_id_status__field_descriptors NULL +#define rpc__req__wifi_sta_itwt_get_flow_id_status__field_indices_by_name NULL +#define rpc__req__wifi_sta_itwt_get_flow_id_status__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_get_flow_id_status__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStaItwtGetFlowIdStatus", + "RpcReqWifiStaItwtGetFlowIdStatus", + "RpcReqWifiStaItwtGetFlowIdStatus", + "", + sizeof(RpcReqWifiStaItwtGetFlowIdStatus), + 0, + rpc__req__wifi_sta_itwt_get_flow_id_status__field_descriptors, + rpc__req__wifi_sta_itwt_get_flow_id_status__field_indices_by_name, + 0, rpc__req__wifi_sta_itwt_get_flow_id_status__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_get_flow_id_status__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_get_flow_id_status__field_descriptors[2] = { { "resp", @@ -15290,101 +17315,88 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_bandwidths__field_desc PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBandwidths, resp), + offsetof(RpcRespWifiStaItwtGetFlowIdStatus, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ifx", + "flow_id_bitmap", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBandwidths, ifx), - NULL, + offsetof(RpcRespWifiStaItwtGetFlowIdStatus, flow_id_bitmap), NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "bandwidths", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBandwidths, bandwidths), - &wifi_bandwidths__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_bandwidths__field_indices_by_name[] = { - 2, /* field[2] = bandwidths */ - 1, /* field[1] = ifx */ +static const unsigned rpc__resp__wifi_sta_itwt_get_flow_id_status__field_indices_by_name[] = { + 1, /* field[1] = flow_id_bitmap */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_bandwidths__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_get_flow_id_status__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 3 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_bandwidths__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_get_flow_id_status__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetBandwidths", - "RpcRespWifiGetBandwidths", - "RpcRespWifiGetBandwidths", + "Rpc_Resp_WifiStaItwtGetFlowIdStatus", + "RpcRespWifiStaItwtGetFlowIdStatus", + "RpcRespWifiStaItwtGetFlowIdStatus", "", - sizeof(RpcRespWifiGetBandwidths), - 3, - rpc__resp__wifi_get_bandwidths__field_descriptors, - rpc__resp__wifi_get_bandwidths__field_indices_by_name, - 1, rpc__resp__wifi_get_bandwidths__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_bandwidths__init, + sizeof(RpcRespWifiStaItwtGetFlowIdStatus), + 2, + rpc__resp__wifi_sta_itwt_get_flow_id_status__field_descriptors, + rpc__resp__wifi_sta_itwt_get_flow_id_status__field_indices_by_name, + 1, rpc__resp__wifi_sta_itwt_get_flow_id_status__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_get_flow_id_status__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_band__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_send_probe_req__field_descriptors[1] = { { - "band", + "timeout_ms", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetBand, band), + offsetof(RpcReqWifiStaItwtSendProbeReq, timeout_ms), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_band__field_indices_by_name[] = { - 0, /* field[0] = band */ +static const unsigned rpc__req__wifi_sta_itwt_send_probe_req__field_indices_by_name[] = { + 0, /* field[0] = timeout_ms */ }; -static const ProtobufCIntRange rpc__req__wifi_set_band__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_sta_itwt_send_probe_req__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_band__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_send_probe_req__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetBand", - "RpcReqWifiSetBand", - "RpcReqWifiSetBand", + "Rpc_Req_WifiStaItwtSendProbeReq", + "RpcReqWifiStaItwtSendProbeReq", + "RpcReqWifiStaItwtSendProbeReq", "", - sizeof(RpcReqWifiSetBand), + sizeof(RpcReqWifiStaItwtSendProbeReq), 1, - rpc__req__wifi_set_band__field_descriptors, - rpc__req__wifi_set_band__field_indices_by_name, - 1, rpc__req__wifi_set_band__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_band__init, + rpc__req__wifi_sta_itwt_send_probe_req__field_descriptors, + rpc__req__wifi_sta_itwt_send_probe_req__field_indices_by_name, + 1, rpc__req__wifi_sta_itwt_send_probe_req__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_send_probe_req__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_band__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_send_probe_req__field_descriptors[1] = { { "resp", @@ -15392,248 +17404,186 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_band__field_descriptor PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetBand, resp), + offsetof(RpcRespWifiStaItwtSendProbeReq, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_band__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_sta_itwt_send_probe_req__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_band__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_send_probe_req__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_band__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_send_probe_req__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetBand", - "RpcRespWifiSetBand", - "RpcRespWifiSetBand", + "Rpc_Resp_WifiStaItwtSendProbeReq", + "RpcRespWifiStaItwtSendProbeReq", + "RpcRespWifiStaItwtSendProbeReq", "", - sizeof(RpcRespWifiSetBand), + sizeof(RpcRespWifiStaItwtSendProbeReq), 1, - rpc__resp__wifi_set_band__field_descriptors, - rpc__resp__wifi_set_band__field_indices_by_name, - 1, rpc__resp__wifi_set_band__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_band__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_get_band__field_descriptors NULL -#define rpc__req__wifi_get_band__field_indices_by_name NULL -#define rpc__req__wifi_get_band__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_get_band__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetBand", - "RpcReqWifiGetBand", - "RpcReqWifiGetBand", - "", - sizeof(RpcReqWifiGetBand), - 0, - rpc__req__wifi_get_band__field_descriptors, - rpc__req__wifi_get_band__field_indices_by_name, - 0, rpc__req__wifi_get_band__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_band__init, + rpc__resp__wifi_sta_itwt_send_probe_req__field_descriptors, + rpc__resp__wifi_sta_itwt_send_probe_req__field_indices_by_name, + 1, rpc__resp__wifi_sta_itwt_send_probe_req__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_send_probe_req__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_band__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_set_target_wake_time_offset__field_descriptors[1] = { { - "resp", + "offset_us", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBand, resp), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "band", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBand, band), + offsetof(RpcReqWifiStaItwtSetTargetWakeTimeOffset, offset_us), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_band__field_indices_by_name[] = { - 1, /* field[1] = band */ - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_sta_itwt_set_target_wake_time_offset__field_indices_by_name[] = { + 0, /* field[0] = offset_us */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_band__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_sta_itwt_set_target_wake_time_offset__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_band__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_set_target_wake_time_offset__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetBand", - "RpcRespWifiGetBand", - "RpcRespWifiGetBand", + "Rpc_Req_WifiStaItwtSetTargetWakeTimeOffset", + "RpcReqWifiStaItwtSetTargetWakeTimeOffset", + "RpcReqWifiStaItwtSetTargetWakeTimeOffset", "", - sizeof(RpcRespWifiGetBand), - 2, - rpc__resp__wifi_get_band__field_descriptors, - rpc__resp__wifi_get_band__field_indices_by_name, - 1, rpc__resp__wifi_get_band__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_band__init, + sizeof(RpcReqWifiStaItwtSetTargetWakeTimeOffset), + 1, + rpc__req__wifi_sta_itwt_set_target_wake_time_offset__field_descriptors, + rpc__req__wifi_sta_itwt_set_target_wake_time_offset__field_indices_by_name, + 1, rpc__req__wifi_sta_itwt_set_target_wake_time_offset__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_set_target_wake_time_offset__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_band_mode__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__field_descriptors[1] = { { - "bandmode", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetBandMode, bandmode), + offsetof(RpcRespWifiStaItwtSetTargetWakeTimeOffset, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_band_mode__field_indices_by_name[] = { - 0, /* field[0] = bandmode */ +static const unsigned rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_set_band_mode__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_band_mode__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetBandMode", - "RpcReqWifiSetBandMode", - "RpcReqWifiSetBandMode", + "Rpc_Resp_WifiStaItwtSetTargetWakeTimeOffset", + "RpcRespWifiStaItwtSetTargetWakeTimeOffset", + "RpcRespWifiStaItwtSetTargetWakeTimeOffset", "", - sizeof(RpcReqWifiSetBandMode), + sizeof(RpcRespWifiStaItwtSetTargetWakeTimeOffset), 1, - rpc__req__wifi_set_band_mode__field_descriptors, - rpc__req__wifi_set_band_mode__field_indices_by_name, - 1, rpc__req__wifi_set_band_mode__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_band_mode__init, + rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__field_descriptors, + rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__field_indices_by_name, + 1, rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_band_mode__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_sta_twt_config__field_descriptors[1] = { { - "resp", + "config", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetBandMode, resp), - NULL, + offsetof(RpcReqWifiStaTwtConfig, config), + &wifi_twt_config__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_band_mode__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_sta_twt_config__field_indices_by_name[] = { + 0, /* field[0] = config */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_band_mode__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_sta_twt_config__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_band_mode__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_sta_twt_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetBandMode", - "RpcRespWifiSetBandMode", - "RpcRespWifiSetBandMode", + "Rpc_Req_WifiStaTwtConfig", + "RpcReqWifiStaTwtConfig", + "RpcReqWifiStaTwtConfig", "", - sizeof(RpcRespWifiSetBandMode), + sizeof(RpcReqWifiStaTwtConfig), 1, - rpc__resp__wifi_set_band_mode__field_descriptors, - rpc__resp__wifi_set_band_mode__field_indices_by_name, - 1, rpc__resp__wifi_set_band_mode__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_band_mode__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_get_band_mode__field_descriptors NULL -#define rpc__req__wifi_get_band_mode__field_indices_by_name NULL -#define rpc__req__wifi_get_band_mode__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_get_band_mode__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetBandMode", - "RpcReqWifiGetBandMode", - "RpcReqWifiGetBandMode", - "", - sizeof(RpcReqWifiGetBandMode), - 0, - rpc__req__wifi_get_band_mode__field_descriptors, - rpc__req__wifi_get_band_mode__field_indices_by_name, - 0, rpc__req__wifi_get_band_mode__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_band_mode__init, + rpc__req__wifi_sta_twt_config__field_descriptors, + rpc__req__wifi_sta_twt_config__field_indices_by_name, + 1, rpc__req__wifi_sta_twt_config__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_twt_config__init, NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_band_mode__field_descriptors[2] = -{ - { - "resp", - 1, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBandMode, resp), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_twt_config__field_descriptors[1] = +{ { - "bandmode", - 2, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBandMode, bandmode), + offsetof(RpcRespWifiStaTwtConfig, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_band_mode__field_indices_by_name[] = { - 1, /* field[1] = bandmode */ +static const unsigned rpc__resp__wifi_sta_twt_config__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_band_mode__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_twt_config__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_band_mode__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_twt_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetBandMode", - "RpcRespWifiGetBandMode", - "RpcRespWifiGetBandMode", + "Rpc_Resp_WifiStaTwtConfig", + "RpcRespWifiStaTwtConfig", + "RpcRespWifiStaTwtConfig", "", - sizeof(RpcRespWifiGetBandMode), - 2, - rpc__resp__wifi_get_band_mode__field_descriptors, - rpc__resp__wifi_get_band_mode__field_indices_by_name, - 1, rpc__resp__wifi_get_band_mode__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_band_mode__init, + sizeof(RpcRespWifiStaTwtConfig), + 1, + rpc__resp__wifi_sta_twt_config__field_descriptors, + rpc__resp__wifi_sta_twt_config__field_indices_by_name, + 1, rpc__resp__wifi_sta_twt_config__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_twt_config__init, NULL,NULL,NULL /* reserved[123] */ }; #define rpc__req__get_coprocessor_fw_version__field_descriptors NULL @@ -16605,108 +18555,403 @@ static const ProtobufCFieldDescriptor rpc__event__dhcp_dns_status__field_descrip "dhcp_nm", 5, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcEventDhcpDnsStatus, dhcp_nm), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dhcp_gw", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcEventDhcpDnsStatus, dhcp_gw), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dns_up", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcEventDhcpDnsStatus, dns_up), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dns_ip", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcEventDhcpDnsStatus, dns_ip), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dns_type", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcEventDhcpDnsStatus, dns_type), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcEventDhcpDnsStatus, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__event__dhcp_dns_status__field_indices_by_name[] = { + 5, /* field[5] = dhcp_gw */ + 3, /* field[3] = dhcp_ip */ + 4, /* field[4] = dhcp_nm */ + 2, /* field[2] = dhcp_up */ + 7, /* field[7] = dns_ip */ + 8, /* field[8] = dns_type */ + 6, /* field[6] = dns_up */ + 0, /* field[0] = iface */ + 1, /* field[1] = net_link_up */ + 9, /* field[9] = resp */ +}; +static const ProtobufCIntRange rpc__event__dhcp_dns_status__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 10 } +}; +const ProtobufCMessageDescriptor rpc__event__dhcp_dns_status__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Event_DhcpDnsStatus", + "RpcEventDhcpDnsStatus", + "RpcEventDhcpDnsStatus", + "", + sizeof(RpcEventDhcpDnsStatus), + 10, + rpc__event__dhcp_dns_status__field_descriptors, + rpc__event__dhcp_dns_status__field_indices_by_name, + 1, rpc__event__dhcp_dns_status__number_ranges, + (ProtobufCMessageInit) rpc__event__dhcp_dns_status__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__event__sta_itwt_setup__field_descriptors[5] = +{ + { + "resp", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcEventStaItwtSetup, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "config", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(RpcEventStaItwtSetup, config), + &wifi_itwt_setup_config__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "status", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcEventStaItwtSetup, status), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "reason", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(RpcEventStaItwtSetup, reason), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "target_wake_time", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(RpcEventStaItwtSetup, target_wake_time), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__event__sta_itwt_setup__field_indices_by_name[] = { + 1, /* field[1] = config */ + 3, /* field[3] = reason */ + 0, /* field[0] = resp */ + 2, /* field[2] = status */ + 4, /* field[4] = target_wake_time */ +}; +static const ProtobufCIntRange rpc__event__sta_itwt_setup__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor rpc__event__sta_itwt_setup__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Event_StaItwtSetup", + "RpcEventStaItwtSetup", + "RpcEventStaItwtSetup", + "", + sizeof(RpcEventStaItwtSetup), + 5, + rpc__event__sta_itwt_setup__field_descriptors, + rpc__event__sta_itwt_setup__field_indices_by_name, + 1, rpc__event__sta_itwt_setup__number_ranges, + (ProtobufCMessageInit) rpc__event__sta_itwt_setup__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__event__sta_itwt_teardown__field_descriptors[3] = +{ + { + "resp", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcEventStaItwtTeardown, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "flow_id", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(RpcEventStaItwtTeardown, flow_id), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "status", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(RpcEventStaItwtTeardown, status), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__event__sta_itwt_teardown__field_indices_by_name[] = { + 1, /* field[1] = flow_id */ + 0, /* field[0] = resp */ + 2, /* field[2] = status */ +}; +static const ProtobufCIntRange rpc__event__sta_itwt_teardown__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor rpc__event__sta_itwt_teardown__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Event_StaItwtTeardown", + "RpcEventStaItwtTeardown", + "RpcEventStaItwtTeardown", + "", + sizeof(RpcEventStaItwtTeardown), + 3, + rpc__event__sta_itwt_teardown__field_descriptors, + rpc__event__sta_itwt_teardown__field_indices_by_name, + 1, rpc__event__sta_itwt_teardown__number_ranges, + (ProtobufCMessageInit) rpc__event__sta_itwt_teardown__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__event__sta_itwt_suspend__field_descriptors[4] = +{ + { + "resp", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcEventStaItwtSuspend, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "status", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventDhcpDnsStatus, dhcp_nm), + offsetof(RpcEventStaItwtSuspend, status), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dhcp_gw", - 6, + "flow_id_bitmap", + 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcEventDhcpDnsStatus, dhcp_gw), + offsetof(RpcEventStaItwtSuspend, flow_id_bitmap), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dns_up", - 7, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcEventDhcpDnsStatus, dns_up), + "actual_suspend_time_ms", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_UINT32, + offsetof(RpcEventStaItwtSuspend, n_actual_suspend_time_ms), + offsetof(RpcEventStaItwtSuspend, actual_suspend_time_ms), NULL, NULL, - 0, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__event__sta_itwt_suspend__field_indices_by_name[] = { + 3, /* field[3] = actual_suspend_time_ms */ + 2, /* field[2] = flow_id_bitmap */ + 0, /* field[0] = resp */ + 1, /* field[1] = status */ +}; +static const ProtobufCIntRange rpc__event__sta_itwt_suspend__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor rpc__event__sta_itwt_suspend__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Event_StaItwtSuspend", + "RpcEventStaItwtSuspend", + "RpcEventStaItwtSuspend", + "", + sizeof(RpcEventStaItwtSuspend), + 4, + rpc__event__sta_itwt_suspend__field_descriptors, + rpc__event__sta_itwt_suspend__field_indices_by_name, + 1, rpc__event__sta_itwt_suspend__number_ranges, + (ProtobufCMessageInit) rpc__event__sta_itwt_suspend__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__event__sta_itwt_probe__field_descriptors[3] = +{ { - "dns_ip", - 8, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventDhcpDnsStatus, dns_ip), + offsetof(RpcEventStaItwtProbe, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dns_type", - 9, + "status", + 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventDhcpDnsStatus, dns_type), + offsetof(RpcEventStaItwtProbe, status), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "resp", - 10, + "reason", + 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcEventDhcpDnsStatus, resp), + offsetof(RpcEventStaItwtProbe, reason), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__dhcp_dns_status__field_indices_by_name[] = { - 5, /* field[5] = dhcp_gw */ - 3, /* field[3] = dhcp_ip */ - 4, /* field[4] = dhcp_nm */ - 2, /* field[2] = dhcp_up */ - 7, /* field[7] = dns_ip */ - 8, /* field[8] = dns_type */ - 6, /* field[6] = dns_up */ - 0, /* field[0] = iface */ - 1, /* field[1] = net_link_up */ - 9, /* field[9] = resp */ +static const unsigned rpc__event__sta_itwt_probe__field_indices_by_name[] = { + 2, /* field[2] = reason */ + 0, /* field[0] = resp */ + 1, /* field[1] = status */ }; -static const ProtobufCIntRange rpc__event__dhcp_dns_status__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__sta_itwt_probe__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 10 } + { 0, 3 } }; -const ProtobufCMessageDescriptor rpc__event__dhcp_dns_status__descriptor = +const ProtobufCMessageDescriptor rpc__event__sta_itwt_probe__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_DhcpDnsStatus", - "RpcEventDhcpDnsStatus", - "RpcEventDhcpDnsStatus", + "Rpc_Event_StaItwtProbe", + "RpcEventStaItwtProbe", + "RpcEventStaItwtProbe", "", - sizeof(RpcEventDhcpDnsStatus), - 10, - rpc__event__dhcp_dns_status__field_descriptors, - rpc__event__dhcp_dns_status__field_indices_by_name, - 1, rpc__event__dhcp_dns_status__number_ranges, - (ProtobufCMessageInit) rpc__event__dhcp_dns_status__init, + sizeof(RpcEventStaItwtProbe), + 3, + rpc__event__sta_itwt_probe__field_descriptors, + rpc__event__sta_itwt_probe__field_indices_by_name, + 1, rpc__event__sta_itwt_probe__number_ranges, + (ProtobufCMessageInit) rpc__event__sta_itwt_probe__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__field_descriptors[126] = +static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = { { "msg_type", @@ -17224,6 +19469,30 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[126] = 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "req_wifi_set_inactive_time", + 325, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_wifi_set_inactive_time), + &rpc__req__wifi_set_inactive_time__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_wifi_get_inactive_time", + 326, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_wifi_get_inactive_time), + &rpc__req__wifi_get_inactive_time__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, { "req_wifi_set_country_code", 334, @@ -17428,6 +19697,90 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[126] = 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "req_wifi_sta_twt_config", + 354, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_wifi_sta_twt_config), + &rpc__req__wifi_sta_twt_config__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_wifi_sta_itwt_setup", + 355, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_wifi_sta_itwt_setup), + &rpc__req__wifi_sta_itwt_setup__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_wifi_sta_itwt_teardown", + 356, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_wifi_sta_itwt_teardown), + &rpc__req__wifi_sta_itwt_teardown__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_wifi_sta_itwt_suspend", + 357, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_wifi_sta_itwt_suspend), + &rpc__req__wifi_sta_itwt_suspend__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_wifi_sta_itwt_get_flow_id_status", + 358, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_wifi_sta_itwt_get_flow_id_status), + &rpc__req__wifi_sta_itwt_get_flow_id_status__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_wifi_sta_itwt_send_probe_req", + 359, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_wifi_sta_itwt_send_probe_req), + &rpc__req__wifi_sta_itwt_send_probe_req__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_wifi_sta_itwt_set_target_wake_time_offset", + 360, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_wifi_sta_itwt_set_target_wake_time_offset), + &rpc__req__wifi_sta_itwt_set_target_wake_time_offset__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, { "resp_get_mac_address", 513, @@ -17908,6 +20261,30 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[126] = 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "resp_wifi_set_inactive_time", + 581, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_wifi_set_inactive_time), + &rpc__resp__wifi_set_inactive_time__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_wifi_get_inactive_time", + 582, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_wifi_get_inactive_time), + &rpc__resp__wifi_get_inactive_time__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, { "resp_wifi_set_country_code", 590, @@ -18112,6 +20489,90 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[126] = 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "resp_wifi_sta_twt_config", + 610, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_wifi_sta_twt_config), + &rpc__resp__wifi_sta_twt_config__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_wifi_sta_itwt_setup", + 611, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_wifi_sta_itwt_setup), + &rpc__resp__wifi_sta_itwt_setup__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_wifi_sta_itwt_teardown", + 612, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_wifi_sta_itwt_teardown), + &rpc__resp__wifi_sta_itwt_teardown__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_wifi_sta_itwt_suspend", + 613, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_wifi_sta_itwt_suspend), + &rpc__resp__wifi_sta_itwt_suspend__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_wifi_sta_itwt_get_flow_id_status", + 614, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_wifi_sta_itwt_get_flow_id_status), + &rpc__resp__wifi_sta_itwt_get_flow_id_status__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_wifi_sta_itwt_send_probe_req", + 615, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_wifi_sta_itwt_send_probe_req), + &rpc__resp__wifi_sta_itwt_send_probe_req__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_wifi_sta_itwt_set_target_wake_time_offset", + 616, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_wifi_sta_itwt_set_target_wake_time_offset), + &rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, { "event_esp_init", 769, @@ -18220,29 +20681,81 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[126] = 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "event_sta_itwt_setup", + 778, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, event_sta_itwt_setup), + &rpc__event__sta_itwt_setup__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "event_sta_itwt_teardown", + 779, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, event_sta_itwt_teardown), + &rpc__event__sta_itwt_teardown__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "event_sta_itwt_suspend", + 780, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, event_sta_itwt_suspend), + &rpc__event__sta_itwt_suspend__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "event_sta_itwt_probe", + 781, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, event_sta_itwt_probe), + &rpc__event__sta_itwt_probe__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, }; static const unsigned rpc__field_indices_by_name[] = { - 119, /* field[119] = event_ap_sta_connected */ - 120, /* field[120] = event_ap_sta_disconnected */ - 125, /* field[125] = event_dhcp_dns */ - 117, /* field[117] = event_esp_init */ - 118, /* field[118] = event_heartbeat */ - 123, /* field[123] = event_sta_connected */ - 124, /* field[124] = event_sta_disconnected */ - 122, /* field[122] = event_sta_scan_done */ - 121, /* field[121] = event_wifi_event_no_args */ + 137, /* field[137] = event_ap_sta_connected */ + 138, /* field[138] = event_ap_sta_disconnected */ + 143, /* field[143] = event_dhcp_dns */ + 135, /* field[135] = event_esp_init */ + 136, /* field[136] = event_heartbeat */ + 141, /* field[141] = event_sta_connected */ + 142, /* field[142] = event_sta_disconnected */ + 147, /* field[147] = event_sta_itwt_probe */ + 144, /* field[144] = event_sta_itwt_setup */ + 146, /* field[146] = event_sta_itwt_suspend */ + 145, /* field[145] = event_sta_itwt_teardown */ + 140, /* field[140] = event_sta_scan_done */ + 139, /* field[139] = event_wifi_event_no_args */ 1, /* field[1] = msg_id */ 0, /* field[0] = msg_type */ 14, /* field[14] = req_config_heartbeat */ - 56, /* field[56] = req_get_coprocessor_fwversion */ - 59, /* field[59] = req_get_dhcp_dns */ + 58, /* field[58] = req_get_coprocessor_fwversion */ + 61, /* field[61] = req_get_dhcp_dns */ 3, /* field[3] = req_get_mac_address */ 13, /* field[13] = req_get_wifi_max_tx_power */ 5, /* field[5] = req_get_wifi_mode */ 9, /* field[9] = req_ota_begin */ 11, /* field[11] = req_ota_end */ 10, /* field[10] = req_ota_write */ - 58, /* field[58] = req_set_dhcp_dns */ + 60, /* field[60] = req_set_dhcp_dns */ 4, /* field[4] = req_set_mac_address */ 12, /* field[12] = req_set_wifi_max_tx_power */ 6, /* field[6] = req_set_wifi_mode */ @@ -18254,120 +20767,140 @@ static const unsigned rpc__field_indices_by_name[] = { 30, /* field[30] = req_wifi_deauth_sta */ 16, /* field[16] = req_wifi_deinit */ 20, /* field[20] = req_wifi_disconnect */ - 53, /* field[53] = req_wifi_get_band */ - 55, /* field[55] = req_wifi_get_bandmode */ + 55, /* field[55] = req_wifi_get_band */ + 57, /* field[57] = req_wifi_get_bandmode */ 35, /* field[35] = req_wifi_get_bandwidth */ - 51, /* field[51] = req_wifi_get_bandwidths */ + 53, /* field[53] = req_wifi_get_bandwidths */ 37, /* field[37] = req_wifi_get_channel */ 22, /* field[22] = req_wifi_get_config */ 39, /* field[39] = req_wifi_get_country */ - 44, /* field[44] = req_wifi_get_country_code */ + 46, /* field[46] = req_wifi_get_country_code */ + 44, /* field[44] = req_wifi_get_inactive_time */ 33, /* field[33] = req_wifi_get_protocol */ - 49, /* field[49] = req_wifi_get_protocols */ + 51, /* field[51] = req_wifi_get_protocols */ 8, /* field[8] = req_wifi_get_ps */ 15, /* field[15] = req_wifi_init */ 28, /* field[28] = req_wifi_restore */ 25, /* field[25] = req_wifi_scan_get_ap_num */ - 57, /* field[57] = req_wifi_scan_get_ap_record */ + 59, /* field[59] = req_wifi_scan_get_ap_record */ 26, /* field[26] = req_wifi_scan_get_ap_records */ 23, /* field[23] = req_wifi_scan_start */ 24, /* field[24] = req_wifi_scan_stop */ - 52, /* field[52] = req_wifi_set_band */ - 54, /* field[54] = req_wifi_set_bandmode */ + 54, /* field[54] = req_wifi_set_band */ + 56, /* field[56] = req_wifi_set_bandmode */ 34, /* field[34] = req_wifi_set_bandwidth */ - 50, /* field[50] = req_wifi_set_bandwidths */ + 52, /* field[52] = req_wifi_set_bandwidths */ 36, /* field[36] = req_wifi_set_channel */ 21, /* field[21] = req_wifi_set_config */ 38, /* field[38] = req_wifi_set_country */ - 43, /* field[43] = req_wifi_set_country_code */ + 45, /* field[45] = req_wifi_set_country_code */ + 43, /* field[43] = req_wifi_set_inactive_time */ 32, /* field[32] = req_wifi_set_protocol */ - 48, /* field[48] = req_wifi_set_protocols */ + 50, /* field[50] = req_wifi_set_protocols */ 7, /* field[7] = req_wifi_set_ps */ 42, /* field[42] = req_wifi_set_storage */ - 45, /* field[45] = req_wifi_sta_get_aid */ + 47, /* field[47] = req_wifi_sta_get_aid */ 31, /* field[31] = req_wifi_sta_get_ap_info */ - 46, /* field[46] = req_wifi_sta_get_negotiated_phymode */ - 47, /* field[47] = req_wifi_sta_get_rssi */ + 48, /* field[48] = req_wifi_sta_get_negotiated_phymode */ + 49, /* field[49] = req_wifi_sta_get_rssi */ + 66, /* field[66] = req_wifi_sta_itwt_get_flow_id_status */ + 67, /* field[67] = req_wifi_sta_itwt_send_probe_req */ + 68, /* field[68] = req_wifi_sta_itwt_set_target_wake_time_offset */ + 63, /* field[63] = req_wifi_sta_itwt_setup */ + 65, /* field[65] = req_wifi_sta_itwt_suspend */ + 64, /* field[64] = req_wifi_sta_itwt_teardown */ + 62, /* field[62] = req_wifi_sta_twt_config */ 17, /* field[17] = req_wifi_start */ 18, /* field[18] = req_wifi_stop */ - 71, /* field[71] = resp_config_heartbeat */ - 113, /* field[113] = resp_get_coprocessor_fwversion */ - 116, /* field[116] = resp_get_dhcp_dns */ - 60, /* field[60] = resp_get_mac_address */ - 70, /* field[70] = resp_get_wifi_max_tx_power */ - 62, /* field[62] = resp_get_wifi_mode */ - 66, /* field[66] = resp_ota_begin */ - 68, /* field[68] = resp_ota_end */ - 67, /* field[67] = resp_ota_write */ - 115, /* field[115] = resp_set_dhcp_dns */ - 61, /* field[61] = resp_set_mac_address */ - 69, /* field[69] = resp_set_wifi_max_tx_power */ - 63, /* field[63] = resp_set_wifi_mode */ - 98, /* field[98] = resp_wifi_ap_get_sta_aid */ - 97, /* field[97] = resp_wifi_ap_get_sta_list */ - 84, /* field[84] = resp_wifi_clear_ap_list */ - 86, /* field[86] = resp_wifi_clear_fast_connect */ - 76, /* field[76] = resp_wifi_connect */ - 87, /* field[87] = resp_wifi_deauth_sta */ - 73, /* field[73] = resp_wifi_deinit */ - 77, /* field[77] = resp_wifi_disconnect */ - 110, /* field[110] = resp_wifi_get_band */ - 112, /* field[112] = resp_wifi_get_bandmode */ - 92, /* field[92] = resp_wifi_get_bandwidth */ - 108, /* field[108] = resp_wifi_get_bandwidths */ - 94, /* field[94] = resp_wifi_get_channel */ - 79, /* field[79] = resp_wifi_get_config */ - 96, /* field[96] = resp_wifi_get_country */ - 101, /* field[101] = resp_wifi_get_country_code */ - 90, /* field[90] = resp_wifi_get_protocol */ - 106, /* field[106] = resp_wifi_get_protocols */ - 65, /* field[65] = resp_wifi_get_ps */ - 72, /* field[72] = resp_wifi_init */ - 85, /* field[85] = resp_wifi_restore */ - 82, /* field[82] = resp_wifi_scan_get_ap_num */ - 114, /* field[114] = resp_wifi_scan_get_ap_record */ - 83, /* field[83] = resp_wifi_scan_get_ap_records */ - 80, /* field[80] = resp_wifi_scan_start */ - 81, /* field[81] = resp_wifi_scan_stop */ - 109, /* field[109] = resp_wifi_set_band */ - 111, /* field[111] = resp_wifi_set_bandmode */ - 91, /* field[91] = resp_wifi_set_bandwidth */ - 107, /* field[107] = resp_wifi_set_bandwidths */ - 93, /* field[93] = resp_wifi_set_channel */ - 78, /* field[78] = resp_wifi_set_config */ - 95, /* field[95] = resp_wifi_set_country */ - 100, /* field[100] = resp_wifi_set_country_code */ - 89, /* field[89] = resp_wifi_set_protocol */ - 105, /* field[105] = resp_wifi_set_protocols */ - 64, /* field[64] = resp_wifi_set_ps */ - 99, /* field[99] = resp_wifi_set_storage */ - 102, /* field[102] = resp_wifi_sta_get_aid */ - 88, /* field[88] = resp_wifi_sta_get_ap_info */ - 103, /* field[103] = resp_wifi_sta_get_negotiated_phymode */ - 104, /* field[104] = resp_wifi_sta_get_rssi */ - 74, /* field[74] = resp_wifi_start */ - 75, /* field[75] = resp_wifi_stop */ + 80, /* field[80] = resp_config_heartbeat */ + 124, /* field[124] = resp_get_coprocessor_fwversion */ + 127, /* field[127] = resp_get_dhcp_dns */ + 69, /* field[69] = resp_get_mac_address */ + 79, /* field[79] = resp_get_wifi_max_tx_power */ + 71, /* field[71] = resp_get_wifi_mode */ + 75, /* field[75] = resp_ota_begin */ + 77, /* field[77] = resp_ota_end */ + 76, /* field[76] = resp_ota_write */ + 126, /* field[126] = resp_set_dhcp_dns */ + 70, /* field[70] = resp_set_mac_address */ + 78, /* field[78] = resp_set_wifi_max_tx_power */ + 72, /* field[72] = resp_set_wifi_mode */ + 107, /* field[107] = resp_wifi_ap_get_sta_aid */ + 106, /* field[106] = resp_wifi_ap_get_sta_list */ + 93, /* field[93] = resp_wifi_clear_ap_list */ + 95, /* field[95] = resp_wifi_clear_fast_connect */ + 85, /* field[85] = resp_wifi_connect */ + 96, /* field[96] = resp_wifi_deauth_sta */ + 82, /* field[82] = resp_wifi_deinit */ + 86, /* field[86] = resp_wifi_disconnect */ + 121, /* field[121] = resp_wifi_get_band */ + 123, /* field[123] = resp_wifi_get_bandmode */ + 101, /* field[101] = resp_wifi_get_bandwidth */ + 119, /* field[119] = resp_wifi_get_bandwidths */ + 103, /* field[103] = resp_wifi_get_channel */ + 88, /* field[88] = resp_wifi_get_config */ + 105, /* field[105] = resp_wifi_get_country */ + 112, /* field[112] = resp_wifi_get_country_code */ + 110, /* field[110] = resp_wifi_get_inactive_time */ + 99, /* field[99] = resp_wifi_get_protocol */ + 117, /* field[117] = resp_wifi_get_protocols */ + 74, /* field[74] = resp_wifi_get_ps */ + 81, /* field[81] = resp_wifi_init */ + 94, /* field[94] = resp_wifi_restore */ + 91, /* field[91] = resp_wifi_scan_get_ap_num */ + 125, /* field[125] = resp_wifi_scan_get_ap_record */ + 92, /* field[92] = resp_wifi_scan_get_ap_records */ + 89, /* field[89] = resp_wifi_scan_start */ + 90, /* field[90] = resp_wifi_scan_stop */ + 120, /* field[120] = resp_wifi_set_band */ + 122, /* field[122] = resp_wifi_set_bandmode */ + 100, /* field[100] = resp_wifi_set_bandwidth */ + 118, /* field[118] = resp_wifi_set_bandwidths */ + 102, /* field[102] = resp_wifi_set_channel */ + 87, /* field[87] = resp_wifi_set_config */ + 104, /* field[104] = resp_wifi_set_country */ + 111, /* field[111] = resp_wifi_set_country_code */ + 109, /* field[109] = resp_wifi_set_inactive_time */ + 98, /* field[98] = resp_wifi_set_protocol */ + 116, /* field[116] = resp_wifi_set_protocols */ + 73, /* field[73] = resp_wifi_set_ps */ + 108, /* field[108] = resp_wifi_set_storage */ + 113, /* field[113] = resp_wifi_sta_get_aid */ + 97, /* field[97] = resp_wifi_sta_get_ap_info */ + 114, /* field[114] = resp_wifi_sta_get_negotiated_phymode */ + 115, /* field[115] = resp_wifi_sta_get_rssi */ + 132, /* field[132] = resp_wifi_sta_itwt_get_flow_id_status */ + 133, /* field[133] = resp_wifi_sta_itwt_send_probe_req */ + 134, /* field[134] = resp_wifi_sta_itwt_set_target_wake_time_offset */ + 129, /* field[129] = resp_wifi_sta_itwt_setup */ + 131, /* field[131] = resp_wifi_sta_itwt_suspend */ + 130, /* field[130] = resp_wifi_sta_itwt_teardown */ + 128, /* field[128] = resp_wifi_sta_twt_config */ + 83, /* field[83] = resp_wifi_start */ + 84, /* field[84] = resp_wifi_stop */ 2, /* field[2] = uid */ }; -static const ProtobufCIntRange rpc__number_ranges[16 + 1] = +static const ProtobufCIntRange rpc__number_ranges[18 + 1] = { { 1, 0 }, { 257, 3 }, { 270, 7 }, { 297, 32 }, { 311, 40 }, - { 334, 43 }, - { 338, 45 }, - { 341, 47 }, - { 513, 60 }, - { 526, 64 }, - { 553, 89 }, - { 567, 97 }, - { 590, 100 }, - { 594, 102 }, - { 597, 104 }, - { 769, 117 }, - { 0, 126 } + { 325, 43 }, + { 334, 45 }, + { 338, 47 }, + { 341, 49 }, + { 513, 69 }, + { 526, 73 }, + { 553, 98 }, + { 567, 106 }, + { 581, 109 }, + { 590, 111 }, + { 594, 113 }, + { 597, 115 }, + { 769, 135 }, + { 0, 148 } }; const ProtobufCMessageDescriptor rpc__descriptor = { @@ -18377,10 +20910,10 @@ const ProtobufCMessageDescriptor rpc__descriptor = "Rpc", "", sizeof(Rpc), - 126, + 148, rpc__field_descriptors, rpc__field_indices_by_name, - 16, rpc__number_ranges, + 18, rpc__number_ranges, (ProtobufCMessageInit) rpc__init, NULL,NULL,NULL /* reserved[123] */ }; @@ -18554,7 +21087,7 @@ const ProtobufCEnumDescriptor rpc_type__descriptor = rpc_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; -static const ProtobufCEnumValue rpc_id__enum_values_by_number[188] = +static const ProtobufCEnumValue rpc_id__enum_values_by_number[206] = { { "MsgId_Invalid", "RPC_ID__MsgId_Invalid", 0 }, { "Req_Base", "RPC_ID__Req_Base", 256 }, @@ -18644,7 +21177,14 @@ static const ProtobufCEnumValue rpc_id__enum_values_by_number[188] = { "Req_WifiScanGetApRecord", "RPC_ID__Req_WifiScanGetApRecord", 351 }, { "Req_SetDhcpDnsStatus", "RPC_ID__Req_SetDhcpDnsStatus", 352 }, { "Req_GetDhcpDnsStatus", "RPC_ID__Req_GetDhcpDnsStatus", 353 }, - { "Req_Max", "RPC_ID__Req_Max", 354 }, + { "Req_WifiStaTwtConfig", "RPC_ID__Req_WifiStaTwtConfig", 354 }, + { "Req_WifiStaItwtSetup", "RPC_ID__Req_WifiStaItwtSetup", 355 }, + { "Req_WifiStaItwtTeardown", "RPC_ID__Req_WifiStaItwtTeardown", 356 }, + { "Req_WifiStaItwtSuspend", "RPC_ID__Req_WifiStaItwtSuspend", 357 }, + { "Req_WifiStaItwtGetFlowIdStatus", "RPC_ID__Req_WifiStaItwtGetFlowIdStatus", 358 }, + { "Req_WifiStaItwtSendProbeReq", "RPC_ID__Req_WifiStaItwtSendProbeReq", 359 }, + { "Req_WifiStaItwtSetTargetWakeTimeOffset", "RPC_ID__Req_WifiStaItwtSetTargetWakeTimeOffset", 360 }, + { "Req_Max", "RPC_ID__Req_Max", 361 }, { "Resp_Base", "RPC_ID__Resp_Base", 512 }, { "Resp_GetMACAddress", "RPC_ID__Resp_GetMACAddress", 513 }, { "Resp_SetMacAddress", "RPC_ID__Resp_SetMacAddress", 514 }, @@ -18732,7 +21272,14 @@ static const ProtobufCEnumValue rpc_id__enum_values_by_number[188] = { "Resp_WifiScanGetApRecord", "RPC_ID__Resp_WifiScanGetApRecord", 607 }, { "Resp_SetDhcpDnsStatus", "RPC_ID__Resp_SetDhcpDnsStatus", 608 }, { "Resp_GetDhcpDnsStatus", "RPC_ID__Resp_GetDhcpDnsStatus", 609 }, - { "Resp_Max", "RPC_ID__Resp_Max", 610 }, + { "Resp_WifiStaTwtConfig", "RPC_ID__Resp_WifiStaTwtConfig", 610 }, + { "Resp_WifiStaItwtSetup", "RPC_ID__Resp_WifiStaItwtSetup", 611 }, + { "Resp_WifiStaItwtTeardown", "RPC_ID__Resp_WifiStaItwtTeardown", 612 }, + { "Resp_WifiStaItwtSuspend", "RPC_ID__Resp_WifiStaItwtSuspend", 613 }, + { "Resp_WifiStaItwtGetFlowIdStatus", "RPC_ID__Resp_WifiStaItwtGetFlowIdStatus", 614 }, + { "Resp_WifiStaItwtSendProbeReq", "RPC_ID__Resp_WifiStaItwtSendProbeReq", 615 }, + { "Resp_WifiStaItwtSetTargetWakeTimeOffset", "RPC_ID__Resp_WifiStaItwtSetTargetWakeTimeOffset", 616 }, + { "Resp_Max", "RPC_ID__Resp_Max", 617 }, { "Event_Base", "RPC_ID__Event_Base", 768 }, { "Event_ESPInit", "RPC_ID__Event_ESPInit", 769 }, { "Event_Heartbeat", "RPC_ID__Event_Heartbeat", 770 }, @@ -18743,24 +21290,32 @@ static const ProtobufCEnumValue rpc_id__enum_values_by_number[188] = { "Event_StaConnected", "RPC_ID__Event_StaConnected", 775 }, { "Event_StaDisconnected", "RPC_ID__Event_StaDisconnected", 776 }, { "Event_DhcpDnsStatus", "RPC_ID__Event_DhcpDnsStatus", 777 }, - { "Event_Max", "RPC_ID__Event_Max", 778 }, + { "Event_StaItwtSetup", "RPC_ID__Event_StaItwtSetup", 778 }, + { "Event_StaItwtTeardown", "RPC_ID__Event_StaItwtTeardown", 779 }, + { "Event_StaItwtSuspend", "RPC_ID__Event_StaItwtSuspend", 780 }, + { "Event_StaItwtProbe", "RPC_ID__Event_StaItwtProbe", 781 }, + { "Event_Max", "RPC_ID__Event_Max", 782 }, }; static const ProtobufCIntRange rpc_id__value_ranges[] = { -{0, 0},{256, 1},{270, 6},{297, 31},{512, 89},{526, 94},{553, 119},{768, 177},{0, 188} -}; -static const ProtobufCEnumValueIndex rpc_id__enum_values_by_name[188] = -{ - { "Event_AP_StaConnected", 180 }, - { "Event_AP_StaDisconnected", 181 }, - { "Event_Base", 177 }, - { "Event_DhcpDnsStatus", 186 }, - { "Event_ESPInit", 178 }, - { "Event_Heartbeat", 179 }, - { "Event_Max", 187 }, - { "Event_StaConnected", 184 }, - { "Event_StaDisconnected", 185 }, - { "Event_StaScanDone", 183 }, - { "Event_WifiEventNoArgs", 182 }, +{0, 0},{256, 1},{270, 6},{297, 31},{512, 96},{526, 101},{553, 126},{768, 191},{0, 206} +}; +static const ProtobufCEnumValueIndex rpc_id__enum_values_by_name[206] = +{ + { "Event_AP_StaConnected", 194 }, + { "Event_AP_StaDisconnected", 195 }, + { "Event_Base", 191 }, + { "Event_DhcpDnsStatus", 200 }, + { "Event_ESPInit", 192 }, + { "Event_Heartbeat", 193 }, + { "Event_Max", 205 }, + { "Event_StaConnected", 198 }, + { "Event_StaDisconnected", 199 }, + { "Event_StaItwtProbe", 204 }, + { "Event_StaItwtSetup", 201 }, + { "Event_StaItwtSuspend", 203 }, + { "Event_StaItwtTeardown", 202 }, + { "Event_StaScanDone", 197 }, + { "Event_WifiEventNoArgs", 196 }, { "MsgId_Invalid", 0 }, { "Req_Base", 1 }, { "Req_ConfigHeartbeat", 13 }, @@ -18768,7 +21323,7 @@ static const ProtobufCEnumValueIndex rpc_id__enum_values_by_name[188] = { "Req_GetDhcpDnsStatus", 87 }, { "Req_GetMACAddress", 2 }, { "Req_GetWifiMode", 4 }, - { "Req_Max", 88 }, + { "Req_Max", 95 }, { "Req_OTABegin", 8 }, { "Req_OTAEnd", 10 }, { "Req_OTAWrite", 9 }, @@ -18847,97 +21402,111 @@ static const ProtobufCEnumValueIndex rpc_id__enum_values_by_name[188] = { "Req_WifiStaGetApInfo", 30 }, { "Req_WifiStaGetNegotiatedPhymode", 73 }, { "Req_WifiStaGetRssi", 75 }, + { "Req_WifiStaItwtGetFlowIdStatus", 92 }, + { "Req_WifiStaItwtSendProbeReq", 93 }, + { "Req_WifiStaItwtSetTargetWakeTimeOffset", 94 }, + { "Req_WifiStaItwtSetup", 89 }, + { "Req_WifiStaItwtSuspend", 91 }, + { "Req_WifiStaItwtTeardown", 90 }, + { "Req_WifiStaTwtConfig", 88 }, { "Req_WifiStart", 16 }, { "Req_WifiStatisDump", 61 }, { "Req_WifiStop", 17 }, - { "Resp_Base", 89 }, - { "Resp_ConfigHeartbeat", 101 }, - { "Resp_GetCoprocessorFwVersion", 172 }, - { "Resp_GetDhcpDnsStatus", 175 }, - { "Resp_GetMACAddress", 90 }, - { "Resp_GetWifiMode", 92 }, - { "Resp_Max", 176 }, - { "Resp_OTABegin", 96 }, - { "Resp_OTAEnd", 98 }, - { "Resp_OTAWrite", 97 }, - { "Resp_SetDhcpDnsStatus", 174 }, - { "Resp_SetMacAddress", 91 }, - { "Resp_SetWifiMode", 93 }, - { "Resp_Wifi80211Tx", 139 }, - { "Resp_WifiApGetStaAid", 134 }, - { "Resp_WifiApGetStaList", 133 }, - { "Resp_WifiClearApList", 114 }, - { "Resp_WifiClearFastConnect", 116 }, - { "Resp_WifiConfig11bRate", 154 }, - { "Resp_WifiConfig80211TxRate", 158 }, - { "Resp_WifiConnect", 106 }, - { "Resp_WifiConnectionlessModuleSetWakeInterval", 155 }, - { "Resp_WifiDeauthSta", 117 }, - { "Resp_WifiDeinit", 103 }, - { "Resp_WifiDisablePmfConfig", 159 }, - { "Resp_WifiDisconnect", 107 }, - { "Resp_WifiFtmEndSession", 152 }, - { "Resp_WifiFtmInitiateSession", 151 }, - { "Resp_WifiFtmRespSetOffset", 153 }, - { "Resp_WifiGetAnt", 145 }, - { "Resp_WifiGetAntGpio", 143 }, - { "Resp_WifiGetBand", 169 }, - { "Resp_WifiGetBandMode", 171 }, - { "Resp_WifiGetBandwidth", 122 }, - { "Resp_WifiGetBandwidths", 167 }, - { "Resp_WifiGetChannel", 124 }, - { "Resp_WifiGetConfig", 109 }, - { "Resp_WifiGetCountry", 126 }, - { "Resp_WifiGetCountryCode", 157 }, - { "Resp_WifiGetEventMask", 138 }, - { "Resp_WifiGetInactiveTime", 148 }, - { "Resp_WifiGetMaxTxPower", 100 }, - { "Resp_WifiGetPromiscuous", 128 }, - { "Resp_WifiGetPromiscuousCtrlFilter", 132 }, - { "Resp_WifiGetPromiscuousFilter", 130 }, - { "Resp_WifiGetProtocol", 120 }, - { "Resp_WifiGetProtocols", 165 }, - { "Resp_WifiGetPs", 95 }, - { "Resp_WifiGetTsfTime", 146 }, - { "Resp_WifiInit", 102 }, - { "Resp_WifiRestore", 115 }, - { "Resp_WifiScanGetApNum", 112 }, - { "Resp_WifiScanGetApRecord", 173 }, - { "Resp_WifiScanGetApRecords", 113 }, - { "Resp_WifiScanStart", 110 }, - { "Resp_WifiScanStop", 111 }, - { "Resp_WifiSetAnt", 144 }, - { "Resp_WifiSetAntGpio", 142 }, - { "Resp_WifiSetBand", 168 }, - { "Resp_WifiSetBandMode", 170 }, - { "Resp_WifiSetBandwidth", 121 }, - { "Resp_WifiSetBandwidths", 166 }, - { "Resp_WifiSetChannel", 123 }, - { "Resp_WifiSetConfig", 108 }, - { "Resp_WifiSetCountry", 125 }, - { "Resp_WifiSetCountryCode", 156 }, - { "Resp_WifiSetCsi", 141 }, - { "Resp_WifiSetCsiConfig", 140 }, - { "Resp_WifiSetDynamicCs", 162 }, - { "Resp_WifiSetEventMask", 137 }, - { "Resp_WifiSetInactiveTime", 147 }, - { "Resp_WifiSetMaxTxPower", 99 }, - { "Resp_WifiSetPromiscuous", 127 }, - { "Resp_WifiSetPromiscuousCtrlFilter", 131 }, - { "Resp_WifiSetPromiscuousFilter", 129 }, - { "Resp_WifiSetProtocol", 119 }, - { "Resp_WifiSetProtocols", 164 }, - { "Resp_WifiSetPs", 94 }, - { "Resp_WifiSetRssiThreshold", 150 }, - { "Resp_WifiSetStorage", 135 }, - { "Resp_WifiSetVendorIe", 136 }, - { "Resp_WifiStaGetAid", 160 }, - { "Resp_WifiStaGetApInfo", 118 }, - { "Resp_WifiStaGetNegotiatedPhymode", 161 }, - { "Resp_WifiStaGetRssi", 163 }, - { "Resp_WifiStart", 104 }, - { "Resp_WifiStatisDump", 149 }, - { "Resp_WifiStop", 105 }, + { "Resp_Base", 96 }, + { "Resp_ConfigHeartbeat", 108 }, + { "Resp_GetCoprocessorFwVersion", 179 }, + { "Resp_GetDhcpDnsStatus", 182 }, + { "Resp_GetMACAddress", 97 }, + { "Resp_GetWifiMode", 99 }, + { "Resp_Max", 190 }, + { "Resp_OTABegin", 103 }, + { "Resp_OTAEnd", 105 }, + { "Resp_OTAWrite", 104 }, + { "Resp_SetDhcpDnsStatus", 181 }, + { "Resp_SetMacAddress", 98 }, + { "Resp_SetWifiMode", 100 }, + { "Resp_Wifi80211Tx", 146 }, + { "Resp_WifiApGetStaAid", 141 }, + { "Resp_WifiApGetStaList", 140 }, + { "Resp_WifiClearApList", 121 }, + { "Resp_WifiClearFastConnect", 123 }, + { "Resp_WifiConfig11bRate", 161 }, + { "Resp_WifiConfig80211TxRate", 165 }, + { "Resp_WifiConnect", 113 }, + { "Resp_WifiConnectionlessModuleSetWakeInterval", 162 }, + { "Resp_WifiDeauthSta", 124 }, + { "Resp_WifiDeinit", 110 }, + { "Resp_WifiDisablePmfConfig", 166 }, + { "Resp_WifiDisconnect", 114 }, + { "Resp_WifiFtmEndSession", 159 }, + { "Resp_WifiFtmInitiateSession", 158 }, + { "Resp_WifiFtmRespSetOffset", 160 }, + { "Resp_WifiGetAnt", 152 }, + { "Resp_WifiGetAntGpio", 150 }, + { "Resp_WifiGetBand", 176 }, + { "Resp_WifiGetBandMode", 178 }, + { "Resp_WifiGetBandwidth", 129 }, + { "Resp_WifiGetBandwidths", 174 }, + { "Resp_WifiGetChannel", 131 }, + { "Resp_WifiGetConfig", 116 }, + { "Resp_WifiGetCountry", 133 }, + { "Resp_WifiGetCountryCode", 164 }, + { "Resp_WifiGetEventMask", 145 }, + { "Resp_WifiGetInactiveTime", 155 }, + { "Resp_WifiGetMaxTxPower", 107 }, + { "Resp_WifiGetPromiscuous", 135 }, + { "Resp_WifiGetPromiscuousCtrlFilter", 139 }, + { "Resp_WifiGetPromiscuousFilter", 137 }, + { "Resp_WifiGetProtocol", 127 }, + { "Resp_WifiGetProtocols", 172 }, + { "Resp_WifiGetPs", 102 }, + { "Resp_WifiGetTsfTime", 153 }, + { "Resp_WifiInit", 109 }, + { "Resp_WifiRestore", 122 }, + { "Resp_WifiScanGetApNum", 119 }, + { "Resp_WifiScanGetApRecord", 180 }, + { "Resp_WifiScanGetApRecords", 120 }, + { "Resp_WifiScanStart", 117 }, + { "Resp_WifiScanStop", 118 }, + { "Resp_WifiSetAnt", 151 }, + { "Resp_WifiSetAntGpio", 149 }, + { "Resp_WifiSetBand", 175 }, + { "Resp_WifiSetBandMode", 177 }, + { "Resp_WifiSetBandwidth", 128 }, + { "Resp_WifiSetBandwidths", 173 }, + { "Resp_WifiSetChannel", 130 }, + { "Resp_WifiSetConfig", 115 }, + { "Resp_WifiSetCountry", 132 }, + { "Resp_WifiSetCountryCode", 163 }, + { "Resp_WifiSetCsi", 148 }, + { "Resp_WifiSetCsiConfig", 147 }, + { "Resp_WifiSetDynamicCs", 169 }, + { "Resp_WifiSetEventMask", 144 }, + { "Resp_WifiSetInactiveTime", 154 }, + { "Resp_WifiSetMaxTxPower", 106 }, + { "Resp_WifiSetPromiscuous", 134 }, + { "Resp_WifiSetPromiscuousCtrlFilter", 138 }, + { "Resp_WifiSetPromiscuousFilter", 136 }, + { "Resp_WifiSetProtocol", 126 }, + { "Resp_WifiSetProtocols", 171 }, + { "Resp_WifiSetPs", 101 }, + { "Resp_WifiSetRssiThreshold", 157 }, + { "Resp_WifiSetStorage", 142 }, + { "Resp_WifiSetVendorIe", 143 }, + { "Resp_WifiStaGetAid", 167 }, + { "Resp_WifiStaGetApInfo", 125 }, + { "Resp_WifiStaGetNegotiatedPhymode", 168 }, + { "Resp_WifiStaGetRssi", 170 }, + { "Resp_WifiStaItwtGetFlowIdStatus", 187 }, + { "Resp_WifiStaItwtSendProbeReq", 188 }, + { "Resp_WifiStaItwtSetTargetWakeTimeOffset", 189 }, + { "Resp_WifiStaItwtSetup", 184 }, + { "Resp_WifiStaItwtSuspend", 186 }, + { "Resp_WifiStaItwtTeardown", 185 }, + { "Resp_WifiStaTwtConfig", 183 }, + { "Resp_WifiStart", 111 }, + { "Resp_WifiStatisDump", 156 }, + { "Resp_WifiStop", 112 }, }; const ProtobufCEnumDescriptor rpc_id__descriptor = { @@ -18946,9 +21515,9 @@ const ProtobufCEnumDescriptor rpc_id__descriptor = "RpcId", "RpcId", "", - 188, + 206, rpc_id__enum_values_by_number, - 188, + 206, rpc_id__enum_values_by_name, 8, rpc_id__value_ranges, diff --git a/common/proto/esp_hosted_rpc.pb-c.h b/common/proto/esp_hosted_rpc.pb-c.h index a6f90296..33d18165 100644 --- a/common/proto/esp_hosted_rpc.pb-c.h +++ b/common/proto/esp_hosted_rpc.pb-c.h @@ -59,6 +59,8 @@ typedef struct WifiEventApWpsRgFailReason WifiEventApWpsRgFailReason; typedef struct WifiEventApWpsRgSuccess WifiEventApWpsRgSuccess; typedef struct WifiProtocols WifiProtocols; typedef struct WifiBandwidths WifiBandwidths; +typedef struct WifiItwtSetupConfig WifiItwtSetupConfig; +typedef struct WifiTwtConfig WifiTwtConfig; typedef struct ConnectedSTAList ConnectedSTAList; typedef struct RpcReqGetMacAddress RpcReqGetMacAddress; typedef struct RpcRespGetMacAddress RpcRespGetMacAddress; @@ -168,6 +170,24 @@ typedef struct RpcReqWifiSetBandMode RpcReqWifiSetBandMode; typedef struct RpcRespWifiSetBandMode RpcRespWifiSetBandMode; typedef struct RpcReqWifiGetBandMode RpcReqWifiGetBandMode; typedef struct RpcRespWifiGetBandMode RpcRespWifiGetBandMode; +typedef struct RpcReqWifiSetInactiveTime RpcReqWifiSetInactiveTime; +typedef struct RpcRespWifiSetInactiveTime RpcRespWifiSetInactiveTime; +typedef struct RpcReqWifiGetInactiveTime RpcReqWifiGetInactiveTime; +typedef struct RpcRespWifiGetInactiveTime RpcRespWifiGetInactiveTime; +typedef struct RpcReqWifiStaItwtSetup RpcReqWifiStaItwtSetup; +typedef struct RpcRespWifiStaItwtSetup RpcRespWifiStaItwtSetup; +typedef struct RpcReqWifiStaItwtTeardown RpcReqWifiStaItwtTeardown; +typedef struct RpcRespWifiStaItwtTeardown RpcRespWifiStaItwtTeardown; +typedef struct RpcReqWifiStaItwtSuspend RpcReqWifiStaItwtSuspend; +typedef struct RpcRespWifiStaItwtSuspend RpcRespWifiStaItwtSuspend; +typedef struct RpcReqWifiStaItwtGetFlowIdStatus RpcReqWifiStaItwtGetFlowIdStatus; +typedef struct RpcRespWifiStaItwtGetFlowIdStatus RpcRespWifiStaItwtGetFlowIdStatus; +typedef struct RpcReqWifiStaItwtSendProbeReq RpcReqWifiStaItwtSendProbeReq; +typedef struct RpcRespWifiStaItwtSendProbeReq RpcRespWifiStaItwtSendProbeReq; +typedef struct RpcReqWifiStaItwtSetTargetWakeTimeOffset RpcReqWifiStaItwtSetTargetWakeTimeOffset; +typedef struct RpcRespWifiStaItwtSetTargetWakeTimeOffset RpcRespWifiStaItwtSetTargetWakeTimeOffset; +typedef struct RpcReqWifiStaTwtConfig RpcReqWifiStaTwtConfig; +typedef struct RpcRespWifiStaTwtConfig RpcRespWifiStaTwtConfig; typedef struct RpcReqGetCoprocessorFwVersion RpcReqGetCoprocessorFwVersion; typedef struct RpcRespGetCoprocessorFwVersion RpcRespGetCoprocessorFwVersion; typedef struct RpcReqSetDhcpDnsStatus RpcReqSetDhcpDnsStatus; @@ -183,6 +203,10 @@ typedef struct RpcEventStaScanDone RpcEventStaScanDone; typedef struct RpcEventStaConnected RpcEventStaConnected; typedef struct RpcEventStaDisconnected RpcEventStaDisconnected; typedef struct RpcEventDhcpDnsStatus RpcEventDhcpDnsStatus; +typedef struct RpcEventStaItwtSetup RpcEventStaItwtSetup; +typedef struct RpcEventStaItwtTeardown RpcEventStaItwtTeardown; +typedef struct RpcEventStaItwtSuspend RpcEventStaItwtSuspend; +typedef struct RpcEventStaItwtProbe RpcEventStaItwtProbe; typedef struct Rpc Rpc; @@ -597,14 +621,42 @@ typedef enum _RpcId { *0x161 */ RPC_ID__Req_GetDhcpDnsStatus = 353, + /* + *0x162 + */ + RPC_ID__Req_WifiStaTwtConfig = 354, + /* + *0x163 + */ + RPC_ID__Req_WifiStaItwtSetup = 355, + /* + *0x164 + */ + RPC_ID__Req_WifiStaItwtTeardown = 356, + /* + *0x165 + */ + RPC_ID__Req_WifiStaItwtSuspend = 357, + /* + *0x166 + */ + RPC_ID__Req_WifiStaItwtGetFlowIdStatus = 358, + /* + *0x167 + */ + RPC_ID__Req_WifiStaItwtSendProbeReq = 359, + /* + *0x168 + */ + RPC_ID__Req_WifiStaItwtSetTargetWakeTimeOffset = 360, /* * Add new control path command response before Req_Max * and update Req_Max */ /* - *0x162 + *0x169 */ - RPC_ID__Req_Max = 354, + RPC_ID__Req_Max = 361, /* ** Response Msgs * */ @@ -708,11 +760,18 @@ typedef enum _RpcId { RPC_ID__Resp_WifiScanGetApRecord = 607, RPC_ID__Resp_SetDhcpDnsStatus = 608, RPC_ID__Resp_GetDhcpDnsStatus = 609, + RPC_ID__Resp_WifiStaTwtConfig = 610, + RPC_ID__Resp_WifiStaItwtSetup = 611, + RPC_ID__Resp_WifiStaItwtTeardown = 612, + RPC_ID__Resp_WifiStaItwtSuspend = 613, + RPC_ID__Resp_WifiStaItwtGetFlowIdStatus = 614, + RPC_ID__Resp_WifiStaItwtSendProbeReq = 615, + RPC_ID__Resp_WifiStaItwtSetTargetWakeTimeOffset = 616, /* * Add new control path command response before Resp_Max * and update Resp_Max */ - RPC_ID__Resp_Max = 610, + RPC_ID__Resp_Max = 617, /* ** Event Msgs * */ @@ -726,11 +785,15 @@ typedef enum _RpcId { RPC_ID__Event_StaConnected = 775, RPC_ID__Event_StaDisconnected = 776, RPC_ID__Event_DhcpDnsStatus = 777, + RPC_ID__Event_StaItwtSetup = 778, + RPC_ID__Event_StaItwtTeardown = 779, + RPC_ID__Event_StaItwtSuspend = 780, + RPC_ID__Event_StaItwtProbe = 781, /* * Add new control path command notification before Event_Max * and update Event_Max */ - RPC_ID__Event_Max = 778 + RPC_ID__Event_Max = 782 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(RPC_ID) } RpcId; @@ -2083,6 +2146,48 @@ struct WifiBandwidths , 0, 0 } +struct WifiItwtSetupConfig +{ + ProtobufCMessage base; + uint32_t setup_cmd; + /* + * uint16_t trigger : 1; **< 1: a trigger-enabled individual TWT, 0: a non-trigger-enabled individual TWT * + * uint16_t flow_type : 1; **< 0: an announced individual TWT, 1: an unannounced individual TWT * + * uint16_t flow_id : 3; **< When set up an individual TWT agreement, the flow id will be assigned by AP after a successful agreement setup. + * flow_id could be specified to a value in the range of [0, 7], but it might be changed by AP in the response. + * When change TWT parameters of the existing TWT agreement, flow_id should be an existing one. The value range is [0, 7]. * + * uint16_t wake_invl_expn : 5; **< Individual TWT Wake Interval Exponent. The value range is [0, 31]. * + * uint16_t wake_duration_unit : 1; **< Individual TWT Wake duration unit, 0: 256us 1: TU (TU = 1024us)* + * uint16_t reserved : 5; **< bit: 11.15 reserved * + */ + uint32_t bitmask_1; + uint32_t min_wake_dura; + uint32_t wake_invl_mant; + uint32_t twt_id; + uint32_t timeout_time_ms; +}; +#define WIFI_ITWT_SETUP_CONFIG__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&wifi_itwt_setup_config__descriptor) \ + , 0, 0, 0, 0, 0, 0 } + + +struct WifiTwtConfig +{ + ProtobufCMessage base; + /* + **< post twt wakeup event + */ + protobuf_c_boolean post_wakeup_event; + /* + **< twt enable send qos null to keep alive + */ + protobuf_c_boolean twt_enable_keep_alive; +}; +#define WIFI_TWT_CONFIG__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&wifi_twt_config__descriptor) \ + , 0, 0 } + + struct ConnectedSTAList { ProtobufCMessage base; @@ -3194,6 +3299,189 @@ struct RpcRespWifiGetBandMode , 0, 0 } +struct RpcReqWifiSetInactiveTime +{ + ProtobufCMessage base; + uint32_t ifx; + uint32_t sec; +}; +#define RPC__REQ__WIFI_SET_INACTIVE_TIME__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_set_inactive_time__descriptor) \ + , 0, 0 } + + +struct RpcRespWifiSetInactiveTime +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__WIFI_SET_INACTIVE_TIME__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_set_inactive_time__descriptor) \ + , 0 } + + +struct RpcReqWifiGetInactiveTime +{ + ProtobufCMessage base; + uint32_t ifx; +}; +#define RPC__REQ__WIFI_GET_INACTIVE_TIME__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_get_inactive_time__descriptor) \ + , 0 } + + +struct RpcRespWifiGetInactiveTime +{ + ProtobufCMessage base; + int32_t resp; + uint32_t sec; +}; +#define RPC__RESP__WIFI_GET_INACTIVE_TIME__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_get_inactive_time__descriptor) \ + , 0, 0 } + + +struct RpcReqWifiStaItwtSetup +{ + ProtobufCMessage base; + WifiItwtSetupConfig *setup_config; +}; +#define RPC__REQ__WIFI_STA_ITWT_SETUP__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_itwt_setup__descriptor) \ + , NULL } + + +struct RpcRespWifiStaItwtSetup +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__WIFI_STA_ITWT_SETUP__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_itwt_setup__descriptor) \ + , 0 } + + +struct RpcReqWifiStaItwtTeardown +{ + ProtobufCMessage base; + int32_t flow_id; +}; +#define RPC__REQ__WIFI_STA_ITWT_TEARDOWN__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_itwt_teardown__descriptor) \ + , 0 } + + +struct RpcRespWifiStaItwtTeardown +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__WIFI_STA_ITWT_TEARDOWN__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_itwt_teardown__descriptor) \ + , 0 } + + +struct RpcReqWifiStaItwtSuspend +{ + ProtobufCMessage base; + int32_t flow_id; + int32_t suspend_time_ms; +}; +#define RPC__REQ__WIFI_STA_ITWT_SUSPEND__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_itwt_suspend__descriptor) \ + , 0, 0 } + + +struct RpcRespWifiStaItwtSuspend +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__WIFI_STA_ITWT_SUSPEND__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_itwt_suspend__descriptor) \ + , 0 } + + +struct RpcReqWifiStaItwtGetFlowIdStatus +{ + ProtobufCMessage base; +}; +#define RPC__REQ__WIFI_STA_ITWT_GET_FLOW_ID_STATUS__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_itwt_get_flow_id_status__descriptor) \ + } + + +struct RpcRespWifiStaItwtGetFlowIdStatus +{ + ProtobufCMessage base; + int32_t resp; + int32_t flow_id_bitmap; +}; +#define RPC__RESP__WIFI_STA_ITWT_GET_FLOW_ID_STATUS__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_itwt_get_flow_id_status__descriptor) \ + , 0, 0 } + + +struct RpcReqWifiStaItwtSendProbeReq +{ + ProtobufCMessage base; + int32_t timeout_ms; +}; +#define RPC__REQ__WIFI_STA_ITWT_SEND_PROBE_REQ__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_itwt_send_probe_req__descriptor) \ + , 0 } + + +struct RpcRespWifiStaItwtSendProbeReq +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__WIFI_STA_ITWT_SEND_PROBE_REQ__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_itwt_send_probe_req__descriptor) \ + , 0 } + + +struct RpcReqWifiStaItwtSetTargetWakeTimeOffset +{ + ProtobufCMessage base; + int32_t offset_us; +}; +#define RPC__REQ__WIFI_STA_ITWT_SET_TARGET_WAKE_TIME_OFFSET__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_itwt_set_target_wake_time_offset__descriptor) \ + , 0 } + + +struct RpcRespWifiStaItwtSetTargetWakeTimeOffset +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__WIFI_STA_ITWT_SET_TARGET_WAKE_TIME_OFFSET__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__descriptor) \ + , 0 } + + +struct RpcReqWifiStaTwtConfig +{ + ProtobufCMessage base; + WifiTwtConfig *config; +}; +#define RPC__REQ__WIFI_STA_TWT_CONFIG__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_twt_config__descriptor) \ + , NULL } + + +struct RpcRespWifiStaTwtConfig +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__WIFI_STA_TWT_CONFIG__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_twt_config__descriptor) \ + , 0 } + + struct RpcReqGetCoprocessorFwVersion { ProtobufCMessage base; @@ -3383,6 +3671,61 @@ struct RpcEventDhcpDnsStatus , 0, 0, 0, {0,NULL}, {0,NULL}, {0,NULL}, 0, {0,NULL}, 0, 0 } +struct RpcEventStaItwtSetup +{ + ProtobufCMessage base; + int32_t resp; + WifiItwtSetupConfig *config; + int32_t status; + uint32_t reason; + uint64_t target_wake_time; +}; +#define RPC__EVENT__STA_ITWT_SETUP__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__event__sta_itwt_setup__descriptor) \ + , 0, NULL, 0, 0, 0 } + + +struct RpcEventStaItwtTeardown +{ + ProtobufCMessage base; + int32_t resp; + uint32_t flow_id; + uint32_t status; +}; +#define RPC__EVENT__STA_ITWT_TEARDOWN__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__event__sta_itwt_teardown__descriptor) \ + , 0, 0, 0 } + + +struct RpcEventStaItwtSuspend +{ + ProtobufCMessage base; + int32_t resp; + int32_t status; + uint32_t flow_id_bitmap; + /* + * represents uint32_t actual_suspend_time_ms[] + */ + size_t n_actual_suspend_time_ms; + uint32_t *actual_suspend_time_ms; +}; +#define RPC__EVENT__STA_ITWT_SUSPEND__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__event__sta_itwt_suspend__descriptor) \ + , 0, 0, 0, 0,NULL } + + +struct RpcEventStaItwtProbe +{ + ProtobufCMessage base; + int32_t resp; + int32_t status; + uint32_t reason; +}; +#define RPC__EVENT__STA_ITWT_PROBE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__event__sta_itwt_probe__descriptor) \ + , 0, 0, 0 } + + typedef enum { RPC__PAYLOAD__NOT_SET = 0, RPC__PAYLOAD_REQ_GET_MAC_ADDRESS = 257, @@ -3425,6 +3768,8 @@ typedef enum { RPC__PAYLOAD_REQ_WIFI_AP_GET_STA_LIST = 311, RPC__PAYLOAD_REQ_WIFI_AP_GET_STA_AID = 312, RPC__PAYLOAD_REQ_WIFI_SET_STORAGE = 313, + RPC__PAYLOAD_REQ_WIFI_SET_INACTIVE_TIME = 325, + RPC__PAYLOAD_REQ_WIFI_GET_INACTIVE_TIME = 326, RPC__PAYLOAD_REQ_WIFI_SET_COUNTRY_CODE = 334, RPC__PAYLOAD_REQ_WIFI_GET_COUNTRY_CODE = 335, RPC__PAYLOAD_REQ_WIFI_STA_GET_AID = 338, @@ -3442,6 +3787,13 @@ typedef enum { RPC__PAYLOAD_REQ_WIFI_SCAN_GET_AP_RECORD = 351, RPC__PAYLOAD_REQ_SET_DHCP_DNS = 352, RPC__PAYLOAD_REQ_GET_DHCP_DNS = 353, + RPC__PAYLOAD_REQ_WIFI_STA_TWT_CONFIG = 354, + RPC__PAYLOAD_REQ_WIFI_STA_ITWT_SETUP = 355, + RPC__PAYLOAD_REQ_WIFI_STA_ITWT_TEARDOWN = 356, + RPC__PAYLOAD_REQ_WIFI_STA_ITWT_SUSPEND = 357, + RPC__PAYLOAD_REQ_WIFI_STA_ITWT_GET_FLOW_ID_STATUS = 358, + RPC__PAYLOAD_REQ_WIFI_STA_ITWT_SEND_PROBE_REQ = 359, + RPC__PAYLOAD_REQ_WIFI_STA_ITWT_SET_TARGET_WAKE_TIME_OFFSET = 360, RPC__PAYLOAD_RESP_GET_MAC_ADDRESS = 513, RPC__PAYLOAD_RESP_SET_MAC_ADDRESS = 514, RPC__PAYLOAD_RESP_GET_WIFI_MODE = 515, @@ -3482,6 +3834,8 @@ typedef enum { RPC__PAYLOAD_RESP_WIFI_AP_GET_STA_LIST = 567, RPC__PAYLOAD_RESP_WIFI_AP_GET_STA_AID = 568, RPC__PAYLOAD_RESP_WIFI_SET_STORAGE = 569, + RPC__PAYLOAD_RESP_WIFI_SET_INACTIVE_TIME = 581, + RPC__PAYLOAD_RESP_WIFI_GET_INACTIVE_TIME = 582, RPC__PAYLOAD_RESP_WIFI_SET_COUNTRY_CODE = 590, RPC__PAYLOAD_RESP_WIFI_GET_COUNTRY_CODE = 591, RPC__PAYLOAD_RESP_WIFI_STA_GET_AID = 594, @@ -3499,6 +3853,13 @@ typedef enum { RPC__PAYLOAD_RESP_WIFI_SCAN_GET_AP_RECORD = 607, RPC__PAYLOAD_RESP_SET_DHCP_DNS = 608, RPC__PAYLOAD_RESP_GET_DHCP_DNS = 609, + RPC__PAYLOAD_RESP_WIFI_STA_TWT_CONFIG = 610, + RPC__PAYLOAD_RESP_WIFI_STA_ITWT_SETUP = 611, + RPC__PAYLOAD_RESP_WIFI_STA_ITWT_TEARDOWN = 612, + RPC__PAYLOAD_RESP_WIFI_STA_ITWT_SUSPEND = 613, + RPC__PAYLOAD_RESP_WIFI_STA_ITWT_GET_FLOW_ID_STATUS = 614, + RPC__PAYLOAD_RESP_WIFI_STA_ITWT_SEND_PROBE_REQ = 615, + RPC__PAYLOAD_RESP_WIFI_STA_ITWT_SET_TARGET_WAKE_TIME_OFFSET = 616, RPC__PAYLOAD_EVENT_ESP_INIT = 769, RPC__PAYLOAD_EVENT_HEARTBEAT = 770, RPC__PAYLOAD_EVENT_AP_STA_CONNECTED = 771, @@ -3507,7 +3868,11 @@ typedef enum { RPC__PAYLOAD_EVENT_STA_SCAN_DONE = 774, RPC__PAYLOAD_EVENT_STA_CONNECTED = 775, RPC__PAYLOAD_EVENT_STA_DISCONNECTED = 776, - RPC__PAYLOAD_EVENT_DHCP_DNS = 777 + RPC__PAYLOAD_EVENT_DHCP_DNS = 777, + RPC__PAYLOAD_EVENT_STA_ITWT_SETUP = 778, + RPC__PAYLOAD_EVENT_STA_ITWT_TEARDOWN = 779, + RPC__PAYLOAD_EVENT_STA_ITWT_SUSPEND = 780, + RPC__PAYLOAD_EVENT_STA_ITWT_PROBE = 781 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(RPC__PAYLOAD__CASE) } Rpc__PayloadCase; @@ -3571,6 +3936,8 @@ struct Rpc RpcReqWifiApGetStaList *req_wifi_ap_get_sta_list; RpcReqWifiApGetStaAid *req_wifi_ap_get_sta_aid; RpcReqWifiSetStorage *req_wifi_set_storage; + RpcReqWifiSetInactiveTime *req_wifi_set_inactive_time; + RpcReqWifiGetInactiveTime *req_wifi_get_inactive_time; RpcReqWifiSetCountryCode *req_wifi_set_country_code; RpcReqWifiGetCountryCode *req_wifi_get_country_code; RpcReqWifiStaGetAid *req_wifi_sta_get_aid; @@ -3588,6 +3955,13 @@ struct Rpc RpcReqWifiScanGetApRecord *req_wifi_scan_get_ap_record; RpcReqSetDhcpDnsStatus *req_set_dhcp_dns; RpcReqGetDhcpDnsStatus *req_get_dhcp_dns; + RpcReqWifiStaTwtConfig *req_wifi_sta_twt_config; + RpcReqWifiStaItwtSetup *req_wifi_sta_itwt_setup; + RpcReqWifiStaItwtTeardown *req_wifi_sta_itwt_teardown; + RpcReqWifiStaItwtSuspend *req_wifi_sta_itwt_suspend; + RpcReqWifiStaItwtGetFlowIdStatus *req_wifi_sta_itwt_get_flow_id_status; + RpcReqWifiStaItwtSendProbeReq *req_wifi_sta_itwt_send_probe_req; + RpcReqWifiStaItwtSetTargetWakeTimeOffset *req_wifi_sta_itwt_set_target_wake_time_offset; /* ** Responses * */ @@ -3631,6 +4005,8 @@ struct Rpc RpcRespWifiApGetStaList *resp_wifi_ap_get_sta_list; RpcRespWifiApGetStaAid *resp_wifi_ap_get_sta_aid; RpcRespWifiSetStorage *resp_wifi_set_storage; + RpcRespWifiSetInactiveTime *resp_wifi_set_inactive_time; + RpcRespWifiGetInactiveTime *resp_wifi_get_inactive_time; RpcRespWifiSetCountryCode *resp_wifi_set_country_code; RpcRespWifiGetCountryCode *resp_wifi_get_country_code; RpcRespWifiStaGetAid *resp_wifi_sta_get_aid; @@ -3648,6 +4024,13 @@ struct Rpc RpcRespWifiScanGetApRecord *resp_wifi_scan_get_ap_record; RpcRespSetDhcpDnsStatus *resp_set_dhcp_dns; RpcRespGetDhcpDnsStatus *resp_get_dhcp_dns; + RpcRespWifiStaTwtConfig *resp_wifi_sta_twt_config; + RpcRespWifiStaItwtSetup *resp_wifi_sta_itwt_setup; + RpcRespWifiStaItwtTeardown *resp_wifi_sta_itwt_teardown; + RpcRespWifiStaItwtSuspend *resp_wifi_sta_itwt_suspend; + RpcRespWifiStaItwtGetFlowIdStatus *resp_wifi_sta_itwt_get_flow_id_status; + RpcRespWifiStaItwtSendProbeReq *resp_wifi_sta_itwt_send_probe_req; + RpcRespWifiStaItwtSetTargetWakeTimeOffset *resp_wifi_sta_itwt_set_target_wake_time_offset; /* ** Notifications * */ @@ -3660,6 +4043,10 @@ struct Rpc RpcEventStaConnected *event_sta_connected; RpcEventStaDisconnected *event_sta_disconnected; RpcEventDhcpDnsStatus *event_dhcp_dns; + RpcEventStaItwtSetup *event_sta_itwt_setup; + RpcEventStaItwtTeardown *event_sta_itwt_teardown; + RpcEventStaItwtSuspend *event_sta_itwt_suspend; + RpcEventStaItwtProbe *event_sta_itwt_probe; }; }; #define RPC__INIT \ @@ -4503,6 +4890,44 @@ WifiBandwidths * void wifi_bandwidths__free_unpacked (WifiBandwidths *message, ProtobufCAllocator *allocator); +/* WifiItwtSetupConfig methods */ +void wifi_itwt_setup_config__init + (WifiItwtSetupConfig *message); +size_t wifi_itwt_setup_config__get_packed_size + (const WifiItwtSetupConfig *message); +size_t wifi_itwt_setup_config__pack + (const WifiItwtSetupConfig *message, + uint8_t *out); +size_t wifi_itwt_setup_config__pack_to_buffer + (const WifiItwtSetupConfig *message, + ProtobufCBuffer *buffer); +WifiItwtSetupConfig * + wifi_itwt_setup_config__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_itwt_setup_config__free_unpacked + (WifiItwtSetupConfig *message, + ProtobufCAllocator *allocator); +/* WifiTwtConfig methods */ +void wifi_twt_config__init + (WifiTwtConfig *message); +size_t wifi_twt_config__get_packed_size + (const WifiTwtConfig *message); +size_t wifi_twt_config__pack + (const WifiTwtConfig *message, + uint8_t *out); +size_t wifi_twt_config__pack_to_buffer + (const WifiTwtConfig *message, + ProtobufCBuffer *buffer); +WifiTwtConfig * + wifi_twt_config__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_twt_config__free_unpacked + (WifiTwtConfig *message, + ProtobufCAllocator *allocator); /* ConnectedSTAList methods */ void connected_stalist__init (ConnectedSTAList *message); @@ -6574,6 +6999,348 @@ RpcRespWifiGetBandMode * void rpc__resp__wifi_get_band_mode__free_unpacked (RpcRespWifiGetBandMode *message, ProtobufCAllocator *allocator); +/* RpcReqWifiSetInactiveTime methods */ +void rpc__req__wifi_set_inactive_time__init + (RpcReqWifiSetInactiveTime *message); +size_t rpc__req__wifi_set_inactive_time__get_packed_size + (const RpcReqWifiSetInactiveTime *message); +size_t rpc__req__wifi_set_inactive_time__pack + (const RpcReqWifiSetInactiveTime *message, + uint8_t *out); +size_t rpc__req__wifi_set_inactive_time__pack_to_buffer + (const RpcReqWifiSetInactiveTime *message, + ProtobufCBuffer *buffer); +RpcReqWifiSetInactiveTime * + rpc__req__wifi_set_inactive_time__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__wifi_set_inactive_time__free_unpacked + (RpcReqWifiSetInactiveTime *message, + ProtobufCAllocator *allocator); +/* RpcRespWifiSetInactiveTime methods */ +void rpc__resp__wifi_set_inactive_time__init + (RpcRespWifiSetInactiveTime *message); +size_t rpc__resp__wifi_set_inactive_time__get_packed_size + (const RpcRespWifiSetInactiveTime *message); +size_t rpc__resp__wifi_set_inactive_time__pack + (const RpcRespWifiSetInactiveTime *message, + uint8_t *out); +size_t rpc__resp__wifi_set_inactive_time__pack_to_buffer + (const RpcRespWifiSetInactiveTime *message, + ProtobufCBuffer *buffer); +RpcRespWifiSetInactiveTime * + rpc__resp__wifi_set_inactive_time__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__wifi_set_inactive_time__free_unpacked + (RpcRespWifiSetInactiveTime *message, + ProtobufCAllocator *allocator); +/* RpcReqWifiGetInactiveTime methods */ +void rpc__req__wifi_get_inactive_time__init + (RpcReqWifiGetInactiveTime *message); +size_t rpc__req__wifi_get_inactive_time__get_packed_size + (const RpcReqWifiGetInactiveTime *message); +size_t rpc__req__wifi_get_inactive_time__pack + (const RpcReqWifiGetInactiveTime *message, + uint8_t *out); +size_t rpc__req__wifi_get_inactive_time__pack_to_buffer + (const RpcReqWifiGetInactiveTime *message, + ProtobufCBuffer *buffer); +RpcReqWifiGetInactiveTime * + rpc__req__wifi_get_inactive_time__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__wifi_get_inactive_time__free_unpacked + (RpcReqWifiGetInactiveTime *message, + ProtobufCAllocator *allocator); +/* RpcRespWifiGetInactiveTime methods */ +void rpc__resp__wifi_get_inactive_time__init + (RpcRespWifiGetInactiveTime *message); +size_t rpc__resp__wifi_get_inactive_time__get_packed_size + (const RpcRespWifiGetInactiveTime *message); +size_t rpc__resp__wifi_get_inactive_time__pack + (const RpcRespWifiGetInactiveTime *message, + uint8_t *out); +size_t rpc__resp__wifi_get_inactive_time__pack_to_buffer + (const RpcRespWifiGetInactiveTime *message, + ProtobufCBuffer *buffer); +RpcRespWifiGetInactiveTime * + rpc__resp__wifi_get_inactive_time__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__wifi_get_inactive_time__free_unpacked + (RpcRespWifiGetInactiveTime *message, + ProtobufCAllocator *allocator); +/* RpcReqWifiStaItwtSetup methods */ +void rpc__req__wifi_sta_itwt_setup__init + (RpcReqWifiStaItwtSetup *message); +size_t rpc__req__wifi_sta_itwt_setup__get_packed_size + (const RpcReqWifiStaItwtSetup *message); +size_t rpc__req__wifi_sta_itwt_setup__pack + (const RpcReqWifiStaItwtSetup *message, + uint8_t *out); +size_t rpc__req__wifi_sta_itwt_setup__pack_to_buffer + (const RpcReqWifiStaItwtSetup *message, + ProtobufCBuffer *buffer); +RpcReqWifiStaItwtSetup * + rpc__req__wifi_sta_itwt_setup__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__wifi_sta_itwt_setup__free_unpacked + (RpcReqWifiStaItwtSetup *message, + ProtobufCAllocator *allocator); +/* RpcRespWifiStaItwtSetup methods */ +void rpc__resp__wifi_sta_itwt_setup__init + (RpcRespWifiStaItwtSetup *message); +size_t rpc__resp__wifi_sta_itwt_setup__get_packed_size + (const RpcRespWifiStaItwtSetup *message); +size_t rpc__resp__wifi_sta_itwt_setup__pack + (const RpcRespWifiStaItwtSetup *message, + uint8_t *out); +size_t rpc__resp__wifi_sta_itwt_setup__pack_to_buffer + (const RpcRespWifiStaItwtSetup *message, + ProtobufCBuffer *buffer); +RpcRespWifiStaItwtSetup * + rpc__resp__wifi_sta_itwt_setup__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__wifi_sta_itwt_setup__free_unpacked + (RpcRespWifiStaItwtSetup *message, + ProtobufCAllocator *allocator); +/* RpcReqWifiStaItwtTeardown methods */ +void rpc__req__wifi_sta_itwt_teardown__init + (RpcReqWifiStaItwtTeardown *message); +size_t rpc__req__wifi_sta_itwt_teardown__get_packed_size + (const RpcReqWifiStaItwtTeardown *message); +size_t rpc__req__wifi_sta_itwt_teardown__pack + (const RpcReqWifiStaItwtTeardown *message, + uint8_t *out); +size_t rpc__req__wifi_sta_itwt_teardown__pack_to_buffer + (const RpcReqWifiStaItwtTeardown *message, + ProtobufCBuffer *buffer); +RpcReqWifiStaItwtTeardown * + rpc__req__wifi_sta_itwt_teardown__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__wifi_sta_itwt_teardown__free_unpacked + (RpcReqWifiStaItwtTeardown *message, + ProtobufCAllocator *allocator); +/* RpcRespWifiStaItwtTeardown methods */ +void rpc__resp__wifi_sta_itwt_teardown__init + (RpcRespWifiStaItwtTeardown *message); +size_t rpc__resp__wifi_sta_itwt_teardown__get_packed_size + (const RpcRespWifiStaItwtTeardown *message); +size_t rpc__resp__wifi_sta_itwt_teardown__pack + (const RpcRespWifiStaItwtTeardown *message, + uint8_t *out); +size_t rpc__resp__wifi_sta_itwt_teardown__pack_to_buffer + (const RpcRespWifiStaItwtTeardown *message, + ProtobufCBuffer *buffer); +RpcRespWifiStaItwtTeardown * + rpc__resp__wifi_sta_itwt_teardown__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__wifi_sta_itwt_teardown__free_unpacked + (RpcRespWifiStaItwtTeardown *message, + ProtobufCAllocator *allocator); +/* RpcReqWifiStaItwtSuspend methods */ +void rpc__req__wifi_sta_itwt_suspend__init + (RpcReqWifiStaItwtSuspend *message); +size_t rpc__req__wifi_sta_itwt_suspend__get_packed_size + (const RpcReqWifiStaItwtSuspend *message); +size_t rpc__req__wifi_sta_itwt_suspend__pack + (const RpcReqWifiStaItwtSuspend *message, + uint8_t *out); +size_t rpc__req__wifi_sta_itwt_suspend__pack_to_buffer + (const RpcReqWifiStaItwtSuspend *message, + ProtobufCBuffer *buffer); +RpcReqWifiStaItwtSuspend * + rpc__req__wifi_sta_itwt_suspend__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__wifi_sta_itwt_suspend__free_unpacked + (RpcReqWifiStaItwtSuspend *message, + ProtobufCAllocator *allocator); +/* RpcRespWifiStaItwtSuspend methods */ +void rpc__resp__wifi_sta_itwt_suspend__init + (RpcRespWifiStaItwtSuspend *message); +size_t rpc__resp__wifi_sta_itwt_suspend__get_packed_size + (const RpcRespWifiStaItwtSuspend *message); +size_t rpc__resp__wifi_sta_itwt_suspend__pack + (const RpcRespWifiStaItwtSuspend *message, + uint8_t *out); +size_t rpc__resp__wifi_sta_itwt_suspend__pack_to_buffer + (const RpcRespWifiStaItwtSuspend *message, + ProtobufCBuffer *buffer); +RpcRespWifiStaItwtSuspend * + rpc__resp__wifi_sta_itwt_suspend__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__wifi_sta_itwt_suspend__free_unpacked + (RpcRespWifiStaItwtSuspend *message, + ProtobufCAllocator *allocator); +/* RpcReqWifiStaItwtGetFlowIdStatus methods */ +void rpc__req__wifi_sta_itwt_get_flow_id_status__init + (RpcReqWifiStaItwtGetFlowIdStatus *message); +size_t rpc__req__wifi_sta_itwt_get_flow_id_status__get_packed_size + (const RpcReqWifiStaItwtGetFlowIdStatus *message); +size_t rpc__req__wifi_sta_itwt_get_flow_id_status__pack + (const RpcReqWifiStaItwtGetFlowIdStatus *message, + uint8_t *out); +size_t rpc__req__wifi_sta_itwt_get_flow_id_status__pack_to_buffer + (const RpcReqWifiStaItwtGetFlowIdStatus *message, + ProtobufCBuffer *buffer); +RpcReqWifiStaItwtGetFlowIdStatus * + rpc__req__wifi_sta_itwt_get_flow_id_status__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__wifi_sta_itwt_get_flow_id_status__free_unpacked + (RpcReqWifiStaItwtGetFlowIdStatus *message, + ProtobufCAllocator *allocator); +/* RpcRespWifiStaItwtGetFlowIdStatus methods */ +void rpc__resp__wifi_sta_itwt_get_flow_id_status__init + (RpcRespWifiStaItwtGetFlowIdStatus *message); +size_t rpc__resp__wifi_sta_itwt_get_flow_id_status__get_packed_size + (const RpcRespWifiStaItwtGetFlowIdStatus *message); +size_t rpc__resp__wifi_sta_itwt_get_flow_id_status__pack + (const RpcRespWifiStaItwtGetFlowIdStatus *message, + uint8_t *out); +size_t rpc__resp__wifi_sta_itwt_get_flow_id_status__pack_to_buffer + (const RpcRespWifiStaItwtGetFlowIdStatus *message, + ProtobufCBuffer *buffer); +RpcRespWifiStaItwtGetFlowIdStatus * + rpc__resp__wifi_sta_itwt_get_flow_id_status__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__wifi_sta_itwt_get_flow_id_status__free_unpacked + (RpcRespWifiStaItwtGetFlowIdStatus *message, + ProtobufCAllocator *allocator); +/* RpcReqWifiStaItwtSendProbeReq methods */ +void rpc__req__wifi_sta_itwt_send_probe_req__init + (RpcReqWifiStaItwtSendProbeReq *message); +size_t rpc__req__wifi_sta_itwt_send_probe_req__get_packed_size + (const RpcReqWifiStaItwtSendProbeReq *message); +size_t rpc__req__wifi_sta_itwt_send_probe_req__pack + (const RpcReqWifiStaItwtSendProbeReq *message, + uint8_t *out); +size_t rpc__req__wifi_sta_itwt_send_probe_req__pack_to_buffer + (const RpcReqWifiStaItwtSendProbeReq *message, + ProtobufCBuffer *buffer); +RpcReqWifiStaItwtSendProbeReq * + rpc__req__wifi_sta_itwt_send_probe_req__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__wifi_sta_itwt_send_probe_req__free_unpacked + (RpcReqWifiStaItwtSendProbeReq *message, + ProtobufCAllocator *allocator); +/* RpcRespWifiStaItwtSendProbeReq methods */ +void rpc__resp__wifi_sta_itwt_send_probe_req__init + (RpcRespWifiStaItwtSendProbeReq *message); +size_t rpc__resp__wifi_sta_itwt_send_probe_req__get_packed_size + (const RpcRespWifiStaItwtSendProbeReq *message); +size_t rpc__resp__wifi_sta_itwt_send_probe_req__pack + (const RpcRespWifiStaItwtSendProbeReq *message, + uint8_t *out); +size_t rpc__resp__wifi_sta_itwt_send_probe_req__pack_to_buffer + (const RpcRespWifiStaItwtSendProbeReq *message, + ProtobufCBuffer *buffer); +RpcRespWifiStaItwtSendProbeReq * + rpc__resp__wifi_sta_itwt_send_probe_req__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__wifi_sta_itwt_send_probe_req__free_unpacked + (RpcRespWifiStaItwtSendProbeReq *message, + ProtobufCAllocator *allocator); +/* RpcReqWifiStaItwtSetTargetWakeTimeOffset methods */ +void rpc__req__wifi_sta_itwt_set_target_wake_time_offset__init + (RpcReqWifiStaItwtSetTargetWakeTimeOffset *message); +size_t rpc__req__wifi_sta_itwt_set_target_wake_time_offset__get_packed_size + (const RpcReqWifiStaItwtSetTargetWakeTimeOffset *message); +size_t rpc__req__wifi_sta_itwt_set_target_wake_time_offset__pack + (const RpcReqWifiStaItwtSetTargetWakeTimeOffset *message, + uint8_t *out); +size_t rpc__req__wifi_sta_itwt_set_target_wake_time_offset__pack_to_buffer + (const RpcReqWifiStaItwtSetTargetWakeTimeOffset *message, + ProtobufCBuffer *buffer); +RpcReqWifiStaItwtSetTargetWakeTimeOffset * + rpc__req__wifi_sta_itwt_set_target_wake_time_offset__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__wifi_sta_itwt_set_target_wake_time_offset__free_unpacked + (RpcReqWifiStaItwtSetTargetWakeTimeOffset *message, + ProtobufCAllocator *allocator); +/* RpcRespWifiStaItwtSetTargetWakeTimeOffset methods */ +void rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__init + (RpcRespWifiStaItwtSetTargetWakeTimeOffset *message); +size_t rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__get_packed_size + (const RpcRespWifiStaItwtSetTargetWakeTimeOffset *message); +size_t rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__pack + (const RpcRespWifiStaItwtSetTargetWakeTimeOffset *message, + uint8_t *out); +size_t rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__pack_to_buffer + (const RpcRespWifiStaItwtSetTargetWakeTimeOffset *message, + ProtobufCBuffer *buffer); +RpcRespWifiStaItwtSetTargetWakeTimeOffset * + rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__free_unpacked + (RpcRespWifiStaItwtSetTargetWakeTimeOffset *message, + ProtobufCAllocator *allocator); +/* RpcReqWifiStaTwtConfig methods */ +void rpc__req__wifi_sta_twt_config__init + (RpcReqWifiStaTwtConfig *message); +size_t rpc__req__wifi_sta_twt_config__get_packed_size + (const RpcReqWifiStaTwtConfig *message); +size_t rpc__req__wifi_sta_twt_config__pack + (const RpcReqWifiStaTwtConfig *message, + uint8_t *out); +size_t rpc__req__wifi_sta_twt_config__pack_to_buffer + (const RpcReqWifiStaTwtConfig *message, + ProtobufCBuffer *buffer); +RpcReqWifiStaTwtConfig * + rpc__req__wifi_sta_twt_config__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__wifi_sta_twt_config__free_unpacked + (RpcReqWifiStaTwtConfig *message, + ProtobufCAllocator *allocator); +/* RpcRespWifiStaTwtConfig methods */ +void rpc__resp__wifi_sta_twt_config__init + (RpcRespWifiStaTwtConfig *message); +size_t rpc__resp__wifi_sta_twt_config__get_packed_size + (const RpcRespWifiStaTwtConfig *message); +size_t rpc__resp__wifi_sta_twt_config__pack + (const RpcRespWifiStaTwtConfig *message, + uint8_t *out); +size_t rpc__resp__wifi_sta_twt_config__pack_to_buffer + (const RpcRespWifiStaTwtConfig *message, + ProtobufCBuffer *buffer); +RpcRespWifiStaTwtConfig * + rpc__resp__wifi_sta_twt_config__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__wifi_sta_twt_config__free_unpacked + (RpcRespWifiStaTwtConfig *message, + ProtobufCAllocator *allocator); /* RpcReqGetCoprocessorFwVersion methods */ void rpc__req__get_coprocessor_fw_version__init (RpcReqGetCoprocessorFwVersion *message); @@ -6859,6 +7626,82 @@ RpcEventDhcpDnsStatus * void rpc__event__dhcp_dns_status__free_unpacked (RpcEventDhcpDnsStatus *message, ProtobufCAllocator *allocator); +/* RpcEventStaItwtSetup methods */ +void rpc__event__sta_itwt_setup__init + (RpcEventStaItwtSetup *message); +size_t rpc__event__sta_itwt_setup__get_packed_size + (const RpcEventStaItwtSetup *message); +size_t rpc__event__sta_itwt_setup__pack + (const RpcEventStaItwtSetup *message, + uint8_t *out); +size_t rpc__event__sta_itwt_setup__pack_to_buffer + (const RpcEventStaItwtSetup *message, + ProtobufCBuffer *buffer); +RpcEventStaItwtSetup * + rpc__event__sta_itwt_setup__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__event__sta_itwt_setup__free_unpacked + (RpcEventStaItwtSetup *message, + ProtobufCAllocator *allocator); +/* RpcEventStaItwtTeardown methods */ +void rpc__event__sta_itwt_teardown__init + (RpcEventStaItwtTeardown *message); +size_t rpc__event__sta_itwt_teardown__get_packed_size + (const RpcEventStaItwtTeardown *message); +size_t rpc__event__sta_itwt_teardown__pack + (const RpcEventStaItwtTeardown *message, + uint8_t *out); +size_t rpc__event__sta_itwt_teardown__pack_to_buffer + (const RpcEventStaItwtTeardown *message, + ProtobufCBuffer *buffer); +RpcEventStaItwtTeardown * + rpc__event__sta_itwt_teardown__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__event__sta_itwt_teardown__free_unpacked + (RpcEventStaItwtTeardown *message, + ProtobufCAllocator *allocator); +/* RpcEventStaItwtSuspend methods */ +void rpc__event__sta_itwt_suspend__init + (RpcEventStaItwtSuspend *message); +size_t rpc__event__sta_itwt_suspend__get_packed_size + (const RpcEventStaItwtSuspend *message); +size_t rpc__event__sta_itwt_suspend__pack + (const RpcEventStaItwtSuspend *message, + uint8_t *out); +size_t rpc__event__sta_itwt_suspend__pack_to_buffer + (const RpcEventStaItwtSuspend *message, + ProtobufCBuffer *buffer); +RpcEventStaItwtSuspend * + rpc__event__sta_itwt_suspend__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__event__sta_itwt_suspend__free_unpacked + (RpcEventStaItwtSuspend *message, + ProtobufCAllocator *allocator); +/* RpcEventStaItwtProbe methods */ +void rpc__event__sta_itwt_probe__init + (RpcEventStaItwtProbe *message); +size_t rpc__event__sta_itwt_probe__get_packed_size + (const RpcEventStaItwtProbe *message); +size_t rpc__event__sta_itwt_probe__pack + (const RpcEventStaItwtProbe *message, + uint8_t *out); +size_t rpc__event__sta_itwt_probe__pack_to_buffer + (const RpcEventStaItwtProbe *message, + ProtobufCBuffer *buffer); +RpcEventStaItwtProbe * + rpc__event__sta_itwt_probe__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__event__sta_itwt_probe__free_unpacked + (RpcEventStaItwtProbe *message, + ProtobufCAllocator *allocator); /* Rpc methods */ void rpc__init (Rpc *message); @@ -7012,6 +7855,12 @@ typedef void (*WifiProtocols_Closure) typedef void (*WifiBandwidths_Closure) (const WifiBandwidths *message, void *closure_data); +typedef void (*WifiItwtSetupConfig_Closure) + (const WifiItwtSetupConfig *message, + void *closure_data); +typedef void (*WifiTwtConfig_Closure) + (const WifiTwtConfig *message, + void *closure_data); typedef void (*ConnectedSTAList_Closure) (const ConnectedSTAList *message, void *closure_data); @@ -7339,6 +8188,60 @@ typedef void (*RpcReqWifiGetBandMode_Closure) typedef void (*RpcRespWifiGetBandMode_Closure) (const RpcRespWifiGetBandMode *message, void *closure_data); +typedef void (*RpcReqWifiSetInactiveTime_Closure) + (const RpcReqWifiSetInactiveTime *message, + void *closure_data); +typedef void (*RpcRespWifiSetInactiveTime_Closure) + (const RpcRespWifiSetInactiveTime *message, + void *closure_data); +typedef void (*RpcReqWifiGetInactiveTime_Closure) + (const RpcReqWifiGetInactiveTime *message, + void *closure_data); +typedef void (*RpcRespWifiGetInactiveTime_Closure) + (const RpcRespWifiGetInactiveTime *message, + void *closure_data); +typedef void (*RpcReqWifiStaItwtSetup_Closure) + (const RpcReqWifiStaItwtSetup *message, + void *closure_data); +typedef void (*RpcRespWifiStaItwtSetup_Closure) + (const RpcRespWifiStaItwtSetup *message, + void *closure_data); +typedef void (*RpcReqWifiStaItwtTeardown_Closure) + (const RpcReqWifiStaItwtTeardown *message, + void *closure_data); +typedef void (*RpcRespWifiStaItwtTeardown_Closure) + (const RpcRespWifiStaItwtTeardown *message, + void *closure_data); +typedef void (*RpcReqWifiStaItwtSuspend_Closure) + (const RpcReqWifiStaItwtSuspend *message, + void *closure_data); +typedef void (*RpcRespWifiStaItwtSuspend_Closure) + (const RpcRespWifiStaItwtSuspend *message, + void *closure_data); +typedef void (*RpcReqWifiStaItwtGetFlowIdStatus_Closure) + (const RpcReqWifiStaItwtGetFlowIdStatus *message, + void *closure_data); +typedef void (*RpcRespWifiStaItwtGetFlowIdStatus_Closure) + (const RpcRespWifiStaItwtGetFlowIdStatus *message, + void *closure_data); +typedef void (*RpcReqWifiStaItwtSendProbeReq_Closure) + (const RpcReqWifiStaItwtSendProbeReq *message, + void *closure_data); +typedef void (*RpcRespWifiStaItwtSendProbeReq_Closure) + (const RpcRespWifiStaItwtSendProbeReq *message, + void *closure_data); +typedef void (*RpcReqWifiStaItwtSetTargetWakeTimeOffset_Closure) + (const RpcReqWifiStaItwtSetTargetWakeTimeOffset *message, + void *closure_data); +typedef void (*RpcRespWifiStaItwtSetTargetWakeTimeOffset_Closure) + (const RpcRespWifiStaItwtSetTargetWakeTimeOffset *message, + void *closure_data); +typedef void (*RpcReqWifiStaTwtConfig_Closure) + (const RpcReqWifiStaTwtConfig *message, + void *closure_data); +typedef void (*RpcRespWifiStaTwtConfig_Closure) + (const RpcRespWifiStaTwtConfig *message, + void *closure_data); typedef void (*RpcReqGetCoprocessorFwVersion_Closure) (const RpcReqGetCoprocessorFwVersion *message, void *closure_data); @@ -7384,6 +8287,18 @@ typedef void (*RpcEventStaDisconnected_Closure) typedef void (*RpcEventDhcpDnsStatus_Closure) (const RpcEventDhcpDnsStatus *message, void *closure_data); +typedef void (*RpcEventStaItwtSetup_Closure) + (const RpcEventStaItwtSetup *message, + void *closure_data); +typedef void (*RpcEventStaItwtTeardown_Closure) + (const RpcEventStaItwtTeardown *message, + void *closure_data); +typedef void (*RpcEventStaItwtSuspend_Closure) + (const RpcEventStaItwtSuspend *message, + void *closure_data); +typedef void (*RpcEventStaItwtProbe_Closure) + (const RpcEventStaItwtProbe *message, + void *closure_data); typedef void (*Rpc_Closure) (const Rpc *message, void *closure_data); @@ -7443,6 +8358,8 @@ extern const ProtobufCMessageDescriptor wifi_event_ap_wps_rg_fail_reason__descri extern const ProtobufCMessageDescriptor wifi_event_ap_wps_rg_success__descriptor; extern const ProtobufCMessageDescriptor wifi_protocols__descriptor; extern const ProtobufCMessageDescriptor wifi_bandwidths__descriptor; +extern const ProtobufCMessageDescriptor wifi_itwt_setup_config__descriptor; +extern const ProtobufCMessageDescriptor wifi_twt_config__descriptor; extern const ProtobufCMessageDescriptor connected_stalist__descriptor; extern const ProtobufCMessageDescriptor rpc__req__get_mac_address__descriptor; extern const ProtobufCMessageDescriptor rpc__resp__get_mac_address__descriptor; @@ -7552,6 +8469,24 @@ extern const ProtobufCMessageDescriptor rpc__req__wifi_set_band_mode__descriptor extern const ProtobufCMessageDescriptor rpc__resp__wifi_set_band_mode__descriptor; extern const ProtobufCMessageDescriptor rpc__req__wifi_get_band_mode__descriptor; extern const ProtobufCMessageDescriptor rpc__resp__wifi_get_band_mode__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__wifi_set_inactive_time__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__wifi_set_inactive_time__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__wifi_get_inactive_time__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__wifi_get_inactive_time__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_setup__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_setup__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_teardown__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_teardown__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_suspend__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_suspend__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_get_flow_id_status__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_get_flow_id_status__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_send_probe_req__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_send_probe_req__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_set_target_wake_time_offset__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__wifi_sta_twt_config__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__wifi_sta_twt_config__descriptor; extern const ProtobufCMessageDescriptor rpc__req__get_coprocessor_fw_version__descriptor; extern const ProtobufCMessageDescriptor rpc__resp__get_coprocessor_fw_version__descriptor; extern const ProtobufCMessageDescriptor rpc__req__set_dhcp_dns_status__descriptor; @@ -7567,6 +8502,10 @@ extern const ProtobufCMessageDescriptor rpc__event__sta_scan_done__descriptor; extern const ProtobufCMessageDescriptor rpc__event__sta_connected__descriptor; extern const ProtobufCMessageDescriptor rpc__event__sta_disconnected__descriptor; extern const ProtobufCMessageDescriptor rpc__event__dhcp_dns_status__descriptor; +extern const ProtobufCMessageDescriptor rpc__event__sta_itwt_setup__descriptor; +extern const ProtobufCMessageDescriptor rpc__event__sta_itwt_teardown__descriptor; +extern const ProtobufCMessageDescriptor rpc__event__sta_itwt_suspend__descriptor; +extern const ProtobufCMessageDescriptor rpc__event__sta_itwt_probe__descriptor; extern const ProtobufCMessageDescriptor rpc__descriptor; PROTOBUF_C__END_DECLS diff --git a/common/proto/esp_hosted_rpc.proto b/common/proto/esp_hosted_rpc.proto index 7640856e..19e72e76 100644 --- a/common/proto/esp_hosted_rpc.proto +++ b/common/proto/esp_hosted_rpc.proto @@ -417,9 +417,17 @@ enum RpcId { Req_SetDhcpDnsStatus = 352; //0x160 Req_GetDhcpDnsStatus = 353; //0x161 -/* Add new control path command response before Req_Max + Req_WifiStaTwtConfig = 354; //0x162 + Req_WifiStaItwtSetup = 355; //0x163 + Req_WifiStaItwtTeardown = 356; //0x164 + Req_WifiStaItwtSuspend = 357; //0x165 + Req_WifiStaItwtGetFlowIdStatus = 358; //0x166 + Req_WifiStaItwtSendProbeReq = 359; //0x167 + Req_WifiStaItwtSetTargetWakeTimeOffset = 360; //0x168 + + /* Add new control path command response before Req_Max * and update Req_Max */ - Req_Max = 354; //0x162 + Req_Max = 361; //0x169 /** Response Msgs **/ Resp_Base = 512; @@ -546,9 +554,17 @@ enum RpcId { Resp_SetDhcpDnsStatus = 608; Resp_GetDhcpDnsStatus = 609; + Resp_WifiStaTwtConfig = 610; + Resp_WifiStaItwtSetup = 611; + Resp_WifiStaItwtTeardown = 612; + Resp_WifiStaItwtSuspend = 613; + Resp_WifiStaItwtGetFlowIdStatus = 614; + Resp_WifiStaItwtSendProbeReq = 615; + Resp_WifiStaItwtSetTargetWakeTimeOffset = 616; + /* Add new control path command response before Resp_Max * and update Resp_Max */ - Resp_Max = 610; + Resp_Max = 617; /** Event Msgs **/ Event_Base = 768; @@ -562,9 +578,14 @@ enum RpcId { Event_StaDisconnected = 776; Event_DhcpDnsStatus = 777; + Event_StaItwtSetup = 778; + Event_StaItwtTeardown = 779; + Event_StaItwtSuspend = 780; + Event_StaItwtProbe = 781; + /* Add new control path command notification before Event_Max * and update Event_Max */ - Event_Max = 778; + Event_Max = 782; } message wifi_init_config { @@ -995,6 +1016,28 @@ message wifi_bandwidths { uint32 ghz_5g = 2; /* Represents 5 GHz bandwidth */ } +message wifi_itwt_setup_config { + uint32 setup_cmd = 1; + // uint16_t trigger : 1; /**< 1: a trigger-enabled individual TWT, 0: a non-trigger-enabled individual TWT */ + // uint16_t flow_type : 1; /**< 0: an announced individual TWT, 1: an unannounced individual TWT */ + // uint16_t flow_id : 3; /**< When set up an individual TWT agreement, the flow id will be assigned by AP after a successful agreement setup. + // flow_id could be specified to a value in the range of [0, 7], but it might be changed by AP in the response. + // When change TWT parameters of the existing TWT agreement, flow_id should be an existing one. The value range is [0, 7]. */ + // uint16_t wake_invl_expn : 5; /**< Individual TWT Wake Interval Exponent. The value range is [0, 31]. */ + // uint16_t wake_duration_unit : 1; /**< Individual TWT Wake duration unit, 0: 256us 1: TU (TU = 1024us)*/ + // uint16_t reserved : 5; /**< bit: 11.15 reserved */ + uint32 bitmask_1 = 2; + uint32 min_wake_dura = 3; + uint32 wake_invl_mant = 4; + uint32 twt_id = 5; + uint32 timeout_time_ms = 6; +} + +message wifi_twt_config { + bool post_wakeup_event = 1; /**< post twt wakeup event */ + bool twt_enable_keep_alive = 2; /**< twt enable send qos null to keep alive */ +} + /* internal supporting structures for Rpc */ //message ScanResult { // bytes bssid = 1; @@ -1554,6 +1597,81 @@ message Rpc_Resp_WifiGetBandMode { uint32 bandmode = 2; } +message Rpc_Req_WifiSetInactiveTime { + uint32 ifx = 1; + uint32 sec = 2; +} + +message Rpc_Resp_WifiSetInactiveTime { + int32 resp = 1; +} + +message Rpc_Req_WifiGetInactiveTime { + uint32 ifx = 1; +} + +message Rpc_Resp_WifiGetInactiveTime { + int32 resp = 1; + uint32 sec = 2; +} + +message Rpc_Req_WifiStaItwtSetup { + wifi_itwt_setup_config setup_config = 1; +} + +message Rpc_Resp_WifiStaItwtSetup { + int32 resp = 1; +} + +message Rpc_Req_WifiStaItwtTeardown { + int32 flow_id = 1; +} + +message Rpc_Resp_WifiStaItwtTeardown { + int32 resp = 1; +} + +message Rpc_Req_WifiStaItwtSuspend { + int32 flow_id = 1; + int32 suspend_time_ms = 2; +} + +message Rpc_Resp_WifiStaItwtSuspend { + int32 resp = 1; +} + +message Rpc_Req_WifiStaItwtGetFlowIdStatus { +} + +message Rpc_Resp_WifiStaItwtGetFlowIdStatus { + int32 resp = 1; + int32 flow_id_bitmap = 2; +} + +message Rpc_Req_WifiStaItwtSendProbeReq { + int32 timeout_ms = 1; +} + +message Rpc_Resp_WifiStaItwtSendProbeReq { + int32 resp = 1; +} + +message Rpc_Req_WifiStaItwtSetTargetWakeTimeOffset { + int32 offset_us = 1; +} + +message Rpc_Resp_WifiStaItwtSetTargetWakeTimeOffset { + int32 resp = 1; +} + +message Rpc_Req_WifiStaTwtConfig { + wifi_twt_config config = 1; +} + +message Rpc_Resp_WifiStaTwtConfig { + int32 resp = 1; +} + message Rpc_Req_GetCoprocessorFwVersion { } @@ -1661,6 +1779,33 @@ message Rpc_Event_DhcpDnsStatus { int32 resp = 10; } +message Rpc_Event_StaItwtSetup { + int32 resp = 1; + wifi_itwt_setup_config config = 2; + int32 status = 3; + uint32 reason = 4; + uint64 target_wake_time = 5; +} + +message Rpc_Event_StaItwtTeardown { + int32 resp = 1; + uint32 flow_id = 2; + uint32 status = 3; +} + +message Rpc_Event_StaItwtSuspend { + int32 resp = 1; + int32 status = 2; + uint32 flow_id_bitmap = 3; + repeated uint32 actual_suspend_time_ms = 4; // represents uint32_t actual_suspend_time_ms[] +} + +message Rpc_Event_StaItwtProbe { + int32 resp = 1; + int32 status = 2; + uint32 reason = 3; +} + message Rpc { /* msg_type could be req, resp or Event */ RpcType msg_type = 1; @@ -1734,6 +1879,9 @@ message Rpc { Rpc_Req_WifiApGetStaAid req_wifi_ap_get_sta_aid = 312; Rpc_Req_WifiSetStorage req_wifi_set_storage = 313; + Rpc_Req_WifiSetInactiveTime req_wifi_set_inactive_time = 325; + Rpc_Req_WifiGetInactiveTime req_wifi_get_inactive_time = 326; + Rpc_Req_WifiSetCountryCode req_wifi_set_country_code = 334; Rpc_Req_WifiGetCountryCode req_wifi_get_country_code = 335; Rpc_Req_WifiStaGetAid req_wifi_sta_get_aid = 338; @@ -1758,6 +1906,14 @@ message Rpc { Rpc_Req_SetDhcpDnsStatus req_set_dhcp_dns = 352; Rpc_Req_GetDhcpDnsStatus req_get_dhcp_dns = 353; + Rpc_Req_WifiStaTwtConfig req_wifi_sta_twt_config = 354; + Rpc_Req_WifiStaItwtSetup req_wifi_sta_itwt_setup = 355; + Rpc_Req_WifiStaItwtTeardown req_wifi_sta_itwt_teardown = 356; + Rpc_Req_WifiStaItwtSuspend req_wifi_sta_itwt_suspend = 357; + Rpc_Req_WifiStaItwtGetFlowIdStatus req_wifi_sta_itwt_get_flow_id_status = 358; + Rpc_Req_WifiStaItwtSendProbeReq req_wifi_sta_itwt_send_probe_req = 359; + Rpc_Req_WifiStaItwtSetTargetWakeTimeOffset req_wifi_sta_itwt_set_target_wake_time_offset = 360; + /** Responses **/ Rpc_Resp_GetMacAddress resp_get_mac_address = 513; Rpc_Resp_SetMacAddress resp_set_mac_address = 514; @@ -1818,6 +1974,9 @@ message Rpc { Rpc_Resp_WifiApGetStaAid resp_wifi_ap_get_sta_aid = 568; Rpc_Resp_WifiSetStorage resp_wifi_set_storage = 569; + Rpc_Resp_WifiSetInactiveTime resp_wifi_set_inactive_time = 581; + Rpc_Resp_WifiGetInactiveTime resp_wifi_get_inactive_time = 582; + Rpc_Resp_WifiSetCountryCode resp_wifi_set_country_code = 590; Rpc_Resp_WifiGetCountryCode resp_wifi_get_country_code = 591; Rpc_Resp_WifiStaGetAid resp_wifi_sta_get_aid = 594; @@ -1842,6 +2001,14 @@ message Rpc { Rpc_Resp_SetDhcpDnsStatus resp_set_dhcp_dns = 608; Rpc_Resp_GetDhcpDnsStatus resp_get_dhcp_dns = 609; + Rpc_Resp_WifiStaTwtConfig resp_wifi_sta_twt_config = 610; + Rpc_Resp_WifiStaItwtSetup resp_wifi_sta_itwt_setup = 611; + Rpc_Resp_WifiStaItwtTeardown resp_wifi_sta_itwt_teardown = 612; + Rpc_Resp_WifiStaItwtSuspend resp_wifi_sta_itwt_suspend = 613; + Rpc_Resp_WifiStaItwtGetFlowIdStatus resp_wifi_sta_itwt_get_flow_id_status = 614; + Rpc_Resp_WifiStaItwtSendProbeReq resp_wifi_sta_itwt_send_probe_req = 615; + Rpc_Resp_WifiStaItwtSetTargetWakeTimeOffset resp_wifi_sta_itwt_set_target_wake_time_offset = 616; + /** Notifications **/ Rpc_Event_ESPInit event_esp_init = 769; Rpc_Event_Heartbeat event_heartbeat = 770; @@ -1852,6 +2019,10 @@ message Rpc { Rpc_Event_StaConnected event_sta_connected = 775; Rpc_Event_StaDisconnected event_sta_disconnected = 776; Rpc_Event_DhcpDnsStatus event_dhcp_dns = 777; + Rpc_Event_StaItwtSetup event_sta_itwt_setup = 778; + Rpc_Event_StaItwtTeardown event_sta_itwt_teardown = 779; + Rpc_Event_StaItwtSuspend event_sta_itwt_suspend = 780; + Rpc_Event_StaItwtProbe event_sta_itwt_probe = 781; } } diff --git a/common/rpc/esp_hosted_bitmasks.h b/common/rpc/esp_hosted_bitmasks.h index 198725c0..c53473b5 100644 --- a/common/rpc/esp_hosted_bitmasks.h +++ b/common/rpc/esp_hosted_bitmasks.h @@ -118,3 +118,24 @@ enum { (num_out |= (reserved_in << WIFI_STA_CONFIG_2_MAX_USED_BIT)); #endif + +/* WIFI ITWT Setup Config bitmasks */ + +enum { + WIFI_ITWT_CONFIG_1_trigger_BIT = 0, + WIFI_ITWT_CONFIG_1_flow_type_BIT = 1, + // WIFI_ITWT_CONFIG_1_flow_id_BIT is three bits wide + WIFI_ITWT_CONFIG_1_flow_id_BIT = 2, + // WIFI_ITWT_CONFIG_1_wake_invl_expn_BIT is five bits wide + WIFI_ITWT_CONFIG_1_wake_invl_expn_BIT = 5, + WIFI_ITWT_CONFIG_1_wake_duration_unit_BIT = 10, + WIFI_ITWT_CONFIG_1_MAX_USED_BIT = 11, +}; + +#define WIFI_ITWT_CONFIG_1_RESERVED_BITMASK 0xFFFFF800 + +#define WIFI_ITWT_CONFIG_1_GET_RESERVED_VAL(num) \ + ((num & WIFI_ITWT_CONFIG_1_RESERVED_BITMASK) >> WIFI_ITWT_CONFIG_1_MAX_USED_BIT) + +#define WIFI_ITWT_CONFIG_1_SET_RESERVED_VAL(reserved_in,num_out) \ + (num_out |= (reserved_in << WIFI_ITWT_CONFIG_1_MAX_USED_BIT)); diff --git a/examples/host_wifi_itwt/CMakeLists.txt b/examples/host_wifi_itwt/CMakeLists.txt new file mode 100644 index 00000000..935ad6ba --- /dev/null +++ b/examples/host_wifi_itwt/CMakeLists.txt @@ -0,0 +1,8 @@ +# The following lines of boilerplate have to be in your project's CMakeLists +# in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.16) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +# "Trim" the build. Include the minimal set of components, main, and anything it depends on. +idf_build_set_property(MINIMAL_BUILD ON) +project(itwt) diff --git a/examples/host_wifi_itwt/README.md b/examples/host_wifi_itwt/README.md new file mode 100644 index 00000000..088fc398 --- /dev/null +++ b/examples/host_wifi_itwt/README.md @@ -0,0 +1,31 @@ +| Supported Hosts | ESP32-P4 | +| --------------- | -------- | + +| Supported Co-processors | ESP32-C5 | ESP32-C6 | +| ----------------------- | -------- | -------- | + +# Wifi itwt Example + +## Introduction +This example shows how to use itwt of wifi. + +Itwt only works in station mode. And AP needs to support the capability of itwt. + +Itwt can works under different power save mode. + +### Modem sleep (supported) +This is default mode. Under this mode, can support console command "itwt, probe" to config itwt. + +* itwt: this command is for itwt setup/teardown/suspend. +* probe: this command will send a probe request to update tsf time with ap + +### Light Sleep (will support) +Need system support light sleep. Console command will not support in this mode. + +### Typical current consumption with Itwt enabled + + +### Typical current consumption with Itwt disabled + + +Note that current consumption and average current are higher when disabled. diff --git a/examples/host_wifi_itwt/main/CMakeLists.txt b/examples/host_wifi_itwt/main/CMakeLists.txt new file mode 100644 index 00000000..18cf0c49 --- /dev/null +++ b/examples/host_wifi_itwt/main/CMakeLists.txt @@ -0,0 +1,5 @@ +idf_component_register(SRCS "itwt_main.c" + "wifi_stats_cmd.c" + "wifi_itwt_cmd.c" + PRIV_REQUIRES lwip esp_wifi esp_timer esp_pm + INCLUDE_DIRS ".") diff --git a/examples/host_wifi_itwt/main/Kconfig.projbuild b/examples/host_wifi_itwt/main/Kconfig.projbuild new file mode 100644 index 00000000..643806b3 --- /dev/null +++ b/examples/host_wifi_itwt/main/Kconfig.projbuild @@ -0,0 +1,179 @@ +menu "Example Configuration" + + config EXAMPLE_WIFI_SSID + string "WiFi SSID" + default "myssid" + help + SSID (network name) for the example to connect to. + + config EXAMPLE_WIFI_PASSWORD + string "WiFi Password" + default "mypassword" + help + WiFi password (WPA or WPA2) for the example to use. + + config EXAMPLE_ENABLE_STATIC_IP + bool "enable static ip" + default y + help + Enable static IP + config EXAMPLE_STATIC_IP_ADDR + string "Static IP address" + default "192.168.4.2" + depends on EXAMPLE_ENABLE_STATIC_IP + help + Set static IP address. + + config EXAMPLE_STATIC_NETMASK_ADDR + string "Static netmask address" + default "255.255.255.0" + depends on EXAMPLE_ENABLE_STATIC_IP + help + Set static netmask address. + + config EXAMPLE_STATIC_GW_ADDR + string "Static gateway address" + default "192.168.4.1" + depends on EXAMPLE_ENABLE_STATIC_IP + help + Set static gateway address. + + config EXAMPLE_TWT_ENABLE_KEEP_ALIVE_QOS_NULL + bool "enable keep alive qos null" + default n + help + Enable send QOS NULL to keep alive during TWT. + + menu "iTWT Configuration" + config EXAMPLE_ITWT_TRIGGER_ENABLE + bool "trigger-enabled" + default y + help + 0- a non-trigger-enabled TWT, 1-a trigger-enabled TWT + + config EXAMPLE_ITWT_ANNOUNCED + bool "announced" + default y + help + 0- an unannounced TWT, 1-an announced TWT + + config EXAMPLE_ITWT_MIN_WAKE_DURA + int "itwt minimum wake duration" + range 1 255 + default 255 + help + Nominal Minimum Wake Duration, indicates the minimum amount of time, in unit of 256 us, that the TWT + requesting STA expects that it needs to be awake. The value range is [1, 255]. + + config EXAMPLE_ITWT_WAKE_DURATION_UNIT + int "itwt wake duration unit" + range 0 1 + default 0 + help + TWT wake duration unit, 0: 256us 1: TU (TU = 1024us) + + config EXAMPLE_ITWT_WAKE_INVL_EXPN + int "itwt wake interval exponent" + range 0 31 + default 10 + help + TWT Wake Interval Exponent, in microseconds. The value range is [0, 31]. + + config EXAMPLE_ITWT_WAKE_INVL_MANT + int "itwt wake interval mantissa" + range 1 65535 + default 512 + help + TWT Wake Interval Mantissa, in microseconds. The value range is [1, 65535]. + + config EXAMPLE_ITWT_ID + int "itwt connection id" + range 0 32767 + default 0 + help + TWT Connection id. The value range is [0, 32767]. + + config EXAMPLE_ITWT_SETUP_TIMEOUT_TIME_MS + int "itwt setup timeout times" + range 100 65535 + default 5000 + help + TWT setup timeout time, in microseconds. The value range is [100, 65535]. + + endmenu + + choice EXAMPLE_MAX_CPU_FREQ + prompt "Maximum CPU frequency" + default EXAMPLE_MAX_CPU_FREQ_80 + depends on PM_ENABLE + help + Maximum CPU frequency to use for dynamic frequency scaling. + + config EXAMPLE_MAX_CPU_FREQ_80 + bool "80 MHz" + depends on !IDF_TARGET_ESP32P4 + config EXAMPLE_MAX_CPU_FREQ_90 + bool "90 MHz" + depends on IDF_TARGET_ESP32P4 + config EXAMPLE_MAX_CPU_FREQ_120 + bool "120 MHz" + depends on IDF_TARGET_ESP32C2 + config EXAMPLE_MAX_CPU_FREQ_160 + bool "160 MHz" + depends on !IDF_TARGET_ESP32P4 + config EXAMPLE_MAX_CPU_FREQ_180 + bool "180 MHz" + depends on IDF_TARGET_ESP32P4 + config EXAMPLE_MAX_CPU_FREQ_240 + bool "240 MHz" + depends on IDF_TARGET_ESP32 || IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32C5 + endchoice + + config EXAMPLE_MAX_CPU_FREQ_MHZ + int + default 80 if EXAMPLE_MAX_CPU_FREQ_80 + default 90 if EXAMPLE_MAX_CPU_FREQ_90 + default 120 if EXAMPLE_MAX_CPU_FREQ_120 + default 160 if EXAMPLE_MAX_CPU_FREQ_160 + default 180 if EXAMPLE_MAX_CPU_FREQ_180 + default 240 if EXAMPLE_MAX_CPU_FREQ_240 + + choice EXAMPLE_MIN_CPU_FREQ + prompt "Minimum CPU frequency" + default EXAMPLE_MIN_CPU_FREQ_10M if !IDF_TARGET_ESP32C5 + default EXAMPLE_MIN_CPU_FREQ_12M if IDF_TARGET_ESP32C5 + depends on PM_ENABLE + help + Minimum CPU frequency to use for dynamic frequency scaling. + Should be set to XTAL frequency or XTAL frequency divided by integer. + + config EXAMPLE_MIN_CPU_FREQ_40M + bool "40 MHz (use with 40MHz XTAL)" + depends on XTAL_FREQ_40 || XTAL_FREQ_AUTO + config EXAMPLE_MIN_CPU_FREQ_20M + bool "20 MHz (use with 40MHz XTAL)" + depends on XTAL_FREQ_40 || XTAL_FREQ_AUTO + config EXAMPLE_MIN_CPU_FREQ_12M + bool "12 MHz (use with 48MHz XTAL)" + depends on XTAL_FREQ_48 || XTAL_FREQ_AUTO + config EXAMPLE_MIN_CPU_FREQ_10M + bool "10 MHz (use with 40MHz XTAL)" + depends on XTAL_FREQ_40 || XTAL_FREQ_AUTO + config EXAMPLE_MIN_CPU_FREQ_26M + bool "26 MHz (use with 26MHz XTAL)" + depends on XTAL_FREQ_26 || XTAL_FREQ_AUTO + config EXAMPLE_MIN_CPU_FREQ_13M + bool "13 MHz (use with 26MHz XTAL)" + depends on XTAL_FREQ_26 || XTAL_FREQ_AUTO + endchoice + + config EXAMPLE_MIN_CPU_FREQ_MHZ + int + default 40 if EXAMPLE_MIN_CPU_FREQ_40M + default 20 if EXAMPLE_MIN_CPU_FREQ_20M + default 10 if EXAMPLE_MIN_CPU_FREQ_10M + default 26 if EXAMPLE_MIN_CPU_FREQ_26M + default 13 if EXAMPLE_MIN_CPU_FREQ_13M + default 12 if EXAMPLE_MIN_CPU_FREQ_12M + +endmenu diff --git a/examples/host_wifi_itwt/main/idf_component.yml b/examples/host_wifi_itwt/main/idf_component.yml new file mode 100644 index 00000000..834e3fcf --- /dev/null +++ b/examples/host_wifi_itwt/main/idf_component.yml @@ -0,0 +1,13 @@ +dependencies: + cmd_system: + path: ${IDF_PATH}/examples/system/console/advanced/components/cmd_system + cmd_nvs: + path: ${IDF_PATH}/examples/system/console/advanced/components/cmd_nvs + espressif/esp_wifi_remote: + version: ">=0.10,<2.0" + rules: + - if: "target in [esp32p4, esp32h2]" + espressif/esp_hosted: + version: "*" + rules: + - if: "target in [esp32p4, esp32h2]" diff --git a/examples/host_wifi_itwt/main/itwt_main.c b/examples/host_wifi_itwt/main/itwt_main.c new file mode 100644 index 00000000..d3324fb7 --- /dev/null +++ b/examples/host_wifi_itwt/main/itwt_main.c @@ -0,0 +1,374 @@ +/* + * SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Unlicense OR CC0-1.0 + */ +/* itwt Example + + This example code is in the Public Domain (or CC0 licensed, at your option.) + + Unless required by applicable law or agreed to in writing, this + software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + CONDITIONS OF ANY KIND, either express or implied. +*/ + +/* + this example shows how to use itwt + set a router or a AP using the same SSID&PASSWORD as configuration of this example. + start esp32c6 and when it connected to AP it will setup itwt. +*/ +#include +#include "freertos/FreeRTOS.h" +#include "freertos/event_groups.h" +#include "esp_wifi.h" +#include "esp_log.h" +#include "esp_event.h" +#include "nvs_flash.h" +#include "esp_console.h" +#include "cmd_system.h" +#include "esp_wifi_he.h" +#include "esp_pm.h" +#include "esp_timer.h" + +#include "wifi_cmd.h" + +/******************************************************* + * Constants + *******************************************************/ +static const char *TAG = "itwt"; + +/******************************************************* + * Structures + *******************************************************/ + +/******************************************************* + * Variable Definitions + *******************************************************/ +/*set the ssid and password via "idf.py menuconfig"*/ +#define DEFAULT_SSID CONFIG_EXAMPLE_WIFI_SSID +#define DEFAULT_PWD CONFIG_EXAMPLE_WIFI_PASSWORD +#define ITWT_SETUP_SUCCESS 1 + +#if CONFIG_EXAMPLE_TWT_ENABLE_KEEP_ALIVE_QOS_NULL +bool keep_alive_enabled = true; +#else +bool keep_alive_enabled = false; +#endif + +#if CONFIG_EXAMPLE_ITWT_TRIGGER_ENABLE +uint8_t trigger_enabled = 1; +#else +uint8_t trigger_enabled = 0; +#endif + +#if CONFIG_EXAMPLE_ITWT_ANNOUNCED +uint8_t flow_type_announced = 1; +#else +uint8_t flow_type_announced = 0; +#endif + +esp_netif_t *netif_sta = NULL; +const int CONNECTED_BIT = BIT0; +const int DISCONNECTED_BIT = BIT1; +EventGroupHandle_t wifi_event_group; + +/******************************************************* + * Function Declarations + *******************************************************/ + +/******************************************************* + * Function Definitions + *******************************************************/ + +static void example_set_static_ip(esp_netif_t *netif) +{ +#if CONFIG_EXAMPLE_ENABLE_STATIC_IP + if (esp_netif_dhcpc_stop(netif) != ESP_OK) { + ESP_LOGE(TAG, "Failed to stop dhcp client"); + return; + } + esp_netif_ip_info_t ip; + memset(&ip, 0 , sizeof(esp_netif_ip_info_t)); + ip.ip.addr = ipaddr_addr(CONFIG_EXAMPLE_STATIC_IP_ADDR); + ip.netmask.addr = ipaddr_addr(CONFIG_EXAMPLE_STATIC_NETMASK_ADDR); + ip.gw.addr = ipaddr_addr(CONFIG_EXAMPLE_STATIC_GW_ADDR); + if (esp_netif_set_ip_info(netif, &ip) != ESP_OK) { + ESP_LOGE(TAG, "Failed to set ip info"); + return; + } + ESP_LOGI(TAG, "Success to set static ip: %s, netmask: %s, gw: %s", + CONFIG_EXAMPLE_STATIC_IP_ADDR, CONFIG_EXAMPLE_STATIC_NETMASK_ADDR, CONFIG_EXAMPLE_STATIC_GW_ADDR); +#endif +} + +static const char *itwt_probe_status_to_str(wifi_itwt_probe_status_t status) +{ + switch (status) { + case ITWT_PROBE_FAIL: return "itwt probe fail"; + case ITWT_PROBE_SUCCESS: return "itwt probe success"; + case ITWT_PROBE_TIMEOUT: return "itwt probe timeout"; + case ITWT_PROBE_STA_DISCONNECTED: return "Sta disconnected"; + default: return "Unknown status"; + } +} + +static void got_ip_handler(void *arg, esp_event_base_t event_base, + int32_t event_id, void *event_data) +{ + xEventGroupClearBits(wifi_event_group, DISCONNECTED_BIT); + xEventGroupSetBits(wifi_event_group, CONNECTED_BIT); + + /* setup a trigger-based announce individual TWT agreement. */ + wifi_phy_mode_t phymode; + wifi_config_t sta_cfg = { 0, }; + esp_wifi_get_config(WIFI_IF_STA, &sta_cfg); + esp_wifi_sta_get_negotiated_phymode(&phymode); + if (phymode == WIFI_PHY_MODE_HE20) { + esp_err_t err = ESP_OK; + wifi_itwt_setup_config_t setup_config = { + .setup_cmd = TWT_REQUEST, + .flow_id = 0, + .twt_id = CONFIG_EXAMPLE_ITWT_ID, + .flow_type = flow_type_announced ? 0 : 1, + .min_wake_dura = CONFIG_EXAMPLE_ITWT_MIN_WAKE_DURA, + .wake_duration_unit = CONFIG_EXAMPLE_ITWT_WAKE_DURATION_UNIT, + .wake_invl_expn = CONFIG_EXAMPLE_ITWT_WAKE_INVL_EXPN, + .wake_invl_mant = CONFIG_EXAMPLE_ITWT_WAKE_INVL_MANT, + .trigger = trigger_enabled, + .timeout_time_ms = CONFIG_EXAMPLE_ITWT_SETUP_TIMEOUT_TIME_MS, + }; + err = esp_wifi_sta_itwt_setup(&setup_config); + if (err != ESP_OK) { + ESP_LOGE(TAG, "itwt setup failed, err:0x%x", err); + ESP_LOGE(TAG, "Error: %s", esp_err_to_name(err)); + } + } else { + ESP_LOGE(TAG, "Must be in 11ax mode to support itwt"); + } +} + +static void start_handler(void *arg, esp_event_base_t event_base, + int32_t event_id, void *event_data) +{ + ESP_LOGI(TAG, "sta connect to %s", DEFAULT_SSID); + esp_wifi_connect(); +} + +static void disconnect_handler(void *arg, esp_event_base_t event_base, + int32_t event_id, void *event_data) +{ + ESP_LOGI(TAG, "sta disconnect, reconnect..."); + xEventGroupClearBits(wifi_event_group, CONNECTED_BIT); + esp_wifi_connect(); +} + +static void itwt_setup_handler(void *arg, esp_event_base_t event_base, + int32_t event_id, void *event_data) +{ + wifi_event_sta_itwt_setup_t *setup = (wifi_event_sta_itwt_setup_t *) event_data; + if (setup->status == ITWT_SETUP_SUCCESS) { + /* TWT Wake Interval = TWT Wake Interval Mantissa * (2 ^ TWT Wake Interval Exponent) */ + ESP_LOGI(TAG, "twt_id:%d, flow_id:%d, %s, %s, wake_dura:%d, wake_dura_unit:%d, wake_invl_e:%d, wake_invl_m:%d", setup->config.twt_id, + setup->config.flow_id, setup->config.trigger ? "trigger-enabled" : "non-trigger-enabled", setup->config.flow_type ? "unannounced" : "announced", + setup->config.min_wake_dura, setup->config.wake_duration_unit, setup->config.wake_invl_expn, setup->config.wake_invl_mant); + ESP_LOGI(TAG, "target wake time:%lld, wake duration:%d us, service period:%d us", setup->target_wake_time, setup->config.min_wake_dura << (setup->config.wake_duration_unit == 1 ? 10 : 8), + setup->config.wake_invl_mant << setup->config.wake_invl_expn); + } else { + if (setup->status == ESP_ERR_WIFI_TWT_SETUP_TIMEOUT) { + ESP_LOGE(TAG, "twt_id:%d, timeout of receiving twt setup response frame", setup->config.twt_id); + } else if (setup->status == ESP_ERR_WIFI_TWT_SETUP_TXFAIL) { + ESP_LOGE(TAG, "twt_id:%d, twt setup frame tx failed, reason: %d", setup->config.twt_id, setup->reason); + } else if (setup->status == ESP_ERR_WIFI_TWT_SETUP_REJECT) { + ESP_LOGE(TAG, "twt_id:%d, twt setup request was rejected, setup cmd: %d", setup->config.twt_id, setup->config.setup_cmd); + } else { + ESP_LOGE(TAG, "twt_id:%d, twt setup failed, status: %d", setup->config.twt_id, setup->status); + } + } +} + +static void itwt_teardown_handler(void *arg, esp_event_base_t event_base, + int32_t event_id, void *event_data) +{ + wifi_event_sta_itwt_teardown_t *teardown = (wifi_event_sta_itwt_teardown_t *) event_data; + if (teardown->status == ITWT_TEARDOWN_FAIL) { + ESP_LOGE(TAG, "flow_id %d%s, twt teardown frame tx failed", teardown->flow_id, (teardown->flow_id == 8) ? "(all twt)" : ""); + } else { + ESP_LOGI(TAG, "flow_id %d%s", teardown->flow_id, (teardown->flow_id == 8) ? "(all twt)" : ""); + } +} + +static void itwt_suspend_handler(void *arg, esp_event_base_t event_base, + int32_t event_id, void *event_data) +{ + wifi_event_sta_itwt_suspend_t *suspend = (wifi_event_sta_itwt_suspend_t *) event_data; + ESP_LOGI(TAG, "status:%d, flow_id_bitmap:0x%x, actual_suspend_time_ms:[%lu %lu %lu %lu %lu %lu %lu %lu]", + suspend->status, suspend->flow_id_bitmap, + suspend->actual_suspend_time_ms[0], suspend->actual_suspend_time_ms[1], suspend->actual_suspend_time_ms[2], suspend->actual_suspend_time_ms[3], + suspend->actual_suspend_time_ms[4], suspend->actual_suspend_time_ms[5], suspend->actual_suspend_time_ms[6], suspend->actual_suspend_time_ms[7]); +} + +static void itwt_probe_handler(void *arg, esp_event_base_t event_base, + int32_t event_id, void *event_data) +{ + wifi_event_sta_itwt_probe_t *probe = (wifi_event_sta_itwt_probe_t *) event_data; + ESP_LOGI(TAG, "status:%s, reason:0x%x", itwt_probe_status_to_str(probe->status), probe->reason); +} + +static void wifi_itwt(void) +{ + ESP_ERROR_CHECK(esp_netif_init()); + wifi_event_group = xEventGroupCreate(); + ESP_ERROR_CHECK(esp_event_loop_create_default()); + netif_sta = esp_netif_create_default_wifi_sta(); + assert(netif_sta); + + wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); + ESP_ERROR_CHECK(esp_wifi_init(&cfg)); + + ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT, + WIFI_EVENT_STA_START, + &start_handler, + NULL, + NULL)); + ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT, + WIFI_EVENT_STA_DISCONNECTED, + &disconnect_handler, + NULL, + NULL)); + ESP_ERROR_CHECK(esp_event_handler_instance_register(IP_EVENT, + IP_EVENT_STA_GOT_IP, + &got_ip_handler, + NULL, + NULL)); + /* itwt */ + ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT, + WIFI_EVENT_ITWT_SETUP, + &itwt_setup_handler, + NULL, + NULL)); + ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT, + WIFI_EVENT_ITWT_TEARDOWN, + &itwt_teardown_handler, + NULL, + NULL)); + ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT, + WIFI_EVENT_ITWT_SUSPEND, + &itwt_suspend_handler, + NULL, + NULL)); + ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT, + WIFI_EVENT_ITWT_PROBE, + &itwt_probe_handler, + NULL, + NULL)); + + wifi_config_t wifi_config = { + .sta = { + .ssid = DEFAULT_SSID, + .password = DEFAULT_PWD, + }, + }; + ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA)); + ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config)); + + wifi_twt_config_t wifi_twt_config = { + .post_wakeup_event = false, + .twt_enable_keep_alive = keep_alive_enabled, + }; + ESP_ERROR_CHECK(esp_wifi_sta_twt_config(&wifi_twt_config)); +#if CONFIG_SOC_WIFI_SUPPORT_5G || CONFIG_SLAVE_SOC_WIFI_SUPPORT_5G + wifi_bandwidths_t bw = { + .ghz_2g = WIFI_BW_HT20, + .ghz_5g = WIFI_BW_HT20, + }; + esp_wifi_set_bandwidths(WIFI_IF_STA, &bw); + + wifi_protocols_t protocol = { + .ghz_2g = WIFI_PROTOCOL_11AX, + .ghz_5g = WIFI_PROTOCOL_11AX, + }; + esp_wifi_set_protocols(WIFI_IF_STA, &protocol); +#else + esp_wifi_set_bandwidth(WIFI_IF_STA, WIFI_BW_HT20); + esp_wifi_set_protocol(WIFI_IF_STA, WIFI_PROTOCOL_11B | WIFI_PROTOCOL_11G | WIFI_PROTOCOL_11N | WIFI_PROTOCOL_11AX); +#endif + esp_wifi_set_ps(WIFI_PS_MIN_MODEM); + +#if CONFIG_EXAMPLE_ENABLE_STATIC_IP + example_set_static_ip(netif_sta); +#endif + + ESP_ERROR_CHECK(esp_wifi_start()); + +#if CONFIG_ESP_WIFI_ENABLE_WIFI_RX_STATS +#if CONFIG_ESP_WIFI_ENABLE_WIFI_RX_MU_STATS + esp_wifi_enable_rx_statistics(true, true); +#else + esp_wifi_enable_rx_statistics(true, false); +#endif +#endif +#if CONFIG_ESP_WIFI_ENABLE_WIFI_TX_STATS + esp_wifi_enable_tx_statistics(ESP_WIFI_ACI_VO, true); //VO, mgmt + esp_wifi_enable_tx_statistics(ESP_WIFI_ACI_BE, true); //BE, data +#endif + +} + +void app_main(void) +{ + // Initialize NVS + esp_err_t ret = nvs_flash_init(); + if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) { + ESP_ERROR_CHECK(nvs_flash_erase()); + ret = nvs_flash_init(); + } + +#if CONFIG_PM_ENABLE + // Configure dynamic frequency scaling: + // maximum and minimum frequencies are set in sdkconfig, + // automatic light sleep is enabled if tickless idle support is enabled. + esp_pm_config_t pm_config = { + .max_freq_mhz = CONFIG_EXAMPLE_MAX_CPU_FREQ_MHZ, + .min_freq_mhz = CONFIG_EXAMPLE_MIN_CPU_FREQ_MHZ, +#if CONFIG_FREERTOS_USE_TICKLESS_IDLE + // SDIO currently does not work with auto light sleep + //.light_sleep_enable = true + .light_sleep_enable = false +#endif + }; + ESP_ERROR_CHECK( esp_pm_configure(&pm_config) ); + ESP_ERROR_CHECK( ret ); + +#else + printf("\n =================================================\n"); + printf(" | Test WiFi 6 itwt |\n"); + printf(" =================================================\n\n"); + + esp_console_repl_t *repl = NULL; + esp_console_repl_config_t repl_config = ESP_CONSOLE_REPL_CONFIG_DEFAULT(); + repl_config.prompt = "itwt>"; + + // init console REPL environment +#if CONFIG_ESP_CONSOLE_UART + esp_console_dev_uart_config_t uart_config = ESP_CONSOLE_DEV_UART_CONFIG_DEFAULT(); + ESP_ERROR_CHECK(esp_console_new_repl_uart(&uart_config, &repl_config, &repl)); +#elif CONFIG_ESP_CONSOLE_USB_CDC + esp_console_dev_usb_cdc_config_t cdc_config = ESP_CONSOLE_DEV_CDC_CONFIG_DEFAULT(); + ESP_ERROR_CHECK(esp_console_new_repl_usb_cdc(&cdc_config, &repl_config, &repl)); +#elif CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG + esp_console_dev_usb_serial_jtag_config_t usbjtag_config = ESP_CONSOLE_DEV_USB_SERIAL_JTAG_CONFIG_DEFAULT(); + ESP_ERROR_CHECK(esp_console_new_repl_usb_serial_jtag(&usbjtag_config, &repl_config, &repl)); +#endif + + // start console REPL + ESP_ERROR_CHECK(esp_console_start_repl(repl)); +#endif + + //start wifi + wifi_itwt(); + // register commands + register_system(); + register_wifi_itwt(); + register_wifi_stats(); + +} diff --git a/examples/host_wifi_itwt/main/wifi_cmd.h b/examples/host_wifi_itwt/main/wifi_cmd.h new file mode 100644 index 00000000..ab91396c --- /dev/null +++ b/examples/host_wifi_itwt/main/wifi_cmd.h @@ -0,0 +1,18 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +void register_wifi_itwt(void); +void register_wifi_stats(void); + +#ifdef __cplusplus +} +#endif diff --git a/examples/host_wifi_itwt/main/wifi_itwt_cmd.c b/examples/host_wifi_itwt/main/wifi_itwt_cmd.c new file mode 100644 index 00000000..97e89352 --- /dev/null +++ b/examples/host_wifi_itwt/main/wifi_itwt_cmd.c @@ -0,0 +1,259 @@ +/* + * SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include "esp_log.h" +#include "freertos/FreeRTOS.h" +#include "freertos/event_groups.h" + +#if CONFIG_SOC_WIFI_HE_SUPPORT || CONFIG_SLAVE_SOC_WIFI_HE_SUPPORT + +#include "esp_console.h" +#include "argtable3/argtable3.h" +#include "esp_netif.h" +#include "esp_event.h" +#include "esp_wifi.h" +#include "esp_wifi_he.h" + +/******************************************************* + * Constants + *******************************************************/ +static const char *TAG = "twt"; + +/******************************************************* + * Structures + *******************************************************/ +typedef struct { + struct arg_int *setup; + struct arg_lit *teardown; + struct arg_lit *suspend; + struct arg_lit *getflowid; + struct arg_int *waketimeoffset; + struct arg_int *trigger; //1-trigger-enabled, 0-non-trigger-enabled, setup + struct arg_int *flowtype; //1-unannounced, 0-announced, setup + struct arg_int *negtype; + struct arg_int *wakeinvlexp; //setup + struct arg_int *wakeduraunit; //1-TU, 0-256us + struct arg_int *wakeinvlman; //setup + struct arg_int *minwakedur; //setup + struct arg_int *flowid; + struct arg_int *twtid; + struct arg_int *setup_timeout_time_ms; + struct arg_int *suspend_time_ms; + struct arg_int *all_twt; + struct arg_end *end; +} wifi_itwt_args_t; + +typedef struct { + struct arg_int *timeout; + struct arg_end *end; +} wifi_itwt_send_probereq_t; + +/******************************************************* + * Variable Definitions + *******************************************************/ +static wifi_itwt_args_t itwt_args; +static wifi_itwt_send_probereq_t itwt_probe_args; + +/******************************************************* + * Function Declarations + *******************************************************/ + +/******************************************************* + * Function Definitions + *******************************************************/ +static int wifi_cmd_itwt(int argc, char **argv) +{ + int nerrors = arg_parse(argc, argv, (void **) &itwt_args); + if (nerrors != 0) { + arg_print_errors(stderr, itwt_args.end, argv[0]); + return 1; + } + + esp_err_t err = ESP_OK; + if (itwt_args.setup->count) { + if (itwt_args.wakeinvlman->count) { + if (itwt_args.wakeinvlman->ival[0] < 0 || itwt_args.wakeinvlman->ival[0] > 65535) { + ESP_LOGE(TAG, "(itwt)expect [0, 65535], wake_invl_mant: %d", itwt_args.wakeinvlman->ival[0]); + return 1; + } + } + if (itwt_args.wakeinvlexp->count) { + if (itwt_args.wakeinvlexp->ival[0] < 0 || itwt_args.wakeinvlexp->ival[0] > 31) { + ESP_LOGE(TAG, "(itwt)expect [0, 31], wake_invl_expn: %d", itwt_args.wakeinvlexp->ival[0]); + return 1; + } + } + if (itwt_args.minwakedur->count) { + if (itwt_args.minwakedur->ival[0] < 0 || itwt_args.minwakedur->ival[0] > 255) { + ESP_LOGE(TAG, "(itwt)expect [0, 255], min_wake_dura: %d", itwt_args.minwakedur->ival[0]); + return 1; + } + } + if (itwt_args.wakeduraunit->count) { + if (itwt_args.wakeduraunit->ival[0] < 0 || itwt_args.wakeduraunit->ival[0] > 1) { + ESP_LOGE(TAG, "(itwt)expect [0, 1], wake duration unit: %d", itwt_args.wakeduraunit->ival[0]); + return 1; + } + } + if (itwt_args.twtid->count) { + if (itwt_args.twtid->ival[0] < 0 || itwt_args.twtid->ival[0] > 32767) { + ESP_LOGE(TAG, "(itwt)expect [0, 32767], twt id: %d", itwt_args.twtid->ival[0]); + return 1; + } + } + if (itwt_args.setup_timeout_time_ms->count) { + if (itwt_args.setup_timeout_time_ms->ival[0] < 0 || itwt_args.setup_timeout_time_ms->ival[0] > 65535) { + ESP_LOGE(TAG, "(itwt)expect [0, 65535], setup timeout time: %d", itwt_args.setup_timeout_time_ms->ival[0]); + return 1; + } + } + wifi_twt_setup_config_t setup_config = { + .setup_cmd = (itwt_args.setup->ival[0] <= TWT_DEMAND) ? itwt_args.setup->ival[0] : TWT_REQUEST, + .flow_id = itwt_args.flowid->count ? itwt_args.flowid->ival[0] : 0, + .twt_id = itwt_args.twtid->count ? itwt_args.twtid->ival[0] : 0, + .flow_type = itwt_args.flowtype->count ? ((itwt_args.flowtype->ival[0] == 0) ? 0 : 1) : 0, + .min_wake_dura = itwt_args.minwakedur->count ? itwt_args.minwakedur->ival[0] : 255, + .wake_duration_unit = itwt_args.wakeduraunit->count ? itwt_args.wakeduraunit->ival[0] : 0, + .wake_invl_expn = itwt_args.wakeinvlexp->count ? itwt_args.wakeinvlexp->ival[0] : 10, + .wake_invl_mant = itwt_args.wakeinvlman->count ? itwt_args.wakeinvlman->ival[0] : 512, + .trigger = itwt_args.trigger->count ? (itwt_args.trigger->ival[0] ? 1 : 0) : 1, + .timeout_time_ms = itwt_args.setup_timeout_time_ms->count ? itwt_args.setup_timeout_time_ms->ival[0] : 5000, + }; + err = esp_wifi_sta_itwt_setup(&setup_config); + ESP_LOGI(TAG, "(itwt)setup, trigger:%d, %s, flow_id:%d, err:0x%x", + setup_config.trigger, setup_config.flow_type ? "unannounce" : "announced", setup_config.flow_id, err); + if (err != ESP_OK) { + ESP_LOGE(TAG, "Error: %s", esp_err_to_name(err)); + } + } + if (itwt_args.teardown->count) { + // teardown a given flow id, all_twt has a high priority + int flow_id = itwt_args.flowid->count ? itwt_args.flowid->ival[0] : (-1); + bool all_twt = itwt_args.all_twt->count ? ((itwt_args.all_twt->ival[0] == 1) ? true : false) : false; + flow_id = (all_twt == true) ? FLOW_ID_ALL : flow_id; + ESP_LOGW(TAG, "flow_id %d", flow_id); + if (flow_id >= 0) { + err = esp_wifi_sta_itwt_teardown(flow_id); + ESP_LOGI(TAG, "(itwt)teardown, flow_id:%d, all_twt:%d, err:0x%x", flow_id, all_twt, err); + if (err != ESP_OK) { + ESP_LOGE(TAG, "Error: %s", esp_err_to_name(err)); + } + } else { + ESP_LOGE(TAG, "(itwt)teardown, should specify an existing flow id"); + } + } + if (itwt_args.suspend->count) { + // suspend a given flow id + int flow_id = itwt_args.flowid->count ? itwt_args.flowid->ival[0] : (-1); + bool all_twt = itwt_args.all_twt->count ? (itwt_args.all_twt->ival[0] ? true : false) : false; + flow_id = (all_twt == true) ? FLOW_ID_ALL : flow_id; + int suspend_time_ms = itwt_args.suspend_time_ms->count ? itwt_args.suspend_time_ms->ival[0] : 0; + if (flow_id >= 0) { + err = esp_wifi_sta_itwt_suspend(flow_id, suspend_time_ms); + ESP_LOGI(TAG, "(itwt)suspend, flow_id:%d, all_twt:%d, suspend:%d ms, err:0x%x", flow_id, all_twt, suspend_time_ms, err); + if (err != ESP_OK) { + ESP_LOGE(TAG, "Error: %s", esp_err_to_name(err)); + } + } else { + ESP_LOGE(TAG, "(itwt)suspend, should specify an existing flow id"); + } + } + if (itwt_args.getflowid->count) { + int flow_id_bitmap; + err = esp_wifi_sta_itwt_get_flow_id_status(&flow_id_bitmap); + if (err == ESP_OK) { + ESP_LOGI(TAG, "flowid bitmap: 0x%" PRIx16, flow_id_bitmap); + } else { + ESP_LOGE(TAG, "Error: %s", esp_err_to_name(err)); + } + } + if (itwt_args.waketimeoffset->count) { + int offset_us = itwt_args.waketimeoffset->ival[0]; + err = esp_wifi_sta_itwt_set_target_wake_time_offset(offset_us); + if (err != ESP_OK) { + ESP_LOGE(TAG, "Error: %s", esp_err_to_name(err)); + } + } + return 0; +} + +static int wifi_cmd_itwt_probe(int argc, char **argv) +{ + int nerrors = arg_parse(argc, argv, (void **) &itwt_probe_args); + if (nerrors != 0) { + arg_print_errors(stderr, itwt_probe_args.end, argv[0]); + return 1; + } + + esp_err_t err = ESP_OK; + if (itwt_probe_args.timeout->count) { + if (itwt_probe_args.timeout->ival[0] > 0) { + ESP_LOGI(TAG, "(itwt)send probe req, timeout:%d ms", itwt_probe_args.timeout->ival[0]); + err = esp_wifi_sta_itwt_send_probe_req(itwt_probe_args.timeout->ival[0]); + if (err != ESP_OK) { + ESP_LOGE(TAG, "Error: %s", esp_err_to_name(err)); + } + } else { + ESP_LOGE(TAG, "(itwt)invalid input, timeout:%d ms", itwt_probe_args.timeout->ival[0]); + } + } + ESP_LOGI(TAG, "err:0x%x", err); + return err; +} + +void register_wifi_itwt(void) +{ + /* itwt setup/teardown */ + itwt_args.setup = arg_int0(NULL, "setup", "", "twt setup/teardown an individual flow id"); + itwt_args.teardown = arg_lit0(NULL, "teardown", "twt setup/teardown an individual flow id"); + itwt_args.suspend = arg_lit0(NULL, "suspend", "twt setup/teardown an individual flow id"); + itwt_args.getflowid = arg_lit0(NULL, "getflowid", "get flow ids"); + itwt_args.waketimeoffset = arg_int0(NULL, "waketimeoffset", "", "set wake time offset (in us)"); + itwt_args.trigger = arg_int0("t", NULL, "", "trigger"); + itwt_args.flowtype = arg_int0("f", NULL, "", "flow type: 0-announced, 1-unannounced"); + itwt_args.negtype = arg_int0("n", NULL, "", "negotiate type"); + itwt_args.minwakedur = arg_int0("d", NULL, "", "Norminal Min. Wake Duration"); + itwt_args.wakeduraunit = arg_int0("u", NULL, "", "wake duration unit 0-256us, 1-TU (TU = 1024us)"); + itwt_args.wakeinvlexp = arg_int0("e", NULL, "", "Wake Interval Exponent"); + itwt_args.wakeinvlman = arg_int0("m", NULL, "", "Wake Interval Mantissa"); + itwt_args.flowid = arg_int0("i", NULL, "", "Flow ID"); + itwt_args.suspend_time_ms = arg_int0("s", NULL, "", "time of suspending iTWT agreements, unit ms"); + itwt_args.twtid = arg_int0("w", NULL, "", "TWT ID"); + itwt_args.setup_timeout_time_ms = arg_int0("u", NULL, "", "iTWT setup timeout time, unit ms"); + itwt_args.all_twt = arg_int0("a", NULL, "", "All TWT"); + itwt_args.end = arg_end(1); + const esp_console_cmd_t itwt_cmd = { + .command = "itwt", + .help = "itwt setup, teardown or suspend", + .hint = NULL, + .func = &wifi_cmd_itwt, + .argtable = &itwt_args + }; + ESP_ERROR_CHECK(esp_console_cmd_register(&itwt_cmd)); + + /* itwt probe */ + itwt_probe_args.timeout = arg_int0("t", NULL, "[timeout]", "time of sending a probe request frame and receiving a probe response frame from ap, unit ms"); + itwt_probe_args.end = arg_end(1); + const esp_console_cmd_t itwt_probe_cmd = { + .command = "probe", + .help = "send probe request for TSF update when at lease one itwt agreement setup", + .hint = NULL, + .func = &wifi_cmd_itwt_probe, + .argtable = &itwt_probe_args + }; + ESP_ERROR_CHECK(esp_console_cmd_register(&itwt_probe_cmd)); +} + +#else + +void register_wifi_itwt(void) +{ + ; +} + +#endif /* CONFIG_SOC_WIFI_HE_SUPPORT || CONFIG_SLAVE_SOC_WIFI_HE_SUPPORT */ diff --git a/examples/host_wifi_itwt/main/wifi_stats_cmd.c b/examples/host_wifi_itwt/main/wifi_stats_cmd.c new file mode 100644 index 00000000..b3a9e10a --- /dev/null +++ b/examples/host_wifi_itwt/main/wifi_stats_cmd.c @@ -0,0 +1,584 @@ +/* + * SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include "esp_log.h" + +#if CONFIG_ESP_WIFI_ENABLE_WIFI_TX_STATS || CONFIG_ESP_WIFI_ENABLE_WIFI_RX_STATS + +#include "esp_console.h" +#include "argtable3/argtable3.h" +#include "esp_event.h" +#include "esp_wifi.h" +#include "esp_wifi_types.h" +#include "esp_private/esp_wifi_he_private.h" + +/******************************************************* + * Macros + *******************************************************/ +/* + * enable/disable rx/tx statistics after Wi-Fi started: + * (1) esp_wifi_enable_rx_statistics(true, true); //rx_stats=true, rx_mu_stats=true + * (2) esp_wifi_enable_tx_statistics(ESP_WIFI_ACI_BE, true); //aci=ESP_WIFI_ACI_BE, tx_stats=true + */ + +/******************************************************* + * Constants + *******************************************************/ +static const char *TAG = "stats"; + +/******************************************************* + * Structures + *******************************************************/ + +/******************************************************* + * Variable Definitions + *******************************************************/ +#if CONFIG_ESP_WIFI_ENABLE_WIFI_RX_MU_STATS +esp_test_rx_mu_statistics_t rx_mu_stats = { 0, }; //10932 bytes +#endif + +/******************************************************* + * Function Declarations + *******************************************************/ + +/******************************************************* + * Function Definitions + *******************************************************/ +const char *tx_fail_error2str(esp_test_tx_fail_error_t error) +{ + switch (error) { + case TEST_TX_FAIL_ERROR_H00: + return "0x00"; + case TEST_TX_FAIL_ERROR_H53: + return "0x53"; + case TEST_TX_FAIL_ERROR_H63: + return "0x63"; + case TEST_TX_FAIL_ERROR_H75: + return "0x75"; + case TEST_TX_FAIL_ERROR_H41: + return "0x41"; + case TEST_TX_FAIL_ERROR_H42: + return "0x42"; + case TEST_TX_FAIL_ERROR_H47: + return "0x47"; + case TEST_TX_FAIL_ERROR_H80: + return "0x80"; + case TEST_TX_FAIL_ERROR_H5A: + return "0x5A"; + case TEST_TX_FAIL_ERROR_HXX: + return "Others"; + case TEST_TX_FAIL_ERROR_MAX: + return "Undefined"; + } + return "Undefined"; +} + +const char *tx_fail_match2str(esp_test_tx_fail_match_t match) +{ + switch (match) { + case TEST_TX_WAIT_MATCH: + return "MATCH"; + case TEST_TX_WAIT_NOT2SELF: + return "NOT2SELF"; + case TEST_TX_MISMATCH: + return "MISMATCH"; + case TEST_TX_WAIT_TIMEOUT: + return "TIMEOUT"; + case TEST_TX_WAIT_MAX: + return "Undefined"; + } + return "Undefined"; +} + +const char *tx_fail_state2str(esp_test_tx_fail_state_t state) +{ + switch (state) { + case TEST_TX_SUCCESS: + return "TX Success"; + case TEST_TX_FAIL_RTS: + return "TX RTS"; + case TEST_TX_WAIT_CTS: //RX + return "Wait CTS"; + case TEST_TX_FAIL_CTS: + return "TX RTS"; + case TEST_TX_FAIL_DATA: + return "TX DATA"; + case TEST_TX_WAIT_ACK: //RX + return "Wait ACK/BA"; + case TEST_TX_FAIL_MAX: + return "Undefined"; + } + return "Undefined"; +} + +int wifi_cmd_clr_tx_statistics(int argc, char **argv) +{ + ESP_LOGW(TAG, "Clear tx statistics"); + int i; + for (i = 0; i < 3; i++) { + esp_wifi_clr_tx_statistics(i); //BE + esp_wifi_clr_tx_tb_statistics(i); + } + esp_test_clr_hw_statistics(); + return 0; +} + +void print_hw_tb_statistics(void) +{ + esp_test_hw_tb_statistics_t hw_tb_stats = { 0, }; + esp_test_get_hw_tb_statistics(&hw_tb_stats); + printf("(test)rx_trig:%d, tx_bfrpt:%d, tb_times:%d, tb_qos_null:%d, tb_qos_data:%d, tb_cca_cancel:%d, tb_sifs_abort:%d, tb_pwr_outof_range:%d\n", + hw_tb_stats.rx_trig, + hw_tb_stats.tx_bfrpt, //including TB and Non-TB + hw_tb_stats.tb_times, + hw_tb_stats.tb_qos_null, + hw_tb_stats.tb_times - hw_tb_stats.tb_qos_null, + hw_tb_stats.tb_cca_cancel, + hw_tb_stats.tb_sifs_abort, + hw_tb_stats.tb_pwr_outof_range); +} + +int wifi_cmd_get_tx_statistics(int argc, char **argv) +{ + uint8_t i, h, j, k; + + ESP_LOGW(TAG, "Get tx statistics"); + esp_test_tx_tb_statistics_t tb_stats = { 0, }; //32 bytes + esp_test_tx_statistics_t tx_stats = { 0, }; //136 bytes + esp_test_tx_fail_statistics_t tx_fail[TEST_TX_FAIL_MAX] = { 0, }; //TEST_TX_FAIL_MAX * 164 bytes + + print_hw_tb_statistics(); + //only check BE + for (i = 2; i < 3; i++) { + esp_wifi_get_tx_tb_statistics(i, &tb_stats); + /* TB */ + printf("(test)aci:%" PRIu8 ", tb(suc:%" PRIu32 ", ack:%" PRIu32 ", err:%" PRIu32 "), " + "count(suc:%" PRIu32 ", ack:%" PRIu32 ", err:%" PRIu32 ", tot:%" PRIu32 ", max_sent:%" PRIu32 ")\n", + i, + tb_stats.complete_suc_tb, + tb_stats.complete_ack_tb, + tb_stats.complete_err_tb, + tb_stats.complete_tb_suc_count, + tb_stats.complete_tb_ack_count, + tb_stats.complete_tb_err_count, + tb_stats.complete_tb_tot_count, + tb_stats.complete_tb_pack_sent); + + esp_wifi_get_tx_statistics(i, &tx_stats, (esp_test_tx_fail_statistics_t *) &tx_fail); + int tot_tx_times = tx_stats.tb_times + (tx_stats.tx_enable - tx_stats.tb_last); //TB + EDCA + int tot_fail = tx_fail[1].count + tx_fail[2].count + tx_fail[3].count + tx_fail[4].count + tx_fail[5].count; + printf("(test)aci:%" PRIu8 ", enable:%" PRIu32 ", complete:%" PRIu32 ", tb_times:%" PRIu32 ", tb_last:%" PRIu32 ", edca:%" PRIu32 ", " + "succ:%" PRIu32 ", fail(%" PRIu32 ",%" PRIu32 ",%" PRIu32 ", cts:%" PRIu32 "/%2.2f%%, ack:%" PRIu32 "/%2.2f%%, tot:%d, %.2f%%), " + "edca(ack:%" PRIu32 ", ba:%" PRIu32 "), tb(hw-ba:%" PRIu32 ", sw-ba:%" PRIu32 ")\n", + i, tx_stats.tx_enable, + tx_stats.tx_complete, + tx_stats.tb_times, + tx_stats.tb_last, + tx_stats.tx_enable - tx_stats.tb_last, + tx_fail[0].count, + tx_fail[1].count, + tx_fail[3].count, + tx_fail[4].count, + tx_fail[2].count, + (float) ((float) tx_fail[2].count / (float) tot_tx_times) * 100, //rx cts + tx_fail[5].count, (float) ((float) tx_fail[5].count / (float) tot_tx_times) * 100, //rx ack + tot_fail, + (float) ((float) tot_fail / (float) tot_tx_times) * 100, + tx_stats.rx_ack, + tx_stats.rx_ba, + tx_stats.tb_rx_ba, //including ACKs + tx_stats.rx_dump_ba); + + printf("(test)aci:%" PRIu8 ", txFrames:%" PRIu32 ", s-mpdu:%" PRIu32 "(%.2f%%), " + "bitmap(max:%d, min:%d, tot:%" PRIu32 ", avg:%.2f), " + "retry(edca:%" PRIu32 ", tb:%" PRIu32 ", %.2f%%), collision:%" PRIu32 ", timeout:%" PRIu32 "\n", + i, + tx_stats.tx_succ, + tx_stats.rx_ack, + ((float) (tx_stats.rx_ack) / (float) tot_tx_times) * 100, + tx_stats.rx_max_bitmap, + tx_stats.rx_min_bitmap, + tx_stats.rx_tot_bitmap, + (float) tx_stats.rx_tot_bitmap / (float) (tx_stats.tb_rx_ba + tx_stats.rx_ba), + tx_stats.retry_edca, tx_stats.retry_tb, (float) (tx_stats.retry_edca + tx_stats.retry_tb) / (float) tx_stats.tx_succ * 100, + tx_stats.collision, tx_stats.timeout); + + float tot_rtt_ms = (float) tx_stats.tx_tot_rtt / (float) 1000; + printf("(test)aci:%" PRIu8 ", seqno_rtt[%" PRIu32 ",%" PRIu32 "], hw_rtt[%" PRIu32 ", %" PRIu32 "], muedca[enable:%" PRIu32 ", times:%" PRIu32 ", %.2f, %.2f, tot:%.2f], avg:%.3f ms, tot:%.3f secs\n", + i, + tx_stats.tx_seq_min_rtt, + tx_stats.tx_seq_max_rtt, + tx_stats.tx_min_rtt, + tx_stats.tx_max_rtt, + tx_stats.tx_muedca_enable, + tx_stats.muedca_times, + (float) tx_stats.tx_min_muedca_time / (float) 1000, + (float) tx_stats.tx_max_muedca_time / (float) 1000, + (float) tx_stats.tx_tot_muedca_time / (float) 1000, //ms + (float) tot_rtt_ms / (float) tot_tx_times, //ms + (float) tot_rtt_ms / (float) 1000); //seconds + /* fail state */ + for (h = 1; h < TEST_TX_FAIL_MAX; h++) { //state + for (j = 0; j < TEST_TX_WAIT_MAX; j++) { //match + for (k = 0; k < TEST_TX_FAIL_ERROR_MAX; k++) { //error + if (tx_fail[h].match[j][k]) { + printf("(test)[%d][%d][%d](%16s + %16s + %16s)%3" PRIu32 "/%3" PRIu32 "(%.2f%%)\n", h, j, k, tx_fail_state2str(h), + tx_fail_match2str(j), tx_fail_error2str(k), + tx_fail[h].match[j][k], tx_fail[h].count, + ((float) tx_fail[h].match[j][k] / (float) tx_fail[h].count) * 100); + } + } + } + } + printf("\n"); + } + wifi_cmd_clr_tx_statistics(0, 0); + return 0; +} + +void print_rx_statistics_nonmimo(const esp_test_rx_mu_statistics_t *mu_stats) +{ + if (!mu_stats->nonmimo_rx) { + return; + } + + int i, j; + int tot_rx_nonmimo = 0; + ESP_LOGW(TAG, "(nonmimo)dut rx:%" PRIu32, mu_stats->nonmimo_rx); + ESP_LOGW(TAG, "(nonmimo)ru_alloc_96_num_2046:%" PRIu32 ", ru_alloc_112_num_2046:%" PRIu32, mu_stats->ru_alloc_96_num_2046, mu_stats->ru_alloc_112_num_2046); + ESP_LOGW(TAG, "(nonmimo)sigb, mcs0:%" PRIu32 "(%2.2f%%), mcs1:%" PRIu32 "(%2.2f%%), mcs2:%" PRIu32 "(%2.2f%%), mcs3:%" PRIu32 "(%2.2f%%), mcs4:%" PRIu32 "(%2.2f%%), mcs5:%" PRIu32 "(%2.2f%%)", + mu_stats->nonmimo_sigb_mcs[0], ((float) mu_stats->nonmimo_sigb_mcs[0] / (float) mu_stats->nonmimo_rx) * 100, + mu_stats->nonmimo_sigb_mcs[1], ((float) mu_stats->nonmimo_sigb_mcs[1] / (float) mu_stats->nonmimo_rx) * 100, + mu_stats->nonmimo_sigb_mcs[2], ((float) mu_stats->nonmimo_sigb_mcs[2] / (float) mu_stats->nonmimo_rx) * 100, + mu_stats->nonmimo_sigb_mcs[3], ((float) mu_stats->nonmimo_sigb_mcs[3] / (float) mu_stats->nonmimo_rx) * 100, + mu_stats->nonmimo_sigb_mcs[4], ((float) mu_stats->nonmimo_sigb_mcs[4] / (float) mu_stats->nonmimo_rx) * 100, + mu_stats->nonmimo_sigb_mcs[5], ((float) mu_stats->nonmimo_sigb_mcs[5] / (float) mu_stats->nonmimo_rx) * 100); + ESP_LOGW(TAG, "(nonmimo)users, num1:%" PRIu32 "(%2.2f%%), num2:%" PRIu32 "(%2.2f%%), num3:%" PRIu32 "(%2.2f%%), num4:%" PRIu32 "(%2.2f%%), num5:%" PRIu32 "(%2.2f%%), num6:%" PRIu32 "(%2.2f%%), num7:%" PRIu32 "(%2.2f%%), num8:%" PRIu32 "(%2.2f%%), num9:%" PRIu32 "(%2.2f%%)", + mu_stats->nonmimo_user_num_occu[0], ((float) mu_stats->nonmimo_user_num_occu[0] / (float) mu_stats->nonmimo_rx) * 100, + mu_stats->nonmimo_user_num_occu[1], ((float) mu_stats->nonmimo_user_num_occu[1] / (float) mu_stats->nonmimo_rx) * 100, + mu_stats->nonmimo_user_num_occu[2], ((float) mu_stats->nonmimo_user_num_occu[2] / (float) mu_stats->nonmimo_rx) * 100, + mu_stats->nonmimo_user_num_occu[3], ((float) mu_stats->nonmimo_user_num_occu[3] / (float) mu_stats->nonmimo_rx) * 100, + mu_stats->nonmimo_user_num_occu[4], ((float) mu_stats->nonmimo_user_num_occu[4] / (float) mu_stats->nonmimo_rx) * 100, + mu_stats->nonmimo_user_num_occu[5], ((float) mu_stats->nonmimo_user_num_occu[5] / (float) mu_stats->nonmimo_rx) * 100, + mu_stats->nonmimo_user_num_occu[6], ((float) mu_stats->nonmimo_user_num_occu[6] / (float) mu_stats->nonmimo_rx) * 100, + mu_stats->nonmimo_user_num_occu[7], ((float) mu_stats->nonmimo_user_num_occu[7] / (float) mu_stats->nonmimo_rx) * 100, + mu_stats->nonmimo_user_num_occu[8], ((float) mu_stats->nonmimo_user_num_occu[8] / (float) mu_stats->nonmimo_rx) * 100); + for (i = 0; i < 256; i++) { + for (j = 0; j < 9; j++) { + if (!mu_stats->nonmimo_ru_alloc[i][j]) { + continue; + } + ESP_LOGI(TAG, "(nonmimo)ru_allocation:0x%2x(%3" PRIu8 "), position:%" PRIu8 ", %5" PRIu32 "(%2.2f%%)", i, i, j + 1, mu_stats->nonmimo_ru_alloc[i][j], + ((float) mu_stats->nonmimo_ru_alloc[i][j] / (float) mu_stats->nonmimo_rx) * 100); + } + } + for (i = 0; i < ESP_TEST_RX_MU_USER_NUM; i++) { + if (!mu_stats->nonmimo[i].aid) { + continue; + } + if (mu_stats->aid != mu_stats->nonmimo[i].aid) { + continue; + } + tot_rx_nonmimo = mu_stats->nonmimo[i].occu_nsts[0] + mu_stats->nonmimo[i].occu_nsts[1] + mu_stats->nonmimo[i].occu_nsts[2] + mu_stats->nonmimo[i].occu_nsts[3]; + printf("[%" PRIu8 "]%said:0x%x, txbf:%" PRIu32 ", dcm:%" PRIu32 "\n", i, (mu_stats->aid == mu_stats->nonmimo[i].aid) ? "#" : " ", mu_stats->nonmimo[i].aid, + mu_stats->nonmimo[i].txbf, mu_stats->nonmimo[i].dcm); + printf("[%d]%said:0x%x, " + "mcs0:%" PRIu32 "(%2.2f%%), mcs1:%" PRIu32 "(%2.2f%%), mcs2:%" PRIu32 "(%2.2f%%), mcs3:%" PRIu32 "(%2.2f%%), mcs4:%" PRIu32 "(%2.2f%%), " + "mcs5:%" PRIu32 "(%2.2f%%), mcs6:%" PRIu32 "(%2.2f%%), mcs7:%" PRIu32 "(%2.2f%%), mcs8:%" PRIu32 "(%2.2f%%), mcs9:%" PRIu32 "(%2.2f%%), " + "mcs10:%" PRIu32 "(%2.2f%%), mcs11:%" PRIu32 "(%2.2f%%)\n", + i, (mu_stats->aid == mu_stats->nonmimo[i].aid) ? "#" : " ", mu_stats->nonmimo[i].aid, + mu_stats->nonmimo[i].occu_mcs[0], ((float) mu_stats->nonmimo[i].occu_mcs[0] / (float) tot_rx_nonmimo) * 100, + mu_stats->nonmimo[i].occu_mcs[1], ((float) mu_stats->nonmimo[i].occu_mcs[1] / (float) tot_rx_nonmimo) * 100, + mu_stats->nonmimo[i].occu_mcs[2], ((float) mu_stats->nonmimo[i].occu_mcs[2] / (float) tot_rx_nonmimo) * 100, + mu_stats->nonmimo[i].occu_mcs[3], ((float) mu_stats->nonmimo[i].occu_mcs[3] / (float) tot_rx_nonmimo) * 100, + mu_stats->nonmimo[i].occu_mcs[4], ((float) mu_stats->nonmimo[i].occu_mcs[4] / (float) tot_rx_nonmimo) * 100, + mu_stats->nonmimo[i].occu_mcs[5], ((float) mu_stats->nonmimo[i].occu_mcs[5] / (float) tot_rx_nonmimo) * 100, + mu_stats->nonmimo[i].occu_mcs[6], ((float) mu_stats->nonmimo[i].occu_mcs[6] / (float) tot_rx_nonmimo) * 100, + mu_stats->nonmimo[i].occu_mcs[7], ((float) mu_stats->nonmimo[i].occu_mcs[7] / (float) tot_rx_nonmimo) * 100, + mu_stats->nonmimo[i].occu_mcs[8], ((float) mu_stats->nonmimo[i].occu_mcs[8] / (float) tot_rx_nonmimo) * 100, + mu_stats->nonmimo[i].occu_mcs[9], ((float) mu_stats->nonmimo[i].occu_mcs[9] / (float) tot_rx_nonmimo) * 100, + mu_stats->nonmimo[i].occu_mcs[10], ((float) mu_stats->nonmimo[i].occu_mcs[10] / (float) tot_rx_nonmimo) * 100, + mu_stats->nonmimo[i].occu_mcs[11], ((float) mu_stats->nonmimo[i].occu_mcs[11] / (float) tot_rx_nonmimo) * 100); + printf("[%" PRIu8 "]%said:0x%x, " + "nsts0:%" PRIu32 "(%2.2f%%), nsts1:%" PRIu32 "(%2.2f%%), nsts2:%" PRIu32 "(%2.2f%%), nsts3:%" PRIu32 "(%2.2f%%)\n", + i, (mu_stats->aid == mu_stats->nonmimo[i].aid) ? "#" : " ", mu_stats->nonmimo[i].aid, + mu_stats->nonmimo[i].occu_nsts[0], ((float) mu_stats->nonmimo[i].occu_nsts[0] / (float) tot_rx_nonmimo) * 100, + mu_stats->nonmimo[i].occu_nsts[1], ((float) mu_stats->nonmimo[i].occu_nsts[1] / (float) tot_rx_nonmimo) * 100, + mu_stats->nonmimo[i].occu_nsts[2], ((float) mu_stats->nonmimo[i].occu_nsts[2] / (float) tot_rx_nonmimo) * 100, + mu_stats->nonmimo[i].occu_nsts[3], ((float) mu_stats->nonmimo[i].occu_nsts[3] / (float) tot_rx_nonmimo) * 100); + printf("[%" PRIu8 "]%said:0x%x, " + "tot_rx_nonmimo:%8d, sta/dut:%2.2f%%\n", + i, (mu_stats->aid == mu_stats->nonmimo[i].aid) ? "#" : " ", mu_stats->nonmimo[i].aid, + tot_rx_nonmimo, ((float) tot_rx_nonmimo / (float) mu_stats->nonmimo_rx) * 100); + } +} + +void print_rx_statistics_mimo(const esp_test_rx_mu_statistics_t *mu_stats) +{ + if (!mu_stats->mimo_rx) { + return; + } + + int i; + int tot_rx_mimo = 0; + ESP_LOGW(TAG, "(mimo)dut rx:%" PRIu32 "", mu_stats->mimo_rx); + ESP_LOGW(TAG, "(mimo)sigb, mcs0:%" PRIu32 "(%2.2f%%), mcs1:%" PRIu32 "(%2.2f%%), mcs2:%" PRIu32 "(%2.2f%%), mcs3:%" PRIu32 "(%2.2f%%), mcs4:%" PRIu32 "(%2.2f%%), mcs5:%" PRIu32 "(%2.2f%%)", + mu_stats->mimo_sigb_mcs[0], ((float) mu_stats->mimo_sigb_mcs[0] / (float) mu_stats->mimo_rx) * 100, + mu_stats->mimo_sigb_mcs[1], ((float) mu_stats->mimo_sigb_mcs[1] / (float) mu_stats->mimo_rx) * 100, + mu_stats->mimo_sigb_mcs[2], ((float) mu_stats->mimo_sigb_mcs[2] / (float) mu_stats->mimo_rx) * 100, + mu_stats->mimo_sigb_mcs[3], ((float) mu_stats->mimo_sigb_mcs[3] / (float) mu_stats->mimo_rx) * 100, + mu_stats->mimo_sigb_mcs[4], ((float) mu_stats->mimo_sigb_mcs[4] / (float) mu_stats->mimo_rx) * 100, + mu_stats->mimo_sigb_mcs[5], ((float) mu_stats->mimo_sigb_mcs[5] / (float) mu_stats->mimo_rx) * 100); + ESP_LOGW(TAG, "(mimo)users num2:%" PRIu32 "(%2.2f%%), num3:%" PRIu32 "(%2.2f%%), num4:%" PRIu32 "(%2.2f%%), num5:%" PRIu32 "(%2.2f%%), num6:%" PRIu32 "(%2.2f%%), num7:%" PRIu32 "(%2.2f%%), num8:%" PRIu32 "(%2.2f%%)", + mu_stats->mimo_user_num_occu[0], ((float) mu_stats->mimo_user_num_occu[0] / (float) mu_stats->mimo_rx) * 100, + mu_stats->mimo_user_num_occu[1], ((float) mu_stats->mimo_user_num_occu[1] / (float) mu_stats->mimo_rx) * 100, + mu_stats->mimo_user_num_occu[2], ((float) mu_stats->mimo_user_num_occu[2] / (float) mu_stats->mimo_rx) * 100, + mu_stats->mimo_user_num_occu[3], ((float) mu_stats->mimo_user_num_occu[3] / (float) mu_stats->mimo_rx) * 100, + mu_stats->mimo_user_num_occu[4], ((float) mu_stats->mimo_user_num_occu[4] / (float) mu_stats->mimo_rx) * 100, + mu_stats->mimo_user_num_occu[5], ((float) mu_stats->mimo_user_num_occu[5] / (float) mu_stats->mimo_rx) * 100, + mu_stats->mimo_user_num_occu[6], ((float) mu_stats->mimo_user_num_occu[6] / (float) mu_stats->mimo_rx) * 100); + for (i = 0; i < ESP_TEST_RX_MU_USER_NUM; i++) { + if (!mu_stats->mimo[i].aid) { + continue; + } + tot_rx_mimo = mu_stats->mimo[i].occu_ss[0] + mu_stats->mimo[i].occu_ss[1] + mu_stats->mimo[i].occu_ss[2] + mu_stats->mimo[i].occu_ss[3]; + printf("[%" PRIu8 "]%said:0x%x, " + "mcs0:%" PRIu32 "(%2.2f%%), mcs1:%" PRIu32 "(%2.2f%%), mcs2:%" PRIu32 "(%2.2f%%), mcs3:%" PRIu32 "(%2.2f%%), mcs4:%" PRIu32 "(%2.2f%%), " + "mcs5:%" PRIu32 "(%2.2f%%), mcs6:%" PRIu32 "(%2.2f%%), mcs7:%" PRIu32 "(%2.2f%%), mcs8:%" PRIu32 "(%2.2f%%), mcs9:%" PRIu32 "(%2.2f%%), " + "mcs10:%" PRIu32 "(%2.2f%%), mcs11:%" PRIu32 "(%2.2f%%)\n", + i, (mu_stats->aid == mu_stats->mimo[i].aid) ? "#" : " ", mu_stats->mimo[i].aid, + mu_stats->mimo[i].occu_mcs[0], ((float) mu_stats->mimo[i].occu_mcs[0] / (float) tot_rx_mimo) * 100, + mu_stats->mimo[i].occu_mcs[1], ((float) mu_stats->mimo[i].occu_mcs[1] / (float) tot_rx_mimo) * 100, + mu_stats->mimo[i].occu_mcs[2], ((float) mu_stats->mimo[i].occu_mcs[2] / (float) tot_rx_mimo) * 100, + mu_stats->mimo[i].occu_mcs[3], ((float) mu_stats->mimo[i].occu_mcs[3] / (float) tot_rx_mimo) * 100, + mu_stats->mimo[i].occu_mcs[4], ((float) mu_stats->mimo[i].occu_mcs[4] / (float) tot_rx_mimo) * 100, + mu_stats->mimo[i].occu_mcs[5], ((float) mu_stats->mimo[i].occu_mcs[5] / (float) tot_rx_mimo) * 100, + mu_stats->mimo[i].occu_mcs[6], ((float) mu_stats->mimo[i].occu_mcs[6] / (float) tot_rx_mimo) * 100, + mu_stats->mimo[i].occu_mcs[7], ((float) mu_stats->mimo[i].occu_mcs[7] / (float) tot_rx_mimo) * 100, + mu_stats->mimo[i].occu_mcs[8], ((float) mu_stats->mimo[i].occu_mcs[8] / (float) tot_rx_mimo) * 100, + mu_stats->mimo[i].occu_mcs[9], ((float) mu_stats->mimo[i].occu_mcs[9] / (float) tot_rx_mimo) * 100, + mu_stats->mimo[i].occu_mcs[10], ((float) mu_stats->mimo[i].occu_mcs[10] / (float) tot_rx_mimo) * 100, + mu_stats->mimo[i].occu_mcs[11], ((float) mu_stats->mimo[i].occu_mcs[11] / (float) tot_rx_mimo) * 100); + printf("[%" PRIu8 "]%said:0x%x, " + "ss0:%" PRIu32 "(%2.2f%%), ss1:%" PRIu32 "(%2.2f%%), ss2:%" PRIu32 "(%2.2f%%), ss3:%" PRIu32 "(%2.2f%%)\n", + i, (mu_stats->aid == mu_stats->mimo[i].aid) ? "#" : " ", mu_stats->mimo[i].aid, + mu_stats->mimo[i].occu_ss[0], ((float) mu_stats->mimo[i].occu_ss[0] / (float) tot_rx_mimo) * 100, + mu_stats->mimo[i].occu_ss[1], ((float) mu_stats->mimo[i].occu_ss[1] / (float) tot_rx_mimo) * 100, + mu_stats->mimo[i].occu_ss[2], ((float) mu_stats->mimo[i].occu_ss[2] / (float) tot_rx_mimo) * 100, + mu_stats->mimo[i].occu_ss[3], ((float) mu_stats->mimo[i].occu_ss[3] / (float) tot_rx_mimo) * 100); + printf("[%" PRIu8 "]%said:0x%x, " + "tot_rx_mimo:%8d, sta/dut:%2.2f%%\n", + i, (mu_stats->aid == mu_stats->mimo[i].aid) ? "#" : " ", mu_stats->mimo[i].aid, + tot_rx_mimo, ((float) tot_rx_mimo / (float) mu_stats->mimo_rx) * 100); + } +} + +void print_hw_rx_statistics(void) +{ + esp_test_hw_rx_statistics_t hw_rx_stats = { 0, }; + esp_test_get_hw_rx_statistics(&hw_rx_stats); + printf( + "WDEVRX_FCS_ERR :%d\n" + "WDEVRX_ABORT :%d\n" + "WDEVRX_ABORT_FCS_PASS :%d\n" + "NRX_ERR_PWRDROP :%d\n" + "NRX_HESIGB_ERR :%d\n" + "WDEVRX_SAMEBM_ERRCNT :%d\n" + "WDEVRX_MPDU :%d\n" + "WDEVRX_END_CNT :%d\n" + "WDEVRX_DATASUC :%d\n" + "WDEVRX_LASTUNMATCH_ERR :%d\n" + "RXHUNG_STATIS :%d\n" + "TXHUNG_STATIS :%d\n" + "RXTXHUNG :%" PRIu32 "\n" + "WDEVRX_CFO :%d\n" + "WDEVRX_SF :%d\n" + "WDEVRX_OTHER_UCAST :%d\n" + "WDEVRX_BUF_FULLCNT :%d\n" + "WDEVRX_FIFO_OVFCNT :%d\n" + "WDEVRX_TKIP_ERRCNT :%d\n" + "WDEVRX_BTBLOCK_ERR :%d\n" + "WDEVRX_FREQHOP_ERR :%d\n" + "WDEVRX_ACK_INT_CNT :%d\n" + "WDEVRX_RTS_INT_CNT :%d\n" + "BRX_ERR_AGC :%d\n" + "BRX_ERR :%d\n" + "NRX_ERR :%d\n" + "NRX_ERR_ABORT :%d\n" + "NRX_ERR_AGCEXIT :%d\n" + "NRX_ERR_BBOFF :%d\n" + "NRX_ERR_FDM_WDG :%d\n" + "NRX_ERR_RESTART :%d\n" + "NRX_ERR_SERV :%d\n" + "NRX_ERR_TXOVER :%d\n" + "NRX_HE_UNSUPPORT :%d\n" + "NRX_HTSIG_ERR :%d\n" + "NRX_HEUNSUPPORT :%d\n" + "NRX_HESIGA_CRC :%d\n", + hw_rx_stats.rx_fcs_err, + hw_rx_stats.rx_abort, + hw_rx_stats.rx_abort_fcs_pass, + hw_rx_stats.nrx_err_pwrdrop, + hw_rx_stats.nrx_hesigb_err, + hw_rx_stats.rx_samebm_errcnt, + hw_rx_stats.rx_mpdu, + hw_rx_stats.rx_end_cnt, + hw_rx_stats.rx_datasuc, + hw_rx_stats.rx_lastunmatch_err, + hw_rx_stats.rxhung_statis, + hw_rx_stats.txhung_statis, + hw_rx_stats.rxtxhung, + hw_rx_stats.rx_cfo_hz, + hw_rx_stats.rx_sf, + hw_rx_stats.rx_other_ucast, + hw_rx_stats.rx_buf_fullcnt, + hw_rx_stats.rx_fifo_ovfcnt, + hw_rx_stats.rx_tkip_errcnt, + hw_rx_stats.rx_btblock_err, + hw_rx_stats.rx_freqhop_err, + hw_rx_stats.rx_ack_int_cnt, + hw_rx_stats.rx_rts_int_cnt, + hw_rx_stats.brx_err_agc, + hw_rx_stats.brx_err, + hw_rx_stats.nrx_err, + hw_rx_stats.nrx_err_abort, + hw_rx_stats.nrx_err_agcexit, + hw_rx_stats.nrx_err_bboff, + hw_rx_stats.nrx_err_fdm_wdg, + hw_rx_stats.nrx_err_restart, + hw_rx_stats.nrx_err_serv, + hw_rx_stats.nrx_err_txover, + hw_rx_stats.nrx_err_unsupport, + hw_rx_stats.nrx_htsig_err, + hw_rx_stats.nrx_heunsupport, + hw_rx_stats.nrx_hesiga_crc + ); +} + +int wifi_cmd_clr_rx_statistics(int argc, char **argv) +{ + ESP_LOGW(TAG, "Clear rx statistics"); + esp_wifi_clr_rx_statistics(0); + esp_wifi_clr_rx_statistics(7); +#if CONFIG_ESP_WIFI_ENABLE_WIFI_RX_MU_STATS + esp_test_clr_rx_error_occurs(); + esp_wifi_clr_rx_mu_statistics(); +#endif + esp_test_clr_hw_statistics(); + return 0; +} + +void print_rx_mu_statistics(void) +{ + /* mu */ + esp_wifi_get_rx_mu_statistics(&rx_mu_stats); + /* MIMO */ + print_rx_statistics_mimo(&rx_mu_stats); + /* non-MIMO */ + print_rx_statistics_nonmimo(&rx_mu_stats); +} + +int wifi_cmd_get_rx_statistics(int argc, char **argv) +{ + ESP_LOGW(TAG, "Get rx statistics"); + esp_test_rx_statistics_t rx_stats = { 0, }; + esp_test_rx_error_occurs_t rx_error_occurs = { 0, }; + + esp_wifi_get_rx_statistics(0, &rx_stats); //tid=0 + print_hw_tb_statistics(); + + ESP_LOGW(TAG, "(0)legacy:%" PRIu32 ", ht(ht:%" PRIu32 ", ht_retry:%" PRIu32 "/%2.2f%%, ht_noeb:%" PRIu32 "/%2.2f%%)", + rx_stats.legacy, + rx_stats.ht, rx_stats.ht_retry, + rx_stats.ht_retry ? ((float) ((float) rx_stats.ht_retry / (float) rx_stats.ht) * 100) : 0, + rx_stats.ht_noeb, rx_stats.ht_noeb ? ((float) ((float) rx_stats.ht_noeb / (float) rx_stats.ht) * 100) : 0); + ESP_LOGW(TAG, "(0)su(su:%" PRIu32 ", su_txbf:%" PRIu32 ", su_stbc:%" PRIu32 ", su_retry:%" PRIu32 "/%2.2f%%, ersu:%" PRIu32 ", ersu_dcm:%" PRIu32 ", su_noeb:%" PRIu32 "/%2.2f%%)", + rx_stats.su, + rx_stats.su_txbf, rx_stats.su_stbc, + rx_stats.su_retry, + rx_stats.su_retry ? ((float) ((float) rx_stats.su_retry / (float) rx_stats.su) * 100) : 0, + rx_stats.ersu, + rx_stats.ersu_dcm, + rx_stats.su_noeb, rx_stats.su_noeb ? ((float) ((float) rx_stats.su_noeb / (float) rx_stats.su) * 100) : 0); + ESP_LOGW(TAG, "(0)mu(mu:%" PRIu32 ", mimo:%" PRIu32 ", non-mimo:%" PRIu32 ", txbf:%" PRIu32 ", stbc:%" PRIu32 ", mu_retry:%" PRIu32 "/%2.2f%%, mu_noeb:%" PRIu32 "/%2.2f%%)", + rx_stats.mu, + rx_stats.mu_mimo, + rx_stats.mu_ofdma, rx_stats.mu_txbf, rx_stats.mu_stbc, + rx_stats.mu_retry, + rx_stats.mu_retry ? ((float) ((float) rx_stats.mu_retry / (float) rx_stats.mu) * 100) : 0, + rx_stats.mu_noeb, rx_stats.mu_noeb ? ((float) ((float) rx_stats.mu_noeb / (float) rx_stats.mu) * 100) : 0); + + memset(&rx_stats, 0, sizeof(rx_stats)); + esp_wifi_get_rx_statistics(7, &rx_stats); //tid=7 + ESP_LOGW(TAG, "(7)legacy:%" PRIu32 ", ht:%" PRIu32 ", su:%" PRIu32 ", su_txbf:%" PRIu32 ", ersu:%" PRIu32 ", mu:%" PRIu32, rx_stats.legacy, + rx_stats.ht, rx_stats.su, rx_stats.su_txbf, rx_stats.ersu, rx_stats.mu); + ESP_LOGW(TAG, "(hw)isr:%" PRIu32 ", nblks:%" PRIu32, rx_stats.rx_isr, rx_stats.rx_nblks); + /* hw rx statistics */ + print_hw_rx_statistics(); +#if CONFIG_ESP_WIFI_ENABLE_WIFI_RX_MU_STATS + print_rx_mu_statistics(); +#endif + esp_test_get_rx_error_occurs(&rx_error_occurs); + ESP_LOGW(TAG, "(rx)tot_errors:%" PRIu32, rx_error_occurs.tot); + int known_errors = 0; //rx error: 0x40-0xff + int i; + for (i = 0; i < 2; i++) { + if (rx_error_occurs.occurs[i]) { + known_errors += rx_error_occurs.occurs[i]; + printf("[%3d] 0x%x, %8" PRIu32 ", %2.2f%%\n", i, (i ? 0xf5 : 0xc6), rx_error_occurs.occurs[i], ((float) rx_error_occurs.occurs[i] / (float) rx_error_occurs.tot) * 100); + } + } + if (rx_error_occurs.tot - known_errors) { + printf("[%3d]others, %8" PRIu32 ", %2.2f%%\n\n", i, rx_error_occurs.tot - known_errors, ((float) known_errors / (float) rx_error_occurs.tot) * 100); + } + wifi_cmd_clr_rx_statistics(0, 0); + return 0; +} + +#endif /* CONFIG_ESP_WIFI_ENABLE_WIFI_TX_STATS || CONFIG_ESP_WIFI_ENABLE_WIFI_RX_STATS */ + +void register_wifi_stats(void) +{ +#if CONFIG_ESP_WIFI_ENABLE_WIFI_TX_STATS + /* get tx statistics */ + const esp_console_cmd_t tx_stats_cmd = { + .command = "tx", + .help = "get tx statistics", + .hint = NULL, + .func = &wifi_cmd_get_tx_statistics, + }; + ESP_ERROR_CHECK(esp_console_cmd_register(&tx_stats_cmd)); + /* clear tx statistics */ + const esp_console_cmd_t clr_cmd = { + .command = "clrtx", + .help = "clear tx statistics", + .hint = NULL, + .func = &wifi_cmd_clr_tx_statistics, + }; + ESP_ERROR_CHECK(esp_console_cmd_register(&clr_cmd)); +#endif + +#if CONFIG_ESP_WIFI_ENABLE_WIFI_RX_STATS + /* get rx statistics */ + const esp_console_cmd_t rx_stats_cmd = { + .command = "rx", + .help = "get rx statistics", + .hint = NULL, + .func = &wifi_cmd_get_rx_statistics, + }; + ESP_ERROR_CHECK(esp_console_cmd_register(&rx_stats_cmd)); + /* clear rx statistics */ + const esp_console_cmd_t clr_rx_cmd = { + .command = "clrrx", + .help = "clear rx statistics", + .hint = NULL, + .func = &wifi_cmd_clr_rx_statistics, + }; + ESP_ERROR_CHECK(esp_console_cmd_register(&clr_rx_cmd)); +#endif +} diff --git a/examples/host_wifi_itwt/sdkconfig.defaults b/examples/host_wifi_itwt/sdkconfig.defaults new file mode 100644 index 00000000..dfa88a13 --- /dev/null +++ b/examples/host_wifi_itwt/sdkconfig.defaults @@ -0,0 +1,19 @@ +# Use lower CPU frequency +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80=y +# Enable support for power management +CONFIG_PM_ENABLE=y +# Enable tickless idle mode +CONFIG_FREERTOS_USE_TICKLESS_IDLE=y +# Put related source code in IRAM +CONFIG_PM_SLP_IRAM_OPT=y +CONFIG_PM_RTOS_IDLE_OPT=y +# Disable all GPIO at light sleep +CONFIG_PM_SLP_DISABLE_GPIO=y +# Enable wifi sleep iram optimization +CONFIG_ESP_WIFI_SLP_IRAM_OPT=y + +CONFIG_LWIP_ESP_GRATUITOUS_ARP=n + +CONFIG_FREERTOS_HZ=1000 +# CONFIG_LWIP_ESP_GRATUITOUS_ARP is not set +# CONFIG_ESP_GRATUITOUS_ARP is not set diff --git a/examples/host_wifi_itwt/sdkconfig.defaults.esp32p4 b/examples/host_wifi_itwt/sdkconfig.defaults.esp32p4 new file mode 100644 index 00000000..be159a6d --- /dev/null +++ b/examples/host_wifi_itwt/sdkconfig.defaults.esp32p4 @@ -0,0 +1 @@ +CONFIG_EXAMPLE_MAX_CPU_FREQ_90=y diff --git a/host/api/priv/esp_hosted_api_priv.h b/host/api/priv/esp_hosted_api_priv.h index be85e117..48a7992f 100644 --- a/host/api/priv/esp_hosted_api_priv.h +++ b/host/api/priv/esp_hosted_api_priv.h @@ -64,6 +64,18 @@ esp_err_t esp_wifi_remote_set_max_tx_power(int8_t power); esp_err_t esp_wifi_remote_get_max_tx_power(int8_t *power); esp_err_t esp_wifi_remote_sta_get_negotiated_phymode(wifi_phy_mode_t *phymode); esp_err_t esp_wifi_remote_sta_get_aid(uint16_t *aid); +esp_err_t esp_wifi_remote_set_inactive_time(wifi_interface_t ifx, uint16_t sec); +esp_err_t esp_wifi_remote_get_inactive_time(wifi_interface_t ifx, uint16_t *sec); + +#if H_WIFI_HE_SUPPORT +esp_err_t esp_wifi_remote_sta_twt_config(wifi_twt_config_t *config); +esp_err_t esp_wifi_remote_sta_itwt_setup(wifi_itwt_setup_config_t *setup_config); +esp_err_t esp_wifi_remote_sta_itwt_teardown(int flow_id); +esp_err_t esp_wifi_remote_sta_itwt_suspend(int flow_id, int suspend_time_ms); +esp_err_t esp_wifi_remote_sta_itwt_get_flow_id_status(int *flow_id_bitmap); +esp_err_t esp_wifi_remote_sta_itwt_send_probe_req(int timeout_ms); +esp_err_t esp_wifi_remote_sta_itwt_set_target_wake_time_offset(int timeout_us); +#endif #if H_WIFI_DUALBAND_SUPPORT /* Dual-band WiFi API (Depends upon co-processor used) */ diff --git a/host/api/src/esp_hosted_api.c b/host/api/src/esp_hosted_api.c index 2c9df8f3..7d8ca72c 100644 --- a/host/api/src/esp_hosted_api.c +++ b/host/api/src/esp_hosted_api.c @@ -436,6 +436,54 @@ esp_err_t esp_wifi_remote_sta_get_aid(uint16_t *aid) check_transport_up(); return rpc_wifi_sta_get_aid(aid); } + +esp_err_t esp_wifi_remote_set_inactive_time(wifi_interface_t ifx, uint16_t sec) +{ + return rpc_wifi_set_inactive_time(ifx, sec); +} + +esp_err_t esp_wifi_remote_get_inactive_time(wifi_interface_t ifx, uint16_t *sec) +{ + return rpc_wifi_get_inactive_time(ifx, sec); +} + +#if H_WIFI_HE_SUPPORT +esp_err_t esp_wifi_remote_sta_twt_config(wifi_twt_config_t *config) +{ + return rpc_wifi_sta_twt_config(config); +} + +esp_err_t esp_wifi_remote_sta_itwt_setup(wifi_itwt_setup_config_t *setup_config) +{ + return rpc_wifi_sta_itwt_setup(setup_config); +} + +esp_err_t esp_wifi_remote_sta_itwt_teardown(int flow_id) +{ + return rpc_wifi_sta_itwt_teardown(flow_id); +} + +esp_err_t esp_wifi_remote_sta_itwt_suspend(int flow_id, int suspend_time_ms) +{ + return rpc_wifi_sta_itwt_suspend(flow_id, suspend_time_ms); +} + +esp_err_t esp_wifi_remote_sta_itwt_get_flow_id_status(int *flow_id_bitmap) +{ + return rpc_wifi_sta_itwt_get_flow_id_status(flow_id_bitmap); +} + +esp_err_t esp_wifi_remote_sta_itwt_send_probe_req(int timeout_ms) +{ + return rpc_wifi_sta_itwt_send_probe_req(timeout_ms); +} + +esp_err_t esp_wifi_remote_sta_itwt_set_target_wake_time_offset(int offset_us) +{ + return rpc_wifi_sta_itwt_set_target_wake_time_offset(offset_us); +} +#endif + #if H_WIFI_DUALBAND_SUPPORT /* Dual-band WiFi API - always available at high level, but returns ESP_ERR_NOT_SUPPORTED when co-processor do not support */ esp_err_t esp_wifi_remote_set_band(wifi_band_t band) diff --git a/host/api/src/esp_wifi_weak.c b/host/api/src/esp_wifi_weak.c index d286c661..fe97395b 100644 --- a/host/api/src/esp_wifi_weak.c +++ b/host/api/src/esp_wifi_weak.c @@ -223,6 +223,54 @@ H_WEAK_REF esp_err_t esp_wifi_sta_get_rssi(int *rssi) return esp_wifi_remote_sta_get_rssi(rssi); } +H_WEAK_REF esp_err_t esp_wifi_set_inactive_time(wifi_interface_t ifx, uint16_t sec) +{ + return esp_wifi_remote_set_inactive_time(ifx, sec); +} + +H_WEAK_REF esp_err_t esp_wifi_get_inactive_time(wifi_interface_t ifx, uint16_t *sec) +{ + return esp_wifi_remote_get_inactive_time(ifx, sec); +} + +#if H_WIFI_HE_SUPPORT +H_WEAK_REF esp_err_t esp_wifi_sta_twt_config(wifi_twt_config_t *config) +{ + return esp_wifi_remote_sta_twt_config(config); +} + +H_WEAK_REF esp_err_t esp_wifi_sta_itwt_setup(wifi_itwt_setup_config_t *setup_config) +{ + return esp_wifi_remote_sta_itwt_setup(setup_config); +} + +H_WEAK_REF esp_err_t esp_wifi_sta_itwt_teardown(int flow_id) +{ + return esp_wifi_remote_sta_itwt_teardown(flow_id); +} + +H_WEAK_REF esp_err_t esp_wifi_sta_itwt_suspend(int flow_id, int suspend_time_ms) +{ + return esp_wifi_remote_sta_itwt_suspend(flow_id, suspend_time_ms); +} + +H_WEAK_REF esp_err_t esp_wifi_sta_itwt_get_flow_id_status(int *flow_id_bitmap) +{ + return esp_wifi_remote_sta_itwt_get_flow_id_status(flow_id_bitmap); +} + +H_WEAK_REF esp_err_t esp_wifi_sta_itwt_send_probe_req(int timeout_ms) +{ + return esp_wifi_remote_sta_itwt_send_probe_req(timeout_ms); +} + +H_WEAK_REF esp_err_t esp_wifi_sta_itwt_set_target_wake_time_offset(int offset_us) +{ + return esp_wifi_remote_sta_itwt_set_target_wake_time_offset(offset_us); +} + +#endif + #if H_WIFI_DUALBAND_SUPPORT H_WEAK_REF esp_err_t esp_wifi_set_band(wifi_band_t band) { diff --git a/host/drivers/rpc/core/rpc_evt.c b/host/drivers/rpc/core/rpc_evt.c index dc7fe09f..122294cd 100644 --- a/host/drivers/rpc/core/rpc_evt.c +++ b/host/drivers/rpc/core/rpc_evt.c @@ -5,6 +5,8 @@ #include "rpc_slave_if.h" #include "esp_log.h" #include +#include "esp_hosted_transport.h" +#include "esp_hosted_bitmasks.h" DEFINE_LOG_TAG(rpc_evt); @@ -81,7 +83,80 @@ int rpc_parse_evt(Rpc *rpc_msg, ctrl_cmd_t *app_ntfy) p_a->reason = p_c->reason; break; - } case RPC_ID__Event_WifiEventNoArgs: { +#if H_WIFI_HE_SUPPORT + } case RPC_ID__Event_StaItwtSetup: { + wifi_event_sta_itwt_setup_t * p_a = &(app_ntfy->u.e_wifi_sta_itwt_setup); + RpcEventStaItwtSetup * p_c = rpc_msg->event_sta_itwt_setup; + + ESP_LOGD(TAG, "EVENT: iTWT -> setup"); + RPC_FAIL_ON_NULL(event_sta_itwt_setup); + app_ntfy->resp_event_status = p_c->resp; + + p_a->config.setup_cmd = p_c->config->setup_cmd; + p_a->config.trigger = H_GET_BIT(WIFI_ITWT_CONFIG_1_trigger_BIT, p_c->config->bitmask_1); + p_a->config.flow_type = H_GET_BIT(WIFI_ITWT_CONFIG_1_flow_type_BIT, p_c->config->bitmask_1); + // WIFI_ITWT_CONFIG_1_flow_id_BIT is three bits wide + p_a->config.flow_id = (p_c->config->bitmask_1 >> WIFI_ITWT_CONFIG_1_flow_id_BIT) & 0x07; + // WIFI_ITWT_CONFIG_1_wake_invl_expn_BIT is five bits wide + p_a->config.wake_invl_expn = (p_c->config->bitmask_1 >> WIFI_ITWT_CONFIG_1_wake_invl_expn_BIT) & 0x1F; + p_a->config.wake_duration_unit = H_GET_BIT(WIFI_ITWT_CONFIG_1_wake_duration_unit_BIT, p_c->config->bitmask_1); +#if H_DECODE_WIFI_RESERVED_FIELD + p_a->config.reserved = (p_c->config->bitmask_1 >> WIFI_ITWT_CONFIG_1_MAX_USED_BIT) & WIFI_ITWT_CONFIG_1_RESERVED_BITMASK; +#endif + p_a->config.min_wake_dura = p_c->config->min_wake_dura; + p_a->config.wake_invl_mant = p_c->config->wake_invl_mant; + p_a->config.twt_id = p_c->config->twt_id; + p_a->config.timeout_time_ms = p_c->config->timeout_time_ms; + p_a->status = p_c->status; + p_a->reason = p_c->reason; + p_a->target_wake_time = p_c->target_wake_time; + + break; + } case RPC_ID__Event_StaItwtTeardown: { + wifi_event_sta_itwt_teardown_t * p_a = &(app_ntfy->u.e_wifi_sta_itwt_teardown); + RpcEventStaItwtTeardown * p_c = rpc_msg->event_sta_itwt_teardown; + + ESP_LOGD(TAG, "EVENT: iTWT -> teardown"); + RPC_FAIL_ON_NULL(event_sta_itwt_teardown); + app_ntfy->resp_event_status = p_c->resp; + + p_a->flow_id = p_c->flow_id; + p_a->status = p_c->status; + + break; + } case RPC_ID__Event_StaItwtSuspend: { + wifi_event_sta_itwt_suspend_t * p_a = &(app_ntfy->u.e_wifi_sta_itwt_suspend); + RpcEventStaItwtSuspend * p_c = rpc_msg->event_sta_itwt_suspend; + int num_elements = sizeof(p_a->actual_suspend_time_ms) / sizeof(p_a->actual_suspend_time_ms[0]); + int i; + + ESP_LOGD(TAG, "EVENT: iTWT -> suspend"); + RPC_FAIL_ON_NULL(event_sta_itwt_suspend); + app_ntfy->resp_event_status = p_c->resp; + + p_a->status = p_c->status; + p_a->flow_id_bitmap = p_c->flow_id_bitmap; + + memset(p_a->actual_suspend_time_ms, 0, sizeof(p_a->actual_suspend_time_ms)); + for (i = 0; i < min(num_elements, p_c->n_actual_suspend_time_ms); i++) { + p_a->actual_suspend_time_ms[i] = p_c->actual_suspend_time_ms[i]; + } + + break; + } case RPC_ID__Event_StaItwtProbe: { + wifi_event_sta_itwt_probe_t * p_a = &(app_ntfy->u.e_wifi_sta_itwt_probe); + RpcEventStaItwtProbe * p_c = rpc_msg->event_sta_itwt_probe; + + ESP_LOGD(TAG, "EVENT: iTWT -> probe"); + RPC_FAIL_ON_NULL(event_sta_itwt_probe); + app_ntfy->resp_event_status = p_c->resp; + + p_a->status = p_c->status; + p_a->reason = p_c->reason; + + break; +#endif + } case RPC_ID__Event_WifiEventNoArgs: { RPC_FAIL_ON_NULL(event_wifi_event_no_args); app_ntfy->resp_event_status = rpc_msg->event_wifi_event_no_args->resp; ESP_LOGI(TAG, "Event [0x%" PRIx32 "] received", rpc_msg->event_wifi_event_no_args->event_id); @@ -124,7 +199,7 @@ int rpc_parse_evt(Rpc *rpc_msg, ctrl_cmd_t *app_ntfy) break; } break; - } case RPC_ID__Event_StaScanDone: { + } case RPC_ID__Event_StaScanDone: { RpcEventStaScanDone *p_c = rpc_msg->event_sta_scan_done; wifi_event_sta_scan_done_t *p_a = &app_ntfy->u.e_wifi_sta_scan_done; RPC_FAIL_ON_NULL(event_sta_scan_done); diff --git a/host/drivers/rpc/core/rpc_req.c b/host/drivers/rpc/core/rpc_req.c index 23723b52..cca209de 100644 --- a/host/drivers/rpc/core/rpc_req.c +++ b/host/drivers/rpc/core/rpc_req.c @@ -472,6 +472,87 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) RPC_ALLOC_ASSIGN(RpcReqGetCoprocessorFwVersion, req_get_coprocessor_fwversion, rpc__req__get_coprocessor_fw_version__init); break; + } case RPC_ID__Req_WifiSetInactiveTime: { + RPC_ALLOC_ASSIGN(RpcReqWifiSetInactiveTime, req_wifi_set_inactive_time, + rpc__req__wifi_set_inactive_time__init); + req_payload->ifx = app_req->u.wifi_inactive_time.ifx; + req_payload->sec = app_req->u.wifi_inactive_time.sec; + break; + } case RPC_ID__Req_WifiGetInactiveTime: { + RPC_ALLOC_ASSIGN(RpcReqWifiGetInactiveTime, req_wifi_get_inactive_time, + rpc__req__wifi_get_inactive_time__init); + req_payload->ifx = app_req->u.wifi_inactive_time.ifx; + break; +#if H_WIFI_HE_SUPPORT + } case RPC_ID__Req_WifiStaTwtConfig: { + RPC_ALLOC_ASSIGN(RpcReqWifiStaTwtConfig, req_wifi_sta_twt_config, + rpc__req__wifi_sta_twt_config__init); + RPC_ALLOC_ELEMENT(WifiTwtConfig, req_payload->config, wifi_twt_config__init); + req_payload->config->post_wakeup_event = app_req->u.wifi_twt_config.post_wakeup_event; + req_payload->config->twt_enable_keep_alive = app_req->u.wifi_twt_config.twt_enable_keep_alive; + break; + } case RPC_ID__Req_WifiStaItwtSetup: { + RPC_ALLOC_ASSIGN(RpcReqWifiStaItwtSetup, req_wifi_sta_itwt_setup, + rpc__req__wifi_sta_itwt_setup__init); + RPC_ALLOC_ELEMENT(WifiItwtSetupConfig, req_payload->setup_config, wifi_itwt_setup_config__init); + wifi_itwt_setup_config_t * p_a_cfg = &app_req->u.wifi_itwt_setup_config; + WifiItwtSetupConfig * p_c_cfg = req_payload->setup_config; + + p_c_cfg->setup_cmd = p_a_cfg->setup_cmd; + if (p_a_cfg->trigger) + H_SET_BIT(WIFI_ITWT_CONFIG_1_trigger_BIT, p_c_cfg->bitmask_1); + + if (p_a_cfg->flow_type) + H_SET_BIT(WIFI_ITWT_CONFIG_1_flow_type_BIT, p_c_cfg->bitmask_1); + + // WIFI_ITWT_CONFIG_1_flow_id_BIT is three bits wide + if (p_a_cfg->flow_id) + p_c_cfg->bitmask_1 |= ((p_a_cfg->flow_id & 0x07) << WIFI_ITWT_CONFIG_1_flow_id_BIT); + + // WIFI_ITWT_CONFIG_1_wake_invl_expn_BIT is five bits wide + if (p_a_cfg->wake_invl_expn) + p_c_cfg->bitmask_1 |= ((p_a_cfg->wake_invl_expn & 0x1F) << WIFI_ITWT_CONFIG_1_wake_invl_expn_BIT); + + if (p_a_cfg->wake_duration_unit) + H_SET_BIT(WIFI_ITWT_CONFIG_1_wake_duration_unit_BIT, p_c_cfg->bitmask_1); + +#if H_DECODE_WIFI_RESERVED_FIELD + WIFI_ITWT_CONFIG_1_SET_RESERVED_VAL(p_a_cfg->reserved, p_c_cfg->bitmask_1); +#endif + p_c_cfg->min_wake_dura = p_a_cfg->min_wake_dura; + p_c_cfg->wake_invl_mant = p_a_cfg->wake_invl_mant; + p_c_cfg->twt_id = p_a_cfg->twt_id; + p_c_cfg->timeout_time_ms = p_a_cfg->timeout_time_ms; + + break; + } case RPC_ID__Req_WifiStaItwtTeardown: { + RPC_ALLOC_ASSIGN(RpcReqWifiStaItwtTeardown, req_wifi_sta_itwt_teardown, + rpc__req__wifi_sta_itwt_teardown__init); + + req_payload->flow_id = app_req->u.wifi_itwt_flow_id; + break; + } case RPC_ID__Req_WifiStaItwtSuspend: { + RPC_ALLOC_ASSIGN(RpcReqWifiStaItwtSuspend, req_wifi_sta_itwt_suspend, + rpc__req__wifi_sta_itwt_suspend__init); + + req_payload->flow_id = app_req->u.wifi_itwt_suspend.flow_id; + req_payload->suspend_time_ms = app_req->u.wifi_itwt_suspend.suspend_time_ms; + break; + } case RPC_ID__Req_WifiStaItwtGetFlowIdStatus: { + RPC_ALLOC_ASSIGN(RpcReqWifiStaItwtGetFlowIdStatus, req_wifi_sta_itwt_get_flow_id_status, + rpc__req__wifi_sta_itwt_get_flow_id_status__init); + break; + } case RPC_ID__Req_WifiStaItwtSendProbeReq: { + RPC_ALLOC_ASSIGN(RpcReqWifiStaItwtSendProbeReq, req_wifi_sta_itwt_send_probe_req, + rpc__req__wifi_sta_itwt_send_probe_req__init); + req_payload->timeout_ms = app_req->u.wifi_itwt_probe_req_timeout_ms; + break; + } case RPC_ID__Req_WifiStaItwtSetTargetWakeTimeOffset: { + RPC_ALLOC_ASSIGN(RpcReqWifiStaItwtSetTargetWakeTimeOffset, req_wifi_sta_itwt_set_target_wake_time_offset, + rpc__req__wifi_sta_itwt_set_target_wake_time_offset__init); + req_payload->offset_us = app_req->u.wifi_itwt_set_target_wake_time_offset_us; + break; +#endif #if H_WIFI_DUALBAND_SUPPORT } case RPC_ID__Req_WifiSetProtocols: { RPC_ALLOC_ASSIGN(RpcReqWifiSetProtocols, req_wifi_set_protocols, diff --git a/host/drivers/rpc/core/rpc_rsp.c b/host/drivers/rpc/core/rpc_rsp.c index eaa0369d..6da16d92 100644 --- a/host/drivers/rpc/core/rpc_rsp.c +++ b/host/drivers/rpc/core/rpc_rsp.c @@ -576,6 +576,48 @@ int rpc_parse_rsp(Rpc *rpc_msg, ctrl_cmd_t *app_resp) app_resp->u.coprocessor_fwversion.patch1 = rpc_msg->resp_get_coprocessor_fwversion->patch1; break; + } case RPC_ID__Resp_WifiSetInactiveTime: { + RPC_FAIL_ON_NULL(resp_wifi_set_inactive_time); + RPC_ERR_IN_RESP(resp_wifi_set_inactive_time); + break; + } case RPC_ID__Resp_WifiGetInactiveTime: { + RPC_FAIL_ON_NULL(resp_wifi_get_inactive_time); + RPC_ERR_IN_RESP(resp_wifi_get_inactive_time); + app_resp->u.wifi_inactive_time.sec = + rpc_msg->resp_wifi_get_inactive_time->sec; + break; +#if H_WIFI_HE_SUPPORT + } case RPC_ID__Resp_WifiStaTwtConfig: { + RPC_FAIL_ON_NULL(resp_wifi_sta_twt_config); + RPC_ERR_IN_RESP(resp_wifi_sta_twt_config); + break; + } case RPC_ID__Resp_WifiStaItwtSetup: { + RPC_FAIL_ON_NULL(resp_wifi_sta_itwt_setup); + RPC_ERR_IN_RESP(resp_wifi_sta_itwt_setup); + break; + } case RPC_ID__Resp_WifiStaItwtTeardown: { + RPC_FAIL_ON_NULL(resp_wifi_sta_itwt_teardown); + RPC_ERR_IN_RESP(resp_wifi_sta_itwt_teardown); + break; + } case RPC_ID__Resp_WifiStaItwtSuspend: { + RPC_FAIL_ON_NULL(resp_wifi_sta_itwt_suspend); + RPC_ERR_IN_RESP(resp_wifi_sta_itwt_suspend); + break; + } case RPC_ID__Resp_WifiStaItwtGetFlowIdStatus: { + RPC_FAIL_ON_NULL(resp_wifi_sta_itwt_get_flow_id_status); + RPC_ERR_IN_RESP(resp_wifi_sta_itwt_get_flow_id_status); + app_resp->u.wifi_itwt_flow_id_bitmap = + rpc_msg->resp_wifi_sta_itwt_get_flow_id_status->flow_id_bitmap; + break; + } case RPC_ID__Resp_WifiStaItwtSendProbeReq: { + RPC_FAIL_ON_NULL(resp_wifi_sta_itwt_suspend); + RPC_ERR_IN_RESP(resp_wifi_sta_itwt_suspend); + break; + } case RPC_ID__Resp_WifiStaItwtSetTargetWakeTimeOffset: { + RPC_FAIL_ON_NULL(resp_wifi_sta_itwt_set_target_wake_time_offset); + RPC_ERR_IN_RESP(resp_wifi_sta_itwt_set_target_wake_time_offset); + break; +#endif #if H_WIFI_DUALBAND_SUPPORT } case RPC_ID__Resp_WifiSetProtocols: { RPC_FAIL_ON_NULL(resp_wifi_set_protocols); diff --git a/host/drivers/rpc/slaveif/rpc_slave_if.c b/host/drivers/rpc/slaveif/rpc_slave_if.c index d7b38d47..ffba14e9 100644 --- a/host/drivers/rpc/slaveif/rpc_slave_if.c +++ b/host/drivers/rpc/slaveif/rpc_slave_if.c @@ -1,9 +1,9 @@ /* - * Espressif Systems Wireless LAN device driver + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD * - * Copyright (C) 2015-2022 Espressif Systems (Shanghai) PTE LTD - * SPDX-License-Identifier: GPL-2.0 OR Apache-2.0 + * SPDX-License-Identifier: Apache-2.0 */ + #include "rpc_slave_if.h" #include "rpc_core.h" #include "esp_hosted_wifi_config.h" @@ -334,6 +334,62 @@ ctrl_cmd_t * rpc_slaveif_wifi_set_protocols(ctrl_cmd_t *req) RPC_DECODE_RSP_IF_NOT_ASYNC(); } +ctrl_cmd_t * rpc_slaveif_wifi_set_inactive_time(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_WifiSetInactiveTime); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_wifi_get_inactive_time(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_WifiGetInactiveTime); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +#if H_WIFI_HE_SUPPORT +ctrl_cmd_t * rpc_slaveif_wifi_sta_twt_config(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_WifiStaTwtConfig); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_wifi_sta_itwt_setup(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_WifiStaItwtSetup); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_wifi_sta_itwt_teardown(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_WifiStaItwtTeardown); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_wifi_sta_itwt_suspend(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_WifiStaItwtSuspend); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_wifi_sta_itwt_get_flow_id_status(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_WifiStaItwtGetFlowIdStatus); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_wifi_sta_itwt_send_probe_req(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_WifiStaItwtSendProbeReq); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_wifi_sta_itwt_set_target_wake_time_offset(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_WifiStaItwtSetTargetWakeTimeOffset); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} +#endif + ctrl_cmd_t * rpc_slaveif_get_coprocessor_fwversion(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_GetCoprocessorFwVersion); diff --git a/host/drivers/rpc/slaveif/rpc_slave_if.h b/host/drivers/rpc/slaveif/rpc_slave_if.h index c8663815..e6a9d00c 100644 --- a/host/drivers/rpc/slaveif/rpc_slave_if.h +++ b/host/drivers/rpc/slaveif/rpc_slave_if.h @@ -1,8 +1,7 @@ /* - * Espressif Systems Wireless LAN device driver + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD * - * Copyright (C) 2015-2022 Espressif Systems (Shanghai) PTE LTD - * SPDX-License-Identifier: GPL-2.0 OR Apache-2.0 + * SPDX-License-Identifier: Apache-2.0 */ /** prevent recursive inclusion **/ @@ -178,6 +177,18 @@ typedef struct { int dns_type; } rpc_set_dhcp_dns_status_t; +typedef struct { + wifi_interface_t ifx; + uint16_t sec; +} rpc_wifi_inactive_time_t; + +#if H_WIFI_HE_SUPPORT +typedef struct { + int flow_id; + int suspend_time_ms; +} rpc_wifi_itwt_suspend_t; +#endif + typedef struct { /* event */ uint32_t hb_num; @@ -249,8 +260,26 @@ typedef struct Ctrl_cmd_t { rpc_wifi_sta_get_negotiated_phymode_t wifi_sta_get_negotiated_phymode; rpc_wifi_sta_get_aid_t wifi_sta_get_aid; + rpc_wifi_inactive_time_t wifi_inactive_time; + rpc_coprocessor_fwversion_t coprocessor_fwversion; +#if H_WIFI_HE_SUPPORT + wifi_twt_config_t wifi_twt_config; + + wifi_itwt_setup_config_t wifi_itwt_setup_config; + + int wifi_itwt_flow_id; + + rpc_wifi_itwt_suspend_t wifi_itwt_suspend; + + int wifi_itwt_flow_id_bitmap; + + int wifi_itwt_probe_req_timeout_ms; + + int wifi_itwt_set_target_wake_time_offset_us; +#endif + #if H_WIFI_DUALBAND_SUPPORT rpc_wifi_protocols_t wifi_protocols; @@ -276,6 +305,16 @@ typedef struct Ctrl_cmd_t { wifi_event_sta_connected_t e_wifi_sta_connected; wifi_event_sta_disconnected_t e_wifi_sta_disconnected; + +#if H_WIFI_HE_SUPPORT + wifi_event_sta_itwt_setup_t e_wifi_sta_itwt_setup; + + wifi_event_sta_itwt_teardown_t e_wifi_sta_itwt_teardown; + + wifi_event_sta_itwt_suspend_t e_wifi_sta_itwt_suspend; + + wifi_event_sta_itwt_probe_t e_wifi_sta_itwt_probe; +#endif }u; /* By default this callback is set to NULL. @@ -482,7 +521,15 @@ ctrl_cmd_t * rpc_slaveif_wifi_get_band(ctrl_cmd_t *req); ctrl_cmd_t * rpc_slaveif_wifi_set_band_mode(ctrl_cmd_t *req); ctrl_cmd_t * rpc_slaveif_wifi_get_band_mode(ctrl_cmd_t *req); ctrl_cmd_t * rpc_slaveif_set_slave_dhcp_dns_status(ctrl_cmd_t *req); - +ctrl_cmd_t * rpc_slaveif_wifi_set_inactive_time(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_get_inactive_time(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_sta_twt_config(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_sta_itwt_setup(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_sta_itwt_teardown(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_sta_itwt_suspend(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_sta_itwt_get_flow_id_status(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_sta_itwt_send_probe_req(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_sta_itwt_set_target_wake_time_offset(ctrl_cmd_t *req); #ifdef __cplusplus } #endif diff --git a/host/drivers/rpc/wrap/rpc_wrap.c b/host/drivers/rpc/wrap/rpc_wrap.c index f6d0ff17..009910d2 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.c +++ b/host/drivers/rpc/wrap/rpc_wrap.c @@ -167,6 +167,32 @@ static int rpc_event_callback(ctrl_cmd_t * app_event) p_e, sizeof(wifi_event_sta_disconnected_t), HOSTED_BLOCK_MAX); netif_connected = false; break; +#if H_WIFI_HE_SUPPORT + } case RPC_ID__Event_StaItwtSetup: { + ESP_LOGV(TAG, "ESP Event: iTWT: Setup"); + wifi_event_sta_itwt_setup_t *p_e = &app_event->u.e_wifi_sta_itwt_setup; + g_h.funcs->_h_event_wifi_post(WIFI_EVENT_ITWT_SETUP, + p_e, sizeof(wifi_event_sta_itwt_setup_t), HOSTED_BLOCK_MAX); + break; + } case RPC_ID__Event_StaItwtTeardown: { + ESP_LOGV(TAG, "ESP Event: iTWT: Teardown"); + wifi_event_sta_itwt_teardown_t *p_e = &app_event->u.e_wifi_sta_itwt_teardown; + g_h.funcs->_h_event_wifi_post(WIFI_EVENT_ITWT_TEARDOWN, + p_e, sizeof(wifi_event_sta_itwt_teardown_t), HOSTED_BLOCK_MAX); + break; + } case RPC_ID__Event_StaItwtSuspend: { + ESP_LOGV(TAG, "ESP Event: iTWT: Suspend"); + wifi_event_sta_itwt_suspend_t *p_e = &app_event->u.e_wifi_sta_itwt_suspend; + g_h.funcs->_h_event_wifi_post(WIFI_EVENT_ITWT_SUSPEND, + p_e, sizeof(wifi_event_sta_itwt_suspend_t), HOSTED_BLOCK_MAX); + break; + } case RPC_ID__Event_StaItwtProbe: { + ESP_LOGV(TAG, "ESP Event: iTWT: Probe"); + wifi_event_sta_itwt_probe_t *p_e = &app_event->u.e_wifi_sta_itwt_probe; + g_h.funcs->_h_event_wifi_post(WIFI_EVENT_ITWT_PROBE, + p_e, sizeof(wifi_event_sta_itwt_probe_t), HOSTED_BLOCK_MAX); + break; +#endif // H_WIFI_HE_SUPPORT } case RPC_ID__Event_WifiEventNoArgs: { int wifi_event_id = app_event->u.e_wifi_simple.wifi_event_id; @@ -337,6 +363,12 @@ int rpc_register_event_callbacks(void) { RPC_ID__Event_StaConnected, rpc_event_callback }, { RPC_ID__Event_StaDisconnected, rpc_event_callback }, { RPC_ID__Event_DhcpDnsStatus, rpc_event_callback }, +#if H_WIFI_HE_SUPPORT + { RPC_ID__Event_StaItwtSetup, rpc_event_callback }, + { RPC_ID__Event_StaItwtTeardown, rpc_event_callback }, + { RPC_ID__Event_StaItwtSuspend, rpc_event_callback }, + { RPC_ID__Event_StaItwtProbe, rpc_event_callback }, +#endif // H_WIFI_HE_SUPPORT }; for (evt=0; evtu.wifi_inactive_time.ifx = ifx; + req->u.wifi_inactive_time.sec = sec; + resp = rpc_slaveif_wifi_set_inactive_time(req); + + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_wifi_get_inactive_time(wifi_interface_t ifx, uint16_t *sec) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + req->u.wifi_inactive_time.ifx = ifx; + resp = rpc_slaveif_wifi_get_inactive_time(req); + if (resp && resp->resp_event_status == SUCCESS) { + *sec = resp->u.wifi_inactive_time.sec; + } + return rpc_rsp_callback(resp); +} + +#if H_WIFI_HE_SUPPORT +esp_err_t rpc_wifi_sta_twt_config(wifi_twt_config_t *config) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + if (!config) + return FAILURE; + + g_h.funcs->_h_memcpy(&req->u.wifi_twt_config, config, sizeof(wifi_twt_config_t)); + resp = rpc_slaveif_wifi_sta_twt_config(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_wifi_sta_itwt_setup(wifi_itwt_setup_config_t *setup_config) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + if (!setup_config) + return FAILURE; + + g_h.funcs->_h_memcpy(&req->u.wifi_itwt_setup_config, setup_config, sizeof(wifi_itwt_setup_config_t)); + resp = rpc_slaveif_wifi_sta_itwt_setup(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_wifi_sta_itwt_teardown(int flow_id) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + req->u.wifi_itwt_flow_id = flow_id; + resp = rpc_slaveif_wifi_sta_itwt_teardown(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_wifi_sta_itwt_suspend(int flow_id, int suspend_time_ms) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + req->u.wifi_itwt_suspend.flow_id = flow_id; + req->u.wifi_itwt_suspend.suspend_time_ms = suspend_time_ms; + resp = rpc_slaveif_wifi_sta_itwt_suspend(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_wifi_sta_itwt_get_flow_id_status(int *flow_id_bitmap) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + resp = rpc_slaveif_wifi_sta_itwt_get_flow_id_status(req); + if (resp && resp->resp_event_status == SUCCESS) { + *flow_id_bitmap = resp->u.wifi_itwt_flow_id_bitmap; + } + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_wifi_sta_itwt_send_probe_req(int timeout_ms) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + req->u.wifi_itwt_probe_req_timeout_ms = timeout_ms; + resp = rpc_slaveif_wifi_sta_itwt_send_probe_req(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_wifi_sta_itwt_set_target_wake_time_offset(int offset_us) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + req->u.wifi_itwt_set_target_wake_time_offset_us = offset_us; + resp = rpc_slaveif_wifi_sta_itwt_set_target_wake_time_offset(req); + return rpc_rsp_callback(resp); +} +#endif // H_WIFI_HE_SUPPORT + #if H_WIFI_DUALBAND_SUPPORT esp_err_t rpc_wifi_set_band(wifi_band_t band) { diff --git a/host/drivers/rpc/wrap/rpc_wrap.h b/host/drivers/rpc/wrap/rpc_wrap.h index 10600be1..3fb4613a 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.h +++ b/host/drivers/rpc/wrap/rpc_wrap.h @@ -83,13 +83,24 @@ esp_err_t rpc_wifi_set_max_tx_power(int8_t power); esp_err_t rpc_wifi_get_max_tx_power(int8_t *power); esp_err_t rpc_wifi_sta_get_negotiated_phymode(wifi_phy_mode_t *phymode); esp_err_t rpc_wifi_sta_get_aid(uint16_t *aid); - +esp_err_t rpc_wifi_set_inactive_time(wifi_interface_t ifx, uint16_t sec); +esp_err_t rpc_wifi_get_inactive_time(wifi_interface_t ifx, uint16_t *sec); esp_err_t rpc_get_coprocessor_fwversion(esp_hosted_coprocessor_fwver_t *ver_info); esp_err_t rpc_ota_begin(void); esp_err_t rpc_ota_write(uint8_t* ota_data, uint32_t ota_data_len); esp_err_t rpc_ota_end(void); +#if H_WIFI_HE_SUPPORT +esp_err_t rpc_wifi_sta_twt_config(wifi_twt_config_t *config); +esp_err_t rpc_wifi_sta_itwt_setup(wifi_itwt_setup_config_t *setup_config); +esp_err_t rpc_wifi_sta_itwt_teardown(int flow_id); +esp_err_t rpc_wifi_sta_itwt_suspend(int flow_id, int suspend_time_ms); +esp_err_t rpc_wifi_sta_itwt_get_flow_id_status(int *flow_id_bitmap); +esp_err_t rpc_wifi_sta_itwt_send_probe_req(int timeout_ms); +esp_err_t rpc_wifi_sta_itwt_set_target_wake_time_offset(int offset_us); +#endif + #if H_WIFI_DUALBAND_SUPPORT esp_err_t rpc_wifi_set_band(wifi_band_t band); esp_err_t rpc_wifi_get_band(wifi_band_t *band); diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index 8bbd3c92..38cf4dbc 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 #define ESP_HOSTED_VERSION_MINOR_1 2 -#define ESP_HOSTED_VERSION_PATCH_1 1 +#define ESP_HOSTED_VERSION_PATCH_1 2 #endif diff --git a/host/port/esp/freertos/include/esp_hosted_wifi_config.h b/host/port/esp/freertos/include/esp_hosted_wifi_config.h index 68f759e2..ef8954fc 100644 --- a/host/port/esp/freertos/include/esp_hosted_wifi_config.h +++ b/host/port/esp/freertos/include/esp_hosted_wifi_config.h @@ -13,6 +13,12 @@ #error ESP-IDF version used is not supported #endif +#if CONFIG_ESP_HOSTED_ENABLE_ITWT && CONFIG_SLAVE_SOC_WIFI_HE_SUPPORT + #define H_WIFI_HE_SUPPORT 1 +#else + #define H_WIFI_HE_SUPPORT 0 +#endif + #if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 0) /* dual band API support available */ #define H_WIFI_DUALBAND_SUPPORT 1 diff --git a/idf_component.yml b/idf_component.yml index df0b378c..8417ab2c 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.2.1" +version: "2.2.2" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index 2b2f9b85..29e755c3 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 #define PROJECT_VERSION_MINOR_1 2 -#define PROJECT_VERSION_PATCH_1 1 +#define PROJECT_VERSION_PATCH_1 2 #endif diff --git a/slave/main/slave_control.c b/slave/main/slave_control.c index a3ed649b..90cce115 100644 --- a/slave/main/slave_control.c +++ b/slave/main/slave_control.c @@ -21,6 +21,10 @@ #include "esp_hosted_log.h" #include "esp_hosted_coprocessor_fw_ver.h" +#if CONFIG_SOC_WIFI_HE_SUPPORT +#include "esp_wifi_he.h" +#endif + /* Slave-side: Always support reserved field decoding for maximum compatibility * The host may or may not have CONFIG_ESP_HOSTED_DECODE_WIFI_RESERVED_FIELD enabled */ @@ -255,27 +259,20 @@ static esp_err_t req_wifi_get_mode(Rpc *req, static esp_err_t req_wifi_set_mode(Rpc *req, Rpc *resp, void *priv_data) { - wifi_mode_t current_mode = WIFI_MODE_NULL; RPC_TEMPLATE(RpcRespSetMode, resp_set_wifi_mode, RpcReqSetMode, req_set_wifi_mode, rpc__resp__set_mode__init); - /* Get current mode first */ - RPC_RET_FAIL_IF(esp_wifi_get_mode(¤t_mode)); + RPC_RET_FAIL_IF(esp_wifi_set_mode(req_payload->mode)); - /* Only set if different */ - if (current_mode != req_payload->mode) { - RPC_RET_FAIL_IF(esp_wifi_set_mode(req_payload->mode)); - } return ESP_OK; } /* Function sets MAC address for station/softap */ static esp_err_t req_wifi_set_mac(Rpc *req, Rpc *resp, void *priv_data) -{ - uint8_t current_mac[BSSID_BYTES_SIZE] = {0}; +{ RPC_TEMPLATE(RpcRespSetMacAddress, resp_set_mac_address, RpcReqSetMacAddress, req_set_mac_address, rpc__resp__set_mac_address__init); @@ -286,13 +283,8 @@ static esp_err_t req_wifi_set_mac(Rpc *req, return ESP_OK; } - /* Get current MAC first */ - RPC_RET_FAIL_IF(esp_wifi_get_mac(req_payload->mode, current_mac)); + RPC_RET_FAIL_IF(esp_wifi_set_mac(req_payload->mode, req_payload->mac.data)); - /* Only set if different */ - if (memcmp(current_mac, req_payload->mac.data, BSSID_BYTES_SIZE) != 0) { - RPC_RET_FAIL_IF(esp_wifi_set_mac(req_payload->mode, req_payload->mac.data)); - } return ESP_OK; } @@ -300,19 +292,12 @@ static esp_err_t req_wifi_set_mac(Rpc *req, static esp_err_t req_wifi_set_ps(Rpc *req, Rpc *resp, void *priv_data) { - wifi_ps_type_t current_ps = WIFI_PS_NONE; - RPC_TEMPLATE(RpcRespSetPs, resp_wifi_set_ps, RpcReqSetPs, req_wifi_set_ps, rpc__resp__set_ps__init); - /* Get current power save type first */ - RPC_RET_FAIL_IF(esp_wifi_get_ps(¤t_ps)); + RPC_RET_FAIL_IF(esp_wifi_set_ps(req_payload->type)); - /* Only set if different */ - if (current_ps != req_payload->type) { - RPC_RET_FAIL_IF(esp_wifi_set_ps(req_payload->type)); - } return ESP_OK; } @@ -803,6 +788,24 @@ static void event_handler_wifi(void* arg, esp_event_base_t event_base, station_connecting = false; send_event_data_to_host(RPC_ID__Event_StaDisconnected, event_data, sizeof(wifi_event_sta_disconnected_t)); +#if CONFIG_SOC_WIFI_HE_SUPPORT + } else if (event_id == WIFI_EVENT_ITWT_SETUP) { + ESP_LOGI(TAG, "Itwt Setup"); + send_event_data_to_host(RPC_ID__Event_StaItwtSetup, + event_data, sizeof(wifi_event_sta_itwt_setup_t)); + } else if (event_id == WIFI_EVENT_ITWT_TEARDOWN) { + ESP_LOGI(TAG, "Itwt Teardown"); + send_event_data_to_host(RPC_ID__Event_StaItwtTeardown, + event_data, sizeof(wifi_event_sta_itwt_teardown_t)); + } else if (event_id == WIFI_EVENT_ITWT_SUSPEND) { + ESP_LOGI(TAG, "Itwt Suspend"); + send_event_data_to_host(RPC_ID__Event_StaItwtSuspend, + event_data, sizeof(wifi_event_sta_itwt_suspend_t)); + } else if (event_id == WIFI_EVENT_ITWT_PROBE) { + ESP_LOGI(TAG, "Itwt Probe"); + send_event_data_to_host(RPC_ID__Event_StaItwtProbe, + event_data, sizeof(wifi_event_sta_itwt_probe_t)); +#endif } else { // ensure start events are only sent once during a state change if (event_id == WIFI_EVENT_AP_START) { @@ -1821,19 +1824,13 @@ static esp_err_t req_wifi_scan_start(Rpc *req, Rpc *resp, void *priv_data) static esp_err_t req_wifi_set_protocol(Rpc *req, Rpc *resp, void *priv_data) { - uint8_t protocol_bitmap = 0; RPC_TEMPLATE(RpcRespWifiSetProtocol, resp_wifi_set_protocol, RpcReqWifiSetProtocol, req_wifi_set_protocol, rpc__resp__wifi_set_protocol__init); - /* Get current protocol first */ - RPC_RET_FAIL_IF(esp_wifi_get_protocol(req_payload->ifx, &protocol_bitmap)); - - /* Only set if different */ - if (protocol_bitmap != req_payload->protocol_bitmap) { - RPC_RET_FAIL_IF(esp_wifi_set_protocol(req_payload->ifx, + RPC_RET_FAIL_IF(esp_wifi_set_protocol(req_payload->ifx, req_payload->protocol_bitmap)); - } + return ESP_OK; } @@ -2047,6 +2044,7 @@ static esp_err_t req_wifi_scan_get_ap_records(Rpc *req, Rpc *resp, void *priv_da resp_payload->ap_records = (WifiApRecord**)calloc(number, sizeof(WifiApRecord *)); if (!resp_payload->ap_records) { ESP_LOGE(TAG,"resp: malloc failed for resp_payload->ap_records"); + resp_payload->resp = RPC_ERR_MEMORY_FAILURE; goto err; } @@ -2152,18 +2150,12 @@ static esp_err_t req_wifi_set_storage(Rpc *req, Rpc *resp, void *priv_data) static esp_err_t req_wifi_set_bandwidth(Rpc *req, Rpc *resp, void *priv_data) { - wifi_bandwidth_t current_bw = 0; RPC_TEMPLATE(RpcRespWifiSetBandwidth, resp_wifi_set_bandwidth, RpcReqWifiSetBandwidth, req_wifi_set_bandwidth, rpc__resp__wifi_set_bandwidth__init); - /* Get current bandwidth first */ - RPC_RET_FAIL_IF(esp_wifi_get_bandwidth(req_payload->ifx, ¤t_bw)); + RPC_RET_FAIL_IF(esp_wifi_set_bandwidth(req_payload->ifx, req_payload->bw)); - /* Only set if different */ - if (current_bw != req_payload->bw) { - RPC_RET_FAIL_IF(esp_wifi_set_bandwidth(req_payload->ifx, req_payload->bw)); - } return ESP_OK; } @@ -2182,19 +2174,12 @@ static esp_err_t req_wifi_get_bandwidth(Rpc *req, Rpc *resp, void *priv_data) static esp_err_t req_wifi_set_channel(Rpc *req, Rpc *resp, void *priv_data) { - uint8_t current_primary = 0; - wifi_second_chan_t current_second = 0; RPC_TEMPLATE(RpcRespWifiSetChannel, resp_wifi_set_channel, RpcReqWifiSetChannel, req_wifi_set_channel, rpc__resp__wifi_set_channel__init); - /* Get current channel config first */ - RPC_RET_FAIL_IF(esp_wifi_get_channel(¤t_primary, ¤t_second)); + RPC_RET_FAIL_IF(esp_wifi_set_channel(req_payload->primary, req_payload->second)); - /* Only set if different */ - if (current_primary != req_payload->primary || current_second != req_payload->second) { - RPC_RET_FAIL_IF(esp_wifi_set_channel(req_payload->primary, req_payload->second)); - } return ESP_OK; } @@ -2220,18 +2205,11 @@ static esp_err_t req_wifi_set_country_code(Rpc *req, Rpc *resp, void *priv_data) rpc__resp__wifi_set_country_code__init); char cc[3] = {0}; // country code - char current_cc[3] = {0}; // current country code RPC_RET_FAIL_IF(!req_payload->country.data); RPC_REQ_COPY_STR(&cc[0], req_payload->country, 2); // only copy the first two chars - /* Get current country code first */ - RPC_RET_FAIL_IF(esp_wifi_get_country_code(¤t_cc[0])); - - /* Only set if different */ - if (strncmp(cc, current_cc, 2) != 0 || req_payload->ieee80211d_enabled) { - RPC_RET_FAIL_IF(esp_wifi_set_country_code(&cc[0], - req_payload->ieee80211d_enabled)); - } + RPC_RET_FAIL_IF(esp_wifi_set_country_code(&cc[0], + req_payload->ieee80211d_enabled)); return ESP_OK; } @@ -2259,7 +2237,6 @@ static esp_err_t req_wifi_set_country(Rpc *req, Rpc *resp, void *priv_data) RPC_RET_FAIL_IF(!req_payload->country); wifi_country_t country = {0}; - wifi_country_t current_country = {0}; WifiCountry * p_c_country = req_payload->country; RPC_REQ_COPY_BYTES(&country.cc[0], p_c_country->cc, sizeof(country.cc)); country.schan = p_c_country->schan; @@ -2267,13 +2244,7 @@ static esp_err_t req_wifi_set_country(Rpc *req, Rpc *resp, void *priv_data) country.max_tx_power = p_c_country->max_tx_power; country.policy = p_c_country->policy; - /* Get current country first */ - RPC_RET_FAIL_IF(esp_wifi_get_country(¤t_country)); - - /* Only set if different */ - if (memcmp(&country, ¤t_country, sizeof(wifi_country_t)) != 0) { - RPC_RET_FAIL_IF(esp_wifi_set_country(&country)); - } + RPC_RET_FAIL_IF(esp_wifi_set_country(&country)); return ESP_OK; } @@ -2413,9 +2384,9 @@ static esp_err_t req_wifi_sta_get_negotiated_phymode(Rpc *req, Rpc *resp, void * return ESP_OK; } +#if H_PRESENT_IN_ESP_IDF_5_4_0 static esp_err_t req_wifi_set_protocols(Rpc *req, Rpc *resp, void *priv_data) { -#if H_PRESENT_IN_ESP_IDF_5_4_0 RPC_TEMPLATE(RpcRespWifiSetProtocols, resp_wifi_set_protocols, RpcReqWifiSetProtocols, req_wifi_set_protocols, rpc__resp__wifi_set_protocols__init); @@ -2427,29 +2398,18 @@ static esp_err_t req_wifi_set_protocols(Rpc *req, Rpc *resp, void *priv_data) resp_payload->ifx = ifx; wifi_protocols_t protocols; - wifi_protocols_t current_protocols; protocols.ghz_2g = req_payload->protocols->ghz_2g; protocols.ghz_5g = req_payload->protocols->ghz_5g; ESP_LOGI(TAG, "set protocols: ghz_2g %d, ghz_5g %d", protocols.ghz_2g, protocols.ghz_5g); - /* Get current protocols first */ - RPC_RET_FAIL_IF(esp_wifi_get_protocols(ifx, ¤t_protocols)); - - /* Only set if different */ - if (memcmp(&protocols, ¤t_protocols, sizeof(wifi_protocols_t)) != 0) { - RPC_RET_FAIL_IF(esp_wifi_set_protocols(ifx, &protocols)); - } + RPC_RET_FAIL_IF(esp_wifi_set_protocols(ifx, &protocols)); return ESP_OK; -#else - return ESP_FAIL; -#endif } static esp_err_t req_wifi_get_protocols(Rpc *req, Rpc *resp, void *priv_data) { -#if H_PRESENT_IN_ESP_IDF_5_4_0 RPC_TEMPLATE(RpcRespWifiGetProtocols, resp_wifi_get_protocols, RpcReqWifiGetProtocols, req_wifi_get_protocols, rpc__resp__wifi_get_protocols__init); @@ -2469,15 +2429,10 @@ static esp_err_t req_wifi_get_protocols(Rpc *req, Rpc *resp, void *priv_data) ESP_LOGI(TAG, "get protocols: ghz_2g %d, ghz_5g %d", protocols.ghz_2g, protocols.ghz_5g); err: return ESP_OK; -#else - return ESP_FAIL; -#endif - } static esp_err_t req_wifi_set_bandwidths(Rpc *req, Rpc *resp, void *priv_data) { -#if H_PRESENT_IN_ESP_IDF_5_4_0 RPC_TEMPLATE(RpcRespWifiSetBandwidths, resp_wifi_set_bandwidths, RpcReqWifiSetBandwidths, req_wifi_set_bandwidths, rpc__resp__wifi_set_bandwidths__init); @@ -2489,30 +2444,19 @@ static esp_err_t req_wifi_set_bandwidths(Rpc *req, Rpc *resp, void *priv_data) resp_payload->ifx = ifx; wifi_bandwidths_t bw; - wifi_bandwidths_t current_bw; bw.ghz_2g = req_payload->bandwidths->ghz_2g; bw.ghz_5g = req_payload->bandwidths->ghz_5g; ESP_LOGI(TAG, "set bandwidths: ghz_2g %d, ghz_5g %d", bw.ghz_2g, bw.ghz_5g); - /* Get current bandwidths first */ - RPC_RET_FAIL_IF(esp_wifi_get_bandwidths(ifx, ¤t_bw)); - - /* Only set if different */ - if (memcmp(&bw, ¤t_bw, sizeof(wifi_bandwidths_t)) != 0) { - RPC_RET_FAIL_IF(esp_wifi_set_bandwidths(ifx, &bw)); - } + RPC_RET_FAIL_IF(esp_wifi_set_bandwidths(ifx, &bw)); return ESP_OK; -#else - return ESP_FAIL; -#endif } static esp_err_t req_wifi_get_bandwidths(Rpc *req, Rpc *resp, void *priv_data) { -#if H_PRESENT_IN_ESP_IDF_5_4_0 RPC_TEMPLATE(RpcRespWifiGetBandwidths, resp_wifi_get_bandwidths, RpcReqWifiGetBandwidths, req_wifi_get_bandwidths, rpc__resp__wifi_get_bandwidths__init); @@ -2533,41 +2477,24 @@ static esp_err_t req_wifi_get_bandwidths(Rpc *req, Rpc *resp, void *priv_data) ESP_LOGI(TAG, "get bandwidths: ghz_2g %d, ghz_5g %d", bw.ghz_2g, bw.ghz_5g); err: return ESP_OK; -#else - return ESP_FAIL; -#endif } static esp_err_t req_wifi_set_band(Rpc *req, Rpc *resp, void *priv_data) { -#if H_PRESENT_IN_ESP_IDF_5_4_0 RPC_TEMPLATE(RpcRespWifiSetBand, resp_wifi_set_band, RpcReqWifiSetBand, req_wifi_set_band, rpc__resp__wifi_set_band__init); wifi_band_t band; - wifi_band_t current_band; band = req_payload->band; - ESP_LOGW(TAG, "set band: %d", band); - - /* Get current band first */ - RPC_RET_FAIL_IF(esp_wifi_get_band(¤t_band)); - - /* Only set if different */ - if (current_band != band) { - RPC_RET_FAIL_IF(esp_wifi_set_band(band)); - } + RPC_RET_FAIL_IF(esp_wifi_set_band(band)); return ESP_OK; -#else - return ESP_FAIL; -#endif } static esp_err_t req_wifi_get_band(Rpc *req, Rpc *resp, void *priv_data) { -#if H_PRESENT_IN_ESP_IDF_5_4_0 RPC_TEMPLATE_SIMPLE(RpcRespWifiGetBand, resp_wifi_get_band, RpcReqWifiGetBand, req_wifi_get_band, rpc__resp__wifi_get_band__init); @@ -2580,41 +2507,26 @@ static esp_err_t req_wifi_get_band(Rpc *req, Rpc *resp, void *priv_data) ESP_LOGW(TAG, "get band: %d", band); return ESP_OK; -#else - return ESP_FAIL; -#endif } static esp_err_t req_wifi_set_band_mode(Rpc *req, Rpc *resp, void *priv_data) { -#if H_PRESENT_IN_ESP_IDF_5_4_0 RPC_TEMPLATE(RpcRespWifiSetBandMode, resp_wifi_set_bandmode, RpcReqWifiSetBandMode, req_wifi_set_bandmode, rpc__resp__wifi_set_band_mode__init); wifi_band_mode_t band_mode; - wifi_band_mode_t current_band_mode; band_mode = req_payload->bandmode; ESP_LOGW(TAG, "set band mode: %d", band_mode); - /* Get current band mode first */ - RPC_RET_FAIL_IF(esp_wifi_get_band_mode(¤t_band_mode)); - - /* Only set if different */ - if (current_band_mode != band_mode) { - RPC_RET_FAIL_IF(esp_wifi_set_band_mode(band_mode)); - } + RPC_RET_FAIL_IF(esp_wifi_set_band_mode(band_mode)); return ESP_OK; -#else - return ESP_FAIL; -#endif } static esp_err_t req_wifi_get_band_mode(Rpc *req, Rpc *resp, void *priv_data) { -#if H_PRESENT_IN_ESP_IDF_5_4_0 RPC_TEMPLATE_SIMPLE(RpcRespWifiGetBandMode, resp_wifi_get_bandmode, RpcReqWifiGetBandMode, req_wifi_get_bandmode, rpc__resp__wifi_get_band_mode__init); @@ -2627,10 +2539,8 @@ static esp_err_t req_wifi_get_band_mode(Rpc *req, Rpc *resp, void *priv_data) ESP_LOGW(TAG, "get band_mode: %d", band_mode); return ESP_OK; -#else - return ESP_FAIL; -#endif } +#endif // H_PRESENT_IN_ESP_IDF_5_4_0 /* Get DHCP/DNS status handler */ static esp_err_t req_get_dhcp_dns_status(Rpc *req, Rpc *resp, void *priv_data) @@ -2761,6 +2671,37 @@ static esp_err_t req_set_dhcp_dns_status(Rpc *req, Rpc *resp, void *priv_data) return ESP_OK; } + +static esp_err_t req_wifi_set_inactive_time(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespWifiSetInactiveTime, resp_wifi_set_inactive_time, + RpcReqWifiSetInactiveTime, req_wifi_set_inactive_time, + rpc__resp__wifi_set_inactive_time__init); + + wifi_interface_t ifx = req_payload->ifx; + uint16_t sec = req_payload->sec; + + RPC_RET_FAIL_IF(esp_wifi_set_inactive_time(ifx, sec)); + + return ESP_OK; +} + +static esp_err_t req_wifi_get_inactive_time(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespWifiGetInactiveTime, resp_wifi_get_inactive_time, + RpcReqWifiGetInactiveTime, req_wifi_get_inactive_time, + rpc__resp__wifi_get_inactive_time__init); + + wifi_interface_t ifx = req_payload->ifx; + uint16_t sec; + + RPC_RET_FAIL_IF(esp_wifi_get_inactive_time(ifx, &sec)); + + resp_payload->sec = sec; + + return ESP_OK; +} + static esp_err_t req_get_coprocessor_fw_version(Rpc *req, Rpc *resp, void *priv_data) { RPC_TEMPLATE_SIMPLE(RpcRespGetCoprocessorFwVersion, resp_get_coprocessor_fwversion, @@ -2775,6 +2716,123 @@ static esp_err_t req_get_coprocessor_fw_version(Rpc *req, Rpc *resp, void *priv_ return ESP_OK; } +#if CONFIG_SOC_WIFI_HE_SUPPORT +static esp_err_t req_wifi_sta_twt_config(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespWifiStaTwtConfig, resp_wifi_sta_twt_config, + RpcReqWifiStaTwtConfig, req_wifi_sta_twt_config, + rpc__resp__wifi_sta_twt_config__init); + + wifi_twt_config_t wifi_twt_config; + wifi_twt_config.post_wakeup_event = req_payload->config->post_wakeup_event; + wifi_twt_config.twt_enable_keep_alive = req_payload->config->twt_enable_keep_alive; + + RPC_RET_FAIL_IF(esp_wifi_sta_twt_config(&wifi_twt_config)); + + return ESP_OK; +} + +static esp_err_t req_wifi_sta_itwt_setup(Rpc *req, Rpc *resp, void *priv_data) +{ + wifi_itwt_setup_config_t cfg = {0}; + + RPC_TEMPLATE(RpcRespWifiStaItwtSetup, resp_wifi_sta_itwt_setup, + RpcReqWifiStaItwtSetup, req_wifi_sta_itwt_setup, + rpc__resp__wifi_sta_itwt_setup__init); + + wifi_itwt_setup_config_t * p_a_cfg = &cfg; + WifiItwtSetupConfig *p_c_cfg = req_payload->setup_config; + + p_a_cfg->setup_cmd = p_c_cfg->setup_cmd; + p_a_cfg->trigger = H_GET_BIT(WIFI_ITWT_CONFIG_1_trigger_BIT, p_c_cfg->bitmask_1); + p_a_cfg->flow_type = H_GET_BIT(WIFI_ITWT_CONFIG_1_flow_type_BIT, p_c_cfg->bitmask_1); + /* WIFI_ITWT_CONFIG_1_flow_id_BIT is three bits wide */ + p_a_cfg->flow_id = (p_c_cfg->bitmask_1 >> WIFI_ITWT_CONFIG_1_flow_id_BIT) & 0x07; + /* WIFI_ITWT_CONFIG_1_wake_invl_expn_BIT is five bits wide */ + p_a_cfg->wake_invl_expn = (p_c_cfg->bitmask_1 >> WIFI_ITWT_CONFIG_1_wake_invl_expn_BIT) & 0x1F; + p_a_cfg->wake_duration_unit = H_GET_BIT(WIFI_ITWT_CONFIG_1_wake_duration_unit_BIT, p_c_cfg->bitmask_1); +#if H_DECODE_WIFI_RESERVED_FIELD + p_a_cfg->reserved = WIFI_ITWT_CONFIG_1_GET_RESERVED_VAL(p_c_cfg->bitmask_1); +#endif + p_a_cfg->min_wake_dura = p_c_cfg->min_wake_dura; + p_a_cfg->wake_invl_mant = p_c_cfg->wake_invl_mant; + p_a_cfg->twt_id = p_c_cfg->twt_id; + p_a_cfg->timeout_time_ms = p_c_cfg->timeout_time_ms; + + RPC_RET_FAIL_IF(esp_wifi_sta_itwt_setup(&cfg)); + + return ESP_OK; +} + +static esp_err_t req_wifi_sta_itwt_teardown(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespWifiStaItwtTeardown, resp_wifi_sta_itwt_teardown, + RpcReqWifiStaItwtTeardown, req_wifi_sta_itwt_teardown, + rpc__resp__wifi_sta_itwt_teardown__init); + + int flow_id = req_payload->flow_id; + + RPC_RET_FAIL_IF(esp_wifi_sta_itwt_teardown(flow_id)); + + return ESP_OK; +} + +static esp_err_t req_wifi_sta_itwt_suspend(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespWifiStaItwtSuspend, resp_wifi_sta_itwt_suspend, + RpcReqWifiStaItwtSuspend, req_wifi_sta_itwt_suspend, + rpc__resp__wifi_sta_itwt_suspend__init); + + int flow_id = req_payload->flow_id; + int suspend_time_ms = req_payload->suspend_time_ms; + + RPC_RET_FAIL_IF(esp_wifi_sta_itwt_suspend(flow_id, suspend_time_ms)); + + return ESP_OK; +} + +static esp_err_t req_wifi_sta_itwt_get_flow_id_status(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE_SIMPLE(RpcRespWifiStaItwtGetFlowIdStatus, resp_wifi_sta_itwt_get_flow_id_status, + RpcReqWifiStaItwtGetFlowIdStatus, req_wifi_sta_itwt_get_flow_id_status, + rpc__resp__wifi_sta_itwt_get_flow_id_status__init); + + int flow_id_bitmap; + + RPC_RET_FAIL_IF(esp_wifi_sta_itwt_get_flow_id_status(&flow_id_bitmap)); + + resp_payload->flow_id_bitmap = flow_id_bitmap; + + return ESP_OK; +} + +static esp_err_t req_wifi_sta_itwt_send_probe_req(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespWifiStaItwtSendProbeReq, resp_wifi_sta_itwt_send_probe_req, + RpcReqWifiStaItwtSendProbeReq, req_wifi_sta_itwt_send_probe_req, + rpc__resp__wifi_sta_itwt_send_probe_req__init); + + int timeout_ms = req_payload->timeout_ms; + + RPC_RET_FAIL_IF(esp_wifi_sta_itwt_send_probe_req(timeout_ms)); + + return ESP_OK; +} + +static esp_err_t req_wifi_sta_itwt_set_target_wake_time_offset(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespWifiStaItwtSetTargetWakeTimeOffset, resp_wifi_sta_itwt_set_target_wake_time_offset, + RpcReqWifiStaItwtSetTargetWakeTimeOffset, req_wifi_sta_itwt_set_target_wake_time_offset, + rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__init); + + int offset_us = req_payload->offset_us; + + RPC_RET_FAIL_IF(esp_wifi_sta_itwt_set_target_wake_time_offset(offset_us)); + + return ESP_OK; +} +#endif // CONFIG_SOC_WIFI_HE_SUPPORT + static esp_rpc_req_t req_table[] = { { .req_num = RPC_ID__Req_GetMACAddress , @@ -2960,6 +3018,7 @@ static esp_rpc_req_t req_table[] = { .req_num = RPC_ID__Req_WifiStaGetNegotiatedPhymode, .command_handler = req_wifi_sta_get_negotiated_phymode }, +#if H_PRESENT_IN_ESP_IDF_5_4_0 { .req_num = RPC_ID__Req_WifiSetProtocols, .command_handler = req_wifi_set_protocols @@ -2992,6 +3051,15 @@ static esp_rpc_req_t req_table[] = { .req_num = RPC_ID__Req_WifiGetBandMode, .command_handler = req_wifi_get_band_mode }, +#endif + { + .req_num = RPC_ID__Req_WifiSetInactiveTime, + .command_handler = req_wifi_set_inactive_time + }, + { + .req_num = RPC_ID__Req_WifiGetInactiveTime, + .command_handler = req_wifi_get_inactive_time + }, { .req_num = RPC_ID__Req_GetCoprocessorFwVersion, .command_handler = req_get_coprocessor_fw_version @@ -3004,6 +3072,36 @@ static esp_rpc_req_t req_table[] = { .req_num = RPC_ID__Req_GetDhcpDnsStatus, .command_handler = req_get_dhcp_dns_status }, +#if CONFIG_SOC_WIFI_HE_SUPPORT + { + .req_num = RPC_ID__Req_WifiStaTwtConfig, + .command_handler = req_wifi_sta_twt_config + }, + { + .req_num = RPC_ID__Req_WifiStaItwtSetup, + .command_handler = req_wifi_sta_itwt_setup + }, + { + .req_num = RPC_ID__Req_WifiStaItwtTeardown, + .command_handler = req_wifi_sta_itwt_teardown + }, + { + .req_num = RPC_ID__Req_WifiStaItwtSuspend, + .command_handler = req_wifi_sta_itwt_suspend + }, + { + .req_num = RPC_ID__Req_WifiStaItwtGetFlowIdStatus, + .command_handler = req_wifi_sta_itwt_get_flow_id_status + }, + { + .req_num = RPC_ID__Req_WifiStaItwtSendProbeReq, + .command_handler = req_wifi_sta_itwt_send_probe_req + }, + { + .req_num = RPC_ID__Req_WifiStaItwtSetTargetWakeTimeOffset, + .command_handler = req_wifi_sta_itwt_set_target_wake_time_offset + }, +#endif // CONFIG_SOC_WIFI_HE_SUPPORT }; @@ -3113,6 +3211,8 @@ esp_err_t data_transfer_handler(uint32_t session_id,const uint8_t *inbuf, goto err; } + // ESP_LOGE(TAG, "len %" PRIi16, *outlen); + *outbuf = (uint8_t *)calloc(1, *outlen); if (!*outbuf) { ESP_LOGE(TAG, "No memory allocated for outbuf"); @@ -3290,6 +3390,134 @@ static esp_err_t rpc_evt_ap_staconn_conn_disconn(Rpc *ntfy, return ESP_FAIL; } +#if CONFIG_SOC_WIFI_HE_SUPPORT +static esp_err_t rpc_evt_itwt_setup(Rpc *ntfy, + const uint8_t *data, ssize_t len, int event_id) +{ + wifi_event_sta_itwt_setup_t *p_a = (wifi_event_sta_itwt_setup_t*)data; + RpcEventStaItwtSetup *p_c = NULL; + + ESP_LOGI(TAG, "%s event:%u",__func__,event_id); + + NTFY_TEMPLATE(RPC_ID__Event_StaItwtSetup, + RpcEventStaItwtSetup, event_sta_itwt_setup, + rpc__event__sta_itwt_setup__init); + + NTFY_ALLOC_ELEMENT(WifiItwtSetupConfig, ntfy_payload->config, + wifi_itwt_setup_config__init); + + p_c = ntfy_payload; + + p_c->config->setup_cmd = p_a->config.setup_cmd; + + if (p_a->config.trigger) + H_SET_BIT(WIFI_ITWT_CONFIG_1_trigger_BIT, p_c->config->bitmask_1); + + if (p_a->config.flow_type) + H_SET_BIT(WIFI_ITWT_CONFIG_1_flow_type_BIT, p_c->config->bitmask_1); + + /* WIFI_ITWT_CONFIG_1_flow_id_BIT is three bits wide */ + if (p_a->config.flow_id & 0x07) + p_c->config->bitmask_1 |= (p_a->config.flow_id & 0x07) << WIFI_ITWT_CONFIG_1_flow_id_BIT; + + /* WIFI_ITWT_CONFIG_1_wake_invl_expn_BIT is five bits wide */ + if (p_a->config.wake_invl_expn & 0x1F) + p_c->config->bitmask_1 |= (p_a->config.wake_invl_expn & 0x1F) << WIFI_ITWT_CONFIG_1_wake_invl_expn_BIT; + + if (p_a->config.wake_duration_unit) + H_SET_BIT(WIFI_ITWT_CONFIG_1_wake_duration_unit_BIT, p_c->config->bitmask_1); + +#if H_DECODE_WIFI_RESERVED_FIELD + WIFI_ITWT_CONFIG_1_SET_RESERVED_VAL(p_a->config.reserved, p_c->config->bitmask_1) +#endif + + p_c->config->min_wake_dura = p_a->config.min_wake_dura; + p_c->config->wake_invl_mant = p_a->config.wake_invl_mant; + p_c->config->twt_id = p_a->config.twt_id; + p_c->config->timeout_time_ms = p_a->config.timeout_time_ms; + p_c->status = p_a->status; + p_c->reason = p_a->reason; + p_c->target_wake_time = p_a->target_wake_time; + + err: + return ESP_OK; +} + +static esp_err_t rpc_evt_itwt_teardown(Rpc *ntfy, + const uint8_t *data, ssize_t len, int event_id) +{ + wifi_event_sta_itwt_teardown_t *p_a = (wifi_event_sta_itwt_teardown_t*)data; + RpcEventStaItwtTeardown *p_c = NULL; + + ESP_LOGI(TAG, "%s event:%u",__func__,event_id); + + NTFY_TEMPLATE(RPC_ID__Event_StaItwtTeardown, + RpcEventStaItwtTeardown, event_sta_itwt_teardown, + rpc__event__sta_itwt_teardown__init); + + p_c = ntfy_payload; + + p_c->flow_id = p_a->flow_id; + p_c->status = p_a->status; + + return ESP_OK; +} + +static esp_err_t rpc_evt_itwt_suspend(Rpc *ntfy, + const uint8_t *data, ssize_t len, int event_id) +{ + wifi_event_sta_itwt_suspend_t *p_a = (wifi_event_sta_itwt_suspend_t*)data; + RpcEventStaItwtSuspend *p_c = NULL; + int i; + int num_elements = sizeof(p_a->actual_suspend_time_ms) / sizeof(p_a->actual_suspend_time_ms[0]); + + ESP_LOGI(TAG, "%s event:%u",__func__,event_id); + + NTFY_TEMPLATE(RPC_ID__Event_StaItwtSuspend, + RpcEventStaItwtSuspend, event_sta_itwt_suspend, + rpc__event__sta_itwt_suspend__init); + + p_c = ntfy_payload; + + p_c->status = p_a->status; + p_c->flow_id_bitmap = p_a->flow_id_bitmap; + + p_c->actual_suspend_time_ms = calloc(num_elements, sizeof(p_a->actual_suspend_time_ms[0])); + if (!p_c->actual_suspend_time_ms) { + ESP_LOGE(TAG,"resp: malloc failed for ntfy_payload->actual_suspend_time_ms"); + ntfy_payload->resp = RPC_ERR_MEMORY_FAILURE; \ + goto err; + } + + for (i = 0; i < num_elements; i++) { + p_c->actual_suspend_time_ms[i] = p_a->actual_suspend_time_ms[i]; + } + p_c->n_actual_suspend_time_ms = num_elements; + err: + return ESP_OK; +} + +static esp_err_t rpc_evt_itwt_probe(Rpc *ntfy, + const uint8_t *data, ssize_t len, int event_id) +{ + wifi_event_sta_itwt_probe_t *p_a = (wifi_event_sta_itwt_probe_t*)data; + RpcEventStaItwtProbe *p_c = NULL; + + ESP_LOGI(TAG, "%s event:%u",__func__,event_id); + + NTFY_TEMPLATE(RPC_ID__Event_StaItwtProbe, + RpcEventStaItwtProbe, event_sta_itwt_probe, + rpc__event__sta_itwt_probe__init); + + p_c = ntfy_payload; + + p_c->status = p_a->status; + p_c->reason = p_a->reason; + + return ESP_OK; +} +#endif + static esp_err_t rpc_evt_Event_WifiEventNoArgs(Rpc *ntfy, const uint8_t *data, ssize_t len) { @@ -3373,6 +3601,20 @@ esp_err_t rpc_evt_handler(uint32_t session_id,const uint8_t *inbuf, } case RPC_ID__Event_StaDisconnected: { ret = rpc_evt_sta_disconnected(ntfy, inbuf, inlen, WIFI_EVENT_STA_DISCONNECTED); break; +#if CONFIG_SOC_WIFI_HE_SUPPORT + } case RPC_ID__Event_StaItwtSetup: { + ret = rpc_evt_itwt_setup(ntfy, inbuf, inlen, WIFI_EVENT_ITWT_SETUP); + break; + } case RPC_ID__Event_StaItwtTeardown: { + ret = rpc_evt_itwt_teardown(ntfy, inbuf, inlen, WIFI_EVENT_ITWT_TEARDOWN); + break; + } case RPC_ID__Event_StaItwtSuspend: { + ret = rpc_evt_itwt_suspend(ntfy, inbuf, inlen, WIFI_EVENT_ITWT_SUSPEND); + break; + } case RPC_ID__Event_StaItwtProbe: { + ret = rpc_evt_itwt_probe(ntfy, inbuf, inlen, WIFI_EVENT_ITWT_PROBE); + break; +#endif } case RPC_ID__Event_WifiEventNoArgs: { ret = rpc_evt_Event_WifiEventNoArgs(ntfy, inbuf, inlen); break; diff --git a/tools/check_copyright_config.yaml b/tools/check_copyright_config.yaml index 2c567a62..37a03c34 100644 --- a/tools/check_copyright_config.yaml +++ b/tools/check_copyright_config.yaml @@ -8,6 +8,8 @@ DEFAULT: # when setting this option in a section, you need to list all the allowed licenses allowed_licenses: - Apache-2.0 + - Unlicense + - CC0-1.0 license_for_new_files: Apache-2.0 # license to be used when inserting a new copyright notice new_notice_c: | # notice for new C, CPP, H, HPP and LD files /* From cc02b4a070f5b60ee7ad23c4aff0875ec0eb55e6 Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Thu, 14 Aug 2025 10:46:35 +0800 Subject: [PATCH 071/114] bugfix(itwt): Fixed itwt build break for IDF v5.3.1 - `twt_enable_keep_alive` only found in IDF > v5.3.1 - updated file licenses --- examples/host_wifi_itwt/main/itwt_main.c | 5 ++++- host/drivers/rpc/core/rpc_req.c | 9 +++++++-- host/drivers/rpc/core/rpc_rsp.c | 7 +++++-- host/drivers/transport/sdio/sdio_reg.h | 18 ++---------------- host/esp_hosted_host_fw_ver.h | 2 +- .../freertos/include/esp_hosted_wifi_config.h | 12 +++++++++++- idf_component.yml | 2 +- slave/main/esp_hosted_coprocessor_fw_ver.h | 2 +- slave/main/slave_control.c | 3 ++- slave/main/slave_wifi_config.h | 10 ++++++++++ 10 files changed, 44 insertions(+), 26 deletions(-) diff --git a/examples/host_wifi_itwt/main/itwt_main.c b/examples/host_wifi_itwt/main/itwt_main.c index d3324fb7..0b46d9ad 100644 --- a/examples/host_wifi_itwt/main/itwt_main.c +++ b/examples/host_wifi_itwt/main/itwt_main.c @@ -29,7 +29,7 @@ #include "esp_wifi_he.h" #include "esp_pm.h" #include "esp_timer.h" - +#include "esp_idf_version.h" #include "wifi_cmd.h" /******************************************************* @@ -273,7 +273,10 @@ static void wifi_itwt(void) wifi_twt_config_t wifi_twt_config = { .post_wakeup_event = false, +#if ESP_IDF_VERSION > ESP_IDF_VERSION_VAL(5, 3, 1) + // twt_enable_keep_alive only found in IDF v5.3.2 and above .twt_enable_keep_alive = keep_alive_enabled, +#endif }; ESP_ERROR_CHECK(esp_wifi_sta_twt_config(&wifi_twt_config)); #if CONFIG_SOC_WIFI_SUPPORT_5G || CONFIG_SLAVE_SOC_WIFI_SUPPORT_5G diff --git a/host/drivers/rpc/core/rpc_req.c b/host/drivers/rpc/core/rpc_req.c index cca209de..15fc59d6 100644 --- a/host/drivers/rpc/core/rpc_req.c +++ b/host/drivers/rpc/core/rpc_req.c @@ -1,5 +1,8 @@ -// Copyright 2015-2022 Espressif Systems (Shanghai) PTE LTD -/* SPDX-License-Identifier: GPL-2.0 OR Apache-2.0 */ +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #include "rpc_core.h" #include "rpc_slave_if.h" @@ -489,7 +492,9 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) rpc__req__wifi_sta_twt_config__init); RPC_ALLOC_ELEMENT(WifiTwtConfig, req_payload->config, wifi_twt_config__init); req_payload->config->post_wakeup_event = app_req->u.wifi_twt_config.post_wakeup_event; +#if H_GOT_TWT_ENABLE_KEEP_ALIVE req_payload->config->twt_enable_keep_alive = app_req->u.wifi_twt_config.twt_enable_keep_alive; +#endif break; } case RPC_ID__Req_WifiStaItwtSetup: { RPC_ALLOC_ASSIGN(RpcReqWifiStaItwtSetup, req_wifi_sta_itwt_setup, diff --git a/host/drivers/rpc/core/rpc_rsp.c b/host/drivers/rpc/core/rpc_rsp.c index 6da16d92..0dadc8c7 100644 --- a/host/drivers/rpc/core/rpc_rsp.c +++ b/host/drivers/rpc/core/rpc_rsp.c @@ -1,5 +1,8 @@ -// Copyright 2015-2022 Espressif Systems (Shanghai) PTE LTD -/* SPDX-License-Identifier: GPL-2.0 OR Apache-2.0 */ +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #include "rpc_core.h" #include "rpc_slave_if.h" diff --git a/host/drivers/transport/sdio/sdio_reg.h b/host/drivers/transport/sdio/sdio_reg.h index f272d59a..90354382 100644 --- a/host/drivers/transport/sdio/sdio_reg.h +++ b/host/drivers/transport/sdio/sdio_reg.h @@ -1,21 +1,7 @@ -// SPDX-License-Identifier: Apache-2.0 /* - * Espressif Systems Wireless LAN device driver + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD * - * Copyright (C) 2015-2023 Espressif Systems (Shanghai) PTE LTD - * - * This software file (the "File") is distributed by Espressif Systems (Shanghai) - * PTE LTD under the terms of the GNU General Public License Version 2, June 1991 - * (the "License"). You may use, redistribute and/or modify this File in - * accordance with the terms and conditions of the License, a copy of which - * is available by writing to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or on the - * worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. - * - * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE - * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE - * ARE EXPRESSLY DISCLAIMED. The License provides additional details about - * this warranty disclaimer. + * SPDX-License-Identifier: Apache-2.0 */ #ifndef __SDIO_REG_H diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index 38cf4dbc..52f6dac7 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 #define ESP_HOSTED_VERSION_MINOR_1 2 -#define ESP_HOSTED_VERSION_PATCH_1 2 +#define ESP_HOSTED_VERSION_PATCH_1 3 #endif diff --git a/host/port/esp/freertos/include/esp_hosted_wifi_config.h b/host/port/esp/freertos/include/esp_hosted_wifi_config.h index ef8954fc..ebcaec55 100644 --- a/host/port/esp/freertos/include/esp_hosted_wifi_config.h +++ b/host/port/esp/freertos/include/esp_hosted_wifi_config.h @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD * SPDX-License-Identifier: Apache-2.0 */ @@ -48,6 +48,16 @@ #define H_DECODE_WIFI_RESERVED_FIELD 0 #endif +/* + * wifi_twt_config_t::twt_enable_keep_alive only found in + * IDF v5.3.2 and above + */ +#if ESP_IDF_VERSION > ESP_IDF_VERSION_VAL(5, 3, 1) +#define H_GOT_TWT_ENABLE_KEEP_ALIVE 1 +#else +#define H_GOT_TWT_ENABLE_KEEP_ALIVE 0 +#endif + /* wifi_ap_config_t::transition_disable only found in * IDF v5.3.3 and above, or * IDF v5.4.1 and above diff --git a/idf_component.yml b/idf_component.yml index 8417ab2c..2cec7e0e 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.2.2" +version: "2.2.3" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index 29e755c3..c0578ba6 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 #define PROJECT_VERSION_MINOR_1 2 -#define PROJECT_VERSION_PATCH_1 2 +#define PROJECT_VERSION_PATCH_1 3 #endif diff --git a/slave/main/slave_control.c b/slave/main/slave_control.c index 90cce115..d12985c4 100644 --- a/slave/main/slave_control.c +++ b/slave/main/slave_control.c @@ -1,4 +1,3 @@ -// SPDX-License-Identifier: Apache-2.0 /* * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD * @@ -2725,7 +2724,9 @@ static esp_err_t req_wifi_sta_twt_config(Rpc *req, Rpc *resp, void *priv_data) wifi_twt_config_t wifi_twt_config; wifi_twt_config.post_wakeup_event = req_payload->config->post_wakeup_event; +#if H_GOT_TWT_ENABLE_KEEP_ALIVE wifi_twt_config.twt_enable_keep_alive = req_payload->config->twt_enable_keep_alive; +#endif RPC_RET_FAIL_IF(esp_wifi_sta_twt_config(&wifi_twt_config)); diff --git a/slave/main/slave_wifi_config.h b/slave/main/slave_wifi_config.h index 61650d5a..1b5b1735 100644 --- a/slave/main/slave_wifi_config.h +++ b/slave/main/slave_wifi_config.h @@ -29,6 +29,16 @@ #define H_PRESENT_IN_ESP_IDF_5_4_0 0 #endif +/* + * wifi_twt_config_t::twt_enable_keep_alive only found in + * IDF v5.3.2 and above + */ +#if ESP_IDF_VERSION > ESP_IDF_VERSION_VAL(5, 3, 1) +#define H_GOT_TWT_ENABLE_KEEP_ALIVE 1 +#else +#define H_GOT_TWT_ENABLE_KEEP_ALIVE 0 +#endif + /* wifi_ap_config_t::transition_disable only found in * IDF v5.3.3 and above, or * IDF v5.4.1 and above From da102054605856067e03b7b4c944b470e345ebe9 Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Mon, 18 Aug 2025 15:02:14 +0800 Subject: [PATCH 072/114] bugfix(spi_p4_c6): Fixed SPI Full Duplex startup sequence - added delay in host after co-processor reset to give time for co-processor to control DataReady and Handshake signals to prevent false ISR detection - test on P4 + C6, P4 + C5, H2 + C6 - fixed bug: should get_sem(spi_trans_ready_sem) after sem creation - fixed bug: incorrect Handshake GPIO assignment for C5 on Module SubBoard - fixed bug: added valid CPU freqencies in ITWT Example for H2 --- examples/host_wifi_itwt/main/Kconfig.projbuild | 11 ++++++++++- host/drivers/transport/spi/spi_drv.c | 7 ++++++- host/esp_hosted_host_fw_ver.h | 2 +- idf_component.yml | 2 +- slave/main/Kconfig.projbuild | 4 ++-- slave/main/esp_hosted_coprocessor_fw_ver.h | 2 +- 6 files changed, 21 insertions(+), 7 deletions(-) diff --git a/examples/host_wifi_itwt/main/Kconfig.projbuild b/examples/host_wifi_itwt/main/Kconfig.projbuild index 643806b3..a59ed5a8 100644 --- a/examples/host_wifi_itwt/main/Kconfig.projbuild +++ b/examples/host_wifi_itwt/main/Kconfig.projbuild @@ -104,11 +104,15 @@ menu "Example Configuration" choice EXAMPLE_MAX_CPU_FREQ prompt "Maximum CPU frequency" + default EXAMPLE_MAX_CPU_FREQ_96 if IDF_TARGET_ESP32H2 default EXAMPLE_MAX_CPU_FREQ_80 depends on PM_ENABLE help Maximum CPU frequency to use for dynamic frequency scaling. + config EXAMPLE_MAX_CPU_FREQ_96 + bool "96 MHz" + depends on IDF_TARGET_ESP32H2 config EXAMPLE_MAX_CPU_FREQ_80 bool "80 MHz" depends on !IDF_TARGET_ESP32P4 @@ -131,8 +135,9 @@ menu "Example Configuration" config EXAMPLE_MAX_CPU_FREQ_MHZ int + default 64 if EXAMPLE_MAX_CPU_FREQ_64 default 80 if EXAMPLE_MAX_CPU_FREQ_80 - default 90 if EXAMPLE_MAX_CPU_FREQ_90 + default 96 if EXAMPLE_MAX_CPU_FREQ_96 default 120 if EXAMPLE_MAX_CPU_FREQ_120 default 160 if EXAMPLE_MAX_CPU_FREQ_160 default 180 if EXAMPLE_MAX_CPU_FREQ_180 @@ -153,6 +158,9 @@ menu "Example Configuration" config EXAMPLE_MIN_CPU_FREQ_20M bool "20 MHz (use with 40MHz XTAL)" depends on XTAL_FREQ_40 || XTAL_FREQ_AUTO + config EXAMPLE_MIN_CPU_FREQ_16M + bool "16 MHz (use with 32MHz XTAL)" + depends on XTAL_FREQ_32 || XTAL_FREQ_AUTO config EXAMPLE_MIN_CPU_FREQ_12M bool "12 MHz (use with 48MHz XTAL)" depends on XTAL_FREQ_48 || XTAL_FREQ_AUTO @@ -173,6 +181,7 @@ menu "Example Configuration" default 20 if EXAMPLE_MIN_CPU_FREQ_20M default 10 if EXAMPLE_MIN_CPU_FREQ_10M default 26 if EXAMPLE_MIN_CPU_FREQ_26M + default 16 if EXAMPLE_MIN_CPU_FREQ_16M default 13 if EXAMPLE_MIN_CPU_FREQ_13M default 12 if EXAMPLE_MIN_CPU_FREQ_12M diff --git a/host/drivers/transport/spi/spi_drv.c b/host/drivers/transport/spi/spi_drv.c index a4c64528..00a05e0c 100644 --- a/host/drivers/transport/spi/spi_drv.c +++ b/host/drivers/transport/spi/spi_drv.c @@ -265,6 +265,7 @@ void *bus_init_internal(void) /* Creates & Give sem for next spi trans */ spi_trans_ready_sem = g_h.funcs->_h_create_semaphore(1); assert(spi_trans_ready_sem); + g_h.funcs->_h_get_semaphore(spi_trans_ready_sem, 0); spi_handle = g_h.funcs->_h_bus_init(); if (!spi_handle) { @@ -858,7 +859,11 @@ static esp_err_t transport_gpio_reset(void *bus_handle, gpio_pin_t reset_pin) g_h.funcs->_h_write_gpio(reset_pin.port, reset_pin.pin, H_RESET_VAL_INACTIVE); g_h.funcs->_h_msleep(1); g_h.funcs->_h_write_gpio(reset_pin.port, reset_pin.pin, H_RESET_VAL_ACTIVE); - //g_h.funcs->_h_msleep(1500); + /* Delay for a short while to allow co-processor to take control + * of GPIO signals after reset. Otherwise, we may false detect on + * the GPIOs going high during the reset. + */ + g_h.funcs->_h_msleep(500); return ESP_OK; } diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index 52f6dac7..c5c446d6 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 #define ESP_HOSTED_VERSION_MINOR_1 2 -#define ESP_HOSTED_VERSION_PATCH_1 3 +#define ESP_HOSTED_VERSION_PATCH_1 4 #endif diff --git a/idf_component.yml b/idf_component.yml index 2cec7e0e..9bb30e03 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.2.3" +version: "2.2.4" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/Kconfig.projbuild b/slave/main/Kconfig.projbuild index 00dfd93d..ef987edf 100644 --- a/slave/main/Kconfig.projbuild +++ b/slave/main/Kconfig.projbuild @@ -201,10 +201,10 @@ menu "Example Configuration" config ESP_SPI_GPIO_HANDSHAKE int "Slave GPIO pin for handshake" default 22 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD - default 4 if IDF_TARGET_ESP32C5 && !C2_C5_MODULE_SUB_BOARD - default 1 if IDF_TARGET_ESP32C5 && C2_C5_MODULE_SUB_BOARD default 18 if IDF_TARGET_ESP32C2 && C2_C5_MODULE_SUB_BOARD default 3 if IDF_TARGET_ESP32C2 && !C2_C5_MODULE_SUB_BOARD + default 4 if IDF_TARGET_ESP32C5 && C2_C5_MODULE_SUB_BOARD + default 1 if IDF_TARGET_ESP32C5 && !C2_C5_MODULE_SUB_BOARD default 3 if IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32C6 default 17 if IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32S2 default 26 diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index c0578ba6..48bd49eb 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 #define PROJECT_VERSION_MINOR_1 2 -#define PROJECT_VERSION_PATCH_1 3 +#define PROJECT_VERSION_PATCH_1 4 #endif From fa08e092a1646f7e1409e8e7b4787d5164d1ed2a Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Wed, 4 Jun 2025 15:45:56 +0800 Subject: [PATCH 073/114] fix(hosted_config) Refactored common and port specific code - updated naming of files - moved commom and port specific code into required directories - made transport config code generic, using port specific transport config defines - updated SDIO code to use transport config instead of port specific defines - removed use of MEM_ALLOC() - removed `util.c/h` - removed `common.c/h` --- CMakeLists.txt | 71 +++-- common/utils/esp_hosted_cli.c | 2 +- common/utils/esp_hosted_cli.h | 2 +- .../main/ble_compatibility_test.c | 2 +- .../main/main.c | 2 +- .../sdkconfig.defaults.esp32p4 | 1 + examples/host_bluedroid_host_only/main/main.c | 2 +- .../host_wifi_itwt/main/Kconfig.projbuild | 1 + .../api/include/esp_hosted_transport_config.h | 97 +++---- host/api/priv/esp_hosted_api_priv.h | 2 +- host/api/src/esp_hosted_api.c | 11 +- .../src/esp_hosted_transport_config.c | 16 +- host/api/src/esp_wifi_weak.c | 3 +- host/drivers/bt/hci_drv.h | 4 +- host/drivers/bt/hci_stub_drv.c | 22 +- host/drivers/bt/vhci_drv.c | 18 +- host/drivers/mempool/mempool.c | 27 +- host/drivers/mempool/mempool.h | 2 +- host/drivers/power_save/power_save_drv.c | 17 +- host/drivers/power_save/power_save_drv.h | 8 +- host/drivers/rpc/core/rpc_core.c | 12 +- host/drivers/rpc/core/rpc_core.h | 11 +- host/drivers/rpc/core/rpc_evt.c | 14 +- host/drivers/rpc/core/rpc_req.c | 6 +- host/drivers/rpc/core/rpc_rsp.c | 8 +- host/drivers/rpc/slaveif/rpc_slave_if.c | 4 +- host/drivers/rpc/slaveif/rpc_slave_if.h | 2 +- host/drivers/rpc/wrap/rpc_wrap.c | 8 +- host/drivers/rpc/wrap/rpc_wrap.h | 22 +- host/drivers/serial/serial_drv.c | 2 +- host/drivers/serial/serial_ll_if.c | 22 +- host/drivers/serial/serial_ll_if.h | 21 +- host/drivers/transport/sdio/sdio_drv.c | 48 +++- host/drivers/transport/sdio/sdio_drv.h | 20 +- host/drivers/transport/sdio/sdio_reg.h | 2 +- host/drivers/transport/spi/spi_drv.c | 12 +- host/drivers/transport/spi/spi_drv.h | 23 +- host/drivers/transport/spi_hd/spi_hd_drv.c | 7 +- host/drivers/transport/spi_hd/spi_hd_drv.h | 21 +- host/drivers/transport/transport_drv.c | 26 +- host/drivers/transport/transport_drv.h | 89 ++++-- host/drivers/transport/uart/uart_drv.c | 4 +- host/drivers/virtual_serial_if/serial_if.c | 3 +- host/drivers/virtual_serial_if/serial_if.h | 1 - host/esp_hosted.h | 3 - host/esp_hosted_bluedroid.h | 23 ++ host/esp_hosted_bt.h | 16 +- host/esp_hosted_host_fw_ver.h | 4 +- ...traction.h => esp_hosted_os_abstraction.h} | 9 +- host/port/esp/freertos/include/os_header.h | 16 -- .../include/port_esp_hosted_host_bt_config.h} | 8 +- .../include/port_esp_hosted_host_config.h} | 30 ++- .../include/port_esp_hosted_host_log.h | 16 ++ ...os_wrapper.h => port_esp_hosted_host_os.h} | 38 +-- ..._wrapper.h => port_esp_hosted_host_sdio.h} | 4 +- ...i_wrapper.h => port_esp_hosted_host_spi.h} | 4 +- ...rapper.h => port_esp_hosted_host_spi_hd.h} | 4 +- ..._wrapper.h => port_esp_hosted_host_uart.h} | 6 +- ...g.h => port_esp_hosted_host_wifi_config.h} | 5 +- .../port/esp/freertos/src/esp_hosted_config.c | 16 -- .../freertos/src/port_esp_hosted_host_init.c} | 13 +- ...os_wrapper.c => port_esp_hosted_host_os.c} | 48 ++-- ...osted_ota.c => port_esp_hosted_host_ota.c} | 9 +- ..._wrapper.c => port_esp_hosted_host_sdio.c} | 15 +- ...i_wrapper.c => port_esp_hosted_host_spi.c} | 26 +- ...rapper.c => port_esp_hosted_host_spi_hd.c} | 35 ++- ..._wrapper.c => port_esp_hosted_host_uart.c} | 31 +-- host/utils/common.c | 130 --------- host/utils/common.h | 115 -------- host/utils/stats.c | 23 +- host/utils/stats.h | 34 +-- host/utils/util.c | 255 ------------------ host/utils/util.h | 46 ---- idf_component.yml | 2 +- slave/main/esp_hosted_coprocessor_fw_ver.h | 4 +- 75 files changed, 579 insertions(+), 1107 deletions(-) create mode 100644 examples/host_bluedroid_bt_hid_mouse_device/sdkconfig.defaults.esp32p4 rename host/{port/esp/freertos => api}/src/esp_hosted_transport_config.c (95%) create mode 100644 host/esp_hosted_bluedroid.h rename host/{hosted_os_abstraction.h => esp_hosted_os_abstraction.h} (97%) delete mode 100644 host/port/esp/freertos/include/os_header.h rename host/{api/include/esp_hosted_bt_config.h => port/esp/freertos/include/port_esp_hosted_host_bt_config.h} (86%) rename host/{api/include/esp_hosted_config.h => port/esp/freertos/include/port_esp_hosted_host_config.h} (94%) create mode 100644 host/port/esp/freertos/include/port_esp_hosted_host_log.h rename host/port/esp/freertos/include/{os_wrapper.h => port_esp_hosted_host_os.h} (90%) rename host/port/esp/freertos/include/{sdio_wrapper.h => port_esp_hosted_host_sdio.h} (96%) rename host/port/esp/freertos/include/{spi_wrapper.h => port_esp_hosted_host_spi.h} (93%) rename host/port/esp/freertos/include/{spi_hd_wrapper.h => port_esp_hosted_host_spi_hd.h} (96%) rename host/port/esp/freertos/include/{uart_wrapper.h => port_esp_hosted_host_uart.h} (90%) rename host/port/esp/freertos/include/{esp_hosted_wifi_config.h => port_esp_hosted_host_wifi_config.h} (95%) delete mode 100644 host/port/esp/freertos/src/esp_hosted_config.c rename host/{esp_hosted_host_init.c => port/esp/freertos/src/port_esp_hosted_host_init.c} (75%) rename host/port/esp/freertos/src/{os_wrapper.c => port_esp_hosted_host_os.c} (95%) rename host/port/esp/freertos/src/{esp_hosted_ota.c => port_esp_hosted_host_ota.c} (97%) rename host/port/esp/freertos/src/{sdio_wrapper.c => port_esp_hosted_host_sdio.c} (98%) rename host/port/esp/freertos/src/{spi_wrapper.c => port_esp_hosted_host_spi.c} (84%) rename host/port/esp/freertos/src/{spi_hd_wrapper.c => port_esp_hosted_host_spi_hd.c} (94%) rename host/port/esp/freertos/src/{uart_wrapper.c => port_esp_hosted_host_uart.c} (80%) delete mode 100644 host/utils/common.c delete mode 100644 host/utils/common.h delete mode 100644 host/utils/util.c delete mode 100644 host/utils/util.h diff --git a/CMakeLists.txt b/CMakeLists.txt index df766832..6172822a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,22 +3,46 @@ if(CONFIG_ESP_HOSTED_ENABLED) set(FG_root_dir ".") set(host_dir "${FG_root_dir}/host") - set(srcs "${host_dir}/esp_hosted_host_init.c" "${host_dir}/api/src/esp_wifi_weak.c" "${host_dir}/api/src/esp_hosted_api.c" "${host_dir}/drivers/transport/transport_drv.c" "${host_dir}/drivers/serial/serial_ll_if.c" "${host_dir}/utils/common.c" "${host_dir}/utils/util.c" "${host_dir}/utils/stats.c" "${host_dir}/drivers/serial/serial_drv.c") + set(srcs + "${host_dir}/api/src/esp_wifi_weak.c" + "${host_dir}/api/src/esp_hosted_api.c" + "${host_dir}/api/src/esp_hosted_transport_config.c" + "${host_dir}/drivers/transport/transport_drv.c" + "${host_dir}/drivers/serial/serial_ll_if.c" + "${host_dir}/utils/stats.c" + "${host_dir}/drivers/serial/serial_drv.c") # only these directories are public. Others are private - set(pub_include "${host_dir}" "${host_dir}/api/include") - - set(priv_include "${host_dir}/drivers/transport" "${host_dir}/drivers/transport/spi" "${host_dir}/drivers/transport/sdio" "${host_dir}/drivers/serial" "${host_dir}/utils" "${host_dir}/api/priv") + set(pub_include + "${host_dir}" + "${host_dir}/api/include") + + set(priv_include + "${host_dir}/drivers/transport" + "${host_dir}/drivers/transport/spi" + "${host_dir}/drivers/transport/sdio" + "${host_dir}/drivers/serial" + "${host_dir}/utils" + "${host_dir}/api/priv") # rpc files - wrap -> slaveif -> core set(rpc_dir "${host_dir}/drivers/rpc") set(rpc_core_dir "${rpc_dir}/core") set(rpc_slaveif_dir "${rpc_dir}/slaveif") set(rpc_wrap_dir "${rpc_dir}/wrap") - list(APPEND srcs "${rpc_core_dir}/rpc_core.c" "${rpc_core_dir}/rpc_req.c" "${rpc_core_dir}/rpc_rsp.c" "${rpc_core_dir}/rpc_evt.c" + + list(APPEND srcs + "${rpc_core_dir}/rpc_core.c" + "${rpc_core_dir}/rpc_req.c" + "${rpc_core_dir}/rpc_rsp.c" + "${rpc_core_dir}/rpc_evt.c" "${rpc_slaveif_dir}/rpc_slave_if.c" "${rpc_wrap_dir}/rpc_wrap.c") - list(APPEND priv_include "${rpc_core_dir}" "${rpc_slaveif_dir}" "${rpc_wrap_dir}") + + list(APPEND priv_include + "${rpc_core_dir}" + "${rpc_slaveif_dir}" + "${rpc_wrap_dir}") # virtual serial set(virt_serial_dir "${host_dir}/drivers/virtual_serial_if") @@ -31,11 +55,21 @@ if(CONFIG_ESP_HOSTED_ENABLED) # slave and host common files set(common_dir "${FG_root_dir}/common") - list(APPEND srcs "${common_dir}/protobuf-c/protobuf-c/protobuf-c.c" "${common_dir}/proto/esp_hosted_rpc.pb-c.c" ) - list(APPEND priv_include "${common_dir}" "${common_dir}/log" "${common_dir}/rpc" "${common_dir}/transport" "${common_dir}/protobuf-c" "${common_dir}/proto" ) + + list(APPEND srcs + "${common_dir}/protobuf-c/protobuf-c/protobuf-c.c" + "${common_dir}/proto/esp_hosted_rpc.pb-c.c" ) + + list(APPEND priv_include + "${common_dir}" + "${common_dir}/log" + "${common_dir}/rpc" + "${common_dir}/transport" + "${common_dir}/protobuf-c" + "${common_dir}/proto" ) # host ESP32 specific files - list(APPEND srcs "${host_dir}/port/esp/freertos/src/esp_hosted_ota.c") + list(APPEND srcs "${host_dir}/port/esp/freertos/src/port_esp_hosted_host_ota.c") # cli list(APPEND srcs "${common_dir}/utils/esp_hosted_cli.c") @@ -44,6 +78,7 @@ if(CONFIG_ESP_HOSTED_ENABLED) # bt (NimBLE) ### TODO config for HCI over UART list(APPEND priv_include "${host_dir}/drivers/bt") + if(CONFIG_ESP_HOSTED_NIMBLE_HCI_VHCI OR CONFIG_ESP_HOSTED_BLUEDROID_HCI_VHCI) list(APPEND srcs "${host_dir}/drivers/bt/vhci_drv.c") else() @@ -65,20 +100,22 @@ if(CONFIG_ESP_HOSTED_ENABLED) list(APPEND srcs "${host_dir}/drivers/transport/uart/uart_drv.c") endif() - # config files + # port files list(APPEND priv_include "${host_dir}/port/esp/freertos/include") - list(APPEND srcs "${host_dir}/port/esp/freertos/src/esp_hosted_config.c" "${host_dir}/port/esp/freertos/src/esp_hosted_transport_config.c") - # transport port files - list(APPEND srcs "${host_dir}/port/esp/freertos/src/os_wrapper.c") + list(APPEND srcs + "${host_dir}/port/esp/freertos/src/port_esp_hosted_host_init.c" + "${host_dir}/port/esp/freertos/src/port_esp_hosted_host_os.c" + "${host_dir}/port/esp/freertos/src/port_esp_hosted_host_ota.c") + if(CONFIG_ESP_HOSTED_SDIO_HOST_INTERFACE) - list(APPEND srcs "${host_dir}/port/esp/freertos/src/sdio_wrapper.c") + list(APPEND srcs "${host_dir}/port/esp/freertos/src/port_esp_hosted_host_sdio.c") elseif(CONFIG_ESP_HOSTED_SPI_HD_HOST_INTERFACE) - list(APPEND srcs "${host_dir}/port/esp/freertos/src/spi_hd_wrapper.c") + list(APPEND srcs "${host_dir}/port/esp/freertos/src/port_esp_hosted_host_spi_hd.c") elseif(CONFIG_ESP_HOSTED_SPI_HOST_INTERFACE) - list(APPEND srcs "${host_dir}/port/esp/freertos/src/spi_wrapper.c") + list(APPEND srcs "${host_dir}/port/esp/freertos/src/port_esp_hosted_host_spi.c") elseif(CONFIG_ESP_HOSTED_UART_HOST_INTERFACE) - list(APPEND srcs "${host_dir}/port/esp/freertos/src/uart_wrapper.c") + list(APPEND srcs "${host_dir}/port/esp/freertos/src/port_esp_hosted_host_uart.c") endif() endif() diff --git a/common/utils/esp_hosted_cli.c b/common/utils/esp_hosted_cli.c index a907a119..36d0edc3 100644 --- a/common/utils/esp_hosted_cli.c +++ b/common/utils/esp_hosted_cli.c @@ -12,7 +12,7 @@ #include "esp_console.h" #ifdef CONFIG_ESP_HOSTED_ENABLED -#include "esp_hosted_config.h" +#include "port_esp_hosted_host_config.h" #include "esp_hosted_power_save.h" #endif diff --git a/common/utils/esp_hosted_cli.h b/common/utils/esp_hosted_cli.h index e604064e..b2bc173b 100644 --- a/common/utils/esp_hosted_cli.h +++ b/common/utils/esp_hosted_cli.h @@ -11,7 +11,7 @@ /* host */ #ifdef CONFIG_ESP_HOSTED_ENABLED - #include "esp_hosted_config.h" + #include "port_esp_hosted_host_config.h" #include "power_save_drv.h" #endif diff --git a/examples/host_bluedroid_ble_compatibility_test/main/ble_compatibility_test.c b/examples/host_bluedroid_ble_compatibility_test/main/ble_compatibility_test.c index d3fbb58c..fe5d8ee2 100644 --- a/examples/host_bluedroid_ble_compatibility_test/main/ble_compatibility_test.c +++ b/examples/host_bluedroid_ble_compatibility_test/main/ble_compatibility_test.c @@ -26,7 +26,7 @@ #include "ble_compatibility_test.h" #include "esp_gatt_common_api.h" -#include "esp_hosted_bt.h" +#include "esp_hosted_bluedroid.h" #define DEBUG_ON 0 diff --git a/examples/host_bluedroid_bt_hid_mouse_device/main/main.c b/examples/host_bluedroid_bt_hid_mouse_device/main/main.c index 89266f04..5255b464 100644 --- a/examples/host_bluedroid_bt_hid_mouse_device/main/main.c +++ b/examples/host_bluedroid_bt_hid_mouse_device/main/main.c @@ -19,7 +19,7 @@ #include "freertos/task.h" #include "freertos/semphr.h" -#include "esp_hosted_bt.h" +#include "esp_hosted_bluedroid.h" #define REPORT_PROTOCOL_MOUSE_REPORT_SIZE (4) #define REPORT_BUFFER_SIZE REPORT_PROTOCOL_MOUSE_REPORT_SIZE diff --git a/examples/host_bluedroid_bt_hid_mouse_device/sdkconfig.defaults.esp32p4 b/examples/host_bluedroid_bt_hid_mouse_device/sdkconfig.defaults.esp32p4 new file mode 100644 index 00000000..1686559d --- /dev/null +++ b/examples/host_bluedroid_bt_hid_mouse_device/sdkconfig.defaults.esp32p4 @@ -0,0 +1 @@ +CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE=y diff --git a/examples/host_bluedroid_host_only/main/main.c b/examples/host_bluedroid_host_only/main/main.c index 187bdf97..6cce94a6 100644 --- a/examples/host_bluedroid_host_only/main/main.c +++ b/examples/host_bluedroid_host_only/main/main.c @@ -26,7 +26,7 @@ #include "esp_gap_bt_api.h" #include "esp_bluedroid_hci.h" -#include "esp_hosted_bt.h" +#include "esp_hosted_bluedroid.h" #define GAP_TAG "GAP" diff --git a/examples/host_wifi_itwt/main/Kconfig.projbuild b/examples/host_wifi_itwt/main/Kconfig.projbuild index a59ed5a8..601111ec 100644 --- a/examples/host_wifi_itwt/main/Kconfig.projbuild +++ b/examples/host_wifi_itwt/main/Kconfig.projbuild @@ -137,6 +137,7 @@ menu "Example Configuration" int default 64 if EXAMPLE_MAX_CPU_FREQ_64 default 80 if EXAMPLE_MAX_CPU_FREQ_80 + default 90 if EXAMPLE_MAX_CPU_FREQ_90 default 96 if EXAMPLE_MAX_CPU_FREQ_96 default 120 if EXAMPLE_MAX_CPU_FREQ_120 default 160 if EXAMPLE_MAX_CPU_FREQ_160 diff --git a/host/api/include/esp_hosted_transport_config.h b/host/api/include/esp_hosted_transport_config.h index 68ef9ebd..3a623200 100644 --- a/host/api/include/esp_hosted_transport_config.h +++ b/host/api/include/esp_hosted_transport_config.h @@ -1,13 +1,15 @@ /* -* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD -* -* SPDX-License-Identifier: Apache-2.0 -*/ + * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #ifndef __ESP_HOSTED_TRANSPORT_CONFIG_H__ #define __ESP_HOSTED_TRANSPORT_CONFIG_H__ -#include "esp_hosted_config.h" +#include + +#include "port_esp_hosted_host_config.h" #include "esp_err.h" typedef enum { @@ -38,6 +40,8 @@ struct esp_hosted_sdio_config { uint8_t rx_mode; bool block_mode; bool iomux_enable; + uint16_t tx_queue_size; + uint16_t rx_queue_size; }; struct esp_hosted_spi_hd_config { @@ -113,22 +117,26 @@ struct esp_hosted_transport_config { } u; }; -#if H_TRANSPORT_SDIO == H_TRANSPORT_IN_USE +/*** + * A port dependent header file is expected to provide the actual H_xxx definitions + ***/ #define INIT_DEFAULT_HOST_SDIO_CONFIG() \ (struct esp_hosted_sdio_config) { \ .clock_freq_khz = H_SDIO_CLOCK_FREQ_KHZ, \ .bus_width = H_SDIO_BUS_WIDTH, \ .slot = H_SDMMC_HOST_SLOT, \ - .pin_clk = {.port = NULL, .pin = H_SDIO_PIN_CLK}, \ - .pin_cmd = {.port = NULL, .pin = H_SDIO_PIN_CMD}, \ - .pin_d0 = {.port = NULL, .pin = H_SDIO_PIN_D0}, \ - .pin_d1 = {.port = NULL, .pin = H_SDIO_PIN_D1}, \ - .pin_d2 = {.port = NULL, .pin = H_SDIO_PIN_D2}, \ - .pin_d3 = {.port = NULL, .pin = H_SDIO_PIN_D3}, \ - .pin_reset = {.port = NULL, .pin = H_GPIO_PIN_RESET_Pin }, \ + .pin_clk = {.port = H_SDIO_PORT_CLK, .pin = H_SDIO_PIN_CLK}, \ + .pin_cmd = {.port = H_SDIO_PORT_CMD, .pin = H_SDIO_PIN_CMD}, \ + .pin_d0 = {.port = H_SDIO_PORT_D0, .pin = H_SDIO_PIN_D0}, \ + .pin_d1 = {.port = H_SDIO_PORT_D1, .pin = H_SDIO_PIN_D1}, \ + .pin_d2 = {.port = H_SDIO_PORT_D2, .pin = H_SDIO_PIN_D2}, \ + .pin_d3 = {.port = H_SDIO_PORT_D3, .pin = H_SDIO_PIN_D3}, \ + .pin_reset = {.port = H_GPIO_PORT_RESET, .pin = H_GPIO_PIN_RESET }, \ .rx_mode = H_SDIO_HOST_RX_MODE, \ .block_mode = H_SDIO_TX_BLOCK_ONLY_XFER && H_SDIO_RX_BLOCK_ONLY_XFER, \ .iomux_enable = false, \ + .tx_queue_size = H_SDIO_TX_Q, \ + .rx_queue_size = H_SDIO_RX_Q, \ } #define INIT_DEFAULT_HOST_SDIO_IOMUX_CONFIG() \ @@ -140,20 +148,18 @@ struct esp_hosted_transport_config { .block_mode = H_SDIO_TX_BLOCK_ONLY_XFER && H_SDIO_RX_BLOCK_ONLY_XFER, \ .iomux_enable = true, \ } -#endif -#if H_TRANSPORT_SPI_HD == H_TRANSPORT_IN_USE #define INIT_DEFAULT_HOST_SPI_HD_CONFIG() \ (struct esp_hosted_spi_hd_config) { \ .num_data_lines = H_SPI_HD_HOST_NUM_DATA_LINES, \ - .pin_cs = {.port = NULL, .pin = H_SPI_HD_PIN_CS}, \ - .pin_clk = {.port = NULL, .pin = H_SPI_HD_PIN_CLK}, \ - .pin_data_ready = {.port = NULL, .pin = H_SPI_HD_PIN_DATA_READY}, \ - .pin_d0 = {.port = NULL, .pin = H_SPI_HD_PIN_D0}, \ - .pin_d1 = {.port = NULL, .pin = H_SPI_HD_PIN_D1}, \ - .pin_d2 = {.port = NULL, .pin = H_SPI_HD_PIN_D2}, \ - .pin_d3 = {.port = NULL, .pin = H_SPI_HD_PIN_D3}, \ - .pin_reset = {.port = NULL, .pin = H_GPIO_PIN_RESET_Pin }, \ + .pin_cs = {.port = H_SPI_HD_PORT_CS, .pin = H_SPI_HD_PIN_CS}, \ + .pin_clk = {.port = H_SPI_HD_PORT_CLK, .pin = H_SPI_HD_PIN_CLK}, \ + .pin_data_ready = {.port = H_SPI_HD_PORT_DATA_READY, .pin = H_SPI_HD_PIN_DATA_READY}, \ + .pin_d0 = {.port = H_SPI_HD_PORT_D0, .pin = H_SPI_HD_PIN_D0}, \ + .pin_d1 = {.port = H_SPI_HD_PORT_D1, .pin = H_SPI_HD_PIN_D1}, \ + .pin_d2 = {.port = H_SPI_HD_PORT_D2, .pin = H_SPI_HD_PIN_D2}, \ + .pin_d3 = {.port = H_SPI_HD_PORT_D3, .pin = H_SPI_HD_PIN_D3}, \ + .pin_reset = {.port = H_GPIO_PORT_RESET, .pin = H_GPIO_PIN_RESET }, \ .clk_mhz = H_SPI_HD_CLK_MHZ, \ .mode = H_SPI_HD_MODE, \ .tx_queue_size = H_SPI_HD_TX_QUEUE_SIZE, \ @@ -163,32 +169,28 @@ struct esp_hosted_transport_config { .num_address_bits = H_SPI_HD_NUM_ADDRESS_BITS, \ .num_dummy_bits = H_SPI_HD_NUM_DUMMY_BITS, \ } -#endif -#if H_TRANSPORT_SPI == H_TRANSPORT_IN_USE #define INIT_DEFAULT_HOST_SPI_CONFIG() \ (struct esp_hosted_spi_config) { \ - .pin_mosi = {.port = NULL, .pin = H_GPIO_MOSI_Pin}, \ - .pin_miso = {.port = NULL, .pin = H_GPIO_MISO_Pin}, \ - .pin_sclk = {.port = NULL, .pin = H_GPIO_SCLK_Pin}, \ - .pin_cs = {.port = NULL, .pin = H_GPIO_CS_Pin}, \ - .pin_handshake = {.port = NULL, .pin = H_GPIO_HANDSHAKE_Pin}, \ - .pin_data_ready = {.port = NULL, .pin = H_GPIO_DATA_READY_Pin}, \ - .pin_reset = {.port = NULL, .pin = H_GPIO_PIN_RESET_Pin }, \ + .pin_mosi = {.port = H_GPIO_MOSI_Port, .pin = H_GPIO_MOSI_Pin}, \ + .pin_miso = {.port = H_GPIO_MISO_Port, .pin = H_GPIO_MISO_Pin}, \ + .pin_sclk = {.port = H_GPIO_SCLK_Port, .pin = H_GPIO_SCLK_Pin}, \ + .pin_cs = {.port = H_GPIO_CS_Port, .pin = H_GPIO_CS_Pin}, \ + .pin_handshake = {.port = H_GPIO_HANDSHAKE_Port, .pin = H_GPIO_HANDSHAKE_Pin}, \ + .pin_data_ready = {.port = H_GPIO_DATA_READY_Port, .pin = H_GPIO_DATA_READY_Pin}, \ + .pin_reset = {.port = H_GPIO_PORT_RESET, .pin = H_GPIO_PIN_RESET }, \ .tx_queue_size = H_SPI_TX_Q, \ .rx_queue_size = H_SPI_RX_Q, \ .mode = H_SPI_MODE, \ .clk_mhz = H_SPI_FD_CLK_MHZ, \ } -#endif -#if H_TRANSPORT_UART == H_TRANSPORT_IN_USE #define INIT_DEFAULT_HOST_UART_CONFIG() \ (struct esp_hosted_uart_config) { \ .port = H_UART_PORT, \ - .pin_tx = {.port = NULL, .pin = H_UART_TX_PIN}, \ - .pin_rx = {.port = NULL, .pin = H_UART_RX_PIN}, \ - .pin_reset = {.port = NULL, .pin = H_GPIO_PIN_RESET_Pin }, \ + .pin_tx = {.port = H_UART_PORT_TX, .pin = H_UART_PIN_TX}, \ + .pin_rx = {.port = H_UART_PORT_RX, .pin = H_UART_PIN_RX}, \ + .pin_reset = {.port = H_GPIO_PORT_RESET, .pin = H_GPIO_PIN_RESET }, \ .num_data_bits = H_UART_NUM_DATA_BITS, \ .parity = H_UART_PARITY, \ .stop_bits = H_UART_STOP_BITS, \ @@ -197,9 +199,14 @@ struct esp_hosted_transport_config { .checksum_enable = H_UART_CHECKSUM, \ .baud_rate = H_UART_BAUD_RATE, \ .tx_queue_size = H_UART_TX_QUEUE_SIZE, \ - .rx_queue_size = H_UART_RX_QUEUE_SIZE \ + .rx_queue_size = H_UART_RX_QUEUE_SIZE, \ } -#endif + +/*** + * Generic Transport APIs + ***/ +esp_err_t esp_hosted_set_default_config(void); +bool esp_hosted_is_config_valid(void); /* Configuration get/set functions */ esp_hosted_transport_err_t esp_hosted_transport_set_default_config(void); @@ -208,33 +215,29 @@ esp_hosted_transport_err_t esp_hosted_transport_get_reset_config(gpio_pin_t *pin bool esp_hosted_transport_is_config_valid(void); -#if H_TRANSPORT_SDIO == H_TRANSPORT_IN_USE +/*** + * Transport dependent APIs. + * Can only be used with the configured host transport + ***/ /* SDIO functions */ esp_hosted_transport_err_t esp_hosted_sdio_get_config(struct esp_hosted_sdio_config **config); esp_hosted_transport_err_t esp_hosted_sdio_set_config(struct esp_hosted_sdio_config *config) __attribute__((warn_unused_result)); esp_hosted_transport_err_t esp_hosted_sdio_iomux_set_config(struct esp_hosted_sdio_config *config) __attribute__((warn_unused_result)); -#endif -#if H_TRANSPORT_SPI_HD == H_TRANSPORT_IN_USE /* SPI Half Duplex functions */ esp_hosted_transport_err_t esp_hosted_spi_hd_get_config(struct esp_hosted_spi_hd_config **config); esp_hosted_transport_err_t esp_hosted_spi_hd_set_config(struct esp_hosted_spi_hd_config *config) __attribute__((warn_unused_result)); esp_hosted_transport_err_t esp_hosted_spi_hd_2lines_get_config(struct esp_hosted_spi_hd_config **config); esp_hosted_transport_err_t esp_hosted_spi_hd_2lines_set_config(struct esp_hosted_spi_hd_config *config) __attribute__((warn_unused_result)); -#endif -#if H_TRANSPORT_SPI == H_TRANSPORT_IN_USE /* SPI Full Duplex functions */ esp_hosted_transport_err_t esp_hosted_spi_get_config(struct esp_hosted_spi_config **config); esp_hosted_transport_err_t esp_hosted_spi_set_config(struct esp_hosted_spi_config *config) __attribute__((warn_unused_result)); -#endif -#if H_TRANSPORT_UART == H_TRANSPORT_IN_USE /* UART functions */ esp_hosted_transport_err_t esp_hosted_uart_get_config(struct esp_hosted_uart_config **config); esp_hosted_transport_err_t esp_hosted_uart_set_config(struct esp_hosted_uart_config *config) __attribute__((warn_unused_result)); -#endif #endif /* __ESP_HOSTED_TRANSPORT_CONFIG_H__ */ diff --git a/host/api/priv/esp_hosted_api_priv.h b/host/api/priv/esp_hosted_api_priv.h index 48a7992f..e58afe86 100644 --- a/host/api/priv/esp_hosted_api_priv.h +++ b/host/api/priv/esp_hosted_api_priv.h @@ -18,7 +18,7 @@ extern "C" { #include "esp_wifi_remote.h" #include "esp_hosted_api_types.h" #include "esp_hosted_ota.h" -#include "esp_hosted_wifi_config.h" +#include "port_esp_hosted_host_wifi_config.h" /* Remote WiFi API Functions - Port/Implementation Specific */ esp_err_t esp_wifi_remote_init(const wifi_init_config_t *arg); diff --git a/host/api/src/esp_hosted_api.c b/host/api/src/esp_hosted_api.c index 7d8ca72c..791ad75f 100644 --- a/host/api/src/esp_hosted_api.c +++ b/host/api/src/esp_hosted_api.c @@ -1,8 +1,8 @@ /* -* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD -* -* SPDX-License-Identifier: Apache-2.0 -*/ + * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #ifdef __cplusplus extern "C" { @@ -10,9 +10,10 @@ extern "C" { /** Includes **/ #include "esp_hosted_transport_config.h" -#include "esp_hosted_wifi_config.h" #include "esp_hosted_api_priv.h" #include "esp_hosted_wifi_remote_glue.h" +#include "port_esp_hosted_host_wifi_config.h" +#include "port_esp_hosted_host_os.h" #include "esp_check.h" #include "transport_drv.h" #include "rpc_wrap.h" diff --git a/host/port/esp/freertos/src/esp_hosted_transport_config.c b/host/api/src/esp_hosted_transport_config.c similarity index 95% rename from host/port/esp/freertos/src/esp_hosted_transport_config.c rename to host/api/src/esp_hosted_transport_config.c index 0c843bc3..85a13a79 100644 --- a/host/port/esp/freertos/src/esp_hosted_transport_config.c +++ b/host/api/src/esp_hosted_transport_config.c @@ -4,10 +4,12 @@ * SPDX-License-Identifier: Apache-2.0 */ -#include "esp_hosted_transport_config.h" #include #include "esp_log.h" +#include "port_esp_hosted_host_config.h" +#include "esp_hosted_transport_config.h" + static const char *TAG = "esp_hosted_transport_config"; /* Static configurations */ @@ -20,6 +22,14 @@ bool esp_hosted_transport_is_config_valid(void) { return esp_hosted_transport_config_set; } +esp_err_t esp_hosted_set_default_config(void) { + return esp_hosted_transport_set_default_config(); +} + +bool esp_hosted_is_config_valid(void) { + return esp_hosted_transport_is_config_valid(); +} + esp_hosted_transport_err_t esp_hosted_transport_set_default_config(void) { memset(&s_transport_config, 0, sizeof(s_transport_config)); @@ -74,8 +84,8 @@ esp_hosted_transport_err_t esp_hosted_transport_get_reset_config(gpio_pin_t *pin case H_TRANSPORT_NONE: // drop through to default case default: // transport config not yet initialised. Use default Reset pin config - pin_config->port = NULL; - pin_config->pin = H_GPIO_PIN_RESET_Pin; + pin_config->port = H_GPIO_PORT_RESET; + pin_config->pin = H_GPIO_PIN_RESET; break; } diff --git a/host/api/src/esp_wifi_weak.c b/host/api/src/esp_wifi_weak.c index fe97395b..c0c45a64 100644 --- a/host/api/src/esp_wifi_weak.c +++ b/host/api/src/esp_wifi_weak.c @@ -11,7 +11,8 @@ */ #include "esp_hosted_api_priv.h" -#include "esp_hosted_wifi_config.h" +#include "port_esp_hosted_host_config.h" +#include "port_esp_hosted_host_wifi_config.h" H_WEAK_REF esp_err_t esp_wifi_init(const wifi_init_config_t *config) { diff --git a/host/drivers/bt/hci_drv.h b/host/drivers/bt/hci_drv.h index c3770275..e02a7651 100644 --- a/host/drivers/bt/hci_drv.h +++ b/host/drivers/bt/hci_drv.h @@ -7,9 +7,7 @@ #ifndef __HOSTED_HCI_DRV_H #define __HOSTED_HCI_DRV_H -#include "common.h" - -#include "esp_hosted_bt_config.h" +#include "port_esp_hosted_host_bt_config.h" void hci_drv_init(void); diff --git a/host/drivers/bt/hci_stub_drv.c b/host/drivers/bt/hci_stub_drv.c index 72e3a3db..24be4a7b 100644 --- a/host/drivers/bt/hci_stub_drv.c +++ b/host/drivers/bt/hci_stub_drv.c @@ -1,5 +1,8 @@ -// Copyright 2015-2024 Espressif Systems (Shanghai) PTE LTD -/* SPDX-License-Identifier: GPL-2.0 OR Apache-2.0 */ +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #include "hci_drv.h" @@ -11,13 +14,16 @@ static const char TAG[] = "hci_stub_drv"; #include "nimble/transport.h" #endif -#if H_BT_HOST_ESP_BLUEDROID #include "esp_hosted_bt.h" +#include "port_esp_hosted_host_os.h" + +#if H_BT_HOST_ESP_BLUEDROID +#include "esp_hosted_bluedroid.h" #endif #define WEAK __attribute__((weak)) -int hci_rx_handler(interface_buffer_handle_t *buf_handle) +H_WEAK_REF int hci_rx_handler(uint8_t *buf, size_t buf_len) { /* Hosted transport received BT packets, but Hosted was not * configured to handle BT packets. Drop them. @@ -53,6 +59,14 @@ void hci_drv_show_configuration(void) * incoming data. */ +WEAK void ble_transport_ll_init(void) +{ +} + +WEAK void ble_transport_ll_deinit(void) +{ +} + WEAK int ble_transport_to_ll_acl_impl(struct os_mbuf *om) { os_mbuf_free_chain(om); diff --git a/host/drivers/bt/vhci_drv.c b/host/drivers/bt/vhci_drv.c index 7edcd4f0..66defb8f 100644 --- a/host/drivers/bt/vhci_drv.c +++ b/host/drivers/bt/vhci_drv.c @@ -5,11 +5,13 @@ */ #include +#include +#include #include "esp_hosted_transport.h" -#include "os_wrapper.h" +#include "esp_hosted_os_abstraction.h" #include "transport_drv.h" - +#include "port_esp_hosted_host_os.h" #include "hci_drv.h" #if H_BT_HOST_ESP_NIMBLE @@ -22,6 +24,10 @@ #include "esp_hosted_bt.h" +#if H_BT_HOST_ESP_BLUEDROID +#include "esp_hosted_bluedroid.h" +#endif + #include "esp_hosted_log.h" static const char TAG[] = "vhci_drv"; @@ -153,7 +159,7 @@ int ble_transport_to_ll_acl_impl(struct os_mbuf *om) uint8_t * data = NULL; int res; - data = MEM_ALLOC(data_len); + data = g_h.funcs->_h_malloc_align(data_len, HOSTED_MEM_ALIGNMENT_64); if (!data) { ESP_LOGE(TAG, "Tx %s: malloc failed", __func__); res = ESP_FAIL; @@ -164,6 +170,8 @@ int ble_transport_to_ll_acl_impl(struct os_mbuf *om) res = ble_hs_mbuf_to_flat(om, &data[1], OS_MBUF_PKTLEN(om), NULL); if (res) { ESP_LOGE(TAG, "Tx: Error copying HCI_H4_ACL data %d", res); + os_mbuf_free_chain(om); + g_h.funcs->_h_free_align(data); res = ESP_FAIL; goto exit; } @@ -186,7 +194,7 @@ int ble_transport_to_ll_cmd_impl(void *buf) uint8_t * data = NULL; int res; - data = MEM_ALLOC(buf_len); + data = g_h.funcs->_h_malloc_align(buf_len, HOSTED_MEM_ALIGNMENT_64); if (!data) { ESP_LOGE(TAG, "Tx %s: malloc failed", __func__); res = ESP_FAIL; @@ -242,7 +250,7 @@ void hosted_hci_bluedroid_send(uint8_t *data, uint16_t len) int res; uint8_t * ptr = NULL; - ptr = MEM_ALLOC(len); + ptr = g_h.funcs->_h_malloc_align(len, HOSTED_MEM_ALIGNMENT_64); if (!ptr) { ESP_LOGE(TAG, "%s: malloc failed", __func__); return; diff --git a/host/drivers/mempool/mempool.c b/host/drivers/mempool/mempool.c index 1dfa9274..6f6e146b 100644 --- a/host/drivers/mempool/mempool.c +++ b/host/drivers/mempool/mempool.c @@ -1,30 +1,19 @@ -// Copyright 2015-2022 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #include "mempool.h" -#include "esp_hosted_config.h" +#include "port_esp_hosted_host_config.h" #include "stats.h" #include "esp_log.h" -#define MEMPOOL_DEBUG 1 +#define MEMPOOL_DEBUG 1 static char * MEM_TAG = "mpool"; #if H_MEM_STATS #include "esp_log.h" - - #endif struct mempool * mempool_create(uint32_t block_size) @@ -112,7 +101,7 @@ void * mempool_alloc(struct mempool* mp, int nbytes, int need_memset) g_h.funcs->_h_unlock_mempool(mp->spinlock); - buf = MEM_ALLOC(MEMPOOL_ALIGNED(mp->block_size)); + buf = g_h.funcs->_h_malloc_align(MEMPOOL_ALIGNED(mp->block_size), MEMPOOL_ALIGNMENT_BYTES); #if H_MEM_STATS h_stats_g.mp_stats.num_fresh_alloc++; ESP_LOGV(MEM_TAG, "%p: num_alloc: %lu", mp, (unsigned long int)(h_stats_g.mp_stats.num_fresh_alloc)); diff --git a/host/drivers/mempool/mempool.h b/host/drivers/mempool/mempool.h index c654d065..bcc23ce9 100644 --- a/host/drivers/mempool/mempool.h +++ b/host/drivers/mempool/mempool.h @@ -9,7 +9,7 @@ #include #include #include -#include "os_wrapper.h" +#include "port_esp_hosted_host_os.h" #define MEMPOOL_OK 0 diff --git a/host/drivers/power_save/power_save_drv.c b/host/drivers/power_save/power_save_drv.c index 56408393..cf37d510 100644 --- a/host/drivers/power_save/power_save_drv.c +++ b/host/drivers/power_save/power_save_drv.c @@ -1,5 +1,8 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2015-2023 Espressif Systems (Shanghai) PTE LTD +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ /** Includes **/ #include "esp_log.h" @@ -7,7 +10,8 @@ #include "power_save_drv.h" #include "stats.h" #include "transport_drv.h" -#include "esp_hosted_config.h" +#include "port_esp_hosted_host_config.h" +#include "port_esp_hosted_host_os.h" #include "esp_hosted_power_save.h" #include "esp_hosted_transport_config.h" @@ -70,6 +74,9 @@ int esp_hosted_power_save_init(void) power_save_on = 0; reset_in_progress = false; + // configure wakeup as GPIO input + g_h.funcs->_h_config_gpio(gpio_port, gpio_num, H_GPIO_MODE_DEF_INPUT); + int initial_level = g_h.funcs->_h_read_gpio(gpio_port, gpio_num); ESP_LOGI(TAG, "Initial GPIO level: %d", initial_level); @@ -166,7 +173,7 @@ static int notify_slave_host_power_save_stop(void) int hold_slave_reset_gpio_pre_power_save(void) { #if H_HOST_PS_ALLOWED - gpio_pin_t reset_pin = { .port = H_GPIO_PIN_RESET_Port, .pin = H_GPIO_PIN_RESET_Pin }; + gpio_pin_t reset_pin = { .port = H_GPIO_PORT_RESET, .pin = H_GPIO_PIN_RESET }; if (ESP_TRANSPORT_OK != esp_hosted_transport_get_reset_config(&reset_pin)) { ESP_LOGE(TAG, "Unable to get RESET config for transport"); @@ -186,7 +193,7 @@ int hold_slave_reset_gpio_pre_power_save(void) int release_slave_reset_gpio_post_wakeup(void) { #if H_HOST_PS_ALLOWED - gpio_pin_t reset_pin = { .port = H_GPIO_PIN_RESET_Port, .pin = H_GPIO_PIN_RESET_Pin }; + gpio_pin_t reset_pin = { .port = H_GPIO_PORT_RESET, .pin = H_GPIO_PIN_RESET }; if (ESP_TRANSPORT_OK != esp_hosted_transport_get_reset_config(&reset_pin)) { ESP_LOGE(TAG, "Unable to get RESET config for transport"); diff --git a/host/drivers/power_save/power_save_drv.h b/host/drivers/power_save/power_save_drv.h index e77991fa..5aaecb7c 100644 --- a/host/drivers/power_save/power_save_drv.h +++ b/host/drivers/power_save/power_save_drv.h @@ -1,5 +1,7 @@ -/* SPDX-License-Identifier: Apache-2.0 - * Copyright 2015-2025 Espressif Systems (Shanghai) PTE LTD +/* + * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 */ /* This file is internal to ESP-Hosted */ @@ -7,8 +9,6 @@ #ifndef __POWER_SAVE_DRV_H #define __POWER_SAVE_DRV_H -#include "common.h" - /** * @brief Stops the host power save mode. * @note This is an internal function called during the wake-up sequence. diff --git a/host/drivers/rpc/core/rpc_core.c b/host/drivers/rpc/core/rpc_core.c index bdeeac90..b830409f 100644 --- a/host/drivers/rpc/core/rpc_core.c +++ b/host/drivers/rpc/core/rpc_core.c @@ -1,5 +1,8 @@ -// Copyright 2015-2022 Espressif Systems (Shanghai) PTE LTD -/* SPDX-License-Identifier: GPL-2.0 OR Apache-2.0 */ +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #include #include @@ -9,10 +12,9 @@ #include "serial_if.h" #include "serial_drv.h" #include -#include "esp_log.h" #include "esp_task.h" -#include "esp_hosted_config.h" - +#include "port_esp_hosted_host_config.h" +#include "port_esp_hosted_host_log.h" static const char *TAG = "rpc_core"; diff --git a/host/drivers/rpc/core/rpc_core.h b/host/drivers/rpc/core/rpc_core.h index 6ca0fdc3..7ca8895b 100644 --- a/host/drivers/rpc/core/rpc_core.h +++ b/host/drivers/rpc/core/rpc_core.h @@ -1,8 +1,7 @@ /* - * Espressif Systems Wireless LAN device driver + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD * - * Copyright (C) 2015-2022 Espressif Systems (Shanghai) PTE LTD - * SPDX-License-Identifier: GPL-2.0 OR Apache-2.0 + * SPDX-License-Identifier: Apache-2.0 */ #ifndef __RPC_CORE_H @@ -11,8 +10,10 @@ #include #include #include +#include +#include "transport_drv.h" #include "rpc_slave_if.h" -#include "os_wrapper.h" +#include "port_esp_hosted_host_log.h" #ifndef BIT #define BIT(n) (1UL << (n)) @@ -88,7 +89,7 @@ typedef struct q_element { #define RPC_REQ_COPY_STR(DsT,SrC,MaxSizE) { \ if (SrC) { \ - RPC_REQ_COPY_BYTES(DsT, SrC, min(strlen((char*)SrC)+1,MaxSizE)); \ + RPC_REQ_COPY_BYTES(DsT, SrC, H_MIN(strlen((char*)SrC)+1,MaxSizE)); \ } \ } diff --git a/host/drivers/rpc/core/rpc_evt.c b/host/drivers/rpc/core/rpc_evt.c index 122294cd..15f5651a 100644 --- a/host/drivers/rpc/core/rpc_evt.c +++ b/host/drivers/rpc/core/rpc_evt.c @@ -1,12 +1,16 @@ -// Copyright 2015-2022 Espressif Systems (Shanghai) PTE LTD -/* SPDX-License-Identifier: GPL-2.0 OR Apache-2.0 */ +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #include "rpc_core.h" #include "rpc_slave_if.h" -#include "esp_log.h" -#include #include "esp_hosted_transport.h" +#include "port_esp_hosted_host_log.h" +#include "port_esp_hosted_host_config.h" #include "esp_hosted_bitmasks.h" +#include "esp_hosted_os_abstraction.h" DEFINE_LOG_TAG(rpc_evt); @@ -138,7 +142,7 @@ int rpc_parse_evt(Rpc *rpc_msg, ctrl_cmd_t *app_ntfy) p_a->flow_id_bitmap = p_c->flow_id_bitmap; memset(p_a->actual_suspend_time_ms, 0, sizeof(p_a->actual_suspend_time_ms)); - for (i = 0; i < min(num_elements, p_c->n_actual_suspend_time_ms); i++) { + for (i = 0; i < H_MIN(num_elements, p_c->n_actual_suspend_time_ms); i++) { p_a->actual_suspend_time_ms[i] = p_c->actual_suspend_time_ms[i]; } diff --git a/host/drivers/rpc/core/rpc_req.c b/host/drivers/rpc/core/rpc_req.c index 15fc59d6..3ef47ecc 100644 --- a/host/drivers/rpc/core/rpc_req.c +++ b/host/drivers/rpc/core/rpc_req.c @@ -7,10 +7,12 @@ #include "rpc_core.h" #include "rpc_slave_if.h" #include "esp_hosted_rpc.h" -#include "esp_log.h" -#include "esp_hosted_wifi_config.h" +#include "port_esp_hosted_host_wifi_config.h" #include "esp_hosted_transport.h" #include "esp_hosted_bitmasks.h" +#include "esp_idf_version.h" +#include "port_esp_hosted_host_log.h" +#include "esp_hosted_os_abstraction.h" DEFINE_LOG_TAG(rpc_req); diff --git a/host/drivers/rpc/core/rpc_rsp.c b/host/drivers/rpc/core/rpc_rsp.c index 0dadc8c7..435c8373 100644 --- a/host/drivers/rpc/core/rpc_rsp.c +++ b/host/drivers/rpc/core/rpc_rsp.c @@ -6,11 +6,13 @@ #include "rpc_core.h" #include "rpc_slave_if.h" -#include "esp_log.h" -#include "esp_hosted_wifi_config.h" #include "esp_hosted_transport.h" #include "esp_hosted_bitmasks.h" -#include "esp_hosted_config.h" +#include "esp_idf_version.h" +#include "port_esp_hosted_host_config.h" +#include "port_esp_hosted_host_wifi_config.h" +#include "port_esp_hosted_host_log.h" +#include "esp_hosted_os_abstraction.h" DEFINE_LOG_TAG(rpc_rsp); diff --git a/host/drivers/rpc/slaveif/rpc_slave_if.c b/host/drivers/rpc/slaveif/rpc_slave_if.c index ffba14e9..a3837bba 100644 --- a/host/drivers/rpc/slaveif/rpc_slave_if.c +++ b/host/drivers/rpc/slaveif/rpc_slave_if.c @@ -6,8 +6,8 @@ #include "rpc_slave_if.h" #include "rpc_core.h" -#include "esp_hosted_wifi_config.h" -#include "esp_log.h" +#include "port_esp_hosted_host_wifi_config.h" +#include "port_esp_hosted_host_log.h" DEFINE_LOG_TAG(rpc_api); diff --git a/host/drivers/rpc/slaveif/rpc_slave_if.h b/host/drivers/rpc/slaveif/rpc_slave_if.h index e6a9d00c..d7986ed8 100644 --- a/host/drivers/rpc/slaveif/rpc_slave_if.h +++ b/host/drivers/rpc/slaveif/rpc_slave_if.h @@ -12,7 +12,7 @@ #include "esp_hosted_rpc.pb-c.h" #include "esp_wifi.h" #include "esp_wifi_types.h" -#include "esp_hosted_wifi_config.h" +#include "port_esp_hosted_host_wifi_config.h" #ifdef __cplusplus extern "C" { diff --git a/host/drivers/rpc/wrap/rpc_wrap.c b/host/drivers/rpc/wrap/rpc_wrap.c index 009910d2..b934af60 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.c +++ b/host/drivers/rpc/wrap/rpc_wrap.c @@ -4,19 +4,19 @@ * SPDX-License-Identifier: Apache-2.0 */ -#include "common.h" #include #include #include #include "rpc_slave_if.h" #include "string.h" -#include "os_wrapper.h" #include "rpc_wrap.h" #include "esp_hosted_rpc.h" #include "esp_log.h" -#include "esp_hosted_wifi_config.h" +#include "port_esp_hosted_host_wifi_config.h" +#include "port_esp_hosted_host_os.h" #include "esp_hosted_transport.h" -#include "esp_netif.h" +#include "port_esp_hosted_host_log.h" +#include "transport_drv.h" static const char *TAG = "RPC_WRAP"; diff --git a/host/drivers/rpc/wrap/rpc_wrap.h b/host/drivers/rpc/wrap/rpc_wrap.h index 3fb4613a..58f9d17d 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.h +++ b/host/drivers/rpc/wrap/rpc_wrap.h @@ -1,17 +1,8 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2015-2021 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ /** prevent recursive inclusion **/ #ifndef __RPC_WRAP_H__ @@ -22,9 +13,8 @@ extern "C" { #endif /** Includes **/ -#include "common.h" #include "esp_wifi.h" -#include "esp_hosted_wifi_config.h" +#include "port_esp_hosted_host_wifi_config.h" #include "esp_hosted_api_types.h" #include "esp_hosted_ota.h" diff --git a/host/drivers/serial/serial_drv.c b/host/drivers/serial/serial_drv.c index 512050ff..f310d5b9 100644 --- a/host/drivers/serial/serial_drv.c +++ b/host/drivers/serial/serial_drv.c @@ -14,8 +14,8 @@ #include "serial_if.h" #include "serial_ll_if.h" -#include "esp_log.h" #include "esp_hosted_log.h" +#include "port_esp_hosted_host_log.h" DEFINE_LOG_TAG(serial); diff --git a/host/drivers/serial/serial_ll_if.c b/host/drivers/serial/serial_ll_if.c index 72fdfcb5..f5c6c4d3 100644 --- a/host/drivers/serial/serial_ll_if.c +++ b/host/drivers/serial/serial_ll_if.c @@ -1,26 +1,16 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2015-2021 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ /** Includes **/ #include "string.h" #include "serial_ll_if.h" -#include "esp_log.h" #include "transport_drv.h" #include "esp_hosted_transport.h" #include "esp_hosted_header.h" +#include "port_esp_hosted_host_log.h" #include "esp_hosted_log.h" DEFINE_LOG_TAG(serial_ll); diff --git a/host/drivers/serial/serial_ll_if.h b/host/drivers/serial/serial_ll_if.h index edff022d..b5697e15 100644 --- a/host/drivers/serial/serial_ll_if.h +++ b/host/drivers/serial/serial_ll_if.h @@ -1,17 +1,8 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2015-2021 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ /*prevent recursive inclusion */ #ifndef __SERIAL_LL_IF_H @@ -23,7 +14,7 @@ extern "C" { /** includes **/ #include "transport_drv.h" -#include "os_wrapper.h" +#include "port_esp_hosted_host_os.h" struct serial_ll_operations; diff --git a/host/drivers/transport/sdio/sdio_drv.c b/host/drivers/transport/sdio/sdio_drv.c index 95ef49d1..482641d1 100644 --- a/host/drivers/transport/sdio/sdio_drv.c +++ b/host/drivers/transport/sdio/sdio_drv.c @@ -84,9 +84,9 @@ #include "esp_hosted_transport_init.h" #include "power_save_drv.h" #include "esp_hosted_power_save.h" -#include "esp_hosted_config.h" #include "esp_hosted_transport_config.h" #include "esp_hosted_bt.h" +#include "port_esp_hosted_host_config.h" static const char TAG[] = "H_SDIO_DRV"; @@ -97,8 +97,10 @@ static const char TAG[] = "H_SDIO_DRV"; #define DO_COMBINED_REG_READ (1) /** Constants/Macros **/ -#define TO_SLAVE_QUEUE_SIZE H_SDIO_TX_Q -#define FROM_SLAVE_QUEUE_SIZE H_SDIO_RX_Q + +// default queue sizes if unable to get from transport config +#define DEFAULT_TO_SLAVE_QUEUE_SIZE 20 +#define DEFAULT_FROM_SLAVE_QUEUE_SIZE 20 #define RX_TASK_STACK_SIZE CONFIG_ESP_HOSTED_DFLT_TASK_STACK #define TX_TASK_STACK_SIZE CONFIG_ESP_HOSTED_DFLT_TASK_STACK @@ -672,7 +674,7 @@ static int is_valid_sdio_rx_packet(uint8_t *rxbuff_a, uint16_t *len_a, uint16_t if (is_wakeup_pkt && len<1500) { ESP_LOGI(TAG, "Host wakeup triggered, len: %u ", len); - ESP_HEXLOGW("Wakeup_pkt", rxbuff_a+offset, len, min(len,128)); + ESP_HEXLOGW("Wakeup_pkt", rxbuff_a+offset, len, H_MIN(len,128)); } if ((!len) || @@ -822,9 +824,9 @@ static uint8_t * sdio_rx_get_buffer(uint32_t len) if (len > double_buf.buffer[index].buf_size) { if (*buf) { // free already allocated memory - g_h.funcs->_h_free(*buf); + g_h.funcs->_h_free_align(*buf); } - *buf = (uint8_t *)MEM_ALLOC(len); + *buf = (uint8_t *)g_h.funcs->_h_malloc_align(len, HOSTED_MEM_ALIGNMENT_64); assert(*buf); double_buf.buffer[index].buf_size = len; ESP_LOGD(TAG, "buf %d size: %ld", index, double_buf.buffer[index].buf_size); @@ -981,7 +983,7 @@ static void sdio_read_task(void const* pvParameters) #if DO_COMBINED_REG_READ - reg_buf = MEM_ALLOC(REG_BUF_LEN); + reg_buf = g_h.funcs->_h_malloc_align(REG_BUF_LEN, HOSTED_MEM_ALIGNMENT_64); assert(reg_buf); #endif @@ -1241,16 +1243,38 @@ static void sdio_process_rx_task(void const* pvParameters) void *bus_init_internal(void) { uint8_t prio_q_idx = 0; + + int tx_queue_size = DEFAULT_TO_SLAVE_QUEUE_SIZE; + int rx_queue_size = DEFAULT_FROM_SLAVE_QUEUE_SIZE; + + struct esp_hosted_sdio_config *psdio_config; + + // get queue sizes from transport config + if (ESP_TRANSPORT_OK == esp_hosted_sdio_get_config(&psdio_config)) { + tx_queue_size = psdio_config->tx_queue_size; + rx_queue_size = psdio_config->rx_queue_size; + if (!tx_queue_size) { + tx_queue_size = DEFAULT_TO_SLAVE_QUEUE_SIZE; + ESP_LOGW(TAG, "provided sdio tx queue size is zero! Setting to %d", tx_queue_size); + } + if (!rx_queue_size) { + rx_queue_size = DEFAULT_FROM_SLAVE_QUEUE_SIZE; + ESP_LOGW(TAG, "provided sdio rx queue size is zero! Setting to %d", rx_queue_size); + } + } else { + ESP_LOGW(TAG, "failed to get SDIO transport config: using default values"); + } + /* register callback */ sdio_bus_lock = g_h.funcs->_h_create_mutex(); assert(sdio_bus_lock); - sem_to_slave_queue = g_h.funcs->_h_create_semaphore(TO_SLAVE_QUEUE_SIZE*MAX_PRIORITY_QUEUES); + sem_to_slave_queue = g_h.funcs->_h_create_semaphore(tx_queue_size * MAX_PRIORITY_QUEUES); assert(sem_to_slave_queue); g_h.funcs->_h_get_semaphore(sem_to_slave_queue, 0); - sem_from_slave_queue = g_h.funcs->_h_create_semaphore(FROM_SLAVE_QUEUE_SIZE*MAX_PRIORITY_QUEUES); + sem_from_slave_queue = g_h.funcs->_h_create_semaphore(rx_queue_size * MAX_PRIORITY_QUEUES); assert(sem_from_slave_queue); g_h.funcs->_h_get_semaphore(sem_from_slave_queue, 0); @@ -1259,11 +1283,11 @@ void *bus_init_internal(void) for (prio_q_idx=0; prio_q_idx_h_create_queue(FROM_SLAVE_QUEUE_SIZE, sizeof(interface_buffer_handle_t)); + from_slave_queue[prio_q_idx] = g_h.funcs->_h_create_queue(rx_queue_size, sizeof(interface_buffer_handle_t)); assert(from_slave_queue[prio_q_idx]); /* Queue - tx */ - to_slave_queue[prio_q_idx] = g_h.funcs->_h_create_queue(TO_SLAVE_QUEUE_SIZE, sizeof(interface_buffer_handle_t)); + to_slave_queue[prio_q_idx] = g_h.funcs->_h_create_queue(tx_queue_size, sizeof(interface_buffer_handle_t)); assert(to_slave_queue[prio_q_idx]); } @@ -1398,7 +1422,7 @@ static esp_err_t transport_gpio_reset(void *bus_handle, gpio_pin_t reset_pin) int ensure_slave_bus_ready(void *bus_handle) { int res = -1; - gpio_pin_t reset_pin = { .port = H_GPIO_PIN_RESET_Port, .pin = H_GPIO_PIN_RESET_Pin }; + gpio_pin_t reset_pin = { .port = H_GPIO_PORT_RESET, .pin = H_GPIO_PIN_RESET }; if (ESP_TRANSPORT_OK != esp_hosted_transport_get_reset_config(&reset_pin)) { ESP_LOGE(TAG, "Unable to get RESET config for transport"); diff --git a/host/drivers/transport/sdio/sdio_drv.h b/host/drivers/transport/sdio/sdio_drv.h index 8de0d970..58bed27b 100644 --- a/host/drivers/transport/sdio/sdio_drv.h +++ b/host/drivers/transport/sdio/sdio_drv.h @@ -1,24 +1,14 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2015-2023 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ /** prevent recursive inclusion **/ #ifndef __SDIO_DRV_H #define __SDIO_DRV_H /** Includes **/ -#include "common.h" /** Constants/Macros **/ diff --git a/host/drivers/transport/sdio/sdio_reg.h b/host/drivers/transport/sdio/sdio_reg.h index 90354382..a72134d8 100644 --- a/host/drivers/transport/sdio/sdio_reg.h +++ b/host/drivers/transport/sdio/sdio_reg.h @@ -8,7 +8,7 @@ #define __SDIO_REG_H /** Includes **/ -#include "common.h" +#include "port_esp_hosted_host_config.h" /** constants/macros **/ #define SD_IO_CCCR_FN_ENABLE 0x02 diff --git a/host/drivers/transport/spi/spi_drv.c b/host/drivers/transport/spi/spi_drv.c index 00a05e0c..d3eaaa05 100644 --- a/host/drivers/transport/spi/spi_drv.c +++ b/host/drivers/transport/spi/spi_drv.c @@ -6,13 +6,10 @@ #include "mempool.h" -#include "common.h" -#include "esp_hosted_config.h" #include "transport_drv.h" #include "spi_drv.h" #include "serial_drv.h" #include "esp_hosted_transport.h" -#include "esp_log.h" #include "esp_hosted_log.h" #include "stats.h" #include "hci_drv.h" @@ -21,6 +18,9 @@ #include "esp_hosted_power_save.h" #include "esp_hosted_transport_config.h" #include "esp_hosted_bt.h" +#include "port_esp_hosted_host_config.h" +#include "port_esp_hosted_host_log.h" +#include "port_esp_hosted_host_os.h" DEFINE_LOG_TAG(spi); @@ -320,7 +320,7 @@ static int process_spi_rx_buf(uint8_t * rxbuff) if (is_wakeup_pkt && len<1500) { ESP_LOGW(TAG, "Host wakeup triggered, if_type: %u, len: %u ", h->if_type, len); - //ESP_HEXLOGW("Wakeup_pkt", rxbuff+offset, len, min(len, 128)); + //ESP_HEXLOGW("Wakeup_pkt", rxbuff+offset, len, H_MIN(len, 128)); } if (ESP_MAX_IF == h->if_type) @@ -805,7 +805,7 @@ static uint8_t * get_next_tx_buffer(uint8_t *is_valid_tx_buf, void (**free_func) } else { /* Non HCI packets */ if (!buf_handle.payload_zcopy && len) - g_h.funcs->_h_memcpy(payload, buf_handle.payload, min(len, MAX_PAYLOAD_SIZE)); + g_h.funcs->_h_memcpy(payload, buf_handle.payload, H_MIN(len, MAX_PAYLOAD_SIZE)); } //TODO: checksum should be configurable from menuconfig @@ -870,7 +870,7 @@ static esp_err_t transport_gpio_reset(void *bus_handle, gpio_pin_t reset_pin) int ensure_slave_bus_ready(void *bus_handle) { esp_err_t res = ESP_OK; - gpio_pin_t reset_pin = { .port = H_GPIO_PIN_RESET_Port, .pin = H_GPIO_PIN_RESET_Pin }; + gpio_pin_t reset_pin = { .port = H_GPIO_PORT_RESET, .pin = H_GPIO_PIN_RESET }; if (ESP_TRANSPORT_OK != esp_hosted_transport_get_reset_config(&reset_pin)) { ESP_LOGE(TAG, "Unable to get RESET config for transport"); diff --git a/host/drivers/transport/spi/spi_drv.h b/host/drivers/transport/spi/spi_drv.h index 54b9b539..29b6c1d0 100644 --- a/host/drivers/transport/spi/spi_drv.h +++ b/host/drivers/transport/spi/spi_drv.h @@ -1,17 +1,8 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2015-2021 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ /** prevent recursive inclusion **/ #ifndef __SPI_DRV_H @@ -22,10 +13,7 @@ extern "C" { #endif /** Includes **/ -#include "common.h" #include "transport_drv.h" -#include "os_wrapper.h" - /** Constants/Macros **/ #define TO_SLAVE_QUEUE_SIZE 20 @@ -44,4 +32,3 @@ extern "C" { #endif #endif - diff --git a/host/drivers/transport/spi_hd/spi_hd_drv.c b/host/drivers/transport/spi_hd/spi_hd_drv.c index fe5f0cbc..e8f43983 100644 --- a/host/drivers/transport/spi_hd/spi_hd_drv.c +++ b/host/drivers/transport/spi_hd/spi_hd_drv.c @@ -18,13 +18,14 @@ #include "transport_drv.h" #include "spi_hd_drv.h" -#include "esp_hosted_config.h" +#include "port_esp_hosted_host_config.h" #include "esp_hosted_log.h" #include "power_save_drv.h" #include "esp_hosted_power_save.h" #include "esp_hosted_transport_config.h" #include "esp_hosted_bt.h" +#include "port_esp_hosted_host_os.h" static const char TAG[] = "H_SPI_HD_DRV"; @@ -503,7 +504,7 @@ static void spi_hd_read_task(void const* pvParameters) ESP_LOGD(TAG, "Open Data path"); // slave is ready: initialise Data Ready as interrupt input - g_h.funcs->_h_config_gpio_as_interrupt(H_SPI_HD_GPIO_DATA_READY_Port, H_SPI_HD_PIN_DATA_READY, + g_h.funcs->_h_config_gpio_as_interrupt(H_SPI_HD_PORT_DATA_READY, H_SPI_HD_PIN_DATA_READY, H_SPI_HD_DR_INTR_EDGE, gpio_dr_isr_handler, NULL); // tell slave to open data path @@ -885,7 +886,7 @@ void check_if_max_freq_used(uint8_t chip_type) int ensure_slave_bus_ready(void *bus_handle) { esp_err_t res = ESP_OK; - gpio_pin_t reset_pin = { .port = H_GPIO_PIN_RESET_Port, .pin = H_GPIO_PIN_RESET_Pin }; + gpio_pin_t reset_pin = { .port = H_GPIO_PORT_RESET, .pin = H_GPIO_PIN_RESET }; if (ESP_TRANSPORT_OK != esp_hosted_transport_get_reset_config(&reset_pin)) { ESP_LOGE(TAG, "Unable to get RESET config for transport"); diff --git a/host/drivers/transport/spi_hd/spi_hd_drv.h b/host/drivers/transport/spi_hd/spi_hd_drv.h index 6018be9e..73a18afa 100644 --- a/host/drivers/transport/spi_hd/spi_hd_drv.h +++ b/host/drivers/transport/spi_hd/spi_hd_drv.h @@ -1,22 +1,11 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2024 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ /** prevent recursive inclusion **/ #ifndef __SPI_HD_DRV_H #define __SPI_HD_DRV_H -#include "common.h" - #endif /* __SPI_HD_DRV_H */ diff --git a/host/drivers/transport/transport_drv.c b/host/drivers/transport/transport_drv.c index 9edc6f5d..438f1faa 100644 --- a/host/drivers/transport/transport_drv.c +++ b/host/drivers/transport/transport_drv.c @@ -1,17 +1,8 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2015-2021 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ /** Includes **/ #include @@ -23,19 +14,16 @@ #include "esp_hosted_transport_config.h" #include "esp_hosted_host_fw_ver.h" #include "stats.h" -#include "esp_log.h" #include "esp_hosted_log.h" #include "serial_drv.h" #include "serial_ll_if.h" -#include "esp_hosted_config.h" #include "mempool.h" #include "stats.h" #include "errno.h" #include "hci_drv.h" - -#if H_HOST_PS_ALLOWED +#include "port_esp_hosted_host_config.h" +#include "port_esp_hosted_host_log.h" #include "esp_hosted_power_save.h" -#endif #include "esp_hosted_cli.h" #include "rpc_wrap.h" diff --git a/host/drivers/transport/transport_drv.h b/host/drivers/transport/transport_drv.h index f221623d..01e2c888 100644 --- a/host/drivers/transport/transport_drv.h +++ b/host/drivers/transport/transport_drv.h @@ -1,17 +1,8 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2015-2021 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ /** prevent recursive inclusion **/ #ifndef __TRANSPORT_DRV_H @@ -23,14 +14,25 @@ extern "C" { /** Includes **/ -#include "common.h" +#include "esp_err.h" #include "esp_hosted_transport.h" -#include "esp_hosted_config.h" #include "esp_hosted_api_types.h" #include "esp_hosted_interface.h" #include "esp_hosted_header.h" +#include "port_esp_hosted_host_config.h" + +#if H_TRANSPORT_IN_USE == H_TRANSPORT_SPI +#include "port_esp_hosted_host_spi.h" +#elif H_TRANSPORT_IN_USE == H_TRANSPORT_SDIO +#include "port_esp_hosted_host_sdio.h" +#elif H_TRANSPORT_IN_USE == H_TRANSPORT_SPI_HD +#include "port_esp_hosted_host_spi_hd.h" +#elif H_TRANSPORT_IN_USE == H_TRANSPORT_UART +#include "port_esp_hosted_host_uart.h" +#endif + /* ESP in sdkconfig has CONFIG_IDF_FIRMWARE_CHIP_ID entry. * supported values of CONFIG_IDF_FIRMWARE_CHIP_ID are - */ #define ESP_PRIV_FIRMWARE_CHIP_UNRECOGNIZED (0xff) @@ -42,17 +44,56 @@ extern "C" { #define ESP_PRIV_FIRMWARE_CHIP_ESP32C6 (0xD) #define ESP_PRIV_FIRMWARE_CHIP_ESP32C5 (0x17) +#define MAX_SPI_BUFFER_SIZE ESP_TRANSPORT_SPI_MAX_BUF_SIZE +#define MAX_SDIO_BUFFER_SIZE ESP_TRANSPORT_SDIO_MAX_BUF_SIZE +#define MAX_SPI_HD_BUFFER_SIZE ESP_TRANSPORT_SPI_HD_MAX_BUF_SIZE +#define MAX_UART_BUFFER_SIZE ESP_TRANSPORT_UART_MAX_BUF_SIZE -#if H_TRANSPORT_IN_USE == H_TRANSPORT_SPI -#include "spi_wrapper.h" -#define SPI_MODE0 (0) -#define SPI_MODE1 (1) -#define SPI_MODE2 (2) -#define SPI_MODE3 (3) -#else -#include "sdio_wrapper.h" +#ifndef BIT +#define BIT(x) (1UL << (x)) +#endif + +#ifndef BIT64 +#define BIT64(nr) (1ULL << (nr)) #endif +#define H_MIN(a, b) (((a) < (b)) ? (a) : (b)) + +#define MHZ_TO_HZ(x) (1000000*(x)) + +#define H_FREE_PTR_WITH_FUNC(FreeFunc, FreePtr) do { \ + if (FreeFunc && FreePtr) { \ + FreeFunc(FreePtr); \ + FreePtr = NULL; \ + } \ +} while (0); + +#define SUCCESS 0 +#define FAILURE -1 + +typedef enum { + TRANSPORT_INACTIVE, + TRANSPORT_RX_ACTIVE, + TRANSPORT_TX_ACTIVE, +} transport_drv_events_e; + +/* interface header */ +typedef struct { + union { + void *priv_buffer_handle; + }; + uint8_t if_type; + uint8_t if_num; + uint8_t *payload; + uint8_t flag; + uint16_t payload_len; + uint16_t seq_num; + /* no need of memcpy at different layers */ + uint8_t payload_zcopy; + + void (*free_buf_handle)(void *buf_handle); +} interface_buffer_handle_t; + struct esp_private { uint8_t if_type; uint8_t if_num; diff --git a/host/drivers/transport/uart/uart_drv.c b/host/drivers/transport/uart/uart_drv.c index 44880c12..f4054c1a 100644 --- a/host/drivers/transport/uart/uart_drv.c +++ b/host/drivers/transport/uart/uart_drv.c @@ -9,7 +9,6 @@ #include "drivers/bt/hci_drv.h" -#include "common.h" #include "endian.h" #include "esp_log.h" #include "esp_hosted_log.h" @@ -19,6 +18,7 @@ #include "esp_hosted_transport_config.h" #include "power_save_drv.h" #include "esp_hosted_bt.h" +#include "port_esp_hosted_host_os.h" static const char TAG[] = "H_UART_DRV"; @@ -645,7 +645,7 @@ void bus_deinit_internal(void *bus_handle) int ensure_slave_bus_ready(void *bus_handle) { esp_err_t res = ESP_OK; - gpio_pin_t reset_pin = { .port = H_GPIO_PIN_RESET_Port, .pin = H_GPIO_PIN_RESET_Pin }; + gpio_pin_t reset_pin = { .port = H_GPIO_PORT_RESET, .pin = H_GPIO_PIN_RESET }; if (ESP_TRANSPORT_OK != esp_hosted_transport_get_reset_config(&reset_pin)) { ESP_LOGE(TAG, "Unable to get RESET config for transport"); diff --git a/host/drivers/virtual_serial_if/serial_if.c b/host/drivers/virtual_serial_if/serial_if.c index baa8700e..ea808dfc 100644 --- a/host/drivers/virtual_serial_if/serial_if.c +++ b/host/drivers/virtual_serial_if/serial_if.c @@ -3,10 +3,9 @@ /** Includes **/ #include -#include "os_wrapper.h" #include "serial_if.h" #include "serial_drv.h" -#include "esp_log.h" +#include "port_esp_hosted_host_log.h" DEFINE_LOG_TAG(serial_if); diff --git a/host/drivers/virtual_serial_if/serial_if.h b/host/drivers/virtual_serial_if/serial_if.h index 00a341da..d303526d 100644 --- a/host/drivers/virtual_serial_if/serial_if.h +++ b/host/drivers/virtual_serial_if/serial_if.h @@ -9,7 +9,6 @@ #include #include #include "esp_hosted_transport.h" -#include "os_wrapper.h" #define SIZE_OF_TYPE 1 #define SIZE_OF_LENGTH 2 diff --git a/host/esp_hosted.h b/host/esp_hosted.h index 8194ff0a..1e20a41b 100644 --- a/host/esp_hosted.h +++ b/host/esp_hosted.h @@ -11,9 +11,6 @@ extern "C" { #endif -#include "esp_hosted_config.h" -#include "esp_hosted_bt.h" -#include "esp_hosted_bt_config.h" #include "esp_hosted_transport_config.h" #include "esp_hosted_api_types.h" #include "esp_hosted_host_fw_ver.h" diff --git a/host/esp_hosted_bluedroid.h b/host/esp_hosted_bluedroid.h new file mode 100644 index 00000000..022fcbfc --- /dev/null +++ b/host/esp_hosted_bluedroid.h @@ -0,0 +1,23 @@ +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef __ESP_HOSTED_BLUEDROID_H +#define __ESP_HOSTED_BLUEDROID_H + +// ESP-Hosted Bluedroid interface for Host +// Only include if using ESP-IDF Bluedroid + +#include "esp_hosted_bt.h" +#include "esp_bluedroid_hci.h" + +// BT Bluedroid interface for Host +void hosted_hci_bluedroid_open(void); +void hosted_hci_bluedroid_close(void); +void hosted_hci_bluedroid_send(uint8_t *data, uint16_t len); +bool hosted_hci_bluedroid_check_send_available(void); +esp_err_t hosted_hci_bluedroid_register_host_callback(const esp_bluedroid_hci_driver_callbacks_t *callback); + +#endif // __ESP_HOSTED_BLUEDROID_H diff --git a/host/esp_hosted_bt.h b/host/esp_hosted_bt.h index 9c0c364d..c282d8c1 100644 --- a/host/esp_hosted_bt.h +++ b/host/esp_hosted_bt.h @@ -7,21 +7,9 @@ #ifndef __ESP_HOSTED_BT_H #define __ESP_HOSTED_BT_H -#include "esp_hosted_bt_config.h" +#include // Handles BT Rx int hci_rx_handler(uint8_t *buf, size_t buf_len); -#if H_BT_HOST_ESP_BLUEDROID -#include "esp_bluedroid_hci.h" - -// BT Bluedroid interface for Host -void hosted_hci_bluedroid_open(void); -void hosted_hci_bluedroid_close(void); -void hosted_hci_bluedroid_send(uint8_t *data, uint16_t len); -bool hosted_hci_bluedroid_check_send_available(void); -esp_err_t hosted_hci_bluedroid_register_host_callback(const esp_bluedroid_hci_driver_callbacks_t *callback); - -#endif // H_BT_HOST_ESP_BLUEDROID - -#endif // __ESP_HOSTED_BT_H +#endif diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index c5c446d6..48188fac 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -6,6 +6,6 @@ #ifndef __ESP_HOSTED_HOST_FW_VERSION_H__ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 -#define ESP_HOSTED_VERSION_MINOR_1 2 -#define ESP_HOSTED_VERSION_PATCH_1 4 +#define ESP_HOSTED_VERSION_MINOR_1 3 +#define ESP_HOSTED_VERSION_PATCH_1 0 #endif diff --git a/host/hosted_os_abstraction.h b/host/esp_hosted_os_abstraction.h similarity index 97% rename from host/hosted_os_abstraction.h rename to host/esp_hosted_os_abstraction.h index 2722d98f..5ad12af7 100644 --- a/host/hosted_os_abstraction.h +++ b/host/esp_hosted_os_abstraction.h @@ -2,11 +2,8 @@ * SPDX-FileCopyrightText: 2015-2023 Espressif Systems (Shanghai) CO LTD * SPDX-License-Identifier: Apache-2.0 */ -#ifndef __HOSTED_OS_ABSTRACTION_H__ -#define __HOSTED_OS_ABSTRACTION_H__ - -#include "esp_hosted_config.h" -#include "esp_hosted_power_save.h" +#ifndef __ESP_HOSTED_OS_ABSTRACTION_H__ +#define __ESP_HOSTED_OS_ABSTRACTION_H__ typedef struct { /* Memory */ @@ -130,4 +127,4 @@ extern hosted_osi_funcs_t g_hosted_osi_funcs; extern struct hosted_config_t g_h; -#endif /*__HOSTED_OS_ABSTRACTION_H__*/ +#endif diff --git a/host/port/esp/freertos/include/os_header.h b/host/port/esp/freertos/include/os_header.h deleted file mode 100644 index 46105aad..00000000 --- a/host/port/esp/freertos/include/os_header.h +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2015-2021 Espressif Systems (Shanghai) PTE LTD -/* SPDX-License-Identifier: GPL-2.0 OR Apache-2.0 */ - -#ifndef __OS_HEADER_H -#define __OS_HEADER_H - -#include "freertos/FreeRTOS.h" -#include "freertos/task.h" -#include "freertos/semphr.h" -#include "freertos/queue.h" -#include "freertos/event_groups.h" - -#ifndef DEFINE_LOG_TAG -#define DEFINE_LOG_TAG(sTr) static const char TAG[] = #sTr -#endif -#endif /*__OS_HEADER_H*/ diff --git a/host/api/include/esp_hosted_bt_config.h b/host/port/esp/freertos/include/port_esp_hosted_host_bt_config.h similarity index 86% rename from host/api/include/esp_hosted_bt_config.h rename to host/port/esp/freertos/include/port_esp_hosted_host_bt_config.h index 6e95d262..44ad41e0 100644 --- a/host/api/include/esp_hosted_bt_config.h +++ b/host/port/esp/freertos/include/port_esp_hosted_host_bt_config.h @@ -1,10 +1,12 @@ /* - * SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD * SPDX-License-Identifier: Apache-2.0 */ -#ifndef __ESP_HOSTED_BT_CONFIG_H__ -#define __ESP_HOSTED_BT_CONFIG_H__ +#ifndef __PORT_ESP_HOSTED_HOST_BT_CONFIG_H__ +#define __PORT_ESP_HOSTED_HOST_BT_CONFIG_H__ + +#include "esp_idf_version.h" // check: if co-processor SOC is ESP32, only BT BLE 4.2 is supported #if CONFIG_SLAVE_IDF_TARGET_ESP32 diff --git a/host/api/include/esp_hosted_config.h b/host/port/esp/freertos/include/port_esp_hosted_host_config.h similarity index 94% rename from host/api/include/esp_hosted_config.h rename to host/port/esp/freertos/include/port_esp_hosted_host_config.h index 684b1d97..d6511e4e 100644 --- a/host/api/include/esp_hosted_config.h +++ b/host/port/esp/freertos/include/port_esp_hosted_host_config.h @@ -4,8 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -#ifndef __ESP_HOSTED_CONFIG_H__ -#define __ESP_HOSTED_CONFIG_H__ +#ifndef __PORT_ESP_HOSTED_HOST_CONFIG_H__ +#define __PORT_ESP_HOSTED_HOST_CONFIG_H__ #include "sdkconfig.h" #include "esp_task.h" @@ -163,6 +163,13 @@ enum { #define H_SDIO_BUS_WIDTH CONFIG_ESP_HOSTED_SDIO_BUS_WIDTH #define H_SDMMC_HOST_SLOT CONFIG_ESP_HOSTED_SDIO_SLOT + #define H_SDIO_PORT_CLK NULL + #define H_SDIO_PORT_CMD NULL + #define H_SDIO_PORT_D0 NULL + #define H_SDIO_PORT_D1 NULL + #define H_SDIO_PORT_D2 NULL + #define H_SDIO_PORT_D3 NULL + #ifdef H_SDIO_SOC_USE_GPIO_MATRIX #define H_SDIO_PIN_CLK CONFIG_ESP_HOSTED_SDIO_PIN_CLK #define H_SDIO_PIN_CMD CONFIG_ESP_HOSTED_SDIO_PIN_CMD @@ -276,6 +283,13 @@ enum { #define H_SPI_HD_HOST_NUM_DATA_LINES CONFIG_ESP_HOSTED_SPI_HD_INTERFACE_NUM_DATA_LINES + #define H_SPI_HD_PORT_D0 NULL + #define H_SPI_HD_PORT_D1 NULL + #define H_SPI_HD_PORT_D2 NULL + #define H_SPI_HD_PORT_D3 NULL + #define H_SPI_HD_PORT_CS NULL + #define H_SPI_HD_PORT_CLK NULL + #define H_SPI_HD_PIN_D0 CONFIG_ESP_HOSTED_SPI_HD_GPIO_D0 #define H_SPI_HD_PIN_D1 CONFIG_ESP_HOSTED_SPI_HD_GPIO_D1 #if (CONFIG_ESP_HOSTED_SPI_HD_INTERFACE_NUM_DATA_LINES == 4) @@ -288,7 +302,7 @@ enum { #define H_SPI_HD_PIN_CS CONFIG_ESP_HOSTED_SPI_HD_GPIO_CS #define H_SPI_HD_PIN_CLK CONFIG_ESP_HOSTED_SPI_HD_GPIO_CLK - #define H_SPI_HD_GPIO_DATA_READY_Port NULL + #define H_SPI_HD_PORT_DATA_READY NULL #define H_SPI_HD_PIN_DATA_READY CONFIG_ESP_HOSTED_SPI_HD_GPIO_DATA_READY #define H_SPI_HD_CLK_MHZ CONFIG_ESP_HOSTED_SPI_HD_CLK_FREQ @@ -323,8 +337,10 @@ enum { #define H_UART_CHECKSUM CONFIG_ESP_HOSTED_UART_CHECKSUM #define H_UART_BAUD_RATE CONFIG_ESP_HOSTED_UART_BAUDRATE - #define H_UART_TX_PIN CONFIG_ESP_HOSTED_UART_PIN_TX - #define H_UART_RX_PIN CONFIG_ESP_HOSTED_UART_PIN_RX + #define H_UART_PIN_TX CONFIG_ESP_HOSTED_UART_PIN_TX + #define H_UART_PORT_TX NULL + #define H_UART_PIN_RX CONFIG_ESP_HOSTED_UART_PIN_RX + #define H_UART_PORT_RX NULL #define H_UART_TX_QUEUE_SIZE CONFIG_ESP_HOSTED_UART_TX_Q_SIZE #define H_UART_RX_QUEUE_SIZE CONFIG_ESP_HOSTED_UART_RX_Q_SIZE @@ -334,8 +350,8 @@ enum { #endif /* Generic reset pin config */ -#define H_GPIO_PIN_RESET_Port NULL -#define H_GPIO_PIN_RESET_Pin CONFIG_ESP_HOSTED_GPIO_SLAVE_RESET_SLAVE +#define H_GPIO_PIN_RESET CONFIG_ESP_HOSTED_GPIO_SLAVE_RESET_SLAVE +#define H_GPIO_PORT_RESET NULL /* If Reset pin is Enable, it is Active High. * If it is RST, active low */ diff --git a/host/port/esp/freertos/include/port_esp_hosted_host_log.h b/host/port/esp/freertos/include/port_esp_hosted_host_log.h new file mode 100644 index 00000000..663e8d26 --- /dev/null +++ b/host/port/esp/freertos/include/port_esp_hosted_host_log.h @@ -0,0 +1,16 @@ +/* + * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef __PORT_ESP_HOSTED_HOST_LOG_H +#define __PORT_ESP_HOSTED_HOST_LOG_H + +#include "esp_log.h" + +#ifndef DEFINE_LOG_TAG +#define DEFINE_LOG_TAG(sTr) static const char TAG[] = #sTr +#endif + +#endif diff --git a/host/port/esp/freertos/include/os_wrapper.h b/host/port/esp/freertos/include/port_esp_hosted_host_os.h similarity index 90% rename from host/port/esp/freertos/include/os_wrapper.h rename to host/port/esp/freertos/include/port_esp_hosted_host_os.h index 4858cf75..99793a72 100644 --- a/host/port/esp/freertos/include/os_wrapper.h +++ b/host/port/esp/freertos/include/port_esp_hosted_host_os.h @@ -1,20 +1,27 @@ -// Copyright 2015-2021 Espressif Systems (Shanghai) PTE LTD -/* SPDX-License-Identifier: GPL-2.0 OR Apache-2.0 */ +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ -#ifndef __OS_WRAPPER_H -#define __OS_WRAPPER_H +#ifndef __PORT_ESP_HOSTED_HOST_OS_H +#define __PORT_ESP_HOSTED_HOST_OS_H + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "freertos/semphr.h" +#include "freertos/queue.h" +#include "freertos/event_groups.h" -#include "os_header.h" #include "esp_task.h" #include #include #include #include "mempool.h" -//#include "esp_hosted_config.h" -#include "esp_hosted_config.h" -#include "hosted_os_abstraction.h" +#include "port_esp_hosted_host_config.h" +#include "esp_hosted_os_abstraction.h" #include "esp_timer.h" #include "esp_event.h" #include "esp_heap_caps.h" @@ -22,11 +29,9 @@ #include "esp_wifi_types.h" #include "esp_wifi_default.h" - ESP_EVENT_DECLARE_BASE(WIFI_EVENT); #define MCU_SYS 1 -#include "common.h" #include "esp_dma_utils.h" #define MAX_PAYLOAD_SIZE (MAX_TRANSPORT_BUFFER_SIZE-H_ESP_PAYLOAD_HEADER_OFFSET) @@ -87,14 +92,9 @@ enum { #define RET_FAIL4 -4 #define RET_FAIL_TIMEOUT -5 -/* without alignment */ -#define MALLOC(x) malloc(x) - -/* This is [malloc + aligned DMA] */ -#define MEM_ALLOC(x) heap_caps_aligned_alloc(64, (x), MALLOC_CAP_INTERNAL | MALLOC_CAP_DMA | MALLOC_CAP_8BIT) - -#define FREE(x) free(x); - +#define HOSTED_MEM_ALIGNMENT_4 4 +#define HOSTED_MEM_ALIGNMENT_32 32 +#define HOSTED_MEM_ALIGNMENT_64 64 /** Enumeration **/ enum hardware_type_e { @@ -162,4 +162,4 @@ struct serial_drv_handle_t; struct timer_handle_t; extern struct mempool * nw_mp_g; -#endif /*__OS_WRAPPER_H*/ +#endif diff --git a/host/port/esp/freertos/include/sdio_wrapper.h b/host/port/esp/freertos/include/port_esp_hosted_host_sdio.h similarity index 96% rename from host/port/esp/freertos/include/sdio_wrapper.h rename to host/port/esp/freertos/include/port_esp_hosted_host_sdio.h index c134d283..730a2029 100644 --- a/host/port/esp/freertos/include/sdio_wrapper.h +++ b/host/port/esp/freertos/include/port_esp_hosted_host_sdio.h @@ -15,8 +15,8 @@ /* Wrapper interfaces for SDMMC to communicated with slave using SDIO */ -#ifndef __SDIO_WRAPPER_H_ -#define __SDIO_WRAPPER_H_ +#ifndef __PORT_ESP_HOSTED_HOST_SDIO_H_ +#define __PORT_ESP_HOSTED_HOST_SDIO_H_ #include "esp_check.h" #include "sdmmc_cmd.h" diff --git a/host/port/esp/freertos/include/spi_wrapper.h b/host/port/esp/freertos/include/port_esp_hosted_host_spi.h similarity index 93% rename from host/port/esp/freertos/include/spi_wrapper.h rename to host/port/esp/freertos/include/port_esp_hosted_host_spi.h index 1a5ec3c0..e7b2b094 100644 --- a/host/port/esp/freertos/include/spi_wrapper.h +++ b/host/port/esp/freertos/include/port_esp_hosted_host_spi.h @@ -15,8 +15,8 @@ /* Wrapper interfaces for SPI to communicated with slave using SDIO */ -#ifndef __SPI_WRAPPER_H_ -#define __SPI_WRAPPER_H_ +#ifndef __PORT_ESP_HOSTED_HOST_SPI_H_ +#define __PORT_ESP_HOSTED_HOST_SPI_H_ #define MAX_TRANSPORT_BUFFER_SIZE MAX_SPI_BUFFER_SIZE /* Hosted SPI init function diff --git a/host/port/esp/freertos/include/spi_hd_wrapper.h b/host/port/esp/freertos/include/port_esp_hosted_host_spi_hd.h similarity index 96% rename from host/port/esp/freertos/include/spi_hd_wrapper.h rename to host/port/esp/freertos/include/port_esp_hosted_host_spi_hd.h index b13edcf1..e1b25de7 100644 --- a/host/port/esp/freertos/include/spi_hd_wrapper.h +++ b/host/port/esp/freertos/include/port_esp_hosted_host_spi_hd.h @@ -15,8 +15,8 @@ /* Wrapper interfaces for SDMMC to communicated with slave using SDIO */ -#ifndef __SPI_HD_WRAPPER_H_ -#define __SPI_HD_WRAPPER_H_ +#ifndef __PORT_ESP_HOSTED_HOST_SPI_HD_H_ +#define __PORT_ESP_HOSTED_HOST_SPI_HD_H_ #include diff --git a/host/port/esp/freertos/include/uart_wrapper.h b/host/port/esp/freertos/include/port_esp_hosted_host_uart.h similarity index 90% rename from host/port/esp/freertos/include/uart_wrapper.h rename to host/port/esp/freertos/include/port_esp_hosted_host_uart.h index 75d404ba..1d7abc11 100644 --- a/host/port/esp/freertos/include/uart_wrapper.h +++ b/host/port/esp/freertos/include/port_esp_hosted_host_uart.h @@ -15,8 +15,10 @@ /* Wrapper interfaces for UART to communicated with slave using UART */ -#ifndef __UART_WRAPPER_H_ -#define __UART_WRAPPER_H_ +#ifndef __PORT_ESP_HOSTED_HOST_UART_H_ +#define __PORT_ESP_HOSTED_HOST_UART_H_ + +#define MAX_TRANSPORT_BUFFER_SIZE MAX_UART_BUFFER_SIZE /* Hosted init function to init the UART interface * returns a pointer to the UART context */ diff --git a/host/port/esp/freertos/include/esp_hosted_wifi_config.h b/host/port/esp/freertos/include/port_esp_hosted_host_wifi_config.h similarity index 95% rename from host/port/esp/freertos/include/esp_hosted_wifi_config.h rename to host/port/esp/freertos/include/port_esp_hosted_host_wifi_config.h index ebcaec55..69b81f1f 100644 --- a/host/port/esp/freertos/include/esp_hosted_wifi_config.h +++ b/host/port/esp/freertos/include/port_esp_hosted_host_wifi_config.h @@ -3,11 +3,10 @@ * SPDX-License-Identifier: Apache-2.0 */ -#ifndef __ESP_HOSTED_WIFI_CONFIG_H__ -#define __ESP_HOSTED_WIFI_CONFIG_H__ +#ifndef __PORT_ESP_HOSTED_HOST_WIFI_CONFIG_H__ +#define __PORT_ESP_HOSTED_HOST_WIFI_CONFIG_H__ #include "esp_idf_version.h" -#include "esp_hosted_config.h" #if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 3, 1) #error ESP-IDF version used is not supported diff --git a/host/port/esp/freertos/src/esp_hosted_config.c b/host/port/esp/freertos/src/esp_hosted_config.c deleted file mode 100644 index 9638848c..00000000 --- a/host/port/esp/freertos/src/esp_hosted_config.c +++ /dev/null @@ -1,16 +0,0 @@ -/* -* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD -* -* SPDX-License-Identifier: Apache-2.0 -*/ - -#include "esp_hosted_config.h" -#include "esp_hosted_transport_config.h" - -esp_err_t esp_hosted_set_default_config(void) { - return esp_hosted_transport_set_default_config(); -} - -bool esp_hosted_is_config_valid(void) { - return esp_hosted_transport_is_config_valid(); -} diff --git a/host/esp_hosted_host_init.c b/host/port/esp/freertos/src/port_esp_hosted_host_init.c similarity index 75% rename from host/esp_hosted_host_init.c rename to host/port/esp/freertos/src/port_esp_hosted_host_init.c index aa508f25..c0d39213 100644 --- a/host/esp_hosted_host_init.c +++ b/host/port/esp/freertos/src/port_esp_hosted_host_init.c @@ -1,13 +1,14 @@ /* -* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD -* -* SPDX-License-Identifier: Apache-2.0 -*/ + * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ -#include "os_header.h" -#include "os_wrapper.h" #include "esp_log.h" #include "esp_hosted.h" + +#include "port_esp_hosted_host_log.h" + #include "esp_private/startup_internal.h" DEFINE_LOG_TAG(host_init); diff --git a/host/port/esp/freertos/src/os_wrapper.c b/host/port/esp/freertos/src/port_esp_hosted_host_os.c similarity index 95% rename from host/port/esp/freertos/src/os_wrapper.c rename to host/port/esp/freertos/src/port_esp_hosted_host_os.c index c1ca5a49..a53471b9 100644 --- a/host/port/esp/freertos/src/os_wrapper.c +++ b/host/port/esp/freertos/src/port_esp_hosted_host_os.c @@ -1,21 +1,12 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2015-2021 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #include "string.h" #include "esp_log.h" -#include "os_wrapper.h" +#include "port_esp_hosted_host_os.h" #include "esp_log.h" #include #include "driver/gpio.h" @@ -23,34 +14,34 @@ #include "esp_heap_caps.h" #include "freertos/portmacro.h" #include "esp_macros.h" -#include "esp_hosted_config.h" #include "esp_wifi.h" -#include "esp_sleep.h" +#include "port_esp_hosted_host_config.h" +#include "port_esp_hosted_host_wifi_config.h" +#include "port_esp_hosted_host_log.h" #include "esp_hosted_power_save.h" -#include "esp_system.h" -#include "hal/gpio_types.h" -#include "driver/gpio.h" -#include "esp_hosted_wifi_config.h" +#if H_HOST_PS_ALLOWED +#include "esp_sleep.h" +#endif /* Wi-Fi headers are reused at ESP-Hosted */ #include "esp_wifi_crypto_types.h" #include "esp_private/wifi_os_adapter.h" #if H_TRANSPORT_IN_USE == H_TRANSPORT_SDIO -#include "sdio_wrapper.h" +#include "port_esp_hosted_host_sdio.h" #endif #if H_TRANSPORT_IN_USE == H_TRANSPORT_SPI -#include "spi_wrapper.h" +#include "port_esp_hosted_host_spi.h" #endif #if H_TRANSPORT_IN_USE == H_TRANSPORT_SPI_HD -#include "spi_hd_wrapper.h" +#include "port_esp_hosted_host_spi_hd.h" #endif #if H_TRANSPORT_IN_USE == H_TRANSPORT_UART -#include "uart_wrapper.h" +#include "port_esp_hosted_host_uart.h" #endif DEFINE_LOG_TAG(os_wrapper_esp); @@ -92,7 +83,8 @@ void * hosted_memset(void* buf, int val, size_t len) void* hosted_malloc(size_t size) { - return MALLOC(size); + /* without alignment */ + return malloc(size); } void* hosted_calloc(size_t blk_no, size_t size) @@ -109,7 +101,7 @@ void* hosted_calloc(size_t blk_no, size_t size) void hosted_free(void* ptr) { if(ptr) { - FREE(ptr); + free(ptr); ptr=NULL; } } @@ -141,7 +133,7 @@ void *hosted_malloc_align(size_t size, size_t align) void hosted_free_align(void* ptr) { - FREE(ptr); + free(ptr); } void hosted_init_hook(void) diff --git a/host/port/esp/freertos/src/esp_hosted_ota.c b/host/port/esp/freertos/src/port_esp_hosted_host_ota.c similarity index 97% rename from host/port/esp/freertos/src/esp_hosted_ota.c rename to host/port/esp/freertos/src/port_esp_hosted_host_ota.c index 332862f2..7bc03d12 100644 --- a/host/port/esp/freertos/src/esp_hosted_ota.c +++ b/host/port/esp/freertos/src/port_esp_hosted_host_ota.c @@ -1,8 +1,8 @@ /* -* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD -* -* SPDX-License-Identifier: Apache-2.0 -*/ + * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ /* Current OTA method(s) supported: * - OTA from a HTTP URL @@ -18,6 +18,7 @@ #include "esp_log.h" #include "rpc_wrap.h" +#include "port_esp_hosted_host_os.h" #include "esp_hosted_ota.h" #define CHUNK_SIZE 1400 diff --git a/host/port/esp/freertos/src/sdio_wrapper.c b/host/port/esp/freertos/src/port_esp_hosted_host_sdio.c similarity index 98% rename from host/port/esp/freertos/src/sdio_wrapper.c rename to host/port/esp/freertos/src/port_esp_hosted_host_sdio.c index d589e6a8..781ddde9 100644 --- a/host/port/esp/freertos/src/sdio_wrapper.c +++ b/host/port/esp/freertos/src/port_esp_hosted_host_sdio.c @@ -16,11 +16,12 @@ #include "driver/sdmmc_defs.h" #include "driver/sdmmc_host.h" -#include "os_wrapper.h" +#include "port_esp_hosted_host_os.h" #include "sdio_reg.h" -#include "sdio_wrapper.h" -#include "esp_hosted_config.h" +#include "port_esp_hosted_host_sdio.h" #include "esp_hosted_transport_config.h" +#include "port_esp_hosted_host_config.h" +#include "port_esp_hosted_host_log.h" #if H_SDIO_PWR_CTRL_LDO #include "sd_pwr_ctrl_by_on_chip_ldo.h" @@ -405,16 +406,16 @@ int hosted_sdio_card_init(void *ctx) sdio_config->pin_clk.pin, sdio_config->pin_cmd.pin, sdio_config->pin_d0.pin, sdio_config->pin_d1.pin, sdio_config->pin_d2.pin, sdio_config->pin_d3.pin, - H_GPIO_PIN_RESET_Pin); + sdio_config->pin_reset.pin); } else { ESP_LOGI(TAG, "GPIOs: CLK[%u] CMD[%u] D0[%u] D1[%u] Slave_Reset[%u]", sdio_config->pin_clk.pin, sdio_config->pin_cmd.pin, sdio_config->pin_d0.pin, sdio_config->pin_d1.pin, - H_GPIO_PIN_RESET_Pin); + sdio_config->pin_reset.pin); } ESP_LOGI(TAG, "Queues: Tx[%u] Rx[%u] SDIO-Rx-Mode[%u]", - H_SDIO_TX_Q, H_SDIO_RX_Q, - H_SDIO_HOST_RX_MODE); + sdio_config->tx_queue_size, sdio_config->rx_queue_size, + sdio_config->rx_mode); #ifdef CONFIG_IDF_TARGET_ESP32P4 // Set this flag to allocate aligned buffer of 512 bytes to meet diff --git a/host/port/esp/freertos/src/spi_wrapper.c b/host/port/esp/freertos/src/port_esp_hosted_host_spi.c similarity index 84% rename from host/port/esp/freertos/src/spi_wrapper.c rename to host/port/esp/freertos/src/port_esp_hosted_host_spi.c index 275bf4b9..470c66c7 100644 --- a/host/port/esp/freertos/src/spi_wrapper.c +++ b/host/port/esp/freertos/src/port_esp_hosted_host_spi.c @@ -1,27 +1,19 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2015-2021 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #include "esp_check.h" #include "esp_log.h" #include "driver/spi_master.h" -#include "os_wrapper.h" #include "transport_drv.h" -#include "spi_wrapper.h" +#include "port_esp_hosted_host_spi.h" +#include "port_esp_hosted_host_os.h" #include "driver/gpio.h" +#include "port_esp_hosted_host_log.h" #ifdef CONFIG_IDF_TARGET_ESP32P4 /* Enable workaround if got SPI Read Errors on ESP32-P4 due to caching */ @@ -52,7 +44,7 @@ void * hosted_spi_init(void) H_SPI_MODE, H_SPI_FD_CLK_MHZ, H_SPI_TX_Q, H_SPI_RX_Q, H_GPIO_SCLK_Pin, H_GPIO_MOSI_Pin, H_GPIO_MISO_Pin, H_GPIO_CS_Pin, H_GPIO_HANDSHAKE_Pin, H_GPIO_DATA_READY_Pin, - H_GPIO_PIN_RESET_Pin); + H_GPIO_PIN_RESET); HOSTED_CREATE_HANDLE(spi_device_handle_t, spi_handle); assert(spi_handle); diff --git a/host/port/esp/freertos/src/spi_hd_wrapper.c b/host/port/esp/freertos/src/port_esp_hosted_host_spi_hd.c similarity index 94% rename from host/port/esp/freertos/src/spi_hd_wrapper.c rename to host/port/esp/freertos/src/port_esp_hosted_host_spi_hd.c index 99699b29..48ddf605 100644 --- a/host/port/esp/freertos/src/spi_hd_wrapper.c +++ b/host/port/esp/freertos/src/port_esp_hosted_host_spi_hd.c @@ -1,17 +1,8 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2024 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #include @@ -20,10 +11,10 @@ #include "driver/spi_master.h" #include "hal/spi_ll.h" -#include "common.h" -#include "esp_hosted_config.h" -#include "os_wrapper.h" -#include "spi_hd_wrapper.h" +#include "port_esp_hosted_host_config.h" +#include "port_esp_hosted_host_spi_hd.h" +#include "port_esp_hosted_host_os.h" +#include "transport_drv.h" #if SOC_CACHE_INTERNAL_MEM_VIA_L1CACHE /* Use DMA Aligned Buffers for reg reads, buf read / writes */ @@ -328,6 +319,14 @@ void * hosted_spi_hd_init(void) .data2_io_num = -1, .data3_io_num = -1, #endif + /** set other data pins to -1 to prevent warnings about gpio + * conflict in ESP-IDF spi_common.c + */ + .data4_io_num = -1, + .data5_io_num = -1, + .data6_io_num = -1, + .data7_io_num = -1, + .sclk_io_num = H_SPI_HD_PIN_CLK, .max_transfer_sz = MAX_SPI_HD_BUFFER_SIZE, #if (H_SPI_HD_HOST_NUM_DATA_LINES == 4) diff --git a/host/port/esp/freertos/src/uart_wrapper.c b/host/port/esp/freertos/src/port_esp_hosted_host_uart.c similarity index 80% rename from host/port/esp/freertos/src/uart_wrapper.c rename to host/port/esp/freertos/src/port_esp_hosted_host_uart.c index 24699e18..89ae143e 100644 --- a/host/port/esp/freertos/src/uart_wrapper.c +++ b/host/port/esp/freertos/src/port_esp_hosted_host_uart.c @@ -1,26 +1,17 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2015-2024 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "driver/uart.h" -#include "esp_hosted_config.h" -#include "os_wrapper.h" -#include "uart_wrapper.h" +#include "transport_drv.h" +#include "port_esp_hosted_host_os.h" +#include "port_esp_hosted_host_uart.h" #include "esp_log.h" static const char TAG[] = "uart_wrapper"; @@ -153,11 +144,11 @@ void * hosted_uart_init(void) ESP_ERROR_CHECK(uart_driver_install(H_UART_PORT, MAX_UART_BUFFER_SIZE, MAX_UART_BUFFER_SIZE, 0, NULL, 0)); ESP_ERROR_CHECK(uart_param_config(H_UART_PORT, &uart_config)); - ESP_ERROR_CHECK(uart_set_pin(H_UART_PORT, H_UART_TX_PIN, H_UART_RX_PIN, + ESP_ERROR_CHECK(uart_set_pin(H_UART_PORT, H_UART_PIN_TX, H_UART_PIN_RX, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE)); ESP_LOGI(TAG, "UART GPIOs: Tx: %"PRIu16 ", Rx: %"PRIu16 ", Baud Rate %i", - H_UART_TX_PIN, H_UART_RX_PIN, H_UART_BAUD_RATE); + H_UART_PIN_TX, H_UART_PIN_RX, H_UART_BAUD_RATE); ctx->uart_port = H_UART_PORT; @@ -181,7 +172,7 @@ esp_err_t hosted_uart_deinit(void *ctx) ESP_LOGE(TAG, "%s: Failed to flush uart Tx", __func__); uart_driver_delete(pctx->uart_port); - HOSTED_FREE(ctx); + g_h.funcs->_h_free(ctx); return ESP_OK; } diff --git a/host/utils/common.c b/host/utils/common.c deleted file mode 100644 index a52306d1..00000000 --- a/host/utils/common.c +++ /dev/null @@ -1,130 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2015-2021 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -/** Includes **/ -#include "common.h" -#include "esp_log.h" -#include -#include - -#if 0 -DEFINE_LOG_TAG(utils); -#endif -/** Constants/Macros **/ - -/** Exported variables **/ - - -/** Function declaration **/ - -/** Exported Functions **/ -/** - * @brief debug buffer print - * @param buff - input buffer to print in hex - * rx_len - buff len - * human_str - helping string to describe about buffer - * @retval None - */ -#if DEBUG_HEX_STREAM_PRINT -char print_buff[MAX_SPI_BUFFER_SIZE*3]; -#endif - -uint16_t hton_short (uint16_t x) -{ -#if BYTE_ORDER == BIG_ENDIAN - return x; -#elif BYTE_ORDER == LITTLE_ENDIAN - uint16_t val = 0; - - val = (x &0x00FF)<<8; - val |= (x &0xFF00)>>8; - - return val; -#else -# error "not able to identify endianness" -#endif -} - -uint32_t hton_long (uint32_t x) -{ -#if BYTE_ORDER == BIG_ENDIAN - return x; -#elif BYTE_ORDER == LITTLE_ENDIAN - uint32_t val = (x&0xFF000000) >> 24; - - val |= (x&0x00FF0000) >> 8; - val |= (x&0x0000FF00) << 8; - val |= (x&0x000000FF) << 24; - - return val; -#else -# error "not able to identify endianness" -#endif -} - -/** - * @brief Calculate minimum - * @param x - number - * y - number - * @retval minimum - */ -int min(int x, int y) { - return (x < y) ? x : y; -} - -#if 0 -/** - * @brief get numbers from string - * @param val - return integer value, - * arg - input string - * @retval 0 on success, else -1 - */ -int get_num_from_string(int *val, char *arg) -{ - int base = 10; - char *endptr = NULL, *str = NULL; - - if (!arg || (arg[0]=='\0')) { - ESP_LOGE(TAG, "No number Identified \n"); - return -1; - } - - if (!val) { - ESP_LOGE(TAG, "No memory allocated \n"); - return -1; - } - - errno = 0; - str = arg; - *val = strtol(str, &endptr, base); - - if (endptr == str) { - ESP_LOGE(TAG, "No digits found \n"); - *val = 0; - return -1; - } - - if ((errno == ERANGE) && ((*val == INT32_MAX) || (*val == INT32_MIN))) { - perror("strtol"); - *val = 0; - return -1; - } - - return 0; -} -#endif - -/** Local functions **/ diff --git a/host/utils/common.h b/host/utils/common.h deleted file mode 100644 index 66775b9b..00000000 --- a/host/utils/common.h +++ /dev/null @@ -1,115 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2015-2021 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/** prevent recursive inclusion **/ -#ifndef __COMMON_H -#define __COMMON_H - -#ifdef __cplusplus -extern "C" { -#endif - -/** Includes **/ -#include "stdint.h" -#include "stdio.h" -#include "os_wrapper.h" -#include "esp_err.h" -#include "esp_hosted_transport.h" - - -/** Constants/Macros **/ -#define MAX_NETWORK_INTERFACES 2 -#define STA_INTERFACE "ESP_STATION" -#define SOFTAP_INTERFACE "ESP_SOFTAP" - -#define UNUSED_VAR(x) (void)(x); - -#define MAX_SPI_BUFFER_SIZE ESP_TRANSPORT_SPI_MAX_BUF_SIZE -#define MAX_SDIO_BUFFER_SIZE ESP_TRANSPORT_SDIO_MAX_BUF_SIZE -#define MAX_SPI_HD_BUFFER_SIZE ESP_TRANSPORT_SPI_HD_MAX_BUF_SIZE -#define MAX_UART_BUFFER_SIZE ESP_TRANSPORT_UART_MAX_BUF_SIZE - -#define MAX_SUPPORTED_SDIO_CLOCK_MHZ 40 - -#define IP_ADDR_LEN 4 -#define MAC_LEN 6 -#define MIN_MAC_STRING_LEN 17 - -#ifndef BIT -#define BIT(x) (1UL << (x)) -#endif - -#define FREQ_IN_MHZ(x) ((x)*1000000) - -#define MHZ_TO_HZ(x) (1000000*(x)) - -#define SUCCESS 0 -#define FAILURE -1 - - -typedef enum { - TRANSPORT_INACTIVE, - TRANSPORT_RX_ACTIVE, - TRANSPORT_TX_ACTIVE, -} transport_drv_events_e; - -/** Exported Structures **/ -/* interface header */ -typedef struct { - union { - void *priv_buffer_handle; - }; - uint8_t if_type; - uint8_t if_num; - uint8_t *payload; - uint8_t flag; - uint16_t payload_len; - uint16_t seq_num; - /* no need of memcpy at different layers */ - uint8_t payload_zcopy; - - void (*free_buf_handle)(void *buf_handle); -} interface_buffer_handle_t; - -/** Exported variables **/ - -/** Exported Functions **/ -uint16_t hton_short (uint16_t x); -uint32_t hton_long (uint32_t x); - -#define ntoh_long hton_long -#define ntoh_short hton_short - -typedef unsigned char u_char; -typedef unsigned long u_long; - -int min(int x, int y); -#if 0 -void hard_delay(int x); -int get_num_from_string(int *val, char *arg); -#endif - -#define H_FREE_PTR_WITH_FUNC(FreeFunc, FreePtr) do { \ - if (FreeFunc && FreePtr) { \ - FreeFunc(FreePtr); \ - FreePtr = NULL; \ - } \ -} while (0); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/host/utils/stats.c b/host/utils/stats.c index 6978243e..ec8d0767 100644 --- a/host/utils/stats.c +++ b/host/utils/stats.c @@ -1,28 +1,15 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2015-2021 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ /** Includes **/ #include "stats.h" -#include "esp_hosted_header.h" -#include "esp_hosted_config.h" #if TEST_RAW_TP #include "transport_drv.h" #endif -#include "os_wrapper.h" #include "esp_log.h" #include "esp_hosted_transport_init.h" diff --git a/host/utils/stats.h b/host/utils/stats.h index 1540aa1b..0e02b116 100644 --- a/host/utils/stats.h +++ b/host/utils/stats.h @@ -1,18 +1,8 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2015-2021 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #ifndef __STATS__H #define __STATS__H @@ -21,10 +11,6 @@ extern "C" { #endif -#include "common.h" -#include "esp_hosted_config.h" -#include "esp_hosted_header.h" - /* Stats CONFIG: * * 1. TEST_RAW_TP @@ -48,17 +34,7 @@ extern "C" { */ #if TEST_RAW_TP -#include "os_wrapper.h" -/* Raw throughput is supported only one direction - * at a time - * i.e. ESP to Host OR - * Host to ESP - */ -#if 0 -#define TEST_RAW_TP__ESP_TO_HOST 1 -#define TEST_RAW_TP__HOST_TO_ESP !TEST_RAW_TP__ESP_TO_HOST -#endif #define TEST_RAW_TP__TIMEOUT H_RAW_TP_REPORT_INTERVAL void update_test_raw_tp_rx_len(uint16_t len); diff --git a/host/utils/util.c b/host/utils/util.c deleted file mode 100644 index 16f17672..00000000 --- a/host/utils/util.c +++ /dev/null @@ -1,255 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2015-2021 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -/** Includes **/ -#include "util.h" -#include "ctype.h" -#include "string.h" - -/** Constants/Macros **/ - -/** Exported variables **/ - -/** Function declaration **/ - -/** Exported Functions **/ -/* - * Check whether "cp" is a valid ascii representation - * of an Internet address and convert to a binary address. - * Returns 1 if the address is valid, 0 if not. - * This replaces inet_addr, the return value from which - * cannot distinguish between failure and a local broadcast address. - */ -int ipv4_addr_aton(const char *cp, uint32_t *ip_uint32) -{ - u_long val, base, n; - char c; - u_long parts[4], *pp = parts; - - for (;;) { - /* - * Collect number up to ``.''. - * Values are specified as for C: - * 0x=hex, 0=octal, other=decimal. - */ - val = 0; base = 10; - if (*cp == '0') { - if (*++cp == 'x' || *cp == 'X') - base = 16, cp++; - else - base = 8; - } - while ((c = *cp) != '\0') { - if (isascii(c) && isdigit(c)) { - val = (val * base) + (c - '0'); - cp++; - continue; - } - if (base == 16 && isascii(c) && isxdigit(c)) { - val = (val << 4) + - (c + 10 - (islower(c) ? 'a' : 'A')); - cp++; - continue; - } - break; - } - if (*cp == '.') { - /* - * Internet format: - * a.b.c.d - * a.b.c (with c treated as 16-bits) - * a.b (with b treated as 24 bits) - */ - if (pp >= parts + 3 || val > 0xff) - return (0); - *pp++ = val, cp++; - } else - break; - } - /* - * Check for trailing characters. - */ - if (*cp && (!isascii((uint8_t)*cp) || !isspace((uint8_t)*cp))) - return (0); - /* - * Concoct the address according to - * the number of parts specified. - */ - n = pp - parts + 1; - switch (n) { - - case 1: /* a -- 32 bits */ - break; - - case 2: /* a.b -- 8.24 bits */ - if (val > 0xffffff) - return (0); - val |= parts[0] << 24; - break; - - case 3: /* a.b.c -- 8.8.16 bits */ - if (val > 0xffff) - return (0); - val |= (parts[0] << 24) | (parts[1] << 16); - break; - - case 4: /* a.b.c.d -- 8.8.8.8 bits */ - if (val > 0xff) - return (0); - val |= (parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8); - break; - } - if(ip_uint32) { - *ip_uint32 = hton_long(val); - } - return (1); -} - -/** - * @brief convert ip in int to string - * - * @param addr ip address in network order to convert - * @param buf target buffer where the string is stored - * @param buflen length of buf - * @return either pointer to buf which now holds the ASCII - * representation of addr or NULL if buf was too small - */ - -char * ipv4_addr_ntoa(uint32_t addr, char *buf, int buflen) -{ - char inv[3]; - char *rp; - uint8_t *ap; - uint8_t rem; - uint8_t n; - uint8_t i; - int len = 0; - uint32_t addr_nw = ntoh_long(addr); - - rp = buf; - ap = (uint8_t *)&addr_nw; - for (n = 0; n < 4; n++) { - i = 0; - do { - rem = *ap % (uint8_t)10; - *ap /= (uint8_t)10; - inv[i++] = (char)('0' + rem); - } while (*ap); - while (i--) { - if (len++ >= buflen) { - return NULL; - } - *rp++ = inv[i]; - } - if (len++ >= buflen) { - return NULL; - } - *rp++ = '.'; - ap++; - } - *--rp = 0; - return buf; -} - -/** - * @brief Convert mac string to byte stream - * @param out - output mac in bytes - * s - input mac string - * @retval 0 on success, else -1 - */ -int convert_mac_to_bytes(uint8_t *out, const char *s) -{ - int mac[MAC_LEN] = {0}; - int num_bytes = 0; - - if (!s || (strlen(s) < MIN_MAC_STRING_LEN)) { - return -1; - } - - num_bytes = sscanf(s, "%2x:%2x:%2x:%2x:%2x:%2x", - &mac[0],&mac[1], &mac[2], &mac[3], &mac[4], &mac[5]); - - if ((num_bytes < MAC_LEN) || - (mac[0] > 0xFF) || - (mac[1] > 0xFF) || - (mac[2] > 0xFF) || - (mac[3] > 0xFF) || - (mac[4] > 0xFF) || - (mac[5] > 0xFF)) { - return -1; - } - - out[0] = mac[0]&0xff; - out[1] = mac[1]&0xff; - out[2] = mac[2]&0xff; - out[3] = mac[3]&0xff; - out[4] = mac[4]&0xff; - out[5] = mac[5]&0xff; - - return 0; -} - -/** - * @brief compare two buff in bytes - * @param buff1 - in bytes - * buff2 - in bytes - * @retval 1 if same, else 0 - */ -uint8_t is_same_buff(void *buff1, void *buff2, uint16_t len) -{ - uint16_t idx; - uint8_t *b1 = (uint8_t*)buff1; - uint8_t *b2 = (uint8_t*)buff2; - - if ((b1 == NULL) && (b2==NULL)) { - if(len) { - return 0; - } - return 1; - } - - if(!b1 || !b2) { - return 0; - } - - /* Function assumes buff1 and buff2 are allocated for len */ - for (idx=0; idx < len; idx++) { - if (*b1 != *b2) { - return 0; - } - b1++; - b2++; - } - return 1; -} - -/** - * @brief Get ip in 32bit from dotted string notation - * @param ip_s - input ip address in string - * ip_x - output ip address in 32 bit - * @retval 0 on success, else -1 - */ -int get_ipaddr_from_str(const char *ip_s, uint32_t *ip_x) -{ - uint32_t ip_nw = 0; - if (! ipv4_addr_aton(ip_s, &ip_nw)) - { - return -1; - } - /* ipv4_addr_aton does conversion in network order. reverse */ - *ip_x = ntoh_long(ip_nw); - return 0; -} diff --git a/host/utils/util.h b/host/utils/util.h deleted file mode 100644 index a31d0e31..00000000 --- a/host/utils/util.h +++ /dev/null @@ -1,46 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2015-2021 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/** prevent recursive inclusion **/ -#ifndef __UTIL_H -#define __UTIL_H - -#ifdef __cplusplus -extern "C" { -#endif - -/** Includes **/ -#include "common.h" - -/** Constants/Macros **/ - -/** Exported Structures **/ - -/** Exported variables **/ - -/** Exported Functions **/ - -int get_ipaddr_from_str(const char *ip_s, uint32_t *ip_x); -int ipv4_addr_aton(const char *cp, uint32_t *ip_uint32); -char * ipv4_addr_ntoa(const uint32_t addr, char *buf, int buflen); -int convert_mac_to_bytes(uint8_t *out, const char *s); -uint8_t is_same_buff(void *buff1, void *buff2, uint16_t len); -int get_self_ip(int iface_type, uint32_t *self_ip); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/idf_component.yml b/idf_component.yml index 9bb30e03..ca90dc0b 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.2.4" +version: "2.3.0" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index 48bd49eb..adc48637 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -6,6 +6,6 @@ #ifndef __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 -#define PROJECT_VERSION_MINOR_1 2 -#define PROJECT_VERSION_PATCH_1 4 +#define PROJECT_VERSION_MINOR_1 3 +#define PROJECT_VERSION_PATCH_1 0 #endif From 1d33425fecb0304d10facee9f6c990c30072af6c Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Fri, 22 Aug 2025 14:06:23 +0800 Subject: [PATCH 074/114] bugfix(refactoring): Fixed a build break caused by refactoring - removed port dependent header file from public header Closes: https://github.com/espressif/esp-hosted-mcu/issues/96 --- host/api/include/esp_hosted_transport_config.h | 1 - host/esp_hosted_host_fw_ver.h | 2 +- idf_component.yml | 2 +- slave/main/esp_hosted_coprocessor_fw_ver.h | 2 +- 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/host/api/include/esp_hosted_transport_config.h b/host/api/include/esp_hosted_transport_config.h index 3a623200..5e22a0f7 100644 --- a/host/api/include/esp_hosted_transport_config.h +++ b/host/api/include/esp_hosted_transport_config.h @@ -9,7 +9,6 @@ #include -#include "port_esp_hosted_host_config.h" #include "esp_err.h" typedef enum { diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index 48188fac..d26810dd 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 #define ESP_HOSTED_VERSION_MINOR_1 3 -#define ESP_HOSTED_VERSION_PATCH_1 0 +#define ESP_HOSTED_VERSION_PATCH_1 1 #endif diff --git a/idf_component.yml b/idf_component.yml index ca90dc0b..2cc30e43 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.3.0" +version: "2.3.1" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index adc48637..94bdf2db 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 #define PROJECT_VERSION_MINOR_1 3 -#define PROJECT_VERSION_PATCH_1 0 +#define PROJECT_VERSION_PATCH_1 1 #endif From 61ad639d536e1264f047a6e7fc29c72e3ca458a1 Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Sun, 24 Aug 2025 09:42:07 +0800 Subject: [PATCH 075/114] fix(transport_config): Add host example to showcase transport config before esp_hosted_init() --- CMakeLists.txt | 4 +- examples/host_transport_config/CMakeLists.txt | 8 + examples/host_transport_config/README.md | 103 ++++ .../host_transport_config/main/CMakeLists.txt | 3 + .../main/idf_component.yml | 9 + .../main/transport_config_main.c | 521 ++++++++++++++++++ .../host_transport_config/sdkconfig.defaults | 53 ++ .../api/include/esp_hosted_transport_config.h | 97 +--- host/esp_hosted_host_fw_ver.h | 2 +- .../port_esp_hosted_host_transport_defaults.c | 111 ++++ idf_component.yml | 2 +- slave/main/esp_hosted_coprocessor_fw_ver.h | 2 +- 12 files changed, 827 insertions(+), 88 deletions(-) create mode 100644 examples/host_transport_config/CMakeLists.txt create mode 100644 examples/host_transport_config/README.md create mode 100644 examples/host_transport_config/main/CMakeLists.txt create mode 100644 examples/host_transport_config/main/idf_component.yml create mode 100644 examples/host_transport_config/main/transport_config_main.c create mode 100644 examples/host_transport_config/sdkconfig.defaults create mode 100644 host/port/esp/freertos/src/port_esp_hosted_host_transport_defaults.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 6172822a..0800e4e9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -106,7 +106,9 @@ if(CONFIG_ESP_HOSTED_ENABLED) list(APPEND srcs "${host_dir}/port/esp/freertos/src/port_esp_hosted_host_init.c" "${host_dir}/port/esp/freertos/src/port_esp_hosted_host_os.c" - "${host_dir}/port/esp/freertos/src/port_esp_hosted_host_ota.c") + "${host_dir}/port/esp/freertos/src/port_esp_hosted_host_ota.c" + "${host_dir}/port/esp/freertos/src/port_esp_hosted_host_transport_defaults.c" + ) if(CONFIG_ESP_HOSTED_SDIO_HOST_INTERFACE) list(APPEND srcs "${host_dir}/port/esp/freertos/src/port_esp_hosted_host_sdio.c") diff --git a/examples/host_transport_config/CMakeLists.txt b/examples/host_transport_config/CMakeLists.txt new file mode 100644 index 00000000..061903fe --- /dev/null +++ b/examples/host_transport_config/CMakeLists.txt @@ -0,0 +1,8 @@ +# The following lines of boilerplate have to be in your project's CMakeLists +# in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.16) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +# "Trim" the build. Include the minimal set of components, main, and anything it depends on. +idf_build_set_property(MINIMAL_BUILD ON) +project(transport_config) \ No newline at end of file diff --git a/examples/host_transport_config/README.md b/examples/host_transport_config/README.md new file mode 100644 index 00000000..072dbf66 --- /dev/null +++ b/examples/host_transport_config/README.md @@ -0,0 +1,103 @@ +# ESP-Hosted Transport Configuration Example + +Demonstrates how to configure ESP-Hosted transport interfaces (SDIO, SPI, UART) before initialization. + +## Supported Transports + +| Transport | Speed | Pins | Use Case | +|-----------|-------|------|----------| +| **SDIO 1-bit** | High | 5 pins | Good performance, fewer pins | +| **SDIO 4-bit** | Highest | 7 pins | Best performance | +| **SPI Full-Duplex** | Medium | 6 pins | Standard interface | +| **SPI HD Dual** | Medium | 4 pins | Fewer pins needed | +| **SPI HD Quad** | Medium | 6 pins | Better throughput | +| **UART** | Low | 3 pins | Simple connection | + +## Pin Connections + +### SDIO 1-bit +| Host <-> Slave (5 pins) | CLK | CMD | DAT0 | DAT1 (interrupt) | RESET | +|---|---|---|---|---|---| + +### SDIO 4-bit (Default) +| Host <-> Slave (7 pins) | CLK | CMD | DAT0 | DAT1 | DAT2 | DAT3 | RESET | +|---|---|---|---|---|---|---|---| + +### SPI Full-Duplex +| Host <-> Slave (6 pins) | MOSI | MISO | SCLK | CS | HANDSHAKE | DATA_READY | +|---|---|---|---|---|---|---| + +### SPI Half-Duplex Dual +| Host <-> Slave (4 pins) | CLK | CS | D0 | D1 (+ DATA_READY) | +|---|---|---|---|---| + +### SPI Half-Duplex Quad +| Host <-> Slave (6 pins) | CLK | CS | D0 | D1 | D2 | D3 (+ DATA_READY) | +|---|---|---|---|---|---|---| + +### UART +| Host <-> Slave (3 pins) | TX | RX | RESET | +|---|---|---|---| + +## What This Example Shows + +- Get default transport configuration +- Customize parameters (clock, pins, buffers) +- Apply configuration before `esp_hosted_init()` + +## Key Code Pattern + +```c +// 1. Get default config +struct esp_hosted_sdio_config config = INIT_DEFAULT_HOST_SDIO_CONFIG(); + +// 2. Customize settings +config.clock_freq_khz = 25000; +config.bus_width = 4; + +// 3. Apply config +esp_hosted_sdio_set_config(&config); + +// 4. Initialize ESP-Hosted +esp_hosted_init(); +``` + +## Customization + +> [!TIP] +> +> This example was added to showcase (Option 2: Programmatic Configuration) discussed below. +> (Option 1: Using menuconfig) is anyway available for any host example. + +### Pin Configuration Options + +**Option 1: Using menuconfig** + +First select your transport: +```bash +idf.py menuconfig +# (Top) → Component config → ESP-Hosted config → Transport layer +``` + +Then configure pins: +- **SDIO**: `(Top) → Component config → ESP-Hosted config → Hosted SDIO Configuration` +- **SPI Full-Duplex**: `(Top) → Component config → ESP-Hosted config → SPI Configuration` +- **SPI Half-Duplex**: `(Top) → Component config → ESP-Hosted config → SPI Half-duplex Configuration` +- **UART**: `(Top) → Component config → ESP-Hosted config → UART Configuration` + +**Option 2: Programmatic Configuration** +Edit the configuration functions in `main.c` for users who prefer code-based configuration or have limitations with menuconfig: + +```c +// Example: Custom SPI pin assignment +spi_config.pin_mosi.pin = YOUR_MOSI_PIN; +spi_config.pin_miso.pin = YOUR_MISO_PIN; +spi_config.pin_sclk.pin = YOUR_SCLK_PIN; +spi_config.pin_cs.pin = YOUR_CS_PIN; +``` + +### Other Customizations +- **Clock speeds**: Adjust for stability vs performance +- **Buffer sizes**: Tune for your throughput needs +- **Data lines**: Configure GPIOs to match your connections +- **Transport config**: Any other transport specific config diff --git a/examples/host_transport_config/main/CMakeLists.txt b/examples/host_transport_config/main/CMakeLists.txt new file mode 100644 index 00000000..73c91203 --- /dev/null +++ b/examples/host_transport_config/main/CMakeLists.txt @@ -0,0 +1,3 @@ +idf_component_register(SRCS "transport_config_main.c" + PRIV_REQUIRES esp_wifi console nvs_flash + INCLUDE_DIRS ".") \ No newline at end of file diff --git a/examples/host_transport_config/main/idf_component.yml b/examples/host_transport_config/main/idf_component.yml new file mode 100644 index 00000000..2d033a1a --- /dev/null +++ b/examples/host_transport_config/main/idf_component.yml @@ -0,0 +1,9 @@ +dependencies: + espressif/esp_wifi_remote: + version: "*" + rules: + - if: "target in [esp32p4, esp32h2]" + espressif/esp_hosted: + version: "*" + rules: + - if: "target in [esp32p4, esp32h2]" diff --git a/examples/host_transport_config/main/transport_config_main.c b/examples/host_transport_config/main/transport_config_main.c new file mode 100644 index 00000000..d068ca4c --- /dev/null +++ b/examples/host_transport_config/main/transport_config_main.c @@ -0,0 +1,521 @@ +/** + * @file esp_hosted_transport_config_example.c + * @brief ESP-Hosted Transport Configuration Example + * + * This example demonstrates comprehensive transport configuration for ESP-Hosted, + * including SDIO, SPI Full-Duplex, SPI Half-Duplex, and UART interfaces. + * + * Features: + * - Default configuration initialization + * - Custom parameter configuration + * - Configuration validation + * - Error handling and recovery + * - Runtime configuration inspection + * + * @version 1.0.0 + * @date 2024-2025 + * + * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD + * SPDX-License-Identifier: Unlicense OR CC0-1.0 + */ + + #include + #include + #include + + #include "freertos/FreeRTOS.h" + #include "freertos/task.h" + #include "esp_log.h" + #include "esp_event.h" + #include "esp_err.h" + #include "nvs_flash.h" + #include "esp_console.h" +// #include "cmd_system.h" + + #include "esp_hosted.h" + #include "esp_hosted_transport_config.h" + + /*============================================================================== + * CONSTANTS AND DEFINITIONS + *============================================================================*/ + + static const char *TAG = "esp_hosted_transport_config"; + + /** @brief Default task delay for main loop (ms) */ + #define MAIN_LOOP_DELAY_MS 10000 + + /*============================================================================== + * TYPE DEFINITIONS + *============================================================================*/ + + /** + * @brief Transport configuration status enumeration + */ + typedef enum { + TRANSPORT_CONFIG_STATUS_UNINITIALIZED = 0, + TRANSPORT_CONFIG_STATUS_CONFIGURED, + TRANSPORT_CONFIG_STATUS_ACTIVE, + TRANSPORT_CONFIG_STATUS_ERROR + } transport_config_status_t; + + /** + * @brief Transport configuration context structure + */ + typedef struct { + transport_config_status_t status; + esp_hosted_transport_err_t last_error; + } transport_config_context_t; + + /*============================================================================== + * GLOBAL VARIABLES + *============================================================================*/ + + static transport_config_context_t g_transport_context = { + .status = TRANSPORT_CONFIG_STATUS_UNINITIALIZED, + .last_error = ESP_TRANSPORT_OK, + }; + + /*============================================================================== + * FORWARD DECLARATIONS + *============================================================================*/ + + static esp_err_t initialize_system_components(void); + static esp_err_t configure_transport_interface(void); + static esp_err_t validate_transport_configuration(void); + static void display_transport_configuration(void); + + /*============================================================================== + * SDIO TRANSPORT CONFIGURATION + *============================================================================*/ + + #ifdef CONFIG_ESP_HOSTED_SDIO_HOST_INTERFACE + /** + * @brief Configure SDIO transport with optimized settings + * + * @return ESP_OK on success, ESP_FAIL on error + */ + static esp_err_t configure_sdio_transport(void) + { + ESP_LOGI(TAG, "Configuring SDIO transport interface"); + + // Initialize default SDIO configuration + struct esp_hosted_sdio_config sdio_config = INIT_DEFAULT_HOST_SDIO_CONFIG(); + + // Apply optimized settings + sdio_config.clock_freq_khz = 25000; // 25MHz for stable operation + sdio_config.bus_width = 4; // 4-bit bus for better throughput + sdio_config.tx_queue_size = 20; // Increased queue sizes + sdio_config.rx_queue_size = 20; + + // Optional: Enable IOMUX for better performance (hardware dependent) + // sdio_config.iomux_enable = true; + + // Apply configuration + esp_hosted_transport_err_t result = esp_hosted_sdio_set_config(&sdio_config); + if (result != ESP_TRANSPORT_OK) { + ESP_LOGE(TAG, "SDIO configuration failed: error code %d", result); + g_transport_context.last_error = result; + return ESP_FAIL; + } + + ESP_LOGI(TAG, "SDIO transport configured successfully:"); + ESP_LOGI(TAG, " Clock frequency: %lu kHz", sdio_config.clock_freq_khz); + ESP_LOGI(TAG, " Bus width: %d bits", sdio_config.bus_width); + ESP_LOGI(TAG, " Queue sizes - TX: %d, RX: %d", + sdio_config.tx_queue_size, sdio_config.rx_queue_size); + + return ESP_OK; + } + #endif /* CONFIG_ESP_HOSTED_SDIO_HOST_INTERFACE */ + + /*============================================================================== + * SPI FULL-DUPLEX TRANSPORT CONFIGURATION + *============================================================================*/ + + #ifdef CONFIG_ESP_HOSTED_SPI_HOST_INTERFACE + /** + * @brief Configure SPI Full-Duplex transport with custom pin mapping + * + * @return ESP_OK on success, ESP_FAIL on error + */ + static esp_err_t configure_spi_transport(void) + { + ESP_LOGI(TAG, "Configuring SPI Full-Duplex transport interface"); + + // Initialize default SPI configuration + struct esp_hosted_spi_config spi_config = INIT_DEFAULT_HOST_SPI_CONFIG(); + + // Configure GPIO pin assignments + spi_config.pin_mosi.pin = 23; // Master Out Slave In + spi_config.pin_miso.pin = 19; // Master In Slave Out + spi_config.pin_sclk.pin = 18; // Serial Clock + spi_config.pin_cs.pin = 5; // Chip Select + spi_config.pin_handshake.pin = 2; // Handshake signal + spi_config.pin_data_ready.pin = 4; // Data Ready indication + + // Configure SPI parameters + spi_config.clk_mhz = 10; // 10MHz clock frequency + spi_config.mode = 0; // SPI mode 0 (CPOL=0, CPHA=0) + spi_config.tx_queue_size = 15; // Transmission queue size + spi_config.rx_queue_size = 15; // Reception queue size + + // Apply configuration + esp_hosted_transport_err_t result = esp_hosted_spi_set_config(&spi_config); + if (result != ESP_TRANSPORT_OK) { + ESP_LOGE(TAG, "SPI configuration failed: error code %d", result); + g_transport_context.last_error = result; + return ESP_FAIL; + } + + ESP_LOGI(TAG, "SPI Full-Duplex transport configured successfully:"); + ESP_LOGI(TAG, " Clock frequency: %lu MHz", spi_config.clk_mhz); + ESP_LOGI(TAG, " Pin mapping - MOSI: %d, MISO: %d, SCLK: %d, CS: %d", + spi_config.pin_mosi.pin, spi_config.pin_miso.pin, + spi_config.pin_sclk.pin, spi_config.pin_cs.pin); + ESP_LOGI(TAG, " Control pins - Handshake: %d, Data Ready: %d", + spi_config.pin_handshake.pin, spi_config.pin_data_ready.pin); + + return ESP_OK; + } + #endif /* CONFIG_ESP_HOSTED_SPI_HOST_INTERFACE */ + + /*============================================================================== + * SPI HALF-DUPLEX TRANSPORT CONFIGURATION + *============================================================================*/ + + #ifdef CONFIG_ESP_HOSTED_SPI_HD_HOST_INTERFACE + /** + * @brief Configure SPI Half-Duplex transport with enhanced features + * + * @return ESP_OK on success, ESP_FAIL on error + */ + static esp_err_t configure_spi_hd_transport(void) + { + ESP_LOGI(TAG, "Configuring SPI Half-Duplex transport interface"); + + // Initialize default SPI HD configuration + struct esp_hosted_spi_hd_config spi_hd_config = INIT_DEFAULT_HOST_SPI_HD_CONFIG(); + + // Configure enhanced parameters + spi_hd_config.num_data_lines = 4; // Quad SPI mode + spi_hd_config.clk_mhz = 20; // 20MHz clock frequency + spi_hd_config.checksum_enable = true; // Enable data integrity checking + + // Configure GPIO pin assignments + spi_hd_config.pin_cs.pin = 15; // Chip Select + spi_hd_config.pin_clk.pin = 14; // Clock line + spi_hd_config.pin_data_ready.pin = 4; // Data Ready indication + + // Apply configuration + esp_hosted_transport_err_t result = esp_hosted_spi_hd_set_config(&spi_hd_config); + if (result != ESP_TRANSPORT_OK) { + ESP_LOGE(TAG, "SPI Half-Duplex configuration failed: error code %d", result); + g_transport_context.last_error = result; + return ESP_FAIL; + } + + ESP_LOGI(TAG, "SPI Half-Duplex transport configured successfully:"); + ESP_LOGI(TAG, " Clock frequency: %lu MHz", spi_hd_config.clk_mhz); + ESP_LOGI(TAG, " Data lines: %d (Quad SPI)", spi_hd_config.num_data_lines); + ESP_LOGI(TAG, " Checksum: %s", spi_hd_config.checksum_enable ? "enabled" : "disabled"); + ESP_LOGI(TAG, " Pin mapping - CS: %d, CLK: %d, Data Ready: %d", + spi_hd_config.pin_cs.pin, spi_hd_config.pin_clk.pin, + spi_hd_config.pin_data_ready.pin); + + return ESP_OK; + } + #endif /* CONFIG_ESP_HOSTED_SPI_HD_HOST_INTERFACE */ + + /*============================================================================== + * UART TRANSPORT CONFIGURATION + *============================================================================*/ + + #ifdef CONFIG_ESP_HOSTED_UART_HOST_INTERFACE + /** + * @brief Configure UART transport with high-speed settings + * + * @return ESP_OK on success, ESP_FAIL on error + */ + static esp_err_t configure_uart_transport(void) + { + ESP_LOGI(TAG, "Configuring UART transport interface"); + + // Initialize default UART configuration + struct esp_hosted_uart_config uart_config = INIT_DEFAULT_HOST_UART_CONFIG(); + + // Configure high-speed UART parameters + uart_config.baud_rate = 921600; // High baud rate for performance + uart_config.num_data_bits = 8; // 8 data bits + uart_config.parity = 0; // No parity bit + uart_config.stop_bits = 1; // 1 stop bit + uart_config.checksum_enable = true; // Enable data integrity checking + + // Configure GPIO pin assignments + uart_config.pin_tx.pin = 17; // Transmit pin + uart_config.pin_rx.pin = 16; // Receive pin + + // Configure buffer sizes + uart_config.tx_queue_size = 100; // Transmission buffer + uart_config.rx_queue_size = 100; // Reception buffer + + // Apply configuration + esp_hosted_transport_err_t result = esp_hosted_uart_set_config(&uart_config); + if (result != ESP_TRANSPORT_OK) { + ESP_LOGE(TAG, "UART configuration failed: error code %d", result); + g_transport_context.last_error = result; + return ESP_FAIL; + } + + ESP_LOGI(TAG, "UART transport configured successfully:"); + ESP_LOGI(TAG, " Baud rate: %lu bps", uart_config.baud_rate); + ESP_LOGI(TAG, " Parameters: %d%c%d", uart_config.num_data_bits, + uart_config.parity ? 'P' : 'N', uart_config.stop_bits); + ESP_LOGI(TAG, " Pin mapping - TX: %d, RX: %d", + uart_config.pin_tx.pin, uart_config.pin_rx.pin); + ESP_LOGI(TAG, " Checksum: %s", uart_config.checksum_enable ? "enabled" : "disabled"); + ESP_LOGI(TAG, " Buffer sizes - TX: %d, RX: %d", + uart_config.tx_queue_size, uart_config.rx_queue_size); + + return ESP_OK; + } + #endif /* CONFIG_ESP_HOSTED_UART_HOST_INTERFACE */ + + /*============================================================================== + * CONFIGURATION VALIDATION AND INSPECTION + *============================================================================*/ + + /** + * @brief Display current transport configuration + */ + static void display_transport_configuration(void) + { + ESP_LOGI(TAG, "Retrieving current transport configuration..."); + + struct esp_hosted_transport_config *config; + esp_hosted_transport_err_t result = esp_hosted_transport_get_config(&config); + + if (result != ESP_TRANSPORT_OK || !config) { + ESP_LOGE(TAG, "Failed to retrieve transport configuration: error %d", result); + return; + } + + ESP_LOGI(TAG, "Current transport configuration:"); + ESP_LOGI(TAG, " Transport type: %d", config->transport_in_use); + + switch (config->transport_in_use) { + case 1: // SDIO + ESP_LOGI(TAG, " SDIO Configuration:"); + ESP_LOGI(TAG, " Clock frequency: %lu kHz", config->u.sdio.clock_freq_khz); + ESP_LOGI(TAG, " Bus width: %d bits", config->u.sdio.bus_width); + ESP_LOGI(TAG, " Queue sizes - TX: %d, RX: %d", + config->u.sdio.tx_queue_size, config->u.sdio.rx_queue_size); + break; + + case 2: // SPI Half-Duplex + ESP_LOGI(TAG, " SPI Half-Duplex Configuration:"); + ESP_LOGI(TAG, " Clock frequency: %lu MHz", config->u.spi_hd.clk_mhz); + ESP_LOGI(TAG, " Data lines: %d", config->u.spi_hd.num_data_lines); + ESP_LOGI(TAG, " Checksum: %s", + config->u.spi_hd.checksum_enable ? "enabled" : "disabled"); + break; + + case 3: // SPI Full-Duplex + ESP_LOGI(TAG, " SPI Full-Duplex Configuration:"); + ESP_LOGI(TAG, " Clock frequency: %lu MHz", config->u.spi.clk_mhz); + ESP_LOGI(TAG, " SPI mode: %d", config->u.spi.mode); + ESP_LOGI(TAG, " Queue sizes - TX: %d, RX: %d", + config->u.spi.tx_queue_size, config->u.spi.rx_queue_size); + break; + + case 4: // UART + ESP_LOGI(TAG, " UART Configuration:"); + ESP_LOGI(TAG, " Baud rate: %lu bps", config->u.uart.baud_rate); + ESP_LOGI(TAG, " UART port: %d", config->u.uart.port); + ESP_LOGI(TAG, " Checksum: %s", + config->u.uart.checksum_enable ? "enabled" : "disabled"); + break; + + default: + ESP_LOGW(TAG, " Unknown transport type: %d", config->transport_in_use); + break; + } + } + + /** + * @brief Validate transport configuration + * + * @return ESP_OK if configuration is valid, ESP_FAIL otherwise + */ + static esp_err_t validate_transport_configuration(void) + { + ESP_LOGI(TAG, "Validating transport configuration..."); + + struct esp_hosted_transport_config *config; + esp_hosted_transport_err_t result = esp_hosted_transport_get_config(&config); + + if (result != ESP_TRANSPORT_OK || !config) { + ESP_LOGE(TAG, "Configuration validation failed: cannot retrieve config"); + return ESP_FAIL; + } + + // Basic validation checks + if (config->transport_in_use < 1 || config->transport_in_use > 4) { + ESP_LOGE(TAG, "Invalid transport type: %d", config->transport_in_use); + return ESP_FAIL; + } + + ESP_LOGI(TAG, "Transport configuration validation passed"); + return ESP_OK; + } + + /*============================================================================== + * SYSTEM INITIALIZATION + *============================================================================*/ + + /** + * @brief Initialize system components (NVS, event loop) + * + * @return ESP_OK on success, error code on failure + */ + static esp_err_t initialize_system_components(void) + { + ESP_LOGI(TAG, "Initializing system components..."); + + // Initialize NVS flash + esp_err_t ret = nvs_flash_init(); + if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) { + ESP_LOGW(TAG, "NVS flash needs to be erased, reinitializing..."); + ESP_ERROR_CHECK(nvs_flash_erase()); + ret = nvs_flash_init(); + } + if (ret != ESP_OK) { + ESP_LOGE(TAG, "NVS flash initialization failed: %s", esp_err_to_name(ret)); + return ret; + } + + // Initialize default event loop + ret = esp_event_loop_create_default(); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Event loop initialization failed: %s", esp_err_to_name(ret)); + return ret; + } + + ESP_LOGI(TAG, "System components initialized successfully"); + return ESP_OK; + } + + /** + * @brief Configure transport interface based on menuconfig selection + * + * @return ESP_OK on success, ESP_FAIL on error + */ + static esp_err_t configure_transport_interface(void) + { + esp_err_t result = ESP_FAIL; + + ESP_LOGI(TAG, "Configuring transport interface..."); + + #ifdef CONFIG_ESP_HOSTED_SDIO_HOST_INTERFACE + ESP_LOGI(TAG, "SDIO interface selected in menuconfig"); + result = configure_sdio_transport(); + #elif defined(CONFIG_ESP_HOSTED_SPI_HOST_INTERFACE) + ESP_LOGI(TAG, "SPI Full-Duplex interface selected in menuconfig"); + result = configure_spi_transport(); + #elif defined(CONFIG_ESP_HOSTED_SPI_HD_HOST_INTERFACE) + ESP_LOGI(TAG, "SPI Half-Duplex interface selected in menuconfig"); + result = configure_spi_hd_transport(); + #elif defined(CONFIG_ESP_HOSTED_UART_HOST_INTERFACE) + ESP_LOGI(TAG, "UART interface selected in menuconfig"); + result = configure_uart_transport(); + #else + ESP_LOGW(TAG, "No transport interface selected in menuconfig"); + ESP_LOGI(TAG, "Please configure transport interface using 'idf.py menuconfig'"); + return ESP_FAIL; + #endif + + if (result == ESP_OK) { + g_transport_context.status = TRANSPORT_CONFIG_STATUS_CONFIGURED; + ESP_LOGI(TAG, "Transport interface configured successfully"); + } else { + g_transport_context.status = TRANSPORT_CONFIG_STATUS_ERROR; + ESP_LOGE(TAG, "Transport interface configuration failed"); + } + + return result; + } + + /** + * @brief Initialize ESP-Hosted (simple version) + * + * @return ESP_OK on success, ESP_FAIL on error + */ + static esp_err_t initialize_esp_hosted_simple(void) + { + ESP_LOGI(TAG, "Initializing ESP-Hosted..."); + + esp_err_t result = esp_hosted_init(); + if (result == ESP_OK) { + ESP_LOGI(TAG, "ESP-Hosted initialized successfully"); + g_transport_context.status = TRANSPORT_CONFIG_STATUS_ACTIVE; + } else { + ESP_LOGE(TAG, "ESP-Hosted initialization failed: %s", esp_err_to_name(result)); + g_transport_context.status = TRANSPORT_CONFIG_STATUS_ERROR; + ESP_LOGE(TAG, "Check transport configuration and slave device connection"); + } + + return result; + } + + /*============================================================================== + * MAIN APPLICATION + *============================================================================*/ + + /** + * @brief Main application entry point + */ + void app_main(void) + { + ESP_LOGI(TAG, "ESP-Hosted Transport Configuration Example v1.0.0"); + ESP_LOGI(TAG, "========================================"); + + // Initialize system components + if (initialize_system_components() != ESP_OK) { + ESP_LOGE(TAG, "System initialization failed, stopping application"); + return; + } + + // Configure transport interface + if (configure_transport_interface() != ESP_OK) { + ESP_LOGE(TAG, "Transport configuration failed, stopping application"); + return; + } + + // Validate configuration + if (validate_transport_configuration() != ESP_OK) { + ESP_LOGE(TAG, "Transport configuration validation failed"); + return; + } + + // Display current configuration + display_transport_configuration(); + + ESP_LOGI(TAG, "========================================"); + ESP_LOGI(TAG, "Initializing ESP-Hosted..."); + + // Initialize ESP-Hosted with configured transport + if (initialize_esp_hosted_simple() == ESP_OK) { + ESP_LOGI(TAG, "ESP-Hosted initialization successful!"); + ESP_LOGI(TAG, "WiFi and Bluetooth functionality is now available"); + + // Display final configuration + display_transport_configuration(); + + ESP_LOGI(TAG, "========================================"); + } else { + ESP_LOGE(TAG, "ESP-Hosted initialization failed"); + } + + ESP_LOGI(TAG, "Application running - Transport status: %s", + g_transport_context.status == TRANSPORT_CONFIG_STATUS_ACTIVE ? + "Active" : "Error"); + } diff --git a/examples/host_transport_config/sdkconfig.defaults b/examples/host_transport_config/sdkconfig.defaults new file mode 100644 index 00000000..65cfce8e --- /dev/null +++ b/examples/host_transport_config/sdkconfig.defaults @@ -0,0 +1,53 @@ +# ESP-Hosted Configuration +CONFIG_ESP_HOSTED_ENABLED=y + +# Transport Interface - Choose one based on your setup +# Uncomment the transport you want to use: + +# SDIO Interface (default for this example) +CONFIG_ESP_HOSTED_SDIO_HOST_INTERFACE=y +CONFIG_ESP_HOSTED_SDIO_CLOCK_FREQ_KHZ=25000 +CONFIG_ESP_HOSTED_SDIO_BUS_WIDTH=4 +CONFIG_ESP_HOSTED_SDIO_TX_Q_SIZE=10 +CONFIG_ESP_HOSTED_SDIO_RX_Q_SIZE=10 + +# SPI Interface (uncomment to use instead of SDIO) +# CONFIG_ESP_HOSTED_SPI_HOST_INTERFACE=y +# CONFIG_ESP_HOSTED_SPI_CLK_FREQ=10 +# CONFIG_ESP_HOSTED_SPI_MODE=0 +# CONFIG_ESP_HOSTED_SPI_TX_Q_SIZE=10 +# CONFIG_ESP_HOSTED_SPI_RX_Q_SIZE=10 + +# SPI Half-Duplex Interface (uncomment to use instead of SDIO) +# CONFIG_ESP_HOSTED_SPI_HD_HOST_INTERFACE=y +# CONFIG_ESP_HOSTED_SPI_HD_CLK_FREQ=20 +# CONFIG_ESP_HOSTED_SPI_HD_INTERFACE_NUM_DATA_LINES=4 +# CONFIG_ESP_HOSTED_SPI_HD_TX_Q_SIZE=10 +# CONFIG_ESP_HOSTED_SPI_HD_RX_Q_SIZE=10 + +# UART Interface (uncomment to use instead of SDIO) +# CONFIG_ESP_HOSTED_UART_HOST_INTERFACE=y +# CONFIG_ESP_HOSTED_UART_BAUDRATE=921600 +# CONFIG_ESP_HOSTED_UART_TX_Q_SIZE=50 +# CONFIG_ESP_HOSTED_UART_RX_Q_SIZE=50 + +# GPIO Configuration (adjust based on your board) +CONFIG_ESP_HOSTED_GPIO_SLAVE_RESET_SLAVE=21 + +# Console Configuration +CONFIG_ESP_CONSOLE_UART_DEFAULT=y +CONFIG_ESP_CONSOLE_UART_BAUDRATE_115200=y + +# Logging +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE=y + +# FreeRTOS +CONFIG_FREERTOS_HZ=1000 + +# WiFi Configuration +CONFIG_ESP_WIFI_ENABLED=y + +# Bluetooth Configuration (optional) +CONFIG_BT_ENABLED=y +CONFIG_BT_BLUEDROID_ENABLED=y \ No newline at end of file diff --git a/host/api/include/esp_hosted_transport_config.h b/host/api/include/esp_hosted_transport_config.h index 5e22a0f7..ccf80f14 100644 --- a/host/api/include/esp_hosted_transport_config.h +++ b/host/api/include/esp_hosted_transport_config.h @@ -116,90 +116,19 @@ struct esp_hosted_transport_config { } u; }; -/*** - * A port dependent header file is expected to provide the actual H_xxx definitions - ***/ -#define INIT_DEFAULT_HOST_SDIO_CONFIG() \ - (struct esp_hosted_sdio_config) { \ - .clock_freq_khz = H_SDIO_CLOCK_FREQ_KHZ, \ - .bus_width = H_SDIO_BUS_WIDTH, \ - .slot = H_SDMMC_HOST_SLOT, \ - .pin_clk = {.port = H_SDIO_PORT_CLK, .pin = H_SDIO_PIN_CLK}, \ - .pin_cmd = {.port = H_SDIO_PORT_CMD, .pin = H_SDIO_PIN_CMD}, \ - .pin_d0 = {.port = H_SDIO_PORT_D0, .pin = H_SDIO_PIN_D0}, \ - .pin_d1 = {.port = H_SDIO_PORT_D1, .pin = H_SDIO_PIN_D1}, \ - .pin_d2 = {.port = H_SDIO_PORT_D2, .pin = H_SDIO_PIN_D2}, \ - .pin_d3 = {.port = H_SDIO_PORT_D3, .pin = H_SDIO_PIN_D3}, \ - .pin_reset = {.port = H_GPIO_PORT_RESET, .pin = H_GPIO_PIN_RESET }, \ - .rx_mode = H_SDIO_HOST_RX_MODE, \ - .block_mode = H_SDIO_TX_BLOCK_ONLY_XFER && H_SDIO_RX_BLOCK_ONLY_XFER, \ - .iomux_enable = false, \ - .tx_queue_size = H_SDIO_TX_Q, \ - .rx_queue_size = H_SDIO_RX_Q, \ - } - -#define INIT_DEFAULT_HOST_SDIO_IOMUX_CONFIG() \ - (struct esp_hosted_sdio_config) { \ - .clock_freq_khz = H_SDIO_CLOCK_FREQ_KHZ, \ - .bus_width = H_SDIO_BUS_WIDTH, \ - .slot = H_SDMMC_HOST_SLOT, \ - .rx_mode = H_SDIO_HOST_RX_MODE, \ - .block_mode = H_SDIO_TX_BLOCK_ONLY_XFER && H_SDIO_RX_BLOCK_ONLY_XFER, \ - .iomux_enable = true, \ - } - -#define INIT_DEFAULT_HOST_SPI_HD_CONFIG() \ - (struct esp_hosted_spi_hd_config) { \ - .num_data_lines = H_SPI_HD_HOST_NUM_DATA_LINES, \ - .pin_cs = {.port = H_SPI_HD_PORT_CS, .pin = H_SPI_HD_PIN_CS}, \ - .pin_clk = {.port = H_SPI_HD_PORT_CLK, .pin = H_SPI_HD_PIN_CLK}, \ - .pin_data_ready = {.port = H_SPI_HD_PORT_DATA_READY, .pin = H_SPI_HD_PIN_DATA_READY}, \ - .pin_d0 = {.port = H_SPI_HD_PORT_D0, .pin = H_SPI_HD_PIN_D0}, \ - .pin_d1 = {.port = H_SPI_HD_PORT_D1, .pin = H_SPI_HD_PIN_D1}, \ - .pin_d2 = {.port = H_SPI_HD_PORT_D2, .pin = H_SPI_HD_PIN_D2}, \ - .pin_d3 = {.port = H_SPI_HD_PORT_D3, .pin = H_SPI_HD_PIN_D3}, \ - .pin_reset = {.port = H_GPIO_PORT_RESET, .pin = H_GPIO_PIN_RESET }, \ - .clk_mhz = H_SPI_HD_CLK_MHZ, \ - .mode = H_SPI_HD_MODE, \ - .tx_queue_size = H_SPI_HD_TX_QUEUE_SIZE, \ - .rx_queue_size = H_SPI_HD_RX_QUEUE_SIZE, \ - .checksum_enable = H_SPI_HD_CHECKSUM, \ - .num_command_bits = H_SPI_HD_NUM_COMMAND_BITS, \ - .num_address_bits = H_SPI_HD_NUM_ADDRESS_BITS, \ - .num_dummy_bits = H_SPI_HD_NUM_DUMMY_BITS, \ - } - -#define INIT_DEFAULT_HOST_SPI_CONFIG() \ - (struct esp_hosted_spi_config) { \ - .pin_mosi = {.port = H_GPIO_MOSI_Port, .pin = H_GPIO_MOSI_Pin}, \ - .pin_miso = {.port = H_GPIO_MISO_Port, .pin = H_GPIO_MISO_Pin}, \ - .pin_sclk = {.port = H_GPIO_SCLK_Port, .pin = H_GPIO_SCLK_Pin}, \ - .pin_cs = {.port = H_GPIO_CS_Port, .pin = H_GPIO_CS_Pin}, \ - .pin_handshake = {.port = H_GPIO_HANDSHAKE_Port, .pin = H_GPIO_HANDSHAKE_Pin}, \ - .pin_data_ready = {.port = H_GPIO_DATA_READY_Port, .pin = H_GPIO_DATA_READY_Pin}, \ - .pin_reset = {.port = H_GPIO_PORT_RESET, .pin = H_GPIO_PIN_RESET }, \ - .tx_queue_size = H_SPI_TX_Q, \ - .rx_queue_size = H_SPI_RX_Q, \ - .mode = H_SPI_MODE, \ - .clk_mhz = H_SPI_FD_CLK_MHZ, \ - } - -#define INIT_DEFAULT_HOST_UART_CONFIG() \ - (struct esp_hosted_uart_config) { \ - .port = H_UART_PORT, \ - .pin_tx = {.port = H_UART_PORT_TX, .pin = H_UART_PIN_TX}, \ - .pin_rx = {.port = H_UART_PORT_RX, .pin = H_UART_PIN_RX}, \ - .pin_reset = {.port = H_GPIO_PORT_RESET, .pin = H_GPIO_PIN_RESET }, \ - .num_data_bits = H_UART_NUM_DATA_BITS, \ - .parity = H_UART_PARITY, \ - .stop_bits = H_UART_STOP_BITS, \ - .flow_ctrl = H_UART_FLOWCTRL, \ - .clk_src = H_UART_CLK_SRC, \ - .checksum_enable = H_UART_CHECKSUM, \ - .baud_rate = H_UART_BAUD_RATE, \ - .tx_queue_size = H_UART_TX_QUEUE_SIZE, \ - .rx_queue_size = H_UART_RX_QUEUE_SIZE, \ - } +/* Default configuration functions - implemented by port layer */ +struct esp_hosted_sdio_config esp_hosted_get_default_sdio_config(void); +struct esp_hosted_sdio_config esp_hosted_get_default_sdio_iomux_config(void); +struct esp_hosted_spi_hd_config esp_hosted_get_default_spi_hd_config(void); +struct esp_hosted_spi_config esp_hosted_get_default_spi_config(void); +struct esp_hosted_uart_config esp_hosted_get_default_uart_config(void); + +/* Convenience macros for backward compatibility and ease of use */ +#define INIT_DEFAULT_HOST_SDIO_CONFIG() esp_hosted_get_default_sdio_config() +#define INIT_DEFAULT_HOST_SDIO_IOMUX_CONFIG() esp_hosted_get_default_sdio_iomux_config() +#define INIT_DEFAULT_HOST_SPI_HD_CONFIG() esp_hosted_get_default_spi_hd_config() +#define INIT_DEFAULT_HOST_SPI_CONFIG() esp_hosted_get_default_spi_config() +#define INIT_DEFAULT_HOST_UART_CONFIG() esp_hosted_get_default_uart_config() /*** * Generic Transport APIs diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index d26810dd..819597ef 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 #define ESP_HOSTED_VERSION_MINOR_1 3 -#define ESP_HOSTED_VERSION_PATCH_1 1 +#define ESP_HOSTED_VERSION_PATCH_1 2 #endif diff --git a/host/port/esp/freertos/src/port_esp_hosted_host_transport_defaults.c b/host/port/esp/freertos/src/port_esp_hosted_host_transport_defaults.c new file mode 100644 index 00000000..efee7474 --- /dev/null +++ b/host/port/esp/freertos/src/port_esp_hosted_host_transport_defaults.c @@ -0,0 +1,111 @@ +/* + * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "esp_hosted_transport_config.h" +#include "port_esp_hosted_host_config.h" + +#ifdef CONFIG_ESP_HOSTED_SDIO_HOST_INTERFACE +struct esp_hosted_sdio_config esp_hosted_get_default_sdio_config(void) +{ + return (struct esp_hosted_sdio_config) { + .clock_freq_khz = H_SDIO_CLOCK_FREQ_KHZ, + .bus_width = H_SDIO_BUS_WIDTH, + .slot = H_SDMMC_HOST_SLOT, + .pin_clk = {.port = H_SDIO_PORT_CLK, .pin = H_SDIO_PIN_CLK}, + .pin_cmd = {.port = H_SDIO_PORT_CMD, .pin = H_SDIO_PIN_CMD}, + .pin_d0 = {.port = H_SDIO_PORT_D0, .pin = H_SDIO_PIN_D0}, + .pin_d1 = {.port = H_SDIO_PORT_D1, .pin = H_SDIO_PIN_D1}, + .pin_d2 = {.port = H_SDIO_PORT_D2, .pin = H_SDIO_PIN_D2}, + .pin_d3 = {.port = H_SDIO_PORT_D3, .pin = H_SDIO_PIN_D3}, + .pin_reset = {.port = H_GPIO_PORT_RESET, .pin = H_GPIO_PIN_RESET}, + .rx_mode = H_SDIO_HOST_RX_MODE, + .block_mode = H_SDIO_TX_BLOCK_ONLY_XFER && H_SDIO_RX_BLOCK_ONLY_XFER, + .iomux_enable = false, + .tx_queue_size = H_SDIO_TX_Q, + .rx_queue_size = H_SDIO_RX_Q, + }; +} + + +struct esp_hosted_sdio_config esp_hosted_get_default_sdio_iomux_config(void) +{ + return (struct esp_hosted_sdio_config) { + .clock_freq_khz = H_SDIO_CLOCK_FREQ_KHZ, + .bus_width = H_SDIO_BUS_WIDTH, + .slot = H_SDMMC_HOST_SLOT, + .rx_mode = H_SDIO_HOST_RX_MODE, + .block_mode = H_SDIO_TX_BLOCK_ONLY_XFER && H_SDIO_RX_BLOCK_ONLY_XFER, + .iomux_enable = true, + .tx_queue_size = H_SDIO_TX_Q, + .rx_queue_size = H_SDIO_RX_Q, + }; +} +#endif + +#ifdef CONFIG_ESP_HOSTED_SPI_HD_HOST_INTERFACE +struct esp_hosted_spi_hd_config esp_hosted_get_default_spi_hd_config(void) +{ + return (struct esp_hosted_spi_hd_config) { + .num_data_lines = H_SPI_HD_HOST_NUM_DATA_LINES, + .pin_cs = {.port = H_SPI_HD_PORT_CS, .pin = H_SPI_HD_PIN_CS}, + .pin_clk = {.port = H_SPI_HD_PORT_CLK, .pin = H_SPI_HD_PIN_CLK}, + .pin_data_ready = {.port = H_SPI_HD_PORT_DATA_READY, .pin = H_SPI_HD_PIN_DATA_READY}, + .pin_d0 = {.port = H_SPI_HD_PORT_D0, .pin = H_SPI_HD_PIN_D0}, + .pin_d1 = {.port = H_SPI_HD_PORT_D1, .pin = H_SPI_HD_PIN_D1}, + .pin_d2 = {.port = H_SPI_HD_PORT_D2, .pin = H_SPI_HD_PIN_D2}, + .pin_d3 = {.port = H_SPI_HD_PORT_D3, .pin = H_SPI_HD_PIN_D3}, + .pin_reset = {.port = H_GPIO_PORT_RESET, .pin = H_GPIO_PIN_RESET}, + .clk_mhz = H_SPI_HD_CLK_MHZ, + .mode = H_SPI_HD_MODE, + .tx_queue_size = H_SPI_HD_TX_QUEUE_SIZE, + .rx_queue_size = H_SPI_HD_RX_QUEUE_SIZE, + .checksum_enable = H_SPI_HD_CHECKSUM, + .num_command_bits = H_SPI_HD_NUM_COMMAND_BITS, + .num_address_bits = H_SPI_HD_NUM_ADDRESS_BITS, + .num_dummy_bits = H_SPI_HD_NUM_DUMMY_BITS, + }; +} +#endif + +#ifdef CONFIG_ESP_HOSTED_SPI_HOST_INTERFACE +struct esp_hosted_spi_config esp_hosted_get_default_spi_config(void) +{ + return (struct esp_hosted_spi_config) { + .pin_mosi = {.port = H_GPIO_MOSI_Port, .pin = H_GPIO_MOSI_Pin}, + .pin_miso = {.port = H_GPIO_MISO_Port, .pin = H_GPIO_MISO_Pin}, + .pin_sclk = {.port = H_GPIO_SCLK_Port, .pin = H_GPIO_SCLK_Pin}, + .pin_cs = {.port = H_GPIO_CS_Port, .pin = H_GPIO_CS_Pin}, + .pin_handshake = {.port = H_GPIO_HANDSHAKE_Port, .pin = H_GPIO_HANDSHAKE_Pin}, + .pin_data_ready = {.port = H_GPIO_DATA_READY_Port, .pin = H_GPIO_DATA_READY_Pin}, + .pin_reset = {.port = H_GPIO_PORT_RESET, .pin = H_GPIO_PIN_RESET}, + .tx_queue_size = H_SPI_TX_Q, + .rx_queue_size = H_SPI_RX_Q, + .mode = H_SPI_MODE, + .clk_mhz = H_SPI_FD_CLK_MHZ, + }; +} +#endif + +#ifdef CONFIG_ESP_HOSTED_UART_HOST_INTERFACE +struct esp_hosted_uart_config esp_hosted_get_default_uart_config(void) +{ + return (struct esp_hosted_uart_config) { + .port = H_UART_PORT, + .pin_tx = {.port = H_UART_PORT_TX, .pin = H_UART_PIN_TX}, + .pin_rx = {.port = H_UART_PORT_RX, .pin = H_UART_PIN_RX}, + .pin_reset = {.port = H_GPIO_PORT_RESET, .pin = H_GPIO_PIN_RESET}, + .num_data_bits = H_UART_NUM_DATA_BITS, + .parity = H_UART_PARITY, + .stop_bits = H_UART_STOP_BITS, + .flow_ctrl = H_UART_FLOWCTRL, + .clk_src = H_UART_CLK_SRC, + .checksum_enable = H_UART_CHECKSUM, + .baud_rate = H_UART_BAUD_RATE, + .tx_queue_size = H_UART_TX_QUEUE_SIZE, + .rx_queue_size = H_UART_RX_QUEUE_SIZE, + }; +} +#endif \ No newline at end of file diff --git a/idf_component.yml b/idf_component.yml index 2cc30e43..7a82fa46 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.3.1" +version: "2.3.2" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index 94bdf2db..4ad1c4a6 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 #define PROJECT_VERSION_MINOR_1 3 -#define PROJECT_VERSION_PATCH_1 1 +#define PROJECT_VERSION_PATCH_1 2 #endif From 97192952ab44370030adb21dfc0e1c15f6329e36 Mon Sep 17 00:00:00 2001 From: YoussefTarkhan Date: Thu, 28 Aug 2025 10:22:16 +0200 Subject: [PATCH 076/114] host/api: add esp_hosted_gpio.h --- host/api/include/esp_hosted_gpio.h | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 host/api/include/esp_hosted_gpio.h diff --git a/host/api/include/esp_hosted_gpio.h b/host/api/include/esp_hosted_gpio.h new file mode 100644 index 00000000..46a8f606 --- /dev/null +++ b/host/api/include/esp_hosted_gpio.h @@ -0,0 +1,26 @@ +/* APIs to do control GPIOs of the co-processor + * + * Note: This API is platform dependent + * + * Source for the API should be in host/port//... + * + */ + +#ifndef __ESP_HOSTED_GPIO_H__ +#define __ESP_HOSTED_GPIO_H__ + +#ifdef ESP_PLATFORM +// OTA API for ESP-IDF +#include "esp_err.h" + +esp_err_t esp_hosted_gpio_config(const gpio_config_t *pGPIOConfig); +esp_err_t esp_hosted_gpio_reset_pin(gpio_num_t gpio_num); +esp_err_t esp_hosted_gpio_set_level(gpio_num_t gpio_num, uint32_t level); +int esp_hosted_gpio_get_level(gpio_num_t gpio_num); +esp_err_t esp_hosted_gpio_set_direction(gpio_num_t gpio_num, gpio_mode_t mode); +esp_err_t esp_hosted_gpio_input_enable(gpio_num_t gpio_num); +esp_err_t esp_hosted_gpio_set_pull_mode(gpio_num_t gpio_num, gpio_pull_mode_t pull); + +#endif + +#endif /*__ESP_HOSTED_OTA_H__*/ From e58c06108013a43aee44511abc51a25f7586f8fc Mon Sep 17 00:00:00 2001 From: YoussefTarkhan Date: Thu, 28 Aug 2025 10:23:06 +0200 Subject: [PATCH 077/114] host/port: add GPIO implementation (rename for consistency) --- .../freertos/src/port_esp_hosted_host_gpio.c | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 host/port/esp/freertos/src/port_esp_hosted_host_gpio.c diff --git a/host/port/esp/freertos/src/port_esp_hosted_host_gpio.c b/host/port/esp/freertos/src/port_esp_hosted_host_gpio.c new file mode 100644 index 00000000..57f18b75 --- /dev/null +++ b/host/port/esp/freertos/src/port_esp_hosted_host_gpio.c @@ -0,0 +1,53 @@ +/* Current GPIO method(s) supported: + * - gpio_config() + * - gpio_reset_pin() + * - gpio_set_level() + * - gpio_get_level() + * - gpio_set_direction() + * - gpio_input_enable() + * - gpio_set_pull_mode() + */ + +#include "esp_log.h" + +#include "rpc_wrap.h" +#include "esp_hosted_gpio.h" + +static char *TAG = "hosted_gpio"; + +esp_err_t esp_hosted_gpio_config(const gpio_config_t *pGPIOConfig) +{ + return rpc_gpio_config(pGPIOConfig); +} + +esp_err_t esp_hosted_gpio_reset_pin(gpio_num_t gpio_num) +{ + return rpc_gpio_reset_pin(gpio_num); +} + +esp_err_t esp_hosted_gpio_set_level(gpio_num_t gpio_num, uint32_t level) +{ + return rpc_gpio_set_level(gpio_num, level); +} + +int esp_hosted_gpio_get_level(gpio_num_t gpio_num) +{ + int level = 0; + esp_err_t err = rpc_gpio_get_level(gpio_num, &level); + return level; +} + +esp_err_t esp_hosted_gpio_set_direction(gpio_num_t gpio_num, gpio_mode_t mode) +{ + return rpc_gpio_set_direction(gpio_num, mode); +} + +esp_err_t esp_hosted_gpio_input_enable(gpio_num_t gpio_num) +{ + return rpc_gpio_input_enable(gpio_num); +} + +esp_err_t esp_hosted_gpio_set_pull_mode(gpio_num_t gpio_num, gpio_pull_mode_t pull) +{ + return rpc_gpio_set_pull_mode(gpio_num, pull); +} From 6ac0baeb5f400dd8e4310952d76a5cf69f53e033 Mon Sep 17 00:00:00 2001 From: YoussefTarkhan Date: Thu, 28 Aug 2025 11:19:43 +0200 Subject: [PATCH 078/114] proto: add GPIO RPC messages; regenerate pb-c stubs --- common/proto/esp_hosted_rpc.pb-c.c | 10633 +++++++++++++++------------ common/proto/esp_hosted_rpc.pb-c.h | 1213 ++- common/proto/esp_hosted_rpc.proto | 110 +- 3 files changed, 7142 insertions(+), 4814 deletions(-) diff --git a/common/proto/esp_hosted_rpc.pb-c.c b/common/proto/esp_hosted_rpc.pb-c.c index 649b988c..a44bfbdd 100644 --- a/common/proto/esp_hosted_rpc.pb-c.c +++ b/common/proto/esp_hosted_rpc.pb-c.c @@ -8422,419 +8422,1094 @@ void rpc__event__sta_disconnected__free_unpacked assert(message->base.descriptor == &rpc__event__sta_disconnected__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__event__dhcp_dns_status__init - (RpcEventDhcpDnsStatus *message) +void rpc__gpio_config__init + (RpcGpioConfig *message) { - static const RpcEventDhcpDnsStatus init_value = RPC__EVENT__DHCP_DNS_STATUS__INIT; + static const RpcGpioConfig init_value = RPC__GPIO_CONFIG__INIT; *message = init_value; } -size_t rpc__event__dhcp_dns_status__get_packed_size - (const RpcEventDhcpDnsStatus *message) +size_t rpc__gpio_config__get_packed_size + (const RpcGpioConfig *message) { - assert(message->base.descriptor == &rpc__event__dhcp_dns_status__descriptor); + assert(message->base.descriptor == &rpc__gpio_config__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__event__dhcp_dns_status__pack - (const RpcEventDhcpDnsStatus *message, +size_t rpc__gpio_config__pack + (const RpcGpioConfig *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__event__dhcp_dns_status__descriptor); + assert(message->base.descriptor == &rpc__gpio_config__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__event__dhcp_dns_status__pack_to_buffer - (const RpcEventDhcpDnsStatus *message, +size_t rpc__gpio_config__pack_to_buffer + (const RpcGpioConfig *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__event__dhcp_dns_status__descriptor); + assert(message->base.descriptor == &rpc__gpio_config__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcEventDhcpDnsStatus * - rpc__event__dhcp_dns_status__unpack +RpcGpioConfig * + rpc__gpio_config__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcEventDhcpDnsStatus *) - protobuf_c_message_unpack (&rpc__event__dhcp_dns_status__descriptor, + return (RpcGpioConfig *) + protobuf_c_message_unpack (&rpc__gpio_config__descriptor, allocator, len, data); } -void rpc__event__dhcp_dns_status__free_unpacked - (RpcEventDhcpDnsStatus *message, +void rpc__gpio_config__free_unpacked + (RpcGpioConfig *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__event__dhcp_dns_status__descriptor); + assert(message->base.descriptor == &rpc__gpio_config__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__event__sta_itwt_setup__init - (RpcEventStaItwtSetup *message) +void rpc__req__gpio_config__init + (RpcReqGpioConfig *message) { - static const RpcEventStaItwtSetup init_value = RPC__EVENT__STA_ITWT_SETUP__INIT; + static const RpcReqGpioConfig init_value = RPC__REQ__GPIO_CONFIG__INIT; *message = init_value; } -size_t rpc__event__sta_itwt_setup__get_packed_size - (const RpcEventStaItwtSetup *message) +size_t rpc__req__gpio_config__get_packed_size + (const RpcReqGpioConfig *message) { - assert(message->base.descriptor == &rpc__event__sta_itwt_setup__descriptor); + assert(message->base.descriptor == &rpc__req__gpio_config__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__event__sta_itwt_setup__pack - (const RpcEventStaItwtSetup *message, +size_t rpc__req__gpio_config__pack + (const RpcReqGpioConfig *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__event__sta_itwt_setup__descriptor); + assert(message->base.descriptor == &rpc__req__gpio_config__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__event__sta_itwt_setup__pack_to_buffer - (const RpcEventStaItwtSetup *message, +size_t rpc__req__gpio_config__pack_to_buffer + (const RpcReqGpioConfig *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__event__sta_itwt_setup__descriptor); + assert(message->base.descriptor == &rpc__req__gpio_config__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcEventStaItwtSetup * - rpc__event__sta_itwt_setup__unpack +RpcReqGpioConfig * + rpc__req__gpio_config__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcEventStaItwtSetup *) - protobuf_c_message_unpack (&rpc__event__sta_itwt_setup__descriptor, + return (RpcReqGpioConfig *) + protobuf_c_message_unpack (&rpc__req__gpio_config__descriptor, allocator, len, data); } -void rpc__event__sta_itwt_setup__free_unpacked - (RpcEventStaItwtSetup *message, +void rpc__req__gpio_config__free_unpacked + (RpcReqGpioConfig *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__event__sta_itwt_setup__descriptor); + assert(message->base.descriptor == &rpc__req__gpio_config__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__event__sta_itwt_teardown__init - (RpcEventStaItwtTeardown *message) +void rpc__resp__gpio_config__init + (RpcRespGpioConfig *message) { - static const RpcEventStaItwtTeardown init_value = RPC__EVENT__STA_ITWT_TEARDOWN__INIT; + static const RpcRespGpioConfig init_value = RPC__RESP__GPIO_CONFIG__INIT; *message = init_value; } -size_t rpc__event__sta_itwt_teardown__get_packed_size - (const RpcEventStaItwtTeardown *message) +size_t rpc__resp__gpio_config__get_packed_size + (const RpcRespGpioConfig *message) { - assert(message->base.descriptor == &rpc__event__sta_itwt_teardown__descriptor); + assert(message->base.descriptor == &rpc__resp__gpio_config__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__event__sta_itwt_teardown__pack - (const RpcEventStaItwtTeardown *message, +size_t rpc__resp__gpio_config__pack + (const RpcRespGpioConfig *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__event__sta_itwt_teardown__descriptor); + assert(message->base.descriptor == &rpc__resp__gpio_config__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__event__sta_itwt_teardown__pack_to_buffer - (const RpcEventStaItwtTeardown *message, +size_t rpc__resp__gpio_config__pack_to_buffer + (const RpcRespGpioConfig *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__event__sta_itwt_teardown__descriptor); + assert(message->base.descriptor == &rpc__resp__gpio_config__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcEventStaItwtTeardown * - rpc__event__sta_itwt_teardown__unpack +RpcRespGpioConfig * + rpc__resp__gpio_config__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcEventStaItwtTeardown *) - protobuf_c_message_unpack (&rpc__event__sta_itwt_teardown__descriptor, + return (RpcRespGpioConfig *) + protobuf_c_message_unpack (&rpc__resp__gpio_config__descriptor, allocator, len, data); } -void rpc__event__sta_itwt_teardown__free_unpacked - (RpcEventStaItwtTeardown *message, +void rpc__resp__gpio_config__free_unpacked + (RpcRespGpioConfig *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__event__sta_itwt_teardown__descriptor); + assert(message->base.descriptor == &rpc__resp__gpio_config__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__event__sta_itwt_suspend__init - (RpcEventStaItwtSuspend *message) +void rpc__req__gpio_reset__init + (RpcReqGpioReset *message) { - static const RpcEventStaItwtSuspend init_value = RPC__EVENT__STA_ITWT_SUSPEND__INIT; + static const RpcReqGpioReset init_value = RPC__REQ__GPIO_RESET__INIT; *message = init_value; } -size_t rpc__event__sta_itwt_suspend__get_packed_size - (const RpcEventStaItwtSuspend *message) +size_t rpc__req__gpio_reset__get_packed_size + (const RpcReqGpioReset *message) { - assert(message->base.descriptor == &rpc__event__sta_itwt_suspend__descriptor); + assert(message->base.descriptor == &rpc__req__gpio_reset__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__event__sta_itwt_suspend__pack - (const RpcEventStaItwtSuspend *message, +size_t rpc__req__gpio_reset__pack + (const RpcReqGpioReset *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__event__sta_itwt_suspend__descriptor); + assert(message->base.descriptor == &rpc__req__gpio_reset__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__event__sta_itwt_suspend__pack_to_buffer - (const RpcEventStaItwtSuspend *message, +size_t rpc__req__gpio_reset__pack_to_buffer + (const RpcReqGpioReset *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__event__sta_itwt_suspend__descriptor); + assert(message->base.descriptor == &rpc__req__gpio_reset__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcEventStaItwtSuspend * - rpc__event__sta_itwt_suspend__unpack +RpcReqGpioReset * + rpc__req__gpio_reset__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcEventStaItwtSuspend *) - protobuf_c_message_unpack (&rpc__event__sta_itwt_suspend__descriptor, + return (RpcReqGpioReset *) + protobuf_c_message_unpack (&rpc__req__gpio_reset__descriptor, allocator, len, data); } -void rpc__event__sta_itwt_suspend__free_unpacked - (RpcEventStaItwtSuspend *message, +void rpc__req__gpio_reset__free_unpacked + (RpcReqGpioReset *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__event__sta_itwt_suspend__descriptor); + assert(message->base.descriptor == &rpc__req__gpio_reset__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__event__sta_itwt_probe__init - (RpcEventStaItwtProbe *message) +void rpc__resp__gpio_reset_pin__init + (RpcRespGpioResetPin *message) { - static const RpcEventStaItwtProbe init_value = RPC__EVENT__STA_ITWT_PROBE__INIT; + static const RpcRespGpioResetPin init_value = RPC__RESP__GPIO_RESET_PIN__INIT; *message = init_value; } -size_t rpc__event__sta_itwt_probe__get_packed_size - (const RpcEventStaItwtProbe *message) +size_t rpc__resp__gpio_reset_pin__get_packed_size + (const RpcRespGpioResetPin *message) { - assert(message->base.descriptor == &rpc__event__sta_itwt_probe__descriptor); + assert(message->base.descriptor == &rpc__resp__gpio_reset_pin__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__event__sta_itwt_probe__pack - (const RpcEventStaItwtProbe *message, +size_t rpc__resp__gpio_reset_pin__pack + (const RpcRespGpioResetPin *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__event__sta_itwt_probe__descriptor); + assert(message->base.descriptor == &rpc__resp__gpio_reset_pin__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__event__sta_itwt_probe__pack_to_buffer - (const RpcEventStaItwtProbe *message, +size_t rpc__resp__gpio_reset_pin__pack_to_buffer + (const RpcRespGpioResetPin *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__event__sta_itwt_probe__descriptor); + assert(message->base.descriptor == &rpc__resp__gpio_reset_pin__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcEventStaItwtProbe * - rpc__event__sta_itwt_probe__unpack +RpcRespGpioResetPin * + rpc__resp__gpio_reset_pin__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcEventStaItwtProbe *) - protobuf_c_message_unpack (&rpc__event__sta_itwt_probe__descriptor, + return (RpcRespGpioResetPin *) + protobuf_c_message_unpack (&rpc__resp__gpio_reset_pin__descriptor, allocator, len, data); } -void rpc__event__sta_itwt_probe__free_unpacked - (RpcEventStaItwtProbe *message, +void rpc__resp__gpio_reset_pin__free_unpacked + (RpcRespGpioResetPin *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__event__sta_itwt_probe__descriptor); + assert(message->base.descriptor == &rpc__resp__gpio_reset_pin__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__init - (Rpc *message) +void rpc__req__gpio_set_level__init + (RpcReqGpioSetLevel *message) { - static const Rpc init_value = RPC__INIT; + static const RpcReqGpioSetLevel init_value = RPC__REQ__GPIO_SET_LEVEL__INIT; *message = init_value; } -size_t rpc__get_packed_size - (const Rpc *message) +size_t rpc__req__gpio_set_level__get_packed_size + (const RpcReqGpioSetLevel *message) { - assert(message->base.descriptor == &rpc__descriptor); + assert(message->base.descriptor == &rpc__req__gpio_set_level__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__pack - (const Rpc *message, +size_t rpc__req__gpio_set_level__pack + (const RpcReqGpioSetLevel *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__descriptor); + assert(message->base.descriptor == &rpc__req__gpio_set_level__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__pack_to_buffer - (const Rpc *message, +size_t rpc__req__gpio_set_level__pack_to_buffer + (const RpcReqGpioSetLevel *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__descriptor); + assert(message->base.descriptor == &rpc__req__gpio_set_level__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -Rpc * - rpc__unpack +RpcReqGpioSetLevel * + rpc__req__gpio_set_level__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (Rpc *) - protobuf_c_message_unpack (&rpc__descriptor, + return (RpcReqGpioSetLevel *) + protobuf_c_message_unpack (&rpc__req__gpio_set_level__descriptor, allocator, len, data); } -void rpc__free_unpacked - (Rpc *message, +void rpc__req__gpio_set_level__free_unpacked + (RpcReqGpioSetLevel *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__descriptor); + assert(message->base.descriptor == &rpc__req__gpio_set_level__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -static const ProtobufCFieldDescriptor wifi_init_config__field_descriptors[24] = +void rpc__resp__gpio_set_level__init + (RpcRespGpioSetLevel *message) { - { - "static_rx_buf_num", - 1, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, static_rx_buf_num), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "dynamic_rx_buf_num", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, dynamic_rx_buf_num), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "tx_buf_type", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, tx_buf_type), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "static_tx_buf_num", - 4, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, static_tx_buf_num), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "dynamic_tx_buf_num", - 5, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, dynamic_tx_buf_num), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "cache_tx_buf_num", - 6, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, cache_tx_buf_num), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "csi_enable", - 7, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, csi_enable), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "ampdu_rx_enable", - 8, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, ampdu_rx_enable), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "ampdu_tx_enable", - 9, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, ampdu_tx_enable), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "amsdu_tx_enable", - 10, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, amsdu_tx_enable), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "nvs_enable", - 11, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, nvs_enable), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "nano_enable", - 12, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, nano_enable), - NULL, - NULL, + static const RpcRespGpioSetLevel init_value = RPC__RESP__GPIO_SET_LEVEL__INIT; + *message = init_value; +} +size_t rpc__resp__gpio_set_level__get_packed_size + (const RpcRespGpioSetLevel *message) +{ + assert(message->base.descriptor == &rpc__resp__gpio_set_level__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__gpio_set_level__pack + (const RpcRespGpioSetLevel *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__gpio_set_level__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__gpio_set_level__pack_to_buffer + (const RpcRespGpioSetLevel *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__gpio_set_level__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespGpioSetLevel * + rpc__resp__gpio_set_level__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespGpioSetLevel *) + protobuf_c_message_unpack (&rpc__resp__gpio_set_level__descriptor, + allocator, len, data); +} +void rpc__resp__gpio_set_level__free_unpacked + (RpcRespGpioSetLevel *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__gpio_set_level__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__gpio_get_level__init + (RpcReqGpioGetLevel *message) +{ + static const RpcReqGpioGetLevel init_value = RPC__REQ__GPIO_GET_LEVEL__INIT; + *message = init_value; +} +size_t rpc__req__gpio_get_level__get_packed_size + (const RpcReqGpioGetLevel *message) +{ + assert(message->base.descriptor == &rpc__req__gpio_get_level__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__gpio_get_level__pack + (const RpcReqGpioGetLevel *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__gpio_get_level__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__gpio_get_level__pack_to_buffer + (const RpcReqGpioGetLevel *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__gpio_get_level__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqGpioGetLevel * + rpc__req__gpio_get_level__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqGpioGetLevel *) + protobuf_c_message_unpack (&rpc__req__gpio_get_level__descriptor, + allocator, len, data); +} +void rpc__req__gpio_get_level__free_unpacked + (RpcReqGpioGetLevel *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__gpio_get_level__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__gpio_get_level__init + (RpcRespGpioGetLevel *message) +{ + static const RpcRespGpioGetLevel init_value = RPC__RESP__GPIO_GET_LEVEL__INIT; + *message = init_value; +} +size_t rpc__resp__gpio_get_level__get_packed_size + (const RpcRespGpioGetLevel *message) +{ + assert(message->base.descriptor == &rpc__resp__gpio_get_level__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__gpio_get_level__pack + (const RpcRespGpioGetLevel *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__gpio_get_level__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__gpio_get_level__pack_to_buffer + (const RpcRespGpioGetLevel *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__gpio_get_level__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespGpioGetLevel * + rpc__resp__gpio_get_level__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespGpioGetLevel *) + protobuf_c_message_unpack (&rpc__resp__gpio_get_level__descriptor, + allocator, len, data); +} +void rpc__resp__gpio_get_level__free_unpacked + (RpcRespGpioGetLevel *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__gpio_get_level__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__gpio_set_direction__init + (RpcReqGpioSetDirection *message) +{ + static const RpcReqGpioSetDirection init_value = RPC__REQ__GPIO_SET_DIRECTION__INIT; + *message = init_value; +} +size_t rpc__req__gpio_set_direction__get_packed_size + (const RpcReqGpioSetDirection *message) +{ + assert(message->base.descriptor == &rpc__req__gpio_set_direction__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__gpio_set_direction__pack + (const RpcReqGpioSetDirection *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__gpio_set_direction__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__gpio_set_direction__pack_to_buffer + (const RpcReqGpioSetDirection *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__gpio_set_direction__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqGpioSetDirection * + rpc__req__gpio_set_direction__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqGpioSetDirection *) + protobuf_c_message_unpack (&rpc__req__gpio_set_direction__descriptor, + allocator, len, data); +} +void rpc__req__gpio_set_direction__free_unpacked + (RpcReqGpioSetDirection *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__gpio_set_direction__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__gpio_set_direction__init + (RpcRespGpioSetDirection *message) +{ + static const RpcRespGpioSetDirection init_value = RPC__RESP__GPIO_SET_DIRECTION__INIT; + *message = init_value; +} +size_t rpc__resp__gpio_set_direction__get_packed_size + (const RpcRespGpioSetDirection *message) +{ + assert(message->base.descriptor == &rpc__resp__gpio_set_direction__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__gpio_set_direction__pack + (const RpcRespGpioSetDirection *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__gpio_set_direction__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__gpio_set_direction__pack_to_buffer + (const RpcRespGpioSetDirection *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__gpio_set_direction__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespGpioSetDirection * + rpc__resp__gpio_set_direction__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespGpioSetDirection *) + protobuf_c_message_unpack (&rpc__resp__gpio_set_direction__descriptor, + allocator, len, data); +} +void rpc__resp__gpio_set_direction__free_unpacked + (RpcRespGpioSetDirection *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__gpio_set_direction__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__gpio_input_enable__init + (RpcReqGpioInputEnable *message) +{ + static const RpcReqGpioInputEnable init_value = RPC__REQ__GPIO_INPUT_ENABLE__INIT; + *message = init_value; +} +size_t rpc__req__gpio_input_enable__get_packed_size + (const RpcReqGpioInputEnable *message) +{ + assert(message->base.descriptor == &rpc__req__gpio_input_enable__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__gpio_input_enable__pack + (const RpcReqGpioInputEnable *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__gpio_input_enable__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__gpio_input_enable__pack_to_buffer + (const RpcReqGpioInputEnable *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__gpio_input_enable__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqGpioInputEnable * + rpc__req__gpio_input_enable__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqGpioInputEnable *) + protobuf_c_message_unpack (&rpc__req__gpio_input_enable__descriptor, + allocator, len, data); +} +void rpc__req__gpio_input_enable__free_unpacked + (RpcReqGpioInputEnable *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__gpio_input_enable__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__gpio_input_enable__init + (RpcRespGpioInputEnable *message) +{ + static const RpcRespGpioInputEnable init_value = RPC__RESP__GPIO_INPUT_ENABLE__INIT; + *message = init_value; +} +size_t rpc__resp__gpio_input_enable__get_packed_size + (const RpcRespGpioInputEnable *message) +{ + assert(message->base.descriptor == &rpc__resp__gpio_input_enable__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__gpio_input_enable__pack + (const RpcRespGpioInputEnable *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__gpio_input_enable__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__gpio_input_enable__pack_to_buffer + (const RpcRespGpioInputEnable *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__gpio_input_enable__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespGpioInputEnable * + rpc__resp__gpio_input_enable__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespGpioInputEnable *) + protobuf_c_message_unpack (&rpc__resp__gpio_input_enable__descriptor, + allocator, len, data); +} +void rpc__resp__gpio_input_enable__free_unpacked + (RpcRespGpioInputEnable *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__gpio_input_enable__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__gpio_set_pull_mode__init + (RpcReqGpioSetPullMode *message) +{ + static const RpcReqGpioSetPullMode init_value = RPC__REQ__GPIO_SET_PULL_MODE__INIT; + *message = init_value; +} +size_t rpc__req__gpio_set_pull_mode__get_packed_size + (const RpcReqGpioSetPullMode *message) +{ + assert(message->base.descriptor == &rpc__req__gpio_set_pull_mode__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__gpio_set_pull_mode__pack + (const RpcReqGpioSetPullMode *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__gpio_set_pull_mode__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__gpio_set_pull_mode__pack_to_buffer + (const RpcReqGpioSetPullMode *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__gpio_set_pull_mode__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqGpioSetPullMode * + rpc__req__gpio_set_pull_mode__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqGpioSetPullMode *) + protobuf_c_message_unpack (&rpc__req__gpio_set_pull_mode__descriptor, + allocator, len, data); +} +void rpc__req__gpio_set_pull_mode__free_unpacked + (RpcReqGpioSetPullMode *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__gpio_set_pull_mode__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__gpio_set_pull_mode__init + (RpcRespGpioSetPullMode *message) +{ + static const RpcRespGpioSetPullMode init_value = RPC__RESP__GPIO_SET_PULL_MODE__INIT; + *message = init_value; +} +size_t rpc__resp__gpio_set_pull_mode__get_packed_size + (const RpcRespGpioSetPullMode *message) +{ + assert(message->base.descriptor == &rpc__resp__gpio_set_pull_mode__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__gpio_set_pull_mode__pack + (const RpcRespGpioSetPullMode *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__gpio_set_pull_mode__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__gpio_set_pull_mode__pack_to_buffer + (const RpcRespGpioSetPullMode *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__gpio_set_pull_mode__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespGpioSetPullMode * + rpc__resp__gpio_set_pull_mode__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespGpioSetPullMode *) + protobuf_c_message_unpack (&rpc__resp__gpio_set_pull_mode__descriptor, + allocator, len, data); +} +void rpc__resp__gpio_set_pull_mode__free_unpacked + (RpcRespGpioSetPullMode *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__gpio_set_pull_mode__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__event__dhcp_dns_status__init + (RpcEventDhcpDnsStatus *message) +{ + static const RpcEventDhcpDnsStatus init_value = RPC__EVENT__DHCP_DNS_STATUS__INIT; + *message = init_value; +} +size_t rpc__event__dhcp_dns_status__get_packed_size + (const RpcEventDhcpDnsStatus *message) +{ + assert(message->base.descriptor == &rpc__event__dhcp_dns_status__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__event__dhcp_dns_status__pack + (const RpcEventDhcpDnsStatus *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__event__dhcp_dns_status__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__event__dhcp_dns_status__pack_to_buffer + (const RpcEventDhcpDnsStatus *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__event__dhcp_dns_status__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcEventDhcpDnsStatus * + rpc__event__dhcp_dns_status__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcEventDhcpDnsStatus *) + protobuf_c_message_unpack (&rpc__event__dhcp_dns_status__descriptor, + allocator, len, data); +} +void rpc__event__dhcp_dns_status__free_unpacked + (RpcEventDhcpDnsStatus *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__event__dhcp_dns_status__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__event__sta_itwt_setup__init + (RpcEventStaItwtSetup *message) +{ + static const RpcEventStaItwtSetup init_value = RPC__EVENT__STA_ITWT_SETUP__INIT; + *message = init_value; +} +size_t rpc__event__sta_itwt_setup__get_packed_size + (const RpcEventStaItwtSetup *message) +{ + assert(message->base.descriptor == &rpc__event__sta_itwt_setup__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__event__sta_itwt_setup__pack + (const RpcEventStaItwtSetup *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__event__sta_itwt_setup__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__event__sta_itwt_setup__pack_to_buffer + (const RpcEventStaItwtSetup *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__event__sta_itwt_setup__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcEventStaItwtSetup * + rpc__event__sta_itwt_setup__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcEventStaItwtSetup *) + protobuf_c_message_unpack (&rpc__event__sta_itwt_setup__descriptor, + allocator, len, data); +} +void rpc__event__sta_itwt_setup__free_unpacked + (RpcEventStaItwtSetup *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__event__sta_itwt_setup__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__event__sta_itwt_teardown__init + (RpcEventStaItwtTeardown *message) +{ + static const RpcEventStaItwtTeardown init_value = RPC__EVENT__STA_ITWT_TEARDOWN__INIT; + *message = init_value; +} +size_t rpc__event__sta_itwt_teardown__get_packed_size + (const RpcEventStaItwtTeardown *message) +{ + assert(message->base.descriptor == &rpc__event__sta_itwt_teardown__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__event__sta_itwt_teardown__pack + (const RpcEventStaItwtTeardown *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__event__sta_itwt_teardown__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__event__sta_itwt_teardown__pack_to_buffer + (const RpcEventStaItwtTeardown *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__event__sta_itwt_teardown__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcEventStaItwtTeardown * + rpc__event__sta_itwt_teardown__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcEventStaItwtTeardown *) + protobuf_c_message_unpack (&rpc__event__sta_itwt_teardown__descriptor, + allocator, len, data); +} +void rpc__event__sta_itwt_teardown__free_unpacked + (RpcEventStaItwtTeardown *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__event__sta_itwt_teardown__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__event__sta_itwt_suspend__init + (RpcEventStaItwtSuspend *message) +{ + static const RpcEventStaItwtSuspend init_value = RPC__EVENT__STA_ITWT_SUSPEND__INIT; + *message = init_value; +} +size_t rpc__event__sta_itwt_suspend__get_packed_size + (const RpcEventStaItwtSuspend *message) +{ + assert(message->base.descriptor == &rpc__event__sta_itwt_suspend__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__event__sta_itwt_suspend__pack + (const RpcEventStaItwtSuspend *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__event__sta_itwt_suspend__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__event__sta_itwt_suspend__pack_to_buffer + (const RpcEventStaItwtSuspend *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__event__sta_itwt_suspend__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcEventStaItwtSuspend * + rpc__event__sta_itwt_suspend__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcEventStaItwtSuspend *) + protobuf_c_message_unpack (&rpc__event__sta_itwt_suspend__descriptor, + allocator, len, data); +} +void rpc__event__sta_itwt_suspend__free_unpacked + (RpcEventStaItwtSuspend *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__event__sta_itwt_suspend__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__event__sta_itwt_probe__init + (RpcEventStaItwtProbe *message) +{ + static const RpcEventStaItwtProbe init_value = RPC__EVENT__STA_ITWT_PROBE__INIT; + *message = init_value; +} +size_t rpc__event__sta_itwt_probe__get_packed_size + (const RpcEventStaItwtProbe *message) +{ + assert(message->base.descriptor == &rpc__event__sta_itwt_probe__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__event__sta_itwt_probe__pack + (const RpcEventStaItwtProbe *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__event__sta_itwt_probe__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__event__sta_itwt_probe__pack_to_buffer + (const RpcEventStaItwtProbe *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__event__sta_itwt_probe__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcEventStaItwtProbe * + rpc__event__sta_itwt_probe__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcEventStaItwtProbe *) + protobuf_c_message_unpack (&rpc__event__sta_itwt_probe__descriptor, + allocator, len, data); +} +void rpc__event__sta_itwt_probe__free_unpacked + (RpcEventStaItwtProbe *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__event__sta_itwt_probe__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__init + (Rpc *message) +{ + static const Rpc init_value = RPC__INIT; + *message = init_value; +} +size_t rpc__get_packed_size + (const Rpc *message) +{ + assert(message->base.descriptor == &rpc__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__pack + (const Rpc *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__pack_to_buffer + (const Rpc *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +Rpc * + rpc__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (Rpc *) + protobuf_c_message_unpack (&rpc__descriptor, + allocator, len, data); +} +void rpc__free_unpacked + (Rpc *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +static const ProtobufCFieldDescriptor wifi_init_config__field_descriptors[24] = +{ + { + "static_rx_buf_num", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, static_rx_buf_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dynamic_rx_buf_num", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, dynamic_rx_buf_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "tx_buf_type", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, tx_buf_type), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "static_tx_buf_num", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, static_tx_buf_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dynamic_tx_buf_num", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, dynamic_tx_buf_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cache_tx_buf_num", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, cache_tx_buf_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "csi_enable", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, csi_enable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ampdu_rx_enable", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, ampdu_rx_enable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ampdu_tx_enable", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, ampdu_tx_enable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "amsdu_tx_enable", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, amsdu_tx_enable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "nvs_enable", + 11, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, nvs_enable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "nano_enable", + 12, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, nano_enable), + NULL, + NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, @@ -10341,7 +11016,7 @@ static const ProtobufCFieldDescriptor wifi_config__field_descriptors[2] = offsetof(WifiConfig, ap), &wifi_ap_config__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -10353,7 +11028,7 @@ static const ProtobufCFieldDescriptor wifi_config__field_descriptors[2] = offsetof(WifiConfig, sta), &wifi_sta_config__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; @@ -10502,2194 +11177,2624 @@ static const ProtobufCFieldDescriptor wifi_pkt_rx_ctrl__field_descriptors[19] = "rssi", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiPktRxCtrl, rssi), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rate", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiPktRxCtrl, rate), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sig_mode", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiPktRxCtrl, sig_mode), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "mcs", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiPktRxCtrl, mcs), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cwb", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiPktRxCtrl, cwb), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "smoothing", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiPktRxCtrl, smoothing), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "not_sounding", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiPktRxCtrl, not_sounding), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "aggregation", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiPktRxCtrl, aggregation), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "stbc", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiPktRxCtrl, stbc), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "fec_coding", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiPktRxCtrl, fec_coding), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sgi", + 11, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiPktRxCtrl, sgi), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "noise_floor", + 12, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiPktRxCtrl, noise_floor), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ampdu_cnt", + 13, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiPktRxCtrl, ampdu_cnt), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "channel", + 14, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, rssi), + offsetof(WifiPktRxCtrl, channel), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "rate", - 2, + "secondary_channel", + 15, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, rate), + offsetof(WifiPktRxCtrl, secondary_channel), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "sig_mode", - 3, + "timestamp", + 16, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, sig_mode), + offsetof(WifiPktRxCtrl, timestamp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "mcs", - 4, + "ant", + 17, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, mcs), + offsetof(WifiPktRxCtrl, ant), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "cwb", - 5, + "sig_len", + 18, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, cwb), + offsetof(WifiPktRxCtrl, sig_len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "smoothing", - 6, + "rx_state", + 19, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, smoothing), + offsetof(WifiPktRxCtrl, rx_state), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_pkt_rx_ctrl__field_indices_by_name[] = { + 7, /* field[7] = aggregation */ + 12, /* field[12] = ampdu_cnt */ + 16, /* field[16] = ant */ + 13, /* field[13] = channel */ + 4, /* field[4] = cwb */ + 9, /* field[9] = fec_coding */ + 3, /* field[3] = mcs */ + 11, /* field[11] = noise_floor */ + 6, /* field[6] = not_sounding */ + 1, /* field[1] = rate */ + 0, /* field[0] = rssi */ + 18, /* field[18] = rx_state */ + 14, /* field[14] = secondary_channel */ + 10, /* field[10] = sgi */ + 17, /* field[17] = sig_len */ + 2, /* field[2] = sig_mode */ + 5, /* field[5] = smoothing */ + 8, /* field[8] = stbc */ + 15, /* field[15] = timestamp */ +}; +static const ProtobufCIntRange wifi_pkt_rx_ctrl__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 19 } +}; +const ProtobufCMessageDescriptor wifi_pkt_rx_ctrl__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_pkt_rx_ctrl", + "WifiPktRxCtrl", + "WifiPktRxCtrl", + "", + sizeof(WifiPktRxCtrl), + 19, + wifi_pkt_rx_ctrl__field_descriptors, + wifi_pkt_rx_ctrl__field_indices_by_name, + 1, wifi_pkt_rx_ctrl__number_ranges, + (ProtobufCMessageInit) wifi_pkt_rx_ctrl__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_promiscuous_pkt__field_descriptors[2] = +{ + { + "rx_ctrl", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(WifiPromiscuousPkt, rx_ctrl), + &wifi_pkt_rx_ctrl__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, { - "not_sounding", - 7, + "payload", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, not_sounding), + offsetof(WifiPromiscuousPkt, payload), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_promiscuous_pkt__field_indices_by_name[] = { + 1, /* field[1] = payload */ + 0, /* field[0] = rx_ctrl */ +}; +static const ProtobufCIntRange wifi_promiscuous_pkt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor wifi_promiscuous_pkt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_promiscuous_pkt", + "WifiPromiscuousPkt", + "WifiPromiscuousPkt", + "", + sizeof(WifiPromiscuousPkt), + 2, + wifi_promiscuous_pkt__field_descriptors, + wifi_promiscuous_pkt__field_indices_by_name, + 1, wifi_promiscuous_pkt__number_ranges, + (ProtobufCMessageInit) wifi_promiscuous_pkt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_promiscuous_filter__field_descriptors[1] = +{ { - "aggregation", - 8, + "filter_mask", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, aggregation), + offsetof(WifiPromiscuousFilter, filter_mask), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_promiscuous_filter__field_indices_by_name[] = { + 0, /* field[0] = filter_mask */ +}; +static const ProtobufCIntRange wifi_promiscuous_filter__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor wifi_promiscuous_filter__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_promiscuous_filter", + "WifiPromiscuousFilter", + "WifiPromiscuousFilter", + "", + sizeof(WifiPromiscuousFilter), + 1, + wifi_promiscuous_filter__field_descriptors, + wifi_promiscuous_filter__field_indices_by_name, + 1, wifi_promiscuous_filter__number_ranges, + (ProtobufCMessageInit) wifi_promiscuous_filter__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_csi_config__field_descriptors[7] = +{ { - "stbc", - 9, + "lltf_en", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, stbc), + offsetof(WifiCsiConfig, lltf_en), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "fec_coding", - 10, + "htltf_en", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, fec_coding), + offsetof(WifiCsiConfig, htltf_en), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "sgi", - 11, + "stbc_htltf2_en", + 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, sgi), + offsetof(WifiCsiConfig, stbc_htltf2_en), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "noise_floor", - 12, + "ltf_merge_en", + 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, noise_floor), + offsetof(WifiCsiConfig, ltf_merge_en), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ampdu_cnt", - 13, + "channel_filter_en", + 5, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, ampdu_cnt), + offsetof(WifiCsiConfig, channel_filter_en), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "channel", - 14, + "manu_scale", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(WifiCsiConfig, manu_scale), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "shift", + 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, channel), + offsetof(WifiCsiConfig, shift), + NULL, NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned wifi_csi_config__field_indices_by_name[] = { + 4, /* field[4] = channel_filter_en */ + 1, /* field[1] = htltf_en */ + 0, /* field[0] = lltf_en */ + 3, /* field[3] = ltf_merge_en */ + 5, /* field[5] = manu_scale */ + 6, /* field[6] = shift */ + 2, /* field[2] = stbc_htltf2_en */ +}; +static const ProtobufCIntRange wifi_csi_config__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 7 } +}; +const ProtobufCMessageDescriptor wifi_csi_config__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_csi_config", + "WifiCsiConfig", + "WifiCsiConfig", + "", + sizeof(WifiCsiConfig), + 7, + wifi_csi_config__field_descriptors, + wifi_csi_config__field_indices_by_name, + 1, wifi_csi_config__number_ranges, + (ProtobufCMessageInit) wifi_csi_config__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_csi_info__field_descriptors[6] = +{ + { + "rx_ctrl", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(WifiCsiInfo, rx_ctrl), + &wifi_pkt_rx_ctrl__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "secondary_channel", - 15, + "mac", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, secondary_channel), + offsetof(WifiCsiInfo, mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "timestamp", - 16, + "dmac", + 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, timestamp), + offsetof(WifiCsiInfo, dmac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ant", - 17, + "first_word_invalid", + 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, ant), + offsetof(WifiCsiInfo, first_word_invalid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "sig_len", - 18, + "buf", + 5, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, sig_len), + offsetof(WifiCsiInfo, buf), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "rx_state", - 19, + "len", + 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, rx_state), + offsetof(WifiCsiInfo, len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_pkt_rx_ctrl__field_indices_by_name[] = { - 7, /* field[7] = aggregation */ - 12, /* field[12] = ampdu_cnt */ - 16, /* field[16] = ant */ - 13, /* field[13] = channel */ - 4, /* field[4] = cwb */ - 9, /* field[9] = fec_coding */ - 3, /* field[3] = mcs */ - 11, /* field[11] = noise_floor */ - 6, /* field[6] = not_sounding */ - 1, /* field[1] = rate */ - 0, /* field[0] = rssi */ - 18, /* field[18] = rx_state */ - 14, /* field[14] = secondary_channel */ - 10, /* field[10] = sgi */ - 17, /* field[17] = sig_len */ - 2, /* field[2] = sig_mode */ - 5, /* field[5] = smoothing */ - 8, /* field[8] = stbc */ - 15, /* field[15] = timestamp */ +static const unsigned wifi_csi_info__field_indices_by_name[] = { + 4, /* field[4] = buf */ + 2, /* field[2] = dmac */ + 3, /* field[3] = first_word_invalid */ + 5, /* field[5] = len */ + 1, /* field[1] = mac */ + 0, /* field[0] = rx_ctrl */ }; -static const ProtobufCIntRange wifi_pkt_rx_ctrl__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_csi_info__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 19 } + { 0, 6 } }; -const ProtobufCMessageDescriptor wifi_pkt_rx_ctrl__descriptor = +const ProtobufCMessageDescriptor wifi_csi_info__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_pkt_rx_ctrl", - "WifiPktRxCtrl", - "WifiPktRxCtrl", + "wifi_csi_info", + "WifiCsiInfo", + "WifiCsiInfo", "", - sizeof(WifiPktRxCtrl), - 19, - wifi_pkt_rx_ctrl__field_descriptors, - wifi_pkt_rx_ctrl__field_indices_by_name, - 1, wifi_pkt_rx_ctrl__number_ranges, - (ProtobufCMessageInit) wifi_pkt_rx_ctrl__init, + sizeof(WifiCsiInfo), + 6, + wifi_csi_info__field_descriptors, + wifi_csi_info__field_indices_by_name, + 1, wifi_csi_info__number_ranges, + (ProtobufCMessageInit) wifi_csi_info__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_promiscuous_pkt__field_descriptors[2] = +static const ProtobufCFieldDescriptor wifi_ant_gpio__field_descriptors[2] = { { - "rx_ctrl", + "gpio_select", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPromiscuousPkt, rx_ctrl), - &wifi_pkt_rx_ctrl__descriptor, + offsetof(WifiAntGpio, gpio_select), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "payload", + "gpio_num", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPromiscuousPkt, payload), + offsetof(WifiAntGpio, gpio_num), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_promiscuous_pkt__field_indices_by_name[] = { - 1, /* field[1] = payload */ - 0, /* field[0] = rx_ctrl */ +static const unsigned wifi_ant_gpio__field_indices_by_name[] = { + 1, /* field[1] = gpio_num */ + 0, /* field[0] = gpio_select */ }; -static const ProtobufCIntRange wifi_promiscuous_pkt__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_ant_gpio__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_promiscuous_pkt__descriptor = +const ProtobufCMessageDescriptor wifi_ant_gpio__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_promiscuous_pkt", - "WifiPromiscuousPkt", - "WifiPromiscuousPkt", + "wifi_ant_gpio", + "WifiAntGpio", + "WifiAntGpio", "", - sizeof(WifiPromiscuousPkt), + sizeof(WifiAntGpio), 2, - wifi_promiscuous_pkt__field_descriptors, - wifi_promiscuous_pkt__field_indices_by_name, - 1, wifi_promiscuous_pkt__number_ranges, - (ProtobufCMessageInit) wifi_promiscuous_pkt__init, + wifi_ant_gpio__field_descriptors, + wifi_ant_gpio__field_indices_by_name, + 1, wifi_ant_gpio__number_ranges, + (ProtobufCMessageInit) wifi_ant_gpio__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_promiscuous_filter__field_descriptors[1] = +static const ProtobufCFieldDescriptor wifi_ant_gpio_config__field_descriptors[1] = { { - "filter_mask", + "gpio_cfgs", 1, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiPromiscuousFilter, filter_mask), - NULL, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(WifiAntGpioConfig, n_gpio_cfgs), + offsetof(WifiAntGpioConfig, gpio_cfgs), + &wifi_ant_gpio__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_promiscuous_filter__field_indices_by_name[] = { - 0, /* field[0] = filter_mask */ +static const unsigned wifi_ant_gpio_config__field_indices_by_name[] = { + 0, /* field[0] = gpio_cfgs */ }; -static const ProtobufCIntRange wifi_promiscuous_filter__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_ant_gpio_config__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_promiscuous_filter__descriptor = +const ProtobufCMessageDescriptor wifi_ant_gpio_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_promiscuous_filter", - "WifiPromiscuousFilter", - "WifiPromiscuousFilter", + "wifi_ant_gpio_config", + "WifiAntGpioConfig", + "WifiAntGpioConfig", "", - sizeof(WifiPromiscuousFilter), + sizeof(WifiAntGpioConfig), 1, - wifi_promiscuous_filter__field_descriptors, - wifi_promiscuous_filter__field_indices_by_name, - 1, wifi_promiscuous_filter__number_ranges, - (ProtobufCMessageInit) wifi_promiscuous_filter__init, + wifi_ant_gpio_config__field_descriptors, + wifi_ant_gpio_config__field_indices_by_name, + 1, wifi_ant_gpio_config__number_ranges, + (ProtobufCMessageInit) wifi_ant_gpio_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_csi_config__field_descriptors[7] = +static const ProtobufCFieldDescriptor wifi_ant_config__field_descriptors[5] = { { - "lltf_en", + "rx_ant_mode", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiCsiConfig, lltf_en), + offsetof(WifiAntConfig, rx_ant_mode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "htltf_en", + "rx_ant_default", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiCsiConfig, htltf_en), + offsetof(WifiAntConfig, rx_ant_default), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "stbc_htltf2_en", + "tx_ant_mode", 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiAntConfig, tx_ant_mode), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "enabled_ant0", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiAntConfig, enabled_ant0), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "enabled_ant1", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiAntConfig, enabled_ant1), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned wifi_ant_config__field_indices_by_name[] = { + 3, /* field[3] = enabled_ant0 */ + 4, /* field[4] = enabled_ant1 */ + 1, /* field[1] = rx_ant_default */ + 0, /* field[0] = rx_ant_mode */ + 2, /* field[2] = tx_ant_mode */ +}; +static const ProtobufCIntRange wifi_ant_config__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor wifi_ant_config__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_ant_config", + "WifiAntConfig", + "WifiAntConfig", + "", + sizeof(WifiAntConfig), + 5, + wifi_ant_config__field_descriptors, + wifi_ant_config__field_indices_by_name, + 1, wifi_ant_config__number_ranges, + (ProtobufCMessageInit) wifi_ant_config__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_action_tx_req__field_descriptors[5] = +{ + { + "ifx", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiCsiConfig, stbc_htltf2_en), + offsetof(WifiActionTxReq, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ltf_merge_en", - 4, + "dest_mac", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiCsiConfig, ltf_merge_en), + offsetof(WifiActionTxReq, dest_mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "channel_filter_en", - 5, + "no_ack", + 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiCsiConfig, channel_filter_en), + offsetof(WifiActionTxReq, no_ack), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "manu_scale", - 6, + "data_len", + 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiCsiConfig, manu_scale), + offsetof(WifiActionTxReq, data_len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "shift", - 7, + "data", + 5, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiCsiConfig, shift), + offsetof(WifiActionTxReq, data), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_csi_config__field_indices_by_name[] = { - 4, /* field[4] = channel_filter_en */ - 1, /* field[1] = htltf_en */ - 0, /* field[0] = lltf_en */ - 3, /* field[3] = ltf_merge_en */ - 5, /* field[5] = manu_scale */ - 6, /* field[6] = shift */ - 2, /* field[2] = stbc_htltf2_en */ +static const unsigned wifi_action_tx_req__field_indices_by_name[] = { + 4, /* field[4] = data */ + 3, /* field[3] = data_len */ + 1, /* field[1] = dest_mac */ + 0, /* field[0] = ifx */ + 2, /* field[2] = no_ack */ }; -static const ProtobufCIntRange wifi_csi_config__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_action_tx_req__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 7 } + { 0, 5 } }; -const ProtobufCMessageDescriptor wifi_csi_config__descriptor = +const ProtobufCMessageDescriptor wifi_action_tx_req__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_csi_config", - "WifiCsiConfig", - "WifiCsiConfig", + "wifi_action_tx_req", + "WifiActionTxReq", + "WifiActionTxReq", "", - sizeof(WifiCsiConfig), - 7, - wifi_csi_config__field_descriptors, - wifi_csi_config__field_indices_by_name, - 1, wifi_csi_config__number_ranges, - (ProtobufCMessageInit) wifi_csi_config__init, + sizeof(WifiActionTxReq), + 5, + wifi_action_tx_req__field_descriptors, + wifi_action_tx_req__field_indices_by_name, + 1, wifi_action_tx_req__number_ranges, + (ProtobufCMessageInit) wifi_action_tx_req__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_csi_info__field_descriptors[6] = +static const ProtobufCFieldDescriptor wifi_ftm_initiator_cfg__field_descriptors[4] = { { - "rx_ctrl", + "resp_mac", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiCsiInfo, rx_ctrl), - &wifi_pkt_rx_ctrl__descriptor, + offsetof(WifiFtmInitiatorCfg, resp_mac), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "mac", + "channel", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiCsiInfo, mac), + offsetof(WifiFtmInitiatorCfg, channel), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dmac", + "frm_count", 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiCsiInfo, dmac), + offsetof(WifiFtmInitiatorCfg, frm_count), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "first_word_invalid", + "burst_period", 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiCsiInfo, first_word_invalid), + offsetof(WifiFtmInitiatorCfg, burst_period), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_ftm_initiator_cfg__field_indices_by_name[] = { + 3, /* field[3] = burst_period */ + 1, /* field[1] = channel */ + 2, /* field[2] = frm_count */ + 0, /* field[0] = resp_mac */ +}; +static const ProtobufCIntRange wifi_ftm_initiator_cfg__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor wifi_ftm_initiator_cfg__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_ftm_initiator_cfg", + "WifiFtmInitiatorCfg", + "WifiFtmInitiatorCfg", + "", + sizeof(WifiFtmInitiatorCfg), + 4, + wifi_ftm_initiator_cfg__field_descriptors, + wifi_ftm_initiator_cfg__field_indices_by_name, + 1, wifi_ftm_initiator_cfg__number_ranges, + (ProtobufCMessageInit) wifi_ftm_initiator_cfg__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_event_sta_scan_done__field_descriptors[3] = +{ { - "buf", - 5, + "status", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiCsiInfo, buf), + offsetof(WifiEventStaScanDone, status), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "len", - 6, + "number", + 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiCsiInfo, len), + offsetof(WifiEventStaScanDone, number), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "scan_id", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiEventStaScanDone, scan_id), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_csi_info__field_indices_by_name[] = { - 4, /* field[4] = buf */ - 2, /* field[2] = dmac */ - 3, /* field[3] = first_word_invalid */ - 5, /* field[5] = len */ - 1, /* field[1] = mac */ - 0, /* field[0] = rx_ctrl */ +static const unsigned wifi_event_sta_scan_done__field_indices_by_name[] = { + 1, /* field[1] = number */ + 2, /* field[2] = scan_id */ + 0, /* field[0] = status */ }; -static const ProtobufCIntRange wifi_csi_info__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_event_sta_scan_done__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 6 } + { 0, 3 } }; -const ProtobufCMessageDescriptor wifi_csi_info__descriptor = +const ProtobufCMessageDescriptor wifi_event_sta_scan_done__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_csi_info", - "WifiCsiInfo", - "WifiCsiInfo", + "wifi_event_sta_scan_done", + "WifiEventStaScanDone", + "WifiEventStaScanDone", "", - sizeof(WifiCsiInfo), - 6, - wifi_csi_info__field_descriptors, - wifi_csi_info__field_indices_by_name, - 1, wifi_csi_info__number_ranges, - (ProtobufCMessageInit) wifi_csi_info__init, + sizeof(WifiEventStaScanDone), + 3, + wifi_event_sta_scan_done__field_descriptors, + wifi_event_sta_scan_done__field_indices_by_name, + 1, wifi_event_sta_scan_done__number_ranges, + (ProtobufCMessageInit) wifi_event_sta_scan_done__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_ant_gpio__field_descriptors[2] = +static const ProtobufCFieldDescriptor wifi_event_sta_connected__field_descriptors[6] = { { - "gpio_select", + "ssid", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiAntGpio, gpio_select), + offsetof(WifiEventStaConnected, ssid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "gpio_num", + "ssid_len", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiAntGpio, gpio_num), + offsetof(WifiEventStaConnected, ssid_len), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "bssid", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(WifiEventStaConnected, bssid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "channel", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiEventStaConnected, channel), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "authmode", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiEventStaConnected, authmode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned wifi_ant_gpio__field_indices_by_name[] = { - 1, /* field[1] = gpio_num */ - 0, /* field[0] = gpio_select */ -}; -static const ProtobufCIntRange wifi_ant_gpio__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor wifi_ant_gpio__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_ant_gpio", - "WifiAntGpio", - "WifiAntGpio", - "", - sizeof(WifiAntGpio), - 2, - wifi_ant_gpio__field_descriptors, - wifi_ant_gpio__field_indices_by_name, - 1, wifi_ant_gpio__number_ranges, - (ProtobufCMessageInit) wifi_ant_gpio__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor wifi_ant_gpio_config__field_descriptors[1] = -{ { - "gpio_cfgs", - 1, - PROTOBUF_C_LABEL_REPEATED, - PROTOBUF_C_TYPE_MESSAGE, - offsetof(WifiAntGpioConfig, n_gpio_cfgs), - offsetof(WifiAntGpioConfig, gpio_cfgs), - &wifi_ant_gpio__descriptor, + "aid", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiEventStaConnected, aid), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_ant_gpio_config__field_indices_by_name[] = { - 0, /* field[0] = gpio_cfgs */ +static const unsigned wifi_event_sta_connected__field_indices_by_name[] = { + 5, /* field[5] = aid */ + 4, /* field[4] = authmode */ + 2, /* field[2] = bssid */ + 3, /* field[3] = channel */ + 0, /* field[0] = ssid */ + 1, /* field[1] = ssid_len */ }; -static const ProtobufCIntRange wifi_ant_gpio_config__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_event_sta_connected__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 6 } }; -const ProtobufCMessageDescriptor wifi_ant_gpio_config__descriptor = +const ProtobufCMessageDescriptor wifi_event_sta_connected__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_ant_gpio_config", - "WifiAntGpioConfig", - "WifiAntGpioConfig", + "wifi_event_sta_connected", + "WifiEventStaConnected", + "WifiEventStaConnected", "", - sizeof(WifiAntGpioConfig), - 1, - wifi_ant_gpio_config__field_descriptors, - wifi_ant_gpio_config__field_indices_by_name, - 1, wifi_ant_gpio_config__number_ranges, - (ProtobufCMessageInit) wifi_ant_gpio_config__init, + sizeof(WifiEventStaConnected), + 6, + wifi_event_sta_connected__field_descriptors, + wifi_event_sta_connected__field_indices_by_name, + 1, wifi_event_sta_connected__number_ranges, + (ProtobufCMessageInit) wifi_event_sta_connected__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_ant_config__field_descriptors[5] = +static const ProtobufCFieldDescriptor wifi_event_sta_disconnected__field_descriptors[5] = { { - "rx_ant_mode", + "ssid", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiAntConfig, rx_ant_mode), + offsetof(WifiEventStaDisconnected, ssid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "rx_ant_default", + "ssid_len", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiAntConfig, rx_ant_default), + offsetof(WifiEventStaDisconnected, ssid_len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "tx_ant_mode", + "bssid", 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiAntConfig, tx_ant_mode), + offsetof(WifiEventStaDisconnected, bssid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "enabled_ant0", + "reason", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiAntConfig, enabled_ant0), + offsetof(WifiEventStaDisconnected, reason), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "enabled_ant1", + "rssi", 5, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiAntConfig, enabled_ant1), + offsetof(WifiEventStaDisconnected, rssi), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_ant_config__field_indices_by_name[] = { - 3, /* field[3] = enabled_ant0 */ - 4, /* field[4] = enabled_ant1 */ - 1, /* field[1] = rx_ant_default */ - 0, /* field[0] = rx_ant_mode */ - 2, /* field[2] = tx_ant_mode */ +static const unsigned wifi_event_sta_disconnected__field_indices_by_name[] = { + 2, /* field[2] = bssid */ + 3, /* field[3] = reason */ + 4, /* field[4] = rssi */ + 0, /* field[0] = ssid */ + 1, /* field[1] = ssid_len */ }; -static const ProtobufCIntRange wifi_ant_config__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_event_sta_disconnected__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; -const ProtobufCMessageDescriptor wifi_ant_config__descriptor = +const ProtobufCMessageDescriptor wifi_event_sta_disconnected__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_ant_config", - "WifiAntConfig", - "WifiAntConfig", + "wifi_event_sta_disconnected", + "WifiEventStaDisconnected", + "WifiEventStaDisconnected", "", - sizeof(WifiAntConfig), + sizeof(WifiEventStaDisconnected), 5, - wifi_ant_config__field_descriptors, - wifi_ant_config__field_indices_by_name, - 1, wifi_ant_config__number_ranges, - (ProtobufCMessageInit) wifi_ant_config__init, + wifi_event_sta_disconnected__field_descriptors, + wifi_event_sta_disconnected__field_indices_by_name, + 1, wifi_event_sta_disconnected__number_ranges, + (ProtobufCMessageInit) wifi_event_sta_disconnected__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_action_tx_req__field_descriptors[5] = +static const ProtobufCFieldDescriptor wifi_event_sta_authmode_change__field_descriptors[2] = { { - "ifx", + "old_mode", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiActionTxReq, ifx), + offsetof(WifiEventStaAuthmodeChange, old_mode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dest_mac", + "new_mode", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, - 0, /* quantifier_offset */ - offsetof(WifiActionTxReq, dest_mac), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "no_ack", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, - 0, /* quantifier_offset */ - offsetof(WifiActionTxReq, no_ack), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "data_len", - 4, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiActionTxReq, data_len), + offsetof(WifiEventStaAuthmodeChange, new_mode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_event_sta_authmode_change__field_indices_by_name[] = { + 1, /* field[1] = new_mode */ + 0, /* field[0] = old_mode */ +}; +static const ProtobufCIntRange wifi_event_sta_authmode_change__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor wifi_event_sta_authmode_change__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_event_sta_authmode_change", + "WifiEventStaAuthmodeChange", + "WifiEventStaAuthmodeChange", + "", + sizeof(WifiEventStaAuthmodeChange), + 2, + wifi_event_sta_authmode_change__field_descriptors, + wifi_event_sta_authmode_change__field_indices_by_name, + 1, wifi_event_sta_authmode_change__number_ranges, + (ProtobufCMessageInit) wifi_event_sta_authmode_change__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_event_sta_wps_er_pin__field_descriptors[1] = +{ { - "data", - 5, + "pin_code", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiActionTxReq, data), + offsetof(WifiEventStaWpsErPin, pin_code), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_action_tx_req__field_indices_by_name[] = { - 4, /* field[4] = data */ - 3, /* field[3] = data_len */ - 1, /* field[1] = dest_mac */ - 0, /* field[0] = ifx */ - 2, /* field[2] = no_ack */ +static const unsigned wifi_event_sta_wps_er_pin__field_indices_by_name[] = { + 0, /* field[0] = pin_code */ }; -static const ProtobufCIntRange wifi_action_tx_req__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_event_sta_wps_er_pin__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 5 } + { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_action_tx_req__descriptor = +const ProtobufCMessageDescriptor wifi_event_sta_wps_er_pin__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_action_tx_req", - "WifiActionTxReq", - "WifiActionTxReq", + "wifi_event_sta_wps_er_pin", + "WifiEventStaWpsErPin", + "WifiEventStaWpsErPin", "", - sizeof(WifiActionTxReq), - 5, - wifi_action_tx_req__field_descriptors, - wifi_action_tx_req__field_indices_by_name, - 1, wifi_action_tx_req__number_ranges, - (ProtobufCMessageInit) wifi_action_tx_req__init, + sizeof(WifiEventStaWpsErPin), + 1, + wifi_event_sta_wps_er_pin__field_descriptors, + wifi_event_sta_wps_er_pin__field_indices_by_name, + 1, wifi_event_sta_wps_er_pin__number_ranges, + (ProtobufCMessageInit) wifi_event_sta_wps_er_pin__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_ftm_initiator_cfg__field_descriptors[4] = +static const ProtobufCFieldDescriptor ap_cred__field_descriptors[2] = { { - "resp_mac", + "ssid", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiFtmInitiatorCfg, resp_mac), + offsetof(ApCred, ssid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "channel", + "passphrase", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiFtmInitiatorCfg, channel), + offsetof(ApCred, passphrase), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned ap_cred__field_indices_by_name[] = { + 1, /* field[1] = passphrase */ + 0, /* field[0] = ssid */ +}; +static const ProtobufCIntRange ap_cred__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor ap_cred__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "ap_cred", + "ApCred", + "ApCred", + "", + sizeof(ApCred), + 2, + ap_cred__field_descriptors, + ap_cred__field_indices_by_name, + 1, ap_cred__number_ranges, + (ProtobufCMessageInit) ap_cred__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_event_sta_wps_er_success__field_descriptors[2] = +{ { - "frm_count", - 3, + "ap_cred_cnt", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiFtmInitiatorCfg, frm_count), + offsetof(WifiEventStaWpsErSuccess, ap_cred_cnt), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "burst_period", - 4, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiFtmInitiatorCfg, burst_period), - NULL, + "ap_creds", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(WifiEventStaWpsErSuccess, n_ap_creds), + offsetof(WifiEventStaWpsErSuccess, ap_creds), + &ap_cred__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_ftm_initiator_cfg__field_indices_by_name[] = { - 3, /* field[3] = burst_period */ - 1, /* field[1] = channel */ - 2, /* field[2] = frm_count */ - 0, /* field[0] = resp_mac */ +static const unsigned wifi_event_sta_wps_er_success__field_indices_by_name[] = { + 0, /* field[0] = ap_cred_cnt */ + 1, /* field[1] = ap_creds */ }; -static const ProtobufCIntRange wifi_ftm_initiator_cfg__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_event_sta_wps_er_success__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 4 } + { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_ftm_initiator_cfg__descriptor = +const ProtobufCMessageDescriptor wifi_event_sta_wps_er_success__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_ftm_initiator_cfg", - "WifiFtmInitiatorCfg", - "WifiFtmInitiatorCfg", + "wifi_event_sta_wps_er_success", + "WifiEventStaWpsErSuccess", + "WifiEventStaWpsErSuccess", "", - sizeof(WifiFtmInitiatorCfg), - 4, - wifi_ftm_initiator_cfg__field_descriptors, - wifi_ftm_initiator_cfg__field_indices_by_name, - 1, wifi_ftm_initiator_cfg__number_ranges, - (ProtobufCMessageInit) wifi_ftm_initiator_cfg__init, + sizeof(WifiEventStaWpsErSuccess), + 2, + wifi_event_sta_wps_er_success__field_descriptors, + wifi_event_sta_wps_er_success__field_indices_by_name, + 1, wifi_event_sta_wps_er_success__number_ranges, + (ProtobufCMessageInit) wifi_event_sta_wps_er_success__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_sta_scan_done__field_descriptors[3] = +static const ProtobufCFieldDescriptor wifi_event_ap_probe_req_rx__field_descriptors[2] = { { - "status", + "rssi", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaScanDone, status), + offsetof(WifiEventApProbeReqRx, rssi), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "number", + "mac", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaScanDone, number), + offsetof(WifiEventApProbeReqRx, mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_event_ap_probe_req_rx__field_indices_by_name[] = { + 1, /* field[1] = mac */ + 0, /* field[0] = rssi */ +}; +static const ProtobufCIntRange wifi_event_ap_probe_req_rx__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor wifi_event_ap_probe_req_rx__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_event_ap_probe_req_rx", + "WifiEventApProbeReqRx", + "WifiEventApProbeReqRx", + "", + sizeof(WifiEventApProbeReqRx), + 2, + wifi_event_ap_probe_req_rx__field_descriptors, + wifi_event_ap_probe_req_rx__field_indices_by_name, + 1, wifi_event_ap_probe_req_rx__number_ranges, + (ProtobufCMessageInit) wifi_event_ap_probe_req_rx__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_event_bss_rssi_low__field_descriptors[1] = +{ { - "scan_id", - 3, + "rssi", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaScanDone, scan_id), + offsetof(WifiEventBssRssiLow, rssi), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_sta_scan_done__field_indices_by_name[] = { - 1, /* field[1] = number */ - 2, /* field[2] = scan_id */ - 0, /* field[0] = status */ +static const unsigned wifi_event_bss_rssi_low__field_indices_by_name[] = { + 0, /* field[0] = rssi */ }; -static const ProtobufCIntRange wifi_event_sta_scan_done__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_event_bss_rssi_low__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 3 } + { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_event_sta_scan_done__descriptor = +const ProtobufCMessageDescriptor wifi_event_bss_rssi_low__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_sta_scan_done", - "WifiEventStaScanDone", - "WifiEventStaScanDone", + "wifi_event_bss_rssi_low", + "WifiEventBssRssiLow", + "WifiEventBssRssiLow", "", - sizeof(WifiEventStaScanDone), - 3, - wifi_event_sta_scan_done__field_descriptors, - wifi_event_sta_scan_done__field_indices_by_name, - 1, wifi_event_sta_scan_done__number_ranges, - (ProtobufCMessageInit) wifi_event_sta_scan_done__init, + sizeof(WifiEventBssRssiLow), + 1, + wifi_event_bss_rssi_low__field_descriptors, + wifi_event_bss_rssi_low__field_indices_by_name, + 1, wifi_event_bss_rssi_low__number_ranges, + (ProtobufCMessageInit) wifi_event_bss_rssi_low__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_sta_connected__field_descriptors[6] = +static const ProtobufCFieldDescriptor wifi_ftm_report_entry__field_descriptors[7] = { { - "ssid", + "dlog_token", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaConnected, ssid), + offsetof(WifiFtmReportEntry, dlog_token), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ssid_len", + "rssi", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaConnected, ssid_len), + offsetof(WifiFtmReportEntry, rssi), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "bssid", + "rtt", 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaConnected, bssid), + offsetof(WifiFtmReportEntry, rtt), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "channel", + "t1", 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_UINT64, 0, /* quantifier_offset */ - offsetof(WifiEventStaConnected, channel), + offsetof(WifiFtmReportEntry, t1), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "authmode", + "t2", 5, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT64, 0, /* quantifier_offset */ - offsetof(WifiEventStaConnected, authmode), + offsetof(WifiFtmReportEntry, t2), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "aid", + "t3", 6, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT64, 0, /* quantifier_offset */ - offsetof(WifiEventStaConnected, aid), + offsetof(WifiFtmReportEntry, t3), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "t4", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(WifiFtmReportEntry, t4), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_sta_connected__field_indices_by_name[] = { - 5, /* field[5] = aid */ - 4, /* field[4] = authmode */ - 2, /* field[2] = bssid */ - 3, /* field[3] = channel */ - 0, /* field[0] = ssid */ - 1, /* field[1] = ssid_len */ +static const unsigned wifi_ftm_report_entry__field_indices_by_name[] = { + 0, /* field[0] = dlog_token */ + 1, /* field[1] = rssi */ + 2, /* field[2] = rtt */ + 3, /* field[3] = t1 */ + 4, /* field[4] = t2 */ + 5, /* field[5] = t3 */ + 6, /* field[6] = t4 */ }; -static const ProtobufCIntRange wifi_event_sta_connected__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_ftm_report_entry__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 6 } + { 0, 7 } }; -const ProtobufCMessageDescriptor wifi_event_sta_connected__descriptor = +const ProtobufCMessageDescriptor wifi_ftm_report_entry__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_sta_connected", - "WifiEventStaConnected", - "WifiEventStaConnected", + "wifi_ftm_report_entry", + "WifiFtmReportEntry", + "WifiFtmReportEntry", "", - sizeof(WifiEventStaConnected), - 6, - wifi_event_sta_connected__field_descriptors, - wifi_event_sta_connected__field_indices_by_name, - 1, wifi_event_sta_connected__number_ranges, - (ProtobufCMessageInit) wifi_event_sta_connected__init, + sizeof(WifiFtmReportEntry), + 7, + wifi_ftm_report_entry__field_descriptors, + wifi_ftm_report_entry__field_indices_by_name, + 1, wifi_ftm_report_entry__number_ranges, + (ProtobufCMessageInit) wifi_ftm_report_entry__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_sta_disconnected__field_descriptors[5] = +static const ProtobufCFieldDescriptor wifi_event_ftm_report__field_descriptors[7] = { { - "ssid", + "peer_mac", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiEventStaDisconnected, ssid), + offsetof(WifiEventFtmReport, peer_mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ssid_len", + "status", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaDisconnected, ssid_len), + offsetof(WifiEventFtmReport, status), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "bssid", + "rtt_raw", 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaDisconnected, bssid), + offsetof(WifiEventFtmReport, rtt_raw), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "reason", + "rtt_est", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaDisconnected, reason), + offsetof(WifiEventFtmReport, rtt_est), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "rssi", - 5, + "dist_est", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiEventFtmReport, dist_est), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ftm_report_data", + 6, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(WifiEventFtmReport, n_ftm_report_data), + offsetof(WifiEventFtmReport, ftm_report_data), + &wifi_ftm_report_entry__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ftm_report_num_entries", + 7, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaDisconnected, rssi), + offsetof(WifiEventFtmReport, ftm_report_num_entries), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_sta_disconnected__field_indices_by_name[] = { - 2, /* field[2] = bssid */ - 3, /* field[3] = reason */ - 4, /* field[4] = rssi */ - 0, /* field[0] = ssid */ - 1, /* field[1] = ssid_len */ +static const unsigned wifi_event_ftm_report__field_indices_by_name[] = { + 4, /* field[4] = dist_est */ + 5, /* field[5] = ftm_report_data */ + 6, /* field[6] = ftm_report_num_entries */ + 0, /* field[0] = peer_mac */ + 3, /* field[3] = rtt_est */ + 2, /* field[2] = rtt_raw */ + 1, /* field[1] = status */ }; -static const ProtobufCIntRange wifi_event_sta_disconnected__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_event_ftm_report__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 5 } + { 0, 7 } }; -const ProtobufCMessageDescriptor wifi_event_sta_disconnected__descriptor = +const ProtobufCMessageDescriptor wifi_event_ftm_report__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_sta_disconnected", - "WifiEventStaDisconnected", - "WifiEventStaDisconnected", + "wifi_event_ftm_report", + "WifiEventFtmReport", + "WifiEventFtmReport", "", - sizeof(WifiEventStaDisconnected), - 5, - wifi_event_sta_disconnected__field_descriptors, - wifi_event_sta_disconnected__field_indices_by_name, - 1, wifi_event_sta_disconnected__number_ranges, - (ProtobufCMessageInit) wifi_event_sta_disconnected__init, + sizeof(WifiEventFtmReport), + 7, + wifi_event_ftm_report__field_descriptors, + wifi_event_ftm_report__field_indices_by_name, + 1, wifi_event_ftm_report__number_ranges, + (ProtobufCMessageInit) wifi_event_ftm_report__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_sta_authmode_change__field_descriptors[2] = +static const ProtobufCFieldDescriptor wifi_event_action_tx_status__field_descriptors[4] = { { - "old_mode", + "ifx", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaAuthmodeChange, old_mode), + offsetof(WifiEventActionTxStatus, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "new_mode", + "context", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaAuthmodeChange, new_mode), + offsetof(WifiEventActionTxStatus, context), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned wifi_event_sta_authmode_change__field_indices_by_name[] = { - 1, /* field[1] = new_mode */ - 0, /* field[0] = old_mode */ -}; -static const ProtobufCIntRange wifi_event_sta_authmode_change__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor wifi_event_sta_authmode_change__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_sta_authmode_change", - "WifiEventStaAuthmodeChange", - "WifiEventStaAuthmodeChange", - "", - sizeof(WifiEventStaAuthmodeChange), - 2, - wifi_event_sta_authmode_change__field_descriptors, - wifi_event_sta_authmode_change__field_indices_by_name, - 1, wifi_event_sta_authmode_change__number_ranges, - (ProtobufCMessageInit) wifi_event_sta_authmode_change__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor wifi_event_sta_wps_er_pin__field_descriptors[1] = -{ { - "pin_code", - 1, + "da", + 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiEventStaWpsErPin, pin_code), + offsetof(WifiEventActionTxStatus, da), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "status", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiEventActionTxStatus, status), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_sta_wps_er_pin__field_indices_by_name[] = { - 0, /* field[0] = pin_code */ +static const unsigned wifi_event_action_tx_status__field_indices_by_name[] = { + 1, /* field[1] = context */ + 2, /* field[2] = da */ + 0, /* field[0] = ifx */ + 3, /* field[3] = status */ }; -static const ProtobufCIntRange wifi_event_sta_wps_er_pin__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_event_action_tx_status__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 4 } }; -const ProtobufCMessageDescriptor wifi_event_sta_wps_er_pin__descriptor = +const ProtobufCMessageDescriptor wifi_event_action_tx_status__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_sta_wps_er_pin", - "WifiEventStaWpsErPin", - "WifiEventStaWpsErPin", + "wifi_event_action_tx_status", + "WifiEventActionTxStatus", + "WifiEventActionTxStatus", "", - sizeof(WifiEventStaWpsErPin), - 1, - wifi_event_sta_wps_er_pin__field_descriptors, - wifi_event_sta_wps_er_pin__field_indices_by_name, - 1, wifi_event_sta_wps_er_pin__number_ranges, - (ProtobufCMessageInit) wifi_event_sta_wps_er_pin__init, + sizeof(WifiEventActionTxStatus), + 4, + wifi_event_action_tx_status__field_descriptors, + wifi_event_action_tx_status__field_indices_by_name, + 1, wifi_event_action_tx_status__number_ranges, + (ProtobufCMessageInit) wifi_event_action_tx_status__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor ap_cred__field_descriptors[2] = +static const ProtobufCFieldDescriptor wifi_event_roc_done__field_descriptors[1] = { { - "ssid", + "context", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, - 0, /* quantifier_offset */ - offsetof(ApCred, ssid), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "passphrase", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(ApCred, passphrase), + offsetof(WifiEventRocDone, context), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned ap_cred__field_indices_by_name[] = { - 1, /* field[1] = passphrase */ - 0, /* field[0] = ssid */ +static const unsigned wifi_event_roc_done__field_indices_by_name[] = { + 0, /* field[0] = context */ }; -static const ProtobufCIntRange ap_cred__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_event_roc_done__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor ap_cred__descriptor = +const ProtobufCMessageDescriptor wifi_event_roc_done__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "ap_cred", - "ApCred", - "ApCred", + "wifi_event_roc_done", + "WifiEventRocDone", + "WifiEventRocDone", "", - sizeof(ApCred), - 2, - ap_cred__field_descriptors, - ap_cred__field_indices_by_name, - 1, ap_cred__number_ranges, - (ProtobufCMessageInit) ap_cred__init, + sizeof(WifiEventRocDone), + 1, + wifi_event_roc_done__field_descriptors, + wifi_event_roc_done__field_indices_by_name, + 1, wifi_event_roc_done__number_ranges, + (ProtobufCMessageInit) wifi_event_roc_done__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_sta_wps_er_success__field_descriptors[2] = +static const ProtobufCFieldDescriptor wifi_event_ap_wps_rg_pin__field_descriptors[1] = { { - "ap_cred_cnt", + "pin_code", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiEventStaWpsErSuccess, ap_cred_cnt), - NULL, + offsetof(WifiEventApWpsRgPin, pin_code), NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "ap_creds", - 2, - PROTOBUF_C_LABEL_REPEATED, - PROTOBUF_C_TYPE_MESSAGE, - offsetof(WifiEventStaWpsErSuccess, n_ap_creds), - offsetof(WifiEventStaWpsErSuccess, ap_creds), - &ap_cred__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_sta_wps_er_success__field_indices_by_name[] = { - 0, /* field[0] = ap_cred_cnt */ - 1, /* field[1] = ap_creds */ +static const unsigned wifi_event_ap_wps_rg_pin__field_indices_by_name[] = { + 0, /* field[0] = pin_code */ }; -static const ProtobufCIntRange wifi_event_sta_wps_er_success__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_event_ap_wps_rg_pin__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_event_sta_wps_er_success__descriptor = +const ProtobufCMessageDescriptor wifi_event_ap_wps_rg_pin__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_sta_wps_er_success", - "WifiEventStaWpsErSuccess", - "WifiEventStaWpsErSuccess", + "wifi_event_ap_wps_rg_pin", + "WifiEventApWpsRgPin", + "WifiEventApWpsRgPin", "", - sizeof(WifiEventStaWpsErSuccess), - 2, - wifi_event_sta_wps_er_success__field_descriptors, - wifi_event_sta_wps_er_success__field_indices_by_name, - 1, wifi_event_sta_wps_er_success__number_ranges, - (ProtobufCMessageInit) wifi_event_sta_wps_er_success__init, + sizeof(WifiEventApWpsRgPin), + 1, + wifi_event_ap_wps_rg_pin__field_descriptors, + wifi_event_ap_wps_rg_pin__field_indices_by_name, + 1, wifi_event_ap_wps_rg_pin__number_ranges, + (ProtobufCMessageInit) wifi_event_ap_wps_rg_pin__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_ap_probe_req_rx__field_descriptors[2] = +static const ProtobufCFieldDescriptor wifi_event_ap_wps_rg_fail_reason__field_descriptors[2] = { { - "rssi", + "reason", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventApProbeReqRx, rssi), + offsetof(WifiEventApWpsRgFailReason, reason), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "mac", + "peer_macaddr", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiEventApProbeReqRx, mac), + offsetof(WifiEventApWpsRgFailReason, peer_macaddr), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_ap_probe_req_rx__field_indices_by_name[] = { - 1, /* field[1] = mac */ - 0, /* field[0] = rssi */ +static const unsigned wifi_event_ap_wps_rg_fail_reason__field_indices_by_name[] = { + 1, /* field[1] = peer_macaddr */ + 0, /* field[0] = reason */ }; -static const ProtobufCIntRange wifi_event_ap_probe_req_rx__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_event_ap_wps_rg_fail_reason__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_event_ap_probe_req_rx__descriptor = +const ProtobufCMessageDescriptor wifi_event_ap_wps_rg_fail_reason__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_ap_probe_req_rx", - "WifiEventApProbeReqRx", - "WifiEventApProbeReqRx", + "wifi_event_ap_wps_rg_fail_reason", + "WifiEventApWpsRgFailReason", + "WifiEventApWpsRgFailReason", "", - sizeof(WifiEventApProbeReqRx), + sizeof(WifiEventApWpsRgFailReason), 2, - wifi_event_ap_probe_req_rx__field_descriptors, - wifi_event_ap_probe_req_rx__field_indices_by_name, - 1, wifi_event_ap_probe_req_rx__number_ranges, - (ProtobufCMessageInit) wifi_event_ap_probe_req_rx__init, + wifi_event_ap_wps_rg_fail_reason__field_descriptors, + wifi_event_ap_wps_rg_fail_reason__field_indices_by_name, + 1, wifi_event_ap_wps_rg_fail_reason__number_ranges, + (ProtobufCMessageInit) wifi_event_ap_wps_rg_fail_reason__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_bss_rssi_low__field_descriptors[1] = +static const ProtobufCFieldDescriptor wifi_event_ap_wps_rg_success__field_descriptors[1] = { { - "rssi", + "peer_macaddr", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiEventBssRssiLow, rssi), + offsetof(WifiEventApWpsRgSuccess, peer_macaddr), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_bss_rssi_low__field_indices_by_name[] = { - 0, /* field[0] = rssi */ +static const unsigned wifi_event_ap_wps_rg_success__field_indices_by_name[] = { + 0, /* field[0] = peer_macaddr */ }; -static const ProtobufCIntRange wifi_event_bss_rssi_low__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_event_ap_wps_rg_success__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_event_bss_rssi_low__descriptor = +const ProtobufCMessageDescriptor wifi_event_ap_wps_rg_success__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_bss_rssi_low", - "WifiEventBssRssiLow", - "WifiEventBssRssiLow", + "wifi_event_ap_wps_rg_success", + "WifiEventApWpsRgSuccess", + "WifiEventApWpsRgSuccess", "", - sizeof(WifiEventBssRssiLow), + sizeof(WifiEventApWpsRgSuccess), 1, - wifi_event_bss_rssi_low__field_descriptors, - wifi_event_bss_rssi_low__field_indices_by_name, - 1, wifi_event_bss_rssi_low__number_ranges, - (ProtobufCMessageInit) wifi_event_bss_rssi_low__init, + wifi_event_ap_wps_rg_success__field_descriptors, + wifi_event_ap_wps_rg_success__field_indices_by_name, + 1, wifi_event_ap_wps_rg_success__number_ranges, + (ProtobufCMessageInit) wifi_event_ap_wps_rg_success__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_ftm_report_entry__field_descriptors[7] = +static const ProtobufCFieldDescriptor wifi_protocols__field_descriptors[2] = { { - "dlog_token", + "ghz_2g", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiFtmReportEntry, dlog_token), + offsetof(WifiProtocols, ghz_2g), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "rssi", + "ghz_5g", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiFtmReportEntry, rssi), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "rtt", - 3, - PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiFtmReportEntry, rtt), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "t1", - 4, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT64, - 0, /* quantifier_offset */ - offsetof(WifiFtmReportEntry, t1), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "t2", - 5, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT64, - 0, /* quantifier_offset */ - offsetof(WifiFtmReportEntry, t2), + offsetof(WifiProtocols, ghz_5g), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_protocols__field_indices_by_name[] = { + 0, /* field[0] = ghz_2g */ + 1, /* field[1] = ghz_5g */ +}; +static const ProtobufCIntRange wifi_protocols__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor wifi_protocols__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_protocols", + "WifiProtocols", + "WifiProtocols", + "", + sizeof(WifiProtocols), + 2, + wifi_protocols__field_descriptors, + wifi_protocols__field_indices_by_name, + 1, wifi_protocols__number_ranges, + (ProtobufCMessageInit) wifi_protocols__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_bandwidths__field_descriptors[2] = +{ { - "t3", - 6, + "ghz_2g", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT64, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiFtmReportEntry, t3), + offsetof(WifiBandwidths, ghz_2g), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "t4", - 7, + "ghz_5g", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT64, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiFtmReportEntry, t4), + offsetof(WifiBandwidths, ghz_5g), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_ftm_report_entry__field_indices_by_name[] = { - 0, /* field[0] = dlog_token */ - 1, /* field[1] = rssi */ - 2, /* field[2] = rtt */ - 3, /* field[3] = t1 */ - 4, /* field[4] = t2 */ - 5, /* field[5] = t3 */ - 6, /* field[6] = t4 */ +static const unsigned wifi_bandwidths__field_indices_by_name[] = { + 0, /* field[0] = ghz_2g */ + 1, /* field[1] = ghz_5g */ }; -static const ProtobufCIntRange wifi_ftm_report_entry__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_bandwidths__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 7 } + { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_ftm_report_entry__descriptor = +const ProtobufCMessageDescriptor wifi_bandwidths__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_ftm_report_entry", - "WifiFtmReportEntry", - "WifiFtmReportEntry", + "wifi_bandwidths", + "WifiBandwidths", + "WifiBandwidths", "", - sizeof(WifiFtmReportEntry), - 7, - wifi_ftm_report_entry__field_descriptors, - wifi_ftm_report_entry__field_indices_by_name, - 1, wifi_ftm_report_entry__number_ranges, - (ProtobufCMessageInit) wifi_ftm_report_entry__init, + sizeof(WifiBandwidths), + 2, + wifi_bandwidths__field_descriptors, + wifi_bandwidths__field_indices_by_name, + 1, wifi_bandwidths__number_ranges, + (ProtobufCMessageInit) wifi_bandwidths__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_ftm_report__field_descriptors[7] = +static const ProtobufCFieldDescriptor wifi_itwt_setup_config__field_descriptors[6] = { { - "peer_mac", + "setup_cmd", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventFtmReport, peer_mac), + offsetof(WifiItwtSetupConfig, setup_cmd), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "status", + "bitmask_1", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventFtmReport, status), + offsetof(WifiItwtSetupConfig, bitmask_1), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "rtt_raw", + "min_wake_dura", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventFtmReport, rtt_raw), + offsetof(WifiItwtSetupConfig, min_wake_dura), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "rtt_est", + "wake_invl_mant", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventFtmReport, rtt_est), + offsetof(WifiItwtSetupConfig, wake_invl_mant), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dist_est", + "twt_id", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventFtmReport, dist_est), + offsetof(WifiItwtSetupConfig, twt_id), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ftm_report_data", + "timeout_time_ms", 6, - PROTOBUF_C_LABEL_REPEATED, - PROTOBUF_C_TYPE_MESSAGE, - offsetof(WifiEventFtmReport, n_ftm_report_data), - offsetof(WifiEventFtmReport, ftm_report_data), - &wifi_ftm_report_entry__descriptor, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "ftm_report_num_entries", - 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventFtmReport, ftm_report_num_entries), + offsetof(WifiItwtSetupConfig, timeout_time_ms), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_ftm_report__field_indices_by_name[] = { - 4, /* field[4] = dist_est */ - 5, /* field[5] = ftm_report_data */ - 6, /* field[6] = ftm_report_num_entries */ - 0, /* field[0] = peer_mac */ - 3, /* field[3] = rtt_est */ - 2, /* field[2] = rtt_raw */ - 1, /* field[1] = status */ +static const unsigned wifi_itwt_setup_config__field_indices_by_name[] = { + 1, /* field[1] = bitmask_1 */ + 2, /* field[2] = min_wake_dura */ + 0, /* field[0] = setup_cmd */ + 5, /* field[5] = timeout_time_ms */ + 4, /* field[4] = twt_id */ + 3, /* field[3] = wake_invl_mant */ }; -static const ProtobufCIntRange wifi_event_ftm_report__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_itwt_setup_config__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 7 } + { 0, 6 } }; -const ProtobufCMessageDescriptor wifi_event_ftm_report__descriptor = +const ProtobufCMessageDescriptor wifi_itwt_setup_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_ftm_report", - "WifiEventFtmReport", - "WifiEventFtmReport", + "wifi_itwt_setup_config", + "WifiItwtSetupConfig", + "WifiItwtSetupConfig", "", - sizeof(WifiEventFtmReport), - 7, - wifi_event_ftm_report__field_descriptors, - wifi_event_ftm_report__field_indices_by_name, - 1, wifi_event_ftm_report__number_ranges, - (ProtobufCMessageInit) wifi_event_ftm_report__init, + sizeof(WifiItwtSetupConfig), + 6, + wifi_itwt_setup_config__field_descriptors, + wifi_itwt_setup_config__field_indices_by_name, + 1, wifi_itwt_setup_config__number_ranges, + (ProtobufCMessageInit) wifi_itwt_setup_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_action_tx_status__field_descriptors[4] = +static const ProtobufCFieldDescriptor wifi_twt_config__field_descriptors[2] = { { - "ifx", + "post_wakeup_event", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiEventActionTxStatus, ifx), + offsetof(WifiTwtConfig, post_wakeup_event), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "context", + "twt_enable_keep_alive", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiEventActionTxStatus, context), + offsetof(WifiTwtConfig, twt_enable_keep_alive), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_twt_config__field_indices_by_name[] = { + 0, /* field[0] = post_wakeup_event */ + 1, /* field[1] = twt_enable_keep_alive */ +}; +static const ProtobufCIntRange wifi_twt_config__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor wifi_twt_config__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_twt_config", + "WifiTwtConfig", + "WifiTwtConfig", + "", + sizeof(WifiTwtConfig), + 2, + wifi_twt_config__field_descriptors, + wifi_twt_config__field_indices_by_name, + 1, wifi_twt_config__number_ranges, + (ProtobufCMessageInit) wifi_twt_config__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor connected_stalist__field_descriptors[2] = +{ { - "da", - 3, + "mac", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiEventActionTxStatus, da), + offsetof(ConnectedSTAList, mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "status", - 4, + "rssi", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventActionTxStatus, status), + offsetof(ConnectedSTAList, rssi), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_action_tx_status__field_indices_by_name[] = { - 1, /* field[1] = context */ - 2, /* field[2] = da */ - 0, /* field[0] = ifx */ - 3, /* field[3] = status */ +static const unsigned connected_stalist__field_indices_by_name[] = { + 0, /* field[0] = mac */ + 1, /* field[1] = rssi */ }; -static const ProtobufCIntRange wifi_event_action_tx_status__number_ranges[1 + 1] = +static const ProtobufCIntRange connected_stalist__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 4 } + { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_event_action_tx_status__descriptor = +const ProtobufCMessageDescriptor connected_stalist__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_action_tx_status", - "WifiEventActionTxStatus", - "WifiEventActionTxStatus", + "ConnectedSTAList", + "ConnectedSTAList", + "ConnectedSTAList", "", - sizeof(WifiEventActionTxStatus), - 4, - wifi_event_action_tx_status__field_descriptors, - wifi_event_action_tx_status__field_indices_by_name, - 1, wifi_event_action_tx_status__number_ranges, - (ProtobufCMessageInit) wifi_event_action_tx_status__init, + sizeof(ConnectedSTAList), + 2, + connected_stalist__field_descriptors, + connected_stalist__field_indices_by_name, + 1, connected_stalist__number_ranges, + (ProtobufCMessageInit) connected_stalist__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_roc_done__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__get_mac_address__field_descriptors[1] = { { - "context", + "mode", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventRocDone, context), + offsetof(RpcReqGetMacAddress, mode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_roc_done__field_indices_by_name[] = { - 0, /* field[0] = context */ +static const unsigned rpc__req__get_mac_address__field_indices_by_name[] = { + 0, /* field[0] = mode */ }; -static const ProtobufCIntRange wifi_event_roc_done__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__get_mac_address__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_event_roc_done__descriptor = +const ProtobufCMessageDescriptor rpc__req__get_mac_address__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_roc_done", - "WifiEventRocDone", - "WifiEventRocDone", + "Rpc_Req_GetMacAddress", + "RpcReqGetMacAddress", + "RpcReqGetMacAddress", "", - sizeof(WifiEventRocDone), + sizeof(RpcReqGetMacAddress), 1, - wifi_event_roc_done__field_descriptors, - wifi_event_roc_done__field_indices_by_name, - 1, wifi_event_roc_done__number_ranges, - (ProtobufCMessageInit) wifi_event_roc_done__init, + rpc__req__get_mac_address__field_descriptors, + rpc__req__get_mac_address__field_indices_by_name, + 1, rpc__req__get_mac_address__number_ranges, + (ProtobufCMessageInit) rpc__req__get_mac_address__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_ap_wps_rg_pin__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__get_mac_address__field_descriptors[2] = { { - "pin_code", + "mac", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiEventApWpsRgPin, pin_code), + offsetof(RpcRespGetMacAddress, mac), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespGetMacAddress, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_ap_wps_rg_pin__field_indices_by_name[] = { - 0, /* field[0] = pin_code */ +static const unsigned rpc__resp__get_mac_address__field_indices_by_name[] = { + 0, /* field[0] = mac */ + 1, /* field[1] = resp */ }; -static const ProtobufCIntRange wifi_event_ap_wps_rg_pin__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__get_mac_address__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_event_ap_wps_rg_pin__descriptor = +const ProtobufCMessageDescriptor rpc__resp__get_mac_address__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_ap_wps_rg_pin", - "WifiEventApWpsRgPin", - "WifiEventApWpsRgPin", + "Rpc_Resp_GetMacAddress", + "RpcRespGetMacAddress", + "RpcRespGetMacAddress", "", - sizeof(WifiEventApWpsRgPin), - 1, - wifi_event_ap_wps_rg_pin__field_descriptors, - wifi_event_ap_wps_rg_pin__field_indices_by_name, - 1, wifi_event_ap_wps_rg_pin__number_ranges, - (ProtobufCMessageInit) wifi_event_ap_wps_rg_pin__init, + sizeof(RpcRespGetMacAddress), + 2, + rpc__resp__get_mac_address__field_descriptors, + rpc__resp__get_mac_address__field_indices_by_name, + 1, rpc__resp__get_mac_address__number_ranges, + (ProtobufCMessageInit) rpc__resp__get_mac_address__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_ap_wps_rg_fail_reason__field_descriptors[2] = +#define rpc__req__get_mode__field_descriptors NULL +#define rpc__req__get_mode__field_indices_by_name NULL +#define rpc__req__get_mode__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__get_mode__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_GetMode", + "RpcReqGetMode", + "RpcReqGetMode", + "", + sizeof(RpcReqGetMode), + 0, + rpc__req__get_mode__field_descriptors, + rpc__req__get_mode__field_indices_by_name, + 0, rpc__req__get_mode__number_ranges, + (ProtobufCMessageInit) rpc__req__get_mode__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__get_mode__field_descriptors[2] = { { - "reason", + "mode", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventApWpsRgFailReason, reason), + offsetof(RpcRespGetMode, mode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "peer_macaddr", + "resp", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventApWpsRgFailReason, peer_macaddr), + offsetof(RpcRespGetMode, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_ap_wps_rg_fail_reason__field_indices_by_name[] = { - 1, /* field[1] = peer_macaddr */ - 0, /* field[0] = reason */ +static const unsigned rpc__resp__get_mode__field_indices_by_name[] = { + 0, /* field[0] = mode */ + 1, /* field[1] = resp */ }; -static const ProtobufCIntRange wifi_event_ap_wps_rg_fail_reason__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__get_mode__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_event_ap_wps_rg_fail_reason__descriptor = +const ProtobufCMessageDescriptor rpc__resp__get_mode__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_ap_wps_rg_fail_reason", - "WifiEventApWpsRgFailReason", - "WifiEventApWpsRgFailReason", + "Rpc_Resp_GetMode", + "RpcRespGetMode", + "RpcRespGetMode", "", - sizeof(WifiEventApWpsRgFailReason), + sizeof(RpcRespGetMode), 2, - wifi_event_ap_wps_rg_fail_reason__field_descriptors, - wifi_event_ap_wps_rg_fail_reason__field_indices_by_name, - 1, wifi_event_ap_wps_rg_fail_reason__number_ranges, - (ProtobufCMessageInit) wifi_event_ap_wps_rg_fail_reason__init, + rpc__resp__get_mode__field_descriptors, + rpc__resp__get_mode__field_indices_by_name, + 1, rpc__resp__get_mode__number_ranges, + (ProtobufCMessageInit) rpc__resp__get_mode__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_ap_wps_rg_success__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__set_mode__field_descriptors[1] = { { - "peer_macaddr", + "mode", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventApWpsRgSuccess, peer_macaddr), + offsetof(RpcReqSetMode, mode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_ap_wps_rg_success__field_indices_by_name[] = { - 0, /* field[0] = peer_macaddr */ +static const unsigned rpc__req__set_mode__field_indices_by_name[] = { + 0, /* field[0] = mode */ }; -static const ProtobufCIntRange wifi_event_ap_wps_rg_success__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__set_mode__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_event_ap_wps_rg_success__descriptor = +const ProtobufCMessageDescriptor rpc__req__set_mode__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_ap_wps_rg_success", - "WifiEventApWpsRgSuccess", - "WifiEventApWpsRgSuccess", + "Rpc_Req_SetMode", + "RpcReqSetMode", + "RpcReqSetMode", "", - sizeof(WifiEventApWpsRgSuccess), + sizeof(RpcReqSetMode), 1, - wifi_event_ap_wps_rg_success__field_descriptors, - wifi_event_ap_wps_rg_success__field_indices_by_name, - 1, wifi_event_ap_wps_rg_success__number_ranges, - (ProtobufCMessageInit) wifi_event_ap_wps_rg_success__init, + rpc__req__set_mode__field_descriptors, + rpc__req__set_mode__field_indices_by_name, + 1, rpc__req__set_mode__number_ranges, + (ProtobufCMessageInit) rpc__req__set_mode__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_protocols__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__set_mode__field_descriptors[1] = { { - "ghz_2g", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiProtocols, ghz_2g), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "ghz_5g", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiProtocols, ghz_5g), + offsetof(RpcRespSetMode, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_protocols__field_indices_by_name[] = { - 0, /* field[0] = ghz_2g */ - 1, /* field[1] = ghz_5g */ +static const unsigned rpc__resp__set_mode__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange wifi_protocols__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__set_mode__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_protocols__descriptor = +const ProtobufCMessageDescriptor rpc__resp__set_mode__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_protocols", - "WifiProtocols", - "WifiProtocols", + "Rpc_Resp_SetMode", + "RpcRespSetMode", + "RpcRespSetMode", "", - sizeof(WifiProtocols), - 2, - wifi_protocols__field_descriptors, - wifi_protocols__field_indices_by_name, - 1, wifi_protocols__number_ranges, - (ProtobufCMessageInit) wifi_protocols__init, + sizeof(RpcRespSetMode), + 1, + rpc__resp__set_mode__field_descriptors, + rpc__resp__set_mode__field_indices_by_name, + 1, rpc__resp__set_mode__number_ranges, + (ProtobufCMessageInit) rpc__resp__set_mode__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_bandwidths__field_descriptors[2] = +#define rpc__req__get_ps__field_descriptors NULL +#define rpc__req__get_ps__field_indices_by_name NULL +#define rpc__req__get_ps__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__get_ps__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_GetPs", + "RpcReqGetPs", + "RpcReqGetPs", + "", + sizeof(RpcReqGetPs), + 0, + rpc__req__get_ps__field_descriptors, + rpc__req__get_ps__field_indices_by_name, + 0, rpc__req__get_ps__number_ranges, + (ProtobufCMessageInit) rpc__req__get_ps__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__get_ps__field_descriptors[2] = { { - "ghz_2g", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiBandwidths, ghz_2g), + offsetof(RpcRespGetPs, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ghz_5g", + "type", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiBandwidths, ghz_5g), + offsetof(RpcRespGetPs, type), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_bandwidths__field_indices_by_name[] = { - 0, /* field[0] = ghz_2g */ - 1, /* field[1] = ghz_5g */ +static const unsigned rpc__resp__get_ps__field_indices_by_name[] = { + 0, /* field[0] = resp */ + 1, /* field[1] = type */ }; -static const ProtobufCIntRange wifi_bandwidths__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__get_ps__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_bandwidths__descriptor = +const ProtobufCMessageDescriptor rpc__resp__get_ps__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_bandwidths", - "WifiBandwidths", - "WifiBandwidths", + "Rpc_Resp_GetPs", + "RpcRespGetPs", + "RpcRespGetPs", "", - sizeof(WifiBandwidths), + sizeof(RpcRespGetPs), 2, - wifi_bandwidths__field_descriptors, - wifi_bandwidths__field_indices_by_name, - 1, wifi_bandwidths__number_ranges, - (ProtobufCMessageInit) wifi_bandwidths__init, + rpc__resp__get_ps__field_descriptors, + rpc__resp__get_ps__field_indices_by_name, + 1, rpc__resp__get_ps__number_ranges, + (ProtobufCMessageInit) rpc__resp__get_ps__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_itwt_setup_config__field_descriptors[6] = +static const ProtobufCFieldDescriptor rpc__req__set_ps__field_descriptors[1] = { { - "setup_cmd", + "type", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiItwtSetupConfig, setup_cmd), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "bitmask_1", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiItwtSetupConfig, bitmask_1), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "min_wake_dura", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiItwtSetupConfig, min_wake_dura), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "wake_invl_mant", - 4, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiItwtSetupConfig, wake_invl_mant), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "twt_id", - 5, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiItwtSetupConfig, twt_id), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "timeout_time_ms", - 6, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiItwtSetupConfig, timeout_time_ms), + offsetof(RpcReqSetPs, type), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_itwt_setup_config__field_indices_by_name[] = { - 1, /* field[1] = bitmask_1 */ - 2, /* field[2] = min_wake_dura */ - 0, /* field[0] = setup_cmd */ - 5, /* field[5] = timeout_time_ms */ - 4, /* field[4] = twt_id */ - 3, /* field[3] = wake_invl_mant */ +static const unsigned rpc__req__set_ps__field_indices_by_name[] = { + 0, /* field[0] = type */ }; -static const ProtobufCIntRange wifi_itwt_setup_config__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__set_ps__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 6 } + { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_itwt_setup_config__descriptor = +const ProtobufCMessageDescriptor rpc__req__set_ps__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_itwt_setup_config", - "WifiItwtSetupConfig", - "WifiItwtSetupConfig", + "Rpc_Req_SetPs", + "RpcReqSetPs", + "RpcReqSetPs", "", - sizeof(WifiItwtSetupConfig), - 6, - wifi_itwt_setup_config__field_descriptors, - wifi_itwt_setup_config__field_indices_by_name, - 1, wifi_itwt_setup_config__number_ranges, - (ProtobufCMessageInit) wifi_itwt_setup_config__init, + sizeof(RpcReqSetPs), + 1, + rpc__req__set_ps__field_descriptors, + rpc__req__set_ps__field_indices_by_name, + 1, rpc__req__set_ps__number_ranges, + (ProtobufCMessageInit) rpc__req__set_ps__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_twt_config__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__set_ps__field_descriptors[1] = { { - "post_wakeup_event", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, - 0, /* quantifier_offset */ - offsetof(WifiTwtConfig, post_wakeup_event), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "twt_enable_keep_alive", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiTwtConfig, twt_enable_keep_alive), + offsetof(RpcRespSetPs, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_twt_config__field_indices_by_name[] = { - 0, /* field[0] = post_wakeup_event */ - 1, /* field[1] = twt_enable_keep_alive */ +static const unsigned rpc__resp__set_ps__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange wifi_twt_config__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__set_ps__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_twt_config__descriptor = +const ProtobufCMessageDescriptor rpc__resp__set_ps__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_twt_config", - "WifiTwtConfig", - "WifiTwtConfig", + "Rpc_Resp_SetPs", + "RpcRespSetPs", + "RpcRespSetPs", "", - sizeof(WifiTwtConfig), - 2, - wifi_twt_config__field_descriptors, - wifi_twt_config__field_indices_by_name, - 1, wifi_twt_config__number_ranges, - (ProtobufCMessageInit) wifi_twt_config__init, + sizeof(RpcRespSetPs), + 1, + rpc__resp__set_ps__field_descriptors, + rpc__resp__set_ps__field_indices_by_name, + 1, rpc__resp__set_ps__number_ranges, + (ProtobufCMessageInit) rpc__resp__set_ps__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor connected_stalist__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__set_mac_address__field_descriptors[2] = { { "mac", @@ -12697,246 +13802,314 @@ static const ProtobufCFieldDescriptor connected_stalist__field_descriptors[2] = PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(ConnectedSTAList, mac), + offsetof(RpcReqSetMacAddress, mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "rssi", + "mode", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(ConnectedSTAList, rssi), + offsetof(RpcReqSetMacAddress, mode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned connected_stalist__field_indices_by_name[] = { +static const unsigned rpc__req__set_mac_address__field_indices_by_name[] = { 0, /* field[0] = mac */ - 1, /* field[1] = rssi */ + 1, /* field[1] = mode */ }; -static const ProtobufCIntRange connected_stalist__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__set_mac_address__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor connected_stalist__descriptor = +const ProtobufCMessageDescriptor rpc__req__set_mac_address__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "ConnectedSTAList", - "ConnectedSTAList", - "ConnectedSTAList", + "Rpc_Req_SetMacAddress", + "RpcReqSetMacAddress", + "RpcReqSetMacAddress", "", - sizeof(ConnectedSTAList), + sizeof(RpcReqSetMacAddress), 2, - connected_stalist__field_descriptors, - connected_stalist__field_indices_by_name, - 1, connected_stalist__number_ranges, - (ProtobufCMessageInit) connected_stalist__init, + rpc__req__set_mac_address__field_descriptors, + rpc__req__set_mac_address__field_indices_by_name, + 1, rpc__req__set_mac_address__number_ranges, + (ProtobufCMessageInit) rpc__req__set_mac_address__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__get_mac_address__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__set_mac_address__field_descriptors[1] = { { - "mode", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqGetMacAddress, mode), + offsetof(RpcRespSetMacAddress, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__get_mac_address__field_indices_by_name[] = { - 0, /* field[0] = mode */ +static const unsigned rpc__resp__set_mac_address__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__get_mac_address__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__set_mac_address__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__get_mac_address__descriptor = +const ProtobufCMessageDescriptor rpc__resp__set_mac_address__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_GetMacAddress", - "RpcReqGetMacAddress", - "RpcReqGetMacAddress", + "Rpc_Resp_SetMacAddress", + "RpcRespSetMacAddress", + "RpcRespSetMacAddress", "", - sizeof(RpcReqGetMacAddress), + sizeof(RpcRespSetMacAddress), 1, - rpc__req__get_mac_address__field_descriptors, - rpc__req__get_mac_address__field_indices_by_name, - 1, rpc__req__get_mac_address__number_ranges, - (ProtobufCMessageInit) rpc__req__get_mac_address__init, + rpc__resp__set_mac_address__field_descriptors, + rpc__resp__set_mac_address__field_indices_by_name, + 1, rpc__resp__set_mac_address__number_ranges, + (ProtobufCMessageInit) rpc__resp__set_mac_address__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__get_mac_address__field_descriptors[2] = +#define rpc__req__otabegin__field_descriptors NULL +#define rpc__req__otabegin__field_indices_by_name NULL +#define rpc__req__otabegin__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__otabegin__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_OTABegin", + "RpcReqOTABegin", + "RpcReqOTABegin", + "", + sizeof(RpcReqOTABegin), + 0, + rpc__req__otabegin__field_descriptors, + rpc__req__otabegin__field_indices_by_name, + 0, rpc__req__otabegin__number_ranges, + (ProtobufCMessageInit) rpc__req__otabegin__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__otabegin__field_descriptors[1] = { { - "mac", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetMacAddress, mac), + offsetof(RpcRespOTABegin, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__otabegin__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__otabegin__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__otabegin__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_OTABegin", + "RpcRespOTABegin", + "RpcRespOTABegin", + "", + sizeof(RpcRespOTABegin), + 1, + rpc__resp__otabegin__field_descriptors, + rpc__resp__otabegin__field_indices_by_name, + 1, rpc__resp__otabegin__number_ranges, + (ProtobufCMessageInit) rpc__resp__otabegin__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__otawrite__field_descriptors[1] = +{ { - "resp", - 2, + "ota_data", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcRespGetMacAddress, resp), + offsetof(RpcReqOTAWrite, ota_data), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__get_mac_address__field_indices_by_name[] = { - 0, /* field[0] = mac */ - 1, /* field[1] = resp */ +static const unsigned rpc__req__otawrite__field_indices_by_name[] = { + 0, /* field[0] = ota_data */ }; -static const ProtobufCIntRange rpc__resp__get_mac_address__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__otawrite__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor rpc__resp__get_mac_address__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_GetMacAddress", - "RpcRespGetMacAddress", - "RpcRespGetMacAddress", - "", - sizeof(RpcRespGetMacAddress), - 2, - rpc__resp__get_mac_address__field_descriptors, - rpc__resp__get_mac_address__field_indices_by_name, - 1, rpc__resp__get_mac_address__number_ranges, - (ProtobufCMessageInit) rpc__resp__get_mac_address__init, - NULL,NULL,NULL /* reserved[123] */ + { 0, 1 } }; -#define rpc__req__get_mode__field_descriptors NULL -#define rpc__req__get_mode__field_indices_by_name NULL -#define rpc__req__get_mode__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__get_mode__descriptor = +const ProtobufCMessageDescriptor rpc__req__otawrite__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_GetMode", - "RpcReqGetMode", - "RpcReqGetMode", + "Rpc_Req_OTAWrite", + "RpcReqOTAWrite", + "RpcReqOTAWrite", "", - sizeof(RpcReqGetMode), - 0, - rpc__req__get_mode__field_descriptors, - rpc__req__get_mode__field_indices_by_name, - 0, rpc__req__get_mode__number_ranges, - (ProtobufCMessageInit) rpc__req__get_mode__init, + sizeof(RpcReqOTAWrite), + 1, + rpc__req__otawrite__field_descriptors, + rpc__req__otawrite__field_indices_by_name, + 1, rpc__req__otawrite__number_ranges, + (ProtobufCMessageInit) rpc__req__otawrite__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__get_mode__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__otawrite__field_descriptors[1] = { { - "mode", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetMode, mode), + offsetof(RpcRespOTAWrite, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__otawrite__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__otawrite__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__otawrite__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_OTAWrite", + "RpcRespOTAWrite", + "RpcRespOTAWrite", + "", + sizeof(RpcRespOTAWrite), + 1, + rpc__resp__otawrite__field_descriptors, + rpc__resp__otawrite__field_indices_by_name, + 1, rpc__resp__otawrite__number_ranges, + (ProtobufCMessageInit) rpc__resp__otawrite__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define rpc__req__otaend__field_descriptors NULL +#define rpc__req__otaend__field_indices_by_name NULL +#define rpc__req__otaend__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__otaend__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_OTAEnd", + "RpcReqOTAEnd", + "RpcReqOTAEnd", + "", + sizeof(RpcReqOTAEnd), + 0, + rpc__req__otaend__field_descriptors, + rpc__req__otaend__field_indices_by_name, + 0, rpc__req__otaend__number_ranges, + (ProtobufCMessageInit) rpc__req__otaend__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__otaend__field_descriptors[1] = +{ { "resp", - 2, + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetMode, resp), + offsetof(RpcRespOTAEnd, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__get_mode__field_indices_by_name[] = { - 0, /* field[0] = mode */ - 1, /* field[1] = resp */ +static const unsigned rpc__resp__otaend__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__get_mode__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__otaend__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__get_mode__descriptor = +const ProtobufCMessageDescriptor rpc__resp__otaend__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_GetMode", - "RpcRespGetMode", - "RpcRespGetMode", + "Rpc_Resp_OTAEnd", + "RpcRespOTAEnd", + "RpcRespOTAEnd", "", - sizeof(RpcRespGetMode), - 2, - rpc__resp__get_mode__field_descriptors, - rpc__resp__get_mode__field_indices_by_name, - 1, rpc__resp__get_mode__number_ranges, - (ProtobufCMessageInit) rpc__resp__get_mode__init, + sizeof(RpcRespOTAEnd), + 1, + rpc__resp__otaend__field_descriptors, + rpc__resp__otaend__field_indices_by_name, + 1, rpc__resp__otaend__number_ranges, + (ProtobufCMessageInit) rpc__resp__otaend__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__set_mode__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_max_tx_power__field_descriptors[1] = { { - "mode", + "power", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqSetMode, mode), + offsetof(RpcReqWifiSetMaxTxPower, power), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__set_mode__field_indices_by_name[] = { - 0, /* field[0] = mode */ +static const unsigned rpc__req__wifi_set_max_tx_power__field_indices_by_name[] = { + 0, /* field[0] = power */ }; -static const ProtobufCIntRange rpc__req__set_mode__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_max_tx_power__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__set_mode__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_max_tx_power__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_SetMode", - "RpcReqSetMode", - "RpcReqSetMode", + "Rpc_Req_WifiSetMaxTxPower", + "RpcReqWifiSetMaxTxPower", + "RpcReqWifiSetMaxTxPower", "", - sizeof(RpcReqSetMode), + sizeof(RpcReqWifiSetMaxTxPower), 1, - rpc__req__set_mode__field_descriptors, - rpc__req__set_mode__field_indices_by_name, - 1, rpc__req__set_mode__number_ranges, - (ProtobufCMessageInit) rpc__req__set_mode__init, + rpc__req__wifi_set_max_tx_power__field_descriptors, + rpc__req__wifi_set_max_tx_power__field_indices_by_name, + 1, rpc__req__wifi_set_max_tx_power__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_max_tx_power__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__set_mode__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_max_tx_power__field_descriptors[1] = { { "resp", @@ -12944,144 +14117,157 @@ static const ProtobufCFieldDescriptor rpc__resp__set_mode__field_descriptors[1] PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespSetMode, resp), + offsetof(RpcRespWifiSetMaxTxPower, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__set_mode__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_set_max_tx_power__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__set_mode__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_max_tx_power__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__set_mode__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_max_tx_power__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_SetMode", - "RpcRespSetMode", - "RpcRespSetMode", + "Rpc_Resp_WifiSetMaxTxPower", + "RpcRespWifiSetMaxTxPower", + "RpcRespWifiSetMaxTxPower", "", - sizeof(RpcRespSetMode), + sizeof(RpcRespWifiSetMaxTxPower), 1, - rpc__resp__set_mode__field_descriptors, - rpc__resp__set_mode__field_indices_by_name, - 1, rpc__resp__set_mode__number_ranges, - (ProtobufCMessageInit) rpc__resp__set_mode__init, + rpc__resp__wifi_set_max_tx_power__field_descriptors, + rpc__resp__wifi_set_max_tx_power__field_indices_by_name, + 1, rpc__resp__wifi_set_max_tx_power__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_max_tx_power__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__get_ps__field_descriptors NULL -#define rpc__req__get_ps__field_indices_by_name NULL -#define rpc__req__get_ps__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__get_ps__descriptor = +#define rpc__req__wifi_get_max_tx_power__field_descriptors NULL +#define rpc__req__wifi_get_max_tx_power__field_indices_by_name NULL +#define rpc__req__wifi_get_max_tx_power__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_get_max_tx_power__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_GetPs", - "RpcReqGetPs", - "RpcReqGetPs", + "Rpc_Req_WifiGetMaxTxPower", + "RpcReqWifiGetMaxTxPower", + "RpcReqWifiGetMaxTxPower", "", - sizeof(RpcReqGetPs), + sizeof(RpcReqWifiGetMaxTxPower), 0, - rpc__req__get_ps__field_descriptors, - rpc__req__get_ps__field_indices_by_name, - 0, rpc__req__get_ps__number_ranges, - (ProtobufCMessageInit) rpc__req__get_ps__init, + rpc__req__wifi_get_max_tx_power__field_descriptors, + rpc__req__wifi_get_max_tx_power__field_indices_by_name, + 0, rpc__req__wifi_get_max_tx_power__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_max_tx_power__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__get_ps__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_max_tx_power__field_descriptors[2] = { { - "resp", + "power", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetPs, resp), + offsetof(RpcRespWifiGetMaxTxPower, power), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "type", + "resp", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetPs, type), + offsetof(RpcRespWifiGetMaxTxPower, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__get_ps__field_indices_by_name[] = { - 0, /* field[0] = resp */ - 1, /* field[1] = type */ +static const unsigned rpc__resp__wifi_get_max_tx_power__field_indices_by_name[] = { + 0, /* field[0] = power */ + 1, /* field[1] = resp */ }; -static const ProtobufCIntRange rpc__resp__get_ps__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_max_tx_power__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__get_ps__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_max_tx_power__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_GetPs", - "RpcRespGetPs", - "RpcRespGetPs", + "Rpc_Resp_WifiGetMaxTxPower", + "RpcRespWifiGetMaxTxPower", + "RpcRespWifiGetMaxTxPower", "", - sizeof(RpcRespGetPs), + sizeof(RpcRespWifiGetMaxTxPower), 2, - rpc__resp__get_ps__field_descriptors, - rpc__resp__get_ps__field_indices_by_name, - 1, rpc__resp__get_ps__number_ranges, - (ProtobufCMessageInit) rpc__resp__get_ps__init, + rpc__resp__wifi_get_max_tx_power__field_descriptors, + rpc__resp__wifi_get_max_tx_power__field_indices_by_name, + 1, rpc__resp__wifi_get_max_tx_power__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_max_tx_power__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__set_ps__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__config_heartbeat__field_descriptors[2] = { { - "type", + "enable", 1, PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(RpcReqConfigHeartbeat, enable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "duration", + 2, + PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqSetPs, type), + offsetof(RpcReqConfigHeartbeat, duration), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__set_ps__field_indices_by_name[] = { - 0, /* field[0] = type */ +static const unsigned rpc__req__config_heartbeat__field_indices_by_name[] = { + 1, /* field[1] = duration */ + 0, /* field[0] = enable */ }; -static const ProtobufCIntRange rpc__req__set_ps__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__config_heartbeat__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__set_ps__descriptor = +const ProtobufCMessageDescriptor rpc__req__config_heartbeat__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_SetPs", - "RpcReqSetPs", - "RpcReqSetPs", + "Rpc_Req_ConfigHeartbeat", + "RpcReqConfigHeartbeat", + "RpcReqConfigHeartbeat", "", - sizeof(RpcReqSetPs), - 1, - rpc__req__set_ps__field_descriptors, - rpc__req__set_ps__field_indices_by_name, - 1, rpc__req__set_ps__number_ranges, - (ProtobufCMessageInit) rpc__req__set_ps__init, + sizeof(RpcReqConfigHeartbeat), + 2, + rpc__req__config_heartbeat__field_descriptors, + rpc__req__config_heartbeat__field_indices_by_name, + 1, rpc__req__config_heartbeat__number_ranges, + (ProtobufCMessageInit) rpc__req__config_heartbeat__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__set_ps__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__config_heartbeat__field_descriptors[1] = { { "resp", @@ -13089,88 +14275,75 @@ static const ProtobufCFieldDescriptor rpc__resp__set_ps__field_descriptors[1] = PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespSetPs, resp), + offsetof(RpcRespConfigHeartbeat, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__set_ps__field_indices_by_name[] = { +static const unsigned rpc__resp__config_heartbeat__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__set_ps__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__config_heartbeat__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__set_ps__descriptor = +const ProtobufCMessageDescriptor rpc__resp__config_heartbeat__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_SetPs", - "RpcRespSetPs", - "RpcRespSetPs", + "Rpc_Resp_ConfigHeartbeat", + "RpcRespConfigHeartbeat", + "RpcRespConfigHeartbeat", "", - sizeof(RpcRespSetPs), + sizeof(RpcRespConfigHeartbeat), 1, - rpc__resp__set_ps__field_descriptors, - rpc__resp__set_ps__field_indices_by_name, - 1, rpc__resp__set_ps__number_ranges, - (ProtobufCMessageInit) rpc__resp__set_ps__init, + rpc__resp__config_heartbeat__field_descriptors, + rpc__resp__config_heartbeat__field_indices_by_name, + 1, rpc__resp__config_heartbeat__number_ranges, + (ProtobufCMessageInit) rpc__resp__config_heartbeat__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__set_mac_address__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_init__field_descriptors[1] = { { - "mac", + "cfg", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, - 0, /* quantifier_offset */ - offsetof(RpcReqSetMacAddress, mac), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "mode", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcReqSetMacAddress, mode), - NULL, + offsetof(RpcReqWifiInit, cfg), + &wifi_init_config__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__set_mac_address__field_indices_by_name[] = { - 0, /* field[0] = mac */ - 1, /* field[1] = mode */ +static const unsigned rpc__req__wifi_init__field_indices_by_name[] = { + 0, /* field[0] = cfg */ }; -static const ProtobufCIntRange rpc__req__set_mac_address__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_init__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__set_mac_address__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_init__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_SetMacAddress", - "RpcReqSetMacAddress", - "RpcReqSetMacAddress", + "Rpc_Req_WifiInit", + "RpcReqWifiInit", + "RpcReqWifiInit", "", - sizeof(RpcReqSetMacAddress), - 2, - rpc__req__set_mac_address__field_descriptors, - rpc__req__set_mac_address__field_indices_by_name, - 1, rpc__req__set_mac_address__number_ranges, - (ProtobufCMessageInit) rpc__req__set_mac_address__init, + sizeof(RpcReqWifiInit), + 1, + rpc__req__wifi_init__field_descriptors, + rpc__req__wifi_init__field_indices_by_name, + 1, rpc__req__wifi_init__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_init__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__set_mac_address__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_init__field_descriptors[1] = { { "resp", @@ -13178,55 +14351,55 @@ static const ProtobufCFieldDescriptor rpc__resp__set_mac_address__field_descript PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespSetMacAddress, resp), + offsetof(RpcRespWifiInit, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__set_mac_address__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_init__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__set_mac_address__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_init__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__set_mac_address__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_init__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_SetMacAddress", - "RpcRespSetMacAddress", - "RpcRespSetMacAddress", + "Rpc_Resp_WifiInit", + "RpcRespWifiInit", + "RpcRespWifiInit", "", - sizeof(RpcRespSetMacAddress), + sizeof(RpcRespWifiInit), 1, - rpc__resp__set_mac_address__field_descriptors, - rpc__resp__set_mac_address__field_indices_by_name, - 1, rpc__resp__set_mac_address__number_ranges, - (ProtobufCMessageInit) rpc__resp__set_mac_address__init, + rpc__resp__wifi_init__field_descriptors, + rpc__resp__wifi_init__field_indices_by_name, + 1, rpc__resp__wifi_init__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_init__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__otabegin__field_descriptors NULL -#define rpc__req__otabegin__field_indices_by_name NULL -#define rpc__req__otabegin__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__otabegin__descriptor = +#define rpc__req__wifi_deinit__field_descriptors NULL +#define rpc__req__wifi_deinit__field_indices_by_name NULL +#define rpc__req__wifi_deinit__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_deinit__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_OTABegin", - "RpcReqOTABegin", - "RpcReqOTABegin", + "Rpc_Req_WifiDeinit", + "RpcReqWifiDeinit", + "RpcReqWifiDeinit", "", - sizeof(RpcReqOTABegin), + sizeof(RpcReqWifiDeinit), 0, - rpc__req__otabegin__field_descriptors, - rpc__req__otabegin__field_indices_by_name, - 0, rpc__req__otabegin__number_ranges, - (ProtobufCMessageInit) rpc__req__otabegin__init, + rpc__req__wifi_deinit__field_descriptors, + rpc__req__wifi_deinit__field_indices_by_name, + 0, rpc__req__wifi_deinit__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_deinit__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__otabegin__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_deinit__field_descriptors[1] = { { "resp", @@ -13234,75 +14407,88 @@ static const ProtobufCFieldDescriptor rpc__resp__otabegin__field_descriptors[1] PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespOTABegin, resp), + offsetof(RpcRespWifiDeinit, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__otabegin__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_deinit__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__otabegin__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_deinit__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__otabegin__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_deinit__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_OTABegin", - "RpcRespOTABegin", - "RpcRespOTABegin", + "Rpc_Resp_WifiDeinit", + "RpcRespWifiDeinit", + "RpcRespWifiDeinit", "", - sizeof(RpcRespOTABegin), + sizeof(RpcRespWifiDeinit), 1, - rpc__resp__otabegin__field_descriptors, - rpc__resp__otabegin__field_indices_by_name, - 1, rpc__resp__otabegin__number_ranges, - (ProtobufCMessageInit) rpc__resp__otabegin__init, + rpc__resp__wifi_deinit__field_descriptors, + rpc__resp__wifi_deinit__field_indices_by_name, + 1, rpc__resp__wifi_deinit__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_deinit__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__otawrite__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_config__field_descriptors[2] = { { - "ota_data", + "iface", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqOTAWrite, ota_data), + offsetof(RpcReqWifiSetConfig, iface), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "cfg", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(RpcReqWifiSetConfig, cfg), + &wifi_config__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, }; -static const unsigned rpc__req__otawrite__field_indices_by_name[] = { - 0, /* field[0] = ota_data */ +static const unsigned rpc__req__wifi_set_config__field_indices_by_name[] = { + 1, /* field[1] = cfg */ + 0, /* field[0] = iface */ }; -static const ProtobufCIntRange rpc__req__otawrite__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_config__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__otawrite__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_OTAWrite", - "RpcReqOTAWrite", - "RpcReqOTAWrite", + "Rpc_Req_WifiSetConfig", + "RpcReqWifiSetConfig", + "RpcReqWifiSetConfig", "", - sizeof(RpcReqOTAWrite), - 1, - rpc__req__otawrite__field_descriptors, - rpc__req__otawrite__field_indices_by_name, - 1, rpc__req__otawrite__number_ranges, - (ProtobufCMessageInit) rpc__req__otawrite__init, + sizeof(RpcReqWifiSetConfig), + 2, + rpc__req__wifi_set_config__field_descriptors, + rpc__req__wifi_set_config__field_indices_by_name, + 1, rpc__req__wifi_set_config__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__otawrite__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_config__field_descriptors[1] = { { "resp", @@ -13310,131 +14496,157 @@ static const ProtobufCFieldDescriptor rpc__resp__otawrite__field_descriptors[1] PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespOTAWrite, resp), + offsetof(RpcRespWifiSetConfig, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__otawrite__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_set_config__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__otawrite__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_config__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__otawrite__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_OTAWrite", - "RpcRespOTAWrite", - "RpcRespOTAWrite", + "Rpc_Resp_WifiSetConfig", + "RpcRespWifiSetConfig", + "RpcRespWifiSetConfig", "", - sizeof(RpcRespOTAWrite), + sizeof(RpcRespWifiSetConfig), 1, - rpc__resp__otawrite__field_descriptors, - rpc__resp__otawrite__field_indices_by_name, - 1, rpc__resp__otawrite__number_ranges, - (ProtobufCMessageInit) rpc__resp__otawrite__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__otaend__field_descriptors NULL -#define rpc__req__otaend__field_indices_by_name NULL -#define rpc__req__otaend__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__otaend__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_OTAEnd", - "RpcReqOTAEnd", - "RpcReqOTAEnd", - "", - sizeof(RpcReqOTAEnd), - 0, - rpc__req__otaend__field_descriptors, - rpc__req__otaend__field_indices_by_name, - 0, rpc__req__otaend__number_ranges, - (ProtobufCMessageInit) rpc__req__otaend__init, + rpc__resp__wifi_set_config__field_descriptors, + rpc__resp__wifi_set_config__field_indices_by_name, + 1, rpc__resp__wifi_set_config__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__otaend__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_get_config__field_descriptors[1] = { { - "resp", + "iface", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespOTAEnd, resp), + offsetof(RpcReqWifiGetConfig, iface), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__otaend__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_get_config__field_indices_by_name[] = { + 0, /* field[0] = iface */ }; -static const ProtobufCIntRange rpc__resp__otaend__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_get_config__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__otaend__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_get_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_OTAEnd", - "RpcRespOTAEnd", - "RpcRespOTAEnd", + "Rpc_Req_WifiGetConfig", + "RpcReqWifiGetConfig", + "RpcReqWifiGetConfig", "", - sizeof(RpcRespOTAEnd), + sizeof(RpcReqWifiGetConfig), 1, - rpc__resp__otaend__field_descriptors, - rpc__resp__otaend__field_indices_by_name, - 1, rpc__resp__otaend__number_ranges, - (ProtobufCMessageInit) rpc__resp__otaend__init, + rpc__req__wifi_get_config__field_descriptors, + rpc__req__wifi_get_config__field_indices_by_name, + 1, rpc__req__wifi_get_config__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_max_tx_power__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_config__field_descriptors[3] = { { - "power", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetMaxTxPower, power), + offsetof(RpcRespWifiGetConfig, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "iface", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiGetConfig, iface), + NULL, NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cfg", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiGetConfig, cfg), + &wifi_config__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_max_tx_power__field_indices_by_name[] = { - 0, /* field[0] = power */ +static const unsigned rpc__resp__wifi_get_config__field_indices_by_name[] = { + 2, /* field[2] = cfg */ + 1, /* field[1] = iface */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_set_max_tx_power__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_config__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 3 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_max_tx_power__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetMaxTxPower", - "RpcReqWifiSetMaxTxPower", - "RpcReqWifiSetMaxTxPower", + "Rpc_Resp_WifiGetConfig", + "RpcRespWifiGetConfig", + "RpcRespWifiGetConfig", "", - sizeof(RpcReqWifiSetMaxTxPower), - 1, - rpc__req__wifi_set_max_tx_power__field_descriptors, - rpc__req__wifi_set_max_tx_power__field_indices_by_name, - 1, rpc__req__wifi_set_max_tx_power__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_max_tx_power__init, + sizeof(RpcRespWifiGetConfig), + 3, + rpc__resp__wifi_get_config__field_descriptors, + rpc__resp__wifi_get_config__field_indices_by_name, + 1, rpc__resp__wifi_get_config__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_config__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define rpc__req__wifi_connect__field_descriptors NULL +#define rpc__req__wifi_connect__field_indices_by_name NULL +#define rpc__req__wifi_connect__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_connect__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiConnect", + "RpcReqWifiConnect", + "RpcReqWifiConnect", + "", + sizeof(RpcReqWifiConnect), + 0, + rpc__req__wifi_connect__field_descriptors, + rpc__req__wifi_connect__field_indices_by_name, + 0, rpc__req__wifi_connect__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_connect__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_max_tx_power__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_connect__field_descriptors[1] = { { "resp", @@ -13442,157 +14654,167 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_max_tx_power__field_de PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetMaxTxPower, resp), + offsetof(RpcRespWifiConnect, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_max_tx_power__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_connect__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_max_tx_power__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_connect__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_max_tx_power__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_connect__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetMaxTxPower", - "RpcRespWifiSetMaxTxPower", - "RpcRespWifiSetMaxTxPower", + "Rpc_Resp_WifiConnect", + "RpcRespWifiConnect", + "RpcRespWifiConnect", "", - sizeof(RpcRespWifiSetMaxTxPower), + sizeof(RpcRespWifiConnect), 1, - rpc__resp__wifi_set_max_tx_power__field_descriptors, - rpc__resp__wifi_set_max_tx_power__field_indices_by_name, - 1, rpc__resp__wifi_set_max_tx_power__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_max_tx_power__init, + rpc__resp__wifi_connect__field_descriptors, + rpc__resp__wifi_connect__field_indices_by_name, + 1, rpc__resp__wifi_connect__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_connect__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_get_max_tx_power__field_descriptors NULL -#define rpc__req__wifi_get_max_tx_power__field_indices_by_name NULL -#define rpc__req__wifi_get_max_tx_power__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_get_max_tx_power__descriptor = +#define rpc__req__wifi_disconnect__field_descriptors NULL +#define rpc__req__wifi_disconnect__field_indices_by_name NULL +#define rpc__req__wifi_disconnect__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_disconnect__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetMaxTxPower", - "RpcReqWifiGetMaxTxPower", - "RpcReqWifiGetMaxTxPower", + "Rpc_Req_WifiDisconnect", + "RpcReqWifiDisconnect", + "RpcReqWifiDisconnect", "", - sizeof(RpcReqWifiGetMaxTxPower), + sizeof(RpcReqWifiDisconnect), 0, - rpc__req__wifi_get_max_tx_power__field_descriptors, - rpc__req__wifi_get_max_tx_power__field_indices_by_name, - 0, rpc__req__wifi_get_max_tx_power__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_max_tx_power__init, + rpc__req__wifi_disconnect__field_descriptors, + rpc__req__wifi_disconnect__field_indices_by_name, + 0, rpc__req__wifi_disconnect__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_disconnect__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_max_tx_power__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_disconnect__field_descriptors[1] = { - { - "power", - 1, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetMaxTxPower, power), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, { "resp", - 2, + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetMaxTxPower, resp), + offsetof(RpcRespWifiDisconnect, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_max_tx_power__field_indices_by_name[] = { - 0, /* field[0] = power */ - 1, /* field[1] = resp */ +static const unsigned rpc__resp__wifi_disconnect__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_max_tx_power__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_disconnect__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_max_tx_power__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_disconnect__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetMaxTxPower", - "RpcRespWifiGetMaxTxPower", - "RpcRespWifiGetMaxTxPower", + "Rpc_Resp_WifiDisconnect", + "RpcRespWifiDisconnect", + "RpcRespWifiDisconnect", "", - sizeof(RpcRespWifiGetMaxTxPower), - 2, - rpc__resp__wifi_get_max_tx_power__field_descriptors, - rpc__resp__wifi_get_max_tx_power__field_indices_by_name, - 1, rpc__resp__wifi_get_max_tx_power__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_max_tx_power__init, + sizeof(RpcRespWifiDisconnect), + 1, + rpc__resp__wifi_disconnect__field_descriptors, + rpc__resp__wifi_disconnect__field_indices_by_name, + 1, rpc__resp__wifi_disconnect__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_disconnect__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__config_heartbeat__field_descriptors[2] = +#define rpc__req__wifi_start__field_descriptors NULL +#define rpc__req__wifi_start__field_indices_by_name NULL +#define rpc__req__wifi_start__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_start__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStart", + "RpcReqWifiStart", + "RpcReqWifiStart", + "", + sizeof(RpcReqWifiStart), + 0, + rpc__req__wifi_start__field_descriptors, + rpc__req__wifi_start__field_indices_by_name, + 0, rpc__req__wifi_start__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_start__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_start__field_descriptors[1] = { { - "enable", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, - 0, /* quantifier_offset */ - offsetof(RpcReqConfigHeartbeat, enable), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "duration", - 2, - PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqConfigHeartbeat, duration), + offsetof(RpcRespWifiStart, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__config_heartbeat__field_indices_by_name[] = { - 1, /* field[1] = duration */ - 0, /* field[0] = enable */ +static const unsigned rpc__resp__wifi_start__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__config_heartbeat__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_start__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__config_heartbeat__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_start__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_ConfigHeartbeat", - "RpcReqConfigHeartbeat", - "RpcReqConfigHeartbeat", + "Rpc_Resp_WifiStart", + "RpcRespWifiStart", + "RpcRespWifiStart", "", - sizeof(RpcReqConfigHeartbeat), - 2, - rpc__req__config_heartbeat__field_descriptors, - rpc__req__config_heartbeat__field_indices_by_name, - 1, rpc__req__config_heartbeat__number_ranges, - (ProtobufCMessageInit) rpc__req__config_heartbeat__init, + sizeof(RpcRespWifiStart), + 1, + rpc__resp__wifi_start__field_descriptors, + rpc__resp__wifi_start__field_indices_by_name, + 1, rpc__resp__wifi_start__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_start__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__config_heartbeat__field_descriptors[1] = +#define rpc__req__wifi_stop__field_descriptors NULL +#define rpc__req__wifi_stop__field_indices_by_name NULL +#define rpc__req__wifi_stop__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_stop__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStop", + "RpcReqWifiStop", + "RpcReqWifiStop", + "", + sizeof(RpcReqWifiStop), + 0, + rpc__req__wifi_stop__field_descriptors, + rpc__req__wifi_stop__field_indices_by_name, + 0, rpc__req__wifi_stop__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_stop__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_stop__field_descriptors[1] = { { "resp", @@ -13600,75 +14822,101 @@ static const ProtobufCFieldDescriptor rpc__resp__config_heartbeat__field_descrip PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespConfigHeartbeat, resp), + offsetof(RpcRespWifiStop, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__config_heartbeat__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_stop__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__config_heartbeat__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_stop__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__config_heartbeat__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_stop__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_ConfigHeartbeat", - "RpcRespConfigHeartbeat", - "RpcRespConfigHeartbeat", + "Rpc_Resp_WifiStop", + "RpcRespWifiStop", + "RpcRespWifiStop", "", - sizeof(RpcRespConfigHeartbeat), + sizeof(RpcRespWifiStop), 1, - rpc__resp__config_heartbeat__field_descriptors, - rpc__resp__config_heartbeat__field_indices_by_name, - 1, rpc__resp__config_heartbeat__number_ranges, - (ProtobufCMessageInit) rpc__resp__config_heartbeat__init, + rpc__resp__wifi_stop__field_descriptors, + rpc__resp__wifi_stop__field_indices_by_name, + 1, rpc__resp__wifi_stop__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_stop__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_init__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_scan_start__field_descriptors[3] = { { - "cfg", + "config", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcReqWifiInit, cfg), - &wifi_init_config__descriptor, + offsetof(RpcReqWifiScanStart, config), + &wifi_scan_config__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "block", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(RpcReqWifiScanStart, block), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "config_set", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcReqWifiScanStart, config_set), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_init__field_indices_by_name[] = { - 0, /* field[0] = cfg */ +static const unsigned rpc__req__wifi_scan_start__field_indices_by_name[] = { + 1, /* field[1] = block */ + 0, /* field[0] = config */ + 2, /* field[2] = config_set */ }; -static const ProtobufCIntRange rpc__req__wifi_init__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_scan_start__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 3 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_init__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_scan_start__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiInit", - "RpcReqWifiInit", - "RpcReqWifiInit", + "Rpc_Req_WifiScanStart", + "RpcReqWifiScanStart", + "RpcReqWifiScanStart", "", - sizeof(RpcReqWifiInit), - 1, - rpc__req__wifi_init__field_descriptors, - rpc__req__wifi_init__field_indices_by_name, - 1, rpc__req__wifi_init__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_init__init, + sizeof(RpcReqWifiScanStart), + 3, + rpc__req__wifi_scan_start__field_descriptors, + rpc__req__wifi_scan_start__field_indices_by_name, + 1, rpc__req__wifi_scan_start__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_scan_start__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_init__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_start__field_descriptors[1] = { { "resp", @@ -13676,55 +14924,55 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_init__field_descriptors[1] PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiInit, resp), + offsetof(RpcRespWifiScanStart, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_init__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_scan_start__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_init__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_scan_start__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_init__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_scan_start__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiInit", - "RpcRespWifiInit", - "RpcRespWifiInit", + "Rpc_Resp_WifiScanStart", + "RpcRespWifiScanStart", + "RpcRespWifiScanStart", "", - sizeof(RpcRespWifiInit), + sizeof(RpcRespWifiScanStart), 1, - rpc__resp__wifi_init__field_descriptors, - rpc__resp__wifi_init__field_indices_by_name, - 1, rpc__resp__wifi_init__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_init__init, + rpc__resp__wifi_scan_start__field_descriptors, + rpc__resp__wifi_scan_start__field_indices_by_name, + 1, rpc__resp__wifi_scan_start__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_scan_start__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_deinit__field_descriptors NULL -#define rpc__req__wifi_deinit__field_indices_by_name NULL -#define rpc__req__wifi_deinit__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_deinit__descriptor = +#define rpc__req__wifi_scan_stop__field_descriptors NULL +#define rpc__req__wifi_scan_stop__field_indices_by_name NULL +#define rpc__req__wifi_scan_stop__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_scan_stop__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiDeinit", - "RpcReqWifiDeinit", - "RpcReqWifiDeinit", + "Rpc_Req_WifiScanStop", + "RpcReqWifiScanStop", + "RpcReqWifiScanStop", "", - sizeof(RpcReqWifiDeinit), + sizeof(RpcReqWifiScanStop), 0, - rpc__req__wifi_deinit__field_descriptors, - rpc__req__wifi_deinit__field_indices_by_name, - 0, rpc__req__wifi_deinit__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_deinit__init, + rpc__req__wifi_scan_stop__field_descriptors, + rpc__req__wifi_scan_stop__field_indices_by_name, + 0, rpc__req__wifi_scan_stop__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_scan_stop__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_deinit__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_stop__field_descriptors[1] = { { "resp", @@ -13732,164 +14980,226 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_deinit__field_descriptors[ PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiDeinit, resp), + offsetof(RpcRespWifiScanStop, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_deinit__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_scan_stop__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_deinit__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_scan_stop__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_deinit__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_scan_stop__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiDeinit", - "RpcRespWifiDeinit", - "RpcRespWifiDeinit", + "Rpc_Resp_WifiScanStop", + "RpcRespWifiScanStop", + "RpcRespWifiScanStop", "", - sizeof(RpcRespWifiDeinit), + sizeof(RpcRespWifiScanStop), 1, - rpc__resp__wifi_deinit__field_descriptors, - rpc__resp__wifi_deinit__field_indices_by_name, - 1, rpc__resp__wifi_deinit__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_deinit__init, + rpc__resp__wifi_scan_stop__field_descriptors, + rpc__resp__wifi_scan_stop__field_indices_by_name, + 1, rpc__resp__wifi_scan_stop__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_scan_stop__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_config__field_descriptors[2] = +#define rpc__req__wifi_scan_get_ap_num__field_descriptors NULL +#define rpc__req__wifi_scan_get_ap_num__field_indices_by_name NULL +#define rpc__req__wifi_scan_get_ap_num__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_scan_get_ap_num__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiScanGetApNum", + "RpcReqWifiScanGetApNum", + "RpcReqWifiScanGetApNum", + "", + sizeof(RpcReqWifiScanGetApNum), + 0, + rpc__req__wifi_scan_get_ap_num__field_descriptors, + rpc__req__wifi_scan_get_ap_num__field_indices_by_name, + 0, rpc__req__wifi_scan_get_ap_num__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_scan_get_ap_num__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_num__field_descriptors[2] = { { - "iface", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetConfig, iface), + offsetof(RpcRespWifiScanGetApNum, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "cfg", + "number", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetConfig, cfg), - &wifi_config__descriptor, + offsetof(RpcRespWifiScanGetApNum, number), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_config__field_indices_by_name[] = { - 1, /* field[1] = cfg */ - 0, /* field[0] = iface */ +static const unsigned rpc__resp__wifi_scan_get_ap_num__field_indices_by_name[] = { + 1, /* field[1] = number */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_set_config__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_scan_get_ap_num__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_config__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_scan_get_ap_num__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetConfig", - "RpcReqWifiSetConfig", - "RpcReqWifiSetConfig", + "Rpc_Resp_WifiScanGetApNum", + "RpcRespWifiScanGetApNum", + "RpcRespWifiScanGetApNum", "", - sizeof(RpcReqWifiSetConfig), + sizeof(RpcRespWifiScanGetApNum), 2, - rpc__req__wifi_set_config__field_descriptors, - rpc__req__wifi_set_config__field_indices_by_name, - 1, rpc__req__wifi_set_config__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_config__init, + rpc__resp__wifi_scan_get_ap_num__field_descriptors, + rpc__resp__wifi_scan_get_ap_num__field_indices_by_name, + 1, rpc__resp__wifi_scan_get_ap_num__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_scan_get_ap_num__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_config__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_scan_get_ap_records__field_descriptors[1] = { { - "resp", + "number", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetConfig, resp), + offsetof(RpcReqWifiScanGetApRecords, number), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_config__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_scan_get_ap_records__field_indices_by_name[] = { + 0, /* field[0] = number */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_config__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_scan_get_ap_records__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_config__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_scan_get_ap_records__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetConfig", - "RpcRespWifiSetConfig", - "RpcRespWifiSetConfig", + "Rpc_Req_WifiScanGetApRecords", + "RpcReqWifiScanGetApRecords", + "RpcReqWifiScanGetApRecords", "", - sizeof(RpcRespWifiSetConfig), + sizeof(RpcReqWifiScanGetApRecords), 1, - rpc__resp__wifi_set_config__field_descriptors, - rpc__resp__wifi_set_config__field_indices_by_name, - 1, rpc__resp__wifi_set_config__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_config__init, + rpc__req__wifi_scan_get_ap_records__field_descriptors, + rpc__req__wifi_scan_get_ap_records__field_indices_by_name, + 1, rpc__req__wifi_scan_get_ap_records__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_scan_get_ap_records__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_get_config__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_records__field_descriptors[3] = { { - "iface", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiGetConfig, iface), + offsetof(RpcRespWifiScanGetApRecords, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "number", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiScanGetApRecords, number), + NULL, NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ap_records", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(RpcRespWifiScanGetApRecords, n_ap_records), + offsetof(RpcRespWifiScanGetApRecords, ap_records), + &wifi_ap_record__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_get_config__field_indices_by_name[] = { - 0, /* field[0] = iface */ +static const unsigned rpc__resp__wifi_scan_get_ap_records__field_indices_by_name[] = { + 2, /* field[2] = ap_records */ + 1, /* field[1] = number */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_get_config__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_scan_get_ap_records__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 3 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_get_config__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_scan_get_ap_records__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetConfig", - "RpcReqWifiGetConfig", - "RpcReqWifiGetConfig", + "Rpc_Resp_WifiScanGetApRecords", + "RpcRespWifiScanGetApRecords", + "RpcRespWifiScanGetApRecords", "", - sizeof(RpcReqWifiGetConfig), - 1, - rpc__req__wifi_get_config__field_descriptors, - rpc__req__wifi_get_config__field_indices_by_name, - 1, rpc__req__wifi_get_config__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_config__init, + sizeof(RpcRespWifiScanGetApRecords), + 3, + rpc__resp__wifi_scan_get_ap_records__field_descriptors, + rpc__resp__wifi_scan_get_ap_records__field_indices_by_name, + 1, rpc__resp__wifi_scan_get_ap_records__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_scan_get_ap_records__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define rpc__req__wifi_scan_get_ap_record__field_descriptors NULL +#define rpc__req__wifi_scan_get_ap_record__field_indices_by_name NULL +#define rpc__req__wifi_scan_get_ap_record__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_scan_get_ap_record__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiScanGetApRecord", + "RpcReqWifiScanGetApRecord", + "RpcReqWifiScanGetApRecord", + "", + sizeof(RpcReqWifiScanGetApRecord), + 0, + rpc__req__wifi_scan_get_ap_record__field_descriptors, + rpc__req__wifi_scan_get_ap_record__field_indices_by_name, + 0, rpc__req__wifi_scan_get_ap_record__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_scan_get_ap_record__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_config__field_descriptors[3] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_record__field_descriptors[2] = { { "resp", @@ -13897,81 +15207,124 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_config__field_descript PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetConfig, resp), + offsetof(RpcRespWifiScanGetApRecord, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "iface", + "ap_record", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetConfig, iface), - NULL, + offsetof(RpcRespWifiScanGetApRecord, ap_record), + &wifi_ap_record__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__wifi_scan_get_ap_record__field_indices_by_name[] = { + 1, /* field[1] = ap_record */ + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__wifi_scan_get_ap_record__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor rpc__resp__wifi_scan_get_ap_record__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_WifiScanGetApRecord", + "RpcRespWifiScanGetApRecord", + "RpcRespWifiScanGetApRecord", + "", + sizeof(RpcRespWifiScanGetApRecord), + 2, + rpc__resp__wifi_scan_get_ap_record__field_descriptors, + rpc__resp__wifi_scan_get_ap_record__field_indices_by_name, + 1, rpc__resp__wifi_scan_get_ap_record__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_scan_get_ap_record__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define rpc__req__wifi_clear_ap_list__field_descriptors NULL +#define rpc__req__wifi_clear_ap_list__field_indices_by_name NULL +#define rpc__req__wifi_clear_ap_list__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_clear_ap_list__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiClearApList", + "RpcReqWifiClearApList", + "RpcReqWifiClearApList", + "", + sizeof(RpcReqWifiClearApList), + 0, + rpc__req__wifi_clear_ap_list__field_descriptors, + rpc__req__wifi_clear_ap_list__field_indices_by_name, + 0, rpc__req__wifi_clear_ap_list__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_clear_ap_list__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_clear_ap_list__field_descriptors[1] = +{ { - "cfg", - 3, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetConfig, cfg), - &wifi_config__descriptor, + offsetof(RpcRespWifiClearApList, resp), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_config__field_indices_by_name[] = { - 2, /* field[2] = cfg */ - 1, /* field[1] = iface */ +static const unsigned rpc__resp__wifi_clear_ap_list__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_config__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_clear_ap_list__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 3 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_config__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_clear_ap_list__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetConfig", - "RpcRespWifiGetConfig", - "RpcRespWifiGetConfig", + "Rpc_Resp_WifiClearApList", + "RpcRespWifiClearApList", + "RpcRespWifiClearApList", "", - sizeof(RpcRespWifiGetConfig), - 3, - rpc__resp__wifi_get_config__field_descriptors, - rpc__resp__wifi_get_config__field_indices_by_name, - 1, rpc__resp__wifi_get_config__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_config__init, + sizeof(RpcRespWifiClearApList), + 1, + rpc__resp__wifi_clear_ap_list__field_descriptors, + rpc__resp__wifi_clear_ap_list__field_indices_by_name, + 1, rpc__resp__wifi_clear_ap_list__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_clear_ap_list__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_connect__field_descriptors NULL -#define rpc__req__wifi_connect__field_indices_by_name NULL -#define rpc__req__wifi_connect__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_connect__descriptor = +#define rpc__req__wifi_restore__field_descriptors NULL +#define rpc__req__wifi_restore__field_indices_by_name NULL +#define rpc__req__wifi_restore__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_restore__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiConnect", - "RpcReqWifiConnect", - "RpcReqWifiConnect", + "Rpc_Req_WifiRestore", + "RpcReqWifiRestore", + "RpcReqWifiRestore", "", - sizeof(RpcReqWifiConnect), + sizeof(RpcReqWifiRestore), 0, - rpc__req__wifi_connect__field_descriptors, - rpc__req__wifi_connect__field_indices_by_name, - 0, rpc__req__wifi_connect__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_connect__init, + rpc__req__wifi_restore__field_descriptors, + rpc__req__wifi_restore__field_indices_by_name, + 0, rpc__req__wifi_restore__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_restore__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_connect__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_restore__field_descriptors[1] = { { "resp", @@ -13979,55 +15332,55 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_connect__field_descriptors PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiConnect, resp), + offsetof(RpcRespWifiRestore, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_connect__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_restore__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_connect__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_restore__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_connect__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_restore__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiConnect", - "RpcRespWifiConnect", - "RpcRespWifiConnect", + "Rpc_Resp_WifiRestore", + "RpcRespWifiRestore", + "RpcRespWifiRestore", "", - sizeof(RpcRespWifiConnect), + sizeof(RpcRespWifiRestore), 1, - rpc__resp__wifi_connect__field_descriptors, - rpc__resp__wifi_connect__field_indices_by_name, - 1, rpc__resp__wifi_connect__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_connect__init, + rpc__resp__wifi_restore__field_descriptors, + rpc__resp__wifi_restore__field_indices_by_name, + 1, rpc__resp__wifi_restore__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_restore__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_disconnect__field_descriptors NULL -#define rpc__req__wifi_disconnect__field_indices_by_name NULL -#define rpc__req__wifi_disconnect__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_disconnect__descriptor = +#define rpc__req__wifi_clear_fast_connect__field_descriptors NULL +#define rpc__req__wifi_clear_fast_connect__field_indices_by_name NULL +#define rpc__req__wifi_clear_fast_connect__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_clear_fast_connect__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiDisconnect", - "RpcReqWifiDisconnect", - "RpcReqWifiDisconnect", + "Rpc_Req_WifiClearFastConnect", + "RpcReqWifiClearFastConnect", + "RpcReqWifiClearFastConnect", "", - sizeof(RpcReqWifiDisconnect), + sizeof(RpcReqWifiClearFastConnect), 0, - rpc__req__wifi_disconnect__field_descriptors, - rpc__req__wifi_disconnect__field_indices_by_name, - 0, rpc__req__wifi_disconnect__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_disconnect__init, + rpc__req__wifi_clear_fast_connect__field_descriptors, + rpc__req__wifi_clear_fast_connect__field_indices_by_name, + 0, rpc__req__wifi_clear_fast_connect__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_clear_fast_connect__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_disconnect__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_clear_fast_connect__field_descriptors[1] = { { "resp", @@ -14035,55 +15388,75 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_disconnect__field_descript PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiDisconnect, resp), + offsetof(RpcRespWifiClearFastConnect, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_disconnect__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_clear_fast_connect__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_disconnect__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_clear_fast_connect__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_disconnect__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_clear_fast_connect__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiDisconnect", - "RpcRespWifiDisconnect", - "RpcRespWifiDisconnect", + "Rpc_Resp_WifiClearFastConnect", + "RpcRespWifiClearFastConnect", + "RpcRespWifiClearFastConnect", "", - sizeof(RpcRespWifiDisconnect), + sizeof(RpcRespWifiClearFastConnect), 1, - rpc__resp__wifi_disconnect__field_descriptors, - rpc__resp__wifi_disconnect__field_indices_by_name, - 1, rpc__resp__wifi_disconnect__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_disconnect__init, + rpc__resp__wifi_clear_fast_connect__field_descriptors, + rpc__resp__wifi_clear_fast_connect__field_indices_by_name, + 1, rpc__resp__wifi_clear_fast_connect__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_clear_fast_connect__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_start__field_descriptors NULL -#define rpc__req__wifi_start__field_indices_by_name NULL -#define rpc__req__wifi_start__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_start__descriptor = +static const ProtobufCFieldDescriptor rpc__req__wifi_deauth_sta__field_descriptors[1] = +{ + { + "aid", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcReqWifiDeauthSta, aid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__req__wifi_deauth_sta__field_indices_by_name[] = { + 0, /* field[0] = aid */ +}; +static const ProtobufCIntRange rpc__req__wifi_deauth_sta__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__req__wifi_deauth_sta__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStart", - "RpcReqWifiStart", - "RpcReqWifiStart", + "Rpc_Req_WifiDeauthSta", + "RpcReqWifiDeauthSta", + "RpcReqWifiDeauthSta", "", - sizeof(RpcReqWifiStart), - 0, - rpc__req__wifi_start__field_descriptors, - rpc__req__wifi_start__field_indices_by_name, - 0, rpc__req__wifi_start__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_start__init, + sizeof(RpcReqWifiDeauthSta), + 1, + rpc__req__wifi_deauth_sta__field_descriptors, + rpc__req__wifi_deauth_sta__field_indices_by_name, + 1, rpc__req__wifi_deauth_sta__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_deauth_sta__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_start__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_deauth_sta__field_descriptors[2] = { { "resp", @@ -14091,55 +15464,68 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_start__field_descriptors[1 PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStart, resp), + offsetof(RpcRespWifiDeauthSta, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "aid", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiDeauthSta, aid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_start__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_deauth_sta__field_indices_by_name[] = { + 1, /* field[1] = aid */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_start__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_deauth_sta__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_start__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_deauth_sta__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStart", - "RpcRespWifiStart", - "RpcRespWifiStart", + "Rpc_Resp_WifiDeauthSta", + "RpcRespWifiDeauthSta", + "RpcRespWifiDeauthSta", "", - sizeof(RpcRespWifiStart), - 1, - rpc__resp__wifi_start__field_descriptors, - rpc__resp__wifi_start__field_indices_by_name, - 1, rpc__resp__wifi_start__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_start__init, + sizeof(RpcRespWifiDeauthSta), + 2, + rpc__resp__wifi_deauth_sta__field_descriptors, + rpc__resp__wifi_deauth_sta__field_indices_by_name, + 1, rpc__resp__wifi_deauth_sta__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_deauth_sta__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_stop__field_descriptors NULL -#define rpc__req__wifi_stop__field_indices_by_name NULL -#define rpc__req__wifi_stop__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_stop__descriptor = +#define rpc__req__wifi_sta_get_ap_info__field_descriptors NULL +#define rpc__req__wifi_sta_get_ap_info__field_indices_by_name NULL +#define rpc__req__wifi_sta_get_ap_info__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_ap_info__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStop", - "RpcReqWifiStop", - "RpcReqWifiStop", + "Rpc_Req_WifiStaGetApInfo", + "RpcReqWifiStaGetApInfo", + "RpcReqWifiStaGetApInfo", "", - sizeof(RpcReqWifiStop), + sizeof(RpcReqWifiStaGetApInfo), 0, - rpc__req__wifi_stop__field_descriptors, - rpc__req__wifi_stop__field_indices_by_name, - 0, rpc__req__wifi_stop__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_stop__init, + rpc__req__wifi_sta_get_ap_info__field_descriptors, + rpc__req__wifi_sta_get_ap_info__field_indices_by_name, + 0, rpc__req__wifi_sta_get_ap_info__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_get_ap_info__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_stop__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_ap_info__field_descriptors[2] = { { "resp", @@ -14147,101 +15533,101 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_stop__field_descriptors[1] PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStop, resp), + offsetof(RpcRespWifiStaGetApInfo, resp), + NULL, NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ap_record", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiStaGetApInfo, ap_record), + &wifi_ap_record__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_stop__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_sta_get_ap_info__field_indices_by_name[] = { + 1, /* field[1] = ap_record */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_stop__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_get_ap_info__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_stop__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_ap_info__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStop", - "RpcRespWifiStop", - "RpcRespWifiStop", + "Rpc_Resp_WifiStaGetApInfo", + "RpcRespWifiStaGetApInfo", + "RpcRespWifiStaGetApInfo", "", - sizeof(RpcRespWifiStop), - 1, - rpc__resp__wifi_stop__field_descriptors, - rpc__resp__wifi_stop__field_indices_by_name, - 1, rpc__resp__wifi_stop__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_stop__init, + sizeof(RpcRespWifiStaGetApInfo), + 2, + rpc__resp__wifi_sta_get_ap_info__field_descriptors, + rpc__resp__wifi_sta_get_ap_info__field_indices_by_name, + 1, rpc__resp__wifi_sta_get_ap_info__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_get_ap_info__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_scan_start__field_descriptors[3] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_protocol__field_descriptors[2] = { { - "config", + "ifx", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(RpcReqWifiScanStart, config), - &wifi_scan_config__descriptor, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "block", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiScanStart, block), + offsetof(RpcReqWifiSetProtocol, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "config_set", - 3, + "protocol_bitmap", + 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiScanStart, config_set), + offsetof(RpcReqWifiSetProtocol, protocol_bitmap), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_scan_start__field_indices_by_name[] = { - 1, /* field[1] = block */ - 0, /* field[0] = config */ - 2, /* field[2] = config_set */ +static const unsigned rpc__req__wifi_set_protocol__field_indices_by_name[] = { + 0, /* field[0] = ifx */ + 1, /* field[1] = protocol_bitmap */ }; -static const ProtobufCIntRange rpc__req__wifi_scan_start__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_protocol__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 3 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_scan_start__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_protocol__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiScanStart", - "RpcReqWifiScanStart", - "RpcReqWifiScanStart", + "Rpc_Req_WifiSetProtocol", + "RpcReqWifiSetProtocol", + "RpcReqWifiSetProtocol", "", - sizeof(RpcReqWifiScanStart), - 3, - rpc__req__wifi_scan_start__field_descriptors, - rpc__req__wifi_scan_start__field_indices_by_name, - 1, rpc__req__wifi_scan_start__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_scan_start__init, + sizeof(RpcReqWifiSetProtocol), + 2, + rpc__req__wifi_set_protocol__field_descriptors, + rpc__req__wifi_set_protocol__field_indices_by_name, + 1, rpc__req__wifi_set_protocol__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_protocol__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_start__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_protocol__field_descriptors[1] = { { "resp", @@ -14249,351 +15635,355 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_start__field_descript PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanStart, resp), + offsetof(RpcRespWifiSetProtocol, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_scan_start__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_set_protocol__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_scan_start__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_protocol__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_scan_start__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_protocol__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiScanStart", - "RpcRespWifiScanStart", - "RpcRespWifiScanStart", + "Rpc_Resp_WifiSetProtocol", + "RpcRespWifiSetProtocol", + "RpcRespWifiSetProtocol", "", - sizeof(RpcRespWifiScanStart), + sizeof(RpcRespWifiSetProtocol), 1, - rpc__resp__wifi_scan_start__field_descriptors, - rpc__resp__wifi_scan_start__field_indices_by_name, - 1, rpc__resp__wifi_scan_start__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_scan_start__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_scan_stop__field_descriptors NULL -#define rpc__req__wifi_scan_stop__field_indices_by_name NULL -#define rpc__req__wifi_scan_stop__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_scan_stop__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiScanStop", - "RpcReqWifiScanStop", - "RpcReqWifiScanStop", - "", - sizeof(RpcReqWifiScanStop), - 0, - rpc__req__wifi_scan_stop__field_descriptors, - rpc__req__wifi_scan_stop__field_indices_by_name, - 0, rpc__req__wifi_scan_stop__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_scan_stop__init, + rpc__resp__wifi_set_protocol__field_descriptors, + rpc__resp__wifi_set_protocol__field_indices_by_name, + 1, rpc__resp__wifi_set_protocol__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_protocol__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_stop__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_get_protocol__field_descriptors[1] = { { - "resp", + "ifx", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanStop, resp), + offsetof(RpcReqWifiGetProtocol, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_scan_stop__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_get_protocol__field_indices_by_name[] = { + 0, /* field[0] = ifx */ }; -static const ProtobufCIntRange rpc__resp__wifi_scan_stop__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_get_protocol__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_scan_stop__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_get_protocol__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiScanStop", - "RpcRespWifiScanStop", - "RpcRespWifiScanStop", + "Rpc_Req_WifiGetProtocol", + "RpcReqWifiGetProtocol", + "RpcReqWifiGetProtocol", "", - sizeof(RpcRespWifiScanStop), + sizeof(RpcReqWifiGetProtocol), 1, - rpc__resp__wifi_scan_stop__field_descriptors, - rpc__resp__wifi_scan_stop__field_indices_by_name, - 1, rpc__resp__wifi_scan_stop__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_scan_stop__init, + rpc__req__wifi_get_protocol__field_descriptors, + rpc__req__wifi_get_protocol__field_indices_by_name, + 1, rpc__req__wifi_get_protocol__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_protocol__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_scan_get_ap_num__field_descriptors NULL -#define rpc__req__wifi_scan_get_ap_num__field_indices_by_name NULL -#define rpc__req__wifi_scan_get_ap_num__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_scan_get_ap_num__descriptor = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_protocol__field_descriptors[2] = +{ + { + "resp", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiGetProtocol, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "protocol_bitmap", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiGetProtocol, protocol_bitmap), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__resp__wifi_get_protocol__field_indices_by_name[] = { + 1, /* field[1] = protocol_bitmap */ + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__wifi_get_protocol__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor rpc__resp__wifi_get_protocol__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiScanGetApNum", - "RpcReqWifiScanGetApNum", - "RpcReqWifiScanGetApNum", + "Rpc_Resp_WifiGetProtocol", + "RpcRespWifiGetProtocol", + "RpcRespWifiGetProtocol", "", - sizeof(RpcReqWifiScanGetApNum), - 0, - rpc__req__wifi_scan_get_ap_num__field_descriptors, - rpc__req__wifi_scan_get_ap_num__field_indices_by_name, - 0, rpc__req__wifi_scan_get_ap_num__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_scan_get_ap_num__init, + sizeof(RpcRespWifiGetProtocol), + 2, + rpc__resp__wifi_get_protocol__field_descriptors, + rpc__resp__wifi_get_protocol__field_indices_by_name, + 1, rpc__resp__wifi_get_protocol__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_protocol__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_num__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_bandwidth__field_descriptors[2] = { { - "resp", + "ifx", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanGetApNum, resp), + offsetof(RpcReqWifiSetBandwidth, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "number", + "bw", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanGetApNum, number), + offsetof(RpcReqWifiSetBandwidth, bw), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_scan_get_ap_num__field_indices_by_name[] = { - 1, /* field[1] = number */ - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_set_bandwidth__field_indices_by_name[] = { + 1, /* field[1] = bw */ + 0, /* field[0] = ifx */ }; -static const ProtobufCIntRange rpc__resp__wifi_scan_get_ap_num__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_bandwidth__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_scan_get_ap_num__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_bandwidth__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiScanGetApNum", - "RpcRespWifiScanGetApNum", - "RpcRespWifiScanGetApNum", + "Rpc_Req_WifiSetBandwidth", + "RpcReqWifiSetBandwidth", + "RpcReqWifiSetBandwidth", "", - sizeof(RpcRespWifiScanGetApNum), + sizeof(RpcReqWifiSetBandwidth), 2, - rpc__resp__wifi_scan_get_ap_num__field_descriptors, - rpc__resp__wifi_scan_get_ap_num__field_indices_by_name, - 1, rpc__resp__wifi_scan_get_ap_num__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_scan_get_ap_num__init, + rpc__req__wifi_set_bandwidth__field_descriptors, + rpc__req__wifi_set_bandwidth__field_indices_by_name, + 1, rpc__req__wifi_set_bandwidth__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_bandwidth__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_scan_get_ap_records__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_bandwidth__field_descriptors[1] = { { - "number", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiScanGetApRecords, number), + offsetof(RpcRespWifiSetBandwidth, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_scan_get_ap_records__field_indices_by_name[] = { - 0, /* field[0] = number */ +static const unsigned rpc__resp__wifi_set_bandwidth__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_scan_get_ap_records__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_bandwidth__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_scan_get_ap_records__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_bandwidth__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiScanGetApRecords", - "RpcReqWifiScanGetApRecords", - "RpcReqWifiScanGetApRecords", + "Rpc_Resp_WifiSetBandwidth", + "RpcRespWifiSetBandwidth", + "RpcRespWifiSetBandwidth", "", - sizeof(RpcReqWifiScanGetApRecords), + sizeof(RpcRespWifiSetBandwidth), 1, - rpc__req__wifi_scan_get_ap_records__field_descriptors, - rpc__req__wifi_scan_get_ap_records__field_indices_by_name, - 1, rpc__req__wifi_scan_get_ap_records__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_scan_get_ap_records__init, + rpc__resp__wifi_set_bandwidth__field_descriptors, + rpc__resp__wifi_set_bandwidth__field_indices_by_name, + 1, rpc__resp__wifi_set_bandwidth__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_bandwidth__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_records__field_descriptors[3] = +static const ProtobufCFieldDescriptor rpc__req__wifi_get_bandwidth__field_descriptors[1] = { { - "resp", + "ifx", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanGetApRecords, resp), + offsetof(RpcReqWifiGetBandwidth, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__req__wifi_get_bandwidth__field_indices_by_name[] = { + 0, /* field[0] = ifx */ +}; +static const ProtobufCIntRange rpc__req__wifi_get_bandwidth__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__req__wifi_get_bandwidth__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiGetBandwidth", + "RpcReqWifiGetBandwidth", + "RpcReqWifiGetBandwidth", + "", + sizeof(RpcReqWifiGetBandwidth), + 1, + rpc__req__wifi_get_bandwidth__field_descriptors, + rpc__req__wifi_get_bandwidth__field_indices_by_name, + 1, rpc__req__wifi_get_bandwidth__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_bandwidth__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_bandwidth__field_descriptors[2] = +{ { - "number", - 2, + "resp", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanGetApRecords, number), + offsetof(RpcRespWifiGetBandwidth, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ap_records", - 3, - PROTOBUF_C_LABEL_REPEATED, - PROTOBUF_C_TYPE_MESSAGE, - offsetof(RpcRespWifiScanGetApRecords, n_ap_records), - offsetof(RpcRespWifiScanGetApRecords, ap_records), - &wifi_ap_record__descriptor, + "bw", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiGetBandwidth, bw), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_scan_get_ap_records__field_indices_by_name[] = { - 2, /* field[2] = ap_records */ - 1, /* field[1] = number */ +static const unsigned rpc__resp__wifi_get_bandwidth__field_indices_by_name[] = { + 1, /* field[1] = bw */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_scan_get_ap_records__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_bandwidth__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 3 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_scan_get_ap_records__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiScanGetApRecords", - "RpcRespWifiScanGetApRecords", - "RpcRespWifiScanGetApRecords", - "", - sizeof(RpcRespWifiScanGetApRecords), - 3, - rpc__resp__wifi_scan_get_ap_records__field_descriptors, - rpc__resp__wifi_scan_get_ap_records__field_indices_by_name, - 1, rpc__resp__wifi_scan_get_ap_records__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_scan_get_ap_records__init, - NULL,NULL,NULL /* reserved[123] */ + { 0, 2 } }; -#define rpc__req__wifi_scan_get_ap_record__field_descriptors NULL -#define rpc__req__wifi_scan_get_ap_record__field_indices_by_name NULL -#define rpc__req__wifi_scan_get_ap_record__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_scan_get_ap_record__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_bandwidth__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiScanGetApRecord", - "RpcReqWifiScanGetApRecord", - "RpcReqWifiScanGetApRecord", + "Rpc_Resp_WifiGetBandwidth", + "RpcRespWifiGetBandwidth", + "RpcRespWifiGetBandwidth", "", - sizeof(RpcReqWifiScanGetApRecord), - 0, - rpc__req__wifi_scan_get_ap_record__field_descriptors, - rpc__req__wifi_scan_get_ap_record__field_indices_by_name, - 0, rpc__req__wifi_scan_get_ap_record__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_scan_get_ap_record__init, + sizeof(RpcRespWifiGetBandwidth), + 2, + rpc__resp__wifi_get_bandwidth__field_descriptors, + rpc__resp__wifi_get_bandwidth__field_indices_by_name, + 1, rpc__resp__wifi_get_bandwidth__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_bandwidth__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_record__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_channel__field_descriptors[2] = { { - "resp", + "primary", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanGetApRecord, resp), + offsetof(RpcReqWifiSetChannel, primary), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ap_record", + "second", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanGetApRecord, ap_record), - &wifi_ap_record__descriptor, + offsetof(RpcReqWifiSetChannel, second), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_scan_get_ap_record__field_indices_by_name[] = { - 1, /* field[1] = ap_record */ - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_set_channel__field_indices_by_name[] = { + 0, /* field[0] = primary */ + 1, /* field[1] = second */ }; -static const ProtobufCIntRange rpc__resp__wifi_scan_get_ap_record__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_channel__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_scan_get_ap_record__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_channel__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiScanGetApRecord", - "RpcRespWifiScanGetApRecord", - "RpcRespWifiScanGetApRecord", + "Rpc_Req_WifiSetChannel", + "RpcReqWifiSetChannel", + "RpcReqWifiSetChannel", "", - sizeof(RpcRespWifiScanGetApRecord), + sizeof(RpcReqWifiSetChannel), 2, - rpc__resp__wifi_scan_get_ap_record__field_descriptors, - rpc__resp__wifi_scan_get_ap_record__field_indices_by_name, - 1, rpc__resp__wifi_scan_get_ap_record__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_scan_get_ap_record__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_clear_ap_list__field_descriptors NULL -#define rpc__req__wifi_clear_ap_list__field_indices_by_name NULL -#define rpc__req__wifi_clear_ap_list__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_clear_ap_list__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiClearApList", - "RpcReqWifiClearApList", - "RpcReqWifiClearApList", - "", - sizeof(RpcReqWifiClearApList), - 0, - rpc__req__wifi_clear_ap_list__field_descriptors, - rpc__req__wifi_clear_ap_list__field_indices_by_name, - 0, rpc__req__wifi_clear_ap_list__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_clear_ap_list__init, + rpc__req__wifi_set_channel__field_descriptors, + rpc__req__wifi_set_channel__field_indices_by_name, + 1, rpc__req__wifi_set_channel__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_channel__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_clear_ap_list__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_channel__field_descriptors[1] = { { "resp", @@ -14601,55 +15991,55 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_clear_ap_list__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiClearApList, resp), + offsetof(RpcRespWifiSetChannel, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_clear_ap_list__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_set_channel__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_clear_ap_list__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_channel__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_clear_ap_list__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_channel__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiClearApList", - "RpcRespWifiClearApList", - "RpcRespWifiClearApList", + "Rpc_Resp_WifiSetChannel", + "RpcRespWifiSetChannel", + "RpcRespWifiSetChannel", "", - sizeof(RpcRespWifiClearApList), + sizeof(RpcRespWifiSetChannel), 1, - rpc__resp__wifi_clear_ap_list__field_descriptors, - rpc__resp__wifi_clear_ap_list__field_indices_by_name, - 1, rpc__resp__wifi_clear_ap_list__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_clear_ap_list__init, + rpc__resp__wifi_set_channel__field_descriptors, + rpc__resp__wifi_set_channel__field_indices_by_name, + 1, rpc__resp__wifi_set_channel__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_channel__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_restore__field_descriptors NULL -#define rpc__req__wifi_restore__field_indices_by_name NULL -#define rpc__req__wifi_restore__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_restore__descriptor = +#define rpc__req__wifi_get_channel__field_descriptors NULL +#define rpc__req__wifi_get_channel__field_indices_by_name NULL +#define rpc__req__wifi_get_channel__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_get_channel__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiRestore", - "RpcReqWifiRestore", - "RpcReqWifiRestore", + "Rpc_Req_WifiGetChannel", + "RpcReqWifiGetChannel", + "RpcReqWifiGetChannel", "", - sizeof(RpcReqWifiRestore), + sizeof(RpcReqWifiGetChannel), 0, - rpc__req__wifi_restore__field_descriptors, - rpc__req__wifi_restore__field_indices_by_name, - 0, rpc__req__wifi_restore__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_restore__init, + rpc__req__wifi_get_channel__field_descriptors, + rpc__req__wifi_get_channel__field_indices_by_name, + 0, rpc__req__wifi_get_channel__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_channel__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_restore__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_channel__field_descriptors[3] = { { "resp", @@ -14657,200 +16047,190 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_restore__field_descriptors PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiRestore, resp), + offsetof(RpcRespWifiGetChannel, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "primary", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiGetChannel, primary), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "second", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiGetChannel, second), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_restore__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_get_channel__field_indices_by_name[] = { + 1, /* field[1] = primary */ 0, /* field[0] = resp */ + 2, /* field[2] = second */ }; -static const ProtobufCIntRange rpc__resp__wifi_restore__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_channel__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_restore__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiRestore", - "RpcRespWifiRestore", - "RpcRespWifiRestore", - "", - sizeof(RpcRespWifiRestore), - 1, - rpc__resp__wifi_restore__field_descriptors, - rpc__resp__wifi_restore__field_indices_by_name, - 1, rpc__resp__wifi_restore__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_restore__init, - NULL,NULL,NULL /* reserved[123] */ + { 0, 3 } }; -#define rpc__req__wifi_clear_fast_connect__field_descriptors NULL -#define rpc__req__wifi_clear_fast_connect__field_indices_by_name NULL -#define rpc__req__wifi_clear_fast_connect__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_clear_fast_connect__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_channel__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiClearFastConnect", - "RpcReqWifiClearFastConnect", - "RpcReqWifiClearFastConnect", + "Rpc_Resp_WifiGetChannel", + "RpcRespWifiGetChannel", + "RpcRespWifiGetChannel", "", - sizeof(RpcReqWifiClearFastConnect), - 0, - rpc__req__wifi_clear_fast_connect__field_descriptors, - rpc__req__wifi_clear_fast_connect__field_indices_by_name, - 0, rpc__req__wifi_clear_fast_connect__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_clear_fast_connect__init, + sizeof(RpcRespWifiGetChannel), + 3, + rpc__resp__wifi_get_channel__field_descriptors, + rpc__resp__wifi_get_channel__field_indices_by_name, + 1, rpc__resp__wifi_get_channel__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_channel__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_clear_fast_connect__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_storage__field_descriptors[1] = { { - "resp", + "storage", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiClearFastConnect, resp), + offsetof(RpcReqWifiSetStorage, storage), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_clear_fast_connect__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_set_storage__field_indices_by_name[] = { + 0, /* field[0] = storage */ }; -static const ProtobufCIntRange rpc__resp__wifi_clear_fast_connect__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_storage__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_clear_fast_connect__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_storage__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiClearFastConnect", - "RpcRespWifiClearFastConnect", - "RpcRespWifiClearFastConnect", + "Rpc_Req_WifiSetStorage", + "RpcReqWifiSetStorage", + "RpcReqWifiSetStorage", "", - sizeof(RpcRespWifiClearFastConnect), + sizeof(RpcReqWifiSetStorage), 1, - rpc__resp__wifi_clear_fast_connect__field_descriptors, - rpc__resp__wifi_clear_fast_connect__field_indices_by_name, - 1, rpc__resp__wifi_clear_fast_connect__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_clear_fast_connect__init, + rpc__req__wifi_set_storage__field_descriptors, + rpc__req__wifi_set_storage__field_indices_by_name, + 1, rpc__req__wifi_set_storage__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_storage__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_deauth_sta__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_storage__field_descriptors[1] = { { - "aid", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiDeauthSta, aid), + offsetof(RpcRespWifiSetStorage, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_deauth_sta__field_indices_by_name[] = { - 0, /* field[0] = aid */ +static const unsigned rpc__resp__wifi_set_storage__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_deauth_sta__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_storage__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_deauth_sta__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_storage__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiDeauthSta", - "RpcReqWifiDeauthSta", - "RpcReqWifiDeauthSta", + "Rpc_Resp_WifiSetStorage", + "RpcRespWifiSetStorage", + "RpcRespWifiSetStorage", "", - sizeof(RpcReqWifiDeauthSta), + sizeof(RpcRespWifiSetStorage), 1, - rpc__req__wifi_deauth_sta__field_descriptors, - rpc__req__wifi_deauth_sta__field_indices_by_name, - 1, rpc__req__wifi_deauth_sta__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_deauth_sta__init, + rpc__resp__wifi_set_storage__field_descriptors, + rpc__resp__wifi_set_storage__field_indices_by_name, + 1, rpc__resp__wifi_set_storage__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_storage__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_deauth_sta__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_country_code__field_descriptors[2] = { { - "resp", + "country", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcRespWifiDeauthSta, resp), + offsetof(RpcReqWifiSetCountryCode, country), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "aid", + "ieee80211d_enabled", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(RpcRespWifiDeauthSta, aid), + offsetof(RpcReqWifiSetCountryCode, ieee80211d_enabled), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_deauth_sta__field_indices_by_name[] = { - 1, /* field[1] = aid */ - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_set_country_code__field_indices_by_name[] = { + 0, /* field[0] = country */ + 1, /* field[1] = ieee80211d_enabled */ }; -static const ProtobufCIntRange rpc__resp__wifi_deauth_sta__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_country_code__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_deauth_sta__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_country_code__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiDeauthSta", - "RpcRespWifiDeauthSta", - "RpcRespWifiDeauthSta", + "Rpc_Req_WifiSetCountryCode", + "RpcReqWifiSetCountryCode", + "RpcReqWifiSetCountryCode", "", - sizeof(RpcRespWifiDeauthSta), + sizeof(RpcReqWifiSetCountryCode), 2, - rpc__resp__wifi_deauth_sta__field_descriptors, - rpc__resp__wifi_deauth_sta__field_indices_by_name, - 1, rpc__resp__wifi_deauth_sta__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_deauth_sta__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_sta_get_ap_info__field_descriptors NULL -#define rpc__req__wifi_sta_get_ap_info__field_indices_by_name NULL -#define rpc__req__wifi_sta_get_ap_info__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_ap_info__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaGetApInfo", - "RpcReqWifiStaGetApInfo", - "RpcReqWifiStaGetApInfo", - "", - sizeof(RpcReqWifiStaGetApInfo), - 0, - rpc__req__wifi_sta_get_ap_info__field_descriptors, - rpc__req__wifi_sta_get_ap_info__field_indices_by_name, - 0, rpc__req__wifi_sta_get_ap_info__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_get_ap_info__init, + rpc__req__wifi_set_country_code__field_descriptors, + rpc__req__wifi_set_country_code__field_indices_by_name, + 1, rpc__req__wifi_set_country_code__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_country_code__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_ap_info__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_country_code__field_descriptors[1] = { { "resp", @@ -14858,177 +16238,200 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_ap_info__field_des PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetApInfo, resp), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "ap_record", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetApInfo, ap_record), - &wifi_ap_record__descriptor, + offsetof(RpcRespWifiSetCountryCode, resp), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_get_ap_info__field_indices_by_name[] = { - 1, /* field[1] = ap_record */ +static const unsigned rpc__resp__wifi_set_country_code__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_get_ap_info__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_country_code__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_ap_info__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_country_code__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaGetApInfo", - "RpcRespWifiStaGetApInfo", - "RpcRespWifiStaGetApInfo", + "Rpc_Resp_WifiSetCountryCode", + "RpcRespWifiSetCountryCode", + "RpcRespWifiSetCountryCode", "", - sizeof(RpcRespWifiStaGetApInfo), - 2, - rpc__resp__wifi_sta_get_ap_info__field_descriptors, - rpc__resp__wifi_sta_get_ap_info__field_indices_by_name, - 1, rpc__resp__wifi_sta_get_ap_info__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_get_ap_info__init, + sizeof(RpcRespWifiSetCountryCode), + 1, + rpc__resp__wifi_set_country_code__field_descriptors, + rpc__resp__wifi_set_country_code__field_indices_by_name, + 1, rpc__resp__wifi_set_country_code__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_country_code__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_protocol__field_descriptors[2] = +#define rpc__req__wifi_get_country_code__field_descriptors NULL +#define rpc__req__wifi_get_country_code__field_indices_by_name NULL +#define rpc__req__wifi_get_country_code__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_get_country_code__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiGetCountryCode", + "RpcReqWifiGetCountryCode", + "RpcReqWifiGetCountryCode", + "", + sizeof(RpcReqWifiGetCountryCode), + 0, + rpc__req__wifi_get_country_code__field_descriptors, + rpc__req__wifi_get_country_code__field_indices_by_name, + 0, rpc__req__wifi_get_country_code__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_country_code__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_country_code__field_descriptors[2] = { { - "ifx", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetProtocol, ifx), + offsetof(RpcRespWifiGetCountryCode, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "protocol_bitmap", + "country", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetProtocol, protocol_bitmap), + offsetof(RpcRespWifiGetCountryCode, country), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_protocol__field_indices_by_name[] = { - 0, /* field[0] = ifx */ - 1, /* field[1] = protocol_bitmap */ +static const unsigned rpc__resp__wifi_get_country_code__field_indices_by_name[] = { + 1, /* field[1] = country */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_set_protocol__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_country_code__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_protocol__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_country_code__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetProtocol", - "RpcReqWifiSetProtocol", - "RpcReqWifiSetProtocol", + "Rpc_Resp_WifiGetCountryCode", + "RpcRespWifiGetCountryCode", + "RpcRespWifiGetCountryCode", "", - sizeof(RpcReqWifiSetProtocol), + sizeof(RpcRespWifiGetCountryCode), 2, - rpc__req__wifi_set_protocol__field_descriptors, - rpc__req__wifi_set_protocol__field_indices_by_name, - 1, rpc__req__wifi_set_protocol__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_protocol__init, + rpc__resp__wifi_get_country_code__field_descriptors, + rpc__resp__wifi_get_country_code__field_indices_by_name, + 1, rpc__resp__wifi_get_country_code__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_country_code__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_protocol__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_country__field_descriptors[1] = { { - "resp", + "country", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetProtocol, resp), - NULL, + offsetof(RpcReqWifiSetCountry, country), + &wifi_country__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_protocol__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_set_country__field_indices_by_name[] = { + 0, /* field[0] = country */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_protocol__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_country__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_protocol__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_country__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetProtocol", - "RpcRespWifiSetProtocol", - "RpcRespWifiSetProtocol", + "Rpc_Req_WifiSetCountry", + "RpcReqWifiSetCountry", + "RpcReqWifiSetCountry", "", - sizeof(RpcRespWifiSetProtocol), + sizeof(RpcReqWifiSetCountry), 1, - rpc__resp__wifi_set_protocol__field_descriptors, - rpc__resp__wifi_set_protocol__field_indices_by_name, - 1, rpc__resp__wifi_set_protocol__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_protocol__init, + rpc__req__wifi_set_country__field_descriptors, + rpc__req__wifi_set_country__field_indices_by_name, + 1, rpc__req__wifi_set_country__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_country__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_get_protocol__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_country__field_descriptors[1] = { { - "ifx", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiGetProtocol, ifx), + offsetof(RpcRespWifiSetCountry, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_get_protocol__field_indices_by_name[] = { - 0, /* field[0] = ifx */ +static const unsigned rpc__resp__wifi_set_country__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_get_protocol__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_country__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_get_protocol__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_country__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetProtocol", - "RpcReqWifiGetProtocol", - "RpcReqWifiGetProtocol", + "Rpc_Resp_WifiSetCountry", + "RpcRespWifiSetCountry", + "RpcRespWifiSetCountry", "", - sizeof(RpcReqWifiGetProtocol), + sizeof(RpcRespWifiSetCountry), 1, - rpc__req__wifi_get_protocol__field_descriptors, - rpc__req__wifi_get_protocol__field_indices_by_name, - 1, rpc__req__wifi_get_protocol__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_protocol__init, + rpc__resp__wifi_set_country__field_descriptors, + rpc__resp__wifi_set_country__field_indices_by_name, + 1, rpc__resp__wifi_set_country__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_country__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_protocol__field_descriptors[2] = +#define rpc__req__wifi_get_country__field_descriptors NULL +#define rpc__req__wifi_get_country__field_indices_by_name NULL +#define rpc__req__wifi_get_country__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_get_country__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiGetCountry", + "RpcReqWifiGetCountry", + "RpcReqWifiGetCountry", + "", + sizeof(RpcReqWifiGetCountry), + 0, + rpc__req__wifi_get_country__field_descriptors, + rpc__req__wifi_get_country__field_indices_by_name, + 0, rpc__req__wifi_get_country__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_country__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_country__field_descriptors[2] = { { "resp", @@ -15036,101 +16439,68 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_protocol__field_descri PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetProtocol, resp), + offsetof(RpcRespWifiGetCountry, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "protocol_bitmap", + "country", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetProtocol, protocol_bitmap), - NULL, + offsetof(RpcRespWifiGetCountry, country), + &wifi_country__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_protocol__field_indices_by_name[] = { - 1, /* field[1] = protocol_bitmap */ +static const unsigned rpc__resp__wifi_get_country__field_indices_by_name[] = { + 1, /* field[1] = country */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_protocol__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_country__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_protocol__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_country__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetProtocol", - "RpcRespWifiGetProtocol", - "RpcRespWifiGetProtocol", + "Rpc_Resp_WifiGetCountry", + "RpcRespWifiGetCountry", + "RpcRespWifiGetCountry", "", - sizeof(RpcRespWifiGetProtocol), + sizeof(RpcRespWifiGetCountry), 2, - rpc__resp__wifi_get_protocol__field_descriptors, - rpc__resp__wifi_get_protocol__field_indices_by_name, - 1, rpc__resp__wifi_get_protocol__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_protocol__init, + rpc__resp__wifi_get_country__field_descriptors, + rpc__resp__wifi_get_country__field_indices_by_name, + 1, rpc__resp__wifi_get_country__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_country__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_bandwidth__field_descriptors[2] = -{ - { - "ifx", - 1, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetBandwidth, ifx), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "bw", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetBandwidth, bw), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, -}; -static const unsigned rpc__req__wifi_set_bandwidth__field_indices_by_name[] = { - 1, /* field[1] = bw */ - 0, /* field[0] = ifx */ -}; -static const ProtobufCIntRange rpc__req__wifi_set_bandwidth__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor rpc__req__wifi_set_bandwidth__descriptor = +#define rpc__req__wifi_ap_get_sta_list__field_descriptors NULL +#define rpc__req__wifi_ap_get_sta_list__field_indices_by_name NULL +#define rpc__req__wifi_ap_get_sta_list__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_ap_get_sta_list__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetBandwidth", - "RpcReqWifiSetBandwidth", - "RpcReqWifiSetBandwidth", - "", - sizeof(RpcReqWifiSetBandwidth), - 2, - rpc__req__wifi_set_bandwidth__field_descriptors, - rpc__req__wifi_set_bandwidth__field_indices_by_name, - 1, rpc__req__wifi_set_bandwidth__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_bandwidth__init, + "Rpc_Req_WifiApGetStaList", + "RpcReqWifiApGetStaList", + "RpcReqWifiApGetStaList", + "", + sizeof(RpcReqWifiApGetStaList), + 0, + rpc__req__wifi_ap_get_sta_list__field_descriptors, + rpc__req__wifi_ap_get_sta_list__field_indices_by_name, + 0, rpc__req__wifi_ap_get_sta_list__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_ap_get_sta_list__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_bandwidth__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_ap_get_sta_list__field_descriptors[2] = { { "resp", @@ -15138,75 +16508,106 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_bandwidth__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetBandwidth, resp), + offsetof(RpcRespWifiApGetStaList, resp), + NULL, NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sta_list", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiApGetStaList, sta_list), + &wifi_sta_list__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_bandwidth__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_ap_get_sta_list__field_indices_by_name[] = { 0, /* field[0] = resp */ + 1, /* field[1] = sta_list */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_bandwidth__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_ap_get_sta_list__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_bandwidth__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_ap_get_sta_list__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetBandwidth", - "RpcRespWifiSetBandwidth", - "RpcRespWifiSetBandwidth", + "Rpc_Resp_WifiApGetStaList", + "RpcRespWifiApGetStaList", + "RpcRespWifiApGetStaList", "", - sizeof(RpcRespWifiSetBandwidth), - 1, - rpc__resp__wifi_set_bandwidth__field_descriptors, - rpc__resp__wifi_set_bandwidth__field_indices_by_name, - 1, rpc__resp__wifi_set_bandwidth__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_bandwidth__init, + sizeof(RpcRespWifiApGetStaList), + 2, + rpc__resp__wifi_ap_get_sta_list__field_descriptors, + rpc__resp__wifi_ap_get_sta_list__field_indices_by_name, + 1, rpc__resp__wifi_ap_get_sta_list__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_ap_get_sta_list__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_get_bandwidth__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_ap_get_sta_aid__field_descriptors[1] = { { - "ifx", + "mac", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcReqWifiGetBandwidth, ifx), + offsetof(RpcReqWifiApGetStaAid, mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_get_bandwidth__field_indices_by_name[] = { - 0, /* field[0] = ifx */ +static const unsigned rpc__req__wifi_ap_get_sta_aid__field_indices_by_name[] = { + 0, /* field[0] = mac */ }; -static const ProtobufCIntRange rpc__req__wifi_get_bandwidth__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_ap_get_sta_aid__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_get_bandwidth__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_ap_get_sta_aid__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetBandwidth", - "RpcReqWifiGetBandwidth", - "RpcReqWifiGetBandwidth", + "Rpc_Req_WifiApGetStaAid", + "RpcReqWifiApGetStaAid", + "RpcReqWifiApGetStaAid", "", - sizeof(RpcReqWifiGetBandwidth), + sizeof(RpcReqWifiApGetStaAid), 1, - rpc__req__wifi_get_bandwidth__field_descriptors, - rpc__req__wifi_get_bandwidth__field_indices_by_name, - 1, rpc__req__wifi_get_bandwidth__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_bandwidth__init, + rpc__req__wifi_ap_get_sta_aid__field_descriptors, + rpc__req__wifi_ap_get_sta_aid__field_indices_by_name, + 1, rpc__req__wifi_ap_get_sta_aid__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_ap_get_sta_aid__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_bandwidth__field_descriptors[2] = +#define rpc__req__wifi_sta_get_negotiated_phymode__field_descriptors NULL +#define rpc__req__wifi_sta_get_negotiated_phymode__field_indices_by_name NULL +#define rpc__req__wifi_sta_get_negotiated_phymode__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_negotiated_phymode__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStaGetNegotiatedPhymode", + "RpcReqWifiStaGetNegotiatedPhymode", + "RpcReqWifiStaGetNegotiatedPhymode", + "", + sizeof(RpcReqWifiStaGetNegotiatedPhymode), + 0, + rpc__req__wifi_sta_get_negotiated_phymode__field_descriptors, + rpc__req__wifi_sta_get_negotiated_phymode__field_indices_by_name, + 0, rpc__req__wifi_sta_get_negotiated_phymode__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_get_negotiated_phymode__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_negotiated_phymode__field_descriptors[2] = { { "resp", @@ -15214,101 +16615,119 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_bandwidth__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBandwidth, resp), + offsetof(RpcRespWifiStaGetNegotiatedPhymode, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "bw", + "phymode", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBandwidth, bw), + offsetof(RpcRespWifiStaGetNegotiatedPhymode, phymode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_bandwidth__field_indices_by_name[] = { - 1, /* field[1] = bw */ +static const unsigned rpc__resp__wifi_sta_get_negotiated_phymode__field_indices_by_name[] = { + 1, /* field[1] = phymode */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_bandwidth__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_get_negotiated_phymode__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_bandwidth__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_negotiated_phymode__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetBandwidth", - "RpcRespWifiGetBandwidth", - "RpcRespWifiGetBandwidth", + "Rpc_Resp_WifiStaGetNegotiatedPhymode", + "RpcRespWifiStaGetNegotiatedPhymode", + "RpcRespWifiStaGetNegotiatedPhymode", "", - sizeof(RpcRespWifiGetBandwidth), + sizeof(RpcRespWifiStaGetNegotiatedPhymode), 2, - rpc__resp__wifi_get_bandwidth__field_descriptors, - rpc__resp__wifi_get_bandwidth__field_indices_by_name, - 1, rpc__resp__wifi_get_bandwidth__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_bandwidth__init, + rpc__resp__wifi_sta_get_negotiated_phymode__field_descriptors, + rpc__resp__wifi_sta_get_negotiated_phymode__field_indices_by_name, + 1, rpc__resp__wifi_sta_get_negotiated_phymode__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_get_negotiated_phymode__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_channel__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_ap_get_sta_aid__field_descriptors[2] = { { - "primary", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetChannel, primary), + offsetof(RpcRespWifiApGetStaAid, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "second", + "aid", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetChannel, second), + offsetof(RpcRespWifiApGetStaAid, aid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_channel__field_indices_by_name[] = { - 0, /* field[0] = primary */ - 1, /* field[1] = second */ +static const unsigned rpc__resp__wifi_ap_get_sta_aid__field_indices_by_name[] = { + 1, /* field[1] = aid */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_set_channel__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_ap_get_sta_aid__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_channel__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_ap_get_sta_aid__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetChannel", - "RpcReqWifiSetChannel", - "RpcReqWifiSetChannel", + "Rpc_Resp_WifiApGetStaAid", + "RpcRespWifiApGetStaAid", + "RpcRespWifiApGetStaAid", "", - sizeof(RpcReqWifiSetChannel), + sizeof(RpcRespWifiApGetStaAid), 2, - rpc__req__wifi_set_channel__field_descriptors, - rpc__req__wifi_set_channel__field_indices_by_name, - 1, rpc__req__wifi_set_channel__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_channel__init, + rpc__resp__wifi_ap_get_sta_aid__field_descriptors, + rpc__resp__wifi_ap_get_sta_aid__field_indices_by_name, + 1, rpc__resp__wifi_ap_get_sta_aid__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_ap_get_sta_aid__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_channel__field_descriptors[1] = +#define rpc__req__wifi_sta_get_rssi__field_descriptors NULL +#define rpc__req__wifi_sta_get_rssi__field_indices_by_name NULL +#define rpc__req__wifi_sta_get_rssi__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_rssi__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStaGetRssi", + "RpcReqWifiStaGetRssi", + "RpcReqWifiStaGetRssi", + "", + sizeof(RpcReqWifiStaGetRssi), + 0, + rpc__req__wifi_sta_get_rssi__field_descriptors, + rpc__req__wifi_sta_get_rssi__field_indices_by_name, + 0, rpc__req__wifi_sta_get_rssi__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_get_rssi__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_rssi__field_descriptors[2] = { { "resp", @@ -15316,55 +16735,68 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_channel__field_descrip PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetChannel, resp), + offsetof(RpcRespWifiStaGetRssi, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rssi", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiStaGetRssi, rssi), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_channel__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_sta_get_rssi__field_indices_by_name[] = { 0, /* field[0] = resp */ + 1, /* field[1] = rssi */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_channel__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_get_rssi__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_channel__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_rssi__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetChannel", - "RpcRespWifiSetChannel", - "RpcRespWifiSetChannel", + "Rpc_Resp_WifiStaGetRssi", + "RpcRespWifiStaGetRssi", + "RpcRespWifiStaGetRssi", "", - sizeof(RpcRespWifiSetChannel), - 1, - rpc__resp__wifi_set_channel__field_descriptors, - rpc__resp__wifi_set_channel__field_indices_by_name, - 1, rpc__resp__wifi_set_channel__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_channel__init, + sizeof(RpcRespWifiStaGetRssi), + 2, + rpc__resp__wifi_sta_get_rssi__field_descriptors, + rpc__resp__wifi_sta_get_rssi__field_indices_by_name, + 1, rpc__resp__wifi_sta_get_rssi__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_get_rssi__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_get_channel__field_descriptors NULL -#define rpc__req__wifi_get_channel__field_indices_by_name NULL -#define rpc__req__wifi_get_channel__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_get_channel__descriptor = +#define rpc__req__wifi_sta_get_aid__field_descriptors NULL +#define rpc__req__wifi_sta_get_aid__field_indices_by_name NULL +#define rpc__req__wifi_sta_get_aid__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_aid__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetChannel", - "RpcReqWifiGetChannel", - "RpcReqWifiGetChannel", + "Rpc_Req_WifiStaGetAid", + "RpcReqWifiStaGetAid", + "RpcReqWifiStaGetAid", "", - sizeof(RpcReqWifiGetChannel), + sizeof(RpcReqWifiStaGetAid), 0, - rpc__req__wifi_get_channel__field_descriptors, - rpc__req__wifi_get_channel__field_indices_by_name, - 0, rpc__req__wifi_get_channel__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_channel__init, + rpc__req__wifi_sta_get_aid__field_descriptors, + rpc__req__wifi_sta_get_aid__field_indices_by_name, + 0, rpc__req__wifi_sta_get_aid__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_get_aid__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_channel__field_descriptors[3] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_aid__field_descriptors[2] = { { "resp", @@ -15372,391 +16804,394 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_channel__field_descrip PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetChannel, resp), + offsetof(RpcRespWifiStaGetAid, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "primary", + "aid", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetChannel, primary), + offsetof(RpcRespWifiStaGetAid, aid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__wifi_sta_get_aid__field_indices_by_name[] = { + 1, /* field[1] = aid */ + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__wifi_sta_get_aid__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_aid__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_WifiStaGetAid", + "RpcRespWifiStaGetAid", + "RpcRespWifiStaGetAid", + "", + sizeof(RpcRespWifiStaGetAid), + 2, + rpc__resp__wifi_sta_get_aid__field_descriptors, + rpc__resp__wifi_sta_get_aid__field_indices_by_name, + 1, rpc__resp__wifi_sta_get_aid__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_get_aid__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__wifi_set_protocols__field_descriptors[2] = +{ { - "second", - 3, + "ifx", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetChannel, second), + offsetof(RpcReqWifiSetProtocols, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "protocols", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(RpcReqWifiSetProtocols, protocols), + &wifi_protocols__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, }; -static const unsigned rpc__resp__wifi_get_channel__field_indices_by_name[] = { - 1, /* field[1] = primary */ - 0, /* field[0] = resp */ - 2, /* field[2] = second */ +static const unsigned rpc__req__wifi_set_protocols__field_indices_by_name[] = { + 0, /* field[0] = ifx */ + 1, /* field[1] = protocols */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_channel__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_protocols__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 3 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_channel__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_protocols__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetChannel", - "RpcRespWifiGetChannel", - "RpcRespWifiGetChannel", + "Rpc_Req_WifiSetProtocols", + "RpcReqWifiSetProtocols", + "RpcReqWifiSetProtocols", "", - sizeof(RpcRespWifiGetChannel), - 3, - rpc__resp__wifi_get_channel__field_descriptors, - rpc__resp__wifi_get_channel__field_indices_by_name, - 1, rpc__resp__wifi_get_channel__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_channel__init, + sizeof(RpcReqWifiSetProtocols), + 2, + rpc__req__wifi_set_protocols__field_descriptors, + rpc__req__wifi_set_protocols__field_indices_by_name, + 1, rpc__req__wifi_set_protocols__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_protocols__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_storage__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_protocols__field_descriptors[2] = { { - "storage", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetStorage, storage), + offsetof(RpcRespWifiSetProtocols, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ifx", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiSetProtocols, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_storage__field_indices_by_name[] = { - 0, /* field[0] = storage */ +static const unsigned rpc__resp__wifi_set_protocols__field_indices_by_name[] = { + 1, /* field[1] = ifx */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_set_storage__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_protocols__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_storage__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_protocols__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetStorage", - "RpcReqWifiSetStorage", - "RpcReqWifiSetStorage", + "Rpc_Resp_WifiSetProtocols", + "RpcRespWifiSetProtocols", + "RpcRespWifiSetProtocols", "", - sizeof(RpcReqWifiSetStorage), - 1, - rpc__req__wifi_set_storage__field_descriptors, - rpc__req__wifi_set_storage__field_indices_by_name, - 1, rpc__req__wifi_set_storage__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_storage__init, + sizeof(RpcRespWifiSetProtocols), + 2, + rpc__resp__wifi_set_protocols__field_descriptors, + rpc__resp__wifi_set_protocols__field_indices_by_name, + 1, rpc__resp__wifi_set_protocols__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_protocols__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_storage__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_get_protocols__field_descriptors[1] = { { - "resp", + "ifx", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetStorage, resp), + offsetof(RpcReqWifiGetProtocols, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_storage__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_get_protocols__field_indices_by_name[] = { + 0, /* field[0] = ifx */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_storage__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_get_protocols__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_storage__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_get_protocols__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetStorage", - "RpcRespWifiSetStorage", - "RpcRespWifiSetStorage", + "Rpc_Req_WifiGetProtocols", + "RpcReqWifiGetProtocols", + "RpcReqWifiGetProtocols", "", - sizeof(RpcRespWifiSetStorage), + sizeof(RpcReqWifiGetProtocols), 1, - rpc__resp__wifi_set_storage__field_descriptors, - rpc__resp__wifi_set_storage__field_indices_by_name, - 1, rpc__resp__wifi_set_storage__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_storage__init, + rpc__req__wifi_get_protocols__field_descriptors, + rpc__req__wifi_get_protocols__field_indices_by_name, + 1, rpc__req__wifi_get_protocols__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_protocols__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_country_code__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_protocols__field_descriptors[3] = { { - "country", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetCountryCode, country), + offsetof(RpcRespWifiGetProtocols, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ieee80211d_enabled", + "ifx", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetCountryCode, ieee80211d_enabled), + offsetof(RpcRespWifiGetProtocols, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__req__wifi_set_country_code__field_indices_by_name[] = { - 0, /* field[0] = country */ - 1, /* field[1] = ieee80211d_enabled */ -}; -static const ProtobufCIntRange rpc__req__wifi_set_country_code__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor rpc__req__wifi_set_country_code__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetCountryCode", - "RpcReqWifiSetCountryCode", - "RpcReqWifiSetCountryCode", - "", - sizeof(RpcReqWifiSetCountryCode), - 2, - rpc__req__wifi_set_country_code__field_descriptors, - rpc__req__wifi_set_country_code__field_indices_by_name, - 1, rpc__req__wifi_set_country_code__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_country_code__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_country_code__field_descriptors[1] = -{ { - "resp", - 1, + "protocols", + 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetCountryCode, resp), - NULL, + offsetof(RpcRespWifiGetProtocols, protocols), + &wifi_protocols__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_country_code__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_get_protocols__field_indices_by_name[] = { + 1, /* field[1] = ifx */ + 2, /* field[2] = protocols */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_country_code__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_protocols__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_country_code__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetCountryCode", - "RpcRespWifiSetCountryCode", - "RpcRespWifiSetCountryCode", - "", - sizeof(RpcRespWifiSetCountryCode), - 1, - rpc__resp__wifi_set_country_code__field_descriptors, - rpc__resp__wifi_set_country_code__field_indices_by_name, - 1, rpc__resp__wifi_set_country_code__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_country_code__init, - NULL,NULL,NULL /* reserved[123] */ + { 0, 3 } }; -#define rpc__req__wifi_get_country_code__field_descriptors NULL -#define rpc__req__wifi_get_country_code__field_indices_by_name NULL -#define rpc__req__wifi_get_country_code__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_get_country_code__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_protocols__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetCountryCode", - "RpcReqWifiGetCountryCode", - "RpcReqWifiGetCountryCode", + "Rpc_Resp_WifiGetProtocols", + "RpcRespWifiGetProtocols", + "RpcRespWifiGetProtocols", "", - sizeof(RpcReqWifiGetCountryCode), - 0, - rpc__req__wifi_get_country_code__field_descriptors, - rpc__req__wifi_get_country_code__field_indices_by_name, - 0, rpc__req__wifi_get_country_code__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_country_code__init, + sizeof(RpcRespWifiGetProtocols), + 3, + rpc__resp__wifi_get_protocols__field_descriptors, + rpc__resp__wifi_get_protocols__field_indices_by_name, + 1, rpc__resp__wifi_get_protocols__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_protocols__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_country_code__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_bandwidths__field_descriptors[2] = { { - "resp", + "ifx", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetCountryCode, resp), + offsetof(RpcReqWifiSetBandwidths, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "country", + "bandwidths", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetCountryCode, country), - NULL, + offsetof(RpcReqWifiSetBandwidths, bandwidths), + &wifi_bandwidths__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_country_code__field_indices_by_name[] = { - 1, /* field[1] = country */ - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_set_bandwidths__field_indices_by_name[] = { + 1, /* field[1] = bandwidths */ + 0, /* field[0] = ifx */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_country_code__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_bandwidths__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_country_code__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_bandwidths__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetCountryCode", - "RpcRespWifiGetCountryCode", - "RpcRespWifiGetCountryCode", + "Rpc_Req_WifiSetBandwidths", + "RpcReqWifiSetBandwidths", + "RpcReqWifiSetBandwidths", "", - sizeof(RpcRespWifiGetCountryCode), + sizeof(RpcReqWifiSetBandwidths), 2, - rpc__resp__wifi_get_country_code__field_descriptors, - rpc__resp__wifi_get_country_code__field_indices_by_name, - 1, rpc__resp__wifi_get_country_code__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_country_code__init, + rpc__req__wifi_set_bandwidths__field_descriptors, + rpc__req__wifi_set_bandwidths__field_indices_by_name, + 1, rpc__req__wifi_set_bandwidths__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_bandwidths__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_country__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_bandwidths__field_descriptors[2] = { { - "country", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetCountry, country), - &wifi_country__descriptor, + offsetof(RpcRespWifiSetBandwidths, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ifx", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiSetBandwidths, ifx), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_country__field_indices_by_name[] = { - 0, /* field[0] = country */ +static const unsigned rpc__resp__wifi_set_bandwidths__field_indices_by_name[] = { + 1, /* field[1] = ifx */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_set_country__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_bandwidths__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_country__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_bandwidths__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetCountry", - "RpcReqWifiSetCountry", - "RpcReqWifiSetCountry", + "Rpc_Resp_WifiSetBandwidths", + "RpcRespWifiSetBandwidths", + "RpcRespWifiSetBandwidths", "", - sizeof(RpcReqWifiSetCountry), - 1, - rpc__req__wifi_set_country__field_descriptors, - rpc__req__wifi_set_country__field_indices_by_name, - 1, rpc__req__wifi_set_country__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_country__init, + sizeof(RpcRespWifiSetBandwidths), + 2, + rpc__resp__wifi_set_bandwidths__field_descriptors, + rpc__resp__wifi_set_bandwidths__field_indices_by_name, + 1, rpc__resp__wifi_set_bandwidths__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_bandwidths__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_country__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_get_bandwidths__field_descriptors[1] = { { - "resp", + "ifx", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetCountry, resp), + offsetof(RpcReqWifiGetBandwidths, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_country__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_get_bandwidths__field_indices_by_name[] = { + 0, /* field[0] = ifx */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_country__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_get_bandwidths__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_country__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_get_bandwidths__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetCountry", - "RpcRespWifiSetCountry", - "RpcRespWifiSetCountry", + "Rpc_Req_WifiGetBandwidths", + "RpcReqWifiGetBandwidths", + "RpcReqWifiGetBandwidths", "", - sizeof(RpcRespWifiSetCountry), + sizeof(RpcReqWifiGetBandwidths), 1, - rpc__resp__wifi_set_country__field_descriptors, - rpc__resp__wifi_set_country__field_indices_by_name, - 1, rpc__resp__wifi_set_country__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_country__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_get_country__field_descriptors NULL -#define rpc__req__wifi_get_country__field_indices_by_name NULL -#define rpc__req__wifi_get_country__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_get_country__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetCountry", - "RpcReqWifiGetCountry", - "RpcReqWifiGetCountry", - "", - sizeof(RpcReqWifiGetCountry), - 0, - rpc__req__wifi_get_country__field_descriptors, - rpc__req__wifi_get_country__field_indices_by_name, - 0, rpc__req__wifi_get_country__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_country__init, + rpc__req__wifi_get_bandwidths__field_descriptors, + rpc__req__wifi_get_bandwidths__field_indices_by_name, + 1, rpc__req__wifi_get_bandwidths__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_bandwidths__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_country__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_bandwidths__field_descriptors[3] = { { "resp", @@ -15764,175 +17199,157 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_country__field_descrip PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetCountry, resp), + offsetof(RpcRespWifiGetBandwidths, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "country", + "ifx", 2, PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiGetBandwidths, ifx), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "bandwidths", + 3, + PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetCountry, country), - &wifi_country__descriptor, + offsetof(RpcRespWifiGetBandwidths, bandwidths), + &wifi_bandwidths__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_country__field_indices_by_name[] = { - 1, /* field[1] = country */ +static const unsigned rpc__resp__wifi_get_bandwidths__field_indices_by_name[] = { + 2, /* field[2] = bandwidths */ + 1, /* field[1] = ifx */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_country__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_bandwidths__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_country__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetCountry", - "RpcRespWifiGetCountry", - "RpcRespWifiGetCountry", - "", - sizeof(RpcRespWifiGetCountry), - 2, - rpc__resp__wifi_get_country__field_descriptors, - rpc__resp__wifi_get_country__field_indices_by_name, - 1, rpc__resp__wifi_get_country__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_country__init, - NULL,NULL,NULL /* reserved[123] */ + { 0, 3 } }; -#define rpc__req__wifi_ap_get_sta_list__field_descriptors NULL -#define rpc__req__wifi_ap_get_sta_list__field_indices_by_name NULL -#define rpc__req__wifi_ap_get_sta_list__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_ap_get_sta_list__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_bandwidths__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiApGetStaList", - "RpcReqWifiApGetStaList", - "RpcReqWifiApGetStaList", + "Rpc_Resp_WifiGetBandwidths", + "RpcRespWifiGetBandwidths", + "RpcRespWifiGetBandwidths", "", - sizeof(RpcReqWifiApGetStaList), - 0, - rpc__req__wifi_ap_get_sta_list__field_descriptors, - rpc__req__wifi_ap_get_sta_list__field_indices_by_name, - 0, rpc__req__wifi_ap_get_sta_list__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_ap_get_sta_list__init, + sizeof(RpcRespWifiGetBandwidths), + 3, + rpc__resp__wifi_get_bandwidths__field_descriptors, + rpc__resp__wifi_get_bandwidths__field_indices_by_name, + 1, rpc__resp__wifi_get_bandwidths__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_bandwidths__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_ap_get_sta_list__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_band__field_descriptors[1] = { { - "resp", + "band", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiApGetStaList, resp), - NULL, + offsetof(RpcReqWifiSetBand, band), NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "sta_list", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiApGetStaList, sta_list), - &wifi_sta_list__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_ap_get_sta_list__field_indices_by_name[] = { - 0, /* field[0] = resp */ - 1, /* field[1] = sta_list */ +static const unsigned rpc__req__wifi_set_band__field_indices_by_name[] = { + 0, /* field[0] = band */ }; -static const ProtobufCIntRange rpc__resp__wifi_ap_get_sta_list__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_band__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_ap_get_sta_list__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_band__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiApGetStaList", - "RpcRespWifiApGetStaList", - "RpcRespWifiApGetStaList", - "", - sizeof(RpcRespWifiApGetStaList), - 2, - rpc__resp__wifi_ap_get_sta_list__field_descriptors, - rpc__resp__wifi_ap_get_sta_list__field_indices_by_name, - 1, rpc__resp__wifi_ap_get_sta_list__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_ap_get_sta_list__init, + "Rpc_Req_WifiSetBand", + "RpcReqWifiSetBand", + "RpcReqWifiSetBand", + "", + sizeof(RpcReqWifiSetBand), + 1, + rpc__req__wifi_set_band__field_descriptors, + rpc__req__wifi_set_band__field_indices_by_name, + 1, rpc__req__wifi_set_band__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_band__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_ap_get_sta_aid__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_band__field_descriptors[1] = { { - "mac", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiApGetStaAid, mac), + offsetof(RpcRespWifiSetBand, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_ap_get_sta_aid__field_indices_by_name[] = { - 0, /* field[0] = mac */ +static const unsigned rpc__resp__wifi_set_band__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_ap_get_sta_aid__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_band__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_ap_get_sta_aid__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_band__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiApGetStaAid", - "RpcReqWifiApGetStaAid", - "RpcReqWifiApGetStaAid", + "Rpc_Resp_WifiSetBand", + "RpcRespWifiSetBand", + "RpcRespWifiSetBand", "", - sizeof(RpcReqWifiApGetStaAid), + sizeof(RpcRespWifiSetBand), 1, - rpc__req__wifi_ap_get_sta_aid__field_descriptors, - rpc__req__wifi_ap_get_sta_aid__field_indices_by_name, - 1, rpc__req__wifi_ap_get_sta_aid__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_ap_get_sta_aid__init, + rpc__resp__wifi_set_band__field_descriptors, + rpc__resp__wifi_set_band__field_indices_by_name, + 1, rpc__resp__wifi_set_band__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_band__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_sta_get_negotiated_phymode__field_descriptors NULL -#define rpc__req__wifi_sta_get_negotiated_phymode__field_indices_by_name NULL -#define rpc__req__wifi_sta_get_negotiated_phymode__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_negotiated_phymode__descriptor = +#define rpc__req__wifi_get_band__field_descriptors NULL +#define rpc__req__wifi_get_band__field_indices_by_name NULL +#define rpc__req__wifi_get_band__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_get_band__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaGetNegotiatedPhymode", - "RpcReqWifiStaGetNegotiatedPhymode", - "RpcReqWifiStaGetNegotiatedPhymode", + "Rpc_Req_WifiGetBand", + "RpcReqWifiGetBand", + "RpcReqWifiGetBand", "", - sizeof(RpcReqWifiStaGetNegotiatedPhymode), + sizeof(RpcReqWifiGetBand), 0, - rpc__req__wifi_sta_get_negotiated_phymode__field_descriptors, - rpc__req__wifi_sta_get_negotiated_phymode__field_indices_by_name, - 0, rpc__req__wifi_sta_get_negotiated_phymode__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_get_negotiated_phymode__init, + rpc__req__wifi_get_band__field_descriptors, + rpc__req__wifi_get_band__field_indices_by_name, + 0, rpc__req__wifi_get_band__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_band__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_negotiated_phymode__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_band__field_descriptors[2] = { { "resp", @@ -15940,119 +17357,88 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_negotiated_phymode PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetNegotiatedPhymode, resp), + offsetof(RpcRespWifiGetBand, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "phymode", + "band", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetNegotiatedPhymode, phymode), + offsetof(RpcRespWifiGetBand, band), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_get_negotiated_phymode__field_indices_by_name[] = { - 1, /* field[1] = phymode */ +static const unsigned rpc__resp__wifi_get_band__field_indices_by_name[] = { + 1, /* field[1] = band */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_get_negotiated_phymode__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_band__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_negotiated_phymode__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_band__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaGetNegotiatedPhymode", - "RpcRespWifiStaGetNegotiatedPhymode", - "RpcRespWifiStaGetNegotiatedPhymode", + "Rpc_Resp_WifiGetBand", + "RpcRespWifiGetBand", + "RpcRespWifiGetBand", "", - sizeof(RpcRespWifiStaGetNegotiatedPhymode), + sizeof(RpcRespWifiGetBand), 2, - rpc__resp__wifi_sta_get_negotiated_phymode__field_descriptors, - rpc__resp__wifi_sta_get_negotiated_phymode__field_indices_by_name, - 1, rpc__resp__wifi_sta_get_negotiated_phymode__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_get_negotiated_phymode__init, + rpc__resp__wifi_get_band__field_descriptors, + rpc__resp__wifi_get_band__field_indices_by_name, + 1, rpc__resp__wifi_get_band__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_band__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_ap_get_sta_aid__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_band_mode__field_descriptors[1] = { { - "resp", + "bandmode", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiApGetStaAid, resp), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "aid", - 2, - PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiApGetStaAid, aid), + offsetof(RpcReqWifiSetBandMode, bandmode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_ap_get_sta_aid__field_indices_by_name[] = { - 1, /* field[1] = aid */ - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_set_band_mode__field_indices_by_name[] = { + 0, /* field[0] = bandmode */ }; -static const ProtobufCIntRange rpc__resp__wifi_ap_get_sta_aid__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_band_mode__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_ap_get_sta_aid__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiApGetStaAid", - "RpcRespWifiApGetStaAid", - "RpcRespWifiApGetStaAid", - "", - sizeof(RpcRespWifiApGetStaAid), - 2, - rpc__resp__wifi_ap_get_sta_aid__field_descriptors, - rpc__resp__wifi_ap_get_sta_aid__field_indices_by_name, - 1, rpc__resp__wifi_ap_get_sta_aid__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_ap_get_sta_aid__init, - NULL,NULL,NULL /* reserved[123] */ + { 0, 1 } }; -#define rpc__req__wifi_sta_get_rssi__field_descriptors NULL -#define rpc__req__wifi_sta_get_rssi__field_indices_by_name NULL -#define rpc__req__wifi_sta_get_rssi__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_rssi__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_band_mode__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaGetRssi", - "RpcReqWifiStaGetRssi", - "RpcReqWifiStaGetRssi", + "Rpc_Req_WifiSetBandMode", + "RpcReqWifiSetBandMode", + "RpcReqWifiSetBandMode", "", - sizeof(RpcReqWifiStaGetRssi), - 0, - rpc__req__wifi_sta_get_rssi__field_descriptors, - rpc__req__wifi_sta_get_rssi__field_indices_by_name, - 0, rpc__req__wifi_sta_get_rssi__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_get_rssi__init, + sizeof(RpcReqWifiSetBandMode), + 1, + rpc__req__wifi_set_band_mode__field_descriptors, + rpc__req__wifi_set_band_mode__field_indices_by_name, + 1, rpc__req__wifi_set_band_mode__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_band_mode__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_rssi__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_band_mode__field_descriptors[1] = { { "resp", @@ -16060,68 +17446,55 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_rssi__field_descri PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetRssi, resp), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "rssi", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetRssi, rssi), + offsetof(RpcRespWifiSetBandMode, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_get_rssi__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_set_band_mode__field_indices_by_name[] = { 0, /* field[0] = resp */ - 1, /* field[1] = rssi */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_get_rssi__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_band_mode__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_rssi__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_band_mode__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaGetRssi", - "RpcRespWifiStaGetRssi", - "RpcRespWifiStaGetRssi", + "Rpc_Resp_WifiSetBandMode", + "RpcRespWifiSetBandMode", + "RpcRespWifiSetBandMode", "", - sizeof(RpcRespWifiStaGetRssi), - 2, - rpc__resp__wifi_sta_get_rssi__field_descriptors, - rpc__resp__wifi_sta_get_rssi__field_indices_by_name, - 1, rpc__resp__wifi_sta_get_rssi__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_get_rssi__init, + sizeof(RpcRespWifiSetBandMode), + 1, + rpc__resp__wifi_set_band_mode__field_descriptors, + rpc__resp__wifi_set_band_mode__field_indices_by_name, + 1, rpc__resp__wifi_set_band_mode__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_band_mode__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_sta_get_aid__field_descriptors NULL -#define rpc__req__wifi_sta_get_aid__field_indices_by_name NULL -#define rpc__req__wifi_sta_get_aid__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_aid__descriptor = +#define rpc__req__wifi_get_band_mode__field_descriptors NULL +#define rpc__req__wifi_get_band_mode__field_indices_by_name NULL +#define rpc__req__wifi_get_band_mode__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_get_band_mode__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaGetAid", - "RpcReqWifiStaGetAid", - "RpcReqWifiStaGetAid", + "Rpc_Req_WifiGetBandMode", + "RpcReqWifiGetBandMode", + "RpcReqWifiGetBandMode", "", - sizeof(RpcReqWifiStaGetAid), + sizeof(RpcReqWifiGetBandMode), 0, - rpc__req__wifi_sta_get_aid__field_descriptors, - rpc__req__wifi_sta_get_aid__field_indices_by_name, - 0, rpc__req__wifi_sta_get_aid__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_get_aid__init, + rpc__req__wifi_get_band_mode__field_descriptors, + rpc__req__wifi_get_band_mode__field_indices_by_name, + 0, rpc__req__wifi_get_band_mode__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_band_mode__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_aid__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_band_mode__field_descriptors[2] = { { "resp", @@ -16129,101 +17502,101 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_aid__field_descrip PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetAid, resp), + offsetof(RpcRespWifiGetBandMode, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "aid", + "bandmode", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetAid, aid), + offsetof(RpcRespWifiGetBandMode, bandmode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_get_aid__field_indices_by_name[] = { - 1, /* field[1] = aid */ +static const unsigned rpc__resp__wifi_get_band_mode__field_indices_by_name[] = { + 1, /* field[1] = bandmode */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_get_aid__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_band_mode__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_aid__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_band_mode__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaGetAid", - "RpcRespWifiStaGetAid", - "RpcRespWifiStaGetAid", + "Rpc_Resp_WifiGetBandMode", + "RpcRespWifiGetBandMode", + "RpcRespWifiGetBandMode", "", - sizeof(RpcRespWifiStaGetAid), - 2, - rpc__resp__wifi_sta_get_aid__field_descriptors, - rpc__resp__wifi_sta_get_aid__field_indices_by_name, - 1, rpc__resp__wifi_sta_get_aid__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_get_aid__init, + sizeof(RpcRespWifiGetBandMode), + 2, + rpc__resp__wifi_get_band_mode__field_descriptors, + rpc__resp__wifi_get_band_mode__field_indices_by_name, + 1, rpc__resp__wifi_get_band_mode__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_band_mode__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_protocols__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_inactive_time__field_descriptors[2] = { { "ifx", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetProtocols, ifx), + offsetof(RpcReqWifiSetInactiveTime, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "protocols", + "sec", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetProtocols, protocols), - &wifi_protocols__descriptor, + offsetof(RpcReqWifiSetInactiveTime, sec), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_protocols__field_indices_by_name[] = { +static const unsigned rpc__req__wifi_set_inactive_time__field_indices_by_name[] = { 0, /* field[0] = ifx */ - 1, /* field[1] = protocols */ + 1, /* field[1] = sec */ }; -static const ProtobufCIntRange rpc__req__wifi_set_protocols__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_inactive_time__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_protocols__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_inactive_time__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetProtocols", - "RpcReqWifiSetProtocols", - "RpcReqWifiSetProtocols", + "Rpc_Req_WifiSetInactiveTime", + "RpcReqWifiSetInactiveTime", + "RpcReqWifiSetInactiveTime", "", - sizeof(RpcReqWifiSetProtocols), + sizeof(RpcReqWifiSetInactiveTime), 2, - rpc__req__wifi_set_protocols__field_descriptors, - rpc__req__wifi_set_protocols__field_indices_by_name, - 1, rpc__req__wifi_set_protocols__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_protocols__init, + rpc__req__wifi_set_inactive_time__field_descriptors, + rpc__req__wifi_set_inactive_time__field_indices_by_name, + 1, rpc__req__wifi_set_inactive_time__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_inactive_time__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_protocols__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_inactive_time__field_descriptors[1] = { { "resp", @@ -16231,88 +17604,75 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_protocols__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetProtocols, resp), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "ifx", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetProtocols, ifx), + offsetof(RpcRespWifiSetInactiveTime, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_protocols__field_indices_by_name[] = { - 1, /* field[1] = ifx */ +static const unsigned rpc__resp__wifi_set_inactive_time__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_protocols__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_inactive_time__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_protocols__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_inactive_time__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetProtocols", - "RpcRespWifiSetProtocols", - "RpcRespWifiSetProtocols", + "Rpc_Resp_WifiSetInactiveTime", + "RpcRespWifiSetInactiveTime", + "RpcRespWifiSetInactiveTime", "", - sizeof(RpcRespWifiSetProtocols), - 2, - rpc__resp__wifi_set_protocols__field_descriptors, - rpc__resp__wifi_set_protocols__field_indices_by_name, - 1, rpc__resp__wifi_set_protocols__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_protocols__init, + sizeof(RpcRespWifiSetInactiveTime), + 1, + rpc__resp__wifi_set_inactive_time__field_descriptors, + rpc__resp__wifi_set_inactive_time__field_indices_by_name, + 1, rpc__resp__wifi_set_inactive_time__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_inactive_time__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_get_protocols__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_get_inactive_time__field_descriptors[1] = { { "ifx", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiGetProtocols, ifx), + offsetof(RpcReqWifiGetInactiveTime, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_get_protocols__field_indices_by_name[] = { +static const unsigned rpc__req__wifi_get_inactive_time__field_indices_by_name[] = { 0, /* field[0] = ifx */ }; -static const ProtobufCIntRange rpc__req__wifi_get_protocols__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_get_inactive_time__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_get_protocols__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_get_inactive_time__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetProtocols", - "RpcReqWifiGetProtocols", - "RpcReqWifiGetProtocols", + "Rpc_Req_WifiGetInactiveTime", + "RpcReqWifiGetInactiveTime", + "RpcReqWifiGetInactiveTime", "", - sizeof(RpcReqWifiGetProtocols), + sizeof(RpcReqWifiGetInactiveTime), 1, - rpc__req__wifi_get_protocols__field_descriptors, - rpc__req__wifi_get_protocols__field_indices_by_name, - 1, rpc__req__wifi_get_protocols__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_protocols__init, + rpc__req__wifi_get_inactive_time__field_descriptors, + rpc__req__wifi_get_inactive_time__field_indices_by_name, + 1, rpc__req__wifi_get_inactive_time__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_inactive_time__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_protocols__field_descriptors[3] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_inactive_time__field_descriptors[2] = { { "resp", @@ -16320,114 +17680,88 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_protocols__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetProtocols, resp), + offsetof(RpcRespWifiGetInactiveTime, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ifx", + "sec", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetProtocols, ifx), - NULL, + offsetof(RpcRespWifiGetInactiveTime, sec), NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "protocols", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetProtocols, protocols), - &wifi_protocols__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_protocols__field_indices_by_name[] = { - 1, /* field[1] = ifx */ - 2, /* field[2] = protocols */ +static const unsigned rpc__resp__wifi_get_inactive_time__field_indices_by_name[] = { 0, /* field[0] = resp */ + 1, /* field[1] = sec */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_protocols__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_inactive_time__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 3 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_protocols__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_inactive_time__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetProtocols", - "RpcRespWifiGetProtocols", - "RpcRespWifiGetProtocols", + "Rpc_Resp_WifiGetInactiveTime", + "RpcRespWifiGetInactiveTime", + "RpcRespWifiGetInactiveTime", "", - sizeof(RpcRespWifiGetProtocols), - 3, - rpc__resp__wifi_get_protocols__field_descriptors, - rpc__resp__wifi_get_protocols__field_indices_by_name, - 1, rpc__resp__wifi_get_protocols__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_protocols__init, + sizeof(RpcRespWifiGetInactiveTime), + 2, + rpc__resp__wifi_get_inactive_time__field_descriptors, + rpc__resp__wifi_get_inactive_time__field_indices_by_name, + 1, rpc__resp__wifi_get_inactive_time__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_inactive_time__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_bandwidths__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_setup__field_descriptors[1] = { { - "ifx", + "setup_config", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetBandwidths, ifx), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "bandwidths", - 2, - PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetBandwidths, bandwidths), - &wifi_bandwidths__descriptor, + offsetof(RpcReqWifiStaItwtSetup, setup_config), + &wifi_itwt_setup_config__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_bandwidths__field_indices_by_name[] = { - 1, /* field[1] = bandwidths */ - 0, /* field[0] = ifx */ +static const unsigned rpc__req__wifi_sta_itwt_setup__field_indices_by_name[] = { + 0, /* field[0] = setup_config */ }; -static const ProtobufCIntRange rpc__req__wifi_set_bandwidths__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_sta_itwt_setup__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_bandwidths__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_setup__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetBandwidths", - "RpcReqWifiSetBandwidths", - "RpcReqWifiSetBandwidths", + "Rpc_Req_WifiStaItwtSetup", + "RpcReqWifiStaItwtSetup", + "RpcReqWifiStaItwtSetup", "", - sizeof(RpcReqWifiSetBandwidths), - 2, - rpc__req__wifi_set_bandwidths__field_descriptors, - rpc__req__wifi_set_bandwidths__field_indices_by_name, - 1, rpc__req__wifi_set_bandwidths__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_bandwidths__init, + sizeof(RpcReqWifiStaItwtSetup), + 1, + rpc__req__wifi_sta_itwt_setup__field_descriptors, + rpc__req__wifi_sta_itwt_setup__field_indices_by_name, + 1, rpc__req__wifi_sta_itwt_setup__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_setup__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_bandwidths__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_setup__field_descriptors[1] = { { "resp", @@ -16435,88 +17769,75 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_bandwidths__field_desc PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetBandwidths, resp), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "ifx", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetBandwidths, ifx), + offsetof(RpcRespWifiStaItwtSetup, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_bandwidths__field_indices_by_name[] = { - 1, /* field[1] = ifx */ +static const unsigned rpc__resp__wifi_sta_itwt_setup__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_bandwidths__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_setup__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_bandwidths__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_setup__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetBandwidths", - "RpcRespWifiSetBandwidths", - "RpcRespWifiSetBandwidths", + "Rpc_Resp_WifiStaItwtSetup", + "RpcRespWifiStaItwtSetup", + "RpcRespWifiStaItwtSetup", "", - sizeof(RpcRespWifiSetBandwidths), - 2, - rpc__resp__wifi_set_bandwidths__field_descriptors, - rpc__resp__wifi_set_bandwidths__field_indices_by_name, - 1, rpc__resp__wifi_set_bandwidths__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_bandwidths__init, + sizeof(RpcRespWifiStaItwtSetup), + 1, + rpc__resp__wifi_sta_itwt_setup__field_descriptors, + rpc__resp__wifi_sta_itwt_setup__field_indices_by_name, + 1, rpc__resp__wifi_sta_itwt_setup__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_setup__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_get_bandwidths__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_teardown__field_descriptors[1] = { { - "ifx", + "flow_id", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiGetBandwidths, ifx), + offsetof(RpcReqWifiStaItwtTeardown, flow_id), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_get_bandwidths__field_indices_by_name[] = { - 0, /* field[0] = ifx */ +static const unsigned rpc__req__wifi_sta_itwt_teardown__field_indices_by_name[] = { + 0, /* field[0] = flow_id */ }; -static const ProtobufCIntRange rpc__req__wifi_get_bandwidths__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_sta_itwt_teardown__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_get_bandwidths__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_teardown__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetBandwidths", - "RpcReqWifiGetBandwidths", - "RpcReqWifiGetBandwidths", + "Rpc_Req_WifiStaItwtTeardown", + "RpcReqWifiStaItwtTeardown", + "RpcReqWifiStaItwtTeardown", "", - sizeof(RpcReqWifiGetBandwidths), + sizeof(RpcReqWifiStaItwtTeardown), 1, - rpc__req__wifi_get_bandwidths__field_descriptors, - rpc__req__wifi_get_bandwidths__field_indices_by_name, - 1, rpc__req__wifi_get_bandwidths__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_bandwidths__init, + rpc__req__wifi_sta_itwt_teardown__field_descriptors, + rpc__req__wifi_sta_itwt_teardown__field_indices_by_name, + 1, rpc__req__wifi_sta_itwt_teardown__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_teardown__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_bandwidths__field_descriptors[3] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_teardown__field_descriptors[1] = { { "resp", @@ -16524,101 +17845,88 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_bandwidths__field_desc PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBandwidths, resp), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "ifx", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBandwidths, ifx), - NULL, + offsetof(RpcRespWifiStaItwtTeardown, resp), NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "bandwidths", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBandwidths, bandwidths), - &wifi_bandwidths__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_bandwidths__field_indices_by_name[] = { - 2, /* field[2] = bandwidths */ - 1, /* field[1] = ifx */ +static const unsigned rpc__resp__wifi_sta_itwt_teardown__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_bandwidths__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_teardown__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 3 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_bandwidths__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_teardown__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetBandwidths", - "RpcRespWifiGetBandwidths", - "RpcRespWifiGetBandwidths", + "Rpc_Resp_WifiStaItwtTeardown", + "RpcRespWifiStaItwtTeardown", + "RpcRespWifiStaItwtTeardown", "", - sizeof(RpcRespWifiGetBandwidths), - 3, - rpc__resp__wifi_get_bandwidths__field_descriptors, - rpc__resp__wifi_get_bandwidths__field_indices_by_name, - 1, rpc__resp__wifi_get_bandwidths__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_bandwidths__init, + sizeof(RpcRespWifiStaItwtTeardown), + 1, + rpc__resp__wifi_sta_itwt_teardown__field_descriptors, + rpc__resp__wifi_sta_itwt_teardown__field_indices_by_name, + 1, rpc__resp__wifi_sta_itwt_teardown__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_teardown__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_band__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_suspend__field_descriptors[2] = { { - "band", + "flow_id", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetBand, band), + offsetof(RpcReqWifiStaItwtSuspend, flow_id), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "suspend_time_ms", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcReqWifiStaItwtSuspend, suspend_time_ms), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_band__field_indices_by_name[] = { - 0, /* field[0] = band */ +static const unsigned rpc__req__wifi_sta_itwt_suspend__field_indices_by_name[] = { + 0, /* field[0] = flow_id */ + 1, /* field[1] = suspend_time_ms */ }; -static const ProtobufCIntRange rpc__req__wifi_set_band__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_sta_itwt_suspend__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_band__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_suspend__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetBand", - "RpcReqWifiSetBand", - "RpcReqWifiSetBand", + "Rpc_Req_WifiStaItwtSuspend", + "RpcReqWifiStaItwtSuspend", + "RpcReqWifiStaItwtSuspend", "", - sizeof(RpcReqWifiSetBand), - 1, - rpc__req__wifi_set_band__field_descriptors, - rpc__req__wifi_set_band__field_indices_by_name, - 1, rpc__req__wifi_set_band__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_band__init, + sizeof(RpcReqWifiStaItwtSuspend), + 2, + rpc__req__wifi_sta_itwt_suspend__field_descriptors, + rpc__req__wifi_sta_itwt_suspend__field_indices_by_name, + 1, rpc__req__wifi_sta_itwt_suspend__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_suspend__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_band__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_suspend__field_descriptors[1] = { { "resp", @@ -16626,55 +17934,55 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_band__field_descriptor PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetBand, resp), + offsetof(RpcRespWifiStaItwtSuspend, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_band__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_sta_itwt_suspend__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_band__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_suspend__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_band__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_suspend__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetBand", - "RpcRespWifiSetBand", - "RpcRespWifiSetBand", + "Rpc_Resp_WifiStaItwtSuspend", + "RpcRespWifiStaItwtSuspend", + "RpcRespWifiStaItwtSuspend", "", - sizeof(RpcRespWifiSetBand), + sizeof(RpcRespWifiStaItwtSuspend), 1, - rpc__resp__wifi_set_band__field_descriptors, - rpc__resp__wifi_set_band__field_indices_by_name, - 1, rpc__resp__wifi_set_band__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_band__init, + rpc__resp__wifi_sta_itwt_suspend__field_descriptors, + rpc__resp__wifi_sta_itwt_suspend__field_indices_by_name, + 1, rpc__resp__wifi_sta_itwt_suspend__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_suspend__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_get_band__field_descriptors NULL -#define rpc__req__wifi_get_band__field_indices_by_name NULL -#define rpc__req__wifi_get_band__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_get_band__descriptor = +#define rpc__req__wifi_sta_itwt_get_flow_id_status__field_descriptors NULL +#define rpc__req__wifi_sta_itwt_get_flow_id_status__field_indices_by_name NULL +#define rpc__req__wifi_sta_itwt_get_flow_id_status__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_get_flow_id_status__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetBand", - "RpcReqWifiGetBand", - "RpcReqWifiGetBand", + "Rpc_Req_WifiStaItwtGetFlowIdStatus", + "RpcReqWifiStaItwtGetFlowIdStatus", + "RpcReqWifiStaItwtGetFlowIdStatus", "", - sizeof(RpcReqWifiGetBand), + sizeof(RpcReqWifiStaItwtGetFlowIdStatus), 0, - rpc__req__wifi_get_band__field_descriptors, - rpc__req__wifi_get_band__field_indices_by_name, - 0, rpc__req__wifi_get_band__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_band__init, + rpc__req__wifi_sta_itwt_get_flow_id_status__field_descriptors, + rpc__req__wifi_sta_itwt_get_flow_id_status__field_indices_by_name, + 0, rpc__req__wifi_sta_itwt_get_flow_id_status__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_get_flow_id_status__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_band__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_get_flow_id_status__field_descriptors[2] = { { "resp", @@ -16682,144 +17990,164 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_band__field_descriptor PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBand, resp), + offsetof(RpcRespWifiStaItwtGetFlowIdStatus, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "band", + "flow_id_bitmap", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBand, band), + offsetof(RpcRespWifiStaItwtGetFlowIdStatus, flow_id_bitmap), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_band__field_indices_by_name[] = { - 1, /* field[1] = band */ +static const unsigned rpc__resp__wifi_sta_itwt_get_flow_id_status__field_indices_by_name[] = { + 1, /* field[1] = flow_id_bitmap */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_band__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_get_flow_id_status__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_band__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_get_flow_id_status__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetBand", - "RpcRespWifiGetBand", - "RpcRespWifiGetBand", + "Rpc_Resp_WifiStaItwtGetFlowIdStatus", + "RpcRespWifiStaItwtGetFlowIdStatus", + "RpcRespWifiStaItwtGetFlowIdStatus", "", - sizeof(RpcRespWifiGetBand), + sizeof(RpcRespWifiStaItwtGetFlowIdStatus), 2, - rpc__resp__wifi_get_band__field_descriptors, - rpc__resp__wifi_get_band__field_indices_by_name, - 1, rpc__resp__wifi_get_band__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_band__init, + rpc__resp__wifi_sta_itwt_get_flow_id_status__field_descriptors, + rpc__resp__wifi_sta_itwt_get_flow_id_status__field_indices_by_name, + 1, rpc__resp__wifi_sta_itwt_get_flow_id_status__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_get_flow_id_status__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_send_probe_req__field_descriptors[1] = +{ + { + "timeout_ms", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcReqWifiStaItwtSendProbeReq, timeout_ms), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__req__wifi_sta_itwt_send_probe_req__field_indices_by_name[] = { + 0, /* field[0] = timeout_ms */ +}; +static const ProtobufCIntRange rpc__req__wifi_sta_itwt_send_probe_req__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_send_probe_req__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStaItwtSendProbeReq", + "RpcReqWifiStaItwtSendProbeReq", + "RpcReqWifiStaItwtSendProbeReq", + "", + sizeof(RpcReqWifiStaItwtSendProbeReq), + 1, + rpc__req__wifi_sta_itwt_send_probe_req__field_descriptors, + rpc__req__wifi_sta_itwt_send_probe_req__field_indices_by_name, + 1, rpc__req__wifi_sta_itwt_send_probe_req__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_send_probe_req__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_band_mode__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_send_probe_req__field_descriptors[1] = { { - "bandmode", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetBandMode, bandmode), + offsetof(RpcRespWifiStaItwtSendProbeReq, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_band_mode__field_indices_by_name[] = { - 0, /* field[0] = bandmode */ +static const unsigned rpc__resp__wifi_sta_itwt_send_probe_req__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_set_band_mode__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_send_probe_req__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_band_mode__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_send_probe_req__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetBandMode", - "RpcReqWifiSetBandMode", - "RpcReqWifiSetBandMode", + "Rpc_Resp_WifiStaItwtSendProbeReq", + "RpcRespWifiStaItwtSendProbeReq", + "RpcRespWifiStaItwtSendProbeReq", "", - sizeof(RpcReqWifiSetBandMode), + sizeof(RpcRespWifiStaItwtSendProbeReq), 1, - rpc__req__wifi_set_band_mode__field_descriptors, - rpc__req__wifi_set_band_mode__field_indices_by_name, - 1, rpc__req__wifi_set_band_mode__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_band_mode__init, + rpc__resp__wifi_sta_itwt_send_probe_req__field_descriptors, + rpc__resp__wifi_sta_itwt_send_probe_req__field_indices_by_name, + 1, rpc__resp__wifi_sta_itwt_send_probe_req__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_send_probe_req__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_band_mode__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_set_target_wake_time_offset__field_descriptors[1] = { { - "resp", + "offset_us", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetBandMode, resp), + offsetof(RpcReqWifiStaItwtSetTargetWakeTimeOffset, offset_us), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_band_mode__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_sta_itwt_set_target_wake_time_offset__field_indices_by_name[] = { + 0, /* field[0] = offset_us */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_band_mode__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_sta_itwt_set_target_wake_time_offset__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_band_mode__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_set_target_wake_time_offset__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetBandMode", - "RpcRespWifiSetBandMode", - "RpcRespWifiSetBandMode", + "Rpc_Req_WifiStaItwtSetTargetWakeTimeOffset", + "RpcReqWifiStaItwtSetTargetWakeTimeOffset", + "RpcReqWifiStaItwtSetTargetWakeTimeOffset", "", - sizeof(RpcRespWifiSetBandMode), + sizeof(RpcReqWifiStaItwtSetTargetWakeTimeOffset), 1, - rpc__resp__wifi_set_band_mode__field_descriptors, - rpc__resp__wifi_set_band_mode__field_indices_by_name, - 1, rpc__resp__wifi_set_band_mode__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_band_mode__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_get_band_mode__field_descriptors NULL -#define rpc__req__wifi_get_band_mode__field_indices_by_name NULL -#define rpc__req__wifi_get_band_mode__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_get_band_mode__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetBandMode", - "RpcReqWifiGetBandMode", - "RpcReqWifiGetBandMode", - "", - sizeof(RpcReqWifiGetBandMode), - 0, - rpc__req__wifi_get_band_mode__field_descriptors, - rpc__req__wifi_get_band_mode__field_indices_by_name, - 0, rpc__req__wifi_get_band_mode__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_band_mode__init, + rpc__req__wifi_sta_itwt_set_target_wake_time_offset__field_descriptors, + rpc__req__wifi_sta_itwt_set_target_wake_time_offset__field_indices_by_name, + 1, rpc__req__wifi_sta_itwt_set_target_wake_time_offset__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_set_target_wake_time_offset__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_band_mode__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__field_descriptors[1] = { { "resp", @@ -16827,101 +18155,75 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_band_mode__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBandMode, resp), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "bandmode", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBandMode, bandmode), + offsetof(RpcRespWifiStaItwtSetTargetWakeTimeOffset, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_band_mode__field_indices_by_name[] = { - 1, /* field[1] = bandmode */ +static const unsigned rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_band_mode__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_band_mode__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetBandMode", - "RpcRespWifiGetBandMode", - "RpcRespWifiGetBandMode", + "Rpc_Resp_WifiStaItwtSetTargetWakeTimeOffset", + "RpcRespWifiStaItwtSetTargetWakeTimeOffset", + "RpcRespWifiStaItwtSetTargetWakeTimeOffset", "", - sizeof(RpcRespWifiGetBandMode), - 2, - rpc__resp__wifi_get_band_mode__field_descriptors, - rpc__resp__wifi_get_band_mode__field_indices_by_name, - 1, rpc__resp__wifi_get_band_mode__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_band_mode__init, + sizeof(RpcRespWifiStaItwtSetTargetWakeTimeOffset), + 1, + rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__field_descriptors, + rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__field_indices_by_name, + 1, rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_inactive_time__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_sta_twt_config__field_descriptors[1] = { { - "ifx", + "config", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetInactiveTime, ifx), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "sec", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetInactiveTime, sec), - NULL, + offsetof(RpcReqWifiStaTwtConfig, config), + &wifi_twt_config__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_inactive_time__field_indices_by_name[] = { - 0, /* field[0] = ifx */ - 1, /* field[1] = sec */ +static const unsigned rpc__req__wifi_sta_twt_config__field_indices_by_name[] = { + 0, /* field[0] = config */ }; -static const ProtobufCIntRange rpc__req__wifi_set_inactive_time__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_sta_twt_config__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_inactive_time__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_sta_twt_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetInactiveTime", - "RpcReqWifiSetInactiveTime", - "RpcReqWifiSetInactiveTime", + "Rpc_Req_WifiStaTwtConfig", + "RpcReqWifiStaTwtConfig", + "RpcReqWifiStaTwtConfig", "", - sizeof(RpcReqWifiSetInactiveTime), - 2, - rpc__req__wifi_set_inactive_time__field_descriptors, - rpc__req__wifi_set_inactive_time__field_indices_by_name, - 1, rpc__req__wifi_set_inactive_time__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_inactive_time__init, + sizeof(RpcReqWifiStaTwtConfig), + 1, + rpc__req__wifi_sta_twt_config__field_descriptors, + rpc__req__wifi_sta_twt_config__field_indices_by_name, + 1, rpc__req__wifi_sta_twt_config__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_twt_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_inactive_time__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_twt_config__field_descriptors[1] = { { "resp", @@ -16929,682 +18231,632 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_inactive_time__field_d PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetInactiveTime, resp), + offsetof(RpcRespWifiStaTwtConfig, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_inactive_time__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_sta_twt_config__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_inactive_time__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_twt_config__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_inactive_time__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_twt_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetInactiveTime", - "RpcRespWifiSetInactiveTime", - "RpcRespWifiSetInactiveTime", + "Rpc_Resp_WifiStaTwtConfig", + "RpcRespWifiStaTwtConfig", + "RpcRespWifiStaTwtConfig", "", - sizeof(RpcRespWifiSetInactiveTime), + sizeof(RpcRespWifiStaTwtConfig), 1, - rpc__resp__wifi_set_inactive_time__field_descriptors, - rpc__resp__wifi_set_inactive_time__field_indices_by_name, - 1, rpc__resp__wifi_set_inactive_time__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_inactive_time__init, + rpc__resp__wifi_sta_twt_config__field_descriptors, + rpc__resp__wifi_sta_twt_config__field_indices_by_name, + 1, rpc__resp__wifi_sta_twt_config__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_twt_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_get_inactive_time__field_descriptors[1] = +#define rpc__req__get_coprocessor_fw_version__field_descriptors NULL +#define rpc__req__get_coprocessor_fw_version__field_indices_by_name NULL +#define rpc__req__get_coprocessor_fw_version__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__get_coprocessor_fw_version__descriptor = { + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_GetCoprocessorFwVersion", + "RpcReqGetCoprocessorFwVersion", + "RpcReqGetCoprocessorFwVersion", + "", + sizeof(RpcReqGetCoprocessorFwVersion), + 0, + rpc__req__get_coprocessor_fw_version__field_descriptors, + rpc__req__get_coprocessor_fw_version__field_indices_by_name, + 0, rpc__req__get_coprocessor_fw_version__number_ranges, + (ProtobufCMessageInit) rpc__req__get_coprocessor_fw_version__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__get_coprocessor_fw_version__field_descriptors[4] = +{ + { + "resp", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespGetCoprocessorFwVersion, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "major1", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(RpcRespGetCoprocessorFwVersion, major1), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "minor1", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(RpcRespGetCoprocessorFwVersion, minor1), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, { - "ifx", - 1, + "patch1", + 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiGetInactiveTime, ifx), + offsetof(RpcRespGetCoprocessorFwVersion, patch1), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_get_inactive_time__field_indices_by_name[] = { - 0, /* field[0] = ifx */ +static const unsigned rpc__resp__get_coprocessor_fw_version__field_indices_by_name[] = { + 1, /* field[1] = major1 */ + 2, /* field[2] = minor1 */ + 3, /* field[3] = patch1 */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_get_inactive_time__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__get_coprocessor_fw_version__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 4 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_get_inactive_time__descriptor = +const ProtobufCMessageDescriptor rpc__resp__get_coprocessor_fw_version__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetInactiveTime", - "RpcReqWifiGetInactiveTime", - "RpcReqWifiGetInactiveTime", + "Rpc_Resp_GetCoprocessorFwVersion", + "RpcRespGetCoprocessorFwVersion", + "RpcRespGetCoprocessorFwVersion", "", - sizeof(RpcReqWifiGetInactiveTime), - 1, - rpc__req__wifi_get_inactive_time__field_descriptors, - rpc__req__wifi_get_inactive_time__field_indices_by_name, - 1, rpc__req__wifi_get_inactive_time__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_inactive_time__init, + sizeof(RpcRespGetCoprocessorFwVersion), + 4, + rpc__resp__get_coprocessor_fw_version__field_descriptors, + rpc__resp__get_coprocessor_fw_version__field_indices_by_name, + 1, rpc__resp__get_coprocessor_fw_version__number_ranges, + (ProtobufCMessageInit) rpc__resp__get_coprocessor_fw_version__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_inactive_time__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__set_dhcp_dns_status__field_descriptors[9] = { { - "resp", + "iface", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetInactiveTime, resp), + offsetof(RpcReqSetDhcpDnsStatus, iface), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "sec", + "net_link_up", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetInactiveTime, sec), + offsetof(RpcReqSetDhcpDnsStatus, net_link_up), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__resp__wifi_get_inactive_time__field_indices_by_name[] = { - 0, /* field[0] = resp */ - 1, /* field[1] = sec */ -}; -static const ProtobufCIntRange rpc__resp__wifi_get_inactive_time__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_inactive_time__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetInactiveTime", - "RpcRespWifiGetInactiveTime", - "RpcRespWifiGetInactiveTime", - "", - sizeof(RpcRespWifiGetInactiveTime), - 2, - rpc__resp__wifi_get_inactive_time__field_descriptors, - rpc__resp__wifi_get_inactive_time__field_indices_by_name, - 1, rpc__resp__wifi_get_inactive_time__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_inactive_time__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_setup__field_descriptors[1] = -{ { - "setup_config", - 1, + "dhcp_up", + 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiStaItwtSetup, setup_config), - &wifi_itwt_setup_config__descriptor, + offsetof(RpcReqSetDhcpDnsStatus, dhcp_up), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__req__wifi_sta_itwt_setup__field_indices_by_name[] = { - 0, /* field[0] = setup_config */ -}; -static const ProtobufCIntRange rpc__req__wifi_sta_itwt_setup__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_setup__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaItwtSetup", - "RpcReqWifiStaItwtSetup", - "RpcReqWifiStaItwtSetup", - "", - sizeof(RpcReqWifiStaItwtSetup), - 1, - rpc__req__wifi_sta_itwt_setup__field_descriptors, - rpc__req__wifi_sta_itwt_setup__field_indices_by_name, - 1, rpc__req__wifi_sta_itwt_setup__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_setup__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_setup__field_descriptors[1] = -{ { - "resp", - 1, + "dhcp_ip", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcReqSetDhcpDnsStatus, dhcp_ip), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dhcp_nm", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcReqSetDhcpDnsStatus, dhcp_nm), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dhcp_gw", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcReqSetDhcpDnsStatus, dhcp_gw), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dns_up", + 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaItwtSetup, resp), + offsetof(RpcReqSetDhcpDnsStatus, dns_up), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dns_ip", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcReqSetDhcpDnsStatus, dns_ip), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dns_type", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcReqSetDhcpDnsStatus, dns_type), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_itwt_setup__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__set_dhcp_dns_status__field_indices_by_name[] = { + 5, /* field[5] = dhcp_gw */ + 3, /* field[3] = dhcp_ip */ + 4, /* field[4] = dhcp_nm */ + 2, /* field[2] = dhcp_up */ + 7, /* field[7] = dns_ip */ + 8, /* field[8] = dns_type */ + 6, /* field[6] = dns_up */ + 0, /* field[0] = iface */ + 1, /* field[1] = net_link_up */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_setup__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__set_dhcp_dns_status__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 9 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_setup__descriptor = +const ProtobufCMessageDescriptor rpc__req__set_dhcp_dns_status__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaItwtSetup", - "RpcRespWifiStaItwtSetup", - "RpcRespWifiStaItwtSetup", + "Rpc_Req_SetDhcpDnsStatus", + "RpcReqSetDhcpDnsStatus", + "RpcReqSetDhcpDnsStatus", "", - sizeof(RpcRespWifiStaItwtSetup), - 1, - rpc__resp__wifi_sta_itwt_setup__field_descriptors, - rpc__resp__wifi_sta_itwt_setup__field_indices_by_name, - 1, rpc__resp__wifi_sta_itwt_setup__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_setup__init, + sizeof(RpcReqSetDhcpDnsStatus), + 9, + rpc__req__set_dhcp_dns_status__field_descriptors, + rpc__req__set_dhcp_dns_status__field_indices_by_name, + 1, rpc__req__set_dhcp_dns_status__number_ranges, + (ProtobufCMessageInit) rpc__req__set_dhcp_dns_status__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_teardown__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__set_dhcp_dns_status__field_descriptors[1] = { { - "flow_id", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiStaItwtTeardown, flow_id), + offsetof(RpcRespSetDhcpDnsStatus, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_sta_itwt_teardown__field_indices_by_name[] = { - 0, /* field[0] = flow_id */ +static const unsigned rpc__resp__set_dhcp_dns_status__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_sta_itwt_teardown__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__set_dhcp_dns_status__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_teardown__descriptor = +const ProtobufCMessageDescriptor rpc__resp__set_dhcp_dns_status__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaItwtTeardown", - "RpcReqWifiStaItwtTeardown", - "RpcReqWifiStaItwtTeardown", + "Rpc_Resp_SetDhcpDnsStatus", + "RpcRespSetDhcpDnsStatus", + "RpcRespSetDhcpDnsStatus", "", - sizeof(RpcReqWifiStaItwtTeardown), + sizeof(RpcRespSetDhcpDnsStatus), 1, - rpc__req__wifi_sta_itwt_teardown__field_descriptors, - rpc__req__wifi_sta_itwt_teardown__field_indices_by_name, - 1, rpc__req__wifi_sta_itwt_teardown__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_teardown__init, + rpc__resp__set_dhcp_dns_status__field_descriptors, + rpc__resp__set_dhcp_dns_status__field_indices_by_name, + 1, rpc__resp__set_dhcp_dns_status__number_ranges, + (ProtobufCMessageInit) rpc__resp__set_dhcp_dns_status__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_teardown__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__get_dhcp_dns_status__field_descriptors[1] = { { - "resp", + "iface", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaItwtTeardown, resp), + offsetof(RpcReqGetDhcpDnsStatus, iface), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_itwt_teardown__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__get_dhcp_dns_status__field_indices_by_name[] = { + 0, /* field[0] = iface */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_teardown__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__get_dhcp_dns_status__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_teardown__descriptor = +const ProtobufCMessageDescriptor rpc__req__get_dhcp_dns_status__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaItwtTeardown", - "RpcRespWifiStaItwtTeardown", - "RpcRespWifiStaItwtTeardown", + "Rpc_Req_GetDhcpDnsStatus", + "RpcReqGetDhcpDnsStatus", + "RpcReqGetDhcpDnsStatus", "", - sizeof(RpcRespWifiStaItwtTeardown), + sizeof(RpcReqGetDhcpDnsStatus), 1, - rpc__resp__wifi_sta_itwt_teardown__field_descriptors, - rpc__resp__wifi_sta_itwt_teardown__field_indices_by_name, - 1, rpc__resp__wifi_sta_itwt_teardown__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_teardown__init, + rpc__req__get_dhcp_dns_status__field_descriptors, + rpc__req__get_dhcp_dns_status__field_indices_by_name, + 1, rpc__req__get_dhcp_dns_status__number_ranges, + (ProtobufCMessageInit) rpc__req__get_dhcp_dns_status__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_suspend__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__get_dhcp_dns_status__field_descriptors[10] = { { - "flow_id", + "iface", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiStaItwtSuspend, flow_id), + offsetof(RpcRespGetDhcpDnsStatus, iface), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "suspend_time_ms", + "net_link_up", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiStaItwtSuspend, suspend_time_ms), + offsetof(RpcRespGetDhcpDnsStatus, net_link_up), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__req__wifi_sta_itwt_suspend__field_indices_by_name[] = { - 0, /* field[0] = flow_id */ - 1, /* field[1] = suspend_time_ms */ -}; -static const ProtobufCIntRange rpc__req__wifi_sta_itwt_suspend__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_suspend__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaItwtSuspend", - "RpcReqWifiStaItwtSuspend", - "RpcReqWifiStaItwtSuspend", - "", - sizeof(RpcReqWifiStaItwtSuspend), - 2, - rpc__req__wifi_sta_itwt_suspend__field_descriptors, - rpc__req__wifi_sta_itwt_suspend__field_indices_by_name, - 1, rpc__req__wifi_sta_itwt_suspend__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_suspend__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_suspend__field_descriptors[1] = -{ { - "resp", - 1, + "dhcp_up", + 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaItwtSuspend, resp), + offsetof(RpcRespGetDhcpDnsStatus, dhcp_up), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__resp__wifi_sta_itwt_suspend__field_indices_by_name[] = { - 0, /* field[0] = resp */ -}; -static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_suspend__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_suspend__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaItwtSuspend", - "RpcRespWifiStaItwtSuspend", - "RpcRespWifiStaItwtSuspend", - "", - sizeof(RpcRespWifiStaItwtSuspend), - 1, - rpc__resp__wifi_sta_itwt_suspend__field_descriptors, - rpc__resp__wifi_sta_itwt_suspend__field_indices_by_name, - 1, rpc__resp__wifi_sta_itwt_suspend__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_suspend__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_sta_itwt_get_flow_id_status__field_descriptors NULL -#define rpc__req__wifi_sta_itwt_get_flow_id_status__field_indices_by_name NULL -#define rpc__req__wifi_sta_itwt_get_flow_id_status__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_get_flow_id_status__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaItwtGetFlowIdStatus", - "RpcReqWifiStaItwtGetFlowIdStatus", - "RpcReqWifiStaItwtGetFlowIdStatus", - "", - sizeof(RpcReqWifiStaItwtGetFlowIdStatus), - 0, - rpc__req__wifi_sta_itwt_get_flow_id_status__field_descriptors, - rpc__req__wifi_sta_itwt_get_flow_id_status__field_indices_by_name, - 0, rpc__req__wifi_sta_itwt_get_flow_id_status__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_get_flow_id_status__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_get_flow_id_status__field_descriptors[2] = -{ { - "resp", - 1, + "dhcp_ip", + 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaItwtGetFlowIdStatus, resp), + offsetof(RpcRespGetDhcpDnsStatus, dhcp_ip), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "flow_id_bitmap", - 2, + "dhcp_nm", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcRespGetDhcpDnsStatus, dhcp_nm), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dhcp_gw", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcRespGetDhcpDnsStatus, dhcp_gw), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dns_up", + 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaItwtGetFlowIdStatus, flow_id_bitmap), + offsetof(RpcRespGetDhcpDnsStatus, dns_up), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__resp__wifi_sta_itwt_get_flow_id_status__field_indices_by_name[] = { - 1, /* field[1] = flow_id_bitmap */ - 0, /* field[0] = resp */ -}; -static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_get_flow_id_status__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_get_flow_id_status__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaItwtGetFlowIdStatus", - "RpcRespWifiStaItwtGetFlowIdStatus", - "RpcRespWifiStaItwtGetFlowIdStatus", - "", - sizeof(RpcRespWifiStaItwtGetFlowIdStatus), - 2, - rpc__resp__wifi_sta_itwt_get_flow_id_status__field_descriptors, - rpc__resp__wifi_sta_itwt_get_flow_id_status__field_indices_by_name, - 1, rpc__resp__wifi_sta_itwt_get_flow_id_status__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_get_flow_id_status__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_send_probe_req__field_descriptors[1] = -{ { - "timeout_ms", - 1, + "dns_ip", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcRespGetDhcpDnsStatus, dns_ip), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dns_type", + 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiStaItwtSendProbeReq, timeout_ms), + offsetof(RpcRespGetDhcpDnsStatus, dns_type), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__req__wifi_sta_itwt_send_probe_req__field_indices_by_name[] = { - 0, /* field[0] = timeout_ms */ -}; -static const ProtobufCIntRange rpc__req__wifi_sta_itwt_send_probe_req__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_send_probe_req__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaItwtSendProbeReq", - "RpcReqWifiStaItwtSendProbeReq", - "RpcReqWifiStaItwtSendProbeReq", - "", - sizeof(RpcReqWifiStaItwtSendProbeReq), - 1, - rpc__req__wifi_sta_itwt_send_probe_req__field_descriptors, - rpc__req__wifi_sta_itwt_send_probe_req__field_indices_by_name, - 1, rpc__req__wifi_sta_itwt_send_probe_req__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_send_probe_req__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_send_probe_req__field_descriptors[1] = -{ { "resp", - 1, + 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaItwtSendProbeReq, resp), + offsetof(RpcRespGetDhcpDnsStatus, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_itwt_send_probe_req__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__resp__get_dhcp_dns_status__field_indices_by_name[] = { + 5, /* field[5] = dhcp_gw */ + 3, /* field[3] = dhcp_ip */ + 4, /* field[4] = dhcp_nm */ + 2, /* field[2] = dhcp_up */ + 7, /* field[7] = dns_ip */ + 8, /* field[8] = dns_type */ + 6, /* field[6] = dns_up */ + 0, /* field[0] = iface */ + 1, /* field[1] = net_link_up */ + 9, /* field[9] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_send_probe_req__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__get_dhcp_dns_status__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 10 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_send_probe_req__descriptor = +const ProtobufCMessageDescriptor rpc__resp__get_dhcp_dns_status__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaItwtSendProbeReq", - "RpcRespWifiStaItwtSendProbeReq", - "RpcRespWifiStaItwtSendProbeReq", + "Rpc_Resp_GetDhcpDnsStatus", + "RpcRespGetDhcpDnsStatus", + "RpcRespGetDhcpDnsStatus", "", - sizeof(RpcRespWifiStaItwtSendProbeReq), - 1, - rpc__resp__wifi_sta_itwt_send_probe_req__field_descriptors, - rpc__resp__wifi_sta_itwt_send_probe_req__field_indices_by_name, - 1, rpc__resp__wifi_sta_itwt_send_probe_req__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_send_probe_req__init, + sizeof(RpcRespGetDhcpDnsStatus), + 10, + rpc__resp__get_dhcp_dns_status__field_descriptors, + rpc__resp__get_dhcp_dns_status__field_indices_by_name, + 1, rpc__resp__get_dhcp_dns_status__number_ranges, + (ProtobufCMessageInit) rpc__resp__get_dhcp_dns_status__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_set_target_wake_time_offset__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__event__wifi_event_no_args__field_descriptors[2] = { { - "offset_us", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiStaItwtSetTargetWakeTimeOffset, offset_us), + offsetof(RpcEventWifiEventNoArgs, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__req__wifi_sta_itwt_set_target_wake_time_offset__field_indices_by_name[] = { - 0, /* field[0] = offset_us */ -}; -static const ProtobufCIntRange rpc__req__wifi_sta_itwt_set_target_wake_time_offset__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_set_target_wake_time_offset__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaItwtSetTargetWakeTimeOffset", - "RpcReqWifiStaItwtSetTargetWakeTimeOffset", - "RpcReqWifiStaItwtSetTargetWakeTimeOffset", - "", - sizeof(RpcReqWifiStaItwtSetTargetWakeTimeOffset), - 1, - rpc__req__wifi_sta_itwt_set_target_wake_time_offset__field_descriptors, - rpc__req__wifi_sta_itwt_set_target_wake_time_offset__field_indices_by_name, - 1, rpc__req__wifi_sta_itwt_set_target_wake_time_offset__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_set_target_wake_time_offset__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__field_descriptors[1] = -{ { - "resp", - 1, + "event_id", + 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaItwtSetTargetWakeTimeOffset, resp), + offsetof(RpcEventWifiEventNoArgs, event_id), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__field_indices_by_name[] = { +static const unsigned rpc__event__wifi_event_no_args__field_indices_by_name[] = { + 1, /* field[1] = event_id */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__wifi_event_no_args__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__descriptor = +const ProtobufCMessageDescriptor rpc__event__wifi_event_no_args__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaItwtSetTargetWakeTimeOffset", - "RpcRespWifiStaItwtSetTargetWakeTimeOffset", - "RpcRespWifiStaItwtSetTargetWakeTimeOffset", + "Rpc_Event_WifiEventNoArgs", + "RpcEventWifiEventNoArgs", + "RpcEventWifiEventNoArgs", "", - sizeof(RpcRespWifiStaItwtSetTargetWakeTimeOffset), - 1, - rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__field_descriptors, - rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__field_indices_by_name, - 1, rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__init, + sizeof(RpcEventWifiEventNoArgs), + 2, + rpc__event__wifi_event_no_args__field_descriptors, + rpc__event__wifi_event_no_args__field_indices_by_name, + 1, rpc__event__wifi_event_no_args__number_ranges, + (ProtobufCMessageInit) rpc__event__wifi_event_no_args__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_sta_twt_config__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__event__espinit__field_descriptors[1] = { { - "config", + "init_data", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcReqWifiStaTwtConfig, config), - &wifi_twt_config__descriptor, + offsetof(RpcEventESPInit, init_data), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_sta_twt_config__field_indices_by_name[] = { - 0, /* field[0] = config */ +static const unsigned rpc__event__espinit__field_indices_by_name[] = { + 0, /* field[0] = init_data */ }; -static const ProtobufCIntRange rpc__req__wifi_sta_twt_config__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__espinit__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_sta_twt_config__descriptor = +const ProtobufCMessageDescriptor rpc__event__espinit__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaTwtConfig", - "RpcReqWifiStaTwtConfig", - "RpcReqWifiStaTwtConfig", + "Rpc_Event_ESPInit", + "RpcEventESPInit", + "RpcEventESPInit", "", - sizeof(RpcReqWifiStaTwtConfig), + sizeof(RpcEventESPInit), 1, - rpc__req__wifi_sta_twt_config__field_descriptors, - rpc__req__wifi_sta_twt_config__field_indices_by_name, - 1, rpc__req__wifi_sta_twt_config__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_twt_config__init, + rpc__event__espinit__field_descriptors, + rpc__event__espinit__field_indices_by_name, + 1, rpc__event__espinit__number_ranges, + (ProtobufCMessageInit) rpc__event__espinit__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_twt_config__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__event__heartbeat__field_descriptors[1] = { { - "resp", + "hb_num", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaTwtConfig, resp), + offsetof(RpcEventHeartbeat, hb_num), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_twt_config__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__event__heartbeat__field_indices_by_name[] = { + 0, /* field[0] = hb_num */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_twt_config__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__heartbeat__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_twt_config__descriptor = +const ProtobufCMessageDescriptor rpc__event__heartbeat__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaTwtConfig", - "RpcRespWifiStaTwtConfig", - "RpcRespWifiStaTwtConfig", + "Rpc_Event_Heartbeat", + "RpcEventHeartbeat", + "RpcEventHeartbeat", "", - sizeof(RpcRespWifiStaTwtConfig), + sizeof(RpcEventHeartbeat), 1, - rpc__resp__wifi_sta_twt_config__field_descriptors, - rpc__resp__wifi_sta_twt_config__field_indices_by_name, - 1, rpc__resp__wifi_sta_twt_config__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_twt_config__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__get_coprocessor_fw_version__field_descriptors NULL -#define rpc__req__get_coprocessor_fw_version__field_indices_by_name NULL -#define rpc__req__get_coprocessor_fw_version__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__get_coprocessor_fw_version__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_GetCoprocessorFwVersion", - "RpcReqGetCoprocessorFwVersion", - "RpcReqGetCoprocessorFwVersion", - "", - sizeof(RpcReqGetCoprocessorFwVersion), - 0, - rpc__req__get_coprocessor_fw_version__field_descriptors, - rpc__req__get_coprocessor_fw_version__field_indices_by_name, - 0, rpc__req__get_coprocessor_fw_version__number_ranges, - (ProtobufCMessageInit) rpc__req__get_coprocessor_fw_version__init, + rpc__event__heartbeat__field_descriptors, + rpc__event__heartbeat__field_indices_by_name, + 1, rpc__event__heartbeat__number_ranges, + (ProtobufCMessageInit) rpc__event__heartbeat__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__get_coprocessor_fw_version__field_descriptors[4] = +static const ProtobufCFieldDescriptor rpc__event__ap__sta_disconnected__field_descriptors[5] = { { "resp", @@ -17612,218 +18864,166 @@ static const ProtobufCFieldDescriptor rpc__resp__get_coprocessor_fw_version__fie PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetCoprocessorFwVersion, resp), + offsetof(RpcEventAPStaDisconnected, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "major1", + "mac", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcRespGetCoprocessorFwVersion, major1), + offsetof(RpcEventAPStaDisconnected, mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "minor1", + "aid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetCoprocessorFwVersion, minor1), + offsetof(RpcEventAPStaDisconnected, aid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "patch1", + "is_mesh_child", 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(RpcRespGetCoprocessorFwVersion, patch1), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, -}; -static const unsigned rpc__resp__get_coprocessor_fw_version__field_indices_by_name[] = { - 1, /* field[1] = major1 */ - 2, /* field[2] = minor1 */ - 3, /* field[3] = patch1 */ - 0, /* field[0] = resp */ -}; -static const ProtobufCIntRange rpc__resp__get_coprocessor_fw_version__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 4 } -}; -const ProtobufCMessageDescriptor rpc__resp__get_coprocessor_fw_version__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_GetCoprocessorFwVersion", - "RpcRespGetCoprocessorFwVersion", - "RpcRespGetCoprocessorFwVersion", - "", - sizeof(RpcRespGetCoprocessorFwVersion), - 4, - rpc__resp__get_coprocessor_fw_version__field_descriptors, - rpc__resp__get_coprocessor_fw_version__field_indices_by_name, - 1, rpc__resp__get_coprocessor_fw_version__number_ranges, - (ProtobufCMessageInit) rpc__resp__get_coprocessor_fw_version__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__req__set_dhcp_dns_status__field_descriptors[9] = -{ - { - "iface", - 1, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcReqSetDhcpDnsStatus, iface), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "net_link_up", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcReqSetDhcpDnsStatus, net_link_up), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "dhcp_up", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(RpcReqSetDhcpDnsStatus, dhcp_up), + offsetof(RpcEventAPStaDisconnected, is_mesh_child), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dhcp_ip", - 4, + "reason", + 5, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcReqSetDhcpDnsStatus, dhcp_ip), + offsetof(RpcEventAPStaDisconnected, reason), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__event__ap__sta_disconnected__field_indices_by_name[] = { + 2, /* field[2] = aid */ + 3, /* field[3] = is_mesh_child */ + 1, /* field[1] = mac */ + 4, /* field[4] = reason */ + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__event__ap__sta_disconnected__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor rpc__event__ap__sta_disconnected__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Event_AP_StaDisconnected", + "RpcEventAPStaDisconnected", + "RpcEventAPStaDisconnected", + "", + sizeof(RpcEventAPStaDisconnected), + 5, + rpc__event__ap__sta_disconnected__field_descriptors, + rpc__event__ap__sta_disconnected__field_indices_by_name, + 1, rpc__event__ap__sta_disconnected__number_ranges, + (ProtobufCMessageInit) rpc__event__ap__sta_disconnected__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__event__ap__sta_connected__field_descriptors[4] = +{ { - "dhcp_nm", - 5, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqSetDhcpDnsStatus, dhcp_nm), + offsetof(RpcEventAPStaConnected, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dhcp_gw", - 6, + "mac", + 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcReqSetDhcpDnsStatus, dhcp_gw), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "dns_up", - 7, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcReqSetDhcpDnsStatus, dns_up), + offsetof(RpcEventAPStaConnected, mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dns_ip", - 8, + "aid", + 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcReqSetDhcpDnsStatus, dns_ip), + offsetof(RpcEventAPStaConnected, aid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dns_type", - 9, + "is_mesh_child", + 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(RpcReqSetDhcpDnsStatus, dns_type), + offsetof(RpcEventAPStaConnected, is_mesh_child), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__set_dhcp_dns_status__field_indices_by_name[] = { - 5, /* field[5] = dhcp_gw */ - 3, /* field[3] = dhcp_ip */ - 4, /* field[4] = dhcp_nm */ - 2, /* field[2] = dhcp_up */ - 7, /* field[7] = dns_ip */ - 8, /* field[8] = dns_type */ - 6, /* field[6] = dns_up */ - 0, /* field[0] = iface */ - 1, /* field[1] = net_link_up */ +static const unsigned rpc__event__ap__sta_connected__field_indices_by_name[] = { + 2, /* field[2] = aid */ + 3, /* field[3] = is_mesh_child */ + 1, /* field[1] = mac */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__set_dhcp_dns_status__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__ap__sta_connected__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 9 } + { 0, 4 } }; -const ProtobufCMessageDescriptor rpc__req__set_dhcp_dns_status__descriptor = +const ProtobufCMessageDescriptor rpc__event__ap__sta_connected__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_SetDhcpDnsStatus", - "RpcReqSetDhcpDnsStatus", - "RpcReqSetDhcpDnsStatus", + "Rpc_Event_AP_StaConnected", + "RpcEventAPStaConnected", + "RpcEventAPStaConnected", "", - sizeof(RpcReqSetDhcpDnsStatus), - 9, - rpc__req__set_dhcp_dns_status__field_descriptors, - rpc__req__set_dhcp_dns_status__field_indices_by_name, - 1, rpc__req__set_dhcp_dns_status__number_ranges, - (ProtobufCMessageInit) rpc__req__set_dhcp_dns_status__init, + sizeof(RpcEventAPStaConnected), + 4, + rpc__event__ap__sta_connected__field_descriptors, + rpc__event__ap__sta_connected__field_indices_by_name, + 1, rpc__event__ap__sta_connected__number_ranges, + (ProtobufCMessageInit) rpc__event__ap__sta_connected__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__set_dhcp_dns_status__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__event__sta_scan_done__field_descriptors[2] = { { "resp", @@ -17831,524 +19031,699 @@ static const ProtobufCFieldDescriptor rpc__resp__set_dhcp_dns_status__field_desc PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespSetDhcpDnsStatus, resp), + offsetof(RpcEventStaScanDone, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__resp__set_dhcp_dns_status__field_indices_by_name[] = { - 0, /* field[0] = resp */ -}; -static const ProtobufCIntRange rpc__resp__set_dhcp_dns_status__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__resp__set_dhcp_dns_status__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_SetDhcpDnsStatus", - "RpcRespSetDhcpDnsStatus", - "RpcRespSetDhcpDnsStatus", - "", - sizeof(RpcRespSetDhcpDnsStatus), - 1, - rpc__resp__set_dhcp_dns_status__field_descriptors, - rpc__resp__set_dhcp_dns_status__field_indices_by_name, - 1, rpc__resp__set_dhcp_dns_status__number_ranges, - (ProtobufCMessageInit) rpc__resp__set_dhcp_dns_status__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__req__get_dhcp_dns_status__field_descriptors[1] = -{ { - "iface", - 1, + "scan_done", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcReqGetDhcpDnsStatus, iface), - NULL, + offsetof(RpcEventStaScanDone, scan_done), + &wifi_event_sta_scan_done__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__get_dhcp_dns_status__field_indices_by_name[] = { - 0, /* field[0] = iface */ +static const unsigned rpc__event__sta_scan_done__field_indices_by_name[] = { + 0, /* field[0] = resp */ + 1, /* field[1] = scan_done */ }; -static const ProtobufCIntRange rpc__req__get_dhcp_dns_status__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__sta_scan_done__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__get_dhcp_dns_status__descriptor = +const ProtobufCMessageDescriptor rpc__event__sta_scan_done__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_GetDhcpDnsStatus", - "RpcReqGetDhcpDnsStatus", - "RpcReqGetDhcpDnsStatus", + "Rpc_Event_StaScanDone", + "RpcEventStaScanDone", + "RpcEventStaScanDone", "", - sizeof(RpcReqGetDhcpDnsStatus), - 1, - rpc__req__get_dhcp_dns_status__field_descriptors, - rpc__req__get_dhcp_dns_status__field_indices_by_name, - 1, rpc__req__get_dhcp_dns_status__number_ranges, - (ProtobufCMessageInit) rpc__req__get_dhcp_dns_status__init, + sizeof(RpcEventStaScanDone), + 2, + rpc__event__sta_scan_done__field_descriptors, + rpc__event__sta_scan_done__field_indices_by_name, + 1, rpc__event__sta_scan_done__number_ranges, + (ProtobufCMessageInit) rpc__event__sta_scan_done__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__get_dhcp_dns_status__field_descriptors[10] = +static const ProtobufCFieldDescriptor rpc__event__sta_connected__field_descriptors[2] = { { - "iface", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, iface), + offsetof(RpcEventStaConnected, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "net_link_up", + "sta_connected", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, net_link_up), - NULL, + offsetof(RpcEventStaConnected, sta_connected), + &wifi_event_sta_connected__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__event__sta_connected__field_indices_by_name[] = { + 0, /* field[0] = resp */ + 1, /* field[1] = sta_connected */ +}; +static const ProtobufCIntRange rpc__event__sta_connected__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor rpc__event__sta_connected__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Event_StaConnected", + "RpcEventStaConnected", + "RpcEventStaConnected", + "", + sizeof(RpcEventStaConnected), + 2, + rpc__event__sta_connected__field_descriptors, + rpc__event__sta_connected__field_indices_by_name, + 1, rpc__event__sta_connected__number_ranges, + (ProtobufCMessageInit) rpc__event__sta_connected__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__event__sta_disconnected__field_descriptors[2] = +{ { - "dhcp_up", - 3, + "resp", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, dhcp_up), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "dhcp_ip", - 4, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, - 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, dhcp_ip), + offsetof(RpcEventStaDisconnected, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dhcp_nm", - 5, + "sta_disconnected", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, dhcp_nm), - NULL, + offsetof(RpcEventStaDisconnected, sta_disconnected), + &wifi_event_sta_disconnected__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__event__sta_disconnected__field_indices_by_name[] = { + 0, /* field[0] = resp */ + 1, /* field[1] = sta_disconnected */ +}; +static const ProtobufCIntRange rpc__event__sta_disconnected__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor rpc__event__sta_disconnected__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Event_StaDisconnected", + "RpcEventStaDisconnected", + "RpcEventStaDisconnected", + "", + sizeof(RpcEventStaDisconnected), + 2, + rpc__event__sta_disconnected__field_descriptors, + rpc__event__sta_disconnected__field_indices_by_name, + 1, rpc__event__sta_disconnected__number_ranges, + (ProtobufCMessageInit) rpc__event__sta_disconnected__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__gpio_config__field_descriptors[5] = +{ { - "dhcp_gw", - 6, + "pin_bit_mask", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT64, 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, dhcp_gw), + offsetof(RpcGpioConfig, pin_bit_mask), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dns_up", - 7, + "mode", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, dns_up), - NULL, + offsetof(RpcGpioConfig, mode), + &rpc__gpio_mode__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dns_ip", - 8, + "pull_up_en", + 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, dns_ip), + offsetof(RpcGpioConfig, pull_up_en), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dns_type", - 9, + "pull_down_en", + 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, dns_type), + offsetof(RpcGpioConfig, pull_down_en), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "resp", - 10, + "intr_type", + 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, resp), + offsetof(RpcGpioConfig, intr_type), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__get_dhcp_dns_status__field_indices_by_name[] = { - 5, /* field[5] = dhcp_gw */ - 3, /* field[3] = dhcp_ip */ - 4, /* field[4] = dhcp_nm */ - 2, /* field[2] = dhcp_up */ - 7, /* field[7] = dns_ip */ - 8, /* field[8] = dns_type */ - 6, /* field[6] = dns_up */ - 0, /* field[0] = iface */ - 1, /* field[1] = net_link_up */ - 9, /* field[9] = resp */ +static const unsigned rpc__gpio_config__field_indices_by_name[] = { + 4, /* field[4] = intr_type */ + 1, /* field[1] = mode */ + 0, /* field[0] = pin_bit_mask */ + 3, /* field[3] = pull_down_en */ + 2, /* field[2] = pull_up_en */ }; -static const ProtobufCIntRange rpc__resp__get_dhcp_dns_status__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__gpio_config__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 10 } + { 0, 5 } }; -const ProtobufCMessageDescriptor rpc__resp__get_dhcp_dns_status__descriptor = +const ProtobufCMessageDescriptor rpc__gpio_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_GetDhcpDnsStatus", - "RpcRespGetDhcpDnsStatus", - "RpcRespGetDhcpDnsStatus", + "Rpc_GpioConfig", + "RpcGpioConfig", + "RpcGpioConfig", "", - sizeof(RpcRespGetDhcpDnsStatus), - 10, - rpc__resp__get_dhcp_dns_status__field_descriptors, - rpc__resp__get_dhcp_dns_status__field_indices_by_name, - 1, rpc__resp__get_dhcp_dns_status__number_ranges, - (ProtobufCMessageInit) rpc__resp__get_dhcp_dns_status__init, + sizeof(RpcGpioConfig), + 5, + rpc__gpio_config__field_descriptors, + rpc__gpio_config__field_indices_by_name, + 1, rpc__gpio_config__number_ranges, + (ProtobufCMessageInit) rpc__gpio_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__wifi_event_no_args__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__gpio_config__field_descriptors[1] = { { - "resp", + "config", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcEventWifiEventNoArgs, resp), - NULL, + offsetof(RpcReqGpioConfig, config), + &rpc__gpio_config__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__req__gpio_config__field_indices_by_name[] = { + 0, /* field[0] = config */ +}; +static const ProtobufCIntRange rpc__req__gpio_config__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__req__gpio_config__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_GpioConfig", + "RpcReqGpioConfig", + "RpcReqGpioConfig", + "", + sizeof(RpcReqGpioConfig), + 1, + rpc__req__gpio_config__field_descriptors, + rpc__req__gpio_config__field_indices_by_name, + 1, rpc__req__gpio_config__number_ranges, + (ProtobufCMessageInit) rpc__req__gpio_config__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__gpio_config__field_descriptors[1] = +{ { - "event_id", - 2, + "resp", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventWifiEventNoArgs, event_id), + offsetof(RpcRespGpioConfig, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__wifi_event_no_args__field_indices_by_name[] = { - 1, /* field[1] = event_id */ +static const unsigned rpc__resp__gpio_config__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__event__wifi_event_no_args__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__gpio_config__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__event__wifi_event_no_args__descriptor = +const ProtobufCMessageDescriptor rpc__resp__gpio_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_WifiEventNoArgs", - "RpcEventWifiEventNoArgs", - "RpcEventWifiEventNoArgs", + "Rpc_Resp_GpioConfig", + "RpcRespGpioConfig", + "RpcRespGpioConfig", "", - sizeof(RpcEventWifiEventNoArgs), - 2, - rpc__event__wifi_event_no_args__field_descriptors, - rpc__event__wifi_event_no_args__field_indices_by_name, - 1, rpc__event__wifi_event_no_args__number_ranges, - (ProtobufCMessageInit) rpc__event__wifi_event_no_args__init, + sizeof(RpcRespGpioConfig), + 1, + rpc__resp__gpio_config__field_descriptors, + rpc__resp__gpio_config__field_indices_by_name, + 1, rpc__resp__gpio_config__number_ranges, + (ProtobufCMessageInit) rpc__resp__gpio_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__espinit__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__gpio_reset__field_descriptors[1] = { { - "init_data", + "gpio_num", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventESPInit, init_data), + offsetof(RpcReqGpioReset, gpio_num), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__espinit__field_indices_by_name[] = { - 0, /* field[0] = init_data */ +static const unsigned rpc__req__gpio_reset__field_indices_by_name[] = { + 0, /* field[0] = gpio_num */ }; -static const ProtobufCIntRange rpc__event__espinit__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__gpio_reset__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__event__espinit__descriptor = +const ProtobufCMessageDescriptor rpc__req__gpio_reset__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_ESPInit", - "RpcEventESPInit", - "RpcEventESPInit", + "Rpc_Req_GpioReset", + "RpcReqGpioReset", + "RpcReqGpioReset", "", - sizeof(RpcEventESPInit), + sizeof(RpcReqGpioReset), 1, - rpc__event__espinit__field_descriptors, - rpc__event__espinit__field_indices_by_name, - 1, rpc__event__espinit__number_ranges, - (ProtobufCMessageInit) rpc__event__espinit__init, + rpc__req__gpio_reset__field_descriptors, + rpc__req__gpio_reset__field_indices_by_name, + 1, rpc__req__gpio_reset__number_ranges, + (ProtobufCMessageInit) rpc__req__gpio_reset__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__heartbeat__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__gpio_reset_pin__field_descriptors[1] = { { - "hb_num", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventHeartbeat, hb_num), + offsetof(RpcRespGpioResetPin, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__heartbeat__field_indices_by_name[] = { - 0, /* field[0] = hb_num */ +static const unsigned rpc__resp__gpio_reset_pin__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__event__heartbeat__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__gpio_reset_pin__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__event__heartbeat__descriptor = +const ProtobufCMessageDescriptor rpc__resp__gpio_reset_pin__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_Heartbeat", - "RpcEventHeartbeat", - "RpcEventHeartbeat", + "Rpc_Resp_GpioResetPin", + "RpcRespGpioResetPin", + "RpcRespGpioResetPin", "", - sizeof(RpcEventHeartbeat), + sizeof(RpcRespGpioResetPin), 1, - rpc__event__heartbeat__field_descriptors, - rpc__event__heartbeat__field_indices_by_name, - 1, rpc__event__heartbeat__number_ranges, - (ProtobufCMessageInit) rpc__event__heartbeat__init, + rpc__resp__gpio_reset_pin__field_descriptors, + rpc__resp__gpio_reset_pin__field_indices_by_name, + 1, rpc__resp__gpio_reset_pin__number_ranges, + (ProtobufCMessageInit) rpc__resp__gpio_reset_pin__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__ap__sta_disconnected__field_descriptors[5] = +static const ProtobufCFieldDescriptor rpc__req__gpio_set_level__field_descriptors[2] = { { - "resp", + "gpio_num", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaDisconnected, resp), + offsetof(RpcReqGpioSetLevel, gpio_num), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "mac", + "level", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaDisconnected, mac), + offsetof(RpcReqGpioSetLevel, level), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__req__gpio_set_level__field_indices_by_name[] = { + 0, /* field[0] = gpio_num */ + 1, /* field[1] = level */ +}; +static const ProtobufCIntRange rpc__req__gpio_set_level__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor rpc__req__gpio_set_level__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_GpioSetLevel", + "RpcReqGpioSetLevel", + "RpcReqGpioSetLevel", + "", + sizeof(RpcReqGpioSetLevel), + 2, + rpc__req__gpio_set_level__field_descriptors, + rpc__req__gpio_set_level__field_indices_by_name, + 1, rpc__req__gpio_set_level__number_ranges, + (ProtobufCMessageInit) rpc__req__gpio_set_level__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__gpio_set_level__field_descriptors[1] = +{ { - "aid", - 3, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaDisconnected, aid), + offsetof(RpcRespGpioSetLevel, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__gpio_set_level__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__gpio_set_level__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__gpio_set_level__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_GpioSetLevel", + "RpcRespGpioSetLevel", + "RpcRespGpioSetLevel", + "", + sizeof(RpcRespGpioSetLevel), + 1, + rpc__resp__gpio_set_level__field_descriptors, + rpc__resp__gpio_set_level__field_indices_by_name, + 1, rpc__resp__gpio_set_level__number_ranges, + (ProtobufCMessageInit) rpc__resp__gpio_set_level__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__gpio_get_level__field_descriptors[1] = +{ { - "is_mesh_child", - 4, + "gpio_num", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaDisconnected, is_mesh_child), + offsetof(RpcReqGpioGetLevel, gpio_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__req__gpio_get_level__field_indices_by_name[] = { + 0, /* field[0] = gpio_num */ +}; +static const ProtobufCIntRange rpc__req__gpio_get_level__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__req__gpio_get_level__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_GpioGetLevel", + "RpcReqGpioGetLevel", + "RpcReqGpioGetLevel", + "", + sizeof(RpcReqGpioGetLevel), + 1, + rpc__req__gpio_get_level__field_descriptors, + rpc__req__gpio_get_level__field_indices_by_name, + 1, rpc__req__gpio_get_level__number_ranges, + (ProtobufCMessageInit) rpc__req__gpio_get_level__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__gpio_get_level__field_descriptors[2] = +{ + { + "resp", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespGpioGetLevel, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "reason", - 5, + "level", + 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaDisconnected, reason), + offsetof(RpcRespGpioGetLevel, level), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__ap__sta_disconnected__field_indices_by_name[] = { - 2, /* field[2] = aid */ - 3, /* field[3] = is_mesh_child */ - 1, /* field[1] = mac */ - 4, /* field[4] = reason */ +static const unsigned rpc__resp__gpio_get_level__field_indices_by_name[] = { + 1, /* field[1] = level */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__event__ap__sta_disconnected__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__gpio_get_level__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 5 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__event__ap__sta_disconnected__descriptor = +const ProtobufCMessageDescriptor rpc__resp__gpio_get_level__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_AP_StaDisconnected", - "RpcEventAPStaDisconnected", - "RpcEventAPStaDisconnected", + "Rpc_Resp_GpioGetLevel", + "RpcRespGpioGetLevel", + "RpcRespGpioGetLevel", "", - sizeof(RpcEventAPStaDisconnected), - 5, - rpc__event__ap__sta_disconnected__field_descriptors, - rpc__event__ap__sta_disconnected__field_indices_by_name, - 1, rpc__event__ap__sta_disconnected__number_ranges, - (ProtobufCMessageInit) rpc__event__ap__sta_disconnected__init, + sizeof(RpcRespGpioGetLevel), + 2, + rpc__resp__gpio_get_level__field_descriptors, + rpc__resp__gpio_get_level__field_indices_by_name, + 1, rpc__resp__gpio_get_level__number_ranges, + (ProtobufCMessageInit) rpc__resp__gpio_get_level__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__ap__sta_connected__field_descriptors[4] = +static const ProtobufCFieldDescriptor rpc__req__gpio_set_direction__field_descriptors[2] = { { - "resp", + "gpio_num", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaConnected, resp), + offsetof(RpcReqGpioSetDirection, gpio_num), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "mac", + "mode", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaConnected, mac), - NULL, + offsetof(RpcReqGpioSetDirection, mode), + &rpc__gpio_mode__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__req__gpio_set_direction__field_indices_by_name[] = { + 0, /* field[0] = gpio_num */ + 1, /* field[1] = mode */ +}; +static const ProtobufCIntRange rpc__req__gpio_set_direction__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor rpc__req__gpio_set_direction__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_GpioSetDirection", + "RpcReqGpioSetDirection", + "RpcReqGpioSetDirection", + "", + sizeof(RpcReqGpioSetDirection), + 2, + rpc__req__gpio_set_direction__field_descriptors, + rpc__req__gpio_set_direction__field_indices_by_name, + 1, rpc__req__gpio_set_direction__number_ranges, + (ProtobufCMessageInit) rpc__req__gpio_set_direction__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__gpio_set_direction__field_descriptors[1] = +{ { - "aid", - 3, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaConnected, aid), + offsetof(RpcRespGpioSetDirection, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__gpio_set_direction__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__gpio_set_direction__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__gpio_set_direction__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_GpioSetDirection", + "RpcRespGpioSetDirection", + "RpcRespGpioSetDirection", + "", + sizeof(RpcRespGpioSetDirection), + 1, + rpc__resp__gpio_set_direction__field_descriptors, + rpc__resp__gpio_set_direction__field_indices_by_name, + 1, rpc__resp__gpio_set_direction__number_ranges, + (ProtobufCMessageInit) rpc__resp__gpio_set_direction__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__gpio_input_enable__field_descriptors[1] = +{ { - "is_mesh_child", - 4, + "gpio_num", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaConnected, is_mesh_child), + offsetof(RpcReqGpioInputEnable, gpio_num), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__ap__sta_connected__field_indices_by_name[] = { - 2, /* field[2] = aid */ - 3, /* field[3] = is_mesh_child */ - 1, /* field[1] = mac */ - 0, /* field[0] = resp */ +static const unsigned rpc__req__gpio_input_enable__field_indices_by_name[] = { + 0, /* field[0] = gpio_num */ }; -static const ProtobufCIntRange rpc__event__ap__sta_connected__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__gpio_input_enable__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 4 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__event__ap__sta_connected__descriptor = +const ProtobufCMessageDescriptor rpc__req__gpio_input_enable__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_AP_StaConnected", - "RpcEventAPStaConnected", - "RpcEventAPStaConnected", + "Rpc_Req_GpioInputEnable", + "RpcReqGpioInputEnable", + "RpcReqGpioInputEnable", "", - sizeof(RpcEventAPStaConnected), - 4, - rpc__event__ap__sta_connected__field_descriptors, - rpc__event__ap__sta_connected__field_indices_by_name, - 1, rpc__event__ap__sta_connected__number_ranges, - (ProtobufCMessageInit) rpc__event__ap__sta_connected__init, + sizeof(RpcReqGpioInputEnable), + 1, + rpc__req__gpio_input_enable__field_descriptors, + rpc__req__gpio_input_enable__field_indices_by_name, + 1, rpc__req__gpio_input_enable__number_ranges, + (ProtobufCMessageInit) rpc__req__gpio_input_enable__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__sta_scan_done__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__gpio_input_enable__field_descriptors[1] = { { "resp", @@ -18356,101 +19731,88 @@ static const ProtobufCFieldDescriptor rpc__event__sta_scan_done__field_descripto PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaScanDone, resp), - NULL, + offsetof(RpcRespGpioInputEnable, resp), NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "scan_done", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(RpcEventStaScanDone, scan_done), - &wifi_event_sta_scan_done__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__sta_scan_done__field_indices_by_name[] = { +static const unsigned rpc__resp__gpio_input_enable__field_indices_by_name[] = { 0, /* field[0] = resp */ - 1, /* field[1] = scan_done */ }; -static const ProtobufCIntRange rpc__event__sta_scan_done__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__gpio_input_enable__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__event__sta_scan_done__descriptor = +const ProtobufCMessageDescriptor rpc__resp__gpio_input_enable__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_StaScanDone", - "RpcEventStaScanDone", - "RpcEventStaScanDone", + "Rpc_Resp_GpioInputEnable", + "RpcRespGpioInputEnable", + "RpcRespGpioInputEnable", "", - sizeof(RpcEventStaScanDone), - 2, - rpc__event__sta_scan_done__field_descriptors, - rpc__event__sta_scan_done__field_indices_by_name, - 1, rpc__event__sta_scan_done__number_ranges, - (ProtobufCMessageInit) rpc__event__sta_scan_done__init, + sizeof(RpcRespGpioInputEnable), + 1, + rpc__resp__gpio_input_enable__field_descriptors, + rpc__resp__gpio_input_enable__field_indices_by_name, + 1, rpc__resp__gpio_input_enable__number_ranges, + (ProtobufCMessageInit) rpc__resp__gpio_input_enable__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__sta_connected__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__gpio_set_pull_mode__field_descriptors[2] = { { - "resp", + "gpio_num", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaConnected, resp), + offsetof(RpcReqGpioSetPullMode, gpio_num), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "sta_connected", + "pull", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ - offsetof(RpcEventStaConnected, sta_connected), - &wifi_event_sta_connected__descriptor, + offsetof(RpcReqGpioSetPullMode, pull), + &rpc__gpio_pull_mode__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__sta_connected__field_indices_by_name[] = { - 0, /* field[0] = resp */ - 1, /* field[1] = sta_connected */ +static const unsigned rpc__req__gpio_set_pull_mode__field_indices_by_name[] = { + 0, /* field[0] = gpio_num */ + 1, /* field[1] = pull */ }; -static const ProtobufCIntRange rpc__event__sta_connected__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__gpio_set_pull_mode__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__event__sta_connected__descriptor = +const ProtobufCMessageDescriptor rpc__req__gpio_set_pull_mode__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_StaConnected", - "RpcEventStaConnected", - "RpcEventStaConnected", + "Rpc_Req_GpioSetPullMode", + "RpcReqGpioSetPullMode", + "RpcReqGpioSetPullMode", "", - sizeof(RpcEventStaConnected), + sizeof(RpcReqGpioSetPullMode), 2, - rpc__event__sta_connected__field_descriptors, - rpc__event__sta_connected__field_indices_by_name, - 1, rpc__event__sta_connected__number_ranges, - (ProtobufCMessageInit) rpc__event__sta_connected__init, + rpc__req__gpio_set_pull_mode__field_descriptors, + rpc__req__gpio_set_pull_mode__field_indices_by_name, + 1, rpc__req__gpio_set_pull_mode__number_ranges, + (ProtobufCMessageInit) rpc__req__gpio_set_pull_mode__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__sta_disconnected__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__gpio_set_pull_mode__field_descriptors[1] = { { "resp", @@ -18458,47 +19820,34 @@ static const ProtobufCFieldDescriptor rpc__event__sta_disconnected__field_descri PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaDisconnected, resp), - NULL, + offsetof(RpcRespGpioSetPullMode, resp), NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "sta_disconnected", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(RpcEventStaDisconnected, sta_disconnected), - &wifi_event_sta_disconnected__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__sta_disconnected__field_indices_by_name[] = { +static const unsigned rpc__resp__gpio_set_pull_mode__field_indices_by_name[] = { 0, /* field[0] = resp */ - 1, /* field[1] = sta_disconnected */ }; -static const ProtobufCIntRange rpc__event__sta_disconnected__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__gpio_set_pull_mode__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__event__sta_disconnected__descriptor = +const ProtobufCMessageDescriptor rpc__resp__gpio_set_pull_mode__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_StaDisconnected", - "RpcEventStaDisconnected", - "RpcEventStaDisconnected", + "Rpc_Resp_GpioSetPullMode", + "RpcRespGpioSetPullMode", + "RpcRespGpioSetPullMode", "", - sizeof(RpcEventStaDisconnected), - 2, - rpc__event__sta_disconnected__field_descriptors, - rpc__event__sta_disconnected__field_indices_by_name, - 1, rpc__event__sta_disconnected__number_ranges, - (ProtobufCMessageInit) rpc__event__sta_disconnected__init, + sizeof(RpcRespGpioSetPullMode), + 1, + rpc__resp__gpio_set_pull_mode__field_descriptors, + rpc__resp__gpio_set_pull_mode__field_indices_by_name, + 1, rpc__resp__gpio_set_pull_mode__number_ranges, + (ProtobufCMessageInit) rpc__resp__gpio_set_pull_mode__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor rpc__event__dhcp_dns_status__field_descriptors[10] = @@ -18857,7 +20206,7 @@ static const ProtobufCFieldDescriptor rpc__event__sta_itwt_suspend__field_descri offsetof(RpcEventStaItwtSuspend, actual_suspend_time_ms), NULL, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ + PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; @@ -18951,7 +20300,7 @@ const ProtobufCMessageDescriptor rpc__event__sta_itwt_probe__descriptor = (ProtobufCMessageInit) rpc__event__sta_itwt_probe__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = +static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = { { "msg_type", @@ -18998,7 +20347,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_get_mac_address), &rpc__req__get_mac_address__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19010,7 +20359,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_set_mac_address), &rpc__req__set_mac_address__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19022,7 +20371,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_get_wifi_mode), &rpc__req__get_mode__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19034,7 +20383,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_set_wifi_mode), &rpc__req__set_mode__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19046,7 +20395,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_set_ps), &rpc__req__set_ps__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19058,7 +20407,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_get_ps), &rpc__req__get_ps__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19070,7 +20419,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_ota_begin), &rpc__req__otabegin__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19082,7 +20431,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_ota_write), &rpc__req__otawrite__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19094,7 +20443,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_ota_end), &rpc__req__otaend__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19106,7 +20455,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_set_wifi_max_tx_power), &rpc__req__wifi_set_max_tx_power__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19118,7 +20467,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_get_wifi_max_tx_power), &rpc__req__wifi_get_max_tx_power__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19130,7 +20479,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_config_heartbeat), &rpc__req__config_heartbeat__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19142,7 +20491,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_init), &rpc__req__wifi_init__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19154,7 +20503,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_deinit), &rpc__req__wifi_deinit__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19166,7 +20515,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_start), &rpc__req__wifi_start__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19178,7 +20527,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_stop), &rpc__req__wifi_stop__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19190,7 +20539,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_connect), &rpc__req__wifi_connect__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19202,7 +20551,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_disconnect), &rpc__req__wifi_disconnect__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19214,7 +20563,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_set_config), &rpc__req__wifi_set_config__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19226,7 +20575,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_get_config), &rpc__req__wifi_get_config__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19238,7 +20587,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_scan_start), &rpc__req__wifi_scan_start__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19250,7 +20599,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_scan_stop), &rpc__req__wifi_scan_stop__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19262,7 +20611,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_scan_get_ap_num), &rpc__req__wifi_scan_get_ap_num__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19274,7 +20623,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_scan_get_ap_records), &rpc__req__wifi_scan_get_ap_records__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19286,7 +20635,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_clear_ap_list), &rpc__req__wifi_clear_ap_list__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19298,7 +20647,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_restore), &rpc__req__wifi_restore__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19310,7 +20659,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_clear_fast_connect), &rpc__req__wifi_clear_fast_connect__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19322,7 +20671,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_deauth_sta), &rpc__req__wifi_deauth_sta__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19334,7 +20683,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_sta_get_ap_info), &rpc__req__wifi_sta_get_ap_info__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19346,7 +20695,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_set_protocol), &rpc__req__wifi_set_protocol__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19358,7 +20707,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_get_protocol), &rpc__req__wifi_get_protocol__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19370,7 +20719,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_set_bandwidth), &rpc__req__wifi_set_bandwidth__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19382,7 +20731,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_get_bandwidth), &rpc__req__wifi_get_bandwidth__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19394,7 +20743,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_set_channel), &rpc__req__wifi_set_channel__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19406,7 +20755,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_get_channel), &rpc__req__wifi_get_channel__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19418,7 +20767,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_set_country), &rpc__req__wifi_set_country__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19430,7 +20779,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_get_country), &rpc__req__wifi_get_country__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19442,7 +20791,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_ap_get_sta_list), &rpc__req__wifi_ap_get_sta_list__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19454,7 +20803,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_ap_get_sta_aid), &rpc__req__wifi_ap_get_sta_aid__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19466,7 +20815,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_set_storage), &rpc__req__wifi_set_storage__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19478,7 +20827,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_set_inactive_time), &rpc__req__wifi_set_inactive_time__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19490,7 +20839,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_get_inactive_time), &rpc__req__wifi_get_inactive_time__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19502,7 +20851,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_set_country_code), &rpc__req__wifi_set_country_code__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19514,7 +20863,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_get_country_code), &rpc__req__wifi_get_country_code__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19526,7 +20875,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_sta_get_aid), &rpc__req__wifi_sta_get_aid__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19538,7 +20887,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_sta_get_negotiated_phymode), &rpc__req__wifi_sta_get_negotiated_phymode__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19550,7 +20899,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_sta_get_rssi), &rpc__req__wifi_sta_get_rssi__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19562,7 +20911,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_set_protocols), &rpc__req__wifi_set_protocols__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19574,7 +20923,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_get_protocols), &rpc__req__wifi_get_protocols__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19586,7 +20935,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_set_bandwidths), &rpc__req__wifi_set_bandwidths__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19598,7 +20947,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_get_bandwidths), &rpc__req__wifi_get_bandwidths__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19610,7 +20959,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_set_band), &rpc__req__wifi_set_band__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19622,7 +20971,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_get_band), &rpc__req__wifi_get_band__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19634,7 +20983,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_set_bandmode), &rpc__req__wifi_set_band_mode__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19646,7 +20995,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_get_bandmode), &rpc__req__wifi_get_band_mode__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19658,7 +21007,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_get_coprocessor_fwversion), &rpc__req__get_coprocessor_fw_version__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19670,7 +21019,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_scan_get_ap_record), &rpc__req__wifi_scan_get_ap_record__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19682,7 +21031,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_set_dhcp_dns), &rpc__req__set_dhcp_dns_status__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19694,7 +21043,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_get_dhcp_dns), &rpc__req__get_dhcp_dns_status__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19706,7 +21055,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_sta_twt_config), &rpc__req__wifi_sta_twt_config__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19718,7 +21067,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_sta_itwt_setup), &rpc__req__wifi_sta_itwt_setup__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19730,7 +21079,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_sta_itwt_teardown), &rpc__req__wifi_sta_itwt_teardown__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19742,7 +21091,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_sta_itwt_suspend), &rpc__req__wifi_sta_itwt_suspend__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19754,7 +21103,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_sta_itwt_get_flow_id_status), &rpc__req__wifi_sta_itwt_get_flow_id_status__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19766,7 +21115,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_sta_itwt_send_probe_req), &rpc__req__wifi_sta_itwt_send_probe_req__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19778,7 +21127,91 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, req_wifi_sta_itwt_set_target_wake_time_offset), &rpc__req__wifi_sta_itwt_set_target_wake_time_offset__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_gpio_config", + 361, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_gpio_config), + &rpc__req__gpio_config__descriptor, + NULL, + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_gpio_reset", + 362, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_gpio_reset), + &rpc__req__gpio_reset__descriptor, + NULL, + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_gpio_set_level", + 363, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_gpio_set_level), + &rpc__req__gpio_set_level__descriptor, + NULL, + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_gpio_get_level", + 364, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_gpio_get_level), + &rpc__req__gpio_get_level__descriptor, + NULL, + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_gpio_set_direction", + 365, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_gpio_set_direction), + &rpc__req__gpio_set_direction__descriptor, + NULL, + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_gpio_input_enable", + 366, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_gpio_input_enable), + &rpc__req__gpio_input_enable__descriptor, + NULL, + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_gpio_set_pull_mode", + 367, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_gpio_set_pull_mode), + &rpc__req__gpio_set_pull_mode__descriptor, + NULL, + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19790,7 +21223,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_get_mac_address), &rpc__resp__get_mac_address__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19802,7 +21235,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_set_mac_address), &rpc__resp__set_mac_address__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19814,7 +21247,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_get_wifi_mode), &rpc__resp__get_mode__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19826,7 +21259,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_set_wifi_mode), &rpc__resp__set_mode__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19838,7 +21271,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_set_ps), &rpc__resp__set_ps__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19850,7 +21283,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_get_ps), &rpc__resp__get_ps__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19862,7 +21295,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_ota_begin), &rpc__resp__otabegin__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19874,7 +21307,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_ota_write), &rpc__resp__otawrite__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19886,7 +21319,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_ota_end), &rpc__resp__otaend__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19898,7 +21331,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_set_wifi_max_tx_power), &rpc__resp__wifi_set_max_tx_power__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19910,7 +21343,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_get_wifi_max_tx_power), &rpc__resp__wifi_get_max_tx_power__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19922,7 +21355,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_config_heartbeat), &rpc__resp__config_heartbeat__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19934,7 +21367,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_init), &rpc__resp__wifi_init__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19946,7 +21379,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_deinit), &rpc__resp__wifi_deinit__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19958,7 +21391,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_start), &rpc__resp__wifi_start__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19970,7 +21403,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_stop), &rpc__resp__wifi_stop__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19982,7 +21415,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_connect), &rpc__resp__wifi_connect__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -19994,7 +21427,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_disconnect), &rpc__resp__wifi_disconnect__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20006,7 +21439,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_set_config), &rpc__resp__wifi_set_config__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20018,7 +21451,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_get_config), &rpc__resp__wifi_get_config__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20030,7 +21463,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_scan_start), &rpc__resp__wifi_scan_start__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20042,7 +21475,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_scan_stop), &rpc__resp__wifi_scan_stop__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20054,7 +21487,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_scan_get_ap_num), &rpc__resp__wifi_scan_get_ap_num__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20066,7 +21499,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_scan_get_ap_records), &rpc__resp__wifi_scan_get_ap_records__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20078,7 +21511,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_clear_ap_list), &rpc__resp__wifi_clear_ap_list__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20090,7 +21523,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_restore), &rpc__resp__wifi_restore__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20102,7 +21535,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_clear_fast_connect), &rpc__resp__wifi_clear_fast_connect__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20114,7 +21547,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_deauth_sta), &rpc__resp__wifi_deauth_sta__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20126,7 +21559,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_sta_get_ap_info), &rpc__resp__wifi_sta_get_ap_info__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20138,7 +21571,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_set_protocol), &rpc__resp__wifi_set_protocol__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20150,7 +21583,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_get_protocol), &rpc__resp__wifi_get_protocol__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20162,7 +21595,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_set_bandwidth), &rpc__resp__wifi_set_bandwidth__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20174,7 +21607,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_get_bandwidth), &rpc__resp__wifi_get_bandwidth__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20186,7 +21619,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_set_channel), &rpc__resp__wifi_set_channel__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20198,7 +21631,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_get_channel), &rpc__resp__wifi_get_channel__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20210,7 +21643,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_set_country), &rpc__resp__wifi_set_country__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20222,7 +21655,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_get_country), &rpc__resp__wifi_get_country__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20234,7 +21667,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_ap_get_sta_list), &rpc__resp__wifi_ap_get_sta_list__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20246,7 +21679,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_ap_get_sta_aid), &rpc__resp__wifi_ap_get_sta_aid__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20258,7 +21691,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_set_storage), &rpc__resp__wifi_set_storage__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20270,7 +21703,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_set_inactive_time), &rpc__resp__wifi_set_inactive_time__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20282,7 +21715,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_get_inactive_time), &rpc__resp__wifi_get_inactive_time__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20294,7 +21727,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_set_country_code), &rpc__resp__wifi_set_country_code__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20306,7 +21739,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_get_country_code), &rpc__resp__wifi_get_country_code__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20318,7 +21751,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_sta_get_aid), &rpc__resp__wifi_sta_get_aid__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20330,7 +21763,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_sta_get_negotiated_phymode), &rpc__resp__wifi_sta_get_negotiated_phymode__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20342,7 +21775,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_sta_get_rssi), &rpc__resp__wifi_sta_get_rssi__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20354,7 +21787,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_set_protocols), &rpc__resp__wifi_set_protocols__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20366,7 +21799,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_get_protocols), &rpc__resp__wifi_get_protocols__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20378,7 +21811,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_set_bandwidths), &rpc__resp__wifi_set_bandwidths__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20390,7 +21823,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_get_bandwidths), &rpc__resp__wifi_get_bandwidths__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20402,7 +21835,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_set_band), &rpc__resp__wifi_set_band__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20414,7 +21847,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_get_band), &rpc__resp__wifi_get_band__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20426,7 +21859,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_set_bandmode), &rpc__resp__wifi_set_band_mode__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20438,7 +21871,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_get_bandmode), &rpc__resp__wifi_get_band_mode__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20450,7 +21883,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_get_coprocessor_fwversion), &rpc__resp__get_coprocessor_fw_version__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20462,7 +21895,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_scan_get_ap_record), &rpc__resp__wifi_scan_get_ap_record__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20474,7 +21907,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_set_dhcp_dns), &rpc__resp__set_dhcp_dns_status__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20486,7 +21919,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_get_dhcp_dns), &rpc__resp__get_dhcp_dns_status__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20498,7 +21931,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_sta_twt_config), &rpc__resp__wifi_sta_twt_config__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20510,7 +21943,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_sta_itwt_setup), &rpc__resp__wifi_sta_itwt_setup__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20522,7 +21955,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_sta_itwt_teardown), &rpc__resp__wifi_sta_itwt_teardown__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20534,7 +21967,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_sta_itwt_suspend), &rpc__resp__wifi_sta_itwt_suspend__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20546,7 +21979,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_sta_itwt_get_flow_id_status), &rpc__resp__wifi_sta_itwt_get_flow_id_status__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20558,7 +21991,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_sta_itwt_send_probe_req), &rpc__resp__wifi_sta_itwt_send_probe_req__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20570,7 +22003,91 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, resp_wifi_sta_itwt_set_target_wake_time_offset), &rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_gpio_config", + 617, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_gpio_config), + &rpc__resp__gpio_config__descriptor, + NULL, + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_gpio_reset", + 618, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_gpio_reset), + &rpc__resp__gpio_reset_pin__descriptor, + NULL, + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_gpio_get_level", + 620, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_gpio_get_level), + &rpc__resp__gpio_get_level__descriptor, + NULL, + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_gpio_set_direction", + 621, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_gpio_set_direction), + &rpc__resp__gpio_set_direction__descriptor, + NULL, + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_gpio_input_enable", + 622, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_gpio_input_enable), + &rpc__resp__gpio_input_enable__descriptor, + NULL, + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_gpio_set_pull_mode", + 623, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_gpio_set_pull_mode), + &rpc__resp__gpio_set_pull_mode__descriptor, + NULL, + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_gpio_set_level", + 629, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_gpio_set_level), + &rpc__resp__gpio_set_level__descriptor, + NULL, + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20582,7 +22099,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, event_esp_init), &rpc__event__espinit__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20594,7 +22111,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, event_heartbeat), &rpc__event__heartbeat__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20606,7 +22123,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, event_ap_sta_connected), &rpc__event__ap__sta_connected__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20618,7 +22135,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, event_ap_sta_disconnected), &rpc__event__ap__sta_disconnected__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20630,7 +22147,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, event_wifi_event_no_args), &rpc__event__wifi_event_no_args__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20642,7 +22159,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, event_sta_scan_done), &rpc__event__sta_scan_done__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20654,7 +22171,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, event_sta_connected), &rpc__event__sta_connected__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20666,7 +22183,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, event_sta_disconnected), &rpc__event__sta_disconnected__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20678,7 +22195,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, event_dhcp_dns), &rpc__event__dhcp_dns_status__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20690,7 +22207,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, event_sta_itwt_setup), &rpc__event__sta_itwt_setup__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20702,7 +22219,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, event_sta_itwt_teardown), &rpc__event__sta_itwt_teardown__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20714,7 +22231,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, event_sta_itwt_suspend), &rpc__event__sta_itwt_suspend__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20726,24 +22243,24 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = offsetof(Rpc, event_sta_itwt_probe), &rpc__event__sta_itwt_probe__descriptor, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned rpc__field_indices_by_name[] = { - 137, /* field[137] = event_ap_sta_connected */ - 138, /* field[138] = event_ap_sta_disconnected */ - 143, /* field[143] = event_dhcp_dns */ - 135, /* field[135] = event_esp_init */ - 136, /* field[136] = event_heartbeat */ - 141, /* field[141] = event_sta_connected */ - 142, /* field[142] = event_sta_disconnected */ - 147, /* field[147] = event_sta_itwt_probe */ - 144, /* field[144] = event_sta_itwt_setup */ - 146, /* field[146] = event_sta_itwt_suspend */ - 145, /* field[145] = event_sta_itwt_teardown */ - 140, /* field[140] = event_sta_scan_done */ - 139, /* field[139] = event_wifi_event_no_args */ + 151, /* field[151] = event_ap_sta_connected */ + 152, /* field[152] = event_ap_sta_disconnected */ + 157, /* field[157] = event_dhcp_dns */ + 149, /* field[149] = event_esp_init */ + 150, /* field[150] = event_heartbeat */ + 155, /* field[155] = event_sta_connected */ + 156, /* field[156] = event_sta_disconnected */ + 161, /* field[161] = event_sta_itwt_probe */ + 158, /* field[158] = event_sta_itwt_setup */ + 160, /* field[160] = event_sta_itwt_suspend */ + 159, /* field[159] = event_sta_itwt_teardown */ + 154, /* field[154] = event_sta_scan_done */ + 153, /* field[153] = event_wifi_event_no_args */ 1, /* field[1] = msg_id */ 0, /* field[0] = msg_type */ 14, /* field[14] = req_config_heartbeat */ @@ -20752,6 +22269,13 @@ static const unsigned rpc__field_indices_by_name[] = { 3, /* field[3] = req_get_mac_address */ 13, /* field[13] = req_get_wifi_max_tx_power */ 5, /* field[5] = req_get_wifi_mode */ + 69, /* field[69] = req_gpio_config */ + 72, /* field[72] = req_gpio_get_level */ + 74, /* field[74] = req_gpio_input_enable */ + 70, /* field[70] = req_gpio_reset */ + 73, /* field[73] = req_gpio_set_direction */ + 71, /* field[71] = req_gpio_set_level */ + 75, /* field[75] = req_gpio_set_pull_mode */ 9, /* field[9] = req_ota_begin */ 11, /* field[11] = req_ota_end */ 10, /* field[10] = req_ota_write */ @@ -20812,75 +22336,82 @@ static const unsigned rpc__field_indices_by_name[] = { 62, /* field[62] = req_wifi_sta_twt_config */ 17, /* field[17] = req_wifi_start */ 18, /* field[18] = req_wifi_stop */ - 80, /* field[80] = resp_config_heartbeat */ - 124, /* field[124] = resp_get_coprocessor_fwversion */ - 127, /* field[127] = resp_get_dhcp_dns */ - 69, /* field[69] = resp_get_mac_address */ - 79, /* field[79] = resp_get_wifi_max_tx_power */ - 71, /* field[71] = resp_get_wifi_mode */ - 75, /* field[75] = resp_ota_begin */ - 77, /* field[77] = resp_ota_end */ - 76, /* field[76] = resp_ota_write */ - 126, /* field[126] = resp_set_dhcp_dns */ - 70, /* field[70] = resp_set_mac_address */ - 78, /* field[78] = resp_set_wifi_max_tx_power */ - 72, /* field[72] = resp_set_wifi_mode */ - 107, /* field[107] = resp_wifi_ap_get_sta_aid */ - 106, /* field[106] = resp_wifi_ap_get_sta_list */ - 93, /* field[93] = resp_wifi_clear_ap_list */ - 95, /* field[95] = resp_wifi_clear_fast_connect */ - 85, /* field[85] = resp_wifi_connect */ - 96, /* field[96] = resp_wifi_deauth_sta */ - 82, /* field[82] = resp_wifi_deinit */ - 86, /* field[86] = resp_wifi_disconnect */ - 121, /* field[121] = resp_wifi_get_band */ - 123, /* field[123] = resp_wifi_get_bandmode */ - 101, /* field[101] = resp_wifi_get_bandwidth */ - 119, /* field[119] = resp_wifi_get_bandwidths */ - 103, /* field[103] = resp_wifi_get_channel */ - 88, /* field[88] = resp_wifi_get_config */ - 105, /* field[105] = resp_wifi_get_country */ - 112, /* field[112] = resp_wifi_get_country_code */ - 110, /* field[110] = resp_wifi_get_inactive_time */ - 99, /* field[99] = resp_wifi_get_protocol */ - 117, /* field[117] = resp_wifi_get_protocols */ - 74, /* field[74] = resp_wifi_get_ps */ - 81, /* field[81] = resp_wifi_init */ - 94, /* field[94] = resp_wifi_restore */ - 91, /* field[91] = resp_wifi_scan_get_ap_num */ - 125, /* field[125] = resp_wifi_scan_get_ap_record */ - 92, /* field[92] = resp_wifi_scan_get_ap_records */ - 89, /* field[89] = resp_wifi_scan_start */ - 90, /* field[90] = resp_wifi_scan_stop */ - 120, /* field[120] = resp_wifi_set_band */ - 122, /* field[122] = resp_wifi_set_bandmode */ - 100, /* field[100] = resp_wifi_set_bandwidth */ - 118, /* field[118] = resp_wifi_set_bandwidths */ - 102, /* field[102] = resp_wifi_set_channel */ - 87, /* field[87] = resp_wifi_set_config */ - 104, /* field[104] = resp_wifi_set_country */ - 111, /* field[111] = resp_wifi_set_country_code */ - 109, /* field[109] = resp_wifi_set_inactive_time */ - 98, /* field[98] = resp_wifi_set_protocol */ - 116, /* field[116] = resp_wifi_set_protocols */ - 73, /* field[73] = resp_wifi_set_ps */ - 108, /* field[108] = resp_wifi_set_storage */ - 113, /* field[113] = resp_wifi_sta_get_aid */ - 97, /* field[97] = resp_wifi_sta_get_ap_info */ - 114, /* field[114] = resp_wifi_sta_get_negotiated_phymode */ - 115, /* field[115] = resp_wifi_sta_get_rssi */ - 132, /* field[132] = resp_wifi_sta_itwt_get_flow_id_status */ - 133, /* field[133] = resp_wifi_sta_itwt_send_probe_req */ - 134, /* field[134] = resp_wifi_sta_itwt_set_target_wake_time_offset */ - 129, /* field[129] = resp_wifi_sta_itwt_setup */ - 131, /* field[131] = resp_wifi_sta_itwt_suspend */ - 130, /* field[130] = resp_wifi_sta_itwt_teardown */ - 128, /* field[128] = resp_wifi_sta_twt_config */ - 83, /* field[83] = resp_wifi_start */ - 84, /* field[84] = resp_wifi_stop */ + 87, /* field[87] = resp_config_heartbeat */ + 131, /* field[131] = resp_get_coprocessor_fwversion */ + 134, /* field[134] = resp_get_dhcp_dns */ + 76, /* field[76] = resp_get_mac_address */ + 86, /* field[86] = resp_get_wifi_max_tx_power */ + 78, /* field[78] = resp_get_wifi_mode */ + 142, /* field[142] = resp_gpio_config */ + 144, /* field[144] = resp_gpio_get_level */ + 146, /* field[146] = resp_gpio_input_enable */ + 143, /* field[143] = resp_gpio_reset */ + 145, /* field[145] = resp_gpio_set_direction */ + 148, /* field[148] = resp_gpio_set_level */ + 147, /* field[147] = resp_gpio_set_pull_mode */ + 82, /* field[82] = resp_ota_begin */ + 84, /* field[84] = resp_ota_end */ + 83, /* field[83] = resp_ota_write */ + 133, /* field[133] = resp_set_dhcp_dns */ + 77, /* field[77] = resp_set_mac_address */ + 85, /* field[85] = resp_set_wifi_max_tx_power */ + 79, /* field[79] = resp_set_wifi_mode */ + 114, /* field[114] = resp_wifi_ap_get_sta_aid */ + 113, /* field[113] = resp_wifi_ap_get_sta_list */ + 100, /* field[100] = resp_wifi_clear_ap_list */ + 102, /* field[102] = resp_wifi_clear_fast_connect */ + 92, /* field[92] = resp_wifi_connect */ + 103, /* field[103] = resp_wifi_deauth_sta */ + 89, /* field[89] = resp_wifi_deinit */ + 93, /* field[93] = resp_wifi_disconnect */ + 128, /* field[128] = resp_wifi_get_band */ + 130, /* field[130] = resp_wifi_get_bandmode */ + 108, /* field[108] = resp_wifi_get_bandwidth */ + 126, /* field[126] = resp_wifi_get_bandwidths */ + 110, /* field[110] = resp_wifi_get_channel */ + 95, /* field[95] = resp_wifi_get_config */ + 112, /* field[112] = resp_wifi_get_country */ + 119, /* field[119] = resp_wifi_get_country_code */ + 117, /* field[117] = resp_wifi_get_inactive_time */ + 106, /* field[106] = resp_wifi_get_protocol */ + 124, /* field[124] = resp_wifi_get_protocols */ + 81, /* field[81] = resp_wifi_get_ps */ + 88, /* field[88] = resp_wifi_init */ + 101, /* field[101] = resp_wifi_restore */ + 98, /* field[98] = resp_wifi_scan_get_ap_num */ + 132, /* field[132] = resp_wifi_scan_get_ap_record */ + 99, /* field[99] = resp_wifi_scan_get_ap_records */ + 96, /* field[96] = resp_wifi_scan_start */ + 97, /* field[97] = resp_wifi_scan_stop */ + 127, /* field[127] = resp_wifi_set_band */ + 129, /* field[129] = resp_wifi_set_bandmode */ + 107, /* field[107] = resp_wifi_set_bandwidth */ + 125, /* field[125] = resp_wifi_set_bandwidths */ + 109, /* field[109] = resp_wifi_set_channel */ + 94, /* field[94] = resp_wifi_set_config */ + 111, /* field[111] = resp_wifi_set_country */ + 118, /* field[118] = resp_wifi_set_country_code */ + 116, /* field[116] = resp_wifi_set_inactive_time */ + 105, /* field[105] = resp_wifi_set_protocol */ + 123, /* field[123] = resp_wifi_set_protocols */ + 80, /* field[80] = resp_wifi_set_ps */ + 115, /* field[115] = resp_wifi_set_storage */ + 120, /* field[120] = resp_wifi_sta_get_aid */ + 104, /* field[104] = resp_wifi_sta_get_ap_info */ + 121, /* field[121] = resp_wifi_sta_get_negotiated_phymode */ + 122, /* field[122] = resp_wifi_sta_get_rssi */ + 139, /* field[139] = resp_wifi_sta_itwt_get_flow_id_status */ + 140, /* field[140] = resp_wifi_sta_itwt_send_probe_req */ + 141, /* field[141] = resp_wifi_sta_itwt_set_target_wake_time_offset */ + 136, /* field[136] = resp_wifi_sta_itwt_setup */ + 138, /* field[138] = resp_wifi_sta_itwt_suspend */ + 137, /* field[137] = resp_wifi_sta_itwt_teardown */ + 135, /* field[135] = resp_wifi_sta_twt_config */ + 90, /* field[90] = resp_wifi_start */ + 91, /* field[91] = resp_wifi_stop */ 2, /* field[2] = uid */ }; -static const ProtobufCIntRange rpc__number_ranges[18 + 1] = +static const ProtobufCIntRange rpc__number_ranges[20 + 1] = { { 1, 0 }, { 257, 3 }, @@ -20891,16 +22422,18 @@ static const ProtobufCIntRange rpc__number_ranges[18 + 1] = { 334, 45 }, { 338, 47 }, { 341, 49 }, - { 513, 69 }, - { 526, 73 }, - { 553, 98 }, - { 567, 106 }, - { 581, 109 }, - { 590, 111 }, - { 594, 113 }, - { 597, 115 }, - { 769, 135 }, - { 0, 148 } + { 513, 76 }, + { 526, 80 }, + { 553, 105 }, + { 567, 113 }, + { 581, 116 }, + { 590, 118 }, + { 594, 120 }, + { 597, 122 }, + { 620, 144 }, + { 629, 148 }, + { 769, 149 }, + { 0, 162 } }; const ProtobufCMessageDescriptor rpc__descriptor = { @@ -20910,10 +22443,10 @@ const ProtobufCMessageDescriptor rpc__descriptor = "Rpc", "", sizeof(Rpc), - 148, + 162, rpc__field_descriptors, rpc__field_indices_by_name, - 18, rpc__number_ranges, + 20, rpc__number_ranges, (ProtobufCMessageInit) rpc__init, NULL,NULL,NULL /* reserved[123] */ }; @@ -21087,7 +22620,7 @@ const ProtobufCEnumDescriptor rpc_type__descriptor = rpc_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; -static const ProtobufCEnumValue rpc_id__enum_values_by_number[206] = +static const ProtobufCEnumValue rpc_id__enum_values_by_number[220] = { { "MsgId_Invalid", "RPC_ID__MsgId_Invalid", 0 }, { "Req_Base", "RPC_ID__Req_Base", 256 }, @@ -21184,7 +22717,14 @@ static const ProtobufCEnumValue rpc_id__enum_values_by_number[206] = { "Req_WifiStaItwtGetFlowIdStatus", "RPC_ID__Req_WifiStaItwtGetFlowIdStatus", 358 }, { "Req_WifiStaItwtSendProbeReq", "RPC_ID__Req_WifiStaItwtSendProbeReq", 359 }, { "Req_WifiStaItwtSetTargetWakeTimeOffset", "RPC_ID__Req_WifiStaItwtSetTargetWakeTimeOffset", 360 }, - { "Req_Max", "RPC_ID__Req_Max", 361 }, + { "Req_GpioConfig", "RPC_ID__Req_GpioConfig", 361 }, + { "Req_GpioResetPin", "RPC_ID__Req_GpioResetPin", 362 }, + { "Req_GpioSetLevel", "RPC_ID__Req_GpioSetLevel", 363 }, + { "Req_GpioGetLevel", "RPC_ID__Req_GpioGetLevel", 364 }, + { "Req_GpioSetDirection", "RPC_ID__Req_GpioSetDirection", 365 }, + { "Req_GpioInputEnable", "RPC_ID__Req_GpioInputEnable", 366 }, + { "Req_GpioSetPullMode", "RPC_ID__Req_GpioSetPullMode", 367 }, + { "Req_Max", "RPC_ID__Req_Max", 368 }, { "Resp_Base", "RPC_ID__Resp_Base", 512 }, { "Resp_GetMACAddress", "RPC_ID__Resp_GetMACAddress", 513 }, { "Resp_SetMacAddress", "RPC_ID__Resp_SetMacAddress", 514 }, @@ -21279,7 +22819,14 @@ static const ProtobufCEnumValue rpc_id__enum_values_by_number[206] = { "Resp_WifiStaItwtGetFlowIdStatus", "RPC_ID__Resp_WifiStaItwtGetFlowIdStatus", 614 }, { "Resp_WifiStaItwtSendProbeReq", "RPC_ID__Resp_WifiStaItwtSendProbeReq", 615 }, { "Resp_WifiStaItwtSetTargetWakeTimeOffset", "RPC_ID__Resp_WifiStaItwtSetTargetWakeTimeOffset", 616 }, - { "Resp_Max", "RPC_ID__Resp_Max", 617 }, + { "Resp_GpioConfig", "RPC_ID__Resp_GpioConfig", 617 }, + { "Resp_GpioResetPin", "RPC_ID__Resp_GpioResetPin", 618 }, + { "Resp_GpioSetLevel", "RPC_ID__Resp_GpioSetLevel", 619 }, + { "Resp_GpioGetLevel", "RPC_ID__Resp_GpioGetLevel", 620 }, + { "Resp_GpioSetDirection", "RPC_ID__Resp_GpioSetDirection", 621 }, + { "Resp_GpioInputEnable", "RPC_ID__Resp_GpioInputEnable", 622 }, + { "Resp_GpioSetPullMode", "RPC_ID__Resp_GpioSetPullMode", 623 }, + { "Resp_Max", "RPC_ID__Resp_Max", 624 }, { "Event_Base", "RPC_ID__Event_Base", 768 }, { "Event_ESPInit", "RPC_ID__Event_ESPInit", 769 }, { "Event_Heartbeat", "RPC_ID__Event_Heartbeat", 770 }, @@ -21297,25 +22844,25 @@ static const ProtobufCEnumValue rpc_id__enum_values_by_number[206] = { "Event_Max", "RPC_ID__Event_Max", 782 }, }; static const ProtobufCIntRange rpc_id__value_ranges[] = { -{0, 0},{256, 1},{270, 6},{297, 31},{512, 96},{526, 101},{553, 126},{768, 191},{0, 206} -}; -static const ProtobufCEnumValueIndex rpc_id__enum_values_by_name[206] = -{ - { "Event_AP_StaConnected", 194 }, - { "Event_AP_StaDisconnected", 195 }, - { "Event_Base", 191 }, - { "Event_DhcpDnsStatus", 200 }, - { "Event_ESPInit", 192 }, - { "Event_Heartbeat", 193 }, - { "Event_Max", 205 }, - { "Event_StaConnected", 198 }, - { "Event_StaDisconnected", 199 }, - { "Event_StaItwtProbe", 204 }, - { "Event_StaItwtSetup", 201 }, - { "Event_StaItwtSuspend", 203 }, - { "Event_StaItwtTeardown", 202 }, - { "Event_StaScanDone", 197 }, - { "Event_WifiEventNoArgs", 196 }, +{0, 0},{256, 1},{270, 6},{297, 31},{512, 103},{526, 108},{553, 133},{768, 205},{0, 220} +}; +static const ProtobufCEnumValueIndex rpc_id__enum_values_by_name[220] = +{ + { "Event_AP_StaConnected", 208 }, + { "Event_AP_StaDisconnected", 209 }, + { "Event_Base", 205 }, + { "Event_DhcpDnsStatus", 214 }, + { "Event_ESPInit", 206 }, + { "Event_Heartbeat", 207 }, + { "Event_Max", 219 }, + { "Event_StaConnected", 212 }, + { "Event_StaDisconnected", 213 }, + { "Event_StaItwtProbe", 218 }, + { "Event_StaItwtSetup", 215 }, + { "Event_StaItwtSuspend", 217 }, + { "Event_StaItwtTeardown", 216 }, + { "Event_StaScanDone", 211 }, + { "Event_WifiEventNoArgs", 210 }, { "MsgId_Invalid", 0 }, { "Req_Base", 1 }, { "Req_ConfigHeartbeat", 13 }, @@ -21323,7 +22870,14 @@ static const ProtobufCEnumValueIndex rpc_id__enum_values_by_name[206] = { "Req_GetDhcpDnsStatus", 87 }, { "Req_GetMACAddress", 2 }, { "Req_GetWifiMode", 4 }, - { "Req_Max", 95 }, + { "Req_GpioConfig", 95 }, + { "Req_GpioGetLevel", 98 }, + { "Req_GpioInputEnable", 100 }, + { "Req_GpioResetPin", 96 }, + { "Req_GpioSetDirection", 99 }, + { "Req_GpioSetLevel", 97 }, + { "Req_GpioSetPullMode", 101 }, + { "Req_Max", 102 }, { "Req_OTABegin", 8 }, { "Req_OTAEnd", 10 }, { "Req_OTAWrite", 9 }, @@ -21412,101 +22966,108 @@ static const ProtobufCEnumValueIndex rpc_id__enum_values_by_name[206] = { "Req_WifiStart", 16 }, { "Req_WifiStatisDump", 61 }, { "Req_WifiStop", 17 }, - { "Resp_Base", 96 }, - { "Resp_ConfigHeartbeat", 108 }, - { "Resp_GetCoprocessorFwVersion", 179 }, - { "Resp_GetDhcpDnsStatus", 182 }, - { "Resp_GetMACAddress", 97 }, - { "Resp_GetWifiMode", 99 }, - { "Resp_Max", 190 }, - { "Resp_OTABegin", 103 }, - { "Resp_OTAEnd", 105 }, - { "Resp_OTAWrite", 104 }, - { "Resp_SetDhcpDnsStatus", 181 }, - { "Resp_SetMacAddress", 98 }, - { "Resp_SetWifiMode", 100 }, - { "Resp_Wifi80211Tx", 146 }, - { "Resp_WifiApGetStaAid", 141 }, - { "Resp_WifiApGetStaList", 140 }, - { "Resp_WifiClearApList", 121 }, - { "Resp_WifiClearFastConnect", 123 }, - { "Resp_WifiConfig11bRate", 161 }, - { "Resp_WifiConfig80211TxRate", 165 }, - { "Resp_WifiConnect", 113 }, - { "Resp_WifiConnectionlessModuleSetWakeInterval", 162 }, - { "Resp_WifiDeauthSta", 124 }, - { "Resp_WifiDeinit", 110 }, - { "Resp_WifiDisablePmfConfig", 166 }, - { "Resp_WifiDisconnect", 114 }, - { "Resp_WifiFtmEndSession", 159 }, - { "Resp_WifiFtmInitiateSession", 158 }, - { "Resp_WifiFtmRespSetOffset", 160 }, - { "Resp_WifiGetAnt", 152 }, - { "Resp_WifiGetAntGpio", 150 }, - { "Resp_WifiGetBand", 176 }, - { "Resp_WifiGetBandMode", 178 }, - { "Resp_WifiGetBandwidth", 129 }, - { "Resp_WifiGetBandwidths", 174 }, - { "Resp_WifiGetChannel", 131 }, - { "Resp_WifiGetConfig", 116 }, - { "Resp_WifiGetCountry", 133 }, - { "Resp_WifiGetCountryCode", 164 }, - { "Resp_WifiGetEventMask", 145 }, - { "Resp_WifiGetInactiveTime", 155 }, - { "Resp_WifiGetMaxTxPower", 107 }, - { "Resp_WifiGetPromiscuous", 135 }, - { "Resp_WifiGetPromiscuousCtrlFilter", 139 }, - { "Resp_WifiGetPromiscuousFilter", 137 }, - { "Resp_WifiGetProtocol", 127 }, - { "Resp_WifiGetProtocols", 172 }, - { "Resp_WifiGetPs", 102 }, - { "Resp_WifiGetTsfTime", 153 }, - { "Resp_WifiInit", 109 }, - { "Resp_WifiRestore", 122 }, - { "Resp_WifiScanGetApNum", 119 }, - { "Resp_WifiScanGetApRecord", 180 }, - { "Resp_WifiScanGetApRecords", 120 }, - { "Resp_WifiScanStart", 117 }, - { "Resp_WifiScanStop", 118 }, - { "Resp_WifiSetAnt", 151 }, - { "Resp_WifiSetAntGpio", 149 }, - { "Resp_WifiSetBand", 175 }, - { "Resp_WifiSetBandMode", 177 }, - { "Resp_WifiSetBandwidth", 128 }, - { "Resp_WifiSetBandwidths", 173 }, - { "Resp_WifiSetChannel", 130 }, - { "Resp_WifiSetConfig", 115 }, - { "Resp_WifiSetCountry", 132 }, - { "Resp_WifiSetCountryCode", 163 }, - { "Resp_WifiSetCsi", 148 }, - { "Resp_WifiSetCsiConfig", 147 }, - { "Resp_WifiSetDynamicCs", 169 }, - { "Resp_WifiSetEventMask", 144 }, - { "Resp_WifiSetInactiveTime", 154 }, - { "Resp_WifiSetMaxTxPower", 106 }, - { "Resp_WifiSetPromiscuous", 134 }, - { "Resp_WifiSetPromiscuousCtrlFilter", 138 }, - { "Resp_WifiSetPromiscuousFilter", 136 }, - { "Resp_WifiSetProtocol", 126 }, - { "Resp_WifiSetProtocols", 171 }, - { "Resp_WifiSetPs", 101 }, - { "Resp_WifiSetRssiThreshold", 157 }, - { "Resp_WifiSetStorage", 142 }, - { "Resp_WifiSetVendorIe", 143 }, - { "Resp_WifiStaGetAid", 167 }, - { "Resp_WifiStaGetApInfo", 125 }, - { "Resp_WifiStaGetNegotiatedPhymode", 168 }, - { "Resp_WifiStaGetRssi", 170 }, - { "Resp_WifiStaItwtGetFlowIdStatus", 187 }, - { "Resp_WifiStaItwtSendProbeReq", 188 }, - { "Resp_WifiStaItwtSetTargetWakeTimeOffset", 189 }, - { "Resp_WifiStaItwtSetup", 184 }, - { "Resp_WifiStaItwtSuspend", 186 }, - { "Resp_WifiStaItwtTeardown", 185 }, - { "Resp_WifiStaTwtConfig", 183 }, - { "Resp_WifiStart", 111 }, - { "Resp_WifiStatisDump", 156 }, - { "Resp_WifiStop", 112 }, + { "Resp_Base", 103 }, + { "Resp_ConfigHeartbeat", 115 }, + { "Resp_GetCoprocessorFwVersion", 186 }, + { "Resp_GetDhcpDnsStatus", 189 }, + { "Resp_GetMACAddress", 104 }, + { "Resp_GetWifiMode", 106 }, + { "Resp_GpioConfig", 197 }, + { "Resp_GpioGetLevel", 200 }, + { "Resp_GpioInputEnable", 202 }, + { "Resp_GpioResetPin", 198 }, + { "Resp_GpioSetDirection", 201 }, + { "Resp_GpioSetLevel", 199 }, + { "Resp_GpioSetPullMode", 203 }, + { "Resp_Max", 204 }, + { "Resp_OTABegin", 110 }, + { "Resp_OTAEnd", 112 }, + { "Resp_OTAWrite", 111 }, + { "Resp_SetDhcpDnsStatus", 188 }, + { "Resp_SetMacAddress", 105 }, + { "Resp_SetWifiMode", 107 }, + { "Resp_Wifi80211Tx", 153 }, + { "Resp_WifiApGetStaAid", 148 }, + { "Resp_WifiApGetStaList", 147 }, + { "Resp_WifiClearApList", 128 }, + { "Resp_WifiClearFastConnect", 130 }, + { "Resp_WifiConfig11bRate", 168 }, + { "Resp_WifiConfig80211TxRate", 172 }, + { "Resp_WifiConnect", 120 }, + { "Resp_WifiConnectionlessModuleSetWakeInterval", 169 }, + { "Resp_WifiDeauthSta", 131 }, + { "Resp_WifiDeinit", 117 }, + { "Resp_WifiDisablePmfConfig", 173 }, + { "Resp_WifiDisconnect", 121 }, + { "Resp_WifiFtmEndSession", 166 }, + { "Resp_WifiFtmInitiateSession", 165 }, + { "Resp_WifiFtmRespSetOffset", 167 }, + { "Resp_WifiGetAnt", 159 }, + { "Resp_WifiGetAntGpio", 157 }, + { "Resp_WifiGetBand", 183 }, + { "Resp_WifiGetBandMode", 185 }, + { "Resp_WifiGetBandwidth", 136 }, + { "Resp_WifiGetBandwidths", 181 }, + { "Resp_WifiGetChannel", 138 }, + { "Resp_WifiGetConfig", 123 }, + { "Resp_WifiGetCountry", 140 }, + { "Resp_WifiGetCountryCode", 171 }, + { "Resp_WifiGetEventMask", 152 }, + { "Resp_WifiGetInactiveTime", 162 }, + { "Resp_WifiGetMaxTxPower", 114 }, + { "Resp_WifiGetPromiscuous", 142 }, + { "Resp_WifiGetPromiscuousCtrlFilter", 146 }, + { "Resp_WifiGetPromiscuousFilter", 144 }, + { "Resp_WifiGetProtocol", 134 }, + { "Resp_WifiGetProtocols", 179 }, + { "Resp_WifiGetPs", 109 }, + { "Resp_WifiGetTsfTime", 160 }, + { "Resp_WifiInit", 116 }, + { "Resp_WifiRestore", 129 }, + { "Resp_WifiScanGetApNum", 126 }, + { "Resp_WifiScanGetApRecord", 187 }, + { "Resp_WifiScanGetApRecords", 127 }, + { "Resp_WifiScanStart", 124 }, + { "Resp_WifiScanStop", 125 }, + { "Resp_WifiSetAnt", 158 }, + { "Resp_WifiSetAntGpio", 156 }, + { "Resp_WifiSetBand", 182 }, + { "Resp_WifiSetBandMode", 184 }, + { "Resp_WifiSetBandwidth", 135 }, + { "Resp_WifiSetBandwidths", 180 }, + { "Resp_WifiSetChannel", 137 }, + { "Resp_WifiSetConfig", 122 }, + { "Resp_WifiSetCountry", 139 }, + { "Resp_WifiSetCountryCode", 170 }, + { "Resp_WifiSetCsi", 155 }, + { "Resp_WifiSetCsiConfig", 154 }, + { "Resp_WifiSetDynamicCs", 176 }, + { "Resp_WifiSetEventMask", 151 }, + { "Resp_WifiSetInactiveTime", 161 }, + { "Resp_WifiSetMaxTxPower", 113 }, + { "Resp_WifiSetPromiscuous", 141 }, + { "Resp_WifiSetPromiscuousCtrlFilter", 145 }, + { "Resp_WifiSetPromiscuousFilter", 143 }, + { "Resp_WifiSetProtocol", 133 }, + { "Resp_WifiSetProtocols", 178 }, + { "Resp_WifiSetPs", 108 }, + { "Resp_WifiSetRssiThreshold", 164 }, + { "Resp_WifiSetStorage", 149 }, + { "Resp_WifiSetVendorIe", 150 }, + { "Resp_WifiStaGetAid", 174 }, + { "Resp_WifiStaGetApInfo", 132 }, + { "Resp_WifiStaGetNegotiatedPhymode", 175 }, + { "Resp_WifiStaGetRssi", 177 }, + { "Resp_WifiStaItwtGetFlowIdStatus", 194 }, + { "Resp_WifiStaItwtSendProbeReq", 195 }, + { "Resp_WifiStaItwtSetTargetWakeTimeOffset", 196 }, + { "Resp_WifiStaItwtSetup", 191 }, + { "Resp_WifiStaItwtSuspend", 193 }, + { "Resp_WifiStaItwtTeardown", 192 }, + { "Resp_WifiStaTwtConfig", 190 }, + { "Resp_WifiStart", 118 }, + { "Resp_WifiStatisDump", 163 }, + { "Resp_WifiStop", 119 }, }; const ProtobufCEnumDescriptor rpc_id__descriptor = { @@ -21515,11 +23076,73 @@ const ProtobufCEnumDescriptor rpc_id__descriptor = "RpcId", "RpcId", "", - 206, + 220, rpc_id__enum_values_by_number, - 206, + 220, rpc_id__enum_values_by_name, 8, rpc_id__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; +static const ProtobufCEnumValue rpc__gpio_mode__enum_values_by_number[4] = +{ + { "GPIO_MODE_DISABLE", "RPC__GPIO_MODE__GPIO_MODE_DISABLE", 0 }, + { "GPIO_MODE_INPUT", "RPC__GPIO_MODE__GPIO_MODE_INPUT", 1 }, + { "GPIO_MODE_OUTPUT", "RPC__GPIO_MODE__GPIO_MODE_OUTPUT", 2 }, + { "GPIO_MODE_INPUT_OUTPUT", "RPC__GPIO_MODE__GPIO_MODE_INPUT_OUTPUT", 3 }, +}; +static const ProtobufCIntRange rpc__gpio_mode__value_ranges[] = { +{0, 0},{0, 4} +}; +static const ProtobufCEnumValueIndex rpc__gpio_mode__enum_values_by_name[4] = +{ + { "GPIO_MODE_DISABLE", 0 }, + { "GPIO_MODE_INPUT", 1 }, + { "GPIO_MODE_INPUT_OUTPUT", 3 }, + { "GPIO_MODE_OUTPUT", 2 }, +}; +const ProtobufCEnumDescriptor rpc__gpio_mode__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "Rpc_GpioMode", + "Rpc_GpioMode", + "RpcGpioMode", + "", + 4, + rpc__gpio_mode__enum_values_by_number, + 4, + rpc__gpio_mode__enum_values_by_name, + 1, + rpc__gpio_mode__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue rpc__gpio_pull_mode__enum_values_by_number[3] = +{ + { "GPIO_PULL_NONE", "RPC__GPIO_PULL_MODE__GPIO_PULL_NONE", 0 }, + { "GPIO_PULL_UP", "RPC__GPIO_PULL_MODE__GPIO_PULL_UP", 1 }, + { "GPIO_PULL_DOWN", "RPC__GPIO_PULL_MODE__GPIO_PULL_DOWN", 2 }, +}; +static const ProtobufCIntRange rpc__gpio_pull_mode__value_ranges[] = { +{0, 0},{0, 3} +}; +static const ProtobufCEnumValueIndex rpc__gpio_pull_mode__enum_values_by_name[3] = +{ + { "GPIO_PULL_DOWN", 2 }, + { "GPIO_PULL_NONE", 0 }, + { "GPIO_PULL_UP", 1 }, +}; +const ProtobufCEnumDescriptor rpc__gpio_pull_mode__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "Rpc_GpioPullMode", + "Rpc_GpioPullMode", + "RpcGpioPullMode", + "", + 3, + rpc__gpio_pull_mode__enum_values_by_number, + 3, + rpc__gpio_pull_mode__enum_values_by_name, + 1, + rpc__gpio_pull_mode__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; diff --git a/common/proto/esp_hosted_rpc.pb-c.h b/common/proto/esp_hosted_rpc.pb-c.h index 33d18165..23488d0c 100644 --- a/common/proto/esp_hosted_rpc.pb-c.h +++ b/common/proto/esp_hosted_rpc.pb-c.h @@ -9,9 +9,9 @@ PROTOBUF_C__BEGIN_DECLS #if PROTOBUF_C_VERSION_NUMBER < 1003000 -# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers. -#elif 1004001 < PROTOBUF_C_MIN_COMPILER_VERSION -# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c. +# error This file was generated by a newer version of protobuf-c which is incompatible with your libprotobuf-c headers. Please update your headers. +#elif 1005002 < PROTOBUF_C_MIN_COMPILER_VERSION +# error This file was generated by an older version of protobuf-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protobuf-c. #endif @@ -202,6 +202,21 @@ typedef struct RpcEventAPStaConnected RpcEventAPStaConnected; typedef struct RpcEventStaScanDone RpcEventStaScanDone; typedef struct RpcEventStaConnected RpcEventStaConnected; typedef struct RpcEventStaDisconnected RpcEventStaDisconnected; +typedef struct RpcGpioConfig RpcGpioConfig; +typedef struct RpcReqGpioConfig RpcReqGpioConfig; +typedef struct RpcRespGpioConfig RpcRespGpioConfig; +typedef struct RpcReqGpioReset RpcReqGpioReset; +typedef struct RpcRespGpioResetPin RpcRespGpioResetPin; +typedef struct RpcReqGpioSetLevel RpcReqGpioSetLevel; +typedef struct RpcRespGpioSetLevel RpcRespGpioSetLevel; +typedef struct RpcReqGpioGetLevel RpcReqGpioGetLevel; +typedef struct RpcRespGpioGetLevel RpcRespGpioGetLevel; +typedef struct RpcReqGpioSetDirection RpcReqGpioSetDirection; +typedef struct RpcRespGpioSetDirection RpcRespGpioSetDirection; +typedef struct RpcReqGpioInputEnable RpcReqGpioInputEnable; +typedef struct RpcRespGpioInputEnable RpcRespGpioInputEnable; +typedef struct RpcReqGpioSetPullMode RpcReqGpioSetPullMode; +typedef struct RpcRespGpioSetPullMode RpcRespGpioSetPullMode; typedef struct RpcEventDhcpDnsStatus RpcEventDhcpDnsStatus; typedef struct RpcEventStaItwtSetup RpcEventStaItwtSetup; typedef struct RpcEventStaItwtTeardown RpcEventStaItwtTeardown; @@ -649,14 +664,42 @@ typedef enum _RpcId { *0x168 */ RPC_ID__Req_WifiStaItwtSetTargetWakeTimeOffset = 360, + /* + * 0x169 + */ + RPC_ID__Req_GpioConfig = 361, + /* + * 0x16a + */ + RPC_ID__Req_GpioResetPin = 362, + /* + * 0x16b + */ + RPC_ID__Req_GpioSetLevel = 363, + /* + * 0x16c + */ + RPC_ID__Req_GpioGetLevel = 364, + /* + * 0x16d + */ + RPC_ID__Req_GpioSetDirection = 365, + /* + * 0x16e + */ + RPC_ID__Req_GpioInputEnable = 366, + /* + * 0x16f + */ + RPC_ID__Req_GpioSetPullMode = 367, /* * Add new control path command response before Req_Max * and update Req_Max */ /* - *0x169 + *0x170 */ - RPC_ID__Req_Max = 361, + RPC_ID__Req_Max = 368, /* ** Response Msgs * */ @@ -767,11 +810,18 @@ typedef enum _RpcId { RPC_ID__Resp_WifiStaItwtGetFlowIdStatus = 614, RPC_ID__Resp_WifiStaItwtSendProbeReq = 615, RPC_ID__Resp_WifiStaItwtSetTargetWakeTimeOffset = 616, + RPC_ID__Resp_GpioConfig = 617, + RPC_ID__Resp_GpioResetPin = 618, + RPC_ID__Resp_GpioSetLevel = 619, + RPC_ID__Resp_GpioGetLevel = 620, + RPC_ID__Resp_GpioSetDirection = 621, + RPC_ID__Resp_GpioInputEnable = 622, + RPC_ID__Resp_GpioSetPullMode = 623, /* * Add new control path command response before Resp_Max * and update Resp_Max */ - RPC_ID__Resp_Max = 617, + RPC_ID__Resp_Max = 624, /* ** Event Msgs * */ @@ -796,6 +846,19 @@ typedef enum _RpcId { RPC_ID__Event_Max = 782 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(RPC_ID) } RpcId; +typedef enum _RpcGpioMode { + RPC__GPIO_MODE__GPIO_MODE_DISABLE = 0, + RPC__GPIO_MODE__GPIO_MODE_INPUT = 1, + RPC__GPIO_MODE__GPIO_MODE_OUTPUT = 2, + RPC__GPIO_MODE__GPIO_MODE_INPUT_OUTPUT = 3 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(RPC__GPIO_MODE) +} RpcGpioMode; +typedef enum _RpcGpioPullMode { + RPC__GPIO_PULL_MODE__GPIO_PULL_NONE = 0, + RPC__GPIO_PULL_MODE__GPIO_PULL_UP = 1, + RPC__GPIO_PULL_MODE__GPIO_PULL_DOWN = 2 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(RPC__GPIO_PULL_MODE) +} RpcGpioPullMode; /* --- messages --- */ @@ -901,7 +964,7 @@ struct WifiInitConfig }; #define WIFI_INIT_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_init_config__descriptor) \ - , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } +, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } struct WifiCountry @@ -931,7 +994,7 @@ struct WifiCountry }; #define WIFI_COUNTRY__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_country__descriptor) \ - , {0,NULL}, 0, 0, 0, 0 } +, {0,NULL}, 0, 0, 0, 0 } struct WifiActiveScanTime @@ -949,7 +1012,7 @@ struct WifiActiveScanTime }; #define WIFI_ACTIVE_SCAN_TIME__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_active_scan_time__descriptor) \ - , 0, 0 } +, 0, 0 } struct WifiScanTime @@ -967,7 +1030,7 @@ struct WifiScanTime }; #define WIFI_SCAN_TIME__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_scan_time__descriptor) \ - , NULL, 0 } +, NULL, 0 } struct WifiScanChannelBitmap @@ -984,7 +1047,7 @@ struct WifiScanChannelBitmap }; #define WIFI_SCAN_CHANNEL_BITMAP__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_scan_channel_bitmap__descriptor) \ - , 0, 0 } +, 0, 0 } struct WifiScanConfig @@ -1027,7 +1090,7 @@ struct WifiScanConfig }; #define WIFI_SCAN_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_scan_config__descriptor) \ - , {0,NULL}, {0,NULL}, 0, 0, 0, NULL, 0, NULL } +, {0,NULL}, {0,NULL}, 0, 0, 0, NULL, 0, NULL } struct WifiHeApInfo @@ -1049,7 +1112,7 @@ struct WifiHeApInfo }; #define WIFI_HE_AP_INFO__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_he_ap_info__descriptor) \ - , 0, 0 } +, 0, 0 } struct WifiApRecord @@ -1130,7 +1193,7 @@ struct WifiApRecord }; #define WIFI_AP_RECORD__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_ap_record__descriptor) \ - , {0,NULL}, {0,NULL}, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0 } +, {0,NULL}, {0,NULL}, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0 } struct WifiScanThreshold @@ -1154,7 +1217,7 @@ struct WifiScanThreshold }; #define WIFI_SCAN_THRESHOLD__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_scan_threshold__descriptor) \ - , 0, 0, 0 } +, 0, 0, 0 } struct WifiPmfConfig @@ -1171,7 +1234,7 @@ struct WifiPmfConfig }; #define WIFI_PMF_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_pmf_config__descriptor) \ - , 0, 0 } +, 0, 0 } struct WifiBssMaxIdleConfig @@ -1188,7 +1251,7 @@ struct WifiBssMaxIdleConfig }; #define WIFI_BSS_MAX_IDLE_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_bss_max_idle_config__descriptor) \ - , 0, 0 } +, 0, 0 } struct WifiApConfig @@ -1271,7 +1334,7 @@ struct WifiApConfig }; #define WIFI_AP_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_ap_config__descriptor) \ - , {0,NULL}, {0,NULL}, 0, 0, 0, 0, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 0, NULL, 0 } +, {0,NULL}, {0,NULL}, 0, 0, 0, 0, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 0, NULL, 0 } struct WifiStaConfig @@ -1367,7 +1430,7 @@ struct WifiStaConfig }; #define WIFI_STA_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_sta_config__descriptor) \ - , {0,NULL}, {0,NULL}, 0, 0, {0,NULL}, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, {0,NULL}, 0 } +, {0,NULL}, {0,NULL}, 0, 0, {0,NULL}, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, {0,NULL}, 0 } typedef enum { @@ -1394,7 +1457,7 @@ struct WifiConfig }; #define WIFI_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_config__descriptor) \ - , WIFI_CONFIG__U__NOT_SET, {0} } +, WIFI_CONFIG__U__NOT_SET, {0} } struct WifiStaInfo @@ -1421,7 +1484,7 @@ struct WifiStaInfo }; #define WIFI_STA_INFO__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_sta_info__descriptor) \ - , {0,NULL}, 0, 0 } +, {0,NULL}, 0, 0 } struct WifiStaList @@ -1439,7 +1502,7 @@ struct WifiStaList }; #define WIFI_STA_LIST__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_sta_list__descriptor) \ - , 0,NULL, 0 } +, 0,NULL, 0 } struct WifiPktRxCtrl @@ -1547,7 +1610,7 @@ struct WifiPktRxCtrl }; #define WIFI_PKT_RX_CTRL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_pkt_rx_ctrl__descriptor) \ - , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } +, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } struct WifiPromiscuousPkt @@ -1564,7 +1627,7 @@ struct WifiPromiscuousPkt }; #define WIFI_PROMISCUOUS_PKT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_promiscuous_pkt__descriptor) \ - , NULL, {0,NULL} } +, NULL, {0,NULL} } struct WifiPromiscuousFilter @@ -1577,7 +1640,7 @@ struct WifiPromiscuousFilter }; #define WIFI_PROMISCUOUS_FILTER__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_promiscuous_filter__descriptor) \ - , 0 } +, 0 } struct WifiCsiConfig @@ -1615,7 +1678,7 @@ struct WifiCsiConfig }; #define WIFI_CSI_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_csi_config__descriptor) \ - , 0, 0, 0, 0, 0, 0, 0 } +, 0, 0, 0, 0, 0, 0, 0 } struct WifiCsiInfo @@ -1648,7 +1711,7 @@ struct WifiCsiInfo }; #define WIFI_CSI_INFO__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_csi_info__descriptor) \ - , NULL, {0,NULL}, {0,NULL}, 0, {0,NULL}, 0 } +, NULL, {0,NULL}, {0,NULL}, 0, {0,NULL}, 0 } struct WifiAntGpio @@ -1665,7 +1728,7 @@ struct WifiAntGpio }; #define WIFI_ANT_GPIO__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_ant_gpio__descriptor) \ - , 0, 0 } +, 0, 0 } struct WifiAntGpioConfig @@ -1679,7 +1742,7 @@ struct WifiAntGpioConfig }; #define WIFI_ANT_GPIO_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_ant_gpio_config__descriptor) \ - , 0,NULL } +, 0,NULL } struct WifiAntConfig @@ -1708,7 +1771,7 @@ struct WifiAntConfig }; #define WIFI_ANT_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_ant_config__descriptor) \ - , 0, 0, 0, 0, 0 } +, 0, 0, 0, 0, 0 } struct WifiActionTxReq @@ -1741,7 +1804,7 @@ struct WifiActionTxReq }; #define WIFI_ACTION_TX_REQ__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_action_tx_req__descriptor) \ - , 0, {0,NULL}, 0, 0, {0,NULL} } +, 0, {0,NULL}, 0, 0, {0,NULL} } struct WifiFtmInitiatorCfg @@ -1766,7 +1829,7 @@ struct WifiFtmInitiatorCfg }; #define WIFI_FTM_INITIATOR_CFG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_ftm_initiator_cfg__descriptor) \ - , {0,NULL}, 0, 0, 0 } +, {0,NULL}, 0, 0, 0 } struct WifiEventStaScanDone @@ -1787,7 +1850,7 @@ struct WifiEventStaScanDone }; #define WIFI_EVENT_STA_SCAN_DONE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_event_sta_scan_done__descriptor) \ - , 0, 0, 0 } +, 0, 0, 0 } struct WifiEventStaConnected @@ -1820,7 +1883,7 @@ struct WifiEventStaConnected }; #define WIFI_EVENT_STA_CONNECTED__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_event_sta_connected__descriptor) \ - , {0,NULL}, 0, {0,NULL}, 0, 0, 0 } +, {0,NULL}, 0, {0,NULL}, 0, 0, 0 } struct WifiEventStaDisconnected @@ -1849,7 +1912,7 @@ struct WifiEventStaDisconnected }; #define WIFI_EVENT_STA_DISCONNECTED__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_event_sta_disconnected__descriptor) \ - , {0,NULL}, 0, {0,NULL}, 0, 0 } +, {0,NULL}, 0, {0,NULL}, 0, 0 } struct WifiEventStaAuthmodeChange @@ -1866,7 +1929,7 @@ struct WifiEventStaAuthmodeChange }; #define WIFI_EVENT_STA_AUTHMODE_CHANGE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_event_sta_authmode_change__descriptor) \ - , 0, 0 } +, 0, 0 } struct WifiEventStaWpsErPin @@ -1879,7 +1942,7 @@ struct WifiEventStaWpsErPin }; #define WIFI_EVENT_STA_WPS_ER_PIN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_event_sta_wps_er_pin__descriptor) \ - , {0,NULL} } +, {0,NULL} } struct ApCred @@ -1896,7 +1959,7 @@ struct ApCred }; #define AP_CRED__INIT \ { PROTOBUF_C_MESSAGE_INIT (&ap_cred__descriptor) \ - , {0,NULL}, {0,NULL} } +, {0,NULL}, {0,NULL} } struct WifiEventStaWpsErSuccess @@ -1914,7 +1977,7 @@ struct WifiEventStaWpsErSuccess }; #define WIFI_EVENT_STA_WPS_ER_SUCCESS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_event_sta_wps_er_success__descriptor) \ - , 0, 0,NULL } +, 0, 0,NULL } /* @@ -1934,7 +1997,7 @@ struct WifiEventApProbeReqRx }; #define WIFI_EVENT_AP_PROBE_REQ_RX__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_event_ap_probe_req_rx__descriptor) \ - , 0, 0 } +, 0, 0 } /* @@ -1950,7 +2013,7 @@ struct WifiEventBssRssiLow }; #define WIFI_EVENT_BSS_RSSI_LOW__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_event_bss_rssi_low__descriptor) \ - , 0 } +, 0 } struct WifiFtmReportEntry @@ -1990,7 +2053,7 @@ struct WifiFtmReportEntry }; #define WIFI_FTM_REPORT_ENTRY__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_ftm_report_entry__descriptor) \ - , 0, 0, 0, 0, 0, 0, 0 } +, 0, 0, 0, 0, 0, 0, 0 } struct WifiEventFtmReport @@ -2028,7 +2091,7 @@ struct WifiEventFtmReport }; #define WIFI_EVENT_FTM_REPORT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_event_ftm_report__descriptor) \ - , {0,NULL}, 0, 0, 0, 0, 0,NULL, 0 } +, {0,NULL}, 0, 0, 0, 0, 0,NULL, 0 } struct WifiEventActionTxStatus @@ -2053,7 +2116,7 @@ struct WifiEventActionTxStatus }; #define WIFI_EVENT_ACTION_TX_STATUS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_event_action_tx_status__descriptor) \ - , 0, 0, {0,NULL}, 0 } +, 0, 0, {0,NULL}, 0 } struct WifiEventRocDone @@ -2066,7 +2129,7 @@ struct WifiEventRocDone }; #define WIFI_EVENT_ROC_DONE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_event_roc_done__descriptor) \ - , 0 } +, 0 } struct WifiEventApWpsRgPin @@ -2079,7 +2142,7 @@ struct WifiEventApWpsRgPin }; #define WIFI_EVENT_AP_WPS_RG_PIN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_event_ap_wps_rg_pin__descriptor) \ - , {0,NULL} } +, {0,NULL} } struct WifiEventApWpsRgFailReason @@ -2096,7 +2159,7 @@ struct WifiEventApWpsRgFailReason }; #define WIFI_EVENT_AP_WPS_RG_FAIL_REASON__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_event_ap_wps_rg_fail_reason__descriptor) \ - , 0, {0,NULL} } +, 0, {0,NULL} } struct WifiEventApWpsRgSuccess @@ -2109,7 +2172,7 @@ struct WifiEventApWpsRgSuccess }; #define WIFI_EVENT_AP_WPS_RG_SUCCESS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_event_ap_wps_rg_success__descriptor) \ - , {0,NULL} } +, {0,NULL} } struct WifiProtocols @@ -2126,7 +2189,7 @@ struct WifiProtocols }; #define WIFI_PROTOCOLS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_protocols__descriptor) \ - , 0, 0 } +, 0, 0 } struct WifiBandwidths @@ -2143,7 +2206,7 @@ struct WifiBandwidths }; #define WIFI_BANDWIDTHS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_bandwidths__descriptor) \ - , 0, 0 } +, 0, 0 } struct WifiItwtSetupConfig @@ -2168,7 +2231,7 @@ struct WifiItwtSetupConfig }; #define WIFI_ITWT_SETUP_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_itwt_setup_config__descriptor) \ - , 0, 0, 0, 0, 0, 0 } +, 0, 0, 0, 0, 0, 0 } struct WifiTwtConfig @@ -2185,7 +2248,7 @@ struct WifiTwtConfig }; #define WIFI_TWT_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_twt_config__descriptor) \ - , 0, 0 } +, 0, 0 } struct ConnectedSTAList @@ -2196,7 +2259,7 @@ struct ConnectedSTAList }; #define CONNECTED_STALIST__INIT \ { PROTOBUF_C_MESSAGE_INIT (&connected_stalist__descriptor) \ - , {0,NULL}, 0 } +, {0,NULL}, 0 } /* @@ -2209,7 +2272,7 @@ struct RpcReqGetMacAddress }; #define RPC__REQ__GET_MAC_ADDRESS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__get_mac_address__descriptor) \ - , 0 } +, 0 } struct RpcRespGetMacAddress @@ -2220,7 +2283,7 @@ struct RpcRespGetMacAddress }; #define RPC__RESP__GET_MAC_ADDRESS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__get_mac_address__descriptor) \ - , {0,NULL}, 0 } +, {0,NULL}, 0 } struct RpcReqGetMode @@ -2229,7 +2292,7 @@ struct RpcReqGetMode }; #define RPC__REQ__GET_MODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__get_mode__descriptor) \ - } + } struct RpcRespGetMode @@ -2240,7 +2303,7 @@ struct RpcRespGetMode }; #define RPC__RESP__GET_MODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__get_mode__descriptor) \ - , 0, 0 } +, 0, 0 } struct RpcReqSetMode @@ -2250,7 +2313,7 @@ struct RpcReqSetMode }; #define RPC__REQ__SET_MODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__set_mode__descriptor) \ - , 0 } +, 0 } struct RpcRespSetMode @@ -2260,7 +2323,7 @@ struct RpcRespSetMode }; #define RPC__RESP__SET_MODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__set_mode__descriptor) \ - , 0 } +, 0 } struct RpcReqGetPs @@ -2269,7 +2332,7 @@ struct RpcReqGetPs }; #define RPC__REQ__GET_PS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__get_ps__descriptor) \ - } + } struct RpcRespGetPs @@ -2280,7 +2343,7 @@ struct RpcRespGetPs }; #define RPC__RESP__GET_PS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__get_ps__descriptor) \ - , 0, 0 } +, 0, 0 } struct RpcReqSetPs @@ -2290,7 +2353,7 @@ struct RpcReqSetPs }; #define RPC__REQ__SET_PS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__set_ps__descriptor) \ - , 0 } +, 0 } struct RpcRespSetPs @@ -2300,7 +2363,7 @@ struct RpcRespSetPs }; #define RPC__RESP__SET_PS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__set_ps__descriptor) \ - , 0 } +, 0 } struct RpcReqSetMacAddress @@ -2311,7 +2374,7 @@ struct RpcReqSetMacAddress }; #define RPC__REQ__SET_MAC_ADDRESS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__set_mac_address__descriptor) \ - , {0,NULL}, 0 } +, {0,NULL}, 0 } struct RpcRespSetMacAddress @@ -2321,7 +2384,7 @@ struct RpcRespSetMacAddress }; #define RPC__RESP__SET_MAC_ADDRESS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__set_mac_address__descriptor) \ - , 0 } +, 0 } struct RpcReqOTABegin @@ -2330,7 +2393,7 @@ struct RpcReqOTABegin }; #define RPC__REQ__OTABEGIN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__otabegin__descriptor) \ - } + } struct RpcRespOTABegin @@ -2340,7 +2403,7 @@ struct RpcRespOTABegin }; #define RPC__RESP__OTABEGIN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__otabegin__descriptor) \ - , 0 } +, 0 } struct RpcReqOTAWrite @@ -2350,7 +2413,7 @@ struct RpcReqOTAWrite }; #define RPC__REQ__OTAWRITE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__otawrite__descriptor) \ - , {0,NULL} } +, {0,NULL} } struct RpcRespOTAWrite @@ -2360,7 +2423,7 @@ struct RpcRespOTAWrite }; #define RPC__RESP__OTAWRITE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__otawrite__descriptor) \ - , 0 } +, 0 } struct RpcReqOTAEnd @@ -2369,7 +2432,7 @@ struct RpcReqOTAEnd }; #define RPC__REQ__OTAEND__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__otaend__descriptor) \ - } + } struct RpcRespOTAEnd @@ -2379,7 +2442,7 @@ struct RpcRespOTAEnd }; #define RPC__RESP__OTAEND__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__otaend__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiSetMaxTxPower @@ -2389,7 +2452,7 @@ struct RpcReqWifiSetMaxTxPower }; #define RPC__REQ__WIFI_SET_MAX_TX_POWER__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_set_max_tx_power__descriptor) \ - , 0 } +, 0 } struct RpcRespWifiSetMaxTxPower @@ -2399,7 +2462,7 @@ struct RpcRespWifiSetMaxTxPower }; #define RPC__RESP__WIFI_SET_MAX_TX_POWER__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_set_max_tx_power__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiGetMaxTxPower @@ -2408,7 +2471,7 @@ struct RpcReqWifiGetMaxTxPower }; #define RPC__REQ__WIFI_GET_MAX_TX_POWER__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_get_max_tx_power__descriptor) \ - } + } struct RpcRespWifiGetMaxTxPower @@ -2419,7 +2482,7 @@ struct RpcRespWifiGetMaxTxPower }; #define RPC__RESP__WIFI_GET_MAX_TX_POWER__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_get_max_tx_power__descriptor) \ - , 0, 0 } +, 0, 0 } struct RpcReqConfigHeartbeat @@ -2430,7 +2493,7 @@ struct RpcReqConfigHeartbeat }; #define RPC__REQ__CONFIG_HEARTBEAT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__config_heartbeat__descriptor) \ - , 0, 0 } +, 0, 0 } struct RpcRespConfigHeartbeat @@ -2440,7 +2503,7 @@ struct RpcRespConfigHeartbeat }; #define RPC__RESP__CONFIG_HEARTBEAT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__config_heartbeat__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiInit @@ -2450,7 +2513,7 @@ struct RpcReqWifiInit }; #define RPC__REQ__WIFI_INIT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_init__descriptor) \ - , NULL } +, NULL } struct RpcRespWifiInit @@ -2460,7 +2523,7 @@ struct RpcRespWifiInit }; #define RPC__RESP__WIFI_INIT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_init__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiDeinit @@ -2469,7 +2532,7 @@ struct RpcReqWifiDeinit }; #define RPC__REQ__WIFI_DEINIT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_deinit__descriptor) \ - } + } struct RpcRespWifiDeinit @@ -2479,7 +2542,7 @@ struct RpcRespWifiDeinit }; #define RPC__RESP__WIFI_DEINIT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_deinit__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiSetConfig @@ -2490,7 +2553,7 @@ struct RpcReqWifiSetConfig }; #define RPC__REQ__WIFI_SET_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_set_config__descriptor) \ - , 0, NULL } +, 0, NULL } struct RpcRespWifiSetConfig @@ -2500,7 +2563,7 @@ struct RpcRespWifiSetConfig }; #define RPC__RESP__WIFI_SET_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_set_config__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiGetConfig @@ -2510,7 +2573,7 @@ struct RpcReqWifiGetConfig }; #define RPC__REQ__WIFI_GET_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_get_config__descriptor) \ - , 0 } +, 0 } struct RpcRespWifiGetConfig @@ -2522,7 +2585,7 @@ struct RpcRespWifiGetConfig }; #define RPC__RESP__WIFI_GET_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_get_config__descriptor) \ - , 0, 0, NULL } +, 0, 0, NULL } struct RpcReqWifiConnect @@ -2531,7 +2594,7 @@ struct RpcReqWifiConnect }; #define RPC__REQ__WIFI_CONNECT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_connect__descriptor) \ - } + } struct RpcRespWifiConnect @@ -2541,7 +2604,7 @@ struct RpcRespWifiConnect }; #define RPC__RESP__WIFI_CONNECT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_connect__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiDisconnect @@ -2550,7 +2613,7 @@ struct RpcReqWifiDisconnect }; #define RPC__REQ__WIFI_DISCONNECT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_disconnect__descriptor) \ - } + } struct RpcRespWifiDisconnect @@ -2560,7 +2623,7 @@ struct RpcRespWifiDisconnect }; #define RPC__RESP__WIFI_DISCONNECT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_disconnect__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiStart @@ -2569,7 +2632,7 @@ struct RpcReqWifiStart }; #define RPC__REQ__WIFI_START__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_start__descriptor) \ - } + } struct RpcRespWifiStart @@ -2579,7 +2642,7 @@ struct RpcRespWifiStart }; #define RPC__RESP__WIFI_START__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_start__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiStop @@ -2588,7 +2651,7 @@ struct RpcReqWifiStop }; #define RPC__REQ__WIFI_STOP__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_stop__descriptor) \ - } + } struct RpcRespWifiStop @@ -2598,7 +2661,7 @@ struct RpcRespWifiStop }; #define RPC__RESP__WIFI_STOP__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_stop__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiScanStart @@ -2610,7 +2673,7 @@ struct RpcReqWifiScanStart }; #define RPC__REQ__WIFI_SCAN_START__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_scan_start__descriptor) \ - , NULL, 0, 0 } +, NULL, 0, 0 } struct RpcRespWifiScanStart @@ -2620,7 +2683,7 @@ struct RpcRespWifiScanStart }; #define RPC__RESP__WIFI_SCAN_START__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_scan_start__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiScanStop @@ -2629,7 +2692,7 @@ struct RpcReqWifiScanStop }; #define RPC__REQ__WIFI_SCAN_STOP__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_scan_stop__descriptor) \ - } + } struct RpcRespWifiScanStop @@ -2639,7 +2702,7 @@ struct RpcRespWifiScanStop }; #define RPC__RESP__WIFI_SCAN_STOP__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_scan_stop__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiScanGetApNum @@ -2648,7 +2711,7 @@ struct RpcReqWifiScanGetApNum }; #define RPC__REQ__WIFI_SCAN_GET_AP_NUM__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_scan_get_ap_num__descriptor) \ - } + } struct RpcRespWifiScanGetApNum @@ -2659,7 +2722,7 @@ struct RpcRespWifiScanGetApNum }; #define RPC__RESP__WIFI_SCAN_GET_AP_NUM__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_scan_get_ap_num__descriptor) \ - , 0, 0 } +, 0, 0 } struct RpcReqWifiScanGetApRecords @@ -2669,7 +2732,7 @@ struct RpcReqWifiScanGetApRecords }; #define RPC__REQ__WIFI_SCAN_GET_AP_RECORDS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_scan_get_ap_records__descriptor) \ - , 0 } +, 0 } struct RpcRespWifiScanGetApRecords @@ -2682,7 +2745,7 @@ struct RpcRespWifiScanGetApRecords }; #define RPC__RESP__WIFI_SCAN_GET_AP_RECORDS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_scan_get_ap_records__descriptor) \ - , 0, 0, 0,NULL } +, 0, 0, 0,NULL } struct RpcReqWifiScanGetApRecord @@ -2691,7 +2754,7 @@ struct RpcReqWifiScanGetApRecord }; #define RPC__REQ__WIFI_SCAN_GET_AP_RECORD__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_scan_get_ap_record__descriptor) \ - } + } struct RpcRespWifiScanGetApRecord @@ -2702,7 +2765,7 @@ struct RpcRespWifiScanGetApRecord }; #define RPC__RESP__WIFI_SCAN_GET_AP_RECORD__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_scan_get_ap_record__descriptor) \ - , 0, NULL } +, 0, NULL } struct RpcReqWifiClearApList @@ -2711,7 +2774,7 @@ struct RpcReqWifiClearApList }; #define RPC__REQ__WIFI_CLEAR_AP_LIST__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_clear_ap_list__descriptor) \ - } + } struct RpcRespWifiClearApList @@ -2721,7 +2784,7 @@ struct RpcRespWifiClearApList }; #define RPC__RESP__WIFI_CLEAR_AP_LIST__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_clear_ap_list__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiRestore @@ -2730,7 +2793,7 @@ struct RpcReqWifiRestore }; #define RPC__REQ__WIFI_RESTORE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_restore__descriptor) \ - } + } struct RpcRespWifiRestore @@ -2740,7 +2803,7 @@ struct RpcRespWifiRestore }; #define RPC__RESP__WIFI_RESTORE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_restore__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiClearFastConnect @@ -2749,7 +2812,7 @@ struct RpcReqWifiClearFastConnect }; #define RPC__REQ__WIFI_CLEAR_FAST_CONNECT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_clear_fast_connect__descriptor) \ - } + } struct RpcRespWifiClearFastConnect @@ -2759,7 +2822,7 @@ struct RpcRespWifiClearFastConnect }; #define RPC__RESP__WIFI_CLEAR_FAST_CONNECT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_clear_fast_connect__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiDeauthSta @@ -2769,7 +2832,7 @@ struct RpcReqWifiDeauthSta }; #define RPC__REQ__WIFI_DEAUTH_STA__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_deauth_sta__descriptor) \ - , 0 } +, 0 } struct RpcRespWifiDeauthSta @@ -2780,7 +2843,7 @@ struct RpcRespWifiDeauthSta }; #define RPC__RESP__WIFI_DEAUTH_STA__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_deauth_sta__descriptor) \ - , 0, 0 } +, 0, 0 } struct RpcReqWifiStaGetApInfo @@ -2789,7 +2852,7 @@ struct RpcReqWifiStaGetApInfo }; #define RPC__REQ__WIFI_STA_GET_AP_INFO__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_get_ap_info__descriptor) \ - } + } struct RpcRespWifiStaGetApInfo @@ -2800,7 +2863,7 @@ struct RpcRespWifiStaGetApInfo }; #define RPC__RESP__WIFI_STA_GET_AP_INFO__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_get_ap_info__descriptor) \ - , 0, NULL } +, 0, NULL } struct RpcReqWifiSetProtocol @@ -2811,7 +2874,7 @@ struct RpcReqWifiSetProtocol }; #define RPC__REQ__WIFI_SET_PROTOCOL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_set_protocol__descriptor) \ - , 0, 0 } +, 0, 0 } struct RpcRespWifiSetProtocol @@ -2821,7 +2884,7 @@ struct RpcRespWifiSetProtocol }; #define RPC__RESP__WIFI_SET_PROTOCOL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_set_protocol__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiGetProtocol @@ -2831,7 +2894,7 @@ struct RpcReqWifiGetProtocol }; #define RPC__REQ__WIFI_GET_PROTOCOL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_get_protocol__descriptor) \ - , 0 } +, 0 } struct RpcRespWifiGetProtocol @@ -2842,7 +2905,7 @@ struct RpcRespWifiGetProtocol }; #define RPC__RESP__WIFI_GET_PROTOCOL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_get_protocol__descriptor) \ - , 0, 0 } +, 0, 0 } struct RpcReqWifiSetBandwidth @@ -2853,7 +2916,7 @@ struct RpcReqWifiSetBandwidth }; #define RPC__REQ__WIFI_SET_BANDWIDTH__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_set_bandwidth__descriptor) \ - , 0, 0 } +, 0, 0 } struct RpcRespWifiSetBandwidth @@ -2863,7 +2926,7 @@ struct RpcRespWifiSetBandwidth }; #define RPC__RESP__WIFI_SET_BANDWIDTH__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_set_bandwidth__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiGetBandwidth @@ -2873,7 +2936,7 @@ struct RpcReqWifiGetBandwidth }; #define RPC__REQ__WIFI_GET_BANDWIDTH__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_get_bandwidth__descriptor) \ - , 0 } +, 0 } struct RpcRespWifiGetBandwidth @@ -2884,7 +2947,7 @@ struct RpcRespWifiGetBandwidth }; #define RPC__RESP__WIFI_GET_BANDWIDTH__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_get_bandwidth__descriptor) \ - , 0, 0 } +, 0, 0 } struct RpcReqWifiSetChannel @@ -2895,7 +2958,7 @@ struct RpcReqWifiSetChannel }; #define RPC__REQ__WIFI_SET_CHANNEL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_set_channel__descriptor) \ - , 0, 0 } +, 0, 0 } struct RpcRespWifiSetChannel @@ -2905,7 +2968,7 @@ struct RpcRespWifiSetChannel }; #define RPC__RESP__WIFI_SET_CHANNEL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_set_channel__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiGetChannel @@ -2914,7 +2977,7 @@ struct RpcReqWifiGetChannel }; #define RPC__REQ__WIFI_GET_CHANNEL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_get_channel__descriptor) \ - } + } struct RpcRespWifiGetChannel @@ -2926,7 +2989,7 @@ struct RpcRespWifiGetChannel }; #define RPC__RESP__WIFI_GET_CHANNEL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_get_channel__descriptor) \ - , 0, 0, 0 } +, 0, 0, 0 } struct RpcReqWifiSetStorage @@ -2936,7 +2999,7 @@ struct RpcReqWifiSetStorage }; #define RPC__REQ__WIFI_SET_STORAGE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_set_storage__descriptor) \ - , 0 } +, 0 } struct RpcRespWifiSetStorage @@ -2946,7 +3009,7 @@ struct RpcRespWifiSetStorage }; #define RPC__RESP__WIFI_SET_STORAGE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_set_storage__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiSetCountryCode @@ -2957,7 +3020,7 @@ struct RpcReqWifiSetCountryCode }; #define RPC__REQ__WIFI_SET_COUNTRY_CODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_set_country_code__descriptor) \ - , {0,NULL}, 0 } +, {0,NULL}, 0 } struct RpcRespWifiSetCountryCode @@ -2967,7 +3030,7 @@ struct RpcRespWifiSetCountryCode }; #define RPC__RESP__WIFI_SET_COUNTRY_CODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_set_country_code__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiGetCountryCode @@ -2976,7 +3039,7 @@ struct RpcReqWifiGetCountryCode }; #define RPC__REQ__WIFI_GET_COUNTRY_CODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_get_country_code__descriptor) \ - } + } struct RpcRespWifiGetCountryCode @@ -2987,7 +3050,7 @@ struct RpcRespWifiGetCountryCode }; #define RPC__RESP__WIFI_GET_COUNTRY_CODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_get_country_code__descriptor) \ - , 0, {0,NULL} } +, 0, {0,NULL} } struct RpcReqWifiSetCountry @@ -2997,7 +3060,7 @@ struct RpcReqWifiSetCountry }; #define RPC__REQ__WIFI_SET_COUNTRY__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_set_country__descriptor) \ - , NULL } +, NULL } struct RpcRespWifiSetCountry @@ -3007,7 +3070,7 @@ struct RpcRespWifiSetCountry }; #define RPC__RESP__WIFI_SET_COUNTRY__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_set_country__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiGetCountry @@ -3016,7 +3079,7 @@ struct RpcReqWifiGetCountry }; #define RPC__REQ__WIFI_GET_COUNTRY__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_get_country__descriptor) \ - } + } struct RpcRespWifiGetCountry @@ -3027,7 +3090,7 @@ struct RpcRespWifiGetCountry }; #define RPC__RESP__WIFI_GET_COUNTRY__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_get_country__descriptor) \ - , 0, NULL } +, 0, NULL } struct RpcReqWifiApGetStaList @@ -3036,7 +3099,7 @@ struct RpcReqWifiApGetStaList }; #define RPC__REQ__WIFI_AP_GET_STA_LIST__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_ap_get_sta_list__descriptor) \ - } + } struct RpcRespWifiApGetStaList @@ -3047,7 +3110,7 @@ struct RpcRespWifiApGetStaList }; #define RPC__RESP__WIFI_AP_GET_STA_LIST__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_ap_get_sta_list__descriptor) \ - , 0, NULL } +, 0, NULL } struct RpcReqWifiApGetStaAid @@ -3057,7 +3120,7 @@ struct RpcReqWifiApGetStaAid }; #define RPC__REQ__WIFI_AP_GET_STA_AID__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_ap_get_sta_aid__descriptor) \ - , {0,NULL} } +, {0,NULL} } struct RpcReqWifiStaGetNegotiatedPhymode @@ -3066,7 +3129,7 @@ struct RpcReqWifiStaGetNegotiatedPhymode }; #define RPC__REQ__WIFI_STA_GET_NEGOTIATED_PHYMODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_get_negotiated_phymode__descriptor) \ - } + } struct RpcRespWifiStaGetNegotiatedPhymode @@ -3077,7 +3140,7 @@ struct RpcRespWifiStaGetNegotiatedPhymode }; #define RPC__RESP__WIFI_STA_GET_NEGOTIATED_PHYMODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_get_negotiated_phymode__descriptor) \ - , 0, 0 } +, 0, 0 } struct RpcRespWifiApGetStaAid @@ -3088,7 +3151,7 @@ struct RpcRespWifiApGetStaAid }; #define RPC__RESP__WIFI_AP_GET_STA_AID__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_ap_get_sta_aid__descriptor) \ - , 0, 0 } +, 0, 0 } struct RpcReqWifiStaGetRssi @@ -3097,7 +3160,7 @@ struct RpcReqWifiStaGetRssi }; #define RPC__REQ__WIFI_STA_GET_RSSI__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_get_rssi__descriptor) \ - } + } struct RpcRespWifiStaGetRssi @@ -3108,7 +3171,7 @@ struct RpcRespWifiStaGetRssi }; #define RPC__RESP__WIFI_STA_GET_RSSI__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_get_rssi__descriptor) \ - , 0, 0 } +, 0, 0 } struct RpcReqWifiStaGetAid @@ -3117,7 +3180,7 @@ struct RpcReqWifiStaGetAid }; #define RPC__REQ__WIFI_STA_GET_AID__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_get_aid__descriptor) \ - } + } struct RpcRespWifiStaGetAid @@ -3128,7 +3191,7 @@ struct RpcRespWifiStaGetAid }; #define RPC__RESP__WIFI_STA_GET_AID__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_get_aid__descriptor) \ - , 0, 0 } +, 0, 0 } struct RpcReqWifiSetProtocols @@ -3139,7 +3202,7 @@ struct RpcReqWifiSetProtocols }; #define RPC__REQ__WIFI_SET_PROTOCOLS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_set_protocols__descriptor) \ - , 0, NULL } +, 0, NULL } struct RpcRespWifiSetProtocols @@ -3150,7 +3213,7 @@ struct RpcRespWifiSetProtocols }; #define RPC__RESP__WIFI_SET_PROTOCOLS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_set_protocols__descriptor) \ - , 0, 0 } +, 0, 0 } struct RpcReqWifiGetProtocols @@ -3160,7 +3223,7 @@ struct RpcReqWifiGetProtocols }; #define RPC__REQ__WIFI_GET_PROTOCOLS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_get_protocols__descriptor) \ - , 0 } +, 0 } struct RpcRespWifiGetProtocols @@ -3172,7 +3235,7 @@ struct RpcRespWifiGetProtocols }; #define RPC__RESP__WIFI_GET_PROTOCOLS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_get_protocols__descriptor) \ - , 0, 0, NULL } +, 0, 0, NULL } struct RpcReqWifiSetBandwidths @@ -3183,7 +3246,7 @@ struct RpcReqWifiSetBandwidths }; #define RPC__REQ__WIFI_SET_BANDWIDTHS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_set_bandwidths__descriptor) \ - , 0, NULL } +, 0, NULL } struct RpcRespWifiSetBandwidths @@ -3194,7 +3257,7 @@ struct RpcRespWifiSetBandwidths }; #define RPC__RESP__WIFI_SET_BANDWIDTHS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_set_bandwidths__descriptor) \ - , 0, 0 } +, 0, 0 } struct RpcReqWifiGetBandwidths @@ -3204,7 +3267,7 @@ struct RpcReqWifiGetBandwidths }; #define RPC__REQ__WIFI_GET_BANDWIDTHS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_get_bandwidths__descriptor) \ - , 0 } +, 0 } struct RpcRespWifiGetBandwidths @@ -3216,7 +3279,7 @@ struct RpcRespWifiGetBandwidths }; #define RPC__RESP__WIFI_GET_BANDWIDTHS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_get_bandwidths__descriptor) \ - , 0, 0, NULL } +, 0, 0, NULL } struct RpcReqWifiSetBand @@ -3226,7 +3289,7 @@ struct RpcReqWifiSetBand }; #define RPC__REQ__WIFI_SET_BAND__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_set_band__descriptor) \ - , 0 } +, 0 } struct RpcRespWifiSetBand @@ -3236,7 +3299,7 @@ struct RpcRespWifiSetBand }; #define RPC__RESP__WIFI_SET_BAND__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_set_band__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiGetBand @@ -3245,7 +3308,7 @@ struct RpcReqWifiGetBand }; #define RPC__REQ__WIFI_GET_BAND__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_get_band__descriptor) \ - } + } struct RpcRespWifiGetBand @@ -3256,7 +3319,7 @@ struct RpcRespWifiGetBand }; #define RPC__RESP__WIFI_GET_BAND__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_get_band__descriptor) \ - , 0, 0 } +, 0, 0 } struct RpcReqWifiSetBandMode @@ -3266,7 +3329,7 @@ struct RpcReqWifiSetBandMode }; #define RPC__REQ__WIFI_SET_BAND_MODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_set_band_mode__descriptor) \ - , 0 } +, 0 } struct RpcRespWifiSetBandMode @@ -3276,7 +3339,7 @@ struct RpcRespWifiSetBandMode }; #define RPC__RESP__WIFI_SET_BAND_MODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_set_band_mode__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiGetBandMode @@ -3285,7 +3348,7 @@ struct RpcReqWifiGetBandMode }; #define RPC__REQ__WIFI_GET_BAND_MODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_get_band_mode__descriptor) \ - } + } struct RpcRespWifiGetBandMode @@ -3296,7 +3359,7 @@ struct RpcRespWifiGetBandMode }; #define RPC__RESP__WIFI_GET_BAND_MODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_get_band_mode__descriptor) \ - , 0, 0 } +, 0, 0 } struct RpcReqWifiSetInactiveTime @@ -3307,7 +3370,7 @@ struct RpcReqWifiSetInactiveTime }; #define RPC__REQ__WIFI_SET_INACTIVE_TIME__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_set_inactive_time__descriptor) \ - , 0, 0 } +, 0, 0 } struct RpcRespWifiSetInactiveTime @@ -3317,7 +3380,7 @@ struct RpcRespWifiSetInactiveTime }; #define RPC__RESP__WIFI_SET_INACTIVE_TIME__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_set_inactive_time__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiGetInactiveTime @@ -3327,7 +3390,7 @@ struct RpcReqWifiGetInactiveTime }; #define RPC__REQ__WIFI_GET_INACTIVE_TIME__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_get_inactive_time__descriptor) \ - , 0 } +, 0 } struct RpcRespWifiGetInactiveTime @@ -3338,7 +3401,7 @@ struct RpcRespWifiGetInactiveTime }; #define RPC__RESP__WIFI_GET_INACTIVE_TIME__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_get_inactive_time__descriptor) \ - , 0, 0 } +, 0, 0 } struct RpcReqWifiStaItwtSetup @@ -3348,7 +3411,7 @@ struct RpcReqWifiStaItwtSetup }; #define RPC__REQ__WIFI_STA_ITWT_SETUP__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_itwt_setup__descriptor) \ - , NULL } +, NULL } struct RpcRespWifiStaItwtSetup @@ -3358,7 +3421,7 @@ struct RpcRespWifiStaItwtSetup }; #define RPC__RESP__WIFI_STA_ITWT_SETUP__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_itwt_setup__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiStaItwtTeardown @@ -3368,7 +3431,7 @@ struct RpcReqWifiStaItwtTeardown }; #define RPC__REQ__WIFI_STA_ITWT_TEARDOWN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_itwt_teardown__descriptor) \ - , 0 } +, 0 } struct RpcRespWifiStaItwtTeardown @@ -3378,7 +3441,7 @@ struct RpcRespWifiStaItwtTeardown }; #define RPC__RESP__WIFI_STA_ITWT_TEARDOWN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_itwt_teardown__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiStaItwtSuspend @@ -3389,7 +3452,7 @@ struct RpcReqWifiStaItwtSuspend }; #define RPC__REQ__WIFI_STA_ITWT_SUSPEND__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_itwt_suspend__descriptor) \ - , 0, 0 } +, 0, 0 } struct RpcRespWifiStaItwtSuspend @@ -3399,7 +3462,7 @@ struct RpcRespWifiStaItwtSuspend }; #define RPC__RESP__WIFI_STA_ITWT_SUSPEND__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_itwt_suspend__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiStaItwtGetFlowIdStatus @@ -3408,7 +3471,7 @@ struct RpcReqWifiStaItwtGetFlowIdStatus }; #define RPC__REQ__WIFI_STA_ITWT_GET_FLOW_ID_STATUS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_itwt_get_flow_id_status__descriptor) \ - } + } struct RpcRespWifiStaItwtGetFlowIdStatus @@ -3419,7 +3482,7 @@ struct RpcRespWifiStaItwtGetFlowIdStatus }; #define RPC__RESP__WIFI_STA_ITWT_GET_FLOW_ID_STATUS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_itwt_get_flow_id_status__descriptor) \ - , 0, 0 } +, 0, 0 } struct RpcReqWifiStaItwtSendProbeReq @@ -3429,7 +3492,7 @@ struct RpcReqWifiStaItwtSendProbeReq }; #define RPC__REQ__WIFI_STA_ITWT_SEND_PROBE_REQ__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_itwt_send_probe_req__descriptor) \ - , 0 } +, 0 } struct RpcRespWifiStaItwtSendProbeReq @@ -3439,7 +3502,7 @@ struct RpcRespWifiStaItwtSendProbeReq }; #define RPC__RESP__WIFI_STA_ITWT_SEND_PROBE_REQ__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_itwt_send_probe_req__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiStaItwtSetTargetWakeTimeOffset @@ -3449,7 +3512,7 @@ struct RpcReqWifiStaItwtSetTargetWakeTimeOffset }; #define RPC__REQ__WIFI_STA_ITWT_SET_TARGET_WAKE_TIME_OFFSET__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_itwt_set_target_wake_time_offset__descriptor) \ - , 0 } +, 0 } struct RpcRespWifiStaItwtSetTargetWakeTimeOffset @@ -3459,7 +3522,7 @@ struct RpcRespWifiStaItwtSetTargetWakeTimeOffset }; #define RPC__RESP__WIFI_STA_ITWT_SET_TARGET_WAKE_TIME_OFFSET__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__descriptor) \ - , 0 } +, 0 } struct RpcReqWifiStaTwtConfig @@ -3469,7 +3532,7 @@ struct RpcReqWifiStaTwtConfig }; #define RPC__REQ__WIFI_STA_TWT_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_twt_config__descriptor) \ - , NULL } +, NULL } struct RpcRespWifiStaTwtConfig @@ -3479,7 +3542,7 @@ struct RpcRespWifiStaTwtConfig }; #define RPC__RESP__WIFI_STA_TWT_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_twt_config__descriptor) \ - , 0 } +, 0 } struct RpcReqGetCoprocessorFwVersion @@ -3488,7 +3551,7 @@ struct RpcReqGetCoprocessorFwVersion }; #define RPC__REQ__GET_COPROCESSOR_FW_VERSION__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__get_coprocessor_fw_version__descriptor) \ - } + } struct RpcRespGetCoprocessorFwVersion @@ -3501,7 +3564,7 @@ struct RpcRespGetCoprocessorFwVersion }; #define RPC__RESP__GET_COPROCESSOR_FW_VERSION__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__get_coprocessor_fw_version__descriptor) \ - , 0, 0, 0, 0 } +, 0, 0, 0, 0 } struct RpcReqSetDhcpDnsStatus @@ -3519,7 +3582,7 @@ struct RpcReqSetDhcpDnsStatus }; #define RPC__REQ__SET_DHCP_DNS_STATUS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__set_dhcp_dns_status__descriptor) \ - , 0, 0, 0, {0,NULL}, {0,NULL}, {0,NULL}, 0, {0,NULL}, 0 } +, 0, 0, 0, {0,NULL}, {0,NULL}, {0,NULL}, 0, {0,NULL}, 0 } struct RpcRespSetDhcpDnsStatus @@ -3529,7 +3592,7 @@ struct RpcRespSetDhcpDnsStatus }; #define RPC__RESP__SET_DHCP_DNS_STATUS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__set_dhcp_dns_status__descriptor) \ - , 0 } +, 0 } struct RpcReqGetDhcpDnsStatus @@ -3539,7 +3602,7 @@ struct RpcReqGetDhcpDnsStatus }; #define RPC__REQ__GET_DHCP_DNS_STATUS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__get_dhcp_dns_status__descriptor) \ - , 0 } +, 0 } struct RpcRespGetDhcpDnsStatus @@ -3558,7 +3621,7 @@ struct RpcRespGetDhcpDnsStatus }; #define RPC__RESP__GET_DHCP_DNS_STATUS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__get_dhcp_dns_status__descriptor) \ - , 0, 0, 0, {0,NULL}, {0,NULL}, {0,NULL}, 0, {0,NULL}, 0, 0 } +, 0, 0, 0, {0,NULL}, {0,NULL}, {0,NULL}, 0, {0,NULL}, 0, 0 } struct RpcEventWifiEventNoArgs @@ -3569,7 +3632,7 @@ struct RpcEventWifiEventNoArgs }; #define RPC__EVENT__WIFI_EVENT_NO_ARGS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__event__wifi_event_no_args__descriptor) \ - , 0, 0 } +, 0, 0 } struct RpcEventESPInit @@ -3579,7 +3642,7 @@ struct RpcEventESPInit }; #define RPC__EVENT__ESPINIT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__event__espinit__descriptor) \ - , {0,NULL} } +, {0,NULL} } struct RpcEventHeartbeat @@ -3589,7 +3652,7 @@ struct RpcEventHeartbeat }; #define RPC__EVENT__HEARTBEAT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__event__heartbeat__descriptor) \ - , 0 } +, 0 } struct RpcEventAPStaDisconnected @@ -3603,7 +3666,7 @@ struct RpcEventAPStaDisconnected }; #define RPC__EVENT__AP__STA_DISCONNECTED__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__event__ap__sta_disconnected__descriptor) \ - , 0, {0,NULL}, 0, 0, 0 } +, 0, {0,NULL}, 0, 0, 0 } struct RpcEventAPStaConnected @@ -3616,7 +3679,7 @@ struct RpcEventAPStaConnected }; #define RPC__EVENT__AP__STA_CONNECTED__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__event__ap__sta_connected__descriptor) \ - , 0, {0,NULL}, 0, 0 } +, 0, {0,NULL}, 0, 0 } struct RpcEventStaScanDone @@ -3627,7 +3690,7 @@ struct RpcEventStaScanDone }; #define RPC__EVENT__STA_SCAN_DONE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__event__sta_scan_done__descriptor) \ - , 0, NULL } +, 0, NULL } struct RpcEventStaConnected @@ -3638,7 +3701,7 @@ struct RpcEventStaConnected }; #define RPC__EVENT__STA_CONNECTED__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__event__sta_connected__descriptor) \ - , 0, NULL } +, 0, NULL } struct RpcEventStaDisconnected @@ -3649,7 +3712,168 @@ struct RpcEventStaDisconnected }; #define RPC__EVENT__STA_DISCONNECTED__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__event__sta_disconnected__descriptor) \ - , 0, NULL } +, 0, NULL } + + +struct RpcGpioConfig +{ + ProtobufCMessage base; + uint64_t pin_bit_mask; + RpcGpioMode mode; + protobuf_c_boolean pull_up_en; + protobuf_c_boolean pull_down_en; + int32_t intr_type; +}; +#define RPC__GPIO_CONFIG__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__gpio_config__descriptor) \ +, 0, RPC__GPIO_MODE__GPIO_MODE_DISABLE, 0, 0, 0 } + + +struct RpcReqGpioConfig +{ + ProtobufCMessage base; + RpcGpioConfig *config; +}; +#define RPC__REQ__GPIO_CONFIG__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__gpio_config__descriptor) \ +, NULL } + + +struct RpcRespGpioConfig +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__GPIO_CONFIG__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__gpio_config__descriptor) \ +, 0 } + + +struct RpcReqGpioReset +{ + ProtobufCMessage base; + int32_t gpio_num; +}; +#define RPC__REQ__GPIO_RESET__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__gpio_reset__descriptor) \ +, 0 } + + +struct RpcRespGpioResetPin +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__GPIO_RESET_PIN__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__gpio_reset_pin__descriptor) \ +, 0 } + + +struct RpcReqGpioSetLevel +{ + ProtobufCMessage base; + int32_t gpio_num; + /* + * 0 or 1 + */ + uint32_t level; +}; +#define RPC__REQ__GPIO_SET_LEVEL__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__gpio_set_level__descriptor) \ +, 0, 0 } + + +struct RpcRespGpioSetLevel +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__GPIO_SET_LEVEL__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__gpio_set_level__descriptor) \ +, 0 } + + +struct RpcReqGpioGetLevel +{ + ProtobufCMessage base; + int32_t gpio_num; +}; +#define RPC__REQ__GPIO_GET_LEVEL__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__gpio_get_level__descriptor) \ +, 0 } + + +struct RpcRespGpioGetLevel +{ + ProtobufCMessage base; + int32_t resp; + uint32_t level; +}; +#define RPC__RESP__GPIO_GET_LEVEL__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__gpio_get_level__descriptor) \ +, 0, 0 } + + +struct RpcReqGpioSetDirection +{ + ProtobufCMessage base; + int32_t gpio_num; + RpcGpioMode mode; +}; +#define RPC__REQ__GPIO_SET_DIRECTION__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__gpio_set_direction__descriptor) \ +, 0, RPC__GPIO_MODE__GPIO_MODE_DISABLE } + + +struct RpcRespGpioSetDirection +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__GPIO_SET_DIRECTION__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__gpio_set_direction__descriptor) \ +, 0 } + + +struct RpcReqGpioInputEnable +{ + ProtobufCMessage base; + int32_t gpio_num; +}; +#define RPC__REQ__GPIO_INPUT_ENABLE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__gpio_input_enable__descriptor) \ +, 0 } + + +struct RpcRespGpioInputEnable +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__GPIO_INPUT_ENABLE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__gpio_input_enable__descriptor) \ +, 0 } + + +struct RpcReqGpioSetPullMode +{ + ProtobufCMessage base; + int32_t gpio_num; + RpcGpioPullMode pull; +}; +#define RPC__REQ__GPIO_SET_PULL_MODE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__gpio_set_pull_mode__descriptor) \ +, 0, RPC__GPIO_PULL_MODE__GPIO_PULL_NONE } + + +struct RpcRespGpioSetPullMode +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__GPIO_SET_PULL_MODE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__gpio_set_pull_mode__descriptor) \ +, 0 } struct RpcEventDhcpDnsStatus @@ -3668,7 +3892,7 @@ struct RpcEventDhcpDnsStatus }; #define RPC__EVENT__DHCP_DNS_STATUS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__event__dhcp_dns_status__descriptor) \ - , 0, 0, 0, {0,NULL}, {0,NULL}, {0,NULL}, 0, {0,NULL}, 0, 0 } +, 0, 0, 0, {0,NULL}, {0,NULL}, {0,NULL}, 0, {0,NULL}, 0, 0 } struct RpcEventStaItwtSetup @@ -3682,7 +3906,7 @@ struct RpcEventStaItwtSetup }; #define RPC__EVENT__STA_ITWT_SETUP__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__event__sta_itwt_setup__descriptor) \ - , 0, NULL, 0, 0, 0 } +, 0, NULL, 0, 0, 0 } struct RpcEventStaItwtTeardown @@ -3694,7 +3918,7 @@ struct RpcEventStaItwtTeardown }; #define RPC__EVENT__STA_ITWT_TEARDOWN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__event__sta_itwt_teardown__descriptor) \ - , 0, 0, 0 } +, 0, 0, 0 } struct RpcEventStaItwtSuspend @@ -3711,7 +3935,7 @@ struct RpcEventStaItwtSuspend }; #define RPC__EVENT__STA_ITWT_SUSPEND__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__event__sta_itwt_suspend__descriptor) \ - , 0, 0, 0, 0,NULL } +, 0, 0, 0, 0,NULL } struct RpcEventStaItwtProbe @@ -3723,7 +3947,7 @@ struct RpcEventStaItwtProbe }; #define RPC__EVENT__STA_ITWT_PROBE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__event__sta_itwt_probe__descriptor) \ - , 0, 0, 0 } +, 0, 0, 0 } typedef enum { @@ -3794,6 +4018,13 @@ typedef enum { RPC__PAYLOAD_REQ_WIFI_STA_ITWT_GET_FLOW_ID_STATUS = 358, RPC__PAYLOAD_REQ_WIFI_STA_ITWT_SEND_PROBE_REQ = 359, RPC__PAYLOAD_REQ_WIFI_STA_ITWT_SET_TARGET_WAKE_TIME_OFFSET = 360, + RPC__PAYLOAD_REQ_GPIO_CONFIG = 361, + RPC__PAYLOAD_REQ_GPIO_RESET = 362, + RPC__PAYLOAD_REQ_GPIO_SET_LEVEL = 363, + RPC__PAYLOAD_REQ_GPIO_GET_LEVEL = 364, + RPC__PAYLOAD_REQ_GPIO_SET_DIRECTION = 365, + RPC__PAYLOAD_REQ_GPIO_INPUT_ENABLE = 366, + RPC__PAYLOAD_REQ_GPIO_SET_PULL_MODE = 367, RPC__PAYLOAD_RESP_GET_MAC_ADDRESS = 513, RPC__PAYLOAD_RESP_SET_MAC_ADDRESS = 514, RPC__PAYLOAD_RESP_GET_WIFI_MODE = 515, @@ -3860,6 +4091,13 @@ typedef enum { RPC__PAYLOAD_RESP_WIFI_STA_ITWT_GET_FLOW_ID_STATUS = 614, RPC__PAYLOAD_RESP_WIFI_STA_ITWT_SEND_PROBE_REQ = 615, RPC__PAYLOAD_RESP_WIFI_STA_ITWT_SET_TARGET_WAKE_TIME_OFFSET = 616, + RPC__PAYLOAD_RESP_GPIO_CONFIG = 617, + RPC__PAYLOAD_RESP_GPIO_RESET = 618, + RPC__PAYLOAD_RESP_GPIO_SET_LEVEL = 629, + RPC__PAYLOAD_RESP_GPIO_GET_LEVEL = 620, + RPC__PAYLOAD_RESP_GPIO_SET_DIRECTION = 621, + RPC__PAYLOAD_RESP_GPIO_INPUT_ENABLE = 622, + RPC__PAYLOAD_RESP_GPIO_SET_PULL_MODE = 623, RPC__PAYLOAD_EVENT_ESP_INIT = 769, RPC__PAYLOAD_EVENT_HEARTBEAT = 770, RPC__PAYLOAD_EVENT_AP_STA_CONNECTED = 771, @@ -3893,165 +4131,179 @@ struct Rpc uint32_t uid; Rpc__PayloadCase payload_case; union { + RpcEventAPStaConnected *event_ap_sta_connected; + RpcEventAPStaDisconnected *event_ap_sta_disconnected; + RpcEventDhcpDnsStatus *event_dhcp_dns; + /* + ** Notifications * + */ + RpcEventESPInit *event_esp_init; + RpcEventHeartbeat *event_heartbeat; + RpcEventStaConnected *event_sta_connected; + RpcEventStaDisconnected *event_sta_disconnected; + RpcEventStaItwtProbe *event_sta_itwt_probe; + RpcEventStaItwtSetup *event_sta_itwt_setup; + RpcEventStaItwtSuspend *event_sta_itwt_suspend; + RpcEventStaItwtTeardown *event_sta_itwt_teardown; + RpcEventStaScanDone *event_sta_scan_done; + RpcEventWifiEventNoArgs *event_wifi_event_no_args; + RpcReqConfigHeartbeat *req_config_heartbeat; + RpcReqGetCoprocessorFwVersion *req_get_coprocessor_fwversion; + RpcReqGetDhcpDnsStatus *req_get_dhcp_dns; /* ** Requests * */ RpcReqGetMacAddress *req_get_mac_address; - RpcReqSetMacAddress *req_set_mac_address; + RpcReqWifiGetMaxTxPower *req_get_wifi_max_tx_power; RpcReqGetMode *req_get_wifi_mode; - RpcReqSetMode *req_set_wifi_mode; - RpcReqSetPs *req_wifi_set_ps; - RpcReqGetPs *req_wifi_get_ps; + RpcReqGpioConfig *req_gpio_config; + RpcReqGpioGetLevel *req_gpio_get_level; + RpcReqGpioInputEnable *req_gpio_input_enable; + RpcReqGpioReset *req_gpio_reset; + RpcReqGpioSetDirection *req_gpio_set_direction; + RpcReqGpioSetLevel *req_gpio_set_level; + RpcReqGpioSetPullMode *req_gpio_set_pull_mode; RpcReqOTABegin *req_ota_begin; - RpcReqOTAWrite *req_ota_write; RpcReqOTAEnd *req_ota_end; + RpcReqOTAWrite *req_ota_write; + RpcReqSetDhcpDnsStatus *req_set_dhcp_dns; + RpcReqSetMacAddress *req_set_mac_address; RpcReqWifiSetMaxTxPower *req_set_wifi_max_tx_power; - RpcReqWifiGetMaxTxPower *req_get_wifi_max_tx_power; - RpcReqConfigHeartbeat *req_config_heartbeat; - RpcReqWifiInit *req_wifi_init; - RpcReqWifiDeinit *req_wifi_deinit; - RpcReqWifiStart *req_wifi_start; - RpcReqWifiStop *req_wifi_stop; + RpcReqSetMode *req_set_wifi_mode; + RpcReqWifiApGetStaAid *req_wifi_ap_get_sta_aid; + RpcReqWifiApGetStaList *req_wifi_ap_get_sta_list; + RpcReqWifiClearApList *req_wifi_clear_ap_list; + RpcReqWifiClearFastConnect *req_wifi_clear_fast_connect; RpcReqWifiConnect *req_wifi_connect; + RpcReqWifiDeauthSta *req_wifi_deauth_sta; + RpcReqWifiDeinit *req_wifi_deinit; RpcReqWifiDisconnect *req_wifi_disconnect; - RpcReqWifiSetConfig *req_wifi_set_config; + RpcReqWifiGetBand *req_wifi_get_band; + RpcReqWifiGetBandMode *req_wifi_get_bandmode; + RpcReqWifiGetBandwidth *req_wifi_get_bandwidth; + RpcReqWifiGetBandwidths *req_wifi_get_bandwidths; + RpcReqWifiGetChannel *req_wifi_get_channel; RpcReqWifiGetConfig *req_wifi_get_config; - RpcReqWifiScanStart *req_wifi_scan_start; - RpcReqWifiScanStop *req_wifi_scan_stop; + RpcReqWifiGetCountry *req_wifi_get_country; + RpcReqWifiGetCountryCode *req_wifi_get_country_code; + RpcReqWifiGetInactiveTime *req_wifi_get_inactive_time; + RpcReqWifiGetProtocol *req_wifi_get_protocol; + RpcReqWifiGetProtocols *req_wifi_get_protocols; + RpcReqGetPs *req_wifi_get_ps; + RpcReqWifiInit *req_wifi_init; + RpcReqWifiRestore *req_wifi_restore; RpcReqWifiScanGetApNum *req_wifi_scan_get_ap_num; + RpcReqWifiScanGetApRecord *req_wifi_scan_get_ap_record; RpcReqWifiScanGetApRecords *req_wifi_scan_get_ap_records; - RpcReqWifiClearApList *req_wifi_clear_ap_list; - RpcReqWifiRestore *req_wifi_restore; - RpcReqWifiClearFastConnect *req_wifi_clear_fast_connect; - RpcReqWifiDeauthSta *req_wifi_deauth_sta; - RpcReqWifiStaGetApInfo *req_wifi_sta_get_ap_info; - RpcReqWifiSetProtocol *req_wifi_set_protocol; - RpcReqWifiGetProtocol *req_wifi_get_protocol; + RpcReqWifiScanStart *req_wifi_scan_start; + RpcReqWifiScanStop *req_wifi_scan_stop; + RpcReqWifiSetBand *req_wifi_set_band; + RpcReqWifiSetBandMode *req_wifi_set_bandmode; RpcReqWifiSetBandwidth *req_wifi_set_bandwidth; - RpcReqWifiGetBandwidth *req_wifi_get_bandwidth; + RpcReqWifiSetBandwidths *req_wifi_set_bandwidths; RpcReqWifiSetChannel *req_wifi_set_channel; - RpcReqWifiGetChannel *req_wifi_get_channel; + RpcReqWifiSetConfig *req_wifi_set_config; RpcReqWifiSetCountry *req_wifi_set_country; - RpcReqWifiGetCountry *req_wifi_get_country; - RpcReqWifiApGetStaList *req_wifi_ap_get_sta_list; - RpcReqWifiApGetStaAid *req_wifi_ap_get_sta_aid; - RpcReqWifiSetStorage *req_wifi_set_storage; - RpcReqWifiSetInactiveTime *req_wifi_set_inactive_time; - RpcReqWifiGetInactiveTime *req_wifi_get_inactive_time; RpcReqWifiSetCountryCode *req_wifi_set_country_code; - RpcReqWifiGetCountryCode *req_wifi_get_country_code; + RpcReqWifiSetInactiveTime *req_wifi_set_inactive_time; + RpcReqWifiSetProtocol *req_wifi_set_protocol; + RpcReqWifiSetProtocols *req_wifi_set_protocols; + RpcReqSetPs *req_wifi_set_ps; + RpcReqWifiSetStorage *req_wifi_set_storage; RpcReqWifiStaGetAid *req_wifi_sta_get_aid; + RpcReqWifiStaGetApInfo *req_wifi_sta_get_ap_info; RpcReqWifiStaGetNegotiatedPhymode *req_wifi_sta_get_negotiated_phymode; RpcReqWifiStaGetRssi *req_wifi_sta_get_rssi; - RpcReqWifiSetProtocols *req_wifi_set_protocols; - RpcReqWifiGetProtocols *req_wifi_get_protocols; - RpcReqWifiSetBandwidths *req_wifi_set_bandwidths; - RpcReqWifiGetBandwidths *req_wifi_get_bandwidths; - RpcReqWifiSetBand *req_wifi_set_band; - RpcReqWifiGetBand *req_wifi_get_band; - RpcReqWifiSetBandMode *req_wifi_set_bandmode; - RpcReqWifiGetBandMode *req_wifi_get_bandmode; - RpcReqGetCoprocessorFwVersion *req_get_coprocessor_fwversion; - RpcReqWifiScanGetApRecord *req_wifi_scan_get_ap_record; - RpcReqSetDhcpDnsStatus *req_set_dhcp_dns; - RpcReqGetDhcpDnsStatus *req_get_dhcp_dns; - RpcReqWifiStaTwtConfig *req_wifi_sta_twt_config; - RpcReqWifiStaItwtSetup *req_wifi_sta_itwt_setup; - RpcReqWifiStaItwtTeardown *req_wifi_sta_itwt_teardown; - RpcReqWifiStaItwtSuspend *req_wifi_sta_itwt_suspend; RpcReqWifiStaItwtGetFlowIdStatus *req_wifi_sta_itwt_get_flow_id_status; RpcReqWifiStaItwtSendProbeReq *req_wifi_sta_itwt_send_probe_req; RpcReqWifiStaItwtSetTargetWakeTimeOffset *req_wifi_sta_itwt_set_target_wake_time_offset; + RpcReqWifiStaItwtSetup *req_wifi_sta_itwt_setup; + RpcReqWifiStaItwtSuspend *req_wifi_sta_itwt_suspend; + RpcReqWifiStaItwtTeardown *req_wifi_sta_itwt_teardown; + RpcReqWifiStaTwtConfig *req_wifi_sta_twt_config; + RpcReqWifiStart *req_wifi_start; + RpcReqWifiStop *req_wifi_stop; + RpcRespConfigHeartbeat *resp_config_heartbeat; + RpcRespGetCoprocessorFwVersion *resp_get_coprocessor_fwversion; + RpcRespGetDhcpDnsStatus *resp_get_dhcp_dns; /* ** Responses * */ RpcRespGetMacAddress *resp_get_mac_address; - RpcRespSetMacAddress *resp_set_mac_address; + RpcRespWifiGetMaxTxPower *resp_get_wifi_max_tx_power; RpcRespGetMode *resp_get_wifi_mode; - RpcRespSetMode *resp_set_wifi_mode; - RpcRespSetPs *resp_wifi_set_ps; - RpcRespGetPs *resp_wifi_get_ps; + RpcRespGpioConfig *resp_gpio_config; + RpcRespGpioGetLevel *resp_gpio_get_level; + RpcRespGpioInputEnable *resp_gpio_input_enable; + RpcRespGpioResetPin *resp_gpio_reset; + RpcRespGpioSetDirection *resp_gpio_set_direction; + RpcRespGpioSetLevel *resp_gpio_set_level; + RpcRespGpioSetPullMode *resp_gpio_set_pull_mode; RpcRespOTABegin *resp_ota_begin; - RpcRespOTAWrite *resp_ota_write; RpcRespOTAEnd *resp_ota_end; + RpcRespOTAWrite *resp_ota_write; + RpcRespSetDhcpDnsStatus *resp_set_dhcp_dns; + RpcRespSetMacAddress *resp_set_mac_address; RpcRespWifiSetMaxTxPower *resp_set_wifi_max_tx_power; - RpcRespWifiGetMaxTxPower *resp_get_wifi_max_tx_power; - RpcRespConfigHeartbeat *resp_config_heartbeat; - RpcRespWifiInit *resp_wifi_init; - RpcRespWifiDeinit *resp_wifi_deinit; - RpcRespWifiStart *resp_wifi_start; - RpcRespWifiStop *resp_wifi_stop; + RpcRespSetMode *resp_set_wifi_mode; + RpcRespWifiApGetStaAid *resp_wifi_ap_get_sta_aid; + RpcRespWifiApGetStaList *resp_wifi_ap_get_sta_list; + RpcRespWifiClearApList *resp_wifi_clear_ap_list; + RpcRespWifiClearFastConnect *resp_wifi_clear_fast_connect; RpcRespWifiConnect *resp_wifi_connect; + RpcRespWifiDeauthSta *resp_wifi_deauth_sta; + RpcRespWifiDeinit *resp_wifi_deinit; RpcRespWifiDisconnect *resp_wifi_disconnect; - RpcRespWifiSetConfig *resp_wifi_set_config; + RpcRespWifiGetBand *resp_wifi_get_band; + RpcRespWifiGetBandMode *resp_wifi_get_bandmode; + RpcRespWifiGetBandwidth *resp_wifi_get_bandwidth; + RpcRespWifiGetBandwidths *resp_wifi_get_bandwidths; + RpcRespWifiGetChannel *resp_wifi_get_channel; RpcRespWifiGetConfig *resp_wifi_get_config; - RpcRespWifiScanStart *resp_wifi_scan_start; - RpcRespWifiScanStop *resp_wifi_scan_stop; + RpcRespWifiGetCountry *resp_wifi_get_country; + RpcRespWifiGetCountryCode *resp_wifi_get_country_code; + RpcRespWifiGetInactiveTime *resp_wifi_get_inactive_time; + RpcRespWifiGetProtocol *resp_wifi_get_protocol; + RpcRespWifiGetProtocols *resp_wifi_get_protocols; + RpcRespGetPs *resp_wifi_get_ps; + RpcRespWifiInit *resp_wifi_init; + RpcRespWifiRestore *resp_wifi_restore; RpcRespWifiScanGetApNum *resp_wifi_scan_get_ap_num; + RpcRespWifiScanGetApRecord *resp_wifi_scan_get_ap_record; RpcRespWifiScanGetApRecords *resp_wifi_scan_get_ap_records; - RpcRespWifiClearApList *resp_wifi_clear_ap_list; - RpcRespWifiRestore *resp_wifi_restore; - RpcRespWifiClearFastConnect *resp_wifi_clear_fast_connect; - RpcRespWifiDeauthSta *resp_wifi_deauth_sta; - RpcRespWifiStaGetApInfo *resp_wifi_sta_get_ap_info; - RpcRespWifiSetProtocol *resp_wifi_set_protocol; - RpcRespWifiGetProtocol *resp_wifi_get_protocol; + RpcRespWifiScanStart *resp_wifi_scan_start; + RpcRespWifiScanStop *resp_wifi_scan_stop; + RpcRespWifiSetBand *resp_wifi_set_band; + RpcRespWifiSetBandMode *resp_wifi_set_bandmode; RpcRespWifiSetBandwidth *resp_wifi_set_bandwidth; - RpcRespWifiGetBandwidth *resp_wifi_get_bandwidth; + RpcRespWifiSetBandwidths *resp_wifi_set_bandwidths; RpcRespWifiSetChannel *resp_wifi_set_channel; - RpcRespWifiGetChannel *resp_wifi_get_channel; + RpcRespWifiSetConfig *resp_wifi_set_config; RpcRespWifiSetCountry *resp_wifi_set_country; - RpcRespWifiGetCountry *resp_wifi_get_country; - RpcRespWifiApGetStaList *resp_wifi_ap_get_sta_list; - RpcRespWifiApGetStaAid *resp_wifi_ap_get_sta_aid; - RpcRespWifiSetStorage *resp_wifi_set_storage; - RpcRespWifiSetInactiveTime *resp_wifi_set_inactive_time; - RpcRespWifiGetInactiveTime *resp_wifi_get_inactive_time; RpcRespWifiSetCountryCode *resp_wifi_set_country_code; - RpcRespWifiGetCountryCode *resp_wifi_get_country_code; + RpcRespWifiSetInactiveTime *resp_wifi_set_inactive_time; + RpcRespWifiSetProtocol *resp_wifi_set_protocol; + RpcRespWifiSetProtocols *resp_wifi_set_protocols; + RpcRespSetPs *resp_wifi_set_ps; + RpcRespWifiSetStorage *resp_wifi_set_storage; RpcRespWifiStaGetAid *resp_wifi_sta_get_aid; + RpcRespWifiStaGetApInfo *resp_wifi_sta_get_ap_info; RpcRespWifiStaGetNegotiatedPhymode *resp_wifi_sta_get_negotiated_phymode; RpcRespWifiStaGetRssi *resp_wifi_sta_get_rssi; - RpcRespWifiSetProtocols *resp_wifi_set_protocols; - RpcRespWifiGetProtocols *resp_wifi_get_protocols; - RpcRespWifiSetBandwidths *resp_wifi_set_bandwidths; - RpcRespWifiGetBandwidths *resp_wifi_get_bandwidths; - RpcRespWifiSetBand *resp_wifi_set_band; - RpcRespWifiGetBand *resp_wifi_get_band; - RpcRespWifiSetBandMode *resp_wifi_set_bandmode; - RpcRespWifiGetBandMode *resp_wifi_get_bandmode; - RpcRespGetCoprocessorFwVersion *resp_get_coprocessor_fwversion; - RpcRespWifiScanGetApRecord *resp_wifi_scan_get_ap_record; - RpcRespSetDhcpDnsStatus *resp_set_dhcp_dns; - RpcRespGetDhcpDnsStatus *resp_get_dhcp_dns; - RpcRespWifiStaTwtConfig *resp_wifi_sta_twt_config; - RpcRespWifiStaItwtSetup *resp_wifi_sta_itwt_setup; - RpcRespWifiStaItwtTeardown *resp_wifi_sta_itwt_teardown; - RpcRespWifiStaItwtSuspend *resp_wifi_sta_itwt_suspend; RpcRespWifiStaItwtGetFlowIdStatus *resp_wifi_sta_itwt_get_flow_id_status; RpcRespWifiStaItwtSendProbeReq *resp_wifi_sta_itwt_send_probe_req; RpcRespWifiStaItwtSetTargetWakeTimeOffset *resp_wifi_sta_itwt_set_target_wake_time_offset; - /* - ** Notifications * - */ - RpcEventESPInit *event_esp_init; - RpcEventHeartbeat *event_heartbeat; - RpcEventAPStaConnected *event_ap_sta_connected; - RpcEventAPStaDisconnected *event_ap_sta_disconnected; - RpcEventWifiEventNoArgs *event_wifi_event_no_args; - RpcEventStaScanDone *event_sta_scan_done; - RpcEventStaConnected *event_sta_connected; - RpcEventStaDisconnected *event_sta_disconnected; - RpcEventDhcpDnsStatus *event_dhcp_dns; - RpcEventStaItwtSetup *event_sta_itwt_setup; - RpcEventStaItwtTeardown *event_sta_itwt_teardown; - RpcEventStaItwtSuspend *event_sta_itwt_suspend; - RpcEventStaItwtProbe *event_sta_itwt_probe; + RpcRespWifiStaItwtSetup *resp_wifi_sta_itwt_setup; + RpcRespWifiStaItwtSuspend *resp_wifi_sta_itwt_suspend; + RpcRespWifiStaItwtTeardown *resp_wifi_sta_itwt_teardown; + RpcRespWifiStaTwtConfig *resp_wifi_sta_twt_config; + RpcRespWifiStart *resp_wifi_start; + RpcRespWifiStop *resp_wifi_stop; }; }; #define RPC__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__descriptor) \ - , RPC_TYPE__MsgType_Invalid, RPC_ID__MsgId_Invalid, 0, RPC__PAYLOAD__NOT_SET, {0} } +, RPC_TYPE__MsgType_Invalid, RPC_ID__MsgId_Invalid, 0, RPC__PAYLOAD__NOT_SET, {0} } /* WifiInitConfig methods */ @@ -7607,6 +7859,291 @@ RpcEventStaDisconnected * void rpc__event__sta_disconnected__free_unpacked (RpcEventStaDisconnected *message, ProtobufCAllocator *allocator); +/* RpcGpioConfig methods */ +void rpc__gpio_config__init + (RpcGpioConfig *message); +size_t rpc__gpio_config__get_packed_size + (const RpcGpioConfig *message); +size_t rpc__gpio_config__pack + (const RpcGpioConfig *message, + uint8_t *out); +size_t rpc__gpio_config__pack_to_buffer + (const RpcGpioConfig *message, + ProtobufCBuffer *buffer); +RpcGpioConfig * + rpc__gpio_config__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__gpio_config__free_unpacked + (RpcGpioConfig *message, + ProtobufCAllocator *allocator); +/* RpcReqGpioConfig methods */ +void rpc__req__gpio_config__init + (RpcReqGpioConfig *message); +size_t rpc__req__gpio_config__get_packed_size + (const RpcReqGpioConfig *message); +size_t rpc__req__gpio_config__pack + (const RpcReqGpioConfig *message, + uint8_t *out); +size_t rpc__req__gpio_config__pack_to_buffer + (const RpcReqGpioConfig *message, + ProtobufCBuffer *buffer); +RpcReqGpioConfig * + rpc__req__gpio_config__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__gpio_config__free_unpacked + (RpcReqGpioConfig *message, + ProtobufCAllocator *allocator); +/* RpcRespGpioConfig methods */ +void rpc__resp__gpio_config__init + (RpcRespGpioConfig *message); +size_t rpc__resp__gpio_config__get_packed_size + (const RpcRespGpioConfig *message); +size_t rpc__resp__gpio_config__pack + (const RpcRespGpioConfig *message, + uint8_t *out); +size_t rpc__resp__gpio_config__pack_to_buffer + (const RpcRespGpioConfig *message, + ProtobufCBuffer *buffer); +RpcRespGpioConfig * + rpc__resp__gpio_config__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__gpio_config__free_unpacked + (RpcRespGpioConfig *message, + ProtobufCAllocator *allocator); +/* RpcReqGpioReset methods */ +void rpc__req__gpio_reset__init + (RpcReqGpioReset *message); +size_t rpc__req__gpio_reset__get_packed_size + (const RpcReqGpioReset *message); +size_t rpc__req__gpio_reset__pack + (const RpcReqGpioReset *message, + uint8_t *out); +size_t rpc__req__gpio_reset__pack_to_buffer + (const RpcReqGpioReset *message, + ProtobufCBuffer *buffer); +RpcReqGpioReset * + rpc__req__gpio_reset__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__gpio_reset__free_unpacked + (RpcReqGpioReset *message, + ProtobufCAllocator *allocator); +/* RpcRespGpioResetPin methods */ +void rpc__resp__gpio_reset_pin__init + (RpcRespGpioResetPin *message); +size_t rpc__resp__gpio_reset_pin__get_packed_size + (const RpcRespGpioResetPin *message); +size_t rpc__resp__gpio_reset_pin__pack + (const RpcRespGpioResetPin *message, + uint8_t *out); +size_t rpc__resp__gpio_reset_pin__pack_to_buffer + (const RpcRespGpioResetPin *message, + ProtobufCBuffer *buffer); +RpcRespGpioResetPin * + rpc__resp__gpio_reset_pin__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__gpio_reset_pin__free_unpacked + (RpcRespGpioResetPin *message, + ProtobufCAllocator *allocator); +/* RpcReqGpioSetLevel methods */ +void rpc__req__gpio_set_level__init + (RpcReqGpioSetLevel *message); +size_t rpc__req__gpio_set_level__get_packed_size + (const RpcReqGpioSetLevel *message); +size_t rpc__req__gpio_set_level__pack + (const RpcReqGpioSetLevel *message, + uint8_t *out); +size_t rpc__req__gpio_set_level__pack_to_buffer + (const RpcReqGpioSetLevel *message, + ProtobufCBuffer *buffer); +RpcReqGpioSetLevel * + rpc__req__gpio_set_level__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__gpio_set_level__free_unpacked + (RpcReqGpioSetLevel *message, + ProtobufCAllocator *allocator); +/* RpcRespGpioSetLevel methods */ +void rpc__resp__gpio_set_level__init + (RpcRespGpioSetLevel *message); +size_t rpc__resp__gpio_set_level__get_packed_size + (const RpcRespGpioSetLevel *message); +size_t rpc__resp__gpio_set_level__pack + (const RpcRespGpioSetLevel *message, + uint8_t *out); +size_t rpc__resp__gpio_set_level__pack_to_buffer + (const RpcRespGpioSetLevel *message, + ProtobufCBuffer *buffer); +RpcRespGpioSetLevel * + rpc__resp__gpio_set_level__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__gpio_set_level__free_unpacked + (RpcRespGpioSetLevel *message, + ProtobufCAllocator *allocator); +/* RpcReqGpioGetLevel methods */ +void rpc__req__gpio_get_level__init + (RpcReqGpioGetLevel *message); +size_t rpc__req__gpio_get_level__get_packed_size + (const RpcReqGpioGetLevel *message); +size_t rpc__req__gpio_get_level__pack + (const RpcReqGpioGetLevel *message, + uint8_t *out); +size_t rpc__req__gpio_get_level__pack_to_buffer + (const RpcReqGpioGetLevel *message, + ProtobufCBuffer *buffer); +RpcReqGpioGetLevel * + rpc__req__gpio_get_level__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__gpio_get_level__free_unpacked + (RpcReqGpioGetLevel *message, + ProtobufCAllocator *allocator); +/* RpcRespGpioGetLevel methods */ +void rpc__resp__gpio_get_level__init + (RpcRespGpioGetLevel *message); +size_t rpc__resp__gpio_get_level__get_packed_size + (const RpcRespGpioGetLevel *message); +size_t rpc__resp__gpio_get_level__pack + (const RpcRespGpioGetLevel *message, + uint8_t *out); +size_t rpc__resp__gpio_get_level__pack_to_buffer + (const RpcRespGpioGetLevel *message, + ProtobufCBuffer *buffer); +RpcRespGpioGetLevel * + rpc__resp__gpio_get_level__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__gpio_get_level__free_unpacked + (RpcRespGpioGetLevel *message, + ProtobufCAllocator *allocator); +/* RpcReqGpioSetDirection methods */ +void rpc__req__gpio_set_direction__init + (RpcReqGpioSetDirection *message); +size_t rpc__req__gpio_set_direction__get_packed_size + (const RpcReqGpioSetDirection *message); +size_t rpc__req__gpio_set_direction__pack + (const RpcReqGpioSetDirection *message, + uint8_t *out); +size_t rpc__req__gpio_set_direction__pack_to_buffer + (const RpcReqGpioSetDirection *message, + ProtobufCBuffer *buffer); +RpcReqGpioSetDirection * + rpc__req__gpio_set_direction__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__gpio_set_direction__free_unpacked + (RpcReqGpioSetDirection *message, + ProtobufCAllocator *allocator); +/* RpcRespGpioSetDirection methods */ +void rpc__resp__gpio_set_direction__init + (RpcRespGpioSetDirection *message); +size_t rpc__resp__gpio_set_direction__get_packed_size + (const RpcRespGpioSetDirection *message); +size_t rpc__resp__gpio_set_direction__pack + (const RpcRespGpioSetDirection *message, + uint8_t *out); +size_t rpc__resp__gpio_set_direction__pack_to_buffer + (const RpcRespGpioSetDirection *message, + ProtobufCBuffer *buffer); +RpcRespGpioSetDirection * + rpc__resp__gpio_set_direction__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__gpio_set_direction__free_unpacked + (RpcRespGpioSetDirection *message, + ProtobufCAllocator *allocator); +/* RpcReqGpioInputEnable methods */ +void rpc__req__gpio_input_enable__init + (RpcReqGpioInputEnable *message); +size_t rpc__req__gpio_input_enable__get_packed_size + (const RpcReqGpioInputEnable *message); +size_t rpc__req__gpio_input_enable__pack + (const RpcReqGpioInputEnable *message, + uint8_t *out); +size_t rpc__req__gpio_input_enable__pack_to_buffer + (const RpcReqGpioInputEnable *message, + ProtobufCBuffer *buffer); +RpcReqGpioInputEnable * + rpc__req__gpio_input_enable__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__gpio_input_enable__free_unpacked + (RpcReqGpioInputEnable *message, + ProtobufCAllocator *allocator); +/* RpcRespGpioInputEnable methods */ +void rpc__resp__gpio_input_enable__init + (RpcRespGpioInputEnable *message); +size_t rpc__resp__gpio_input_enable__get_packed_size + (const RpcRespGpioInputEnable *message); +size_t rpc__resp__gpio_input_enable__pack + (const RpcRespGpioInputEnable *message, + uint8_t *out); +size_t rpc__resp__gpio_input_enable__pack_to_buffer + (const RpcRespGpioInputEnable *message, + ProtobufCBuffer *buffer); +RpcRespGpioInputEnable * + rpc__resp__gpio_input_enable__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__gpio_input_enable__free_unpacked + (RpcRespGpioInputEnable *message, + ProtobufCAllocator *allocator); +/* RpcReqGpioSetPullMode methods */ +void rpc__req__gpio_set_pull_mode__init + (RpcReqGpioSetPullMode *message); +size_t rpc__req__gpio_set_pull_mode__get_packed_size + (const RpcReqGpioSetPullMode *message); +size_t rpc__req__gpio_set_pull_mode__pack + (const RpcReqGpioSetPullMode *message, + uint8_t *out); +size_t rpc__req__gpio_set_pull_mode__pack_to_buffer + (const RpcReqGpioSetPullMode *message, + ProtobufCBuffer *buffer); +RpcReqGpioSetPullMode * + rpc__req__gpio_set_pull_mode__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__gpio_set_pull_mode__free_unpacked + (RpcReqGpioSetPullMode *message, + ProtobufCAllocator *allocator); +/* RpcRespGpioSetPullMode methods */ +void rpc__resp__gpio_set_pull_mode__init + (RpcRespGpioSetPullMode *message); +size_t rpc__resp__gpio_set_pull_mode__get_packed_size + (const RpcRespGpioSetPullMode *message); +size_t rpc__resp__gpio_set_pull_mode__pack + (const RpcRespGpioSetPullMode *message, + uint8_t *out); +size_t rpc__resp__gpio_set_pull_mode__pack_to_buffer + (const RpcRespGpioSetPullMode *message, + ProtobufCBuffer *buffer); +RpcRespGpioSetPullMode * + rpc__resp__gpio_set_pull_mode__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__gpio_set_pull_mode__free_unpacked + (RpcRespGpioSetPullMode *message, + ProtobufCAllocator *allocator); /* RpcEventDhcpDnsStatus methods */ void rpc__event__dhcp_dns_status__init (RpcEventDhcpDnsStatus *message); @@ -8284,6 +8821,51 @@ typedef void (*RpcEventStaConnected_Closure) typedef void (*RpcEventStaDisconnected_Closure) (const RpcEventStaDisconnected *message, void *closure_data); +typedef void (*RpcGpioConfig_Closure) + (const RpcGpioConfig *message, + void *closure_data); +typedef void (*RpcReqGpioConfig_Closure) + (const RpcReqGpioConfig *message, + void *closure_data); +typedef void (*RpcRespGpioConfig_Closure) + (const RpcRespGpioConfig *message, + void *closure_data); +typedef void (*RpcReqGpioReset_Closure) + (const RpcReqGpioReset *message, + void *closure_data); +typedef void (*RpcRespGpioResetPin_Closure) + (const RpcRespGpioResetPin *message, + void *closure_data); +typedef void (*RpcReqGpioSetLevel_Closure) + (const RpcReqGpioSetLevel *message, + void *closure_data); +typedef void (*RpcRespGpioSetLevel_Closure) + (const RpcRespGpioSetLevel *message, + void *closure_data); +typedef void (*RpcReqGpioGetLevel_Closure) + (const RpcReqGpioGetLevel *message, + void *closure_data); +typedef void (*RpcRespGpioGetLevel_Closure) + (const RpcRespGpioGetLevel *message, + void *closure_data); +typedef void (*RpcReqGpioSetDirection_Closure) + (const RpcReqGpioSetDirection *message, + void *closure_data); +typedef void (*RpcRespGpioSetDirection_Closure) + (const RpcRespGpioSetDirection *message, + void *closure_data); +typedef void (*RpcReqGpioInputEnable_Closure) + (const RpcReqGpioInputEnable *message, + void *closure_data); +typedef void (*RpcRespGpioInputEnable_Closure) + (const RpcRespGpioInputEnable *message, + void *closure_data); +typedef void (*RpcReqGpioSetPullMode_Closure) + (const RpcReqGpioSetPullMode *message, + void *closure_data); +typedef void (*RpcRespGpioSetPullMode_Closure) + (const RpcRespGpioSetPullMode *message, + void *closure_data); typedef void (*RpcEventDhcpDnsStatus_Closure) (const RpcEventDhcpDnsStatus *message, void *closure_data); @@ -8314,6 +8896,8 @@ extern const ProtobufCEnumDescriptor rpc__wifi_sec_prot__descriptor; extern const ProtobufCEnumDescriptor rpc__status__descriptor; extern const ProtobufCEnumDescriptor rpc_type__descriptor; extern const ProtobufCEnumDescriptor rpc_id__descriptor; +extern const ProtobufCEnumDescriptor rpc__gpio_mode__descriptor; +extern const ProtobufCEnumDescriptor rpc__gpio_pull_mode__descriptor; extern const ProtobufCMessageDescriptor wifi_init_config__descriptor; extern const ProtobufCMessageDescriptor wifi_country__descriptor; extern const ProtobufCMessageDescriptor wifi_active_scan_time__descriptor; @@ -8501,6 +9085,21 @@ extern const ProtobufCMessageDescriptor rpc__event__ap__sta_connected__descripto extern const ProtobufCMessageDescriptor rpc__event__sta_scan_done__descriptor; extern const ProtobufCMessageDescriptor rpc__event__sta_connected__descriptor; extern const ProtobufCMessageDescriptor rpc__event__sta_disconnected__descriptor; +extern const ProtobufCMessageDescriptor rpc__gpio_config__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__gpio_config__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__gpio_config__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__gpio_reset__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__gpio_reset_pin__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__gpio_set_level__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__gpio_set_level__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__gpio_get_level__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__gpio_get_level__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__gpio_set_direction__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__gpio_set_direction__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__gpio_input_enable__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__gpio_input_enable__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__gpio_set_pull_mode__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__gpio_set_pull_mode__descriptor; extern const ProtobufCMessageDescriptor rpc__event__dhcp_dns_status__descriptor; extern const ProtobufCMessageDescriptor rpc__event__sta_itwt_setup__descriptor; extern const ProtobufCMessageDescriptor rpc__event__sta_itwt_teardown__descriptor; diff --git a/common/proto/esp_hosted_rpc.proto b/common/proto/esp_hosted_rpc.proto index 19e72e76..30948611 100644 --- a/common/proto/esp_hosted_rpc.proto +++ b/common/proto/esp_hosted_rpc.proto @@ -425,9 +425,16 @@ enum RpcId { Req_WifiStaItwtSendProbeReq = 359; //0x167 Req_WifiStaItwtSetTargetWakeTimeOffset = 360; //0x168 + Req_GpioConfig = 361; // 0x169 + Req_GpioResetPin = 362; // 0x16a + Req_GpioSetLevel = 363; // 0x16b + Req_GpioGetLevel = 364; // 0x16c + Req_GpioSetDirection = 365; // 0x16d + Req_GpioInputEnable = 366; // 0x16e + Req_GpioSetPullMode = 367; // 0x16f /* Add new control path command response before Req_Max * and update Req_Max */ - Req_Max = 361; //0x169 + Req_Max = 368; //0x170 /** Response Msgs **/ Resp_Base = 512; @@ -562,9 +569,17 @@ enum RpcId { Resp_WifiStaItwtSendProbeReq = 615; Resp_WifiStaItwtSetTargetWakeTimeOffset = 616; + Resp_GpioConfig = 617; + Resp_GpioResetPin = 618; + Resp_GpioSetLevel = 619; + Resp_GpioGetLevel = 620; + Resp_GpioSetDirection = 621; + Resp_GpioInputEnable = 622; + Resp_GpioSetPullMode = 623; + /* Add new control path command response before Resp_Max * and update Resp_Max */ - Resp_Max = 617; + Resp_Max = 624; /** Event Msgs **/ Event_Base = 768; @@ -1764,6 +1779,80 @@ message Rpc_Event_StaDisconnected { wifi_event_sta_disconnected sta_disconnected = 2; } +enum Rpc_GpioMode { + GPIO_MODE_DISABLE = 0; + GPIO_MODE_INPUT = 1; + GPIO_MODE_OUTPUT = 2; + GPIO_MODE_INPUT_OUTPUT = 3; +} + +enum Rpc_GpioPullMode { + GPIO_PULL_NONE = 0; + GPIO_PULL_UP = 1; + GPIO_PULL_DOWN = 2; +} + +message Rpc_GpioConfig { + uint64 pin_bit_mask = 1; + Rpc_GpioMode mode = 2; + bool pull_up_en = 3; + bool pull_down_en = 4; + int32 intr_type = 5; +} + +message Rpc_Req_GpioConfig { + Rpc_GpioConfig config = 1; +} +message Rpc_Resp_GpioConfig { + int32 resp = 1; +} + +message Rpc_Req_GpioReset { + int32 gpio_num = 1; +} +message Rpc_Resp_GpioResetPin { + int32 resp = 1; +} + +message Rpc_Req_GpioSetLevel { + int32 gpio_num = 1; + uint32 level = 2; // 0 or 1 +} +message Rpc_Resp_GpioSetLevel { + int32 resp = 1; +} + +message Rpc_Req_GpioGetLevel { + int32 gpio_num = 1; +} +message Rpc_Resp_GpioGetLevel { + int32 resp = 1; + uint32 level = 2; +} + +message Rpc_Req_GpioSetDirection { + int32 gpio_num = 1; + Rpc_GpioMode mode = 2; +} +message Rpc_Resp_GpioSetDirection { + int32 resp = 1; +} + +message Rpc_Req_GpioInputEnable { + int32 gpio_num = 1; +} +message Rpc_Resp_GpioInputEnable { + int32 resp = 1; +} + +message Rpc_Req_GpioSetPullMode { + int32 gpio_num = 1; + Rpc_GpioPullMode pull = 2; +} +message Rpc_Resp_GpioSetPullMode { + int32 resp = 1; +} + message Rpc_Event_DhcpDnsStatus { int32 iface = 1; int32 net_link_up = 2; @@ -1914,6 +2003,14 @@ message Rpc { Rpc_Req_WifiStaItwtSendProbeReq req_wifi_sta_itwt_send_probe_req = 359; Rpc_Req_WifiStaItwtSetTargetWakeTimeOffset req_wifi_sta_itwt_set_target_wake_time_offset = 360; + Rpc_Req_GpioConfig req_gpio_config = 361; + Rpc_Req_GpioReset req_gpio_reset = 362; + Rpc_Req_GpioSetLevel req_gpio_set_level = 363; + Rpc_Req_GpioGetLevel req_gpio_get_level = 364; + Rpc_Req_GpioSetDirection req_gpio_set_direction = 365; + Rpc_Req_GpioInputEnable req_gpio_input_enable = 366; + Rpc_Req_GpioSetPullMode req_gpio_set_pull_mode = 367; + /** Responses **/ Rpc_Resp_GetMacAddress resp_get_mac_address = 513; Rpc_Resp_SetMacAddress resp_set_mac_address = 514; @@ -2009,6 +2106,15 @@ message Rpc { Rpc_Resp_WifiStaItwtSendProbeReq resp_wifi_sta_itwt_send_probe_req = 615; Rpc_Resp_WifiStaItwtSetTargetWakeTimeOffset resp_wifi_sta_itwt_set_target_wake_time_offset = 616; + Rpc_Resp_GpioConfig resp_gpio_config = 617; + Rpc_Resp_GpioResetPin resp_gpio_reset = 618; + Rpc_Resp_GpioSetLevel resp_gpio_set_level = 629; + Rpc_Resp_GpioGetLevel resp_gpio_get_level = 620; + Rpc_Resp_GpioSetDirection resp_gpio_set_direction = 621; + Rpc_Resp_GpioInputEnable resp_gpio_input_enable = 622; + Rpc_Resp_GpioSetPullMode resp_gpio_set_pull_mode = 623; + + /** Notifications **/ Rpc_Event_ESPInit event_esp_init = 769; Rpc_Event_Heartbeat event_heartbeat = 770; From 09ef2798a34b4d60ff4e6784102ed76c7e51423d Mon Sep 17 00:00:00 2001 From: YoussefTarkhan Date: Thu, 28 Aug 2025 11:56:54 +0200 Subject: [PATCH 079/114] host/rpc: add GPIO request/response plumbing + wrappers --- host/drivers/rpc/core/rpc_req.c | 49 +++++++++++ host/drivers/rpc/core/rpc_rsp.c | 29 +++++++ host/drivers/rpc/slaveif/rpc_slave_if.c | 43 ++++++++++ host/drivers/rpc/slaveif/rpc_slave_if.h | 34 ++++++++ host/drivers/rpc/wrap/rpc_wrap.c | 103 +++++++++++++++++++++++- host/drivers/rpc/wrap/rpc_wrap.h | 10 +++ 6 files changed, 267 insertions(+), 1 deletion(-) diff --git a/host/drivers/rpc/core/rpc_req.c b/host/drivers/rpc/core/rpc_req.c index 3ef47ecc..d1dc5ac0 100644 --- a/host/drivers/rpc/core/rpc_req.c +++ b/host/drivers/rpc/core/rpc_req.c @@ -617,6 +617,55 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) RPC_REQ_COPY_STR(p_c->dhcp_gw, p_a->dhcp_gw, 64); RPC_REQ_COPY_STR(p_c->dns_ip, p_a->dns_ip, 64); break; + } case RPC_ID__Req_GpioConfig: { + RPC_ALLOC_ASSIGN(RpcReqGpioConfig, req_gpio_config, + rpc__req__gpio_config__init); + RPC_ALLOC_ELEMENT(RpcGpioConfig, req_payload->config, rpc__gpio_config__init); + + req_payload->config->pin_bit_mask = app_req->u.gpio_config.pin_bit_mask; + req_payload->config->intr_type = app_req->u.gpio_config.intr_type; + req_payload->config->mode = app_req->u.gpio_config.mode; + req_payload->config->pull_up_en = app_req->u.gpio_config.pull_up_en; + req_payload->config->pull_down_en = app_req->u.gpio_config.pull_down_en; + break; + } case RPC_ID__Req_GpioResetPin: { + RPC_ALLOC_ASSIGN(RpcReqGpioReset, req_gpio_reset, + rpc__req__gpio_reset__init); + req_payload->gpio_num = app_req->u.gpio_num; + break; + } case RPC_ID__Req_GpioSetLevel: { + RPC_ALLOC_ASSIGN(RpcReqGpioSetLevel, req_gpio_set_level, + rpc__req__gpio_set_level__init); + + req_payload->gpio_num = app_req->u.gpio_set_level.gpio_num; + req_payload->level = app_req->u.gpio_set_level.level; + break; + } case RPC_ID__Req_GpioGetLevel: { + RPC_ALLOC_ASSIGN(RpcReqGpioGetLevel, req_gpio_get_level, + rpc__req__gpio_get_level__init); + + req_payload->gpio_num = app_req->u.gpio_num; + break; + } case RPC_ID__Req_GpioSetDirection: { + RPC_ALLOC_ASSIGN(RpcReqGpioSetDirection, req_gpio_set_direction, + rpc__req__gpio_set_direction__init); + + req_payload->gpio_num = app_req->u.gpio_set_direction.gpio_num; + req_payload->mode = app_req->u.gpio_set_direction.mode; + break; + } case RPC_ID__Req_GpioInputEnable: { + RPC_ALLOC_ASSIGN(RpcReqGpioInputEnable, req_gpio_input_enable, + rpc__req__gpio_input_enable__init); + + req_payload->gpio_num = app_req->u.gpio_num; + break; + } case RPC_ID__Req_GpioSetPullMode: { + RPC_ALLOC_ASSIGN(RpcReqGpioSetPullMode, req_gpio_set_pull_mode, + rpc__req__gpio_set_pull_mode__init); + + req_payload->gpio_num = app_req->u.gpio_set_pull_mode.gpio_num; + req_payload->pull = app_req->u.gpio_set_pull_mode.pull_mode; + break; } default: { *failure_status = RPC_ERR_UNSUPPORTED_MSG; ESP_LOGE(TAG, "Unsupported RPC Req[%u]",req->msg_id); diff --git a/host/drivers/rpc/core/rpc_rsp.c b/host/drivers/rpc/core/rpc_rsp.c index 435c8373..5d3b4e26 100644 --- a/host/drivers/rpc/core/rpc_rsp.c +++ b/host/drivers/rpc/core/rpc_rsp.c @@ -681,6 +681,35 @@ int rpc_parse_rsp(Rpc *rpc_msg, ctrl_cmd_t *app_resp) RPC_FAIL_ON_NULL(resp_set_dhcp_dns); RPC_ERR_IN_RESP(resp_set_dhcp_dns); break; + } case RPC_ID__Resp_GpioConfig: { + RPC_FAIL_ON_NULL(resp_gpio_config); + RPC_ERR_IN_RESP(resp_gpio_config); + break; + } case RPC_ID__Resp_GpioResetPin: { + RPC_FAIL_ON_NULL(resp_gpio_reset); + RPC_ERR_IN_RESP(resp_gpio_reset); + break; + } case RPC_ID__Resp_GpioSetLevel: { + RPC_FAIL_ON_NULL(resp_gpio_set_level); + RPC_ERR_IN_RESP(resp_gpio_set_level); + break; + } case RPC_ID__Resp_GpioGetLevel: { + RPC_FAIL_ON_NULL(resp_gpio_get_level); + RPC_ERR_IN_RESP(resp_gpio_get_level); + app_resp->u.gpio_get_level = rpc_msg->resp_gpio_get_level->level; + break; + } case RPC_ID__Resp_GpioSetDirection: { + RPC_FAIL_ON_NULL(resp_gpio_set_direction); + RPC_ERR_IN_RESP(resp_gpio_set_direction); + break; + } case RPC_ID__Resp_GpioInputEnable: { + RPC_FAIL_ON_NULL(resp_gpio_input_enable); + RPC_ERR_IN_RESP(resp_gpio_input_enable); + break; + } case RPC_ID__Resp_GpioSetPullMode: { + RPC_FAIL_ON_NULL(resp_gpio_set_pull_mode); + RPC_ERR_IN_RESP(resp_gpio_set_pull_mode); + break; } default: { ESP_LOGE(TAG, "Unsupported rpc Resp[%u]", rpc_msg->msg_id); goto fail_parse_rpc_msg; diff --git a/host/drivers/rpc/slaveif/rpc_slave_if.c b/host/drivers/rpc/slaveif/rpc_slave_if.c index a3837bba..b1354b28 100644 --- a/host/drivers/rpc/slaveif/rpc_slave_if.c +++ b/host/drivers/rpc/slaveif/rpc_slave_if.c @@ -396,6 +396,7 @@ ctrl_cmd_t * rpc_slaveif_get_coprocessor_fwversion(ctrl_cmd_t *req) RPC_DECODE_RSP_IF_NOT_ASYNC(); } + #if H_WIFI_DUALBAND_SUPPORT ctrl_cmd_t * rpc_slaveif_wifi_get_protocols(ctrl_cmd_t *req) { @@ -445,3 +446,45 @@ ctrl_cmd_t * rpc_slaveif_set_slave_dhcp_dns_status(ctrl_cmd_t *req) RPC_SEND_REQ(RPC_ID__Req_SetDhcpDnsStatus); RPC_DECODE_RSP_IF_NOT_ASYNC(); } + +ctrl_cmd_t * rpc_slaveif_gpio_config(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_GpioConfig); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_gpio_reset_pin(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_GpioResetPin); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_gpio_set_level(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_GpioSetLevel); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_gpio_get_level(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_GpioGetLevel); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_gpio_set_direction(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_GpioSetDirection); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_gpio_input_enable(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_GpioInputEnable); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_gpio_set_pull_mode(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_GpioSetPullMode); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} diff --git a/host/drivers/rpc/slaveif/rpc_slave_if.h b/host/drivers/rpc/slaveif/rpc_slave_if.h index d7986ed8..06866da0 100644 --- a/host/drivers/rpc/slaveif/rpc_slave_if.h +++ b/host/drivers/rpc/slaveif/rpc_slave_if.h @@ -201,6 +201,21 @@ typedef struct { int32_t wifi_event_id; } event_wifi_simple_t; +typedef struct { + gpio_num_t gpio_num; + uint32_t level; +} rpc_gpio_set_level_t; + +typedef struct { + gpio_num_t gpio_num; + gpio_mode_t mode; +} rpc_gpio_set_direction_t; + +typedef struct { + gpio_num_t gpio_num; + gpio_pull_mode_t pull_mode; +} rpc_gpio_set_pull_mode_t; + typedef struct Ctrl_cmd_t { /* msg type could be 1. req 2. resp 3. notification */ uint8_t msg_type; @@ -315,6 +330,18 @@ typedef struct Ctrl_cmd_t { wifi_event_sta_itwt_probe_t e_wifi_sta_itwt_probe; #endif + + gpio_config_t gpio_config; + + gpio_num_t gpio_num; + + rpc_gpio_set_level_t gpio_set_level; + + int gpio_get_level; + + rpc_gpio_set_direction_t gpio_set_direction; + + rpc_gpio_set_pull_mode_t gpio_set_pull_mode; }u; /* By default this callback is set to NULL. @@ -530,6 +557,13 @@ ctrl_cmd_t * rpc_slaveif_wifi_sta_itwt_suspend(ctrl_cmd_t *req); ctrl_cmd_t * rpc_slaveif_wifi_sta_itwt_get_flow_id_status(ctrl_cmd_t *req); ctrl_cmd_t * rpc_slaveif_wifi_sta_itwt_send_probe_req(ctrl_cmd_t *req); ctrl_cmd_t * rpc_slaveif_wifi_sta_itwt_set_target_wake_time_offset(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_gpio_config(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_gpio_reset_pin(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_gpio_set_level(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_gpio_get_level(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_gpio_set_direction(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_gpio_input_enable(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_gpio_set_pull_mode(ctrl_cmd_t *req); #ifdef __cplusplus } #endif diff --git a/host/drivers/rpc/wrap/rpc_wrap.c b/host/drivers/rpc/wrap/rpc_wrap.c index b934af60..c861ea19 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.c +++ b/host/drivers/rpc/wrap/rpc_wrap.c @@ -545,7 +545,15 @@ int rpc_rsp_callback(ctrl_cmd_t * app_resp) case RPC_ID__Resp_WifiStaItwtSendProbeReq: case RPC_ID__Resp_WifiStaItwtSetTargetWakeTimeOffset: #endif // H_WIFI_HE_SUPPORT - case RPC_ID__Resp_GetCoprocessorFwVersion: { + case RPC_ID__Resp_GetCoprocessorFwVersion: + case RPC_ID__Resp_GpioConfig: + case RPC_ID__Resp_GpioResetPin: + case RPC_ID__Resp_GpioSetLevel: + case RPC_ID__Resp_GpioGetLevel: + case RPC_ID__Resp_GpioSetDirection: + case RPC_ID__Resp_GpioInputEnable: + case RPC_ID__Resp_GpioSetPullMode: + { /* Intended fallthrough */ break; } default: { @@ -1608,3 +1616,96 @@ esp_err_t rpc_set_dhcp_dns_status(wifi_interface_t ifx, uint8_t link_up, resp = rpc_slaveif_set_slave_dhcp_dns_status(req); return rpc_rsp_callback(resp); } + +esp_err_t rpc_gpio_config(const gpio_config_t *pGPIOConfig) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + if (!pGPIOConfig) + return FAILURE; + + g_h.funcs->_h_memcpy(&req->u.gpio_config, pGPIOConfig, sizeof(gpio_config_t)); + resp = rpc_slaveif_gpio_config(req); + + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_gpio_reset(gpio_num_t gpio_num) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + req->u.gpio_num = gpio_num; + resp = rpc_slaveif_gpio_reset_pin(req); + + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_gpio_set_level(gpio_num_t gpio_num, uint32_t level) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + req->u.gpio_set_level.gpio_num = gpio_num; + req->u.gpio_set_level.level = level; + + resp = rpc_slaveif_gpio_set_level(req); + return rpc_rsp_callback(resp); +} + +int rpc_gpio_get_level(gpio_num_t gpio_num, int *level) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + req->u.gpio_num = gpio_num; + resp = rpc_slaveif_gpio_get_level(req); + + if (resp && resp->resp_event_status == SUCCESS) { + *level = resp->u.gpio_get_level; + } + + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_gpio_set_direction(gpio_num_t gpio_num, gpio_mode_t mode) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + req->u.gpio_set_direction.gpio_num = gpio_num; + req->u.gpio_set_direction.mode = mode; + + resp = rpc_slaveif_gpio_set_direction(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_gpio_input_enable(gpio_num_t gpio_num) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + req->u.gpio_num = gpio_num; + resp = rpc_slaveif_gpio_input_enable(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_gpio_set_pull_mode(gpio_num_t gpio_num, gpio_pull_mode_t pull_mode) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + req->u.gpio_set_pull_mode.gpio_num = gpio_num; + req->u.gpio_set_pull_mode.pull_mode = pull_mode; + + resp = rpc_slaveif_gpio_set_pull_mode(req); + return rpc_rsp_callback(resp); +} diff --git a/host/drivers/rpc/wrap/rpc_wrap.h b/host/drivers/rpc/wrap/rpc_wrap.h index 58f9d17d..9936b59e 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.h +++ b/host/drivers/rpc/wrap/rpc_wrap.h @@ -14,6 +14,7 @@ extern "C" { /** Includes **/ #include "esp_wifi.h" +#include "driver/gpio.h" #include "port_esp_hosted_host_wifi_config.h" #include "esp_hosted_api_types.h" #include "esp_hosted_ota.h" @@ -106,6 +107,15 @@ esp_err_t rpc_set_dhcp_dns_status(wifi_interface_t interface, uint8_t link_up, uint8_t dhcp_up, char *dhcp_ip, char *dhcp_nm, char *dhcp_gw, uint8_t dns_up, char *dns_ip, uint8_t dns_type); +esp_err_t rpc_gpio_config(const gpio_config_t *pGPIOConfig); +esp_err_t rpc_gpio_reset_pin(gpio_num_t gpio_num); +esp_err_t rpc_gpio_set_level(gpio_num_t gpio_num, uint32_t level); +int rpc_gpio_get_level(gpio_num_t gpio_num, int *level); +esp_err_t rpc_gpio_set_direction(gpio_num_t gpio_num, gpio_mode_t mode); +esp_err_t rpc_gpio_input_enable(gpio_num_t gpio_num); +esp_err_t rpc_gpio_set_pull_mode(gpio_num_t gpio_num, gpio_pull_mode_t pull); + + #ifdef __cplusplus } #endif From 5fc2f3eaa318675fb32bac54089651f11850ccec Mon Sep 17 00:00:00 2001 From: YoussefTarkhan Date: Thu, 28 Aug 2025 12:21:52 +0200 Subject: [PATCH 080/114] slave_control.c --- slave/main/slave_control.c | 143 +++++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) diff --git a/slave/main/slave_control.c b/slave/main/slave_control.c index d12985c4..d26ee23d 100644 --- a/slave/main/slave_control.c +++ b/slave/main/slave_control.c @@ -19,6 +19,7 @@ #include "slave_wifi_config.h" #include "esp_hosted_log.h" #include "esp_hosted_coprocessor_fw_ver.h" +#include "driver/gpio.h" #if CONFIG_SOC_WIFI_HE_SUPPORT #include "esp_wifi_he.h" @@ -2834,6 +2835,120 @@ static esp_err_t req_wifi_sta_itwt_set_target_wake_time_offset(Rpc *req, Rpc *re } #endif // CONFIG_SOC_WIFI_HE_SUPPORT +static esp_err_t req_gpio_config(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespGpioConfig, resp_gpio_config, + RpcReqGpioConfig, req_gpio_config, + rpc__resp__gpio_config__init); + + gpio_config_t config; + + config.mode = req_payload->config->mode; + config.pull_up_en = req_payload->config->pull_up_en; + config.pull_down_en = req_payload->config->pull_down_en; + config.intr_type = req_payload->config->intr_type; + config.pin_bit_mask = req_payload->config->pin_bit_mask; + + RPC_RET_FAIL_IF(gpio_config(&config)); + + return ESP_OK; +} + +static esp_err_t req_gpio_reset(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespGpioResetPin, resp_gpio_reset, + RpcReqGpioReset, req_gpio_reset, + rpc__resp__gpio_reset_pin__init); + + gpio_num_t gpio_num; + gpio_num = req_payload->gpio_num; + + RPC_RET_FAIL_IF(gpio_reset_pin(gpio_num)); + + return ESP_OK; +} + +static esp_err_t req_gpio_set_level(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespGpioSetLevel, resp_gpio_set_level, + RpcReqGpioSetLevel, req_gpio_set_level, + rpc__resp__gpio_set_level__init); + + gpio_num_t gpio_num; + gpio_num = req_payload->gpio_num; + + uint32_t level; + level = req_payload->level; + + RPC_RET_FAIL_IF(gpio_set_level(gpio_num, level)); + + return ESP_OK; +} + +static esp_err_t req_gpio_get_level(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespGpioGetLevel, resp_gpio_get_level, + RpcReqGpioGetLevel, req_gpio_get_level, + rpc__resp__gpio_get_level__init); + + gpio_num_t gpio_num; + gpio_num = req_payload->gpio_num; + + int level = gpio_get_level(gpio_num); + + resp_payload->level = level; + + return ESP_OK; +} + +static esp_err_t req_gpio_set_direction(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespGpioSetDirection, resp_gpio_set_direction, + RpcReqGpioSetDirection, req_gpio_set_direction, + rpc__resp__gpio_set_direction__init); + + gpio_num_t gpio_num; + gpio_num = req_payload->gpio_num; + + gpio_mode_t mode; + mode = req_payload->mode; + + RPC_RET_FAIL_IF(gpio_set_direction(gpio_num, mode)); + + return ESP_OK; +} + +static esp_err_t req_gpio_input_enable(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespGpioInputEnable, resp_gpio_input_enable, + RpcReqGpioInputEnable, req_gpio_input_enable, + rpc__resp__gpio_input_enable__init); + + gpio_num_t gpio_num; + gpio_num = req_payload->gpio_num; + + RPC_RET_FAIL_IF(gpio_input_enable(gpio_num)); + + return ESP_OK; +} + +static esp_err_t req_gpio_set_pull_mode(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespGpioSetPullMode, resp_gpio_set_pull_mode, + RpcReqGpioSetPullMode, req_gpio_set_pull_mode, + rpc__resp__gpio_set_pull_mode__init); + + gpio_num_t gpio_num; + gpio_num = req_payload->gpio_num; + + gpio_pull_mode_t pull_mode; + pull_mode = req_payload->pull; + + RPC_RET_FAIL_IF(gpio_set_pull_mode(gpio_num, pull_mode)); + + return ESP_OK; +} + static esp_rpc_req_t req_table[] = { { .req_num = RPC_ID__Req_GetMACAddress , @@ -3103,6 +3218,34 @@ static esp_rpc_req_t req_table[] = { .command_handler = req_wifi_sta_itwt_set_target_wake_time_offset }, #endif // CONFIG_SOC_WIFI_HE_SUPPORT + { + .req_num = RPC_ID__Req_GpioConfig, + .command_handler = req_gpio_config + }, + { + .req_num = RPC_ID__Req_GpioResetPin, + .command_handler = req_gpio_reset + }, + { + .req_num = RPC_ID__Req_GpioSetLevel, + .command_handler = req_gpio_set_level + }, + { + .req_num = RPC_ID__Req_GpioGetLevel, + .command_handler = req_gpio_get_level + }, + { + .req_num = RPC_ID__Req_GpioSetDirection, + .command_handler = req_gpio_set_direction + }, + { + .req_num = RPC_ID__Req_GpioInputEnable, + .command_handler = req_gpio_input_enable + }, + { + .req_num = RPC_ID__Req_GpioSetPullMode, + .command_handler = req_gpio_set_pull_mode + } }; From a2d3e07adf5cdd72362e40b3e722541871180524 Mon Sep 17 00:00:00 2001 From: YoussefTarkhan Date: Fri, 29 Aug 2025 15:20:36 +0200 Subject: [PATCH 081/114] + #include "driver/gpio.h" in rpc_slave_if.h --- host/drivers/rpc/slaveif/rpc_slave_if.h | 1 + 1 file changed, 1 insertion(+) diff --git a/host/drivers/rpc/slaveif/rpc_slave_if.h b/host/drivers/rpc/slaveif/rpc_slave_if.h index 06866da0..abedd908 100644 --- a/host/drivers/rpc/slaveif/rpc_slave_if.h +++ b/host/drivers/rpc/slaveif/rpc_slave_if.h @@ -12,6 +12,7 @@ #include "esp_hosted_rpc.pb-c.h" #include "esp_wifi.h" #include "esp_wifi_types.h" +#include "driver/gpio.h" #include "port_esp_hosted_host_wifi_config.h" #ifdef __cplusplus From 0544bbca46e39e3030397004d9b1462f003f9c9c Mon Sep 17 00:00:00 2001 From: YoussefTarkhan Date: Fri, 29 Aug 2025 15:25:52 +0200 Subject: [PATCH 082/114] +transport_gpio_pin_guard --- slave/main/CMakeLists.txt | 1 + slave/main/transport_gpio_pin_guard.c | 72 +++++++++++++++++++++++++++ slave/main/transport_gpio_pin_guard.h | 14 ++++++ 3 files changed, 87 insertions(+) create mode 100644 slave/main/transport_gpio_pin_guard.c create mode 100644 slave/main/transport_gpio_pin_guard.h diff --git a/slave/main/CMakeLists.txt b/slave/main/CMakeLists.txt index e98e0648..147735a6 100644 --- a/slave/main/CMakeLists.txt +++ b/slave/main/CMakeLists.txt @@ -16,6 +16,7 @@ set(COMPONENT_SRCS "mempool_ll.c" "host_power_save.c" "lwip_filter.c" + "transport_gpio_pin_guard.c" ) set(COMPONENT_ADD_INCLUDEDIRS diff --git a/slave/main/transport_gpio_pin_guard.c b/slave/main/transport_gpio_pin_guard.c new file mode 100644 index 00000000..13473570 --- /dev/null +++ b/slave/main/transport_gpio_pin_guard.c @@ -0,0 +1,72 @@ +#include "transport_gpio_pin_guard.h" +#include "sdkconfig.h" + +static inline void add_pin(uint64_t *mask, int pin) +{ + if (pin >= 0 && pin < GPIO_NUM_MAX) { + *mask |= (1ULL << pin); + } +} + +static uint64_t get_reserved_pin_mask(void) +{ + static bool initialized = false; + static uint64_t mask = 0; + + if (initialized) return mask; + initialized = true; + + /* ---------- SDIO ---------- */ +#ifdef CONFIG_ESP_SDIO_HOST_INTERFACE + add_pin(&mask, CONFIG_ESP_SDIO_PIN_CMD); + add_pin(&mask, CONFIG_ESP_SDIO_PIN_CLK); + add_pin(&mask, CONFIG_ESP_SDIO_PIN_D0); + add_pin(&mask, CONFIG_ESP_SDIO_PIN_D1); + add_pin(&mask, CONFIG_ESP_SDIO_PIN_D2); + add_pin(&mask, CONFIG_ESP_SDIO_PIN_D3); +#endif + + /* ---------- SPI (full duplex) ---------- */ +#ifdef CONFIG_ESP_SPI_HOST_INTERFACE + add_pin(&mask, CONFIG_ESP_SPI_GPIO_MOSI); + add_pin(&mask, CONFIG_ESP_SPI_GPIO_MISO); + add_pin(&mask, CONFIG_ESP_SPI_GPIO_CLK); + add_pin(&mask, CONFIG_ESP_SPI_GPIO_CS); + add_pin(&mask, CONFIG_ESP_SPI_GPIO_HANDSHAKE); + add_pin(&mask, CONFIG_ESP_SPI_GPIO_DATA_READY); + add_pin(&mask, CONFIG_ESP_SPI_GPIO_RESET); + + add_pin(&mask, CONFIG_ESP_SPI_HSPI_GPIO_MOSI); + add_pin(&mask, CONFIG_ESP_SPI_HSPI_GPIO_MISO); + add_pin(&mask, CONFIG_ESP_SPI_HSPI_GPIO_CLK); + add_pin(&mask, CONFIG_ESP_SPI_HSPI_GPIO_CS); +#endif + + /* ---------- SPI (half duplex) ---------- */ +#ifdef CONFIG_ESP_SPI_HD_HOST_INTERFACE + add_pin(&mask, CONFIG_ESP_SPI_HD_GPIO_CS); + add_pin(&mask, CONFIG_ESP_SPI_HD_GPIO_CLK); + add_pin(&mask, CONFIG_ESP_SPI_HD_GPIO_D0); + add_pin(&mask, CONFIG_ESP_SPI_HD_GPIO_D1); + add_pin(&mask, CONFIG_ESP_SPI_HD_GPIO_D2); + add_pin(&mask, CONFIG_ESP_SPI_HD_GPIO_D3); + add_pin(&mask, CONFIG_ESP_SPI_HD_GPIO_DATA_READY); + add_pin(&mask, CONFIG_ESP_SPI_HD_GPIO_RESET); +#endif + + /* ---------- UART ---------- */ +#ifdef CONFIG_ESP_UART_HOST_INTERFACE + add_pin(&mask, CONFIG_ESP_UART_PIN_TX); + add_pin(&mask, CONFIG_ESP_UART_PIN_RX); + add_pin(&mask, CONFIG_ESP_UART_GPIO_RESET); +#endif + + return mask; +} + +uint8_t transport_gpio_pin_guard_is_eligible(gpio_num_t pin) +{ + if (pin < 0 || pin >= GPIO_NUM_MAX) return false; + uint64_t reserved = get_reserved_pin_mask(); + return ((reserved & (1ULL << pin)) == 0); +} diff --git a/slave/main/transport_gpio_pin_guard.h b/slave/main/transport_gpio_pin_guard.h new file mode 100644 index 00000000..b2738f6d --- /dev/null +++ b/slave/main/transport_gpio_pin_guard.h @@ -0,0 +1,14 @@ +#pragma once + +#include "driver/gpio.h" +#include + +/** + * @brief Check if a GPIO pin is free for general use. + * + * @param pin GPIO number to test + * @return true Pin is free (eligible for GPIO) + * false Pin is reserved by a host transport interface + */ +uint8_t transport_gpio_pin_guard_is_eligible(gpio_num_t pin); + From 47a5b554faccea9bb5dc2a1ea55490bbf51332aa Mon Sep 17 00:00:00 2001 From: YoussefTarkhan Date: Fri, 29 Aug 2025 15:27:23 +0200 Subject: [PATCH 083/114] + Controlled esp_hosted_gpio exposure with Kconfig --- slave/main/Kconfig.projbuild | 11 +++++++- slave/main/slave_control.c | 55 ++++++++++++++++++++++++++++++++++-- 2 files changed, 63 insertions(+), 3 deletions(-) diff --git a/slave/main/Kconfig.projbuild b/slave/main/Kconfig.projbuild index ef987edf..6e10f2e8 100644 --- a/slave/main/Kconfig.projbuild +++ b/slave/main/Kconfig.projbuild @@ -646,7 +646,16 @@ menu "Example Configuration" default ESP_SDIO_GPIO_RESET if ESP_SDIO_HOST_INTERFACE default ESP_SPI_HD_GPIO_RESET if ESP_SPI_HD_HOST_INTERFACE default ESP_UART_GPIO_RESET if ESP_UART_HOST_INTERFACE - + menu "Hosted GPIO" + config ESP_HOSTED_ENABLE_GPIO_RPC + bool "Expose GPIO RPC APIs (host can control slave GPIOs)" + default n + help + Enable RPC methods that allow the HOST MCU to configure and control + GPIOs on the SLAVE. Leave disabled unless you really need it. This + will additionally reject GPIO requests that target pins used by the + active transport (SPI/SDIO/SPI-HD/UART) + endmenu endmenu # HCI UART menu for ESP32-C3/S3 diff --git a/slave/main/slave_control.c b/slave/main/slave_control.c index d26ee23d..69b4c637 100644 --- a/slave/main/slave_control.c +++ b/slave/main/slave_control.c @@ -20,6 +20,7 @@ #include "esp_hosted_log.h" #include "esp_hosted_coprocessor_fw_ver.h" #include "driver/gpio.h" +#include "transport_gpio_pin_guard.h" #if CONFIG_SOC_WIFI_HE_SUPPORT #include "esp_wifi_he.h" @@ -2835,6 +2836,7 @@ static esp_err_t req_wifi_sta_itwt_set_target_wake_time_offset(Rpc *req, Rpc *re } #endif // CONFIG_SOC_WIFI_HE_SUPPORT +#if CONFIG_ESP_HOSTED_ENABLE_GPIO_RPC static esp_err_t req_gpio_config(Rpc *req, Rpc *resp, void *priv_data) { RPC_TEMPLATE(RpcRespGpioConfig, resp_gpio_config, @@ -2849,6 +2851,16 @@ static esp_err_t req_gpio_config(Rpc *req, Rpc *resp, void *priv_data) config.intr_type = req_payload->config->intr_type; config.pin_bit_mask = req_payload->config->pin_bit_mask; + for (int pin = 0; pin < GPIO_NUM_MAX; ++pin) { + if (config.pin_bit_mask & (1ULL << pin)) { + if (!transport_gpio_pin_guard_is_eligible((gpio_num_t)pin)) { + ESP_LOGE(TAG, "GPIO pin %d is not allowed to be configured", pin);; + resp_payload->resp = ESP_ERR_INVALID_ARG; + return ESP_OK; + } + } + } + RPC_RET_FAIL_IF(gpio_config(&config)); return ESP_OK; @@ -2863,6 +2875,12 @@ static esp_err_t req_gpio_reset(Rpc *req, Rpc *resp, void *priv_data) gpio_num_t gpio_num; gpio_num = req_payload->gpio_num; + if (!transport_gpio_pin_guard_is_eligible(gpio_num)) { + ESP_LOGE(TAG, "GPIO pin %d is not allowed to be configured", gpio_num); + resp_payload->resp = ESP_ERR_INVALID_ARG; + return ESP_OK; + } + RPC_RET_FAIL_IF(gpio_reset_pin(gpio_num)); return ESP_OK; @@ -2880,6 +2898,12 @@ static esp_err_t req_gpio_set_level(Rpc *req, Rpc *resp, void *priv_data) uint32_t level; level = req_payload->level; + if (!transport_gpio_pin_guard_is_eligible(gpio_num)) { + ESP_LOGE(TAG, "GPIO pin %d is not allowed to be configured", gpio_num); + resp_payload->resp = ESP_ERR_INVALID_ARG; + return ESP_OK; + } + RPC_RET_FAIL_IF(gpio_set_level(gpio_num, level)); return ESP_OK; @@ -2894,6 +2918,12 @@ static esp_err_t req_gpio_get_level(Rpc *req, Rpc *resp, void *priv_data) gpio_num_t gpio_num; gpio_num = req_payload->gpio_num; + if (!transport_gpio_pin_guard_is_eligible(gpio_num)) { + ESP_LOGE(TAG, "GPIO pin %d is not allowed to be configured", gpio_num); + resp_payload->resp = ESP_ERR_INVALID_ARG; + return ESP_OK; + } + int level = gpio_get_level(gpio_num); resp_payload->level = level; @@ -2913,6 +2943,12 @@ static esp_err_t req_gpio_set_direction(Rpc *req, Rpc *resp, void *priv_data) gpio_mode_t mode; mode = req_payload->mode; + if (!transport_gpio_pin_guard_is_eligible(gpio_num)) { + ESP_LOGE(TAG, "GPIO pin %d is not allowed to be configured", gpio_num); + resp_payload->resp = ESP_ERR_INVALID_ARG; + return ESP_OK; + } + RPC_RET_FAIL_IF(gpio_set_direction(gpio_num, mode)); return ESP_OK; @@ -2927,6 +2963,12 @@ static esp_err_t req_gpio_input_enable(Rpc *req, Rpc *resp, void *priv_data) gpio_num_t gpio_num; gpio_num = req_payload->gpio_num; + if (!transport_gpio_pin_guard_is_eligible(gpio_num)) { + ESP_LOGE(TAG, "GPIO pin %d is not allowed to be configured", gpio_num); + resp_payload->resp = ESP_ERR_INVALID_ARG; + return ESP_OK; + } + RPC_RET_FAIL_IF(gpio_input_enable(gpio_num)); return ESP_OK; @@ -2944,10 +2986,17 @@ static esp_err_t req_gpio_set_pull_mode(Rpc *req, Rpc *resp, void *priv_data) gpio_pull_mode_t pull_mode; pull_mode = req_payload->pull; + if (!transport_gpio_pin_guard_is_eligible(gpio_num)) { + ESP_LOGE(TAG, "GPIO pin %d is not allowed to be configured", gpio_num); + resp_payload->resp = ESP_ERR_INVALID_ARG; + return ESP_OK; + } + RPC_RET_FAIL_IF(gpio_set_pull_mode(gpio_num, pull_mode)); return ESP_OK; } +#endif // CONFIG_ESP_HOSTED_ENABLE_GPIO_RPC static esp_rpc_req_t req_table[] = { { @@ -3218,6 +3267,7 @@ static esp_rpc_req_t req_table[] = { .command_handler = req_wifi_sta_itwt_set_target_wake_time_offset }, #endif // CONFIG_SOC_WIFI_HE_SUPPORT +#if CONFIG_ESP_HOSTED_ENABLE_GPIO_RPC { .req_num = RPC_ID__Req_GpioConfig, .command_handler = req_gpio_config @@ -3245,13 +3295,14 @@ static esp_rpc_req_t req_table[] = { { .req_num = RPC_ID__Req_GpioSetPullMode, .command_handler = req_gpio_set_pull_mode - } + }, +#endif // CONFIG_ESP_HOSTED_ENABLE_GPIO_RPC }; static int lookup_req_handler(int req_id) { - for (int i = 0; i < sizeof(req_table)/sizeof(esp_rpc_req_t); i++) { + for (int i = 0; i < sizeof(req_table)/sizeof(esp_rpc_req_t); i++) { if (req_table[i].req_num == req_id) { return i; } From be57682a3a095f27e617844ce7cb20526e3730ec Mon Sep 17 00:00:00 2001 From: YoussefTarkhan Date: Fri, 29 Aug 2025 15:29:11 +0200 Subject: [PATCH 084/114] added port_esp_hosted_host_gpio.c to CMakeLists --- CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0800e4e9..ce86743f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -70,7 +70,8 @@ if(CONFIG_ESP_HOSTED_ENABLED) # host ESP32 specific files list(APPEND srcs "${host_dir}/port/esp/freertos/src/port_esp_hosted_host_ota.c") - + list(APPEND srcs "${host_dir}/port/esp/freertos/src/port_esp_hosted_host_gpio.c") + # cli list(APPEND srcs "${common_dir}/utils/esp_hosted_cli.c") list(APPEND priv_include "${common_dir}/utils") From 97dc207b06a369ade52ec9ef25faa5c247ab209c Mon Sep 17 00:00:00 2001 From: YoussefTarkhan Date: Tue, 2 Sep 2025 10:45:37 +0200 Subject: [PATCH 085/114] =?UTF-8?q?rebuilt=20with=20protobuf-c=20version?= =?UTF-8?q?=E2=80=AF1.4.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/proto/esp_hosted_rpc.pb-c.c | 324 +++++++------- common/proto/esp_hosted_rpc.pb-c.h | 666 ++++++++++++++--------------- 2 files changed, 495 insertions(+), 495 deletions(-) diff --git a/common/proto/esp_hosted_rpc.pb-c.c b/common/proto/esp_hosted_rpc.pb-c.c index a44bfbdd..5272c4cc 100644 --- a/common/proto/esp_hosted_rpc.pb-c.c +++ b/common/proto/esp_hosted_rpc.pb-c.c @@ -11016,7 +11016,7 @@ static const ProtobufCFieldDescriptor wifi_config__field_descriptors[2] = offsetof(WifiConfig, ap), &wifi_ap_config__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -11028,7 +11028,7 @@ static const ProtobufCFieldDescriptor wifi_config__field_descriptors[2] = offsetof(WifiConfig, sta), &wifi_sta_config__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; @@ -20206,7 +20206,7 @@ static const ProtobufCFieldDescriptor rpc__event__sta_itwt_suspend__field_descri offsetof(RpcEventStaItwtSuspend, actual_suspend_time_ms), NULL, NULL, - PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; @@ -20347,7 +20347,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_get_mac_address), &rpc__req__get_mac_address__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20359,7 +20359,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_set_mac_address), &rpc__req__set_mac_address__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20371,7 +20371,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_get_wifi_mode), &rpc__req__get_mode__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20383,7 +20383,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_set_wifi_mode), &rpc__req__set_mode__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20395,7 +20395,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_set_ps), &rpc__req__set_ps__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20407,7 +20407,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_get_ps), &rpc__req__get_ps__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20419,7 +20419,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_ota_begin), &rpc__req__otabegin__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20431,7 +20431,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_ota_write), &rpc__req__otawrite__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20443,7 +20443,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_ota_end), &rpc__req__otaend__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20455,7 +20455,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_set_wifi_max_tx_power), &rpc__req__wifi_set_max_tx_power__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20467,7 +20467,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_get_wifi_max_tx_power), &rpc__req__wifi_get_max_tx_power__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20479,7 +20479,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_config_heartbeat), &rpc__req__config_heartbeat__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20491,7 +20491,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_init), &rpc__req__wifi_init__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20503,7 +20503,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_deinit), &rpc__req__wifi_deinit__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20515,7 +20515,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_start), &rpc__req__wifi_start__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20527,7 +20527,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_stop), &rpc__req__wifi_stop__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20539,7 +20539,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_connect), &rpc__req__wifi_connect__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20551,7 +20551,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_disconnect), &rpc__req__wifi_disconnect__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20563,7 +20563,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_set_config), &rpc__req__wifi_set_config__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20575,7 +20575,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_get_config), &rpc__req__wifi_get_config__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20587,7 +20587,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_scan_start), &rpc__req__wifi_scan_start__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20599,7 +20599,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_scan_stop), &rpc__req__wifi_scan_stop__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20611,7 +20611,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_scan_get_ap_num), &rpc__req__wifi_scan_get_ap_num__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20623,7 +20623,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_scan_get_ap_records), &rpc__req__wifi_scan_get_ap_records__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20635,7 +20635,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_clear_ap_list), &rpc__req__wifi_clear_ap_list__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20647,7 +20647,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_restore), &rpc__req__wifi_restore__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20659,7 +20659,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_clear_fast_connect), &rpc__req__wifi_clear_fast_connect__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20671,7 +20671,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_deauth_sta), &rpc__req__wifi_deauth_sta__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20683,7 +20683,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_sta_get_ap_info), &rpc__req__wifi_sta_get_ap_info__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20695,7 +20695,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_set_protocol), &rpc__req__wifi_set_protocol__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20707,7 +20707,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_get_protocol), &rpc__req__wifi_get_protocol__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20719,7 +20719,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_set_bandwidth), &rpc__req__wifi_set_bandwidth__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20731,7 +20731,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_get_bandwidth), &rpc__req__wifi_get_bandwidth__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20743,7 +20743,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_set_channel), &rpc__req__wifi_set_channel__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20755,7 +20755,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_get_channel), &rpc__req__wifi_get_channel__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20767,7 +20767,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_set_country), &rpc__req__wifi_set_country__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20779,7 +20779,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_get_country), &rpc__req__wifi_get_country__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20791,7 +20791,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_ap_get_sta_list), &rpc__req__wifi_ap_get_sta_list__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20803,7 +20803,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_ap_get_sta_aid), &rpc__req__wifi_ap_get_sta_aid__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20815,7 +20815,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_set_storage), &rpc__req__wifi_set_storage__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20827,7 +20827,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_set_inactive_time), &rpc__req__wifi_set_inactive_time__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20839,7 +20839,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_get_inactive_time), &rpc__req__wifi_get_inactive_time__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20851,7 +20851,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_set_country_code), &rpc__req__wifi_set_country_code__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20863,7 +20863,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_get_country_code), &rpc__req__wifi_get_country_code__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20875,7 +20875,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_sta_get_aid), &rpc__req__wifi_sta_get_aid__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20887,7 +20887,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_sta_get_negotiated_phymode), &rpc__req__wifi_sta_get_negotiated_phymode__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20899,7 +20899,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_sta_get_rssi), &rpc__req__wifi_sta_get_rssi__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20911,7 +20911,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_set_protocols), &rpc__req__wifi_set_protocols__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20923,7 +20923,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_get_protocols), &rpc__req__wifi_get_protocols__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20935,7 +20935,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_set_bandwidths), &rpc__req__wifi_set_bandwidths__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20947,7 +20947,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_get_bandwidths), &rpc__req__wifi_get_bandwidths__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20959,7 +20959,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_set_band), &rpc__req__wifi_set_band__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20971,7 +20971,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_get_band), &rpc__req__wifi_get_band__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20983,7 +20983,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_set_bandmode), &rpc__req__wifi_set_band_mode__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -20995,7 +20995,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_get_bandmode), &rpc__req__wifi_get_band_mode__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21007,7 +21007,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_get_coprocessor_fwversion), &rpc__req__get_coprocessor_fw_version__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21019,7 +21019,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_scan_get_ap_record), &rpc__req__wifi_scan_get_ap_record__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21031,7 +21031,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_set_dhcp_dns), &rpc__req__set_dhcp_dns_status__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21043,7 +21043,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_get_dhcp_dns), &rpc__req__get_dhcp_dns_status__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21055,7 +21055,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_sta_twt_config), &rpc__req__wifi_sta_twt_config__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21067,7 +21067,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_sta_itwt_setup), &rpc__req__wifi_sta_itwt_setup__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21079,7 +21079,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_sta_itwt_teardown), &rpc__req__wifi_sta_itwt_teardown__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21091,7 +21091,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_sta_itwt_suspend), &rpc__req__wifi_sta_itwt_suspend__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21103,7 +21103,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_sta_itwt_get_flow_id_status), &rpc__req__wifi_sta_itwt_get_flow_id_status__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21115,7 +21115,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_sta_itwt_send_probe_req), &rpc__req__wifi_sta_itwt_send_probe_req__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21127,7 +21127,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_wifi_sta_itwt_set_target_wake_time_offset), &rpc__req__wifi_sta_itwt_set_target_wake_time_offset__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21139,7 +21139,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_gpio_config), &rpc__req__gpio_config__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21151,7 +21151,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_gpio_reset), &rpc__req__gpio_reset__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21163,7 +21163,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_gpio_set_level), &rpc__req__gpio_set_level__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21175,7 +21175,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_gpio_get_level), &rpc__req__gpio_get_level__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21187,7 +21187,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_gpio_set_direction), &rpc__req__gpio_set_direction__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21199,7 +21199,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_gpio_input_enable), &rpc__req__gpio_input_enable__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21211,7 +21211,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, req_gpio_set_pull_mode), &rpc__req__gpio_set_pull_mode__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21223,7 +21223,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_get_mac_address), &rpc__resp__get_mac_address__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21235,7 +21235,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_set_mac_address), &rpc__resp__set_mac_address__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21247,7 +21247,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_get_wifi_mode), &rpc__resp__get_mode__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21259,7 +21259,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_set_wifi_mode), &rpc__resp__set_mode__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21271,7 +21271,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_set_ps), &rpc__resp__set_ps__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21283,7 +21283,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_get_ps), &rpc__resp__get_ps__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21295,7 +21295,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_ota_begin), &rpc__resp__otabegin__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21307,7 +21307,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_ota_write), &rpc__resp__otawrite__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21319,7 +21319,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_ota_end), &rpc__resp__otaend__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21331,7 +21331,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_set_wifi_max_tx_power), &rpc__resp__wifi_set_max_tx_power__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21343,7 +21343,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_get_wifi_max_tx_power), &rpc__resp__wifi_get_max_tx_power__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21355,7 +21355,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_config_heartbeat), &rpc__resp__config_heartbeat__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21367,7 +21367,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_init), &rpc__resp__wifi_init__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21379,7 +21379,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_deinit), &rpc__resp__wifi_deinit__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21391,7 +21391,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_start), &rpc__resp__wifi_start__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21403,7 +21403,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_stop), &rpc__resp__wifi_stop__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21415,7 +21415,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_connect), &rpc__resp__wifi_connect__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21427,7 +21427,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_disconnect), &rpc__resp__wifi_disconnect__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21439,7 +21439,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_set_config), &rpc__resp__wifi_set_config__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21451,7 +21451,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_get_config), &rpc__resp__wifi_get_config__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21463,7 +21463,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_scan_start), &rpc__resp__wifi_scan_start__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21475,7 +21475,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_scan_stop), &rpc__resp__wifi_scan_stop__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21487,7 +21487,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_scan_get_ap_num), &rpc__resp__wifi_scan_get_ap_num__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21499,7 +21499,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_scan_get_ap_records), &rpc__resp__wifi_scan_get_ap_records__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21511,7 +21511,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_clear_ap_list), &rpc__resp__wifi_clear_ap_list__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21523,7 +21523,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_restore), &rpc__resp__wifi_restore__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21535,7 +21535,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_clear_fast_connect), &rpc__resp__wifi_clear_fast_connect__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21547,7 +21547,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_deauth_sta), &rpc__resp__wifi_deauth_sta__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21559,7 +21559,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_sta_get_ap_info), &rpc__resp__wifi_sta_get_ap_info__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21571,7 +21571,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_set_protocol), &rpc__resp__wifi_set_protocol__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21583,7 +21583,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_get_protocol), &rpc__resp__wifi_get_protocol__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21595,7 +21595,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_set_bandwidth), &rpc__resp__wifi_set_bandwidth__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21607,7 +21607,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_get_bandwidth), &rpc__resp__wifi_get_bandwidth__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21619,7 +21619,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_set_channel), &rpc__resp__wifi_set_channel__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21631,7 +21631,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_get_channel), &rpc__resp__wifi_get_channel__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21643,7 +21643,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_set_country), &rpc__resp__wifi_set_country__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21655,7 +21655,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_get_country), &rpc__resp__wifi_get_country__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21667,7 +21667,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_ap_get_sta_list), &rpc__resp__wifi_ap_get_sta_list__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21679,7 +21679,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_ap_get_sta_aid), &rpc__resp__wifi_ap_get_sta_aid__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21691,7 +21691,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_set_storage), &rpc__resp__wifi_set_storage__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21703,7 +21703,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_set_inactive_time), &rpc__resp__wifi_set_inactive_time__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21715,7 +21715,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_get_inactive_time), &rpc__resp__wifi_get_inactive_time__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21727,7 +21727,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_set_country_code), &rpc__resp__wifi_set_country_code__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21739,7 +21739,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_get_country_code), &rpc__resp__wifi_get_country_code__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21751,7 +21751,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_sta_get_aid), &rpc__resp__wifi_sta_get_aid__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21763,7 +21763,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_sta_get_negotiated_phymode), &rpc__resp__wifi_sta_get_negotiated_phymode__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21775,7 +21775,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_sta_get_rssi), &rpc__resp__wifi_sta_get_rssi__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21787,7 +21787,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_set_protocols), &rpc__resp__wifi_set_protocols__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21799,7 +21799,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_get_protocols), &rpc__resp__wifi_get_protocols__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21811,7 +21811,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_set_bandwidths), &rpc__resp__wifi_set_bandwidths__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21823,7 +21823,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_get_bandwidths), &rpc__resp__wifi_get_bandwidths__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21835,7 +21835,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_set_band), &rpc__resp__wifi_set_band__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21847,7 +21847,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_get_band), &rpc__resp__wifi_get_band__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21859,7 +21859,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_set_bandmode), &rpc__resp__wifi_set_band_mode__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21871,7 +21871,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_get_bandmode), &rpc__resp__wifi_get_band_mode__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21883,7 +21883,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_get_coprocessor_fwversion), &rpc__resp__get_coprocessor_fw_version__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21895,7 +21895,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_scan_get_ap_record), &rpc__resp__wifi_scan_get_ap_record__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21907,7 +21907,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_set_dhcp_dns), &rpc__resp__set_dhcp_dns_status__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21919,7 +21919,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_get_dhcp_dns), &rpc__resp__get_dhcp_dns_status__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21931,7 +21931,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_sta_twt_config), &rpc__resp__wifi_sta_twt_config__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21943,7 +21943,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_sta_itwt_setup), &rpc__resp__wifi_sta_itwt_setup__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21955,7 +21955,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_sta_itwt_teardown), &rpc__resp__wifi_sta_itwt_teardown__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21967,7 +21967,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_sta_itwt_suspend), &rpc__resp__wifi_sta_itwt_suspend__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21979,7 +21979,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_sta_itwt_get_flow_id_status), &rpc__resp__wifi_sta_itwt_get_flow_id_status__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -21991,7 +21991,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_sta_itwt_send_probe_req), &rpc__resp__wifi_sta_itwt_send_probe_req__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -22003,7 +22003,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_wifi_sta_itwt_set_target_wake_time_offset), &rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -22015,7 +22015,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_gpio_config), &rpc__resp__gpio_config__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -22027,7 +22027,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_gpio_reset), &rpc__resp__gpio_reset_pin__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -22039,7 +22039,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_gpio_get_level), &rpc__resp__gpio_get_level__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -22051,7 +22051,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_gpio_set_direction), &rpc__resp__gpio_set_direction__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -22063,7 +22063,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_gpio_input_enable), &rpc__resp__gpio_input_enable__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -22075,7 +22075,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_gpio_set_pull_mode), &rpc__resp__gpio_set_pull_mode__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -22087,7 +22087,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, resp_gpio_set_level), &rpc__resp__gpio_set_level__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -22099,7 +22099,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, event_esp_init), &rpc__event__espinit__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -22111,7 +22111,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, event_heartbeat), &rpc__event__heartbeat__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -22123,7 +22123,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, event_ap_sta_connected), &rpc__event__ap__sta_connected__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -22135,7 +22135,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, event_ap_sta_disconnected), &rpc__event__ap__sta_disconnected__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -22147,7 +22147,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, event_wifi_event_no_args), &rpc__event__wifi_event_no_args__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -22159,7 +22159,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, event_sta_scan_done), &rpc__event__sta_scan_done__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -22171,7 +22171,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, event_sta_connected), &rpc__event__sta_connected__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -22183,7 +22183,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, event_sta_disconnected), &rpc__event__sta_disconnected__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -22195,7 +22195,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, event_dhcp_dns), &rpc__event__dhcp_dns_status__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -22207,7 +22207,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, event_sta_itwt_setup), &rpc__event__sta_itwt_setup__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -22219,7 +22219,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, event_sta_itwt_teardown), &rpc__event__sta_itwt_teardown__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -22231,7 +22231,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, event_sta_itwt_suspend), &rpc__event__sta_itwt_suspend__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { @@ -22243,7 +22243,7 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[162] = offsetof(Rpc, event_sta_itwt_probe), &rpc__event__sta_itwt_probe__descriptor, NULL, - PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; diff --git a/common/proto/esp_hosted_rpc.pb-c.h b/common/proto/esp_hosted_rpc.pb-c.h index 23488d0c..8086afe0 100644 --- a/common/proto/esp_hosted_rpc.pb-c.h +++ b/common/proto/esp_hosted_rpc.pb-c.h @@ -9,9 +9,9 @@ PROTOBUF_C__BEGIN_DECLS #if PROTOBUF_C_VERSION_NUMBER < 1003000 -# error This file was generated by a newer version of protobuf-c which is incompatible with your libprotobuf-c headers. Please update your headers. -#elif 1005002 < PROTOBUF_C_MIN_COMPILER_VERSION -# error This file was generated by an older version of protobuf-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protobuf-c. +# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers. +#elif 1004001 < PROTOBUF_C_MIN_COMPILER_VERSION +# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c. #endif @@ -964,7 +964,7 @@ struct WifiInitConfig }; #define WIFI_INIT_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_init_config__descriptor) \ -, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } struct WifiCountry @@ -994,7 +994,7 @@ struct WifiCountry }; #define WIFI_COUNTRY__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_country__descriptor) \ -, {0,NULL}, 0, 0, 0, 0 } + , {0,NULL}, 0, 0, 0, 0 } struct WifiActiveScanTime @@ -1012,7 +1012,7 @@ struct WifiActiveScanTime }; #define WIFI_ACTIVE_SCAN_TIME__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_active_scan_time__descriptor) \ -, 0, 0 } + , 0, 0 } struct WifiScanTime @@ -1030,7 +1030,7 @@ struct WifiScanTime }; #define WIFI_SCAN_TIME__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_scan_time__descriptor) \ -, NULL, 0 } + , NULL, 0 } struct WifiScanChannelBitmap @@ -1047,7 +1047,7 @@ struct WifiScanChannelBitmap }; #define WIFI_SCAN_CHANNEL_BITMAP__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_scan_channel_bitmap__descriptor) \ -, 0, 0 } + , 0, 0 } struct WifiScanConfig @@ -1090,7 +1090,7 @@ struct WifiScanConfig }; #define WIFI_SCAN_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_scan_config__descriptor) \ -, {0,NULL}, {0,NULL}, 0, 0, 0, NULL, 0, NULL } + , {0,NULL}, {0,NULL}, 0, 0, 0, NULL, 0, NULL } struct WifiHeApInfo @@ -1112,7 +1112,7 @@ struct WifiHeApInfo }; #define WIFI_HE_AP_INFO__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_he_ap_info__descriptor) \ -, 0, 0 } + , 0, 0 } struct WifiApRecord @@ -1193,7 +1193,7 @@ struct WifiApRecord }; #define WIFI_AP_RECORD__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_ap_record__descriptor) \ -, {0,NULL}, {0,NULL}, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0 } + , {0,NULL}, {0,NULL}, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0 } struct WifiScanThreshold @@ -1217,7 +1217,7 @@ struct WifiScanThreshold }; #define WIFI_SCAN_THRESHOLD__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_scan_threshold__descriptor) \ -, 0, 0, 0 } + , 0, 0, 0 } struct WifiPmfConfig @@ -1234,7 +1234,7 @@ struct WifiPmfConfig }; #define WIFI_PMF_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_pmf_config__descriptor) \ -, 0, 0 } + , 0, 0 } struct WifiBssMaxIdleConfig @@ -1251,7 +1251,7 @@ struct WifiBssMaxIdleConfig }; #define WIFI_BSS_MAX_IDLE_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_bss_max_idle_config__descriptor) \ -, 0, 0 } + , 0, 0 } struct WifiApConfig @@ -1334,7 +1334,7 @@ struct WifiApConfig }; #define WIFI_AP_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_ap_config__descriptor) \ -, {0,NULL}, {0,NULL}, 0, 0, 0, 0, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 0, NULL, 0 } + , {0,NULL}, {0,NULL}, 0, 0, 0, 0, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 0, NULL, 0 } struct WifiStaConfig @@ -1430,7 +1430,7 @@ struct WifiStaConfig }; #define WIFI_STA_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_sta_config__descriptor) \ -, {0,NULL}, {0,NULL}, 0, 0, {0,NULL}, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, {0,NULL}, 0 } + , {0,NULL}, {0,NULL}, 0, 0, {0,NULL}, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, {0,NULL}, 0 } typedef enum { @@ -1457,7 +1457,7 @@ struct WifiConfig }; #define WIFI_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_config__descriptor) \ -, WIFI_CONFIG__U__NOT_SET, {0} } + , WIFI_CONFIG__U__NOT_SET, {0} } struct WifiStaInfo @@ -1484,7 +1484,7 @@ struct WifiStaInfo }; #define WIFI_STA_INFO__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_sta_info__descriptor) \ -, {0,NULL}, 0, 0 } + , {0,NULL}, 0, 0 } struct WifiStaList @@ -1502,7 +1502,7 @@ struct WifiStaList }; #define WIFI_STA_LIST__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_sta_list__descriptor) \ -, 0,NULL, 0 } + , 0,NULL, 0 } struct WifiPktRxCtrl @@ -1610,7 +1610,7 @@ struct WifiPktRxCtrl }; #define WIFI_PKT_RX_CTRL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_pkt_rx_ctrl__descriptor) \ -, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } struct WifiPromiscuousPkt @@ -1627,7 +1627,7 @@ struct WifiPromiscuousPkt }; #define WIFI_PROMISCUOUS_PKT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_promiscuous_pkt__descriptor) \ -, NULL, {0,NULL} } + , NULL, {0,NULL} } struct WifiPromiscuousFilter @@ -1640,7 +1640,7 @@ struct WifiPromiscuousFilter }; #define WIFI_PROMISCUOUS_FILTER__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_promiscuous_filter__descriptor) \ -, 0 } + , 0 } struct WifiCsiConfig @@ -1678,7 +1678,7 @@ struct WifiCsiConfig }; #define WIFI_CSI_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_csi_config__descriptor) \ -, 0, 0, 0, 0, 0, 0, 0 } + , 0, 0, 0, 0, 0, 0, 0 } struct WifiCsiInfo @@ -1711,7 +1711,7 @@ struct WifiCsiInfo }; #define WIFI_CSI_INFO__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_csi_info__descriptor) \ -, NULL, {0,NULL}, {0,NULL}, 0, {0,NULL}, 0 } + , NULL, {0,NULL}, {0,NULL}, 0, {0,NULL}, 0 } struct WifiAntGpio @@ -1728,7 +1728,7 @@ struct WifiAntGpio }; #define WIFI_ANT_GPIO__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_ant_gpio__descriptor) \ -, 0, 0 } + , 0, 0 } struct WifiAntGpioConfig @@ -1742,7 +1742,7 @@ struct WifiAntGpioConfig }; #define WIFI_ANT_GPIO_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_ant_gpio_config__descriptor) \ -, 0,NULL } + , 0,NULL } struct WifiAntConfig @@ -1771,7 +1771,7 @@ struct WifiAntConfig }; #define WIFI_ANT_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_ant_config__descriptor) \ -, 0, 0, 0, 0, 0 } + , 0, 0, 0, 0, 0 } struct WifiActionTxReq @@ -1804,7 +1804,7 @@ struct WifiActionTxReq }; #define WIFI_ACTION_TX_REQ__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_action_tx_req__descriptor) \ -, 0, {0,NULL}, 0, 0, {0,NULL} } + , 0, {0,NULL}, 0, 0, {0,NULL} } struct WifiFtmInitiatorCfg @@ -1829,7 +1829,7 @@ struct WifiFtmInitiatorCfg }; #define WIFI_FTM_INITIATOR_CFG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_ftm_initiator_cfg__descriptor) \ -, {0,NULL}, 0, 0, 0 } + , {0,NULL}, 0, 0, 0 } struct WifiEventStaScanDone @@ -1850,7 +1850,7 @@ struct WifiEventStaScanDone }; #define WIFI_EVENT_STA_SCAN_DONE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_event_sta_scan_done__descriptor) \ -, 0, 0, 0 } + , 0, 0, 0 } struct WifiEventStaConnected @@ -1883,7 +1883,7 @@ struct WifiEventStaConnected }; #define WIFI_EVENT_STA_CONNECTED__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_event_sta_connected__descriptor) \ -, {0,NULL}, 0, {0,NULL}, 0, 0, 0 } + , {0,NULL}, 0, {0,NULL}, 0, 0, 0 } struct WifiEventStaDisconnected @@ -1912,7 +1912,7 @@ struct WifiEventStaDisconnected }; #define WIFI_EVENT_STA_DISCONNECTED__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_event_sta_disconnected__descriptor) \ -, {0,NULL}, 0, {0,NULL}, 0, 0 } + , {0,NULL}, 0, {0,NULL}, 0, 0 } struct WifiEventStaAuthmodeChange @@ -1929,7 +1929,7 @@ struct WifiEventStaAuthmodeChange }; #define WIFI_EVENT_STA_AUTHMODE_CHANGE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_event_sta_authmode_change__descriptor) \ -, 0, 0 } + , 0, 0 } struct WifiEventStaWpsErPin @@ -1942,7 +1942,7 @@ struct WifiEventStaWpsErPin }; #define WIFI_EVENT_STA_WPS_ER_PIN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_event_sta_wps_er_pin__descriptor) \ -, {0,NULL} } + , {0,NULL} } struct ApCred @@ -1959,7 +1959,7 @@ struct ApCred }; #define AP_CRED__INIT \ { PROTOBUF_C_MESSAGE_INIT (&ap_cred__descriptor) \ -, {0,NULL}, {0,NULL} } + , {0,NULL}, {0,NULL} } struct WifiEventStaWpsErSuccess @@ -1977,7 +1977,7 @@ struct WifiEventStaWpsErSuccess }; #define WIFI_EVENT_STA_WPS_ER_SUCCESS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_event_sta_wps_er_success__descriptor) \ -, 0, 0,NULL } + , 0, 0,NULL } /* @@ -1997,7 +1997,7 @@ struct WifiEventApProbeReqRx }; #define WIFI_EVENT_AP_PROBE_REQ_RX__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_event_ap_probe_req_rx__descriptor) \ -, 0, 0 } + , 0, 0 } /* @@ -2013,7 +2013,7 @@ struct WifiEventBssRssiLow }; #define WIFI_EVENT_BSS_RSSI_LOW__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_event_bss_rssi_low__descriptor) \ -, 0 } + , 0 } struct WifiFtmReportEntry @@ -2053,7 +2053,7 @@ struct WifiFtmReportEntry }; #define WIFI_FTM_REPORT_ENTRY__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_ftm_report_entry__descriptor) \ -, 0, 0, 0, 0, 0, 0, 0 } + , 0, 0, 0, 0, 0, 0, 0 } struct WifiEventFtmReport @@ -2091,7 +2091,7 @@ struct WifiEventFtmReport }; #define WIFI_EVENT_FTM_REPORT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_event_ftm_report__descriptor) \ -, {0,NULL}, 0, 0, 0, 0, 0,NULL, 0 } + , {0,NULL}, 0, 0, 0, 0, 0,NULL, 0 } struct WifiEventActionTxStatus @@ -2116,7 +2116,7 @@ struct WifiEventActionTxStatus }; #define WIFI_EVENT_ACTION_TX_STATUS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_event_action_tx_status__descriptor) \ -, 0, 0, {0,NULL}, 0 } + , 0, 0, {0,NULL}, 0 } struct WifiEventRocDone @@ -2129,7 +2129,7 @@ struct WifiEventRocDone }; #define WIFI_EVENT_ROC_DONE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_event_roc_done__descriptor) \ -, 0 } + , 0 } struct WifiEventApWpsRgPin @@ -2142,7 +2142,7 @@ struct WifiEventApWpsRgPin }; #define WIFI_EVENT_AP_WPS_RG_PIN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_event_ap_wps_rg_pin__descriptor) \ -, {0,NULL} } + , {0,NULL} } struct WifiEventApWpsRgFailReason @@ -2159,7 +2159,7 @@ struct WifiEventApWpsRgFailReason }; #define WIFI_EVENT_AP_WPS_RG_FAIL_REASON__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_event_ap_wps_rg_fail_reason__descriptor) \ -, 0, {0,NULL} } + , 0, {0,NULL} } struct WifiEventApWpsRgSuccess @@ -2172,7 +2172,7 @@ struct WifiEventApWpsRgSuccess }; #define WIFI_EVENT_AP_WPS_RG_SUCCESS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_event_ap_wps_rg_success__descriptor) \ -, {0,NULL} } + , {0,NULL} } struct WifiProtocols @@ -2189,7 +2189,7 @@ struct WifiProtocols }; #define WIFI_PROTOCOLS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_protocols__descriptor) \ -, 0, 0 } + , 0, 0 } struct WifiBandwidths @@ -2206,7 +2206,7 @@ struct WifiBandwidths }; #define WIFI_BANDWIDTHS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_bandwidths__descriptor) \ -, 0, 0 } + , 0, 0 } struct WifiItwtSetupConfig @@ -2231,7 +2231,7 @@ struct WifiItwtSetupConfig }; #define WIFI_ITWT_SETUP_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_itwt_setup_config__descriptor) \ -, 0, 0, 0, 0, 0, 0 } + , 0, 0, 0, 0, 0, 0 } struct WifiTwtConfig @@ -2248,7 +2248,7 @@ struct WifiTwtConfig }; #define WIFI_TWT_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&wifi_twt_config__descriptor) \ -, 0, 0 } + , 0, 0 } struct ConnectedSTAList @@ -2259,7 +2259,7 @@ struct ConnectedSTAList }; #define CONNECTED_STALIST__INIT \ { PROTOBUF_C_MESSAGE_INIT (&connected_stalist__descriptor) \ -, {0,NULL}, 0 } + , {0,NULL}, 0 } /* @@ -2272,7 +2272,7 @@ struct RpcReqGetMacAddress }; #define RPC__REQ__GET_MAC_ADDRESS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__get_mac_address__descriptor) \ -, 0 } + , 0 } struct RpcRespGetMacAddress @@ -2283,7 +2283,7 @@ struct RpcRespGetMacAddress }; #define RPC__RESP__GET_MAC_ADDRESS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__get_mac_address__descriptor) \ -, {0,NULL}, 0 } + , {0,NULL}, 0 } struct RpcReqGetMode @@ -2292,7 +2292,7 @@ struct RpcReqGetMode }; #define RPC__REQ__GET_MODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__get_mode__descriptor) \ - } + } struct RpcRespGetMode @@ -2303,7 +2303,7 @@ struct RpcRespGetMode }; #define RPC__RESP__GET_MODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__get_mode__descriptor) \ -, 0, 0 } + , 0, 0 } struct RpcReqSetMode @@ -2313,7 +2313,7 @@ struct RpcReqSetMode }; #define RPC__REQ__SET_MODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__set_mode__descriptor) \ -, 0 } + , 0 } struct RpcRespSetMode @@ -2323,7 +2323,7 @@ struct RpcRespSetMode }; #define RPC__RESP__SET_MODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__set_mode__descriptor) \ -, 0 } + , 0 } struct RpcReqGetPs @@ -2332,7 +2332,7 @@ struct RpcReqGetPs }; #define RPC__REQ__GET_PS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__get_ps__descriptor) \ - } + } struct RpcRespGetPs @@ -2343,7 +2343,7 @@ struct RpcRespGetPs }; #define RPC__RESP__GET_PS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__get_ps__descriptor) \ -, 0, 0 } + , 0, 0 } struct RpcReqSetPs @@ -2353,7 +2353,7 @@ struct RpcReqSetPs }; #define RPC__REQ__SET_PS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__set_ps__descriptor) \ -, 0 } + , 0 } struct RpcRespSetPs @@ -2363,7 +2363,7 @@ struct RpcRespSetPs }; #define RPC__RESP__SET_PS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__set_ps__descriptor) \ -, 0 } + , 0 } struct RpcReqSetMacAddress @@ -2374,7 +2374,7 @@ struct RpcReqSetMacAddress }; #define RPC__REQ__SET_MAC_ADDRESS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__set_mac_address__descriptor) \ -, {0,NULL}, 0 } + , {0,NULL}, 0 } struct RpcRespSetMacAddress @@ -2384,7 +2384,7 @@ struct RpcRespSetMacAddress }; #define RPC__RESP__SET_MAC_ADDRESS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__set_mac_address__descriptor) \ -, 0 } + , 0 } struct RpcReqOTABegin @@ -2393,7 +2393,7 @@ struct RpcReqOTABegin }; #define RPC__REQ__OTABEGIN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__otabegin__descriptor) \ - } + } struct RpcRespOTABegin @@ -2403,7 +2403,7 @@ struct RpcRespOTABegin }; #define RPC__RESP__OTABEGIN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__otabegin__descriptor) \ -, 0 } + , 0 } struct RpcReqOTAWrite @@ -2413,7 +2413,7 @@ struct RpcReqOTAWrite }; #define RPC__REQ__OTAWRITE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__otawrite__descriptor) \ -, {0,NULL} } + , {0,NULL} } struct RpcRespOTAWrite @@ -2423,7 +2423,7 @@ struct RpcRespOTAWrite }; #define RPC__RESP__OTAWRITE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__otawrite__descriptor) \ -, 0 } + , 0 } struct RpcReqOTAEnd @@ -2432,7 +2432,7 @@ struct RpcReqOTAEnd }; #define RPC__REQ__OTAEND__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__otaend__descriptor) \ - } + } struct RpcRespOTAEnd @@ -2442,7 +2442,7 @@ struct RpcRespOTAEnd }; #define RPC__RESP__OTAEND__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__otaend__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiSetMaxTxPower @@ -2452,7 +2452,7 @@ struct RpcReqWifiSetMaxTxPower }; #define RPC__REQ__WIFI_SET_MAX_TX_POWER__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_set_max_tx_power__descriptor) \ -, 0 } + , 0 } struct RpcRespWifiSetMaxTxPower @@ -2462,7 +2462,7 @@ struct RpcRespWifiSetMaxTxPower }; #define RPC__RESP__WIFI_SET_MAX_TX_POWER__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_set_max_tx_power__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiGetMaxTxPower @@ -2471,7 +2471,7 @@ struct RpcReqWifiGetMaxTxPower }; #define RPC__REQ__WIFI_GET_MAX_TX_POWER__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_get_max_tx_power__descriptor) \ - } + } struct RpcRespWifiGetMaxTxPower @@ -2482,7 +2482,7 @@ struct RpcRespWifiGetMaxTxPower }; #define RPC__RESP__WIFI_GET_MAX_TX_POWER__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_get_max_tx_power__descriptor) \ -, 0, 0 } + , 0, 0 } struct RpcReqConfigHeartbeat @@ -2493,7 +2493,7 @@ struct RpcReqConfigHeartbeat }; #define RPC__REQ__CONFIG_HEARTBEAT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__config_heartbeat__descriptor) \ -, 0, 0 } + , 0, 0 } struct RpcRespConfigHeartbeat @@ -2503,7 +2503,7 @@ struct RpcRespConfigHeartbeat }; #define RPC__RESP__CONFIG_HEARTBEAT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__config_heartbeat__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiInit @@ -2513,7 +2513,7 @@ struct RpcReqWifiInit }; #define RPC__REQ__WIFI_INIT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_init__descriptor) \ -, NULL } + , NULL } struct RpcRespWifiInit @@ -2523,7 +2523,7 @@ struct RpcRespWifiInit }; #define RPC__RESP__WIFI_INIT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_init__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiDeinit @@ -2532,7 +2532,7 @@ struct RpcReqWifiDeinit }; #define RPC__REQ__WIFI_DEINIT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_deinit__descriptor) \ - } + } struct RpcRespWifiDeinit @@ -2542,7 +2542,7 @@ struct RpcRespWifiDeinit }; #define RPC__RESP__WIFI_DEINIT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_deinit__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiSetConfig @@ -2553,7 +2553,7 @@ struct RpcReqWifiSetConfig }; #define RPC__REQ__WIFI_SET_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_set_config__descriptor) \ -, 0, NULL } + , 0, NULL } struct RpcRespWifiSetConfig @@ -2563,7 +2563,7 @@ struct RpcRespWifiSetConfig }; #define RPC__RESP__WIFI_SET_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_set_config__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiGetConfig @@ -2573,7 +2573,7 @@ struct RpcReqWifiGetConfig }; #define RPC__REQ__WIFI_GET_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_get_config__descriptor) \ -, 0 } + , 0 } struct RpcRespWifiGetConfig @@ -2585,7 +2585,7 @@ struct RpcRespWifiGetConfig }; #define RPC__RESP__WIFI_GET_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_get_config__descriptor) \ -, 0, 0, NULL } + , 0, 0, NULL } struct RpcReqWifiConnect @@ -2594,7 +2594,7 @@ struct RpcReqWifiConnect }; #define RPC__REQ__WIFI_CONNECT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_connect__descriptor) \ - } + } struct RpcRespWifiConnect @@ -2604,7 +2604,7 @@ struct RpcRespWifiConnect }; #define RPC__RESP__WIFI_CONNECT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_connect__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiDisconnect @@ -2613,7 +2613,7 @@ struct RpcReqWifiDisconnect }; #define RPC__REQ__WIFI_DISCONNECT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_disconnect__descriptor) \ - } + } struct RpcRespWifiDisconnect @@ -2623,7 +2623,7 @@ struct RpcRespWifiDisconnect }; #define RPC__RESP__WIFI_DISCONNECT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_disconnect__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiStart @@ -2632,7 +2632,7 @@ struct RpcReqWifiStart }; #define RPC__REQ__WIFI_START__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_start__descriptor) \ - } + } struct RpcRespWifiStart @@ -2642,7 +2642,7 @@ struct RpcRespWifiStart }; #define RPC__RESP__WIFI_START__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_start__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiStop @@ -2651,7 +2651,7 @@ struct RpcReqWifiStop }; #define RPC__REQ__WIFI_STOP__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_stop__descriptor) \ - } + } struct RpcRespWifiStop @@ -2661,7 +2661,7 @@ struct RpcRespWifiStop }; #define RPC__RESP__WIFI_STOP__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_stop__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiScanStart @@ -2673,7 +2673,7 @@ struct RpcReqWifiScanStart }; #define RPC__REQ__WIFI_SCAN_START__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_scan_start__descriptor) \ -, NULL, 0, 0 } + , NULL, 0, 0 } struct RpcRespWifiScanStart @@ -2683,7 +2683,7 @@ struct RpcRespWifiScanStart }; #define RPC__RESP__WIFI_SCAN_START__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_scan_start__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiScanStop @@ -2692,7 +2692,7 @@ struct RpcReqWifiScanStop }; #define RPC__REQ__WIFI_SCAN_STOP__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_scan_stop__descriptor) \ - } + } struct RpcRespWifiScanStop @@ -2702,7 +2702,7 @@ struct RpcRespWifiScanStop }; #define RPC__RESP__WIFI_SCAN_STOP__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_scan_stop__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiScanGetApNum @@ -2711,7 +2711,7 @@ struct RpcReqWifiScanGetApNum }; #define RPC__REQ__WIFI_SCAN_GET_AP_NUM__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_scan_get_ap_num__descriptor) \ - } + } struct RpcRespWifiScanGetApNum @@ -2722,7 +2722,7 @@ struct RpcRespWifiScanGetApNum }; #define RPC__RESP__WIFI_SCAN_GET_AP_NUM__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_scan_get_ap_num__descriptor) \ -, 0, 0 } + , 0, 0 } struct RpcReqWifiScanGetApRecords @@ -2732,7 +2732,7 @@ struct RpcReqWifiScanGetApRecords }; #define RPC__REQ__WIFI_SCAN_GET_AP_RECORDS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_scan_get_ap_records__descriptor) \ -, 0 } + , 0 } struct RpcRespWifiScanGetApRecords @@ -2745,7 +2745,7 @@ struct RpcRespWifiScanGetApRecords }; #define RPC__RESP__WIFI_SCAN_GET_AP_RECORDS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_scan_get_ap_records__descriptor) \ -, 0, 0, 0,NULL } + , 0, 0, 0,NULL } struct RpcReqWifiScanGetApRecord @@ -2754,7 +2754,7 @@ struct RpcReqWifiScanGetApRecord }; #define RPC__REQ__WIFI_SCAN_GET_AP_RECORD__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_scan_get_ap_record__descriptor) \ - } + } struct RpcRespWifiScanGetApRecord @@ -2765,7 +2765,7 @@ struct RpcRespWifiScanGetApRecord }; #define RPC__RESP__WIFI_SCAN_GET_AP_RECORD__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_scan_get_ap_record__descriptor) \ -, 0, NULL } + , 0, NULL } struct RpcReqWifiClearApList @@ -2774,7 +2774,7 @@ struct RpcReqWifiClearApList }; #define RPC__REQ__WIFI_CLEAR_AP_LIST__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_clear_ap_list__descriptor) \ - } + } struct RpcRespWifiClearApList @@ -2784,7 +2784,7 @@ struct RpcRespWifiClearApList }; #define RPC__RESP__WIFI_CLEAR_AP_LIST__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_clear_ap_list__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiRestore @@ -2793,7 +2793,7 @@ struct RpcReqWifiRestore }; #define RPC__REQ__WIFI_RESTORE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_restore__descriptor) \ - } + } struct RpcRespWifiRestore @@ -2803,7 +2803,7 @@ struct RpcRespWifiRestore }; #define RPC__RESP__WIFI_RESTORE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_restore__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiClearFastConnect @@ -2812,7 +2812,7 @@ struct RpcReqWifiClearFastConnect }; #define RPC__REQ__WIFI_CLEAR_FAST_CONNECT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_clear_fast_connect__descriptor) \ - } + } struct RpcRespWifiClearFastConnect @@ -2822,7 +2822,7 @@ struct RpcRespWifiClearFastConnect }; #define RPC__RESP__WIFI_CLEAR_FAST_CONNECT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_clear_fast_connect__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiDeauthSta @@ -2832,7 +2832,7 @@ struct RpcReqWifiDeauthSta }; #define RPC__REQ__WIFI_DEAUTH_STA__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_deauth_sta__descriptor) \ -, 0 } + , 0 } struct RpcRespWifiDeauthSta @@ -2843,7 +2843,7 @@ struct RpcRespWifiDeauthSta }; #define RPC__RESP__WIFI_DEAUTH_STA__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_deauth_sta__descriptor) \ -, 0, 0 } + , 0, 0 } struct RpcReqWifiStaGetApInfo @@ -2852,7 +2852,7 @@ struct RpcReqWifiStaGetApInfo }; #define RPC__REQ__WIFI_STA_GET_AP_INFO__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_get_ap_info__descriptor) \ - } + } struct RpcRespWifiStaGetApInfo @@ -2863,7 +2863,7 @@ struct RpcRespWifiStaGetApInfo }; #define RPC__RESP__WIFI_STA_GET_AP_INFO__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_get_ap_info__descriptor) \ -, 0, NULL } + , 0, NULL } struct RpcReqWifiSetProtocol @@ -2874,7 +2874,7 @@ struct RpcReqWifiSetProtocol }; #define RPC__REQ__WIFI_SET_PROTOCOL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_set_protocol__descriptor) \ -, 0, 0 } + , 0, 0 } struct RpcRespWifiSetProtocol @@ -2884,7 +2884,7 @@ struct RpcRespWifiSetProtocol }; #define RPC__RESP__WIFI_SET_PROTOCOL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_set_protocol__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiGetProtocol @@ -2894,7 +2894,7 @@ struct RpcReqWifiGetProtocol }; #define RPC__REQ__WIFI_GET_PROTOCOL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_get_protocol__descriptor) \ -, 0 } + , 0 } struct RpcRespWifiGetProtocol @@ -2905,7 +2905,7 @@ struct RpcRespWifiGetProtocol }; #define RPC__RESP__WIFI_GET_PROTOCOL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_get_protocol__descriptor) \ -, 0, 0 } + , 0, 0 } struct RpcReqWifiSetBandwidth @@ -2916,7 +2916,7 @@ struct RpcReqWifiSetBandwidth }; #define RPC__REQ__WIFI_SET_BANDWIDTH__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_set_bandwidth__descriptor) \ -, 0, 0 } + , 0, 0 } struct RpcRespWifiSetBandwidth @@ -2926,7 +2926,7 @@ struct RpcRespWifiSetBandwidth }; #define RPC__RESP__WIFI_SET_BANDWIDTH__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_set_bandwidth__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiGetBandwidth @@ -2936,7 +2936,7 @@ struct RpcReqWifiGetBandwidth }; #define RPC__REQ__WIFI_GET_BANDWIDTH__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_get_bandwidth__descriptor) \ -, 0 } + , 0 } struct RpcRespWifiGetBandwidth @@ -2947,7 +2947,7 @@ struct RpcRespWifiGetBandwidth }; #define RPC__RESP__WIFI_GET_BANDWIDTH__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_get_bandwidth__descriptor) \ -, 0, 0 } + , 0, 0 } struct RpcReqWifiSetChannel @@ -2958,7 +2958,7 @@ struct RpcReqWifiSetChannel }; #define RPC__REQ__WIFI_SET_CHANNEL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_set_channel__descriptor) \ -, 0, 0 } + , 0, 0 } struct RpcRespWifiSetChannel @@ -2968,7 +2968,7 @@ struct RpcRespWifiSetChannel }; #define RPC__RESP__WIFI_SET_CHANNEL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_set_channel__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiGetChannel @@ -2977,7 +2977,7 @@ struct RpcReqWifiGetChannel }; #define RPC__REQ__WIFI_GET_CHANNEL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_get_channel__descriptor) \ - } + } struct RpcRespWifiGetChannel @@ -2989,7 +2989,7 @@ struct RpcRespWifiGetChannel }; #define RPC__RESP__WIFI_GET_CHANNEL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_get_channel__descriptor) \ -, 0, 0, 0 } + , 0, 0, 0 } struct RpcReqWifiSetStorage @@ -2999,7 +2999,7 @@ struct RpcReqWifiSetStorage }; #define RPC__REQ__WIFI_SET_STORAGE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_set_storage__descriptor) \ -, 0 } + , 0 } struct RpcRespWifiSetStorage @@ -3009,7 +3009,7 @@ struct RpcRespWifiSetStorage }; #define RPC__RESP__WIFI_SET_STORAGE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_set_storage__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiSetCountryCode @@ -3020,7 +3020,7 @@ struct RpcReqWifiSetCountryCode }; #define RPC__REQ__WIFI_SET_COUNTRY_CODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_set_country_code__descriptor) \ -, {0,NULL}, 0 } + , {0,NULL}, 0 } struct RpcRespWifiSetCountryCode @@ -3030,7 +3030,7 @@ struct RpcRespWifiSetCountryCode }; #define RPC__RESP__WIFI_SET_COUNTRY_CODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_set_country_code__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiGetCountryCode @@ -3039,7 +3039,7 @@ struct RpcReqWifiGetCountryCode }; #define RPC__REQ__WIFI_GET_COUNTRY_CODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_get_country_code__descriptor) \ - } + } struct RpcRespWifiGetCountryCode @@ -3050,7 +3050,7 @@ struct RpcRespWifiGetCountryCode }; #define RPC__RESP__WIFI_GET_COUNTRY_CODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_get_country_code__descriptor) \ -, 0, {0,NULL} } + , 0, {0,NULL} } struct RpcReqWifiSetCountry @@ -3060,7 +3060,7 @@ struct RpcReqWifiSetCountry }; #define RPC__REQ__WIFI_SET_COUNTRY__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_set_country__descriptor) \ -, NULL } + , NULL } struct RpcRespWifiSetCountry @@ -3070,7 +3070,7 @@ struct RpcRespWifiSetCountry }; #define RPC__RESP__WIFI_SET_COUNTRY__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_set_country__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiGetCountry @@ -3079,7 +3079,7 @@ struct RpcReqWifiGetCountry }; #define RPC__REQ__WIFI_GET_COUNTRY__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_get_country__descriptor) \ - } + } struct RpcRespWifiGetCountry @@ -3090,7 +3090,7 @@ struct RpcRespWifiGetCountry }; #define RPC__RESP__WIFI_GET_COUNTRY__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_get_country__descriptor) \ -, 0, NULL } + , 0, NULL } struct RpcReqWifiApGetStaList @@ -3099,7 +3099,7 @@ struct RpcReqWifiApGetStaList }; #define RPC__REQ__WIFI_AP_GET_STA_LIST__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_ap_get_sta_list__descriptor) \ - } + } struct RpcRespWifiApGetStaList @@ -3110,7 +3110,7 @@ struct RpcRespWifiApGetStaList }; #define RPC__RESP__WIFI_AP_GET_STA_LIST__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_ap_get_sta_list__descriptor) \ -, 0, NULL } + , 0, NULL } struct RpcReqWifiApGetStaAid @@ -3120,7 +3120,7 @@ struct RpcReqWifiApGetStaAid }; #define RPC__REQ__WIFI_AP_GET_STA_AID__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_ap_get_sta_aid__descriptor) \ -, {0,NULL} } + , {0,NULL} } struct RpcReqWifiStaGetNegotiatedPhymode @@ -3129,7 +3129,7 @@ struct RpcReqWifiStaGetNegotiatedPhymode }; #define RPC__REQ__WIFI_STA_GET_NEGOTIATED_PHYMODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_get_negotiated_phymode__descriptor) \ - } + } struct RpcRespWifiStaGetNegotiatedPhymode @@ -3140,7 +3140,7 @@ struct RpcRespWifiStaGetNegotiatedPhymode }; #define RPC__RESP__WIFI_STA_GET_NEGOTIATED_PHYMODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_get_negotiated_phymode__descriptor) \ -, 0, 0 } + , 0, 0 } struct RpcRespWifiApGetStaAid @@ -3151,7 +3151,7 @@ struct RpcRespWifiApGetStaAid }; #define RPC__RESP__WIFI_AP_GET_STA_AID__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_ap_get_sta_aid__descriptor) \ -, 0, 0 } + , 0, 0 } struct RpcReqWifiStaGetRssi @@ -3160,7 +3160,7 @@ struct RpcReqWifiStaGetRssi }; #define RPC__REQ__WIFI_STA_GET_RSSI__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_get_rssi__descriptor) \ - } + } struct RpcRespWifiStaGetRssi @@ -3171,7 +3171,7 @@ struct RpcRespWifiStaGetRssi }; #define RPC__RESP__WIFI_STA_GET_RSSI__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_get_rssi__descriptor) \ -, 0, 0 } + , 0, 0 } struct RpcReqWifiStaGetAid @@ -3180,7 +3180,7 @@ struct RpcReqWifiStaGetAid }; #define RPC__REQ__WIFI_STA_GET_AID__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_get_aid__descriptor) \ - } + } struct RpcRespWifiStaGetAid @@ -3191,7 +3191,7 @@ struct RpcRespWifiStaGetAid }; #define RPC__RESP__WIFI_STA_GET_AID__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_get_aid__descriptor) \ -, 0, 0 } + , 0, 0 } struct RpcReqWifiSetProtocols @@ -3202,7 +3202,7 @@ struct RpcReqWifiSetProtocols }; #define RPC__REQ__WIFI_SET_PROTOCOLS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_set_protocols__descriptor) \ -, 0, NULL } + , 0, NULL } struct RpcRespWifiSetProtocols @@ -3213,7 +3213,7 @@ struct RpcRespWifiSetProtocols }; #define RPC__RESP__WIFI_SET_PROTOCOLS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_set_protocols__descriptor) \ -, 0, 0 } + , 0, 0 } struct RpcReqWifiGetProtocols @@ -3223,7 +3223,7 @@ struct RpcReqWifiGetProtocols }; #define RPC__REQ__WIFI_GET_PROTOCOLS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_get_protocols__descriptor) \ -, 0 } + , 0 } struct RpcRespWifiGetProtocols @@ -3235,7 +3235,7 @@ struct RpcRespWifiGetProtocols }; #define RPC__RESP__WIFI_GET_PROTOCOLS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_get_protocols__descriptor) \ -, 0, 0, NULL } + , 0, 0, NULL } struct RpcReqWifiSetBandwidths @@ -3246,7 +3246,7 @@ struct RpcReqWifiSetBandwidths }; #define RPC__REQ__WIFI_SET_BANDWIDTHS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_set_bandwidths__descriptor) \ -, 0, NULL } + , 0, NULL } struct RpcRespWifiSetBandwidths @@ -3257,7 +3257,7 @@ struct RpcRespWifiSetBandwidths }; #define RPC__RESP__WIFI_SET_BANDWIDTHS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_set_bandwidths__descriptor) \ -, 0, 0 } + , 0, 0 } struct RpcReqWifiGetBandwidths @@ -3267,7 +3267,7 @@ struct RpcReqWifiGetBandwidths }; #define RPC__REQ__WIFI_GET_BANDWIDTHS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_get_bandwidths__descriptor) \ -, 0 } + , 0 } struct RpcRespWifiGetBandwidths @@ -3279,7 +3279,7 @@ struct RpcRespWifiGetBandwidths }; #define RPC__RESP__WIFI_GET_BANDWIDTHS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_get_bandwidths__descriptor) \ -, 0, 0, NULL } + , 0, 0, NULL } struct RpcReqWifiSetBand @@ -3289,7 +3289,7 @@ struct RpcReqWifiSetBand }; #define RPC__REQ__WIFI_SET_BAND__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_set_band__descriptor) \ -, 0 } + , 0 } struct RpcRespWifiSetBand @@ -3299,7 +3299,7 @@ struct RpcRespWifiSetBand }; #define RPC__RESP__WIFI_SET_BAND__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_set_band__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiGetBand @@ -3308,7 +3308,7 @@ struct RpcReqWifiGetBand }; #define RPC__REQ__WIFI_GET_BAND__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_get_band__descriptor) \ - } + } struct RpcRespWifiGetBand @@ -3319,7 +3319,7 @@ struct RpcRespWifiGetBand }; #define RPC__RESP__WIFI_GET_BAND__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_get_band__descriptor) \ -, 0, 0 } + , 0, 0 } struct RpcReqWifiSetBandMode @@ -3329,7 +3329,7 @@ struct RpcReqWifiSetBandMode }; #define RPC__REQ__WIFI_SET_BAND_MODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_set_band_mode__descriptor) \ -, 0 } + , 0 } struct RpcRespWifiSetBandMode @@ -3339,7 +3339,7 @@ struct RpcRespWifiSetBandMode }; #define RPC__RESP__WIFI_SET_BAND_MODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_set_band_mode__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiGetBandMode @@ -3348,7 +3348,7 @@ struct RpcReqWifiGetBandMode }; #define RPC__REQ__WIFI_GET_BAND_MODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_get_band_mode__descriptor) \ - } + } struct RpcRespWifiGetBandMode @@ -3359,7 +3359,7 @@ struct RpcRespWifiGetBandMode }; #define RPC__RESP__WIFI_GET_BAND_MODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_get_band_mode__descriptor) \ -, 0, 0 } + , 0, 0 } struct RpcReqWifiSetInactiveTime @@ -3370,7 +3370,7 @@ struct RpcReqWifiSetInactiveTime }; #define RPC__REQ__WIFI_SET_INACTIVE_TIME__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_set_inactive_time__descriptor) \ -, 0, 0 } + , 0, 0 } struct RpcRespWifiSetInactiveTime @@ -3380,7 +3380,7 @@ struct RpcRespWifiSetInactiveTime }; #define RPC__RESP__WIFI_SET_INACTIVE_TIME__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_set_inactive_time__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiGetInactiveTime @@ -3390,7 +3390,7 @@ struct RpcReqWifiGetInactiveTime }; #define RPC__REQ__WIFI_GET_INACTIVE_TIME__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_get_inactive_time__descriptor) \ -, 0 } + , 0 } struct RpcRespWifiGetInactiveTime @@ -3401,7 +3401,7 @@ struct RpcRespWifiGetInactiveTime }; #define RPC__RESP__WIFI_GET_INACTIVE_TIME__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_get_inactive_time__descriptor) \ -, 0, 0 } + , 0, 0 } struct RpcReqWifiStaItwtSetup @@ -3411,7 +3411,7 @@ struct RpcReqWifiStaItwtSetup }; #define RPC__REQ__WIFI_STA_ITWT_SETUP__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_itwt_setup__descriptor) \ -, NULL } + , NULL } struct RpcRespWifiStaItwtSetup @@ -3421,7 +3421,7 @@ struct RpcRespWifiStaItwtSetup }; #define RPC__RESP__WIFI_STA_ITWT_SETUP__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_itwt_setup__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiStaItwtTeardown @@ -3431,7 +3431,7 @@ struct RpcReqWifiStaItwtTeardown }; #define RPC__REQ__WIFI_STA_ITWT_TEARDOWN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_itwt_teardown__descriptor) \ -, 0 } + , 0 } struct RpcRespWifiStaItwtTeardown @@ -3441,7 +3441,7 @@ struct RpcRespWifiStaItwtTeardown }; #define RPC__RESP__WIFI_STA_ITWT_TEARDOWN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_itwt_teardown__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiStaItwtSuspend @@ -3452,7 +3452,7 @@ struct RpcReqWifiStaItwtSuspend }; #define RPC__REQ__WIFI_STA_ITWT_SUSPEND__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_itwt_suspend__descriptor) \ -, 0, 0 } + , 0, 0 } struct RpcRespWifiStaItwtSuspend @@ -3462,7 +3462,7 @@ struct RpcRespWifiStaItwtSuspend }; #define RPC__RESP__WIFI_STA_ITWT_SUSPEND__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_itwt_suspend__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiStaItwtGetFlowIdStatus @@ -3471,7 +3471,7 @@ struct RpcReqWifiStaItwtGetFlowIdStatus }; #define RPC__REQ__WIFI_STA_ITWT_GET_FLOW_ID_STATUS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_itwt_get_flow_id_status__descriptor) \ - } + } struct RpcRespWifiStaItwtGetFlowIdStatus @@ -3482,7 +3482,7 @@ struct RpcRespWifiStaItwtGetFlowIdStatus }; #define RPC__RESP__WIFI_STA_ITWT_GET_FLOW_ID_STATUS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_itwt_get_flow_id_status__descriptor) \ -, 0, 0 } + , 0, 0 } struct RpcReqWifiStaItwtSendProbeReq @@ -3492,7 +3492,7 @@ struct RpcReqWifiStaItwtSendProbeReq }; #define RPC__REQ__WIFI_STA_ITWT_SEND_PROBE_REQ__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_itwt_send_probe_req__descriptor) \ -, 0 } + , 0 } struct RpcRespWifiStaItwtSendProbeReq @@ -3502,7 +3502,7 @@ struct RpcRespWifiStaItwtSendProbeReq }; #define RPC__RESP__WIFI_STA_ITWT_SEND_PROBE_REQ__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_itwt_send_probe_req__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiStaItwtSetTargetWakeTimeOffset @@ -3512,7 +3512,7 @@ struct RpcReqWifiStaItwtSetTargetWakeTimeOffset }; #define RPC__REQ__WIFI_STA_ITWT_SET_TARGET_WAKE_TIME_OFFSET__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_itwt_set_target_wake_time_offset__descriptor) \ -, 0 } + , 0 } struct RpcRespWifiStaItwtSetTargetWakeTimeOffset @@ -3522,7 +3522,7 @@ struct RpcRespWifiStaItwtSetTargetWakeTimeOffset }; #define RPC__RESP__WIFI_STA_ITWT_SET_TARGET_WAKE_TIME_OFFSET__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__descriptor) \ -, 0 } + , 0 } struct RpcReqWifiStaTwtConfig @@ -3532,7 +3532,7 @@ struct RpcReqWifiStaTwtConfig }; #define RPC__REQ__WIFI_STA_TWT_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_twt_config__descriptor) \ -, NULL } + , NULL } struct RpcRespWifiStaTwtConfig @@ -3542,7 +3542,7 @@ struct RpcRespWifiStaTwtConfig }; #define RPC__RESP__WIFI_STA_TWT_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_twt_config__descriptor) \ -, 0 } + , 0 } struct RpcReqGetCoprocessorFwVersion @@ -3551,7 +3551,7 @@ struct RpcReqGetCoprocessorFwVersion }; #define RPC__REQ__GET_COPROCESSOR_FW_VERSION__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__get_coprocessor_fw_version__descriptor) \ - } + } struct RpcRespGetCoprocessorFwVersion @@ -3564,7 +3564,7 @@ struct RpcRespGetCoprocessorFwVersion }; #define RPC__RESP__GET_COPROCESSOR_FW_VERSION__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__get_coprocessor_fw_version__descriptor) \ -, 0, 0, 0, 0 } + , 0, 0, 0, 0 } struct RpcReqSetDhcpDnsStatus @@ -3582,7 +3582,7 @@ struct RpcReqSetDhcpDnsStatus }; #define RPC__REQ__SET_DHCP_DNS_STATUS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__set_dhcp_dns_status__descriptor) \ -, 0, 0, 0, {0,NULL}, {0,NULL}, {0,NULL}, 0, {0,NULL}, 0 } + , 0, 0, 0, {0,NULL}, {0,NULL}, {0,NULL}, 0, {0,NULL}, 0 } struct RpcRespSetDhcpDnsStatus @@ -3592,7 +3592,7 @@ struct RpcRespSetDhcpDnsStatus }; #define RPC__RESP__SET_DHCP_DNS_STATUS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__set_dhcp_dns_status__descriptor) \ -, 0 } + , 0 } struct RpcReqGetDhcpDnsStatus @@ -3602,7 +3602,7 @@ struct RpcReqGetDhcpDnsStatus }; #define RPC__REQ__GET_DHCP_DNS_STATUS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__get_dhcp_dns_status__descriptor) \ -, 0 } + , 0 } struct RpcRespGetDhcpDnsStatus @@ -3621,7 +3621,7 @@ struct RpcRespGetDhcpDnsStatus }; #define RPC__RESP__GET_DHCP_DNS_STATUS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__get_dhcp_dns_status__descriptor) \ -, 0, 0, 0, {0,NULL}, {0,NULL}, {0,NULL}, 0, {0,NULL}, 0, 0 } + , 0, 0, 0, {0,NULL}, {0,NULL}, {0,NULL}, 0, {0,NULL}, 0, 0 } struct RpcEventWifiEventNoArgs @@ -3632,7 +3632,7 @@ struct RpcEventWifiEventNoArgs }; #define RPC__EVENT__WIFI_EVENT_NO_ARGS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__event__wifi_event_no_args__descriptor) \ -, 0, 0 } + , 0, 0 } struct RpcEventESPInit @@ -3642,7 +3642,7 @@ struct RpcEventESPInit }; #define RPC__EVENT__ESPINIT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__event__espinit__descriptor) \ -, {0,NULL} } + , {0,NULL} } struct RpcEventHeartbeat @@ -3652,7 +3652,7 @@ struct RpcEventHeartbeat }; #define RPC__EVENT__HEARTBEAT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__event__heartbeat__descriptor) \ -, 0 } + , 0 } struct RpcEventAPStaDisconnected @@ -3666,7 +3666,7 @@ struct RpcEventAPStaDisconnected }; #define RPC__EVENT__AP__STA_DISCONNECTED__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__event__ap__sta_disconnected__descriptor) \ -, 0, {0,NULL}, 0, 0, 0 } + , 0, {0,NULL}, 0, 0, 0 } struct RpcEventAPStaConnected @@ -3679,7 +3679,7 @@ struct RpcEventAPStaConnected }; #define RPC__EVENT__AP__STA_CONNECTED__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__event__ap__sta_connected__descriptor) \ -, 0, {0,NULL}, 0, 0 } + , 0, {0,NULL}, 0, 0 } struct RpcEventStaScanDone @@ -3690,7 +3690,7 @@ struct RpcEventStaScanDone }; #define RPC__EVENT__STA_SCAN_DONE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__event__sta_scan_done__descriptor) \ -, 0, NULL } + , 0, NULL } struct RpcEventStaConnected @@ -3701,7 +3701,7 @@ struct RpcEventStaConnected }; #define RPC__EVENT__STA_CONNECTED__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__event__sta_connected__descriptor) \ -, 0, NULL } + , 0, NULL } struct RpcEventStaDisconnected @@ -3712,7 +3712,7 @@ struct RpcEventStaDisconnected }; #define RPC__EVENT__STA_DISCONNECTED__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__event__sta_disconnected__descriptor) \ -, 0, NULL } + , 0, NULL } struct RpcGpioConfig @@ -3726,7 +3726,7 @@ struct RpcGpioConfig }; #define RPC__GPIO_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__gpio_config__descriptor) \ -, 0, RPC__GPIO_MODE__GPIO_MODE_DISABLE, 0, 0, 0 } + , 0, RPC__GPIO_MODE__GPIO_MODE_DISABLE, 0, 0, 0 } struct RpcReqGpioConfig @@ -3736,7 +3736,7 @@ struct RpcReqGpioConfig }; #define RPC__REQ__GPIO_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__gpio_config__descriptor) \ -, NULL } + , NULL } struct RpcRespGpioConfig @@ -3746,7 +3746,7 @@ struct RpcRespGpioConfig }; #define RPC__RESP__GPIO_CONFIG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__gpio_config__descriptor) \ -, 0 } + , 0 } struct RpcReqGpioReset @@ -3756,7 +3756,7 @@ struct RpcReqGpioReset }; #define RPC__REQ__GPIO_RESET__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__gpio_reset__descriptor) \ -, 0 } + , 0 } struct RpcRespGpioResetPin @@ -3766,7 +3766,7 @@ struct RpcRespGpioResetPin }; #define RPC__RESP__GPIO_RESET_PIN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__gpio_reset_pin__descriptor) \ -, 0 } + , 0 } struct RpcReqGpioSetLevel @@ -3780,7 +3780,7 @@ struct RpcReqGpioSetLevel }; #define RPC__REQ__GPIO_SET_LEVEL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__gpio_set_level__descriptor) \ -, 0, 0 } + , 0, 0 } struct RpcRespGpioSetLevel @@ -3790,7 +3790,7 @@ struct RpcRespGpioSetLevel }; #define RPC__RESP__GPIO_SET_LEVEL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__gpio_set_level__descriptor) \ -, 0 } + , 0 } struct RpcReqGpioGetLevel @@ -3800,7 +3800,7 @@ struct RpcReqGpioGetLevel }; #define RPC__REQ__GPIO_GET_LEVEL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__gpio_get_level__descriptor) \ -, 0 } + , 0 } struct RpcRespGpioGetLevel @@ -3811,7 +3811,7 @@ struct RpcRespGpioGetLevel }; #define RPC__RESP__GPIO_GET_LEVEL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__gpio_get_level__descriptor) \ -, 0, 0 } + , 0, 0 } struct RpcReqGpioSetDirection @@ -3822,7 +3822,7 @@ struct RpcReqGpioSetDirection }; #define RPC__REQ__GPIO_SET_DIRECTION__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__gpio_set_direction__descriptor) \ -, 0, RPC__GPIO_MODE__GPIO_MODE_DISABLE } + , 0, RPC__GPIO_MODE__GPIO_MODE_DISABLE } struct RpcRespGpioSetDirection @@ -3832,7 +3832,7 @@ struct RpcRespGpioSetDirection }; #define RPC__RESP__GPIO_SET_DIRECTION__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__gpio_set_direction__descriptor) \ -, 0 } + , 0 } struct RpcReqGpioInputEnable @@ -3842,7 +3842,7 @@ struct RpcReqGpioInputEnable }; #define RPC__REQ__GPIO_INPUT_ENABLE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__gpio_input_enable__descriptor) \ -, 0 } + , 0 } struct RpcRespGpioInputEnable @@ -3852,7 +3852,7 @@ struct RpcRespGpioInputEnable }; #define RPC__RESP__GPIO_INPUT_ENABLE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__gpio_input_enable__descriptor) \ -, 0 } + , 0 } struct RpcReqGpioSetPullMode @@ -3863,7 +3863,7 @@ struct RpcReqGpioSetPullMode }; #define RPC__REQ__GPIO_SET_PULL_MODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__req__gpio_set_pull_mode__descriptor) \ -, 0, RPC__GPIO_PULL_MODE__GPIO_PULL_NONE } + , 0, RPC__GPIO_PULL_MODE__GPIO_PULL_NONE } struct RpcRespGpioSetPullMode @@ -3873,7 +3873,7 @@ struct RpcRespGpioSetPullMode }; #define RPC__RESP__GPIO_SET_PULL_MODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__gpio_set_pull_mode__descriptor) \ -, 0 } + , 0 } struct RpcEventDhcpDnsStatus @@ -3892,7 +3892,7 @@ struct RpcEventDhcpDnsStatus }; #define RPC__EVENT__DHCP_DNS_STATUS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__event__dhcp_dns_status__descriptor) \ -, 0, 0, 0, {0,NULL}, {0,NULL}, {0,NULL}, 0, {0,NULL}, 0, 0 } + , 0, 0, 0, {0,NULL}, {0,NULL}, {0,NULL}, 0, {0,NULL}, 0, 0 } struct RpcEventStaItwtSetup @@ -3906,7 +3906,7 @@ struct RpcEventStaItwtSetup }; #define RPC__EVENT__STA_ITWT_SETUP__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__event__sta_itwt_setup__descriptor) \ -, 0, NULL, 0, 0, 0 } + , 0, NULL, 0, 0, 0 } struct RpcEventStaItwtTeardown @@ -3918,7 +3918,7 @@ struct RpcEventStaItwtTeardown }; #define RPC__EVENT__STA_ITWT_TEARDOWN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__event__sta_itwt_teardown__descriptor) \ -, 0, 0, 0 } + , 0, 0, 0 } struct RpcEventStaItwtSuspend @@ -3935,7 +3935,7 @@ struct RpcEventStaItwtSuspend }; #define RPC__EVENT__STA_ITWT_SUSPEND__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__event__sta_itwt_suspend__descriptor) \ -, 0, 0, 0, 0,NULL } + , 0, 0, 0, 0,NULL } struct RpcEventStaItwtProbe @@ -3947,7 +3947,7 @@ struct RpcEventStaItwtProbe }; #define RPC__EVENT__STA_ITWT_PROBE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__event__sta_itwt_probe__descriptor) \ -, 0, 0, 0 } + , 0, 0, 0 } typedef enum { @@ -4131,179 +4131,179 @@ struct Rpc uint32_t uid; Rpc__PayloadCase payload_case; union { - RpcEventAPStaConnected *event_ap_sta_connected; - RpcEventAPStaDisconnected *event_ap_sta_disconnected; - RpcEventDhcpDnsStatus *event_dhcp_dns; - /* - ** Notifications * - */ - RpcEventESPInit *event_esp_init; - RpcEventHeartbeat *event_heartbeat; - RpcEventStaConnected *event_sta_connected; - RpcEventStaDisconnected *event_sta_disconnected; - RpcEventStaItwtProbe *event_sta_itwt_probe; - RpcEventStaItwtSetup *event_sta_itwt_setup; - RpcEventStaItwtSuspend *event_sta_itwt_suspend; - RpcEventStaItwtTeardown *event_sta_itwt_teardown; - RpcEventStaScanDone *event_sta_scan_done; - RpcEventWifiEventNoArgs *event_wifi_event_no_args; - RpcReqConfigHeartbeat *req_config_heartbeat; - RpcReqGetCoprocessorFwVersion *req_get_coprocessor_fwversion; - RpcReqGetDhcpDnsStatus *req_get_dhcp_dns; /* ** Requests * */ RpcReqGetMacAddress *req_get_mac_address; - RpcReqWifiGetMaxTxPower *req_get_wifi_max_tx_power; + RpcReqSetMacAddress *req_set_mac_address; RpcReqGetMode *req_get_wifi_mode; - RpcReqGpioConfig *req_gpio_config; - RpcReqGpioGetLevel *req_gpio_get_level; - RpcReqGpioInputEnable *req_gpio_input_enable; - RpcReqGpioReset *req_gpio_reset; - RpcReqGpioSetDirection *req_gpio_set_direction; - RpcReqGpioSetLevel *req_gpio_set_level; - RpcReqGpioSetPullMode *req_gpio_set_pull_mode; + RpcReqSetMode *req_set_wifi_mode; + RpcReqSetPs *req_wifi_set_ps; + RpcReqGetPs *req_wifi_get_ps; RpcReqOTABegin *req_ota_begin; - RpcReqOTAEnd *req_ota_end; RpcReqOTAWrite *req_ota_write; - RpcReqSetDhcpDnsStatus *req_set_dhcp_dns; - RpcReqSetMacAddress *req_set_mac_address; + RpcReqOTAEnd *req_ota_end; RpcReqWifiSetMaxTxPower *req_set_wifi_max_tx_power; - RpcReqSetMode *req_set_wifi_mode; - RpcReqWifiApGetStaAid *req_wifi_ap_get_sta_aid; - RpcReqWifiApGetStaList *req_wifi_ap_get_sta_list; - RpcReqWifiClearApList *req_wifi_clear_ap_list; - RpcReqWifiClearFastConnect *req_wifi_clear_fast_connect; - RpcReqWifiConnect *req_wifi_connect; - RpcReqWifiDeauthSta *req_wifi_deauth_sta; + RpcReqWifiGetMaxTxPower *req_get_wifi_max_tx_power; + RpcReqConfigHeartbeat *req_config_heartbeat; + RpcReqWifiInit *req_wifi_init; RpcReqWifiDeinit *req_wifi_deinit; + RpcReqWifiStart *req_wifi_start; + RpcReqWifiStop *req_wifi_stop; + RpcReqWifiConnect *req_wifi_connect; RpcReqWifiDisconnect *req_wifi_disconnect; - RpcReqWifiGetBand *req_wifi_get_band; - RpcReqWifiGetBandMode *req_wifi_get_bandmode; - RpcReqWifiGetBandwidth *req_wifi_get_bandwidth; - RpcReqWifiGetBandwidths *req_wifi_get_bandwidths; - RpcReqWifiGetChannel *req_wifi_get_channel; + RpcReqWifiSetConfig *req_wifi_set_config; RpcReqWifiGetConfig *req_wifi_get_config; - RpcReqWifiGetCountry *req_wifi_get_country; - RpcReqWifiGetCountryCode *req_wifi_get_country_code; - RpcReqWifiGetInactiveTime *req_wifi_get_inactive_time; - RpcReqWifiGetProtocol *req_wifi_get_protocol; - RpcReqWifiGetProtocols *req_wifi_get_protocols; - RpcReqGetPs *req_wifi_get_ps; - RpcReqWifiInit *req_wifi_init; - RpcReqWifiRestore *req_wifi_restore; - RpcReqWifiScanGetApNum *req_wifi_scan_get_ap_num; - RpcReqWifiScanGetApRecord *req_wifi_scan_get_ap_record; - RpcReqWifiScanGetApRecords *req_wifi_scan_get_ap_records; RpcReqWifiScanStart *req_wifi_scan_start; RpcReqWifiScanStop *req_wifi_scan_stop; - RpcReqWifiSetBand *req_wifi_set_band; - RpcReqWifiSetBandMode *req_wifi_set_bandmode; + RpcReqWifiScanGetApNum *req_wifi_scan_get_ap_num; + RpcReqWifiScanGetApRecords *req_wifi_scan_get_ap_records; + RpcReqWifiClearApList *req_wifi_clear_ap_list; + RpcReqWifiRestore *req_wifi_restore; + RpcReqWifiClearFastConnect *req_wifi_clear_fast_connect; + RpcReqWifiDeauthSta *req_wifi_deauth_sta; + RpcReqWifiStaGetApInfo *req_wifi_sta_get_ap_info; + RpcReqWifiSetProtocol *req_wifi_set_protocol; + RpcReqWifiGetProtocol *req_wifi_get_protocol; RpcReqWifiSetBandwidth *req_wifi_set_bandwidth; - RpcReqWifiSetBandwidths *req_wifi_set_bandwidths; + RpcReqWifiGetBandwidth *req_wifi_get_bandwidth; RpcReqWifiSetChannel *req_wifi_set_channel; - RpcReqWifiSetConfig *req_wifi_set_config; + RpcReqWifiGetChannel *req_wifi_get_channel; RpcReqWifiSetCountry *req_wifi_set_country; - RpcReqWifiSetCountryCode *req_wifi_set_country_code; - RpcReqWifiSetInactiveTime *req_wifi_set_inactive_time; - RpcReqWifiSetProtocol *req_wifi_set_protocol; - RpcReqWifiSetProtocols *req_wifi_set_protocols; - RpcReqSetPs *req_wifi_set_ps; + RpcReqWifiGetCountry *req_wifi_get_country; + RpcReqWifiApGetStaList *req_wifi_ap_get_sta_list; + RpcReqWifiApGetStaAid *req_wifi_ap_get_sta_aid; RpcReqWifiSetStorage *req_wifi_set_storage; + RpcReqWifiSetInactiveTime *req_wifi_set_inactive_time; + RpcReqWifiGetInactiveTime *req_wifi_get_inactive_time; + RpcReqWifiSetCountryCode *req_wifi_set_country_code; + RpcReqWifiGetCountryCode *req_wifi_get_country_code; RpcReqWifiStaGetAid *req_wifi_sta_get_aid; - RpcReqWifiStaGetApInfo *req_wifi_sta_get_ap_info; RpcReqWifiStaGetNegotiatedPhymode *req_wifi_sta_get_negotiated_phymode; RpcReqWifiStaGetRssi *req_wifi_sta_get_rssi; + RpcReqWifiSetProtocols *req_wifi_set_protocols; + RpcReqWifiGetProtocols *req_wifi_get_protocols; + RpcReqWifiSetBandwidths *req_wifi_set_bandwidths; + RpcReqWifiGetBandwidths *req_wifi_get_bandwidths; + RpcReqWifiSetBand *req_wifi_set_band; + RpcReqWifiGetBand *req_wifi_get_band; + RpcReqWifiSetBandMode *req_wifi_set_bandmode; + RpcReqWifiGetBandMode *req_wifi_get_bandmode; + RpcReqGetCoprocessorFwVersion *req_get_coprocessor_fwversion; + RpcReqWifiScanGetApRecord *req_wifi_scan_get_ap_record; + RpcReqSetDhcpDnsStatus *req_set_dhcp_dns; + RpcReqGetDhcpDnsStatus *req_get_dhcp_dns; + RpcReqWifiStaTwtConfig *req_wifi_sta_twt_config; + RpcReqWifiStaItwtSetup *req_wifi_sta_itwt_setup; + RpcReqWifiStaItwtTeardown *req_wifi_sta_itwt_teardown; + RpcReqWifiStaItwtSuspend *req_wifi_sta_itwt_suspend; RpcReqWifiStaItwtGetFlowIdStatus *req_wifi_sta_itwt_get_flow_id_status; RpcReqWifiStaItwtSendProbeReq *req_wifi_sta_itwt_send_probe_req; RpcReqWifiStaItwtSetTargetWakeTimeOffset *req_wifi_sta_itwt_set_target_wake_time_offset; - RpcReqWifiStaItwtSetup *req_wifi_sta_itwt_setup; - RpcReqWifiStaItwtSuspend *req_wifi_sta_itwt_suspend; - RpcReqWifiStaItwtTeardown *req_wifi_sta_itwt_teardown; - RpcReqWifiStaTwtConfig *req_wifi_sta_twt_config; - RpcReqWifiStart *req_wifi_start; - RpcReqWifiStop *req_wifi_stop; - RpcRespConfigHeartbeat *resp_config_heartbeat; - RpcRespGetCoprocessorFwVersion *resp_get_coprocessor_fwversion; - RpcRespGetDhcpDnsStatus *resp_get_dhcp_dns; + RpcReqGpioConfig *req_gpio_config; + RpcReqGpioReset *req_gpio_reset; + RpcReqGpioSetLevel *req_gpio_set_level; + RpcReqGpioGetLevel *req_gpio_get_level; + RpcReqGpioSetDirection *req_gpio_set_direction; + RpcReqGpioInputEnable *req_gpio_input_enable; + RpcReqGpioSetPullMode *req_gpio_set_pull_mode; /* ** Responses * */ RpcRespGetMacAddress *resp_get_mac_address; - RpcRespWifiGetMaxTxPower *resp_get_wifi_max_tx_power; + RpcRespSetMacAddress *resp_set_mac_address; RpcRespGetMode *resp_get_wifi_mode; - RpcRespGpioConfig *resp_gpio_config; - RpcRespGpioGetLevel *resp_gpio_get_level; - RpcRespGpioInputEnable *resp_gpio_input_enable; - RpcRespGpioResetPin *resp_gpio_reset; - RpcRespGpioSetDirection *resp_gpio_set_direction; - RpcRespGpioSetLevel *resp_gpio_set_level; - RpcRespGpioSetPullMode *resp_gpio_set_pull_mode; + RpcRespSetMode *resp_set_wifi_mode; + RpcRespSetPs *resp_wifi_set_ps; + RpcRespGetPs *resp_wifi_get_ps; RpcRespOTABegin *resp_ota_begin; - RpcRespOTAEnd *resp_ota_end; RpcRespOTAWrite *resp_ota_write; - RpcRespSetDhcpDnsStatus *resp_set_dhcp_dns; - RpcRespSetMacAddress *resp_set_mac_address; + RpcRespOTAEnd *resp_ota_end; RpcRespWifiSetMaxTxPower *resp_set_wifi_max_tx_power; - RpcRespSetMode *resp_set_wifi_mode; - RpcRespWifiApGetStaAid *resp_wifi_ap_get_sta_aid; - RpcRespWifiApGetStaList *resp_wifi_ap_get_sta_list; - RpcRespWifiClearApList *resp_wifi_clear_ap_list; - RpcRespWifiClearFastConnect *resp_wifi_clear_fast_connect; - RpcRespWifiConnect *resp_wifi_connect; - RpcRespWifiDeauthSta *resp_wifi_deauth_sta; + RpcRespWifiGetMaxTxPower *resp_get_wifi_max_tx_power; + RpcRespConfigHeartbeat *resp_config_heartbeat; + RpcRespWifiInit *resp_wifi_init; RpcRespWifiDeinit *resp_wifi_deinit; + RpcRespWifiStart *resp_wifi_start; + RpcRespWifiStop *resp_wifi_stop; + RpcRespWifiConnect *resp_wifi_connect; RpcRespWifiDisconnect *resp_wifi_disconnect; - RpcRespWifiGetBand *resp_wifi_get_band; - RpcRespWifiGetBandMode *resp_wifi_get_bandmode; - RpcRespWifiGetBandwidth *resp_wifi_get_bandwidth; - RpcRespWifiGetBandwidths *resp_wifi_get_bandwidths; - RpcRespWifiGetChannel *resp_wifi_get_channel; + RpcRespWifiSetConfig *resp_wifi_set_config; RpcRespWifiGetConfig *resp_wifi_get_config; - RpcRespWifiGetCountry *resp_wifi_get_country; - RpcRespWifiGetCountryCode *resp_wifi_get_country_code; - RpcRespWifiGetInactiveTime *resp_wifi_get_inactive_time; - RpcRespWifiGetProtocol *resp_wifi_get_protocol; - RpcRespWifiGetProtocols *resp_wifi_get_protocols; - RpcRespGetPs *resp_wifi_get_ps; - RpcRespWifiInit *resp_wifi_init; - RpcRespWifiRestore *resp_wifi_restore; - RpcRespWifiScanGetApNum *resp_wifi_scan_get_ap_num; - RpcRespWifiScanGetApRecord *resp_wifi_scan_get_ap_record; - RpcRespWifiScanGetApRecords *resp_wifi_scan_get_ap_records; RpcRespWifiScanStart *resp_wifi_scan_start; RpcRespWifiScanStop *resp_wifi_scan_stop; - RpcRespWifiSetBand *resp_wifi_set_band; - RpcRespWifiSetBandMode *resp_wifi_set_bandmode; + RpcRespWifiScanGetApNum *resp_wifi_scan_get_ap_num; + RpcRespWifiScanGetApRecords *resp_wifi_scan_get_ap_records; + RpcRespWifiClearApList *resp_wifi_clear_ap_list; + RpcRespWifiRestore *resp_wifi_restore; + RpcRespWifiClearFastConnect *resp_wifi_clear_fast_connect; + RpcRespWifiDeauthSta *resp_wifi_deauth_sta; + RpcRespWifiStaGetApInfo *resp_wifi_sta_get_ap_info; + RpcRespWifiSetProtocol *resp_wifi_set_protocol; + RpcRespWifiGetProtocol *resp_wifi_get_protocol; RpcRespWifiSetBandwidth *resp_wifi_set_bandwidth; - RpcRespWifiSetBandwidths *resp_wifi_set_bandwidths; + RpcRespWifiGetBandwidth *resp_wifi_get_bandwidth; RpcRespWifiSetChannel *resp_wifi_set_channel; - RpcRespWifiSetConfig *resp_wifi_set_config; + RpcRespWifiGetChannel *resp_wifi_get_channel; RpcRespWifiSetCountry *resp_wifi_set_country; - RpcRespWifiSetCountryCode *resp_wifi_set_country_code; - RpcRespWifiSetInactiveTime *resp_wifi_set_inactive_time; - RpcRespWifiSetProtocol *resp_wifi_set_protocol; - RpcRespWifiSetProtocols *resp_wifi_set_protocols; - RpcRespSetPs *resp_wifi_set_ps; + RpcRespWifiGetCountry *resp_wifi_get_country; + RpcRespWifiApGetStaList *resp_wifi_ap_get_sta_list; + RpcRespWifiApGetStaAid *resp_wifi_ap_get_sta_aid; RpcRespWifiSetStorage *resp_wifi_set_storage; + RpcRespWifiSetInactiveTime *resp_wifi_set_inactive_time; + RpcRespWifiGetInactiveTime *resp_wifi_get_inactive_time; + RpcRespWifiSetCountryCode *resp_wifi_set_country_code; + RpcRespWifiGetCountryCode *resp_wifi_get_country_code; RpcRespWifiStaGetAid *resp_wifi_sta_get_aid; - RpcRespWifiStaGetApInfo *resp_wifi_sta_get_ap_info; RpcRespWifiStaGetNegotiatedPhymode *resp_wifi_sta_get_negotiated_phymode; RpcRespWifiStaGetRssi *resp_wifi_sta_get_rssi; + RpcRespWifiSetProtocols *resp_wifi_set_protocols; + RpcRespWifiGetProtocols *resp_wifi_get_protocols; + RpcRespWifiSetBandwidths *resp_wifi_set_bandwidths; + RpcRespWifiGetBandwidths *resp_wifi_get_bandwidths; + RpcRespWifiSetBand *resp_wifi_set_band; + RpcRespWifiGetBand *resp_wifi_get_band; + RpcRespWifiSetBandMode *resp_wifi_set_bandmode; + RpcRespWifiGetBandMode *resp_wifi_get_bandmode; + RpcRespGetCoprocessorFwVersion *resp_get_coprocessor_fwversion; + RpcRespWifiScanGetApRecord *resp_wifi_scan_get_ap_record; + RpcRespSetDhcpDnsStatus *resp_set_dhcp_dns; + RpcRespGetDhcpDnsStatus *resp_get_dhcp_dns; + RpcRespWifiStaTwtConfig *resp_wifi_sta_twt_config; + RpcRespWifiStaItwtSetup *resp_wifi_sta_itwt_setup; + RpcRespWifiStaItwtTeardown *resp_wifi_sta_itwt_teardown; + RpcRespWifiStaItwtSuspend *resp_wifi_sta_itwt_suspend; RpcRespWifiStaItwtGetFlowIdStatus *resp_wifi_sta_itwt_get_flow_id_status; RpcRespWifiStaItwtSendProbeReq *resp_wifi_sta_itwt_send_probe_req; RpcRespWifiStaItwtSetTargetWakeTimeOffset *resp_wifi_sta_itwt_set_target_wake_time_offset; - RpcRespWifiStaItwtSetup *resp_wifi_sta_itwt_setup; - RpcRespWifiStaItwtSuspend *resp_wifi_sta_itwt_suspend; - RpcRespWifiStaItwtTeardown *resp_wifi_sta_itwt_teardown; - RpcRespWifiStaTwtConfig *resp_wifi_sta_twt_config; - RpcRespWifiStart *resp_wifi_start; - RpcRespWifiStop *resp_wifi_stop; + RpcRespGpioConfig *resp_gpio_config; + RpcRespGpioResetPin *resp_gpio_reset; + RpcRespGpioSetLevel *resp_gpio_set_level; + RpcRespGpioGetLevel *resp_gpio_get_level; + RpcRespGpioSetDirection *resp_gpio_set_direction; + RpcRespGpioInputEnable *resp_gpio_input_enable; + RpcRespGpioSetPullMode *resp_gpio_set_pull_mode; + /* + ** Notifications * + */ + RpcEventESPInit *event_esp_init; + RpcEventHeartbeat *event_heartbeat; + RpcEventAPStaConnected *event_ap_sta_connected; + RpcEventAPStaDisconnected *event_ap_sta_disconnected; + RpcEventWifiEventNoArgs *event_wifi_event_no_args; + RpcEventStaScanDone *event_sta_scan_done; + RpcEventStaConnected *event_sta_connected; + RpcEventStaDisconnected *event_sta_disconnected; + RpcEventDhcpDnsStatus *event_dhcp_dns; + RpcEventStaItwtSetup *event_sta_itwt_setup; + RpcEventStaItwtTeardown *event_sta_itwt_teardown; + RpcEventStaItwtSuspend *event_sta_itwt_suspend; + RpcEventStaItwtProbe *event_sta_itwt_probe; }; }; #define RPC__INIT \ { PROTOBUF_C_MESSAGE_INIT (&rpc__descriptor) \ -, RPC_TYPE__MsgType_Invalid, RPC_ID__MsgId_Invalid, 0, RPC__PAYLOAD__NOT_SET, {0} } + , RPC_TYPE__MsgType_Invalid, RPC_ID__MsgId_Invalid, 0, RPC__PAYLOAD__NOT_SET, {0} } /* WifiInitConfig methods */ From b8c821dc07529fd0f812cd874c199e51c2c3310f Mon Sep 17 00:00:00 2001 From: YoussefTarkhan Date: Tue, 2 Sep 2025 10:47:38 +0200 Subject: [PATCH 086/114] removed #ifdef ESP_PLATFORM --- host/api/include/esp_hosted_gpio.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/host/api/include/esp_hosted_gpio.h b/host/api/include/esp_hosted_gpio.h index 46a8f606..f97890b8 100644 --- a/host/api/include/esp_hosted_gpio.h +++ b/host/api/include/esp_hosted_gpio.h @@ -9,8 +9,7 @@ #ifndef __ESP_HOSTED_GPIO_H__ #define __ESP_HOSTED_GPIO_H__ -#ifdef ESP_PLATFORM -// OTA API for ESP-IDF + #include "esp_err.h" esp_err_t esp_hosted_gpio_config(const gpio_config_t *pGPIOConfig); @@ -21,6 +20,6 @@ esp_err_t esp_hosted_gpio_set_direction(gpio_num_t gpio_num, gpio_mode_t mode); esp_err_t esp_hosted_gpio_input_enable(gpio_num_t gpio_num); esp_err_t esp_hosted_gpio_set_pull_mode(gpio_num_t gpio_num, gpio_pull_mode_t pull); -#endif + #endif /*__ESP_HOSTED_OTA_H__*/ From c102455b9f8244f85fa3065151f72b9bb40fafa7 Mon Sep 17 00:00:00 2001 From: YoussefTarkhan Date: Tue, 2 Sep 2025 10:48:31 +0200 Subject: [PATCH 087/114] fixed typo --- host/api/include/esp_hosted_gpio.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/host/api/include/esp_hosted_gpio.h b/host/api/include/esp_hosted_gpio.h index f97890b8..b6925b54 100644 --- a/host/api/include/esp_hosted_gpio.h +++ b/host/api/include/esp_hosted_gpio.h @@ -22,4 +22,4 @@ esp_err_t esp_hosted_gpio_set_pull_mode(gpio_num_t gpio_num, gpio_pull_mode_t pu -#endif /*__ESP_HOSTED_OTA_H__*/ +#endif /*__ESP_HOSTED_GPIO_H__*/ From 8845a6c5efc3d610a5cae87275f9d0526bc5ee91 Mon Sep 17 00:00:00 2001 From: YoussefTarkhan Date: Tue, 2 Sep 2025 11:01:46 +0200 Subject: [PATCH 088/114] fixed white space --- host/drivers/rpc/core/rpc_req.c | 52 ++++++++++++++++----------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/host/drivers/rpc/core/rpc_req.c b/host/drivers/rpc/core/rpc_req.c index d1dc5ac0..45e31193 100644 --- a/host/drivers/rpc/core/rpc_req.c +++ b/host/drivers/rpc/core/rpc_req.c @@ -617,7 +617,7 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) RPC_REQ_COPY_STR(p_c->dhcp_gw, p_a->dhcp_gw, 64); RPC_REQ_COPY_STR(p_c->dns_ip, p_a->dns_ip, 64); break; - } case RPC_ID__Req_GpioConfig: { + } case RPC_ID__Req_GpioConfig: { RPC_ALLOC_ASSIGN(RpcReqGpioConfig, req_gpio_config, rpc__req__gpio_config__init); RPC_ALLOC_ELEMENT(RpcGpioConfig, req_payload->config, rpc__gpio_config__init); @@ -629,43 +629,43 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) req_payload->config->pull_down_en = app_req->u.gpio_config.pull_down_en; break; } case RPC_ID__Req_GpioResetPin: { - RPC_ALLOC_ASSIGN(RpcReqGpioReset, req_gpio_reset, - rpc__req__gpio_reset__init); - req_payload->gpio_num = app_req->u.gpio_num; - break; + RPC_ALLOC_ASSIGN(RpcReqGpioReset, req_gpio_reset, + rpc__req__gpio_reset__init); + req_payload->gpio_num = app_req->u.gpio_num; + break; } case RPC_ID__Req_GpioSetLevel: { - RPC_ALLOC_ASSIGN(RpcReqGpioSetLevel, req_gpio_set_level, + RPC_ALLOC_ASSIGN(RpcReqGpioSetLevel, req_gpio_set_level, rpc__req__gpio_set_level__init); - req_payload->gpio_num = app_req->u.gpio_set_level.gpio_num; - req_payload->level = app_req->u.gpio_set_level.level; - break; + req_payload->gpio_num = app_req->u.gpio_set_level.gpio_num; + req_payload->level = app_req->u.gpio_set_level.level; + break; } case RPC_ID__Req_GpioGetLevel: { - RPC_ALLOC_ASSIGN(RpcReqGpioGetLevel, req_gpio_get_level, + RPC_ALLOC_ASSIGN(RpcReqGpioGetLevel, req_gpio_get_level, rpc__req__gpio_get_level__init); - req_payload->gpio_num = app_req->u.gpio_num; - break; + req_payload->gpio_num = app_req->u.gpio_num; + break; } case RPC_ID__Req_GpioSetDirection: { - RPC_ALLOC_ASSIGN(RpcReqGpioSetDirection, req_gpio_set_direction, - rpc__req__gpio_set_direction__init); + RPC_ALLOC_ASSIGN(RpcReqGpioSetDirection, req_gpio_set_direction, + rpc__req__gpio_set_direction__init); - req_payload->gpio_num = app_req->u.gpio_set_direction.gpio_num; - req_payload->mode = app_req->u.gpio_set_direction.mode; - break; + req_payload->gpio_num = app_req->u.gpio_set_direction.gpio_num; + req_payload->mode = app_req->u.gpio_set_direction.mode; + break; } case RPC_ID__Req_GpioInputEnable: { - RPC_ALLOC_ASSIGN(RpcReqGpioInputEnable, req_gpio_input_enable, - rpc__req__gpio_input_enable__init); + RPC_ALLOC_ASSIGN(RpcReqGpioInputEnable, req_gpio_input_enable, + rpc__req__gpio_input_enable__init); - req_payload->gpio_num = app_req->u.gpio_num; - break; + req_payload->gpio_num = app_req->u.gpio_num; + break; } case RPC_ID__Req_GpioSetPullMode: { - RPC_ALLOC_ASSIGN(RpcReqGpioSetPullMode, req_gpio_set_pull_mode, - rpc__req__gpio_set_pull_mode__init); + RPC_ALLOC_ASSIGN(RpcReqGpioSetPullMode, req_gpio_set_pull_mode, + rpc__req__gpio_set_pull_mode__init); - req_payload->gpio_num = app_req->u.gpio_set_pull_mode.gpio_num; - req_payload->pull = app_req->u.gpio_set_pull_mode.pull_mode; - break; + req_payload->gpio_num = app_req->u.gpio_set_pull_mode.gpio_num; + req_payload->pull = app_req->u.gpio_set_pull_mode.pull_mode; + break; } default: { *failure_status = RPC_ERR_UNSUPPORTED_MSG; ESP_LOGE(TAG, "Unsupported RPC Req[%u]",req->msg_id); From 43efb4613796794a703b23e370a9c8657c8550d6 Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Tue, 12 Aug 2025 10:27:02 +0800 Subject: [PATCH 089/114] feature(sdio_c61): Add support for SDIO on C61 - enable support for C61 SDIO - added CI for C61 (sdio only for now) - fixed CI for C5: still a preview target --- .gitlab/ci/merge_request_jobs.yml | 30 +++++++++++++++++-- .gitlab/ci/templates.yml | 10 +++++-- Kconfig | 2 +- host/drivers/transport/sdio/sdio_reg.h | 2 +- host/drivers/transport/transport_drv.c | 8 ++++- host/drivers/transport/transport_drv.h | 1 + host/esp_hosted_host_fw_ver.h | 2 +- .../include/port_esp_hosted_host_config.h | 2 ++ idf_component.yml | 2 +- slave/main/Kconfig.projbuild | 8 +++++ slave/main/esp_hosted_coprocessor_fw_ver.h | 2 +- slave/partitions.esp32c61.csv | 7 +++++ slave/sdkconfig.defaults.esp32c61 | 16 ++++++++++ 13 files changed, 82 insertions(+), 10 deletions(-) create mode 100644 slave/partitions.esp32c61.csv create mode 100644 slave/sdkconfig.defaults.esp32c61 diff --git a/.gitlab/ci/merge_request_jobs.yml b/.gitlab/ci/merge_request_jobs.yml index 2b78fbe6..9009336f 100644 --- a/.gitlab/ci/merge_request_jobs.yml +++ b/.gitlab/ci/merge_request_jobs.yml @@ -26,7 +26,7 @@ build_idf_master: parallel: matrix: - IDF_TARGET: ["esp32p4"] - IDF_SLAVE_TARGET: ["esp32c6", "esp32c5" ] + IDF_SLAVE_TARGET: ["esp32c6", "esp32c5", "esp32c61" ] IDF_EXAMPLE_PATH: [examples/protocols/mqtt/tcp, examples/wifi/iperf] build_coprocessor_idf_v5.5: @@ -47,5 +47,31 @@ build_coprocessor_idf_master: image: espressif/idf:latest parallel: matrix: - - IDF_TARGET: ["esp32c6", "esp32c5"] + - IDF_TARGET: ["esp32c6"] + SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart"] + +### build target for SOCs still in preview +build_coprocessor_idf_master_preview_targets_c5: + variables: + EXTRA_BUILD_FLAGS: "--enable-preview-targets" + rules: + - !reference [.default_rules, rules] + extends: .build_template_coprocessor + image: espressif/idf:latest + parallel: + matrix: + - IDF_TARGET: ["esp32c5"] SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart"] + +# for C61, build for sdio only for now +build_coprocessor_idf_master_preview_targets_c61: + variables: + EXTRA_BUILD_FLAGS: "--enable-preview-targets" + rules: + - !reference [.default_rules, rules] + extends: .build_template_coprocessor + image: espressif/idf:latest + parallel: + matrix: + - IDF_TARGET: ["esp32c61"] + SLAVE_CI_FILE: ["sdio" ] diff --git a/.gitlab/ci/templates.yml b/.gitlab/ci/templates.yml index e910c627..3ef32462 100644 --- a/.gitlab/ci/templates.yml +++ b/.gitlab/ci/templates.yml @@ -26,8 +26,14 @@ - export EXTRA_CFLAGS="${PEDANTIC_FLAGS} -Wstrict-prototypes" - export EXTRA_CXXFLAGS="${PEDANTIC_FLAGS}" - cd slave - - idf-build-apps find --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} - - idf-build-apps build --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} + - | + if [ -z "${EXTRA_BUILD_FLAGS}" ]; then + idf-build-apps find --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} + idf-build-apps build --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} + else + idf-build-apps find "${EXTRA_BUILD_FLAGS}" --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} + idf-build-apps build "${EXTRA_BUILD_FLAGS}" --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} + fi .build_template: stage: build diff --git a/Kconfig b/Kconfig index 4df1daaa..b987b3de 100644 --- a/Kconfig +++ b/Kconfig @@ -52,7 +52,7 @@ menu "ESP-Hosted config" # y if SDIO Transport is available, based on host and slave selection config ESP_HOSTED_PRIV_SDIO_OPTION bool - default y if (IDF_TARGET_ESP32 || IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32P4) && (SLAVE_IDF_TARGET_ESP32 || SLAVE_IDF_TARGET_ESP32C6 || SLAVE_IDF_TARGET_ESP32C5) + default y if (IDF_TARGET_ESP32 || IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32P4) && (SLAVE_IDF_TARGET_ESP32 || SLAVE_IDF_TARGET_ESP32C6 || SLAVE_IDF_TARGET_ESP32C5 || SLAVE_IDF_TARGET_ESP32C61) default n # y if SPI HD Transport is available, based on host and slave selection diff --git a/host/drivers/transport/sdio/sdio_reg.h b/host/drivers/transport/sdio/sdio_reg.h index a72134d8..3fb8b7cf 100644 --- a/host/drivers/transport/sdio/sdio_reg.h +++ b/host/drivers/transport/sdio/sdio_reg.h @@ -55,7 +55,7 @@ #define ESP_HOST_INT_ENA_REG (ESP_SLAVE_SLCHOST_BASE + 0xDC) /* Host side interrupts for ESP_HOST_INT_ENA_REG */ -#if H_SLAVE_TARGET_ESP32 || H_SLAVE_TARGET_ESP32C6 || H_SLAVE_TARGET_ESP32C5 +#if H_SLAVE_TARGET_ESP32 || H_SLAVE_TARGET_ESP32C6 || H_SLAVE_TARGET_ESP32C5 || H_SLAVE_TARGET_ESP32C61 #define SDIO_INT_NEW_PACKET (23) #define SDIO_INT_START_THROTTLE (7) #define SDIO_INT_STOP_THROTTLE (6) diff --git a/host/drivers/transport/transport_drv.c b/host/drivers/transport/transport_drv.c index 438f1faa..e5d3565a 100644 --- a/host/drivers/transport/transport_drv.c +++ b/host/drivers/transport/transport_drv.c @@ -491,6 +491,9 @@ static esp_err_t get_chip_str_from_id(int chip_id, char* chip_str) case ESP_PRIV_FIRMWARE_CHIP_ESP32C5: strcpy(chip_str, "esp32c5"); break; + case ESP_PRIV_FIRMWARE_CHIP_ESP32C61: + strcpy(chip_str, "esp32c61"); + break; default: ESP_LOGW(TAG, "Unsupported chip id: %u", chip_id); strcpy(chip_str, "unsupported"); @@ -519,6 +522,8 @@ static void verify_host_config_for_slave(uint8_t chip_type) exp_chip_id = ESP_PRIV_FIRMWARE_CHIP_ESP32S3; #elif H_SLAVE_TARGET_ESP32C5 exp_chip_id = ESP_PRIV_FIRMWARE_CHIP_ESP32C5; +#elif H_SLAVE_TARGET_ESP32C61 + exp_chip_id = ESP_PRIV_FIRMWARE_CHIP_ESP32C61; #else ESP_LOGW(TAG, "Incorrect host config for ESP slave chipset[%x]", chip_type); #endif @@ -731,7 +736,8 @@ static int process_init_event(uint8_t *evt_buf, uint16_t len) (chip_type != ESP_PRIV_FIRMWARE_CHIP_ESP32C2) && (chip_type != ESP_PRIV_FIRMWARE_CHIP_ESP32C3) && (chip_type != ESP_PRIV_FIRMWARE_CHIP_ESP32C6) && - (chip_type != ESP_PRIV_FIRMWARE_CHIP_ESP32C5)) { + (chip_type != ESP_PRIV_FIRMWARE_CHIP_ESP32C5) && + (chip_type != ESP_PRIV_FIRMWARE_CHIP_ESP32C61)) { ESP_LOGI(TAG, "ESP board type is not mentioned, ignoring [%d]\n\r", chip_type); chip_type = ESP_PRIV_FIRMWARE_CHIP_UNRECOGNIZED; return -1; diff --git a/host/drivers/transport/transport_drv.h b/host/drivers/transport/transport_drv.h index 01e2c888..b85e190a 100644 --- a/host/drivers/transport/transport_drv.h +++ b/host/drivers/transport/transport_drv.h @@ -43,6 +43,7 @@ extern "C" { #define ESP_PRIV_FIRMWARE_CHIP_ESP32C2 (0xC) #define ESP_PRIV_FIRMWARE_CHIP_ESP32C6 (0xD) #define ESP_PRIV_FIRMWARE_CHIP_ESP32C5 (0x17) +#define ESP_PRIV_FIRMWARE_CHIP_ESP32C61 (0x14) #define MAX_SPI_BUFFER_SIZE ESP_TRANSPORT_SPI_MAX_BUF_SIZE #define MAX_SDIO_BUFFER_SIZE ESP_TRANSPORT_SDIO_MAX_BUF_SIZE diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index 819597ef..16aabe64 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 #define ESP_HOSTED_VERSION_MINOR_1 3 -#define ESP_HOSTED_VERSION_PATCH_1 2 +#define ESP_HOSTED_VERSION_PATCH_1 3 #endif diff --git a/host/port/esp/freertos/include/port_esp_hosted_host_config.h b/host/port/esp/freertos/include/port_esp_hosted_host_config.h index d6511e4e..a1697b4a 100644 --- a/host/port/esp/freertos/include/port_esp_hosted_host_config.h +++ b/host/port/esp/freertos/include/port_esp_hosted_host_config.h @@ -69,6 +69,8 @@ enum { #define H_SLAVE_TARGET_ESP32C6 1 #elif CONFIG_SLAVE_IDF_TARGET_ESP32C5 #define H_SLAVE_TARGET_ESP32C5 1 +#elif CONFIG_SLAVE_IDF_TARGET_ESP32C61 + #define H_SLAVE_TARGET_ESP32C61 1 #else #error "Unknown Slave Target" #endif diff --git a/idf_component.yml b/idf_component.yml index 7a82fa46..e19f7dba 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.3.2" +version: "2.3.3" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/Kconfig.projbuild b/slave/main/Kconfig.projbuild index ef987edf..d0228194 100644 --- a/slave/main/Kconfig.projbuild +++ b/slave/main/Kconfig.projbuild @@ -301,6 +301,7 @@ menu "Example Configuration" int "CMD GPIO number" range 15 15 if IDF_TARGET_ESP32 range 18 18 if IDF_TARGET_ESP32C6 + range 25 25 if IDF_TARGET_ESP32C61 range 10 10 if IDF_TARGET_ESP32C5 help "Value cannot be configured. Displayed for reference." @@ -309,6 +310,7 @@ menu "Example Configuration" int "CLK GPIO number" range 14 14 if IDF_TARGET_ESP32 range 19 19 if IDF_TARGET_ESP32C6 + range 26 26 if IDF_TARGET_ESP32C61 range 9 9 if IDF_TARGET_ESP32C5 help "Value cannot be configured. Displayed for reference." @@ -317,6 +319,7 @@ menu "Example Configuration" int "D0 GPIO number" range 2 2 if IDF_TARGET_ESP32 range 20 20 if IDF_TARGET_ESP32C6 + range 27 27 if IDF_TARGET_ESP32C61 range 8 8 if IDF_TARGET_ESP32C5 help "Value cannot be configured. Displayed for reference." @@ -325,6 +328,7 @@ menu "Example Configuration" int "D1 GPIO number" range 4 4 if IDF_TARGET_ESP32 range 21 21 if IDF_TARGET_ESP32C6 + range 28 28 if IDF_TARGET_ESP32C61 range 7 7 if IDF_TARGET_ESP32C5 help "Value cannot be configured. Displayed for reference." @@ -333,6 +337,7 @@ menu "Example Configuration" int "D2 GPIO number" range 12 12 if IDF_TARGET_ESP32 range 22 22 if IDF_TARGET_ESP32C6 + range 22 22 if IDF_TARGET_ESP32C61 range 14 14 if IDF_TARGET_ESP32C5 help "Value cannot be configured. Displayed for reference." @@ -341,6 +346,7 @@ menu "Example Configuration" int "D3 GPIO number" range 13 13 if IDF_TARGET_ESP32 range 23 23 if IDF_TARGET_ESP32C6 + range 23 23 if IDF_TARGET_ESP32C61 range 13 13 if IDF_TARGET_ESP32C5 help "Value cannot be configured. Displayed for reference." @@ -371,12 +377,14 @@ menu "Example Configuration" config ESP_SDIO_TX_Q_SIZE int "SDIO TX queue size" + default 10 if IDF_TARGET_ESP32C61 default 20 help Very small TX queue will lower ESP --> SDIO -- Host data rate config ESP_SDIO_RX_Q_SIZE int "SDIO RX queue size" + default 10 if IDF_TARGET_ESP32C61 default 20 help Very small RX queue will lower ESP <-- SDIO -- Host data rate diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index 4ad1c4a6..58692640 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 #define PROJECT_VERSION_MINOR_1 3 -#define PROJECT_VERSION_PATCH_1 2 +#define PROJECT_VERSION_PATCH_1 3 #endif diff --git a/slave/partitions.esp32c61.csv b/slave/partitions.esp32c61.csv new file mode 100644 index 00000000..0252a551 --- /dev/null +++ b/slave/partitions.esp32c61.csv @@ -0,0 +1,7 @@ +# ESP-IDF Partition Table +# Name, Type, SubType, Offset, Size, Flags +nvs,data,nvs,0x9000,16K, +otadata,data,ota,0xd000,8K, +phy_init,data,phy,0xf000,4K, +ota_0,app,ota_0,0x10000,1536K, +ota_1,app,ota_1,0x190000,1536K, diff --git a/slave/sdkconfig.defaults.esp32c61 b/slave/sdkconfig.defaults.esp32c61 new file mode 100644 index 00000000..56dd3a78 --- /dev/null +++ b/slave/sdkconfig.defaults.esp32c61 @@ -0,0 +1,16 @@ +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y + +# BT Configuration +CONFIG_BT_ENABLED=y +CONFIG_BT_CONTROLLER_ONLY=y +CONFIG_BT_BLUEDROID_ENABLED= +CONFIG_BT_LE_SLEEP_ENABLE=y + +# SPI/SDIO only +CONFIG_BT_LE_HCI_INTERFACE_USE_RAM=y + +CONFIG_ESP_CACHE_MALLOC=n + +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.esp32c61.csv" +CONFIG_ESP_PKT_STATS=y From 3fa785a1a51e3dd93c4e8468df714bd8044f7a52 Mon Sep 17 00:00:00 2001 From: Shreyas Sheth Date: Wed, 10 Sep 2025 13:27:59 +0800 Subject: [PATCH 090/114] Feat/add wifi ent api --- CMakeLists.txt | 2 +- common/proto/esp_hosted_rpc.pb-c.c | 15903 ++++++++++------ common/proto/esp_hosted_rpc.pb-c.h | 8330 ++++---- common/proto/esp_hosted_rpc.proto | 302 +- host/api/priv/esp_hosted_api_priv.h | 35 + host/api/src/esp_hosted_api.c | 154 + host/api/src/esp_wifi_weak.c | 128 + host/drivers/rpc/core/rpc_req.c | 108 + host/drivers/rpc/core/rpc_rsp.c | 99 + host/drivers/rpc/slaveif/rpc_slave_if.c | 148 + host/drivers/rpc/slaveif/rpc_slave_if.h | 118 + host/drivers/rpc/wrap/rpc_wrap.c | 324 + host/drivers/rpc/wrap/rpc_wrap.h | 36 + host/esp_hosted_host_fw_ver.h | 4 +- .../port_esp_hosted_host_wifi_config.h | 23 + idf_component.yml | 2 +- slave/CMakeLists.txt | 2 +- slave/main/esp_hosted_coprocessor_fw_ver.h | 4 +- slave/main/slave_control.c | 505 +- slave/main/slave_wifi_config.h | 12 + slave/sdkconfig.ci.all_features | 1 + slave/sdkconfig.ci.wifi_enterprise | 1 + slave/sdkconfig.defaults | 3 + 23 files changed, 17459 insertions(+), 8785 deletions(-) create mode 100644 slave/sdkconfig.ci.wifi_enterprise diff --git a/CMakeLists.txt b/CMakeLists.txt index 0800e4e9..0ba89f2e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -123,7 +123,7 @@ if(CONFIG_ESP_HOSTED_ENABLED) endif() idf_component_register(SRCS ${srcs} - PRIV_REQUIRES soc esp_event esp_netif esp_timer driver esp_wifi bt esp_http_client console + PRIV_REQUIRES soc esp_event esp_netif esp_timer driver esp_wifi bt esp_http_client console wpa_supplicant INCLUDE_DIRS ${pub_include} PRIV_INCLUDE_DIRS ${priv_include}) diff --git a/common/proto/esp_hosted_rpc.pb-c.c b/common/proto/esp_hosted_rpc.pb-c.c index 649b988c..74c478db 100644 --- a/common/proto/esp_hosted_rpc.pb-c.c +++ b/common/proto/esp_hosted_rpc.pb-c.c @@ -2122,6 +2122,51 @@ void connected_stalist__free_unpacked assert(message->base.descriptor == &connected_stalist__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } +void eap_fast_config__init + (EapFastConfig *message) +{ + static const EapFastConfig init_value = EAP_FAST_CONFIG__INIT; + *message = init_value; +} +size_t eap_fast_config__get_packed_size + (const EapFastConfig *message) +{ + assert(message->base.descriptor == &eap_fast_config__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t eap_fast_config__pack + (const EapFastConfig *message, + uint8_t *out) +{ + assert(message->base.descriptor == &eap_fast_config__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t eap_fast_config__pack_to_buffer + (const EapFastConfig *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &eap_fast_config__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +EapFastConfig * + eap_fast_config__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (EapFastConfig *) + protobuf_c_message_unpack (&eap_fast_config__descriptor, + allocator, len, data); +} +void eap_fast_config__free_unpacked + (EapFastConfig *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &eap_fast_config__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} void rpc__req__get_mac_address__init (RpcReqGetMacAddress *message) { @@ -8647,263 +8692,2423 @@ void rpc__event__sta_itwt_probe__free_unpacked assert(message->base.descriptor == &rpc__event__sta_itwt_probe__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__init - (Rpc *message) +void rpc__req__wifi_sta_enterprise_enable__init + (RpcReqWifiStaEnterpriseEnable *message) { - static const Rpc init_value = RPC__INIT; + static const RpcReqWifiStaEnterpriseEnable init_value = RPC__REQ__WIFI_STA_ENTERPRISE_ENABLE__INIT; *message = init_value; } -size_t rpc__get_packed_size - (const Rpc *message) +size_t rpc__req__wifi_sta_enterprise_enable__get_packed_size + (const RpcReqWifiStaEnterpriseEnable *message) { - assert(message->base.descriptor == &rpc__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_enterprise_enable__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__pack - (const Rpc *message, +size_t rpc__req__wifi_sta_enterprise_enable__pack + (const RpcReqWifiStaEnterpriseEnable *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_enterprise_enable__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__pack_to_buffer - (const Rpc *message, +size_t rpc__req__wifi_sta_enterprise_enable__pack_to_buffer + (const RpcReqWifiStaEnterpriseEnable *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_enterprise_enable__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -Rpc * - rpc__unpack +RpcReqWifiStaEnterpriseEnable * + rpc__req__wifi_sta_enterprise_enable__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (Rpc *) - protobuf_c_message_unpack (&rpc__descriptor, + return (RpcReqWifiStaEnterpriseEnable *) + protobuf_c_message_unpack (&rpc__req__wifi_sta_enterprise_enable__descriptor, allocator, len, data); } -void rpc__free_unpacked - (Rpc *message, +void rpc__req__wifi_sta_enterprise_enable__free_unpacked + (RpcReqWifiStaEnterpriseEnable *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_enterprise_enable__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -static const ProtobufCFieldDescriptor wifi_init_config__field_descriptors[24] = +void rpc__resp__wifi_sta_enterprise_enable__init + (RpcRespWifiStaEnterpriseEnable *message) { - { - "static_rx_buf_num", - 1, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, static_rx_buf_num), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "dynamic_rx_buf_num", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, dynamic_rx_buf_num), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "tx_buf_type", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, tx_buf_type), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "static_tx_buf_num", - 4, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, static_tx_buf_num), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "dynamic_tx_buf_num", - 5, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, dynamic_tx_buf_num), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "cache_tx_buf_num", - 6, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, cache_tx_buf_num), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "csi_enable", - 7, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, csi_enable), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "ampdu_rx_enable", - 8, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, ampdu_rx_enable), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "ampdu_tx_enable", - 9, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, ampdu_tx_enable), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "amsdu_tx_enable", - 10, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, amsdu_tx_enable), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "nvs_enable", - 11, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, nvs_enable), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "nano_enable", - 12, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, nano_enable), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "rx_ba_win", - 13, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, rx_ba_win), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "wifi_task_core_id", - 14, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, wifi_task_core_id), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "beacon_max_len", - 15, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, beacon_max_len), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "mgmt_sbuf_num", - 16, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, mgmt_sbuf_num), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "feature_caps", - 17, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT64, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, feature_caps), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "sta_disconnected_pm", - 18, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, - 0, /* quantifier_offset */ + static const RpcRespWifiStaEnterpriseEnable init_value = RPC__RESP__WIFI_STA_ENTERPRISE_ENABLE__INIT; + *message = init_value; +} +size_t rpc__resp__wifi_sta_enterprise_enable__get_packed_size + (const RpcRespWifiStaEnterpriseEnable *message) +{ + assert(message->base.descriptor == &rpc__resp__wifi_sta_enterprise_enable__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__wifi_sta_enterprise_enable__pack + (const RpcRespWifiStaEnterpriseEnable *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__wifi_sta_enterprise_enable__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__wifi_sta_enterprise_enable__pack_to_buffer + (const RpcRespWifiStaEnterpriseEnable *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__wifi_sta_enterprise_enable__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespWifiStaEnterpriseEnable * + rpc__resp__wifi_sta_enterprise_enable__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespWifiStaEnterpriseEnable *) + protobuf_c_message_unpack (&rpc__resp__wifi_sta_enterprise_enable__descriptor, + allocator, len, data); +} +void rpc__resp__wifi_sta_enterprise_enable__free_unpacked + (RpcRespWifiStaEnterpriseEnable *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__wifi_sta_enterprise_enable__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__wifi_sta_enterprise_disable__init + (RpcReqWifiStaEnterpriseDisable *message) +{ + static const RpcReqWifiStaEnterpriseDisable init_value = RPC__REQ__WIFI_STA_ENTERPRISE_DISABLE__INIT; + *message = init_value; +} +size_t rpc__req__wifi_sta_enterprise_disable__get_packed_size + (const RpcReqWifiStaEnterpriseDisable *message) +{ + assert(message->base.descriptor == &rpc__req__wifi_sta_enterprise_disable__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__wifi_sta_enterprise_disable__pack + (const RpcReqWifiStaEnterpriseDisable *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__wifi_sta_enterprise_disable__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__wifi_sta_enterprise_disable__pack_to_buffer + (const RpcReqWifiStaEnterpriseDisable *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__wifi_sta_enterprise_disable__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqWifiStaEnterpriseDisable * + rpc__req__wifi_sta_enterprise_disable__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqWifiStaEnterpriseDisable *) + protobuf_c_message_unpack (&rpc__req__wifi_sta_enterprise_disable__descriptor, + allocator, len, data); +} +void rpc__req__wifi_sta_enterprise_disable__free_unpacked + (RpcReqWifiStaEnterpriseDisable *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__wifi_sta_enterprise_disable__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__wifi_sta_enterprise_disable__init + (RpcRespWifiStaEnterpriseDisable *message) +{ + static const RpcRespWifiStaEnterpriseDisable init_value = RPC__RESP__WIFI_STA_ENTERPRISE_DISABLE__INIT; + *message = init_value; +} +size_t rpc__resp__wifi_sta_enterprise_disable__get_packed_size + (const RpcRespWifiStaEnterpriseDisable *message) +{ + assert(message->base.descriptor == &rpc__resp__wifi_sta_enterprise_disable__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__wifi_sta_enterprise_disable__pack + (const RpcRespWifiStaEnterpriseDisable *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__wifi_sta_enterprise_disable__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__wifi_sta_enterprise_disable__pack_to_buffer + (const RpcRespWifiStaEnterpriseDisable *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__wifi_sta_enterprise_disable__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespWifiStaEnterpriseDisable * + rpc__resp__wifi_sta_enterprise_disable__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespWifiStaEnterpriseDisable *) + protobuf_c_message_unpack (&rpc__resp__wifi_sta_enterprise_disable__descriptor, + allocator, len, data); +} +void rpc__resp__wifi_sta_enterprise_disable__free_unpacked + (RpcRespWifiStaEnterpriseDisable *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__wifi_sta_enterprise_disable__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__eap_set_identity__init + (RpcReqEapSetIdentity *message) +{ + static const RpcReqEapSetIdentity init_value = RPC__REQ__EAP_SET_IDENTITY__INIT; + *message = init_value; +} +size_t rpc__req__eap_set_identity__get_packed_size + (const RpcReqEapSetIdentity *message) +{ + assert(message->base.descriptor == &rpc__req__eap_set_identity__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__eap_set_identity__pack + (const RpcReqEapSetIdentity *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__eap_set_identity__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__eap_set_identity__pack_to_buffer + (const RpcReqEapSetIdentity *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__eap_set_identity__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqEapSetIdentity * + rpc__req__eap_set_identity__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqEapSetIdentity *) + protobuf_c_message_unpack (&rpc__req__eap_set_identity__descriptor, + allocator, len, data); +} +void rpc__req__eap_set_identity__free_unpacked + (RpcReqEapSetIdentity *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__eap_set_identity__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__eap_set_identity__init + (RpcRespEapSetIdentity *message) +{ + static const RpcRespEapSetIdentity init_value = RPC__RESP__EAP_SET_IDENTITY__INIT; + *message = init_value; +} +size_t rpc__resp__eap_set_identity__get_packed_size + (const RpcRespEapSetIdentity *message) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_identity__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__eap_set_identity__pack + (const RpcRespEapSetIdentity *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_identity__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__eap_set_identity__pack_to_buffer + (const RpcRespEapSetIdentity *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_identity__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespEapSetIdentity * + rpc__resp__eap_set_identity__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespEapSetIdentity *) + protobuf_c_message_unpack (&rpc__resp__eap_set_identity__descriptor, + allocator, len, data); +} +void rpc__resp__eap_set_identity__free_unpacked + (RpcRespEapSetIdentity *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__eap_set_identity__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__eap_clear_identity__init + (RpcReqEapClearIdentity *message) +{ + static const RpcReqEapClearIdentity init_value = RPC__REQ__EAP_CLEAR_IDENTITY__INIT; + *message = init_value; +} +size_t rpc__req__eap_clear_identity__get_packed_size + (const RpcReqEapClearIdentity *message) +{ + assert(message->base.descriptor == &rpc__req__eap_clear_identity__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__eap_clear_identity__pack + (const RpcReqEapClearIdentity *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__eap_clear_identity__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__eap_clear_identity__pack_to_buffer + (const RpcReqEapClearIdentity *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__eap_clear_identity__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqEapClearIdentity * + rpc__req__eap_clear_identity__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqEapClearIdentity *) + protobuf_c_message_unpack (&rpc__req__eap_clear_identity__descriptor, + allocator, len, data); +} +void rpc__req__eap_clear_identity__free_unpacked + (RpcReqEapClearIdentity *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__eap_clear_identity__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__eap_clear_identity__init + (RpcRespEapClearIdentity *message) +{ + static const RpcRespEapClearIdentity init_value = RPC__RESP__EAP_CLEAR_IDENTITY__INIT; + *message = init_value; +} +size_t rpc__resp__eap_clear_identity__get_packed_size + (const RpcRespEapClearIdentity *message) +{ + assert(message->base.descriptor == &rpc__resp__eap_clear_identity__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__eap_clear_identity__pack + (const RpcRespEapClearIdentity *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__eap_clear_identity__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__eap_clear_identity__pack_to_buffer + (const RpcRespEapClearIdentity *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__eap_clear_identity__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespEapClearIdentity * + rpc__resp__eap_clear_identity__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespEapClearIdentity *) + protobuf_c_message_unpack (&rpc__resp__eap_clear_identity__descriptor, + allocator, len, data); +} +void rpc__resp__eap_clear_identity__free_unpacked + (RpcRespEapClearIdentity *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__eap_clear_identity__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__eap_set_username__init + (RpcReqEapSetUsername *message) +{ + static const RpcReqEapSetUsername init_value = RPC__REQ__EAP_SET_USERNAME__INIT; + *message = init_value; +} +size_t rpc__req__eap_set_username__get_packed_size + (const RpcReqEapSetUsername *message) +{ + assert(message->base.descriptor == &rpc__req__eap_set_username__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__eap_set_username__pack + (const RpcReqEapSetUsername *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__eap_set_username__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__eap_set_username__pack_to_buffer + (const RpcReqEapSetUsername *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__eap_set_username__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqEapSetUsername * + rpc__req__eap_set_username__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqEapSetUsername *) + protobuf_c_message_unpack (&rpc__req__eap_set_username__descriptor, + allocator, len, data); +} +void rpc__req__eap_set_username__free_unpacked + (RpcReqEapSetUsername *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__eap_set_username__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__eap_set_username__init + (RpcRespEapSetUsername *message) +{ + static const RpcRespEapSetUsername init_value = RPC__RESP__EAP_SET_USERNAME__INIT; + *message = init_value; +} +size_t rpc__resp__eap_set_username__get_packed_size + (const RpcRespEapSetUsername *message) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_username__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__eap_set_username__pack + (const RpcRespEapSetUsername *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_username__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__eap_set_username__pack_to_buffer + (const RpcRespEapSetUsername *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_username__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespEapSetUsername * + rpc__resp__eap_set_username__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespEapSetUsername *) + protobuf_c_message_unpack (&rpc__resp__eap_set_username__descriptor, + allocator, len, data); +} +void rpc__resp__eap_set_username__free_unpacked + (RpcRespEapSetUsername *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__eap_set_username__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__eap_clear_username__init + (RpcReqEapClearUsername *message) +{ + static const RpcReqEapClearUsername init_value = RPC__REQ__EAP_CLEAR_USERNAME__INIT; + *message = init_value; +} +size_t rpc__req__eap_clear_username__get_packed_size + (const RpcReqEapClearUsername *message) +{ + assert(message->base.descriptor == &rpc__req__eap_clear_username__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__eap_clear_username__pack + (const RpcReqEapClearUsername *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__eap_clear_username__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__eap_clear_username__pack_to_buffer + (const RpcReqEapClearUsername *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__eap_clear_username__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqEapClearUsername * + rpc__req__eap_clear_username__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqEapClearUsername *) + protobuf_c_message_unpack (&rpc__req__eap_clear_username__descriptor, + allocator, len, data); +} +void rpc__req__eap_clear_username__free_unpacked + (RpcReqEapClearUsername *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__eap_clear_username__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__eap_clear_username__init + (RpcRespEapClearUsername *message) +{ + static const RpcRespEapClearUsername init_value = RPC__RESP__EAP_CLEAR_USERNAME__INIT; + *message = init_value; +} +size_t rpc__resp__eap_clear_username__get_packed_size + (const RpcRespEapClearUsername *message) +{ + assert(message->base.descriptor == &rpc__resp__eap_clear_username__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__eap_clear_username__pack + (const RpcRespEapClearUsername *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__eap_clear_username__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__eap_clear_username__pack_to_buffer + (const RpcRespEapClearUsername *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__eap_clear_username__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespEapClearUsername * + rpc__resp__eap_clear_username__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespEapClearUsername *) + protobuf_c_message_unpack (&rpc__resp__eap_clear_username__descriptor, + allocator, len, data); +} +void rpc__resp__eap_clear_username__free_unpacked + (RpcRespEapClearUsername *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__eap_clear_username__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__eap_set_password__init + (RpcReqEapSetPassword *message) +{ + static const RpcReqEapSetPassword init_value = RPC__REQ__EAP_SET_PASSWORD__INIT; + *message = init_value; +} +size_t rpc__req__eap_set_password__get_packed_size + (const RpcReqEapSetPassword *message) +{ + assert(message->base.descriptor == &rpc__req__eap_set_password__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__eap_set_password__pack + (const RpcReqEapSetPassword *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__eap_set_password__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__eap_set_password__pack_to_buffer + (const RpcReqEapSetPassword *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__eap_set_password__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqEapSetPassword * + rpc__req__eap_set_password__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqEapSetPassword *) + protobuf_c_message_unpack (&rpc__req__eap_set_password__descriptor, + allocator, len, data); +} +void rpc__req__eap_set_password__free_unpacked + (RpcReqEapSetPassword *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__eap_set_password__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__eap_set_password__init + (RpcRespEapSetPassword *message) +{ + static const RpcRespEapSetPassword init_value = RPC__RESP__EAP_SET_PASSWORD__INIT; + *message = init_value; +} +size_t rpc__resp__eap_set_password__get_packed_size + (const RpcRespEapSetPassword *message) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_password__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__eap_set_password__pack + (const RpcRespEapSetPassword *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_password__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__eap_set_password__pack_to_buffer + (const RpcRespEapSetPassword *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_password__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespEapSetPassword * + rpc__resp__eap_set_password__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespEapSetPassword *) + protobuf_c_message_unpack (&rpc__resp__eap_set_password__descriptor, + allocator, len, data); +} +void rpc__resp__eap_set_password__free_unpacked + (RpcRespEapSetPassword *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__eap_set_password__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__eap_clear_password__init + (RpcReqEapClearPassword *message) +{ + static const RpcReqEapClearPassword init_value = RPC__REQ__EAP_CLEAR_PASSWORD__INIT; + *message = init_value; +} +size_t rpc__req__eap_clear_password__get_packed_size + (const RpcReqEapClearPassword *message) +{ + assert(message->base.descriptor == &rpc__req__eap_clear_password__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__eap_clear_password__pack + (const RpcReqEapClearPassword *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__eap_clear_password__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__eap_clear_password__pack_to_buffer + (const RpcReqEapClearPassword *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__eap_clear_password__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqEapClearPassword * + rpc__req__eap_clear_password__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqEapClearPassword *) + protobuf_c_message_unpack (&rpc__req__eap_clear_password__descriptor, + allocator, len, data); +} +void rpc__req__eap_clear_password__free_unpacked + (RpcReqEapClearPassword *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__eap_clear_password__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__eap_clear_password__init + (RpcRespEapClearPassword *message) +{ + static const RpcRespEapClearPassword init_value = RPC__RESP__EAP_CLEAR_PASSWORD__INIT; + *message = init_value; +} +size_t rpc__resp__eap_clear_password__get_packed_size + (const RpcRespEapClearPassword *message) +{ + assert(message->base.descriptor == &rpc__resp__eap_clear_password__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__eap_clear_password__pack + (const RpcRespEapClearPassword *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__eap_clear_password__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__eap_clear_password__pack_to_buffer + (const RpcRespEapClearPassword *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__eap_clear_password__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespEapClearPassword * + rpc__resp__eap_clear_password__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespEapClearPassword *) + protobuf_c_message_unpack (&rpc__resp__eap_clear_password__descriptor, + allocator, len, data); +} +void rpc__resp__eap_clear_password__free_unpacked + (RpcRespEapClearPassword *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__eap_clear_password__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__eap_set_new_password__init + (RpcReqEapSetNewPassword *message) +{ + static const RpcReqEapSetNewPassword init_value = RPC__REQ__EAP_SET_NEW_PASSWORD__INIT; + *message = init_value; +} +size_t rpc__req__eap_set_new_password__get_packed_size + (const RpcReqEapSetNewPassword *message) +{ + assert(message->base.descriptor == &rpc__req__eap_set_new_password__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__eap_set_new_password__pack + (const RpcReqEapSetNewPassword *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__eap_set_new_password__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__eap_set_new_password__pack_to_buffer + (const RpcReqEapSetNewPassword *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__eap_set_new_password__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqEapSetNewPassword * + rpc__req__eap_set_new_password__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqEapSetNewPassword *) + protobuf_c_message_unpack (&rpc__req__eap_set_new_password__descriptor, + allocator, len, data); +} +void rpc__req__eap_set_new_password__free_unpacked + (RpcReqEapSetNewPassword *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__eap_set_new_password__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__eap_set_new_password__init + (RpcRespEapSetNewPassword *message) +{ + static const RpcRespEapSetNewPassword init_value = RPC__RESP__EAP_SET_NEW_PASSWORD__INIT; + *message = init_value; +} +size_t rpc__resp__eap_set_new_password__get_packed_size + (const RpcRespEapSetNewPassword *message) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_new_password__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__eap_set_new_password__pack + (const RpcRespEapSetNewPassword *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_new_password__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__eap_set_new_password__pack_to_buffer + (const RpcRespEapSetNewPassword *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_new_password__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespEapSetNewPassword * + rpc__resp__eap_set_new_password__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespEapSetNewPassword *) + protobuf_c_message_unpack (&rpc__resp__eap_set_new_password__descriptor, + allocator, len, data); +} +void rpc__resp__eap_set_new_password__free_unpacked + (RpcRespEapSetNewPassword *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__eap_set_new_password__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__eap_clear_new_password__init + (RpcReqEapClearNewPassword *message) +{ + static const RpcReqEapClearNewPassword init_value = RPC__REQ__EAP_CLEAR_NEW_PASSWORD__INIT; + *message = init_value; +} +size_t rpc__req__eap_clear_new_password__get_packed_size + (const RpcReqEapClearNewPassword *message) +{ + assert(message->base.descriptor == &rpc__req__eap_clear_new_password__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__eap_clear_new_password__pack + (const RpcReqEapClearNewPassword *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__eap_clear_new_password__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__eap_clear_new_password__pack_to_buffer + (const RpcReqEapClearNewPassword *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__eap_clear_new_password__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqEapClearNewPassword * + rpc__req__eap_clear_new_password__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqEapClearNewPassword *) + protobuf_c_message_unpack (&rpc__req__eap_clear_new_password__descriptor, + allocator, len, data); +} +void rpc__req__eap_clear_new_password__free_unpacked + (RpcReqEapClearNewPassword *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__eap_clear_new_password__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__eap_clear_new_password__init + (RpcRespEapClearNewPassword *message) +{ + static const RpcRespEapClearNewPassword init_value = RPC__RESP__EAP_CLEAR_NEW_PASSWORD__INIT; + *message = init_value; +} +size_t rpc__resp__eap_clear_new_password__get_packed_size + (const RpcRespEapClearNewPassword *message) +{ + assert(message->base.descriptor == &rpc__resp__eap_clear_new_password__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__eap_clear_new_password__pack + (const RpcRespEapClearNewPassword *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__eap_clear_new_password__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__eap_clear_new_password__pack_to_buffer + (const RpcRespEapClearNewPassword *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__eap_clear_new_password__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespEapClearNewPassword * + rpc__resp__eap_clear_new_password__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespEapClearNewPassword *) + protobuf_c_message_unpack (&rpc__resp__eap_clear_new_password__descriptor, + allocator, len, data); +} +void rpc__resp__eap_clear_new_password__free_unpacked + (RpcRespEapClearNewPassword *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__eap_clear_new_password__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__eap_set_ca_cert__init + (RpcReqEapSetCaCert *message) +{ + static const RpcReqEapSetCaCert init_value = RPC__REQ__EAP_SET_CA_CERT__INIT; + *message = init_value; +} +size_t rpc__req__eap_set_ca_cert__get_packed_size + (const RpcReqEapSetCaCert *message) +{ + assert(message->base.descriptor == &rpc__req__eap_set_ca_cert__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__eap_set_ca_cert__pack + (const RpcReqEapSetCaCert *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__eap_set_ca_cert__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__eap_set_ca_cert__pack_to_buffer + (const RpcReqEapSetCaCert *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__eap_set_ca_cert__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqEapSetCaCert * + rpc__req__eap_set_ca_cert__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqEapSetCaCert *) + protobuf_c_message_unpack (&rpc__req__eap_set_ca_cert__descriptor, + allocator, len, data); +} +void rpc__req__eap_set_ca_cert__free_unpacked + (RpcReqEapSetCaCert *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__eap_set_ca_cert__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__eap_set_ca_cert__init + (RpcRespEapSetCaCert *message) +{ + static const RpcRespEapSetCaCert init_value = RPC__RESP__EAP_SET_CA_CERT__INIT; + *message = init_value; +} +size_t rpc__resp__eap_set_ca_cert__get_packed_size + (const RpcRespEapSetCaCert *message) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_ca_cert__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__eap_set_ca_cert__pack + (const RpcRespEapSetCaCert *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_ca_cert__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__eap_set_ca_cert__pack_to_buffer + (const RpcRespEapSetCaCert *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_ca_cert__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespEapSetCaCert * + rpc__resp__eap_set_ca_cert__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespEapSetCaCert *) + protobuf_c_message_unpack (&rpc__resp__eap_set_ca_cert__descriptor, + allocator, len, data); +} +void rpc__resp__eap_set_ca_cert__free_unpacked + (RpcRespEapSetCaCert *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__eap_set_ca_cert__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__eap_clear_ca_cert__init + (RpcReqEapClearCaCert *message) +{ + static const RpcReqEapClearCaCert init_value = RPC__REQ__EAP_CLEAR_CA_CERT__INIT; + *message = init_value; +} +size_t rpc__req__eap_clear_ca_cert__get_packed_size + (const RpcReqEapClearCaCert *message) +{ + assert(message->base.descriptor == &rpc__req__eap_clear_ca_cert__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__eap_clear_ca_cert__pack + (const RpcReqEapClearCaCert *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__eap_clear_ca_cert__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__eap_clear_ca_cert__pack_to_buffer + (const RpcReqEapClearCaCert *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__eap_clear_ca_cert__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqEapClearCaCert * + rpc__req__eap_clear_ca_cert__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqEapClearCaCert *) + protobuf_c_message_unpack (&rpc__req__eap_clear_ca_cert__descriptor, + allocator, len, data); +} +void rpc__req__eap_clear_ca_cert__free_unpacked + (RpcReqEapClearCaCert *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__eap_clear_ca_cert__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__eap_clear_ca_cert__init + (RpcRespEapClearCaCert *message) +{ + static const RpcRespEapClearCaCert init_value = RPC__RESP__EAP_CLEAR_CA_CERT__INIT; + *message = init_value; +} +size_t rpc__resp__eap_clear_ca_cert__get_packed_size + (const RpcRespEapClearCaCert *message) +{ + assert(message->base.descriptor == &rpc__resp__eap_clear_ca_cert__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__eap_clear_ca_cert__pack + (const RpcRespEapClearCaCert *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__eap_clear_ca_cert__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__eap_clear_ca_cert__pack_to_buffer + (const RpcRespEapClearCaCert *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__eap_clear_ca_cert__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespEapClearCaCert * + rpc__resp__eap_clear_ca_cert__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespEapClearCaCert *) + protobuf_c_message_unpack (&rpc__resp__eap_clear_ca_cert__descriptor, + allocator, len, data); +} +void rpc__resp__eap_clear_ca_cert__free_unpacked + (RpcRespEapClearCaCert *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__eap_clear_ca_cert__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__eap_set_certificate_and_key__init + (RpcReqEapSetCertificateAndKey *message) +{ + static const RpcReqEapSetCertificateAndKey init_value = RPC__REQ__EAP_SET_CERTIFICATE_AND_KEY__INIT; + *message = init_value; +} +size_t rpc__req__eap_set_certificate_and_key__get_packed_size + (const RpcReqEapSetCertificateAndKey *message) +{ + assert(message->base.descriptor == &rpc__req__eap_set_certificate_and_key__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__eap_set_certificate_and_key__pack + (const RpcReqEapSetCertificateAndKey *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__eap_set_certificate_and_key__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__eap_set_certificate_and_key__pack_to_buffer + (const RpcReqEapSetCertificateAndKey *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__eap_set_certificate_and_key__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqEapSetCertificateAndKey * + rpc__req__eap_set_certificate_and_key__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqEapSetCertificateAndKey *) + protobuf_c_message_unpack (&rpc__req__eap_set_certificate_and_key__descriptor, + allocator, len, data); +} +void rpc__req__eap_set_certificate_and_key__free_unpacked + (RpcReqEapSetCertificateAndKey *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__eap_set_certificate_and_key__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__eap_set_certificate_and_key__init + (RpcRespEapSetCertificateAndKey *message) +{ + static const RpcRespEapSetCertificateAndKey init_value = RPC__RESP__EAP_SET_CERTIFICATE_AND_KEY__INIT; + *message = init_value; +} +size_t rpc__resp__eap_set_certificate_and_key__get_packed_size + (const RpcRespEapSetCertificateAndKey *message) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_certificate_and_key__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__eap_set_certificate_and_key__pack + (const RpcRespEapSetCertificateAndKey *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_certificate_and_key__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__eap_set_certificate_and_key__pack_to_buffer + (const RpcRespEapSetCertificateAndKey *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_certificate_and_key__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespEapSetCertificateAndKey * + rpc__resp__eap_set_certificate_and_key__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespEapSetCertificateAndKey *) + protobuf_c_message_unpack (&rpc__resp__eap_set_certificate_and_key__descriptor, + allocator, len, data); +} +void rpc__resp__eap_set_certificate_and_key__free_unpacked + (RpcRespEapSetCertificateAndKey *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__eap_set_certificate_and_key__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__eap_clear_certificate_and_key__init + (RpcReqEapClearCertificateAndKey *message) +{ + static const RpcReqEapClearCertificateAndKey init_value = RPC__REQ__EAP_CLEAR_CERTIFICATE_AND_KEY__INIT; + *message = init_value; +} +size_t rpc__req__eap_clear_certificate_and_key__get_packed_size + (const RpcReqEapClearCertificateAndKey *message) +{ + assert(message->base.descriptor == &rpc__req__eap_clear_certificate_and_key__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__eap_clear_certificate_and_key__pack + (const RpcReqEapClearCertificateAndKey *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__eap_clear_certificate_and_key__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__eap_clear_certificate_and_key__pack_to_buffer + (const RpcReqEapClearCertificateAndKey *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__eap_clear_certificate_and_key__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqEapClearCertificateAndKey * + rpc__req__eap_clear_certificate_and_key__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqEapClearCertificateAndKey *) + protobuf_c_message_unpack (&rpc__req__eap_clear_certificate_and_key__descriptor, + allocator, len, data); +} +void rpc__req__eap_clear_certificate_and_key__free_unpacked + (RpcReqEapClearCertificateAndKey *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__eap_clear_certificate_and_key__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__eap_clear_certificate_and_key__init + (RpcRespEapClearCertificateAndKey *message) +{ + static const RpcRespEapClearCertificateAndKey init_value = RPC__RESP__EAP_CLEAR_CERTIFICATE_AND_KEY__INIT; + *message = init_value; +} +size_t rpc__resp__eap_clear_certificate_and_key__get_packed_size + (const RpcRespEapClearCertificateAndKey *message) +{ + assert(message->base.descriptor == &rpc__resp__eap_clear_certificate_and_key__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__eap_clear_certificate_and_key__pack + (const RpcRespEapClearCertificateAndKey *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__eap_clear_certificate_and_key__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__eap_clear_certificate_and_key__pack_to_buffer + (const RpcRespEapClearCertificateAndKey *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__eap_clear_certificate_and_key__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespEapClearCertificateAndKey * + rpc__resp__eap_clear_certificate_and_key__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespEapClearCertificateAndKey *) + protobuf_c_message_unpack (&rpc__resp__eap_clear_certificate_and_key__descriptor, + allocator, len, data); +} +void rpc__resp__eap_clear_certificate_and_key__free_unpacked + (RpcRespEapClearCertificateAndKey *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__eap_clear_certificate_and_key__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__eap_set_disable_time_check__init + (RpcReqEapSetDisableTimeCheck *message) +{ + static const RpcReqEapSetDisableTimeCheck init_value = RPC__REQ__EAP_SET_DISABLE_TIME_CHECK__INIT; + *message = init_value; +} +size_t rpc__req__eap_set_disable_time_check__get_packed_size + (const RpcReqEapSetDisableTimeCheck *message) +{ + assert(message->base.descriptor == &rpc__req__eap_set_disable_time_check__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__eap_set_disable_time_check__pack + (const RpcReqEapSetDisableTimeCheck *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__eap_set_disable_time_check__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__eap_set_disable_time_check__pack_to_buffer + (const RpcReqEapSetDisableTimeCheck *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__eap_set_disable_time_check__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqEapSetDisableTimeCheck * + rpc__req__eap_set_disable_time_check__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqEapSetDisableTimeCheck *) + protobuf_c_message_unpack (&rpc__req__eap_set_disable_time_check__descriptor, + allocator, len, data); +} +void rpc__req__eap_set_disable_time_check__free_unpacked + (RpcReqEapSetDisableTimeCheck *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__eap_set_disable_time_check__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__eap_set_disable_time_check__init + (RpcRespEapSetDisableTimeCheck *message) +{ + static const RpcRespEapSetDisableTimeCheck init_value = RPC__RESP__EAP_SET_DISABLE_TIME_CHECK__INIT; + *message = init_value; +} +size_t rpc__resp__eap_set_disable_time_check__get_packed_size + (const RpcRespEapSetDisableTimeCheck *message) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_disable_time_check__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__eap_set_disable_time_check__pack + (const RpcRespEapSetDisableTimeCheck *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_disable_time_check__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__eap_set_disable_time_check__pack_to_buffer + (const RpcRespEapSetDisableTimeCheck *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_disable_time_check__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespEapSetDisableTimeCheck * + rpc__resp__eap_set_disable_time_check__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespEapSetDisableTimeCheck *) + protobuf_c_message_unpack (&rpc__resp__eap_set_disable_time_check__descriptor, + allocator, len, data); +} +void rpc__resp__eap_set_disable_time_check__free_unpacked + (RpcRespEapSetDisableTimeCheck *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__eap_set_disable_time_check__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__eap_get_disable_time_check__init + (RpcReqEapGetDisableTimeCheck *message) +{ + static const RpcReqEapGetDisableTimeCheck init_value = RPC__REQ__EAP_GET_DISABLE_TIME_CHECK__INIT; + *message = init_value; +} +size_t rpc__req__eap_get_disable_time_check__get_packed_size + (const RpcReqEapGetDisableTimeCheck *message) +{ + assert(message->base.descriptor == &rpc__req__eap_get_disable_time_check__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__eap_get_disable_time_check__pack + (const RpcReqEapGetDisableTimeCheck *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__eap_get_disable_time_check__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__eap_get_disable_time_check__pack_to_buffer + (const RpcReqEapGetDisableTimeCheck *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__eap_get_disable_time_check__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqEapGetDisableTimeCheck * + rpc__req__eap_get_disable_time_check__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqEapGetDisableTimeCheck *) + protobuf_c_message_unpack (&rpc__req__eap_get_disable_time_check__descriptor, + allocator, len, data); +} +void rpc__req__eap_get_disable_time_check__free_unpacked + (RpcReqEapGetDisableTimeCheck *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__eap_get_disable_time_check__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__eap_get_disable_time_check__init + (RpcRespEapGetDisableTimeCheck *message) +{ + static const RpcRespEapGetDisableTimeCheck init_value = RPC__RESP__EAP_GET_DISABLE_TIME_CHECK__INIT; + *message = init_value; +} +size_t rpc__resp__eap_get_disable_time_check__get_packed_size + (const RpcRespEapGetDisableTimeCheck *message) +{ + assert(message->base.descriptor == &rpc__resp__eap_get_disable_time_check__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__eap_get_disable_time_check__pack + (const RpcRespEapGetDisableTimeCheck *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__eap_get_disable_time_check__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__eap_get_disable_time_check__pack_to_buffer + (const RpcRespEapGetDisableTimeCheck *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__eap_get_disable_time_check__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespEapGetDisableTimeCheck * + rpc__resp__eap_get_disable_time_check__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespEapGetDisableTimeCheck *) + protobuf_c_message_unpack (&rpc__resp__eap_get_disable_time_check__descriptor, + allocator, len, data); +} +void rpc__resp__eap_get_disable_time_check__free_unpacked + (RpcRespEapGetDisableTimeCheck *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__eap_get_disable_time_check__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__eap_set_ttls_phase2_method__init + (RpcReqEapSetTtlsPhase2Method *message) +{ + static const RpcReqEapSetTtlsPhase2Method init_value = RPC__REQ__EAP_SET_TTLS_PHASE2_METHOD__INIT; + *message = init_value; +} +size_t rpc__req__eap_set_ttls_phase2_method__get_packed_size + (const RpcReqEapSetTtlsPhase2Method *message) +{ + assert(message->base.descriptor == &rpc__req__eap_set_ttls_phase2_method__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__eap_set_ttls_phase2_method__pack + (const RpcReqEapSetTtlsPhase2Method *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__eap_set_ttls_phase2_method__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__eap_set_ttls_phase2_method__pack_to_buffer + (const RpcReqEapSetTtlsPhase2Method *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__eap_set_ttls_phase2_method__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqEapSetTtlsPhase2Method * + rpc__req__eap_set_ttls_phase2_method__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqEapSetTtlsPhase2Method *) + protobuf_c_message_unpack (&rpc__req__eap_set_ttls_phase2_method__descriptor, + allocator, len, data); +} +void rpc__req__eap_set_ttls_phase2_method__free_unpacked + (RpcReqEapSetTtlsPhase2Method *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__eap_set_ttls_phase2_method__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__eap_set_ttls_phase2_method__init + (RpcRespEapSetTtlsPhase2Method *message) +{ + static const RpcRespEapSetTtlsPhase2Method init_value = RPC__RESP__EAP_SET_TTLS_PHASE2_METHOD__INIT; + *message = init_value; +} +size_t rpc__resp__eap_set_ttls_phase2_method__get_packed_size + (const RpcRespEapSetTtlsPhase2Method *message) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_ttls_phase2_method__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__eap_set_ttls_phase2_method__pack + (const RpcRespEapSetTtlsPhase2Method *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_ttls_phase2_method__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__eap_set_ttls_phase2_method__pack_to_buffer + (const RpcRespEapSetTtlsPhase2Method *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_ttls_phase2_method__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespEapSetTtlsPhase2Method * + rpc__resp__eap_set_ttls_phase2_method__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespEapSetTtlsPhase2Method *) + protobuf_c_message_unpack (&rpc__resp__eap_set_ttls_phase2_method__descriptor, + allocator, len, data); +} +void rpc__resp__eap_set_ttls_phase2_method__free_unpacked + (RpcRespEapSetTtlsPhase2Method *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__eap_set_ttls_phase2_method__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__eap_set_suiteb192bit_certification__init + (RpcReqEapSetSuiteb192bitCertification *message) +{ + static const RpcReqEapSetSuiteb192bitCertification init_value = RPC__REQ__EAP_SET_SUITEB192BIT_CERTIFICATION__INIT; + *message = init_value; +} +size_t rpc__req__eap_set_suiteb192bit_certification__get_packed_size + (const RpcReqEapSetSuiteb192bitCertification *message) +{ + assert(message->base.descriptor == &rpc__req__eap_set_suiteb192bit_certification__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__eap_set_suiteb192bit_certification__pack + (const RpcReqEapSetSuiteb192bitCertification *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__eap_set_suiteb192bit_certification__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__eap_set_suiteb192bit_certification__pack_to_buffer + (const RpcReqEapSetSuiteb192bitCertification *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__eap_set_suiteb192bit_certification__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqEapSetSuiteb192bitCertification * + rpc__req__eap_set_suiteb192bit_certification__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqEapSetSuiteb192bitCertification *) + protobuf_c_message_unpack (&rpc__req__eap_set_suiteb192bit_certification__descriptor, + allocator, len, data); +} +void rpc__req__eap_set_suiteb192bit_certification__free_unpacked + (RpcReqEapSetSuiteb192bitCertification *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__eap_set_suiteb192bit_certification__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__eap_set_suiteb192bit_certification__init + (RpcRespEapSetSuiteb192bitCertification *message) +{ + static const RpcRespEapSetSuiteb192bitCertification init_value = RPC__RESP__EAP_SET_SUITEB192BIT_CERTIFICATION__INIT; + *message = init_value; +} +size_t rpc__resp__eap_set_suiteb192bit_certification__get_packed_size + (const RpcRespEapSetSuiteb192bitCertification *message) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_suiteb192bit_certification__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__eap_set_suiteb192bit_certification__pack + (const RpcRespEapSetSuiteb192bitCertification *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_suiteb192bit_certification__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__eap_set_suiteb192bit_certification__pack_to_buffer + (const RpcRespEapSetSuiteb192bitCertification *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_suiteb192bit_certification__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespEapSetSuiteb192bitCertification * + rpc__resp__eap_set_suiteb192bit_certification__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespEapSetSuiteb192bitCertification *) + protobuf_c_message_unpack (&rpc__resp__eap_set_suiteb192bit_certification__descriptor, + allocator, len, data); +} +void rpc__resp__eap_set_suiteb192bit_certification__free_unpacked + (RpcRespEapSetSuiteb192bitCertification *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__eap_set_suiteb192bit_certification__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__eap_set_pac_file__init + (RpcReqEapSetPacFile *message) +{ + static const RpcReqEapSetPacFile init_value = RPC__REQ__EAP_SET_PAC_FILE__INIT; + *message = init_value; +} +size_t rpc__req__eap_set_pac_file__get_packed_size + (const RpcReqEapSetPacFile *message) +{ + assert(message->base.descriptor == &rpc__req__eap_set_pac_file__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__eap_set_pac_file__pack + (const RpcReqEapSetPacFile *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__eap_set_pac_file__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__eap_set_pac_file__pack_to_buffer + (const RpcReqEapSetPacFile *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__eap_set_pac_file__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqEapSetPacFile * + rpc__req__eap_set_pac_file__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqEapSetPacFile *) + protobuf_c_message_unpack (&rpc__req__eap_set_pac_file__descriptor, + allocator, len, data); +} +void rpc__req__eap_set_pac_file__free_unpacked + (RpcReqEapSetPacFile *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__eap_set_pac_file__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__eap_set_pac_file__init + (RpcRespEapSetPacFile *message) +{ + static const RpcRespEapSetPacFile init_value = RPC__RESP__EAP_SET_PAC_FILE__INIT; + *message = init_value; +} +size_t rpc__resp__eap_set_pac_file__get_packed_size + (const RpcRespEapSetPacFile *message) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_pac_file__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__eap_set_pac_file__pack + (const RpcRespEapSetPacFile *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_pac_file__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__eap_set_pac_file__pack_to_buffer + (const RpcRespEapSetPacFile *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_pac_file__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespEapSetPacFile * + rpc__resp__eap_set_pac_file__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespEapSetPacFile *) + protobuf_c_message_unpack (&rpc__resp__eap_set_pac_file__descriptor, + allocator, len, data); +} +void rpc__resp__eap_set_pac_file__free_unpacked + (RpcRespEapSetPacFile *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__eap_set_pac_file__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__eap_set_fast_params__init + (RpcReqEapSetFastParams *message) +{ + static const RpcReqEapSetFastParams init_value = RPC__REQ__EAP_SET_FAST_PARAMS__INIT; + *message = init_value; +} +size_t rpc__req__eap_set_fast_params__get_packed_size + (const RpcReqEapSetFastParams *message) +{ + assert(message->base.descriptor == &rpc__req__eap_set_fast_params__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__eap_set_fast_params__pack + (const RpcReqEapSetFastParams *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__eap_set_fast_params__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__eap_set_fast_params__pack_to_buffer + (const RpcReqEapSetFastParams *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__eap_set_fast_params__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqEapSetFastParams * + rpc__req__eap_set_fast_params__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqEapSetFastParams *) + protobuf_c_message_unpack (&rpc__req__eap_set_fast_params__descriptor, + allocator, len, data); +} +void rpc__req__eap_set_fast_params__free_unpacked + (RpcReqEapSetFastParams *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__eap_set_fast_params__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__eap_set_fast_params__init + (RpcRespEapSetFastParams *message) +{ + static const RpcRespEapSetFastParams init_value = RPC__RESP__EAP_SET_FAST_PARAMS__INIT; + *message = init_value; +} +size_t rpc__resp__eap_set_fast_params__get_packed_size + (const RpcRespEapSetFastParams *message) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_fast_params__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__eap_set_fast_params__pack + (const RpcRespEapSetFastParams *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_fast_params__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__eap_set_fast_params__pack_to_buffer + (const RpcRespEapSetFastParams *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_fast_params__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespEapSetFastParams * + rpc__resp__eap_set_fast_params__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespEapSetFastParams *) + protobuf_c_message_unpack (&rpc__resp__eap_set_fast_params__descriptor, + allocator, len, data); +} +void rpc__resp__eap_set_fast_params__free_unpacked + (RpcRespEapSetFastParams *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__eap_set_fast_params__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__eap_use_default_cert_bundle__init + (RpcReqEapUseDefaultCertBundle *message) +{ + static const RpcReqEapUseDefaultCertBundle init_value = RPC__REQ__EAP_USE_DEFAULT_CERT_BUNDLE__INIT; + *message = init_value; +} +size_t rpc__req__eap_use_default_cert_bundle__get_packed_size + (const RpcReqEapUseDefaultCertBundle *message) +{ + assert(message->base.descriptor == &rpc__req__eap_use_default_cert_bundle__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__eap_use_default_cert_bundle__pack + (const RpcReqEapUseDefaultCertBundle *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__eap_use_default_cert_bundle__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__eap_use_default_cert_bundle__pack_to_buffer + (const RpcReqEapUseDefaultCertBundle *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__eap_use_default_cert_bundle__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqEapUseDefaultCertBundle * + rpc__req__eap_use_default_cert_bundle__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqEapUseDefaultCertBundle *) + protobuf_c_message_unpack (&rpc__req__eap_use_default_cert_bundle__descriptor, + allocator, len, data); +} +void rpc__req__eap_use_default_cert_bundle__free_unpacked + (RpcReqEapUseDefaultCertBundle *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__eap_use_default_cert_bundle__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__eap_use_default_cert_bundle__init + (RpcRespEapUseDefaultCertBundle *message) +{ + static const RpcRespEapUseDefaultCertBundle init_value = RPC__RESP__EAP_USE_DEFAULT_CERT_BUNDLE__INIT; + *message = init_value; +} +size_t rpc__resp__eap_use_default_cert_bundle__get_packed_size + (const RpcRespEapUseDefaultCertBundle *message) +{ + assert(message->base.descriptor == &rpc__resp__eap_use_default_cert_bundle__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__eap_use_default_cert_bundle__pack + (const RpcRespEapUseDefaultCertBundle *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__eap_use_default_cert_bundle__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__eap_use_default_cert_bundle__pack_to_buffer + (const RpcRespEapUseDefaultCertBundle *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__eap_use_default_cert_bundle__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespEapUseDefaultCertBundle * + rpc__resp__eap_use_default_cert_bundle__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespEapUseDefaultCertBundle *) + protobuf_c_message_unpack (&rpc__resp__eap_use_default_cert_bundle__descriptor, + allocator, len, data); +} +void rpc__resp__eap_use_default_cert_bundle__free_unpacked + (RpcRespEapUseDefaultCertBundle *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__eap_use_default_cert_bundle__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__wifi_set_okc_support__init + (RpcReqWifiSetOkcSupport *message) +{ + static const RpcReqWifiSetOkcSupport init_value = RPC__REQ__WIFI_SET_OKC_SUPPORT__INIT; + *message = init_value; +} +size_t rpc__req__wifi_set_okc_support__get_packed_size + (const RpcReqWifiSetOkcSupport *message) +{ + assert(message->base.descriptor == &rpc__req__wifi_set_okc_support__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__wifi_set_okc_support__pack + (const RpcReqWifiSetOkcSupport *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__wifi_set_okc_support__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__wifi_set_okc_support__pack_to_buffer + (const RpcReqWifiSetOkcSupport *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__wifi_set_okc_support__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqWifiSetOkcSupport * + rpc__req__wifi_set_okc_support__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqWifiSetOkcSupport *) + protobuf_c_message_unpack (&rpc__req__wifi_set_okc_support__descriptor, + allocator, len, data); +} +void rpc__req__wifi_set_okc_support__free_unpacked + (RpcReqWifiSetOkcSupport *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__wifi_set_okc_support__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__wifi_set_okc_support__init + (RpcRespWifiSetOkcSupport *message) +{ + static const RpcRespWifiSetOkcSupport init_value = RPC__RESP__WIFI_SET_OKC_SUPPORT__INIT; + *message = init_value; +} +size_t rpc__resp__wifi_set_okc_support__get_packed_size + (const RpcRespWifiSetOkcSupport *message) +{ + assert(message->base.descriptor == &rpc__resp__wifi_set_okc_support__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__wifi_set_okc_support__pack + (const RpcRespWifiSetOkcSupport *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__wifi_set_okc_support__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__wifi_set_okc_support__pack_to_buffer + (const RpcRespWifiSetOkcSupport *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__wifi_set_okc_support__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespWifiSetOkcSupport * + rpc__resp__wifi_set_okc_support__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespWifiSetOkcSupport *) + protobuf_c_message_unpack (&rpc__resp__wifi_set_okc_support__descriptor, + allocator, len, data); +} +void rpc__resp__wifi_set_okc_support__free_unpacked + (RpcRespWifiSetOkcSupport *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__wifi_set_okc_support__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__eap_set_domain_name__init + (RpcReqEapSetDomainName *message) +{ + static const RpcReqEapSetDomainName init_value = RPC__REQ__EAP_SET_DOMAIN_NAME__INIT; + *message = init_value; +} +size_t rpc__req__eap_set_domain_name__get_packed_size + (const RpcReqEapSetDomainName *message) +{ + assert(message->base.descriptor == &rpc__req__eap_set_domain_name__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__eap_set_domain_name__pack + (const RpcReqEapSetDomainName *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__eap_set_domain_name__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__eap_set_domain_name__pack_to_buffer + (const RpcReqEapSetDomainName *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__eap_set_domain_name__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqEapSetDomainName * + rpc__req__eap_set_domain_name__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqEapSetDomainName *) + protobuf_c_message_unpack (&rpc__req__eap_set_domain_name__descriptor, + allocator, len, data); +} +void rpc__req__eap_set_domain_name__free_unpacked + (RpcReqEapSetDomainName *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__eap_set_domain_name__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__eap_set_domain_name__init + (RpcRespEapSetDomainName *message) +{ + static const RpcRespEapSetDomainName init_value = RPC__RESP__EAP_SET_DOMAIN_NAME__INIT; + *message = init_value; +} +size_t rpc__resp__eap_set_domain_name__get_packed_size + (const RpcRespEapSetDomainName *message) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_domain_name__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__eap_set_domain_name__pack + (const RpcRespEapSetDomainName *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_domain_name__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__eap_set_domain_name__pack_to_buffer + (const RpcRespEapSetDomainName *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_domain_name__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespEapSetDomainName * + rpc__resp__eap_set_domain_name__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespEapSetDomainName *) + protobuf_c_message_unpack (&rpc__resp__eap_set_domain_name__descriptor, + allocator, len, data); +} +void rpc__resp__eap_set_domain_name__free_unpacked + (RpcRespEapSetDomainName *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__eap_set_domain_name__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__eap_set_eap_methods__init + (RpcReqEapSetEapMethods *message) +{ + static const RpcReqEapSetEapMethods init_value = RPC__REQ__EAP_SET_EAP_METHODS__INIT; + *message = init_value; +} +size_t rpc__req__eap_set_eap_methods__get_packed_size + (const RpcReqEapSetEapMethods *message) +{ + assert(message->base.descriptor == &rpc__req__eap_set_eap_methods__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__eap_set_eap_methods__pack + (const RpcReqEapSetEapMethods *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__eap_set_eap_methods__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__eap_set_eap_methods__pack_to_buffer + (const RpcReqEapSetEapMethods *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__eap_set_eap_methods__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqEapSetEapMethods * + rpc__req__eap_set_eap_methods__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqEapSetEapMethods *) + protobuf_c_message_unpack (&rpc__req__eap_set_eap_methods__descriptor, + allocator, len, data); +} +void rpc__req__eap_set_eap_methods__free_unpacked + (RpcReqEapSetEapMethods *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__eap_set_eap_methods__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__eap_set_eap_methods__init + (RpcRespEapSetEapMethods *message) +{ + static const RpcRespEapSetEapMethods init_value = RPC__RESP__EAP_SET_EAP_METHODS__INIT; + *message = init_value; +} +size_t rpc__resp__eap_set_eap_methods__get_packed_size + (const RpcRespEapSetEapMethods *message) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_eap_methods__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__eap_set_eap_methods__pack + (const RpcRespEapSetEapMethods *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_eap_methods__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__eap_set_eap_methods__pack_to_buffer + (const RpcRespEapSetEapMethods *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_eap_methods__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespEapSetEapMethods * + rpc__resp__eap_set_eap_methods__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespEapSetEapMethods *) + protobuf_c_message_unpack (&rpc__resp__eap_set_eap_methods__descriptor, + allocator, len, data); +} +void rpc__resp__eap_set_eap_methods__free_unpacked + (RpcRespEapSetEapMethods *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__eap_set_eap_methods__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__init + (Rpc *message) +{ + static const Rpc init_value = RPC__INIT; + *message = init_value; +} +size_t rpc__get_packed_size + (const Rpc *message) +{ + assert(message->base.descriptor == &rpc__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__pack + (const Rpc *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__pack_to_buffer + (const Rpc *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +Rpc * + rpc__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (Rpc *) + protobuf_c_message_unpack (&rpc__descriptor, + allocator, len, data); +} +void rpc__free_unpacked + (Rpc *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +static const ProtobufCFieldDescriptor wifi_init_config__field_descriptors[24] = +{ + { + "static_rx_buf_num", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, static_rx_buf_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dynamic_rx_buf_num", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, dynamic_rx_buf_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "tx_buf_type", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, tx_buf_type), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "static_tx_buf_num", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, static_tx_buf_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dynamic_tx_buf_num", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, dynamic_tx_buf_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cache_tx_buf_num", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, cache_tx_buf_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "csi_enable", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, csi_enable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ampdu_rx_enable", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, ampdu_rx_enable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ampdu_tx_enable", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, ampdu_tx_enable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "amsdu_tx_enable", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, amsdu_tx_enable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "nvs_enable", + 11, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, nvs_enable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "nano_enable", + 12, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, nano_enable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rx_ba_win", + 13, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, rx_ba_win), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "wifi_task_core_id", + 14, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, wifi_task_core_id), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "beacon_max_len", + 15, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, beacon_max_len), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "mgmt_sbuf_num", + 16, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, mgmt_sbuf_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "feature_caps", + 17, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, feature_caps), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sta_disconnected_pm", + 18, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ offsetof(WifiInitConfig, sta_disconnected_pm), NULL, NULL, @@ -8911,4032 +11116,5049 @@ static const ProtobufCFieldDescriptor wifi_init_config__field_descriptors[24] = 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "espnow_max_encrypt_num", - 19, + "espnow_max_encrypt_num", + 19, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, espnow_max_encrypt_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "magic", + 20, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, magic), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rx_mgmt_buf_type", + 21, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, rx_mgmt_buf_type), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rx_mgmt_buf_num", + 22, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, rx_mgmt_buf_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "tx_hetb_queue_num", + 23, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, tx_hetb_queue_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dump_hesigb_enable", + 24, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, dump_hesigb_enable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned wifi_init_config__field_indices_by_name[] = { + 7, /* field[7] = ampdu_rx_enable */ + 8, /* field[8] = ampdu_tx_enable */ + 9, /* field[9] = amsdu_tx_enable */ + 14, /* field[14] = beacon_max_len */ + 5, /* field[5] = cache_tx_buf_num */ + 6, /* field[6] = csi_enable */ + 23, /* field[23] = dump_hesigb_enable */ + 1, /* field[1] = dynamic_rx_buf_num */ + 4, /* field[4] = dynamic_tx_buf_num */ + 18, /* field[18] = espnow_max_encrypt_num */ + 16, /* field[16] = feature_caps */ + 19, /* field[19] = magic */ + 15, /* field[15] = mgmt_sbuf_num */ + 11, /* field[11] = nano_enable */ + 10, /* field[10] = nvs_enable */ + 12, /* field[12] = rx_ba_win */ + 21, /* field[21] = rx_mgmt_buf_num */ + 20, /* field[20] = rx_mgmt_buf_type */ + 17, /* field[17] = sta_disconnected_pm */ + 0, /* field[0] = static_rx_buf_num */ + 3, /* field[3] = static_tx_buf_num */ + 2, /* field[2] = tx_buf_type */ + 22, /* field[22] = tx_hetb_queue_num */ + 13, /* field[13] = wifi_task_core_id */ +}; +static const ProtobufCIntRange wifi_init_config__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 24 } +}; +const ProtobufCMessageDescriptor wifi_init_config__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_init_config", + "WifiInitConfig", + "WifiInitConfig", + "", + sizeof(WifiInitConfig), + 24, + wifi_init_config__field_descriptors, + wifi_init_config__field_indices_by_name, + 1, wifi_init_config__number_ranges, + (ProtobufCMessageInit) wifi_init_config__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_country__field_descriptors[5] = +{ + { + "cc", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(WifiCountry, cc), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "schan", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiCountry, schan), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "nchan", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiCountry, nchan), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "max_tx_power", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiCountry, max_tx_power), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "policy", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiCountry, policy), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned wifi_country__field_indices_by_name[] = { + 0, /* field[0] = cc */ + 3, /* field[3] = max_tx_power */ + 2, /* field[2] = nchan */ + 4, /* field[4] = policy */ + 1, /* field[1] = schan */ +}; +static const ProtobufCIntRange wifi_country__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor wifi_country__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_country", + "WifiCountry", + "WifiCountry", + "", + sizeof(WifiCountry), + 5, + wifi_country__field_descriptors, + wifi_country__field_indices_by_name, + 1, wifi_country__number_ranges, + (ProtobufCMessageInit) wifi_country__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_active_scan_time__field_descriptors[2] = +{ + { + "min", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiActiveScanTime, min), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "max", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiActiveScanTime, max), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned wifi_active_scan_time__field_indices_by_name[] = { + 1, /* field[1] = max */ + 0, /* field[0] = min */ +}; +static const ProtobufCIntRange wifi_active_scan_time__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor wifi_active_scan_time__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_active_scan_time", + "WifiActiveScanTime", + "WifiActiveScanTime", + "", + sizeof(WifiActiveScanTime), + 2, + wifi_active_scan_time__field_descriptors, + wifi_active_scan_time__field_indices_by_name, + 1, wifi_active_scan_time__number_ranges, + (ProtobufCMessageInit) wifi_active_scan_time__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_scan_time__field_descriptors[2] = +{ + { + "active", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(WifiScanTime, active), + &wifi_active_scan_time__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "passive", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiScanTime, passive), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned wifi_scan_time__field_indices_by_name[] = { + 0, /* field[0] = active */ + 1, /* field[1] = passive */ +}; +static const ProtobufCIntRange wifi_scan_time__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor wifi_scan_time__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_scan_time", + "WifiScanTime", + "WifiScanTime", + "", + sizeof(WifiScanTime), + 2, + wifi_scan_time__field_descriptors, + wifi_scan_time__field_indices_by_name, + 1, wifi_scan_time__number_ranges, + (ProtobufCMessageInit) wifi_scan_time__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_scan_channel_bitmap__field_descriptors[2] = +{ + { + "ghz_2_channels", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiScanChannelBitmap, ghz_2_channels), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ghz_5_channels", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiScanChannelBitmap, ghz_5_channels), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned wifi_scan_channel_bitmap__field_indices_by_name[] = { + 0, /* field[0] = ghz_2_channels */ + 1, /* field[1] = ghz_5_channels */ +}; +static const ProtobufCIntRange wifi_scan_channel_bitmap__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor wifi_scan_channel_bitmap__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_scan_channel_bitmap", + "WifiScanChannelBitmap", + "WifiScanChannelBitmap", + "", + sizeof(WifiScanChannelBitmap), + 2, + wifi_scan_channel_bitmap__field_descriptors, + wifi_scan_channel_bitmap__field_indices_by_name, + 1, wifi_scan_channel_bitmap__number_ranges, + (ProtobufCMessageInit) wifi_scan_channel_bitmap__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_scan_config__field_descriptors[8] = +{ + { + "ssid", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(WifiScanConfig, ssid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "bssid", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(WifiScanConfig, bssid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "channel", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiScanConfig, channel), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "show_hidden", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(WifiScanConfig, show_hidden), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "scan_type", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiScanConfig, scan_type), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "scan_time", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(WifiScanConfig, scan_time), + &wifi_scan_time__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "home_chan_dwell_time", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiScanConfig, home_chan_dwell_time), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "channel_bitmap", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(WifiScanConfig, channel_bitmap), + &wifi_scan_channel_bitmap__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned wifi_scan_config__field_indices_by_name[] = { + 1, /* field[1] = bssid */ + 2, /* field[2] = channel */ + 7, /* field[7] = channel_bitmap */ + 6, /* field[6] = home_chan_dwell_time */ + 5, /* field[5] = scan_time */ + 4, /* field[4] = scan_type */ + 3, /* field[3] = show_hidden */ + 0, /* field[0] = ssid */ +}; +static const ProtobufCIntRange wifi_scan_config__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 8 } +}; +const ProtobufCMessageDescriptor wifi_scan_config__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_scan_config", + "WifiScanConfig", + "WifiScanConfig", + "", + sizeof(WifiScanConfig), + 8, + wifi_scan_config__field_descriptors, + wifi_scan_config__field_indices_by_name, + 1, wifi_scan_config__number_ranges, + (ProtobufCMessageInit) wifi_scan_config__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_he_ap_info__field_descriptors[2] = +{ + { + "bitmask", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiHeApInfo, bitmask), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "bssid_index", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiHeApInfo, bssid_index), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned wifi_he_ap_info__field_indices_by_name[] = { + 0, /* field[0] = bitmask */ + 1, /* field[1] = bssid_index */ +}; +static const ProtobufCIntRange wifi_he_ap_info__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor wifi_he_ap_info__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_he_ap_info", + "WifiHeApInfo", + "WifiHeApInfo", + "", + sizeof(WifiHeApInfo), + 2, + wifi_he_ap_info__field_descriptors, + wifi_he_ap_info__field_indices_by_name, + 1, wifi_he_ap_info__number_ranges, + (ProtobufCMessageInit) wifi_he_ap_info__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_ap_record__field_descriptors[15] = +{ + { + "bssid", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(WifiApRecord, bssid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ssid", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(WifiApRecord, ssid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "primary", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiApRecord, primary), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "second", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiApRecord, second), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rssi", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiApRecord, rssi), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "authmode", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiApRecord, authmode), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "pairwise_cipher", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiApRecord, pairwise_cipher), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "group_cipher", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiApRecord, group_cipher), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ant", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiApRecord, ant), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "bitmask", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiApRecord, bitmask), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "country", + 11, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(WifiApRecord, country), + &wifi_country__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "he_ap", + 12, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(WifiApRecord, he_ap), + &wifi_he_ap_info__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "bandwidth", + 13, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiApRecord, bandwidth), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "vht_ch_freq1", + 14, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiApRecord, vht_ch_freq1), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "vht_ch_freq2", + 15, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiApRecord, vht_ch_freq2), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned wifi_ap_record__field_indices_by_name[] = { + 8, /* field[8] = ant */ + 5, /* field[5] = authmode */ + 12, /* field[12] = bandwidth */ + 9, /* field[9] = bitmask */ + 0, /* field[0] = bssid */ + 10, /* field[10] = country */ + 7, /* field[7] = group_cipher */ + 11, /* field[11] = he_ap */ + 6, /* field[6] = pairwise_cipher */ + 2, /* field[2] = primary */ + 4, /* field[4] = rssi */ + 3, /* field[3] = second */ + 1, /* field[1] = ssid */ + 13, /* field[13] = vht_ch_freq1 */ + 14, /* field[14] = vht_ch_freq2 */ +}; +static const ProtobufCIntRange wifi_ap_record__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 15 } +}; +const ProtobufCMessageDescriptor wifi_ap_record__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_ap_record", + "WifiApRecord", + "WifiApRecord", + "", + sizeof(WifiApRecord), + 15, + wifi_ap_record__field_descriptors, + wifi_ap_record__field_indices_by_name, + 1, wifi_ap_record__number_ranges, + (ProtobufCMessageInit) wifi_ap_record__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_scan_threshold__field_descriptors[3] = +{ + { + "rssi", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiScanThreshold, rssi), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "authmode", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiScanThreshold, authmode), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rssi_5g_adjustment", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiScanThreshold, rssi_5g_adjustment), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned wifi_scan_threshold__field_indices_by_name[] = { + 1, /* field[1] = authmode */ + 0, /* field[0] = rssi */ + 2, /* field[2] = rssi_5g_adjustment */ +}; +static const ProtobufCIntRange wifi_scan_threshold__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor wifi_scan_threshold__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_scan_threshold", + "WifiScanThreshold", + "WifiScanThreshold", + "", + sizeof(WifiScanThreshold), + 3, + wifi_scan_threshold__field_descriptors, + wifi_scan_threshold__field_indices_by_name, + 1, wifi_scan_threshold__number_ranges, + (ProtobufCMessageInit) wifi_scan_threshold__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_pmf_config__field_descriptors[2] = +{ + { + "capable", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(WifiPmfConfig, capable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "required", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(WifiPmfConfig, required), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned wifi_pmf_config__field_indices_by_name[] = { + 0, /* field[0] = capable */ + 1, /* field[1] = required */ +}; +static const ProtobufCIntRange wifi_pmf_config__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor wifi_pmf_config__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_pmf_config", + "WifiPmfConfig", + "WifiPmfConfig", + "", + sizeof(WifiPmfConfig), + 2, + wifi_pmf_config__field_descriptors, + wifi_pmf_config__field_indices_by_name, + 1, wifi_pmf_config__number_ranges, + (ProtobufCMessageInit) wifi_pmf_config__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_bss_max_idle_config__field_descriptors[2] = +{ + { + "period", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiBssMaxIdleConfig, period), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "protected_keep_alive", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(WifiBssMaxIdleConfig, protected_keep_alive), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned wifi_bss_max_idle_config__field_indices_by_name[] = { + 0, /* field[0] = period */ + 1, /* field[1] = protected_keep_alive */ +}; +static const ProtobufCIntRange wifi_bss_max_idle_config__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor wifi_bss_max_idle_config__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_bss_max_idle_config", + "WifiBssMaxIdleConfig", + "WifiBssMaxIdleConfig", + "", + sizeof(WifiBssMaxIdleConfig), + 2, + wifi_bss_max_idle_config__field_descriptors, + wifi_bss_max_idle_config__field_indices_by_name, + 1, wifi_bss_max_idle_config__number_ranges, + (ProtobufCMessageInit) wifi_bss_max_idle_config__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_ap_config__field_descriptors[18] = +{ + { + "ssid", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(WifiApConfig, ssid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "password", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(WifiApConfig, password), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ssid_len", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiApConfig, ssid_len), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "channel", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiApConfig, channel), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "authmode", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiApConfig, authmode), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ssid_hidden", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiApConfig, ssid_hidden), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "max_connection", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiApConfig, max_connection), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "beacon_interval", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiApConfig, beacon_interval), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "pairwise_cipher", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiApConfig, pairwise_cipher), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ftm_responder", + 10, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiInitConfig, espnow_max_encrypt_num), + offsetof(WifiApConfig, ftm_responder), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "magic", - 20, + "pmf_cfg", + 11, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(WifiApConfig, pmf_cfg), + &wifi_pmf_config__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sae_pwe_h2e", + 12, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiInitConfig, magic), + offsetof(WifiApConfig, sae_pwe_h2e), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "rx_mgmt_buf_type", - 21, + "csa_count", + 13, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiInitConfig, rx_mgmt_buf_type), + offsetof(WifiApConfig, csa_count), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "rx_mgmt_buf_num", - 22, + "dtim_period", + 14, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiInitConfig, rx_mgmt_buf_num), + offsetof(WifiApConfig, dtim_period), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "tx_hetb_queue_num", - 23, + "transition_disable", + 15, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiInitConfig, tx_hetb_queue_num), + offsetof(WifiApConfig, transition_disable), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dump_hesigb_enable", - 24, + "sae_ext", + 16, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiInitConfig, dump_hesigb_enable), + offsetof(WifiApConfig, sae_ext), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "bss_max_idle_cfg", + 17, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(WifiApConfig, bss_max_idle_cfg), + &wifi_bss_max_idle_config__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "gtk_rekey_interval", + 18, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiApConfig, gtk_rekey_interval), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_init_config__field_indices_by_name[] = { - 7, /* field[7] = ampdu_rx_enable */ - 8, /* field[8] = ampdu_tx_enable */ - 9, /* field[9] = amsdu_tx_enable */ - 14, /* field[14] = beacon_max_len */ - 5, /* field[5] = cache_tx_buf_num */ - 6, /* field[6] = csi_enable */ - 23, /* field[23] = dump_hesigb_enable */ - 1, /* field[1] = dynamic_rx_buf_num */ - 4, /* field[4] = dynamic_tx_buf_num */ - 18, /* field[18] = espnow_max_encrypt_num */ - 16, /* field[16] = feature_caps */ - 19, /* field[19] = magic */ - 15, /* field[15] = mgmt_sbuf_num */ - 11, /* field[11] = nano_enable */ - 10, /* field[10] = nvs_enable */ - 12, /* field[12] = rx_ba_win */ - 21, /* field[21] = rx_mgmt_buf_num */ - 20, /* field[20] = rx_mgmt_buf_type */ - 17, /* field[17] = sta_disconnected_pm */ - 0, /* field[0] = static_rx_buf_num */ - 3, /* field[3] = static_tx_buf_num */ - 2, /* field[2] = tx_buf_type */ - 22, /* field[22] = tx_hetb_queue_num */ - 13, /* field[13] = wifi_task_core_id */ +static const unsigned wifi_ap_config__field_indices_by_name[] = { + 4, /* field[4] = authmode */ + 7, /* field[7] = beacon_interval */ + 16, /* field[16] = bss_max_idle_cfg */ + 3, /* field[3] = channel */ + 12, /* field[12] = csa_count */ + 13, /* field[13] = dtim_period */ + 9, /* field[9] = ftm_responder */ + 17, /* field[17] = gtk_rekey_interval */ + 6, /* field[6] = max_connection */ + 8, /* field[8] = pairwise_cipher */ + 1, /* field[1] = password */ + 10, /* field[10] = pmf_cfg */ + 15, /* field[15] = sae_ext */ + 11, /* field[11] = sae_pwe_h2e */ + 0, /* field[0] = ssid */ + 5, /* field[5] = ssid_hidden */ + 2, /* field[2] = ssid_len */ + 14, /* field[14] = transition_disable */ }; -static const ProtobufCIntRange wifi_init_config__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_ap_config__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 24 } + { 0, 18 } }; -const ProtobufCMessageDescriptor wifi_init_config__descriptor = +const ProtobufCMessageDescriptor wifi_ap_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_init_config", - "WifiInitConfig", - "WifiInitConfig", + "wifi_ap_config", + "WifiApConfig", + "WifiApConfig", "", - sizeof(WifiInitConfig), - 24, - wifi_init_config__field_descriptors, - wifi_init_config__field_indices_by_name, - 1, wifi_init_config__number_ranges, - (ProtobufCMessageInit) wifi_init_config__init, + sizeof(WifiApConfig), + 18, + wifi_ap_config__field_descriptors, + wifi_ap_config__field_indices_by_name, + 1, wifi_ap_config__number_ranges, + (ProtobufCMessageInit) wifi_ap_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_country__field_descriptors[5] = +static const ProtobufCFieldDescriptor wifi_sta_config__field_descriptors[16] = { { - "cc", + "ssid", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiCountry, cc), + offsetof(WifiStaConfig, ssid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "schan", + "password", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiCountry, schan), + offsetof(WifiStaConfig, password), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "nchan", + "scan_method", 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiCountry, nchan), + offsetof(WifiStaConfig, scan_method), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "max_tx_power", + "bssid_set", 4, PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(WifiStaConfig, bssid_set), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "bssid", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(WifiStaConfig, bssid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "channel", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiStaConfig, channel), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "listen_interval", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiStaConfig, listen_interval), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sort_method", + 8, + PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiCountry, max_tx_power), + offsetof(WifiStaConfig, sort_method), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "threshold", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(WifiStaConfig, threshold), + &wifi_scan_threshold__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "pmf_cfg", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(WifiStaConfig, pmf_cfg), + &wifi_pmf_config__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "bitmask", + 11, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiStaConfig, bitmask), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "policy", - 5, + "sae_pwe_h2e", + 12, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiCountry, policy), + offsetof(WifiStaConfig, sae_pwe_h2e), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned wifi_country__field_indices_by_name[] = { - 0, /* field[0] = cc */ - 3, /* field[3] = max_tx_power */ - 2, /* field[2] = nchan */ - 4, /* field[4] = policy */ - 1, /* field[1] = schan */ -}; -static const ProtobufCIntRange wifi_country__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 5 } -}; -const ProtobufCMessageDescriptor wifi_country__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_country", - "WifiCountry", - "WifiCountry", - "", - sizeof(WifiCountry), - 5, - wifi_country__field_descriptors, - wifi_country__field_indices_by_name, - 1, wifi_country__number_ranges, - (ProtobufCMessageInit) wifi_country__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor wifi_active_scan_time__field_descriptors[2] = -{ { - "min", - 1, + "failure_retry_cnt", + 13, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiActiveScanTime, min), + offsetof(WifiStaConfig, failure_retry_cnt), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "max", - 2, + "he_bitmask", + 14, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiActiveScanTime, max), + offsetof(WifiStaConfig, he_bitmask), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned wifi_active_scan_time__field_indices_by_name[] = { - 1, /* field[1] = max */ - 0, /* field[0] = min */ -}; -static const ProtobufCIntRange wifi_active_scan_time__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor wifi_active_scan_time__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_active_scan_time", - "WifiActiveScanTime", - "WifiActiveScanTime", - "", - sizeof(WifiActiveScanTime), - 2, - wifi_active_scan_time__field_descriptors, - wifi_active_scan_time__field_indices_by_name, - 1, wifi_active_scan_time__number_ranges, - (ProtobufCMessageInit) wifi_active_scan_time__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor wifi_scan_time__field_descriptors[2] = -{ { - "active", - 1, + "sae_h2e_identifier", + 15, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiScanTime, active), - &wifi_active_scan_time__descriptor, + offsetof(WifiStaConfig, sae_h2e_identifier), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "passive", - 2, + "sae_pk_mode", + 16, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiScanTime, passive), + offsetof(WifiStaConfig, sae_pk_mode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_scan_time__field_indices_by_name[] = { - 0, /* field[0] = active */ - 1, /* field[1] = passive */ +static const unsigned wifi_sta_config__field_indices_by_name[] = { + 10, /* field[10] = bitmask */ + 4, /* field[4] = bssid */ + 3, /* field[3] = bssid_set */ + 5, /* field[5] = channel */ + 12, /* field[12] = failure_retry_cnt */ + 13, /* field[13] = he_bitmask */ + 6, /* field[6] = listen_interval */ + 1, /* field[1] = password */ + 9, /* field[9] = pmf_cfg */ + 14, /* field[14] = sae_h2e_identifier */ + 15, /* field[15] = sae_pk_mode */ + 11, /* field[11] = sae_pwe_h2e */ + 2, /* field[2] = scan_method */ + 7, /* field[7] = sort_method */ + 0, /* field[0] = ssid */ + 8, /* field[8] = threshold */ }; -static const ProtobufCIntRange wifi_scan_time__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_sta_config__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 16 } }; -const ProtobufCMessageDescriptor wifi_scan_time__descriptor = +const ProtobufCMessageDescriptor wifi_sta_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_scan_time", - "WifiScanTime", - "WifiScanTime", + "wifi_sta_config", + "WifiStaConfig", + "WifiStaConfig", "", - sizeof(WifiScanTime), - 2, - wifi_scan_time__field_descriptors, - wifi_scan_time__field_indices_by_name, - 1, wifi_scan_time__number_ranges, - (ProtobufCMessageInit) wifi_scan_time__init, + sizeof(WifiStaConfig), + 16, + wifi_sta_config__field_descriptors, + wifi_sta_config__field_indices_by_name, + 1, wifi_sta_config__number_ranges, + (ProtobufCMessageInit) wifi_sta_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_scan_channel_bitmap__field_descriptors[2] = +static const ProtobufCFieldDescriptor wifi_config__field_descriptors[2] = { { - "ghz_2_channels", + "ap", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiScanChannelBitmap, ghz_2_channels), - NULL, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(WifiConfig, u_case), + offsetof(WifiConfig, ap), + &wifi_ap_config__descriptor, NULL, - 0, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ghz_5_channels", + "sta", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiScanChannelBitmap, ghz_5_channels), - NULL, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(WifiConfig, u_case), + offsetof(WifiConfig, sta), + &wifi_sta_config__descriptor, NULL, - 0, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_scan_channel_bitmap__field_indices_by_name[] = { - 0, /* field[0] = ghz_2_channels */ - 1, /* field[1] = ghz_5_channels */ +static const unsigned wifi_config__field_indices_by_name[] = { + 0, /* field[0] = ap */ + 1, /* field[1] = sta */ }; -static const ProtobufCIntRange wifi_scan_channel_bitmap__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_config__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_scan_channel_bitmap__descriptor = +const ProtobufCMessageDescriptor wifi_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_scan_channel_bitmap", - "WifiScanChannelBitmap", - "WifiScanChannelBitmap", + "wifi_config", + "WifiConfig", + "WifiConfig", "", - sizeof(WifiScanChannelBitmap), + sizeof(WifiConfig), 2, - wifi_scan_channel_bitmap__field_descriptors, - wifi_scan_channel_bitmap__field_indices_by_name, - 1, wifi_scan_channel_bitmap__number_ranges, - (ProtobufCMessageInit) wifi_scan_channel_bitmap__init, + wifi_config__field_descriptors, + wifi_config__field_indices_by_name, + 1, wifi_config__number_ranges, + (ProtobufCMessageInit) wifi_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_scan_config__field_descriptors[8] = +static const ProtobufCFieldDescriptor wifi_sta_info__field_descriptors[3] = { { - "ssid", + "mac", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, - 0, /* quantifier_offset */ - offsetof(WifiScanConfig, ssid), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "bssid", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, - 0, /* quantifier_offset */ - offsetof(WifiScanConfig, bssid), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "channel", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiScanConfig, channel), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "show_hidden", - 4, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, - 0, /* quantifier_offset */ - offsetof(WifiScanConfig, show_hidden), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "scan_type", - 5, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiScanConfig, scan_type), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "scan_time", - 6, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(WifiScanConfig, scan_time), - &wifi_scan_time__descriptor, + 0, /* quantifier_offset */ + offsetof(WifiStaInfo, mac), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "home_chan_dwell_time", - 7, + "rssi", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiScanConfig, home_chan_dwell_time), + offsetof(WifiStaInfo, rssi), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "channel_bitmap", - 8, + "bitmask", + 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiScanConfig, channel_bitmap), - &wifi_scan_channel_bitmap__descriptor, + offsetof(WifiStaInfo, bitmask), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_scan_config__field_indices_by_name[] = { - 1, /* field[1] = bssid */ - 2, /* field[2] = channel */ - 7, /* field[7] = channel_bitmap */ - 6, /* field[6] = home_chan_dwell_time */ - 5, /* field[5] = scan_time */ - 4, /* field[4] = scan_type */ - 3, /* field[3] = show_hidden */ - 0, /* field[0] = ssid */ +static const unsigned wifi_sta_info__field_indices_by_name[] = { + 2, /* field[2] = bitmask */ + 0, /* field[0] = mac */ + 1, /* field[1] = rssi */ }; -static const ProtobufCIntRange wifi_scan_config__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_sta_info__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 8 } + { 0, 3 } }; -const ProtobufCMessageDescriptor wifi_scan_config__descriptor = +const ProtobufCMessageDescriptor wifi_sta_info__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_scan_config", - "WifiScanConfig", - "WifiScanConfig", + "wifi_sta_info", + "WifiStaInfo", + "WifiStaInfo", "", - sizeof(WifiScanConfig), - 8, - wifi_scan_config__field_descriptors, - wifi_scan_config__field_indices_by_name, - 1, wifi_scan_config__number_ranges, - (ProtobufCMessageInit) wifi_scan_config__init, + sizeof(WifiStaInfo), + 3, + wifi_sta_info__field_descriptors, + wifi_sta_info__field_indices_by_name, + 1, wifi_sta_info__number_ranges, + (ProtobufCMessageInit) wifi_sta_info__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_he_ap_info__field_descriptors[2] = +static const ProtobufCFieldDescriptor wifi_sta_list__field_descriptors[2] = { { - "bitmask", + "sta", 1, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiHeApInfo, bitmask), - NULL, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(WifiStaList, n_sta), + offsetof(WifiStaList, sta), + &wifi_sta_info__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "bssid_index", + "num", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiHeApInfo, bssid_index), + offsetof(WifiStaList, num), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_he_ap_info__field_indices_by_name[] = { - 0, /* field[0] = bitmask */ - 1, /* field[1] = bssid_index */ +static const unsigned wifi_sta_list__field_indices_by_name[] = { + 1, /* field[1] = num */ + 0, /* field[0] = sta */ }; -static const ProtobufCIntRange wifi_he_ap_info__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_sta_list__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_he_ap_info__descriptor = +const ProtobufCMessageDescriptor wifi_sta_list__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_he_ap_info", - "WifiHeApInfo", - "WifiHeApInfo", + "wifi_sta_list", + "WifiStaList", + "WifiStaList", "", - sizeof(WifiHeApInfo), + sizeof(WifiStaList), 2, - wifi_he_ap_info__field_descriptors, - wifi_he_ap_info__field_indices_by_name, - 1, wifi_he_ap_info__number_ranges, - (ProtobufCMessageInit) wifi_he_ap_info__init, + wifi_sta_list__field_descriptors, + wifi_sta_list__field_indices_by_name, + 1, wifi_sta_list__number_ranges, + (ProtobufCMessageInit) wifi_sta_list__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_ap_record__field_descriptors[15] = +static const ProtobufCFieldDescriptor wifi_pkt_rx_ctrl__field_descriptors[19] = { { - "bssid", + "rssi", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiApRecord, bssid), + offsetof(WifiPktRxCtrl, rssi), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ssid", + "rate", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiApRecord, ssid), + offsetof(WifiPktRxCtrl, rate), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "primary", + "sig_mode", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiApRecord, primary), + offsetof(WifiPktRxCtrl, sig_mode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "second", + "mcs", 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiApRecord, second), + offsetof(WifiPktRxCtrl, mcs), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "rssi", + "cwb", 5, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiApRecord, rssi), + offsetof(WifiPktRxCtrl, cwb), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "authmode", + "smoothing", 6, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiApRecord, authmode), + offsetof(WifiPktRxCtrl, smoothing), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "pairwise_cipher", + "not_sounding", 7, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiApRecord, pairwise_cipher), + offsetof(WifiPktRxCtrl, not_sounding), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "group_cipher", + "aggregation", 8, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiApRecord, group_cipher), + offsetof(WifiPktRxCtrl, aggregation), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ant", + "stbc", 9, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiApRecord, ant), + offsetof(WifiPktRxCtrl, stbc), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "bitmask", + "fec_coding", 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiApRecord, bitmask), + offsetof(WifiPktRxCtrl, fec_coding), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "country", + "sgi", 11, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(WifiApRecord, country), - &wifi_country__descriptor, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "he_ap", - 12, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(WifiApRecord, he_ap), - &wifi_he_ap_info__descriptor, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "bandwidth", - 13, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiApRecord, bandwidth), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "vht_ch_freq1", - 14, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiApRecord, vht_ch_freq1), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "vht_ch_freq2", - 15, - PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiApRecord, vht_ch_freq2), + offsetof(WifiPktRxCtrl, sgi), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned wifi_ap_record__field_indices_by_name[] = { - 8, /* field[8] = ant */ - 5, /* field[5] = authmode */ - 12, /* field[12] = bandwidth */ - 9, /* field[9] = bitmask */ - 0, /* field[0] = bssid */ - 10, /* field[10] = country */ - 7, /* field[7] = group_cipher */ - 11, /* field[11] = he_ap */ - 6, /* field[6] = pairwise_cipher */ - 2, /* field[2] = primary */ - 4, /* field[4] = rssi */ - 3, /* field[3] = second */ - 1, /* field[1] = ssid */ - 13, /* field[13] = vht_ch_freq1 */ - 14, /* field[14] = vht_ch_freq2 */ -}; -static const ProtobufCIntRange wifi_ap_record__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 15 } -}; -const ProtobufCMessageDescriptor wifi_ap_record__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_ap_record", - "WifiApRecord", - "WifiApRecord", - "", - sizeof(WifiApRecord), - 15, - wifi_ap_record__field_descriptors, - wifi_ap_record__field_indices_by_name, - 1, wifi_ap_record__number_ranges, - (ProtobufCMessageInit) wifi_ap_record__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor wifi_scan_threshold__field_descriptors[3] = -{ { - "rssi", - 1, + "noise_floor", + 12, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiScanThreshold, rssi), + offsetof(WifiPktRxCtrl, noise_floor), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "authmode", - 2, + "ampdu_cnt", + 13, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiScanThreshold, authmode), + offsetof(WifiPktRxCtrl, ampdu_cnt), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "rssi_5g_adjustment", - 3, + "channel", + 14, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiScanThreshold, rssi_5g_adjustment), + offsetof(WifiPktRxCtrl, channel), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned wifi_scan_threshold__field_indices_by_name[] = { - 1, /* field[1] = authmode */ - 0, /* field[0] = rssi */ - 2, /* field[2] = rssi_5g_adjustment */ -}; -static const ProtobufCIntRange wifi_scan_threshold__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 3 } -}; -const ProtobufCMessageDescriptor wifi_scan_threshold__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_scan_threshold", - "WifiScanThreshold", - "WifiScanThreshold", - "", - sizeof(WifiScanThreshold), - 3, - wifi_scan_threshold__field_descriptors, - wifi_scan_threshold__field_indices_by_name, - 1, wifi_scan_threshold__number_ranges, - (ProtobufCMessageInit) wifi_scan_threshold__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor wifi_pmf_config__field_descriptors[2] = -{ { - "capable", - 1, + "secondary_channel", + 15, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPmfConfig, capable), + offsetof(WifiPktRxCtrl, secondary_channel), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "required", - 2, + "timestamp", + 16, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPmfConfig, required), + offsetof(WifiPktRxCtrl, timestamp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned wifi_pmf_config__field_indices_by_name[] = { - 0, /* field[0] = capable */ - 1, /* field[1] = required */ -}; -static const ProtobufCIntRange wifi_pmf_config__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor wifi_pmf_config__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_pmf_config", - "WifiPmfConfig", - "WifiPmfConfig", - "", - sizeof(WifiPmfConfig), - 2, - wifi_pmf_config__field_descriptors, - wifi_pmf_config__field_indices_by_name, - 1, wifi_pmf_config__number_ranges, - (ProtobufCMessageInit) wifi_pmf_config__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor wifi_bss_max_idle_config__field_descriptors[2] = -{ { - "period", - 1, + "ant", + 17, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiBssMaxIdleConfig, period), + offsetof(WifiPktRxCtrl, ant), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "protected_keep_alive", - 2, + "sig_len", + 18, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiBssMaxIdleConfig, protected_keep_alive), + offsetof(WifiPktRxCtrl, sig_len), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rx_state", + 19, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiPktRxCtrl, rx_state), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_bss_max_idle_config__field_indices_by_name[] = { - 0, /* field[0] = period */ - 1, /* field[1] = protected_keep_alive */ +static const unsigned wifi_pkt_rx_ctrl__field_indices_by_name[] = { + 7, /* field[7] = aggregation */ + 12, /* field[12] = ampdu_cnt */ + 16, /* field[16] = ant */ + 13, /* field[13] = channel */ + 4, /* field[4] = cwb */ + 9, /* field[9] = fec_coding */ + 3, /* field[3] = mcs */ + 11, /* field[11] = noise_floor */ + 6, /* field[6] = not_sounding */ + 1, /* field[1] = rate */ + 0, /* field[0] = rssi */ + 18, /* field[18] = rx_state */ + 14, /* field[14] = secondary_channel */ + 10, /* field[10] = sgi */ + 17, /* field[17] = sig_len */ + 2, /* field[2] = sig_mode */ + 5, /* field[5] = smoothing */ + 8, /* field[8] = stbc */ + 15, /* field[15] = timestamp */ }; -static const ProtobufCIntRange wifi_bss_max_idle_config__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_pkt_rx_ctrl__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 19 } }; -const ProtobufCMessageDescriptor wifi_bss_max_idle_config__descriptor = +const ProtobufCMessageDescriptor wifi_pkt_rx_ctrl__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_bss_max_idle_config", - "WifiBssMaxIdleConfig", - "WifiBssMaxIdleConfig", + "wifi_pkt_rx_ctrl", + "WifiPktRxCtrl", + "WifiPktRxCtrl", "", - sizeof(WifiBssMaxIdleConfig), - 2, - wifi_bss_max_idle_config__field_descriptors, - wifi_bss_max_idle_config__field_indices_by_name, - 1, wifi_bss_max_idle_config__number_ranges, - (ProtobufCMessageInit) wifi_bss_max_idle_config__init, + sizeof(WifiPktRxCtrl), + 19, + wifi_pkt_rx_ctrl__field_descriptors, + wifi_pkt_rx_ctrl__field_indices_by_name, + 1, wifi_pkt_rx_ctrl__number_ranges, + (ProtobufCMessageInit) wifi_pkt_rx_ctrl__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_ap_config__field_descriptors[18] = +static const ProtobufCFieldDescriptor wifi_promiscuous_pkt__field_descriptors[2] = { { - "ssid", + "rx_ctrl", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(WifiApConfig, ssid), - NULL, + offsetof(WifiPromiscuousPkt, rx_ctrl), + &wifi_pkt_rx_ctrl__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "password", + "payload", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiApConfig, password), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "ssid_len", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiApConfig, ssid_len), + offsetof(WifiPromiscuousPkt, payload), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_promiscuous_pkt__field_indices_by_name[] = { + 1, /* field[1] = payload */ + 0, /* field[0] = rx_ctrl */ +}; +static const ProtobufCIntRange wifi_promiscuous_pkt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor wifi_promiscuous_pkt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_promiscuous_pkt", + "WifiPromiscuousPkt", + "WifiPromiscuousPkt", + "", + sizeof(WifiPromiscuousPkt), + 2, + wifi_promiscuous_pkt__field_descriptors, + wifi_promiscuous_pkt__field_indices_by_name, + 1, wifi_promiscuous_pkt__number_ranges, + (ProtobufCMessageInit) wifi_promiscuous_pkt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_promiscuous_filter__field_descriptors[1] = +{ { - "channel", - 4, + "filter_mask", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiApConfig, channel), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "authmode", - 5, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiApConfig, authmode), + offsetof(WifiPromiscuousFilter, filter_mask), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_promiscuous_filter__field_indices_by_name[] = { + 0, /* field[0] = filter_mask */ +}; +static const ProtobufCIntRange wifi_promiscuous_filter__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor wifi_promiscuous_filter__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_promiscuous_filter", + "WifiPromiscuousFilter", + "WifiPromiscuousFilter", + "", + sizeof(WifiPromiscuousFilter), + 1, + wifi_promiscuous_filter__field_descriptors, + wifi_promiscuous_filter__field_indices_by_name, + 1, wifi_promiscuous_filter__number_ranges, + (ProtobufCMessageInit) wifi_promiscuous_filter__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_csi_config__field_descriptors[7] = +{ { - "ssid_hidden", - 6, + "lltf_en", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiApConfig, ssid_hidden), + offsetof(WifiCsiConfig, lltf_en), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "max_connection", - 7, + "htltf_en", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiApConfig, max_connection), + offsetof(WifiCsiConfig, htltf_en), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "beacon_interval", - 8, + "stbc_htltf2_en", + 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiApConfig, beacon_interval), + offsetof(WifiCsiConfig, stbc_htltf2_en), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "pairwise_cipher", - 9, + "ltf_merge_en", + 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiApConfig, pairwise_cipher), + offsetof(WifiCsiConfig, ltf_merge_en), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ftm_responder", - 10, + "channel_filter_en", + 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiApConfig, ftm_responder), + offsetof(WifiCsiConfig, channel_filter_en), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "pmf_cfg", - 11, + "manu_scale", + 6, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiApConfig, pmf_cfg), - &wifi_pmf_config__descriptor, + offsetof(WifiCsiConfig, manu_scale), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "sae_pwe_h2e", - 12, + "shift", + 7, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiApConfig, sae_pwe_h2e), + offsetof(WifiCsiConfig, shift), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_csi_config__field_indices_by_name[] = { + 4, /* field[4] = channel_filter_en */ + 1, /* field[1] = htltf_en */ + 0, /* field[0] = lltf_en */ + 3, /* field[3] = ltf_merge_en */ + 5, /* field[5] = manu_scale */ + 6, /* field[6] = shift */ + 2, /* field[2] = stbc_htltf2_en */ +}; +static const ProtobufCIntRange wifi_csi_config__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 7 } +}; +const ProtobufCMessageDescriptor wifi_csi_config__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_csi_config", + "WifiCsiConfig", + "WifiCsiConfig", + "", + sizeof(WifiCsiConfig), + 7, + wifi_csi_config__field_descriptors, + wifi_csi_config__field_indices_by_name, + 1, wifi_csi_config__number_ranges, + (ProtobufCMessageInit) wifi_csi_config__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_csi_info__field_descriptors[6] = +{ { - "csa_count", - 13, + "rx_ctrl", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(WifiApConfig, csa_count), - NULL, + offsetof(WifiCsiInfo, rx_ctrl), + &wifi_pkt_rx_ctrl__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dtim_period", - 14, + "mac", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiApConfig, dtim_period), + offsetof(WifiCsiInfo, mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "transition_disable", - 15, + "dmac", + 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiApConfig, transition_disable), + offsetof(WifiCsiInfo, dmac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "sae_ext", - 16, + "first_word_invalid", + 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiApConfig, sae_ext), + offsetof(WifiCsiInfo, first_word_invalid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "bss_max_idle_cfg", - 17, + "buf", + 5, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiApConfig, bss_max_idle_cfg), - &wifi_bss_max_idle_config__descriptor, + offsetof(WifiCsiInfo, buf), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "gtk_rekey_interval", - 18, + "len", + 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiApConfig, gtk_rekey_interval), + offsetof(WifiCsiInfo, len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_ap_config__field_indices_by_name[] = { - 4, /* field[4] = authmode */ - 7, /* field[7] = beacon_interval */ - 16, /* field[16] = bss_max_idle_cfg */ - 3, /* field[3] = channel */ - 12, /* field[12] = csa_count */ - 13, /* field[13] = dtim_period */ - 9, /* field[9] = ftm_responder */ - 17, /* field[17] = gtk_rekey_interval */ - 6, /* field[6] = max_connection */ - 8, /* field[8] = pairwise_cipher */ - 1, /* field[1] = password */ - 10, /* field[10] = pmf_cfg */ - 15, /* field[15] = sae_ext */ - 11, /* field[11] = sae_pwe_h2e */ - 0, /* field[0] = ssid */ - 5, /* field[5] = ssid_hidden */ - 2, /* field[2] = ssid_len */ - 14, /* field[14] = transition_disable */ +static const unsigned wifi_csi_info__field_indices_by_name[] = { + 4, /* field[4] = buf */ + 2, /* field[2] = dmac */ + 3, /* field[3] = first_word_invalid */ + 5, /* field[5] = len */ + 1, /* field[1] = mac */ + 0, /* field[0] = rx_ctrl */ }; -static const ProtobufCIntRange wifi_ap_config__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_csi_info__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 18 } + { 0, 6 } }; -const ProtobufCMessageDescriptor wifi_ap_config__descriptor = +const ProtobufCMessageDescriptor wifi_csi_info__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_ap_config", - "WifiApConfig", - "WifiApConfig", + "wifi_csi_info", + "WifiCsiInfo", + "WifiCsiInfo", "", - sizeof(WifiApConfig), - 18, - wifi_ap_config__field_descriptors, - wifi_ap_config__field_indices_by_name, - 1, wifi_ap_config__number_ranges, - (ProtobufCMessageInit) wifi_ap_config__init, + sizeof(WifiCsiInfo), + 6, + wifi_csi_info__field_descriptors, + wifi_csi_info__field_indices_by_name, + 1, wifi_csi_info__number_ranges, + (ProtobufCMessageInit) wifi_csi_info__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_sta_config__field_descriptors[16] = +static const ProtobufCFieldDescriptor wifi_ant_gpio__field_descriptors[2] = { { - "ssid", + "gpio_select", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiStaConfig, ssid), + offsetof(WifiAntGpio, gpio_select), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "password", + "gpio_num", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, - 0, /* quantifier_offset */ - offsetof(WifiStaConfig, password), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "scan_method", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiStaConfig, scan_method), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "bssid_set", - 4, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiStaConfig, bssid_set), + offsetof(WifiAntGpio, gpio_num), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_ant_gpio__field_indices_by_name[] = { + 1, /* field[1] = gpio_num */ + 0, /* field[0] = gpio_select */ +}; +static const ProtobufCIntRange wifi_ant_gpio__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor wifi_ant_gpio__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_ant_gpio", + "WifiAntGpio", + "WifiAntGpio", + "", + sizeof(WifiAntGpio), + 2, + wifi_ant_gpio__field_descriptors, + wifi_ant_gpio__field_indices_by_name, + 1, wifi_ant_gpio__number_ranges, + (ProtobufCMessageInit) wifi_ant_gpio__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_ant_gpio_config__field_descriptors[1] = +{ { - "bssid", - 5, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, - 0, /* quantifier_offset */ - offsetof(WifiStaConfig, bssid), - NULL, + "gpio_cfgs", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(WifiAntGpioConfig, n_gpio_cfgs), + offsetof(WifiAntGpioConfig, gpio_cfgs), + &wifi_ant_gpio__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_ant_gpio_config__field_indices_by_name[] = { + 0, /* field[0] = gpio_cfgs */ +}; +static const ProtobufCIntRange wifi_ant_gpio_config__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor wifi_ant_gpio_config__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_ant_gpio_config", + "WifiAntGpioConfig", + "WifiAntGpioConfig", + "", + sizeof(WifiAntGpioConfig), + 1, + wifi_ant_gpio_config__field_descriptors, + wifi_ant_gpio_config__field_indices_by_name, + 1, wifi_ant_gpio_config__number_ranges, + (ProtobufCMessageInit) wifi_ant_gpio_config__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_ant_config__field_descriptors[5] = +{ { - "channel", - 6, + "rx_ant_mode", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiStaConfig, channel), + offsetof(WifiAntConfig, rx_ant_mode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "listen_interval", - 7, + "rx_ant_default", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiStaConfig, listen_interval), + offsetof(WifiAntConfig, rx_ant_default), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "sort_method", - 8, + "tx_ant_mode", + 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiStaConfig, sort_method), + offsetof(WifiAntConfig, tx_ant_mode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "threshold", - 9, + "enabled_ant0", + 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiStaConfig, threshold), - &wifi_scan_threshold__descriptor, + offsetof(WifiAntConfig, enabled_ant0), NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "pmf_cfg", - 10, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(WifiStaConfig, pmf_cfg), - &wifi_pmf_config__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "bitmask", - 11, + "enabled_ant1", + 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiStaConfig, bitmask), + offsetof(WifiAntConfig, enabled_ant1), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_ant_config__field_indices_by_name[] = { + 3, /* field[3] = enabled_ant0 */ + 4, /* field[4] = enabled_ant1 */ + 1, /* field[1] = rx_ant_default */ + 0, /* field[0] = rx_ant_mode */ + 2, /* field[2] = tx_ant_mode */ +}; +static const ProtobufCIntRange wifi_ant_config__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor wifi_ant_config__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_ant_config", + "WifiAntConfig", + "WifiAntConfig", + "", + sizeof(WifiAntConfig), + 5, + wifi_ant_config__field_descriptors, + wifi_ant_config__field_indices_by_name, + 1, wifi_ant_config__number_ranges, + (ProtobufCMessageInit) wifi_ant_config__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_action_tx_req__field_descriptors[5] = +{ { - "sae_pwe_h2e", - 12, + "ifx", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiStaConfig, sae_pwe_h2e), + offsetof(WifiActionTxReq, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "failure_retry_cnt", - 13, + "dest_mac", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiStaConfig, failure_retry_cnt), + offsetof(WifiActionTxReq, dest_mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "he_bitmask", - 14, + "no_ack", + 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiStaConfig, he_bitmask), + offsetof(WifiActionTxReq, no_ack), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "sae_h2e_identifier", - 15, + "data_len", + 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiStaConfig, sae_h2e_identifier), + offsetof(WifiActionTxReq, data_len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "sae_pk_mode", - 16, + "data", + 5, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiStaConfig, sae_pk_mode), + offsetof(WifiActionTxReq, data), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_sta_config__field_indices_by_name[] = { - 10, /* field[10] = bitmask */ - 4, /* field[4] = bssid */ - 3, /* field[3] = bssid_set */ - 5, /* field[5] = channel */ - 12, /* field[12] = failure_retry_cnt */ - 13, /* field[13] = he_bitmask */ - 6, /* field[6] = listen_interval */ - 1, /* field[1] = password */ - 9, /* field[9] = pmf_cfg */ - 14, /* field[14] = sae_h2e_identifier */ - 15, /* field[15] = sae_pk_mode */ - 11, /* field[11] = sae_pwe_h2e */ - 2, /* field[2] = scan_method */ - 7, /* field[7] = sort_method */ - 0, /* field[0] = ssid */ - 8, /* field[8] = threshold */ -}; -static const ProtobufCIntRange wifi_sta_config__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 16 } -}; -const ProtobufCMessageDescriptor wifi_sta_config__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_sta_config", - "WifiStaConfig", - "WifiStaConfig", - "", - sizeof(WifiStaConfig), - 16, - wifi_sta_config__field_descriptors, - wifi_sta_config__field_indices_by_name, - 1, wifi_sta_config__number_ranges, - (ProtobufCMessageInit) wifi_sta_config__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor wifi_config__field_descriptors[2] = -{ - { - "ap", - 1, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - offsetof(WifiConfig, u_case), - offsetof(WifiConfig, ap), - &wifi_ap_config__descriptor, - NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "sta", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - offsetof(WifiConfig, u_case), - offsetof(WifiConfig, sta), - &wifi_sta_config__descriptor, - NULL, - 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, -}; -static const unsigned wifi_config__field_indices_by_name[] = { - 0, /* field[0] = ap */ - 1, /* field[1] = sta */ +static const unsigned wifi_action_tx_req__field_indices_by_name[] = { + 4, /* field[4] = data */ + 3, /* field[3] = data_len */ + 1, /* field[1] = dest_mac */ + 0, /* field[0] = ifx */ + 2, /* field[2] = no_ack */ }; -static const ProtobufCIntRange wifi_config__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_action_tx_req__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 5 } }; -const ProtobufCMessageDescriptor wifi_config__descriptor = +const ProtobufCMessageDescriptor wifi_action_tx_req__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_config", - "WifiConfig", - "WifiConfig", + "wifi_action_tx_req", + "WifiActionTxReq", + "WifiActionTxReq", "", - sizeof(WifiConfig), - 2, - wifi_config__field_descriptors, - wifi_config__field_indices_by_name, - 1, wifi_config__number_ranges, - (ProtobufCMessageInit) wifi_config__init, + sizeof(WifiActionTxReq), + 5, + wifi_action_tx_req__field_descriptors, + wifi_action_tx_req__field_indices_by_name, + 1, wifi_action_tx_req__number_ranges, + (ProtobufCMessageInit) wifi_action_tx_req__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_sta_info__field_descriptors[3] = +static const ProtobufCFieldDescriptor wifi_ftm_initiator_cfg__field_descriptors[4] = { { - "mac", + "resp_mac", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiStaInfo, mac), + offsetof(WifiFtmInitiatorCfg, resp_mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "rssi", + "channel", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiStaInfo, rssi), + offsetof(WifiFtmInitiatorCfg, channel), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "bitmask", + "frm_count", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiStaInfo, bitmask), + offsetof(WifiFtmInitiatorCfg, frm_count), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "burst_period", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiFtmInitiatorCfg, burst_period), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_sta_info__field_indices_by_name[] = { - 2, /* field[2] = bitmask */ - 0, /* field[0] = mac */ - 1, /* field[1] = rssi */ +static const unsigned wifi_ftm_initiator_cfg__field_indices_by_name[] = { + 3, /* field[3] = burst_period */ + 1, /* field[1] = channel */ + 2, /* field[2] = frm_count */ + 0, /* field[0] = resp_mac */ }; -static const ProtobufCIntRange wifi_sta_info__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_ftm_initiator_cfg__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 3 } + { 0, 4 } }; -const ProtobufCMessageDescriptor wifi_sta_info__descriptor = +const ProtobufCMessageDescriptor wifi_ftm_initiator_cfg__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_sta_info", - "WifiStaInfo", - "WifiStaInfo", + "wifi_ftm_initiator_cfg", + "WifiFtmInitiatorCfg", + "WifiFtmInitiatorCfg", "", - sizeof(WifiStaInfo), - 3, - wifi_sta_info__field_descriptors, - wifi_sta_info__field_indices_by_name, - 1, wifi_sta_info__number_ranges, - (ProtobufCMessageInit) wifi_sta_info__init, + sizeof(WifiFtmInitiatorCfg), + 4, + wifi_ftm_initiator_cfg__field_descriptors, + wifi_ftm_initiator_cfg__field_indices_by_name, + 1, wifi_ftm_initiator_cfg__number_ranges, + (ProtobufCMessageInit) wifi_ftm_initiator_cfg__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_sta_list__field_descriptors[2] = +static const ProtobufCFieldDescriptor wifi_event_sta_scan_done__field_descriptors[3] = { { - "sta", + "status", 1, - PROTOBUF_C_LABEL_REPEATED, - PROTOBUF_C_TYPE_MESSAGE, - offsetof(WifiStaList, n_sta), - offsetof(WifiStaList, sta), - &wifi_sta_info__descriptor, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiEventStaScanDone, status), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "num", + "number", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiStaList, num), + offsetof(WifiEventStaScanDone, number), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "scan_id", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(WifiEventStaScanDone, scan_id), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_sta_list__field_indices_by_name[] = { - 1, /* field[1] = num */ - 0, /* field[0] = sta */ +static const unsigned wifi_event_sta_scan_done__field_indices_by_name[] = { + 1, /* field[1] = number */ + 2, /* field[2] = scan_id */ + 0, /* field[0] = status */ }; -static const ProtobufCIntRange wifi_sta_list__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_event_sta_scan_done__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 3 } }; -const ProtobufCMessageDescriptor wifi_sta_list__descriptor = +const ProtobufCMessageDescriptor wifi_event_sta_scan_done__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_sta_list", - "WifiStaList", - "WifiStaList", + "wifi_event_sta_scan_done", + "WifiEventStaScanDone", + "WifiEventStaScanDone", "", - sizeof(WifiStaList), - 2, - wifi_sta_list__field_descriptors, - wifi_sta_list__field_indices_by_name, - 1, wifi_sta_list__number_ranges, - (ProtobufCMessageInit) wifi_sta_list__init, + sizeof(WifiEventStaScanDone), + 3, + wifi_event_sta_scan_done__field_descriptors, + wifi_event_sta_scan_done__field_indices_by_name, + 1, wifi_event_sta_scan_done__number_ranges, + (ProtobufCMessageInit) wifi_event_sta_scan_done__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_pkt_rx_ctrl__field_descriptors[19] = +static const ProtobufCFieldDescriptor wifi_event_sta_connected__field_descriptors[6] = { { - "rssi", + "ssid", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, rssi), + offsetof(WifiEventStaConnected, ssid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "rate", + "ssid_len", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, rate), + offsetof(WifiEventStaConnected, ssid_len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "sig_mode", + "bssid", 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, sig_mode), + offsetof(WifiEventStaConnected, bssid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "mcs", + "channel", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, mcs), + offsetof(WifiEventStaConnected, channel), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "cwb", + "authmode", 5, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, cwb), + offsetof(WifiEventStaConnected, authmode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "smoothing", + "aid", 6, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, smoothing), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "not_sounding", - 7, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, not_sounding), + offsetof(WifiEventStaConnected, aid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_event_sta_connected__field_indices_by_name[] = { + 5, /* field[5] = aid */ + 4, /* field[4] = authmode */ + 2, /* field[2] = bssid */ + 3, /* field[3] = channel */ + 0, /* field[0] = ssid */ + 1, /* field[1] = ssid_len */ +}; +static const ProtobufCIntRange wifi_event_sta_connected__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 6 } +}; +const ProtobufCMessageDescriptor wifi_event_sta_connected__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_event_sta_connected", + "WifiEventStaConnected", + "WifiEventStaConnected", + "", + sizeof(WifiEventStaConnected), + 6, + wifi_event_sta_connected__field_descriptors, + wifi_event_sta_connected__field_indices_by_name, + 1, wifi_event_sta_connected__number_ranges, + (ProtobufCMessageInit) wifi_event_sta_connected__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_event_sta_disconnected__field_descriptors[5] = +{ { - "aggregation", - 8, + "ssid", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, aggregation), + offsetof(WifiEventStaDisconnected, ssid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "stbc", - 9, + "ssid_len", + 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, stbc), + offsetof(WifiEventStaDisconnected, ssid_len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "fec_coding", - 10, + "bssid", + 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, fec_coding), + offsetof(WifiEventStaDisconnected, bssid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "sgi", - 11, + "reason", + 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, sgi), + offsetof(WifiEventStaDisconnected, reason), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "noise_floor", - 12, + "rssi", + 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, noise_floor), + offsetof(WifiEventStaDisconnected, rssi), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_event_sta_disconnected__field_indices_by_name[] = { + 2, /* field[2] = bssid */ + 3, /* field[3] = reason */ + 4, /* field[4] = rssi */ + 0, /* field[0] = ssid */ + 1, /* field[1] = ssid_len */ +}; +static const ProtobufCIntRange wifi_event_sta_disconnected__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor wifi_event_sta_disconnected__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_event_sta_disconnected", + "WifiEventStaDisconnected", + "WifiEventStaDisconnected", + "", + sizeof(WifiEventStaDisconnected), + 5, + wifi_event_sta_disconnected__field_descriptors, + wifi_event_sta_disconnected__field_indices_by_name, + 1, wifi_event_sta_disconnected__number_ranges, + (ProtobufCMessageInit) wifi_event_sta_disconnected__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_event_sta_authmode_change__field_descriptors[2] = +{ { - "ampdu_cnt", - 13, + "old_mode", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, ampdu_cnt), + offsetof(WifiEventStaAuthmodeChange, old_mode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "channel", - 14, + "new_mode", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, channel), + offsetof(WifiEventStaAuthmodeChange, new_mode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_event_sta_authmode_change__field_indices_by_name[] = { + 1, /* field[1] = new_mode */ + 0, /* field[0] = old_mode */ +}; +static const ProtobufCIntRange wifi_event_sta_authmode_change__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor wifi_event_sta_authmode_change__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_event_sta_authmode_change", + "WifiEventStaAuthmodeChange", + "WifiEventStaAuthmodeChange", + "", + sizeof(WifiEventStaAuthmodeChange), + 2, + wifi_event_sta_authmode_change__field_descriptors, + wifi_event_sta_authmode_change__field_indices_by_name, + 1, wifi_event_sta_authmode_change__number_ranges, + (ProtobufCMessageInit) wifi_event_sta_authmode_change__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_event_sta_wps_er_pin__field_descriptors[1] = +{ { - "secondary_channel", - 15, + "pin_code", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, secondary_channel), + offsetof(WifiEventStaWpsErPin, pin_code), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_event_sta_wps_er_pin__field_indices_by_name[] = { + 0, /* field[0] = pin_code */ +}; +static const ProtobufCIntRange wifi_event_sta_wps_er_pin__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor wifi_event_sta_wps_er_pin__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_event_sta_wps_er_pin", + "WifiEventStaWpsErPin", + "WifiEventStaWpsErPin", + "", + sizeof(WifiEventStaWpsErPin), + 1, + wifi_event_sta_wps_er_pin__field_descriptors, + wifi_event_sta_wps_er_pin__field_indices_by_name, + 1, wifi_event_sta_wps_er_pin__number_ranges, + (ProtobufCMessageInit) wifi_event_sta_wps_er_pin__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor ap_cred__field_descriptors[2] = +{ { - "timestamp", - 16, + "ssid", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, timestamp), + offsetof(ApCred, ssid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ant", - 17, + "passphrase", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, ant), + offsetof(ApCred, passphrase), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned ap_cred__field_indices_by_name[] = { + 1, /* field[1] = passphrase */ + 0, /* field[0] = ssid */ +}; +static const ProtobufCIntRange ap_cred__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor ap_cred__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "ap_cred", + "ApCred", + "ApCred", + "", + sizeof(ApCred), + 2, + ap_cred__field_descriptors, + ap_cred__field_indices_by_name, + 1, ap_cred__number_ranges, + (ProtobufCMessageInit) ap_cred__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_event_sta_wps_er_success__field_descriptors[2] = +{ { - "sig_len", - 18, + "ap_cred_cnt", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, sig_len), + offsetof(WifiEventStaWpsErSuccess, ap_cred_cnt), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "rx_state", - 19, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiPktRxCtrl, rx_state), - NULL, + "ap_creds", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(WifiEventStaWpsErSuccess, n_ap_creds), + offsetof(WifiEventStaWpsErSuccess, ap_creds), + &ap_cred__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_pkt_rx_ctrl__field_indices_by_name[] = { - 7, /* field[7] = aggregation */ - 12, /* field[12] = ampdu_cnt */ - 16, /* field[16] = ant */ - 13, /* field[13] = channel */ - 4, /* field[4] = cwb */ - 9, /* field[9] = fec_coding */ - 3, /* field[3] = mcs */ - 11, /* field[11] = noise_floor */ - 6, /* field[6] = not_sounding */ - 1, /* field[1] = rate */ - 0, /* field[0] = rssi */ - 18, /* field[18] = rx_state */ - 14, /* field[14] = secondary_channel */ - 10, /* field[10] = sgi */ - 17, /* field[17] = sig_len */ - 2, /* field[2] = sig_mode */ - 5, /* field[5] = smoothing */ - 8, /* field[8] = stbc */ - 15, /* field[15] = timestamp */ +static const unsigned wifi_event_sta_wps_er_success__field_indices_by_name[] = { + 0, /* field[0] = ap_cred_cnt */ + 1, /* field[1] = ap_creds */ }; -static const ProtobufCIntRange wifi_pkt_rx_ctrl__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_event_sta_wps_er_success__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 19 } + { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_pkt_rx_ctrl__descriptor = +const ProtobufCMessageDescriptor wifi_event_sta_wps_er_success__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_pkt_rx_ctrl", - "WifiPktRxCtrl", - "WifiPktRxCtrl", + "wifi_event_sta_wps_er_success", + "WifiEventStaWpsErSuccess", + "WifiEventStaWpsErSuccess", "", - sizeof(WifiPktRxCtrl), - 19, - wifi_pkt_rx_ctrl__field_descriptors, - wifi_pkt_rx_ctrl__field_indices_by_name, - 1, wifi_pkt_rx_ctrl__number_ranges, - (ProtobufCMessageInit) wifi_pkt_rx_ctrl__init, + sizeof(WifiEventStaWpsErSuccess), + 2, + wifi_event_sta_wps_er_success__field_descriptors, + wifi_event_sta_wps_er_success__field_indices_by_name, + 1, wifi_event_sta_wps_er_success__number_ranges, + (ProtobufCMessageInit) wifi_event_sta_wps_er_success__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_promiscuous_pkt__field_descriptors[2] = +static const ProtobufCFieldDescriptor wifi_event_ap_probe_req_rx__field_descriptors[2] = { { - "rx_ctrl", + "rssi", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiPromiscuousPkt, rx_ctrl), - &wifi_pkt_rx_ctrl__descriptor, + offsetof(WifiEventApProbeReqRx, rssi), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "payload", + "mac", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiPromiscuousPkt, payload), + offsetof(WifiEventApProbeReqRx, mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_promiscuous_pkt__field_indices_by_name[] = { - 1, /* field[1] = payload */ - 0, /* field[0] = rx_ctrl */ +static const unsigned wifi_event_ap_probe_req_rx__field_indices_by_name[] = { + 1, /* field[1] = mac */ + 0, /* field[0] = rssi */ }; -static const ProtobufCIntRange wifi_promiscuous_pkt__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_event_ap_probe_req_rx__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_promiscuous_pkt__descriptor = +const ProtobufCMessageDescriptor wifi_event_ap_probe_req_rx__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_promiscuous_pkt", - "WifiPromiscuousPkt", - "WifiPromiscuousPkt", + "wifi_event_ap_probe_req_rx", + "WifiEventApProbeReqRx", + "WifiEventApProbeReqRx", "", - sizeof(WifiPromiscuousPkt), + sizeof(WifiEventApProbeReqRx), 2, - wifi_promiscuous_pkt__field_descriptors, - wifi_promiscuous_pkt__field_indices_by_name, - 1, wifi_promiscuous_pkt__number_ranges, - (ProtobufCMessageInit) wifi_promiscuous_pkt__init, + wifi_event_ap_probe_req_rx__field_descriptors, + wifi_event_ap_probe_req_rx__field_indices_by_name, + 1, wifi_event_ap_probe_req_rx__number_ranges, + (ProtobufCMessageInit) wifi_event_ap_probe_req_rx__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_promiscuous_filter__field_descriptors[1] = +static const ProtobufCFieldDescriptor wifi_event_bss_rssi_low__field_descriptors[1] = { { - "filter_mask", + "rssi", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiPromiscuousFilter, filter_mask), + offsetof(WifiEventBssRssiLow, rssi), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_promiscuous_filter__field_indices_by_name[] = { - 0, /* field[0] = filter_mask */ +static const unsigned wifi_event_bss_rssi_low__field_indices_by_name[] = { + 0, /* field[0] = rssi */ }; -static const ProtobufCIntRange wifi_promiscuous_filter__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_event_bss_rssi_low__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_promiscuous_filter__descriptor = +const ProtobufCMessageDescriptor wifi_event_bss_rssi_low__descriptor = { - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_promiscuous_filter", - "WifiPromiscuousFilter", - "WifiPromiscuousFilter", + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_event_bss_rssi_low", + "WifiEventBssRssiLow", + "WifiEventBssRssiLow", "", - sizeof(WifiPromiscuousFilter), + sizeof(WifiEventBssRssiLow), 1, - wifi_promiscuous_filter__field_descriptors, - wifi_promiscuous_filter__field_indices_by_name, - 1, wifi_promiscuous_filter__number_ranges, - (ProtobufCMessageInit) wifi_promiscuous_filter__init, + wifi_event_bss_rssi_low__field_descriptors, + wifi_event_bss_rssi_low__field_indices_by_name, + 1, wifi_event_bss_rssi_low__number_ranges, + (ProtobufCMessageInit) wifi_event_bss_rssi_low__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_csi_config__field_descriptors[7] = +static const ProtobufCFieldDescriptor wifi_ftm_report_entry__field_descriptors[7] = { { - "lltf_en", + "dlog_token", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiCsiConfig, lltf_en), + offsetof(WifiFtmReportEntry, dlog_token), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "htltf_en", + "rssi", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiCsiConfig, htltf_en), + offsetof(WifiFtmReportEntry, rssi), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "stbc_htltf2_en", + "rtt", 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiCsiConfig, stbc_htltf2_en), + offsetof(WifiFtmReportEntry, rtt), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ltf_merge_en", + "t1", 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_UINT64, 0, /* quantifier_offset */ - offsetof(WifiCsiConfig, ltf_merge_en), + offsetof(WifiFtmReportEntry, t1), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "channel_filter_en", + "t2", 5, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_UINT64, 0, /* quantifier_offset */ - offsetof(WifiCsiConfig, channel_filter_en), + offsetof(WifiFtmReportEntry, t2), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "manu_scale", + "t3", 6, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_UINT64, 0, /* quantifier_offset */ - offsetof(WifiCsiConfig, manu_scale), + offsetof(WifiFtmReportEntry, t3), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "shift", + "t4", 7, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_UINT64, 0, /* quantifier_offset */ - offsetof(WifiCsiConfig, shift), + offsetof(WifiFtmReportEntry, t4), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_csi_config__field_indices_by_name[] = { - 4, /* field[4] = channel_filter_en */ - 1, /* field[1] = htltf_en */ - 0, /* field[0] = lltf_en */ - 3, /* field[3] = ltf_merge_en */ - 5, /* field[5] = manu_scale */ - 6, /* field[6] = shift */ - 2, /* field[2] = stbc_htltf2_en */ +static const unsigned wifi_ftm_report_entry__field_indices_by_name[] = { + 0, /* field[0] = dlog_token */ + 1, /* field[1] = rssi */ + 2, /* field[2] = rtt */ + 3, /* field[3] = t1 */ + 4, /* field[4] = t2 */ + 5, /* field[5] = t3 */ + 6, /* field[6] = t4 */ }; -static const ProtobufCIntRange wifi_csi_config__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_ftm_report_entry__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; -const ProtobufCMessageDescriptor wifi_csi_config__descriptor = +const ProtobufCMessageDescriptor wifi_ftm_report_entry__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_csi_config", - "WifiCsiConfig", - "WifiCsiConfig", + "wifi_ftm_report_entry", + "WifiFtmReportEntry", + "WifiFtmReportEntry", "", - sizeof(WifiCsiConfig), + sizeof(WifiFtmReportEntry), 7, - wifi_csi_config__field_descriptors, - wifi_csi_config__field_indices_by_name, - 1, wifi_csi_config__number_ranges, - (ProtobufCMessageInit) wifi_csi_config__init, + wifi_ftm_report_entry__field_descriptors, + wifi_ftm_report_entry__field_indices_by_name, + 1, wifi_ftm_report_entry__number_ranges, + (ProtobufCMessageInit) wifi_ftm_report_entry__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_csi_info__field_descriptors[6] = +static const ProtobufCFieldDescriptor wifi_event_ftm_report__field_descriptors[7] = { { - "rx_ctrl", + "peer_mac", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiCsiInfo, rx_ctrl), - &wifi_pkt_rx_ctrl__descriptor, + offsetof(WifiEventFtmReport, peer_mac), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "mac", + "status", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiCsiInfo, mac), + offsetof(WifiEventFtmReport, status), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dmac", + "rtt_raw", 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiCsiInfo, dmac), + offsetof(WifiEventFtmReport, rtt_raw), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "first_word_invalid", + "rtt_est", 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiCsiInfo, first_word_invalid), + offsetof(WifiEventFtmReport, rtt_est), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "buf", + "dist_est", 5, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, - 0, /* quantifier_offset */ - offsetof(WifiCsiInfo, buf), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "len", - 6, - PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiCsiInfo, len), + offsetof(WifiEventFtmReport, dist_est), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned wifi_csi_info__field_indices_by_name[] = { - 4, /* field[4] = buf */ - 2, /* field[2] = dmac */ - 3, /* field[3] = first_word_invalid */ - 5, /* field[5] = len */ - 1, /* field[1] = mac */ - 0, /* field[0] = rx_ctrl */ -}; -static const ProtobufCIntRange wifi_csi_info__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 6 } -}; -const ProtobufCMessageDescriptor wifi_csi_info__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_csi_info", - "WifiCsiInfo", - "WifiCsiInfo", - "", - sizeof(WifiCsiInfo), - 6, - wifi_csi_info__field_descriptors, - wifi_csi_info__field_indices_by_name, - 1, wifi_csi_info__number_ranges, - (ProtobufCMessageInit) wifi_csi_info__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor wifi_ant_gpio__field_descriptors[2] = -{ { - "gpio_select", - 1, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiAntGpio, gpio_select), - NULL, + "ftm_report_data", + 6, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(WifiEventFtmReport, n_ftm_report_data), + offsetof(WifiEventFtmReport, ftm_report_data), + &wifi_ftm_report_entry__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "gpio_num", - 2, + "ftm_report_num_entries", + 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiAntGpio, gpio_num), - NULL, + offsetof(WifiEventFtmReport, ftm_report_num_entries), NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, -}; -static const unsigned wifi_ant_gpio__field_indices_by_name[] = { - 1, /* field[1] = gpio_num */ - 0, /* field[0] = gpio_select */ -}; -static const ProtobufCIntRange wifi_ant_gpio__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor wifi_ant_gpio__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_ant_gpio", - "WifiAntGpio", - "WifiAntGpio", - "", - sizeof(WifiAntGpio), - 2, - wifi_ant_gpio__field_descriptors, - wifi_ant_gpio__field_indices_by_name, - 1, wifi_ant_gpio__number_ranges, - (ProtobufCMessageInit) wifi_ant_gpio__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor wifi_ant_gpio_config__field_descriptors[1] = -{ - { - "gpio_cfgs", - 1, - PROTOBUF_C_LABEL_REPEATED, - PROTOBUF_C_TYPE_MESSAGE, - offsetof(WifiAntGpioConfig, n_gpio_cfgs), - offsetof(WifiAntGpioConfig, gpio_cfgs), - &wifi_ant_gpio__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_ant_gpio_config__field_indices_by_name[] = { - 0, /* field[0] = gpio_cfgs */ +static const unsigned wifi_event_ftm_report__field_indices_by_name[] = { + 4, /* field[4] = dist_est */ + 5, /* field[5] = ftm_report_data */ + 6, /* field[6] = ftm_report_num_entries */ + 0, /* field[0] = peer_mac */ + 3, /* field[3] = rtt_est */ + 2, /* field[2] = rtt_raw */ + 1, /* field[1] = status */ }; -static const ProtobufCIntRange wifi_ant_gpio_config__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_event_ftm_report__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 7 } }; -const ProtobufCMessageDescriptor wifi_ant_gpio_config__descriptor = +const ProtobufCMessageDescriptor wifi_event_ftm_report__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_ant_gpio_config", - "WifiAntGpioConfig", - "WifiAntGpioConfig", + "wifi_event_ftm_report", + "WifiEventFtmReport", + "WifiEventFtmReport", "", - sizeof(WifiAntGpioConfig), - 1, - wifi_ant_gpio_config__field_descriptors, - wifi_ant_gpio_config__field_indices_by_name, - 1, wifi_ant_gpio_config__number_ranges, - (ProtobufCMessageInit) wifi_ant_gpio_config__init, + sizeof(WifiEventFtmReport), + 7, + wifi_event_ftm_report__field_descriptors, + wifi_event_ftm_report__field_indices_by_name, + 1, wifi_event_ftm_report__number_ranges, + (ProtobufCMessageInit) wifi_event_ftm_report__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_ant_config__field_descriptors[5] = +static const ProtobufCFieldDescriptor wifi_event_action_tx_status__field_descriptors[4] = { { - "rx_ant_mode", + "ifx", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiAntConfig, rx_ant_mode), + offsetof(WifiEventActionTxStatus, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "rx_ant_default", + "context", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiAntConfig, rx_ant_default), + offsetof(WifiEventActionTxStatus, context), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "tx_ant_mode", + "da", 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiAntConfig, tx_ant_mode), + offsetof(WifiEventActionTxStatus, da), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "enabled_ant0", + "status", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiAntConfig, enabled_ant0), + offsetof(WifiEventActionTxStatus, status), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_event_action_tx_status__field_indices_by_name[] = { + 1, /* field[1] = context */ + 2, /* field[2] = da */ + 0, /* field[0] = ifx */ + 3, /* field[3] = status */ +}; +static const ProtobufCIntRange wifi_event_action_tx_status__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor wifi_event_action_tx_status__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_event_action_tx_status", + "WifiEventActionTxStatus", + "WifiEventActionTxStatus", + "", + sizeof(WifiEventActionTxStatus), + 4, + wifi_event_action_tx_status__field_descriptors, + wifi_event_action_tx_status__field_indices_by_name, + 1, wifi_event_action_tx_status__number_ranges, + (ProtobufCMessageInit) wifi_event_action_tx_status__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_event_roc_done__field_descriptors[1] = +{ { - "enabled_ant1", - 5, + "context", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiAntConfig, enabled_ant1), + offsetof(WifiEventRocDone, context), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_ant_config__field_indices_by_name[] = { - 3, /* field[3] = enabled_ant0 */ - 4, /* field[4] = enabled_ant1 */ - 1, /* field[1] = rx_ant_default */ - 0, /* field[0] = rx_ant_mode */ - 2, /* field[2] = tx_ant_mode */ +static const unsigned wifi_event_roc_done__field_indices_by_name[] = { + 0, /* field[0] = context */ }; -static const ProtobufCIntRange wifi_ant_config__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_event_roc_done__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 5 } + { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_ant_config__descriptor = +const ProtobufCMessageDescriptor wifi_event_roc_done__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_ant_config", - "WifiAntConfig", - "WifiAntConfig", + "wifi_event_roc_done", + "WifiEventRocDone", + "WifiEventRocDone", "", - sizeof(WifiAntConfig), - 5, - wifi_ant_config__field_descriptors, - wifi_ant_config__field_indices_by_name, - 1, wifi_ant_config__number_ranges, - (ProtobufCMessageInit) wifi_ant_config__init, + sizeof(WifiEventRocDone), + 1, + wifi_event_roc_done__field_descriptors, + wifi_event_roc_done__field_indices_by_name, + 1, wifi_event_roc_done__number_ranges, + (ProtobufCMessageInit) wifi_event_roc_done__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_action_tx_req__field_descriptors[5] = +static const ProtobufCFieldDescriptor wifi_event_ap_wps_rg_pin__field_descriptors[1] = { { - "ifx", + "pin_code", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiActionTxReq, ifx), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "dest_mac", - 2, - PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiActionTxReq, dest_mac), + offsetof(WifiEventApWpsRgPin, pin_code), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_event_ap_wps_rg_pin__field_indices_by_name[] = { + 0, /* field[0] = pin_code */ +}; +static const ProtobufCIntRange wifi_event_ap_wps_rg_pin__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor wifi_event_ap_wps_rg_pin__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_event_ap_wps_rg_pin", + "WifiEventApWpsRgPin", + "WifiEventApWpsRgPin", + "", + sizeof(WifiEventApWpsRgPin), + 1, + wifi_event_ap_wps_rg_pin__field_descriptors, + wifi_event_ap_wps_rg_pin__field_indices_by_name, + 1, wifi_event_ap_wps_rg_pin__number_ranges, + (ProtobufCMessageInit) wifi_event_ap_wps_rg_pin__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_event_ap_wps_rg_fail_reason__field_descriptors[2] = +{ { - "no_ack", - 3, + "reason", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiActionTxReq, no_ack), + offsetof(WifiEventApWpsRgFailReason, reason), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "data_len", - 4, + "peer_macaddr", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiActionTxReq, data_len), + offsetof(WifiEventApWpsRgFailReason, peer_macaddr), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_event_ap_wps_rg_fail_reason__field_indices_by_name[] = { + 1, /* field[1] = peer_macaddr */ + 0, /* field[0] = reason */ +}; +static const ProtobufCIntRange wifi_event_ap_wps_rg_fail_reason__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor wifi_event_ap_wps_rg_fail_reason__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_event_ap_wps_rg_fail_reason", + "WifiEventApWpsRgFailReason", + "WifiEventApWpsRgFailReason", + "", + sizeof(WifiEventApWpsRgFailReason), + 2, + wifi_event_ap_wps_rg_fail_reason__field_descriptors, + wifi_event_ap_wps_rg_fail_reason__field_indices_by_name, + 1, wifi_event_ap_wps_rg_fail_reason__number_ranges, + (ProtobufCMessageInit) wifi_event_ap_wps_rg_fail_reason__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_event_ap_wps_rg_success__field_descriptors[1] = +{ { - "data", - 5, + "peer_macaddr", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiActionTxReq, data), + offsetof(WifiEventApWpsRgSuccess, peer_macaddr), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_action_tx_req__field_indices_by_name[] = { - 4, /* field[4] = data */ - 3, /* field[3] = data_len */ - 1, /* field[1] = dest_mac */ - 0, /* field[0] = ifx */ - 2, /* field[2] = no_ack */ +static const unsigned wifi_event_ap_wps_rg_success__field_indices_by_name[] = { + 0, /* field[0] = peer_macaddr */ }; -static const ProtobufCIntRange wifi_action_tx_req__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_event_ap_wps_rg_success__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 5 } + { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_action_tx_req__descriptor = +const ProtobufCMessageDescriptor wifi_event_ap_wps_rg_success__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_action_tx_req", - "WifiActionTxReq", - "WifiActionTxReq", + "wifi_event_ap_wps_rg_success", + "WifiEventApWpsRgSuccess", + "WifiEventApWpsRgSuccess", "", - sizeof(WifiActionTxReq), - 5, - wifi_action_tx_req__field_descriptors, - wifi_action_tx_req__field_indices_by_name, - 1, wifi_action_tx_req__number_ranges, - (ProtobufCMessageInit) wifi_action_tx_req__init, + sizeof(WifiEventApWpsRgSuccess), + 1, + wifi_event_ap_wps_rg_success__field_descriptors, + wifi_event_ap_wps_rg_success__field_indices_by_name, + 1, wifi_event_ap_wps_rg_success__number_ranges, + (ProtobufCMessageInit) wifi_event_ap_wps_rg_success__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_ftm_initiator_cfg__field_descriptors[4] = +static const ProtobufCFieldDescriptor wifi_protocols__field_descriptors[2] = { { - "resp_mac", + "ghz_2g", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiFtmInitiatorCfg, resp_mac), + offsetof(WifiProtocols, ghz_2g), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "channel", + "ghz_5g", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiFtmInitiatorCfg, channel), + offsetof(WifiProtocols, ghz_5g), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_protocols__field_indices_by_name[] = { + 0, /* field[0] = ghz_2g */ + 1, /* field[1] = ghz_5g */ +}; +static const ProtobufCIntRange wifi_protocols__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor wifi_protocols__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_protocols", + "WifiProtocols", + "WifiProtocols", + "", + sizeof(WifiProtocols), + 2, + wifi_protocols__field_descriptors, + wifi_protocols__field_indices_by_name, + 1, wifi_protocols__number_ranges, + (ProtobufCMessageInit) wifi_protocols__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_bandwidths__field_descriptors[2] = +{ { - "frm_count", - 3, + "ghz_2g", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiFtmInitiatorCfg, frm_count), + offsetof(WifiBandwidths, ghz_2g), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "burst_period", - 4, + "ghz_5g", + 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiFtmInitiatorCfg, burst_period), + offsetof(WifiBandwidths, ghz_5g), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_ftm_initiator_cfg__field_indices_by_name[] = { - 3, /* field[3] = burst_period */ - 1, /* field[1] = channel */ - 2, /* field[2] = frm_count */ - 0, /* field[0] = resp_mac */ +static const unsigned wifi_bandwidths__field_indices_by_name[] = { + 0, /* field[0] = ghz_2g */ + 1, /* field[1] = ghz_5g */ }; -static const ProtobufCIntRange wifi_ftm_initiator_cfg__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_bandwidths__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 4 } + { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_ftm_initiator_cfg__descriptor = +const ProtobufCMessageDescriptor wifi_bandwidths__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_ftm_initiator_cfg", - "WifiFtmInitiatorCfg", - "WifiFtmInitiatorCfg", + "wifi_bandwidths", + "WifiBandwidths", + "WifiBandwidths", "", - sizeof(WifiFtmInitiatorCfg), - 4, - wifi_ftm_initiator_cfg__field_descriptors, - wifi_ftm_initiator_cfg__field_indices_by_name, - 1, wifi_ftm_initiator_cfg__number_ranges, - (ProtobufCMessageInit) wifi_ftm_initiator_cfg__init, + sizeof(WifiBandwidths), + 2, + wifi_bandwidths__field_descriptors, + wifi_bandwidths__field_indices_by_name, + 1, wifi_bandwidths__number_ranges, + (ProtobufCMessageInit) wifi_bandwidths__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_sta_scan_done__field_descriptors[3] = +static const ProtobufCFieldDescriptor wifi_itwt_setup_config__field_descriptors[6] = { { - "status", + "setup_cmd", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaScanDone, status), + offsetof(WifiItwtSetupConfig, setup_cmd), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "number", + "bitmask_1", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaScanDone, number), + offsetof(WifiItwtSetupConfig, bitmask_1), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "scan_id", + "min_wake_dura", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaScanDone, scan_id), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, -}; -static const unsigned wifi_event_sta_scan_done__field_indices_by_name[] = { - 1, /* field[1] = number */ - 2, /* field[2] = scan_id */ - 0, /* field[0] = status */ -}; -static const ProtobufCIntRange wifi_event_sta_scan_done__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 3 } -}; -const ProtobufCMessageDescriptor wifi_event_sta_scan_done__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_sta_scan_done", - "WifiEventStaScanDone", - "WifiEventStaScanDone", - "", - sizeof(WifiEventStaScanDone), - 3, - wifi_event_sta_scan_done__field_descriptors, - wifi_event_sta_scan_done__field_indices_by_name, - 1, wifi_event_sta_scan_done__number_ranges, - (ProtobufCMessageInit) wifi_event_sta_scan_done__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor wifi_event_sta_connected__field_descriptors[6] = -{ - { - "ssid", - 1, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, - 0, /* quantifier_offset */ - offsetof(WifiEventStaConnected, ssid), + offsetof(WifiItwtSetupConfig, min_wake_dura), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ssid_len", - 2, + "wake_invl_mant", + 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaConnected, ssid_len), + offsetof(WifiItwtSetupConfig, wake_invl_mant), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "bssid", - 3, + "twt_id", + 5, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaConnected, bssid), + offsetof(WifiItwtSetupConfig, twt_id), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "channel", - 4, + "timeout_time_ms", + 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaConnected, channel), + offsetof(WifiItwtSetupConfig, timeout_time_ms), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned wifi_itwt_setup_config__field_indices_by_name[] = { + 1, /* field[1] = bitmask_1 */ + 2, /* field[2] = min_wake_dura */ + 0, /* field[0] = setup_cmd */ + 5, /* field[5] = timeout_time_ms */ + 4, /* field[4] = twt_id */ + 3, /* field[3] = wake_invl_mant */ +}; +static const ProtobufCIntRange wifi_itwt_setup_config__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 6 } +}; +const ProtobufCMessageDescriptor wifi_itwt_setup_config__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "wifi_itwt_setup_config", + "WifiItwtSetupConfig", + "WifiItwtSetupConfig", + "", + sizeof(WifiItwtSetupConfig), + 6, + wifi_itwt_setup_config__field_descriptors, + wifi_itwt_setup_config__field_indices_by_name, + 1, wifi_itwt_setup_config__number_ranges, + (ProtobufCMessageInit) wifi_itwt_setup_config__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor wifi_twt_config__field_descriptors[2] = +{ { - "authmode", - 5, + "post_wakeup_event", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiEventStaConnected, authmode), + offsetof(WifiTwtConfig, post_wakeup_event), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "aid", - 6, + "twt_enable_keep_alive", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiEventStaConnected, aid), + offsetof(WifiTwtConfig, twt_enable_keep_alive), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_sta_connected__field_indices_by_name[] = { - 5, /* field[5] = aid */ - 4, /* field[4] = authmode */ - 2, /* field[2] = bssid */ - 3, /* field[3] = channel */ - 0, /* field[0] = ssid */ - 1, /* field[1] = ssid_len */ +static const unsigned wifi_twt_config__field_indices_by_name[] = { + 0, /* field[0] = post_wakeup_event */ + 1, /* field[1] = twt_enable_keep_alive */ }; -static const ProtobufCIntRange wifi_event_sta_connected__number_ranges[1 + 1] = +static const ProtobufCIntRange wifi_twt_config__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 6 } + { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_event_sta_connected__descriptor = +const ProtobufCMessageDescriptor wifi_twt_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_sta_connected", - "WifiEventStaConnected", - "WifiEventStaConnected", + "wifi_twt_config", + "WifiTwtConfig", + "WifiTwtConfig", "", - sizeof(WifiEventStaConnected), - 6, - wifi_event_sta_connected__field_descriptors, - wifi_event_sta_connected__field_indices_by_name, - 1, wifi_event_sta_connected__number_ranges, - (ProtobufCMessageInit) wifi_event_sta_connected__init, + sizeof(WifiTwtConfig), + 2, + wifi_twt_config__field_descriptors, + wifi_twt_config__field_indices_by_name, + 1, wifi_twt_config__number_ranges, + (ProtobufCMessageInit) wifi_twt_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_sta_disconnected__field_descriptors[5] = +static const ProtobufCFieldDescriptor connected_stalist__field_descriptors[2] = { { - "ssid", + "mac", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiEventStaDisconnected, ssid), + offsetof(ConnectedSTAList, mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ssid_len", + "rssi", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaDisconnected, ssid_len), + offsetof(ConnectedSTAList, rssi), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned connected_stalist__field_indices_by_name[] = { + 0, /* field[0] = mac */ + 1, /* field[1] = rssi */ +}; +static const ProtobufCIntRange connected_stalist__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor connected_stalist__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "ConnectedSTAList", + "ConnectedSTAList", + "ConnectedSTAList", + "", + sizeof(ConnectedSTAList), + 2, + connected_stalist__field_descriptors, + connected_stalist__field_indices_by_name, + 1, connected_stalist__number_ranges, + (ProtobufCMessageInit) connected_stalist__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor eap_fast_config__field_descriptors[3] = +{ + { + "fast_provisioning", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(EapFastConfig, fast_provisioning), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "bssid", - 3, + "fast_max_pac_list_len", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaDisconnected, bssid), + offsetof(EapFastConfig, fast_max_pac_list_len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "reason", - 4, + "fast_pac_format_binary", + 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiEventStaDisconnected, reason), + offsetof(EapFastConfig, fast_pac_format_binary), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned eap_fast_config__field_indices_by_name[] = { + 1, /* field[1] = fast_max_pac_list_len */ + 2, /* field[2] = fast_pac_format_binary */ + 0, /* field[0] = fast_provisioning */ +}; +static const ProtobufCIntRange eap_fast_config__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor eap_fast_config__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "eap_fast_config", + "EapFastConfig", + "EapFastConfig", + "", + sizeof(EapFastConfig), + 3, + eap_fast_config__field_descriptors, + eap_fast_config__field_indices_by_name, + 1, eap_fast_config__number_ranges, + (ProtobufCMessageInit) eap_fast_config__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__get_mac_address__field_descriptors[1] = +{ { - "rssi", - 5, + "mode", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaDisconnected, rssi), + offsetof(RpcReqGetMacAddress, mode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_sta_disconnected__field_indices_by_name[] = { - 2, /* field[2] = bssid */ - 3, /* field[3] = reason */ - 4, /* field[4] = rssi */ - 0, /* field[0] = ssid */ - 1, /* field[1] = ssid_len */ +static const unsigned rpc__req__get_mac_address__field_indices_by_name[] = { + 0, /* field[0] = mode */ }; -static const ProtobufCIntRange wifi_event_sta_disconnected__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__get_mac_address__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 5 } + { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_event_sta_disconnected__descriptor = +const ProtobufCMessageDescriptor rpc__req__get_mac_address__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_sta_disconnected", - "WifiEventStaDisconnected", - "WifiEventStaDisconnected", + "Rpc_Req_GetMacAddress", + "RpcReqGetMacAddress", + "RpcReqGetMacAddress", "", - sizeof(WifiEventStaDisconnected), - 5, - wifi_event_sta_disconnected__field_descriptors, - wifi_event_sta_disconnected__field_indices_by_name, - 1, wifi_event_sta_disconnected__number_ranges, - (ProtobufCMessageInit) wifi_event_sta_disconnected__init, + sizeof(RpcReqGetMacAddress), + 1, + rpc__req__get_mac_address__field_descriptors, + rpc__req__get_mac_address__field_indices_by_name, + 1, rpc__req__get_mac_address__number_ranges, + (ProtobufCMessageInit) rpc__req__get_mac_address__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_sta_authmode_change__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__get_mac_address__field_descriptors[2] = { { - "old_mode", + "mac", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiEventStaAuthmodeChange, old_mode), + offsetof(RpcRespGetMacAddress, mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "new_mode", + "resp", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaAuthmodeChange, new_mode), + offsetof(RpcRespGetMacAddress, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_sta_authmode_change__field_indices_by_name[] = { - 1, /* field[1] = new_mode */ - 0, /* field[0] = old_mode */ +static const unsigned rpc__resp__get_mac_address__field_indices_by_name[] = { + 0, /* field[0] = mac */ + 1, /* field[1] = resp */ }; -static const ProtobufCIntRange wifi_event_sta_authmode_change__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__get_mac_address__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_event_sta_authmode_change__descriptor = +const ProtobufCMessageDescriptor rpc__resp__get_mac_address__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_sta_authmode_change", - "WifiEventStaAuthmodeChange", - "WifiEventStaAuthmodeChange", + "Rpc_Resp_GetMacAddress", + "RpcRespGetMacAddress", + "RpcRespGetMacAddress", "", - sizeof(WifiEventStaAuthmodeChange), + sizeof(RpcRespGetMacAddress), 2, - wifi_event_sta_authmode_change__field_descriptors, - wifi_event_sta_authmode_change__field_indices_by_name, - 1, wifi_event_sta_authmode_change__number_ranges, - (ProtobufCMessageInit) wifi_event_sta_authmode_change__init, + rpc__resp__get_mac_address__field_descriptors, + rpc__resp__get_mac_address__field_indices_by_name, + 1, rpc__resp__get_mac_address__number_ranges, + (ProtobufCMessageInit) rpc__resp__get_mac_address__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_sta_wps_er_pin__field_descriptors[1] = -{ - { - "pin_code", - 1, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, - 0, /* quantifier_offset */ - offsetof(WifiEventStaWpsErPin, pin_code), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, -}; -static const unsigned wifi_event_sta_wps_er_pin__field_indices_by_name[] = { - 0, /* field[0] = pin_code */ -}; -static const ProtobufCIntRange wifi_event_sta_wps_er_pin__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor wifi_event_sta_wps_er_pin__descriptor = +#define rpc__req__get_mode__field_descriptors NULL +#define rpc__req__get_mode__field_indices_by_name NULL +#define rpc__req__get_mode__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__get_mode__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_sta_wps_er_pin", - "WifiEventStaWpsErPin", - "WifiEventStaWpsErPin", + "Rpc_Req_GetMode", + "RpcReqGetMode", + "RpcReqGetMode", "", - sizeof(WifiEventStaWpsErPin), - 1, - wifi_event_sta_wps_er_pin__field_descriptors, - wifi_event_sta_wps_er_pin__field_indices_by_name, - 1, wifi_event_sta_wps_er_pin__number_ranges, - (ProtobufCMessageInit) wifi_event_sta_wps_er_pin__init, + sizeof(RpcReqGetMode), + 0, + rpc__req__get_mode__field_descriptors, + rpc__req__get_mode__field_indices_by_name, + 0, rpc__req__get_mode__number_ranges, + (ProtobufCMessageInit) rpc__req__get_mode__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor ap_cred__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__get_mode__field_descriptors[2] = { { - "ssid", + "mode", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(ApCred, ssid), + offsetof(RpcRespGetMode, mode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "passphrase", + "resp", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(ApCred, passphrase), + offsetof(RpcRespGetMode, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned ap_cred__field_indices_by_name[] = { - 1, /* field[1] = passphrase */ - 0, /* field[0] = ssid */ +static const unsigned rpc__resp__get_mode__field_indices_by_name[] = { + 0, /* field[0] = mode */ + 1, /* field[1] = resp */ }; -static const ProtobufCIntRange ap_cred__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__get_mode__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor ap_cred__descriptor = +const ProtobufCMessageDescriptor rpc__resp__get_mode__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "ap_cred", - "ApCred", - "ApCred", + "Rpc_Resp_GetMode", + "RpcRespGetMode", + "RpcRespGetMode", "", - sizeof(ApCred), + sizeof(RpcRespGetMode), 2, - ap_cred__field_descriptors, - ap_cred__field_indices_by_name, - 1, ap_cred__number_ranges, - (ProtobufCMessageInit) ap_cred__init, + rpc__resp__get_mode__field_descriptors, + rpc__resp__get_mode__field_indices_by_name, + 1, rpc__resp__get_mode__number_ranges, + (ProtobufCMessageInit) rpc__resp__get_mode__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_sta_wps_er_success__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__set_mode__field_descriptors[1] = { { - "ap_cred_cnt", + "mode", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventStaWpsErSuccess, ap_cred_cnt), + offsetof(RpcReqSetMode, mode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__req__set_mode__field_indices_by_name[] = { + 0, /* field[0] = mode */ +}; +static const ProtobufCIntRange rpc__req__set_mode__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__req__set_mode__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_SetMode", + "RpcReqSetMode", + "RpcReqSetMode", + "", + sizeof(RpcReqSetMode), + 1, + rpc__req__set_mode__field_descriptors, + rpc__req__set_mode__field_indices_by_name, + 1, rpc__req__set_mode__number_ranges, + (ProtobufCMessageInit) rpc__req__set_mode__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__set_mode__field_descriptors[1] = +{ { - "ap_creds", - 2, - PROTOBUF_C_LABEL_REPEATED, - PROTOBUF_C_TYPE_MESSAGE, - offsetof(WifiEventStaWpsErSuccess, n_ap_creds), - offsetof(WifiEventStaWpsErSuccess, ap_creds), - &ap_cred__descriptor, + "resp", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespSetMode, resp), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_sta_wps_er_success__field_indices_by_name[] = { - 0, /* field[0] = ap_cred_cnt */ - 1, /* field[1] = ap_creds */ +static const unsigned rpc__resp__set_mode__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange wifi_event_sta_wps_er_success__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__set_mode__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_event_sta_wps_er_success__descriptor = +const ProtobufCMessageDescriptor rpc__resp__set_mode__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_SetMode", + "RpcRespSetMode", + "RpcRespSetMode", + "", + sizeof(RpcRespSetMode), + 1, + rpc__resp__set_mode__field_descriptors, + rpc__resp__set_mode__field_indices_by_name, + 1, rpc__resp__set_mode__number_ranges, + (ProtobufCMessageInit) rpc__resp__set_mode__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define rpc__req__get_ps__field_descriptors NULL +#define rpc__req__get_ps__field_indices_by_name NULL +#define rpc__req__get_ps__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__get_ps__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_sta_wps_er_success", - "WifiEventStaWpsErSuccess", - "WifiEventStaWpsErSuccess", + "Rpc_Req_GetPs", + "RpcReqGetPs", + "RpcReqGetPs", "", - sizeof(WifiEventStaWpsErSuccess), - 2, - wifi_event_sta_wps_er_success__field_descriptors, - wifi_event_sta_wps_er_success__field_indices_by_name, - 1, wifi_event_sta_wps_er_success__number_ranges, - (ProtobufCMessageInit) wifi_event_sta_wps_er_success__init, + sizeof(RpcReqGetPs), + 0, + rpc__req__get_ps__field_descriptors, + rpc__req__get_ps__field_indices_by_name, + 0, rpc__req__get_ps__number_ranges, + (ProtobufCMessageInit) rpc__req__get_ps__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_ap_probe_req_rx__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__get_ps__field_descriptors[2] = { { - "rssi", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventApProbeReqRx, rssi), + offsetof(RpcRespGetPs, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "mac", + "type", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventApProbeReqRx, mac), + offsetof(RpcRespGetPs, type), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_ap_probe_req_rx__field_indices_by_name[] = { - 1, /* field[1] = mac */ - 0, /* field[0] = rssi */ +static const unsigned rpc__resp__get_ps__field_indices_by_name[] = { + 0, /* field[0] = resp */ + 1, /* field[1] = type */ }; -static const ProtobufCIntRange wifi_event_ap_probe_req_rx__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__get_ps__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_event_ap_probe_req_rx__descriptor = +const ProtobufCMessageDescriptor rpc__resp__get_ps__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_ap_probe_req_rx", - "WifiEventApProbeReqRx", - "WifiEventApProbeReqRx", + "Rpc_Resp_GetPs", + "RpcRespGetPs", + "RpcRespGetPs", "", - sizeof(WifiEventApProbeReqRx), + sizeof(RpcRespGetPs), 2, - wifi_event_ap_probe_req_rx__field_descriptors, - wifi_event_ap_probe_req_rx__field_indices_by_name, - 1, wifi_event_ap_probe_req_rx__number_ranges, - (ProtobufCMessageInit) wifi_event_ap_probe_req_rx__init, + rpc__resp__get_ps__field_descriptors, + rpc__resp__get_ps__field_indices_by_name, + 1, rpc__resp__get_ps__number_ranges, + (ProtobufCMessageInit) rpc__resp__get_ps__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_bss_rssi_low__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__set_ps__field_descriptors[1] = { { - "rssi", + "type", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventBssRssiLow, rssi), + offsetof(RpcReqSetPs, type), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_bss_rssi_low__field_indices_by_name[] = { - 0, /* field[0] = rssi */ +static const unsigned rpc__req__set_ps__field_indices_by_name[] = { + 0, /* field[0] = type */ }; -static const ProtobufCIntRange wifi_event_bss_rssi_low__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__set_ps__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_event_bss_rssi_low__descriptor = +const ProtobufCMessageDescriptor rpc__req__set_ps__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_bss_rssi_low", - "WifiEventBssRssiLow", - "WifiEventBssRssiLow", + "Rpc_Req_SetPs", + "RpcReqSetPs", + "RpcReqSetPs", "", - sizeof(WifiEventBssRssiLow), + sizeof(RpcReqSetPs), 1, - wifi_event_bss_rssi_low__field_descriptors, - wifi_event_bss_rssi_low__field_indices_by_name, - 1, wifi_event_bss_rssi_low__number_ranges, - (ProtobufCMessageInit) wifi_event_bss_rssi_low__init, + rpc__req__set_ps__field_descriptors, + rpc__req__set_ps__field_indices_by_name, + 1, rpc__req__set_ps__number_ranges, + (ProtobufCMessageInit) rpc__req__set_ps__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_ftm_report_entry__field_descriptors[7] = +static const ProtobufCFieldDescriptor rpc__resp__set_ps__field_descriptors[1] = { { - "dlog_token", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiFtmReportEntry, dlog_token), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "rssi", - 2, - PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiFtmReportEntry, rssi), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "rtt", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiFtmReportEntry, rtt), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "t1", - 4, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT64, - 0, /* quantifier_offset */ - offsetof(WifiFtmReportEntry, t1), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "t2", - 5, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT64, - 0, /* quantifier_offset */ - offsetof(WifiFtmReportEntry, t2), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "t3", - 6, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT64, - 0, /* quantifier_offset */ - offsetof(WifiFtmReportEntry, t3), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "t4", - 7, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT64, - 0, /* quantifier_offset */ - offsetof(WifiFtmReportEntry, t4), + offsetof(RpcRespSetPs, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_ftm_report_entry__field_indices_by_name[] = { - 0, /* field[0] = dlog_token */ - 1, /* field[1] = rssi */ - 2, /* field[2] = rtt */ - 3, /* field[3] = t1 */ - 4, /* field[4] = t2 */ - 5, /* field[5] = t3 */ - 6, /* field[6] = t4 */ +static const unsigned rpc__resp__set_ps__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange wifi_ftm_report_entry__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__set_ps__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 7 } + { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_ftm_report_entry__descriptor = +const ProtobufCMessageDescriptor rpc__resp__set_ps__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_ftm_report_entry", - "WifiFtmReportEntry", - "WifiFtmReportEntry", + "Rpc_Resp_SetPs", + "RpcRespSetPs", + "RpcRespSetPs", "", - sizeof(WifiFtmReportEntry), - 7, - wifi_ftm_report_entry__field_descriptors, - wifi_ftm_report_entry__field_indices_by_name, - 1, wifi_ftm_report_entry__number_ranges, - (ProtobufCMessageInit) wifi_ftm_report_entry__init, + sizeof(RpcRespSetPs), + 1, + rpc__resp__set_ps__field_descriptors, + rpc__resp__set_ps__field_indices_by_name, + 1, rpc__resp__set_ps__number_ranges, + (ProtobufCMessageInit) rpc__resp__set_ps__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_ftm_report__field_descriptors[7] = +static const ProtobufCFieldDescriptor rpc__req__set_mac_address__field_descriptors[2] = { { - "peer_mac", + "mac", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiEventFtmReport, peer_mac), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "status", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiEventFtmReport, status), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "rtt_raw", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiEventFtmReport, rtt_raw), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "rtt_est", - 4, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiEventFtmReport, rtt_est), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "dist_est", - 5, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiEventFtmReport, dist_est), - NULL, + offsetof(RpcReqSetMacAddress, mac), NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "ftm_report_data", - 6, - PROTOBUF_C_LABEL_REPEATED, - PROTOBUF_C_TYPE_MESSAGE, - offsetof(WifiEventFtmReport, n_ftm_report_data), - offsetof(WifiEventFtmReport, ftm_report_data), - &wifi_ftm_report_entry__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ftm_report_num_entries", - 7, + "mode", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventFtmReport, ftm_report_num_entries), + offsetof(RpcReqSetMacAddress, mode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_ftm_report__field_indices_by_name[] = { - 4, /* field[4] = dist_est */ - 5, /* field[5] = ftm_report_data */ - 6, /* field[6] = ftm_report_num_entries */ - 0, /* field[0] = peer_mac */ - 3, /* field[3] = rtt_est */ - 2, /* field[2] = rtt_raw */ - 1, /* field[1] = status */ +static const unsigned rpc__req__set_mac_address__field_indices_by_name[] = { + 0, /* field[0] = mac */ + 1, /* field[1] = mode */ }; -static const ProtobufCIntRange wifi_event_ftm_report__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__set_mac_address__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 7 } + { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_event_ftm_report__descriptor = +const ProtobufCMessageDescriptor rpc__req__set_mac_address__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_ftm_report", - "WifiEventFtmReport", - "WifiEventFtmReport", + "Rpc_Req_SetMacAddress", + "RpcReqSetMacAddress", + "RpcReqSetMacAddress", "", - sizeof(WifiEventFtmReport), - 7, - wifi_event_ftm_report__field_descriptors, - wifi_event_ftm_report__field_indices_by_name, - 1, wifi_event_ftm_report__number_ranges, - (ProtobufCMessageInit) wifi_event_ftm_report__init, + sizeof(RpcReqSetMacAddress), + 2, + rpc__req__set_mac_address__field_descriptors, + rpc__req__set_mac_address__field_indices_by_name, + 1, rpc__req__set_mac_address__number_ranges, + (ProtobufCMessageInit) rpc__req__set_mac_address__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_action_tx_status__field_descriptors[4] = +static const ProtobufCFieldDescriptor rpc__resp__set_mac_address__field_descriptors[1] = { { - "ifx", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventActionTxStatus, ifx), + offsetof(RpcRespSetMacAddress, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__set_mac_address__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__set_mac_address__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__set_mac_address__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_SetMacAddress", + "RpcRespSetMacAddress", + "RpcRespSetMacAddress", + "", + sizeof(RpcRespSetMacAddress), + 1, + rpc__resp__set_mac_address__field_descriptors, + rpc__resp__set_mac_address__field_indices_by_name, + 1, rpc__resp__set_mac_address__number_ranges, + (ProtobufCMessageInit) rpc__resp__set_mac_address__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define rpc__req__otabegin__field_descriptors NULL +#define rpc__req__otabegin__field_indices_by_name NULL +#define rpc__req__otabegin__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__otabegin__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_OTABegin", + "RpcReqOTABegin", + "RpcReqOTABegin", + "", + sizeof(RpcReqOTABegin), + 0, + rpc__req__otabegin__field_descriptors, + rpc__req__otabegin__field_indices_by_name, + 0, rpc__req__otabegin__number_ranges, + (ProtobufCMessageInit) rpc__req__otabegin__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__otabegin__field_descriptors[1] = +{ { - "context", - 2, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventActionTxStatus, context), + offsetof(RpcRespOTABegin, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__otabegin__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__otabegin__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__otabegin__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_OTABegin", + "RpcRespOTABegin", + "RpcRespOTABegin", + "", + sizeof(RpcRespOTABegin), + 1, + rpc__resp__otabegin__field_descriptors, + rpc__resp__otabegin__field_indices_by_name, + 1, rpc__resp__otabegin__number_ranges, + (ProtobufCMessageInit) rpc__resp__otabegin__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__otawrite__field_descriptors[1] = +{ { - "da", - 3, + "ota_data", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(WifiEventActionTxStatus, da), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "status", - 4, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiEventActionTxStatus, status), + offsetof(RpcReqOTAWrite, ota_data), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_action_tx_status__field_indices_by_name[] = { - 1, /* field[1] = context */ - 2, /* field[2] = da */ - 0, /* field[0] = ifx */ - 3, /* field[3] = status */ +static const unsigned rpc__req__otawrite__field_indices_by_name[] = { + 0, /* field[0] = ota_data */ }; -static const ProtobufCIntRange wifi_event_action_tx_status__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__otawrite__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 4 } + { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_event_action_tx_status__descriptor = +const ProtobufCMessageDescriptor rpc__req__otawrite__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_action_tx_status", - "WifiEventActionTxStatus", - "WifiEventActionTxStatus", + "Rpc_Req_OTAWrite", + "RpcReqOTAWrite", + "RpcReqOTAWrite", "", - sizeof(WifiEventActionTxStatus), - 4, - wifi_event_action_tx_status__field_descriptors, - wifi_event_action_tx_status__field_indices_by_name, - 1, wifi_event_action_tx_status__number_ranges, - (ProtobufCMessageInit) wifi_event_action_tx_status__init, + sizeof(RpcReqOTAWrite), + 1, + rpc__req__otawrite__field_descriptors, + rpc__req__otawrite__field_indices_by_name, + 1, rpc__req__otawrite__number_ranges, + (ProtobufCMessageInit) rpc__req__otawrite__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_roc_done__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__otawrite__field_descriptors[1] = { { - "context", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventRocDone, context), + offsetof(RpcRespOTAWrite, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_roc_done__field_indices_by_name[] = { - 0, /* field[0] = context */ +static const unsigned rpc__resp__otawrite__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange wifi_event_roc_done__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__otawrite__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_event_roc_done__descriptor = +const ProtobufCMessageDescriptor rpc__resp__otawrite__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_roc_done", - "WifiEventRocDone", - "WifiEventRocDone", + "Rpc_Resp_OTAWrite", + "RpcRespOTAWrite", + "RpcRespOTAWrite", "", - sizeof(WifiEventRocDone), + sizeof(RpcRespOTAWrite), 1, - wifi_event_roc_done__field_descriptors, - wifi_event_roc_done__field_indices_by_name, - 1, wifi_event_roc_done__number_ranges, - (ProtobufCMessageInit) wifi_event_roc_done__init, + rpc__resp__otawrite__field_descriptors, + rpc__resp__otawrite__field_indices_by_name, + 1, rpc__resp__otawrite__number_ranges, + (ProtobufCMessageInit) rpc__resp__otawrite__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_ap_wps_rg_pin__field_descriptors[1] = +#define rpc__req__otaend__field_descriptors NULL +#define rpc__req__otaend__field_indices_by_name NULL +#define rpc__req__otaend__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__otaend__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_OTAEnd", + "RpcReqOTAEnd", + "RpcReqOTAEnd", + "", + sizeof(RpcReqOTAEnd), + 0, + rpc__req__otaend__field_descriptors, + rpc__req__otaend__field_indices_by_name, + 0, rpc__req__otaend__number_ranges, + (ProtobufCMessageInit) rpc__req__otaend__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__otaend__field_descriptors[1] = { { - "pin_code", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventApWpsRgPin, pin_code), + offsetof(RpcRespOTAEnd, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_ap_wps_rg_pin__field_indices_by_name[] = { - 0, /* field[0] = pin_code */ +static const unsigned rpc__resp__otaend__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange wifi_event_ap_wps_rg_pin__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__otaend__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_event_ap_wps_rg_pin__descriptor = +const ProtobufCMessageDescriptor rpc__resp__otaend__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_ap_wps_rg_pin", - "WifiEventApWpsRgPin", - "WifiEventApWpsRgPin", + "Rpc_Resp_OTAEnd", + "RpcRespOTAEnd", + "RpcRespOTAEnd", "", - sizeof(WifiEventApWpsRgPin), + sizeof(RpcRespOTAEnd), 1, - wifi_event_ap_wps_rg_pin__field_descriptors, - wifi_event_ap_wps_rg_pin__field_indices_by_name, - 1, wifi_event_ap_wps_rg_pin__number_ranges, - (ProtobufCMessageInit) wifi_event_ap_wps_rg_pin__init, + rpc__resp__otaend__field_descriptors, + rpc__resp__otaend__field_indices_by_name, + 1, rpc__resp__otaend__number_ranges, + (ProtobufCMessageInit) rpc__resp__otaend__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_ap_wps_rg_fail_reason__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_max_tx_power__field_descriptors[1] = { { - "reason", + "power", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventApWpsRgFailReason, reason), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "peer_macaddr", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, - 0, /* quantifier_offset */ - offsetof(WifiEventApWpsRgFailReason, peer_macaddr), + offsetof(RpcReqWifiSetMaxTxPower, power), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_ap_wps_rg_fail_reason__field_indices_by_name[] = { - 1, /* field[1] = peer_macaddr */ - 0, /* field[0] = reason */ +static const unsigned rpc__req__wifi_set_max_tx_power__field_indices_by_name[] = { + 0, /* field[0] = power */ }; -static const ProtobufCIntRange wifi_event_ap_wps_rg_fail_reason__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_max_tx_power__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_event_ap_wps_rg_fail_reason__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_max_tx_power__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_ap_wps_rg_fail_reason", - "WifiEventApWpsRgFailReason", - "WifiEventApWpsRgFailReason", + "Rpc_Req_WifiSetMaxTxPower", + "RpcReqWifiSetMaxTxPower", + "RpcReqWifiSetMaxTxPower", "", - sizeof(WifiEventApWpsRgFailReason), - 2, - wifi_event_ap_wps_rg_fail_reason__field_descriptors, - wifi_event_ap_wps_rg_fail_reason__field_indices_by_name, - 1, wifi_event_ap_wps_rg_fail_reason__number_ranges, - (ProtobufCMessageInit) wifi_event_ap_wps_rg_fail_reason__init, + sizeof(RpcReqWifiSetMaxTxPower), + 1, + rpc__req__wifi_set_max_tx_power__field_descriptors, + rpc__req__wifi_set_max_tx_power__field_indices_by_name, + 1, rpc__req__wifi_set_max_tx_power__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_max_tx_power__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_event_ap_wps_rg_success__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_max_tx_power__field_descriptors[1] = { { - "peer_macaddr", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiEventApWpsRgSuccess, peer_macaddr), + offsetof(RpcRespWifiSetMaxTxPower, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_event_ap_wps_rg_success__field_indices_by_name[] = { - 0, /* field[0] = peer_macaddr */ +static const unsigned rpc__resp__wifi_set_max_tx_power__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange wifi_event_ap_wps_rg_success__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_max_tx_power__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_event_ap_wps_rg_success__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_max_tx_power__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_event_ap_wps_rg_success", - "WifiEventApWpsRgSuccess", - "WifiEventApWpsRgSuccess", + "Rpc_Resp_WifiSetMaxTxPower", + "RpcRespWifiSetMaxTxPower", + "RpcRespWifiSetMaxTxPower", "", - sizeof(WifiEventApWpsRgSuccess), + sizeof(RpcRespWifiSetMaxTxPower), 1, - wifi_event_ap_wps_rg_success__field_descriptors, - wifi_event_ap_wps_rg_success__field_indices_by_name, - 1, wifi_event_ap_wps_rg_success__number_ranges, - (ProtobufCMessageInit) wifi_event_ap_wps_rg_success__init, + rpc__resp__wifi_set_max_tx_power__field_descriptors, + rpc__resp__wifi_set_max_tx_power__field_indices_by_name, + 1, rpc__resp__wifi_set_max_tx_power__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_max_tx_power__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_protocols__field_descriptors[2] = +#define rpc__req__wifi_get_max_tx_power__field_descriptors NULL +#define rpc__req__wifi_get_max_tx_power__field_indices_by_name NULL +#define rpc__req__wifi_get_max_tx_power__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_get_max_tx_power__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiGetMaxTxPower", + "RpcReqWifiGetMaxTxPower", + "RpcReqWifiGetMaxTxPower", + "", + sizeof(RpcReqWifiGetMaxTxPower), + 0, + rpc__req__wifi_get_max_tx_power__field_descriptors, + rpc__req__wifi_get_max_tx_power__field_indices_by_name, + 0, rpc__req__wifi_get_max_tx_power__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_max_tx_power__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_max_tx_power__field_descriptors[2] = { { - "ghz_2g", + "power", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiProtocols, ghz_2g), + offsetof(RpcRespWifiGetMaxTxPower, power), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ghz_5g", + "resp", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiProtocols, ghz_5g), + offsetof(RpcRespWifiGetMaxTxPower, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_protocols__field_indices_by_name[] = { - 0, /* field[0] = ghz_2g */ - 1, /* field[1] = ghz_5g */ +static const unsigned rpc__resp__wifi_get_max_tx_power__field_indices_by_name[] = { + 0, /* field[0] = power */ + 1, /* field[1] = resp */ }; -static const ProtobufCIntRange wifi_protocols__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_max_tx_power__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_protocols__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_max_tx_power__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_protocols", - "WifiProtocols", - "WifiProtocols", + "Rpc_Resp_WifiGetMaxTxPower", + "RpcRespWifiGetMaxTxPower", + "RpcRespWifiGetMaxTxPower", "", - sizeof(WifiProtocols), + sizeof(RpcRespWifiGetMaxTxPower), 2, - wifi_protocols__field_descriptors, - wifi_protocols__field_indices_by_name, - 1, wifi_protocols__number_ranges, - (ProtobufCMessageInit) wifi_protocols__init, + rpc__resp__wifi_get_max_tx_power__field_descriptors, + rpc__resp__wifi_get_max_tx_power__field_indices_by_name, + 1, rpc__resp__wifi_get_max_tx_power__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_max_tx_power__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_bandwidths__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__config_heartbeat__field_descriptors[2] = { { - "ghz_2g", + "enable", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(WifiBandwidths, ghz_2g), + offsetof(RpcReqConfigHeartbeat, enable), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ghz_5g", + "duration", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiBandwidths, ghz_5g), + offsetof(RpcReqConfigHeartbeat, duration), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_bandwidths__field_indices_by_name[] = { - 0, /* field[0] = ghz_2g */ - 1, /* field[1] = ghz_5g */ +static const unsigned rpc__req__config_heartbeat__field_indices_by_name[] = { + 1, /* field[1] = duration */ + 0, /* field[0] = enable */ }; -static const ProtobufCIntRange wifi_bandwidths__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__config_heartbeat__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor wifi_bandwidths__descriptor = +const ProtobufCMessageDescriptor rpc__req__config_heartbeat__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_bandwidths", - "WifiBandwidths", - "WifiBandwidths", + "Rpc_Req_ConfigHeartbeat", + "RpcReqConfigHeartbeat", + "RpcReqConfigHeartbeat", "", - sizeof(WifiBandwidths), + sizeof(RpcReqConfigHeartbeat), 2, - wifi_bandwidths__field_descriptors, - wifi_bandwidths__field_indices_by_name, - 1, wifi_bandwidths__number_ranges, - (ProtobufCMessageInit) wifi_bandwidths__init, + rpc__req__config_heartbeat__field_descriptors, + rpc__req__config_heartbeat__field_indices_by_name, + 1, rpc__req__config_heartbeat__number_ranges, + (ProtobufCMessageInit) rpc__req__config_heartbeat__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_itwt_setup_config__field_descriptors[6] = +static const ProtobufCFieldDescriptor rpc__resp__config_heartbeat__field_descriptors[1] = { { - "setup_cmd", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiItwtSetupConfig, setup_cmd), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "bitmask_1", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiItwtSetupConfig, bitmask_1), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "min_wake_dura", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiItwtSetupConfig, min_wake_dura), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "wake_invl_mant", - 4, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiItwtSetupConfig, wake_invl_mant), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "twt_id", - 5, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(WifiItwtSetupConfig, twt_id), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "timeout_time_ms", - 6, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(WifiItwtSetupConfig, timeout_time_ms), + offsetof(RpcRespConfigHeartbeat, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_itwt_setup_config__field_indices_by_name[] = { - 1, /* field[1] = bitmask_1 */ - 2, /* field[2] = min_wake_dura */ - 0, /* field[0] = setup_cmd */ - 5, /* field[5] = timeout_time_ms */ - 4, /* field[4] = twt_id */ - 3, /* field[3] = wake_invl_mant */ +static const unsigned rpc__resp__config_heartbeat__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange wifi_itwt_setup_config__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__config_heartbeat__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 6 } + { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_itwt_setup_config__descriptor = +const ProtobufCMessageDescriptor rpc__resp__config_heartbeat__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_itwt_setup_config", - "WifiItwtSetupConfig", - "WifiItwtSetupConfig", + "Rpc_Resp_ConfigHeartbeat", + "RpcRespConfigHeartbeat", + "RpcRespConfigHeartbeat", "", - sizeof(WifiItwtSetupConfig), - 6, - wifi_itwt_setup_config__field_descriptors, - wifi_itwt_setup_config__field_indices_by_name, - 1, wifi_itwt_setup_config__number_ranges, - (ProtobufCMessageInit) wifi_itwt_setup_config__init, + sizeof(RpcRespConfigHeartbeat), + 1, + rpc__resp__config_heartbeat__field_descriptors, + rpc__resp__config_heartbeat__field_indices_by_name, + 1, rpc__resp__config_heartbeat__number_ranges, + (ProtobufCMessageInit) rpc__resp__config_heartbeat__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor wifi_twt_config__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_init__field_descriptors[1] = { { - "post_wakeup_event", + "cfg", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, - 0, /* quantifier_offset */ - offsetof(WifiTwtConfig, post_wakeup_event), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "twt_enable_keep_alive", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(WifiTwtConfig, twt_enable_keep_alive), - NULL, + offsetof(RpcReqWifiInit, cfg), + &wifi_init_config__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned wifi_twt_config__field_indices_by_name[] = { - 0, /* field[0] = post_wakeup_event */ - 1, /* field[1] = twt_enable_keep_alive */ +static const unsigned rpc__req__wifi_init__field_indices_by_name[] = { + 0, /* field[0] = cfg */ }; -static const ProtobufCIntRange wifi_twt_config__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_init__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor wifi_twt_config__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_init__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "wifi_twt_config", - "WifiTwtConfig", - "WifiTwtConfig", + "Rpc_Req_WifiInit", + "RpcReqWifiInit", + "RpcReqWifiInit", "", - sizeof(WifiTwtConfig), - 2, - wifi_twt_config__field_descriptors, - wifi_twt_config__field_indices_by_name, - 1, wifi_twt_config__number_ranges, - (ProtobufCMessageInit) wifi_twt_config__init, + sizeof(RpcReqWifiInit), + 1, + rpc__req__wifi_init__field_descriptors, + rpc__req__wifi_init__field_indices_by_name, + 1, rpc__req__wifi_init__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_init__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor connected_stalist__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_init__field_descriptors[1] = { { - "mac", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, - 0, /* quantifier_offset */ - offsetof(ConnectedSTAList, mac), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "rssi", - 2, - PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(ConnectedSTAList, rssi), + offsetof(RpcRespWifiInit, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned connected_stalist__field_indices_by_name[] = { - 0, /* field[0] = mac */ - 1, /* field[1] = rssi */ +static const unsigned rpc__resp__wifi_init__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange connected_stalist__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_init__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor connected_stalist__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_init__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "ConnectedSTAList", - "ConnectedSTAList", - "ConnectedSTAList", + "Rpc_Resp_WifiInit", + "RpcRespWifiInit", + "RpcRespWifiInit", "", - sizeof(ConnectedSTAList), - 2, - connected_stalist__field_descriptors, - connected_stalist__field_indices_by_name, - 1, connected_stalist__number_ranges, - (ProtobufCMessageInit) connected_stalist__init, + sizeof(RpcRespWifiInit), + 1, + rpc__resp__wifi_init__field_descriptors, + rpc__resp__wifi_init__field_indices_by_name, + 1, rpc__resp__wifi_init__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_init__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__get_mac_address__field_descriptors[1] = +#define rpc__req__wifi_deinit__field_descriptors NULL +#define rpc__req__wifi_deinit__field_indices_by_name NULL +#define rpc__req__wifi_deinit__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_deinit__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiDeinit", + "RpcReqWifiDeinit", + "RpcReqWifiDeinit", + "", + sizeof(RpcReqWifiDeinit), + 0, + rpc__req__wifi_deinit__field_descriptors, + rpc__req__wifi_deinit__field_indices_by_name, + 0, rpc__req__wifi_deinit__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_deinit__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_deinit__field_descriptors[1] = { { - "mode", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqGetMacAddress, mode), + offsetof(RpcRespWifiDeinit, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__get_mac_address__field_indices_by_name[] = { - 0, /* field[0] = mode */ +static const unsigned rpc__resp__wifi_deinit__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__get_mac_address__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_deinit__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__get_mac_address__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_deinit__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_GetMacAddress", - "RpcReqGetMacAddress", - "RpcReqGetMacAddress", + "Rpc_Resp_WifiDeinit", + "RpcRespWifiDeinit", + "RpcRespWifiDeinit", "", - sizeof(RpcReqGetMacAddress), + sizeof(RpcRespWifiDeinit), 1, - rpc__req__get_mac_address__field_descriptors, - rpc__req__get_mac_address__field_indices_by_name, - 1, rpc__req__get_mac_address__number_ranges, - (ProtobufCMessageInit) rpc__req__get_mac_address__init, + rpc__resp__wifi_deinit__field_descriptors, + rpc__resp__wifi_deinit__field_indices_by_name, + 1, rpc__resp__wifi_deinit__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_deinit__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__get_mac_address__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_config__field_descriptors[2] = { { - "mac", + "iface", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetMacAddress, mac), + offsetof(RpcReqWifiSetConfig, iface), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "resp", + "cfg", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcRespGetMacAddress, resp), - NULL, + offsetof(RpcReqWifiSetConfig, cfg), + &wifi_config__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__get_mac_address__field_indices_by_name[] = { - 0, /* field[0] = mac */ - 1, /* field[1] = resp */ +static const unsigned rpc__req__wifi_set_config__field_indices_by_name[] = { + 1, /* field[1] = cfg */ + 0, /* field[0] = iface */ }; -static const ProtobufCIntRange rpc__resp__get_mac_address__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_config__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__get_mac_address__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_GetMacAddress", - "RpcRespGetMacAddress", - "RpcRespGetMacAddress", + "Rpc_Req_WifiSetConfig", + "RpcReqWifiSetConfig", + "RpcReqWifiSetConfig", "", - sizeof(RpcRespGetMacAddress), + sizeof(RpcReqWifiSetConfig), 2, - rpc__resp__get_mac_address__field_descriptors, - rpc__resp__get_mac_address__field_indices_by_name, - 1, rpc__resp__get_mac_address__number_ranges, - (ProtobufCMessageInit) rpc__resp__get_mac_address__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__get_mode__field_descriptors NULL -#define rpc__req__get_mode__field_indices_by_name NULL -#define rpc__req__get_mode__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__get_mode__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_GetMode", - "RpcReqGetMode", - "RpcReqGetMode", - "", - sizeof(RpcReqGetMode), - 0, - rpc__req__get_mode__field_descriptors, - rpc__req__get_mode__field_indices_by_name, - 0, rpc__req__get_mode__number_ranges, - (ProtobufCMessageInit) rpc__req__get_mode__init, + rpc__req__wifi_set_config__field_descriptors, + rpc__req__wifi_set_config__field_indices_by_name, + 1, rpc__req__wifi_set_config__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__get_mode__field_descriptors[2] = -{ - { - "mode", - 1, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcRespGetMode, mode), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_config__field_descriptors[1] = +{ { "resp", - 2, + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetMode, resp), + offsetof(RpcRespWifiSetConfig, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__get_mode__field_indices_by_name[] = { - 0, /* field[0] = mode */ - 1, /* field[1] = resp */ +static const unsigned rpc__resp__wifi_set_config__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__get_mode__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_config__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__get_mode__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_GetMode", - "RpcRespGetMode", - "RpcRespGetMode", + "Rpc_Resp_WifiSetConfig", + "RpcRespWifiSetConfig", + "RpcRespWifiSetConfig", "", - sizeof(RpcRespGetMode), - 2, - rpc__resp__get_mode__field_descriptors, - rpc__resp__get_mode__field_indices_by_name, - 1, rpc__resp__get_mode__number_ranges, - (ProtobufCMessageInit) rpc__resp__get_mode__init, + sizeof(RpcRespWifiSetConfig), + 1, + rpc__resp__wifi_set_config__field_descriptors, + rpc__resp__wifi_set_config__field_indices_by_name, + 1, rpc__resp__wifi_set_config__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__set_mode__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_get_config__field_descriptors[1] = { { - "mode", + "iface", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqSetMode, mode), + offsetof(RpcReqWifiGetConfig, iface), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__set_mode__field_indices_by_name[] = { - 0, /* field[0] = mode */ +static const unsigned rpc__req__wifi_get_config__field_indices_by_name[] = { + 0, /* field[0] = iface */ }; -static const ProtobufCIntRange rpc__req__set_mode__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_get_config__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__set_mode__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_get_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_SetMode", - "RpcReqSetMode", - "RpcReqSetMode", + "Rpc_Req_WifiGetConfig", + "RpcReqWifiGetConfig", + "RpcReqWifiGetConfig", "", - sizeof(RpcReqSetMode), + sizeof(RpcReqWifiGetConfig), 1, - rpc__req__set_mode__field_descriptors, - rpc__req__set_mode__field_indices_by_name, - 1, rpc__req__set_mode__number_ranges, - (ProtobufCMessageInit) rpc__req__set_mode__init, + rpc__req__wifi_get_config__field_descriptors, + rpc__req__wifi_get_config__field_indices_by_name, + 1, rpc__req__wifi_get_config__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__set_mode__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_config__field_descriptors[3] = { { "resp", @@ -12944,55 +16166,81 @@ static const ProtobufCFieldDescriptor rpc__resp__set_mode__field_descriptors[1] PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespSetMode, resp), + offsetof(RpcRespWifiGetConfig, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "iface", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiGetConfig, iface), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "cfg", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiGetConfig, cfg), + &wifi_config__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, }; -static const unsigned rpc__resp__set_mode__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_get_config__field_indices_by_name[] = { + 2, /* field[2] = cfg */ + 1, /* field[1] = iface */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__set_mode__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_config__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 3 } }; -const ProtobufCMessageDescriptor rpc__resp__set_mode__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_SetMode", - "RpcRespSetMode", - "RpcRespSetMode", + "Rpc_Resp_WifiGetConfig", + "RpcRespWifiGetConfig", + "RpcRespWifiGetConfig", "", - sizeof(RpcRespSetMode), - 1, - rpc__resp__set_mode__field_descriptors, - rpc__resp__set_mode__field_indices_by_name, - 1, rpc__resp__set_mode__number_ranges, - (ProtobufCMessageInit) rpc__resp__set_mode__init, + sizeof(RpcRespWifiGetConfig), + 3, + rpc__resp__wifi_get_config__field_descriptors, + rpc__resp__wifi_get_config__field_indices_by_name, + 1, rpc__resp__wifi_get_config__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_config__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__get_ps__field_descriptors NULL -#define rpc__req__get_ps__field_indices_by_name NULL -#define rpc__req__get_ps__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__get_ps__descriptor = +#define rpc__req__wifi_connect__field_descriptors NULL +#define rpc__req__wifi_connect__field_indices_by_name NULL +#define rpc__req__wifi_connect__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_connect__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_GetPs", - "RpcReqGetPs", - "RpcReqGetPs", + "Rpc_Req_WifiConnect", + "RpcReqWifiConnect", + "RpcReqWifiConnect", "", - sizeof(RpcReqGetPs), + sizeof(RpcReqWifiConnect), 0, - rpc__req__get_ps__field_descriptors, - rpc__req__get_ps__field_indices_by_name, - 0, rpc__req__get_ps__number_ranges, - (ProtobufCMessageInit) rpc__req__get_ps__init, + rpc__req__wifi_connect__field_descriptors, + rpc__req__wifi_connect__field_indices_by_name, + 0, rpc__req__wifi_connect__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_connect__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__get_ps__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_connect__field_descriptors[1] = { { "resp", @@ -13000,88 +16248,167 @@ static const ProtobufCFieldDescriptor rpc__resp__get_ps__field_descriptors[2] = PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetPs, resp), + offsetof(RpcRespWifiConnect, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__wifi_connect__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__wifi_connect__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__wifi_connect__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_WifiConnect", + "RpcRespWifiConnect", + "RpcRespWifiConnect", + "", + sizeof(RpcRespWifiConnect), + 1, + rpc__resp__wifi_connect__field_descriptors, + rpc__resp__wifi_connect__field_indices_by_name, + 1, rpc__resp__wifi_connect__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_connect__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define rpc__req__wifi_disconnect__field_descriptors NULL +#define rpc__req__wifi_disconnect__field_indices_by_name NULL +#define rpc__req__wifi_disconnect__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_disconnect__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiDisconnect", + "RpcReqWifiDisconnect", + "RpcReqWifiDisconnect", + "", + sizeof(RpcReqWifiDisconnect), + 0, + rpc__req__wifi_disconnect__field_descriptors, + rpc__req__wifi_disconnect__field_indices_by_name, + 0, rpc__req__wifi_disconnect__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_disconnect__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_disconnect__field_descriptors[1] = +{ { - "type", - 2, + "resp", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetPs, type), + offsetof(RpcRespWifiDisconnect, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__get_ps__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_disconnect__field_indices_by_name[] = { 0, /* field[0] = resp */ - 1, /* field[1] = type */ }; -static const ProtobufCIntRange rpc__resp__get_ps__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_disconnect__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__get_ps__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_disconnect__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_GetPs", - "RpcRespGetPs", - "RpcRespGetPs", + "Rpc_Resp_WifiDisconnect", + "RpcRespWifiDisconnect", + "RpcRespWifiDisconnect", "", - sizeof(RpcRespGetPs), - 2, - rpc__resp__get_ps__field_descriptors, - rpc__resp__get_ps__field_indices_by_name, - 1, rpc__resp__get_ps__number_ranges, - (ProtobufCMessageInit) rpc__resp__get_ps__init, + sizeof(RpcRespWifiDisconnect), + 1, + rpc__resp__wifi_disconnect__field_descriptors, + rpc__resp__wifi_disconnect__field_indices_by_name, + 1, rpc__resp__wifi_disconnect__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_disconnect__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__set_ps__field_descriptors[1] = +#define rpc__req__wifi_start__field_descriptors NULL +#define rpc__req__wifi_start__field_indices_by_name NULL +#define rpc__req__wifi_start__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_start__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStart", + "RpcReqWifiStart", + "RpcReqWifiStart", + "", + sizeof(RpcReqWifiStart), + 0, + rpc__req__wifi_start__field_descriptors, + rpc__req__wifi_start__field_indices_by_name, + 0, rpc__req__wifi_start__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_start__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_start__field_descriptors[1] = { { - "type", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqSetPs, type), + offsetof(RpcRespWifiStart, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__set_ps__field_indices_by_name[] = { - 0, /* field[0] = type */ +static const unsigned rpc__resp__wifi_start__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__set_ps__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_start__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__set_ps__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_start__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_SetPs", - "RpcReqSetPs", - "RpcReqSetPs", + "Rpc_Resp_WifiStart", + "RpcRespWifiStart", + "RpcRespWifiStart", "", - sizeof(RpcReqSetPs), + sizeof(RpcRespWifiStart), 1, - rpc__req__set_ps__field_descriptors, - rpc__req__set_ps__field_indices_by_name, - 1, rpc__req__set_ps__number_ranges, - (ProtobufCMessageInit) rpc__req__set_ps__init, + rpc__resp__wifi_start__field_descriptors, + rpc__resp__wifi_start__field_indices_by_name, + 1, rpc__resp__wifi_start__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_start__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__set_ps__field_descriptors[1] = +#define rpc__req__wifi_stop__field_descriptors NULL +#define rpc__req__wifi_stop__field_indices_by_name NULL +#define rpc__req__wifi_stop__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_stop__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStop", + "RpcReqWifiStop", + "RpcReqWifiStop", + "", + sizeof(RpcReqWifiStop), + 0, + rpc__req__wifi_stop__field_descriptors, + rpc__req__wifi_stop__field_indices_by_name, + 0, rpc__req__wifi_stop__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_stop__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_stop__field_descriptors[1] = { { "resp", @@ -13089,144 +16416,101 @@ static const ProtobufCFieldDescriptor rpc__resp__set_ps__field_descriptors[1] = PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespSetPs, resp), + offsetof(RpcRespWifiStop, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__set_ps__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_stop__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__set_ps__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_stop__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__set_ps__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_stop__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_SetPs", - "RpcRespSetPs", - "RpcRespSetPs", + "Rpc_Resp_WifiStop", + "RpcRespWifiStop", + "RpcRespWifiStop", "", - sizeof(RpcRespSetPs), + sizeof(RpcRespWifiStop), 1, - rpc__resp__set_ps__field_descriptors, - rpc__resp__set_ps__field_indices_by_name, - 1, rpc__resp__set_ps__number_ranges, - (ProtobufCMessageInit) rpc__resp__set_ps__init, + rpc__resp__wifi_stop__field_descriptors, + rpc__resp__wifi_stop__field_indices_by_name, + 1, rpc__resp__wifi_stop__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_stop__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__set_mac_address__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_scan_start__field_descriptors[3] = { { - "mac", + "config", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcReqSetMacAddress, mac), - NULL, + offsetof(RpcReqWifiScanStart, config), + &wifi_scan_config__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "mode", + "block", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(RpcReqSetMacAddress, mode), + offsetof(RpcReqWifiScanStart, block), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__req__set_mac_address__field_indices_by_name[] = { - 0, /* field[0] = mac */ - 1, /* field[1] = mode */ -}; -static const ProtobufCIntRange rpc__req__set_mac_address__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor rpc__req__set_mac_address__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_SetMacAddress", - "RpcReqSetMacAddress", - "RpcReqSetMacAddress", - "", - sizeof(RpcReqSetMacAddress), - 2, - rpc__req__set_mac_address__field_descriptors, - rpc__req__set_mac_address__field_indices_by_name, - 1, rpc__req__set_mac_address__number_ranges, - (ProtobufCMessageInit) rpc__req__set_mac_address__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__resp__set_mac_address__field_descriptors[1] = -{ { - "resp", - 1, + "config_set", + 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespSetMacAddress, resp), + offsetof(RpcReqWifiScanStart, config_set), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__set_mac_address__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_scan_start__field_indices_by_name[] = { + 1, /* field[1] = block */ + 0, /* field[0] = config */ + 2, /* field[2] = config_set */ }; -static const ProtobufCIntRange rpc__resp__set_mac_address__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_scan_start__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__resp__set_mac_address__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_SetMacAddress", - "RpcRespSetMacAddress", - "RpcRespSetMacAddress", - "", - sizeof(RpcRespSetMacAddress), - 1, - rpc__resp__set_mac_address__field_descriptors, - rpc__resp__set_mac_address__field_indices_by_name, - 1, rpc__resp__set_mac_address__number_ranges, - (ProtobufCMessageInit) rpc__resp__set_mac_address__init, - NULL,NULL,NULL /* reserved[123] */ + { 0, 3 } }; -#define rpc__req__otabegin__field_descriptors NULL -#define rpc__req__otabegin__field_indices_by_name NULL -#define rpc__req__otabegin__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__otabegin__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_scan_start__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_OTABegin", - "RpcReqOTABegin", - "RpcReqOTABegin", + "Rpc_Req_WifiScanStart", + "RpcReqWifiScanStart", + "RpcReqWifiScanStart", "", - sizeof(RpcReqOTABegin), - 0, - rpc__req__otabegin__field_descriptors, - rpc__req__otabegin__field_indices_by_name, - 0, rpc__req__otabegin__number_ranges, - (ProtobufCMessageInit) rpc__req__otabegin__init, + sizeof(RpcReqWifiScanStart), + 3, + rpc__req__wifi_scan_start__field_descriptors, + rpc__req__wifi_scan_start__field_indices_by_name, + 1, rpc__req__wifi_scan_start__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_scan_start__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__otabegin__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_start__field_descriptors[1] = { { "resp", @@ -13234,75 +16518,55 @@ static const ProtobufCFieldDescriptor rpc__resp__otabegin__field_descriptors[1] PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespOTABegin, resp), + offsetof(RpcRespWifiScanStart, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__otabegin__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_scan_start__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__otabegin__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_scan_start__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__otabegin__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_scan_start__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_OTABegin", - "RpcRespOTABegin", - "RpcRespOTABegin", + "Rpc_Resp_WifiScanStart", + "RpcRespWifiScanStart", + "RpcRespWifiScanStart", "", - sizeof(RpcRespOTABegin), + sizeof(RpcRespWifiScanStart), 1, - rpc__resp__otabegin__field_descriptors, - rpc__resp__otabegin__field_indices_by_name, - 1, rpc__resp__otabegin__number_ranges, - (ProtobufCMessageInit) rpc__resp__otabegin__init, + rpc__resp__wifi_scan_start__field_descriptors, + rpc__resp__wifi_scan_start__field_indices_by_name, + 1, rpc__resp__wifi_scan_start__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_scan_start__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__otawrite__field_descriptors[1] = -{ - { - "ota_data", - 1, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, - 0, /* quantifier_offset */ - offsetof(RpcReqOTAWrite, ota_data), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, -}; -static const unsigned rpc__req__otawrite__field_indices_by_name[] = { - 0, /* field[0] = ota_data */ -}; -static const ProtobufCIntRange rpc__req__otawrite__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__req__otawrite__descriptor = +#define rpc__req__wifi_scan_stop__field_descriptors NULL +#define rpc__req__wifi_scan_stop__field_indices_by_name NULL +#define rpc__req__wifi_scan_stop__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_scan_stop__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_OTAWrite", - "RpcReqOTAWrite", - "RpcReqOTAWrite", + "Rpc_Req_WifiScanStop", + "RpcReqWifiScanStop", + "RpcReqWifiScanStop", "", - sizeof(RpcReqOTAWrite), - 1, - rpc__req__otawrite__field_descriptors, - rpc__req__otawrite__field_indices_by_name, - 1, rpc__req__otawrite__number_ranges, - (ProtobufCMessageInit) rpc__req__otawrite__init, + sizeof(RpcReqWifiScanStop), + 0, + rpc__req__wifi_scan_stop__field_descriptors, + rpc__req__wifi_scan_stop__field_indices_by_name, + 0, rpc__req__wifi_scan_stop__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_scan_stop__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__otawrite__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_stop__field_descriptors[1] = { { "resp", @@ -13310,55 +16574,55 @@ static const ProtobufCFieldDescriptor rpc__resp__otawrite__field_descriptors[1] PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespOTAWrite, resp), + offsetof(RpcRespWifiScanStop, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__otawrite__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_scan_stop__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__otawrite__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_scan_stop__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__otawrite__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_scan_stop__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_OTAWrite", - "RpcRespOTAWrite", - "RpcRespOTAWrite", + "Rpc_Resp_WifiScanStop", + "RpcRespWifiScanStop", + "RpcRespWifiScanStop", "", - sizeof(RpcRespOTAWrite), + sizeof(RpcRespWifiScanStop), 1, - rpc__resp__otawrite__field_descriptors, - rpc__resp__otawrite__field_indices_by_name, - 1, rpc__resp__otawrite__number_ranges, - (ProtobufCMessageInit) rpc__resp__otawrite__init, + rpc__resp__wifi_scan_stop__field_descriptors, + rpc__resp__wifi_scan_stop__field_indices_by_name, + 1, rpc__resp__wifi_scan_stop__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_scan_stop__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__otaend__field_descriptors NULL -#define rpc__req__otaend__field_indices_by_name NULL -#define rpc__req__otaend__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__otaend__descriptor = +#define rpc__req__wifi_scan_get_ap_num__field_descriptors NULL +#define rpc__req__wifi_scan_get_ap_num__field_indices_by_name NULL +#define rpc__req__wifi_scan_get_ap_num__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_scan_get_ap_num__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_OTAEnd", - "RpcReqOTAEnd", - "RpcReqOTAEnd", + "Rpc_Req_WifiScanGetApNum", + "RpcReqWifiScanGetApNum", + "RpcReqWifiScanGetApNum", "", - sizeof(RpcReqOTAEnd), + sizeof(RpcReqWifiScanGetApNum), 0, - rpc__req__otaend__field_descriptors, - rpc__req__otaend__field_indices_by_name, - 0, rpc__req__otaend__number_ranges, - (ProtobufCMessageInit) rpc__req__otaend__init, + rpc__req__wifi_scan_get_ap_num__field_descriptors, + rpc__req__wifi_scan_get_ap_num__field_indices_by_name, + 0, rpc__req__wifi_scan_get_ap_num__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_scan_get_ap_num__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__otaend__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_num__field_descriptors[2] = { { "resp", @@ -13366,75 +16630,88 @@ static const ProtobufCFieldDescriptor rpc__resp__otaend__field_descriptors[1] = PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespOTAEnd, resp), + offsetof(RpcRespWifiScanGetApNum, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "number", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiScanGetApNum, number), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__otaend__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_scan_get_ap_num__field_indices_by_name[] = { + 1, /* field[1] = number */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__otaend__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_scan_get_ap_num__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__otaend__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_scan_get_ap_num__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_OTAEnd", - "RpcRespOTAEnd", - "RpcRespOTAEnd", + "Rpc_Resp_WifiScanGetApNum", + "RpcRespWifiScanGetApNum", + "RpcRespWifiScanGetApNum", "", - sizeof(RpcRespOTAEnd), - 1, - rpc__resp__otaend__field_descriptors, - rpc__resp__otaend__field_indices_by_name, - 1, rpc__resp__otaend__number_ranges, - (ProtobufCMessageInit) rpc__resp__otaend__init, + sizeof(RpcRespWifiScanGetApNum), + 2, + rpc__resp__wifi_scan_get_ap_num__field_descriptors, + rpc__resp__wifi_scan_get_ap_num__field_indices_by_name, + 1, rpc__resp__wifi_scan_get_ap_num__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_scan_get_ap_num__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_max_tx_power__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_scan_get_ap_records__field_descriptors[1] = { { - "power", + "number", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetMaxTxPower, power), + offsetof(RpcReqWifiScanGetApRecords, number), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_max_tx_power__field_indices_by_name[] = { - 0, /* field[0] = power */ +static const unsigned rpc__req__wifi_scan_get_ap_records__field_indices_by_name[] = { + 0, /* field[0] = number */ }; -static const ProtobufCIntRange rpc__req__wifi_set_max_tx_power__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_scan_get_ap_records__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_max_tx_power__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_scan_get_ap_records__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetMaxTxPower", - "RpcReqWifiSetMaxTxPower", - "RpcReqWifiSetMaxTxPower", + "Rpc_Req_WifiScanGetApRecords", + "RpcReqWifiScanGetApRecords", + "RpcReqWifiScanGetApRecords", "", - sizeof(RpcReqWifiSetMaxTxPower), + sizeof(RpcReqWifiScanGetApRecords), 1, - rpc__req__wifi_set_max_tx_power__field_descriptors, - rpc__req__wifi_set_max_tx_power__field_indices_by_name, - 1, rpc__req__wifi_set_max_tx_power__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_max_tx_power__init, + rpc__req__wifi_scan_get_ap_records__field_descriptors, + rpc__req__wifi_scan_get_ap_records__field_indices_by_name, + 1, rpc__req__wifi_scan_get_ap_records__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_scan_get_ap_records__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_max_tx_power__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_records__field_descriptors[3] = { { "resp", @@ -13442,157 +16719,262 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_max_tx_power__field_de PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetMaxTxPower, resp), + offsetof(RpcRespWifiScanGetApRecords, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "number", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiScanGetApRecords, number), + NULL, NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ap_records", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(RpcRespWifiScanGetApRecords, n_ap_records), + offsetof(RpcRespWifiScanGetApRecords, ap_records), + &wifi_ap_record__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_max_tx_power__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_scan_get_ap_records__field_indices_by_name[] = { + 2, /* field[2] = ap_records */ + 1, /* field[1] = number */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_max_tx_power__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_scan_get_ap_records__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 3 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_max_tx_power__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_scan_get_ap_records__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetMaxTxPower", - "RpcRespWifiSetMaxTxPower", - "RpcRespWifiSetMaxTxPower", + "Rpc_Resp_WifiScanGetApRecords", + "RpcRespWifiScanGetApRecords", + "RpcRespWifiScanGetApRecords", "", - sizeof(RpcRespWifiSetMaxTxPower), - 1, - rpc__resp__wifi_set_max_tx_power__field_descriptors, - rpc__resp__wifi_set_max_tx_power__field_indices_by_name, - 1, rpc__resp__wifi_set_max_tx_power__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_max_tx_power__init, + sizeof(RpcRespWifiScanGetApRecords), + 3, + rpc__resp__wifi_scan_get_ap_records__field_descriptors, + rpc__resp__wifi_scan_get_ap_records__field_indices_by_name, + 1, rpc__resp__wifi_scan_get_ap_records__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_scan_get_ap_records__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_get_max_tx_power__field_descriptors NULL -#define rpc__req__wifi_get_max_tx_power__field_indices_by_name NULL -#define rpc__req__wifi_get_max_tx_power__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_get_max_tx_power__descriptor = +#define rpc__req__wifi_scan_get_ap_record__field_descriptors NULL +#define rpc__req__wifi_scan_get_ap_record__field_indices_by_name NULL +#define rpc__req__wifi_scan_get_ap_record__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_scan_get_ap_record__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetMaxTxPower", - "RpcReqWifiGetMaxTxPower", - "RpcReqWifiGetMaxTxPower", + "Rpc_Req_WifiScanGetApRecord", + "RpcReqWifiScanGetApRecord", + "RpcReqWifiScanGetApRecord", "", - sizeof(RpcReqWifiGetMaxTxPower), + sizeof(RpcReqWifiScanGetApRecord), 0, - rpc__req__wifi_get_max_tx_power__field_descriptors, - rpc__req__wifi_get_max_tx_power__field_indices_by_name, - 0, rpc__req__wifi_get_max_tx_power__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_max_tx_power__init, + rpc__req__wifi_scan_get_ap_record__field_descriptors, + rpc__req__wifi_scan_get_ap_record__field_indices_by_name, + 0, rpc__req__wifi_scan_get_ap_record__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_scan_get_ap_record__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_max_tx_power__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_record__field_descriptors[2] = { { - "power", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetMaxTxPower, power), + offsetof(RpcRespWifiScanGetApRecord, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "resp", + "ap_record", 2, PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiScanGetApRecord, ap_record), + &wifi_ap_record__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__resp__wifi_scan_get_ap_record__field_indices_by_name[] = { + 1, /* field[1] = ap_record */ + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__wifi_scan_get_ap_record__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor rpc__resp__wifi_scan_get_ap_record__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_WifiScanGetApRecord", + "RpcRespWifiScanGetApRecord", + "RpcRespWifiScanGetApRecord", + "", + sizeof(RpcRespWifiScanGetApRecord), + 2, + rpc__resp__wifi_scan_get_ap_record__field_descriptors, + rpc__resp__wifi_scan_get_ap_record__field_indices_by_name, + 1, rpc__resp__wifi_scan_get_ap_record__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_scan_get_ap_record__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define rpc__req__wifi_clear_ap_list__field_descriptors NULL +#define rpc__req__wifi_clear_ap_list__field_indices_by_name NULL +#define rpc__req__wifi_clear_ap_list__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_clear_ap_list__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiClearApList", + "RpcReqWifiClearApList", + "RpcReqWifiClearApList", + "", + sizeof(RpcReqWifiClearApList), + 0, + rpc__req__wifi_clear_ap_list__field_descriptors, + rpc__req__wifi_clear_ap_list__field_indices_by_name, + 0, rpc__req__wifi_clear_ap_list__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_clear_ap_list__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_clear_ap_list__field_descriptors[1] = +{ + { + "resp", + 1, + PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetMaxTxPower, resp), + offsetof(RpcRespWifiClearApList, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_max_tx_power__field_indices_by_name[] = { - 0, /* field[0] = power */ - 1, /* field[1] = resp */ +static const unsigned rpc__resp__wifi_clear_ap_list__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_max_tx_power__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_clear_ap_list__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__wifi_clear_ap_list__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_WifiClearApList", + "RpcRespWifiClearApList", + "RpcRespWifiClearApList", + "", + sizeof(RpcRespWifiClearApList), + 1, + rpc__resp__wifi_clear_ap_list__field_descriptors, + rpc__resp__wifi_clear_ap_list__field_indices_by_name, + 1, rpc__resp__wifi_clear_ap_list__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_clear_ap_list__init, + NULL,NULL,NULL /* reserved[123] */ }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_max_tx_power__descriptor = +#define rpc__req__wifi_restore__field_descriptors NULL +#define rpc__req__wifi_restore__field_indices_by_name NULL +#define rpc__req__wifi_restore__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_restore__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetMaxTxPower", - "RpcRespWifiGetMaxTxPower", - "RpcRespWifiGetMaxTxPower", + "Rpc_Req_WifiRestore", + "RpcReqWifiRestore", + "RpcReqWifiRestore", "", - sizeof(RpcRespWifiGetMaxTxPower), - 2, - rpc__resp__wifi_get_max_tx_power__field_descriptors, - rpc__resp__wifi_get_max_tx_power__field_indices_by_name, - 1, rpc__resp__wifi_get_max_tx_power__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_max_tx_power__init, + sizeof(RpcReqWifiRestore), + 0, + rpc__req__wifi_restore__field_descriptors, + rpc__req__wifi_restore__field_indices_by_name, + 0, rpc__req__wifi_restore__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_restore__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__config_heartbeat__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_restore__field_descriptors[1] = { { - "enable", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, - 0, /* quantifier_offset */ - offsetof(RpcReqConfigHeartbeat, enable), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "duration", - 2, - PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqConfigHeartbeat, duration), + offsetof(RpcRespWifiRestore, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__config_heartbeat__field_indices_by_name[] = { - 1, /* field[1] = duration */ - 0, /* field[0] = enable */ +static const unsigned rpc__resp__wifi_restore__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__config_heartbeat__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_restore__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__config_heartbeat__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_restore__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_ConfigHeartbeat", - "RpcReqConfigHeartbeat", - "RpcReqConfigHeartbeat", + "Rpc_Resp_WifiRestore", + "RpcRespWifiRestore", + "RpcRespWifiRestore", "", - sizeof(RpcReqConfigHeartbeat), - 2, - rpc__req__config_heartbeat__field_descriptors, - rpc__req__config_heartbeat__field_indices_by_name, - 1, rpc__req__config_heartbeat__number_ranges, - (ProtobufCMessageInit) rpc__req__config_heartbeat__init, + sizeof(RpcRespWifiRestore), + 1, + rpc__resp__wifi_restore__field_descriptors, + rpc__resp__wifi_restore__field_indices_by_name, + 1, rpc__resp__wifi_restore__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_restore__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__config_heartbeat__field_descriptors[1] = +#define rpc__req__wifi_clear_fast_connect__field_descriptors NULL +#define rpc__req__wifi_clear_fast_connect__field_indices_by_name NULL +#define rpc__req__wifi_clear_fast_connect__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_clear_fast_connect__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiClearFastConnect", + "RpcReqWifiClearFastConnect", + "RpcReqWifiClearFastConnect", + "", + sizeof(RpcReqWifiClearFastConnect), + 0, + rpc__req__wifi_clear_fast_connect__field_descriptors, + rpc__req__wifi_clear_fast_connect__field_indices_by_name, + 0, rpc__req__wifi_clear_fast_connect__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_clear_fast_connect__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_clear_fast_connect__field_descriptors[1] = { { "resp", @@ -13600,75 +16982,75 @@ static const ProtobufCFieldDescriptor rpc__resp__config_heartbeat__field_descrip PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespConfigHeartbeat, resp), + offsetof(RpcRespWifiClearFastConnect, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__config_heartbeat__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_clear_fast_connect__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__config_heartbeat__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_clear_fast_connect__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__config_heartbeat__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_clear_fast_connect__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_ConfigHeartbeat", - "RpcRespConfigHeartbeat", - "RpcRespConfigHeartbeat", + "Rpc_Resp_WifiClearFastConnect", + "RpcRespWifiClearFastConnect", + "RpcRespWifiClearFastConnect", "", - sizeof(RpcRespConfigHeartbeat), + sizeof(RpcRespWifiClearFastConnect), 1, - rpc__resp__config_heartbeat__field_descriptors, - rpc__resp__config_heartbeat__field_indices_by_name, - 1, rpc__resp__config_heartbeat__number_ranges, - (ProtobufCMessageInit) rpc__resp__config_heartbeat__init, + rpc__resp__wifi_clear_fast_connect__field_descriptors, + rpc__resp__wifi_clear_fast_connect__field_indices_by_name, + 1, rpc__resp__wifi_clear_fast_connect__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_clear_fast_connect__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_init__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_deauth_sta__field_descriptors[1] = { { - "cfg", + "aid", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiInit, cfg), - &wifi_init_config__descriptor, + offsetof(RpcReqWifiDeauthSta, aid), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_init__field_indices_by_name[] = { - 0, /* field[0] = cfg */ +static const unsigned rpc__req__wifi_deauth_sta__field_indices_by_name[] = { + 0, /* field[0] = aid */ }; -static const ProtobufCIntRange rpc__req__wifi_init__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_deauth_sta__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_init__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_deauth_sta__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiInit", - "RpcReqWifiInit", - "RpcReqWifiInit", + "Rpc_Req_WifiDeauthSta", + "RpcReqWifiDeauthSta", + "RpcReqWifiDeauthSta", "", - sizeof(RpcReqWifiInit), + sizeof(RpcReqWifiDeauthSta), 1, - rpc__req__wifi_init__field_descriptors, - rpc__req__wifi_init__field_indices_by_name, - 1, rpc__req__wifi_init__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_init__init, + rpc__req__wifi_deauth_sta__field_descriptors, + rpc__req__wifi_deauth_sta__field_indices_by_name, + 1, rpc__req__wifi_deauth_sta__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_deauth_sta__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_init__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_deauth_sta__field_descriptors[2] = { { "resp", @@ -13676,55 +17058,68 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_init__field_descriptors[1] PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiInit, resp), + offsetof(RpcRespWifiDeauthSta, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "aid", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiDeauthSta, aid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_init__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_deauth_sta__field_indices_by_name[] = { + 1, /* field[1] = aid */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_init__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_deauth_sta__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_init__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_deauth_sta__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiInit", - "RpcRespWifiInit", - "RpcRespWifiInit", + "Rpc_Resp_WifiDeauthSta", + "RpcRespWifiDeauthSta", + "RpcRespWifiDeauthSta", "", - sizeof(RpcRespWifiInit), - 1, - rpc__resp__wifi_init__field_descriptors, - rpc__resp__wifi_init__field_indices_by_name, - 1, rpc__resp__wifi_init__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_init__init, + sizeof(RpcRespWifiDeauthSta), + 2, + rpc__resp__wifi_deauth_sta__field_descriptors, + rpc__resp__wifi_deauth_sta__field_indices_by_name, + 1, rpc__resp__wifi_deauth_sta__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_deauth_sta__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_deinit__field_descriptors NULL -#define rpc__req__wifi_deinit__field_indices_by_name NULL -#define rpc__req__wifi_deinit__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_deinit__descriptor = +#define rpc__req__wifi_sta_get_ap_info__field_descriptors NULL +#define rpc__req__wifi_sta_get_ap_info__field_indices_by_name NULL +#define rpc__req__wifi_sta_get_ap_info__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_ap_info__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiDeinit", - "RpcReqWifiDeinit", - "RpcReqWifiDeinit", + "Rpc_Req_WifiStaGetApInfo", + "RpcReqWifiStaGetApInfo", + "RpcReqWifiStaGetApInfo", "", - sizeof(RpcReqWifiDeinit), + sizeof(RpcReqWifiStaGetApInfo), 0, - rpc__req__wifi_deinit__field_descriptors, - rpc__req__wifi_deinit__field_indices_by_name, - 0, rpc__req__wifi_deinit__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_deinit__init, + rpc__req__wifi_sta_get_ap_info__field_descriptors, + rpc__req__wifi_sta_get_ap_info__field_indices_by_name, + 0, rpc__req__wifi_sta_get_ap_info__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_get_ap_info__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_deinit__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_ap_info__field_descriptors[2] = { { "resp", @@ -13732,88 +17127,101 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_deinit__field_descriptors[ PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiDeinit, resp), + offsetof(RpcRespWifiStaGetApInfo, resp), + NULL, NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ap_record", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiStaGetApInfo, ap_record), + &wifi_ap_record__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_deinit__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_sta_get_ap_info__field_indices_by_name[] = { + 1, /* field[1] = ap_record */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_deinit__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_get_ap_info__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_deinit__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_ap_info__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiDeinit", - "RpcRespWifiDeinit", - "RpcRespWifiDeinit", + "Rpc_Resp_WifiStaGetApInfo", + "RpcRespWifiStaGetApInfo", + "RpcRespWifiStaGetApInfo", "", - sizeof(RpcRespWifiDeinit), - 1, - rpc__resp__wifi_deinit__field_descriptors, - rpc__resp__wifi_deinit__field_indices_by_name, - 1, rpc__resp__wifi_deinit__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_deinit__init, + sizeof(RpcRespWifiStaGetApInfo), + 2, + rpc__resp__wifi_sta_get_ap_info__field_descriptors, + rpc__resp__wifi_sta_get_ap_info__field_indices_by_name, + 1, rpc__resp__wifi_sta_get_ap_info__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_get_ap_info__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_config__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_protocol__field_descriptors[2] = { { - "iface", + "ifx", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetConfig, iface), + offsetof(RpcReqWifiSetProtocol, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "cfg", + "protocol_bitmap", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetConfig, cfg), - &wifi_config__descriptor, + offsetof(RpcReqWifiSetProtocol, protocol_bitmap), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_config__field_indices_by_name[] = { - 1, /* field[1] = cfg */ - 0, /* field[0] = iface */ +static const unsigned rpc__req__wifi_set_protocol__field_indices_by_name[] = { + 0, /* field[0] = ifx */ + 1, /* field[1] = protocol_bitmap */ }; -static const ProtobufCIntRange rpc__req__wifi_set_config__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_protocol__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_config__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_protocol__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetConfig", - "RpcReqWifiSetConfig", - "RpcReqWifiSetConfig", + "Rpc_Req_WifiSetProtocol", + "RpcReqWifiSetProtocol", + "RpcReqWifiSetProtocol", "", - sizeof(RpcReqWifiSetConfig), + sizeof(RpcReqWifiSetProtocol), 2, - rpc__req__wifi_set_config__field_descriptors, - rpc__req__wifi_set_config__field_indices_by_name, - 1, rpc__req__wifi_set_config__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_config__init, + rpc__req__wifi_set_protocol__field_descriptors, + rpc__req__wifi_set_protocol__field_indices_by_name, + 1, rpc__req__wifi_set_protocol__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_protocol__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_config__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_protocol__field_descriptors[1] = { { "resp", @@ -13821,75 +17229,75 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_config__field_descript PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetConfig, resp), + offsetof(RpcRespWifiSetProtocol, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_config__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_set_protocol__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_config__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_protocol__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_config__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_protocol__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetConfig", - "RpcRespWifiSetConfig", - "RpcRespWifiSetConfig", + "Rpc_Resp_WifiSetProtocol", + "RpcRespWifiSetProtocol", + "RpcRespWifiSetProtocol", "", - sizeof(RpcRespWifiSetConfig), + sizeof(RpcRespWifiSetProtocol), 1, - rpc__resp__wifi_set_config__field_descriptors, - rpc__resp__wifi_set_config__field_indices_by_name, - 1, rpc__resp__wifi_set_config__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_config__init, + rpc__resp__wifi_set_protocol__field_descriptors, + rpc__resp__wifi_set_protocol__field_indices_by_name, + 1, rpc__resp__wifi_set_protocol__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_protocol__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_get_config__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_get_protocol__field_descriptors[1] = { { - "iface", + "ifx", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiGetConfig, iface), + offsetof(RpcReqWifiGetProtocol, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_get_config__field_indices_by_name[] = { - 0, /* field[0] = iface */ +static const unsigned rpc__req__wifi_get_protocol__field_indices_by_name[] = { + 0, /* field[0] = ifx */ }; -static const ProtobufCIntRange rpc__req__wifi_get_config__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_get_protocol__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_get_config__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_get_protocol__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetConfig", - "RpcReqWifiGetConfig", - "RpcReqWifiGetConfig", + "Rpc_Req_WifiGetProtocol", + "RpcReqWifiGetProtocol", + "RpcReqWifiGetProtocol", "", - sizeof(RpcReqWifiGetConfig), + sizeof(RpcReqWifiGetProtocol), 1, - rpc__req__wifi_get_config__field_descriptors, - rpc__req__wifi_get_config__field_indices_by_name, - 1, rpc__req__wifi_get_config__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_config__init, + rpc__req__wifi_get_protocol__field_descriptors, + rpc__req__wifi_get_protocol__field_indices_by_name, + 1, rpc__req__wifi_get_protocol__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_protocol__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_config__field_descriptors[3] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_protocol__field_descriptors[2] = { { "resp", @@ -13897,81 +17305,101 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_config__field_descript PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetConfig, resp), + offsetof(RpcRespWifiGetProtocol, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "iface", + "protocol_bitmap", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetConfig, iface), + offsetof(RpcRespWifiGetProtocol, protocol_bitmap), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__resp__wifi_get_protocol__field_indices_by_name[] = { + 1, /* field[1] = protocol_bitmap */ + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__wifi_get_protocol__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor rpc__resp__wifi_get_protocol__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_WifiGetProtocol", + "RpcRespWifiGetProtocol", + "RpcRespWifiGetProtocol", + "", + sizeof(RpcRespWifiGetProtocol), + 2, + rpc__resp__wifi_get_protocol__field_descriptors, + rpc__resp__wifi_get_protocol__field_indices_by_name, + 1, rpc__resp__wifi_get_protocol__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_protocol__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__wifi_set_bandwidth__field_descriptors[2] = +{ + { + "ifx", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcReqWifiSetBandwidth, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "cfg", - 3, + "bw", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetConfig, cfg), - &wifi_config__descriptor, + offsetof(RpcReqWifiSetBandwidth, bw), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_config__field_indices_by_name[] = { - 2, /* field[2] = cfg */ - 1, /* field[1] = iface */ - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_set_bandwidth__field_indices_by_name[] = { + 1, /* field[1] = bw */ + 0, /* field[0] = ifx */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_config__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_bandwidth__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 3 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_config__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetConfig", - "RpcRespWifiGetConfig", - "RpcRespWifiGetConfig", - "", - sizeof(RpcRespWifiGetConfig), - 3, - rpc__resp__wifi_get_config__field_descriptors, - rpc__resp__wifi_get_config__field_indices_by_name, - 1, rpc__resp__wifi_get_config__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_config__init, - NULL,NULL,NULL /* reserved[123] */ + { 0, 2 } }; -#define rpc__req__wifi_connect__field_descriptors NULL -#define rpc__req__wifi_connect__field_indices_by_name NULL -#define rpc__req__wifi_connect__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_connect__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_bandwidth__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiConnect", - "RpcReqWifiConnect", - "RpcReqWifiConnect", + "Rpc_Req_WifiSetBandwidth", + "RpcReqWifiSetBandwidth", + "RpcReqWifiSetBandwidth", "", - sizeof(RpcReqWifiConnect), - 0, - rpc__req__wifi_connect__field_descriptors, - rpc__req__wifi_connect__field_indices_by_name, - 0, rpc__req__wifi_connect__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_connect__init, + sizeof(RpcReqWifiSetBandwidth), + 2, + rpc__req__wifi_set_bandwidth__field_descriptors, + rpc__req__wifi_set_bandwidth__field_indices_by_name, + 1, rpc__req__wifi_set_bandwidth__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_bandwidth__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_connect__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_bandwidth__field_descriptors[1] = { { "resp", @@ -13979,111 +17407,75 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_connect__field_descriptors PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiConnect, resp), + offsetof(RpcRespWifiSetBandwidth, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_connect__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_set_bandwidth__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_connect__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_bandwidth__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_connect__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_bandwidth__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiConnect", - "RpcRespWifiConnect", - "RpcRespWifiConnect", + "Rpc_Resp_WifiSetBandwidth", + "RpcRespWifiSetBandwidth", + "RpcRespWifiSetBandwidth", "", - sizeof(RpcRespWifiConnect), + sizeof(RpcRespWifiSetBandwidth), 1, - rpc__resp__wifi_connect__field_descriptors, - rpc__resp__wifi_connect__field_indices_by_name, - 1, rpc__resp__wifi_connect__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_connect__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_disconnect__field_descriptors NULL -#define rpc__req__wifi_disconnect__field_indices_by_name NULL -#define rpc__req__wifi_disconnect__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_disconnect__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiDisconnect", - "RpcReqWifiDisconnect", - "RpcReqWifiDisconnect", - "", - sizeof(RpcReqWifiDisconnect), - 0, - rpc__req__wifi_disconnect__field_descriptors, - rpc__req__wifi_disconnect__field_indices_by_name, - 0, rpc__req__wifi_disconnect__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_disconnect__init, + rpc__resp__wifi_set_bandwidth__field_descriptors, + rpc__resp__wifi_set_bandwidth__field_indices_by_name, + 1, rpc__resp__wifi_set_bandwidth__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_bandwidth__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_disconnect__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_get_bandwidth__field_descriptors[1] = { { - "resp", + "ifx", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiDisconnect, resp), + offsetof(RpcReqWifiGetBandwidth, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_disconnect__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_get_bandwidth__field_indices_by_name[] = { + 0, /* field[0] = ifx */ }; -static const ProtobufCIntRange rpc__resp__wifi_disconnect__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_get_bandwidth__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_disconnect__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_get_bandwidth__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiDisconnect", - "RpcRespWifiDisconnect", - "RpcRespWifiDisconnect", + "Rpc_Req_WifiGetBandwidth", + "RpcReqWifiGetBandwidth", + "RpcReqWifiGetBandwidth", "", - sizeof(RpcRespWifiDisconnect), + sizeof(RpcReqWifiGetBandwidth), 1, - rpc__resp__wifi_disconnect__field_descriptors, - rpc__resp__wifi_disconnect__field_indices_by_name, - 1, rpc__resp__wifi_disconnect__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_disconnect__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_start__field_descriptors NULL -#define rpc__req__wifi_start__field_indices_by_name NULL -#define rpc__req__wifi_start__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_start__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStart", - "RpcReqWifiStart", - "RpcReqWifiStart", - "", - sizeof(RpcReqWifiStart), - 0, - rpc__req__wifi_start__field_descriptors, - rpc__req__wifi_start__field_indices_by_name, - 0, rpc__req__wifi_start__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_start__init, + rpc__req__wifi_get_bandwidth__field_descriptors, + rpc__req__wifi_get_bandwidth__field_indices_by_name, + 1, rpc__req__wifi_get_bandwidth__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_bandwidth__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_start__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_bandwidth__field_descriptors[2] = { { "resp", @@ -14091,55 +17483,101 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_start__field_descriptors[1 PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStart, resp), + offsetof(RpcRespWifiGetBandwidth, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "bw", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiGetBandwidth, bw), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_start__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_get_bandwidth__field_indices_by_name[] = { + 1, /* field[1] = bw */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_start__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_bandwidth__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_start__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_bandwidth__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStart", - "RpcRespWifiStart", - "RpcRespWifiStart", + "Rpc_Resp_WifiGetBandwidth", + "RpcRespWifiGetBandwidth", + "RpcRespWifiGetBandwidth", "", - sizeof(RpcRespWifiStart), - 1, - rpc__resp__wifi_start__field_descriptors, - rpc__resp__wifi_start__field_indices_by_name, - 1, rpc__resp__wifi_start__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_start__init, + sizeof(RpcRespWifiGetBandwidth), + 2, + rpc__resp__wifi_get_bandwidth__field_descriptors, + rpc__resp__wifi_get_bandwidth__field_indices_by_name, + 1, rpc__resp__wifi_get_bandwidth__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_bandwidth__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_stop__field_descriptors NULL -#define rpc__req__wifi_stop__field_indices_by_name NULL -#define rpc__req__wifi_stop__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_stop__descriptor = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_channel__field_descriptors[2] = +{ + { + "primary", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcReqWifiSetChannel, primary), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "second", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcReqWifiSetChannel, second), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__req__wifi_set_channel__field_indices_by_name[] = { + 0, /* field[0] = primary */ + 1, /* field[1] = second */ +}; +static const ProtobufCIntRange rpc__req__wifi_set_channel__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor rpc__req__wifi_set_channel__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStop", - "RpcReqWifiStop", - "RpcReqWifiStop", + "Rpc_Req_WifiSetChannel", + "RpcReqWifiSetChannel", + "RpcReqWifiSetChannel", "", - sizeof(RpcReqWifiStop), - 0, - rpc__req__wifi_stop__field_descriptors, - rpc__req__wifi_stop__field_indices_by_name, - 0, rpc__req__wifi_stop__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_stop__init, + sizeof(RpcReqWifiSetChannel), + 2, + rpc__req__wifi_set_channel__field_descriptors, + rpc__req__wifi_set_channel__field_indices_by_name, + 1, rpc__req__wifi_set_channel__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_channel__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_stop__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_channel__field_descriptors[1] = { { "resp", @@ -14147,157 +17585,157 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_stop__field_descriptors[1] PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStop, resp), + offsetof(RpcRespWifiSetChannel, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_stop__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_set_channel__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_stop__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_channel__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_stop__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_channel__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStop", - "RpcRespWifiStop", - "RpcRespWifiStop", + "Rpc_Resp_WifiSetChannel", + "RpcRespWifiSetChannel", + "RpcRespWifiSetChannel", "", - sizeof(RpcRespWifiStop), + sizeof(RpcRespWifiSetChannel), 1, - rpc__resp__wifi_stop__field_descriptors, - rpc__resp__wifi_stop__field_indices_by_name, - 1, rpc__resp__wifi_stop__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_stop__init, + rpc__resp__wifi_set_channel__field_descriptors, + rpc__resp__wifi_set_channel__field_indices_by_name, + 1, rpc__resp__wifi_set_channel__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_channel__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_scan_start__field_descriptors[3] = +#define rpc__req__wifi_get_channel__field_descriptors NULL +#define rpc__req__wifi_get_channel__field_indices_by_name NULL +#define rpc__req__wifi_get_channel__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_get_channel__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiGetChannel", + "RpcReqWifiGetChannel", + "RpcReqWifiGetChannel", + "", + sizeof(RpcReqWifiGetChannel), + 0, + rpc__req__wifi_get_channel__field_descriptors, + rpc__req__wifi_get_channel__field_indices_by_name, + 0, rpc__req__wifi_get_channel__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_channel__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_channel__field_descriptors[3] = { { - "config", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiScanStart, config), - &wifi_scan_config__descriptor, + offsetof(RpcRespWifiGetChannel, resp), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "block", + "primary", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiScanStart, block), + offsetof(RpcRespWifiGetChannel, primary), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "config_set", + "second", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiScanStart, config_set), + offsetof(RpcRespWifiGetChannel, second), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_scan_start__field_indices_by_name[] = { - 1, /* field[1] = block */ - 0, /* field[0] = config */ - 2, /* field[2] = config_set */ +static const unsigned rpc__resp__wifi_get_channel__field_indices_by_name[] = { + 1, /* field[1] = primary */ + 0, /* field[0] = resp */ + 2, /* field[2] = second */ }; -static const ProtobufCIntRange rpc__req__wifi_scan_start__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_channel__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_scan_start__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_channel__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiScanStart", - "RpcReqWifiScanStart", - "RpcReqWifiScanStart", + "Rpc_Resp_WifiGetChannel", + "RpcRespWifiGetChannel", + "RpcRespWifiGetChannel", "", - sizeof(RpcReqWifiScanStart), + sizeof(RpcRespWifiGetChannel), 3, - rpc__req__wifi_scan_start__field_descriptors, - rpc__req__wifi_scan_start__field_indices_by_name, - 1, rpc__req__wifi_scan_start__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_scan_start__init, + rpc__resp__wifi_get_channel__field_descriptors, + rpc__resp__wifi_get_channel__field_indices_by_name, + 1, rpc__resp__wifi_get_channel__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_channel__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_start__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_storage__field_descriptors[1] = { { - "resp", + "storage", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanStart, resp), + offsetof(RpcReqWifiSetStorage, storage), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_scan_start__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_set_storage__field_indices_by_name[] = { + 0, /* field[0] = storage */ }; -static const ProtobufCIntRange rpc__resp__wifi_scan_start__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_storage__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_scan_start__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_storage__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiScanStart", - "RpcRespWifiScanStart", - "RpcRespWifiScanStart", + "Rpc_Req_WifiSetStorage", + "RpcReqWifiSetStorage", + "RpcReqWifiSetStorage", "", - sizeof(RpcRespWifiScanStart), + sizeof(RpcReqWifiSetStorage), 1, - rpc__resp__wifi_scan_start__field_descriptors, - rpc__resp__wifi_scan_start__field_indices_by_name, - 1, rpc__resp__wifi_scan_start__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_scan_start__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_scan_stop__field_descriptors NULL -#define rpc__req__wifi_scan_stop__field_indices_by_name NULL -#define rpc__req__wifi_scan_stop__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_scan_stop__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiScanStop", - "RpcReqWifiScanStop", - "RpcReqWifiScanStop", - "", - sizeof(RpcReqWifiScanStop), - 0, - rpc__req__wifi_scan_stop__field_descriptors, - rpc__req__wifi_scan_stop__field_indices_by_name, - 0, rpc__req__wifi_scan_stop__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_scan_stop__init, + rpc__req__wifi_set_storage__field_descriptors, + rpc__req__wifi_set_storage__field_indices_by_name, + 1, rpc__req__wifi_set_storage__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_storage__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_stop__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_storage__field_descriptors[1] = { { "resp", @@ -14305,144 +17743,144 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_stop__field_descripto PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanStop, resp), + offsetof(RpcRespWifiSetStorage, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_scan_stop__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_set_storage__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_scan_stop__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_storage__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_scan_stop__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_storage__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiScanStop", - "RpcRespWifiScanStop", - "RpcRespWifiScanStop", + "Rpc_Resp_WifiSetStorage", + "RpcRespWifiSetStorage", + "RpcRespWifiSetStorage", "", - sizeof(RpcRespWifiScanStop), + sizeof(RpcRespWifiSetStorage), 1, - rpc__resp__wifi_scan_stop__field_descriptors, - rpc__resp__wifi_scan_stop__field_indices_by_name, - 1, rpc__resp__wifi_scan_stop__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_scan_stop__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_scan_get_ap_num__field_descriptors NULL -#define rpc__req__wifi_scan_get_ap_num__field_indices_by_name NULL -#define rpc__req__wifi_scan_get_ap_num__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_scan_get_ap_num__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiScanGetApNum", - "RpcReqWifiScanGetApNum", - "RpcReqWifiScanGetApNum", - "", - sizeof(RpcReqWifiScanGetApNum), - 0, - rpc__req__wifi_scan_get_ap_num__field_descriptors, - rpc__req__wifi_scan_get_ap_num__field_indices_by_name, - 0, rpc__req__wifi_scan_get_ap_num__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_scan_get_ap_num__init, + rpc__resp__wifi_set_storage__field_descriptors, + rpc__resp__wifi_set_storage__field_indices_by_name, + 1, rpc__resp__wifi_set_storage__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_storage__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_num__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_country_code__field_descriptors[2] = { { - "resp", + "country", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanGetApNum, resp), + offsetof(RpcReqWifiSetCountryCode, country), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "number", + "ieee80211d_enabled", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanGetApNum, number), + offsetof(RpcReqWifiSetCountryCode, ieee80211d_enabled), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_scan_get_ap_num__field_indices_by_name[] = { - 1, /* field[1] = number */ - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_set_country_code__field_indices_by_name[] = { + 0, /* field[0] = country */ + 1, /* field[1] = ieee80211d_enabled */ }; -static const ProtobufCIntRange rpc__resp__wifi_scan_get_ap_num__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_country_code__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_scan_get_ap_num__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_country_code__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiScanGetApNum", - "RpcRespWifiScanGetApNum", - "RpcRespWifiScanGetApNum", + "Rpc_Req_WifiSetCountryCode", + "RpcReqWifiSetCountryCode", + "RpcReqWifiSetCountryCode", "", - sizeof(RpcRespWifiScanGetApNum), + sizeof(RpcReqWifiSetCountryCode), 2, - rpc__resp__wifi_scan_get_ap_num__field_descriptors, - rpc__resp__wifi_scan_get_ap_num__field_indices_by_name, - 1, rpc__resp__wifi_scan_get_ap_num__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_scan_get_ap_num__init, + rpc__req__wifi_set_country_code__field_descriptors, + rpc__req__wifi_set_country_code__field_indices_by_name, + 1, rpc__req__wifi_set_country_code__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_country_code__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_scan_get_ap_records__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_country_code__field_descriptors[1] = { { - "number", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiScanGetApRecords, number), + offsetof(RpcRespWifiSetCountryCode, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_scan_get_ap_records__field_indices_by_name[] = { - 0, /* field[0] = number */ +static const unsigned rpc__resp__wifi_set_country_code__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_scan_get_ap_records__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_country_code__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_scan_get_ap_records__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_country_code__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiScanGetApRecords", - "RpcReqWifiScanGetApRecords", - "RpcReqWifiScanGetApRecords", + "Rpc_Resp_WifiSetCountryCode", + "RpcRespWifiSetCountryCode", + "RpcRespWifiSetCountryCode", "", - sizeof(RpcReqWifiScanGetApRecords), + sizeof(RpcRespWifiSetCountryCode), 1, - rpc__req__wifi_scan_get_ap_records__field_descriptors, - rpc__req__wifi_scan_get_ap_records__field_indices_by_name, - 1, rpc__req__wifi_scan_get_ap_records__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_scan_get_ap_records__init, + rpc__resp__wifi_set_country_code__field_descriptors, + rpc__resp__wifi_set_country_code__field_indices_by_name, + 1, rpc__resp__wifi_set_country_code__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_country_code__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_records__field_descriptors[3] = +#define rpc__req__wifi_get_country_code__field_descriptors NULL +#define rpc__req__wifi_get_country_code__field_indices_by_name NULL +#define rpc__req__wifi_get_country_code__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_get_country_code__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiGetCountryCode", + "RpcReqWifiGetCountryCode", + "RpcReqWifiGetCountryCode", + "", + sizeof(RpcReqWifiGetCountryCode), + 0, + rpc__req__wifi_get_country_code__field_descriptors, + rpc__req__wifi_get_country_code__field_indices_by_name, + 0, rpc__req__wifi_get_country_code__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_country_code__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_country_code__field_descriptors[2] = { { "resp", @@ -14450,150 +17888,88 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_records__field PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanGetApRecords, resp), + offsetof(RpcRespWifiGetCountryCode, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "number", + "country", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanGetApRecords, number), - NULL, + offsetof(RpcRespWifiGetCountryCode, country), NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "ap_records", - 3, - PROTOBUF_C_LABEL_REPEATED, - PROTOBUF_C_TYPE_MESSAGE, - offsetof(RpcRespWifiScanGetApRecords, n_ap_records), - offsetof(RpcRespWifiScanGetApRecords, ap_records), - &wifi_ap_record__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_scan_get_ap_records__field_indices_by_name[] = { - 2, /* field[2] = ap_records */ - 1, /* field[1] = number */ +static const unsigned rpc__resp__wifi_get_country_code__field_indices_by_name[] = { + 1, /* field[1] = country */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_scan_get_ap_records__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_country_code__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 3 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_scan_get_ap_records__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiScanGetApRecords", - "RpcRespWifiScanGetApRecords", - "RpcRespWifiScanGetApRecords", - "", - sizeof(RpcRespWifiScanGetApRecords), - 3, - rpc__resp__wifi_scan_get_ap_records__field_descriptors, - rpc__resp__wifi_scan_get_ap_records__field_indices_by_name, - 1, rpc__resp__wifi_scan_get_ap_records__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_scan_get_ap_records__init, - NULL,NULL,NULL /* reserved[123] */ + { 0, 2 } }; -#define rpc__req__wifi_scan_get_ap_record__field_descriptors NULL -#define rpc__req__wifi_scan_get_ap_record__field_indices_by_name NULL -#define rpc__req__wifi_scan_get_ap_record__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_scan_get_ap_record__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_country_code__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiScanGetApRecord", - "RpcReqWifiScanGetApRecord", - "RpcReqWifiScanGetApRecord", + "Rpc_Resp_WifiGetCountryCode", + "RpcRespWifiGetCountryCode", + "RpcRespWifiGetCountryCode", "", - sizeof(RpcReqWifiScanGetApRecord), - 0, - rpc__req__wifi_scan_get_ap_record__field_descriptors, - rpc__req__wifi_scan_get_ap_record__field_indices_by_name, - 0, rpc__req__wifi_scan_get_ap_record__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_scan_get_ap_record__init, + sizeof(RpcRespWifiGetCountryCode), + 2, + rpc__resp__wifi_get_country_code__field_descriptors, + rpc__resp__wifi_get_country_code__field_indices_by_name, + 1, rpc__resp__wifi_get_country_code__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_country_code__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_record__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_country__field_descriptors[1] = { - { - "resp", - 1, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanGetApRecord, resp), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "ap_record", - 2, + { + "country", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanGetApRecord, ap_record), - &wifi_ap_record__descriptor, + offsetof(RpcReqWifiSetCountry, country), + &wifi_country__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_scan_get_ap_record__field_indices_by_name[] = { - 1, /* field[1] = ap_record */ - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_set_country__field_indices_by_name[] = { + 0, /* field[0] = country */ }; -static const ProtobufCIntRange rpc__resp__wifi_scan_get_ap_record__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_country__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_scan_get_ap_record__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiScanGetApRecord", - "RpcRespWifiScanGetApRecord", - "RpcRespWifiScanGetApRecord", - "", - sizeof(RpcRespWifiScanGetApRecord), - 2, - rpc__resp__wifi_scan_get_ap_record__field_descriptors, - rpc__resp__wifi_scan_get_ap_record__field_indices_by_name, - 1, rpc__resp__wifi_scan_get_ap_record__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_scan_get_ap_record__init, - NULL,NULL,NULL /* reserved[123] */ + { 0, 1 } }; -#define rpc__req__wifi_clear_ap_list__field_descriptors NULL -#define rpc__req__wifi_clear_ap_list__field_indices_by_name NULL -#define rpc__req__wifi_clear_ap_list__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_clear_ap_list__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_country__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiClearApList", - "RpcReqWifiClearApList", - "RpcReqWifiClearApList", + "Rpc_Req_WifiSetCountry", + "RpcReqWifiSetCountry", + "RpcReqWifiSetCountry", "", - sizeof(RpcReqWifiClearApList), - 0, - rpc__req__wifi_clear_ap_list__field_descriptors, - rpc__req__wifi_clear_ap_list__field_indices_by_name, - 0, rpc__req__wifi_clear_ap_list__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_clear_ap_list__init, + sizeof(RpcReqWifiSetCountry), + 1, + rpc__req__wifi_set_country__field_descriptors, + rpc__req__wifi_set_country__field_indices_by_name, + 1, rpc__req__wifi_set_country__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_country__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_clear_ap_list__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_country__field_descriptors[1] = { { "resp", @@ -14601,55 +17977,55 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_clear_ap_list__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiClearApList, resp), + offsetof(RpcRespWifiSetCountry, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_clear_ap_list__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_set_country__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_clear_ap_list__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_country__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_clear_ap_list__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_country__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiClearApList", - "RpcRespWifiClearApList", - "RpcRespWifiClearApList", + "Rpc_Resp_WifiSetCountry", + "RpcRespWifiSetCountry", + "RpcRespWifiSetCountry", "", - sizeof(RpcRespWifiClearApList), + sizeof(RpcRespWifiSetCountry), 1, - rpc__resp__wifi_clear_ap_list__field_descriptors, - rpc__resp__wifi_clear_ap_list__field_indices_by_name, - 1, rpc__resp__wifi_clear_ap_list__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_clear_ap_list__init, + rpc__resp__wifi_set_country__field_descriptors, + rpc__resp__wifi_set_country__field_indices_by_name, + 1, rpc__resp__wifi_set_country__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_country__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_restore__field_descriptors NULL -#define rpc__req__wifi_restore__field_indices_by_name NULL -#define rpc__req__wifi_restore__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_restore__descriptor = +#define rpc__req__wifi_get_country__field_descriptors NULL +#define rpc__req__wifi_get_country__field_indices_by_name NULL +#define rpc__req__wifi_get_country__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_get_country__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiRestore", - "RpcReqWifiRestore", - "RpcReqWifiRestore", + "Rpc_Req_WifiGetCountry", + "RpcReqWifiGetCountry", + "RpcReqWifiGetCountry", "", - sizeof(RpcReqWifiRestore), + sizeof(RpcReqWifiGetCountry), 0, - rpc__req__wifi_restore__field_descriptors, - rpc__req__wifi_restore__field_indices_by_name, - 0, rpc__req__wifi_restore__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_restore__init, + rpc__req__wifi_get_country__field_descriptors, + rpc__req__wifi_get_country__field_indices_by_name, + 0, rpc__req__wifi_get_country__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_country__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_restore__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_country__field_descriptors[2] = { { "resp", @@ -14657,55 +18033,68 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_restore__field_descriptors PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiRestore, resp), + offsetof(RpcRespWifiGetCountry, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "country", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiGetCountry, country), + &wifi_country__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, }; -static const unsigned rpc__resp__wifi_restore__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_get_country__field_indices_by_name[] = { + 1, /* field[1] = country */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_restore__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_country__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_restore__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_country__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiRestore", - "RpcRespWifiRestore", - "RpcRespWifiRestore", + "Rpc_Resp_WifiGetCountry", + "RpcRespWifiGetCountry", + "RpcRespWifiGetCountry", "", - sizeof(RpcRespWifiRestore), - 1, - rpc__resp__wifi_restore__field_descriptors, - rpc__resp__wifi_restore__field_indices_by_name, - 1, rpc__resp__wifi_restore__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_restore__init, + sizeof(RpcRespWifiGetCountry), + 2, + rpc__resp__wifi_get_country__field_descriptors, + rpc__resp__wifi_get_country__field_indices_by_name, + 1, rpc__resp__wifi_get_country__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_country__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_clear_fast_connect__field_descriptors NULL -#define rpc__req__wifi_clear_fast_connect__field_indices_by_name NULL -#define rpc__req__wifi_clear_fast_connect__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_clear_fast_connect__descriptor = +#define rpc__req__wifi_ap_get_sta_list__field_descriptors NULL +#define rpc__req__wifi_ap_get_sta_list__field_indices_by_name NULL +#define rpc__req__wifi_ap_get_sta_list__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_ap_get_sta_list__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiClearFastConnect", - "RpcReqWifiClearFastConnect", - "RpcReqWifiClearFastConnect", + "Rpc_Req_WifiApGetStaList", + "RpcReqWifiApGetStaList", + "RpcReqWifiApGetStaList", "", - sizeof(RpcReqWifiClearFastConnect), + sizeof(RpcReqWifiApGetStaList), 0, - rpc__req__wifi_clear_fast_connect__field_descriptors, - rpc__req__wifi_clear_fast_connect__field_indices_by_name, - 0, rpc__req__wifi_clear_fast_connect__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_clear_fast_connect__init, + rpc__req__wifi_ap_get_sta_list__field_descriptors, + rpc__req__wifi_ap_get_sta_list__field_indices_by_name, + 0, rpc__req__wifi_ap_get_sta_list__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_ap_get_sta_list__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_clear_fast_connect__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_ap_get_sta_list__field_descriptors[2] = { { "resp", @@ -14713,144 +18102,106 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_clear_fast_connect__field_ PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiClearFastConnect, resp), + offsetof(RpcRespWifiApGetStaList, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__resp__wifi_clear_fast_connect__field_indices_by_name[] = { - 0, /* field[0] = resp */ -}; -static const ProtobufCIntRange rpc__resp__wifi_clear_fast_connect__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_clear_fast_connect__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiClearFastConnect", - "RpcRespWifiClearFastConnect", - "RpcRespWifiClearFastConnect", - "", - sizeof(RpcRespWifiClearFastConnect), - 1, - rpc__resp__wifi_clear_fast_connect__field_descriptors, - rpc__resp__wifi_clear_fast_connect__field_indices_by_name, - 1, rpc__resp__wifi_clear_fast_connect__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_clear_fast_connect__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__req__wifi_deauth_sta__field_descriptors[1] = -{ { - "aid", - 1, + "sta_list", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcReqWifiDeauthSta, aid), - NULL, + offsetof(RpcRespWifiApGetStaList, sta_list), + &wifi_sta_list__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_deauth_sta__field_indices_by_name[] = { - 0, /* field[0] = aid */ +static const unsigned rpc__resp__wifi_ap_get_sta_list__field_indices_by_name[] = { + 0, /* field[0] = resp */ + 1, /* field[1] = sta_list */ }; -static const ProtobufCIntRange rpc__req__wifi_deauth_sta__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_ap_get_sta_list__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_deauth_sta__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_ap_get_sta_list__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiDeauthSta", - "RpcReqWifiDeauthSta", - "RpcReqWifiDeauthSta", + "Rpc_Resp_WifiApGetStaList", + "RpcRespWifiApGetStaList", + "RpcRespWifiApGetStaList", "", - sizeof(RpcReqWifiDeauthSta), - 1, - rpc__req__wifi_deauth_sta__field_descriptors, - rpc__req__wifi_deauth_sta__field_indices_by_name, - 1, rpc__req__wifi_deauth_sta__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_deauth_sta__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__resp__wifi_deauth_sta__field_descriptors[2] = -{ - { - "resp", - 1, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiDeauthSta, resp), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, + sizeof(RpcRespWifiApGetStaList), + 2, + rpc__resp__wifi_ap_get_sta_list__field_descriptors, + rpc__resp__wifi_ap_get_sta_list__field_indices_by_name, + 1, rpc__resp__wifi_ap_get_sta_list__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_ap_get_sta_list__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__wifi_ap_get_sta_aid__field_descriptors[1] = +{ { - "aid", - 2, + "mac", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcRespWifiDeauthSta, aid), + offsetof(RpcReqWifiApGetStaAid, mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_deauth_sta__field_indices_by_name[] = { - 1, /* field[1] = aid */ - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_ap_get_sta_aid__field_indices_by_name[] = { + 0, /* field[0] = mac */ }; -static const ProtobufCIntRange rpc__resp__wifi_deauth_sta__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_ap_get_sta_aid__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_deauth_sta__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_ap_get_sta_aid__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiDeauthSta", - "RpcRespWifiDeauthSta", - "RpcRespWifiDeauthSta", + "Rpc_Req_WifiApGetStaAid", + "RpcReqWifiApGetStaAid", + "RpcReqWifiApGetStaAid", "", - sizeof(RpcRespWifiDeauthSta), - 2, - rpc__resp__wifi_deauth_sta__field_descriptors, - rpc__resp__wifi_deauth_sta__field_indices_by_name, - 1, rpc__resp__wifi_deauth_sta__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_deauth_sta__init, + sizeof(RpcReqWifiApGetStaAid), + 1, + rpc__req__wifi_ap_get_sta_aid__field_descriptors, + rpc__req__wifi_ap_get_sta_aid__field_indices_by_name, + 1, rpc__req__wifi_ap_get_sta_aid__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_ap_get_sta_aid__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_sta_get_ap_info__field_descriptors NULL -#define rpc__req__wifi_sta_get_ap_info__field_indices_by_name NULL -#define rpc__req__wifi_sta_get_ap_info__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_ap_info__descriptor = +#define rpc__req__wifi_sta_get_negotiated_phymode__field_descriptors NULL +#define rpc__req__wifi_sta_get_negotiated_phymode__field_indices_by_name NULL +#define rpc__req__wifi_sta_get_negotiated_phymode__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_negotiated_phymode__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaGetApInfo", - "RpcReqWifiStaGetApInfo", - "RpcReqWifiStaGetApInfo", + "Rpc_Req_WifiStaGetNegotiatedPhymode", + "RpcReqWifiStaGetNegotiatedPhymode", + "RpcReqWifiStaGetNegotiatedPhymode", "", - sizeof(RpcReqWifiStaGetApInfo), + sizeof(RpcReqWifiStaGetNegotiatedPhymode), 0, - rpc__req__wifi_sta_get_ap_info__field_descriptors, - rpc__req__wifi_sta_get_ap_info__field_indices_by_name, - 0, rpc__req__wifi_sta_get_ap_info__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_get_ap_info__init, + rpc__req__wifi_sta_get_negotiated_phymode__field_descriptors, + rpc__req__wifi_sta_get_negotiated_phymode__field_indices_by_name, + 0, rpc__req__wifi_sta_get_negotiated_phymode__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_get_negotiated_phymode__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_ap_info__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_negotiated_phymode__field_descriptors[2] = { { "resp", @@ -14858,101 +18209,119 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_ap_info__field_des PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetApInfo, resp), + offsetof(RpcRespWifiStaGetNegotiatedPhymode, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ap_record", + "phymode", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetApInfo, ap_record), - &wifi_ap_record__descriptor, + offsetof(RpcRespWifiStaGetNegotiatedPhymode, phymode), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_get_ap_info__field_indices_by_name[] = { - 1, /* field[1] = ap_record */ +static const unsigned rpc__resp__wifi_sta_get_negotiated_phymode__field_indices_by_name[] = { + 1, /* field[1] = phymode */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_get_ap_info__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_get_negotiated_phymode__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_ap_info__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_negotiated_phymode__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaGetApInfo", - "RpcRespWifiStaGetApInfo", - "RpcRespWifiStaGetApInfo", + "Rpc_Resp_WifiStaGetNegotiatedPhymode", + "RpcRespWifiStaGetNegotiatedPhymode", + "RpcRespWifiStaGetNegotiatedPhymode", "", - sizeof(RpcRespWifiStaGetApInfo), + sizeof(RpcRespWifiStaGetNegotiatedPhymode), 2, - rpc__resp__wifi_sta_get_ap_info__field_descriptors, - rpc__resp__wifi_sta_get_ap_info__field_indices_by_name, - 1, rpc__resp__wifi_sta_get_ap_info__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_get_ap_info__init, + rpc__resp__wifi_sta_get_negotiated_phymode__field_descriptors, + rpc__resp__wifi_sta_get_negotiated_phymode__field_indices_by_name, + 1, rpc__resp__wifi_sta_get_negotiated_phymode__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_get_negotiated_phymode__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_protocol__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_ap_get_sta_aid__field_descriptors[2] = { { - "ifx", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetProtocol, ifx), + offsetof(RpcRespWifiApGetStaAid, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "protocol_bitmap", + "aid", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetProtocol, protocol_bitmap), + offsetof(RpcRespWifiApGetStaAid, aid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_protocol__field_indices_by_name[] = { - 0, /* field[0] = ifx */ - 1, /* field[1] = protocol_bitmap */ +static const unsigned rpc__resp__wifi_ap_get_sta_aid__field_indices_by_name[] = { + 1, /* field[1] = aid */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_set_protocol__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_ap_get_sta_aid__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_protocol__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_ap_get_sta_aid__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetProtocol", - "RpcReqWifiSetProtocol", - "RpcReqWifiSetProtocol", + "Rpc_Resp_WifiApGetStaAid", + "RpcRespWifiApGetStaAid", + "RpcRespWifiApGetStaAid", "", - sizeof(RpcReqWifiSetProtocol), + sizeof(RpcRespWifiApGetStaAid), 2, - rpc__req__wifi_set_protocol__field_descriptors, - rpc__req__wifi_set_protocol__field_indices_by_name, - 1, rpc__req__wifi_set_protocol__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_protocol__init, + rpc__resp__wifi_ap_get_sta_aid__field_descriptors, + rpc__resp__wifi_ap_get_sta_aid__field_indices_by_name, + 1, rpc__resp__wifi_ap_get_sta_aid__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_ap_get_sta_aid__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_protocol__field_descriptors[1] = +#define rpc__req__wifi_sta_get_rssi__field_descriptors NULL +#define rpc__req__wifi_sta_get_rssi__field_indices_by_name NULL +#define rpc__req__wifi_sta_get_rssi__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_rssi__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStaGetRssi", + "RpcReqWifiStaGetRssi", + "RpcReqWifiStaGetRssi", + "", + sizeof(RpcReqWifiStaGetRssi), + 0, + rpc__req__wifi_sta_get_rssi__field_descriptors, + rpc__req__wifi_sta_get_rssi__field_indices_by_name, + 0, rpc__req__wifi_sta_get_rssi__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_get_rssi__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_rssi__field_descriptors[2] = { { "resp", @@ -14960,75 +18329,68 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_protocol__field_descri PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetProtocol, resp), + offsetof(RpcRespWifiStaGetRssi, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__resp__wifi_set_protocol__field_indices_by_name[] = { - 0, /* field[0] = resp */ -}; -static const ProtobufCIntRange rpc__resp__wifi_set_protocol__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_protocol__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetProtocol", - "RpcRespWifiSetProtocol", - "RpcRespWifiSetProtocol", - "", - sizeof(RpcRespWifiSetProtocol), - 1, - rpc__resp__wifi_set_protocol__field_descriptors, - rpc__resp__wifi_set_protocol__field_indices_by_name, - 1, rpc__resp__wifi_set_protocol__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_protocol__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__req__wifi_get_protocol__field_descriptors[1] = -{ { - "ifx", - 1, + "rssi", + 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiGetProtocol, ifx), + offsetof(RpcRespWifiStaGetRssi, rssi), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_get_protocol__field_indices_by_name[] = { - 0, /* field[0] = ifx */ +static const unsigned rpc__resp__wifi_sta_get_rssi__field_indices_by_name[] = { + 0, /* field[0] = resp */ + 1, /* field[1] = rssi */ }; -static const ProtobufCIntRange rpc__req__wifi_get_protocol__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_get_rssi__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_get_protocol__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_rssi__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetProtocol", - "RpcReqWifiGetProtocol", - "RpcReqWifiGetProtocol", + "Rpc_Resp_WifiStaGetRssi", + "RpcRespWifiStaGetRssi", + "RpcRespWifiStaGetRssi", "", - sizeof(RpcReqWifiGetProtocol), - 1, - rpc__req__wifi_get_protocol__field_descriptors, - rpc__req__wifi_get_protocol__field_indices_by_name, - 1, rpc__req__wifi_get_protocol__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_protocol__init, + sizeof(RpcRespWifiStaGetRssi), + 2, + rpc__resp__wifi_sta_get_rssi__field_descriptors, + rpc__resp__wifi_sta_get_rssi__field_indices_by_name, + 1, rpc__resp__wifi_sta_get_rssi__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_get_rssi__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_protocol__field_descriptors[2] = +#define rpc__req__wifi_sta_get_aid__field_descriptors NULL +#define rpc__req__wifi_sta_get_aid__field_indices_by_name NULL +#define rpc__req__wifi_sta_get_aid__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_aid__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStaGetAid", + "RpcReqWifiStaGetAid", + "RpcReqWifiStaGetAid", + "", + sizeof(RpcReqWifiStaGetAid), + 0, + rpc__req__wifi_sta_get_aid__field_descriptors, + rpc__req__wifi_sta_get_aid__field_indices_by_name, + 0, rpc__req__wifi_sta_get_aid__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_get_aid__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_aid__field_descriptors[2] = { { "resp", @@ -15036,50 +18398,50 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_protocol__field_descri PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetProtocol, resp), + offsetof(RpcRespWifiStaGetAid, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "protocol_bitmap", + "aid", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetProtocol, protocol_bitmap), + offsetof(RpcRespWifiStaGetAid, aid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_protocol__field_indices_by_name[] = { - 1, /* field[1] = protocol_bitmap */ +static const unsigned rpc__resp__wifi_sta_get_aid__field_indices_by_name[] = { + 1, /* field[1] = aid */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_protocol__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_get_aid__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_protocol__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_aid__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetProtocol", - "RpcRespWifiGetProtocol", - "RpcRespWifiGetProtocol", + "Rpc_Resp_WifiStaGetAid", + "RpcRespWifiStaGetAid", + "RpcRespWifiStaGetAid", "", - sizeof(RpcRespWifiGetProtocol), + sizeof(RpcRespWifiStaGetAid), 2, - rpc__resp__wifi_get_protocol__field_descriptors, - rpc__resp__wifi_get_protocol__field_indices_by_name, - 1, rpc__resp__wifi_get_protocol__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_protocol__init, + rpc__resp__wifi_sta_get_aid__field_descriptors, + rpc__resp__wifi_sta_get_aid__field_indices_by_name, + 1, rpc__resp__wifi_sta_get_aid__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_get_aid__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_bandwidth__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_protocols__field_descriptors[2] = { { "ifx", @@ -15087,50 +18449,50 @@ static const ProtobufCFieldDescriptor rpc__req__wifi_set_bandwidth__field_descri PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetBandwidth, ifx), + offsetof(RpcReqWifiSetProtocols, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "bw", + "protocols", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetBandwidth, bw), - NULL, + offsetof(RpcReqWifiSetProtocols, protocols), + &wifi_protocols__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_bandwidth__field_indices_by_name[] = { - 1, /* field[1] = bw */ +static const unsigned rpc__req__wifi_set_protocols__field_indices_by_name[] = { 0, /* field[0] = ifx */ + 1, /* field[1] = protocols */ }; -static const ProtobufCIntRange rpc__req__wifi_set_bandwidth__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_protocols__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_bandwidth__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_protocols__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetBandwidth", - "RpcReqWifiSetBandwidth", - "RpcReqWifiSetBandwidth", + "Rpc_Req_WifiSetProtocols", + "RpcReqWifiSetProtocols", + "RpcReqWifiSetProtocols", "", - sizeof(RpcReqWifiSetBandwidth), + sizeof(RpcReqWifiSetProtocols), 2, - rpc__req__wifi_set_bandwidth__field_descriptors, - rpc__req__wifi_set_bandwidth__field_indices_by_name, - 1, rpc__req__wifi_set_bandwidth__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_bandwidth__init, + rpc__req__wifi_set_protocols__field_descriptors, + rpc__req__wifi_set_protocols__field_indices_by_name, + 1, rpc__req__wifi_set_protocols__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_protocols__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_bandwidth__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_protocols__field_descriptors[2] = { { "resp", @@ -15138,37 +18500,50 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_bandwidth__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetBandwidth, resp), + offsetof(RpcRespWifiSetProtocols, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ifx", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiSetProtocols, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_bandwidth__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_set_protocols__field_indices_by_name[] = { + 1, /* field[1] = ifx */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_bandwidth__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_protocols__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_bandwidth__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_protocols__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetBandwidth", - "RpcRespWifiSetBandwidth", - "RpcRespWifiSetBandwidth", + "Rpc_Resp_WifiSetProtocols", + "RpcRespWifiSetProtocols", + "RpcRespWifiSetProtocols", "", - sizeof(RpcRespWifiSetBandwidth), - 1, - rpc__resp__wifi_set_bandwidth__field_descriptors, - rpc__resp__wifi_set_bandwidth__field_indices_by_name, - 1, rpc__resp__wifi_set_bandwidth__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_bandwidth__init, + sizeof(RpcRespWifiSetProtocols), + 2, + rpc__resp__wifi_set_protocols__field_descriptors, + rpc__resp__wifi_set_protocols__field_indices_by_name, + 1, rpc__resp__wifi_set_protocols__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_protocols__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_get_bandwidth__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_get_protocols__field_descriptors[1] = { { "ifx", @@ -15176,37 +18551,37 @@ static const ProtobufCFieldDescriptor rpc__req__wifi_get_bandwidth__field_descri PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiGetBandwidth, ifx), + offsetof(RpcReqWifiGetProtocols, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_get_bandwidth__field_indices_by_name[] = { +static const unsigned rpc__req__wifi_get_protocols__field_indices_by_name[] = { 0, /* field[0] = ifx */ }; -static const ProtobufCIntRange rpc__req__wifi_get_bandwidth__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_get_protocols__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_get_bandwidth__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_get_protocols__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetBandwidth", - "RpcReqWifiGetBandwidth", - "RpcReqWifiGetBandwidth", + "Rpc_Req_WifiGetProtocols", + "RpcReqWifiGetProtocols", + "RpcReqWifiGetProtocols", "", - sizeof(RpcReqWifiGetBandwidth), + sizeof(RpcReqWifiGetProtocols), 1, - rpc__req__wifi_get_bandwidth__field_descriptors, - rpc__req__wifi_get_bandwidth__field_indices_by_name, - 1, rpc__req__wifi_get_bandwidth__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_bandwidth__init, + rpc__req__wifi_get_protocols__field_descriptors, + rpc__req__wifi_get_protocols__field_indices_by_name, + 1, rpc__req__wifi_get_protocols__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_protocols__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_bandwidth__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_protocols__field_descriptors[3] = { { "resp", @@ -15214,157 +18589,114 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_bandwidth__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBandwidth, resp), + offsetof(RpcRespWifiGetProtocols, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "bw", + "ifx", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBandwidth, bw), + offsetof(RpcRespWifiGetProtocols, ifx), + NULL, NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "protocols", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiGetProtocols, protocols), + &wifi_protocols__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_bandwidth__field_indices_by_name[] = { - 1, /* field[1] = bw */ +static const unsigned rpc__resp__wifi_get_protocols__field_indices_by_name[] = { + 1, /* field[1] = ifx */ + 2, /* field[2] = protocols */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_bandwidth__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_protocols__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 3 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_bandwidth__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_protocols__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetBandwidth", - "RpcRespWifiGetBandwidth", - "RpcRespWifiGetBandwidth", + "Rpc_Resp_WifiGetProtocols", + "RpcRespWifiGetProtocols", + "RpcRespWifiGetProtocols", "", - sizeof(RpcRespWifiGetBandwidth), - 2, - rpc__resp__wifi_get_bandwidth__field_descriptors, - rpc__resp__wifi_get_bandwidth__field_indices_by_name, - 1, rpc__resp__wifi_get_bandwidth__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_bandwidth__init, + sizeof(RpcRespWifiGetProtocols), + 3, + rpc__resp__wifi_get_protocols__field_descriptors, + rpc__resp__wifi_get_protocols__field_indices_by_name, + 1, rpc__resp__wifi_get_protocols__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_protocols__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_channel__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_bandwidths__field_descriptors[2] = { { - "primary", + "ifx", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetChannel, primary), + offsetof(RpcReqWifiSetBandwidths, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "second", + "bandwidths", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetChannel, second), - NULL, + offsetof(RpcReqWifiSetBandwidths, bandwidths), + &wifi_bandwidths__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_channel__field_indices_by_name[] = { - 0, /* field[0] = primary */ - 1, /* field[1] = second */ +static const unsigned rpc__req__wifi_set_bandwidths__field_indices_by_name[] = { + 1, /* field[1] = bandwidths */ + 0, /* field[0] = ifx */ }; -static const ProtobufCIntRange rpc__req__wifi_set_channel__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_bandwidths__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_channel__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetChannel", - "RpcReqWifiSetChannel", - "RpcReqWifiSetChannel", - "", - sizeof(RpcReqWifiSetChannel), - 2, - rpc__req__wifi_set_channel__field_descriptors, - rpc__req__wifi_set_channel__field_indices_by_name, - 1, rpc__req__wifi_set_channel__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_channel__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_channel__field_descriptors[1] = -{ - { - "resp", - 1, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetChannel, resp), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, -}; -static const unsigned rpc__resp__wifi_set_channel__field_indices_by_name[] = { - 0, /* field[0] = resp */ -}; -static const ProtobufCIntRange rpc__resp__wifi_set_channel__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_channel__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetChannel", - "RpcRespWifiSetChannel", - "RpcRespWifiSetChannel", - "", - sizeof(RpcRespWifiSetChannel), - 1, - rpc__resp__wifi_set_channel__field_descriptors, - rpc__resp__wifi_set_channel__field_indices_by_name, - 1, rpc__resp__wifi_set_channel__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_channel__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_get_channel__field_descriptors NULL -#define rpc__req__wifi_get_channel__field_indices_by_name NULL -#define rpc__req__wifi_get_channel__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_get_channel__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_bandwidths__descriptor = { - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetChannel", - "RpcReqWifiGetChannel", - "RpcReqWifiGetChannel", + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiSetBandwidths", + "RpcReqWifiSetBandwidths", + "RpcReqWifiSetBandwidths", "", - sizeof(RpcReqWifiGetChannel), - 0, - rpc__req__wifi_get_channel__field_descriptors, - rpc__req__wifi_get_channel__field_indices_by_name, - 0, rpc__req__wifi_get_channel__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_channel__init, + sizeof(RpcReqWifiSetBandwidths), + 2, + rpc__req__wifi_set_bandwidths__field_descriptors, + rpc__req__wifi_set_bandwidths__field_indices_by_name, + 1, rpc__req__wifi_set_bandwidths__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_bandwidths__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_channel__field_descriptors[3] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_bandwidths__field_descriptors[2] = { { "resp", @@ -15372,101 +18704,88 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_channel__field_descrip PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetChannel, resp), + offsetof(RpcRespWifiSetBandwidths, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "primary", + "ifx", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetChannel, primary), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "second", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetChannel, second), + offsetof(RpcRespWifiSetBandwidths, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_channel__field_indices_by_name[] = { - 1, /* field[1] = primary */ +static const unsigned rpc__resp__wifi_set_bandwidths__field_indices_by_name[] = { + 1, /* field[1] = ifx */ 0, /* field[0] = resp */ - 2, /* field[2] = second */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_channel__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_bandwidths__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 3 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_channel__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_bandwidths__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetChannel", - "RpcRespWifiGetChannel", - "RpcRespWifiGetChannel", + "Rpc_Resp_WifiSetBandwidths", + "RpcRespWifiSetBandwidths", + "RpcRespWifiSetBandwidths", "", - sizeof(RpcRespWifiGetChannel), - 3, - rpc__resp__wifi_get_channel__field_descriptors, - rpc__resp__wifi_get_channel__field_indices_by_name, - 1, rpc__resp__wifi_get_channel__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_channel__init, + sizeof(RpcRespWifiSetBandwidths), + 2, + rpc__resp__wifi_set_bandwidths__field_descriptors, + rpc__resp__wifi_set_bandwidths__field_indices_by_name, + 1, rpc__resp__wifi_set_bandwidths__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_bandwidths__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_storage__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_get_bandwidths__field_descriptors[1] = { { - "storage", + "ifx", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetStorage, storage), + offsetof(RpcReqWifiGetBandwidths, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_storage__field_indices_by_name[] = { - 0, /* field[0] = storage */ +static const unsigned rpc__req__wifi_get_bandwidths__field_indices_by_name[] = { + 0, /* field[0] = ifx */ }; -static const ProtobufCIntRange rpc__req__wifi_set_storage__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_get_bandwidths__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_storage__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_get_bandwidths__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetStorage", - "RpcReqWifiSetStorage", - "RpcReqWifiSetStorage", + "Rpc_Req_WifiGetBandwidths", + "RpcReqWifiGetBandwidths", + "RpcReqWifiGetBandwidths", "", - sizeof(RpcReqWifiSetStorage), + sizeof(RpcReqWifiGetBandwidths), 1, - rpc__req__wifi_set_storage__field_descriptors, - rpc__req__wifi_set_storage__field_indices_by_name, - 1, rpc__req__wifi_set_storage__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_storage__init, + rpc__req__wifi_get_bandwidths__field_descriptors, + rpc__req__wifi_get_bandwidths__field_indices_by_name, + 1, rpc__req__wifi_get_bandwidths__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_bandwidths__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_storage__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_bandwidths__field_descriptors[3] = { { "resp", @@ -15474,88 +18793,101 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_storage__field_descrip PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetStorage, resp), + offsetof(RpcRespWifiGetBandwidths, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ifx", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiGetBandwidths, ifx), + NULL, NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "bandwidths", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiGetBandwidths, bandwidths), + &wifi_bandwidths__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_storage__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_get_bandwidths__field_indices_by_name[] = { + 2, /* field[2] = bandwidths */ + 1, /* field[1] = ifx */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_storage__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_bandwidths__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 3 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_storage__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_bandwidths__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetStorage", - "RpcRespWifiSetStorage", - "RpcRespWifiSetStorage", + "Rpc_Resp_WifiGetBandwidths", + "RpcRespWifiGetBandwidths", + "RpcRespWifiGetBandwidths", "", - sizeof(RpcRespWifiSetStorage), - 1, - rpc__resp__wifi_set_storage__field_descriptors, - rpc__resp__wifi_set_storage__field_indices_by_name, - 1, rpc__resp__wifi_set_storage__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_storage__init, + sizeof(RpcRespWifiGetBandwidths), + 3, + rpc__resp__wifi_get_bandwidths__field_descriptors, + rpc__resp__wifi_get_bandwidths__field_indices_by_name, + 1, rpc__resp__wifi_get_bandwidths__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_bandwidths__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_country_code__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_band__field_descriptors[1] = { { - "country", + "band", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, - 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetCountryCode, country), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "ieee80211d_enabled", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetCountryCode, ieee80211d_enabled), + offsetof(RpcReqWifiSetBand, band), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_country_code__field_indices_by_name[] = { - 0, /* field[0] = country */ - 1, /* field[1] = ieee80211d_enabled */ +static const unsigned rpc__req__wifi_set_band__field_indices_by_name[] = { + 0, /* field[0] = band */ }; -static const ProtobufCIntRange rpc__req__wifi_set_country_code__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_band__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_country_code__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_band__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetCountryCode", - "RpcReqWifiSetCountryCode", - "RpcReqWifiSetCountryCode", + "Rpc_Req_WifiSetBand", + "RpcReqWifiSetBand", + "RpcReqWifiSetBand", "", - sizeof(RpcReqWifiSetCountryCode), - 2, - rpc__req__wifi_set_country_code__field_descriptors, - rpc__req__wifi_set_country_code__field_indices_by_name, - 1, rpc__req__wifi_set_country_code__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_country_code__init, + sizeof(RpcReqWifiSetBand), + 1, + rpc__req__wifi_set_band__field_descriptors, + rpc__req__wifi_set_band__field_indices_by_name, + 1, rpc__req__wifi_set_band__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_band__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_country_code__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_band__field_descriptors[1] = { { "resp", @@ -15563,55 +18895,55 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_country_code__field_de PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetCountryCode, resp), + offsetof(RpcRespWifiSetBand, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_country_code__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_set_band__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_country_code__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_band__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_country_code__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_band__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetCountryCode", - "RpcRespWifiSetCountryCode", - "RpcRespWifiSetCountryCode", + "Rpc_Resp_WifiSetBand", + "RpcRespWifiSetBand", + "RpcRespWifiSetBand", "", - sizeof(RpcRespWifiSetCountryCode), + sizeof(RpcRespWifiSetBand), 1, - rpc__resp__wifi_set_country_code__field_descriptors, - rpc__resp__wifi_set_country_code__field_indices_by_name, - 1, rpc__resp__wifi_set_country_code__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_country_code__init, + rpc__resp__wifi_set_band__field_descriptors, + rpc__resp__wifi_set_band__field_indices_by_name, + 1, rpc__resp__wifi_set_band__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_band__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_get_country_code__field_descriptors NULL -#define rpc__req__wifi_get_country_code__field_indices_by_name NULL -#define rpc__req__wifi_get_country_code__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_get_country_code__descriptor = +#define rpc__req__wifi_get_band__field_descriptors NULL +#define rpc__req__wifi_get_band__field_indices_by_name NULL +#define rpc__req__wifi_get_band__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_get_band__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetCountryCode", - "RpcReqWifiGetCountryCode", - "RpcReqWifiGetCountryCode", + "Rpc_Req_WifiGetBand", + "RpcReqWifiGetBand", + "RpcReqWifiGetBand", "", - sizeof(RpcReqWifiGetCountryCode), + sizeof(RpcReqWifiGetBand), 0, - rpc__req__wifi_get_country_code__field_descriptors, - rpc__req__wifi_get_country_code__field_indices_by_name, - 0, rpc__req__wifi_get_country_code__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_country_code__init, + rpc__req__wifi_get_band__field_descriptors, + rpc__req__wifi_get_band__field_indices_by_name, + 0, rpc__req__wifi_get_band__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_band__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_country_code__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_band__field_descriptors[2] = { { "resp", @@ -15619,88 +18951,88 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_country_code__field_de PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetCountryCode, resp), + offsetof(RpcRespWifiGetBand, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "country", + "band", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetCountryCode, country), + offsetof(RpcRespWifiGetBand, band), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_country_code__field_indices_by_name[] = { - 1, /* field[1] = country */ +static const unsigned rpc__resp__wifi_get_band__field_indices_by_name[] = { + 1, /* field[1] = band */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_country_code__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_band__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_country_code__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_band__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetCountryCode", - "RpcRespWifiGetCountryCode", - "RpcRespWifiGetCountryCode", + "Rpc_Resp_WifiGetBand", + "RpcRespWifiGetBand", + "RpcRespWifiGetBand", "", - sizeof(RpcRespWifiGetCountryCode), + sizeof(RpcRespWifiGetBand), 2, - rpc__resp__wifi_get_country_code__field_descriptors, - rpc__resp__wifi_get_country_code__field_indices_by_name, - 1, rpc__resp__wifi_get_country_code__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_country_code__init, + rpc__resp__wifi_get_band__field_descriptors, + rpc__resp__wifi_get_band__field_indices_by_name, + 1, rpc__resp__wifi_get_band__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_band__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_country__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_band_mode__field_descriptors[1] = { { - "country", + "bandmode", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetCountry, country), - &wifi_country__descriptor, + offsetof(RpcReqWifiSetBandMode, bandmode), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_country__field_indices_by_name[] = { - 0, /* field[0] = country */ +static const unsigned rpc__req__wifi_set_band_mode__field_indices_by_name[] = { + 0, /* field[0] = bandmode */ }; -static const ProtobufCIntRange rpc__req__wifi_set_country__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_band_mode__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_country__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_band_mode__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetCountry", - "RpcReqWifiSetCountry", - "RpcReqWifiSetCountry", + "Rpc_Req_WifiSetBandMode", + "RpcReqWifiSetBandMode", + "RpcReqWifiSetBandMode", "", - sizeof(RpcReqWifiSetCountry), + sizeof(RpcReqWifiSetBandMode), 1, - rpc__req__wifi_set_country__field_descriptors, - rpc__req__wifi_set_country__field_indices_by_name, - 1, rpc__req__wifi_set_country__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_country__init, + rpc__req__wifi_set_band_mode__field_descriptors, + rpc__req__wifi_set_band_mode__field_indices_by_name, + 1, rpc__req__wifi_set_band_mode__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_band_mode__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_country__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_band_mode__field_descriptors[1] = { { "resp", @@ -15708,55 +19040,55 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_country__field_descrip PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetCountry, resp), + offsetof(RpcRespWifiSetBandMode, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_country__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_set_band_mode__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_country__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_band_mode__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_country__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_band_mode__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetCountry", - "RpcRespWifiSetCountry", - "RpcRespWifiSetCountry", + "Rpc_Resp_WifiSetBandMode", + "RpcRespWifiSetBandMode", + "RpcRespWifiSetBandMode", "", - sizeof(RpcRespWifiSetCountry), + sizeof(RpcRespWifiSetBandMode), 1, - rpc__resp__wifi_set_country__field_descriptors, - rpc__resp__wifi_set_country__field_indices_by_name, - 1, rpc__resp__wifi_set_country__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_country__init, + rpc__resp__wifi_set_band_mode__field_descriptors, + rpc__resp__wifi_set_band_mode__field_indices_by_name, + 1, rpc__resp__wifi_set_band_mode__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_band_mode__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_get_country__field_descriptors NULL -#define rpc__req__wifi_get_country__field_indices_by_name NULL -#define rpc__req__wifi_get_country__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_get_country__descriptor = +#define rpc__req__wifi_get_band_mode__field_descriptors NULL +#define rpc__req__wifi_get_band_mode__field_indices_by_name NULL +#define rpc__req__wifi_get_band_mode__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_get_band_mode__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetCountry", - "RpcReqWifiGetCountry", - "RpcReqWifiGetCountry", + "Rpc_Req_WifiGetBandMode", + "RpcReqWifiGetBandMode", + "RpcReqWifiGetBandMode", "", - sizeof(RpcReqWifiGetCountry), + sizeof(RpcReqWifiGetBandMode), 0, - rpc__req__wifi_get_country__field_descriptors, - rpc__req__wifi_get_country__field_indices_by_name, - 0, rpc__req__wifi_get_country__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_country__init, + rpc__req__wifi_get_band_mode__field_descriptors, + rpc__req__wifi_get_band_mode__field_indices_by_name, + 0, rpc__req__wifi_get_band_mode__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_band_mode__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_country__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_band_mode__field_descriptors[2] = { { "resp", @@ -15764,175 +19096,177 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_country__field_descrip PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetCountry, resp), + offsetof(RpcRespWifiGetBandMode, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "country", + "bandmode", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetCountry, country), - &wifi_country__descriptor, + offsetof(RpcRespWifiGetBandMode, bandmode), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_country__field_indices_by_name[] = { - 1, /* field[1] = country */ +static const unsigned rpc__resp__wifi_get_band_mode__field_indices_by_name[] = { + 1, /* field[1] = bandmode */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_country__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_band_mode__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_country__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_band_mode__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetCountry", - "RpcRespWifiGetCountry", - "RpcRespWifiGetCountry", + "Rpc_Resp_WifiGetBandMode", + "RpcRespWifiGetBandMode", + "RpcRespWifiGetBandMode", "", - sizeof(RpcRespWifiGetCountry), + sizeof(RpcRespWifiGetBandMode), 2, - rpc__resp__wifi_get_country__field_descriptors, - rpc__resp__wifi_get_country__field_indices_by_name, - 1, rpc__resp__wifi_get_country__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_country__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_ap_get_sta_list__field_descriptors NULL -#define rpc__req__wifi_ap_get_sta_list__field_indices_by_name NULL -#define rpc__req__wifi_ap_get_sta_list__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_ap_get_sta_list__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiApGetStaList", - "RpcReqWifiApGetStaList", - "RpcReqWifiApGetStaList", - "", - sizeof(RpcReqWifiApGetStaList), - 0, - rpc__req__wifi_ap_get_sta_list__field_descriptors, - rpc__req__wifi_ap_get_sta_list__field_indices_by_name, - 0, rpc__req__wifi_ap_get_sta_list__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_ap_get_sta_list__init, + rpc__resp__wifi_get_band_mode__field_descriptors, + rpc__resp__wifi_get_band_mode__field_indices_by_name, + 1, rpc__resp__wifi_get_band_mode__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_band_mode__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_ap_get_sta_list__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_inactive_time__field_descriptors[2] = { { - "resp", + "ifx", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiApGetStaList, resp), + offsetof(RpcReqWifiSetInactiveTime, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "sta_list", + "sec", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiApGetStaList, sta_list), - &wifi_sta_list__descriptor, + offsetof(RpcReqWifiSetInactiveTime, sec), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_ap_get_sta_list__field_indices_by_name[] = { - 0, /* field[0] = resp */ - 1, /* field[1] = sta_list */ +static const unsigned rpc__req__wifi_set_inactive_time__field_indices_by_name[] = { + 0, /* field[0] = ifx */ + 1, /* field[1] = sec */ }; -static const ProtobufCIntRange rpc__resp__wifi_ap_get_sta_list__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_inactive_time__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_ap_get_sta_list__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_inactive_time__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiApGetStaList", - "RpcRespWifiApGetStaList", - "RpcRespWifiApGetStaList", + "Rpc_Req_WifiSetInactiveTime", + "RpcReqWifiSetInactiveTime", + "RpcReqWifiSetInactiveTime", "", - sizeof(RpcRespWifiApGetStaList), + sizeof(RpcReqWifiSetInactiveTime), 2, - rpc__resp__wifi_ap_get_sta_list__field_descriptors, - rpc__resp__wifi_ap_get_sta_list__field_indices_by_name, - 1, rpc__resp__wifi_ap_get_sta_list__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_ap_get_sta_list__init, + rpc__req__wifi_set_inactive_time__field_descriptors, + rpc__req__wifi_set_inactive_time__field_indices_by_name, + 1, rpc__req__wifi_set_inactive_time__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_inactive_time__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_ap_get_sta_aid__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_inactive_time__field_descriptors[1] = { { - "mac", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiApGetStaAid, mac), + offsetof(RpcRespWifiSetInactiveTime, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_ap_get_sta_aid__field_indices_by_name[] = { - 0, /* field[0] = mac */ +static const unsigned rpc__resp__wifi_set_inactive_time__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__wifi_set_inactive_time__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__wifi_set_inactive_time__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_WifiSetInactiveTime", + "RpcRespWifiSetInactiveTime", + "RpcRespWifiSetInactiveTime", + "", + sizeof(RpcRespWifiSetInactiveTime), + 1, + rpc__resp__wifi_set_inactive_time__field_descriptors, + rpc__resp__wifi_set_inactive_time__field_indices_by_name, + 1, rpc__resp__wifi_set_inactive_time__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_inactive_time__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__wifi_get_inactive_time__field_descriptors[1] = +{ + { + "ifx", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(RpcReqWifiGetInactiveTime, ifx), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__req__wifi_get_inactive_time__field_indices_by_name[] = { + 0, /* field[0] = ifx */ }; -static const ProtobufCIntRange rpc__req__wifi_ap_get_sta_aid__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_get_inactive_time__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_ap_get_sta_aid__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_get_inactive_time__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiApGetStaAid", - "RpcReqWifiApGetStaAid", - "RpcReqWifiApGetStaAid", + "Rpc_Req_WifiGetInactiveTime", + "RpcReqWifiGetInactiveTime", + "RpcReqWifiGetInactiveTime", "", - sizeof(RpcReqWifiApGetStaAid), + sizeof(RpcReqWifiGetInactiveTime), 1, - rpc__req__wifi_ap_get_sta_aid__field_descriptors, - rpc__req__wifi_ap_get_sta_aid__field_indices_by_name, - 1, rpc__req__wifi_ap_get_sta_aid__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_ap_get_sta_aid__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_sta_get_negotiated_phymode__field_descriptors NULL -#define rpc__req__wifi_sta_get_negotiated_phymode__field_indices_by_name NULL -#define rpc__req__wifi_sta_get_negotiated_phymode__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_negotiated_phymode__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaGetNegotiatedPhymode", - "RpcReqWifiStaGetNegotiatedPhymode", - "RpcReqWifiStaGetNegotiatedPhymode", - "", - sizeof(RpcReqWifiStaGetNegotiatedPhymode), - 0, - rpc__req__wifi_sta_get_negotiated_phymode__field_descriptors, - rpc__req__wifi_sta_get_negotiated_phymode__field_indices_by_name, - 0, rpc__req__wifi_sta_get_negotiated_phymode__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_get_negotiated_phymode__init, + rpc__req__wifi_get_inactive_time__field_descriptors, + rpc__req__wifi_get_inactive_time__field_indices_by_name, + 1, rpc__req__wifi_get_inactive_time__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_inactive_time__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_negotiated_phymode__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_inactive_time__field_descriptors[2] = { { "resp", @@ -15940,290 +19274,309 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_negotiated_phymode PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetNegotiatedPhymode, resp), + offsetof(RpcRespWifiGetInactiveTime, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "phymode", + "sec", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetNegotiatedPhymode, phymode), + offsetof(RpcRespWifiGetInactiveTime, sec), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_get_negotiated_phymode__field_indices_by_name[] = { - 1, /* field[1] = phymode */ +static const unsigned rpc__resp__wifi_get_inactive_time__field_indices_by_name[] = { 0, /* field[0] = resp */ + 1, /* field[1] = sec */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_get_negotiated_phymode__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_inactive_time__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_negotiated_phymode__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_inactive_time__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaGetNegotiatedPhymode", - "RpcRespWifiStaGetNegotiatedPhymode", - "RpcRespWifiStaGetNegotiatedPhymode", + "Rpc_Resp_WifiGetInactiveTime", + "RpcRespWifiGetInactiveTime", + "RpcRespWifiGetInactiveTime", "", - sizeof(RpcRespWifiStaGetNegotiatedPhymode), + sizeof(RpcRespWifiGetInactiveTime), 2, - rpc__resp__wifi_sta_get_negotiated_phymode__field_descriptors, - rpc__resp__wifi_sta_get_negotiated_phymode__field_indices_by_name, - 1, rpc__resp__wifi_sta_get_negotiated_phymode__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_get_negotiated_phymode__init, + rpc__resp__wifi_get_inactive_time__field_descriptors, + rpc__resp__wifi_get_inactive_time__field_indices_by_name, + 1, rpc__resp__wifi_get_inactive_time__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_inactive_time__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_ap_get_sta_aid__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_setup__field_descriptors[1] = { { - "resp", + "setup_config", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcRespWifiApGetStaAid, resp), - NULL, + offsetof(RpcReqWifiStaItwtSetup, setup_config), + &wifi_itwt_setup_config__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__req__wifi_sta_itwt_setup__field_indices_by_name[] = { + 0, /* field[0] = setup_config */ +}; +static const ProtobufCIntRange rpc__req__wifi_sta_itwt_setup__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_setup__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStaItwtSetup", + "RpcReqWifiStaItwtSetup", + "RpcReqWifiStaItwtSetup", + "", + sizeof(RpcReqWifiStaItwtSetup), + 1, + rpc__req__wifi_sta_itwt_setup__field_descriptors, + rpc__req__wifi_sta_itwt_setup__field_indices_by_name, + 1, rpc__req__wifi_sta_itwt_setup__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_setup__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_setup__field_descriptors[1] = +{ { - "aid", - 2, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiApGetStaAid, aid), + offsetof(RpcRespWifiStaItwtSetup, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_ap_get_sta_aid__field_indices_by_name[] = { - 1, /* field[1] = aid */ +static const unsigned rpc__resp__wifi_sta_itwt_setup__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_ap_get_sta_aid__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_setup__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_ap_get_sta_aid__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiApGetStaAid", - "RpcRespWifiApGetStaAid", - "RpcRespWifiApGetStaAid", - "", - sizeof(RpcRespWifiApGetStaAid), - 2, - rpc__resp__wifi_ap_get_sta_aid__field_descriptors, - rpc__resp__wifi_ap_get_sta_aid__field_indices_by_name, - 1, rpc__resp__wifi_ap_get_sta_aid__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_ap_get_sta_aid__init, - NULL,NULL,NULL /* reserved[123] */ + { 0, 1 } }; -#define rpc__req__wifi_sta_get_rssi__field_descriptors NULL -#define rpc__req__wifi_sta_get_rssi__field_indices_by_name NULL -#define rpc__req__wifi_sta_get_rssi__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_rssi__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_setup__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaGetRssi", - "RpcReqWifiStaGetRssi", - "RpcReqWifiStaGetRssi", + "Rpc_Resp_WifiStaItwtSetup", + "RpcRespWifiStaItwtSetup", + "RpcRespWifiStaItwtSetup", "", - sizeof(RpcReqWifiStaGetRssi), - 0, - rpc__req__wifi_sta_get_rssi__field_descriptors, - rpc__req__wifi_sta_get_rssi__field_indices_by_name, - 0, rpc__req__wifi_sta_get_rssi__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_get_rssi__init, + sizeof(RpcRespWifiStaItwtSetup), + 1, + rpc__resp__wifi_sta_itwt_setup__field_descriptors, + rpc__resp__wifi_sta_itwt_setup__field_indices_by_name, + 1, rpc__resp__wifi_sta_itwt_setup__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_setup__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_rssi__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_teardown__field_descriptors[1] = { { - "resp", + "flow_id", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetRssi, resp), + offsetof(RpcReqWifiStaItwtTeardown, flow_id), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__req__wifi_sta_itwt_teardown__field_indices_by_name[] = { + 0, /* field[0] = flow_id */ +}; +static const ProtobufCIntRange rpc__req__wifi_sta_itwt_teardown__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_teardown__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStaItwtTeardown", + "RpcReqWifiStaItwtTeardown", + "RpcReqWifiStaItwtTeardown", + "", + sizeof(RpcReqWifiStaItwtTeardown), + 1, + rpc__req__wifi_sta_itwt_teardown__field_descriptors, + rpc__req__wifi_sta_itwt_teardown__field_indices_by_name, + 1, rpc__req__wifi_sta_itwt_teardown__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_teardown__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_teardown__field_descriptors[1] = +{ { - "rssi", - 2, + "resp", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetRssi, rssi), + offsetof(RpcRespWifiStaItwtTeardown, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_get_rssi__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_sta_itwt_teardown__field_indices_by_name[] = { 0, /* field[0] = resp */ - 1, /* field[1] = rssi */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_get_rssi__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_teardown__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_rssi__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaGetRssi", - "RpcRespWifiStaGetRssi", - "RpcRespWifiStaGetRssi", - "", - sizeof(RpcRespWifiStaGetRssi), - 2, - rpc__resp__wifi_sta_get_rssi__field_descriptors, - rpc__resp__wifi_sta_get_rssi__field_indices_by_name, - 1, rpc__resp__wifi_sta_get_rssi__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_get_rssi__init, - NULL,NULL,NULL /* reserved[123] */ + { 0, 1 } }; -#define rpc__req__wifi_sta_get_aid__field_descriptors NULL -#define rpc__req__wifi_sta_get_aid__field_indices_by_name NULL -#define rpc__req__wifi_sta_get_aid__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_aid__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_teardown__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaGetAid", - "RpcReqWifiStaGetAid", - "RpcReqWifiStaGetAid", + "Rpc_Resp_WifiStaItwtTeardown", + "RpcRespWifiStaItwtTeardown", + "RpcRespWifiStaItwtTeardown", "", - sizeof(RpcReqWifiStaGetAid), - 0, - rpc__req__wifi_sta_get_aid__field_descriptors, - rpc__req__wifi_sta_get_aid__field_indices_by_name, - 0, rpc__req__wifi_sta_get_aid__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_get_aid__init, + sizeof(RpcRespWifiStaItwtTeardown), + 1, + rpc__resp__wifi_sta_itwt_teardown__field_descriptors, + rpc__resp__wifi_sta_itwt_teardown__field_indices_by_name, + 1, rpc__resp__wifi_sta_itwt_teardown__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_teardown__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_aid__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_suspend__field_descriptors[2] = { { - "resp", + "flow_id", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetAid, resp), + offsetof(RpcReqWifiStaItwtSuspend, flow_id), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "aid", + "suspend_time_ms", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetAid, aid), + offsetof(RpcReqWifiStaItwtSuspend, suspend_time_ms), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_get_aid__field_indices_by_name[] = { - 1, /* field[1] = aid */ - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_sta_itwt_suspend__field_indices_by_name[] = { + 0, /* field[0] = flow_id */ + 1, /* field[1] = suspend_time_ms */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_get_aid__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_sta_itwt_suspend__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_aid__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_suspend__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaGetAid", - "RpcRespWifiStaGetAid", - "RpcRespWifiStaGetAid", + "Rpc_Req_WifiStaItwtSuspend", + "RpcReqWifiStaItwtSuspend", + "RpcReqWifiStaItwtSuspend", "", - sizeof(RpcRespWifiStaGetAid), + sizeof(RpcReqWifiStaItwtSuspend), 2, - rpc__resp__wifi_sta_get_aid__field_descriptors, - rpc__resp__wifi_sta_get_aid__field_indices_by_name, - 1, rpc__resp__wifi_sta_get_aid__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_get_aid__init, + rpc__req__wifi_sta_itwt_suspend__field_descriptors, + rpc__req__wifi_sta_itwt_suspend__field_indices_by_name, + 1, rpc__req__wifi_sta_itwt_suspend__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_suspend__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_protocols__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_suspend__field_descriptors[1] = { { - "ifx", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetProtocols, ifx), - NULL, + offsetof(RpcRespWifiStaItwtSuspend, resp), NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "protocols", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetProtocols, protocols), - &wifi_protocols__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_protocols__field_indices_by_name[] = { - 0, /* field[0] = ifx */ - 1, /* field[1] = protocols */ +static const unsigned rpc__resp__wifi_sta_itwt_suspend__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_set_protocols__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_suspend__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_protocols__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_suspend__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetProtocols", - "RpcReqWifiSetProtocols", - "RpcReqWifiSetProtocols", + "Rpc_Resp_WifiStaItwtSuspend", + "RpcRespWifiStaItwtSuspend", + "RpcRespWifiStaItwtSuspend", "", - sizeof(RpcReqWifiSetProtocols), - 2, - rpc__req__wifi_set_protocols__field_descriptors, - rpc__req__wifi_set_protocols__field_indices_by_name, - 1, rpc__req__wifi_set_protocols__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_protocols__init, + sizeof(RpcRespWifiStaItwtSuspend), + 1, + rpc__resp__wifi_sta_itwt_suspend__field_descriptors, + rpc__resp__wifi_sta_itwt_suspend__field_indices_by_name, + 1, rpc__resp__wifi_sta_itwt_suspend__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_suspend__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_protocols__field_descriptors[2] = +#define rpc__req__wifi_sta_itwt_get_flow_id_status__field_descriptors NULL +#define rpc__req__wifi_sta_itwt_get_flow_id_status__field_indices_by_name NULL +#define rpc__req__wifi_sta_itwt_get_flow_id_status__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_get_flow_id_status__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStaItwtGetFlowIdStatus", + "RpcReqWifiStaItwtGetFlowIdStatus", + "RpcReqWifiStaItwtGetFlowIdStatus", + "", + sizeof(RpcReqWifiStaItwtGetFlowIdStatus), + 0, + rpc__req__wifi_sta_itwt_get_flow_id_status__field_descriptors, + rpc__req__wifi_sta_itwt_get_flow_id_status__field_indices_by_name, + 0, rpc__req__wifi_sta_itwt_get_flow_id_status__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_get_flow_id_status__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_get_flow_id_status__field_descriptors[2] = { { "resp", @@ -16231,88 +19584,88 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_protocols__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetProtocols, resp), + offsetof(RpcRespWifiStaItwtGetFlowIdStatus, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ifx", + "flow_id_bitmap", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetProtocols, ifx), + offsetof(RpcRespWifiStaItwtGetFlowIdStatus, flow_id_bitmap), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_protocols__field_indices_by_name[] = { - 1, /* field[1] = ifx */ +static const unsigned rpc__resp__wifi_sta_itwt_get_flow_id_status__field_indices_by_name[] = { + 1, /* field[1] = flow_id_bitmap */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_protocols__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_get_flow_id_status__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_protocols__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_get_flow_id_status__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetProtocols", - "RpcRespWifiSetProtocols", - "RpcRespWifiSetProtocols", + "Rpc_Resp_WifiStaItwtGetFlowIdStatus", + "RpcRespWifiStaItwtGetFlowIdStatus", + "RpcRespWifiStaItwtGetFlowIdStatus", "", - sizeof(RpcRespWifiSetProtocols), + sizeof(RpcRespWifiStaItwtGetFlowIdStatus), 2, - rpc__resp__wifi_set_protocols__field_descriptors, - rpc__resp__wifi_set_protocols__field_indices_by_name, - 1, rpc__resp__wifi_set_protocols__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_protocols__init, + rpc__resp__wifi_sta_itwt_get_flow_id_status__field_descriptors, + rpc__resp__wifi_sta_itwt_get_flow_id_status__field_indices_by_name, + 1, rpc__resp__wifi_sta_itwt_get_flow_id_status__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_get_flow_id_status__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_get_protocols__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_send_probe_req__field_descriptors[1] = { { - "ifx", + "timeout_ms", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiGetProtocols, ifx), + offsetof(RpcReqWifiStaItwtSendProbeReq, timeout_ms), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_get_protocols__field_indices_by_name[] = { - 0, /* field[0] = ifx */ +static const unsigned rpc__req__wifi_sta_itwt_send_probe_req__field_indices_by_name[] = { + 0, /* field[0] = timeout_ms */ }; -static const ProtobufCIntRange rpc__req__wifi_get_protocols__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_sta_itwt_send_probe_req__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_get_protocols__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_send_probe_req__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetProtocols", - "RpcReqWifiGetProtocols", - "RpcReqWifiGetProtocols", + "Rpc_Req_WifiStaItwtSendProbeReq", + "RpcReqWifiStaItwtSendProbeReq", + "RpcReqWifiStaItwtSendProbeReq", "", - sizeof(RpcReqWifiGetProtocols), + sizeof(RpcReqWifiStaItwtSendProbeReq), 1, - rpc__req__wifi_get_protocols__field_descriptors, - rpc__req__wifi_get_protocols__field_indices_by_name, - 1, rpc__req__wifi_get_protocols__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_protocols__init, + rpc__req__wifi_sta_itwt_send_probe_req__field_descriptors, + rpc__req__wifi_sta_itwt_send_probe_req__field_indices_by_name, + 1, rpc__req__wifi_sta_itwt_send_probe_req__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_send_probe_req__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_protocols__field_descriptors[3] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_send_probe_req__field_descriptors[1] = { { "resp", @@ -16320,114 +19673,75 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_protocols__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetProtocols, resp), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "ifx", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetProtocols, ifx), - NULL, + offsetof(RpcRespWifiStaItwtSendProbeReq, resp), NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "protocols", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetProtocols, protocols), - &wifi_protocols__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_protocols__field_indices_by_name[] = { - 1, /* field[1] = ifx */ - 2, /* field[2] = protocols */ +static const unsigned rpc__resp__wifi_sta_itwt_send_probe_req__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_protocols__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_send_probe_req__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 3 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_protocols__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_send_probe_req__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetProtocols", - "RpcRespWifiGetProtocols", - "RpcRespWifiGetProtocols", + "Rpc_Resp_WifiStaItwtSendProbeReq", + "RpcRespWifiStaItwtSendProbeReq", + "RpcRespWifiStaItwtSendProbeReq", "", - sizeof(RpcRespWifiGetProtocols), - 3, - rpc__resp__wifi_get_protocols__field_descriptors, - rpc__resp__wifi_get_protocols__field_indices_by_name, - 1, rpc__resp__wifi_get_protocols__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_protocols__init, + sizeof(RpcRespWifiStaItwtSendProbeReq), + 1, + rpc__resp__wifi_sta_itwt_send_probe_req__field_descriptors, + rpc__resp__wifi_sta_itwt_send_probe_req__field_indices_by_name, + 1, rpc__resp__wifi_sta_itwt_send_probe_req__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_send_probe_req__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_bandwidths__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_set_target_wake_time_offset__field_descriptors[1] = { { - "ifx", + "offset_us", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetBandwidths, ifx), - NULL, + offsetof(RpcReqWifiStaItwtSetTargetWakeTimeOffset, offset_us), NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "bandwidths", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetBandwidths, bandwidths), - &wifi_bandwidths__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_bandwidths__field_indices_by_name[] = { - 1, /* field[1] = bandwidths */ - 0, /* field[0] = ifx */ +static const unsigned rpc__req__wifi_sta_itwt_set_target_wake_time_offset__field_indices_by_name[] = { + 0, /* field[0] = offset_us */ }; -static const ProtobufCIntRange rpc__req__wifi_set_bandwidths__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_sta_itwt_set_target_wake_time_offset__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_bandwidths__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_set_target_wake_time_offset__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetBandwidths", - "RpcReqWifiSetBandwidths", - "RpcReqWifiSetBandwidths", + "Rpc_Req_WifiStaItwtSetTargetWakeTimeOffset", + "RpcReqWifiStaItwtSetTargetWakeTimeOffset", + "RpcReqWifiStaItwtSetTargetWakeTimeOffset", "", - sizeof(RpcReqWifiSetBandwidths), - 2, - rpc__req__wifi_set_bandwidths__field_descriptors, - rpc__req__wifi_set_bandwidths__field_indices_by_name, - 1, rpc__req__wifi_set_bandwidths__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_bandwidths__init, + sizeof(RpcReqWifiStaItwtSetTargetWakeTimeOffset), + 1, + rpc__req__wifi_sta_itwt_set_target_wake_time_offset__field_descriptors, + rpc__req__wifi_sta_itwt_set_target_wake_time_offset__field_indices_by_name, + 1, rpc__req__wifi_sta_itwt_set_target_wake_time_offset__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_set_target_wake_time_offset__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_bandwidths__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__field_descriptors[1] = { { "resp", @@ -16435,88 +19749,131 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_bandwidths__field_desc PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetBandwidths, resp), + offsetof(RpcRespWifiStaItwtSetTargetWakeTimeOffset, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_WifiStaItwtSetTargetWakeTimeOffset", + "RpcRespWifiStaItwtSetTargetWakeTimeOffset", + "RpcRespWifiStaItwtSetTargetWakeTimeOffset", + "", + sizeof(RpcRespWifiStaItwtSetTargetWakeTimeOffset), + 1, + rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__field_descriptors, + rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__field_indices_by_name, + 1, rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__wifi_sta_twt_config__field_descriptors[1] = +{ { - "ifx", - 2, + "config", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetBandwidths, ifx), - NULL, + offsetof(RpcReqWifiStaTwtConfig, config), + &wifi_twt_config__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_bandwidths__field_indices_by_name[] = { - 1, /* field[1] = ifx */ - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_sta_twt_config__field_indices_by_name[] = { + 0, /* field[0] = config */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_bandwidths__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_sta_twt_config__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_bandwidths__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_sta_twt_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetBandwidths", - "RpcRespWifiSetBandwidths", - "RpcRespWifiSetBandwidths", + "Rpc_Req_WifiStaTwtConfig", + "RpcReqWifiStaTwtConfig", + "RpcReqWifiStaTwtConfig", "", - sizeof(RpcRespWifiSetBandwidths), - 2, - rpc__resp__wifi_set_bandwidths__field_descriptors, - rpc__resp__wifi_set_bandwidths__field_indices_by_name, - 1, rpc__resp__wifi_set_bandwidths__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_bandwidths__init, + sizeof(RpcReqWifiStaTwtConfig), + 1, + rpc__req__wifi_sta_twt_config__field_descriptors, + rpc__req__wifi_sta_twt_config__field_indices_by_name, + 1, rpc__req__wifi_sta_twt_config__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_twt_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_get_bandwidths__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_twt_config__field_descriptors[1] = { { - "ifx", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiGetBandwidths, ifx), + offsetof(RpcRespWifiStaTwtConfig, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_get_bandwidths__field_indices_by_name[] = { - 0, /* field[0] = ifx */ +static const unsigned rpc__resp__wifi_sta_twt_config__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_get_bandwidths__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_twt_config__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_get_bandwidths__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_twt_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetBandwidths", - "RpcReqWifiGetBandwidths", - "RpcReqWifiGetBandwidths", + "Rpc_Resp_WifiStaTwtConfig", + "RpcRespWifiStaTwtConfig", + "RpcRespWifiStaTwtConfig", "", - sizeof(RpcReqWifiGetBandwidths), + sizeof(RpcRespWifiStaTwtConfig), 1, - rpc__req__wifi_get_bandwidths__field_descriptors, - rpc__req__wifi_get_bandwidths__field_indices_by_name, - 1, rpc__req__wifi_get_bandwidths__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_bandwidths__init, + rpc__resp__wifi_sta_twt_config__field_descriptors, + rpc__resp__wifi_sta_twt_config__field_indices_by_name, + 1, rpc__resp__wifi_sta_twt_config__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_twt_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_bandwidths__field_descriptors[3] = +#define rpc__req__get_coprocessor_fw_version__field_descriptors NULL +#define rpc__req__get_coprocessor_fw_version__field_indices_by_name NULL +#define rpc__req__get_coprocessor_fw_version__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__get_coprocessor_fw_version__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_GetCoprocessorFwVersion", + "RpcReqGetCoprocessorFwVersion", + "RpcReqGetCoprocessorFwVersion", + "", + sizeof(RpcReqGetCoprocessorFwVersion), + 0, + rpc__req__get_coprocessor_fw_version__field_descriptors, + rpc__req__get_coprocessor_fw_version__field_indices_by_name, + 0, rpc__req__get_coprocessor_fw_version__number_ranges, + (ProtobufCMessageInit) rpc__req__get_coprocessor_fw_version__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__get_coprocessor_fw_version__field_descriptors[4] = { { "resp", @@ -16524,404 +19881,218 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_bandwidths__field_desc PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBandwidths, resp), + offsetof(RpcRespGetCoprocessorFwVersion, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ifx", + "major1", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBandwidths, ifx), + offsetof(RpcRespGetCoprocessorFwVersion, major1), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "bandwidths", + "minor1", 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBandwidths, bandwidths), - &wifi_bandwidths__descriptor, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, -}; -static const unsigned rpc__resp__wifi_get_bandwidths__field_indices_by_name[] = { - 2, /* field[2] = bandwidths */ - 1, /* field[1] = ifx */ - 0, /* field[0] = resp */ -}; -static const ProtobufCIntRange rpc__resp__wifi_get_bandwidths__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 3 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_bandwidths__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetBandwidths", - "RpcRespWifiGetBandwidths", - "RpcRespWifiGetBandwidths", - "", - sizeof(RpcRespWifiGetBandwidths), - 3, - rpc__resp__wifi_get_bandwidths__field_descriptors, - rpc__resp__wifi_get_bandwidths__field_indices_by_name, - 1, rpc__resp__wifi_get_bandwidths__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_bandwidths__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_band__field_descriptors[1] = -{ - { - "band", - 1, - PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetBand, band), + offsetof(RpcRespGetCoprocessorFwVersion, minor1), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__req__wifi_set_band__field_indices_by_name[] = { - 0, /* field[0] = band */ -}; -static const ProtobufCIntRange rpc__req__wifi_set_band__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__req__wifi_set_band__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetBand", - "RpcReqWifiSetBand", - "RpcReqWifiSetBand", - "", - sizeof(RpcReqWifiSetBand), - 1, - rpc__req__wifi_set_band__field_descriptors, - rpc__req__wifi_set_band__field_indices_by_name, - 1, rpc__req__wifi_set_band__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_band__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_band__field_descriptors[1] = -{ { - "resp", - 1, + "patch1", + 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetBand, resp), + offsetof(RpcRespGetCoprocessorFwVersion, patch1), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_band__field_indices_by_name[] = { +static const unsigned rpc__resp__get_coprocessor_fw_version__field_indices_by_name[] = { + 1, /* field[1] = major1 */ + 2, /* field[2] = minor1 */ + 3, /* field[3] = patch1 */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_band__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__get_coprocessor_fw_version__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_band__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetBand", - "RpcRespWifiSetBand", - "RpcRespWifiSetBand", - "", - sizeof(RpcRespWifiSetBand), - 1, - rpc__resp__wifi_set_band__field_descriptors, - rpc__resp__wifi_set_band__field_indices_by_name, - 1, rpc__resp__wifi_set_band__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_band__init, - NULL,NULL,NULL /* reserved[123] */ + { 0, 4 } }; -#define rpc__req__wifi_get_band__field_descriptors NULL -#define rpc__req__wifi_get_band__field_indices_by_name NULL -#define rpc__req__wifi_get_band__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_get_band__descriptor = +const ProtobufCMessageDescriptor rpc__resp__get_coprocessor_fw_version__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetBand", - "RpcReqWifiGetBand", - "RpcReqWifiGetBand", + "Rpc_Resp_GetCoprocessorFwVersion", + "RpcRespGetCoprocessorFwVersion", + "RpcRespGetCoprocessorFwVersion", "", - sizeof(RpcReqWifiGetBand), - 0, - rpc__req__wifi_get_band__field_descriptors, - rpc__req__wifi_get_band__field_indices_by_name, - 0, rpc__req__wifi_get_band__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_band__init, + sizeof(RpcRespGetCoprocessorFwVersion), + 4, + rpc__resp__get_coprocessor_fw_version__field_descriptors, + rpc__resp__get_coprocessor_fw_version__field_indices_by_name, + 1, rpc__resp__get_coprocessor_fw_version__number_ranges, + (ProtobufCMessageInit) rpc__resp__get_coprocessor_fw_version__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_band__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__set_dhcp_dns_status__field_descriptors[9] = { { - "resp", + "iface", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBand, resp), + offsetof(RpcReqSetDhcpDnsStatus, iface), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "band", + "net_link_up", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBand, band), + offsetof(RpcReqSetDhcpDnsStatus, net_link_up), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__resp__wifi_get_band__field_indices_by_name[] = { - 1, /* field[1] = band */ - 0, /* field[0] = resp */ -}; -static const ProtobufCIntRange rpc__resp__wifi_get_band__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_band__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetBand", - "RpcRespWifiGetBand", - "RpcRespWifiGetBand", - "", - sizeof(RpcRespWifiGetBand), - 2, - rpc__resp__wifi_get_band__field_descriptors, - rpc__resp__wifi_get_band__field_indices_by_name, - 1, rpc__resp__wifi_get_band__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_band__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_band_mode__field_descriptors[1] = -{ { - "bandmode", - 1, + "dhcp_up", + 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetBandMode, bandmode), + offsetof(RpcReqSetDhcpDnsStatus, dhcp_up), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__req__wifi_set_band_mode__field_indices_by_name[] = { - 0, /* field[0] = bandmode */ -}; -static const ProtobufCIntRange rpc__req__wifi_set_band_mode__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__req__wifi_set_band_mode__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetBandMode", - "RpcReqWifiSetBandMode", - "RpcReqWifiSetBandMode", - "", - sizeof(RpcReqWifiSetBandMode), - 1, - rpc__req__wifi_set_band_mode__field_descriptors, - rpc__req__wifi_set_band_mode__field_indices_by_name, - 1, rpc__req__wifi_set_band_mode__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_band_mode__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_band_mode__field_descriptors[1] = -{ { - "resp", - 1, + "dhcp_ip", + 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetBandMode, resp), + offsetof(RpcReqSetDhcpDnsStatus, dhcp_ip), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__resp__wifi_set_band_mode__field_indices_by_name[] = { - 0, /* field[0] = resp */ -}; -static const ProtobufCIntRange rpc__resp__wifi_set_band_mode__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_band_mode__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetBandMode", - "RpcRespWifiSetBandMode", - "RpcRespWifiSetBandMode", - "", - sizeof(RpcRespWifiSetBandMode), - 1, - rpc__resp__wifi_set_band_mode__field_descriptors, - rpc__resp__wifi_set_band_mode__field_indices_by_name, - 1, rpc__resp__wifi_set_band_mode__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_band_mode__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_get_band_mode__field_descriptors NULL -#define rpc__req__wifi_get_band_mode__field_indices_by_name NULL -#define rpc__req__wifi_get_band_mode__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_get_band_mode__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetBandMode", - "RpcReqWifiGetBandMode", - "RpcReqWifiGetBandMode", - "", - sizeof(RpcReqWifiGetBandMode), - 0, - rpc__req__wifi_get_band_mode__field_descriptors, - rpc__req__wifi_get_band_mode__field_indices_by_name, - 0, rpc__req__wifi_get_band_mode__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_band_mode__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_band_mode__field_descriptors[2] = -{ { - "resp", - 1, + "dhcp_nm", + 5, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBandMode, resp), + offsetof(RpcReqSetDhcpDnsStatus, dhcp_nm), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "bandmode", - 2, + "dhcp_gw", + 6, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBandMode, bandmode), + offsetof(RpcReqSetDhcpDnsStatus, dhcp_gw), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__resp__wifi_get_band_mode__field_indices_by_name[] = { - 1, /* field[1] = bandmode */ - 0, /* field[0] = resp */ -}; -static const ProtobufCIntRange rpc__resp__wifi_get_band_mode__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_band_mode__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetBandMode", - "RpcRespWifiGetBandMode", - "RpcRespWifiGetBandMode", - "", - sizeof(RpcRespWifiGetBandMode), - 2, - rpc__resp__wifi_get_band_mode__field_descriptors, - rpc__resp__wifi_get_band_mode__field_indices_by_name, - 1, rpc__resp__wifi_get_band_mode__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_band_mode__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_inactive_time__field_descriptors[2] = -{ { - "ifx", - 1, + "dns_up", + 7, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetInactiveTime, ifx), + offsetof(RpcReqSetDhcpDnsStatus, dns_up), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "sec", - 2, + "dns_ip", + 8, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetInactiveTime, sec), + offsetof(RpcReqSetDhcpDnsStatus, dns_ip), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dns_type", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcReqSetDhcpDnsStatus, dns_type), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_inactive_time__field_indices_by_name[] = { - 0, /* field[0] = ifx */ - 1, /* field[1] = sec */ +static const unsigned rpc__req__set_dhcp_dns_status__field_indices_by_name[] = { + 5, /* field[5] = dhcp_gw */ + 3, /* field[3] = dhcp_ip */ + 4, /* field[4] = dhcp_nm */ + 2, /* field[2] = dhcp_up */ + 7, /* field[7] = dns_ip */ + 8, /* field[8] = dns_type */ + 6, /* field[6] = dns_up */ + 0, /* field[0] = iface */ + 1, /* field[1] = net_link_up */ }; -static const ProtobufCIntRange rpc__req__wifi_set_inactive_time__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__set_dhcp_dns_status__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 9 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_inactive_time__descriptor = +const ProtobufCMessageDescriptor rpc__req__set_dhcp_dns_status__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetInactiveTime", - "RpcReqWifiSetInactiveTime", - "RpcReqWifiSetInactiveTime", + "Rpc_Req_SetDhcpDnsStatus", + "RpcReqSetDhcpDnsStatus", + "RpcReqSetDhcpDnsStatus", "", - sizeof(RpcReqWifiSetInactiveTime), - 2, - rpc__req__wifi_set_inactive_time__field_descriptors, - rpc__req__wifi_set_inactive_time__field_indices_by_name, - 1, rpc__req__wifi_set_inactive_time__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_inactive_time__init, + sizeof(RpcReqSetDhcpDnsStatus), + 9, + rpc__req__set_dhcp_dns_status__field_descriptors, + rpc__req__set_dhcp_dns_status__field_indices_by_name, + 1, rpc__req__set_dhcp_dns_status__number_ranges, + (ProtobufCMessageInit) rpc__req__set_dhcp_dns_status__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_inactive_time__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__set_dhcp_dns_status__field_descriptors[1] = { { "resp", @@ -16929,385 +20100,357 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_inactive_time__field_d PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetInactiveTime, resp), + offsetof(RpcRespSetDhcpDnsStatus, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_inactive_time__field_indices_by_name[] = { +static const unsigned rpc__resp__set_dhcp_dns_status__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_inactive_time__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__set_dhcp_dns_status__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_inactive_time__descriptor = +const ProtobufCMessageDescriptor rpc__resp__set_dhcp_dns_status__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetInactiveTime", - "RpcRespWifiSetInactiveTime", - "RpcRespWifiSetInactiveTime", + "Rpc_Resp_SetDhcpDnsStatus", + "RpcRespSetDhcpDnsStatus", + "RpcRespSetDhcpDnsStatus", "", - sizeof(RpcRespWifiSetInactiveTime), + sizeof(RpcRespSetDhcpDnsStatus), 1, - rpc__resp__wifi_set_inactive_time__field_descriptors, - rpc__resp__wifi_set_inactive_time__field_indices_by_name, - 1, rpc__resp__wifi_set_inactive_time__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_inactive_time__init, + rpc__resp__set_dhcp_dns_status__field_descriptors, + rpc__resp__set_dhcp_dns_status__field_indices_by_name, + 1, rpc__resp__set_dhcp_dns_status__number_ranges, + (ProtobufCMessageInit) rpc__resp__set_dhcp_dns_status__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_get_inactive_time__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__get_dhcp_dns_status__field_descriptors[1] = { { - "ifx", + "iface", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiGetInactiveTime, ifx), + offsetof(RpcReqGetDhcpDnsStatus, iface), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_get_inactive_time__field_indices_by_name[] = { - 0, /* field[0] = ifx */ +static const unsigned rpc__req__get_dhcp_dns_status__field_indices_by_name[] = { + 0, /* field[0] = iface */ }; -static const ProtobufCIntRange rpc__req__wifi_get_inactive_time__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__get_dhcp_dns_status__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_get_inactive_time__descriptor = +const ProtobufCMessageDescriptor rpc__req__get_dhcp_dns_status__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetInactiveTime", - "RpcReqWifiGetInactiveTime", - "RpcReqWifiGetInactiveTime", + "Rpc_Req_GetDhcpDnsStatus", + "RpcReqGetDhcpDnsStatus", + "RpcReqGetDhcpDnsStatus", "", - sizeof(RpcReqWifiGetInactiveTime), + sizeof(RpcReqGetDhcpDnsStatus), 1, - rpc__req__wifi_get_inactive_time__field_descriptors, - rpc__req__wifi_get_inactive_time__field_indices_by_name, - 1, rpc__req__wifi_get_inactive_time__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_inactive_time__init, + rpc__req__get_dhcp_dns_status__field_descriptors, + rpc__req__get_dhcp_dns_status__field_indices_by_name, + 1, rpc__req__get_dhcp_dns_status__number_ranges, + (ProtobufCMessageInit) rpc__req__get_dhcp_dns_status__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_inactive_time__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__get_dhcp_dns_status__field_descriptors[10] = { { - "resp", + "iface", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetInactiveTime, resp), + offsetof(RpcRespGetDhcpDnsStatus, iface), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "sec", + "net_link_up", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetInactiveTime, sec), + offsetof(RpcRespGetDhcpDnsStatus, net_link_up), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__resp__wifi_get_inactive_time__field_indices_by_name[] = { - 0, /* field[0] = resp */ - 1, /* field[1] = sec */ -}; -static const ProtobufCIntRange rpc__resp__wifi_get_inactive_time__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_inactive_time__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetInactiveTime", - "RpcRespWifiGetInactiveTime", - "RpcRespWifiGetInactiveTime", - "", - sizeof(RpcRespWifiGetInactiveTime), - 2, - rpc__resp__wifi_get_inactive_time__field_descriptors, - rpc__resp__wifi_get_inactive_time__field_indices_by_name, - 1, rpc__resp__wifi_get_inactive_time__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_inactive_time__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_setup__field_descriptors[1] = -{ { - "setup_config", - 1, + "dhcp_up", + 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiStaItwtSetup, setup_config), - &wifi_itwt_setup_config__descriptor, + offsetof(RpcRespGetDhcpDnsStatus, dhcp_up), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__req__wifi_sta_itwt_setup__field_indices_by_name[] = { - 0, /* field[0] = setup_config */ -}; -static const ProtobufCIntRange rpc__req__wifi_sta_itwt_setup__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_setup__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaItwtSetup", - "RpcReqWifiStaItwtSetup", - "RpcReqWifiStaItwtSetup", - "", - sizeof(RpcReqWifiStaItwtSetup), - 1, - rpc__req__wifi_sta_itwt_setup__field_descriptors, - rpc__req__wifi_sta_itwt_setup__field_indices_by_name, - 1, rpc__req__wifi_sta_itwt_setup__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_setup__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_setup__field_descriptors[1] = -{ { - "resp", - 1, + "dhcp_ip", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcRespGetDhcpDnsStatus, dhcp_ip), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dhcp_nm", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcRespGetDhcpDnsStatus, dhcp_nm), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dhcp_gw", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcRespGetDhcpDnsStatus, dhcp_gw), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dns_up", + 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaItwtSetup, resp), + offsetof(RpcRespGetDhcpDnsStatus, dns_up), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__resp__wifi_sta_itwt_setup__field_indices_by_name[] = { - 0, /* field[0] = resp */ -}; -static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_setup__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_setup__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaItwtSetup", - "RpcRespWifiStaItwtSetup", - "RpcRespWifiStaItwtSetup", - "", - sizeof(RpcRespWifiStaItwtSetup), - 1, - rpc__resp__wifi_sta_itwt_setup__field_descriptors, - rpc__resp__wifi_sta_itwt_setup__field_indices_by_name, - 1, rpc__resp__wifi_sta_itwt_setup__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_setup__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_teardown__field_descriptors[1] = -{ { - "flow_id", - 1, + "dns_ip", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcRespGetDhcpDnsStatus, dns_ip), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dns_type", + 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiStaItwtTeardown, flow_id), + offsetof(RpcRespGetDhcpDnsStatus, dns_type), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__req__wifi_sta_itwt_teardown__field_indices_by_name[] = { - 0, /* field[0] = flow_id */ -}; -static const ProtobufCIntRange rpc__req__wifi_sta_itwt_teardown__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_teardown__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaItwtTeardown", - "RpcReqWifiStaItwtTeardown", - "RpcReqWifiStaItwtTeardown", - "", - sizeof(RpcReqWifiStaItwtTeardown), - 1, - rpc__req__wifi_sta_itwt_teardown__field_descriptors, - rpc__req__wifi_sta_itwt_teardown__field_indices_by_name, - 1, rpc__req__wifi_sta_itwt_teardown__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_teardown__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_teardown__field_descriptors[1] = -{ { "resp", - 1, + 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaItwtTeardown, resp), + offsetof(RpcRespGetDhcpDnsStatus, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_itwt_teardown__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__resp__get_dhcp_dns_status__field_indices_by_name[] = { + 5, /* field[5] = dhcp_gw */ + 3, /* field[3] = dhcp_ip */ + 4, /* field[4] = dhcp_nm */ + 2, /* field[2] = dhcp_up */ + 7, /* field[7] = dns_ip */ + 8, /* field[8] = dns_type */ + 6, /* field[6] = dns_up */ + 0, /* field[0] = iface */ + 1, /* field[1] = net_link_up */ + 9, /* field[9] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_teardown__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__get_dhcp_dns_status__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 10 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_teardown__descriptor = +const ProtobufCMessageDescriptor rpc__resp__get_dhcp_dns_status__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaItwtTeardown", - "RpcRespWifiStaItwtTeardown", - "RpcRespWifiStaItwtTeardown", + "Rpc_Resp_GetDhcpDnsStatus", + "RpcRespGetDhcpDnsStatus", + "RpcRespGetDhcpDnsStatus", "", - sizeof(RpcRespWifiStaItwtTeardown), - 1, - rpc__resp__wifi_sta_itwt_teardown__field_descriptors, - rpc__resp__wifi_sta_itwt_teardown__field_indices_by_name, - 1, rpc__resp__wifi_sta_itwt_teardown__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_teardown__init, + sizeof(RpcRespGetDhcpDnsStatus), + 10, + rpc__resp__get_dhcp_dns_status__field_descriptors, + rpc__resp__get_dhcp_dns_status__field_indices_by_name, + 1, rpc__resp__get_dhcp_dns_status__number_ranges, + (ProtobufCMessageInit) rpc__resp__get_dhcp_dns_status__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_suspend__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__event__wifi_event_no_args__field_descriptors[2] = { { - "flow_id", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiStaItwtSuspend, flow_id), + offsetof(RpcEventWifiEventNoArgs, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "suspend_time_ms", + "event_id", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiStaItwtSuspend, suspend_time_ms), + offsetof(RpcEventWifiEventNoArgs, event_id), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_sta_itwt_suspend__field_indices_by_name[] = { - 0, /* field[0] = flow_id */ - 1, /* field[1] = suspend_time_ms */ +static const unsigned rpc__event__wifi_event_no_args__field_indices_by_name[] = { + 1, /* field[1] = event_id */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_sta_itwt_suspend__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__wifi_event_no_args__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_suspend__descriptor = +const ProtobufCMessageDescriptor rpc__event__wifi_event_no_args__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaItwtSuspend", - "RpcReqWifiStaItwtSuspend", - "RpcReqWifiStaItwtSuspend", + "Rpc_Event_WifiEventNoArgs", + "RpcEventWifiEventNoArgs", + "RpcEventWifiEventNoArgs", "", - sizeof(RpcReqWifiStaItwtSuspend), + sizeof(RpcEventWifiEventNoArgs), 2, - rpc__req__wifi_sta_itwt_suspend__field_descriptors, - rpc__req__wifi_sta_itwt_suspend__field_indices_by_name, - 1, rpc__req__wifi_sta_itwt_suspend__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_suspend__init, + rpc__event__wifi_event_no_args__field_descriptors, + rpc__event__wifi_event_no_args__field_indices_by_name, + 1, rpc__event__wifi_event_no_args__number_ranges, + (ProtobufCMessageInit) rpc__event__wifi_event_no_args__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_suspend__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__event__espinit__field_descriptors[1] = { { - "resp", + "init_data", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaItwtSuspend, resp), + offsetof(RpcEventESPInit, init_data), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_itwt_suspend__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__event__espinit__field_indices_by_name[] = { + 0, /* field[0] = init_data */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_suspend__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__espinit__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_suspend__descriptor = +const ProtobufCMessageDescriptor rpc__event__espinit__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaItwtSuspend", - "RpcRespWifiStaItwtSuspend", - "RpcRespWifiStaItwtSuspend", + "Rpc_Event_ESPInit", + "RpcEventESPInit", + "RpcEventESPInit", "", - sizeof(RpcRespWifiStaItwtSuspend), + sizeof(RpcEventESPInit), 1, - rpc__resp__wifi_sta_itwt_suspend__field_descriptors, - rpc__resp__wifi_sta_itwt_suspend__field_indices_by_name, - 1, rpc__resp__wifi_sta_itwt_suspend__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_suspend__init, + rpc__event__espinit__field_descriptors, + rpc__event__espinit__field_indices_by_name, + 1, rpc__event__espinit__number_ranges, + (ProtobufCMessageInit) rpc__event__espinit__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_sta_itwt_get_flow_id_status__field_descriptors NULL -#define rpc__req__wifi_sta_itwt_get_flow_id_status__field_indices_by_name NULL -#define rpc__req__wifi_sta_itwt_get_flow_id_status__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_get_flow_id_status__descriptor = +static const ProtobufCFieldDescriptor rpc__event__heartbeat__field_descriptors[1] = +{ + { + "hb_num", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcEventHeartbeat, hb_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__event__heartbeat__field_indices_by_name[] = { + 0, /* field[0] = hb_num */ +}; +static const ProtobufCIntRange rpc__event__heartbeat__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__event__heartbeat__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaItwtGetFlowIdStatus", - "RpcReqWifiStaItwtGetFlowIdStatus", - "RpcReqWifiStaItwtGetFlowIdStatus", + "Rpc_Event_Heartbeat", + "RpcEventHeartbeat", + "RpcEventHeartbeat", "", - sizeof(RpcReqWifiStaItwtGetFlowIdStatus), - 0, - rpc__req__wifi_sta_itwt_get_flow_id_status__field_descriptors, - rpc__req__wifi_sta_itwt_get_flow_id_status__field_indices_by_name, - 0, rpc__req__wifi_sta_itwt_get_flow_id_status__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_get_flow_id_status__init, + sizeof(RpcEventHeartbeat), + 1, + rpc__event__heartbeat__field_descriptors, + rpc__event__heartbeat__field_indices_by_name, + 1, rpc__event__heartbeat__number_ranges, + (ProtobufCMessageInit) rpc__event__heartbeat__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_get_flow_id_status__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__event__ap__sta_disconnected__field_descriptors[5] = { { "resp", @@ -17315,88 +20458,89 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_get_flow_id_statu PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaItwtGetFlowIdStatus, resp), + offsetof(RpcEventAPStaDisconnected, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "flow_id_bitmap", + "mac", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaItwtGetFlowIdStatus, flow_id_bitmap), + offsetof(RpcEventAPStaDisconnected, mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__resp__wifi_sta_itwt_get_flow_id_status__field_indices_by_name[] = { - 1, /* field[1] = flow_id_bitmap */ - 0, /* field[0] = resp */ -}; -static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_get_flow_id_status__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_get_flow_id_status__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaItwtGetFlowIdStatus", - "RpcRespWifiStaItwtGetFlowIdStatus", - "RpcRespWifiStaItwtGetFlowIdStatus", - "", - sizeof(RpcRespWifiStaItwtGetFlowIdStatus), - 2, - rpc__resp__wifi_sta_itwt_get_flow_id_status__field_descriptors, - rpc__resp__wifi_sta_itwt_get_flow_id_status__field_indices_by_name, - 1, rpc__resp__wifi_sta_itwt_get_flow_id_status__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_get_flow_id_status__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_send_probe_req__field_descriptors[1] = -{ { - "timeout_ms", - 1, + "aid", + 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiStaItwtSendProbeReq, timeout_ms), + offsetof(RpcEventAPStaDisconnected, aid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "is_mesh_child", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(RpcEventAPStaDisconnected, is_mesh_child), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "reason", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(RpcEventAPStaDisconnected, reason), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_sta_itwt_send_probe_req__field_indices_by_name[] = { - 0, /* field[0] = timeout_ms */ +static const unsigned rpc__event__ap__sta_disconnected__field_indices_by_name[] = { + 2, /* field[2] = aid */ + 3, /* field[3] = is_mesh_child */ + 1, /* field[1] = mac */ + 4, /* field[4] = reason */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_sta_itwt_send_probe_req__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__ap__sta_disconnected__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 5 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_send_probe_req__descriptor = +const ProtobufCMessageDescriptor rpc__event__ap__sta_disconnected__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaItwtSendProbeReq", - "RpcReqWifiStaItwtSendProbeReq", - "RpcReqWifiStaItwtSendProbeReq", + "Rpc_Event_AP_StaDisconnected", + "RpcEventAPStaDisconnected", + "RpcEventAPStaDisconnected", "", - sizeof(RpcReqWifiStaItwtSendProbeReq), - 1, - rpc__req__wifi_sta_itwt_send_probe_req__field_descriptors, - rpc__req__wifi_sta_itwt_send_probe_req__field_indices_by_name, - 1, rpc__req__wifi_sta_itwt_send_probe_req__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_send_probe_req__init, + sizeof(RpcEventAPStaDisconnected), + 5, + rpc__event__ap__sta_disconnected__field_descriptors, + rpc__event__ap__sta_disconnected__field_indices_by_name, + 1, rpc__event__ap__sta_disconnected__number_ranges, + (ProtobufCMessageInit) rpc__event__ap__sta_disconnected__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_send_probe_req__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__event__ap__sta_connected__field_descriptors[4] = { { "resp", @@ -17404,75 +20548,76 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_send_probe_req__f PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaItwtSendProbeReq, resp), + offsetof(RpcEventAPStaConnected, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "mac", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcEventAPStaConnected, mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__resp__wifi_sta_itwt_send_probe_req__field_indices_by_name[] = { - 0, /* field[0] = resp */ -}; -static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_send_probe_req__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_send_probe_req__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaItwtSendProbeReq", - "RpcRespWifiStaItwtSendProbeReq", - "RpcRespWifiStaItwtSendProbeReq", - "", - sizeof(RpcRespWifiStaItwtSendProbeReq), - 1, - rpc__resp__wifi_sta_itwt_send_probe_req__field_descriptors, - rpc__resp__wifi_sta_itwt_send_probe_req__field_indices_by_name, - 1, rpc__resp__wifi_sta_itwt_send_probe_req__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_send_probe_req__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_set_target_wake_time_offset__field_descriptors[1] = -{ { - "offset_us", - 1, + "aid", + 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiStaItwtSetTargetWakeTimeOffset, offset_us), + offsetof(RpcEventAPStaConnected, aid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "is_mesh_child", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(RpcEventAPStaConnected, is_mesh_child), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_sta_itwt_set_target_wake_time_offset__field_indices_by_name[] = { - 0, /* field[0] = offset_us */ +static const unsigned rpc__event__ap__sta_connected__field_indices_by_name[] = { + 2, /* field[2] = aid */ + 3, /* field[3] = is_mesh_child */ + 1, /* field[1] = mac */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_sta_itwt_set_target_wake_time_offset__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__ap__sta_connected__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 4 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_set_target_wake_time_offset__descriptor = +const ProtobufCMessageDescriptor rpc__event__ap__sta_connected__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaItwtSetTargetWakeTimeOffset", - "RpcReqWifiStaItwtSetTargetWakeTimeOffset", - "RpcReqWifiStaItwtSetTargetWakeTimeOffset", + "Rpc_Event_AP_StaConnected", + "RpcEventAPStaConnected", + "RpcEventAPStaConnected", "", - sizeof(RpcReqWifiStaItwtSetTargetWakeTimeOffset), - 1, - rpc__req__wifi_sta_itwt_set_target_wake_time_offset__field_descriptors, - rpc__req__wifi_sta_itwt_set_target_wake_time_offset__field_indices_by_name, - 1, rpc__req__wifi_sta_itwt_set_target_wake_time_offset__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_set_target_wake_time_offset__init, + sizeof(RpcEventAPStaConnected), + 4, + rpc__event__ap__sta_connected__field_descriptors, + rpc__event__ap__sta_connected__field_indices_by_name, + 1, rpc__event__ap__sta_connected__number_ranges, + (ProtobufCMessageInit) rpc__event__ap__sta_connected__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__event__sta_scan_done__field_descriptors[2] = { { "resp", @@ -17480,75 +20625,50 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_set_target_wake_t PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaItwtSetTargetWakeTimeOffset, resp), + offsetof(RpcEventStaScanDone, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__field_indices_by_name[] = { - 0, /* field[0] = resp */ -}; -static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaItwtSetTargetWakeTimeOffset", - "RpcRespWifiStaItwtSetTargetWakeTimeOffset", - "RpcRespWifiStaItwtSetTargetWakeTimeOffset", - "", - sizeof(RpcRespWifiStaItwtSetTargetWakeTimeOffset), - 1, - rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__field_descriptors, - rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__field_indices_by_name, - 1, rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__req__wifi_sta_twt_config__field_descriptors[1] = -{ { - "config", - 1, + "scan_done", + 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcReqWifiStaTwtConfig, config), - &wifi_twt_config__descriptor, + offsetof(RpcEventStaScanDone, scan_done), + &wifi_event_sta_scan_done__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_sta_twt_config__field_indices_by_name[] = { - 0, /* field[0] = config */ +static const unsigned rpc__event__sta_scan_done__field_indices_by_name[] = { + 0, /* field[0] = resp */ + 1, /* field[1] = scan_done */ }; -static const ProtobufCIntRange rpc__req__wifi_sta_twt_config__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__sta_scan_done__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_sta_twt_config__descriptor = +const ProtobufCMessageDescriptor rpc__event__sta_scan_done__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaTwtConfig", - "RpcReqWifiStaTwtConfig", - "RpcReqWifiStaTwtConfig", + "Rpc_Event_StaScanDone", + "RpcEventStaScanDone", + "RpcEventStaScanDone", "", - sizeof(RpcReqWifiStaTwtConfig), - 1, - rpc__req__wifi_sta_twt_config__field_descriptors, - rpc__req__wifi_sta_twt_config__field_indices_by_name, - 1, rpc__req__wifi_sta_twt_config__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_twt_config__init, + sizeof(RpcEventStaScanDone), + 2, + rpc__event__sta_scan_done__field_descriptors, + rpc__event__sta_scan_done__field_indices_by_name, + 1, rpc__event__sta_scan_done__number_ranges, + (ProtobufCMessageInit) rpc__event__sta_scan_done__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_twt_config__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__event__sta_connected__field_descriptors[2] = { { "resp", @@ -17556,55 +20676,50 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_twt_config__field_desc PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaTwtConfig, resp), + offsetof(RpcEventStaConnected, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "sta_connected", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(RpcEventStaConnected, sta_connected), + &wifi_event_sta_connected__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, }; -static const unsigned rpc__resp__wifi_sta_twt_config__field_indices_by_name[] = { +static const unsigned rpc__event__sta_connected__field_indices_by_name[] = { 0, /* field[0] = resp */ + 1, /* field[1] = sta_connected */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_twt_config__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__sta_connected__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_twt_config__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaTwtConfig", - "RpcRespWifiStaTwtConfig", - "RpcRespWifiStaTwtConfig", - "", - sizeof(RpcRespWifiStaTwtConfig), - 1, - rpc__resp__wifi_sta_twt_config__field_descriptors, - rpc__resp__wifi_sta_twt_config__field_indices_by_name, - 1, rpc__resp__wifi_sta_twt_config__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_twt_config__init, - NULL,NULL,NULL /* reserved[123] */ + { 0, 2 } }; -#define rpc__req__get_coprocessor_fw_version__field_descriptors NULL -#define rpc__req__get_coprocessor_fw_version__field_indices_by_name NULL -#define rpc__req__get_coprocessor_fw_version__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__get_coprocessor_fw_version__descriptor = +const ProtobufCMessageDescriptor rpc__event__sta_connected__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_GetCoprocessorFwVersion", - "RpcReqGetCoprocessorFwVersion", - "RpcReqGetCoprocessorFwVersion", + "Rpc_Event_StaConnected", + "RpcEventStaConnected", + "RpcEventStaConnected", "", - sizeof(RpcReqGetCoprocessorFwVersion), - 0, - rpc__req__get_coprocessor_fw_version__field_descriptors, - rpc__req__get_coprocessor_fw_version__field_indices_by_name, - 0, rpc__req__get_coprocessor_fw_version__number_ranges, - (ProtobufCMessageInit) rpc__req__get_coprocessor_fw_version__init, + sizeof(RpcEventStaConnected), + 2, + rpc__event__sta_connected__field_descriptors, + rpc__event__sta_connected__field_indices_by_name, + 1, rpc__event__sta_connected__number_ranges, + (ProtobufCMessageInit) rpc__event__sta_connected__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__get_coprocessor_fw_version__field_descriptors[4] = +static const ProtobufCFieldDescriptor rpc__event__sta_disconnected__field_descriptors[2] = { { "resp", @@ -17612,76 +20727,50 @@ static const ProtobufCFieldDescriptor rpc__resp__get_coprocessor_fw_version__fie PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetCoprocessorFwVersion, resp), + offsetof(RpcEventStaDisconnected, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "major1", + "sta_disconnected", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(RpcRespGetCoprocessorFwVersion, major1), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "minor1", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(RpcRespGetCoprocessorFwVersion, minor1), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "patch1", - 4, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcRespGetCoprocessorFwVersion, patch1), - NULL, + offsetof(RpcEventStaDisconnected, sta_disconnected), + &wifi_event_sta_disconnected__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__get_coprocessor_fw_version__field_indices_by_name[] = { - 1, /* field[1] = major1 */ - 2, /* field[2] = minor1 */ - 3, /* field[3] = patch1 */ +static const unsigned rpc__event__sta_disconnected__field_indices_by_name[] = { 0, /* field[0] = resp */ + 1, /* field[1] = sta_disconnected */ }; -static const ProtobufCIntRange rpc__resp__get_coprocessor_fw_version__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__sta_disconnected__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 4 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__get_coprocessor_fw_version__descriptor = +const ProtobufCMessageDescriptor rpc__event__sta_disconnected__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_GetCoprocessorFwVersion", - "RpcRespGetCoprocessorFwVersion", - "RpcRespGetCoprocessorFwVersion", + "Rpc_Event_StaDisconnected", + "RpcEventStaDisconnected", + "RpcEventStaDisconnected", "", - sizeof(RpcRespGetCoprocessorFwVersion), - 4, - rpc__resp__get_coprocessor_fw_version__field_descriptors, - rpc__resp__get_coprocessor_fw_version__field_indices_by_name, - 1, rpc__resp__get_coprocessor_fw_version__number_ranges, - (ProtobufCMessageInit) rpc__resp__get_coprocessor_fw_version__init, + sizeof(RpcEventStaDisconnected), + 2, + rpc__event__sta_disconnected__field_descriptors, + rpc__event__sta_disconnected__field_indices_by_name, + 1, rpc__event__sta_disconnected__number_ranges, + (ProtobufCMessageInit) rpc__event__sta_disconnected__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__set_dhcp_dns_status__field_descriptors[9] = +static const ProtobufCFieldDescriptor rpc__event__dhcp_dns_status__field_descriptors[10] = { { "iface", @@ -17689,7 +20778,7 @@ static const ProtobufCFieldDescriptor rpc__req__set_dhcp_dns_status__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqSetDhcpDnsStatus, iface), + offsetof(RpcEventDhcpDnsStatus, iface), NULL, NULL, 0, /* flags */ @@ -17701,7 +20790,7 @@ static const ProtobufCFieldDescriptor rpc__req__set_dhcp_dns_status__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqSetDhcpDnsStatus, net_link_up), + offsetof(RpcEventDhcpDnsStatus, net_link_up), NULL, NULL, 0, /* flags */ @@ -17713,7 +20802,7 @@ static const ProtobufCFieldDescriptor rpc__req__set_dhcp_dns_status__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqSetDhcpDnsStatus, dhcp_up), + offsetof(RpcEventDhcpDnsStatus, dhcp_up), NULL, NULL, 0, /* flags */ @@ -17725,7 +20814,7 @@ static const ProtobufCFieldDescriptor rpc__req__set_dhcp_dns_status__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcReqSetDhcpDnsStatus, dhcp_ip), + offsetof(RpcEventDhcpDnsStatus, dhcp_ip), NULL, NULL, 0, /* flags */ @@ -17737,7 +20826,7 @@ static const ProtobufCFieldDescriptor rpc__req__set_dhcp_dns_status__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcReqSetDhcpDnsStatus, dhcp_nm), + offsetof(RpcEventDhcpDnsStatus, dhcp_nm), NULL, NULL, 0, /* flags */ @@ -17749,7 +20838,7 @@ static const ProtobufCFieldDescriptor rpc__req__set_dhcp_dns_status__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcReqSetDhcpDnsStatus, dhcp_gw), + offsetof(RpcEventDhcpDnsStatus, dhcp_gw), NULL, NULL, 0, /* flags */ @@ -17761,7 +20850,7 @@ static const ProtobufCFieldDescriptor rpc__req__set_dhcp_dns_status__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqSetDhcpDnsStatus, dns_up), + offsetof(RpcEventDhcpDnsStatus, dns_up), NULL, NULL, 0, /* flags */ @@ -17773,7 +20862,7 @@ static const ProtobufCFieldDescriptor rpc__req__set_dhcp_dns_status__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcReqSetDhcpDnsStatus, dns_ip), + offsetof(RpcEventDhcpDnsStatus, dns_ip), NULL, NULL, 0, /* flags */ @@ -17785,14 +20874,26 @@ static const ProtobufCFieldDescriptor rpc__req__set_dhcp_dns_status__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqSetDhcpDnsStatus, dns_type), + offsetof(RpcEventDhcpDnsStatus, dns_type), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcEventDhcpDnsStatus, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__set_dhcp_dns_status__field_indices_by_name[] = { +static const unsigned rpc__event__dhcp_dns_status__field_indices_by_name[] = { 5, /* field[5] = dhcp_gw */ 3, /* field[3] = dhcp_ip */ 4, /* field[4] = dhcp_nm */ @@ -17802,28 +20903,29 @@ static const unsigned rpc__req__set_dhcp_dns_status__field_indices_by_name[] = { 6, /* field[6] = dns_up */ 0, /* field[0] = iface */ 1, /* field[1] = net_link_up */ + 9, /* field[9] = resp */ }; -static const ProtobufCIntRange rpc__req__set_dhcp_dns_status__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__dhcp_dns_status__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 9 } + { 0, 10 } }; -const ProtobufCMessageDescriptor rpc__req__set_dhcp_dns_status__descriptor = +const ProtobufCMessageDescriptor rpc__event__dhcp_dns_status__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_SetDhcpDnsStatus", - "RpcReqSetDhcpDnsStatus", - "RpcReqSetDhcpDnsStatus", + "Rpc_Event_DhcpDnsStatus", + "RpcEventDhcpDnsStatus", + "RpcEventDhcpDnsStatus", "", - sizeof(RpcReqSetDhcpDnsStatus), - 9, - rpc__req__set_dhcp_dns_status__field_descriptors, - rpc__req__set_dhcp_dns_status__field_indices_by_name, - 1, rpc__req__set_dhcp_dns_status__number_ranges, - (ProtobufCMessageInit) rpc__req__set_dhcp_dns_status__init, + sizeof(RpcEventDhcpDnsStatus), + 10, + rpc__event__dhcp_dns_status__field_descriptors, + rpc__event__dhcp_dns_status__field_indices_by_name, + 1, rpc__event__dhcp_dns_status__number_ranges, + (ProtobufCMessageInit) rpc__event__dhcp_dns_status__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__set_dhcp_dns_status__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__event__sta_itwt_setup__field_descriptors[5] = { { "resp", @@ -17831,230 +20933,457 @@ static const ProtobufCFieldDescriptor rpc__resp__set_dhcp_dns_status__field_desc PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespSetDhcpDnsStatus, resp), + offsetof(RpcEventStaItwtSetup, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "config", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(RpcEventStaItwtSetup, config), + &wifi_itwt_setup_config__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "status", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcEventStaItwtSetup, status), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "reason", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(RpcEventStaItwtSetup, reason), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "target_wake_time", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(RpcEventStaItwtSetup, target_wake_time), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__set_dhcp_dns_status__field_indices_by_name[] = { +static const unsigned rpc__event__sta_itwt_setup__field_indices_by_name[] = { + 1, /* field[1] = config */ + 3, /* field[3] = reason */ 0, /* field[0] = resp */ + 2, /* field[2] = status */ + 4, /* field[4] = target_wake_time */ }; -static const ProtobufCIntRange rpc__resp__set_dhcp_dns_status__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__sta_itwt_setup__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 5 } }; -const ProtobufCMessageDescriptor rpc__resp__set_dhcp_dns_status__descriptor = +const ProtobufCMessageDescriptor rpc__event__sta_itwt_setup__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_SetDhcpDnsStatus", - "RpcRespSetDhcpDnsStatus", - "RpcRespSetDhcpDnsStatus", + "Rpc_Event_StaItwtSetup", + "RpcEventStaItwtSetup", + "RpcEventStaItwtSetup", "", - sizeof(RpcRespSetDhcpDnsStatus), - 1, - rpc__resp__set_dhcp_dns_status__field_descriptors, - rpc__resp__set_dhcp_dns_status__field_indices_by_name, - 1, rpc__resp__set_dhcp_dns_status__number_ranges, - (ProtobufCMessageInit) rpc__resp__set_dhcp_dns_status__init, + sizeof(RpcEventStaItwtSetup), + 5, + rpc__event__sta_itwt_setup__field_descriptors, + rpc__event__sta_itwt_setup__field_indices_by_name, + 1, rpc__event__sta_itwt_setup__number_ranges, + (ProtobufCMessageInit) rpc__event__sta_itwt_setup__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__get_dhcp_dns_status__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__event__sta_itwt_teardown__field_descriptors[3] = { { - "iface", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqGetDhcpDnsStatus, iface), + offsetof(RpcEventStaItwtTeardown, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "flow_id", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(RpcEventStaItwtTeardown, flow_id), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "status", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(RpcEventStaItwtTeardown, status), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__get_dhcp_dns_status__field_indices_by_name[] = { - 0, /* field[0] = iface */ +static const unsigned rpc__event__sta_itwt_teardown__field_indices_by_name[] = { + 1, /* field[1] = flow_id */ + 0, /* field[0] = resp */ + 2, /* field[2] = status */ }; -static const ProtobufCIntRange rpc__req__get_dhcp_dns_status__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__sta_itwt_teardown__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 3 } }; -const ProtobufCMessageDescriptor rpc__req__get_dhcp_dns_status__descriptor = +const ProtobufCMessageDescriptor rpc__event__sta_itwt_teardown__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_GetDhcpDnsStatus", - "RpcReqGetDhcpDnsStatus", - "RpcReqGetDhcpDnsStatus", + "Rpc_Event_StaItwtTeardown", + "RpcEventStaItwtTeardown", + "RpcEventStaItwtTeardown", "", - sizeof(RpcReqGetDhcpDnsStatus), - 1, - rpc__req__get_dhcp_dns_status__field_descriptors, - rpc__req__get_dhcp_dns_status__field_indices_by_name, - 1, rpc__req__get_dhcp_dns_status__number_ranges, - (ProtobufCMessageInit) rpc__req__get_dhcp_dns_status__init, + sizeof(RpcEventStaItwtTeardown), + 3, + rpc__event__sta_itwt_teardown__field_descriptors, + rpc__event__sta_itwt_teardown__field_indices_by_name, + 1, rpc__event__sta_itwt_teardown__number_ranges, + (ProtobufCMessageInit) rpc__event__sta_itwt_teardown__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__get_dhcp_dns_status__field_descriptors[10] = +static const ProtobufCFieldDescriptor rpc__event__sta_itwt_suspend__field_descriptors[4] = { { - "iface", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, iface), + offsetof(RpcEventStaItwtSuspend, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "net_link_up", + "status", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, net_link_up), + offsetof(RpcEventStaItwtSuspend, status), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "flow_id_bitmap", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(RpcEventStaItwtSuspend, flow_id_bitmap), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dhcp_up", - 3, + "actual_suspend_time_ms", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_UINT32, + offsetof(RpcEventStaItwtSuspend, n_actual_suspend_time_ms), + offsetof(RpcEventStaItwtSuspend, actual_suspend_time_ms), + NULL, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__event__sta_itwt_suspend__field_indices_by_name[] = { + 3, /* field[3] = actual_suspend_time_ms */ + 2, /* field[2] = flow_id_bitmap */ + 0, /* field[0] = resp */ + 1, /* field[1] = status */ +}; +static const ProtobufCIntRange rpc__event__sta_itwt_suspend__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor rpc__event__sta_itwt_suspend__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Event_StaItwtSuspend", + "RpcEventStaItwtSuspend", + "RpcEventStaItwtSuspend", + "", + sizeof(RpcEventStaItwtSuspend), + 4, + rpc__event__sta_itwt_suspend__field_descriptors, + rpc__event__sta_itwt_suspend__field_indices_by_name, + 1, rpc__event__sta_itwt_suspend__number_ranges, + (ProtobufCMessageInit) rpc__event__sta_itwt_suspend__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__event__sta_itwt_probe__field_descriptors[3] = +{ + { + "resp", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, dhcp_up), + offsetof(RpcEventStaItwtProbe, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dhcp_ip", - 4, + "status", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, dhcp_ip), + offsetof(RpcEventStaItwtProbe, status), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dhcp_nm", - 5, + "reason", + 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, dhcp_nm), + offsetof(RpcEventStaItwtProbe, reason), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__event__sta_itwt_probe__field_indices_by_name[] = { + 2, /* field[2] = reason */ + 0, /* field[0] = resp */ + 1, /* field[1] = status */ +}; +static const ProtobufCIntRange rpc__event__sta_itwt_probe__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor rpc__event__sta_itwt_probe__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Event_StaItwtProbe", + "RpcEventStaItwtProbe", + "RpcEventStaItwtProbe", + "", + sizeof(RpcEventStaItwtProbe), + 3, + rpc__event__sta_itwt_probe__field_descriptors, + rpc__event__sta_itwt_probe__field_indices_by_name, + 1, rpc__event__sta_itwt_probe__number_ranges, + (ProtobufCMessageInit) rpc__event__sta_itwt_probe__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define rpc__req__wifi_sta_enterprise_enable__field_descriptors NULL +#define rpc__req__wifi_sta_enterprise_enable__field_indices_by_name NULL +#define rpc__req__wifi_sta_enterprise_enable__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_sta_enterprise_enable__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStaEnterpriseEnable", + "RpcReqWifiStaEnterpriseEnable", + "RpcReqWifiStaEnterpriseEnable", + "", + sizeof(RpcReqWifiStaEnterpriseEnable), + 0, + rpc__req__wifi_sta_enterprise_enable__field_descriptors, + rpc__req__wifi_sta_enterprise_enable__field_indices_by_name, + 0, rpc__req__wifi_sta_enterprise_enable__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_enterprise_enable__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_enterprise_enable__field_descriptors[1] = +{ { - "dhcp_gw", - 6, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, dhcp_gw), + offsetof(RpcRespWifiStaEnterpriseEnable, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__wifi_sta_enterprise_enable__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__wifi_sta_enterprise_enable__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_enterprise_enable__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_WifiStaEnterpriseEnable", + "RpcRespWifiStaEnterpriseEnable", + "RpcRespWifiStaEnterpriseEnable", + "", + sizeof(RpcRespWifiStaEnterpriseEnable), + 1, + rpc__resp__wifi_sta_enterprise_enable__field_descriptors, + rpc__resp__wifi_sta_enterprise_enable__field_indices_by_name, + 1, rpc__resp__wifi_sta_enterprise_enable__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_enterprise_enable__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define rpc__req__wifi_sta_enterprise_disable__field_descriptors NULL +#define rpc__req__wifi_sta_enterprise_disable__field_indices_by_name NULL +#define rpc__req__wifi_sta_enterprise_disable__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_sta_enterprise_disable__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStaEnterpriseDisable", + "RpcReqWifiStaEnterpriseDisable", + "RpcReqWifiStaEnterpriseDisable", + "", + sizeof(RpcReqWifiStaEnterpriseDisable), + 0, + rpc__req__wifi_sta_enterprise_disable__field_descriptors, + rpc__req__wifi_sta_enterprise_disable__field_indices_by_name, + 0, rpc__req__wifi_sta_enterprise_disable__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_enterprise_disable__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_enterprise_disable__field_descriptors[1] = +{ { - "dns_up", - 7, + "resp", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, dns_up), + offsetof(RpcRespWifiStaEnterpriseDisable, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__wifi_sta_enterprise_disable__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__wifi_sta_enterprise_disable__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_enterprise_disable__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_WifiStaEnterpriseDisable", + "RpcRespWifiStaEnterpriseDisable", + "RpcRespWifiStaEnterpriseDisable", + "", + sizeof(RpcRespWifiStaEnterpriseDisable), + 1, + rpc__resp__wifi_sta_enterprise_disable__field_descriptors, + rpc__resp__wifi_sta_enterprise_disable__field_indices_by_name, + 1, rpc__resp__wifi_sta_enterprise_disable__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_enterprise_disable__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__eap_set_identity__field_descriptors[2] = +{ { - "dns_ip", - 8, + "identity", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, dns_ip), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "dns_type", - 9, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, dns_type), + offsetof(RpcReqEapSetIdentity, identity), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "resp", - 10, + "len", + 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, resp), + offsetof(RpcReqEapSetIdentity, len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__get_dhcp_dns_status__field_indices_by_name[] = { - 5, /* field[5] = dhcp_gw */ - 3, /* field[3] = dhcp_ip */ - 4, /* field[4] = dhcp_nm */ - 2, /* field[2] = dhcp_up */ - 7, /* field[7] = dns_ip */ - 8, /* field[8] = dns_type */ - 6, /* field[6] = dns_up */ - 0, /* field[0] = iface */ - 1, /* field[1] = net_link_up */ - 9, /* field[9] = resp */ +static const unsigned rpc__req__eap_set_identity__field_indices_by_name[] = { + 0, /* field[0] = identity */ + 1, /* field[1] = len */ }; -static const ProtobufCIntRange rpc__resp__get_dhcp_dns_status__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__eap_set_identity__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 10 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__get_dhcp_dns_status__descriptor = +const ProtobufCMessageDescriptor rpc__req__eap_set_identity__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_GetDhcpDnsStatus", - "RpcRespGetDhcpDnsStatus", - "RpcRespGetDhcpDnsStatus", + "Rpc_Req_EapSetIdentity", + "RpcReqEapSetIdentity", + "RpcReqEapSetIdentity", "", - sizeof(RpcRespGetDhcpDnsStatus), - 10, - rpc__resp__get_dhcp_dns_status__field_descriptors, - rpc__resp__get_dhcp_dns_status__field_indices_by_name, - 1, rpc__resp__get_dhcp_dns_status__number_ranges, - (ProtobufCMessageInit) rpc__resp__get_dhcp_dns_status__init, + sizeof(RpcReqEapSetIdentity), + 2, + rpc__req__eap_set_identity__field_descriptors, + rpc__req__eap_set_identity__field_indices_by_name, + 1, rpc__req__eap_set_identity__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_set_identity__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__wifi_event_no_args__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__eap_set_identity__field_descriptors[1] = { { "resp", @@ -18062,126 +21391,144 @@ static const ProtobufCFieldDescriptor rpc__event__wifi_event_no_args__field_desc PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventWifiEventNoArgs, resp), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "event_id", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcEventWifiEventNoArgs, event_id), + offsetof(RpcRespEapSetIdentity, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__wifi_event_no_args__field_indices_by_name[] = { - 1, /* field[1] = event_id */ +static const unsigned rpc__resp__eap_set_identity__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__event__wifi_event_no_args__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_set_identity__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__event__wifi_event_no_args__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_set_identity__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_WifiEventNoArgs", - "RpcEventWifiEventNoArgs", - "RpcEventWifiEventNoArgs", + "Rpc_Resp_EapSetIdentity", + "RpcRespEapSetIdentity", + "RpcRespEapSetIdentity", "", - sizeof(RpcEventWifiEventNoArgs), - 2, - rpc__event__wifi_event_no_args__field_descriptors, - rpc__event__wifi_event_no_args__field_indices_by_name, - 1, rpc__event__wifi_event_no_args__number_ranges, - (ProtobufCMessageInit) rpc__event__wifi_event_no_args__init, + sizeof(RpcRespEapSetIdentity), + 1, + rpc__resp__eap_set_identity__field_descriptors, + rpc__resp__eap_set_identity__field_indices_by_name, + 1, rpc__resp__eap_set_identity__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_set_identity__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__espinit__field_descriptors[1] = +#define rpc__req__eap_clear_identity__field_descriptors NULL +#define rpc__req__eap_clear_identity__field_indices_by_name NULL +#define rpc__req__eap_clear_identity__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__eap_clear_identity__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_EapClearIdentity", + "RpcReqEapClearIdentity", + "RpcReqEapClearIdentity", + "", + sizeof(RpcReqEapClearIdentity), + 0, + rpc__req__eap_clear_identity__field_descriptors, + rpc__req__eap_clear_identity__field_indices_by_name, + 0, rpc__req__eap_clear_identity__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_clear_identity__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__eap_clear_identity__field_descriptors[1] = { { - "init_data", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventESPInit, init_data), + offsetof(RpcRespEapClearIdentity, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__espinit__field_indices_by_name[] = { - 0, /* field[0] = init_data */ +static const unsigned rpc__resp__eap_clear_identity__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__event__espinit__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_clear_identity__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__event__espinit__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_clear_identity__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_ESPInit", - "RpcEventESPInit", - "RpcEventESPInit", + "Rpc_Resp_EapClearIdentity", + "RpcRespEapClearIdentity", + "RpcRespEapClearIdentity", "", - sizeof(RpcEventESPInit), + sizeof(RpcRespEapClearIdentity), 1, - rpc__event__espinit__field_descriptors, - rpc__event__espinit__field_indices_by_name, - 1, rpc__event__espinit__number_ranges, - (ProtobufCMessageInit) rpc__event__espinit__init, + rpc__resp__eap_clear_identity__field_descriptors, + rpc__resp__eap_clear_identity__field_indices_by_name, + 1, rpc__resp__eap_clear_identity__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_clear_identity__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__heartbeat__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__eap_set_username__field_descriptors[2] = { { - "hb_num", + "username", 1, PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcReqEapSetUsername, username), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "len", + 2, + PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventHeartbeat, hb_num), + offsetof(RpcReqEapSetUsername, len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__heartbeat__field_indices_by_name[] = { - 0, /* field[0] = hb_num */ +static const unsigned rpc__req__eap_set_username__field_indices_by_name[] = { + 1, /* field[1] = len */ + 0, /* field[0] = username */ }; -static const ProtobufCIntRange rpc__event__heartbeat__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__eap_set_username__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__event__heartbeat__descriptor = +const ProtobufCMessageDescriptor rpc__req__eap_set_username__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_Heartbeat", - "RpcEventHeartbeat", - "RpcEventHeartbeat", + "Rpc_Req_EapSetUsername", + "RpcReqEapSetUsername", + "RpcReqEapSetUsername", "", - sizeof(RpcEventHeartbeat), - 1, - rpc__event__heartbeat__field_descriptors, - rpc__event__heartbeat__field_indices_by_name, - 1, rpc__event__heartbeat__number_ranges, - (ProtobufCMessageInit) rpc__event__heartbeat__init, + sizeof(RpcReqEapSetUsername), + 2, + rpc__req__eap_set_username__field_descriptors, + rpc__req__eap_set_username__field_indices_by_name, + 1, rpc__req__eap_set_username__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_set_username__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__ap__sta_disconnected__field_descriptors[5] = +static const ProtobufCFieldDescriptor rpc__resp__eap_set_username__field_descriptors[1] = { { "resp", @@ -18189,89 +21536,200 @@ static const ProtobufCFieldDescriptor rpc__event__ap__sta_disconnected__field_de PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaDisconnected, resp), + offsetof(RpcRespEapSetUsername, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__eap_set_username__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__eap_set_username__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__eap_set_username__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_EapSetUsername", + "RpcRespEapSetUsername", + "RpcRespEapSetUsername", + "", + sizeof(RpcRespEapSetUsername), + 1, + rpc__resp__eap_set_username__field_descriptors, + rpc__resp__eap_set_username__field_indices_by_name, + 1, rpc__resp__eap_set_username__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_set_username__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define rpc__req__eap_clear_username__field_descriptors NULL +#define rpc__req__eap_clear_username__field_indices_by_name NULL +#define rpc__req__eap_clear_username__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__eap_clear_username__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_EapClearUsername", + "RpcReqEapClearUsername", + "RpcReqEapClearUsername", + "", + sizeof(RpcReqEapClearUsername), + 0, + rpc__req__eap_clear_username__field_descriptors, + rpc__req__eap_clear_username__field_indices_by_name, + 0, rpc__req__eap_clear_username__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_clear_username__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__eap_clear_username__field_descriptors[1] = +{ { - "mac", - 2, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaDisconnected, mac), + offsetof(RpcRespEapClearUsername, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__eap_clear_username__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__eap_clear_username__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__eap_clear_username__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_EapClearUsername", + "RpcRespEapClearUsername", + "RpcRespEapClearUsername", + "", + sizeof(RpcRespEapClearUsername), + 1, + rpc__resp__eap_clear_username__field_descriptors, + rpc__resp__eap_clear_username__field_indices_by_name, + 1, rpc__resp__eap_clear_username__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_clear_username__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__eap_set_password__field_descriptors[2] = +{ { - "aid", - 3, + "password", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaDisconnected, aid), + offsetof(RpcReqEapSetPassword, password), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "is_mesh_child", - 4, + "len", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaDisconnected, is_mesh_child), + offsetof(RpcReqEapSetPassword, len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__req__eap_set_password__field_indices_by_name[] = { + 1, /* field[1] = len */ + 0, /* field[0] = password */ +}; +static const ProtobufCIntRange rpc__req__eap_set_password__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor rpc__req__eap_set_password__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_EapSetPassword", + "RpcReqEapSetPassword", + "RpcReqEapSetPassword", + "", + sizeof(RpcReqEapSetPassword), + 2, + rpc__req__eap_set_password__field_descriptors, + rpc__req__eap_set_password__field_indices_by_name, + 1, rpc__req__eap_set_password__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_set_password__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__eap_set_password__field_descriptors[1] = +{ { - "reason", - 5, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaDisconnected, reason), + offsetof(RpcRespEapSetPassword, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__ap__sta_disconnected__field_indices_by_name[] = { - 2, /* field[2] = aid */ - 3, /* field[3] = is_mesh_child */ - 1, /* field[1] = mac */ - 4, /* field[4] = reason */ +static const unsigned rpc__resp__eap_set_password__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__event__ap__sta_disconnected__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_set_password__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 5 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__event__ap__sta_disconnected__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_set_password__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_AP_StaDisconnected", - "RpcEventAPStaDisconnected", - "RpcEventAPStaDisconnected", + "Rpc_Resp_EapSetPassword", + "RpcRespEapSetPassword", + "RpcRespEapSetPassword", "", - sizeof(RpcEventAPStaDisconnected), - 5, - rpc__event__ap__sta_disconnected__field_descriptors, - rpc__event__ap__sta_disconnected__field_indices_by_name, - 1, rpc__event__ap__sta_disconnected__number_ranges, - (ProtobufCMessageInit) rpc__event__ap__sta_disconnected__init, + sizeof(RpcRespEapSetPassword), + 1, + rpc__resp__eap_set_password__field_descriptors, + rpc__resp__eap_set_password__field_indices_by_name, + 1, rpc__resp__eap_set_password__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_set_password__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__ap__sta_connected__field_descriptors[4] = +#define rpc__req__eap_clear_password__field_descriptors NULL +#define rpc__req__eap_clear_password__field_indices_by_name NULL +#define rpc__req__eap_clear_password__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__eap_clear_password__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_EapClearPassword", + "RpcReqEapClearPassword", + "RpcReqEapClearPassword", + "", + sizeof(RpcReqEapClearPassword), + 0, + rpc__req__eap_clear_password__field_descriptors, + rpc__req__eap_clear_password__field_indices_by_name, + 0, rpc__req__eap_clear_password__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_clear_password__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__eap_clear_password__field_descriptors[1] = { { "resp", @@ -18279,76 +21737,144 @@ static const ProtobufCFieldDescriptor rpc__event__ap__sta_connected__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaConnected, resp), + offsetof(RpcRespEapClearPassword, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__eap_clear_password__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__eap_clear_password__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__eap_clear_password__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_EapClearPassword", + "RpcRespEapClearPassword", + "RpcRespEapClearPassword", + "", + sizeof(RpcRespEapClearPassword), + 1, + rpc__resp__eap_clear_password__field_descriptors, + rpc__resp__eap_clear_password__field_indices_by_name, + 1, rpc__resp__eap_clear_password__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_clear_password__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__eap_set_new_password__field_descriptors[2] = +{ { - "mac", - 2, + "new_password", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaConnected, mac), + offsetof(RpcReqEapSetNewPassword, new_password), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "aid", - 3, + "len", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaConnected, aid), + offsetof(RpcReqEapSetNewPassword, len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__req__eap_set_new_password__field_indices_by_name[] = { + 1, /* field[1] = len */ + 0, /* field[0] = new_password */ +}; +static const ProtobufCIntRange rpc__req__eap_set_new_password__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor rpc__req__eap_set_new_password__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_EapSetNewPassword", + "RpcReqEapSetNewPassword", + "RpcReqEapSetNewPassword", + "", + sizeof(RpcReqEapSetNewPassword), + 2, + rpc__req__eap_set_new_password__field_descriptors, + rpc__req__eap_set_new_password__field_indices_by_name, + 1, rpc__req__eap_set_new_password__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_set_new_password__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__eap_set_new_password__field_descriptors[1] = +{ { - "is_mesh_child", - 4, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaConnected, is_mesh_child), + offsetof(RpcRespEapSetNewPassword, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__ap__sta_connected__field_indices_by_name[] = { - 2, /* field[2] = aid */ - 3, /* field[3] = is_mesh_child */ - 1, /* field[1] = mac */ +static const unsigned rpc__resp__eap_set_new_password__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__event__ap__sta_connected__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_set_new_password__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 4 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__event__ap__sta_connected__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_set_new_password__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_AP_StaConnected", - "RpcEventAPStaConnected", - "RpcEventAPStaConnected", + "Rpc_Resp_EapSetNewPassword", + "RpcRespEapSetNewPassword", + "RpcRespEapSetNewPassword", "", - sizeof(RpcEventAPStaConnected), - 4, - rpc__event__ap__sta_connected__field_descriptors, - rpc__event__ap__sta_connected__field_indices_by_name, - 1, rpc__event__ap__sta_connected__number_ranges, - (ProtobufCMessageInit) rpc__event__ap__sta_connected__init, + sizeof(RpcRespEapSetNewPassword), + 1, + rpc__resp__eap_set_new_password__field_descriptors, + rpc__resp__eap_set_new_password__field_indices_by_name, + 1, rpc__resp__eap_set_new_password__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_set_new_password__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__sta_scan_done__field_descriptors[2] = +#define rpc__req__eap_clear_new_password__field_descriptors NULL +#define rpc__req__eap_clear_new_password__field_indices_by_name NULL +#define rpc__req__eap_clear_new_password__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__eap_clear_new_password__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_EapClearNewPassword", + "RpcReqEapClearNewPassword", + "RpcReqEapClearNewPassword", + "", + sizeof(RpcReqEapClearNewPassword), + 0, + rpc__req__eap_clear_new_password__field_descriptors, + rpc__req__eap_clear_new_password__field_indices_by_name, + 0, rpc__req__eap_clear_new_password__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_clear_new_password__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__eap_clear_new_password__field_descriptors[1] = { { "resp", @@ -18356,101 +21882,88 @@ static const ProtobufCFieldDescriptor rpc__event__sta_scan_done__field_descripto PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaScanDone, resp), + offsetof(RpcRespEapClearNewPassword, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, - { - "scan_done", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(RpcEventStaScanDone, scan_done), - &wifi_event_sta_scan_done__descriptor, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, }; -static const unsigned rpc__event__sta_scan_done__field_indices_by_name[] = { +static const unsigned rpc__resp__eap_clear_new_password__field_indices_by_name[] = { 0, /* field[0] = resp */ - 1, /* field[1] = scan_done */ }; -static const ProtobufCIntRange rpc__event__sta_scan_done__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_clear_new_password__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__event__sta_scan_done__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_clear_new_password__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_StaScanDone", - "RpcEventStaScanDone", - "RpcEventStaScanDone", + "Rpc_Resp_EapClearNewPassword", + "RpcRespEapClearNewPassword", + "RpcRespEapClearNewPassword", "", - sizeof(RpcEventStaScanDone), - 2, - rpc__event__sta_scan_done__field_descriptors, - rpc__event__sta_scan_done__field_indices_by_name, - 1, rpc__event__sta_scan_done__number_ranges, - (ProtobufCMessageInit) rpc__event__sta_scan_done__init, + sizeof(RpcRespEapClearNewPassword), + 1, + rpc__resp__eap_clear_new_password__field_descriptors, + rpc__resp__eap_clear_new_password__field_indices_by_name, + 1, rpc__resp__eap_clear_new_password__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_clear_new_password__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__sta_connected__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__eap_set_ca_cert__field_descriptors[2] = { { - "resp", + "ca_cert", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcEventStaConnected, resp), + offsetof(RpcReqEapSetCaCert, ca_cert), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "sta_connected", + "ca_cert_len", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaConnected, sta_connected), - &wifi_event_sta_connected__descriptor, + offsetof(RpcReqEapSetCaCert, ca_cert_len), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__sta_connected__field_indices_by_name[] = { - 0, /* field[0] = resp */ - 1, /* field[1] = sta_connected */ +static const unsigned rpc__req__eap_set_ca_cert__field_indices_by_name[] = { + 0, /* field[0] = ca_cert */ + 1, /* field[1] = ca_cert_len */ }; -static const ProtobufCIntRange rpc__event__sta_connected__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__eap_set_ca_cert__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__event__sta_connected__descriptor = +const ProtobufCMessageDescriptor rpc__req__eap_set_ca_cert__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_StaConnected", - "RpcEventStaConnected", - "RpcEventStaConnected", + "Rpc_Req_EapSetCaCert", + "RpcReqEapSetCaCert", + "RpcReqEapSetCaCert", "", - sizeof(RpcEventStaConnected), + sizeof(RpcReqEapSetCaCert), 2, - rpc__event__sta_connected__field_descriptors, - rpc__event__sta_connected__field_indices_by_name, - 1, rpc__event__sta_connected__number_ranges, - (ProtobufCMessageInit) rpc__event__sta_connected__init, + rpc__req__eap_set_ca_cert__field_descriptors, + rpc__req__eap_set_ca_cert__field_indices_by_name, + 1, rpc__req__eap_set_ca_cert__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_set_ca_cert__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__sta_disconnected__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__eap_set_ca_cert__field_descriptors[1] = { { "resp", @@ -18458,205 +21971,384 @@ static const ProtobufCFieldDescriptor rpc__event__sta_disconnected__field_descri PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaDisconnected, resp), + offsetof(RpcRespEapSetCaCert, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__eap_set_ca_cert__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__eap_set_ca_cert__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__eap_set_ca_cert__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_EapSetCaCert", + "RpcRespEapSetCaCert", + "RpcRespEapSetCaCert", + "", + sizeof(RpcRespEapSetCaCert), + 1, + rpc__resp__eap_set_ca_cert__field_descriptors, + rpc__resp__eap_set_ca_cert__field_indices_by_name, + 1, rpc__resp__eap_set_ca_cert__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_set_ca_cert__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define rpc__req__eap_clear_ca_cert__field_descriptors NULL +#define rpc__req__eap_clear_ca_cert__field_indices_by_name NULL +#define rpc__req__eap_clear_ca_cert__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__eap_clear_ca_cert__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_EapClearCaCert", + "RpcReqEapClearCaCert", + "RpcReqEapClearCaCert", + "", + sizeof(RpcReqEapClearCaCert), + 0, + rpc__req__eap_clear_ca_cert__field_descriptors, + rpc__req__eap_clear_ca_cert__field_indices_by_name, + 0, rpc__req__eap_clear_ca_cert__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_clear_ca_cert__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__eap_clear_ca_cert__field_descriptors[1] = +{ { - "sta_disconnected", - 2, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaDisconnected, sta_disconnected), - &wifi_event_sta_disconnected__descriptor, + offsetof(RpcRespEapClearCaCert, resp), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__sta_disconnected__field_indices_by_name[] = { +static const unsigned rpc__resp__eap_clear_ca_cert__field_indices_by_name[] = { 0, /* field[0] = resp */ - 1, /* field[1] = sta_disconnected */ }; -static const ProtobufCIntRange rpc__event__sta_disconnected__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_clear_ca_cert__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__event__sta_disconnected__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_clear_ca_cert__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_StaDisconnected", - "RpcEventStaDisconnected", - "RpcEventStaDisconnected", + "Rpc_Resp_EapClearCaCert", + "RpcRespEapClearCaCert", + "RpcRespEapClearCaCert", "", - sizeof(RpcEventStaDisconnected), - 2, - rpc__event__sta_disconnected__field_descriptors, - rpc__event__sta_disconnected__field_indices_by_name, - 1, rpc__event__sta_disconnected__number_ranges, - (ProtobufCMessageInit) rpc__event__sta_disconnected__init, + sizeof(RpcRespEapClearCaCert), + 1, + rpc__resp__eap_clear_ca_cert__field_descriptors, + rpc__resp__eap_clear_ca_cert__field_indices_by_name, + 1, rpc__resp__eap_clear_ca_cert__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_clear_ca_cert__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__dhcp_dns_status__field_descriptors[10] = +static const ProtobufCFieldDescriptor rpc__req__eap_set_certificate_and_key__field_descriptors[6] = { { - "iface", + "client_cert", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcEventDhcpDnsStatus, iface), + offsetof(RpcReqEapSetCertificateAndKey, client_cert), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "net_link_up", + "client_cert_len", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventDhcpDnsStatus, net_link_up), + offsetof(RpcReqEapSetCertificateAndKey, client_cert_len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dhcp_up", + "private_key", 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcEventDhcpDnsStatus, dhcp_up), + offsetof(RpcReqEapSetCertificateAndKey, private_key), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dhcp_ip", + "private_key_len", 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventDhcpDnsStatus, dhcp_ip), + offsetof(RpcReqEapSetCertificateAndKey, private_key_len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dhcp_nm", + "private_key_password", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcEventDhcpDnsStatus, dhcp_nm), + offsetof(RpcReqEapSetCertificateAndKey, private_key_password), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dhcp_gw", + "private_key_passwd_len", 6, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventDhcpDnsStatus, dhcp_gw), + offsetof(RpcReqEapSetCertificateAndKey, private_key_passwd_len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__req__eap_set_certificate_and_key__field_indices_by_name[] = { + 0, /* field[0] = client_cert */ + 1, /* field[1] = client_cert_len */ + 2, /* field[2] = private_key */ + 3, /* field[3] = private_key_len */ + 5, /* field[5] = private_key_passwd_len */ + 4, /* field[4] = private_key_password */ +}; +static const ProtobufCIntRange rpc__req__eap_set_certificate_and_key__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 6 } +}; +const ProtobufCMessageDescriptor rpc__req__eap_set_certificate_and_key__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_EapSetCertificateAndKey", + "RpcReqEapSetCertificateAndKey", + "RpcReqEapSetCertificateAndKey", + "", + sizeof(RpcReqEapSetCertificateAndKey), + 6, + rpc__req__eap_set_certificate_and_key__field_descriptors, + rpc__req__eap_set_certificate_and_key__field_indices_by_name, + 1, rpc__req__eap_set_certificate_and_key__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_set_certificate_and_key__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__eap_set_certificate_and_key__field_descriptors[1] = +{ { - "dns_up", - 7, + "resp", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventDhcpDnsStatus, dns_up), + offsetof(RpcRespEapSetCertificateAndKey, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__eap_set_certificate_and_key__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__eap_set_certificate_and_key__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__eap_set_certificate_and_key__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_EapSetCertificateAndKey", + "RpcRespEapSetCertificateAndKey", + "RpcRespEapSetCertificateAndKey", + "", + sizeof(RpcRespEapSetCertificateAndKey), + 1, + rpc__resp__eap_set_certificate_and_key__field_descriptors, + rpc__resp__eap_set_certificate_and_key__field_indices_by_name, + 1, rpc__resp__eap_set_certificate_and_key__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_set_certificate_and_key__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define rpc__req__eap_clear_certificate_and_key__field_descriptors NULL +#define rpc__req__eap_clear_certificate_and_key__field_indices_by_name NULL +#define rpc__req__eap_clear_certificate_and_key__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__eap_clear_certificate_and_key__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_EapClearCertificateAndKey", + "RpcReqEapClearCertificateAndKey", + "RpcReqEapClearCertificateAndKey", + "", + sizeof(RpcReqEapClearCertificateAndKey), + 0, + rpc__req__eap_clear_certificate_and_key__field_descriptors, + rpc__req__eap_clear_certificate_and_key__field_indices_by_name, + 0, rpc__req__eap_clear_certificate_and_key__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_clear_certificate_and_key__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__eap_clear_certificate_and_key__field_descriptors[1] = +{ { - "dns_ip", - 8, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventDhcpDnsStatus, dns_ip), + offsetof(RpcRespEapClearCertificateAndKey, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__eap_clear_certificate_and_key__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__eap_clear_certificate_and_key__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__eap_clear_certificate_and_key__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_EapClearCertificateAndKey", + "RpcRespEapClearCertificateAndKey", + "RpcRespEapClearCertificateAndKey", + "", + sizeof(RpcRespEapClearCertificateAndKey), + 1, + rpc__resp__eap_clear_certificate_and_key__field_descriptors, + rpc__resp__eap_clear_certificate_and_key__field_indices_by_name, + 1, rpc__resp__eap_clear_certificate_and_key__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_clear_certificate_and_key__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__eap_set_disable_time_check__field_descriptors[1] = +{ { - "dns_type", - 9, + "disable", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(RpcEventDhcpDnsStatus, dns_type), + offsetof(RpcReqEapSetDisableTimeCheck, disable), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__req__eap_set_disable_time_check__field_indices_by_name[] = { + 0, /* field[0] = disable */ +}; +static const ProtobufCIntRange rpc__req__eap_set_disable_time_check__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__req__eap_set_disable_time_check__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_EapSetDisableTimeCheck", + "RpcReqEapSetDisableTimeCheck", + "RpcReqEapSetDisableTimeCheck", + "", + sizeof(RpcReqEapSetDisableTimeCheck), + 1, + rpc__req__eap_set_disable_time_check__field_descriptors, + rpc__req__eap_set_disable_time_check__field_indices_by_name, + 1, rpc__req__eap_set_disable_time_check__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_set_disable_time_check__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__eap_set_disable_time_check__field_descriptors[1] = +{ { "resp", - 10, + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventDhcpDnsStatus, resp), + offsetof(RpcRespEapSetDisableTimeCheck, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__dhcp_dns_status__field_indices_by_name[] = { - 5, /* field[5] = dhcp_gw */ - 3, /* field[3] = dhcp_ip */ - 4, /* field[4] = dhcp_nm */ - 2, /* field[2] = dhcp_up */ - 7, /* field[7] = dns_ip */ - 8, /* field[8] = dns_type */ - 6, /* field[6] = dns_up */ - 0, /* field[0] = iface */ - 1, /* field[1] = net_link_up */ - 9, /* field[9] = resp */ +static const unsigned rpc__resp__eap_set_disable_time_check__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__event__dhcp_dns_status__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_set_disable_time_check__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 10 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__event__dhcp_dns_status__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_set_disable_time_check__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_DhcpDnsStatus", - "RpcEventDhcpDnsStatus", - "RpcEventDhcpDnsStatus", + "Rpc_Resp_EapSetDisableTimeCheck", + "RpcRespEapSetDisableTimeCheck", + "RpcRespEapSetDisableTimeCheck", "", - sizeof(RpcEventDhcpDnsStatus), - 10, - rpc__event__dhcp_dns_status__field_descriptors, - rpc__event__dhcp_dns_status__field_indices_by_name, - 1, rpc__event__dhcp_dns_status__number_ranges, - (ProtobufCMessageInit) rpc__event__dhcp_dns_status__init, + sizeof(RpcRespEapSetDisableTimeCheck), + 1, + rpc__resp__eap_set_disable_time_check__field_descriptors, + rpc__resp__eap_set_disable_time_check__field_indices_by_name, + 1, rpc__resp__eap_set_disable_time_check__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_set_disable_time_check__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__sta_itwt_setup__field_descriptors[5] = +#define rpc__req__eap_get_disable_time_check__field_descriptors NULL +#define rpc__req__eap_get_disable_time_check__field_indices_by_name NULL +#define rpc__req__eap_get_disable_time_check__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__eap_get_disable_time_check__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_EapGetDisableTimeCheck", + "RpcReqEapGetDisableTimeCheck", + "RpcReqEapGetDisableTimeCheck", + "", + sizeof(RpcReqEapGetDisableTimeCheck), + 0, + rpc__req__eap_get_disable_time_check__field_descriptors, + rpc__req__eap_get_disable_time_check__field_indices_by_name, + 0, rpc__req__eap_get_disable_time_check__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_get_disable_time_check__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__eap_get_disable_time_check__field_descriptors[2] = { { "resp", @@ -18664,153 +22356,405 @@ static const ProtobufCFieldDescriptor rpc__event__sta_itwt_setup__field_descript PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaItwtSetup, resp), + offsetof(RpcRespEapGetDisableTimeCheck, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "config", + "disable", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(RpcEventStaItwtSetup, config), - &wifi_itwt_setup_config__descriptor, + offsetof(RpcRespEapGetDisableTimeCheck, disable), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__eap_get_disable_time_check__field_indices_by_name[] = { + 1, /* field[1] = disable */ + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__eap_get_disable_time_check__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor rpc__resp__eap_get_disable_time_check__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_EapGetDisableTimeCheck", + "RpcRespEapGetDisableTimeCheck", + "RpcRespEapGetDisableTimeCheck", + "", + sizeof(RpcRespEapGetDisableTimeCheck), + 2, + rpc__resp__eap_get_disable_time_check__field_descriptors, + rpc__resp__eap_get_disable_time_check__field_indices_by_name, + 1, rpc__resp__eap_get_disable_time_check__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_get_disable_time_check__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__eap_set_ttls_phase2_method__field_descriptors[1] = +{ { - "status", - 3, + "type", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcReqEapSetTtlsPhase2Method, type), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__req__eap_set_ttls_phase2_method__field_indices_by_name[] = { + 0, /* field[0] = type */ +}; +static const ProtobufCIntRange rpc__req__eap_set_ttls_phase2_method__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__req__eap_set_ttls_phase2_method__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_EapSetTtlsPhase2Method", + "RpcReqEapSetTtlsPhase2Method", + "RpcReqEapSetTtlsPhase2Method", + "", + sizeof(RpcReqEapSetTtlsPhase2Method), + 1, + rpc__req__eap_set_ttls_phase2_method__field_descriptors, + rpc__req__eap_set_ttls_phase2_method__field_indices_by_name, + 1, rpc__req__eap_set_ttls_phase2_method__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_set_ttls_phase2_method__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__eap_set_ttls_phase2_method__field_descriptors[1] = +{ + { + "resp", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespEapSetTtlsPhase2Method, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__resp__eap_set_ttls_phase2_method__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__eap_set_ttls_phase2_method__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__eap_set_ttls_phase2_method__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_EapSetTtlsPhase2Method", + "RpcRespEapSetTtlsPhase2Method", + "RpcRespEapSetTtlsPhase2Method", + "", + sizeof(RpcRespEapSetTtlsPhase2Method), + 1, + rpc__resp__eap_set_ttls_phase2_method__field_descriptors, + rpc__resp__eap_set_ttls_phase2_method__field_indices_by_name, + 1, rpc__resp__eap_set_ttls_phase2_method__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_set_ttls_phase2_method__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__eap_set_suiteb192bit_certification__field_descriptors[1] = +{ + { + "enable", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(RpcReqEapSetSuiteb192bitCertification, enable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__req__eap_set_suiteb192bit_certification__field_indices_by_name[] = { + 0, /* field[0] = enable */ +}; +static const ProtobufCIntRange rpc__req__eap_set_suiteb192bit_certification__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__req__eap_set_suiteb192bit_certification__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_EapSetSuiteb192bitCertification", + "RpcReqEapSetSuiteb192bitCertification", + "RpcReqEapSetSuiteb192bitCertification", + "", + sizeof(RpcReqEapSetSuiteb192bitCertification), + 1, + rpc__req__eap_set_suiteb192bit_certification__field_descriptors, + rpc__req__eap_set_suiteb192bit_certification__field_indices_by_name, + 1, rpc__req__eap_set_suiteb192bit_certification__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_set_suiteb192bit_certification__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__eap_set_suiteb192bit_certification__field_descriptors[1] = +{ + { + "resp", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaItwtSetup, status), + offsetof(RpcRespEapSetSuiteb192bitCertification, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__resp__eap_set_suiteb192bit_certification__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__eap_set_suiteb192bit_certification__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__eap_set_suiteb192bit_certification__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_EapSetSuiteb192bitCertification", + "RpcRespEapSetSuiteb192bitCertification", + "RpcRespEapSetSuiteb192bitCertification", + "", + sizeof(RpcRespEapSetSuiteb192bitCertification), + 1, + rpc__resp__eap_set_suiteb192bit_certification__field_descriptors, + rpc__resp__eap_set_suiteb192bit_certification__field_indices_by_name, + 1, rpc__resp__eap_set_suiteb192bit_certification__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_set_suiteb192bit_certification__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__eap_set_pac_file__field_descriptors[2] = +{ + { + "pac_file", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcReqEapSetPacFile, pac_file), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "reason", - 4, + "pac_file_len", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaItwtSetup, reason), + offsetof(RpcReqEapSetPacFile, pac_file_len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__req__eap_set_pac_file__field_indices_by_name[] = { + 0, /* field[0] = pac_file */ + 1, /* field[1] = pac_file_len */ +}; +static const ProtobufCIntRange rpc__req__eap_set_pac_file__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor rpc__req__eap_set_pac_file__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_EapSetPacFile", + "RpcReqEapSetPacFile", + "RpcReqEapSetPacFile", + "", + sizeof(RpcReqEapSetPacFile), + 2, + rpc__req__eap_set_pac_file__field_descriptors, + rpc__req__eap_set_pac_file__field_indices_by_name, + 1, rpc__req__eap_set_pac_file__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_set_pac_file__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__eap_set_pac_file__field_descriptors[1] = +{ { - "target_wake_time", - 5, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT64, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaItwtSetup, target_wake_time), + offsetof(RpcRespEapSetPacFile, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__sta_itwt_setup__field_indices_by_name[] = { - 1, /* field[1] = config */ - 3, /* field[3] = reason */ +static const unsigned rpc__resp__eap_set_pac_file__field_indices_by_name[] = { 0, /* field[0] = resp */ - 2, /* field[2] = status */ - 4, /* field[4] = target_wake_time */ }; -static const ProtobufCIntRange rpc__event__sta_itwt_setup__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_set_pac_file__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 5 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__event__sta_itwt_setup__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_set_pac_file__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_StaItwtSetup", - "RpcEventStaItwtSetup", - "RpcEventStaItwtSetup", + "Rpc_Resp_EapSetPacFile", + "RpcRespEapSetPacFile", + "RpcRespEapSetPacFile", "", - sizeof(RpcEventStaItwtSetup), - 5, - rpc__event__sta_itwt_setup__field_descriptors, - rpc__event__sta_itwt_setup__field_indices_by_name, - 1, rpc__event__sta_itwt_setup__number_ranges, - (ProtobufCMessageInit) rpc__event__sta_itwt_setup__init, + sizeof(RpcRespEapSetPacFile), + 1, + rpc__resp__eap_set_pac_file__field_descriptors, + rpc__resp__eap_set_pac_file__field_indices_by_name, + 1, rpc__resp__eap_set_pac_file__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_set_pac_file__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__sta_itwt_teardown__field_descriptors[3] = +static const ProtobufCFieldDescriptor rpc__req__eap_set_fast_params__field_descriptors[1] = { { - "resp", + "eap_fast_config", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcEventStaItwtTeardown, resp), - NULL, + offsetof(RpcReqEapSetFastParams, eap_fast_config), + &eap_fast_config__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__req__eap_set_fast_params__field_indices_by_name[] = { + 0, /* field[0] = eap_fast_config */ +}; +static const ProtobufCIntRange rpc__req__eap_set_fast_params__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__req__eap_set_fast_params__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_EapSetFastParams", + "RpcReqEapSetFastParams", + "RpcReqEapSetFastParams", + "", + sizeof(RpcReqEapSetFastParams), + 1, + rpc__req__eap_set_fast_params__field_descriptors, + rpc__req__eap_set_fast_params__field_indices_by_name, + 1, rpc__req__eap_set_fast_params__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_set_fast_params__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__eap_set_fast_params__field_descriptors[1] = +{ { - "flow_id", - 2, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaItwtTeardown, flow_id), + offsetof(RpcRespEapSetFastParams, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__eap_set_fast_params__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__eap_set_fast_params__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__eap_set_fast_params__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_EapSetFastParams", + "RpcRespEapSetFastParams", + "RpcRespEapSetFastParams", + "", + sizeof(RpcRespEapSetFastParams), + 1, + rpc__resp__eap_set_fast_params__field_descriptors, + rpc__resp__eap_set_fast_params__field_indices_by_name, + 1, rpc__resp__eap_set_fast_params__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_set_fast_params__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__eap_use_default_cert_bundle__field_descriptors[1] = +{ { - "status", - 3, + "use_default_bundle", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(RpcEventStaItwtTeardown, status), + offsetof(RpcReqEapUseDefaultCertBundle, use_default_bundle), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__sta_itwt_teardown__field_indices_by_name[] = { - 1, /* field[1] = flow_id */ - 0, /* field[0] = resp */ - 2, /* field[2] = status */ +static const unsigned rpc__req__eap_use_default_cert_bundle__field_indices_by_name[] = { + 0, /* field[0] = use_default_bundle */ }; -static const ProtobufCIntRange rpc__event__sta_itwt_teardown__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__eap_use_default_cert_bundle__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 3 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__event__sta_itwt_teardown__descriptor = +const ProtobufCMessageDescriptor rpc__req__eap_use_default_cert_bundle__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_StaItwtTeardown", - "RpcEventStaItwtTeardown", - "RpcEventStaItwtTeardown", + "Rpc_Req_EapUseDefaultCertBundle", + "RpcReqEapUseDefaultCertBundle", + "RpcReqEapUseDefaultCertBundle", "", - sizeof(RpcEventStaItwtTeardown), - 3, - rpc__event__sta_itwt_teardown__field_descriptors, - rpc__event__sta_itwt_teardown__field_indices_by_name, - 1, rpc__event__sta_itwt_teardown__number_ranges, - (ProtobufCMessageInit) rpc__event__sta_itwt_teardown__init, + sizeof(RpcReqEapUseDefaultCertBundle), + 1, + rpc__req__eap_use_default_cert_bundle__field_descriptors, + rpc__req__eap_use_default_cert_bundle__field_indices_by_name, + 1, rpc__req__eap_use_default_cert_bundle__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_use_default_cert_bundle__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__sta_itwt_suspend__field_descriptors[4] = +static const ProtobufCFieldDescriptor rpc__resp__eap_use_default_cert_bundle__field_descriptors[1] = { { "resp", @@ -18818,76 +22762,151 @@ static const ProtobufCFieldDescriptor rpc__event__sta_itwt_suspend__field_descri PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaItwtSuspend, resp), + offsetof(RpcRespEapUseDefaultCertBundle, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__eap_use_default_cert_bundle__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__eap_use_default_cert_bundle__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__eap_use_default_cert_bundle__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_EapUseDefaultCertBundle", + "RpcRespEapUseDefaultCertBundle", + "RpcRespEapUseDefaultCertBundle", + "", + sizeof(RpcRespEapUseDefaultCertBundle), + 1, + rpc__resp__eap_use_default_cert_bundle__field_descriptors, + rpc__resp__eap_use_default_cert_bundle__field_indices_by_name, + 1, rpc__resp__eap_use_default_cert_bundle__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_use_default_cert_bundle__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__wifi_set_okc_support__field_descriptors[1] = +{ { - "status", - 2, + "enable", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(RpcEventStaItwtSuspend, status), + offsetof(RpcReqWifiSetOkcSupport, enable), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__req__wifi_set_okc_support__field_indices_by_name[] = { + 0, /* field[0] = enable */ +}; +static const ProtobufCIntRange rpc__req__wifi_set_okc_support__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__req__wifi_set_okc_support__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiSetOkcSupport", + "RpcReqWifiSetOkcSupport", + "RpcReqWifiSetOkcSupport", + "", + sizeof(RpcReqWifiSetOkcSupport), + 1, + rpc__req__wifi_set_okc_support__field_descriptors, + rpc__req__wifi_set_okc_support__field_indices_by_name, + 1, rpc__req__wifi_set_okc_support__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_okc_support__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_okc_support__field_descriptors[1] = +{ { - "flow_id_bitmap", - 3, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaItwtSuspend, flow_id_bitmap), + offsetof(RpcRespWifiSetOkcSupport, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__wifi_set_okc_support__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__wifi_set_okc_support__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__wifi_set_okc_support__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_WifiSetOkcSupport", + "RpcRespWifiSetOkcSupport", + "RpcRespWifiSetOkcSupport", + "", + sizeof(RpcRespWifiSetOkcSupport), + 1, + rpc__resp__wifi_set_okc_support__field_descriptors, + rpc__resp__wifi_set_okc_support__field_indices_by_name, + 1, rpc__resp__wifi_set_okc_support__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_okc_support__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__eap_set_domain_name__field_descriptors[1] = +{ { - "actual_suspend_time_ms", - 4, - PROTOBUF_C_LABEL_REPEATED, - PROTOBUF_C_TYPE_UINT32, - offsetof(RpcEventStaItwtSuspend, n_actual_suspend_time_ms), - offsetof(RpcEventStaItwtSuspend, actual_suspend_time_ms), + "domain_name", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcReqEapSetDomainName, domain_name), NULL, NULL, - 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ + 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__sta_itwt_suspend__field_indices_by_name[] = { - 3, /* field[3] = actual_suspend_time_ms */ - 2, /* field[2] = flow_id_bitmap */ - 0, /* field[0] = resp */ - 1, /* field[1] = status */ +static const unsigned rpc__req__eap_set_domain_name__field_indices_by_name[] = { + 0, /* field[0] = domain_name */ }; -static const ProtobufCIntRange rpc__event__sta_itwt_suspend__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__eap_set_domain_name__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 4 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__event__sta_itwt_suspend__descriptor = +const ProtobufCMessageDescriptor rpc__req__eap_set_domain_name__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_StaItwtSuspend", - "RpcEventStaItwtSuspend", - "RpcEventStaItwtSuspend", + "Rpc_Req_EapSetDomainName", + "RpcReqEapSetDomainName", + "RpcReqEapSetDomainName", "", - sizeof(RpcEventStaItwtSuspend), - 4, - rpc__event__sta_itwt_suspend__field_descriptors, - rpc__event__sta_itwt_suspend__field_indices_by_name, - 1, rpc__event__sta_itwt_suspend__number_ranges, - (ProtobufCMessageInit) rpc__event__sta_itwt_suspend__init, + sizeof(RpcReqEapSetDomainName), + 1, + rpc__req__eap_set_domain_name__field_descriptors, + rpc__req__eap_set_domain_name__field_indices_by_name, + 1, rpc__req__eap_set_domain_name__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_set_domain_name__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__sta_itwt_probe__field_descriptors[3] = +static const ProtobufCFieldDescriptor rpc__resp__eap_set_domain_name__field_descriptors[1] = { { "resp", @@ -18895,63 +22914,113 @@ static const ProtobufCFieldDescriptor rpc__event__sta_itwt_probe__field_descript PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaItwtProbe, resp), + offsetof(RpcRespEapSetDomainName, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__eap_set_domain_name__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__eap_set_domain_name__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__eap_set_domain_name__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_EapSetDomainName", + "RpcRespEapSetDomainName", + "RpcRespEapSetDomainName", + "", + sizeof(RpcRespEapSetDomainName), + 1, + rpc__resp__eap_set_domain_name__field_descriptors, + rpc__resp__eap_set_domain_name__field_indices_by_name, + 1, rpc__resp__eap_set_domain_name__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_set_domain_name__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__eap_set_eap_methods__field_descriptors[1] = +{ { - "status", - 2, + "methods", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaItwtProbe, status), + offsetof(RpcReqEapSetEapMethods, methods), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__req__eap_set_eap_methods__field_indices_by_name[] = { + 0, /* field[0] = methods */ +}; +static const ProtobufCIntRange rpc__req__eap_set_eap_methods__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__req__eap_set_eap_methods__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_EapSetEapMethods", + "RpcReqEapSetEapMethods", + "RpcReqEapSetEapMethods", + "", + sizeof(RpcReqEapSetEapMethods), + 1, + rpc__req__eap_set_eap_methods__field_descriptors, + rpc__req__eap_set_eap_methods__field_indices_by_name, + 1, rpc__req__eap_set_eap_methods__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_set_eap_methods__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__eap_set_eap_methods__field_descriptors[1] = +{ { - "reason", - 3, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaItwtProbe, reason), + offsetof(RpcRespEapSetEapMethods, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__sta_itwt_probe__field_indices_by_name[] = { - 2, /* field[2] = reason */ +static const unsigned rpc__resp__eap_set_eap_methods__field_indices_by_name[] = { 0, /* field[0] = resp */ - 1, /* field[1] = status */ }; -static const ProtobufCIntRange rpc__event__sta_itwt_probe__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_set_eap_methods__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 3 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__event__sta_itwt_probe__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_set_eap_methods__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_StaItwtProbe", - "RpcEventStaItwtProbe", - "RpcEventStaItwtProbe", + "Rpc_Resp_EapSetEapMethods", + "RpcRespEapSetEapMethods", + "RpcRespEapSetEapMethods", "", - sizeof(RpcEventStaItwtProbe), - 3, - rpc__event__sta_itwt_probe__field_descriptors, - rpc__event__sta_itwt_probe__field_indices_by_name, - 1, rpc__event__sta_itwt_probe__number_ranges, - (ProtobufCMessageInit) rpc__event__sta_itwt_probe__init, + sizeof(RpcRespEapSetEapMethods), + 1, + rpc__resp__eap_set_eap_methods__field_descriptors, + rpc__resp__eap_set_eap_methods__field_indices_by_name, + 1, rpc__resp__eap_set_eap_methods__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_set_eap_methods__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = +static const ProtobufCFieldDescriptor rpc__field_descriptors[196] = { { "msg_type", @@ -19590,193 +23659,481 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "req_wifi_get_bandwidths", - 345, + "req_wifi_get_bandwidths", + 345, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_wifi_get_bandwidths), + &rpc__req__wifi_get_bandwidths__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_wifi_set_band", + 346, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_wifi_set_band), + &rpc__req__wifi_set_band__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_wifi_get_band", + 347, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_wifi_get_band), + &rpc__req__wifi_get_band__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_wifi_set_bandmode", + 348, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_wifi_set_bandmode), + &rpc__req__wifi_set_band_mode__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_wifi_get_bandmode", + 349, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_wifi_get_bandmode), + &rpc__req__wifi_get_band_mode__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_get_coprocessor_fwversion", + 350, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_get_coprocessor_fwversion), + &rpc__req__get_coprocessor_fw_version__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_wifi_scan_get_ap_record", + 351, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_wifi_scan_get_ap_record), + &rpc__req__wifi_scan_get_ap_record__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_set_dhcp_dns", + 352, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_set_dhcp_dns), + &rpc__req__set_dhcp_dns_status__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_get_dhcp_dns", + 353, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_get_dhcp_dns), + &rpc__req__get_dhcp_dns_status__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_wifi_sta_twt_config", + 354, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_wifi_sta_twt_config), + &rpc__req__wifi_sta_twt_config__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_wifi_sta_itwt_setup", + 355, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_wifi_sta_itwt_setup), + &rpc__req__wifi_sta_itwt_setup__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_wifi_sta_itwt_teardown", + 356, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_wifi_sta_itwt_teardown), + &rpc__req__wifi_sta_itwt_teardown__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_wifi_sta_itwt_suspend", + 357, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_wifi_sta_itwt_suspend), + &rpc__req__wifi_sta_itwt_suspend__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_wifi_sta_itwt_get_flow_id_status", + 358, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_wifi_sta_itwt_get_flow_id_status), + &rpc__req__wifi_sta_itwt_get_flow_id_status__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_wifi_sta_itwt_send_probe_req", + 359, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_wifi_sta_itwt_send_probe_req), + &rpc__req__wifi_sta_itwt_send_probe_req__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_wifi_sta_itwt_set_target_wake_time_offset", + 360, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_wifi_sta_itwt_set_target_wake_time_offset), + &rpc__req__wifi_sta_itwt_set_target_wake_time_offset__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_wifi_sta_enterprise_enable", + 361, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_wifi_sta_enterprise_enable), + &rpc__req__wifi_sta_enterprise_enable__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_wifi_sta_enterprise_disable", + 362, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_wifi_sta_enterprise_disable), + &rpc__req__wifi_sta_enterprise_disable__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_eap_set_identity", + 363, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_eap_set_identity), + &rpc__req__eap_set_identity__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_eap_clear_identity", + 364, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_eap_clear_identity), + &rpc__req__eap_clear_identity__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_eap_set_username", + 365, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_eap_set_username), + &rpc__req__eap_set_username__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_eap_clear_username", + 366, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_eap_clear_username), + &rpc__req__eap_clear_username__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_eap_set_password", + 367, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_eap_set_password), + &rpc__req__eap_set_password__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_eap_clear_password", + 368, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_eap_clear_password), + &rpc__req__eap_clear_password__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_eap_set_new_password", + 369, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(Rpc, payload_case), - offsetof(Rpc, req_wifi_get_bandwidths), - &rpc__req__wifi_get_bandwidths__descriptor, + offsetof(Rpc, req_eap_set_new_password), + &rpc__req__eap_set_new_password__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "req_wifi_set_band", - 346, + "req_eap_clear_new_password", + 370, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(Rpc, payload_case), - offsetof(Rpc, req_wifi_set_band), - &rpc__req__wifi_set_band__descriptor, + offsetof(Rpc, req_eap_clear_new_password), + &rpc__req__eap_clear_new_password__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "req_wifi_get_band", - 347, + "req_eap_set_ca_cert", + 371, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(Rpc, payload_case), - offsetof(Rpc, req_wifi_get_band), - &rpc__req__wifi_get_band__descriptor, + offsetof(Rpc, req_eap_set_ca_cert), + &rpc__req__eap_set_ca_cert__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "req_wifi_set_bandmode", - 348, + "req_eap_clear_ca_cert", + 372, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(Rpc, payload_case), - offsetof(Rpc, req_wifi_set_bandmode), - &rpc__req__wifi_set_band_mode__descriptor, + offsetof(Rpc, req_eap_clear_ca_cert), + &rpc__req__eap_clear_ca_cert__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "req_wifi_get_bandmode", - 349, + "req_eap_set_certificate_and_key", + 373, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(Rpc, payload_case), - offsetof(Rpc, req_wifi_get_bandmode), - &rpc__req__wifi_get_band_mode__descriptor, + offsetof(Rpc, req_eap_set_certificate_and_key), + &rpc__req__eap_set_certificate_and_key__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "req_get_coprocessor_fwversion", - 350, + "req_eap_clear_certificate_and_key", + 374, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(Rpc, payload_case), - offsetof(Rpc, req_get_coprocessor_fwversion), - &rpc__req__get_coprocessor_fw_version__descriptor, + offsetof(Rpc, req_eap_clear_certificate_and_key), + &rpc__req__eap_clear_certificate_and_key__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "req_wifi_scan_get_ap_record", - 351, + "req_eap_get_disable_time_check", + 375, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(Rpc, payload_case), - offsetof(Rpc, req_wifi_scan_get_ap_record), - &rpc__req__wifi_scan_get_ap_record__descriptor, + offsetof(Rpc, req_eap_get_disable_time_check), + &rpc__req__eap_get_disable_time_check__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "req_set_dhcp_dns", - 352, + "req_eap_set_ttls_phase2_method", + 376, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(Rpc, payload_case), - offsetof(Rpc, req_set_dhcp_dns), - &rpc__req__set_dhcp_dns_status__descriptor, + offsetof(Rpc, req_eap_set_ttls_phase2_method), + &rpc__req__eap_set_ttls_phase2_method__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "req_get_dhcp_dns", - 353, + "req_eap_set_suiteb_certification", + 377, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(Rpc, payload_case), - offsetof(Rpc, req_get_dhcp_dns), - &rpc__req__get_dhcp_dns_status__descriptor, + offsetof(Rpc, req_eap_set_suiteb_certification), + &rpc__req__eap_set_suiteb192bit_certification__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "req_wifi_sta_twt_config", - 354, + "req_eap_set_pac_file", + 378, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(Rpc, payload_case), - offsetof(Rpc, req_wifi_sta_twt_config), - &rpc__req__wifi_sta_twt_config__descriptor, + offsetof(Rpc, req_eap_set_pac_file), + &rpc__req__eap_set_pac_file__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "req_wifi_sta_itwt_setup", - 355, + "req_eap_set_fast_params", + 379, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(Rpc, payload_case), - offsetof(Rpc, req_wifi_sta_itwt_setup), - &rpc__req__wifi_sta_itwt_setup__descriptor, + offsetof(Rpc, req_eap_set_fast_params), + &rpc__req__eap_set_fast_params__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "req_wifi_sta_itwt_teardown", - 356, + "req_eap_use_default_cert_bundle", + 380, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(Rpc, payload_case), - offsetof(Rpc, req_wifi_sta_itwt_teardown), - &rpc__req__wifi_sta_itwt_teardown__descriptor, + offsetof(Rpc, req_eap_use_default_cert_bundle), + &rpc__req__eap_use_default_cert_bundle__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "req_wifi_sta_itwt_suspend", - 357, + "req_wifi_set_okc_support", + 381, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(Rpc, payload_case), - offsetof(Rpc, req_wifi_sta_itwt_suspend), - &rpc__req__wifi_sta_itwt_suspend__descriptor, + offsetof(Rpc, req_wifi_set_okc_support), + &rpc__req__wifi_set_okc_support__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "req_wifi_sta_itwt_get_flow_id_status", - 358, + "req_eap_set_domain_name", + 382, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(Rpc, payload_case), - offsetof(Rpc, req_wifi_sta_itwt_get_flow_id_status), - &rpc__req__wifi_sta_itwt_get_flow_id_status__descriptor, + offsetof(Rpc, req_eap_set_domain_name), + &rpc__req__eap_set_domain_name__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "req_wifi_sta_itwt_send_probe_req", - 359, + "req_eap_set_disable_time_check", + 383, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(Rpc, payload_case), - offsetof(Rpc, req_wifi_sta_itwt_send_probe_req), - &rpc__req__wifi_sta_itwt_send_probe_req__descriptor, + offsetof(Rpc, req_eap_set_disable_time_check), + &rpc__req__eap_set_disable_time_check__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "req_wifi_sta_itwt_set_target_wake_time_offset", - 360, + "req_eap_set_eap_methods", + 384, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(Rpc, payload_case), - offsetof(Rpc, req_wifi_sta_itwt_set_target_wake_time_offset), - &rpc__req__wifi_sta_itwt_set_target_wake_time_offset__descriptor, + offsetof(Rpc, req_eap_set_eap_methods), + &rpc__req__eap_set_eap_methods__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ @@ -20573,6 +24930,294 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "resp_wifi_sta_enterprise_enable", + 617, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_wifi_sta_enterprise_enable), + &rpc__resp__wifi_sta_enterprise_enable__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_wifi_sta_enterprise_disable", + 618, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_wifi_sta_enterprise_disable), + &rpc__resp__wifi_sta_enterprise_disable__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_eap_set_identity", + 619, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_eap_set_identity), + &rpc__resp__eap_set_identity__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_eap_clear_identity", + 620, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_eap_clear_identity), + &rpc__resp__eap_clear_identity__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_eap_set_username", + 621, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_eap_set_username), + &rpc__resp__eap_set_username__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_eap_clear_username", + 622, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_eap_clear_username), + &rpc__resp__eap_clear_username__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_eap_set_password", + 623, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_eap_set_password), + &rpc__resp__eap_set_password__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_eap_clear_password", + 624, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_eap_clear_password), + &rpc__resp__eap_clear_password__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_eap_set_new_password", + 625, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_eap_set_new_password), + &rpc__resp__eap_set_new_password__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_eap_clear_new_password", + 626, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_eap_clear_new_password), + &rpc__resp__eap_clear_new_password__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_eap_set_ca_cert", + 627, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_eap_set_ca_cert), + &rpc__resp__eap_set_ca_cert__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_eap_clear_ca_cert", + 628, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_eap_clear_ca_cert), + &rpc__resp__eap_clear_ca_cert__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_eap_set_certificate_and_key", + 629, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_eap_set_certificate_and_key), + &rpc__resp__eap_set_certificate_and_key__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_eap_clear_certificate_and_key", + 630, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_eap_clear_certificate_and_key), + &rpc__resp__eap_clear_certificate_and_key__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_eap_get_disable_time_check", + 631, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_eap_get_disable_time_check), + &rpc__resp__eap_get_disable_time_check__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_eap_set_ttls_phase2_method", + 632, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_eap_set_ttls_phase2_method), + &rpc__resp__eap_set_ttls_phase2_method__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_eap_set_suiteb_certification", + 633, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_eap_set_suiteb_certification), + &rpc__resp__eap_set_suiteb192bit_certification__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_eap_set_pac_file", + 634, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_eap_set_pac_file), + &rpc__resp__eap_set_pac_file__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_eap_set_fast_params", + 635, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_eap_set_fast_params), + &rpc__resp__eap_set_fast_params__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_eap_use_default_cert_bundle", + 636, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_eap_use_default_cert_bundle), + &rpc__resp__eap_use_default_cert_bundle__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_wifi_set_okc_support", + 637, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_wifi_set_okc_support), + &rpc__resp__wifi_set_okc_support__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_eap_set_domain_name", + 638, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_eap_set_domain_name), + &rpc__resp__eap_set_domain_name__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_eap_set_disable_time_check", + 639, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_eap_set_disable_time_check), + &rpc__resp__eap_set_disable_time_check__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_eap_set_eap_methods", + 640, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_eap_set_eap_methods), + &rpc__resp__eap_set_eap_methods__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, { "event_esp_init", 769, @@ -20731,22 +25376,43 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[148] = }, }; static const unsigned rpc__field_indices_by_name[] = { - 137, /* field[137] = event_ap_sta_connected */ - 138, /* field[138] = event_ap_sta_disconnected */ - 143, /* field[143] = event_dhcp_dns */ - 135, /* field[135] = event_esp_init */ - 136, /* field[136] = event_heartbeat */ - 141, /* field[141] = event_sta_connected */ - 142, /* field[142] = event_sta_disconnected */ - 147, /* field[147] = event_sta_itwt_probe */ - 144, /* field[144] = event_sta_itwt_setup */ - 146, /* field[146] = event_sta_itwt_suspend */ - 145, /* field[145] = event_sta_itwt_teardown */ - 140, /* field[140] = event_sta_scan_done */ - 139, /* field[139] = event_wifi_event_no_args */ + 185, /* field[185] = event_ap_sta_connected */ + 186, /* field[186] = event_ap_sta_disconnected */ + 191, /* field[191] = event_dhcp_dns */ + 183, /* field[183] = event_esp_init */ + 184, /* field[184] = event_heartbeat */ + 189, /* field[189] = event_sta_connected */ + 190, /* field[190] = event_sta_disconnected */ + 195, /* field[195] = event_sta_itwt_probe */ + 192, /* field[192] = event_sta_itwt_setup */ + 194, /* field[194] = event_sta_itwt_suspend */ + 193, /* field[193] = event_sta_itwt_teardown */ + 188, /* field[188] = event_sta_scan_done */ + 187, /* field[187] = event_wifi_event_no_args */ 1, /* field[1] = msg_id */ 0, /* field[0] = msg_type */ 14, /* field[14] = req_config_heartbeat */ + 80, /* field[80] = req_eap_clear_ca_cert */ + 82, /* field[82] = req_eap_clear_certificate_and_key */ + 72, /* field[72] = req_eap_clear_identity */ + 78, /* field[78] = req_eap_clear_new_password */ + 76, /* field[76] = req_eap_clear_password */ + 74, /* field[74] = req_eap_clear_username */ + 83, /* field[83] = req_eap_get_disable_time_check */ + 79, /* field[79] = req_eap_set_ca_cert */ + 81, /* field[81] = req_eap_set_certificate_and_key */ + 91, /* field[91] = req_eap_set_disable_time_check */ + 90, /* field[90] = req_eap_set_domain_name */ + 92, /* field[92] = req_eap_set_eap_methods */ + 87, /* field[87] = req_eap_set_fast_params */ + 71, /* field[71] = req_eap_set_identity */ + 77, /* field[77] = req_eap_set_new_password */ + 86, /* field[86] = req_eap_set_pac_file */ + 75, /* field[75] = req_eap_set_password */ + 85, /* field[85] = req_eap_set_suiteb_certification */ + 84, /* field[84] = req_eap_set_ttls_phase2_method */ + 73, /* field[73] = req_eap_set_username */ + 88, /* field[88] = req_eap_use_default_cert_bundle */ 58, /* field[58] = req_get_coprocessor_fwversion */ 61, /* field[61] = req_get_dhcp_dns */ 3, /* field[3] = req_get_mac_address */ @@ -20795,10 +25461,13 @@ static const unsigned rpc__field_indices_by_name[] = { 38, /* field[38] = req_wifi_set_country */ 45, /* field[45] = req_wifi_set_country_code */ 43, /* field[43] = req_wifi_set_inactive_time */ + 89, /* field[89] = req_wifi_set_okc_support */ 32, /* field[32] = req_wifi_set_protocol */ 50, /* field[50] = req_wifi_set_protocols */ 7, /* field[7] = req_wifi_set_ps */ 42, /* field[42] = req_wifi_set_storage */ + 70, /* field[70] = req_wifi_sta_enterprise_disable */ + 69, /* field[69] = req_wifi_sta_enterprise_enable */ 47, /* field[47] = req_wifi_sta_get_aid */ 31, /* field[31] = req_wifi_sta_get_ap_info */ 48, /* field[48] = req_wifi_sta_get_negotiated_phymode */ @@ -20812,72 +25481,96 @@ static const unsigned rpc__field_indices_by_name[] = { 62, /* field[62] = req_wifi_sta_twt_config */ 17, /* field[17] = req_wifi_start */ 18, /* field[18] = req_wifi_stop */ - 80, /* field[80] = resp_config_heartbeat */ - 124, /* field[124] = resp_get_coprocessor_fwversion */ - 127, /* field[127] = resp_get_dhcp_dns */ - 69, /* field[69] = resp_get_mac_address */ - 79, /* field[79] = resp_get_wifi_max_tx_power */ - 71, /* field[71] = resp_get_wifi_mode */ - 75, /* field[75] = resp_ota_begin */ - 77, /* field[77] = resp_ota_end */ - 76, /* field[76] = resp_ota_write */ - 126, /* field[126] = resp_set_dhcp_dns */ - 70, /* field[70] = resp_set_mac_address */ - 78, /* field[78] = resp_set_wifi_max_tx_power */ - 72, /* field[72] = resp_set_wifi_mode */ - 107, /* field[107] = resp_wifi_ap_get_sta_aid */ - 106, /* field[106] = resp_wifi_ap_get_sta_list */ - 93, /* field[93] = resp_wifi_clear_ap_list */ - 95, /* field[95] = resp_wifi_clear_fast_connect */ - 85, /* field[85] = resp_wifi_connect */ - 96, /* field[96] = resp_wifi_deauth_sta */ - 82, /* field[82] = resp_wifi_deinit */ - 86, /* field[86] = resp_wifi_disconnect */ - 121, /* field[121] = resp_wifi_get_band */ - 123, /* field[123] = resp_wifi_get_bandmode */ - 101, /* field[101] = resp_wifi_get_bandwidth */ - 119, /* field[119] = resp_wifi_get_bandwidths */ - 103, /* field[103] = resp_wifi_get_channel */ - 88, /* field[88] = resp_wifi_get_config */ - 105, /* field[105] = resp_wifi_get_country */ - 112, /* field[112] = resp_wifi_get_country_code */ - 110, /* field[110] = resp_wifi_get_inactive_time */ - 99, /* field[99] = resp_wifi_get_protocol */ - 117, /* field[117] = resp_wifi_get_protocols */ - 74, /* field[74] = resp_wifi_get_ps */ - 81, /* field[81] = resp_wifi_init */ - 94, /* field[94] = resp_wifi_restore */ - 91, /* field[91] = resp_wifi_scan_get_ap_num */ - 125, /* field[125] = resp_wifi_scan_get_ap_record */ - 92, /* field[92] = resp_wifi_scan_get_ap_records */ - 89, /* field[89] = resp_wifi_scan_start */ - 90, /* field[90] = resp_wifi_scan_stop */ - 120, /* field[120] = resp_wifi_set_band */ - 122, /* field[122] = resp_wifi_set_bandmode */ - 100, /* field[100] = resp_wifi_set_bandwidth */ - 118, /* field[118] = resp_wifi_set_bandwidths */ - 102, /* field[102] = resp_wifi_set_channel */ - 87, /* field[87] = resp_wifi_set_config */ - 104, /* field[104] = resp_wifi_set_country */ - 111, /* field[111] = resp_wifi_set_country_code */ - 109, /* field[109] = resp_wifi_set_inactive_time */ - 98, /* field[98] = resp_wifi_set_protocol */ - 116, /* field[116] = resp_wifi_set_protocols */ - 73, /* field[73] = resp_wifi_set_ps */ - 108, /* field[108] = resp_wifi_set_storage */ - 113, /* field[113] = resp_wifi_sta_get_aid */ - 97, /* field[97] = resp_wifi_sta_get_ap_info */ - 114, /* field[114] = resp_wifi_sta_get_negotiated_phymode */ - 115, /* field[115] = resp_wifi_sta_get_rssi */ - 132, /* field[132] = resp_wifi_sta_itwt_get_flow_id_status */ - 133, /* field[133] = resp_wifi_sta_itwt_send_probe_req */ - 134, /* field[134] = resp_wifi_sta_itwt_set_target_wake_time_offset */ - 129, /* field[129] = resp_wifi_sta_itwt_setup */ - 131, /* field[131] = resp_wifi_sta_itwt_suspend */ - 130, /* field[130] = resp_wifi_sta_itwt_teardown */ - 128, /* field[128] = resp_wifi_sta_twt_config */ - 83, /* field[83] = resp_wifi_start */ - 84, /* field[84] = resp_wifi_stop */ + 104, /* field[104] = resp_config_heartbeat */ + 170, /* field[170] = resp_eap_clear_ca_cert */ + 172, /* field[172] = resp_eap_clear_certificate_and_key */ + 162, /* field[162] = resp_eap_clear_identity */ + 168, /* field[168] = resp_eap_clear_new_password */ + 166, /* field[166] = resp_eap_clear_password */ + 164, /* field[164] = resp_eap_clear_username */ + 173, /* field[173] = resp_eap_get_disable_time_check */ + 169, /* field[169] = resp_eap_set_ca_cert */ + 171, /* field[171] = resp_eap_set_certificate_and_key */ + 181, /* field[181] = resp_eap_set_disable_time_check */ + 180, /* field[180] = resp_eap_set_domain_name */ + 182, /* field[182] = resp_eap_set_eap_methods */ + 177, /* field[177] = resp_eap_set_fast_params */ + 161, /* field[161] = resp_eap_set_identity */ + 167, /* field[167] = resp_eap_set_new_password */ + 176, /* field[176] = resp_eap_set_pac_file */ + 165, /* field[165] = resp_eap_set_password */ + 175, /* field[175] = resp_eap_set_suiteb_certification */ + 174, /* field[174] = resp_eap_set_ttls_phase2_method */ + 163, /* field[163] = resp_eap_set_username */ + 178, /* field[178] = resp_eap_use_default_cert_bundle */ + 148, /* field[148] = resp_get_coprocessor_fwversion */ + 151, /* field[151] = resp_get_dhcp_dns */ + 93, /* field[93] = resp_get_mac_address */ + 103, /* field[103] = resp_get_wifi_max_tx_power */ + 95, /* field[95] = resp_get_wifi_mode */ + 99, /* field[99] = resp_ota_begin */ + 101, /* field[101] = resp_ota_end */ + 100, /* field[100] = resp_ota_write */ + 150, /* field[150] = resp_set_dhcp_dns */ + 94, /* field[94] = resp_set_mac_address */ + 102, /* field[102] = resp_set_wifi_max_tx_power */ + 96, /* field[96] = resp_set_wifi_mode */ + 131, /* field[131] = resp_wifi_ap_get_sta_aid */ + 130, /* field[130] = resp_wifi_ap_get_sta_list */ + 117, /* field[117] = resp_wifi_clear_ap_list */ + 119, /* field[119] = resp_wifi_clear_fast_connect */ + 109, /* field[109] = resp_wifi_connect */ + 120, /* field[120] = resp_wifi_deauth_sta */ + 106, /* field[106] = resp_wifi_deinit */ + 110, /* field[110] = resp_wifi_disconnect */ + 145, /* field[145] = resp_wifi_get_band */ + 147, /* field[147] = resp_wifi_get_bandmode */ + 125, /* field[125] = resp_wifi_get_bandwidth */ + 143, /* field[143] = resp_wifi_get_bandwidths */ + 127, /* field[127] = resp_wifi_get_channel */ + 112, /* field[112] = resp_wifi_get_config */ + 129, /* field[129] = resp_wifi_get_country */ + 136, /* field[136] = resp_wifi_get_country_code */ + 134, /* field[134] = resp_wifi_get_inactive_time */ + 123, /* field[123] = resp_wifi_get_protocol */ + 141, /* field[141] = resp_wifi_get_protocols */ + 98, /* field[98] = resp_wifi_get_ps */ + 105, /* field[105] = resp_wifi_init */ + 118, /* field[118] = resp_wifi_restore */ + 115, /* field[115] = resp_wifi_scan_get_ap_num */ + 149, /* field[149] = resp_wifi_scan_get_ap_record */ + 116, /* field[116] = resp_wifi_scan_get_ap_records */ + 113, /* field[113] = resp_wifi_scan_start */ + 114, /* field[114] = resp_wifi_scan_stop */ + 144, /* field[144] = resp_wifi_set_band */ + 146, /* field[146] = resp_wifi_set_bandmode */ + 124, /* field[124] = resp_wifi_set_bandwidth */ + 142, /* field[142] = resp_wifi_set_bandwidths */ + 126, /* field[126] = resp_wifi_set_channel */ + 111, /* field[111] = resp_wifi_set_config */ + 128, /* field[128] = resp_wifi_set_country */ + 135, /* field[135] = resp_wifi_set_country_code */ + 133, /* field[133] = resp_wifi_set_inactive_time */ + 179, /* field[179] = resp_wifi_set_okc_support */ + 122, /* field[122] = resp_wifi_set_protocol */ + 140, /* field[140] = resp_wifi_set_protocols */ + 97, /* field[97] = resp_wifi_set_ps */ + 132, /* field[132] = resp_wifi_set_storage */ + 160, /* field[160] = resp_wifi_sta_enterprise_disable */ + 159, /* field[159] = resp_wifi_sta_enterprise_enable */ + 137, /* field[137] = resp_wifi_sta_get_aid */ + 121, /* field[121] = resp_wifi_sta_get_ap_info */ + 138, /* field[138] = resp_wifi_sta_get_negotiated_phymode */ + 139, /* field[139] = resp_wifi_sta_get_rssi */ + 156, /* field[156] = resp_wifi_sta_itwt_get_flow_id_status */ + 157, /* field[157] = resp_wifi_sta_itwt_send_probe_req */ + 158, /* field[158] = resp_wifi_sta_itwt_set_target_wake_time_offset */ + 153, /* field[153] = resp_wifi_sta_itwt_setup */ + 155, /* field[155] = resp_wifi_sta_itwt_suspend */ + 154, /* field[154] = resp_wifi_sta_itwt_teardown */ + 152, /* field[152] = resp_wifi_sta_twt_config */ + 107, /* field[107] = resp_wifi_start */ + 108, /* field[108] = resp_wifi_stop */ 2, /* field[2] = uid */ }; static const ProtobufCIntRange rpc__number_ranges[18 + 1] = @@ -20891,16 +25584,16 @@ static const ProtobufCIntRange rpc__number_ranges[18 + 1] = { 334, 45 }, { 338, 47 }, { 341, 49 }, - { 513, 69 }, - { 526, 73 }, - { 553, 98 }, - { 567, 106 }, - { 581, 109 }, - { 590, 111 }, - { 594, 113 }, - { 597, 115 }, - { 769, 135 }, - { 0, 148 } + { 513, 93 }, + { 526, 97 }, + { 553, 122 }, + { 567, 130 }, + { 581, 133 }, + { 590, 135 }, + { 594, 137 }, + { 597, 139 }, + { 769, 183 }, + { 0, 196 } }; const ProtobufCMessageDescriptor rpc__descriptor = { @@ -20910,7 +25603,7 @@ const ProtobufCMessageDescriptor rpc__descriptor = "Rpc", "", sizeof(Rpc), - 148, + 196, rpc__field_descriptors, rpc__field_indices_by_name, 18, rpc__number_ranges, @@ -21087,7 +25780,7 @@ const ProtobufCEnumDescriptor rpc_type__descriptor = rpc_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; -static const ProtobufCEnumValue rpc_id__enum_values_by_number[206] = +static const ProtobufCEnumValue rpc_id__enum_values_by_number[254] = { { "MsgId_Invalid", "RPC_ID__MsgId_Invalid", 0 }, { "Req_Base", "RPC_ID__Req_Base", 256 }, @@ -21184,7 +25877,31 @@ static const ProtobufCEnumValue rpc_id__enum_values_by_number[206] = { "Req_WifiStaItwtGetFlowIdStatus", "RPC_ID__Req_WifiStaItwtGetFlowIdStatus", 358 }, { "Req_WifiStaItwtSendProbeReq", "RPC_ID__Req_WifiStaItwtSendProbeReq", 359 }, { "Req_WifiStaItwtSetTargetWakeTimeOffset", "RPC_ID__Req_WifiStaItwtSetTargetWakeTimeOffset", 360 }, - { "Req_Max", "RPC_ID__Req_Max", 361 }, + { "Req_WifiStaEnterpriseEnable", "RPC_ID__Req_WifiStaEnterpriseEnable", 361 }, + { "Req_WifiStaEnterpriseDisable", "RPC_ID__Req_WifiStaEnterpriseDisable", 362 }, + { "Req_EapSetIdentity", "RPC_ID__Req_EapSetIdentity", 363 }, + { "Req_EapClearIdentity", "RPC_ID__Req_EapClearIdentity", 364 }, + { "Req_EapSetUsername", "RPC_ID__Req_EapSetUsername", 365 }, + { "Req_EapClearUsername", "RPC_ID__Req_EapClearUsername", 366 }, + { "Req_EapSetPassword", "RPC_ID__Req_EapSetPassword", 367 }, + { "Req_EapClearPassword", "RPC_ID__Req_EapClearPassword", 368 }, + { "Req_EapSetNewPassword", "RPC_ID__Req_EapSetNewPassword", 369 }, + { "Req_EapClearNewPassword", "RPC_ID__Req_EapClearNewPassword", 370 }, + { "Req_EapSetCaCert", "RPC_ID__Req_EapSetCaCert", 371 }, + { "Req_EapClearCaCert", "RPC_ID__Req_EapClearCaCert", 372 }, + { "Req_EapSetCertificateAndKey", "RPC_ID__Req_EapSetCertificateAndKey", 373 }, + { "Req_EapClearCertificateAndKey", "RPC_ID__Req_EapClearCertificateAndKey", 374 }, + { "Req_EapGetDisableTimeCheck", "RPC_ID__Req_EapGetDisableTimeCheck", 375 }, + { "Req_EapSetTtlsPhase2Method", "RPC_ID__Req_EapSetTtlsPhase2Method", 376 }, + { "Req_EapSetSuitebCertification", "RPC_ID__Req_EapSetSuitebCertification", 377 }, + { "Req_EapSetPacFile", "RPC_ID__Req_EapSetPacFile", 378 }, + { "Req_EapSetFastParams", "RPC_ID__Req_EapSetFastParams", 379 }, + { "Req_EapUseDefaultCertBundle", "RPC_ID__Req_EapUseDefaultCertBundle", 380 }, + { "Req_WifiSetOkcSupport", "RPC_ID__Req_WifiSetOkcSupport", 381 }, + { "Req_EapSetDomainName", "RPC_ID__Req_EapSetDomainName", 382 }, + { "Req_EapSetDisableTimeCheck", "RPC_ID__Req_EapSetDisableTimeCheck", 383 }, + { "Req_EapSetEapMethods", "RPC_ID__Req_EapSetEapMethods", 384 }, + { "Req_Max", "RPC_ID__Req_Max", 385 }, { "Resp_Base", "RPC_ID__Resp_Base", 512 }, { "Resp_GetMACAddress", "RPC_ID__Resp_GetMACAddress", 513 }, { "Resp_SetMacAddress", "RPC_ID__Resp_SetMacAddress", 514 }, @@ -21279,7 +25996,31 @@ static const ProtobufCEnumValue rpc_id__enum_values_by_number[206] = { "Resp_WifiStaItwtGetFlowIdStatus", "RPC_ID__Resp_WifiStaItwtGetFlowIdStatus", 614 }, { "Resp_WifiStaItwtSendProbeReq", "RPC_ID__Resp_WifiStaItwtSendProbeReq", 615 }, { "Resp_WifiStaItwtSetTargetWakeTimeOffset", "RPC_ID__Resp_WifiStaItwtSetTargetWakeTimeOffset", 616 }, - { "Resp_Max", "RPC_ID__Resp_Max", 617 }, + { "Resp_WifiStaEnterpriseEnable", "RPC_ID__Resp_WifiStaEnterpriseEnable", 617 }, + { "Resp_WifiStaEnterpriseDisable", "RPC_ID__Resp_WifiStaEnterpriseDisable", 618 }, + { "Resp_EapSetIdentity", "RPC_ID__Resp_EapSetIdentity", 619 }, + { "Resp_EapClearIdentity", "RPC_ID__Resp_EapClearIdentity", 620 }, + { "Resp_EapSetUsername", "RPC_ID__Resp_EapSetUsername", 621 }, + { "Resp_EapClearUsername", "RPC_ID__Resp_EapClearUsername", 622 }, + { "Resp_EapSetPassword", "RPC_ID__Resp_EapSetPassword", 623 }, + { "Resp_EapClearPassword", "RPC_ID__Resp_EapClearPassword", 624 }, + { "Resp_EapSetNewPassword", "RPC_ID__Resp_EapSetNewPassword", 625 }, + { "Resp_EapClearNewPassword", "RPC_ID__Resp_EapClearNewPassword", 626 }, + { "Resp_EapSetCaCert", "RPC_ID__Resp_EapSetCaCert", 627 }, + { "Resp_EapClearCaCert", "RPC_ID__Resp_EapClearCaCert", 628 }, + { "Resp_EapSetCertificateAndKey", "RPC_ID__Resp_EapSetCertificateAndKey", 629 }, + { "Resp_EapClearCertificateAndKey", "RPC_ID__Resp_EapClearCertificateAndKey", 630 }, + { "Resp_EapGetDisableTimeCheck", "RPC_ID__Resp_EapGetDisableTimeCheck", 631 }, + { "Resp_EapSetTtlsPhase2Method", "RPC_ID__Resp_EapSetTtlsPhase2Method", 632 }, + { "Resp_EapSetSuitebCertification", "RPC_ID__Resp_EapSetSuitebCertification", 633 }, + { "Resp_EapSetPacFile", "RPC_ID__Resp_EapSetPacFile", 634 }, + { "Resp_EapSetFastParams", "RPC_ID__Resp_EapSetFastParams", 635 }, + { "Resp_EapUseDefaultCertBundle", "RPC_ID__Resp_EapUseDefaultCertBundle", 636 }, + { "Resp_WifiSetOkcSupport", "RPC_ID__Resp_WifiSetOkcSupport", 637 }, + { "Resp_EapSetDomainName", "RPC_ID__Resp_EapSetDomainName", 638 }, + { "Resp_EapSetDisableTimeCheck", "RPC_ID__Resp_EapSetDisableTimeCheck", 639 }, + { "Resp_EapSetEapMethods", "RPC_ID__Resp_EapSetEapMethods", 640 }, + { "Resp_Max", "RPC_ID__Resp_Max", 641 }, { "Event_Base", "RPC_ID__Event_Base", 768 }, { "Event_ESPInit", "RPC_ID__Event_ESPInit", 769 }, { "Event_Heartbeat", "RPC_ID__Event_Heartbeat", 770 }, @@ -21297,33 +26038,54 @@ static const ProtobufCEnumValue rpc_id__enum_values_by_number[206] = { "Event_Max", "RPC_ID__Event_Max", 782 }, }; static const ProtobufCIntRange rpc_id__value_ranges[] = { -{0, 0},{256, 1},{270, 6},{297, 31},{512, 96},{526, 101},{553, 126},{768, 191},{0, 206} -}; -static const ProtobufCEnumValueIndex rpc_id__enum_values_by_name[206] = -{ - { "Event_AP_StaConnected", 194 }, - { "Event_AP_StaDisconnected", 195 }, - { "Event_Base", 191 }, - { "Event_DhcpDnsStatus", 200 }, - { "Event_ESPInit", 192 }, - { "Event_Heartbeat", 193 }, - { "Event_Max", 205 }, - { "Event_StaConnected", 198 }, - { "Event_StaDisconnected", 199 }, - { "Event_StaItwtProbe", 204 }, - { "Event_StaItwtSetup", 201 }, - { "Event_StaItwtSuspend", 203 }, - { "Event_StaItwtTeardown", 202 }, - { "Event_StaScanDone", 197 }, - { "Event_WifiEventNoArgs", 196 }, +{0, 0},{256, 1},{270, 6},{297, 31},{512, 120},{526, 125},{553, 150},{768, 239},{0, 254} +}; +static const ProtobufCEnumValueIndex rpc_id__enum_values_by_name[254] = +{ + { "Event_AP_StaConnected", 242 }, + { "Event_AP_StaDisconnected", 243 }, + { "Event_Base", 239 }, + { "Event_DhcpDnsStatus", 248 }, + { "Event_ESPInit", 240 }, + { "Event_Heartbeat", 241 }, + { "Event_Max", 253 }, + { "Event_StaConnected", 246 }, + { "Event_StaDisconnected", 247 }, + { "Event_StaItwtProbe", 252 }, + { "Event_StaItwtSetup", 249 }, + { "Event_StaItwtSuspend", 251 }, + { "Event_StaItwtTeardown", 250 }, + { "Event_StaScanDone", 245 }, + { "Event_WifiEventNoArgs", 244 }, { "MsgId_Invalid", 0 }, { "Req_Base", 1 }, { "Req_ConfigHeartbeat", 13 }, + { "Req_EapClearCaCert", 106 }, + { "Req_EapClearCertificateAndKey", 108 }, + { "Req_EapClearIdentity", 98 }, + { "Req_EapClearNewPassword", 104 }, + { "Req_EapClearPassword", 102 }, + { "Req_EapClearUsername", 100 }, + { "Req_EapGetDisableTimeCheck", 109 }, + { "Req_EapSetCaCert", 105 }, + { "Req_EapSetCertificateAndKey", 107 }, + { "Req_EapSetDisableTimeCheck", 117 }, + { "Req_EapSetDomainName", 116 }, + { "Req_EapSetEapMethods", 118 }, + { "Req_EapSetFastParams", 113 }, + { "Req_EapSetIdentity", 97 }, + { "Req_EapSetNewPassword", 103 }, + { "Req_EapSetPacFile", 112 }, + { "Req_EapSetPassword", 101 }, + { "Req_EapSetSuitebCertification", 111 }, + { "Req_EapSetTtlsPhase2Method", 110 }, + { "Req_EapSetUsername", 99 }, + { "Req_EapUseDefaultCertBundle", 114 }, { "Req_GetCoprocessorFwVersion", 84 }, { "Req_GetDhcpDnsStatus", 87 }, { "Req_GetMACAddress", 2 }, { "Req_GetWifiMode", 4 }, - { "Req_Max", 95 }, + { "Req_Max", 119 }, { "Req_OTABegin", 8 }, { "Req_OTAEnd", 10 }, { "Req_OTAWrite", 9 }, @@ -21389,6 +26151,7 @@ static const ProtobufCEnumValueIndex rpc_id__enum_values_by_name[206] = { "Req_WifiSetEventMask", 49 }, { "Req_WifiSetInactiveTime", 59 }, { "Req_WifiSetMaxTxPower", 11 }, + { "Req_WifiSetOkcSupport", 115 }, { "Req_WifiSetPromiscuous", 39 }, { "Req_WifiSetPromiscuousCtrlFilter", 43 }, { "Req_WifiSetPromiscuousFilter", 41 }, @@ -21398,6 +26161,8 @@ static const ProtobufCEnumValueIndex rpc_id__enum_values_by_name[206] = { "Req_WifiSetRssiThreshold", 62 }, { "Req_WifiSetStorage", 47 }, { "Req_WifiSetVendorIe", 48 }, + { "Req_WifiStaEnterpriseDisable", 96 }, + { "Req_WifiStaEnterpriseEnable", 95 }, { "Req_WifiStaGetAid", 72 }, { "Req_WifiStaGetApInfo", 30 }, { "Req_WifiStaGetNegotiatedPhymode", 73 }, @@ -21412,101 +26177,125 @@ static const ProtobufCEnumValueIndex rpc_id__enum_values_by_name[206] = { "Req_WifiStart", 16 }, { "Req_WifiStatisDump", 61 }, { "Req_WifiStop", 17 }, - { "Resp_Base", 96 }, - { "Resp_ConfigHeartbeat", 108 }, - { "Resp_GetCoprocessorFwVersion", 179 }, - { "Resp_GetDhcpDnsStatus", 182 }, - { "Resp_GetMACAddress", 97 }, - { "Resp_GetWifiMode", 99 }, - { "Resp_Max", 190 }, - { "Resp_OTABegin", 103 }, - { "Resp_OTAEnd", 105 }, - { "Resp_OTAWrite", 104 }, - { "Resp_SetDhcpDnsStatus", 181 }, - { "Resp_SetMacAddress", 98 }, - { "Resp_SetWifiMode", 100 }, - { "Resp_Wifi80211Tx", 146 }, - { "Resp_WifiApGetStaAid", 141 }, - { "Resp_WifiApGetStaList", 140 }, - { "Resp_WifiClearApList", 121 }, - { "Resp_WifiClearFastConnect", 123 }, - { "Resp_WifiConfig11bRate", 161 }, - { "Resp_WifiConfig80211TxRate", 165 }, - { "Resp_WifiConnect", 113 }, - { "Resp_WifiConnectionlessModuleSetWakeInterval", 162 }, - { "Resp_WifiDeauthSta", 124 }, - { "Resp_WifiDeinit", 110 }, - { "Resp_WifiDisablePmfConfig", 166 }, - { "Resp_WifiDisconnect", 114 }, - { "Resp_WifiFtmEndSession", 159 }, - { "Resp_WifiFtmInitiateSession", 158 }, - { "Resp_WifiFtmRespSetOffset", 160 }, - { "Resp_WifiGetAnt", 152 }, - { "Resp_WifiGetAntGpio", 150 }, - { "Resp_WifiGetBand", 176 }, - { "Resp_WifiGetBandMode", 178 }, - { "Resp_WifiGetBandwidth", 129 }, - { "Resp_WifiGetBandwidths", 174 }, - { "Resp_WifiGetChannel", 131 }, - { "Resp_WifiGetConfig", 116 }, - { "Resp_WifiGetCountry", 133 }, - { "Resp_WifiGetCountryCode", 164 }, - { "Resp_WifiGetEventMask", 145 }, - { "Resp_WifiGetInactiveTime", 155 }, - { "Resp_WifiGetMaxTxPower", 107 }, - { "Resp_WifiGetPromiscuous", 135 }, - { "Resp_WifiGetPromiscuousCtrlFilter", 139 }, - { "Resp_WifiGetPromiscuousFilter", 137 }, - { "Resp_WifiGetProtocol", 127 }, - { "Resp_WifiGetProtocols", 172 }, - { "Resp_WifiGetPs", 102 }, - { "Resp_WifiGetTsfTime", 153 }, - { "Resp_WifiInit", 109 }, - { "Resp_WifiRestore", 122 }, - { "Resp_WifiScanGetApNum", 119 }, - { "Resp_WifiScanGetApRecord", 180 }, - { "Resp_WifiScanGetApRecords", 120 }, - { "Resp_WifiScanStart", 117 }, - { "Resp_WifiScanStop", 118 }, - { "Resp_WifiSetAnt", 151 }, - { "Resp_WifiSetAntGpio", 149 }, - { "Resp_WifiSetBand", 175 }, - { "Resp_WifiSetBandMode", 177 }, - { "Resp_WifiSetBandwidth", 128 }, - { "Resp_WifiSetBandwidths", 173 }, - { "Resp_WifiSetChannel", 130 }, - { "Resp_WifiSetConfig", 115 }, - { "Resp_WifiSetCountry", 132 }, - { "Resp_WifiSetCountryCode", 163 }, - { "Resp_WifiSetCsi", 148 }, - { "Resp_WifiSetCsiConfig", 147 }, - { "Resp_WifiSetDynamicCs", 169 }, - { "Resp_WifiSetEventMask", 144 }, - { "Resp_WifiSetInactiveTime", 154 }, - { "Resp_WifiSetMaxTxPower", 106 }, - { "Resp_WifiSetPromiscuous", 134 }, - { "Resp_WifiSetPromiscuousCtrlFilter", 138 }, - { "Resp_WifiSetPromiscuousFilter", 136 }, - { "Resp_WifiSetProtocol", 126 }, - { "Resp_WifiSetProtocols", 171 }, - { "Resp_WifiSetPs", 101 }, - { "Resp_WifiSetRssiThreshold", 157 }, - { "Resp_WifiSetStorage", 142 }, - { "Resp_WifiSetVendorIe", 143 }, - { "Resp_WifiStaGetAid", 167 }, - { "Resp_WifiStaGetApInfo", 125 }, - { "Resp_WifiStaGetNegotiatedPhymode", 168 }, - { "Resp_WifiStaGetRssi", 170 }, - { "Resp_WifiStaItwtGetFlowIdStatus", 187 }, - { "Resp_WifiStaItwtSendProbeReq", 188 }, - { "Resp_WifiStaItwtSetTargetWakeTimeOffset", 189 }, - { "Resp_WifiStaItwtSetup", 184 }, - { "Resp_WifiStaItwtSuspend", 186 }, - { "Resp_WifiStaItwtTeardown", 185 }, - { "Resp_WifiStaTwtConfig", 183 }, - { "Resp_WifiStart", 111 }, - { "Resp_WifiStatisDump", 156 }, - { "Resp_WifiStop", 112 }, + { "Resp_Base", 120 }, + { "Resp_ConfigHeartbeat", 132 }, + { "Resp_EapClearCaCert", 225 }, + { "Resp_EapClearCertificateAndKey", 227 }, + { "Resp_EapClearIdentity", 217 }, + { "Resp_EapClearNewPassword", 223 }, + { "Resp_EapClearPassword", 221 }, + { "Resp_EapClearUsername", 219 }, + { "Resp_EapGetDisableTimeCheck", 228 }, + { "Resp_EapSetCaCert", 224 }, + { "Resp_EapSetCertificateAndKey", 226 }, + { "Resp_EapSetDisableTimeCheck", 236 }, + { "Resp_EapSetDomainName", 235 }, + { "Resp_EapSetEapMethods", 237 }, + { "Resp_EapSetFastParams", 232 }, + { "Resp_EapSetIdentity", 216 }, + { "Resp_EapSetNewPassword", 222 }, + { "Resp_EapSetPacFile", 231 }, + { "Resp_EapSetPassword", 220 }, + { "Resp_EapSetSuitebCertification", 230 }, + { "Resp_EapSetTtlsPhase2Method", 229 }, + { "Resp_EapSetUsername", 218 }, + { "Resp_EapUseDefaultCertBundle", 233 }, + { "Resp_GetCoprocessorFwVersion", 203 }, + { "Resp_GetDhcpDnsStatus", 206 }, + { "Resp_GetMACAddress", 121 }, + { "Resp_GetWifiMode", 123 }, + { "Resp_Max", 238 }, + { "Resp_OTABegin", 127 }, + { "Resp_OTAEnd", 129 }, + { "Resp_OTAWrite", 128 }, + { "Resp_SetDhcpDnsStatus", 205 }, + { "Resp_SetMacAddress", 122 }, + { "Resp_SetWifiMode", 124 }, + { "Resp_Wifi80211Tx", 170 }, + { "Resp_WifiApGetStaAid", 165 }, + { "Resp_WifiApGetStaList", 164 }, + { "Resp_WifiClearApList", 145 }, + { "Resp_WifiClearFastConnect", 147 }, + { "Resp_WifiConfig11bRate", 185 }, + { "Resp_WifiConfig80211TxRate", 189 }, + { "Resp_WifiConnect", 137 }, + { "Resp_WifiConnectionlessModuleSetWakeInterval", 186 }, + { "Resp_WifiDeauthSta", 148 }, + { "Resp_WifiDeinit", 134 }, + { "Resp_WifiDisablePmfConfig", 190 }, + { "Resp_WifiDisconnect", 138 }, + { "Resp_WifiFtmEndSession", 183 }, + { "Resp_WifiFtmInitiateSession", 182 }, + { "Resp_WifiFtmRespSetOffset", 184 }, + { "Resp_WifiGetAnt", 176 }, + { "Resp_WifiGetAntGpio", 174 }, + { "Resp_WifiGetBand", 200 }, + { "Resp_WifiGetBandMode", 202 }, + { "Resp_WifiGetBandwidth", 153 }, + { "Resp_WifiGetBandwidths", 198 }, + { "Resp_WifiGetChannel", 155 }, + { "Resp_WifiGetConfig", 140 }, + { "Resp_WifiGetCountry", 157 }, + { "Resp_WifiGetCountryCode", 188 }, + { "Resp_WifiGetEventMask", 169 }, + { "Resp_WifiGetInactiveTime", 179 }, + { "Resp_WifiGetMaxTxPower", 131 }, + { "Resp_WifiGetPromiscuous", 159 }, + { "Resp_WifiGetPromiscuousCtrlFilter", 163 }, + { "Resp_WifiGetPromiscuousFilter", 161 }, + { "Resp_WifiGetProtocol", 151 }, + { "Resp_WifiGetProtocols", 196 }, + { "Resp_WifiGetPs", 126 }, + { "Resp_WifiGetTsfTime", 177 }, + { "Resp_WifiInit", 133 }, + { "Resp_WifiRestore", 146 }, + { "Resp_WifiScanGetApNum", 143 }, + { "Resp_WifiScanGetApRecord", 204 }, + { "Resp_WifiScanGetApRecords", 144 }, + { "Resp_WifiScanStart", 141 }, + { "Resp_WifiScanStop", 142 }, + { "Resp_WifiSetAnt", 175 }, + { "Resp_WifiSetAntGpio", 173 }, + { "Resp_WifiSetBand", 199 }, + { "Resp_WifiSetBandMode", 201 }, + { "Resp_WifiSetBandwidth", 152 }, + { "Resp_WifiSetBandwidths", 197 }, + { "Resp_WifiSetChannel", 154 }, + { "Resp_WifiSetConfig", 139 }, + { "Resp_WifiSetCountry", 156 }, + { "Resp_WifiSetCountryCode", 187 }, + { "Resp_WifiSetCsi", 172 }, + { "Resp_WifiSetCsiConfig", 171 }, + { "Resp_WifiSetDynamicCs", 193 }, + { "Resp_WifiSetEventMask", 168 }, + { "Resp_WifiSetInactiveTime", 178 }, + { "Resp_WifiSetMaxTxPower", 130 }, + { "Resp_WifiSetOkcSupport", 234 }, + { "Resp_WifiSetPromiscuous", 158 }, + { "Resp_WifiSetPromiscuousCtrlFilter", 162 }, + { "Resp_WifiSetPromiscuousFilter", 160 }, + { "Resp_WifiSetProtocol", 150 }, + { "Resp_WifiSetProtocols", 195 }, + { "Resp_WifiSetPs", 125 }, + { "Resp_WifiSetRssiThreshold", 181 }, + { "Resp_WifiSetStorage", 166 }, + { "Resp_WifiSetVendorIe", 167 }, + { "Resp_WifiStaEnterpriseDisable", 215 }, + { "Resp_WifiStaEnterpriseEnable", 214 }, + { "Resp_WifiStaGetAid", 191 }, + { "Resp_WifiStaGetApInfo", 149 }, + { "Resp_WifiStaGetNegotiatedPhymode", 192 }, + { "Resp_WifiStaGetRssi", 194 }, + { "Resp_WifiStaItwtGetFlowIdStatus", 211 }, + { "Resp_WifiStaItwtSendProbeReq", 212 }, + { "Resp_WifiStaItwtSetTargetWakeTimeOffset", 213 }, + { "Resp_WifiStaItwtSetup", 208 }, + { "Resp_WifiStaItwtSuspend", 210 }, + { "Resp_WifiStaItwtTeardown", 209 }, + { "Resp_WifiStaTwtConfig", 207 }, + { "Resp_WifiStart", 135 }, + { "Resp_WifiStatisDump", 180 }, + { "Resp_WifiStop", 136 }, }; const ProtobufCEnumDescriptor rpc_id__descriptor = { @@ -21515,9 +26304,9 @@ const ProtobufCEnumDescriptor rpc_id__descriptor = "RpcId", "RpcId", "", - 206, + 254, rpc_id__enum_values_by_number, - 206, + 254, rpc_id__enum_values_by_name, 8, rpc_id__value_ranges, diff --git a/common/proto/esp_hosted_rpc.pb-c.h b/common/proto/esp_hosted_rpc.pb-c.h index 33d18165..2014e321 100644 --- a/common/proto/esp_hosted_rpc.pb-c.h +++ b/common/proto/esp_hosted_rpc.pb-c.h @@ -10,204 +10,253 @@ PROTOBUF_C__BEGIN_DECLS #if PROTOBUF_C_VERSION_NUMBER < 1003000 # error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers. -#elif 1004001 < PROTOBUF_C_MIN_COMPILER_VERSION +#elif 1003003 < PROTOBUF_C_MIN_COMPILER_VERSION # error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c. #endif -typedef struct WifiInitConfig WifiInitConfig; -typedef struct WifiCountry WifiCountry; -typedef struct WifiActiveScanTime WifiActiveScanTime; -typedef struct WifiScanTime WifiScanTime; -typedef struct WifiScanChannelBitmap WifiScanChannelBitmap; -typedef struct WifiScanConfig WifiScanConfig; -typedef struct WifiHeApInfo WifiHeApInfo; -typedef struct WifiApRecord WifiApRecord; -typedef struct WifiScanThreshold WifiScanThreshold; -typedef struct WifiPmfConfig WifiPmfConfig; -typedef struct WifiBssMaxIdleConfig WifiBssMaxIdleConfig; -typedef struct WifiApConfig WifiApConfig; -typedef struct WifiStaConfig WifiStaConfig; -typedef struct WifiConfig WifiConfig; -typedef struct WifiStaInfo WifiStaInfo; -typedef struct WifiStaList WifiStaList; -typedef struct WifiPktRxCtrl WifiPktRxCtrl; -typedef struct WifiPromiscuousPkt WifiPromiscuousPkt; -typedef struct WifiPromiscuousFilter WifiPromiscuousFilter; -typedef struct WifiCsiConfig WifiCsiConfig; -typedef struct WifiCsiInfo WifiCsiInfo; -typedef struct WifiAntGpio WifiAntGpio; -typedef struct WifiAntGpioConfig WifiAntGpioConfig; -typedef struct WifiAntConfig WifiAntConfig; -typedef struct WifiActionTxReq WifiActionTxReq; -typedef struct WifiFtmInitiatorCfg WifiFtmInitiatorCfg; -typedef struct WifiEventStaScanDone WifiEventStaScanDone; -typedef struct WifiEventStaConnected WifiEventStaConnected; -typedef struct WifiEventStaDisconnected WifiEventStaDisconnected; -typedef struct WifiEventStaAuthmodeChange WifiEventStaAuthmodeChange; -typedef struct WifiEventStaWpsErPin WifiEventStaWpsErPin; -typedef struct ApCred ApCred; -typedef struct WifiEventStaWpsErSuccess WifiEventStaWpsErSuccess; -typedef struct WifiEventApProbeReqRx WifiEventApProbeReqRx; -typedef struct WifiEventBssRssiLow WifiEventBssRssiLow; -typedef struct WifiFtmReportEntry WifiFtmReportEntry; -typedef struct WifiEventFtmReport WifiEventFtmReport; -typedef struct WifiEventActionTxStatus WifiEventActionTxStatus; -typedef struct WifiEventRocDone WifiEventRocDone; -typedef struct WifiEventApWpsRgPin WifiEventApWpsRgPin; -typedef struct WifiEventApWpsRgFailReason WifiEventApWpsRgFailReason; -typedef struct WifiEventApWpsRgSuccess WifiEventApWpsRgSuccess; -typedef struct WifiProtocols WifiProtocols; -typedef struct WifiBandwidths WifiBandwidths; -typedef struct WifiItwtSetupConfig WifiItwtSetupConfig; -typedef struct WifiTwtConfig WifiTwtConfig; -typedef struct ConnectedSTAList ConnectedSTAList; -typedef struct RpcReqGetMacAddress RpcReqGetMacAddress; -typedef struct RpcRespGetMacAddress RpcRespGetMacAddress; -typedef struct RpcReqGetMode RpcReqGetMode; -typedef struct RpcRespGetMode RpcRespGetMode; -typedef struct RpcReqSetMode RpcReqSetMode; -typedef struct RpcRespSetMode RpcRespSetMode; -typedef struct RpcReqGetPs RpcReqGetPs; -typedef struct RpcRespGetPs RpcRespGetPs; -typedef struct RpcReqSetPs RpcReqSetPs; -typedef struct RpcRespSetPs RpcRespSetPs; -typedef struct RpcReqSetMacAddress RpcReqSetMacAddress; -typedef struct RpcRespSetMacAddress RpcRespSetMacAddress; -typedef struct RpcReqOTABegin RpcReqOTABegin; -typedef struct RpcRespOTABegin RpcRespOTABegin; -typedef struct RpcReqOTAWrite RpcReqOTAWrite; -typedef struct RpcRespOTAWrite RpcRespOTAWrite; -typedef struct RpcReqOTAEnd RpcReqOTAEnd; -typedef struct RpcRespOTAEnd RpcRespOTAEnd; -typedef struct RpcReqWifiSetMaxTxPower RpcReqWifiSetMaxTxPower; -typedef struct RpcRespWifiSetMaxTxPower RpcRespWifiSetMaxTxPower; -typedef struct RpcReqWifiGetMaxTxPower RpcReqWifiGetMaxTxPower; -typedef struct RpcRespWifiGetMaxTxPower RpcRespWifiGetMaxTxPower; -typedef struct RpcReqConfigHeartbeat RpcReqConfigHeartbeat; -typedef struct RpcRespConfigHeartbeat RpcRespConfigHeartbeat; -typedef struct RpcReqWifiInit RpcReqWifiInit; -typedef struct RpcRespWifiInit RpcRespWifiInit; -typedef struct RpcReqWifiDeinit RpcReqWifiDeinit; -typedef struct RpcRespWifiDeinit RpcRespWifiDeinit; -typedef struct RpcReqWifiSetConfig RpcReqWifiSetConfig; -typedef struct RpcRespWifiSetConfig RpcRespWifiSetConfig; -typedef struct RpcReqWifiGetConfig RpcReqWifiGetConfig; -typedef struct RpcRespWifiGetConfig RpcRespWifiGetConfig; -typedef struct RpcReqWifiConnect RpcReqWifiConnect; -typedef struct RpcRespWifiConnect RpcRespWifiConnect; -typedef struct RpcReqWifiDisconnect RpcReqWifiDisconnect; -typedef struct RpcRespWifiDisconnect RpcRespWifiDisconnect; -typedef struct RpcReqWifiStart RpcReqWifiStart; -typedef struct RpcRespWifiStart RpcRespWifiStart; -typedef struct RpcReqWifiStop RpcReqWifiStop; -typedef struct RpcRespWifiStop RpcRespWifiStop; -typedef struct RpcReqWifiScanStart RpcReqWifiScanStart; -typedef struct RpcRespWifiScanStart RpcRespWifiScanStart; -typedef struct RpcReqWifiScanStop RpcReqWifiScanStop; -typedef struct RpcRespWifiScanStop RpcRespWifiScanStop; -typedef struct RpcReqWifiScanGetApNum RpcReqWifiScanGetApNum; -typedef struct RpcRespWifiScanGetApNum RpcRespWifiScanGetApNum; -typedef struct RpcReqWifiScanGetApRecords RpcReqWifiScanGetApRecords; -typedef struct RpcRespWifiScanGetApRecords RpcRespWifiScanGetApRecords; -typedef struct RpcReqWifiScanGetApRecord RpcReqWifiScanGetApRecord; -typedef struct RpcRespWifiScanGetApRecord RpcRespWifiScanGetApRecord; -typedef struct RpcReqWifiClearApList RpcReqWifiClearApList; -typedef struct RpcRespWifiClearApList RpcRespWifiClearApList; -typedef struct RpcReqWifiRestore RpcReqWifiRestore; -typedef struct RpcRespWifiRestore RpcRespWifiRestore; -typedef struct RpcReqWifiClearFastConnect RpcReqWifiClearFastConnect; -typedef struct RpcRespWifiClearFastConnect RpcRespWifiClearFastConnect; -typedef struct RpcReqWifiDeauthSta RpcReqWifiDeauthSta; -typedef struct RpcRespWifiDeauthSta RpcRespWifiDeauthSta; -typedef struct RpcReqWifiStaGetApInfo RpcReqWifiStaGetApInfo; -typedef struct RpcRespWifiStaGetApInfo RpcRespWifiStaGetApInfo; -typedef struct RpcReqWifiSetProtocol RpcReqWifiSetProtocol; -typedef struct RpcRespWifiSetProtocol RpcRespWifiSetProtocol; -typedef struct RpcReqWifiGetProtocol RpcReqWifiGetProtocol; -typedef struct RpcRespWifiGetProtocol RpcRespWifiGetProtocol; -typedef struct RpcReqWifiSetBandwidth RpcReqWifiSetBandwidth; -typedef struct RpcRespWifiSetBandwidth RpcRespWifiSetBandwidth; -typedef struct RpcReqWifiGetBandwidth RpcReqWifiGetBandwidth; -typedef struct RpcRespWifiGetBandwidth RpcRespWifiGetBandwidth; -typedef struct RpcReqWifiSetChannel RpcReqWifiSetChannel; -typedef struct RpcRespWifiSetChannel RpcRespWifiSetChannel; -typedef struct RpcReqWifiGetChannel RpcReqWifiGetChannel; -typedef struct RpcRespWifiGetChannel RpcRespWifiGetChannel; -typedef struct RpcReqWifiSetStorage RpcReqWifiSetStorage; -typedef struct RpcRespWifiSetStorage RpcRespWifiSetStorage; -typedef struct RpcReqWifiSetCountryCode RpcReqWifiSetCountryCode; -typedef struct RpcRespWifiSetCountryCode RpcRespWifiSetCountryCode; -typedef struct RpcReqWifiGetCountryCode RpcReqWifiGetCountryCode; -typedef struct RpcRespWifiGetCountryCode RpcRespWifiGetCountryCode; -typedef struct RpcReqWifiSetCountry RpcReqWifiSetCountry; -typedef struct RpcRespWifiSetCountry RpcRespWifiSetCountry; -typedef struct RpcReqWifiGetCountry RpcReqWifiGetCountry; -typedef struct RpcRespWifiGetCountry RpcRespWifiGetCountry; -typedef struct RpcReqWifiApGetStaList RpcReqWifiApGetStaList; -typedef struct RpcRespWifiApGetStaList RpcRespWifiApGetStaList; -typedef struct RpcReqWifiApGetStaAid RpcReqWifiApGetStaAid; -typedef struct RpcReqWifiStaGetNegotiatedPhymode RpcReqWifiStaGetNegotiatedPhymode; -typedef struct RpcRespWifiStaGetNegotiatedPhymode RpcRespWifiStaGetNegotiatedPhymode; -typedef struct RpcRespWifiApGetStaAid RpcRespWifiApGetStaAid; -typedef struct RpcReqWifiStaGetRssi RpcReqWifiStaGetRssi; -typedef struct RpcRespWifiStaGetRssi RpcRespWifiStaGetRssi; -typedef struct RpcReqWifiStaGetAid RpcReqWifiStaGetAid; -typedef struct RpcRespWifiStaGetAid RpcRespWifiStaGetAid; -typedef struct RpcReqWifiSetProtocols RpcReqWifiSetProtocols; -typedef struct RpcRespWifiSetProtocols RpcRespWifiSetProtocols; -typedef struct RpcReqWifiGetProtocols RpcReqWifiGetProtocols; -typedef struct RpcRespWifiGetProtocols RpcRespWifiGetProtocols; -typedef struct RpcReqWifiSetBandwidths RpcReqWifiSetBandwidths; -typedef struct RpcRespWifiSetBandwidths RpcRespWifiSetBandwidths; -typedef struct RpcReqWifiGetBandwidths RpcReqWifiGetBandwidths; -typedef struct RpcRespWifiGetBandwidths RpcRespWifiGetBandwidths; -typedef struct RpcReqWifiSetBand RpcReqWifiSetBand; -typedef struct RpcRespWifiSetBand RpcRespWifiSetBand; -typedef struct RpcReqWifiGetBand RpcReqWifiGetBand; -typedef struct RpcRespWifiGetBand RpcRespWifiGetBand; -typedef struct RpcReqWifiSetBandMode RpcReqWifiSetBandMode; -typedef struct RpcRespWifiSetBandMode RpcRespWifiSetBandMode; -typedef struct RpcReqWifiGetBandMode RpcReqWifiGetBandMode; -typedef struct RpcRespWifiGetBandMode RpcRespWifiGetBandMode; -typedef struct RpcReqWifiSetInactiveTime RpcReqWifiSetInactiveTime; -typedef struct RpcRespWifiSetInactiveTime RpcRespWifiSetInactiveTime; -typedef struct RpcReqWifiGetInactiveTime RpcReqWifiGetInactiveTime; -typedef struct RpcRespWifiGetInactiveTime RpcRespWifiGetInactiveTime; -typedef struct RpcReqWifiStaItwtSetup RpcReqWifiStaItwtSetup; -typedef struct RpcRespWifiStaItwtSetup RpcRespWifiStaItwtSetup; -typedef struct RpcReqWifiStaItwtTeardown RpcReqWifiStaItwtTeardown; -typedef struct RpcRespWifiStaItwtTeardown RpcRespWifiStaItwtTeardown; -typedef struct RpcReqWifiStaItwtSuspend RpcReqWifiStaItwtSuspend; -typedef struct RpcRespWifiStaItwtSuspend RpcRespWifiStaItwtSuspend; -typedef struct RpcReqWifiStaItwtGetFlowIdStatus RpcReqWifiStaItwtGetFlowIdStatus; -typedef struct RpcRespWifiStaItwtGetFlowIdStatus RpcRespWifiStaItwtGetFlowIdStatus; -typedef struct RpcReqWifiStaItwtSendProbeReq RpcReqWifiStaItwtSendProbeReq; -typedef struct RpcRespWifiStaItwtSendProbeReq RpcRespWifiStaItwtSendProbeReq; -typedef struct RpcReqWifiStaItwtSetTargetWakeTimeOffset RpcReqWifiStaItwtSetTargetWakeTimeOffset; -typedef struct RpcRespWifiStaItwtSetTargetWakeTimeOffset RpcRespWifiStaItwtSetTargetWakeTimeOffset; -typedef struct RpcReqWifiStaTwtConfig RpcReqWifiStaTwtConfig; -typedef struct RpcRespWifiStaTwtConfig RpcRespWifiStaTwtConfig; -typedef struct RpcReqGetCoprocessorFwVersion RpcReqGetCoprocessorFwVersion; -typedef struct RpcRespGetCoprocessorFwVersion RpcRespGetCoprocessorFwVersion; -typedef struct RpcReqSetDhcpDnsStatus RpcReqSetDhcpDnsStatus; -typedef struct RpcRespSetDhcpDnsStatus RpcRespSetDhcpDnsStatus; -typedef struct RpcReqGetDhcpDnsStatus RpcReqGetDhcpDnsStatus; -typedef struct RpcRespGetDhcpDnsStatus RpcRespGetDhcpDnsStatus; -typedef struct RpcEventWifiEventNoArgs RpcEventWifiEventNoArgs; -typedef struct RpcEventESPInit RpcEventESPInit; -typedef struct RpcEventHeartbeat RpcEventHeartbeat; -typedef struct RpcEventAPStaDisconnected RpcEventAPStaDisconnected; -typedef struct RpcEventAPStaConnected RpcEventAPStaConnected; -typedef struct RpcEventStaScanDone RpcEventStaScanDone; -typedef struct RpcEventStaConnected RpcEventStaConnected; -typedef struct RpcEventStaDisconnected RpcEventStaDisconnected; -typedef struct RpcEventDhcpDnsStatus RpcEventDhcpDnsStatus; -typedef struct RpcEventStaItwtSetup RpcEventStaItwtSetup; -typedef struct RpcEventStaItwtTeardown RpcEventStaItwtTeardown; -typedef struct RpcEventStaItwtSuspend RpcEventStaItwtSuspend; -typedef struct RpcEventStaItwtProbe RpcEventStaItwtProbe; -typedef struct Rpc Rpc; +typedef struct _WifiInitConfig WifiInitConfig; +typedef struct _WifiCountry WifiCountry; +typedef struct _WifiActiveScanTime WifiActiveScanTime; +typedef struct _WifiScanTime WifiScanTime; +typedef struct _WifiScanChannelBitmap WifiScanChannelBitmap; +typedef struct _WifiScanConfig WifiScanConfig; +typedef struct _WifiHeApInfo WifiHeApInfo; +typedef struct _WifiApRecord WifiApRecord; +typedef struct _WifiScanThreshold WifiScanThreshold; +typedef struct _WifiPmfConfig WifiPmfConfig; +typedef struct _WifiBssMaxIdleConfig WifiBssMaxIdleConfig; +typedef struct _WifiApConfig WifiApConfig; +typedef struct _WifiStaConfig WifiStaConfig; +typedef struct _WifiConfig WifiConfig; +typedef struct _WifiStaInfo WifiStaInfo; +typedef struct _WifiStaList WifiStaList; +typedef struct _WifiPktRxCtrl WifiPktRxCtrl; +typedef struct _WifiPromiscuousPkt WifiPromiscuousPkt; +typedef struct _WifiPromiscuousFilter WifiPromiscuousFilter; +typedef struct _WifiCsiConfig WifiCsiConfig; +typedef struct _WifiCsiInfo WifiCsiInfo; +typedef struct _WifiAntGpio WifiAntGpio; +typedef struct _WifiAntGpioConfig WifiAntGpioConfig; +typedef struct _WifiAntConfig WifiAntConfig; +typedef struct _WifiActionTxReq WifiActionTxReq; +typedef struct _WifiFtmInitiatorCfg WifiFtmInitiatorCfg; +typedef struct _WifiEventStaScanDone WifiEventStaScanDone; +typedef struct _WifiEventStaConnected WifiEventStaConnected; +typedef struct _WifiEventStaDisconnected WifiEventStaDisconnected; +typedef struct _WifiEventStaAuthmodeChange WifiEventStaAuthmodeChange; +typedef struct _WifiEventStaWpsErPin WifiEventStaWpsErPin; +typedef struct _ApCred ApCred; +typedef struct _WifiEventStaWpsErSuccess WifiEventStaWpsErSuccess; +typedef struct _WifiEventApProbeReqRx WifiEventApProbeReqRx; +typedef struct _WifiEventBssRssiLow WifiEventBssRssiLow; +typedef struct _WifiFtmReportEntry WifiFtmReportEntry; +typedef struct _WifiEventFtmReport WifiEventFtmReport; +typedef struct _WifiEventActionTxStatus WifiEventActionTxStatus; +typedef struct _WifiEventRocDone WifiEventRocDone; +typedef struct _WifiEventApWpsRgPin WifiEventApWpsRgPin; +typedef struct _WifiEventApWpsRgFailReason WifiEventApWpsRgFailReason; +typedef struct _WifiEventApWpsRgSuccess WifiEventApWpsRgSuccess; +typedef struct _WifiProtocols WifiProtocols; +typedef struct _WifiBandwidths WifiBandwidths; +typedef struct _WifiItwtSetupConfig WifiItwtSetupConfig; +typedef struct _WifiTwtConfig WifiTwtConfig; +typedef struct _ConnectedSTAList ConnectedSTAList; +typedef struct _EapFastConfig EapFastConfig; +typedef struct _RpcReqGetMacAddress RpcReqGetMacAddress; +typedef struct _RpcRespGetMacAddress RpcRespGetMacAddress; +typedef struct _RpcReqGetMode RpcReqGetMode; +typedef struct _RpcRespGetMode RpcRespGetMode; +typedef struct _RpcReqSetMode RpcReqSetMode; +typedef struct _RpcRespSetMode RpcRespSetMode; +typedef struct _RpcReqGetPs RpcReqGetPs; +typedef struct _RpcRespGetPs RpcRespGetPs; +typedef struct _RpcReqSetPs RpcReqSetPs; +typedef struct _RpcRespSetPs RpcRespSetPs; +typedef struct _RpcReqSetMacAddress RpcReqSetMacAddress; +typedef struct _RpcRespSetMacAddress RpcRespSetMacAddress; +typedef struct _RpcReqOTABegin RpcReqOTABegin; +typedef struct _RpcRespOTABegin RpcRespOTABegin; +typedef struct _RpcReqOTAWrite RpcReqOTAWrite; +typedef struct _RpcRespOTAWrite RpcRespOTAWrite; +typedef struct _RpcReqOTAEnd RpcReqOTAEnd; +typedef struct _RpcRespOTAEnd RpcRespOTAEnd; +typedef struct _RpcReqWifiSetMaxTxPower RpcReqWifiSetMaxTxPower; +typedef struct _RpcRespWifiSetMaxTxPower RpcRespWifiSetMaxTxPower; +typedef struct _RpcReqWifiGetMaxTxPower RpcReqWifiGetMaxTxPower; +typedef struct _RpcRespWifiGetMaxTxPower RpcRespWifiGetMaxTxPower; +typedef struct _RpcReqConfigHeartbeat RpcReqConfigHeartbeat; +typedef struct _RpcRespConfigHeartbeat RpcRespConfigHeartbeat; +typedef struct _RpcReqWifiInit RpcReqWifiInit; +typedef struct _RpcRespWifiInit RpcRespWifiInit; +typedef struct _RpcReqWifiDeinit RpcReqWifiDeinit; +typedef struct _RpcRespWifiDeinit RpcRespWifiDeinit; +typedef struct _RpcReqWifiSetConfig RpcReqWifiSetConfig; +typedef struct _RpcRespWifiSetConfig RpcRespWifiSetConfig; +typedef struct _RpcReqWifiGetConfig RpcReqWifiGetConfig; +typedef struct _RpcRespWifiGetConfig RpcRespWifiGetConfig; +typedef struct _RpcReqWifiConnect RpcReqWifiConnect; +typedef struct _RpcRespWifiConnect RpcRespWifiConnect; +typedef struct _RpcReqWifiDisconnect RpcReqWifiDisconnect; +typedef struct _RpcRespWifiDisconnect RpcRespWifiDisconnect; +typedef struct _RpcReqWifiStart RpcReqWifiStart; +typedef struct _RpcRespWifiStart RpcRespWifiStart; +typedef struct _RpcReqWifiStop RpcReqWifiStop; +typedef struct _RpcRespWifiStop RpcRespWifiStop; +typedef struct _RpcReqWifiScanStart RpcReqWifiScanStart; +typedef struct _RpcRespWifiScanStart RpcRespWifiScanStart; +typedef struct _RpcReqWifiScanStop RpcReqWifiScanStop; +typedef struct _RpcRespWifiScanStop RpcRespWifiScanStop; +typedef struct _RpcReqWifiScanGetApNum RpcReqWifiScanGetApNum; +typedef struct _RpcRespWifiScanGetApNum RpcRespWifiScanGetApNum; +typedef struct _RpcReqWifiScanGetApRecords RpcReqWifiScanGetApRecords; +typedef struct _RpcRespWifiScanGetApRecords RpcRespWifiScanGetApRecords; +typedef struct _RpcReqWifiScanGetApRecord RpcReqWifiScanGetApRecord; +typedef struct _RpcRespWifiScanGetApRecord RpcRespWifiScanGetApRecord; +typedef struct _RpcReqWifiClearApList RpcReqWifiClearApList; +typedef struct _RpcRespWifiClearApList RpcRespWifiClearApList; +typedef struct _RpcReqWifiRestore RpcReqWifiRestore; +typedef struct _RpcRespWifiRestore RpcRespWifiRestore; +typedef struct _RpcReqWifiClearFastConnect RpcReqWifiClearFastConnect; +typedef struct _RpcRespWifiClearFastConnect RpcRespWifiClearFastConnect; +typedef struct _RpcReqWifiDeauthSta RpcReqWifiDeauthSta; +typedef struct _RpcRespWifiDeauthSta RpcRespWifiDeauthSta; +typedef struct _RpcReqWifiStaGetApInfo RpcReqWifiStaGetApInfo; +typedef struct _RpcRespWifiStaGetApInfo RpcRespWifiStaGetApInfo; +typedef struct _RpcReqWifiSetProtocol RpcReqWifiSetProtocol; +typedef struct _RpcRespWifiSetProtocol RpcRespWifiSetProtocol; +typedef struct _RpcReqWifiGetProtocol RpcReqWifiGetProtocol; +typedef struct _RpcRespWifiGetProtocol RpcRespWifiGetProtocol; +typedef struct _RpcReqWifiSetBandwidth RpcReqWifiSetBandwidth; +typedef struct _RpcRespWifiSetBandwidth RpcRespWifiSetBandwidth; +typedef struct _RpcReqWifiGetBandwidth RpcReqWifiGetBandwidth; +typedef struct _RpcRespWifiGetBandwidth RpcRespWifiGetBandwidth; +typedef struct _RpcReqWifiSetChannel RpcReqWifiSetChannel; +typedef struct _RpcRespWifiSetChannel RpcRespWifiSetChannel; +typedef struct _RpcReqWifiGetChannel RpcReqWifiGetChannel; +typedef struct _RpcRespWifiGetChannel RpcRespWifiGetChannel; +typedef struct _RpcReqWifiSetStorage RpcReqWifiSetStorage; +typedef struct _RpcRespWifiSetStorage RpcRespWifiSetStorage; +typedef struct _RpcReqWifiSetCountryCode RpcReqWifiSetCountryCode; +typedef struct _RpcRespWifiSetCountryCode RpcRespWifiSetCountryCode; +typedef struct _RpcReqWifiGetCountryCode RpcReqWifiGetCountryCode; +typedef struct _RpcRespWifiGetCountryCode RpcRespWifiGetCountryCode; +typedef struct _RpcReqWifiSetCountry RpcReqWifiSetCountry; +typedef struct _RpcRespWifiSetCountry RpcRespWifiSetCountry; +typedef struct _RpcReqWifiGetCountry RpcReqWifiGetCountry; +typedef struct _RpcRespWifiGetCountry RpcRespWifiGetCountry; +typedef struct _RpcReqWifiApGetStaList RpcReqWifiApGetStaList; +typedef struct _RpcRespWifiApGetStaList RpcRespWifiApGetStaList; +typedef struct _RpcReqWifiApGetStaAid RpcReqWifiApGetStaAid; +typedef struct _RpcReqWifiStaGetNegotiatedPhymode RpcReqWifiStaGetNegotiatedPhymode; +typedef struct _RpcRespWifiStaGetNegotiatedPhymode RpcRespWifiStaGetNegotiatedPhymode; +typedef struct _RpcRespWifiApGetStaAid RpcRespWifiApGetStaAid; +typedef struct _RpcReqWifiStaGetRssi RpcReqWifiStaGetRssi; +typedef struct _RpcRespWifiStaGetRssi RpcRespWifiStaGetRssi; +typedef struct _RpcReqWifiStaGetAid RpcReqWifiStaGetAid; +typedef struct _RpcRespWifiStaGetAid RpcRespWifiStaGetAid; +typedef struct _RpcReqWifiSetProtocols RpcReqWifiSetProtocols; +typedef struct _RpcRespWifiSetProtocols RpcRespWifiSetProtocols; +typedef struct _RpcReqWifiGetProtocols RpcReqWifiGetProtocols; +typedef struct _RpcRespWifiGetProtocols RpcRespWifiGetProtocols; +typedef struct _RpcReqWifiSetBandwidths RpcReqWifiSetBandwidths; +typedef struct _RpcRespWifiSetBandwidths RpcRespWifiSetBandwidths; +typedef struct _RpcReqWifiGetBandwidths RpcReqWifiGetBandwidths; +typedef struct _RpcRespWifiGetBandwidths RpcRespWifiGetBandwidths; +typedef struct _RpcReqWifiSetBand RpcReqWifiSetBand; +typedef struct _RpcRespWifiSetBand RpcRespWifiSetBand; +typedef struct _RpcReqWifiGetBand RpcReqWifiGetBand; +typedef struct _RpcRespWifiGetBand RpcRespWifiGetBand; +typedef struct _RpcReqWifiSetBandMode RpcReqWifiSetBandMode; +typedef struct _RpcRespWifiSetBandMode RpcRespWifiSetBandMode; +typedef struct _RpcReqWifiGetBandMode RpcReqWifiGetBandMode; +typedef struct _RpcRespWifiGetBandMode RpcRespWifiGetBandMode; +typedef struct _RpcReqWifiSetInactiveTime RpcReqWifiSetInactiveTime; +typedef struct _RpcRespWifiSetInactiveTime RpcRespWifiSetInactiveTime; +typedef struct _RpcReqWifiGetInactiveTime RpcReqWifiGetInactiveTime; +typedef struct _RpcRespWifiGetInactiveTime RpcRespWifiGetInactiveTime; +typedef struct _RpcReqWifiStaItwtSetup RpcReqWifiStaItwtSetup; +typedef struct _RpcRespWifiStaItwtSetup RpcRespWifiStaItwtSetup; +typedef struct _RpcReqWifiStaItwtTeardown RpcReqWifiStaItwtTeardown; +typedef struct _RpcRespWifiStaItwtTeardown RpcRespWifiStaItwtTeardown; +typedef struct _RpcReqWifiStaItwtSuspend RpcReqWifiStaItwtSuspend; +typedef struct _RpcRespWifiStaItwtSuspend RpcRespWifiStaItwtSuspend; +typedef struct _RpcReqWifiStaItwtGetFlowIdStatus RpcReqWifiStaItwtGetFlowIdStatus; +typedef struct _RpcRespWifiStaItwtGetFlowIdStatus RpcRespWifiStaItwtGetFlowIdStatus; +typedef struct _RpcReqWifiStaItwtSendProbeReq RpcReqWifiStaItwtSendProbeReq; +typedef struct _RpcRespWifiStaItwtSendProbeReq RpcRespWifiStaItwtSendProbeReq; +typedef struct _RpcReqWifiStaItwtSetTargetWakeTimeOffset RpcReqWifiStaItwtSetTargetWakeTimeOffset; +typedef struct _RpcRespWifiStaItwtSetTargetWakeTimeOffset RpcRespWifiStaItwtSetTargetWakeTimeOffset; +typedef struct _RpcReqWifiStaTwtConfig RpcReqWifiStaTwtConfig; +typedef struct _RpcRespWifiStaTwtConfig RpcRespWifiStaTwtConfig; +typedef struct _RpcReqGetCoprocessorFwVersion RpcReqGetCoprocessorFwVersion; +typedef struct _RpcRespGetCoprocessorFwVersion RpcRespGetCoprocessorFwVersion; +typedef struct _RpcReqSetDhcpDnsStatus RpcReqSetDhcpDnsStatus; +typedef struct _RpcRespSetDhcpDnsStatus RpcRespSetDhcpDnsStatus; +typedef struct _RpcReqGetDhcpDnsStatus RpcReqGetDhcpDnsStatus; +typedef struct _RpcRespGetDhcpDnsStatus RpcRespGetDhcpDnsStatus; +typedef struct _RpcEventWifiEventNoArgs RpcEventWifiEventNoArgs; +typedef struct _RpcEventESPInit RpcEventESPInit; +typedef struct _RpcEventHeartbeat RpcEventHeartbeat; +typedef struct _RpcEventAPStaDisconnected RpcEventAPStaDisconnected; +typedef struct _RpcEventAPStaConnected RpcEventAPStaConnected; +typedef struct _RpcEventStaScanDone RpcEventStaScanDone; +typedef struct _RpcEventStaConnected RpcEventStaConnected; +typedef struct _RpcEventStaDisconnected RpcEventStaDisconnected; +typedef struct _RpcEventDhcpDnsStatus RpcEventDhcpDnsStatus; +typedef struct _RpcEventStaItwtSetup RpcEventStaItwtSetup; +typedef struct _RpcEventStaItwtTeardown RpcEventStaItwtTeardown; +typedef struct _RpcEventStaItwtSuspend RpcEventStaItwtSuspend; +typedef struct _RpcEventStaItwtProbe RpcEventStaItwtProbe; +typedef struct _RpcReqWifiStaEnterpriseEnable RpcReqWifiStaEnterpriseEnable; +typedef struct _RpcRespWifiStaEnterpriseEnable RpcRespWifiStaEnterpriseEnable; +typedef struct _RpcReqWifiStaEnterpriseDisable RpcReqWifiStaEnterpriseDisable; +typedef struct _RpcRespWifiStaEnterpriseDisable RpcRespWifiStaEnterpriseDisable; +typedef struct _RpcReqEapSetIdentity RpcReqEapSetIdentity; +typedef struct _RpcRespEapSetIdentity RpcRespEapSetIdentity; +typedef struct _RpcReqEapClearIdentity RpcReqEapClearIdentity; +typedef struct _RpcRespEapClearIdentity RpcRespEapClearIdentity; +typedef struct _RpcReqEapSetUsername RpcReqEapSetUsername; +typedef struct _RpcRespEapSetUsername RpcRespEapSetUsername; +typedef struct _RpcReqEapClearUsername RpcReqEapClearUsername; +typedef struct _RpcRespEapClearUsername RpcRespEapClearUsername; +typedef struct _RpcReqEapSetPassword RpcReqEapSetPassword; +typedef struct _RpcRespEapSetPassword RpcRespEapSetPassword; +typedef struct _RpcReqEapClearPassword RpcReqEapClearPassword; +typedef struct _RpcRespEapClearPassword RpcRespEapClearPassword; +typedef struct _RpcReqEapSetNewPassword RpcReqEapSetNewPassword; +typedef struct _RpcRespEapSetNewPassword RpcRespEapSetNewPassword; +typedef struct _RpcReqEapClearNewPassword RpcReqEapClearNewPassword; +typedef struct _RpcRespEapClearNewPassword RpcRespEapClearNewPassword; +typedef struct _RpcReqEapSetCaCert RpcReqEapSetCaCert; +typedef struct _RpcRespEapSetCaCert RpcRespEapSetCaCert; +typedef struct _RpcReqEapClearCaCert RpcReqEapClearCaCert; +typedef struct _RpcRespEapClearCaCert RpcRespEapClearCaCert; +typedef struct _RpcReqEapSetCertificateAndKey RpcReqEapSetCertificateAndKey; +typedef struct _RpcRespEapSetCertificateAndKey RpcRespEapSetCertificateAndKey; +typedef struct _RpcReqEapClearCertificateAndKey RpcReqEapClearCertificateAndKey; +typedef struct _RpcRespEapClearCertificateAndKey RpcRespEapClearCertificateAndKey; +typedef struct _RpcReqEapSetDisableTimeCheck RpcReqEapSetDisableTimeCheck; +typedef struct _RpcRespEapSetDisableTimeCheck RpcRespEapSetDisableTimeCheck; +typedef struct _RpcReqEapGetDisableTimeCheck RpcReqEapGetDisableTimeCheck; +typedef struct _RpcRespEapGetDisableTimeCheck RpcRespEapGetDisableTimeCheck; +typedef struct _RpcReqEapSetTtlsPhase2Method RpcReqEapSetTtlsPhase2Method; +typedef struct _RpcRespEapSetTtlsPhase2Method RpcRespEapSetTtlsPhase2Method; +typedef struct _RpcReqEapSetSuiteb192bitCertification RpcReqEapSetSuiteb192bitCertification; +typedef struct _RpcRespEapSetSuiteb192bitCertification RpcRespEapSetSuiteb192bitCertification; +typedef struct _RpcReqEapSetPacFile RpcReqEapSetPacFile; +typedef struct _RpcRespEapSetPacFile RpcRespEapSetPacFile; +typedef struct _RpcReqEapSetFastParams RpcReqEapSetFastParams; +typedef struct _RpcRespEapSetFastParams RpcRespEapSetFastParams; +typedef struct _RpcReqEapUseDefaultCertBundle RpcReqEapUseDefaultCertBundle; +typedef struct _RpcRespEapUseDefaultCertBundle RpcRespEapUseDefaultCertBundle; +typedef struct _RpcReqWifiSetOkcSupport RpcReqWifiSetOkcSupport; +typedef struct _RpcRespWifiSetOkcSupport RpcRespWifiSetOkcSupport; +typedef struct _RpcReqEapSetDomainName RpcReqEapSetDomainName; +typedef struct _RpcRespEapSetDomainName RpcRespEapSetDomainName; +typedef struct _RpcReqEapSetEapMethods RpcReqEapSetEapMethods; +typedef struct _RpcRespEapSetEapMethods RpcRespEapSetEapMethods; +typedef struct _Rpc Rpc; /* --- enums --- */ @@ -649,14 +698,110 @@ typedef enum _RpcId { *0x168 */ RPC_ID__Req_WifiStaItwtSetTargetWakeTimeOffset = 360, + /* + *0x169 + */ + RPC_ID__Req_WifiStaEnterpriseEnable = 361, + /* + *0x16A + */ + RPC_ID__Req_WifiStaEnterpriseDisable = 362, + /* + *0x16B + */ + RPC_ID__Req_EapSetIdentity = 363, + /* + *0x16C + */ + RPC_ID__Req_EapClearIdentity = 364, + /* + *0x16D + */ + RPC_ID__Req_EapSetUsername = 365, + /* + *0x16E + */ + RPC_ID__Req_EapClearUsername = 366, + /* + *0x16F + */ + RPC_ID__Req_EapSetPassword = 367, + /* + *0x170 + */ + RPC_ID__Req_EapClearPassword = 368, + /* + *0x171 + */ + RPC_ID__Req_EapSetNewPassword = 369, + /* + *0x172 + */ + RPC_ID__Req_EapClearNewPassword = 370, + /* + *0x173 + */ + RPC_ID__Req_EapSetCaCert = 371, + /* + *0x174 + */ + RPC_ID__Req_EapClearCaCert = 372, + /* + *0x175 + */ + RPC_ID__Req_EapSetCertificateAndKey = 373, + /* + *0x176 + */ + RPC_ID__Req_EapClearCertificateAndKey = 374, + /* + *0x177 + */ + RPC_ID__Req_EapGetDisableTimeCheck = 375, + /* + *0x178 + */ + RPC_ID__Req_EapSetTtlsPhase2Method = 376, + /* + *0x179 + */ + RPC_ID__Req_EapSetSuitebCertification = 377, + /* + *0x17A + */ + RPC_ID__Req_EapSetPacFile = 378, + /* + *0x17B + */ + RPC_ID__Req_EapSetFastParams = 379, + /* + *0x17C + */ + RPC_ID__Req_EapUseDefaultCertBundle = 380, + /* + *0x17D + */ + RPC_ID__Req_WifiSetOkcSupport = 381, + /* + *0x17E + */ + RPC_ID__Req_EapSetDomainName = 382, + /* + *0x17F + */ + RPC_ID__Req_EapSetDisableTimeCheck = 383, + /* + * 0x180 + */ + RPC_ID__Req_EapSetEapMethods = 384, /* * Add new control path command response before Req_Max * and update Req_Max */ /* - *0x169 + * 0x181 */ - RPC_ID__Req_Max = 361, + RPC_ID__Req_Max = 385, /* ** Response Msgs * */ @@ -767,11 +912,35 @@ typedef enum _RpcId { RPC_ID__Resp_WifiStaItwtGetFlowIdStatus = 614, RPC_ID__Resp_WifiStaItwtSendProbeReq = 615, RPC_ID__Resp_WifiStaItwtSetTargetWakeTimeOffset = 616, + RPC_ID__Resp_WifiStaEnterpriseEnable = 617, + RPC_ID__Resp_WifiStaEnterpriseDisable = 618, + RPC_ID__Resp_EapSetIdentity = 619, + RPC_ID__Resp_EapClearIdentity = 620, + RPC_ID__Resp_EapSetUsername = 621, + RPC_ID__Resp_EapClearUsername = 622, + RPC_ID__Resp_EapSetPassword = 623, + RPC_ID__Resp_EapClearPassword = 624, + RPC_ID__Resp_EapSetNewPassword = 625, + RPC_ID__Resp_EapClearNewPassword = 626, + RPC_ID__Resp_EapSetCaCert = 627, + RPC_ID__Resp_EapClearCaCert = 628, + RPC_ID__Resp_EapSetCertificateAndKey = 629, + RPC_ID__Resp_EapClearCertificateAndKey = 630, + RPC_ID__Resp_EapGetDisableTimeCheck = 631, + RPC_ID__Resp_EapSetTtlsPhase2Method = 632, + RPC_ID__Resp_EapSetSuitebCertification = 633, + RPC_ID__Resp_EapSetPacFile = 634, + RPC_ID__Resp_EapSetFastParams = 635, + RPC_ID__Resp_EapUseDefaultCertBundle = 636, + RPC_ID__Resp_WifiSetOkcSupport = 637, + RPC_ID__Resp_EapSetDomainName = 638, + RPC_ID__Resp_EapSetDisableTimeCheck = 639, + RPC_ID__Resp_EapSetEapMethods = 640, /* * Add new control path command response before Resp_Max * and update Resp_Max */ - RPC_ID__Resp_Max = 617, + RPC_ID__Resp_Max = 641, /* ** Event Msgs * */ @@ -799,7 +968,7 @@ typedef enum _RpcId { /* --- messages --- */ -struct WifiInitConfig +struct _WifiInitConfig { ProtobufCMessage base; /* @@ -904,7 +1073,7 @@ struct WifiInitConfig , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } -struct WifiCountry +struct _WifiCountry { ProtobufCMessage base; /* @@ -934,7 +1103,7 @@ struct WifiCountry , {0,NULL}, 0, 0, 0, 0 } -struct WifiActiveScanTime +struct _WifiActiveScanTime { ProtobufCMessage base; /* @@ -952,7 +1121,7 @@ struct WifiActiveScanTime , 0, 0 } -struct WifiScanTime +struct _WifiScanTime { ProtobufCMessage base; /* @@ -970,7 +1139,7 @@ struct WifiScanTime , NULL, 0 } -struct WifiScanChannelBitmap +struct _WifiScanChannelBitmap { ProtobufCMessage base; /* @@ -987,7 +1156,7 @@ struct WifiScanChannelBitmap , 0, 0 } -struct WifiScanConfig +struct _WifiScanConfig { ProtobufCMessage base; /* @@ -1030,7 +1199,7 @@ struct WifiScanConfig , {0,NULL}, {0,NULL}, 0, 0, 0, NULL, 0, NULL } -struct WifiHeApInfo +struct _WifiHeApInfo { ProtobufCMessage base; /* @@ -1052,7 +1221,7 @@ struct WifiHeApInfo , 0, 0 } -struct WifiApRecord +struct _WifiApRecord { ProtobufCMessage base; /* @@ -1133,7 +1302,7 @@ struct WifiApRecord , {0,NULL}, {0,NULL}, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0 } -struct WifiScanThreshold +struct _WifiScanThreshold { ProtobufCMessage base; /* @@ -1157,7 +1326,7 @@ struct WifiScanThreshold , 0, 0, 0 } -struct WifiPmfConfig +struct _WifiPmfConfig { ProtobufCMessage base; /* @@ -1174,7 +1343,7 @@ struct WifiPmfConfig , 0, 0 } -struct WifiBssMaxIdleConfig +struct _WifiBssMaxIdleConfig { ProtobufCMessage base; /* @@ -1191,7 +1360,7 @@ struct WifiBssMaxIdleConfig , 0, 0 } -struct WifiApConfig +struct _WifiApConfig { ProtobufCMessage base; /* @@ -1274,7 +1443,7 @@ struct WifiApConfig , {0,NULL}, {0,NULL}, 0, 0, 0, 0, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 0, NULL, 0 } -struct WifiStaConfig +struct _WifiStaConfig { ProtobufCMessage base; /* @@ -1374,10 +1543,10 @@ typedef enum { WIFI_CONFIG__U__NOT_SET = 0, WIFI_CONFIG__U_AP = 1, WIFI_CONFIG__U_STA = 2 - PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(WIFI_CONFIG__U__CASE) + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(WIFI_CONFIG__U) } WifiConfig__UCase; -struct WifiConfig +struct _WifiConfig { ProtobufCMessage base; WifiConfig__UCase u_case; @@ -1397,7 +1566,7 @@ struct WifiConfig , WIFI_CONFIG__U__NOT_SET, {0} } -struct WifiStaInfo +struct _WifiStaInfo { ProtobufCMessage base; /* @@ -1424,7 +1593,7 @@ struct WifiStaInfo , {0,NULL}, 0, 0 } -struct WifiStaList +struct _WifiStaList { ProtobufCMessage base; /* @@ -1442,7 +1611,7 @@ struct WifiStaList , 0,NULL, 0 } -struct WifiPktRxCtrl +struct _WifiPktRxCtrl { ProtobufCMessage base; /* @@ -1550,7 +1719,7 @@ struct WifiPktRxCtrl , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } -struct WifiPromiscuousPkt +struct _WifiPromiscuousPkt { ProtobufCMessage base; /* @@ -1567,7 +1736,7 @@ struct WifiPromiscuousPkt , NULL, {0,NULL} } -struct WifiPromiscuousFilter +struct _WifiPromiscuousFilter { ProtobufCMessage base; /* @@ -1580,7 +1749,7 @@ struct WifiPromiscuousFilter , 0 } -struct WifiCsiConfig +struct _WifiCsiConfig { ProtobufCMessage base; /* @@ -1618,7 +1787,7 @@ struct WifiCsiConfig , 0, 0, 0, 0, 0, 0, 0 } -struct WifiCsiInfo +struct _WifiCsiInfo { ProtobufCMessage base; /* @@ -1651,7 +1820,7 @@ struct WifiCsiInfo , NULL, {0,NULL}, {0,NULL}, 0, {0,NULL}, 0 } -struct WifiAntGpio +struct _WifiAntGpio { ProtobufCMessage base; /* @@ -1668,7 +1837,7 @@ struct WifiAntGpio , 0, 0 } -struct WifiAntGpioConfig +struct _WifiAntGpioConfig { ProtobufCMessage base; /* @@ -1682,7 +1851,7 @@ struct WifiAntGpioConfig , 0,NULL } -struct WifiAntConfig +struct _WifiAntConfig { ProtobufCMessage base; /* @@ -1711,7 +1880,7 @@ struct WifiAntConfig , 0, 0, 0, 0, 0 } -struct WifiActionTxReq +struct _WifiActionTxReq { ProtobufCMessage base; /* @@ -1744,7 +1913,7 @@ struct WifiActionTxReq , 0, {0,NULL}, 0, 0, {0,NULL} } -struct WifiFtmInitiatorCfg +struct _WifiFtmInitiatorCfg { ProtobufCMessage base; /* @@ -1769,7 +1938,7 @@ struct WifiFtmInitiatorCfg , {0,NULL}, 0, 0, 0 } -struct WifiEventStaScanDone +struct _WifiEventStaScanDone { ProtobufCMessage base; /* @@ -1790,7 +1959,7 @@ struct WifiEventStaScanDone , 0, 0, 0 } -struct WifiEventStaConnected +struct _WifiEventStaConnected { ProtobufCMessage base; /* @@ -1823,7 +1992,7 @@ struct WifiEventStaConnected , {0,NULL}, 0, {0,NULL}, 0, 0, 0 } -struct WifiEventStaDisconnected +struct _WifiEventStaDisconnected { ProtobufCMessage base; /* @@ -1852,7 +2021,7 @@ struct WifiEventStaDisconnected , {0,NULL}, 0, {0,NULL}, 0, 0 } -struct WifiEventStaAuthmodeChange +struct _WifiEventStaAuthmodeChange { ProtobufCMessage base; /* @@ -1869,7 +2038,7 @@ struct WifiEventStaAuthmodeChange , 0, 0 } -struct WifiEventStaWpsErPin +struct _WifiEventStaWpsErPin { ProtobufCMessage base; /* @@ -1882,7 +2051,7 @@ struct WifiEventStaWpsErPin , {0,NULL} } -struct ApCred +struct _ApCred { ProtobufCMessage base; /* @@ -1899,7 +2068,7 @@ struct ApCred , {0,NULL}, {0,NULL} } -struct WifiEventStaWpsErSuccess +struct _WifiEventStaWpsErSuccess { ProtobufCMessage base; /* @@ -1920,7 +2089,7 @@ struct WifiEventStaWpsErSuccess /* ** Argument structure for WIFI_EVENT_AP_PROBEREQRECVED event */ -struct WifiEventApProbeReqRx +struct _WifiEventApProbeReqRx { ProtobufCMessage base; /* @@ -1940,7 +2109,7 @@ struct WifiEventApProbeReqRx /* ** Argument structure for WIFI_EVENT_STA_BSS_RSSI_LOW event */ -struct WifiEventBssRssiLow +struct _WifiEventBssRssiLow { ProtobufCMessage base; /* @@ -1953,7 +2122,7 @@ struct WifiEventBssRssiLow , 0 } -struct WifiFtmReportEntry +struct _WifiFtmReportEntry { ProtobufCMessage base; /* @@ -1993,7 +2162,7 @@ struct WifiFtmReportEntry , 0, 0, 0, 0, 0, 0, 0 } -struct WifiEventFtmReport +struct _WifiEventFtmReport { ProtobufCMessage base; /* @@ -2031,7 +2200,7 @@ struct WifiEventFtmReport , {0,NULL}, 0, 0, 0, 0, 0,NULL, 0 } -struct WifiEventActionTxStatus +struct _WifiEventActionTxStatus { ProtobufCMessage base; /* @@ -2056,7 +2225,7 @@ struct WifiEventActionTxStatus , 0, 0, {0,NULL}, 0 } -struct WifiEventRocDone +struct _WifiEventRocDone { ProtobufCMessage base; /* @@ -2069,7 +2238,7 @@ struct WifiEventRocDone , 0 } -struct WifiEventApWpsRgPin +struct _WifiEventApWpsRgPin { ProtobufCMessage base; /* @@ -2082,7 +2251,7 @@ struct WifiEventApWpsRgPin , {0,NULL} } -struct WifiEventApWpsRgFailReason +struct _WifiEventApWpsRgFailReason { ProtobufCMessage base; /* @@ -2099,7 +2268,7 @@ struct WifiEventApWpsRgFailReason , 0, {0,NULL} } -struct WifiEventApWpsRgSuccess +struct _WifiEventApWpsRgSuccess { ProtobufCMessage base; /* @@ -2112,7 +2281,7 @@ struct WifiEventApWpsRgSuccess , {0,NULL} } -struct WifiProtocols +struct _WifiProtocols { ProtobufCMessage base; /* @@ -2129,7 +2298,7 @@ struct WifiProtocols , 0, 0 } -struct WifiBandwidths +struct _WifiBandwidths { ProtobufCMessage base; /* @@ -2146,7 +2315,7 @@ struct WifiBandwidths , 0, 0 } -struct WifiItwtSetupConfig +struct _WifiItwtSetupConfig { ProtobufCMessage base; uint32_t setup_cmd; @@ -2171,7 +2340,7 @@ struct WifiItwtSetupConfig , 0, 0, 0, 0, 0, 0 } -struct WifiTwtConfig +struct _WifiTwtConfig { ProtobufCMessage base; /* @@ -2188,7 +2357,7 @@ struct WifiTwtConfig , 0, 0 } -struct ConnectedSTAList +struct _ConnectedSTAList { ProtobufCMessage base; ProtobufCBinaryData mac; @@ -2199,10 +2368,31 @@ struct ConnectedSTAList , {0,NULL}, 0 } +struct _EapFastConfig +{ + ProtobufCMessage base; + /* + * Enable or disable Fast Provisioning in EAP-FAST (0 = disabled, 1 = enabled) + */ + int32_t fast_provisioning; + /* + * Maximum length of the PAC (Protected Access Credential) list + */ + int32_t fast_max_pac_list_len; + /* + * Set to true for binary format PAC, false for ASCII format PAC + */ + protobuf_c_boolean fast_pac_format_binary; +}; +#define EAP_FAST_CONFIG__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&eap_fast_config__descriptor) \ + , 0, 0, 0 } + + /* ** Req/Resp structure * */ -struct RpcReqGetMacAddress +struct _RpcReqGetMacAddress { ProtobufCMessage base; int32_t mode; @@ -2212,7 +2402,7 @@ struct RpcReqGetMacAddress , 0 } -struct RpcRespGetMacAddress +struct _RpcRespGetMacAddress { ProtobufCMessage base; ProtobufCBinaryData mac; @@ -2223,7 +2413,7 @@ struct RpcRespGetMacAddress , {0,NULL}, 0 } -struct RpcReqGetMode +struct _RpcReqGetMode { ProtobufCMessage base; }; @@ -2232,7 +2422,7 @@ struct RpcReqGetMode } -struct RpcRespGetMode +struct _RpcRespGetMode { ProtobufCMessage base; int32_t mode; @@ -2243,7 +2433,7 @@ struct RpcRespGetMode , 0, 0 } -struct RpcReqSetMode +struct _RpcReqSetMode { ProtobufCMessage base; int32_t mode; @@ -2253,7 +2443,7 @@ struct RpcReqSetMode , 0 } -struct RpcRespSetMode +struct _RpcRespSetMode { ProtobufCMessage base; int32_t resp; @@ -2263,7 +2453,7 @@ struct RpcRespSetMode , 0 } -struct RpcReqGetPs +struct _RpcReqGetPs { ProtobufCMessage base; }; @@ -2272,7 +2462,7 @@ struct RpcReqGetPs } -struct RpcRespGetPs +struct _RpcRespGetPs { ProtobufCMessage base; int32_t resp; @@ -2283,7 +2473,7 @@ struct RpcRespGetPs , 0, 0 } -struct RpcReqSetPs +struct _RpcReqSetPs { ProtobufCMessage base; int32_t type; @@ -2293,7 +2483,7 @@ struct RpcReqSetPs , 0 } -struct RpcRespSetPs +struct _RpcRespSetPs { ProtobufCMessage base; int32_t resp; @@ -2303,7 +2493,7 @@ struct RpcRespSetPs , 0 } -struct RpcReqSetMacAddress +struct _RpcReqSetMacAddress { ProtobufCMessage base; ProtobufCBinaryData mac; @@ -2314,7 +2504,7 @@ struct RpcReqSetMacAddress , {0,NULL}, 0 } -struct RpcRespSetMacAddress +struct _RpcRespSetMacAddress { ProtobufCMessage base; int32_t resp; @@ -2324,7 +2514,7 @@ struct RpcRespSetMacAddress , 0 } -struct RpcReqOTABegin +struct _RpcReqOTABegin { ProtobufCMessage base; }; @@ -2333,7 +2523,7 @@ struct RpcReqOTABegin } -struct RpcRespOTABegin +struct _RpcRespOTABegin { ProtobufCMessage base; int32_t resp; @@ -2343,7 +2533,7 @@ struct RpcRespOTABegin , 0 } -struct RpcReqOTAWrite +struct _RpcReqOTAWrite { ProtobufCMessage base; ProtobufCBinaryData ota_data; @@ -2353,7 +2543,7 @@ struct RpcReqOTAWrite , {0,NULL} } -struct RpcRespOTAWrite +struct _RpcRespOTAWrite { ProtobufCMessage base; int32_t resp; @@ -2363,7 +2553,7 @@ struct RpcRespOTAWrite , 0 } -struct RpcReqOTAEnd +struct _RpcReqOTAEnd { ProtobufCMessage base; }; @@ -2372,7 +2562,7 @@ struct RpcReqOTAEnd } -struct RpcRespOTAEnd +struct _RpcRespOTAEnd { ProtobufCMessage base; int32_t resp; @@ -2382,7 +2572,7 @@ struct RpcRespOTAEnd , 0 } -struct RpcReqWifiSetMaxTxPower +struct _RpcReqWifiSetMaxTxPower { ProtobufCMessage base; int32_t power; @@ -2392,7 +2582,7 @@ struct RpcReqWifiSetMaxTxPower , 0 } -struct RpcRespWifiSetMaxTxPower +struct _RpcRespWifiSetMaxTxPower { ProtobufCMessage base; int32_t resp; @@ -2402,7 +2592,7 @@ struct RpcRespWifiSetMaxTxPower , 0 } -struct RpcReqWifiGetMaxTxPower +struct _RpcReqWifiGetMaxTxPower { ProtobufCMessage base; }; @@ -2411,7 +2601,7 @@ struct RpcReqWifiGetMaxTxPower } -struct RpcRespWifiGetMaxTxPower +struct _RpcRespWifiGetMaxTxPower { ProtobufCMessage base; int32_t power; @@ -2422,7 +2612,7 @@ struct RpcRespWifiGetMaxTxPower , 0, 0 } -struct RpcReqConfigHeartbeat +struct _RpcReqConfigHeartbeat { ProtobufCMessage base; protobuf_c_boolean enable; @@ -2433,7 +2623,7 @@ struct RpcReqConfigHeartbeat , 0, 0 } -struct RpcRespConfigHeartbeat +struct _RpcRespConfigHeartbeat { ProtobufCMessage base; int32_t resp; @@ -2443,7 +2633,7 @@ struct RpcRespConfigHeartbeat , 0 } -struct RpcReqWifiInit +struct _RpcReqWifiInit { ProtobufCMessage base; WifiInitConfig *cfg; @@ -2453,7 +2643,7 @@ struct RpcReqWifiInit , NULL } -struct RpcRespWifiInit +struct _RpcRespWifiInit { ProtobufCMessage base; int32_t resp; @@ -2463,7 +2653,7 @@ struct RpcRespWifiInit , 0 } -struct RpcReqWifiDeinit +struct _RpcReqWifiDeinit { ProtobufCMessage base; }; @@ -2472,7 +2662,7 @@ struct RpcReqWifiDeinit } -struct RpcRespWifiDeinit +struct _RpcRespWifiDeinit { ProtobufCMessage base; int32_t resp; @@ -2482,7 +2672,7 @@ struct RpcRespWifiDeinit , 0 } -struct RpcReqWifiSetConfig +struct _RpcReqWifiSetConfig { ProtobufCMessage base; int32_t iface; @@ -2493,7 +2683,7 @@ struct RpcReqWifiSetConfig , 0, NULL } -struct RpcRespWifiSetConfig +struct _RpcRespWifiSetConfig { ProtobufCMessage base; int32_t resp; @@ -2503,7 +2693,7 @@ struct RpcRespWifiSetConfig , 0 } -struct RpcReqWifiGetConfig +struct _RpcReqWifiGetConfig { ProtobufCMessage base; int32_t iface; @@ -2513,7 +2703,7 @@ struct RpcReqWifiGetConfig , 0 } -struct RpcRespWifiGetConfig +struct _RpcRespWifiGetConfig { ProtobufCMessage base; int32_t resp; @@ -2525,7 +2715,7 @@ struct RpcRespWifiGetConfig , 0, 0, NULL } -struct RpcReqWifiConnect +struct _RpcReqWifiConnect { ProtobufCMessage base; }; @@ -2534,7 +2724,7 @@ struct RpcReqWifiConnect } -struct RpcRespWifiConnect +struct _RpcRespWifiConnect { ProtobufCMessage base; int32_t resp; @@ -2544,7 +2734,7 @@ struct RpcRespWifiConnect , 0 } -struct RpcReqWifiDisconnect +struct _RpcReqWifiDisconnect { ProtobufCMessage base; }; @@ -2553,7 +2743,7 @@ struct RpcReqWifiDisconnect } -struct RpcRespWifiDisconnect +struct _RpcRespWifiDisconnect { ProtobufCMessage base; int32_t resp; @@ -2563,7 +2753,7 @@ struct RpcRespWifiDisconnect , 0 } -struct RpcReqWifiStart +struct _RpcReqWifiStart { ProtobufCMessage base; }; @@ -2572,7 +2762,7 @@ struct RpcReqWifiStart } -struct RpcRespWifiStart +struct _RpcRespWifiStart { ProtobufCMessage base; int32_t resp; @@ -2582,7 +2772,7 @@ struct RpcRespWifiStart , 0 } -struct RpcReqWifiStop +struct _RpcReqWifiStop { ProtobufCMessage base; }; @@ -2591,7 +2781,7 @@ struct RpcReqWifiStop } -struct RpcRespWifiStop +struct _RpcRespWifiStop { ProtobufCMessage base; int32_t resp; @@ -2601,7 +2791,7 @@ struct RpcRespWifiStop , 0 } -struct RpcReqWifiScanStart +struct _RpcReqWifiScanStart { ProtobufCMessage base; WifiScanConfig *config; @@ -2613,7 +2803,7 @@ struct RpcReqWifiScanStart , NULL, 0, 0 } -struct RpcRespWifiScanStart +struct _RpcRespWifiScanStart { ProtobufCMessage base; int32_t resp; @@ -2623,7 +2813,7 @@ struct RpcRespWifiScanStart , 0 } -struct RpcReqWifiScanStop +struct _RpcReqWifiScanStop { ProtobufCMessage base; }; @@ -2632,7 +2822,7 @@ struct RpcReqWifiScanStop } -struct RpcRespWifiScanStop +struct _RpcRespWifiScanStop { ProtobufCMessage base; int32_t resp; @@ -2642,7 +2832,7 @@ struct RpcRespWifiScanStop , 0 } -struct RpcReqWifiScanGetApNum +struct _RpcReqWifiScanGetApNum { ProtobufCMessage base; }; @@ -2651,7 +2841,7 @@ struct RpcReqWifiScanGetApNum } -struct RpcRespWifiScanGetApNum +struct _RpcRespWifiScanGetApNum { ProtobufCMessage base; int32_t resp; @@ -2662,7 +2852,7 @@ struct RpcRespWifiScanGetApNum , 0, 0 } -struct RpcReqWifiScanGetApRecords +struct _RpcReqWifiScanGetApRecords { ProtobufCMessage base; int32_t number; @@ -2672,7 +2862,7 @@ struct RpcReqWifiScanGetApRecords , 0 } -struct RpcRespWifiScanGetApRecords +struct _RpcRespWifiScanGetApRecords { ProtobufCMessage base; int32_t resp; @@ -2685,7 +2875,7 @@ struct RpcRespWifiScanGetApRecords , 0, 0, 0,NULL } -struct RpcReqWifiScanGetApRecord +struct _RpcReqWifiScanGetApRecord { ProtobufCMessage base; }; @@ -2694,7 +2884,7 @@ struct RpcReqWifiScanGetApRecord } -struct RpcRespWifiScanGetApRecord +struct _RpcRespWifiScanGetApRecord { ProtobufCMessage base; int32_t resp; @@ -2705,7 +2895,7 @@ struct RpcRespWifiScanGetApRecord , 0, NULL } -struct RpcReqWifiClearApList +struct _RpcReqWifiClearApList { ProtobufCMessage base; }; @@ -2714,7 +2904,7 @@ struct RpcReqWifiClearApList } -struct RpcRespWifiClearApList +struct _RpcRespWifiClearApList { ProtobufCMessage base; int32_t resp; @@ -2724,7 +2914,7 @@ struct RpcRespWifiClearApList , 0 } -struct RpcReqWifiRestore +struct _RpcReqWifiRestore { ProtobufCMessage base; }; @@ -2733,7 +2923,7 @@ struct RpcReqWifiRestore } -struct RpcRespWifiRestore +struct _RpcRespWifiRestore { ProtobufCMessage base; int32_t resp; @@ -2743,7 +2933,7 @@ struct RpcRespWifiRestore , 0 } -struct RpcReqWifiClearFastConnect +struct _RpcReqWifiClearFastConnect { ProtobufCMessage base; }; @@ -2752,7 +2942,7 @@ struct RpcReqWifiClearFastConnect } -struct RpcRespWifiClearFastConnect +struct _RpcRespWifiClearFastConnect { ProtobufCMessage base; int32_t resp; @@ -2762,7 +2952,7 @@ struct RpcRespWifiClearFastConnect , 0 } -struct RpcReqWifiDeauthSta +struct _RpcReqWifiDeauthSta { ProtobufCMessage base; int32_t aid; @@ -2772,7 +2962,7 @@ struct RpcReqWifiDeauthSta , 0 } -struct RpcRespWifiDeauthSta +struct _RpcRespWifiDeauthSta { ProtobufCMessage base; int32_t resp; @@ -2783,7 +2973,7 @@ struct RpcRespWifiDeauthSta , 0, 0 } -struct RpcReqWifiStaGetApInfo +struct _RpcReqWifiStaGetApInfo { ProtobufCMessage base; }; @@ -2792,7 +2982,7 @@ struct RpcReqWifiStaGetApInfo } -struct RpcRespWifiStaGetApInfo +struct _RpcRespWifiStaGetApInfo { ProtobufCMessage base; int32_t resp; @@ -2803,7 +2993,7 @@ struct RpcRespWifiStaGetApInfo , 0, NULL } -struct RpcReqWifiSetProtocol +struct _RpcReqWifiSetProtocol { ProtobufCMessage base; int32_t ifx; @@ -2814,7 +3004,7 @@ struct RpcReqWifiSetProtocol , 0, 0 } -struct RpcRespWifiSetProtocol +struct _RpcRespWifiSetProtocol { ProtobufCMessage base; int32_t resp; @@ -2824,7 +3014,7 @@ struct RpcRespWifiSetProtocol , 0 } -struct RpcReqWifiGetProtocol +struct _RpcReqWifiGetProtocol { ProtobufCMessage base; int32_t ifx; @@ -2834,7 +3024,7 @@ struct RpcReqWifiGetProtocol , 0 } -struct RpcRespWifiGetProtocol +struct _RpcRespWifiGetProtocol { ProtobufCMessage base; int32_t resp; @@ -2845,7 +3035,7 @@ struct RpcRespWifiGetProtocol , 0, 0 } -struct RpcReqWifiSetBandwidth +struct _RpcReqWifiSetBandwidth { ProtobufCMessage base; int32_t ifx; @@ -2856,7 +3046,7 @@ struct RpcReqWifiSetBandwidth , 0, 0 } -struct RpcRespWifiSetBandwidth +struct _RpcRespWifiSetBandwidth { ProtobufCMessage base; int32_t resp; @@ -2866,7 +3056,7 @@ struct RpcRespWifiSetBandwidth , 0 } -struct RpcReqWifiGetBandwidth +struct _RpcReqWifiGetBandwidth { ProtobufCMessage base; int32_t ifx; @@ -2876,7 +3066,7 @@ struct RpcReqWifiGetBandwidth , 0 } -struct RpcRespWifiGetBandwidth +struct _RpcRespWifiGetBandwidth { ProtobufCMessage base; int32_t resp; @@ -2887,7 +3077,7 @@ struct RpcRespWifiGetBandwidth , 0, 0 } -struct RpcReqWifiSetChannel +struct _RpcReqWifiSetChannel { ProtobufCMessage base; int32_t primary; @@ -2898,7 +3088,7 @@ struct RpcReqWifiSetChannel , 0, 0 } -struct RpcRespWifiSetChannel +struct _RpcRespWifiSetChannel { ProtobufCMessage base; int32_t resp; @@ -2908,7 +3098,7 @@ struct RpcRespWifiSetChannel , 0 } -struct RpcReqWifiGetChannel +struct _RpcReqWifiGetChannel { ProtobufCMessage base; }; @@ -2917,7 +3107,7 @@ struct RpcReqWifiGetChannel } -struct RpcRespWifiGetChannel +struct _RpcRespWifiGetChannel { ProtobufCMessage base; int32_t resp; @@ -2929,7 +3119,7 @@ struct RpcRespWifiGetChannel , 0, 0, 0 } -struct RpcReqWifiSetStorage +struct _RpcReqWifiSetStorage { ProtobufCMessage base; int32_t storage; @@ -2939,7 +3129,7 @@ struct RpcReqWifiSetStorage , 0 } -struct RpcRespWifiSetStorage +struct _RpcRespWifiSetStorage { ProtobufCMessage base; int32_t resp; @@ -2949,7 +3139,7 @@ struct RpcRespWifiSetStorage , 0 } -struct RpcReqWifiSetCountryCode +struct _RpcReqWifiSetCountryCode { ProtobufCMessage base; ProtobufCBinaryData country; @@ -2960,7 +3150,7 @@ struct RpcReqWifiSetCountryCode , {0,NULL}, 0 } -struct RpcRespWifiSetCountryCode +struct _RpcRespWifiSetCountryCode { ProtobufCMessage base; int32_t resp; @@ -2970,7 +3160,7 @@ struct RpcRespWifiSetCountryCode , 0 } -struct RpcReqWifiGetCountryCode +struct _RpcReqWifiGetCountryCode { ProtobufCMessage base; }; @@ -2979,7 +3169,7 @@ struct RpcReqWifiGetCountryCode } -struct RpcRespWifiGetCountryCode +struct _RpcRespWifiGetCountryCode { ProtobufCMessage base; int32_t resp; @@ -2990,7 +3180,7 @@ struct RpcRespWifiGetCountryCode , 0, {0,NULL} } -struct RpcReqWifiSetCountry +struct _RpcReqWifiSetCountry { ProtobufCMessage base; WifiCountry *country; @@ -3000,7 +3190,7 @@ struct RpcReqWifiSetCountry , NULL } -struct RpcRespWifiSetCountry +struct _RpcRespWifiSetCountry { ProtobufCMessage base; int32_t resp; @@ -3010,7 +3200,7 @@ struct RpcRespWifiSetCountry , 0 } -struct RpcReqWifiGetCountry +struct _RpcReqWifiGetCountry { ProtobufCMessage base; }; @@ -3019,7 +3209,7 @@ struct RpcReqWifiGetCountry } -struct RpcRespWifiGetCountry +struct _RpcRespWifiGetCountry { ProtobufCMessage base; int32_t resp; @@ -3030,7 +3220,7 @@ struct RpcRespWifiGetCountry , 0, NULL } -struct RpcReqWifiApGetStaList +struct _RpcReqWifiApGetStaList { ProtobufCMessage base; }; @@ -3039,7 +3229,7 @@ struct RpcReqWifiApGetStaList } -struct RpcRespWifiApGetStaList +struct _RpcRespWifiApGetStaList { ProtobufCMessage base; int32_t resp; @@ -3050,7 +3240,7 @@ struct RpcRespWifiApGetStaList , 0, NULL } -struct RpcReqWifiApGetStaAid +struct _RpcReqWifiApGetStaAid { ProtobufCMessage base; ProtobufCBinaryData mac; @@ -3060,7 +3250,7 @@ struct RpcReqWifiApGetStaAid , {0,NULL} } -struct RpcReqWifiStaGetNegotiatedPhymode +struct _RpcReqWifiStaGetNegotiatedPhymode { ProtobufCMessage base; }; @@ -3069,7 +3259,7 @@ struct RpcReqWifiStaGetNegotiatedPhymode } -struct RpcRespWifiStaGetNegotiatedPhymode +struct _RpcRespWifiStaGetNegotiatedPhymode { ProtobufCMessage base; int32_t resp; @@ -3080,7 +3270,7 @@ struct RpcRespWifiStaGetNegotiatedPhymode , 0, 0 } -struct RpcRespWifiApGetStaAid +struct _RpcRespWifiApGetStaAid { ProtobufCMessage base; int32_t resp; @@ -3091,7 +3281,7 @@ struct RpcRespWifiApGetStaAid , 0, 0 } -struct RpcReqWifiStaGetRssi +struct _RpcReqWifiStaGetRssi { ProtobufCMessage base; }; @@ -3100,7 +3290,7 @@ struct RpcReqWifiStaGetRssi } -struct RpcRespWifiStaGetRssi +struct _RpcRespWifiStaGetRssi { ProtobufCMessage base; int32_t resp; @@ -3111,7 +3301,7 @@ struct RpcRespWifiStaGetRssi , 0, 0 } -struct RpcReqWifiStaGetAid +struct _RpcReqWifiStaGetAid { ProtobufCMessage base; }; @@ -3120,7 +3310,7 @@ struct RpcReqWifiStaGetAid } -struct RpcRespWifiStaGetAid +struct _RpcRespWifiStaGetAid { ProtobufCMessage base; int32_t resp; @@ -3131,7 +3321,7 @@ struct RpcRespWifiStaGetAid , 0, 0 } -struct RpcReqWifiSetProtocols +struct _RpcReqWifiSetProtocols { ProtobufCMessage base; int32_t ifx; @@ -3142,7 +3332,7 @@ struct RpcReqWifiSetProtocols , 0, NULL } -struct RpcRespWifiSetProtocols +struct _RpcRespWifiSetProtocols { ProtobufCMessage base; int32_t resp; @@ -3153,7 +3343,7 @@ struct RpcRespWifiSetProtocols , 0, 0 } -struct RpcReqWifiGetProtocols +struct _RpcReqWifiGetProtocols { ProtobufCMessage base; int32_t ifx; @@ -3163,7 +3353,7 @@ struct RpcReqWifiGetProtocols , 0 } -struct RpcRespWifiGetProtocols +struct _RpcRespWifiGetProtocols { ProtobufCMessage base; int32_t resp; @@ -3175,7 +3365,7 @@ struct RpcRespWifiGetProtocols , 0, 0, NULL } -struct RpcReqWifiSetBandwidths +struct _RpcReqWifiSetBandwidths { ProtobufCMessage base; int32_t ifx; @@ -3186,7 +3376,7 @@ struct RpcReqWifiSetBandwidths , 0, NULL } -struct RpcRespWifiSetBandwidths +struct _RpcRespWifiSetBandwidths { ProtobufCMessage base; int32_t resp; @@ -3197,7 +3387,7 @@ struct RpcRespWifiSetBandwidths , 0, 0 } -struct RpcReqWifiGetBandwidths +struct _RpcReqWifiGetBandwidths { ProtobufCMessage base; int32_t ifx; @@ -3207,7 +3397,7 @@ struct RpcReqWifiGetBandwidths , 0 } -struct RpcRespWifiGetBandwidths +struct _RpcRespWifiGetBandwidths { ProtobufCMessage base; int32_t resp; @@ -3219,7 +3409,7 @@ struct RpcRespWifiGetBandwidths , 0, 0, NULL } -struct RpcReqWifiSetBand +struct _RpcReqWifiSetBand { ProtobufCMessage base; uint32_t band; @@ -3229,7 +3419,7 @@ struct RpcReqWifiSetBand , 0 } -struct RpcRespWifiSetBand +struct _RpcRespWifiSetBand { ProtobufCMessage base; int32_t resp; @@ -3239,7 +3429,7 @@ struct RpcRespWifiSetBand , 0 } -struct RpcReqWifiGetBand +struct _RpcReqWifiGetBand { ProtobufCMessage base; }; @@ -3248,7 +3438,7 @@ struct RpcReqWifiGetBand } -struct RpcRespWifiGetBand +struct _RpcRespWifiGetBand { ProtobufCMessage base; int32_t resp; @@ -3259,7 +3449,7 @@ struct RpcRespWifiGetBand , 0, 0 } -struct RpcReqWifiSetBandMode +struct _RpcReqWifiSetBandMode { ProtobufCMessage base; uint32_t bandmode; @@ -3269,7 +3459,7 @@ struct RpcReqWifiSetBandMode , 0 } -struct RpcRespWifiSetBandMode +struct _RpcRespWifiSetBandMode { ProtobufCMessage base; int32_t resp; @@ -3279,7 +3469,7 @@ struct RpcRespWifiSetBandMode , 0 } -struct RpcReqWifiGetBandMode +struct _RpcReqWifiGetBandMode { ProtobufCMessage base; }; @@ -3288,7 +3478,7 @@ struct RpcReqWifiGetBandMode } -struct RpcRespWifiGetBandMode +struct _RpcRespWifiGetBandMode { ProtobufCMessage base; int32_t resp; @@ -3299,7 +3489,7 @@ struct RpcRespWifiGetBandMode , 0, 0 } -struct RpcReqWifiSetInactiveTime +struct _RpcReqWifiSetInactiveTime { ProtobufCMessage base; uint32_t ifx; @@ -3310,7 +3500,7 @@ struct RpcReqWifiSetInactiveTime , 0, 0 } -struct RpcRespWifiSetInactiveTime +struct _RpcRespWifiSetInactiveTime { ProtobufCMessage base; int32_t resp; @@ -3320,7 +3510,7 @@ struct RpcRespWifiSetInactiveTime , 0 } -struct RpcReqWifiGetInactiveTime +struct _RpcReqWifiGetInactiveTime { ProtobufCMessage base; uint32_t ifx; @@ -3330,7 +3520,7 @@ struct RpcReqWifiGetInactiveTime , 0 } -struct RpcRespWifiGetInactiveTime +struct _RpcRespWifiGetInactiveTime { ProtobufCMessage base; int32_t resp; @@ -3341,7 +3531,7 @@ struct RpcRespWifiGetInactiveTime , 0, 0 } -struct RpcReqWifiStaItwtSetup +struct _RpcReqWifiStaItwtSetup { ProtobufCMessage base; WifiItwtSetupConfig *setup_config; @@ -3351,7 +3541,7 @@ struct RpcReqWifiStaItwtSetup , NULL } -struct RpcRespWifiStaItwtSetup +struct _RpcRespWifiStaItwtSetup { ProtobufCMessage base; int32_t resp; @@ -3361,7 +3551,7 @@ struct RpcRespWifiStaItwtSetup , 0 } -struct RpcReqWifiStaItwtTeardown +struct _RpcReqWifiStaItwtTeardown { ProtobufCMessage base; int32_t flow_id; @@ -3371,7 +3561,7 @@ struct RpcReqWifiStaItwtTeardown , 0 } -struct RpcRespWifiStaItwtTeardown +struct _RpcRespWifiStaItwtTeardown { ProtobufCMessage base; int32_t resp; @@ -3381,7 +3571,7 @@ struct RpcRespWifiStaItwtTeardown , 0 } -struct RpcReqWifiStaItwtSuspend +struct _RpcReqWifiStaItwtSuspend { ProtobufCMessage base; int32_t flow_id; @@ -3392,7 +3582,7 @@ struct RpcReqWifiStaItwtSuspend , 0, 0 } -struct RpcRespWifiStaItwtSuspend +struct _RpcRespWifiStaItwtSuspend { ProtobufCMessage base; int32_t resp; @@ -3402,7 +3592,7 @@ struct RpcRespWifiStaItwtSuspend , 0 } -struct RpcReqWifiStaItwtGetFlowIdStatus +struct _RpcReqWifiStaItwtGetFlowIdStatus { ProtobufCMessage base; }; @@ -3411,7 +3601,7 @@ struct RpcReqWifiStaItwtGetFlowIdStatus } -struct RpcRespWifiStaItwtGetFlowIdStatus +struct _RpcRespWifiStaItwtGetFlowIdStatus { ProtobufCMessage base; int32_t resp; @@ -3422,7 +3612,7 @@ struct RpcRespWifiStaItwtGetFlowIdStatus , 0, 0 } -struct RpcReqWifiStaItwtSendProbeReq +struct _RpcReqWifiStaItwtSendProbeReq { ProtobufCMessage base; int32_t timeout_ms; @@ -3432,7 +3622,7 @@ struct RpcReqWifiStaItwtSendProbeReq , 0 } -struct RpcRespWifiStaItwtSendProbeReq +struct _RpcRespWifiStaItwtSendProbeReq { ProtobufCMessage base; int32_t resp; @@ -3442,7 +3632,7 @@ struct RpcRespWifiStaItwtSendProbeReq , 0 } -struct RpcReqWifiStaItwtSetTargetWakeTimeOffset +struct _RpcReqWifiStaItwtSetTargetWakeTimeOffset { ProtobufCMessage base; int32_t offset_us; @@ -3452,7 +3642,7 @@ struct RpcReqWifiStaItwtSetTargetWakeTimeOffset , 0 } -struct RpcRespWifiStaItwtSetTargetWakeTimeOffset +struct _RpcRespWifiStaItwtSetTargetWakeTimeOffset { ProtobufCMessage base; int32_t resp; @@ -3462,7 +3652,7 @@ struct RpcRespWifiStaItwtSetTargetWakeTimeOffset , 0 } -struct RpcReqWifiStaTwtConfig +struct _RpcReqWifiStaTwtConfig { ProtobufCMessage base; WifiTwtConfig *config; @@ -3472,7 +3662,7 @@ struct RpcReqWifiStaTwtConfig , NULL } -struct RpcRespWifiStaTwtConfig +struct _RpcRespWifiStaTwtConfig { ProtobufCMessage base; int32_t resp; @@ -3482,7 +3672,7 @@ struct RpcRespWifiStaTwtConfig , 0 } -struct RpcReqGetCoprocessorFwVersion +struct _RpcReqGetCoprocessorFwVersion { ProtobufCMessage base; }; @@ -3491,7 +3681,7 @@ struct RpcReqGetCoprocessorFwVersion } -struct RpcRespGetCoprocessorFwVersion +struct _RpcRespGetCoprocessorFwVersion { ProtobufCMessage base; int32_t resp; @@ -3504,7 +3694,7 @@ struct RpcRespGetCoprocessorFwVersion , 0, 0, 0, 0 } -struct RpcReqSetDhcpDnsStatus +struct _RpcReqSetDhcpDnsStatus { ProtobufCMessage base; int32_t iface; @@ -3522,7 +3712,7 @@ struct RpcReqSetDhcpDnsStatus , 0, 0, 0, {0,NULL}, {0,NULL}, {0,NULL}, 0, {0,NULL}, 0 } -struct RpcRespSetDhcpDnsStatus +struct _RpcRespSetDhcpDnsStatus { ProtobufCMessage base; int32_t resp; @@ -3532,7 +3722,7 @@ struct RpcRespSetDhcpDnsStatus , 0 } -struct RpcReqGetDhcpDnsStatus +struct _RpcReqGetDhcpDnsStatus { ProtobufCMessage base; int32_t iface; @@ -3542,7 +3732,7 @@ struct RpcReqGetDhcpDnsStatus , 0 } -struct RpcRespGetDhcpDnsStatus +struct _RpcRespGetDhcpDnsStatus { ProtobufCMessage base; int32_t iface; @@ -3561,7 +3751,7 @@ struct RpcRespGetDhcpDnsStatus , 0, 0, 0, {0,NULL}, {0,NULL}, {0,NULL}, 0, {0,NULL}, 0, 0 } -struct RpcEventWifiEventNoArgs +struct _RpcEventWifiEventNoArgs { ProtobufCMessage base; int32_t resp; @@ -3572,7 +3762,7 @@ struct RpcEventWifiEventNoArgs , 0, 0 } -struct RpcEventESPInit +struct _RpcEventESPInit { ProtobufCMessage base; ProtobufCBinaryData init_data; @@ -3582,7 +3772,7 @@ struct RpcEventESPInit , {0,NULL} } -struct RpcEventHeartbeat +struct _RpcEventHeartbeat { ProtobufCMessage base; int32_t hb_num; @@ -3592,7 +3782,7 @@ struct RpcEventHeartbeat , 0 } -struct RpcEventAPStaDisconnected +struct _RpcEventAPStaDisconnected { ProtobufCMessage base; int32_t resp; @@ -3606,7 +3796,7 @@ struct RpcEventAPStaDisconnected , 0, {0,NULL}, 0, 0, 0 } -struct RpcEventAPStaConnected +struct _RpcEventAPStaConnected { ProtobufCMessage base; int32_t resp; @@ -3619,7 +3809,7 @@ struct RpcEventAPStaConnected , 0, {0,NULL}, 0, 0 } -struct RpcEventStaScanDone +struct _RpcEventStaScanDone { ProtobufCMessage base; int32_t resp; @@ -3630,7 +3820,7 @@ struct RpcEventStaScanDone , 0, NULL } -struct RpcEventStaConnected +struct _RpcEventStaConnected { ProtobufCMessage base; int32_t resp; @@ -3641,7 +3831,7 @@ struct RpcEventStaConnected , 0, NULL } -struct RpcEventStaDisconnected +struct _RpcEventStaDisconnected { ProtobufCMessage base; int32_t resp; @@ -3652,7 +3842,7 @@ struct RpcEventStaDisconnected , 0, NULL } -struct RpcEventDhcpDnsStatus +struct _RpcEventDhcpDnsStatus { ProtobufCMessage base; int32_t iface; @@ -3671,7 +3861,7 @@ struct RpcEventDhcpDnsStatus , 0, 0, 0, {0,NULL}, {0,NULL}, {0,NULL}, 0, {0,NULL}, 0, 0 } -struct RpcEventStaItwtSetup +struct _RpcEventStaItwtSetup { ProtobufCMessage base; int32_t resp; @@ -3685,7 +3875,7 @@ struct RpcEventStaItwtSetup , 0, NULL, 0, 0, 0 } -struct RpcEventStaItwtTeardown +struct _RpcEventStaItwtTeardown { ProtobufCMessage base; int32_t resp; @@ -3697,7 +3887,7 @@ struct RpcEventStaItwtTeardown , 0, 0, 0 } -struct RpcEventStaItwtSuspend +struct _RpcEventStaItwtSuspend { ProtobufCMessage base; int32_t resp; @@ -3714,7 +3904,7 @@ struct RpcEventStaItwtSuspend , 0, 0, 0, 0,NULL } -struct RpcEventStaItwtProbe +struct _RpcEventStaItwtProbe { ProtobufCMessage base; int32_t resp; @@ -3726,3981 +3916,5491 @@ struct RpcEventStaItwtProbe , 0, 0, 0 } -typedef enum { - RPC__PAYLOAD__NOT_SET = 0, - RPC__PAYLOAD_REQ_GET_MAC_ADDRESS = 257, - RPC__PAYLOAD_REQ_SET_MAC_ADDRESS = 258, - RPC__PAYLOAD_REQ_GET_WIFI_MODE = 259, - RPC__PAYLOAD_REQ_SET_WIFI_MODE = 260, - RPC__PAYLOAD_REQ_WIFI_SET_PS = 270, - RPC__PAYLOAD_REQ_WIFI_GET_PS = 271, - RPC__PAYLOAD_REQ_OTA_BEGIN = 272, - RPC__PAYLOAD_REQ_OTA_WRITE = 273, - RPC__PAYLOAD_REQ_OTA_END = 274, - RPC__PAYLOAD_REQ_SET_WIFI_MAX_TX_POWER = 275, - RPC__PAYLOAD_REQ_GET_WIFI_MAX_TX_POWER = 276, - RPC__PAYLOAD_REQ_CONFIG_HEARTBEAT = 277, - RPC__PAYLOAD_REQ_WIFI_INIT = 278, - RPC__PAYLOAD_REQ_WIFI_DEINIT = 279, - RPC__PAYLOAD_REQ_WIFI_START = 280, - RPC__PAYLOAD_REQ_WIFI_STOP = 281, - RPC__PAYLOAD_REQ_WIFI_CONNECT = 282, - RPC__PAYLOAD_REQ_WIFI_DISCONNECT = 283, - RPC__PAYLOAD_REQ_WIFI_SET_CONFIG = 284, - RPC__PAYLOAD_REQ_WIFI_GET_CONFIG = 285, - RPC__PAYLOAD_REQ_WIFI_SCAN_START = 286, - RPC__PAYLOAD_REQ_WIFI_SCAN_STOP = 287, - RPC__PAYLOAD_REQ_WIFI_SCAN_GET_AP_NUM = 288, - RPC__PAYLOAD_REQ_WIFI_SCAN_GET_AP_RECORDS = 289, - RPC__PAYLOAD_REQ_WIFI_CLEAR_AP_LIST = 290, - RPC__PAYLOAD_REQ_WIFI_RESTORE = 291, - RPC__PAYLOAD_REQ_WIFI_CLEAR_FAST_CONNECT = 292, - RPC__PAYLOAD_REQ_WIFI_DEAUTH_STA = 293, - RPC__PAYLOAD_REQ_WIFI_STA_GET_AP_INFO = 294, - RPC__PAYLOAD_REQ_WIFI_SET_PROTOCOL = 297, - RPC__PAYLOAD_REQ_WIFI_GET_PROTOCOL = 298, - RPC__PAYLOAD_REQ_WIFI_SET_BANDWIDTH = 299, - RPC__PAYLOAD_REQ_WIFI_GET_BANDWIDTH = 300, - RPC__PAYLOAD_REQ_WIFI_SET_CHANNEL = 301, - RPC__PAYLOAD_REQ_WIFI_GET_CHANNEL = 302, - RPC__PAYLOAD_REQ_WIFI_SET_COUNTRY = 303, - RPC__PAYLOAD_REQ_WIFI_GET_COUNTRY = 304, - RPC__PAYLOAD_REQ_WIFI_AP_GET_STA_LIST = 311, - RPC__PAYLOAD_REQ_WIFI_AP_GET_STA_AID = 312, - RPC__PAYLOAD_REQ_WIFI_SET_STORAGE = 313, - RPC__PAYLOAD_REQ_WIFI_SET_INACTIVE_TIME = 325, - RPC__PAYLOAD_REQ_WIFI_GET_INACTIVE_TIME = 326, - RPC__PAYLOAD_REQ_WIFI_SET_COUNTRY_CODE = 334, - RPC__PAYLOAD_REQ_WIFI_GET_COUNTRY_CODE = 335, - RPC__PAYLOAD_REQ_WIFI_STA_GET_AID = 338, - RPC__PAYLOAD_REQ_WIFI_STA_GET_NEGOTIATED_PHYMODE = 339, - RPC__PAYLOAD_REQ_WIFI_STA_GET_RSSI = 341, - RPC__PAYLOAD_REQ_WIFI_SET_PROTOCOLS = 342, - RPC__PAYLOAD_REQ_WIFI_GET_PROTOCOLS = 343, - RPC__PAYLOAD_REQ_WIFI_SET_BANDWIDTHS = 344, - RPC__PAYLOAD_REQ_WIFI_GET_BANDWIDTHS = 345, - RPC__PAYLOAD_REQ_WIFI_SET_BAND = 346, - RPC__PAYLOAD_REQ_WIFI_GET_BAND = 347, - RPC__PAYLOAD_REQ_WIFI_SET_BANDMODE = 348, - RPC__PAYLOAD_REQ_WIFI_GET_BANDMODE = 349, - RPC__PAYLOAD_REQ_GET_COPROCESSOR_FWVERSION = 350, - RPC__PAYLOAD_REQ_WIFI_SCAN_GET_AP_RECORD = 351, - RPC__PAYLOAD_REQ_SET_DHCP_DNS = 352, - RPC__PAYLOAD_REQ_GET_DHCP_DNS = 353, - RPC__PAYLOAD_REQ_WIFI_STA_TWT_CONFIG = 354, - RPC__PAYLOAD_REQ_WIFI_STA_ITWT_SETUP = 355, - RPC__PAYLOAD_REQ_WIFI_STA_ITWT_TEARDOWN = 356, - RPC__PAYLOAD_REQ_WIFI_STA_ITWT_SUSPEND = 357, - RPC__PAYLOAD_REQ_WIFI_STA_ITWT_GET_FLOW_ID_STATUS = 358, - RPC__PAYLOAD_REQ_WIFI_STA_ITWT_SEND_PROBE_REQ = 359, - RPC__PAYLOAD_REQ_WIFI_STA_ITWT_SET_TARGET_WAKE_TIME_OFFSET = 360, - RPC__PAYLOAD_RESP_GET_MAC_ADDRESS = 513, - RPC__PAYLOAD_RESP_SET_MAC_ADDRESS = 514, - RPC__PAYLOAD_RESP_GET_WIFI_MODE = 515, - RPC__PAYLOAD_RESP_SET_WIFI_MODE = 516, - RPC__PAYLOAD_RESP_WIFI_SET_PS = 526, - RPC__PAYLOAD_RESP_WIFI_GET_PS = 527, - RPC__PAYLOAD_RESP_OTA_BEGIN = 528, - RPC__PAYLOAD_RESP_OTA_WRITE = 529, - RPC__PAYLOAD_RESP_OTA_END = 530, - RPC__PAYLOAD_RESP_SET_WIFI_MAX_TX_POWER = 531, - RPC__PAYLOAD_RESP_GET_WIFI_MAX_TX_POWER = 532, - RPC__PAYLOAD_RESP_CONFIG_HEARTBEAT = 533, - RPC__PAYLOAD_RESP_WIFI_INIT = 534, - RPC__PAYLOAD_RESP_WIFI_DEINIT = 535, - RPC__PAYLOAD_RESP_WIFI_START = 536, - RPC__PAYLOAD_RESP_WIFI_STOP = 537, - RPC__PAYLOAD_RESP_WIFI_CONNECT = 538, - RPC__PAYLOAD_RESP_WIFI_DISCONNECT = 539, - RPC__PAYLOAD_RESP_WIFI_SET_CONFIG = 540, - RPC__PAYLOAD_RESP_WIFI_GET_CONFIG = 541, - RPC__PAYLOAD_RESP_WIFI_SCAN_START = 542, - RPC__PAYLOAD_RESP_WIFI_SCAN_STOP = 543, - RPC__PAYLOAD_RESP_WIFI_SCAN_GET_AP_NUM = 544, - RPC__PAYLOAD_RESP_WIFI_SCAN_GET_AP_RECORDS = 545, - RPC__PAYLOAD_RESP_WIFI_CLEAR_AP_LIST = 546, - RPC__PAYLOAD_RESP_WIFI_RESTORE = 547, - RPC__PAYLOAD_RESP_WIFI_CLEAR_FAST_CONNECT = 548, - RPC__PAYLOAD_RESP_WIFI_DEAUTH_STA = 549, - RPC__PAYLOAD_RESP_WIFI_STA_GET_AP_INFO = 550, - RPC__PAYLOAD_RESP_WIFI_SET_PROTOCOL = 553, - RPC__PAYLOAD_RESP_WIFI_GET_PROTOCOL = 554, - RPC__PAYLOAD_RESP_WIFI_SET_BANDWIDTH = 555, - RPC__PAYLOAD_RESP_WIFI_GET_BANDWIDTH = 556, - RPC__PAYLOAD_RESP_WIFI_SET_CHANNEL = 557, - RPC__PAYLOAD_RESP_WIFI_GET_CHANNEL = 558, - RPC__PAYLOAD_RESP_WIFI_SET_COUNTRY = 559, - RPC__PAYLOAD_RESP_WIFI_GET_COUNTRY = 560, - RPC__PAYLOAD_RESP_WIFI_AP_GET_STA_LIST = 567, - RPC__PAYLOAD_RESP_WIFI_AP_GET_STA_AID = 568, - RPC__PAYLOAD_RESP_WIFI_SET_STORAGE = 569, - RPC__PAYLOAD_RESP_WIFI_SET_INACTIVE_TIME = 581, - RPC__PAYLOAD_RESP_WIFI_GET_INACTIVE_TIME = 582, - RPC__PAYLOAD_RESP_WIFI_SET_COUNTRY_CODE = 590, - RPC__PAYLOAD_RESP_WIFI_GET_COUNTRY_CODE = 591, - RPC__PAYLOAD_RESP_WIFI_STA_GET_AID = 594, - RPC__PAYLOAD_RESP_WIFI_STA_GET_NEGOTIATED_PHYMODE = 595, - RPC__PAYLOAD_RESP_WIFI_STA_GET_RSSI = 597, - RPC__PAYLOAD_RESP_WIFI_SET_PROTOCOLS = 598, - RPC__PAYLOAD_RESP_WIFI_GET_PROTOCOLS = 599, - RPC__PAYLOAD_RESP_WIFI_SET_BANDWIDTHS = 600, - RPC__PAYLOAD_RESP_WIFI_GET_BANDWIDTHS = 601, - RPC__PAYLOAD_RESP_WIFI_SET_BAND = 602, - RPC__PAYLOAD_RESP_WIFI_GET_BAND = 603, - RPC__PAYLOAD_RESP_WIFI_SET_BANDMODE = 604, - RPC__PAYLOAD_RESP_WIFI_GET_BANDMODE = 605, - RPC__PAYLOAD_RESP_GET_COPROCESSOR_FWVERSION = 606, - RPC__PAYLOAD_RESP_WIFI_SCAN_GET_AP_RECORD = 607, - RPC__PAYLOAD_RESP_SET_DHCP_DNS = 608, - RPC__PAYLOAD_RESP_GET_DHCP_DNS = 609, - RPC__PAYLOAD_RESP_WIFI_STA_TWT_CONFIG = 610, - RPC__PAYLOAD_RESP_WIFI_STA_ITWT_SETUP = 611, - RPC__PAYLOAD_RESP_WIFI_STA_ITWT_TEARDOWN = 612, - RPC__PAYLOAD_RESP_WIFI_STA_ITWT_SUSPEND = 613, - RPC__PAYLOAD_RESP_WIFI_STA_ITWT_GET_FLOW_ID_STATUS = 614, - RPC__PAYLOAD_RESP_WIFI_STA_ITWT_SEND_PROBE_REQ = 615, - RPC__PAYLOAD_RESP_WIFI_STA_ITWT_SET_TARGET_WAKE_TIME_OFFSET = 616, - RPC__PAYLOAD_EVENT_ESP_INIT = 769, - RPC__PAYLOAD_EVENT_HEARTBEAT = 770, - RPC__PAYLOAD_EVENT_AP_STA_CONNECTED = 771, - RPC__PAYLOAD_EVENT_AP_STA_DISCONNECTED = 772, - RPC__PAYLOAD_EVENT_WIFI_EVENT_NO_ARGS = 773, - RPC__PAYLOAD_EVENT_STA_SCAN_DONE = 774, - RPC__PAYLOAD_EVENT_STA_CONNECTED = 775, - RPC__PAYLOAD_EVENT_STA_DISCONNECTED = 776, - RPC__PAYLOAD_EVENT_DHCP_DNS = 777, - RPC__PAYLOAD_EVENT_STA_ITWT_SETUP = 778, - RPC__PAYLOAD_EVENT_STA_ITWT_TEARDOWN = 779, - RPC__PAYLOAD_EVENT_STA_ITWT_SUSPEND = 780, - RPC__PAYLOAD_EVENT_STA_ITWT_PROBE = 781 - PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(RPC__PAYLOAD__CASE) -} Rpc__PayloadCase; +struct _RpcReqWifiStaEnterpriseEnable +{ + ProtobufCMessage base; +}; +#define RPC__REQ__WIFI_STA_ENTERPRISE_ENABLE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_enterprise_enable__descriptor) \ + } -struct Rpc + +struct _RpcRespWifiStaEnterpriseEnable { ProtobufCMessage base; - /* - * msg_type could be req, resp or Event - */ - RpcType msg_type; - /* - * msg id - */ - RpcId msg_id; - /* - * UID of message - */ - uint32_t uid; - Rpc__PayloadCase payload_case; - union { - /* - ** Requests * - */ - RpcReqGetMacAddress *req_get_mac_address; - RpcReqSetMacAddress *req_set_mac_address; - RpcReqGetMode *req_get_wifi_mode; - RpcReqSetMode *req_set_wifi_mode; - RpcReqSetPs *req_wifi_set_ps; - RpcReqGetPs *req_wifi_get_ps; - RpcReqOTABegin *req_ota_begin; - RpcReqOTAWrite *req_ota_write; - RpcReqOTAEnd *req_ota_end; - RpcReqWifiSetMaxTxPower *req_set_wifi_max_tx_power; - RpcReqWifiGetMaxTxPower *req_get_wifi_max_tx_power; - RpcReqConfigHeartbeat *req_config_heartbeat; - RpcReqWifiInit *req_wifi_init; - RpcReqWifiDeinit *req_wifi_deinit; - RpcReqWifiStart *req_wifi_start; - RpcReqWifiStop *req_wifi_stop; - RpcReqWifiConnect *req_wifi_connect; - RpcReqWifiDisconnect *req_wifi_disconnect; - RpcReqWifiSetConfig *req_wifi_set_config; - RpcReqWifiGetConfig *req_wifi_get_config; - RpcReqWifiScanStart *req_wifi_scan_start; - RpcReqWifiScanStop *req_wifi_scan_stop; - RpcReqWifiScanGetApNum *req_wifi_scan_get_ap_num; - RpcReqWifiScanGetApRecords *req_wifi_scan_get_ap_records; - RpcReqWifiClearApList *req_wifi_clear_ap_list; - RpcReqWifiRestore *req_wifi_restore; - RpcReqWifiClearFastConnect *req_wifi_clear_fast_connect; - RpcReqWifiDeauthSta *req_wifi_deauth_sta; - RpcReqWifiStaGetApInfo *req_wifi_sta_get_ap_info; - RpcReqWifiSetProtocol *req_wifi_set_protocol; - RpcReqWifiGetProtocol *req_wifi_get_protocol; - RpcReqWifiSetBandwidth *req_wifi_set_bandwidth; - RpcReqWifiGetBandwidth *req_wifi_get_bandwidth; - RpcReqWifiSetChannel *req_wifi_set_channel; - RpcReqWifiGetChannel *req_wifi_get_channel; - RpcReqWifiSetCountry *req_wifi_set_country; - RpcReqWifiGetCountry *req_wifi_get_country; - RpcReqWifiApGetStaList *req_wifi_ap_get_sta_list; - RpcReqWifiApGetStaAid *req_wifi_ap_get_sta_aid; - RpcReqWifiSetStorage *req_wifi_set_storage; - RpcReqWifiSetInactiveTime *req_wifi_set_inactive_time; - RpcReqWifiGetInactiveTime *req_wifi_get_inactive_time; - RpcReqWifiSetCountryCode *req_wifi_set_country_code; - RpcReqWifiGetCountryCode *req_wifi_get_country_code; - RpcReqWifiStaGetAid *req_wifi_sta_get_aid; - RpcReqWifiStaGetNegotiatedPhymode *req_wifi_sta_get_negotiated_phymode; - RpcReqWifiStaGetRssi *req_wifi_sta_get_rssi; - RpcReqWifiSetProtocols *req_wifi_set_protocols; - RpcReqWifiGetProtocols *req_wifi_get_protocols; - RpcReqWifiSetBandwidths *req_wifi_set_bandwidths; - RpcReqWifiGetBandwidths *req_wifi_get_bandwidths; - RpcReqWifiSetBand *req_wifi_set_band; - RpcReqWifiGetBand *req_wifi_get_band; - RpcReqWifiSetBandMode *req_wifi_set_bandmode; - RpcReqWifiGetBandMode *req_wifi_get_bandmode; - RpcReqGetCoprocessorFwVersion *req_get_coprocessor_fwversion; - RpcReqWifiScanGetApRecord *req_wifi_scan_get_ap_record; - RpcReqSetDhcpDnsStatus *req_set_dhcp_dns; - RpcReqGetDhcpDnsStatus *req_get_dhcp_dns; - RpcReqWifiStaTwtConfig *req_wifi_sta_twt_config; - RpcReqWifiStaItwtSetup *req_wifi_sta_itwt_setup; - RpcReqWifiStaItwtTeardown *req_wifi_sta_itwt_teardown; - RpcReqWifiStaItwtSuspend *req_wifi_sta_itwt_suspend; - RpcReqWifiStaItwtGetFlowIdStatus *req_wifi_sta_itwt_get_flow_id_status; - RpcReqWifiStaItwtSendProbeReq *req_wifi_sta_itwt_send_probe_req; - RpcReqWifiStaItwtSetTargetWakeTimeOffset *req_wifi_sta_itwt_set_target_wake_time_offset; - /* - ** Responses * - */ - RpcRespGetMacAddress *resp_get_mac_address; - RpcRespSetMacAddress *resp_set_mac_address; - RpcRespGetMode *resp_get_wifi_mode; - RpcRespSetMode *resp_set_wifi_mode; - RpcRespSetPs *resp_wifi_set_ps; - RpcRespGetPs *resp_wifi_get_ps; - RpcRespOTABegin *resp_ota_begin; - RpcRespOTAWrite *resp_ota_write; - RpcRespOTAEnd *resp_ota_end; - RpcRespWifiSetMaxTxPower *resp_set_wifi_max_tx_power; - RpcRespWifiGetMaxTxPower *resp_get_wifi_max_tx_power; - RpcRespConfigHeartbeat *resp_config_heartbeat; - RpcRespWifiInit *resp_wifi_init; - RpcRespWifiDeinit *resp_wifi_deinit; - RpcRespWifiStart *resp_wifi_start; - RpcRespWifiStop *resp_wifi_stop; - RpcRespWifiConnect *resp_wifi_connect; - RpcRespWifiDisconnect *resp_wifi_disconnect; - RpcRespWifiSetConfig *resp_wifi_set_config; - RpcRespWifiGetConfig *resp_wifi_get_config; - RpcRespWifiScanStart *resp_wifi_scan_start; - RpcRespWifiScanStop *resp_wifi_scan_stop; - RpcRespWifiScanGetApNum *resp_wifi_scan_get_ap_num; - RpcRespWifiScanGetApRecords *resp_wifi_scan_get_ap_records; - RpcRespWifiClearApList *resp_wifi_clear_ap_list; - RpcRespWifiRestore *resp_wifi_restore; - RpcRespWifiClearFastConnect *resp_wifi_clear_fast_connect; - RpcRespWifiDeauthSta *resp_wifi_deauth_sta; - RpcRespWifiStaGetApInfo *resp_wifi_sta_get_ap_info; - RpcRespWifiSetProtocol *resp_wifi_set_protocol; - RpcRespWifiGetProtocol *resp_wifi_get_protocol; - RpcRespWifiSetBandwidth *resp_wifi_set_bandwidth; - RpcRespWifiGetBandwidth *resp_wifi_get_bandwidth; - RpcRespWifiSetChannel *resp_wifi_set_channel; - RpcRespWifiGetChannel *resp_wifi_get_channel; - RpcRespWifiSetCountry *resp_wifi_set_country; - RpcRespWifiGetCountry *resp_wifi_get_country; - RpcRespWifiApGetStaList *resp_wifi_ap_get_sta_list; - RpcRespWifiApGetStaAid *resp_wifi_ap_get_sta_aid; - RpcRespWifiSetStorage *resp_wifi_set_storage; - RpcRespWifiSetInactiveTime *resp_wifi_set_inactive_time; - RpcRespWifiGetInactiveTime *resp_wifi_get_inactive_time; - RpcRespWifiSetCountryCode *resp_wifi_set_country_code; - RpcRespWifiGetCountryCode *resp_wifi_get_country_code; - RpcRespWifiStaGetAid *resp_wifi_sta_get_aid; - RpcRespWifiStaGetNegotiatedPhymode *resp_wifi_sta_get_negotiated_phymode; - RpcRespWifiStaGetRssi *resp_wifi_sta_get_rssi; - RpcRespWifiSetProtocols *resp_wifi_set_protocols; - RpcRespWifiGetProtocols *resp_wifi_get_protocols; - RpcRespWifiSetBandwidths *resp_wifi_set_bandwidths; - RpcRespWifiGetBandwidths *resp_wifi_get_bandwidths; - RpcRespWifiSetBand *resp_wifi_set_band; - RpcRespWifiGetBand *resp_wifi_get_band; - RpcRespWifiSetBandMode *resp_wifi_set_bandmode; - RpcRespWifiGetBandMode *resp_wifi_get_bandmode; - RpcRespGetCoprocessorFwVersion *resp_get_coprocessor_fwversion; - RpcRespWifiScanGetApRecord *resp_wifi_scan_get_ap_record; - RpcRespSetDhcpDnsStatus *resp_set_dhcp_dns; - RpcRespGetDhcpDnsStatus *resp_get_dhcp_dns; - RpcRespWifiStaTwtConfig *resp_wifi_sta_twt_config; - RpcRespWifiStaItwtSetup *resp_wifi_sta_itwt_setup; - RpcRespWifiStaItwtTeardown *resp_wifi_sta_itwt_teardown; - RpcRespWifiStaItwtSuspend *resp_wifi_sta_itwt_suspend; - RpcRespWifiStaItwtGetFlowIdStatus *resp_wifi_sta_itwt_get_flow_id_status; - RpcRespWifiStaItwtSendProbeReq *resp_wifi_sta_itwt_send_probe_req; - RpcRespWifiStaItwtSetTargetWakeTimeOffset *resp_wifi_sta_itwt_set_target_wake_time_offset; - /* - ** Notifications * - */ - RpcEventESPInit *event_esp_init; - RpcEventHeartbeat *event_heartbeat; - RpcEventAPStaConnected *event_ap_sta_connected; - RpcEventAPStaDisconnected *event_ap_sta_disconnected; - RpcEventWifiEventNoArgs *event_wifi_event_no_args; - RpcEventStaScanDone *event_sta_scan_done; - RpcEventStaConnected *event_sta_connected; - RpcEventStaDisconnected *event_sta_disconnected; - RpcEventDhcpDnsStatus *event_dhcp_dns; - RpcEventStaItwtSetup *event_sta_itwt_setup; - RpcEventStaItwtTeardown *event_sta_itwt_teardown; - RpcEventStaItwtSuspend *event_sta_itwt_suspend; - RpcEventStaItwtProbe *event_sta_itwt_probe; - }; + int32_t resp; }; -#define RPC__INIT \ - { PROTOBUF_C_MESSAGE_INIT (&rpc__descriptor) \ - , RPC_TYPE__MsgType_Invalid, RPC_ID__MsgId_Invalid, 0, RPC__PAYLOAD__NOT_SET, {0} } +#define RPC__RESP__WIFI_STA_ENTERPRISE_ENABLE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_enterprise_enable__descriptor) \ + , 0 } -/* WifiInitConfig methods */ -void wifi_init_config__init - (WifiInitConfig *message); -size_t wifi_init_config__get_packed_size - (const WifiInitConfig *message); -size_t wifi_init_config__pack - (const WifiInitConfig *message, +struct _RpcReqWifiStaEnterpriseDisable +{ + ProtobufCMessage base; +}; +#define RPC__REQ__WIFI_STA_ENTERPRISE_DISABLE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_sta_enterprise_disable__descriptor) \ + } + + +struct _RpcRespWifiStaEnterpriseDisable +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__WIFI_STA_ENTERPRISE_DISABLE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_sta_enterprise_disable__descriptor) \ + , 0 } + + +struct _RpcReqEapSetIdentity +{ + ProtobufCMessage base; + ProtobufCBinaryData identity; + int32_t len; +}; +#define RPC__REQ__EAP_SET_IDENTITY__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__eap_set_identity__descriptor) \ + , {0,NULL}, 0 } + + +struct _RpcRespEapSetIdentity +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__EAP_SET_IDENTITY__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__eap_set_identity__descriptor) \ + , 0 } + + +struct _RpcReqEapClearIdentity +{ + ProtobufCMessage base; +}; +#define RPC__REQ__EAP_CLEAR_IDENTITY__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__eap_clear_identity__descriptor) \ + } + + +struct _RpcRespEapClearIdentity +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__EAP_CLEAR_IDENTITY__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__eap_clear_identity__descriptor) \ + , 0 } + + +struct _RpcReqEapSetUsername +{ + ProtobufCMessage base; + ProtobufCBinaryData username; + int32_t len; +}; +#define RPC__REQ__EAP_SET_USERNAME__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__eap_set_username__descriptor) \ + , {0,NULL}, 0 } + + +struct _RpcRespEapSetUsername +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__EAP_SET_USERNAME__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__eap_set_username__descriptor) \ + , 0 } + + +struct _RpcReqEapClearUsername +{ + ProtobufCMessage base; +}; +#define RPC__REQ__EAP_CLEAR_USERNAME__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__eap_clear_username__descriptor) \ + } + + +struct _RpcRespEapClearUsername +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__EAP_CLEAR_USERNAME__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__eap_clear_username__descriptor) \ + , 0 } + + +struct _RpcReqEapSetPassword +{ + ProtobufCMessage base; + ProtobufCBinaryData password; + int32_t len; +}; +#define RPC__REQ__EAP_SET_PASSWORD__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__eap_set_password__descriptor) \ + , {0,NULL}, 0 } + + +struct _RpcRespEapSetPassword +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__EAP_SET_PASSWORD__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__eap_set_password__descriptor) \ + , 0 } + + +struct _RpcReqEapClearPassword +{ + ProtobufCMessage base; +}; +#define RPC__REQ__EAP_CLEAR_PASSWORD__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__eap_clear_password__descriptor) \ + } + + +struct _RpcRespEapClearPassword +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__EAP_CLEAR_PASSWORD__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__eap_clear_password__descriptor) \ + , 0 } + + +struct _RpcReqEapSetNewPassword +{ + ProtobufCMessage base; + ProtobufCBinaryData new_password; + int32_t len; +}; +#define RPC__REQ__EAP_SET_NEW_PASSWORD__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__eap_set_new_password__descriptor) \ + , {0,NULL}, 0 } + + +struct _RpcRespEapSetNewPassword +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__EAP_SET_NEW_PASSWORD__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__eap_set_new_password__descriptor) \ + , 0 } + + +struct _RpcReqEapClearNewPassword +{ + ProtobufCMessage base; +}; +#define RPC__REQ__EAP_CLEAR_NEW_PASSWORD__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__eap_clear_new_password__descriptor) \ + } + + +struct _RpcRespEapClearNewPassword +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__EAP_CLEAR_NEW_PASSWORD__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__eap_clear_new_password__descriptor) \ + , 0 } + + +struct _RpcReqEapSetCaCert +{ + ProtobufCMessage base; + ProtobufCBinaryData ca_cert; + int32_t ca_cert_len; +}; +#define RPC__REQ__EAP_SET_CA_CERT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__eap_set_ca_cert__descriptor) \ + , {0,NULL}, 0 } + + +struct _RpcRespEapSetCaCert +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__EAP_SET_CA_CERT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__eap_set_ca_cert__descriptor) \ + , 0 } + + +struct _RpcReqEapClearCaCert +{ + ProtobufCMessage base; +}; +#define RPC__REQ__EAP_CLEAR_CA_CERT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__eap_clear_ca_cert__descriptor) \ + } + + +struct _RpcRespEapClearCaCert +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__EAP_CLEAR_CA_CERT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__eap_clear_ca_cert__descriptor) \ + , 0 } + + +struct _RpcReqEapSetCertificateAndKey +{ + ProtobufCMessage base; + ProtobufCBinaryData client_cert; + int32_t client_cert_len; + ProtobufCBinaryData private_key; + int32_t private_key_len; + ProtobufCBinaryData private_key_password; + int32_t private_key_passwd_len; +}; +#define RPC__REQ__EAP_SET_CERTIFICATE_AND_KEY__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__eap_set_certificate_and_key__descriptor) \ + , {0,NULL}, 0, {0,NULL}, 0, {0,NULL}, 0 } + + +struct _RpcRespEapSetCertificateAndKey +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__EAP_SET_CERTIFICATE_AND_KEY__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__eap_set_certificate_and_key__descriptor) \ + , 0 } + + +struct _RpcReqEapClearCertificateAndKey +{ + ProtobufCMessage base; +}; +#define RPC__REQ__EAP_CLEAR_CERTIFICATE_AND_KEY__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__eap_clear_certificate_and_key__descriptor) \ + } + + +struct _RpcRespEapClearCertificateAndKey +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__EAP_CLEAR_CERTIFICATE_AND_KEY__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__eap_clear_certificate_and_key__descriptor) \ + , 0 } + + +struct _RpcReqEapSetDisableTimeCheck +{ + ProtobufCMessage base; + protobuf_c_boolean disable; +}; +#define RPC__REQ__EAP_SET_DISABLE_TIME_CHECK__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__eap_set_disable_time_check__descriptor) \ + , 0 } + + +struct _RpcRespEapSetDisableTimeCheck +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__EAP_SET_DISABLE_TIME_CHECK__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__eap_set_disable_time_check__descriptor) \ + , 0 } + + +struct _RpcReqEapGetDisableTimeCheck +{ + ProtobufCMessage base; +}; +#define RPC__REQ__EAP_GET_DISABLE_TIME_CHECK__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__eap_get_disable_time_check__descriptor) \ + } + + +struct _RpcRespEapGetDisableTimeCheck +{ + ProtobufCMessage base; + int32_t resp; + protobuf_c_boolean disable; +}; +#define RPC__RESP__EAP_GET_DISABLE_TIME_CHECK__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__eap_get_disable_time_check__descriptor) \ + , 0, 0 } + + +struct _RpcReqEapSetTtlsPhase2Method +{ + ProtobufCMessage base; + int32_t type; +}; +#define RPC__REQ__EAP_SET_TTLS_PHASE2_METHOD__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__eap_set_ttls_phase2_method__descriptor) \ + , 0 } + + +struct _RpcRespEapSetTtlsPhase2Method +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__EAP_SET_TTLS_PHASE2_METHOD__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__eap_set_ttls_phase2_method__descriptor) \ + , 0 } + + +struct _RpcReqEapSetSuiteb192bitCertification +{ + ProtobufCMessage base; + protobuf_c_boolean enable; +}; +#define RPC__REQ__EAP_SET_SUITEB192BIT_CERTIFICATION__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__eap_set_suiteb192bit_certification__descriptor) \ + , 0 } + + +struct _RpcRespEapSetSuiteb192bitCertification +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__EAP_SET_SUITEB192BIT_CERTIFICATION__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__eap_set_suiteb192bit_certification__descriptor) \ + , 0 } + + +struct _RpcReqEapSetPacFile +{ + ProtobufCMessage base; + ProtobufCBinaryData pac_file; + int32_t pac_file_len; +}; +#define RPC__REQ__EAP_SET_PAC_FILE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__eap_set_pac_file__descriptor) \ + , {0,NULL}, 0 } + + +struct _RpcRespEapSetPacFile +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__EAP_SET_PAC_FILE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__eap_set_pac_file__descriptor) \ + , 0 } + + +struct _RpcReqEapSetFastParams +{ + ProtobufCMessage base; + EapFastConfig *eap_fast_config; +}; +#define RPC__REQ__EAP_SET_FAST_PARAMS__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__eap_set_fast_params__descriptor) \ + , NULL } + + +struct _RpcRespEapSetFastParams +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__EAP_SET_FAST_PARAMS__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__eap_set_fast_params__descriptor) \ + , 0 } + + +struct _RpcReqEapUseDefaultCertBundle +{ + ProtobufCMessage base; + protobuf_c_boolean use_default_bundle; +}; +#define RPC__REQ__EAP_USE_DEFAULT_CERT_BUNDLE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__eap_use_default_cert_bundle__descriptor) \ + , 0 } + + +struct _RpcRespEapUseDefaultCertBundle +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__EAP_USE_DEFAULT_CERT_BUNDLE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__eap_use_default_cert_bundle__descriptor) \ + , 0 } + + +struct _RpcReqWifiSetOkcSupport +{ + ProtobufCMessage base; + protobuf_c_boolean enable; +}; +#define RPC__REQ__WIFI_SET_OKC_SUPPORT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__wifi_set_okc_support__descriptor) \ + , 0 } + + +struct _RpcRespWifiSetOkcSupport +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__WIFI_SET_OKC_SUPPORT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__wifi_set_okc_support__descriptor) \ + , 0 } + + +struct _RpcReqEapSetDomainName +{ + ProtobufCMessage base; + ProtobufCBinaryData domain_name; +}; +#define RPC__REQ__EAP_SET_DOMAIN_NAME__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__eap_set_domain_name__descriptor) \ + , {0,NULL} } + + +struct _RpcRespEapSetDomainName +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__EAP_SET_DOMAIN_NAME__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__eap_set_domain_name__descriptor) \ + , 0 } + + +struct _RpcReqEapSetEapMethods +{ + ProtobufCMessage base; + int32_t methods; +}; +#define RPC__REQ__EAP_SET_EAP_METHODS__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__eap_set_eap_methods__descriptor) \ + , 0 } + + +struct _RpcRespEapSetEapMethods +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__EAP_SET_EAP_METHODS__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__eap_set_eap_methods__descriptor) \ + , 0 } + + +typedef enum { + RPC__PAYLOAD__NOT_SET = 0, + RPC__PAYLOAD_REQ_GET_MAC_ADDRESS = 257, + RPC__PAYLOAD_REQ_SET_MAC_ADDRESS = 258, + RPC__PAYLOAD_REQ_GET_WIFI_MODE = 259, + RPC__PAYLOAD_REQ_SET_WIFI_MODE = 260, + RPC__PAYLOAD_REQ_WIFI_SET_PS = 270, + RPC__PAYLOAD_REQ_WIFI_GET_PS = 271, + RPC__PAYLOAD_REQ_OTA_BEGIN = 272, + RPC__PAYLOAD_REQ_OTA_WRITE = 273, + RPC__PAYLOAD_REQ_OTA_END = 274, + RPC__PAYLOAD_REQ_SET_WIFI_MAX_TX_POWER = 275, + RPC__PAYLOAD_REQ_GET_WIFI_MAX_TX_POWER = 276, + RPC__PAYLOAD_REQ_CONFIG_HEARTBEAT = 277, + RPC__PAYLOAD_REQ_WIFI_INIT = 278, + RPC__PAYLOAD_REQ_WIFI_DEINIT = 279, + RPC__PAYLOAD_REQ_WIFI_START = 280, + RPC__PAYLOAD_REQ_WIFI_STOP = 281, + RPC__PAYLOAD_REQ_WIFI_CONNECT = 282, + RPC__PAYLOAD_REQ_WIFI_DISCONNECT = 283, + RPC__PAYLOAD_REQ_WIFI_SET_CONFIG = 284, + RPC__PAYLOAD_REQ_WIFI_GET_CONFIG = 285, + RPC__PAYLOAD_REQ_WIFI_SCAN_START = 286, + RPC__PAYLOAD_REQ_WIFI_SCAN_STOP = 287, + RPC__PAYLOAD_REQ_WIFI_SCAN_GET_AP_NUM = 288, + RPC__PAYLOAD_REQ_WIFI_SCAN_GET_AP_RECORDS = 289, + RPC__PAYLOAD_REQ_WIFI_CLEAR_AP_LIST = 290, + RPC__PAYLOAD_REQ_WIFI_RESTORE = 291, + RPC__PAYLOAD_REQ_WIFI_CLEAR_FAST_CONNECT = 292, + RPC__PAYLOAD_REQ_WIFI_DEAUTH_STA = 293, + RPC__PAYLOAD_REQ_WIFI_STA_GET_AP_INFO = 294, + RPC__PAYLOAD_REQ_WIFI_SET_PROTOCOL = 297, + RPC__PAYLOAD_REQ_WIFI_GET_PROTOCOL = 298, + RPC__PAYLOAD_REQ_WIFI_SET_BANDWIDTH = 299, + RPC__PAYLOAD_REQ_WIFI_GET_BANDWIDTH = 300, + RPC__PAYLOAD_REQ_WIFI_SET_CHANNEL = 301, + RPC__PAYLOAD_REQ_WIFI_GET_CHANNEL = 302, + RPC__PAYLOAD_REQ_WIFI_SET_COUNTRY = 303, + RPC__PAYLOAD_REQ_WIFI_GET_COUNTRY = 304, + RPC__PAYLOAD_REQ_WIFI_AP_GET_STA_LIST = 311, + RPC__PAYLOAD_REQ_WIFI_AP_GET_STA_AID = 312, + RPC__PAYLOAD_REQ_WIFI_SET_STORAGE = 313, + RPC__PAYLOAD_REQ_WIFI_SET_INACTIVE_TIME = 325, + RPC__PAYLOAD_REQ_WIFI_GET_INACTIVE_TIME = 326, + RPC__PAYLOAD_REQ_WIFI_SET_COUNTRY_CODE = 334, + RPC__PAYLOAD_REQ_WIFI_GET_COUNTRY_CODE = 335, + RPC__PAYLOAD_REQ_WIFI_STA_GET_AID = 338, + RPC__PAYLOAD_REQ_WIFI_STA_GET_NEGOTIATED_PHYMODE = 339, + RPC__PAYLOAD_REQ_WIFI_STA_GET_RSSI = 341, + RPC__PAYLOAD_REQ_WIFI_SET_PROTOCOLS = 342, + RPC__PAYLOAD_REQ_WIFI_GET_PROTOCOLS = 343, + RPC__PAYLOAD_REQ_WIFI_SET_BANDWIDTHS = 344, + RPC__PAYLOAD_REQ_WIFI_GET_BANDWIDTHS = 345, + RPC__PAYLOAD_REQ_WIFI_SET_BAND = 346, + RPC__PAYLOAD_REQ_WIFI_GET_BAND = 347, + RPC__PAYLOAD_REQ_WIFI_SET_BANDMODE = 348, + RPC__PAYLOAD_REQ_WIFI_GET_BANDMODE = 349, + RPC__PAYLOAD_REQ_GET_COPROCESSOR_FWVERSION = 350, + RPC__PAYLOAD_REQ_WIFI_SCAN_GET_AP_RECORD = 351, + RPC__PAYLOAD_REQ_SET_DHCP_DNS = 352, + RPC__PAYLOAD_REQ_GET_DHCP_DNS = 353, + RPC__PAYLOAD_REQ_WIFI_STA_TWT_CONFIG = 354, + RPC__PAYLOAD_REQ_WIFI_STA_ITWT_SETUP = 355, + RPC__PAYLOAD_REQ_WIFI_STA_ITWT_TEARDOWN = 356, + RPC__PAYLOAD_REQ_WIFI_STA_ITWT_SUSPEND = 357, + RPC__PAYLOAD_REQ_WIFI_STA_ITWT_GET_FLOW_ID_STATUS = 358, + RPC__PAYLOAD_REQ_WIFI_STA_ITWT_SEND_PROBE_REQ = 359, + RPC__PAYLOAD_REQ_WIFI_STA_ITWT_SET_TARGET_WAKE_TIME_OFFSET = 360, + RPC__PAYLOAD_REQ_WIFI_STA_ENTERPRISE_ENABLE = 361, + RPC__PAYLOAD_REQ_WIFI_STA_ENTERPRISE_DISABLE = 362, + RPC__PAYLOAD_REQ_EAP_SET_IDENTITY = 363, + RPC__PAYLOAD_REQ_EAP_CLEAR_IDENTITY = 364, + RPC__PAYLOAD_REQ_EAP_SET_USERNAME = 365, + RPC__PAYLOAD_REQ_EAP_CLEAR_USERNAME = 366, + RPC__PAYLOAD_REQ_EAP_SET_PASSWORD = 367, + RPC__PAYLOAD_REQ_EAP_CLEAR_PASSWORD = 368, + RPC__PAYLOAD_REQ_EAP_SET_NEW_PASSWORD = 369, + RPC__PAYLOAD_REQ_EAP_CLEAR_NEW_PASSWORD = 370, + RPC__PAYLOAD_REQ_EAP_SET_CA_CERT = 371, + RPC__PAYLOAD_REQ_EAP_CLEAR_CA_CERT = 372, + RPC__PAYLOAD_REQ_EAP_SET_CERTIFICATE_AND_KEY = 373, + RPC__PAYLOAD_REQ_EAP_CLEAR_CERTIFICATE_AND_KEY = 374, + RPC__PAYLOAD_REQ_EAP_GET_DISABLE_TIME_CHECK = 375, + RPC__PAYLOAD_REQ_EAP_SET_TTLS_PHASE2_METHOD = 376, + RPC__PAYLOAD_REQ_EAP_SET_SUITEB_CERTIFICATION = 377, + RPC__PAYLOAD_REQ_EAP_SET_PAC_FILE = 378, + RPC__PAYLOAD_REQ_EAP_SET_FAST_PARAMS = 379, + RPC__PAYLOAD_REQ_EAP_USE_DEFAULT_CERT_BUNDLE = 380, + RPC__PAYLOAD_REQ_WIFI_SET_OKC_SUPPORT = 381, + RPC__PAYLOAD_REQ_EAP_SET_DOMAIN_NAME = 382, + RPC__PAYLOAD_REQ_EAP_SET_DISABLE_TIME_CHECK = 383, + RPC__PAYLOAD_REQ_EAP_SET_EAP_METHODS = 384, + RPC__PAYLOAD_RESP_GET_MAC_ADDRESS = 513, + RPC__PAYLOAD_RESP_SET_MAC_ADDRESS = 514, + RPC__PAYLOAD_RESP_GET_WIFI_MODE = 515, + RPC__PAYLOAD_RESP_SET_WIFI_MODE = 516, + RPC__PAYLOAD_RESP_WIFI_SET_PS = 526, + RPC__PAYLOAD_RESP_WIFI_GET_PS = 527, + RPC__PAYLOAD_RESP_OTA_BEGIN = 528, + RPC__PAYLOAD_RESP_OTA_WRITE = 529, + RPC__PAYLOAD_RESP_OTA_END = 530, + RPC__PAYLOAD_RESP_SET_WIFI_MAX_TX_POWER = 531, + RPC__PAYLOAD_RESP_GET_WIFI_MAX_TX_POWER = 532, + RPC__PAYLOAD_RESP_CONFIG_HEARTBEAT = 533, + RPC__PAYLOAD_RESP_WIFI_INIT = 534, + RPC__PAYLOAD_RESP_WIFI_DEINIT = 535, + RPC__PAYLOAD_RESP_WIFI_START = 536, + RPC__PAYLOAD_RESP_WIFI_STOP = 537, + RPC__PAYLOAD_RESP_WIFI_CONNECT = 538, + RPC__PAYLOAD_RESP_WIFI_DISCONNECT = 539, + RPC__PAYLOAD_RESP_WIFI_SET_CONFIG = 540, + RPC__PAYLOAD_RESP_WIFI_GET_CONFIG = 541, + RPC__PAYLOAD_RESP_WIFI_SCAN_START = 542, + RPC__PAYLOAD_RESP_WIFI_SCAN_STOP = 543, + RPC__PAYLOAD_RESP_WIFI_SCAN_GET_AP_NUM = 544, + RPC__PAYLOAD_RESP_WIFI_SCAN_GET_AP_RECORDS = 545, + RPC__PAYLOAD_RESP_WIFI_CLEAR_AP_LIST = 546, + RPC__PAYLOAD_RESP_WIFI_RESTORE = 547, + RPC__PAYLOAD_RESP_WIFI_CLEAR_FAST_CONNECT = 548, + RPC__PAYLOAD_RESP_WIFI_DEAUTH_STA = 549, + RPC__PAYLOAD_RESP_WIFI_STA_GET_AP_INFO = 550, + RPC__PAYLOAD_RESP_WIFI_SET_PROTOCOL = 553, + RPC__PAYLOAD_RESP_WIFI_GET_PROTOCOL = 554, + RPC__PAYLOAD_RESP_WIFI_SET_BANDWIDTH = 555, + RPC__PAYLOAD_RESP_WIFI_GET_BANDWIDTH = 556, + RPC__PAYLOAD_RESP_WIFI_SET_CHANNEL = 557, + RPC__PAYLOAD_RESP_WIFI_GET_CHANNEL = 558, + RPC__PAYLOAD_RESP_WIFI_SET_COUNTRY = 559, + RPC__PAYLOAD_RESP_WIFI_GET_COUNTRY = 560, + RPC__PAYLOAD_RESP_WIFI_AP_GET_STA_LIST = 567, + RPC__PAYLOAD_RESP_WIFI_AP_GET_STA_AID = 568, + RPC__PAYLOAD_RESP_WIFI_SET_STORAGE = 569, + RPC__PAYLOAD_RESP_WIFI_SET_INACTIVE_TIME = 581, + RPC__PAYLOAD_RESP_WIFI_GET_INACTIVE_TIME = 582, + RPC__PAYLOAD_RESP_WIFI_SET_COUNTRY_CODE = 590, + RPC__PAYLOAD_RESP_WIFI_GET_COUNTRY_CODE = 591, + RPC__PAYLOAD_RESP_WIFI_STA_GET_AID = 594, + RPC__PAYLOAD_RESP_WIFI_STA_GET_NEGOTIATED_PHYMODE = 595, + RPC__PAYLOAD_RESP_WIFI_STA_GET_RSSI = 597, + RPC__PAYLOAD_RESP_WIFI_SET_PROTOCOLS = 598, + RPC__PAYLOAD_RESP_WIFI_GET_PROTOCOLS = 599, + RPC__PAYLOAD_RESP_WIFI_SET_BANDWIDTHS = 600, + RPC__PAYLOAD_RESP_WIFI_GET_BANDWIDTHS = 601, + RPC__PAYLOAD_RESP_WIFI_SET_BAND = 602, + RPC__PAYLOAD_RESP_WIFI_GET_BAND = 603, + RPC__PAYLOAD_RESP_WIFI_SET_BANDMODE = 604, + RPC__PAYLOAD_RESP_WIFI_GET_BANDMODE = 605, + RPC__PAYLOAD_RESP_GET_COPROCESSOR_FWVERSION = 606, + RPC__PAYLOAD_RESP_WIFI_SCAN_GET_AP_RECORD = 607, + RPC__PAYLOAD_RESP_SET_DHCP_DNS = 608, + RPC__PAYLOAD_RESP_GET_DHCP_DNS = 609, + RPC__PAYLOAD_RESP_WIFI_STA_TWT_CONFIG = 610, + RPC__PAYLOAD_RESP_WIFI_STA_ITWT_SETUP = 611, + RPC__PAYLOAD_RESP_WIFI_STA_ITWT_TEARDOWN = 612, + RPC__PAYLOAD_RESP_WIFI_STA_ITWT_SUSPEND = 613, + RPC__PAYLOAD_RESP_WIFI_STA_ITWT_GET_FLOW_ID_STATUS = 614, + RPC__PAYLOAD_RESP_WIFI_STA_ITWT_SEND_PROBE_REQ = 615, + RPC__PAYLOAD_RESP_WIFI_STA_ITWT_SET_TARGET_WAKE_TIME_OFFSET = 616, + RPC__PAYLOAD_RESP_WIFI_STA_ENTERPRISE_ENABLE = 617, + RPC__PAYLOAD_RESP_WIFI_STA_ENTERPRISE_DISABLE = 618, + RPC__PAYLOAD_RESP_EAP_SET_IDENTITY = 619, + RPC__PAYLOAD_RESP_EAP_CLEAR_IDENTITY = 620, + RPC__PAYLOAD_RESP_EAP_SET_USERNAME = 621, + RPC__PAYLOAD_RESP_EAP_CLEAR_USERNAME = 622, + RPC__PAYLOAD_RESP_EAP_SET_PASSWORD = 623, + RPC__PAYLOAD_RESP_EAP_CLEAR_PASSWORD = 624, + RPC__PAYLOAD_RESP_EAP_SET_NEW_PASSWORD = 625, + RPC__PAYLOAD_RESP_EAP_CLEAR_NEW_PASSWORD = 626, + RPC__PAYLOAD_RESP_EAP_SET_CA_CERT = 627, + RPC__PAYLOAD_RESP_EAP_CLEAR_CA_CERT = 628, + RPC__PAYLOAD_RESP_EAP_SET_CERTIFICATE_AND_KEY = 629, + RPC__PAYLOAD_RESP_EAP_CLEAR_CERTIFICATE_AND_KEY = 630, + RPC__PAYLOAD_RESP_EAP_GET_DISABLE_TIME_CHECK = 631, + RPC__PAYLOAD_RESP_EAP_SET_TTLS_PHASE2_METHOD = 632, + RPC__PAYLOAD_RESP_EAP_SET_SUITEB_CERTIFICATION = 633, + RPC__PAYLOAD_RESP_EAP_SET_PAC_FILE = 634, + RPC__PAYLOAD_RESP_EAP_SET_FAST_PARAMS = 635, + RPC__PAYLOAD_RESP_EAP_USE_DEFAULT_CERT_BUNDLE = 636, + RPC__PAYLOAD_RESP_WIFI_SET_OKC_SUPPORT = 637, + RPC__PAYLOAD_RESP_EAP_SET_DOMAIN_NAME = 638, + RPC__PAYLOAD_RESP_EAP_SET_DISABLE_TIME_CHECK = 639, + RPC__PAYLOAD_RESP_EAP_SET_EAP_METHODS = 640, + RPC__PAYLOAD_EVENT_ESP_INIT = 769, + RPC__PAYLOAD_EVENT_HEARTBEAT = 770, + RPC__PAYLOAD_EVENT_AP_STA_CONNECTED = 771, + RPC__PAYLOAD_EVENT_AP_STA_DISCONNECTED = 772, + RPC__PAYLOAD_EVENT_WIFI_EVENT_NO_ARGS = 773, + RPC__PAYLOAD_EVENT_STA_SCAN_DONE = 774, + RPC__PAYLOAD_EVENT_STA_CONNECTED = 775, + RPC__PAYLOAD_EVENT_STA_DISCONNECTED = 776, + RPC__PAYLOAD_EVENT_DHCP_DNS = 777, + RPC__PAYLOAD_EVENT_STA_ITWT_SETUP = 778, + RPC__PAYLOAD_EVENT_STA_ITWT_TEARDOWN = 779, + RPC__PAYLOAD_EVENT_STA_ITWT_SUSPEND = 780, + RPC__PAYLOAD_EVENT_STA_ITWT_PROBE = 781 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(RPC__PAYLOAD) +} Rpc__PayloadCase; + +struct _Rpc +{ + ProtobufCMessage base; + /* + * msg_type could be req, resp or Event + */ + RpcType msg_type; + /* + * msg id + */ + RpcId msg_id; + /* + * UID of message + */ + uint32_t uid; + Rpc__PayloadCase payload_case; + union { + /* + ** Requests * + */ + RpcReqGetMacAddress *req_get_mac_address; + RpcReqSetMacAddress *req_set_mac_address; + RpcReqGetMode *req_get_wifi_mode; + RpcReqSetMode *req_set_wifi_mode; + RpcReqSetPs *req_wifi_set_ps; + RpcReqGetPs *req_wifi_get_ps; + RpcReqOTABegin *req_ota_begin; + RpcReqOTAWrite *req_ota_write; + RpcReqOTAEnd *req_ota_end; + RpcReqWifiSetMaxTxPower *req_set_wifi_max_tx_power; + RpcReqWifiGetMaxTxPower *req_get_wifi_max_tx_power; + RpcReqConfigHeartbeat *req_config_heartbeat; + RpcReqWifiInit *req_wifi_init; + RpcReqWifiDeinit *req_wifi_deinit; + RpcReqWifiStart *req_wifi_start; + RpcReqWifiStop *req_wifi_stop; + RpcReqWifiConnect *req_wifi_connect; + RpcReqWifiDisconnect *req_wifi_disconnect; + RpcReqWifiSetConfig *req_wifi_set_config; + RpcReqWifiGetConfig *req_wifi_get_config; + RpcReqWifiScanStart *req_wifi_scan_start; + RpcReqWifiScanStop *req_wifi_scan_stop; + RpcReqWifiScanGetApNum *req_wifi_scan_get_ap_num; + RpcReqWifiScanGetApRecords *req_wifi_scan_get_ap_records; + RpcReqWifiClearApList *req_wifi_clear_ap_list; + RpcReqWifiRestore *req_wifi_restore; + RpcReqWifiClearFastConnect *req_wifi_clear_fast_connect; + RpcReqWifiDeauthSta *req_wifi_deauth_sta; + RpcReqWifiStaGetApInfo *req_wifi_sta_get_ap_info; + RpcReqWifiSetProtocol *req_wifi_set_protocol; + RpcReqWifiGetProtocol *req_wifi_get_protocol; + RpcReqWifiSetBandwidth *req_wifi_set_bandwidth; + RpcReqWifiGetBandwidth *req_wifi_get_bandwidth; + RpcReqWifiSetChannel *req_wifi_set_channel; + RpcReqWifiGetChannel *req_wifi_get_channel; + RpcReqWifiSetCountry *req_wifi_set_country; + RpcReqWifiGetCountry *req_wifi_get_country; + RpcReqWifiApGetStaList *req_wifi_ap_get_sta_list; + RpcReqWifiApGetStaAid *req_wifi_ap_get_sta_aid; + RpcReqWifiSetStorage *req_wifi_set_storage; + RpcReqWifiSetInactiveTime *req_wifi_set_inactive_time; + RpcReqWifiGetInactiveTime *req_wifi_get_inactive_time; + RpcReqWifiSetCountryCode *req_wifi_set_country_code; + RpcReqWifiGetCountryCode *req_wifi_get_country_code; + RpcReqWifiStaGetAid *req_wifi_sta_get_aid; + RpcReqWifiStaGetNegotiatedPhymode *req_wifi_sta_get_negotiated_phymode; + RpcReqWifiStaGetRssi *req_wifi_sta_get_rssi; + RpcReqWifiSetProtocols *req_wifi_set_protocols; + RpcReqWifiGetProtocols *req_wifi_get_protocols; + RpcReqWifiSetBandwidths *req_wifi_set_bandwidths; + RpcReqWifiGetBandwidths *req_wifi_get_bandwidths; + RpcReqWifiSetBand *req_wifi_set_band; + RpcReqWifiGetBand *req_wifi_get_band; + RpcReqWifiSetBandMode *req_wifi_set_bandmode; + RpcReqWifiGetBandMode *req_wifi_get_bandmode; + RpcReqGetCoprocessorFwVersion *req_get_coprocessor_fwversion; + RpcReqWifiScanGetApRecord *req_wifi_scan_get_ap_record; + RpcReqSetDhcpDnsStatus *req_set_dhcp_dns; + RpcReqGetDhcpDnsStatus *req_get_dhcp_dns; + RpcReqWifiStaTwtConfig *req_wifi_sta_twt_config; + RpcReqWifiStaItwtSetup *req_wifi_sta_itwt_setup; + RpcReqWifiStaItwtTeardown *req_wifi_sta_itwt_teardown; + RpcReqWifiStaItwtSuspend *req_wifi_sta_itwt_suspend; + RpcReqWifiStaItwtGetFlowIdStatus *req_wifi_sta_itwt_get_flow_id_status; + RpcReqWifiStaItwtSendProbeReq *req_wifi_sta_itwt_send_probe_req; + RpcReqWifiStaItwtSetTargetWakeTimeOffset *req_wifi_sta_itwt_set_target_wake_time_offset; + RpcReqWifiStaEnterpriseEnable *req_wifi_sta_enterprise_enable; + RpcReqWifiStaEnterpriseDisable *req_wifi_sta_enterprise_disable; + RpcReqEapSetIdentity *req_eap_set_identity; + RpcReqEapClearIdentity *req_eap_clear_identity; + RpcReqEapSetUsername *req_eap_set_username; + RpcReqEapClearUsername *req_eap_clear_username; + RpcReqEapSetPassword *req_eap_set_password; + RpcReqEapClearPassword *req_eap_clear_password; + RpcReqEapSetNewPassword *req_eap_set_new_password; + RpcReqEapClearNewPassword *req_eap_clear_new_password; + RpcReqEapSetCaCert *req_eap_set_ca_cert; + RpcReqEapClearCaCert *req_eap_clear_ca_cert; + RpcReqEapSetCertificateAndKey *req_eap_set_certificate_and_key; + RpcReqEapClearCertificateAndKey *req_eap_clear_certificate_and_key; + RpcReqEapGetDisableTimeCheck *req_eap_get_disable_time_check; + RpcReqEapSetTtlsPhase2Method *req_eap_set_ttls_phase2_method; + RpcReqEapSetSuiteb192bitCertification *req_eap_set_suiteb_certification; + RpcReqEapSetPacFile *req_eap_set_pac_file; + RpcReqEapSetFastParams *req_eap_set_fast_params; + RpcReqEapUseDefaultCertBundle *req_eap_use_default_cert_bundle; + RpcReqWifiSetOkcSupport *req_wifi_set_okc_support; + RpcReqEapSetDomainName *req_eap_set_domain_name; + RpcReqEapSetDisableTimeCheck *req_eap_set_disable_time_check; + RpcReqEapSetEapMethods *req_eap_set_eap_methods; + /* + ** Responses * + */ + RpcRespGetMacAddress *resp_get_mac_address; + RpcRespSetMacAddress *resp_set_mac_address; + RpcRespGetMode *resp_get_wifi_mode; + RpcRespSetMode *resp_set_wifi_mode; + RpcRespSetPs *resp_wifi_set_ps; + RpcRespGetPs *resp_wifi_get_ps; + RpcRespOTABegin *resp_ota_begin; + RpcRespOTAWrite *resp_ota_write; + RpcRespOTAEnd *resp_ota_end; + RpcRespWifiSetMaxTxPower *resp_set_wifi_max_tx_power; + RpcRespWifiGetMaxTxPower *resp_get_wifi_max_tx_power; + RpcRespConfigHeartbeat *resp_config_heartbeat; + RpcRespWifiInit *resp_wifi_init; + RpcRespWifiDeinit *resp_wifi_deinit; + RpcRespWifiStart *resp_wifi_start; + RpcRespWifiStop *resp_wifi_stop; + RpcRespWifiConnect *resp_wifi_connect; + RpcRespWifiDisconnect *resp_wifi_disconnect; + RpcRespWifiSetConfig *resp_wifi_set_config; + RpcRespWifiGetConfig *resp_wifi_get_config; + RpcRespWifiScanStart *resp_wifi_scan_start; + RpcRespWifiScanStop *resp_wifi_scan_stop; + RpcRespWifiScanGetApNum *resp_wifi_scan_get_ap_num; + RpcRespWifiScanGetApRecords *resp_wifi_scan_get_ap_records; + RpcRespWifiClearApList *resp_wifi_clear_ap_list; + RpcRespWifiRestore *resp_wifi_restore; + RpcRespWifiClearFastConnect *resp_wifi_clear_fast_connect; + RpcRespWifiDeauthSta *resp_wifi_deauth_sta; + RpcRespWifiStaGetApInfo *resp_wifi_sta_get_ap_info; + RpcRespWifiSetProtocol *resp_wifi_set_protocol; + RpcRespWifiGetProtocol *resp_wifi_get_protocol; + RpcRespWifiSetBandwidth *resp_wifi_set_bandwidth; + RpcRespWifiGetBandwidth *resp_wifi_get_bandwidth; + RpcRespWifiSetChannel *resp_wifi_set_channel; + RpcRespWifiGetChannel *resp_wifi_get_channel; + RpcRespWifiSetCountry *resp_wifi_set_country; + RpcRespWifiGetCountry *resp_wifi_get_country; + RpcRespWifiApGetStaList *resp_wifi_ap_get_sta_list; + RpcRespWifiApGetStaAid *resp_wifi_ap_get_sta_aid; + RpcRespWifiSetStorage *resp_wifi_set_storage; + RpcRespWifiSetInactiveTime *resp_wifi_set_inactive_time; + RpcRespWifiGetInactiveTime *resp_wifi_get_inactive_time; + RpcRespWifiSetCountryCode *resp_wifi_set_country_code; + RpcRespWifiGetCountryCode *resp_wifi_get_country_code; + RpcRespWifiStaGetAid *resp_wifi_sta_get_aid; + RpcRespWifiStaGetNegotiatedPhymode *resp_wifi_sta_get_negotiated_phymode; + RpcRespWifiStaGetRssi *resp_wifi_sta_get_rssi; + RpcRespWifiSetProtocols *resp_wifi_set_protocols; + RpcRespWifiGetProtocols *resp_wifi_get_protocols; + RpcRespWifiSetBandwidths *resp_wifi_set_bandwidths; + RpcRespWifiGetBandwidths *resp_wifi_get_bandwidths; + RpcRespWifiSetBand *resp_wifi_set_band; + RpcRespWifiGetBand *resp_wifi_get_band; + RpcRespWifiSetBandMode *resp_wifi_set_bandmode; + RpcRespWifiGetBandMode *resp_wifi_get_bandmode; + RpcRespGetCoprocessorFwVersion *resp_get_coprocessor_fwversion; + RpcRespWifiScanGetApRecord *resp_wifi_scan_get_ap_record; + RpcRespSetDhcpDnsStatus *resp_set_dhcp_dns; + RpcRespGetDhcpDnsStatus *resp_get_dhcp_dns; + RpcRespWifiStaTwtConfig *resp_wifi_sta_twt_config; + RpcRespWifiStaItwtSetup *resp_wifi_sta_itwt_setup; + RpcRespWifiStaItwtTeardown *resp_wifi_sta_itwt_teardown; + RpcRespWifiStaItwtSuspend *resp_wifi_sta_itwt_suspend; + RpcRespWifiStaItwtGetFlowIdStatus *resp_wifi_sta_itwt_get_flow_id_status; + RpcRespWifiStaItwtSendProbeReq *resp_wifi_sta_itwt_send_probe_req; + RpcRespWifiStaItwtSetTargetWakeTimeOffset *resp_wifi_sta_itwt_set_target_wake_time_offset; + RpcRespWifiStaEnterpriseEnable *resp_wifi_sta_enterprise_enable; + RpcRespWifiStaEnterpriseDisable *resp_wifi_sta_enterprise_disable; + RpcRespEapSetIdentity *resp_eap_set_identity; + RpcRespEapClearIdentity *resp_eap_clear_identity; + RpcRespEapSetUsername *resp_eap_set_username; + RpcRespEapClearUsername *resp_eap_clear_username; + RpcRespEapSetPassword *resp_eap_set_password; + RpcRespEapClearPassword *resp_eap_clear_password; + RpcRespEapSetNewPassword *resp_eap_set_new_password; + RpcRespEapClearNewPassword *resp_eap_clear_new_password; + RpcRespEapSetCaCert *resp_eap_set_ca_cert; + RpcRespEapClearCaCert *resp_eap_clear_ca_cert; + RpcRespEapSetCertificateAndKey *resp_eap_set_certificate_and_key; + RpcRespEapClearCertificateAndKey *resp_eap_clear_certificate_and_key; + RpcRespEapGetDisableTimeCheck *resp_eap_get_disable_time_check; + RpcRespEapSetTtlsPhase2Method *resp_eap_set_ttls_phase2_method; + RpcRespEapSetSuiteb192bitCertification *resp_eap_set_suiteb_certification; + RpcRespEapSetPacFile *resp_eap_set_pac_file; + RpcRespEapSetFastParams *resp_eap_set_fast_params; + RpcRespEapUseDefaultCertBundle *resp_eap_use_default_cert_bundle; + RpcRespWifiSetOkcSupport *resp_wifi_set_okc_support; + RpcRespEapSetDomainName *resp_eap_set_domain_name; + RpcRespEapSetDisableTimeCheck *resp_eap_set_disable_time_check; + RpcRespEapSetEapMethods *resp_eap_set_eap_methods; + /* + ** Notifications * + */ + RpcEventESPInit *event_esp_init; + RpcEventHeartbeat *event_heartbeat; + RpcEventAPStaConnected *event_ap_sta_connected; + RpcEventAPStaDisconnected *event_ap_sta_disconnected; + RpcEventWifiEventNoArgs *event_wifi_event_no_args; + RpcEventStaScanDone *event_sta_scan_done; + RpcEventStaConnected *event_sta_connected; + RpcEventStaDisconnected *event_sta_disconnected; + RpcEventDhcpDnsStatus *event_dhcp_dns; + RpcEventStaItwtSetup *event_sta_itwt_setup; + RpcEventStaItwtTeardown *event_sta_itwt_teardown; + RpcEventStaItwtSuspend *event_sta_itwt_suspend; + RpcEventStaItwtProbe *event_sta_itwt_probe; + }; +}; +#define RPC__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__descriptor) \ + , RPC_TYPE__MsgType_Invalid, RPC_ID__MsgId_Invalid, 0, RPC__PAYLOAD__NOT_SET, {0} } + + +/* WifiInitConfig methods */ +void wifi_init_config__init + (WifiInitConfig *message); +size_t wifi_init_config__get_packed_size + (const WifiInitConfig *message); +size_t wifi_init_config__pack + (const WifiInitConfig *message, + uint8_t *out); +size_t wifi_init_config__pack_to_buffer + (const WifiInitConfig *message, + ProtobufCBuffer *buffer); +WifiInitConfig * + wifi_init_config__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_init_config__free_unpacked + (WifiInitConfig *message, + ProtobufCAllocator *allocator); +/* WifiCountry methods */ +void wifi_country__init + (WifiCountry *message); +size_t wifi_country__get_packed_size + (const WifiCountry *message); +size_t wifi_country__pack + (const WifiCountry *message, + uint8_t *out); +size_t wifi_country__pack_to_buffer + (const WifiCountry *message, + ProtobufCBuffer *buffer); +WifiCountry * + wifi_country__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_country__free_unpacked + (WifiCountry *message, + ProtobufCAllocator *allocator); +/* WifiActiveScanTime methods */ +void wifi_active_scan_time__init + (WifiActiveScanTime *message); +size_t wifi_active_scan_time__get_packed_size + (const WifiActiveScanTime *message); +size_t wifi_active_scan_time__pack + (const WifiActiveScanTime *message, + uint8_t *out); +size_t wifi_active_scan_time__pack_to_buffer + (const WifiActiveScanTime *message, + ProtobufCBuffer *buffer); +WifiActiveScanTime * + wifi_active_scan_time__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_active_scan_time__free_unpacked + (WifiActiveScanTime *message, + ProtobufCAllocator *allocator); +/* WifiScanTime methods */ +void wifi_scan_time__init + (WifiScanTime *message); +size_t wifi_scan_time__get_packed_size + (const WifiScanTime *message); +size_t wifi_scan_time__pack + (const WifiScanTime *message, + uint8_t *out); +size_t wifi_scan_time__pack_to_buffer + (const WifiScanTime *message, + ProtobufCBuffer *buffer); +WifiScanTime * + wifi_scan_time__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_scan_time__free_unpacked + (WifiScanTime *message, + ProtobufCAllocator *allocator); +/* WifiScanChannelBitmap methods */ +void wifi_scan_channel_bitmap__init + (WifiScanChannelBitmap *message); +size_t wifi_scan_channel_bitmap__get_packed_size + (const WifiScanChannelBitmap *message); +size_t wifi_scan_channel_bitmap__pack + (const WifiScanChannelBitmap *message, + uint8_t *out); +size_t wifi_scan_channel_bitmap__pack_to_buffer + (const WifiScanChannelBitmap *message, + ProtobufCBuffer *buffer); +WifiScanChannelBitmap * + wifi_scan_channel_bitmap__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_scan_channel_bitmap__free_unpacked + (WifiScanChannelBitmap *message, + ProtobufCAllocator *allocator); +/* WifiScanConfig methods */ +void wifi_scan_config__init + (WifiScanConfig *message); +size_t wifi_scan_config__get_packed_size + (const WifiScanConfig *message); +size_t wifi_scan_config__pack + (const WifiScanConfig *message, + uint8_t *out); +size_t wifi_scan_config__pack_to_buffer + (const WifiScanConfig *message, + ProtobufCBuffer *buffer); +WifiScanConfig * + wifi_scan_config__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_scan_config__free_unpacked + (WifiScanConfig *message, + ProtobufCAllocator *allocator); +/* WifiHeApInfo methods */ +void wifi_he_ap_info__init + (WifiHeApInfo *message); +size_t wifi_he_ap_info__get_packed_size + (const WifiHeApInfo *message); +size_t wifi_he_ap_info__pack + (const WifiHeApInfo *message, + uint8_t *out); +size_t wifi_he_ap_info__pack_to_buffer + (const WifiHeApInfo *message, + ProtobufCBuffer *buffer); +WifiHeApInfo * + wifi_he_ap_info__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_he_ap_info__free_unpacked + (WifiHeApInfo *message, + ProtobufCAllocator *allocator); +/* WifiApRecord methods */ +void wifi_ap_record__init + (WifiApRecord *message); +size_t wifi_ap_record__get_packed_size + (const WifiApRecord *message); +size_t wifi_ap_record__pack + (const WifiApRecord *message, + uint8_t *out); +size_t wifi_ap_record__pack_to_buffer + (const WifiApRecord *message, + ProtobufCBuffer *buffer); +WifiApRecord * + wifi_ap_record__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_ap_record__free_unpacked + (WifiApRecord *message, + ProtobufCAllocator *allocator); +/* WifiScanThreshold methods */ +void wifi_scan_threshold__init + (WifiScanThreshold *message); +size_t wifi_scan_threshold__get_packed_size + (const WifiScanThreshold *message); +size_t wifi_scan_threshold__pack + (const WifiScanThreshold *message, + uint8_t *out); +size_t wifi_scan_threshold__pack_to_buffer + (const WifiScanThreshold *message, + ProtobufCBuffer *buffer); +WifiScanThreshold * + wifi_scan_threshold__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_scan_threshold__free_unpacked + (WifiScanThreshold *message, + ProtobufCAllocator *allocator); +/* WifiPmfConfig methods */ +void wifi_pmf_config__init + (WifiPmfConfig *message); +size_t wifi_pmf_config__get_packed_size + (const WifiPmfConfig *message); +size_t wifi_pmf_config__pack + (const WifiPmfConfig *message, + uint8_t *out); +size_t wifi_pmf_config__pack_to_buffer + (const WifiPmfConfig *message, + ProtobufCBuffer *buffer); +WifiPmfConfig * + wifi_pmf_config__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_pmf_config__free_unpacked + (WifiPmfConfig *message, + ProtobufCAllocator *allocator); +/* WifiBssMaxIdleConfig methods */ +void wifi_bss_max_idle_config__init + (WifiBssMaxIdleConfig *message); +size_t wifi_bss_max_idle_config__get_packed_size + (const WifiBssMaxIdleConfig *message); +size_t wifi_bss_max_idle_config__pack + (const WifiBssMaxIdleConfig *message, + uint8_t *out); +size_t wifi_bss_max_idle_config__pack_to_buffer + (const WifiBssMaxIdleConfig *message, + ProtobufCBuffer *buffer); +WifiBssMaxIdleConfig * + wifi_bss_max_idle_config__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_bss_max_idle_config__free_unpacked + (WifiBssMaxIdleConfig *message, + ProtobufCAllocator *allocator); +/* WifiApConfig methods */ +void wifi_ap_config__init + (WifiApConfig *message); +size_t wifi_ap_config__get_packed_size + (const WifiApConfig *message); +size_t wifi_ap_config__pack + (const WifiApConfig *message, + uint8_t *out); +size_t wifi_ap_config__pack_to_buffer + (const WifiApConfig *message, + ProtobufCBuffer *buffer); +WifiApConfig * + wifi_ap_config__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_ap_config__free_unpacked + (WifiApConfig *message, + ProtobufCAllocator *allocator); +/* WifiStaConfig methods */ +void wifi_sta_config__init + (WifiStaConfig *message); +size_t wifi_sta_config__get_packed_size + (const WifiStaConfig *message); +size_t wifi_sta_config__pack + (const WifiStaConfig *message, + uint8_t *out); +size_t wifi_sta_config__pack_to_buffer + (const WifiStaConfig *message, + ProtobufCBuffer *buffer); +WifiStaConfig * + wifi_sta_config__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_sta_config__free_unpacked + (WifiStaConfig *message, + ProtobufCAllocator *allocator); +/* WifiConfig methods */ +void wifi_config__init + (WifiConfig *message); +size_t wifi_config__get_packed_size + (const WifiConfig *message); +size_t wifi_config__pack + (const WifiConfig *message, + uint8_t *out); +size_t wifi_config__pack_to_buffer + (const WifiConfig *message, + ProtobufCBuffer *buffer); +WifiConfig * + wifi_config__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_config__free_unpacked + (WifiConfig *message, + ProtobufCAllocator *allocator); +/* WifiStaInfo methods */ +void wifi_sta_info__init + (WifiStaInfo *message); +size_t wifi_sta_info__get_packed_size + (const WifiStaInfo *message); +size_t wifi_sta_info__pack + (const WifiStaInfo *message, + uint8_t *out); +size_t wifi_sta_info__pack_to_buffer + (const WifiStaInfo *message, + ProtobufCBuffer *buffer); +WifiStaInfo * + wifi_sta_info__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_sta_info__free_unpacked + (WifiStaInfo *message, + ProtobufCAllocator *allocator); +/* WifiStaList methods */ +void wifi_sta_list__init + (WifiStaList *message); +size_t wifi_sta_list__get_packed_size + (const WifiStaList *message); +size_t wifi_sta_list__pack + (const WifiStaList *message, + uint8_t *out); +size_t wifi_sta_list__pack_to_buffer + (const WifiStaList *message, + ProtobufCBuffer *buffer); +WifiStaList * + wifi_sta_list__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_sta_list__free_unpacked + (WifiStaList *message, + ProtobufCAllocator *allocator); +/* WifiPktRxCtrl methods */ +void wifi_pkt_rx_ctrl__init + (WifiPktRxCtrl *message); +size_t wifi_pkt_rx_ctrl__get_packed_size + (const WifiPktRxCtrl *message); +size_t wifi_pkt_rx_ctrl__pack + (const WifiPktRxCtrl *message, + uint8_t *out); +size_t wifi_pkt_rx_ctrl__pack_to_buffer + (const WifiPktRxCtrl *message, + ProtobufCBuffer *buffer); +WifiPktRxCtrl * + wifi_pkt_rx_ctrl__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_pkt_rx_ctrl__free_unpacked + (WifiPktRxCtrl *message, + ProtobufCAllocator *allocator); +/* WifiPromiscuousPkt methods */ +void wifi_promiscuous_pkt__init + (WifiPromiscuousPkt *message); +size_t wifi_promiscuous_pkt__get_packed_size + (const WifiPromiscuousPkt *message); +size_t wifi_promiscuous_pkt__pack + (const WifiPromiscuousPkt *message, + uint8_t *out); +size_t wifi_promiscuous_pkt__pack_to_buffer + (const WifiPromiscuousPkt *message, + ProtobufCBuffer *buffer); +WifiPromiscuousPkt * + wifi_promiscuous_pkt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_promiscuous_pkt__free_unpacked + (WifiPromiscuousPkt *message, + ProtobufCAllocator *allocator); +/* WifiPromiscuousFilter methods */ +void wifi_promiscuous_filter__init + (WifiPromiscuousFilter *message); +size_t wifi_promiscuous_filter__get_packed_size + (const WifiPromiscuousFilter *message); +size_t wifi_promiscuous_filter__pack + (const WifiPromiscuousFilter *message, + uint8_t *out); +size_t wifi_promiscuous_filter__pack_to_buffer + (const WifiPromiscuousFilter *message, + ProtobufCBuffer *buffer); +WifiPromiscuousFilter * + wifi_promiscuous_filter__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_promiscuous_filter__free_unpacked + (WifiPromiscuousFilter *message, + ProtobufCAllocator *allocator); +/* WifiCsiConfig methods */ +void wifi_csi_config__init + (WifiCsiConfig *message); +size_t wifi_csi_config__get_packed_size + (const WifiCsiConfig *message); +size_t wifi_csi_config__pack + (const WifiCsiConfig *message, + uint8_t *out); +size_t wifi_csi_config__pack_to_buffer + (const WifiCsiConfig *message, + ProtobufCBuffer *buffer); +WifiCsiConfig * + wifi_csi_config__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_csi_config__free_unpacked + (WifiCsiConfig *message, + ProtobufCAllocator *allocator); +/* WifiCsiInfo methods */ +void wifi_csi_info__init + (WifiCsiInfo *message); +size_t wifi_csi_info__get_packed_size + (const WifiCsiInfo *message); +size_t wifi_csi_info__pack + (const WifiCsiInfo *message, + uint8_t *out); +size_t wifi_csi_info__pack_to_buffer + (const WifiCsiInfo *message, + ProtobufCBuffer *buffer); +WifiCsiInfo * + wifi_csi_info__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_csi_info__free_unpacked + (WifiCsiInfo *message, + ProtobufCAllocator *allocator); +/* WifiAntGpio methods */ +void wifi_ant_gpio__init + (WifiAntGpio *message); +size_t wifi_ant_gpio__get_packed_size + (const WifiAntGpio *message); +size_t wifi_ant_gpio__pack + (const WifiAntGpio *message, + uint8_t *out); +size_t wifi_ant_gpio__pack_to_buffer + (const WifiAntGpio *message, + ProtobufCBuffer *buffer); +WifiAntGpio * + wifi_ant_gpio__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_ant_gpio__free_unpacked + (WifiAntGpio *message, + ProtobufCAllocator *allocator); +/* WifiAntGpioConfig methods */ +void wifi_ant_gpio_config__init + (WifiAntGpioConfig *message); +size_t wifi_ant_gpio_config__get_packed_size + (const WifiAntGpioConfig *message); +size_t wifi_ant_gpio_config__pack + (const WifiAntGpioConfig *message, + uint8_t *out); +size_t wifi_ant_gpio_config__pack_to_buffer + (const WifiAntGpioConfig *message, + ProtobufCBuffer *buffer); +WifiAntGpioConfig * + wifi_ant_gpio_config__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_ant_gpio_config__free_unpacked + (WifiAntGpioConfig *message, + ProtobufCAllocator *allocator); +/* WifiAntConfig methods */ +void wifi_ant_config__init + (WifiAntConfig *message); +size_t wifi_ant_config__get_packed_size + (const WifiAntConfig *message); +size_t wifi_ant_config__pack + (const WifiAntConfig *message, + uint8_t *out); +size_t wifi_ant_config__pack_to_buffer + (const WifiAntConfig *message, + ProtobufCBuffer *buffer); +WifiAntConfig * + wifi_ant_config__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_ant_config__free_unpacked + (WifiAntConfig *message, + ProtobufCAllocator *allocator); +/* WifiActionTxReq methods */ +void wifi_action_tx_req__init + (WifiActionTxReq *message); +size_t wifi_action_tx_req__get_packed_size + (const WifiActionTxReq *message); +size_t wifi_action_tx_req__pack + (const WifiActionTxReq *message, + uint8_t *out); +size_t wifi_action_tx_req__pack_to_buffer + (const WifiActionTxReq *message, + ProtobufCBuffer *buffer); +WifiActionTxReq * + wifi_action_tx_req__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_action_tx_req__free_unpacked + (WifiActionTxReq *message, + ProtobufCAllocator *allocator); +/* WifiFtmInitiatorCfg methods */ +void wifi_ftm_initiator_cfg__init + (WifiFtmInitiatorCfg *message); +size_t wifi_ftm_initiator_cfg__get_packed_size + (const WifiFtmInitiatorCfg *message); +size_t wifi_ftm_initiator_cfg__pack + (const WifiFtmInitiatorCfg *message, + uint8_t *out); +size_t wifi_ftm_initiator_cfg__pack_to_buffer + (const WifiFtmInitiatorCfg *message, + ProtobufCBuffer *buffer); +WifiFtmInitiatorCfg * + wifi_ftm_initiator_cfg__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_ftm_initiator_cfg__free_unpacked + (WifiFtmInitiatorCfg *message, + ProtobufCAllocator *allocator); +/* WifiEventStaScanDone methods */ +void wifi_event_sta_scan_done__init + (WifiEventStaScanDone *message); +size_t wifi_event_sta_scan_done__get_packed_size + (const WifiEventStaScanDone *message); +size_t wifi_event_sta_scan_done__pack + (const WifiEventStaScanDone *message, + uint8_t *out); +size_t wifi_event_sta_scan_done__pack_to_buffer + (const WifiEventStaScanDone *message, + ProtobufCBuffer *buffer); +WifiEventStaScanDone * + wifi_event_sta_scan_done__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_event_sta_scan_done__free_unpacked + (WifiEventStaScanDone *message, + ProtobufCAllocator *allocator); +/* WifiEventStaConnected methods */ +void wifi_event_sta_connected__init + (WifiEventStaConnected *message); +size_t wifi_event_sta_connected__get_packed_size + (const WifiEventStaConnected *message); +size_t wifi_event_sta_connected__pack + (const WifiEventStaConnected *message, + uint8_t *out); +size_t wifi_event_sta_connected__pack_to_buffer + (const WifiEventStaConnected *message, + ProtobufCBuffer *buffer); +WifiEventStaConnected * + wifi_event_sta_connected__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_event_sta_connected__free_unpacked + (WifiEventStaConnected *message, + ProtobufCAllocator *allocator); +/* WifiEventStaDisconnected methods */ +void wifi_event_sta_disconnected__init + (WifiEventStaDisconnected *message); +size_t wifi_event_sta_disconnected__get_packed_size + (const WifiEventStaDisconnected *message); +size_t wifi_event_sta_disconnected__pack + (const WifiEventStaDisconnected *message, + uint8_t *out); +size_t wifi_event_sta_disconnected__pack_to_buffer + (const WifiEventStaDisconnected *message, + ProtobufCBuffer *buffer); +WifiEventStaDisconnected * + wifi_event_sta_disconnected__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_event_sta_disconnected__free_unpacked + (WifiEventStaDisconnected *message, + ProtobufCAllocator *allocator); +/* WifiEventStaAuthmodeChange methods */ +void wifi_event_sta_authmode_change__init + (WifiEventStaAuthmodeChange *message); +size_t wifi_event_sta_authmode_change__get_packed_size + (const WifiEventStaAuthmodeChange *message); +size_t wifi_event_sta_authmode_change__pack + (const WifiEventStaAuthmodeChange *message, + uint8_t *out); +size_t wifi_event_sta_authmode_change__pack_to_buffer + (const WifiEventStaAuthmodeChange *message, + ProtobufCBuffer *buffer); +WifiEventStaAuthmodeChange * + wifi_event_sta_authmode_change__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_event_sta_authmode_change__free_unpacked + (WifiEventStaAuthmodeChange *message, + ProtobufCAllocator *allocator); +/* WifiEventStaWpsErPin methods */ +void wifi_event_sta_wps_er_pin__init + (WifiEventStaWpsErPin *message); +size_t wifi_event_sta_wps_er_pin__get_packed_size + (const WifiEventStaWpsErPin *message); +size_t wifi_event_sta_wps_er_pin__pack + (const WifiEventStaWpsErPin *message, + uint8_t *out); +size_t wifi_event_sta_wps_er_pin__pack_to_buffer + (const WifiEventStaWpsErPin *message, + ProtobufCBuffer *buffer); +WifiEventStaWpsErPin * + wifi_event_sta_wps_er_pin__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_event_sta_wps_er_pin__free_unpacked + (WifiEventStaWpsErPin *message, + ProtobufCAllocator *allocator); +/* ApCred methods */ +void ap_cred__init + (ApCred *message); +size_t ap_cred__get_packed_size + (const ApCred *message); +size_t ap_cred__pack + (const ApCred *message, + uint8_t *out); +size_t ap_cred__pack_to_buffer + (const ApCred *message, + ProtobufCBuffer *buffer); +ApCred * + ap_cred__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void ap_cred__free_unpacked + (ApCred *message, + ProtobufCAllocator *allocator); +/* WifiEventStaWpsErSuccess methods */ +void wifi_event_sta_wps_er_success__init + (WifiEventStaWpsErSuccess *message); +size_t wifi_event_sta_wps_er_success__get_packed_size + (const WifiEventStaWpsErSuccess *message); +size_t wifi_event_sta_wps_er_success__pack + (const WifiEventStaWpsErSuccess *message, + uint8_t *out); +size_t wifi_event_sta_wps_er_success__pack_to_buffer + (const WifiEventStaWpsErSuccess *message, + ProtobufCBuffer *buffer); +WifiEventStaWpsErSuccess * + wifi_event_sta_wps_er_success__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_event_sta_wps_er_success__free_unpacked + (WifiEventStaWpsErSuccess *message, + ProtobufCAllocator *allocator); +/* WifiEventApProbeReqRx methods */ +void wifi_event_ap_probe_req_rx__init + (WifiEventApProbeReqRx *message); +size_t wifi_event_ap_probe_req_rx__get_packed_size + (const WifiEventApProbeReqRx *message); +size_t wifi_event_ap_probe_req_rx__pack + (const WifiEventApProbeReqRx *message, + uint8_t *out); +size_t wifi_event_ap_probe_req_rx__pack_to_buffer + (const WifiEventApProbeReqRx *message, + ProtobufCBuffer *buffer); +WifiEventApProbeReqRx * + wifi_event_ap_probe_req_rx__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_event_ap_probe_req_rx__free_unpacked + (WifiEventApProbeReqRx *message, + ProtobufCAllocator *allocator); +/* WifiEventBssRssiLow methods */ +void wifi_event_bss_rssi_low__init + (WifiEventBssRssiLow *message); +size_t wifi_event_bss_rssi_low__get_packed_size + (const WifiEventBssRssiLow *message); +size_t wifi_event_bss_rssi_low__pack + (const WifiEventBssRssiLow *message, + uint8_t *out); +size_t wifi_event_bss_rssi_low__pack_to_buffer + (const WifiEventBssRssiLow *message, + ProtobufCBuffer *buffer); +WifiEventBssRssiLow * + wifi_event_bss_rssi_low__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_event_bss_rssi_low__free_unpacked + (WifiEventBssRssiLow *message, + ProtobufCAllocator *allocator); +/* WifiFtmReportEntry methods */ +void wifi_ftm_report_entry__init + (WifiFtmReportEntry *message); +size_t wifi_ftm_report_entry__get_packed_size + (const WifiFtmReportEntry *message); +size_t wifi_ftm_report_entry__pack + (const WifiFtmReportEntry *message, + uint8_t *out); +size_t wifi_ftm_report_entry__pack_to_buffer + (const WifiFtmReportEntry *message, + ProtobufCBuffer *buffer); +WifiFtmReportEntry * + wifi_ftm_report_entry__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_ftm_report_entry__free_unpacked + (WifiFtmReportEntry *message, + ProtobufCAllocator *allocator); +/* WifiEventFtmReport methods */ +void wifi_event_ftm_report__init + (WifiEventFtmReport *message); +size_t wifi_event_ftm_report__get_packed_size + (const WifiEventFtmReport *message); +size_t wifi_event_ftm_report__pack + (const WifiEventFtmReport *message, + uint8_t *out); +size_t wifi_event_ftm_report__pack_to_buffer + (const WifiEventFtmReport *message, + ProtobufCBuffer *buffer); +WifiEventFtmReport * + wifi_event_ftm_report__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_event_ftm_report__free_unpacked + (WifiEventFtmReport *message, + ProtobufCAllocator *allocator); +/* WifiEventActionTxStatus methods */ +void wifi_event_action_tx_status__init + (WifiEventActionTxStatus *message); +size_t wifi_event_action_tx_status__get_packed_size + (const WifiEventActionTxStatus *message); +size_t wifi_event_action_tx_status__pack + (const WifiEventActionTxStatus *message, + uint8_t *out); +size_t wifi_event_action_tx_status__pack_to_buffer + (const WifiEventActionTxStatus *message, + ProtobufCBuffer *buffer); +WifiEventActionTxStatus * + wifi_event_action_tx_status__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_event_action_tx_status__free_unpacked + (WifiEventActionTxStatus *message, + ProtobufCAllocator *allocator); +/* WifiEventRocDone methods */ +void wifi_event_roc_done__init + (WifiEventRocDone *message); +size_t wifi_event_roc_done__get_packed_size + (const WifiEventRocDone *message); +size_t wifi_event_roc_done__pack + (const WifiEventRocDone *message, + uint8_t *out); +size_t wifi_event_roc_done__pack_to_buffer + (const WifiEventRocDone *message, + ProtobufCBuffer *buffer); +WifiEventRocDone * + wifi_event_roc_done__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_event_roc_done__free_unpacked + (WifiEventRocDone *message, + ProtobufCAllocator *allocator); +/* WifiEventApWpsRgPin methods */ +void wifi_event_ap_wps_rg_pin__init + (WifiEventApWpsRgPin *message); +size_t wifi_event_ap_wps_rg_pin__get_packed_size + (const WifiEventApWpsRgPin *message); +size_t wifi_event_ap_wps_rg_pin__pack + (const WifiEventApWpsRgPin *message, uint8_t *out); -size_t wifi_init_config__pack_to_buffer - (const WifiInitConfig *message, +size_t wifi_event_ap_wps_rg_pin__pack_to_buffer + (const WifiEventApWpsRgPin *message, ProtobufCBuffer *buffer); -WifiInitConfig * - wifi_init_config__unpack +WifiEventApWpsRgPin * + wifi_event_ap_wps_rg_pin__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_init_config__free_unpacked - (WifiInitConfig *message, +void wifi_event_ap_wps_rg_pin__free_unpacked + (WifiEventApWpsRgPin *message, ProtobufCAllocator *allocator); -/* WifiCountry methods */ -void wifi_country__init - (WifiCountry *message); -size_t wifi_country__get_packed_size - (const WifiCountry *message); -size_t wifi_country__pack - (const WifiCountry *message, +/* WifiEventApWpsRgFailReason methods */ +void wifi_event_ap_wps_rg_fail_reason__init + (WifiEventApWpsRgFailReason *message); +size_t wifi_event_ap_wps_rg_fail_reason__get_packed_size + (const WifiEventApWpsRgFailReason *message); +size_t wifi_event_ap_wps_rg_fail_reason__pack + (const WifiEventApWpsRgFailReason *message, uint8_t *out); -size_t wifi_country__pack_to_buffer - (const WifiCountry *message, +size_t wifi_event_ap_wps_rg_fail_reason__pack_to_buffer + (const WifiEventApWpsRgFailReason *message, ProtobufCBuffer *buffer); -WifiCountry * - wifi_country__unpack +WifiEventApWpsRgFailReason * + wifi_event_ap_wps_rg_fail_reason__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_country__free_unpacked - (WifiCountry *message, +void wifi_event_ap_wps_rg_fail_reason__free_unpacked + (WifiEventApWpsRgFailReason *message, ProtobufCAllocator *allocator); -/* WifiActiveScanTime methods */ -void wifi_active_scan_time__init - (WifiActiveScanTime *message); -size_t wifi_active_scan_time__get_packed_size - (const WifiActiveScanTime *message); -size_t wifi_active_scan_time__pack - (const WifiActiveScanTime *message, +/* WifiEventApWpsRgSuccess methods */ +void wifi_event_ap_wps_rg_success__init + (WifiEventApWpsRgSuccess *message); +size_t wifi_event_ap_wps_rg_success__get_packed_size + (const WifiEventApWpsRgSuccess *message); +size_t wifi_event_ap_wps_rg_success__pack + (const WifiEventApWpsRgSuccess *message, uint8_t *out); -size_t wifi_active_scan_time__pack_to_buffer - (const WifiActiveScanTime *message, +size_t wifi_event_ap_wps_rg_success__pack_to_buffer + (const WifiEventApWpsRgSuccess *message, ProtobufCBuffer *buffer); -WifiActiveScanTime * - wifi_active_scan_time__unpack +WifiEventApWpsRgSuccess * + wifi_event_ap_wps_rg_success__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_active_scan_time__free_unpacked - (WifiActiveScanTime *message, +void wifi_event_ap_wps_rg_success__free_unpacked + (WifiEventApWpsRgSuccess *message, ProtobufCAllocator *allocator); -/* WifiScanTime methods */ -void wifi_scan_time__init - (WifiScanTime *message); -size_t wifi_scan_time__get_packed_size - (const WifiScanTime *message); -size_t wifi_scan_time__pack - (const WifiScanTime *message, +/* WifiProtocols methods */ +void wifi_protocols__init + (WifiProtocols *message); +size_t wifi_protocols__get_packed_size + (const WifiProtocols *message); +size_t wifi_protocols__pack + (const WifiProtocols *message, uint8_t *out); -size_t wifi_scan_time__pack_to_buffer - (const WifiScanTime *message, +size_t wifi_protocols__pack_to_buffer + (const WifiProtocols *message, ProtobufCBuffer *buffer); -WifiScanTime * - wifi_scan_time__unpack +WifiProtocols * + wifi_protocols__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_scan_time__free_unpacked - (WifiScanTime *message, +void wifi_protocols__free_unpacked + (WifiProtocols *message, + ProtobufCAllocator *allocator); +/* WifiBandwidths methods */ +void wifi_bandwidths__init + (WifiBandwidths *message); +size_t wifi_bandwidths__get_packed_size + (const WifiBandwidths *message); +size_t wifi_bandwidths__pack + (const WifiBandwidths *message, + uint8_t *out); +size_t wifi_bandwidths__pack_to_buffer + (const WifiBandwidths *message, + ProtobufCBuffer *buffer); +WifiBandwidths * + wifi_bandwidths__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_bandwidths__free_unpacked + (WifiBandwidths *message, + ProtobufCAllocator *allocator); +/* WifiItwtSetupConfig methods */ +void wifi_itwt_setup_config__init + (WifiItwtSetupConfig *message); +size_t wifi_itwt_setup_config__get_packed_size + (const WifiItwtSetupConfig *message); +size_t wifi_itwt_setup_config__pack + (const WifiItwtSetupConfig *message, + uint8_t *out); +size_t wifi_itwt_setup_config__pack_to_buffer + (const WifiItwtSetupConfig *message, + ProtobufCBuffer *buffer); +WifiItwtSetupConfig * + wifi_itwt_setup_config__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_itwt_setup_config__free_unpacked + (WifiItwtSetupConfig *message, + ProtobufCAllocator *allocator); +/* WifiTwtConfig methods */ +void wifi_twt_config__init + (WifiTwtConfig *message); +size_t wifi_twt_config__get_packed_size + (const WifiTwtConfig *message); +size_t wifi_twt_config__pack + (const WifiTwtConfig *message, + uint8_t *out); +size_t wifi_twt_config__pack_to_buffer + (const WifiTwtConfig *message, + ProtobufCBuffer *buffer); +WifiTwtConfig * + wifi_twt_config__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void wifi_twt_config__free_unpacked + (WifiTwtConfig *message, + ProtobufCAllocator *allocator); +/* ConnectedSTAList methods */ +void connected_stalist__init + (ConnectedSTAList *message); +size_t connected_stalist__get_packed_size + (const ConnectedSTAList *message); +size_t connected_stalist__pack + (const ConnectedSTAList *message, + uint8_t *out); +size_t connected_stalist__pack_to_buffer + (const ConnectedSTAList *message, + ProtobufCBuffer *buffer); +ConnectedSTAList * + connected_stalist__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void connected_stalist__free_unpacked + (ConnectedSTAList *message, + ProtobufCAllocator *allocator); +/* EapFastConfig methods */ +void eap_fast_config__init + (EapFastConfig *message); +size_t eap_fast_config__get_packed_size + (const EapFastConfig *message); +size_t eap_fast_config__pack + (const EapFastConfig *message, + uint8_t *out); +size_t eap_fast_config__pack_to_buffer + (const EapFastConfig *message, + ProtobufCBuffer *buffer); +EapFastConfig * + eap_fast_config__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void eap_fast_config__free_unpacked + (EapFastConfig *message, + ProtobufCAllocator *allocator); +/* RpcReqGetMacAddress methods */ +void rpc__req__get_mac_address__init + (RpcReqGetMacAddress *message); +size_t rpc__req__get_mac_address__get_packed_size + (const RpcReqGetMacAddress *message); +size_t rpc__req__get_mac_address__pack + (const RpcReqGetMacAddress *message, + uint8_t *out); +size_t rpc__req__get_mac_address__pack_to_buffer + (const RpcReqGetMacAddress *message, + ProtobufCBuffer *buffer); +RpcReqGetMacAddress * + rpc__req__get_mac_address__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__get_mac_address__free_unpacked + (RpcReqGetMacAddress *message, + ProtobufCAllocator *allocator); +/* RpcRespGetMacAddress methods */ +void rpc__resp__get_mac_address__init + (RpcRespGetMacAddress *message); +size_t rpc__resp__get_mac_address__get_packed_size + (const RpcRespGetMacAddress *message); +size_t rpc__resp__get_mac_address__pack + (const RpcRespGetMacAddress *message, + uint8_t *out); +size_t rpc__resp__get_mac_address__pack_to_buffer + (const RpcRespGetMacAddress *message, + ProtobufCBuffer *buffer); +RpcRespGetMacAddress * + rpc__resp__get_mac_address__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__get_mac_address__free_unpacked + (RpcRespGetMacAddress *message, + ProtobufCAllocator *allocator); +/* RpcReqGetMode methods */ +void rpc__req__get_mode__init + (RpcReqGetMode *message); +size_t rpc__req__get_mode__get_packed_size + (const RpcReqGetMode *message); +size_t rpc__req__get_mode__pack + (const RpcReqGetMode *message, + uint8_t *out); +size_t rpc__req__get_mode__pack_to_buffer + (const RpcReqGetMode *message, + ProtobufCBuffer *buffer); +RpcReqGetMode * + rpc__req__get_mode__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__get_mode__free_unpacked + (RpcReqGetMode *message, + ProtobufCAllocator *allocator); +/* RpcRespGetMode methods */ +void rpc__resp__get_mode__init + (RpcRespGetMode *message); +size_t rpc__resp__get_mode__get_packed_size + (const RpcRespGetMode *message); +size_t rpc__resp__get_mode__pack + (const RpcRespGetMode *message, + uint8_t *out); +size_t rpc__resp__get_mode__pack_to_buffer + (const RpcRespGetMode *message, + ProtobufCBuffer *buffer); +RpcRespGetMode * + rpc__resp__get_mode__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__get_mode__free_unpacked + (RpcRespGetMode *message, ProtobufCAllocator *allocator); -/* WifiScanChannelBitmap methods */ -void wifi_scan_channel_bitmap__init - (WifiScanChannelBitmap *message); -size_t wifi_scan_channel_bitmap__get_packed_size - (const WifiScanChannelBitmap *message); -size_t wifi_scan_channel_bitmap__pack - (const WifiScanChannelBitmap *message, +/* RpcReqSetMode methods */ +void rpc__req__set_mode__init + (RpcReqSetMode *message); +size_t rpc__req__set_mode__get_packed_size + (const RpcReqSetMode *message); +size_t rpc__req__set_mode__pack + (const RpcReqSetMode *message, uint8_t *out); -size_t wifi_scan_channel_bitmap__pack_to_buffer - (const WifiScanChannelBitmap *message, +size_t rpc__req__set_mode__pack_to_buffer + (const RpcReqSetMode *message, ProtobufCBuffer *buffer); -WifiScanChannelBitmap * - wifi_scan_channel_bitmap__unpack +RpcReqSetMode * + rpc__req__set_mode__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_scan_channel_bitmap__free_unpacked - (WifiScanChannelBitmap *message, +void rpc__req__set_mode__free_unpacked + (RpcReqSetMode *message, ProtobufCAllocator *allocator); -/* WifiScanConfig methods */ -void wifi_scan_config__init - (WifiScanConfig *message); -size_t wifi_scan_config__get_packed_size - (const WifiScanConfig *message); -size_t wifi_scan_config__pack - (const WifiScanConfig *message, +/* RpcRespSetMode methods */ +void rpc__resp__set_mode__init + (RpcRespSetMode *message); +size_t rpc__resp__set_mode__get_packed_size + (const RpcRespSetMode *message); +size_t rpc__resp__set_mode__pack + (const RpcRespSetMode *message, uint8_t *out); -size_t wifi_scan_config__pack_to_buffer - (const WifiScanConfig *message, +size_t rpc__resp__set_mode__pack_to_buffer + (const RpcRespSetMode *message, ProtobufCBuffer *buffer); -WifiScanConfig * - wifi_scan_config__unpack +RpcRespSetMode * + rpc__resp__set_mode__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_scan_config__free_unpacked - (WifiScanConfig *message, +void rpc__resp__set_mode__free_unpacked + (RpcRespSetMode *message, ProtobufCAllocator *allocator); -/* WifiHeApInfo methods */ -void wifi_he_ap_info__init - (WifiHeApInfo *message); -size_t wifi_he_ap_info__get_packed_size - (const WifiHeApInfo *message); -size_t wifi_he_ap_info__pack - (const WifiHeApInfo *message, +/* RpcReqGetPs methods */ +void rpc__req__get_ps__init + (RpcReqGetPs *message); +size_t rpc__req__get_ps__get_packed_size + (const RpcReqGetPs *message); +size_t rpc__req__get_ps__pack + (const RpcReqGetPs *message, uint8_t *out); -size_t wifi_he_ap_info__pack_to_buffer - (const WifiHeApInfo *message, +size_t rpc__req__get_ps__pack_to_buffer + (const RpcReqGetPs *message, ProtobufCBuffer *buffer); -WifiHeApInfo * - wifi_he_ap_info__unpack +RpcReqGetPs * + rpc__req__get_ps__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_he_ap_info__free_unpacked - (WifiHeApInfo *message, +void rpc__req__get_ps__free_unpacked + (RpcReqGetPs *message, ProtobufCAllocator *allocator); -/* WifiApRecord methods */ -void wifi_ap_record__init - (WifiApRecord *message); -size_t wifi_ap_record__get_packed_size - (const WifiApRecord *message); -size_t wifi_ap_record__pack - (const WifiApRecord *message, +/* RpcRespGetPs methods */ +void rpc__resp__get_ps__init + (RpcRespGetPs *message); +size_t rpc__resp__get_ps__get_packed_size + (const RpcRespGetPs *message); +size_t rpc__resp__get_ps__pack + (const RpcRespGetPs *message, uint8_t *out); -size_t wifi_ap_record__pack_to_buffer - (const WifiApRecord *message, +size_t rpc__resp__get_ps__pack_to_buffer + (const RpcRespGetPs *message, ProtobufCBuffer *buffer); -WifiApRecord * - wifi_ap_record__unpack +RpcRespGetPs * + rpc__resp__get_ps__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_ap_record__free_unpacked - (WifiApRecord *message, +void rpc__resp__get_ps__free_unpacked + (RpcRespGetPs *message, ProtobufCAllocator *allocator); -/* WifiScanThreshold methods */ -void wifi_scan_threshold__init - (WifiScanThreshold *message); -size_t wifi_scan_threshold__get_packed_size - (const WifiScanThreshold *message); -size_t wifi_scan_threshold__pack - (const WifiScanThreshold *message, +/* RpcReqSetPs methods */ +void rpc__req__set_ps__init + (RpcReqSetPs *message); +size_t rpc__req__set_ps__get_packed_size + (const RpcReqSetPs *message); +size_t rpc__req__set_ps__pack + (const RpcReqSetPs *message, uint8_t *out); -size_t wifi_scan_threshold__pack_to_buffer - (const WifiScanThreshold *message, +size_t rpc__req__set_ps__pack_to_buffer + (const RpcReqSetPs *message, ProtobufCBuffer *buffer); -WifiScanThreshold * - wifi_scan_threshold__unpack +RpcReqSetPs * + rpc__req__set_ps__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_scan_threshold__free_unpacked - (WifiScanThreshold *message, +void rpc__req__set_ps__free_unpacked + (RpcReqSetPs *message, ProtobufCAllocator *allocator); -/* WifiPmfConfig methods */ -void wifi_pmf_config__init - (WifiPmfConfig *message); -size_t wifi_pmf_config__get_packed_size - (const WifiPmfConfig *message); -size_t wifi_pmf_config__pack - (const WifiPmfConfig *message, +/* RpcRespSetPs methods */ +void rpc__resp__set_ps__init + (RpcRespSetPs *message); +size_t rpc__resp__set_ps__get_packed_size + (const RpcRespSetPs *message); +size_t rpc__resp__set_ps__pack + (const RpcRespSetPs *message, uint8_t *out); -size_t wifi_pmf_config__pack_to_buffer - (const WifiPmfConfig *message, +size_t rpc__resp__set_ps__pack_to_buffer + (const RpcRespSetPs *message, ProtobufCBuffer *buffer); -WifiPmfConfig * - wifi_pmf_config__unpack +RpcRespSetPs * + rpc__resp__set_ps__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_pmf_config__free_unpacked - (WifiPmfConfig *message, +void rpc__resp__set_ps__free_unpacked + (RpcRespSetPs *message, ProtobufCAllocator *allocator); -/* WifiBssMaxIdleConfig methods */ -void wifi_bss_max_idle_config__init - (WifiBssMaxIdleConfig *message); -size_t wifi_bss_max_idle_config__get_packed_size - (const WifiBssMaxIdleConfig *message); -size_t wifi_bss_max_idle_config__pack - (const WifiBssMaxIdleConfig *message, +/* RpcReqSetMacAddress methods */ +void rpc__req__set_mac_address__init + (RpcReqSetMacAddress *message); +size_t rpc__req__set_mac_address__get_packed_size + (const RpcReqSetMacAddress *message); +size_t rpc__req__set_mac_address__pack + (const RpcReqSetMacAddress *message, uint8_t *out); -size_t wifi_bss_max_idle_config__pack_to_buffer - (const WifiBssMaxIdleConfig *message, +size_t rpc__req__set_mac_address__pack_to_buffer + (const RpcReqSetMacAddress *message, ProtobufCBuffer *buffer); -WifiBssMaxIdleConfig * - wifi_bss_max_idle_config__unpack +RpcReqSetMacAddress * + rpc__req__set_mac_address__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_bss_max_idle_config__free_unpacked - (WifiBssMaxIdleConfig *message, +void rpc__req__set_mac_address__free_unpacked + (RpcReqSetMacAddress *message, ProtobufCAllocator *allocator); -/* WifiApConfig methods */ -void wifi_ap_config__init - (WifiApConfig *message); -size_t wifi_ap_config__get_packed_size - (const WifiApConfig *message); -size_t wifi_ap_config__pack - (const WifiApConfig *message, +/* RpcRespSetMacAddress methods */ +void rpc__resp__set_mac_address__init + (RpcRespSetMacAddress *message); +size_t rpc__resp__set_mac_address__get_packed_size + (const RpcRespSetMacAddress *message); +size_t rpc__resp__set_mac_address__pack + (const RpcRespSetMacAddress *message, uint8_t *out); -size_t wifi_ap_config__pack_to_buffer - (const WifiApConfig *message, +size_t rpc__resp__set_mac_address__pack_to_buffer + (const RpcRespSetMacAddress *message, ProtobufCBuffer *buffer); -WifiApConfig * - wifi_ap_config__unpack +RpcRespSetMacAddress * + rpc__resp__set_mac_address__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_ap_config__free_unpacked - (WifiApConfig *message, +void rpc__resp__set_mac_address__free_unpacked + (RpcRespSetMacAddress *message, ProtobufCAllocator *allocator); -/* WifiStaConfig methods */ -void wifi_sta_config__init - (WifiStaConfig *message); -size_t wifi_sta_config__get_packed_size - (const WifiStaConfig *message); -size_t wifi_sta_config__pack - (const WifiStaConfig *message, +/* RpcReqOTABegin methods */ +void rpc__req__otabegin__init + (RpcReqOTABegin *message); +size_t rpc__req__otabegin__get_packed_size + (const RpcReqOTABegin *message); +size_t rpc__req__otabegin__pack + (const RpcReqOTABegin *message, uint8_t *out); -size_t wifi_sta_config__pack_to_buffer - (const WifiStaConfig *message, +size_t rpc__req__otabegin__pack_to_buffer + (const RpcReqOTABegin *message, ProtobufCBuffer *buffer); -WifiStaConfig * - wifi_sta_config__unpack +RpcReqOTABegin * + rpc__req__otabegin__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_sta_config__free_unpacked - (WifiStaConfig *message, +void rpc__req__otabegin__free_unpacked + (RpcReqOTABegin *message, ProtobufCAllocator *allocator); -/* WifiConfig methods */ -void wifi_config__init - (WifiConfig *message); -size_t wifi_config__get_packed_size - (const WifiConfig *message); -size_t wifi_config__pack - (const WifiConfig *message, +/* RpcRespOTABegin methods */ +void rpc__resp__otabegin__init + (RpcRespOTABegin *message); +size_t rpc__resp__otabegin__get_packed_size + (const RpcRespOTABegin *message); +size_t rpc__resp__otabegin__pack + (const RpcRespOTABegin *message, uint8_t *out); -size_t wifi_config__pack_to_buffer - (const WifiConfig *message, +size_t rpc__resp__otabegin__pack_to_buffer + (const RpcRespOTABegin *message, ProtobufCBuffer *buffer); -WifiConfig * - wifi_config__unpack +RpcRespOTABegin * + rpc__resp__otabegin__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_config__free_unpacked - (WifiConfig *message, +void rpc__resp__otabegin__free_unpacked + (RpcRespOTABegin *message, ProtobufCAllocator *allocator); -/* WifiStaInfo methods */ -void wifi_sta_info__init - (WifiStaInfo *message); -size_t wifi_sta_info__get_packed_size - (const WifiStaInfo *message); -size_t wifi_sta_info__pack - (const WifiStaInfo *message, +/* RpcReqOTAWrite methods */ +void rpc__req__otawrite__init + (RpcReqOTAWrite *message); +size_t rpc__req__otawrite__get_packed_size + (const RpcReqOTAWrite *message); +size_t rpc__req__otawrite__pack + (const RpcReqOTAWrite *message, uint8_t *out); -size_t wifi_sta_info__pack_to_buffer - (const WifiStaInfo *message, +size_t rpc__req__otawrite__pack_to_buffer + (const RpcReqOTAWrite *message, ProtobufCBuffer *buffer); -WifiStaInfo * - wifi_sta_info__unpack +RpcReqOTAWrite * + rpc__req__otawrite__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_sta_info__free_unpacked - (WifiStaInfo *message, +void rpc__req__otawrite__free_unpacked + (RpcReqOTAWrite *message, ProtobufCAllocator *allocator); -/* WifiStaList methods */ -void wifi_sta_list__init - (WifiStaList *message); -size_t wifi_sta_list__get_packed_size - (const WifiStaList *message); -size_t wifi_sta_list__pack - (const WifiStaList *message, +/* RpcRespOTAWrite methods */ +void rpc__resp__otawrite__init + (RpcRespOTAWrite *message); +size_t rpc__resp__otawrite__get_packed_size + (const RpcRespOTAWrite *message); +size_t rpc__resp__otawrite__pack + (const RpcRespOTAWrite *message, uint8_t *out); -size_t wifi_sta_list__pack_to_buffer - (const WifiStaList *message, +size_t rpc__resp__otawrite__pack_to_buffer + (const RpcRespOTAWrite *message, ProtobufCBuffer *buffer); -WifiStaList * - wifi_sta_list__unpack +RpcRespOTAWrite * + rpc__resp__otawrite__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_sta_list__free_unpacked - (WifiStaList *message, +void rpc__resp__otawrite__free_unpacked + (RpcRespOTAWrite *message, ProtobufCAllocator *allocator); -/* WifiPktRxCtrl methods */ -void wifi_pkt_rx_ctrl__init - (WifiPktRxCtrl *message); -size_t wifi_pkt_rx_ctrl__get_packed_size - (const WifiPktRxCtrl *message); -size_t wifi_pkt_rx_ctrl__pack - (const WifiPktRxCtrl *message, +/* RpcReqOTAEnd methods */ +void rpc__req__otaend__init + (RpcReqOTAEnd *message); +size_t rpc__req__otaend__get_packed_size + (const RpcReqOTAEnd *message); +size_t rpc__req__otaend__pack + (const RpcReqOTAEnd *message, uint8_t *out); -size_t wifi_pkt_rx_ctrl__pack_to_buffer - (const WifiPktRxCtrl *message, +size_t rpc__req__otaend__pack_to_buffer + (const RpcReqOTAEnd *message, ProtobufCBuffer *buffer); -WifiPktRxCtrl * - wifi_pkt_rx_ctrl__unpack +RpcReqOTAEnd * + rpc__req__otaend__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_pkt_rx_ctrl__free_unpacked - (WifiPktRxCtrl *message, +void rpc__req__otaend__free_unpacked + (RpcReqOTAEnd *message, ProtobufCAllocator *allocator); -/* WifiPromiscuousPkt methods */ -void wifi_promiscuous_pkt__init - (WifiPromiscuousPkt *message); -size_t wifi_promiscuous_pkt__get_packed_size - (const WifiPromiscuousPkt *message); -size_t wifi_promiscuous_pkt__pack - (const WifiPromiscuousPkt *message, +/* RpcRespOTAEnd methods */ +void rpc__resp__otaend__init + (RpcRespOTAEnd *message); +size_t rpc__resp__otaend__get_packed_size + (const RpcRespOTAEnd *message); +size_t rpc__resp__otaend__pack + (const RpcRespOTAEnd *message, uint8_t *out); -size_t wifi_promiscuous_pkt__pack_to_buffer - (const WifiPromiscuousPkt *message, +size_t rpc__resp__otaend__pack_to_buffer + (const RpcRespOTAEnd *message, ProtobufCBuffer *buffer); -WifiPromiscuousPkt * - wifi_promiscuous_pkt__unpack +RpcRespOTAEnd * + rpc__resp__otaend__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_promiscuous_pkt__free_unpacked - (WifiPromiscuousPkt *message, +void rpc__resp__otaend__free_unpacked + (RpcRespOTAEnd *message, ProtobufCAllocator *allocator); -/* WifiPromiscuousFilter methods */ -void wifi_promiscuous_filter__init - (WifiPromiscuousFilter *message); -size_t wifi_promiscuous_filter__get_packed_size - (const WifiPromiscuousFilter *message); -size_t wifi_promiscuous_filter__pack - (const WifiPromiscuousFilter *message, +/* RpcReqWifiSetMaxTxPower methods */ +void rpc__req__wifi_set_max_tx_power__init + (RpcReqWifiSetMaxTxPower *message); +size_t rpc__req__wifi_set_max_tx_power__get_packed_size + (const RpcReqWifiSetMaxTxPower *message); +size_t rpc__req__wifi_set_max_tx_power__pack + (const RpcReqWifiSetMaxTxPower *message, uint8_t *out); -size_t wifi_promiscuous_filter__pack_to_buffer - (const WifiPromiscuousFilter *message, +size_t rpc__req__wifi_set_max_tx_power__pack_to_buffer + (const RpcReqWifiSetMaxTxPower *message, ProtobufCBuffer *buffer); -WifiPromiscuousFilter * - wifi_promiscuous_filter__unpack +RpcReqWifiSetMaxTxPower * + rpc__req__wifi_set_max_tx_power__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_promiscuous_filter__free_unpacked - (WifiPromiscuousFilter *message, +void rpc__req__wifi_set_max_tx_power__free_unpacked + (RpcReqWifiSetMaxTxPower *message, ProtobufCAllocator *allocator); -/* WifiCsiConfig methods */ -void wifi_csi_config__init - (WifiCsiConfig *message); -size_t wifi_csi_config__get_packed_size - (const WifiCsiConfig *message); -size_t wifi_csi_config__pack - (const WifiCsiConfig *message, +/* RpcRespWifiSetMaxTxPower methods */ +void rpc__resp__wifi_set_max_tx_power__init + (RpcRespWifiSetMaxTxPower *message); +size_t rpc__resp__wifi_set_max_tx_power__get_packed_size + (const RpcRespWifiSetMaxTxPower *message); +size_t rpc__resp__wifi_set_max_tx_power__pack + (const RpcRespWifiSetMaxTxPower *message, uint8_t *out); -size_t wifi_csi_config__pack_to_buffer - (const WifiCsiConfig *message, +size_t rpc__resp__wifi_set_max_tx_power__pack_to_buffer + (const RpcRespWifiSetMaxTxPower *message, ProtobufCBuffer *buffer); -WifiCsiConfig * - wifi_csi_config__unpack +RpcRespWifiSetMaxTxPower * + rpc__resp__wifi_set_max_tx_power__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_csi_config__free_unpacked - (WifiCsiConfig *message, +void rpc__resp__wifi_set_max_tx_power__free_unpacked + (RpcRespWifiSetMaxTxPower *message, ProtobufCAllocator *allocator); -/* WifiCsiInfo methods */ -void wifi_csi_info__init - (WifiCsiInfo *message); -size_t wifi_csi_info__get_packed_size - (const WifiCsiInfo *message); -size_t wifi_csi_info__pack - (const WifiCsiInfo *message, +/* RpcReqWifiGetMaxTxPower methods */ +void rpc__req__wifi_get_max_tx_power__init + (RpcReqWifiGetMaxTxPower *message); +size_t rpc__req__wifi_get_max_tx_power__get_packed_size + (const RpcReqWifiGetMaxTxPower *message); +size_t rpc__req__wifi_get_max_tx_power__pack + (const RpcReqWifiGetMaxTxPower *message, uint8_t *out); -size_t wifi_csi_info__pack_to_buffer - (const WifiCsiInfo *message, +size_t rpc__req__wifi_get_max_tx_power__pack_to_buffer + (const RpcReqWifiGetMaxTxPower *message, ProtobufCBuffer *buffer); -WifiCsiInfo * - wifi_csi_info__unpack +RpcReqWifiGetMaxTxPower * + rpc__req__wifi_get_max_tx_power__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_csi_info__free_unpacked - (WifiCsiInfo *message, +void rpc__req__wifi_get_max_tx_power__free_unpacked + (RpcReqWifiGetMaxTxPower *message, ProtobufCAllocator *allocator); -/* WifiAntGpio methods */ -void wifi_ant_gpio__init - (WifiAntGpio *message); -size_t wifi_ant_gpio__get_packed_size - (const WifiAntGpio *message); -size_t wifi_ant_gpio__pack - (const WifiAntGpio *message, +/* RpcRespWifiGetMaxTxPower methods */ +void rpc__resp__wifi_get_max_tx_power__init + (RpcRespWifiGetMaxTxPower *message); +size_t rpc__resp__wifi_get_max_tx_power__get_packed_size + (const RpcRespWifiGetMaxTxPower *message); +size_t rpc__resp__wifi_get_max_tx_power__pack + (const RpcRespWifiGetMaxTxPower *message, uint8_t *out); -size_t wifi_ant_gpio__pack_to_buffer - (const WifiAntGpio *message, +size_t rpc__resp__wifi_get_max_tx_power__pack_to_buffer + (const RpcRespWifiGetMaxTxPower *message, ProtobufCBuffer *buffer); -WifiAntGpio * - wifi_ant_gpio__unpack +RpcRespWifiGetMaxTxPower * + rpc__resp__wifi_get_max_tx_power__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_ant_gpio__free_unpacked - (WifiAntGpio *message, +void rpc__resp__wifi_get_max_tx_power__free_unpacked + (RpcRespWifiGetMaxTxPower *message, ProtobufCAllocator *allocator); -/* WifiAntGpioConfig methods */ -void wifi_ant_gpio_config__init - (WifiAntGpioConfig *message); -size_t wifi_ant_gpio_config__get_packed_size - (const WifiAntGpioConfig *message); -size_t wifi_ant_gpio_config__pack - (const WifiAntGpioConfig *message, +/* RpcReqConfigHeartbeat methods */ +void rpc__req__config_heartbeat__init + (RpcReqConfigHeartbeat *message); +size_t rpc__req__config_heartbeat__get_packed_size + (const RpcReqConfigHeartbeat *message); +size_t rpc__req__config_heartbeat__pack + (const RpcReqConfigHeartbeat *message, uint8_t *out); -size_t wifi_ant_gpio_config__pack_to_buffer - (const WifiAntGpioConfig *message, +size_t rpc__req__config_heartbeat__pack_to_buffer + (const RpcReqConfigHeartbeat *message, ProtobufCBuffer *buffer); -WifiAntGpioConfig * - wifi_ant_gpio_config__unpack +RpcReqConfigHeartbeat * + rpc__req__config_heartbeat__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_ant_gpio_config__free_unpacked - (WifiAntGpioConfig *message, +void rpc__req__config_heartbeat__free_unpacked + (RpcReqConfigHeartbeat *message, ProtobufCAllocator *allocator); -/* WifiAntConfig methods */ -void wifi_ant_config__init - (WifiAntConfig *message); -size_t wifi_ant_config__get_packed_size - (const WifiAntConfig *message); -size_t wifi_ant_config__pack - (const WifiAntConfig *message, +/* RpcRespConfigHeartbeat methods */ +void rpc__resp__config_heartbeat__init + (RpcRespConfigHeartbeat *message); +size_t rpc__resp__config_heartbeat__get_packed_size + (const RpcRespConfigHeartbeat *message); +size_t rpc__resp__config_heartbeat__pack + (const RpcRespConfigHeartbeat *message, uint8_t *out); -size_t wifi_ant_config__pack_to_buffer - (const WifiAntConfig *message, +size_t rpc__resp__config_heartbeat__pack_to_buffer + (const RpcRespConfigHeartbeat *message, ProtobufCBuffer *buffer); -WifiAntConfig * - wifi_ant_config__unpack +RpcRespConfigHeartbeat * + rpc__resp__config_heartbeat__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_ant_config__free_unpacked - (WifiAntConfig *message, +void rpc__resp__config_heartbeat__free_unpacked + (RpcRespConfigHeartbeat *message, ProtobufCAllocator *allocator); -/* WifiActionTxReq methods */ -void wifi_action_tx_req__init - (WifiActionTxReq *message); -size_t wifi_action_tx_req__get_packed_size - (const WifiActionTxReq *message); -size_t wifi_action_tx_req__pack - (const WifiActionTxReq *message, +/* RpcReqWifiInit methods */ +void rpc__req__wifi_init__init + (RpcReqWifiInit *message); +size_t rpc__req__wifi_init__get_packed_size + (const RpcReqWifiInit *message); +size_t rpc__req__wifi_init__pack + (const RpcReqWifiInit *message, uint8_t *out); -size_t wifi_action_tx_req__pack_to_buffer - (const WifiActionTxReq *message, +size_t rpc__req__wifi_init__pack_to_buffer + (const RpcReqWifiInit *message, ProtobufCBuffer *buffer); -WifiActionTxReq * - wifi_action_tx_req__unpack +RpcReqWifiInit * + rpc__req__wifi_init__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_action_tx_req__free_unpacked - (WifiActionTxReq *message, +void rpc__req__wifi_init__free_unpacked + (RpcReqWifiInit *message, ProtobufCAllocator *allocator); -/* WifiFtmInitiatorCfg methods */ -void wifi_ftm_initiator_cfg__init - (WifiFtmInitiatorCfg *message); -size_t wifi_ftm_initiator_cfg__get_packed_size - (const WifiFtmInitiatorCfg *message); -size_t wifi_ftm_initiator_cfg__pack - (const WifiFtmInitiatorCfg *message, +/* RpcRespWifiInit methods */ +void rpc__resp__wifi_init__init + (RpcRespWifiInit *message); +size_t rpc__resp__wifi_init__get_packed_size + (const RpcRespWifiInit *message); +size_t rpc__resp__wifi_init__pack + (const RpcRespWifiInit *message, uint8_t *out); -size_t wifi_ftm_initiator_cfg__pack_to_buffer - (const WifiFtmInitiatorCfg *message, +size_t rpc__resp__wifi_init__pack_to_buffer + (const RpcRespWifiInit *message, ProtobufCBuffer *buffer); -WifiFtmInitiatorCfg * - wifi_ftm_initiator_cfg__unpack +RpcRespWifiInit * + rpc__resp__wifi_init__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_ftm_initiator_cfg__free_unpacked - (WifiFtmInitiatorCfg *message, +void rpc__resp__wifi_init__free_unpacked + (RpcRespWifiInit *message, ProtobufCAllocator *allocator); -/* WifiEventStaScanDone methods */ -void wifi_event_sta_scan_done__init - (WifiEventStaScanDone *message); -size_t wifi_event_sta_scan_done__get_packed_size - (const WifiEventStaScanDone *message); -size_t wifi_event_sta_scan_done__pack - (const WifiEventStaScanDone *message, +/* RpcReqWifiDeinit methods */ +void rpc__req__wifi_deinit__init + (RpcReqWifiDeinit *message); +size_t rpc__req__wifi_deinit__get_packed_size + (const RpcReqWifiDeinit *message); +size_t rpc__req__wifi_deinit__pack + (const RpcReqWifiDeinit *message, uint8_t *out); -size_t wifi_event_sta_scan_done__pack_to_buffer - (const WifiEventStaScanDone *message, +size_t rpc__req__wifi_deinit__pack_to_buffer + (const RpcReqWifiDeinit *message, ProtobufCBuffer *buffer); -WifiEventStaScanDone * - wifi_event_sta_scan_done__unpack +RpcReqWifiDeinit * + rpc__req__wifi_deinit__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_event_sta_scan_done__free_unpacked - (WifiEventStaScanDone *message, +void rpc__req__wifi_deinit__free_unpacked + (RpcReqWifiDeinit *message, ProtobufCAllocator *allocator); -/* WifiEventStaConnected methods */ -void wifi_event_sta_connected__init - (WifiEventStaConnected *message); -size_t wifi_event_sta_connected__get_packed_size - (const WifiEventStaConnected *message); -size_t wifi_event_sta_connected__pack - (const WifiEventStaConnected *message, +/* RpcRespWifiDeinit methods */ +void rpc__resp__wifi_deinit__init + (RpcRespWifiDeinit *message); +size_t rpc__resp__wifi_deinit__get_packed_size + (const RpcRespWifiDeinit *message); +size_t rpc__resp__wifi_deinit__pack + (const RpcRespWifiDeinit *message, uint8_t *out); -size_t wifi_event_sta_connected__pack_to_buffer - (const WifiEventStaConnected *message, +size_t rpc__resp__wifi_deinit__pack_to_buffer + (const RpcRespWifiDeinit *message, ProtobufCBuffer *buffer); -WifiEventStaConnected * - wifi_event_sta_connected__unpack +RpcRespWifiDeinit * + rpc__resp__wifi_deinit__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_event_sta_connected__free_unpacked - (WifiEventStaConnected *message, +void rpc__resp__wifi_deinit__free_unpacked + (RpcRespWifiDeinit *message, ProtobufCAllocator *allocator); -/* WifiEventStaDisconnected methods */ -void wifi_event_sta_disconnected__init - (WifiEventStaDisconnected *message); -size_t wifi_event_sta_disconnected__get_packed_size - (const WifiEventStaDisconnected *message); -size_t wifi_event_sta_disconnected__pack - (const WifiEventStaDisconnected *message, +/* RpcReqWifiSetConfig methods */ +void rpc__req__wifi_set_config__init + (RpcReqWifiSetConfig *message); +size_t rpc__req__wifi_set_config__get_packed_size + (const RpcReqWifiSetConfig *message); +size_t rpc__req__wifi_set_config__pack + (const RpcReqWifiSetConfig *message, uint8_t *out); -size_t wifi_event_sta_disconnected__pack_to_buffer - (const WifiEventStaDisconnected *message, +size_t rpc__req__wifi_set_config__pack_to_buffer + (const RpcReqWifiSetConfig *message, ProtobufCBuffer *buffer); -WifiEventStaDisconnected * - wifi_event_sta_disconnected__unpack +RpcReqWifiSetConfig * + rpc__req__wifi_set_config__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_event_sta_disconnected__free_unpacked - (WifiEventStaDisconnected *message, +void rpc__req__wifi_set_config__free_unpacked + (RpcReqWifiSetConfig *message, ProtobufCAllocator *allocator); -/* WifiEventStaAuthmodeChange methods */ -void wifi_event_sta_authmode_change__init - (WifiEventStaAuthmodeChange *message); -size_t wifi_event_sta_authmode_change__get_packed_size - (const WifiEventStaAuthmodeChange *message); -size_t wifi_event_sta_authmode_change__pack - (const WifiEventStaAuthmodeChange *message, +/* RpcRespWifiSetConfig methods */ +void rpc__resp__wifi_set_config__init + (RpcRespWifiSetConfig *message); +size_t rpc__resp__wifi_set_config__get_packed_size + (const RpcRespWifiSetConfig *message); +size_t rpc__resp__wifi_set_config__pack + (const RpcRespWifiSetConfig *message, uint8_t *out); -size_t wifi_event_sta_authmode_change__pack_to_buffer - (const WifiEventStaAuthmodeChange *message, +size_t rpc__resp__wifi_set_config__pack_to_buffer + (const RpcRespWifiSetConfig *message, ProtobufCBuffer *buffer); -WifiEventStaAuthmodeChange * - wifi_event_sta_authmode_change__unpack +RpcRespWifiSetConfig * + rpc__resp__wifi_set_config__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_event_sta_authmode_change__free_unpacked - (WifiEventStaAuthmodeChange *message, +void rpc__resp__wifi_set_config__free_unpacked + (RpcRespWifiSetConfig *message, ProtobufCAllocator *allocator); -/* WifiEventStaWpsErPin methods */ -void wifi_event_sta_wps_er_pin__init - (WifiEventStaWpsErPin *message); -size_t wifi_event_sta_wps_er_pin__get_packed_size - (const WifiEventStaWpsErPin *message); -size_t wifi_event_sta_wps_er_pin__pack - (const WifiEventStaWpsErPin *message, +/* RpcReqWifiGetConfig methods */ +void rpc__req__wifi_get_config__init + (RpcReqWifiGetConfig *message); +size_t rpc__req__wifi_get_config__get_packed_size + (const RpcReqWifiGetConfig *message); +size_t rpc__req__wifi_get_config__pack + (const RpcReqWifiGetConfig *message, uint8_t *out); -size_t wifi_event_sta_wps_er_pin__pack_to_buffer - (const WifiEventStaWpsErPin *message, +size_t rpc__req__wifi_get_config__pack_to_buffer + (const RpcReqWifiGetConfig *message, ProtobufCBuffer *buffer); -WifiEventStaWpsErPin * - wifi_event_sta_wps_er_pin__unpack +RpcReqWifiGetConfig * + rpc__req__wifi_get_config__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_event_sta_wps_er_pin__free_unpacked - (WifiEventStaWpsErPin *message, +void rpc__req__wifi_get_config__free_unpacked + (RpcReqWifiGetConfig *message, ProtobufCAllocator *allocator); -/* ApCred methods */ -void ap_cred__init - (ApCred *message); -size_t ap_cred__get_packed_size - (const ApCred *message); -size_t ap_cred__pack - (const ApCred *message, +/* RpcRespWifiGetConfig methods */ +void rpc__resp__wifi_get_config__init + (RpcRespWifiGetConfig *message); +size_t rpc__resp__wifi_get_config__get_packed_size + (const RpcRespWifiGetConfig *message); +size_t rpc__resp__wifi_get_config__pack + (const RpcRespWifiGetConfig *message, uint8_t *out); -size_t ap_cred__pack_to_buffer - (const ApCred *message, +size_t rpc__resp__wifi_get_config__pack_to_buffer + (const RpcRespWifiGetConfig *message, ProtobufCBuffer *buffer); -ApCred * - ap_cred__unpack +RpcRespWifiGetConfig * + rpc__resp__wifi_get_config__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void ap_cred__free_unpacked - (ApCred *message, +void rpc__resp__wifi_get_config__free_unpacked + (RpcRespWifiGetConfig *message, ProtobufCAllocator *allocator); -/* WifiEventStaWpsErSuccess methods */ -void wifi_event_sta_wps_er_success__init - (WifiEventStaWpsErSuccess *message); -size_t wifi_event_sta_wps_er_success__get_packed_size - (const WifiEventStaWpsErSuccess *message); -size_t wifi_event_sta_wps_er_success__pack - (const WifiEventStaWpsErSuccess *message, +/* RpcReqWifiConnect methods */ +void rpc__req__wifi_connect__init + (RpcReqWifiConnect *message); +size_t rpc__req__wifi_connect__get_packed_size + (const RpcReqWifiConnect *message); +size_t rpc__req__wifi_connect__pack + (const RpcReqWifiConnect *message, uint8_t *out); -size_t wifi_event_sta_wps_er_success__pack_to_buffer - (const WifiEventStaWpsErSuccess *message, +size_t rpc__req__wifi_connect__pack_to_buffer + (const RpcReqWifiConnect *message, ProtobufCBuffer *buffer); -WifiEventStaWpsErSuccess * - wifi_event_sta_wps_er_success__unpack +RpcReqWifiConnect * + rpc__req__wifi_connect__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_event_sta_wps_er_success__free_unpacked - (WifiEventStaWpsErSuccess *message, +void rpc__req__wifi_connect__free_unpacked + (RpcReqWifiConnect *message, ProtobufCAllocator *allocator); -/* WifiEventApProbeReqRx methods */ -void wifi_event_ap_probe_req_rx__init - (WifiEventApProbeReqRx *message); -size_t wifi_event_ap_probe_req_rx__get_packed_size - (const WifiEventApProbeReqRx *message); -size_t wifi_event_ap_probe_req_rx__pack - (const WifiEventApProbeReqRx *message, +/* RpcRespWifiConnect methods */ +void rpc__resp__wifi_connect__init + (RpcRespWifiConnect *message); +size_t rpc__resp__wifi_connect__get_packed_size + (const RpcRespWifiConnect *message); +size_t rpc__resp__wifi_connect__pack + (const RpcRespWifiConnect *message, uint8_t *out); -size_t wifi_event_ap_probe_req_rx__pack_to_buffer - (const WifiEventApProbeReqRx *message, +size_t rpc__resp__wifi_connect__pack_to_buffer + (const RpcRespWifiConnect *message, ProtobufCBuffer *buffer); -WifiEventApProbeReqRx * - wifi_event_ap_probe_req_rx__unpack +RpcRespWifiConnect * + rpc__resp__wifi_connect__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_event_ap_probe_req_rx__free_unpacked - (WifiEventApProbeReqRx *message, +void rpc__resp__wifi_connect__free_unpacked + (RpcRespWifiConnect *message, ProtobufCAllocator *allocator); -/* WifiEventBssRssiLow methods */ -void wifi_event_bss_rssi_low__init - (WifiEventBssRssiLow *message); -size_t wifi_event_bss_rssi_low__get_packed_size - (const WifiEventBssRssiLow *message); -size_t wifi_event_bss_rssi_low__pack - (const WifiEventBssRssiLow *message, +/* RpcReqWifiDisconnect methods */ +void rpc__req__wifi_disconnect__init + (RpcReqWifiDisconnect *message); +size_t rpc__req__wifi_disconnect__get_packed_size + (const RpcReqWifiDisconnect *message); +size_t rpc__req__wifi_disconnect__pack + (const RpcReqWifiDisconnect *message, uint8_t *out); -size_t wifi_event_bss_rssi_low__pack_to_buffer - (const WifiEventBssRssiLow *message, +size_t rpc__req__wifi_disconnect__pack_to_buffer + (const RpcReqWifiDisconnect *message, ProtobufCBuffer *buffer); -WifiEventBssRssiLow * - wifi_event_bss_rssi_low__unpack +RpcReqWifiDisconnect * + rpc__req__wifi_disconnect__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_event_bss_rssi_low__free_unpacked - (WifiEventBssRssiLow *message, +void rpc__req__wifi_disconnect__free_unpacked + (RpcReqWifiDisconnect *message, ProtobufCAllocator *allocator); -/* WifiFtmReportEntry methods */ -void wifi_ftm_report_entry__init - (WifiFtmReportEntry *message); -size_t wifi_ftm_report_entry__get_packed_size - (const WifiFtmReportEntry *message); -size_t wifi_ftm_report_entry__pack - (const WifiFtmReportEntry *message, +/* RpcRespWifiDisconnect methods */ +void rpc__resp__wifi_disconnect__init + (RpcRespWifiDisconnect *message); +size_t rpc__resp__wifi_disconnect__get_packed_size + (const RpcRespWifiDisconnect *message); +size_t rpc__resp__wifi_disconnect__pack + (const RpcRespWifiDisconnect *message, uint8_t *out); -size_t wifi_ftm_report_entry__pack_to_buffer - (const WifiFtmReportEntry *message, +size_t rpc__resp__wifi_disconnect__pack_to_buffer + (const RpcRespWifiDisconnect *message, ProtobufCBuffer *buffer); -WifiFtmReportEntry * - wifi_ftm_report_entry__unpack +RpcRespWifiDisconnect * + rpc__resp__wifi_disconnect__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_ftm_report_entry__free_unpacked - (WifiFtmReportEntry *message, +void rpc__resp__wifi_disconnect__free_unpacked + (RpcRespWifiDisconnect *message, ProtobufCAllocator *allocator); -/* WifiEventFtmReport methods */ -void wifi_event_ftm_report__init - (WifiEventFtmReport *message); -size_t wifi_event_ftm_report__get_packed_size - (const WifiEventFtmReport *message); -size_t wifi_event_ftm_report__pack - (const WifiEventFtmReport *message, +/* RpcReqWifiStart methods */ +void rpc__req__wifi_start__init + (RpcReqWifiStart *message); +size_t rpc__req__wifi_start__get_packed_size + (const RpcReqWifiStart *message); +size_t rpc__req__wifi_start__pack + (const RpcReqWifiStart *message, uint8_t *out); -size_t wifi_event_ftm_report__pack_to_buffer - (const WifiEventFtmReport *message, +size_t rpc__req__wifi_start__pack_to_buffer + (const RpcReqWifiStart *message, ProtobufCBuffer *buffer); -WifiEventFtmReport * - wifi_event_ftm_report__unpack +RpcReqWifiStart * + rpc__req__wifi_start__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_event_ftm_report__free_unpacked - (WifiEventFtmReport *message, +void rpc__req__wifi_start__free_unpacked + (RpcReqWifiStart *message, ProtobufCAllocator *allocator); -/* WifiEventActionTxStatus methods */ -void wifi_event_action_tx_status__init - (WifiEventActionTxStatus *message); -size_t wifi_event_action_tx_status__get_packed_size - (const WifiEventActionTxStatus *message); -size_t wifi_event_action_tx_status__pack - (const WifiEventActionTxStatus *message, +/* RpcRespWifiStart methods */ +void rpc__resp__wifi_start__init + (RpcRespWifiStart *message); +size_t rpc__resp__wifi_start__get_packed_size + (const RpcRespWifiStart *message); +size_t rpc__resp__wifi_start__pack + (const RpcRespWifiStart *message, uint8_t *out); -size_t wifi_event_action_tx_status__pack_to_buffer - (const WifiEventActionTxStatus *message, +size_t rpc__resp__wifi_start__pack_to_buffer + (const RpcRespWifiStart *message, ProtobufCBuffer *buffer); -WifiEventActionTxStatus * - wifi_event_action_tx_status__unpack +RpcRespWifiStart * + rpc__resp__wifi_start__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_event_action_tx_status__free_unpacked - (WifiEventActionTxStatus *message, +void rpc__resp__wifi_start__free_unpacked + (RpcRespWifiStart *message, ProtobufCAllocator *allocator); -/* WifiEventRocDone methods */ -void wifi_event_roc_done__init - (WifiEventRocDone *message); -size_t wifi_event_roc_done__get_packed_size - (const WifiEventRocDone *message); -size_t wifi_event_roc_done__pack - (const WifiEventRocDone *message, +/* RpcReqWifiStop methods */ +void rpc__req__wifi_stop__init + (RpcReqWifiStop *message); +size_t rpc__req__wifi_stop__get_packed_size + (const RpcReqWifiStop *message); +size_t rpc__req__wifi_stop__pack + (const RpcReqWifiStop *message, uint8_t *out); -size_t wifi_event_roc_done__pack_to_buffer - (const WifiEventRocDone *message, +size_t rpc__req__wifi_stop__pack_to_buffer + (const RpcReqWifiStop *message, ProtobufCBuffer *buffer); -WifiEventRocDone * - wifi_event_roc_done__unpack +RpcReqWifiStop * + rpc__req__wifi_stop__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_event_roc_done__free_unpacked - (WifiEventRocDone *message, +void rpc__req__wifi_stop__free_unpacked + (RpcReqWifiStop *message, ProtobufCAllocator *allocator); -/* WifiEventApWpsRgPin methods */ -void wifi_event_ap_wps_rg_pin__init - (WifiEventApWpsRgPin *message); -size_t wifi_event_ap_wps_rg_pin__get_packed_size - (const WifiEventApWpsRgPin *message); -size_t wifi_event_ap_wps_rg_pin__pack - (const WifiEventApWpsRgPin *message, +/* RpcRespWifiStop methods */ +void rpc__resp__wifi_stop__init + (RpcRespWifiStop *message); +size_t rpc__resp__wifi_stop__get_packed_size + (const RpcRespWifiStop *message); +size_t rpc__resp__wifi_stop__pack + (const RpcRespWifiStop *message, uint8_t *out); -size_t wifi_event_ap_wps_rg_pin__pack_to_buffer - (const WifiEventApWpsRgPin *message, +size_t rpc__resp__wifi_stop__pack_to_buffer + (const RpcRespWifiStop *message, ProtobufCBuffer *buffer); -WifiEventApWpsRgPin * - wifi_event_ap_wps_rg_pin__unpack +RpcRespWifiStop * + rpc__resp__wifi_stop__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_event_ap_wps_rg_pin__free_unpacked - (WifiEventApWpsRgPin *message, +void rpc__resp__wifi_stop__free_unpacked + (RpcRespWifiStop *message, ProtobufCAllocator *allocator); -/* WifiEventApWpsRgFailReason methods */ -void wifi_event_ap_wps_rg_fail_reason__init - (WifiEventApWpsRgFailReason *message); -size_t wifi_event_ap_wps_rg_fail_reason__get_packed_size - (const WifiEventApWpsRgFailReason *message); -size_t wifi_event_ap_wps_rg_fail_reason__pack - (const WifiEventApWpsRgFailReason *message, +/* RpcReqWifiScanStart methods */ +void rpc__req__wifi_scan_start__init + (RpcReqWifiScanStart *message); +size_t rpc__req__wifi_scan_start__get_packed_size + (const RpcReqWifiScanStart *message); +size_t rpc__req__wifi_scan_start__pack + (const RpcReqWifiScanStart *message, uint8_t *out); -size_t wifi_event_ap_wps_rg_fail_reason__pack_to_buffer - (const WifiEventApWpsRgFailReason *message, +size_t rpc__req__wifi_scan_start__pack_to_buffer + (const RpcReqWifiScanStart *message, ProtobufCBuffer *buffer); -WifiEventApWpsRgFailReason * - wifi_event_ap_wps_rg_fail_reason__unpack +RpcReqWifiScanStart * + rpc__req__wifi_scan_start__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_event_ap_wps_rg_fail_reason__free_unpacked - (WifiEventApWpsRgFailReason *message, +void rpc__req__wifi_scan_start__free_unpacked + (RpcReqWifiScanStart *message, ProtobufCAllocator *allocator); -/* WifiEventApWpsRgSuccess methods */ -void wifi_event_ap_wps_rg_success__init - (WifiEventApWpsRgSuccess *message); -size_t wifi_event_ap_wps_rg_success__get_packed_size - (const WifiEventApWpsRgSuccess *message); -size_t wifi_event_ap_wps_rg_success__pack - (const WifiEventApWpsRgSuccess *message, +/* RpcRespWifiScanStart methods */ +void rpc__resp__wifi_scan_start__init + (RpcRespWifiScanStart *message); +size_t rpc__resp__wifi_scan_start__get_packed_size + (const RpcRespWifiScanStart *message); +size_t rpc__resp__wifi_scan_start__pack + (const RpcRespWifiScanStart *message, uint8_t *out); -size_t wifi_event_ap_wps_rg_success__pack_to_buffer - (const WifiEventApWpsRgSuccess *message, +size_t rpc__resp__wifi_scan_start__pack_to_buffer + (const RpcRespWifiScanStart *message, ProtobufCBuffer *buffer); -WifiEventApWpsRgSuccess * - wifi_event_ap_wps_rg_success__unpack +RpcRespWifiScanStart * + rpc__resp__wifi_scan_start__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_event_ap_wps_rg_success__free_unpacked - (WifiEventApWpsRgSuccess *message, +void rpc__resp__wifi_scan_start__free_unpacked + (RpcRespWifiScanStart *message, ProtobufCAllocator *allocator); -/* WifiProtocols methods */ -void wifi_protocols__init - (WifiProtocols *message); -size_t wifi_protocols__get_packed_size - (const WifiProtocols *message); -size_t wifi_protocols__pack - (const WifiProtocols *message, +/* RpcReqWifiScanStop methods */ +void rpc__req__wifi_scan_stop__init + (RpcReqWifiScanStop *message); +size_t rpc__req__wifi_scan_stop__get_packed_size + (const RpcReqWifiScanStop *message); +size_t rpc__req__wifi_scan_stop__pack + (const RpcReqWifiScanStop *message, uint8_t *out); -size_t wifi_protocols__pack_to_buffer - (const WifiProtocols *message, +size_t rpc__req__wifi_scan_stop__pack_to_buffer + (const RpcReqWifiScanStop *message, ProtobufCBuffer *buffer); -WifiProtocols * - wifi_protocols__unpack +RpcReqWifiScanStop * + rpc__req__wifi_scan_stop__unpack (ProtobufCAllocator *allocator, - size_t len, - const uint8_t *data); -void wifi_protocols__free_unpacked - (WifiProtocols *message, - ProtobufCAllocator *allocator); -/* WifiBandwidths methods */ -void wifi_bandwidths__init - (WifiBandwidths *message); -size_t wifi_bandwidths__get_packed_size - (const WifiBandwidths *message); -size_t wifi_bandwidths__pack - (const WifiBandwidths *message, + size_t len, + const uint8_t *data); +void rpc__req__wifi_scan_stop__free_unpacked + (RpcReqWifiScanStop *message, + ProtobufCAllocator *allocator); +/* RpcRespWifiScanStop methods */ +void rpc__resp__wifi_scan_stop__init + (RpcRespWifiScanStop *message); +size_t rpc__resp__wifi_scan_stop__get_packed_size + (const RpcRespWifiScanStop *message); +size_t rpc__resp__wifi_scan_stop__pack + (const RpcRespWifiScanStop *message, uint8_t *out); -size_t wifi_bandwidths__pack_to_buffer - (const WifiBandwidths *message, +size_t rpc__resp__wifi_scan_stop__pack_to_buffer + (const RpcRespWifiScanStop *message, ProtobufCBuffer *buffer); -WifiBandwidths * - wifi_bandwidths__unpack +RpcRespWifiScanStop * + rpc__resp__wifi_scan_stop__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_bandwidths__free_unpacked - (WifiBandwidths *message, +void rpc__resp__wifi_scan_stop__free_unpacked + (RpcRespWifiScanStop *message, ProtobufCAllocator *allocator); -/* WifiItwtSetupConfig methods */ -void wifi_itwt_setup_config__init - (WifiItwtSetupConfig *message); -size_t wifi_itwt_setup_config__get_packed_size - (const WifiItwtSetupConfig *message); -size_t wifi_itwt_setup_config__pack - (const WifiItwtSetupConfig *message, +/* RpcReqWifiScanGetApNum methods */ +void rpc__req__wifi_scan_get_ap_num__init + (RpcReqWifiScanGetApNum *message); +size_t rpc__req__wifi_scan_get_ap_num__get_packed_size + (const RpcReqWifiScanGetApNum *message); +size_t rpc__req__wifi_scan_get_ap_num__pack + (const RpcReqWifiScanGetApNum *message, uint8_t *out); -size_t wifi_itwt_setup_config__pack_to_buffer - (const WifiItwtSetupConfig *message, +size_t rpc__req__wifi_scan_get_ap_num__pack_to_buffer + (const RpcReqWifiScanGetApNum *message, ProtobufCBuffer *buffer); -WifiItwtSetupConfig * - wifi_itwt_setup_config__unpack +RpcReqWifiScanGetApNum * + rpc__req__wifi_scan_get_ap_num__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_itwt_setup_config__free_unpacked - (WifiItwtSetupConfig *message, +void rpc__req__wifi_scan_get_ap_num__free_unpacked + (RpcReqWifiScanGetApNum *message, ProtobufCAllocator *allocator); -/* WifiTwtConfig methods */ -void wifi_twt_config__init - (WifiTwtConfig *message); -size_t wifi_twt_config__get_packed_size - (const WifiTwtConfig *message); -size_t wifi_twt_config__pack - (const WifiTwtConfig *message, +/* RpcRespWifiScanGetApNum methods */ +void rpc__resp__wifi_scan_get_ap_num__init + (RpcRespWifiScanGetApNum *message); +size_t rpc__resp__wifi_scan_get_ap_num__get_packed_size + (const RpcRespWifiScanGetApNum *message); +size_t rpc__resp__wifi_scan_get_ap_num__pack + (const RpcRespWifiScanGetApNum *message, uint8_t *out); -size_t wifi_twt_config__pack_to_buffer - (const WifiTwtConfig *message, +size_t rpc__resp__wifi_scan_get_ap_num__pack_to_buffer + (const RpcRespWifiScanGetApNum *message, ProtobufCBuffer *buffer); -WifiTwtConfig * - wifi_twt_config__unpack +RpcRespWifiScanGetApNum * + rpc__resp__wifi_scan_get_ap_num__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void wifi_twt_config__free_unpacked - (WifiTwtConfig *message, +void rpc__resp__wifi_scan_get_ap_num__free_unpacked + (RpcRespWifiScanGetApNum *message, ProtobufCAllocator *allocator); -/* ConnectedSTAList methods */ -void connected_stalist__init - (ConnectedSTAList *message); -size_t connected_stalist__get_packed_size - (const ConnectedSTAList *message); -size_t connected_stalist__pack - (const ConnectedSTAList *message, +/* RpcReqWifiScanGetApRecords methods */ +void rpc__req__wifi_scan_get_ap_records__init + (RpcReqWifiScanGetApRecords *message); +size_t rpc__req__wifi_scan_get_ap_records__get_packed_size + (const RpcReqWifiScanGetApRecords *message); +size_t rpc__req__wifi_scan_get_ap_records__pack + (const RpcReqWifiScanGetApRecords *message, uint8_t *out); -size_t connected_stalist__pack_to_buffer - (const ConnectedSTAList *message, +size_t rpc__req__wifi_scan_get_ap_records__pack_to_buffer + (const RpcReqWifiScanGetApRecords *message, ProtobufCBuffer *buffer); -ConnectedSTAList * - connected_stalist__unpack +RpcReqWifiScanGetApRecords * + rpc__req__wifi_scan_get_ap_records__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void connected_stalist__free_unpacked - (ConnectedSTAList *message, +void rpc__req__wifi_scan_get_ap_records__free_unpacked + (RpcReqWifiScanGetApRecords *message, ProtobufCAllocator *allocator); -/* RpcReqGetMacAddress methods */ -void rpc__req__get_mac_address__init - (RpcReqGetMacAddress *message); -size_t rpc__req__get_mac_address__get_packed_size - (const RpcReqGetMacAddress *message); -size_t rpc__req__get_mac_address__pack - (const RpcReqGetMacAddress *message, +/* RpcRespWifiScanGetApRecords methods */ +void rpc__resp__wifi_scan_get_ap_records__init + (RpcRespWifiScanGetApRecords *message); +size_t rpc__resp__wifi_scan_get_ap_records__get_packed_size + (const RpcRespWifiScanGetApRecords *message); +size_t rpc__resp__wifi_scan_get_ap_records__pack + (const RpcRespWifiScanGetApRecords *message, uint8_t *out); -size_t rpc__req__get_mac_address__pack_to_buffer - (const RpcReqGetMacAddress *message, +size_t rpc__resp__wifi_scan_get_ap_records__pack_to_buffer + (const RpcRespWifiScanGetApRecords *message, ProtobufCBuffer *buffer); -RpcReqGetMacAddress * - rpc__req__get_mac_address__unpack +RpcRespWifiScanGetApRecords * + rpc__resp__wifi_scan_get_ap_records__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__get_mac_address__free_unpacked - (RpcReqGetMacAddress *message, +void rpc__resp__wifi_scan_get_ap_records__free_unpacked + (RpcRespWifiScanGetApRecords *message, ProtobufCAllocator *allocator); -/* RpcRespGetMacAddress methods */ -void rpc__resp__get_mac_address__init - (RpcRespGetMacAddress *message); -size_t rpc__resp__get_mac_address__get_packed_size - (const RpcRespGetMacAddress *message); -size_t rpc__resp__get_mac_address__pack - (const RpcRespGetMacAddress *message, +/* RpcReqWifiScanGetApRecord methods */ +void rpc__req__wifi_scan_get_ap_record__init + (RpcReqWifiScanGetApRecord *message); +size_t rpc__req__wifi_scan_get_ap_record__get_packed_size + (const RpcReqWifiScanGetApRecord *message); +size_t rpc__req__wifi_scan_get_ap_record__pack + (const RpcReqWifiScanGetApRecord *message, uint8_t *out); -size_t rpc__resp__get_mac_address__pack_to_buffer - (const RpcRespGetMacAddress *message, +size_t rpc__req__wifi_scan_get_ap_record__pack_to_buffer + (const RpcReqWifiScanGetApRecord *message, ProtobufCBuffer *buffer); -RpcRespGetMacAddress * - rpc__resp__get_mac_address__unpack +RpcReqWifiScanGetApRecord * + rpc__req__wifi_scan_get_ap_record__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__get_mac_address__free_unpacked - (RpcRespGetMacAddress *message, +void rpc__req__wifi_scan_get_ap_record__free_unpacked + (RpcReqWifiScanGetApRecord *message, ProtobufCAllocator *allocator); -/* RpcReqGetMode methods */ -void rpc__req__get_mode__init - (RpcReqGetMode *message); -size_t rpc__req__get_mode__get_packed_size - (const RpcReqGetMode *message); -size_t rpc__req__get_mode__pack - (const RpcReqGetMode *message, +/* RpcRespWifiScanGetApRecord methods */ +void rpc__resp__wifi_scan_get_ap_record__init + (RpcRespWifiScanGetApRecord *message); +size_t rpc__resp__wifi_scan_get_ap_record__get_packed_size + (const RpcRespWifiScanGetApRecord *message); +size_t rpc__resp__wifi_scan_get_ap_record__pack + (const RpcRespWifiScanGetApRecord *message, uint8_t *out); -size_t rpc__req__get_mode__pack_to_buffer - (const RpcReqGetMode *message, +size_t rpc__resp__wifi_scan_get_ap_record__pack_to_buffer + (const RpcRespWifiScanGetApRecord *message, ProtobufCBuffer *buffer); -RpcReqGetMode * - rpc__req__get_mode__unpack +RpcRespWifiScanGetApRecord * + rpc__resp__wifi_scan_get_ap_record__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__get_mode__free_unpacked - (RpcReqGetMode *message, +void rpc__resp__wifi_scan_get_ap_record__free_unpacked + (RpcRespWifiScanGetApRecord *message, ProtobufCAllocator *allocator); -/* RpcRespGetMode methods */ -void rpc__resp__get_mode__init - (RpcRespGetMode *message); -size_t rpc__resp__get_mode__get_packed_size - (const RpcRespGetMode *message); -size_t rpc__resp__get_mode__pack - (const RpcRespGetMode *message, +/* RpcReqWifiClearApList methods */ +void rpc__req__wifi_clear_ap_list__init + (RpcReqWifiClearApList *message); +size_t rpc__req__wifi_clear_ap_list__get_packed_size + (const RpcReqWifiClearApList *message); +size_t rpc__req__wifi_clear_ap_list__pack + (const RpcReqWifiClearApList *message, uint8_t *out); -size_t rpc__resp__get_mode__pack_to_buffer - (const RpcRespGetMode *message, +size_t rpc__req__wifi_clear_ap_list__pack_to_buffer + (const RpcReqWifiClearApList *message, ProtobufCBuffer *buffer); -RpcRespGetMode * - rpc__resp__get_mode__unpack +RpcReqWifiClearApList * + rpc__req__wifi_clear_ap_list__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__get_mode__free_unpacked - (RpcRespGetMode *message, +void rpc__req__wifi_clear_ap_list__free_unpacked + (RpcReqWifiClearApList *message, ProtobufCAllocator *allocator); -/* RpcReqSetMode methods */ -void rpc__req__set_mode__init - (RpcReqSetMode *message); -size_t rpc__req__set_mode__get_packed_size - (const RpcReqSetMode *message); -size_t rpc__req__set_mode__pack - (const RpcReqSetMode *message, +/* RpcRespWifiClearApList methods */ +void rpc__resp__wifi_clear_ap_list__init + (RpcRespWifiClearApList *message); +size_t rpc__resp__wifi_clear_ap_list__get_packed_size + (const RpcRespWifiClearApList *message); +size_t rpc__resp__wifi_clear_ap_list__pack + (const RpcRespWifiClearApList *message, uint8_t *out); -size_t rpc__req__set_mode__pack_to_buffer - (const RpcReqSetMode *message, +size_t rpc__resp__wifi_clear_ap_list__pack_to_buffer + (const RpcRespWifiClearApList *message, ProtobufCBuffer *buffer); -RpcReqSetMode * - rpc__req__set_mode__unpack +RpcRespWifiClearApList * + rpc__resp__wifi_clear_ap_list__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__set_mode__free_unpacked - (RpcReqSetMode *message, +void rpc__resp__wifi_clear_ap_list__free_unpacked + (RpcRespWifiClearApList *message, ProtobufCAllocator *allocator); -/* RpcRespSetMode methods */ -void rpc__resp__set_mode__init - (RpcRespSetMode *message); -size_t rpc__resp__set_mode__get_packed_size - (const RpcRespSetMode *message); -size_t rpc__resp__set_mode__pack - (const RpcRespSetMode *message, +/* RpcReqWifiRestore methods */ +void rpc__req__wifi_restore__init + (RpcReqWifiRestore *message); +size_t rpc__req__wifi_restore__get_packed_size + (const RpcReqWifiRestore *message); +size_t rpc__req__wifi_restore__pack + (const RpcReqWifiRestore *message, uint8_t *out); -size_t rpc__resp__set_mode__pack_to_buffer - (const RpcRespSetMode *message, +size_t rpc__req__wifi_restore__pack_to_buffer + (const RpcReqWifiRestore *message, ProtobufCBuffer *buffer); -RpcRespSetMode * - rpc__resp__set_mode__unpack +RpcReqWifiRestore * + rpc__req__wifi_restore__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__set_mode__free_unpacked - (RpcRespSetMode *message, +void rpc__req__wifi_restore__free_unpacked + (RpcReqWifiRestore *message, ProtobufCAllocator *allocator); -/* RpcReqGetPs methods */ -void rpc__req__get_ps__init - (RpcReqGetPs *message); -size_t rpc__req__get_ps__get_packed_size - (const RpcReqGetPs *message); -size_t rpc__req__get_ps__pack - (const RpcReqGetPs *message, +/* RpcRespWifiRestore methods */ +void rpc__resp__wifi_restore__init + (RpcRespWifiRestore *message); +size_t rpc__resp__wifi_restore__get_packed_size + (const RpcRespWifiRestore *message); +size_t rpc__resp__wifi_restore__pack + (const RpcRespWifiRestore *message, uint8_t *out); -size_t rpc__req__get_ps__pack_to_buffer - (const RpcReqGetPs *message, +size_t rpc__resp__wifi_restore__pack_to_buffer + (const RpcRespWifiRestore *message, ProtobufCBuffer *buffer); -RpcReqGetPs * - rpc__req__get_ps__unpack +RpcRespWifiRestore * + rpc__resp__wifi_restore__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__get_ps__free_unpacked - (RpcReqGetPs *message, +void rpc__resp__wifi_restore__free_unpacked + (RpcRespWifiRestore *message, ProtobufCAllocator *allocator); -/* RpcRespGetPs methods */ -void rpc__resp__get_ps__init - (RpcRespGetPs *message); -size_t rpc__resp__get_ps__get_packed_size - (const RpcRespGetPs *message); -size_t rpc__resp__get_ps__pack - (const RpcRespGetPs *message, +/* RpcReqWifiClearFastConnect methods */ +void rpc__req__wifi_clear_fast_connect__init + (RpcReqWifiClearFastConnect *message); +size_t rpc__req__wifi_clear_fast_connect__get_packed_size + (const RpcReqWifiClearFastConnect *message); +size_t rpc__req__wifi_clear_fast_connect__pack + (const RpcReqWifiClearFastConnect *message, uint8_t *out); -size_t rpc__resp__get_ps__pack_to_buffer - (const RpcRespGetPs *message, +size_t rpc__req__wifi_clear_fast_connect__pack_to_buffer + (const RpcReqWifiClearFastConnect *message, ProtobufCBuffer *buffer); -RpcRespGetPs * - rpc__resp__get_ps__unpack +RpcReqWifiClearFastConnect * + rpc__req__wifi_clear_fast_connect__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__get_ps__free_unpacked - (RpcRespGetPs *message, +void rpc__req__wifi_clear_fast_connect__free_unpacked + (RpcReqWifiClearFastConnect *message, ProtobufCAllocator *allocator); -/* RpcReqSetPs methods */ -void rpc__req__set_ps__init - (RpcReqSetPs *message); -size_t rpc__req__set_ps__get_packed_size - (const RpcReqSetPs *message); -size_t rpc__req__set_ps__pack - (const RpcReqSetPs *message, +/* RpcRespWifiClearFastConnect methods */ +void rpc__resp__wifi_clear_fast_connect__init + (RpcRespWifiClearFastConnect *message); +size_t rpc__resp__wifi_clear_fast_connect__get_packed_size + (const RpcRespWifiClearFastConnect *message); +size_t rpc__resp__wifi_clear_fast_connect__pack + (const RpcRespWifiClearFastConnect *message, uint8_t *out); -size_t rpc__req__set_ps__pack_to_buffer - (const RpcReqSetPs *message, +size_t rpc__resp__wifi_clear_fast_connect__pack_to_buffer + (const RpcRespWifiClearFastConnect *message, ProtobufCBuffer *buffer); -RpcReqSetPs * - rpc__req__set_ps__unpack +RpcRespWifiClearFastConnect * + rpc__resp__wifi_clear_fast_connect__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__set_ps__free_unpacked - (RpcReqSetPs *message, +void rpc__resp__wifi_clear_fast_connect__free_unpacked + (RpcRespWifiClearFastConnect *message, ProtobufCAllocator *allocator); -/* RpcRespSetPs methods */ -void rpc__resp__set_ps__init - (RpcRespSetPs *message); -size_t rpc__resp__set_ps__get_packed_size - (const RpcRespSetPs *message); -size_t rpc__resp__set_ps__pack - (const RpcRespSetPs *message, +/* RpcReqWifiDeauthSta methods */ +void rpc__req__wifi_deauth_sta__init + (RpcReqWifiDeauthSta *message); +size_t rpc__req__wifi_deauth_sta__get_packed_size + (const RpcReqWifiDeauthSta *message); +size_t rpc__req__wifi_deauth_sta__pack + (const RpcReqWifiDeauthSta *message, uint8_t *out); -size_t rpc__resp__set_ps__pack_to_buffer - (const RpcRespSetPs *message, +size_t rpc__req__wifi_deauth_sta__pack_to_buffer + (const RpcReqWifiDeauthSta *message, ProtobufCBuffer *buffer); -RpcRespSetPs * - rpc__resp__set_ps__unpack +RpcReqWifiDeauthSta * + rpc__req__wifi_deauth_sta__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__set_ps__free_unpacked - (RpcRespSetPs *message, +void rpc__req__wifi_deauth_sta__free_unpacked + (RpcReqWifiDeauthSta *message, ProtobufCAllocator *allocator); -/* RpcReqSetMacAddress methods */ -void rpc__req__set_mac_address__init - (RpcReqSetMacAddress *message); -size_t rpc__req__set_mac_address__get_packed_size - (const RpcReqSetMacAddress *message); -size_t rpc__req__set_mac_address__pack - (const RpcReqSetMacAddress *message, +/* RpcRespWifiDeauthSta methods */ +void rpc__resp__wifi_deauth_sta__init + (RpcRespWifiDeauthSta *message); +size_t rpc__resp__wifi_deauth_sta__get_packed_size + (const RpcRespWifiDeauthSta *message); +size_t rpc__resp__wifi_deauth_sta__pack + (const RpcRespWifiDeauthSta *message, uint8_t *out); -size_t rpc__req__set_mac_address__pack_to_buffer - (const RpcReqSetMacAddress *message, +size_t rpc__resp__wifi_deauth_sta__pack_to_buffer + (const RpcRespWifiDeauthSta *message, ProtobufCBuffer *buffer); -RpcReqSetMacAddress * - rpc__req__set_mac_address__unpack +RpcRespWifiDeauthSta * + rpc__resp__wifi_deauth_sta__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__set_mac_address__free_unpacked - (RpcReqSetMacAddress *message, +void rpc__resp__wifi_deauth_sta__free_unpacked + (RpcRespWifiDeauthSta *message, ProtobufCAllocator *allocator); -/* RpcRespSetMacAddress methods */ -void rpc__resp__set_mac_address__init - (RpcRespSetMacAddress *message); -size_t rpc__resp__set_mac_address__get_packed_size - (const RpcRespSetMacAddress *message); -size_t rpc__resp__set_mac_address__pack - (const RpcRespSetMacAddress *message, +/* RpcReqWifiStaGetApInfo methods */ +void rpc__req__wifi_sta_get_ap_info__init + (RpcReqWifiStaGetApInfo *message); +size_t rpc__req__wifi_sta_get_ap_info__get_packed_size + (const RpcReqWifiStaGetApInfo *message); +size_t rpc__req__wifi_sta_get_ap_info__pack + (const RpcReqWifiStaGetApInfo *message, uint8_t *out); -size_t rpc__resp__set_mac_address__pack_to_buffer - (const RpcRespSetMacAddress *message, +size_t rpc__req__wifi_sta_get_ap_info__pack_to_buffer + (const RpcReqWifiStaGetApInfo *message, ProtobufCBuffer *buffer); -RpcRespSetMacAddress * - rpc__resp__set_mac_address__unpack +RpcReqWifiStaGetApInfo * + rpc__req__wifi_sta_get_ap_info__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__set_mac_address__free_unpacked - (RpcRespSetMacAddress *message, +void rpc__req__wifi_sta_get_ap_info__free_unpacked + (RpcReqWifiStaGetApInfo *message, ProtobufCAllocator *allocator); -/* RpcReqOTABegin methods */ -void rpc__req__otabegin__init - (RpcReqOTABegin *message); -size_t rpc__req__otabegin__get_packed_size - (const RpcReqOTABegin *message); -size_t rpc__req__otabegin__pack - (const RpcReqOTABegin *message, +/* RpcRespWifiStaGetApInfo methods */ +void rpc__resp__wifi_sta_get_ap_info__init + (RpcRespWifiStaGetApInfo *message); +size_t rpc__resp__wifi_sta_get_ap_info__get_packed_size + (const RpcRespWifiStaGetApInfo *message); +size_t rpc__resp__wifi_sta_get_ap_info__pack + (const RpcRespWifiStaGetApInfo *message, uint8_t *out); -size_t rpc__req__otabegin__pack_to_buffer - (const RpcReqOTABegin *message, +size_t rpc__resp__wifi_sta_get_ap_info__pack_to_buffer + (const RpcRespWifiStaGetApInfo *message, ProtobufCBuffer *buffer); -RpcReqOTABegin * - rpc__req__otabegin__unpack +RpcRespWifiStaGetApInfo * + rpc__resp__wifi_sta_get_ap_info__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__otabegin__free_unpacked - (RpcReqOTABegin *message, +void rpc__resp__wifi_sta_get_ap_info__free_unpacked + (RpcRespWifiStaGetApInfo *message, ProtobufCAllocator *allocator); -/* RpcRespOTABegin methods */ -void rpc__resp__otabegin__init - (RpcRespOTABegin *message); -size_t rpc__resp__otabegin__get_packed_size - (const RpcRespOTABegin *message); -size_t rpc__resp__otabegin__pack - (const RpcRespOTABegin *message, +/* RpcReqWifiSetProtocol methods */ +void rpc__req__wifi_set_protocol__init + (RpcReqWifiSetProtocol *message); +size_t rpc__req__wifi_set_protocol__get_packed_size + (const RpcReqWifiSetProtocol *message); +size_t rpc__req__wifi_set_protocol__pack + (const RpcReqWifiSetProtocol *message, uint8_t *out); -size_t rpc__resp__otabegin__pack_to_buffer - (const RpcRespOTABegin *message, +size_t rpc__req__wifi_set_protocol__pack_to_buffer + (const RpcReqWifiSetProtocol *message, ProtobufCBuffer *buffer); -RpcRespOTABegin * - rpc__resp__otabegin__unpack +RpcReqWifiSetProtocol * + rpc__req__wifi_set_protocol__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__otabegin__free_unpacked - (RpcRespOTABegin *message, +void rpc__req__wifi_set_protocol__free_unpacked + (RpcReqWifiSetProtocol *message, ProtobufCAllocator *allocator); -/* RpcReqOTAWrite methods */ -void rpc__req__otawrite__init - (RpcReqOTAWrite *message); -size_t rpc__req__otawrite__get_packed_size - (const RpcReqOTAWrite *message); -size_t rpc__req__otawrite__pack - (const RpcReqOTAWrite *message, +/* RpcRespWifiSetProtocol methods */ +void rpc__resp__wifi_set_protocol__init + (RpcRespWifiSetProtocol *message); +size_t rpc__resp__wifi_set_protocol__get_packed_size + (const RpcRespWifiSetProtocol *message); +size_t rpc__resp__wifi_set_protocol__pack + (const RpcRespWifiSetProtocol *message, uint8_t *out); -size_t rpc__req__otawrite__pack_to_buffer - (const RpcReqOTAWrite *message, +size_t rpc__resp__wifi_set_protocol__pack_to_buffer + (const RpcRespWifiSetProtocol *message, ProtobufCBuffer *buffer); -RpcReqOTAWrite * - rpc__req__otawrite__unpack +RpcRespWifiSetProtocol * + rpc__resp__wifi_set_protocol__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__otawrite__free_unpacked - (RpcReqOTAWrite *message, +void rpc__resp__wifi_set_protocol__free_unpacked + (RpcRespWifiSetProtocol *message, ProtobufCAllocator *allocator); -/* RpcRespOTAWrite methods */ -void rpc__resp__otawrite__init - (RpcRespOTAWrite *message); -size_t rpc__resp__otawrite__get_packed_size - (const RpcRespOTAWrite *message); -size_t rpc__resp__otawrite__pack - (const RpcRespOTAWrite *message, +/* RpcReqWifiGetProtocol methods */ +void rpc__req__wifi_get_protocol__init + (RpcReqWifiGetProtocol *message); +size_t rpc__req__wifi_get_protocol__get_packed_size + (const RpcReqWifiGetProtocol *message); +size_t rpc__req__wifi_get_protocol__pack + (const RpcReqWifiGetProtocol *message, uint8_t *out); -size_t rpc__resp__otawrite__pack_to_buffer - (const RpcRespOTAWrite *message, +size_t rpc__req__wifi_get_protocol__pack_to_buffer + (const RpcReqWifiGetProtocol *message, ProtobufCBuffer *buffer); -RpcRespOTAWrite * - rpc__resp__otawrite__unpack +RpcReqWifiGetProtocol * + rpc__req__wifi_get_protocol__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__otawrite__free_unpacked - (RpcRespOTAWrite *message, +void rpc__req__wifi_get_protocol__free_unpacked + (RpcReqWifiGetProtocol *message, ProtobufCAllocator *allocator); -/* RpcReqOTAEnd methods */ -void rpc__req__otaend__init - (RpcReqOTAEnd *message); -size_t rpc__req__otaend__get_packed_size - (const RpcReqOTAEnd *message); -size_t rpc__req__otaend__pack - (const RpcReqOTAEnd *message, +/* RpcRespWifiGetProtocol methods */ +void rpc__resp__wifi_get_protocol__init + (RpcRespWifiGetProtocol *message); +size_t rpc__resp__wifi_get_protocol__get_packed_size + (const RpcRespWifiGetProtocol *message); +size_t rpc__resp__wifi_get_protocol__pack + (const RpcRespWifiGetProtocol *message, uint8_t *out); -size_t rpc__req__otaend__pack_to_buffer - (const RpcReqOTAEnd *message, +size_t rpc__resp__wifi_get_protocol__pack_to_buffer + (const RpcRespWifiGetProtocol *message, ProtobufCBuffer *buffer); -RpcReqOTAEnd * - rpc__req__otaend__unpack +RpcRespWifiGetProtocol * + rpc__resp__wifi_get_protocol__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__otaend__free_unpacked - (RpcReqOTAEnd *message, +void rpc__resp__wifi_get_protocol__free_unpacked + (RpcRespWifiGetProtocol *message, ProtobufCAllocator *allocator); -/* RpcRespOTAEnd methods */ -void rpc__resp__otaend__init - (RpcRespOTAEnd *message); -size_t rpc__resp__otaend__get_packed_size - (const RpcRespOTAEnd *message); -size_t rpc__resp__otaend__pack - (const RpcRespOTAEnd *message, +/* RpcReqWifiSetBandwidth methods */ +void rpc__req__wifi_set_bandwidth__init + (RpcReqWifiSetBandwidth *message); +size_t rpc__req__wifi_set_bandwidth__get_packed_size + (const RpcReqWifiSetBandwidth *message); +size_t rpc__req__wifi_set_bandwidth__pack + (const RpcReqWifiSetBandwidth *message, uint8_t *out); -size_t rpc__resp__otaend__pack_to_buffer - (const RpcRespOTAEnd *message, +size_t rpc__req__wifi_set_bandwidth__pack_to_buffer + (const RpcReqWifiSetBandwidth *message, ProtobufCBuffer *buffer); -RpcRespOTAEnd * - rpc__resp__otaend__unpack +RpcReqWifiSetBandwidth * + rpc__req__wifi_set_bandwidth__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__otaend__free_unpacked - (RpcRespOTAEnd *message, +void rpc__req__wifi_set_bandwidth__free_unpacked + (RpcReqWifiSetBandwidth *message, ProtobufCAllocator *allocator); -/* RpcReqWifiSetMaxTxPower methods */ -void rpc__req__wifi_set_max_tx_power__init - (RpcReqWifiSetMaxTxPower *message); -size_t rpc__req__wifi_set_max_tx_power__get_packed_size - (const RpcReqWifiSetMaxTxPower *message); -size_t rpc__req__wifi_set_max_tx_power__pack - (const RpcReqWifiSetMaxTxPower *message, +/* RpcRespWifiSetBandwidth methods */ +void rpc__resp__wifi_set_bandwidth__init + (RpcRespWifiSetBandwidth *message); +size_t rpc__resp__wifi_set_bandwidth__get_packed_size + (const RpcRespWifiSetBandwidth *message); +size_t rpc__resp__wifi_set_bandwidth__pack + (const RpcRespWifiSetBandwidth *message, uint8_t *out); -size_t rpc__req__wifi_set_max_tx_power__pack_to_buffer - (const RpcReqWifiSetMaxTxPower *message, +size_t rpc__resp__wifi_set_bandwidth__pack_to_buffer + (const RpcRespWifiSetBandwidth *message, ProtobufCBuffer *buffer); -RpcReqWifiSetMaxTxPower * - rpc__req__wifi_set_max_tx_power__unpack +RpcRespWifiSetBandwidth * + rpc__resp__wifi_set_bandwidth__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_set_max_tx_power__free_unpacked - (RpcReqWifiSetMaxTxPower *message, +void rpc__resp__wifi_set_bandwidth__free_unpacked + (RpcRespWifiSetBandwidth *message, ProtobufCAllocator *allocator); -/* RpcRespWifiSetMaxTxPower methods */ -void rpc__resp__wifi_set_max_tx_power__init - (RpcRespWifiSetMaxTxPower *message); -size_t rpc__resp__wifi_set_max_tx_power__get_packed_size - (const RpcRespWifiSetMaxTxPower *message); -size_t rpc__resp__wifi_set_max_tx_power__pack - (const RpcRespWifiSetMaxTxPower *message, +/* RpcReqWifiGetBandwidth methods */ +void rpc__req__wifi_get_bandwidth__init + (RpcReqWifiGetBandwidth *message); +size_t rpc__req__wifi_get_bandwidth__get_packed_size + (const RpcReqWifiGetBandwidth *message); +size_t rpc__req__wifi_get_bandwidth__pack + (const RpcReqWifiGetBandwidth *message, uint8_t *out); -size_t rpc__resp__wifi_set_max_tx_power__pack_to_buffer - (const RpcRespWifiSetMaxTxPower *message, +size_t rpc__req__wifi_get_bandwidth__pack_to_buffer + (const RpcReqWifiGetBandwidth *message, ProtobufCBuffer *buffer); -RpcRespWifiSetMaxTxPower * - rpc__resp__wifi_set_max_tx_power__unpack +RpcReqWifiGetBandwidth * + rpc__req__wifi_get_bandwidth__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_set_max_tx_power__free_unpacked - (RpcRespWifiSetMaxTxPower *message, +void rpc__req__wifi_get_bandwidth__free_unpacked + (RpcReqWifiGetBandwidth *message, ProtobufCAllocator *allocator); -/* RpcReqWifiGetMaxTxPower methods */ -void rpc__req__wifi_get_max_tx_power__init - (RpcReqWifiGetMaxTxPower *message); -size_t rpc__req__wifi_get_max_tx_power__get_packed_size - (const RpcReqWifiGetMaxTxPower *message); -size_t rpc__req__wifi_get_max_tx_power__pack - (const RpcReqWifiGetMaxTxPower *message, +/* RpcRespWifiGetBandwidth methods */ +void rpc__resp__wifi_get_bandwidth__init + (RpcRespWifiGetBandwidth *message); +size_t rpc__resp__wifi_get_bandwidth__get_packed_size + (const RpcRespWifiGetBandwidth *message); +size_t rpc__resp__wifi_get_bandwidth__pack + (const RpcRespWifiGetBandwidth *message, uint8_t *out); -size_t rpc__req__wifi_get_max_tx_power__pack_to_buffer - (const RpcReqWifiGetMaxTxPower *message, +size_t rpc__resp__wifi_get_bandwidth__pack_to_buffer + (const RpcRespWifiGetBandwidth *message, ProtobufCBuffer *buffer); -RpcReqWifiGetMaxTxPower * - rpc__req__wifi_get_max_tx_power__unpack +RpcRespWifiGetBandwidth * + rpc__resp__wifi_get_bandwidth__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_get_max_tx_power__free_unpacked - (RpcReqWifiGetMaxTxPower *message, +void rpc__resp__wifi_get_bandwidth__free_unpacked + (RpcRespWifiGetBandwidth *message, ProtobufCAllocator *allocator); -/* RpcRespWifiGetMaxTxPower methods */ -void rpc__resp__wifi_get_max_tx_power__init - (RpcRespWifiGetMaxTxPower *message); -size_t rpc__resp__wifi_get_max_tx_power__get_packed_size - (const RpcRespWifiGetMaxTxPower *message); -size_t rpc__resp__wifi_get_max_tx_power__pack - (const RpcRespWifiGetMaxTxPower *message, +/* RpcReqWifiSetChannel methods */ +void rpc__req__wifi_set_channel__init + (RpcReqWifiSetChannel *message); +size_t rpc__req__wifi_set_channel__get_packed_size + (const RpcReqWifiSetChannel *message); +size_t rpc__req__wifi_set_channel__pack + (const RpcReqWifiSetChannel *message, uint8_t *out); -size_t rpc__resp__wifi_get_max_tx_power__pack_to_buffer - (const RpcRespWifiGetMaxTxPower *message, +size_t rpc__req__wifi_set_channel__pack_to_buffer + (const RpcReqWifiSetChannel *message, ProtobufCBuffer *buffer); -RpcRespWifiGetMaxTxPower * - rpc__resp__wifi_get_max_tx_power__unpack +RpcReqWifiSetChannel * + rpc__req__wifi_set_channel__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_get_max_tx_power__free_unpacked - (RpcRespWifiGetMaxTxPower *message, +void rpc__req__wifi_set_channel__free_unpacked + (RpcReqWifiSetChannel *message, ProtobufCAllocator *allocator); -/* RpcReqConfigHeartbeat methods */ -void rpc__req__config_heartbeat__init - (RpcReqConfigHeartbeat *message); -size_t rpc__req__config_heartbeat__get_packed_size - (const RpcReqConfigHeartbeat *message); -size_t rpc__req__config_heartbeat__pack - (const RpcReqConfigHeartbeat *message, +/* RpcRespWifiSetChannel methods */ +void rpc__resp__wifi_set_channel__init + (RpcRespWifiSetChannel *message); +size_t rpc__resp__wifi_set_channel__get_packed_size + (const RpcRespWifiSetChannel *message); +size_t rpc__resp__wifi_set_channel__pack + (const RpcRespWifiSetChannel *message, uint8_t *out); -size_t rpc__req__config_heartbeat__pack_to_buffer - (const RpcReqConfigHeartbeat *message, +size_t rpc__resp__wifi_set_channel__pack_to_buffer + (const RpcRespWifiSetChannel *message, ProtobufCBuffer *buffer); -RpcReqConfigHeartbeat * - rpc__req__config_heartbeat__unpack +RpcRespWifiSetChannel * + rpc__resp__wifi_set_channel__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__config_heartbeat__free_unpacked - (RpcReqConfigHeartbeat *message, +void rpc__resp__wifi_set_channel__free_unpacked + (RpcRespWifiSetChannel *message, ProtobufCAllocator *allocator); -/* RpcRespConfigHeartbeat methods */ -void rpc__resp__config_heartbeat__init - (RpcRespConfigHeartbeat *message); -size_t rpc__resp__config_heartbeat__get_packed_size - (const RpcRespConfigHeartbeat *message); -size_t rpc__resp__config_heartbeat__pack - (const RpcRespConfigHeartbeat *message, +/* RpcReqWifiGetChannel methods */ +void rpc__req__wifi_get_channel__init + (RpcReqWifiGetChannel *message); +size_t rpc__req__wifi_get_channel__get_packed_size + (const RpcReqWifiGetChannel *message); +size_t rpc__req__wifi_get_channel__pack + (const RpcReqWifiGetChannel *message, uint8_t *out); -size_t rpc__resp__config_heartbeat__pack_to_buffer - (const RpcRespConfigHeartbeat *message, +size_t rpc__req__wifi_get_channel__pack_to_buffer + (const RpcReqWifiGetChannel *message, ProtobufCBuffer *buffer); -RpcRespConfigHeartbeat * - rpc__resp__config_heartbeat__unpack +RpcReqWifiGetChannel * + rpc__req__wifi_get_channel__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__config_heartbeat__free_unpacked - (RpcRespConfigHeartbeat *message, +void rpc__req__wifi_get_channel__free_unpacked + (RpcReqWifiGetChannel *message, ProtobufCAllocator *allocator); -/* RpcReqWifiInit methods */ -void rpc__req__wifi_init__init - (RpcReqWifiInit *message); -size_t rpc__req__wifi_init__get_packed_size - (const RpcReqWifiInit *message); -size_t rpc__req__wifi_init__pack - (const RpcReqWifiInit *message, +/* RpcRespWifiGetChannel methods */ +void rpc__resp__wifi_get_channel__init + (RpcRespWifiGetChannel *message); +size_t rpc__resp__wifi_get_channel__get_packed_size + (const RpcRespWifiGetChannel *message); +size_t rpc__resp__wifi_get_channel__pack + (const RpcRespWifiGetChannel *message, uint8_t *out); -size_t rpc__req__wifi_init__pack_to_buffer - (const RpcReqWifiInit *message, +size_t rpc__resp__wifi_get_channel__pack_to_buffer + (const RpcRespWifiGetChannel *message, ProtobufCBuffer *buffer); -RpcReqWifiInit * - rpc__req__wifi_init__unpack +RpcRespWifiGetChannel * + rpc__resp__wifi_get_channel__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_init__free_unpacked - (RpcReqWifiInit *message, +void rpc__resp__wifi_get_channel__free_unpacked + (RpcRespWifiGetChannel *message, ProtobufCAllocator *allocator); -/* RpcRespWifiInit methods */ -void rpc__resp__wifi_init__init - (RpcRespWifiInit *message); -size_t rpc__resp__wifi_init__get_packed_size - (const RpcRespWifiInit *message); -size_t rpc__resp__wifi_init__pack - (const RpcRespWifiInit *message, +/* RpcReqWifiSetStorage methods */ +void rpc__req__wifi_set_storage__init + (RpcReqWifiSetStorage *message); +size_t rpc__req__wifi_set_storage__get_packed_size + (const RpcReqWifiSetStorage *message); +size_t rpc__req__wifi_set_storage__pack + (const RpcReqWifiSetStorage *message, uint8_t *out); -size_t rpc__resp__wifi_init__pack_to_buffer - (const RpcRespWifiInit *message, +size_t rpc__req__wifi_set_storage__pack_to_buffer + (const RpcReqWifiSetStorage *message, ProtobufCBuffer *buffer); -RpcRespWifiInit * - rpc__resp__wifi_init__unpack +RpcReqWifiSetStorage * + rpc__req__wifi_set_storage__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_init__free_unpacked - (RpcRespWifiInit *message, +void rpc__req__wifi_set_storage__free_unpacked + (RpcReqWifiSetStorage *message, ProtobufCAllocator *allocator); -/* RpcReqWifiDeinit methods */ -void rpc__req__wifi_deinit__init - (RpcReqWifiDeinit *message); -size_t rpc__req__wifi_deinit__get_packed_size - (const RpcReqWifiDeinit *message); -size_t rpc__req__wifi_deinit__pack - (const RpcReqWifiDeinit *message, +/* RpcRespWifiSetStorage methods */ +void rpc__resp__wifi_set_storage__init + (RpcRespWifiSetStorage *message); +size_t rpc__resp__wifi_set_storage__get_packed_size + (const RpcRespWifiSetStorage *message); +size_t rpc__resp__wifi_set_storage__pack + (const RpcRespWifiSetStorage *message, uint8_t *out); -size_t rpc__req__wifi_deinit__pack_to_buffer - (const RpcReqWifiDeinit *message, +size_t rpc__resp__wifi_set_storage__pack_to_buffer + (const RpcRespWifiSetStorage *message, ProtobufCBuffer *buffer); -RpcReqWifiDeinit * - rpc__req__wifi_deinit__unpack +RpcRespWifiSetStorage * + rpc__resp__wifi_set_storage__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_deinit__free_unpacked - (RpcReqWifiDeinit *message, +void rpc__resp__wifi_set_storage__free_unpacked + (RpcRespWifiSetStorage *message, ProtobufCAllocator *allocator); -/* RpcRespWifiDeinit methods */ -void rpc__resp__wifi_deinit__init - (RpcRespWifiDeinit *message); -size_t rpc__resp__wifi_deinit__get_packed_size - (const RpcRespWifiDeinit *message); -size_t rpc__resp__wifi_deinit__pack - (const RpcRespWifiDeinit *message, +/* RpcReqWifiSetCountryCode methods */ +void rpc__req__wifi_set_country_code__init + (RpcReqWifiSetCountryCode *message); +size_t rpc__req__wifi_set_country_code__get_packed_size + (const RpcReqWifiSetCountryCode *message); +size_t rpc__req__wifi_set_country_code__pack + (const RpcReqWifiSetCountryCode *message, uint8_t *out); -size_t rpc__resp__wifi_deinit__pack_to_buffer - (const RpcRespWifiDeinit *message, +size_t rpc__req__wifi_set_country_code__pack_to_buffer + (const RpcReqWifiSetCountryCode *message, ProtobufCBuffer *buffer); -RpcRespWifiDeinit * - rpc__resp__wifi_deinit__unpack +RpcReqWifiSetCountryCode * + rpc__req__wifi_set_country_code__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_deinit__free_unpacked - (RpcRespWifiDeinit *message, +void rpc__req__wifi_set_country_code__free_unpacked + (RpcReqWifiSetCountryCode *message, ProtobufCAllocator *allocator); -/* RpcReqWifiSetConfig methods */ -void rpc__req__wifi_set_config__init - (RpcReqWifiSetConfig *message); -size_t rpc__req__wifi_set_config__get_packed_size - (const RpcReqWifiSetConfig *message); -size_t rpc__req__wifi_set_config__pack - (const RpcReqWifiSetConfig *message, +/* RpcRespWifiSetCountryCode methods */ +void rpc__resp__wifi_set_country_code__init + (RpcRespWifiSetCountryCode *message); +size_t rpc__resp__wifi_set_country_code__get_packed_size + (const RpcRespWifiSetCountryCode *message); +size_t rpc__resp__wifi_set_country_code__pack + (const RpcRespWifiSetCountryCode *message, uint8_t *out); -size_t rpc__req__wifi_set_config__pack_to_buffer - (const RpcReqWifiSetConfig *message, +size_t rpc__resp__wifi_set_country_code__pack_to_buffer + (const RpcRespWifiSetCountryCode *message, ProtobufCBuffer *buffer); -RpcReqWifiSetConfig * - rpc__req__wifi_set_config__unpack +RpcRespWifiSetCountryCode * + rpc__resp__wifi_set_country_code__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_set_config__free_unpacked - (RpcReqWifiSetConfig *message, +void rpc__resp__wifi_set_country_code__free_unpacked + (RpcRespWifiSetCountryCode *message, ProtobufCAllocator *allocator); -/* RpcRespWifiSetConfig methods */ -void rpc__resp__wifi_set_config__init - (RpcRespWifiSetConfig *message); -size_t rpc__resp__wifi_set_config__get_packed_size - (const RpcRespWifiSetConfig *message); -size_t rpc__resp__wifi_set_config__pack - (const RpcRespWifiSetConfig *message, +/* RpcReqWifiGetCountryCode methods */ +void rpc__req__wifi_get_country_code__init + (RpcReqWifiGetCountryCode *message); +size_t rpc__req__wifi_get_country_code__get_packed_size + (const RpcReqWifiGetCountryCode *message); +size_t rpc__req__wifi_get_country_code__pack + (const RpcReqWifiGetCountryCode *message, uint8_t *out); -size_t rpc__resp__wifi_set_config__pack_to_buffer - (const RpcRespWifiSetConfig *message, +size_t rpc__req__wifi_get_country_code__pack_to_buffer + (const RpcReqWifiGetCountryCode *message, ProtobufCBuffer *buffer); -RpcRespWifiSetConfig * - rpc__resp__wifi_set_config__unpack +RpcReqWifiGetCountryCode * + rpc__req__wifi_get_country_code__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_set_config__free_unpacked - (RpcRespWifiSetConfig *message, +void rpc__req__wifi_get_country_code__free_unpacked + (RpcReqWifiGetCountryCode *message, ProtobufCAllocator *allocator); -/* RpcReqWifiGetConfig methods */ -void rpc__req__wifi_get_config__init - (RpcReqWifiGetConfig *message); -size_t rpc__req__wifi_get_config__get_packed_size - (const RpcReqWifiGetConfig *message); -size_t rpc__req__wifi_get_config__pack - (const RpcReqWifiGetConfig *message, +/* RpcRespWifiGetCountryCode methods */ +void rpc__resp__wifi_get_country_code__init + (RpcRespWifiGetCountryCode *message); +size_t rpc__resp__wifi_get_country_code__get_packed_size + (const RpcRespWifiGetCountryCode *message); +size_t rpc__resp__wifi_get_country_code__pack + (const RpcRespWifiGetCountryCode *message, uint8_t *out); -size_t rpc__req__wifi_get_config__pack_to_buffer - (const RpcReqWifiGetConfig *message, +size_t rpc__resp__wifi_get_country_code__pack_to_buffer + (const RpcRespWifiGetCountryCode *message, ProtobufCBuffer *buffer); -RpcReqWifiGetConfig * - rpc__req__wifi_get_config__unpack +RpcRespWifiGetCountryCode * + rpc__resp__wifi_get_country_code__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_get_config__free_unpacked - (RpcReqWifiGetConfig *message, +void rpc__resp__wifi_get_country_code__free_unpacked + (RpcRespWifiGetCountryCode *message, ProtobufCAllocator *allocator); -/* RpcRespWifiGetConfig methods */ -void rpc__resp__wifi_get_config__init - (RpcRespWifiGetConfig *message); -size_t rpc__resp__wifi_get_config__get_packed_size - (const RpcRespWifiGetConfig *message); -size_t rpc__resp__wifi_get_config__pack - (const RpcRespWifiGetConfig *message, +/* RpcReqWifiSetCountry methods */ +void rpc__req__wifi_set_country__init + (RpcReqWifiSetCountry *message); +size_t rpc__req__wifi_set_country__get_packed_size + (const RpcReqWifiSetCountry *message); +size_t rpc__req__wifi_set_country__pack + (const RpcReqWifiSetCountry *message, uint8_t *out); -size_t rpc__resp__wifi_get_config__pack_to_buffer - (const RpcRespWifiGetConfig *message, +size_t rpc__req__wifi_set_country__pack_to_buffer + (const RpcReqWifiSetCountry *message, ProtobufCBuffer *buffer); -RpcRespWifiGetConfig * - rpc__resp__wifi_get_config__unpack +RpcReqWifiSetCountry * + rpc__req__wifi_set_country__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_get_config__free_unpacked - (RpcRespWifiGetConfig *message, +void rpc__req__wifi_set_country__free_unpacked + (RpcReqWifiSetCountry *message, ProtobufCAllocator *allocator); -/* RpcReqWifiConnect methods */ -void rpc__req__wifi_connect__init - (RpcReqWifiConnect *message); -size_t rpc__req__wifi_connect__get_packed_size - (const RpcReqWifiConnect *message); -size_t rpc__req__wifi_connect__pack - (const RpcReqWifiConnect *message, +/* RpcRespWifiSetCountry methods */ +void rpc__resp__wifi_set_country__init + (RpcRespWifiSetCountry *message); +size_t rpc__resp__wifi_set_country__get_packed_size + (const RpcRespWifiSetCountry *message); +size_t rpc__resp__wifi_set_country__pack + (const RpcRespWifiSetCountry *message, uint8_t *out); -size_t rpc__req__wifi_connect__pack_to_buffer - (const RpcReqWifiConnect *message, +size_t rpc__resp__wifi_set_country__pack_to_buffer + (const RpcRespWifiSetCountry *message, ProtobufCBuffer *buffer); -RpcReqWifiConnect * - rpc__req__wifi_connect__unpack +RpcRespWifiSetCountry * + rpc__resp__wifi_set_country__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_connect__free_unpacked - (RpcReqWifiConnect *message, +void rpc__resp__wifi_set_country__free_unpacked + (RpcRespWifiSetCountry *message, ProtobufCAllocator *allocator); -/* RpcRespWifiConnect methods */ -void rpc__resp__wifi_connect__init - (RpcRespWifiConnect *message); -size_t rpc__resp__wifi_connect__get_packed_size - (const RpcRespWifiConnect *message); -size_t rpc__resp__wifi_connect__pack - (const RpcRespWifiConnect *message, +/* RpcReqWifiGetCountry methods */ +void rpc__req__wifi_get_country__init + (RpcReqWifiGetCountry *message); +size_t rpc__req__wifi_get_country__get_packed_size + (const RpcReqWifiGetCountry *message); +size_t rpc__req__wifi_get_country__pack + (const RpcReqWifiGetCountry *message, uint8_t *out); -size_t rpc__resp__wifi_connect__pack_to_buffer - (const RpcRespWifiConnect *message, +size_t rpc__req__wifi_get_country__pack_to_buffer + (const RpcReqWifiGetCountry *message, ProtobufCBuffer *buffer); -RpcRespWifiConnect * - rpc__resp__wifi_connect__unpack +RpcReqWifiGetCountry * + rpc__req__wifi_get_country__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_connect__free_unpacked - (RpcRespWifiConnect *message, +void rpc__req__wifi_get_country__free_unpacked + (RpcReqWifiGetCountry *message, ProtobufCAllocator *allocator); -/* RpcReqWifiDisconnect methods */ -void rpc__req__wifi_disconnect__init - (RpcReqWifiDisconnect *message); -size_t rpc__req__wifi_disconnect__get_packed_size - (const RpcReqWifiDisconnect *message); -size_t rpc__req__wifi_disconnect__pack - (const RpcReqWifiDisconnect *message, +/* RpcRespWifiGetCountry methods */ +void rpc__resp__wifi_get_country__init + (RpcRespWifiGetCountry *message); +size_t rpc__resp__wifi_get_country__get_packed_size + (const RpcRespWifiGetCountry *message); +size_t rpc__resp__wifi_get_country__pack + (const RpcRespWifiGetCountry *message, uint8_t *out); -size_t rpc__req__wifi_disconnect__pack_to_buffer - (const RpcReqWifiDisconnect *message, +size_t rpc__resp__wifi_get_country__pack_to_buffer + (const RpcRespWifiGetCountry *message, ProtobufCBuffer *buffer); -RpcReqWifiDisconnect * - rpc__req__wifi_disconnect__unpack +RpcRespWifiGetCountry * + rpc__resp__wifi_get_country__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_disconnect__free_unpacked - (RpcReqWifiDisconnect *message, +void rpc__resp__wifi_get_country__free_unpacked + (RpcRespWifiGetCountry *message, ProtobufCAllocator *allocator); -/* RpcRespWifiDisconnect methods */ -void rpc__resp__wifi_disconnect__init - (RpcRespWifiDisconnect *message); -size_t rpc__resp__wifi_disconnect__get_packed_size - (const RpcRespWifiDisconnect *message); -size_t rpc__resp__wifi_disconnect__pack - (const RpcRespWifiDisconnect *message, +/* RpcReqWifiApGetStaList methods */ +void rpc__req__wifi_ap_get_sta_list__init + (RpcReqWifiApGetStaList *message); +size_t rpc__req__wifi_ap_get_sta_list__get_packed_size + (const RpcReqWifiApGetStaList *message); +size_t rpc__req__wifi_ap_get_sta_list__pack + (const RpcReqWifiApGetStaList *message, uint8_t *out); -size_t rpc__resp__wifi_disconnect__pack_to_buffer - (const RpcRespWifiDisconnect *message, +size_t rpc__req__wifi_ap_get_sta_list__pack_to_buffer + (const RpcReqWifiApGetStaList *message, ProtobufCBuffer *buffer); -RpcRespWifiDisconnect * - rpc__resp__wifi_disconnect__unpack +RpcReqWifiApGetStaList * + rpc__req__wifi_ap_get_sta_list__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_disconnect__free_unpacked - (RpcRespWifiDisconnect *message, +void rpc__req__wifi_ap_get_sta_list__free_unpacked + (RpcReqWifiApGetStaList *message, ProtobufCAllocator *allocator); -/* RpcReqWifiStart methods */ -void rpc__req__wifi_start__init - (RpcReqWifiStart *message); -size_t rpc__req__wifi_start__get_packed_size - (const RpcReqWifiStart *message); -size_t rpc__req__wifi_start__pack - (const RpcReqWifiStart *message, +/* RpcRespWifiApGetStaList methods */ +void rpc__resp__wifi_ap_get_sta_list__init + (RpcRespWifiApGetStaList *message); +size_t rpc__resp__wifi_ap_get_sta_list__get_packed_size + (const RpcRespWifiApGetStaList *message); +size_t rpc__resp__wifi_ap_get_sta_list__pack + (const RpcRespWifiApGetStaList *message, uint8_t *out); -size_t rpc__req__wifi_start__pack_to_buffer - (const RpcReqWifiStart *message, +size_t rpc__resp__wifi_ap_get_sta_list__pack_to_buffer + (const RpcRespWifiApGetStaList *message, ProtobufCBuffer *buffer); -RpcReqWifiStart * - rpc__req__wifi_start__unpack +RpcRespWifiApGetStaList * + rpc__resp__wifi_ap_get_sta_list__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_start__free_unpacked - (RpcReqWifiStart *message, +void rpc__resp__wifi_ap_get_sta_list__free_unpacked + (RpcRespWifiApGetStaList *message, ProtobufCAllocator *allocator); -/* RpcRespWifiStart methods */ -void rpc__resp__wifi_start__init - (RpcRespWifiStart *message); -size_t rpc__resp__wifi_start__get_packed_size - (const RpcRespWifiStart *message); -size_t rpc__resp__wifi_start__pack - (const RpcRespWifiStart *message, +/* RpcReqWifiApGetStaAid methods */ +void rpc__req__wifi_ap_get_sta_aid__init + (RpcReqWifiApGetStaAid *message); +size_t rpc__req__wifi_ap_get_sta_aid__get_packed_size + (const RpcReqWifiApGetStaAid *message); +size_t rpc__req__wifi_ap_get_sta_aid__pack + (const RpcReqWifiApGetStaAid *message, uint8_t *out); -size_t rpc__resp__wifi_start__pack_to_buffer - (const RpcRespWifiStart *message, +size_t rpc__req__wifi_ap_get_sta_aid__pack_to_buffer + (const RpcReqWifiApGetStaAid *message, ProtobufCBuffer *buffer); -RpcRespWifiStart * - rpc__resp__wifi_start__unpack +RpcReqWifiApGetStaAid * + rpc__req__wifi_ap_get_sta_aid__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_start__free_unpacked - (RpcRespWifiStart *message, +void rpc__req__wifi_ap_get_sta_aid__free_unpacked + (RpcReqWifiApGetStaAid *message, ProtobufCAllocator *allocator); -/* RpcReqWifiStop methods */ -void rpc__req__wifi_stop__init - (RpcReqWifiStop *message); -size_t rpc__req__wifi_stop__get_packed_size - (const RpcReqWifiStop *message); -size_t rpc__req__wifi_stop__pack - (const RpcReqWifiStop *message, +/* RpcReqWifiStaGetNegotiatedPhymode methods */ +void rpc__req__wifi_sta_get_negotiated_phymode__init + (RpcReqWifiStaGetNegotiatedPhymode *message); +size_t rpc__req__wifi_sta_get_negotiated_phymode__get_packed_size + (const RpcReqWifiStaGetNegotiatedPhymode *message); +size_t rpc__req__wifi_sta_get_negotiated_phymode__pack + (const RpcReqWifiStaGetNegotiatedPhymode *message, uint8_t *out); -size_t rpc__req__wifi_stop__pack_to_buffer - (const RpcReqWifiStop *message, +size_t rpc__req__wifi_sta_get_negotiated_phymode__pack_to_buffer + (const RpcReqWifiStaGetNegotiatedPhymode *message, ProtobufCBuffer *buffer); -RpcReqWifiStop * - rpc__req__wifi_stop__unpack +RpcReqWifiStaGetNegotiatedPhymode * + rpc__req__wifi_sta_get_negotiated_phymode__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_stop__free_unpacked - (RpcReqWifiStop *message, +void rpc__req__wifi_sta_get_negotiated_phymode__free_unpacked + (RpcReqWifiStaGetNegotiatedPhymode *message, ProtobufCAllocator *allocator); -/* RpcRespWifiStop methods */ -void rpc__resp__wifi_stop__init - (RpcRespWifiStop *message); -size_t rpc__resp__wifi_stop__get_packed_size - (const RpcRespWifiStop *message); -size_t rpc__resp__wifi_stop__pack - (const RpcRespWifiStop *message, +/* RpcRespWifiStaGetNegotiatedPhymode methods */ +void rpc__resp__wifi_sta_get_negotiated_phymode__init + (RpcRespWifiStaGetNegotiatedPhymode *message); +size_t rpc__resp__wifi_sta_get_negotiated_phymode__get_packed_size + (const RpcRespWifiStaGetNegotiatedPhymode *message); +size_t rpc__resp__wifi_sta_get_negotiated_phymode__pack + (const RpcRespWifiStaGetNegotiatedPhymode *message, uint8_t *out); -size_t rpc__resp__wifi_stop__pack_to_buffer - (const RpcRespWifiStop *message, +size_t rpc__resp__wifi_sta_get_negotiated_phymode__pack_to_buffer + (const RpcRespWifiStaGetNegotiatedPhymode *message, ProtobufCBuffer *buffer); -RpcRespWifiStop * - rpc__resp__wifi_stop__unpack +RpcRespWifiStaGetNegotiatedPhymode * + rpc__resp__wifi_sta_get_negotiated_phymode__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_stop__free_unpacked - (RpcRespWifiStop *message, +void rpc__resp__wifi_sta_get_negotiated_phymode__free_unpacked + (RpcRespWifiStaGetNegotiatedPhymode *message, ProtobufCAllocator *allocator); -/* RpcReqWifiScanStart methods */ -void rpc__req__wifi_scan_start__init - (RpcReqWifiScanStart *message); -size_t rpc__req__wifi_scan_start__get_packed_size - (const RpcReqWifiScanStart *message); -size_t rpc__req__wifi_scan_start__pack - (const RpcReqWifiScanStart *message, +/* RpcRespWifiApGetStaAid methods */ +void rpc__resp__wifi_ap_get_sta_aid__init + (RpcRespWifiApGetStaAid *message); +size_t rpc__resp__wifi_ap_get_sta_aid__get_packed_size + (const RpcRespWifiApGetStaAid *message); +size_t rpc__resp__wifi_ap_get_sta_aid__pack + (const RpcRespWifiApGetStaAid *message, uint8_t *out); -size_t rpc__req__wifi_scan_start__pack_to_buffer - (const RpcReqWifiScanStart *message, +size_t rpc__resp__wifi_ap_get_sta_aid__pack_to_buffer + (const RpcRespWifiApGetStaAid *message, ProtobufCBuffer *buffer); -RpcReqWifiScanStart * - rpc__req__wifi_scan_start__unpack +RpcRespWifiApGetStaAid * + rpc__resp__wifi_ap_get_sta_aid__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_scan_start__free_unpacked - (RpcReqWifiScanStart *message, +void rpc__resp__wifi_ap_get_sta_aid__free_unpacked + (RpcRespWifiApGetStaAid *message, ProtobufCAllocator *allocator); -/* RpcRespWifiScanStart methods */ -void rpc__resp__wifi_scan_start__init - (RpcRespWifiScanStart *message); -size_t rpc__resp__wifi_scan_start__get_packed_size - (const RpcRespWifiScanStart *message); -size_t rpc__resp__wifi_scan_start__pack - (const RpcRespWifiScanStart *message, +/* RpcReqWifiStaGetRssi methods */ +void rpc__req__wifi_sta_get_rssi__init + (RpcReqWifiStaGetRssi *message); +size_t rpc__req__wifi_sta_get_rssi__get_packed_size + (const RpcReqWifiStaGetRssi *message); +size_t rpc__req__wifi_sta_get_rssi__pack + (const RpcReqWifiStaGetRssi *message, uint8_t *out); -size_t rpc__resp__wifi_scan_start__pack_to_buffer - (const RpcRespWifiScanStart *message, +size_t rpc__req__wifi_sta_get_rssi__pack_to_buffer + (const RpcReqWifiStaGetRssi *message, ProtobufCBuffer *buffer); -RpcRespWifiScanStart * - rpc__resp__wifi_scan_start__unpack +RpcReqWifiStaGetRssi * + rpc__req__wifi_sta_get_rssi__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_scan_start__free_unpacked - (RpcRespWifiScanStart *message, +void rpc__req__wifi_sta_get_rssi__free_unpacked + (RpcReqWifiStaGetRssi *message, ProtobufCAllocator *allocator); -/* RpcReqWifiScanStop methods */ -void rpc__req__wifi_scan_stop__init - (RpcReqWifiScanStop *message); -size_t rpc__req__wifi_scan_stop__get_packed_size - (const RpcReqWifiScanStop *message); -size_t rpc__req__wifi_scan_stop__pack - (const RpcReqWifiScanStop *message, +/* RpcRespWifiStaGetRssi methods */ +void rpc__resp__wifi_sta_get_rssi__init + (RpcRespWifiStaGetRssi *message); +size_t rpc__resp__wifi_sta_get_rssi__get_packed_size + (const RpcRespWifiStaGetRssi *message); +size_t rpc__resp__wifi_sta_get_rssi__pack + (const RpcRespWifiStaGetRssi *message, uint8_t *out); -size_t rpc__req__wifi_scan_stop__pack_to_buffer - (const RpcReqWifiScanStop *message, +size_t rpc__resp__wifi_sta_get_rssi__pack_to_buffer + (const RpcRespWifiStaGetRssi *message, ProtobufCBuffer *buffer); -RpcReqWifiScanStop * - rpc__req__wifi_scan_stop__unpack +RpcRespWifiStaGetRssi * + rpc__resp__wifi_sta_get_rssi__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_scan_stop__free_unpacked - (RpcReqWifiScanStop *message, +void rpc__resp__wifi_sta_get_rssi__free_unpacked + (RpcRespWifiStaGetRssi *message, ProtobufCAllocator *allocator); -/* RpcRespWifiScanStop methods */ -void rpc__resp__wifi_scan_stop__init - (RpcRespWifiScanStop *message); -size_t rpc__resp__wifi_scan_stop__get_packed_size - (const RpcRespWifiScanStop *message); -size_t rpc__resp__wifi_scan_stop__pack - (const RpcRespWifiScanStop *message, +/* RpcReqWifiStaGetAid methods */ +void rpc__req__wifi_sta_get_aid__init + (RpcReqWifiStaGetAid *message); +size_t rpc__req__wifi_sta_get_aid__get_packed_size + (const RpcReqWifiStaGetAid *message); +size_t rpc__req__wifi_sta_get_aid__pack + (const RpcReqWifiStaGetAid *message, uint8_t *out); -size_t rpc__resp__wifi_scan_stop__pack_to_buffer - (const RpcRespWifiScanStop *message, +size_t rpc__req__wifi_sta_get_aid__pack_to_buffer + (const RpcReqWifiStaGetAid *message, ProtobufCBuffer *buffer); -RpcRespWifiScanStop * - rpc__resp__wifi_scan_stop__unpack +RpcReqWifiStaGetAid * + rpc__req__wifi_sta_get_aid__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_scan_stop__free_unpacked - (RpcRespWifiScanStop *message, +void rpc__req__wifi_sta_get_aid__free_unpacked + (RpcReqWifiStaGetAid *message, ProtobufCAllocator *allocator); -/* RpcReqWifiScanGetApNum methods */ -void rpc__req__wifi_scan_get_ap_num__init - (RpcReqWifiScanGetApNum *message); -size_t rpc__req__wifi_scan_get_ap_num__get_packed_size - (const RpcReqWifiScanGetApNum *message); -size_t rpc__req__wifi_scan_get_ap_num__pack - (const RpcReqWifiScanGetApNum *message, +/* RpcRespWifiStaGetAid methods */ +void rpc__resp__wifi_sta_get_aid__init + (RpcRespWifiStaGetAid *message); +size_t rpc__resp__wifi_sta_get_aid__get_packed_size + (const RpcRespWifiStaGetAid *message); +size_t rpc__resp__wifi_sta_get_aid__pack + (const RpcRespWifiStaGetAid *message, uint8_t *out); -size_t rpc__req__wifi_scan_get_ap_num__pack_to_buffer - (const RpcReqWifiScanGetApNum *message, +size_t rpc__resp__wifi_sta_get_aid__pack_to_buffer + (const RpcRespWifiStaGetAid *message, ProtobufCBuffer *buffer); -RpcReqWifiScanGetApNum * - rpc__req__wifi_scan_get_ap_num__unpack +RpcRespWifiStaGetAid * + rpc__resp__wifi_sta_get_aid__unpack (ProtobufCAllocator *allocator, - size_t len, - const uint8_t *data); -void rpc__req__wifi_scan_get_ap_num__free_unpacked - (RpcReqWifiScanGetApNum *message, - ProtobufCAllocator *allocator); -/* RpcRespWifiScanGetApNum methods */ -void rpc__resp__wifi_scan_get_ap_num__init - (RpcRespWifiScanGetApNum *message); -size_t rpc__resp__wifi_scan_get_ap_num__get_packed_size - (const RpcRespWifiScanGetApNum *message); -size_t rpc__resp__wifi_scan_get_ap_num__pack - (const RpcRespWifiScanGetApNum *message, + size_t len, + const uint8_t *data); +void rpc__resp__wifi_sta_get_aid__free_unpacked + (RpcRespWifiStaGetAid *message, + ProtobufCAllocator *allocator); +/* RpcReqWifiSetProtocols methods */ +void rpc__req__wifi_set_protocols__init + (RpcReqWifiSetProtocols *message); +size_t rpc__req__wifi_set_protocols__get_packed_size + (const RpcReqWifiSetProtocols *message); +size_t rpc__req__wifi_set_protocols__pack + (const RpcReqWifiSetProtocols *message, uint8_t *out); -size_t rpc__resp__wifi_scan_get_ap_num__pack_to_buffer - (const RpcRespWifiScanGetApNum *message, +size_t rpc__req__wifi_set_protocols__pack_to_buffer + (const RpcReqWifiSetProtocols *message, ProtobufCBuffer *buffer); -RpcRespWifiScanGetApNum * - rpc__resp__wifi_scan_get_ap_num__unpack +RpcReqWifiSetProtocols * + rpc__req__wifi_set_protocols__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_scan_get_ap_num__free_unpacked - (RpcRespWifiScanGetApNum *message, +void rpc__req__wifi_set_protocols__free_unpacked + (RpcReqWifiSetProtocols *message, ProtobufCAllocator *allocator); -/* RpcReqWifiScanGetApRecords methods */ -void rpc__req__wifi_scan_get_ap_records__init - (RpcReqWifiScanGetApRecords *message); -size_t rpc__req__wifi_scan_get_ap_records__get_packed_size - (const RpcReqWifiScanGetApRecords *message); -size_t rpc__req__wifi_scan_get_ap_records__pack - (const RpcReqWifiScanGetApRecords *message, +/* RpcRespWifiSetProtocols methods */ +void rpc__resp__wifi_set_protocols__init + (RpcRespWifiSetProtocols *message); +size_t rpc__resp__wifi_set_protocols__get_packed_size + (const RpcRespWifiSetProtocols *message); +size_t rpc__resp__wifi_set_protocols__pack + (const RpcRespWifiSetProtocols *message, uint8_t *out); -size_t rpc__req__wifi_scan_get_ap_records__pack_to_buffer - (const RpcReqWifiScanGetApRecords *message, +size_t rpc__resp__wifi_set_protocols__pack_to_buffer + (const RpcRespWifiSetProtocols *message, ProtobufCBuffer *buffer); -RpcReqWifiScanGetApRecords * - rpc__req__wifi_scan_get_ap_records__unpack +RpcRespWifiSetProtocols * + rpc__resp__wifi_set_protocols__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_scan_get_ap_records__free_unpacked - (RpcReqWifiScanGetApRecords *message, +void rpc__resp__wifi_set_protocols__free_unpacked + (RpcRespWifiSetProtocols *message, ProtobufCAllocator *allocator); -/* RpcRespWifiScanGetApRecords methods */ -void rpc__resp__wifi_scan_get_ap_records__init - (RpcRespWifiScanGetApRecords *message); -size_t rpc__resp__wifi_scan_get_ap_records__get_packed_size - (const RpcRespWifiScanGetApRecords *message); -size_t rpc__resp__wifi_scan_get_ap_records__pack - (const RpcRespWifiScanGetApRecords *message, +/* RpcReqWifiGetProtocols methods */ +void rpc__req__wifi_get_protocols__init + (RpcReqWifiGetProtocols *message); +size_t rpc__req__wifi_get_protocols__get_packed_size + (const RpcReqWifiGetProtocols *message); +size_t rpc__req__wifi_get_protocols__pack + (const RpcReqWifiGetProtocols *message, uint8_t *out); -size_t rpc__resp__wifi_scan_get_ap_records__pack_to_buffer - (const RpcRespWifiScanGetApRecords *message, +size_t rpc__req__wifi_get_protocols__pack_to_buffer + (const RpcReqWifiGetProtocols *message, ProtobufCBuffer *buffer); -RpcRespWifiScanGetApRecords * - rpc__resp__wifi_scan_get_ap_records__unpack +RpcReqWifiGetProtocols * + rpc__req__wifi_get_protocols__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_scan_get_ap_records__free_unpacked - (RpcRespWifiScanGetApRecords *message, +void rpc__req__wifi_get_protocols__free_unpacked + (RpcReqWifiGetProtocols *message, ProtobufCAllocator *allocator); -/* RpcReqWifiScanGetApRecord methods */ -void rpc__req__wifi_scan_get_ap_record__init - (RpcReqWifiScanGetApRecord *message); -size_t rpc__req__wifi_scan_get_ap_record__get_packed_size - (const RpcReqWifiScanGetApRecord *message); -size_t rpc__req__wifi_scan_get_ap_record__pack - (const RpcReqWifiScanGetApRecord *message, +/* RpcRespWifiGetProtocols methods */ +void rpc__resp__wifi_get_protocols__init + (RpcRespWifiGetProtocols *message); +size_t rpc__resp__wifi_get_protocols__get_packed_size + (const RpcRespWifiGetProtocols *message); +size_t rpc__resp__wifi_get_protocols__pack + (const RpcRespWifiGetProtocols *message, uint8_t *out); -size_t rpc__req__wifi_scan_get_ap_record__pack_to_buffer - (const RpcReqWifiScanGetApRecord *message, +size_t rpc__resp__wifi_get_protocols__pack_to_buffer + (const RpcRespWifiGetProtocols *message, ProtobufCBuffer *buffer); -RpcReqWifiScanGetApRecord * - rpc__req__wifi_scan_get_ap_record__unpack +RpcRespWifiGetProtocols * + rpc__resp__wifi_get_protocols__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_scan_get_ap_record__free_unpacked - (RpcReqWifiScanGetApRecord *message, +void rpc__resp__wifi_get_protocols__free_unpacked + (RpcRespWifiGetProtocols *message, ProtobufCAllocator *allocator); -/* RpcRespWifiScanGetApRecord methods */ -void rpc__resp__wifi_scan_get_ap_record__init - (RpcRespWifiScanGetApRecord *message); -size_t rpc__resp__wifi_scan_get_ap_record__get_packed_size - (const RpcRespWifiScanGetApRecord *message); -size_t rpc__resp__wifi_scan_get_ap_record__pack - (const RpcRespWifiScanGetApRecord *message, +/* RpcReqWifiSetBandwidths methods */ +void rpc__req__wifi_set_bandwidths__init + (RpcReqWifiSetBandwidths *message); +size_t rpc__req__wifi_set_bandwidths__get_packed_size + (const RpcReqWifiSetBandwidths *message); +size_t rpc__req__wifi_set_bandwidths__pack + (const RpcReqWifiSetBandwidths *message, uint8_t *out); -size_t rpc__resp__wifi_scan_get_ap_record__pack_to_buffer - (const RpcRespWifiScanGetApRecord *message, +size_t rpc__req__wifi_set_bandwidths__pack_to_buffer + (const RpcReqWifiSetBandwidths *message, ProtobufCBuffer *buffer); -RpcRespWifiScanGetApRecord * - rpc__resp__wifi_scan_get_ap_record__unpack +RpcReqWifiSetBandwidths * + rpc__req__wifi_set_bandwidths__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_scan_get_ap_record__free_unpacked - (RpcRespWifiScanGetApRecord *message, +void rpc__req__wifi_set_bandwidths__free_unpacked + (RpcReqWifiSetBandwidths *message, ProtobufCAllocator *allocator); -/* RpcReqWifiClearApList methods */ -void rpc__req__wifi_clear_ap_list__init - (RpcReqWifiClearApList *message); -size_t rpc__req__wifi_clear_ap_list__get_packed_size - (const RpcReqWifiClearApList *message); -size_t rpc__req__wifi_clear_ap_list__pack - (const RpcReqWifiClearApList *message, +/* RpcRespWifiSetBandwidths methods */ +void rpc__resp__wifi_set_bandwidths__init + (RpcRespWifiSetBandwidths *message); +size_t rpc__resp__wifi_set_bandwidths__get_packed_size + (const RpcRespWifiSetBandwidths *message); +size_t rpc__resp__wifi_set_bandwidths__pack + (const RpcRespWifiSetBandwidths *message, uint8_t *out); -size_t rpc__req__wifi_clear_ap_list__pack_to_buffer - (const RpcReqWifiClearApList *message, +size_t rpc__resp__wifi_set_bandwidths__pack_to_buffer + (const RpcRespWifiSetBandwidths *message, ProtobufCBuffer *buffer); -RpcReqWifiClearApList * - rpc__req__wifi_clear_ap_list__unpack +RpcRespWifiSetBandwidths * + rpc__resp__wifi_set_bandwidths__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_clear_ap_list__free_unpacked - (RpcReqWifiClearApList *message, +void rpc__resp__wifi_set_bandwidths__free_unpacked + (RpcRespWifiSetBandwidths *message, ProtobufCAllocator *allocator); -/* RpcRespWifiClearApList methods */ -void rpc__resp__wifi_clear_ap_list__init - (RpcRespWifiClearApList *message); -size_t rpc__resp__wifi_clear_ap_list__get_packed_size - (const RpcRespWifiClearApList *message); -size_t rpc__resp__wifi_clear_ap_list__pack - (const RpcRespWifiClearApList *message, +/* RpcReqWifiGetBandwidths methods */ +void rpc__req__wifi_get_bandwidths__init + (RpcReqWifiGetBandwidths *message); +size_t rpc__req__wifi_get_bandwidths__get_packed_size + (const RpcReqWifiGetBandwidths *message); +size_t rpc__req__wifi_get_bandwidths__pack + (const RpcReqWifiGetBandwidths *message, uint8_t *out); -size_t rpc__resp__wifi_clear_ap_list__pack_to_buffer - (const RpcRespWifiClearApList *message, +size_t rpc__req__wifi_get_bandwidths__pack_to_buffer + (const RpcReqWifiGetBandwidths *message, ProtobufCBuffer *buffer); -RpcRespWifiClearApList * - rpc__resp__wifi_clear_ap_list__unpack +RpcReqWifiGetBandwidths * + rpc__req__wifi_get_bandwidths__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_clear_ap_list__free_unpacked - (RpcRespWifiClearApList *message, +void rpc__req__wifi_get_bandwidths__free_unpacked + (RpcReqWifiGetBandwidths *message, ProtobufCAllocator *allocator); -/* RpcReqWifiRestore methods */ -void rpc__req__wifi_restore__init - (RpcReqWifiRestore *message); -size_t rpc__req__wifi_restore__get_packed_size - (const RpcReqWifiRestore *message); -size_t rpc__req__wifi_restore__pack - (const RpcReqWifiRestore *message, +/* RpcRespWifiGetBandwidths methods */ +void rpc__resp__wifi_get_bandwidths__init + (RpcRespWifiGetBandwidths *message); +size_t rpc__resp__wifi_get_bandwidths__get_packed_size + (const RpcRespWifiGetBandwidths *message); +size_t rpc__resp__wifi_get_bandwidths__pack + (const RpcRespWifiGetBandwidths *message, uint8_t *out); -size_t rpc__req__wifi_restore__pack_to_buffer - (const RpcReqWifiRestore *message, +size_t rpc__resp__wifi_get_bandwidths__pack_to_buffer + (const RpcRespWifiGetBandwidths *message, ProtobufCBuffer *buffer); -RpcReqWifiRestore * - rpc__req__wifi_restore__unpack +RpcRespWifiGetBandwidths * + rpc__resp__wifi_get_bandwidths__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_restore__free_unpacked - (RpcReqWifiRestore *message, +void rpc__resp__wifi_get_bandwidths__free_unpacked + (RpcRespWifiGetBandwidths *message, ProtobufCAllocator *allocator); -/* RpcRespWifiRestore methods */ -void rpc__resp__wifi_restore__init - (RpcRespWifiRestore *message); -size_t rpc__resp__wifi_restore__get_packed_size - (const RpcRespWifiRestore *message); -size_t rpc__resp__wifi_restore__pack - (const RpcRespWifiRestore *message, +/* RpcReqWifiSetBand methods */ +void rpc__req__wifi_set_band__init + (RpcReqWifiSetBand *message); +size_t rpc__req__wifi_set_band__get_packed_size + (const RpcReqWifiSetBand *message); +size_t rpc__req__wifi_set_band__pack + (const RpcReqWifiSetBand *message, uint8_t *out); -size_t rpc__resp__wifi_restore__pack_to_buffer - (const RpcRespWifiRestore *message, +size_t rpc__req__wifi_set_band__pack_to_buffer + (const RpcReqWifiSetBand *message, ProtobufCBuffer *buffer); -RpcRespWifiRestore * - rpc__resp__wifi_restore__unpack +RpcReqWifiSetBand * + rpc__req__wifi_set_band__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_restore__free_unpacked - (RpcRespWifiRestore *message, +void rpc__req__wifi_set_band__free_unpacked + (RpcReqWifiSetBand *message, ProtobufCAllocator *allocator); -/* RpcReqWifiClearFastConnect methods */ -void rpc__req__wifi_clear_fast_connect__init - (RpcReqWifiClearFastConnect *message); -size_t rpc__req__wifi_clear_fast_connect__get_packed_size - (const RpcReqWifiClearFastConnect *message); -size_t rpc__req__wifi_clear_fast_connect__pack - (const RpcReqWifiClearFastConnect *message, +/* RpcRespWifiSetBand methods */ +void rpc__resp__wifi_set_band__init + (RpcRespWifiSetBand *message); +size_t rpc__resp__wifi_set_band__get_packed_size + (const RpcRespWifiSetBand *message); +size_t rpc__resp__wifi_set_band__pack + (const RpcRespWifiSetBand *message, uint8_t *out); -size_t rpc__req__wifi_clear_fast_connect__pack_to_buffer - (const RpcReqWifiClearFastConnect *message, +size_t rpc__resp__wifi_set_band__pack_to_buffer + (const RpcRespWifiSetBand *message, ProtobufCBuffer *buffer); -RpcReqWifiClearFastConnect * - rpc__req__wifi_clear_fast_connect__unpack +RpcRespWifiSetBand * + rpc__resp__wifi_set_band__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_clear_fast_connect__free_unpacked - (RpcReqWifiClearFastConnect *message, +void rpc__resp__wifi_set_band__free_unpacked + (RpcRespWifiSetBand *message, ProtobufCAllocator *allocator); -/* RpcRespWifiClearFastConnect methods */ -void rpc__resp__wifi_clear_fast_connect__init - (RpcRespWifiClearFastConnect *message); -size_t rpc__resp__wifi_clear_fast_connect__get_packed_size - (const RpcRespWifiClearFastConnect *message); -size_t rpc__resp__wifi_clear_fast_connect__pack - (const RpcRespWifiClearFastConnect *message, +/* RpcReqWifiGetBand methods */ +void rpc__req__wifi_get_band__init + (RpcReqWifiGetBand *message); +size_t rpc__req__wifi_get_band__get_packed_size + (const RpcReqWifiGetBand *message); +size_t rpc__req__wifi_get_band__pack + (const RpcReqWifiGetBand *message, uint8_t *out); -size_t rpc__resp__wifi_clear_fast_connect__pack_to_buffer - (const RpcRespWifiClearFastConnect *message, +size_t rpc__req__wifi_get_band__pack_to_buffer + (const RpcReqWifiGetBand *message, ProtobufCBuffer *buffer); -RpcRespWifiClearFastConnect * - rpc__resp__wifi_clear_fast_connect__unpack +RpcReqWifiGetBand * + rpc__req__wifi_get_band__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_clear_fast_connect__free_unpacked - (RpcRespWifiClearFastConnect *message, +void rpc__req__wifi_get_band__free_unpacked + (RpcReqWifiGetBand *message, ProtobufCAllocator *allocator); -/* RpcReqWifiDeauthSta methods */ -void rpc__req__wifi_deauth_sta__init - (RpcReqWifiDeauthSta *message); -size_t rpc__req__wifi_deauth_sta__get_packed_size - (const RpcReqWifiDeauthSta *message); -size_t rpc__req__wifi_deauth_sta__pack - (const RpcReqWifiDeauthSta *message, +/* RpcRespWifiGetBand methods */ +void rpc__resp__wifi_get_band__init + (RpcRespWifiGetBand *message); +size_t rpc__resp__wifi_get_band__get_packed_size + (const RpcRespWifiGetBand *message); +size_t rpc__resp__wifi_get_band__pack + (const RpcRespWifiGetBand *message, uint8_t *out); -size_t rpc__req__wifi_deauth_sta__pack_to_buffer - (const RpcReqWifiDeauthSta *message, +size_t rpc__resp__wifi_get_band__pack_to_buffer + (const RpcRespWifiGetBand *message, ProtobufCBuffer *buffer); -RpcReqWifiDeauthSta * - rpc__req__wifi_deauth_sta__unpack +RpcRespWifiGetBand * + rpc__resp__wifi_get_band__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_deauth_sta__free_unpacked - (RpcReqWifiDeauthSta *message, +void rpc__resp__wifi_get_band__free_unpacked + (RpcRespWifiGetBand *message, ProtobufCAllocator *allocator); -/* RpcRespWifiDeauthSta methods */ -void rpc__resp__wifi_deauth_sta__init - (RpcRespWifiDeauthSta *message); -size_t rpc__resp__wifi_deauth_sta__get_packed_size - (const RpcRespWifiDeauthSta *message); -size_t rpc__resp__wifi_deauth_sta__pack - (const RpcRespWifiDeauthSta *message, +/* RpcReqWifiSetBandMode methods */ +void rpc__req__wifi_set_band_mode__init + (RpcReqWifiSetBandMode *message); +size_t rpc__req__wifi_set_band_mode__get_packed_size + (const RpcReqWifiSetBandMode *message); +size_t rpc__req__wifi_set_band_mode__pack + (const RpcReqWifiSetBandMode *message, uint8_t *out); -size_t rpc__resp__wifi_deauth_sta__pack_to_buffer - (const RpcRespWifiDeauthSta *message, +size_t rpc__req__wifi_set_band_mode__pack_to_buffer + (const RpcReqWifiSetBandMode *message, ProtobufCBuffer *buffer); -RpcRespWifiDeauthSta * - rpc__resp__wifi_deauth_sta__unpack +RpcReqWifiSetBandMode * + rpc__req__wifi_set_band_mode__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_deauth_sta__free_unpacked - (RpcRespWifiDeauthSta *message, +void rpc__req__wifi_set_band_mode__free_unpacked + (RpcReqWifiSetBandMode *message, ProtobufCAllocator *allocator); -/* RpcReqWifiStaGetApInfo methods */ -void rpc__req__wifi_sta_get_ap_info__init - (RpcReqWifiStaGetApInfo *message); -size_t rpc__req__wifi_sta_get_ap_info__get_packed_size - (const RpcReqWifiStaGetApInfo *message); -size_t rpc__req__wifi_sta_get_ap_info__pack - (const RpcReqWifiStaGetApInfo *message, +/* RpcRespWifiSetBandMode methods */ +void rpc__resp__wifi_set_band_mode__init + (RpcRespWifiSetBandMode *message); +size_t rpc__resp__wifi_set_band_mode__get_packed_size + (const RpcRespWifiSetBandMode *message); +size_t rpc__resp__wifi_set_band_mode__pack + (const RpcRespWifiSetBandMode *message, uint8_t *out); -size_t rpc__req__wifi_sta_get_ap_info__pack_to_buffer - (const RpcReqWifiStaGetApInfo *message, +size_t rpc__resp__wifi_set_band_mode__pack_to_buffer + (const RpcRespWifiSetBandMode *message, ProtobufCBuffer *buffer); -RpcReqWifiStaGetApInfo * - rpc__req__wifi_sta_get_ap_info__unpack +RpcRespWifiSetBandMode * + rpc__resp__wifi_set_band_mode__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_sta_get_ap_info__free_unpacked - (RpcReqWifiStaGetApInfo *message, +void rpc__resp__wifi_set_band_mode__free_unpacked + (RpcRespWifiSetBandMode *message, ProtobufCAllocator *allocator); -/* RpcRespWifiStaGetApInfo methods */ -void rpc__resp__wifi_sta_get_ap_info__init - (RpcRespWifiStaGetApInfo *message); -size_t rpc__resp__wifi_sta_get_ap_info__get_packed_size - (const RpcRespWifiStaGetApInfo *message); -size_t rpc__resp__wifi_sta_get_ap_info__pack - (const RpcRespWifiStaGetApInfo *message, +/* RpcReqWifiGetBandMode methods */ +void rpc__req__wifi_get_band_mode__init + (RpcReqWifiGetBandMode *message); +size_t rpc__req__wifi_get_band_mode__get_packed_size + (const RpcReqWifiGetBandMode *message); +size_t rpc__req__wifi_get_band_mode__pack + (const RpcReqWifiGetBandMode *message, uint8_t *out); -size_t rpc__resp__wifi_sta_get_ap_info__pack_to_buffer - (const RpcRespWifiStaGetApInfo *message, +size_t rpc__req__wifi_get_band_mode__pack_to_buffer + (const RpcReqWifiGetBandMode *message, ProtobufCBuffer *buffer); -RpcRespWifiStaGetApInfo * - rpc__resp__wifi_sta_get_ap_info__unpack +RpcReqWifiGetBandMode * + rpc__req__wifi_get_band_mode__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_sta_get_ap_info__free_unpacked - (RpcRespWifiStaGetApInfo *message, +void rpc__req__wifi_get_band_mode__free_unpacked + (RpcReqWifiGetBandMode *message, ProtobufCAllocator *allocator); -/* RpcReqWifiSetProtocol methods */ -void rpc__req__wifi_set_protocol__init - (RpcReqWifiSetProtocol *message); -size_t rpc__req__wifi_set_protocol__get_packed_size - (const RpcReqWifiSetProtocol *message); -size_t rpc__req__wifi_set_protocol__pack - (const RpcReqWifiSetProtocol *message, +/* RpcRespWifiGetBandMode methods */ +void rpc__resp__wifi_get_band_mode__init + (RpcRespWifiGetBandMode *message); +size_t rpc__resp__wifi_get_band_mode__get_packed_size + (const RpcRespWifiGetBandMode *message); +size_t rpc__resp__wifi_get_band_mode__pack + (const RpcRespWifiGetBandMode *message, uint8_t *out); -size_t rpc__req__wifi_set_protocol__pack_to_buffer - (const RpcReqWifiSetProtocol *message, +size_t rpc__resp__wifi_get_band_mode__pack_to_buffer + (const RpcRespWifiGetBandMode *message, ProtobufCBuffer *buffer); -RpcReqWifiSetProtocol * - rpc__req__wifi_set_protocol__unpack +RpcRespWifiGetBandMode * + rpc__resp__wifi_get_band_mode__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_set_protocol__free_unpacked - (RpcReqWifiSetProtocol *message, +void rpc__resp__wifi_get_band_mode__free_unpacked + (RpcRespWifiGetBandMode *message, ProtobufCAllocator *allocator); -/* RpcRespWifiSetProtocol methods */ -void rpc__resp__wifi_set_protocol__init - (RpcRespWifiSetProtocol *message); -size_t rpc__resp__wifi_set_protocol__get_packed_size - (const RpcRespWifiSetProtocol *message); -size_t rpc__resp__wifi_set_protocol__pack - (const RpcRespWifiSetProtocol *message, +/* RpcReqWifiSetInactiveTime methods */ +void rpc__req__wifi_set_inactive_time__init + (RpcReqWifiSetInactiveTime *message); +size_t rpc__req__wifi_set_inactive_time__get_packed_size + (const RpcReqWifiSetInactiveTime *message); +size_t rpc__req__wifi_set_inactive_time__pack + (const RpcReqWifiSetInactiveTime *message, uint8_t *out); -size_t rpc__resp__wifi_set_protocol__pack_to_buffer - (const RpcRespWifiSetProtocol *message, +size_t rpc__req__wifi_set_inactive_time__pack_to_buffer + (const RpcReqWifiSetInactiveTime *message, ProtobufCBuffer *buffer); -RpcRespWifiSetProtocol * - rpc__resp__wifi_set_protocol__unpack +RpcReqWifiSetInactiveTime * + rpc__req__wifi_set_inactive_time__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_set_protocol__free_unpacked - (RpcRespWifiSetProtocol *message, +void rpc__req__wifi_set_inactive_time__free_unpacked + (RpcReqWifiSetInactiveTime *message, ProtobufCAllocator *allocator); -/* RpcReqWifiGetProtocol methods */ -void rpc__req__wifi_get_protocol__init - (RpcReqWifiGetProtocol *message); -size_t rpc__req__wifi_get_protocol__get_packed_size - (const RpcReqWifiGetProtocol *message); -size_t rpc__req__wifi_get_protocol__pack - (const RpcReqWifiGetProtocol *message, +/* RpcRespWifiSetInactiveTime methods */ +void rpc__resp__wifi_set_inactive_time__init + (RpcRespWifiSetInactiveTime *message); +size_t rpc__resp__wifi_set_inactive_time__get_packed_size + (const RpcRespWifiSetInactiveTime *message); +size_t rpc__resp__wifi_set_inactive_time__pack + (const RpcRespWifiSetInactiveTime *message, uint8_t *out); -size_t rpc__req__wifi_get_protocol__pack_to_buffer - (const RpcReqWifiGetProtocol *message, +size_t rpc__resp__wifi_set_inactive_time__pack_to_buffer + (const RpcRespWifiSetInactiveTime *message, ProtobufCBuffer *buffer); -RpcReqWifiGetProtocol * - rpc__req__wifi_get_protocol__unpack +RpcRespWifiSetInactiveTime * + rpc__resp__wifi_set_inactive_time__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_get_protocol__free_unpacked - (RpcReqWifiGetProtocol *message, +void rpc__resp__wifi_set_inactive_time__free_unpacked + (RpcRespWifiSetInactiveTime *message, ProtobufCAllocator *allocator); -/* RpcRespWifiGetProtocol methods */ -void rpc__resp__wifi_get_protocol__init - (RpcRespWifiGetProtocol *message); -size_t rpc__resp__wifi_get_protocol__get_packed_size - (const RpcRespWifiGetProtocol *message); -size_t rpc__resp__wifi_get_protocol__pack - (const RpcRespWifiGetProtocol *message, +/* RpcReqWifiGetInactiveTime methods */ +void rpc__req__wifi_get_inactive_time__init + (RpcReqWifiGetInactiveTime *message); +size_t rpc__req__wifi_get_inactive_time__get_packed_size + (const RpcReqWifiGetInactiveTime *message); +size_t rpc__req__wifi_get_inactive_time__pack + (const RpcReqWifiGetInactiveTime *message, uint8_t *out); -size_t rpc__resp__wifi_get_protocol__pack_to_buffer - (const RpcRespWifiGetProtocol *message, +size_t rpc__req__wifi_get_inactive_time__pack_to_buffer + (const RpcReqWifiGetInactiveTime *message, ProtobufCBuffer *buffer); -RpcRespWifiGetProtocol * - rpc__resp__wifi_get_protocol__unpack +RpcReqWifiGetInactiveTime * + rpc__req__wifi_get_inactive_time__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_get_protocol__free_unpacked - (RpcRespWifiGetProtocol *message, +void rpc__req__wifi_get_inactive_time__free_unpacked + (RpcReqWifiGetInactiveTime *message, ProtobufCAllocator *allocator); -/* RpcReqWifiSetBandwidth methods */ -void rpc__req__wifi_set_bandwidth__init - (RpcReqWifiSetBandwidth *message); -size_t rpc__req__wifi_set_bandwidth__get_packed_size - (const RpcReqWifiSetBandwidth *message); -size_t rpc__req__wifi_set_bandwidth__pack - (const RpcReqWifiSetBandwidth *message, +/* RpcRespWifiGetInactiveTime methods */ +void rpc__resp__wifi_get_inactive_time__init + (RpcRespWifiGetInactiveTime *message); +size_t rpc__resp__wifi_get_inactive_time__get_packed_size + (const RpcRespWifiGetInactiveTime *message); +size_t rpc__resp__wifi_get_inactive_time__pack + (const RpcRespWifiGetInactiveTime *message, uint8_t *out); -size_t rpc__req__wifi_set_bandwidth__pack_to_buffer - (const RpcReqWifiSetBandwidth *message, +size_t rpc__resp__wifi_get_inactive_time__pack_to_buffer + (const RpcRespWifiGetInactiveTime *message, ProtobufCBuffer *buffer); -RpcReqWifiSetBandwidth * - rpc__req__wifi_set_bandwidth__unpack +RpcRespWifiGetInactiveTime * + rpc__resp__wifi_get_inactive_time__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_set_bandwidth__free_unpacked - (RpcReqWifiSetBandwidth *message, +void rpc__resp__wifi_get_inactive_time__free_unpacked + (RpcRespWifiGetInactiveTime *message, ProtobufCAllocator *allocator); -/* RpcRespWifiSetBandwidth methods */ -void rpc__resp__wifi_set_bandwidth__init - (RpcRespWifiSetBandwidth *message); -size_t rpc__resp__wifi_set_bandwidth__get_packed_size - (const RpcRespWifiSetBandwidth *message); -size_t rpc__resp__wifi_set_bandwidth__pack - (const RpcRespWifiSetBandwidth *message, +/* RpcReqWifiStaItwtSetup methods */ +void rpc__req__wifi_sta_itwt_setup__init + (RpcReqWifiStaItwtSetup *message); +size_t rpc__req__wifi_sta_itwt_setup__get_packed_size + (const RpcReqWifiStaItwtSetup *message); +size_t rpc__req__wifi_sta_itwt_setup__pack + (const RpcReqWifiStaItwtSetup *message, uint8_t *out); -size_t rpc__resp__wifi_set_bandwidth__pack_to_buffer - (const RpcRespWifiSetBandwidth *message, +size_t rpc__req__wifi_sta_itwt_setup__pack_to_buffer + (const RpcReqWifiStaItwtSetup *message, ProtobufCBuffer *buffer); -RpcRespWifiSetBandwidth * - rpc__resp__wifi_set_bandwidth__unpack +RpcReqWifiStaItwtSetup * + rpc__req__wifi_sta_itwt_setup__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_set_bandwidth__free_unpacked - (RpcRespWifiSetBandwidth *message, +void rpc__req__wifi_sta_itwt_setup__free_unpacked + (RpcReqWifiStaItwtSetup *message, ProtobufCAllocator *allocator); -/* RpcReqWifiGetBandwidth methods */ -void rpc__req__wifi_get_bandwidth__init - (RpcReqWifiGetBandwidth *message); -size_t rpc__req__wifi_get_bandwidth__get_packed_size - (const RpcReqWifiGetBandwidth *message); -size_t rpc__req__wifi_get_bandwidth__pack - (const RpcReqWifiGetBandwidth *message, +/* RpcRespWifiStaItwtSetup methods */ +void rpc__resp__wifi_sta_itwt_setup__init + (RpcRespWifiStaItwtSetup *message); +size_t rpc__resp__wifi_sta_itwt_setup__get_packed_size + (const RpcRespWifiStaItwtSetup *message); +size_t rpc__resp__wifi_sta_itwt_setup__pack + (const RpcRespWifiStaItwtSetup *message, uint8_t *out); -size_t rpc__req__wifi_get_bandwidth__pack_to_buffer - (const RpcReqWifiGetBandwidth *message, +size_t rpc__resp__wifi_sta_itwt_setup__pack_to_buffer + (const RpcRespWifiStaItwtSetup *message, ProtobufCBuffer *buffer); -RpcReqWifiGetBandwidth * - rpc__req__wifi_get_bandwidth__unpack +RpcRespWifiStaItwtSetup * + rpc__resp__wifi_sta_itwt_setup__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_get_bandwidth__free_unpacked - (RpcReqWifiGetBandwidth *message, +void rpc__resp__wifi_sta_itwt_setup__free_unpacked + (RpcRespWifiStaItwtSetup *message, ProtobufCAllocator *allocator); -/* RpcRespWifiGetBandwidth methods */ -void rpc__resp__wifi_get_bandwidth__init - (RpcRespWifiGetBandwidth *message); -size_t rpc__resp__wifi_get_bandwidth__get_packed_size - (const RpcRespWifiGetBandwidth *message); -size_t rpc__resp__wifi_get_bandwidth__pack - (const RpcRespWifiGetBandwidth *message, +/* RpcReqWifiStaItwtTeardown methods */ +void rpc__req__wifi_sta_itwt_teardown__init + (RpcReqWifiStaItwtTeardown *message); +size_t rpc__req__wifi_sta_itwt_teardown__get_packed_size + (const RpcReqWifiStaItwtTeardown *message); +size_t rpc__req__wifi_sta_itwt_teardown__pack + (const RpcReqWifiStaItwtTeardown *message, uint8_t *out); -size_t rpc__resp__wifi_get_bandwidth__pack_to_buffer - (const RpcRespWifiGetBandwidth *message, +size_t rpc__req__wifi_sta_itwt_teardown__pack_to_buffer + (const RpcReqWifiStaItwtTeardown *message, ProtobufCBuffer *buffer); -RpcRespWifiGetBandwidth * - rpc__resp__wifi_get_bandwidth__unpack +RpcReqWifiStaItwtTeardown * + rpc__req__wifi_sta_itwt_teardown__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_get_bandwidth__free_unpacked - (RpcRespWifiGetBandwidth *message, +void rpc__req__wifi_sta_itwt_teardown__free_unpacked + (RpcReqWifiStaItwtTeardown *message, ProtobufCAllocator *allocator); -/* RpcReqWifiSetChannel methods */ -void rpc__req__wifi_set_channel__init - (RpcReqWifiSetChannel *message); -size_t rpc__req__wifi_set_channel__get_packed_size - (const RpcReqWifiSetChannel *message); -size_t rpc__req__wifi_set_channel__pack - (const RpcReqWifiSetChannel *message, +/* RpcRespWifiStaItwtTeardown methods */ +void rpc__resp__wifi_sta_itwt_teardown__init + (RpcRespWifiStaItwtTeardown *message); +size_t rpc__resp__wifi_sta_itwt_teardown__get_packed_size + (const RpcRespWifiStaItwtTeardown *message); +size_t rpc__resp__wifi_sta_itwt_teardown__pack + (const RpcRespWifiStaItwtTeardown *message, uint8_t *out); -size_t rpc__req__wifi_set_channel__pack_to_buffer - (const RpcReqWifiSetChannel *message, +size_t rpc__resp__wifi_sta_itwt_teardown__pack_to_buffer + (const RpcRespWifiStaItwtTeardown *message, ProtobufCBuffer *buffer); -RpcReqWifiSetChannel * - rpc__req__wifi_set_channel__unpack +RpcRespWifiStaItwtTeardown * + rpc__resp__wifi_sta_itwt_teardown__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_set_channel__free_unpacked - (RpcReqWifiSetChannel *message, +void rpc__resp__wifi_sta_itwt_teardown__free_unpacked + (RpcRespWifiStaItwtTeardown *message, ProtobufCAllocator *allocator); -/* RpcRespWifiSetChannel methods */ -void rpc__resp__wifi_set_channel__init - (RpcRespWifiSetChannel *message); -size_t rpc__resp__wifi_set_channel__get_packed_size - (const RpcRespWifiSetChannel *message); -size_t rpc__resp__wifi_set_channel__pack - (const RpcRespWifiSetChannel *message, +/* RpcReqWifiStaItwtSuspend methods */ +void rpc__req__wifi_sta_itwt_suspend__init + (RpcReqWifiStaItwtSuspend *message); +size_t rpc__req__wifi_sta_itwt_suspend__get_packed_size + (const RpcReqWifiStaItwtSuspend *message); +size_t rpc__req__wifi_sta_itwt_suspend__pack + (const RpcReqWifiStaItwtSuspend *message, uint8_t *out); -size_t rpc__resp__wifi_set_channel__pack_to_buffer - (const RpcRespWifiSetChannel *message, +size_t rpc__req__wifi_sta_itwt_suspend__pack_to_buffer + (const RpcReqWifiStaItwtSuspend *message, ProtobufCBuffer *buffer); -RpcRespWifiSetChannel * - rpc__resp__wifi_set_channel__unpack +RpcReqWifiStaItwtSuspend * + rpc__req__wifi_sta_itwt_suspend__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_set_channel__free_unpacked - (RpcRespWifiSetChannel *message, +void rpc__req__wifi_sta_itwt_suspend__free_unpacked + (RpcReqWifiStaItwtSuspend *message, ProtobufCAllocator *allocator); -/* RpcReqWifiGetChannel methods */ -void rpc__req__wifi_get_channel__init - (RpcReqWifiGetChannel *message); -size_t rpc__req__wifi_get_channel__get_packed_size - (const RpcReqWifiGetChannel *message); -size_t rpc__req__wifi_get_channel__pack - (const RpcReqWifiGetChannel *message, +/* RpcRespWifiStaItwtSuspend methods */ +void rpc__resp__wifi_sta_itwt_suspend__init + (RpcRespWifiStaItwtSuspend *message); +size_t rpc__resp__wifi_sta_itwt_suspend__get_packed_size + (const RpcRespWifiStaItwtSuspend *message); +size_t rpc__resp__wifi_sta_itwt_suspend__pack + (const RpcRespWifiStaItwtSuspend *message, uint8_t *out); -size_t rpc__req__wifi_get_channel__pack_to_buffer - (const RpcReqWifiGetChannel *message, +size_t rpc__resp__wifi_sta_itwt_suspend__pack_to_buffer + (const RpcRespWifiStaItwtSuspend *message, ProtobufCBuffer *buffer); -RpcReqWifiGetChannel * - rpc__req__wifi_get_channel__unpack +RpcRespWifiStaItwtSuspend * + rpc__resp__wifi_sta_itwt_suspend__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_get_channel__free_unpacked - (RpcReqWifiGetChannel *message, +void rpc__resp__wifi_sta_itwt_suspend__free_unpacked + (RpcRespWifiStaItwtSuspend *message, ProtobufCAllocator *allocator); -/* RpcRespWifiGetChannel methods */ -void rpc__resp__wifi_get_channel__init - (RpcRespWifiGetChannel *message); -size_t rpc__resp__wifi_get_channel__get_packed_size - (const RpcRespWifiGetChannel *message); -size_t rpc__resp__wifi_get_channel__pack - (const RpcRespWifiGetChannel *message, +/* RpcReqWifiStaItwtGetFlowIdStatus methods */ +void rpc__req__wifi_sta_itwt_get_flow_id_status__init + (RpcReqWifiStaItwtGetFlowIdStatus *message); +size_t rpc__req__wifi_sta_itwt_get_flow_id_status__get_packed_size + (const RpcReqWifiStaItwtGetFlowIdStatus *message); +size_t rpc__req__wifi_sta_itwt_get_flow_id_status__pack + (const RpcReqWifiStaItwtGetFlowIdStatus *message, uint8_t *out); -size_t rpc__resp__wifi_get_channel__pack_to_buffer - (const RpcRespWifiGetChannel *message, +size_t rpc__req__wifi_sta_itwt_get_flow_id_status__pack_to_buffer + (const RpcReqWifiStaItwtGetFlowIdStatus *message, ProtobufCBuffer *buffer); -RpcRespWifiGetChannel * - rpc__resp__wifi_get_channel__unpack +RpcReqWifiStaItwtGetFlowIdStatus * + rpc__req__wifi_sta_itwt_get_flow_id_status__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_get_channel__free_unpacked - (RpcRespWifiGetChannel *message, +void rpc__req__wifi_sta_itwt_get_flow_id_status__free_unpacked + (RpcReqWifiStaItwtGetFlowIdStatus *message, ProtobufCAllocator *allocator); -/* RpcReqWifiSetStorage methods */ -void rpc__req__wifi_set_storage__init - (RpcReqWifiSetStorage *message); -size_t rpc__req__wifi_set_storage__get_packed_size - (const RpcReqWifiSetStorage *message); -size_t rpc__req__wifi_set_storage__pack - (const RpcReqWifiSetStorage *message, +/* RpcRespWifiStaItwtGetFlowIdStatus methods */ +void rpc__resp__wifi_sta_itwt_get_flow_id_status__init + (RpcRespWifiStaItwtGetFlowIdStatus *message); +size_t rpc__resp__wifi_sta_itwt_get_flow_id_status__get_packed_size + (const RpcRespWifiStaItwtGetFlowIdStatus *message); +size_t rpc__resp__wifi_sta_itwt_get_flow_id_status__pack + (const RpcRespWifiStaItwtGetFlowIdStatus *message, uint8_t *out); -size_t rpc__req__wifi_set_storage__pack_to_buffer - (const RpcReqWifiSetStorage *message, +size_t rpc__resp__wifi_sta_itwt_get_flow_id_status__pack_to_buffer + (const RpcRespWifiStaItwtGetFlowIdStatus *message, ProtobufCBuffer *buffer); -RpcReqWifiSetStorage * - rpc__req__wifi_set_storage__unpack +RpcRespWifiStaItwtGetFlowIdStatus * + rpc__resp__wifi_sta_itwt_get_flow_id_status__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_set_storage__free_unpacked - (RpcReqWifiSetStorage *message, +void rpc__resp__wifi_sta_itwt_get_flow_id_status__free_unpacked + (RpcRespWifiStaItwtGetFlowIdStatus *message, ProtobufCAllocator *allocator); -/* RpcRespWifiSetStorage methods */ -void rpc__resp__wifi_set_storage__init - (RpcRespWifiSetStorage *message); -size_t rpc__resp__wifi_set_storage__get_packed_size - (const RpcRespWifiSetStorage *message); -size_t rpc__resp__wifi_set_storage__pack - (const RpcRespWifiSetStorage *message, +/* RpcReqWifiStaItwtSendProbeReq methods */ +void rpc__req__wifi_sta_itwt_send_probe_req__init + (RpcReqWifiStaItwtSendProbeReq *message); +size_t rpc__req__wifi_sta_itwt_send_probe_req__get_packed_size + (const RpcReqWifiStaItwtSendProbeReq *message); +size_t rpc__req__wifi_sta_itwt_send_probe_req__pack + (const RpcReqWifiStaItwtSendProbeReq *message, uint8_t *out); -size_t rpc__resp__wifi_set_storage__pack_to_buffer - (const RpcRespWifiSetStorage *message, +size_t rpc__req__wifi_sta_itwt_send_probe_req__pack_to_buffer + (const RpcReqWifiStaItwtSendProbeReq *message, ProtobufCBuffer *buffer); -RpcRespWifiSetStorage * - rpc__resp__wifi_set_storage__unpack +RpcReqWifiStaItwtSendProbeReq * + rpc__req__wifi_sta_itwt_send_probe_req__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_set_storage__free_unpacked - (RpcRespWifiSetStorage *message, +void rpc__req__wifi_sta_itwt_send_probe_req__free_unpacked + (RpcReqWifiStaItwtSendProbeReq *message, ProtobufCAllocator *allocator); -/* RpcReqWifiSetCountryCode methods */ -void rpc__req__wifi_set_country_code__init - (RpcReqWifiSetCountryCode *message); -size_t rpc__req__wifi_set_country_code__get_packed_size - (const RpcReqWifiSetCountryCode *message); -size_t rpc__req__wifi_set_country_code__pack - (const RpcReqWifiSetCountryCode *message, +/* RpcRespWifiStaItwtSendProbeReq methods */ +void rpc__resp__wifi_sta_itwt_send_probe_req__init + (RpcRespWifiStaItwtSendProbeReq *message); +size_t rpc__resp__wifi_sta_itwt_send_probe_req__get_packed_size + (const RpcRespWifiStaItwtSendProbeReq *message); +size_t rpc__resp__wifi_sta_itwt_send_probe_req__pack + (const RpcRespWifiStaItwtSendProbeReq *message, uint8_t *out); -size_t rpc__req__wifi_set_country_code__pack_to_buffer - (const RpcReqWifiSetCountryCode *message, +size_t rpc__resp__wifi_sta_itwt_send_probe_req__pack_to_buffer + (const RpcRespWifiStaItwtSendProbeReq *message, ProtobufCBuffer *buffer); -RpcReqWifiSetCountryCode * - rpc__req__wifi_set_country_code__unpack +RpcRespWifiStaItwtSendProbeReq * + rpc__resp__wifi_sta_itwt_send_probe_req__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_set_country_code__free_unpacked - (RpcReqWifiSetCountryCode *message, +void rpc__resp__wifi_sta_itwt_send_probe_req__free_unpacked + (RpcRespWifiStaItwtSendProbeReq *message, ProtobufCAllocator *allocator); -/* RpcRespWifiSetCountryCode methods */ -void rpc__resp__wifi_set_country_code__init - (RpcRespWifiSetCountryCode *message); -size_t rpc__resp__wifi_set_country_code__get_packed_size - (const RpcRespWifiSetCountryCode *message); -size_t rpc__resp__wifi_set_country_code__pack - (const RpcRespWifiSetCountryCode *message, +/* RpcReqWifiStaItwtSetTargetWakeTimeOffset methods */ +void rpc__req__wifi_sta_itwt_set_target_wake_time_offset__init + (RpcReqWifiStaItwtSetTargetWakeTimeOffset *message); +size_t rpc__req__wifi_sta_itwt_set_target_wake_time_offset__get_packed_size + (const RpcReqWifiStaItwtSetTargetWakeTimeOffset *message); +size_t rpc__req__wifi_sta_itwt_set_target_wake_time_offset__pack + (const RpcReqWifiStaItwtSetTargetWakeTimeOffset *message, uint8_t *out); -size_t rpc__resp__wifi_set_country_code__pack_to_buffer - (const RpcRespWifiSetCountryCode *message, +size_t rpc__req__wifi_sta_itwt_set_target_wake_time_offset__pack_to_buffer + (const RpcReqWifiStaItwtSetTargetWakeTimeOffset *message, ProtobufCBuffer *buffer); -RpcRespWifiSetCountryCode * - rpc__resp__wifi_set_country_code__unpack +RpcReqWifiStaItwtSetTargetWakeTimeOffset * + rpc__req__wifi_sta_itwt_set_target_wake_time_offset__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_set_country_code__free_unpacked - (RpcRespWifiSetCountryCode *message, +void rpc__req__wifi_sta_itwt_set_target_wake_time_offset__free_unpacked + (RpcReqWifiStaItwtSetTargetWakeTimeOffset *message, ProtobufCAllocator *allocator); -/* RpcReqWifiGetCountryCode methods */ -void rpc__req__wifi_get_country_code__init - (RpcReqWifiGetCountryCode *message); -size_t rpc__req__wifi_get_country_code__get_packed_size - (const RpcReqWifiGetCountryCode *message); -size_t rpc__req__wifi_get_country_code__pack - (const RpcReqWifiGetCountryCode *message, +/* RpcRespWifiStaItwtSetTargetWakeTimeOffset methods */ +void rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__init + (RpcRespWifiStaItwtSetTargetWakeTimeOffset *message); +size_t rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__get_packed_size + (const RpcRespWifiStaItwtSetTargetWakeTimeOffset *message); +size_t rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__pack + (const RpcRespWifiStaItwtSetTargetWakeTimeOffset *message, uint8_t *out); -size_t rpc__req__wifi_get_country_code__pack_to_buffer - (const RpcReqWifiGetCountryCode *message, +size_t rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__pack_to_buffer + (const RpcRespWifiStaItwtSetTargetWakeTimeOffset *message, ProtobufCBuffer *buffer); -RpcReqWifiGetCountryCode * - rpc__req__wifi_get_country_code__unpack +RpcRespWifiStaItwtSetTargetWakeTimeOffset * + rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_get_country_code__free_unpacked - (RpcReqWifiGetCountryCode *message, +void rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__free_unpacked + (RpcRespWifiStaItwtSetTargetWakeTimeOffset *message, ProtobufCAllocator *allocator); -/* RpcRespWifiGetCountryCode methods */ -void rpc__resp__wifi_get_country_code__init - (RpcRespWifiGetCountryCode *message); -size_t rpc__resp__wifi_get_country_code__get_packed_size - (const RpcRespWifiGetCountryCode *message); -size_t rpc__resp__wifi_get_country_code__pack - (const RpcRespWifiGetCountryCode *message, +/* RpcReqWifiStaTwtConfig methods */ +void rpc__req__wifi_sta_twt_config__init + (RpcReqWifiStaTwtConfig *message); +size_t rpc__req__wifi_sta_twt_config__get_packed_size + (const RpcReqWifiStaTwtConfig *message); +size_t rpc__req__wifi_sta_twt_config__pack + (const RpcReqWifiStaTwtConfig *message, uint8_t *out); -size_t rpc__resp__wifi_get_country_code__pack_to_buffer - (const RpcRespWifiGetCountryCode *message, +size_t rpc__req__wifi_sta_twt_config__pack_to_buffer + (const RpcReqWifiStaTwtConfig *message, ProtobufCBuffer *buffer); -RpcRespWifiGetCountryCode * - rpc__resp__wifi_get_country_code__unpack +RpcReqWifiStaTwtConfig * + rpc__req__wifi_sta_twt_config__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_get_country_code__free_unpacked - (RpcRespWifiGetCountryCode *message, +void rpc__req__wifi_sta_twt_config__free_unpacked + (RpcReqWifiStaTwtConfig *message, ProtobufCAllocator *allocator); -/* RpcReqWifiSetCountry methods */ -void rpc__req__wifi_set_country__init - (RpcReqWifiSetCountry *message); -size_t rpc__req__wifi_set_country__get_packed_size - (const RpcReqWifiSetCountry *message); -size_t rpc__req__wifi_set_country__pack - (const RpcReqWifiSetCountry *message, +/* RpcRespWifiStaTwtConfig methods */ +void rpc__resp__wifi_sta_twt_config__init + (RpcRespWifiStaTwtConfig *message); +size_t rpc__resp__wifi_sta_twt_config__get_packed_size + (const RpcRespWifiStaTwtConfig *message); +size_t rpc__resp__wifi_sta_twt_config__pack + (const RpcRespWifiStaTwtConfig *message, uint8_t *out); -size_t rpc__req__wifi_set_country__pack_to_buffer - (const RpcReqWifiSetCountry *message, +size_t rpc__resp__wifi_sta_twt_config__pack_to_buffer + (const RpcRespWifiStaTwtConfig *message, ProtobufCBuffer *buffer); -RpcReqWifiSetCountry * - rpc__req__wifi_set_country__unpack +RpcRespWifiStaTwtConfig * + rpc__resp__wifi_sta_twt_config__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_set_country__free_unpacked - (RpcReqWifiSetCountry *message, +void rpc__resp__wifi_sta_twt_config__free_unpacked + (RpcRespWifiStaTwtConfig *message, ProtobufCAllocator *allocator); -/* RpcRespWifiSetCountry methods */ -void rpc__resp__wifi_set_country__init - (RpcRespWifiSetCountry *message); -size_t rpc__resp__wifi_set_country__get_packed_size - (const RpcRespWifiSetCountry *message); -size_t rpc__resp__wifi_set_country__pack - (const RpcRespWifiSetCountry *message, +/* RpcReqGetCoprocessorFwVersion methods */ +void rpc__req__get_coprocessor_fw_version__init + (RpcReqGetCoprocessorFwVersion *message); +size_t rpc__req__get_coprocessor_fw_version__get_packed_size + (const RpcReqGetCoprocessorFwVersion *message); +size_t rpc__req__get_coprocessor_fw_version__pack + (const RpcReqGetCoprocessorFwVersion *message, uint8_t *out); -size_t rpc__resp__wifi_set_country__pack_to_buffer - (const RpcRespWifiSetCountry *message, +size_t rpc__req__get_coprocessor_fw_version__pack_to_buffer + (const RpcReqGetCoprocessorFwVersion *message, ProtobufCBuffer *buffer); -RpcRespWifiSetCountry * - rpc__resp__wifi_set_country__unpack +RpcReqGetCoprocessorFwVersion * + rpc__req__get_coprocessor_fw_version__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_set_country__free_unpacked - (RpcRespWifiSetCountry *message, +void rpc__req__get_coprocessor_fw_version__free_unpacked + (RpcReqGetCoprocessorFwVersion *message, ProtobufCAllocator *allocator); -/* RpcReqWifiGetCountry methods */ -void rpc__req__wifi_get_country__init - (RpcReqWifiGetCountry *message); -size_t rpc__req__wifi_get_country__get_packed_size - (const RpcReqWifiGetCountry *message); -size_t rpc__req__wifi_get_country__pack - (const RpcReqWifiGetCountry *message, +/* RpcRespGetCoprocessorFwVersion methods */ +void rpc__resp__get_coprocessor_fw_version__init + (RpcRespGetCoprocessorFwVersion *message); +size_t rpc__resp__get_coprocessor_fw_version__get_packed_size + (const RpcRespGetCoprocessorFwVersion *message); +size_t rpc__resp__get_coprocessor_fw_version__pack + (const RpcRespGetCoprocessorFwVersion *message, uint8_t *out); -size_t rpc__req__wifi_get_country__pack_to_buffer - (const RpcReqWifiGetCountry *message, +size_t rpc__resp__get_coprocessor_fw_version__pack_to_buffer + (const RpcRespGetCoprocessorFwVersion *message, ProtobufCBuffer *buffer); -RpcReqWifiGetCountry * - rpc__req__wifi_get_country__unpack +RpcRespGetCoprocessorFwVersion * + rpc__resp__get_coprocessor_fw_version__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_get_country__free_unpacked - (RpcReqWifiGetCountry *message, +void rpc__resp__get_coprocessor_fw_version__free_unpacked + (RpcRespGetCoprocessorFwVersion *message, ProtobufCAllocator *allocator); -/* RpcRespWifiGetCountry methods */ -void rpc__resp__wifi_get_country__init - (RpcRespWifiGetCountry *message); -size_t rpc__resp__wifi_get_country__get_packed_size - (const RpcRespWifiGetCountry *message); -size_t rpc__resp__wifi_get_country__pack - (const RpcRespWifiGetCountry *message, +/* RpcReqSetDhcpDnsStatus methods */ +void rpc__req__set_dhcp_dns_status__init + (RpcReqSetDhcpDnsStatus *message); +size_t rpc__req__set_dhcp_dns_status__get_packed_size + (const RpcReqSetDhcpDnsStatus *message); +size_t rpc__req__set_dhcp_dns_status__pack + (const RpcReqSetDhcpDnsStatus *message, uint8_t *out); -size_t rpc__resp__wifi_get_country__pack_to_buffer - (const RpcRespWifiGetCountry *message, +size_t rpc__req__set_dhcp_dns_status__pack_to_buffer + (const RpcReqSetDhcpDnsStatus *message, ProtobufCBuffer *buffer); -RpcRespWifiGetCountry * - rpc__resp__wifi_get_country__unpack +RpcReqSetDhcpDnsStatus * + rpc__req__set_dhcp_dns_status__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_get_country__free_unpacked - (RpcRespWifiGetCountry *message, +void rpc__req__set_dhcp_dns_status__free_unpacked + (RpcReqSetDhcpDnsStatus *message, ProtobufCAllocator *allocator); -/* RpcReqWifiApGetStaList methods */ -void rpc__req__wifi_ap_get_sta_list__init - (RpcReqWifiApGetStaList *message); -size_t rpc__req__wifi_ap_get_sta_list__get_packed_size - (const RpcReqWifiApGetStaList *message); -size_t rpc__req__wifi_ap_get_sta_list__pack - (const RpcReqWifiApGetStaList *message, +/* RpcRespSetDhcpDnsStatus methods */ +void rpc__resp__set_dhcp_dns_status__init + (RpcRespSetDhcpDnsStatus *message); +size_t rpc__resp__set_dhcp_dns_status__get_packed_size + (const RpcRespSetDhcpDnsStatus *message); +size_t rpc__resp__set_dhcp_dns_status__pack + (const RpcRespSetDhcpDnsStatus *message, uint8_t *out); -size_t rpc__req__wifi_ap_get_sta_list__pack_to_buffer - (const RpcReqWifiApGetStaList *message, +size_t rpc__resp__set_dhcp_dns_status__pack_to_buffer + (const RpcRespSetDhcpDnsStatus *message, ProtobufCBuffer *buffer); -RpcReqWifiApGetStaList * - rpc__req__wifi_ap_get_sta_list__unpack +RpcRespSetDhcpDnsStatus * + rpc__resp__set_dhcp_dns_status__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_ap_get_sta_list__free_unpacked - (RpcReqWifiApGetStaList *message, +void rpc__resp__set_dhcp_dns_status__free_unpacked + (RpcRespSetDhcpDnsStatus *message, ProtobufCAllocator *allocator); -/* RpcRespWifiApGetStaList methods */ -void rpc__resp__wifi_ap_get_sta_list__init - (RpcRespWifiApGetStaList *message); -size_t rpc__resp__wifi_ap_get_sta_list__get_packed_size - (const RpcRespWifiApGetStaList *message); -size_t rpc__resp__wifi_ap_get_sta_list__pack - (const RpcRespWifiApGetStaList *message, +/* RpcReqGetDhcpDnsStatus methods */ +void rpc__req__get_dhcp_dns_status__init + (RpcReqGetDhcpDnsStatus *message); +size_t rpc__req__get_dhcp_dns_status__get_packed_size + (const RpcReqGetDhcpDnsStatus *message); +size_t rpc__req__get_dhcp_dns_status__pack + (const RpcReqGetDhcpDnsStatus *message, uint8_t *out); -size_t rpc__resp__wifi_ap_get_sta_list__pack_to_buffer - (const RpcRespWifiApGetStaList *message, +size_t rpc__req__get_dhcp_dns_status__pack_to_buffer + (const RpcReqGetDhcpDnsStatus *message, ProtobufCBuffer *buffer); -RpcRespWifiApGetStaList * - rpc__resp__wifi_ap_get_sta_list__unpack +RpcReqGetDhcpDnsStatus * + rpc__req__get_dhcp_dns_status__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_ap_get_sta_list__free_unpacked - (RpcRespWifiApGetStaList *message, +void rpc__req__get_dhcp_dns_status__free_unpacked + (RpcReqGetDhcpDnsStatus *message, ProtobufCAllocator *allocator); -/* RpcReqWifiApGetStaAid methods */ -void rpc__req__wifi_ap_get_sta_aid__init - (RpcReqWifiApGetStaAid *message); -size_t rpc__req__wifi_ap_get_sta_aid__get_packed_size - (const RpcReqWifiApGetStaAid *message); -size_t rpc__req__wifi_ap_get_sta_aid__pack - (const RpcReqWifiApGetStaAid *message, +/* RpcRespGetDhcpDnsStatus methods */ +void rpc__resp__get_dhcp_dns_status__init + (RpcRespGetDhcpDnsStatus *message); +size_t rpc__resp__get_dhcp_dns_status__get_packed_size + (const RpcRespGetDhcpDnsStatus *message); +size_t rpc__resp__get_dhcp_dns_status__pack + (const RpcRespGetDhcpDnsStatus *message, uint8_t *out); -size_t rpc__req__wifi_ap_get_sta_aid__pack_to_buffer - (const RpcReqWifiApGetStaAid *message, +size_t rpc__resp__get_dhcp_dns_status__pack_to_buffer + (const RpcRespGetDhcpDnsStatus *message, ProtobufCBuffer *buffer); -RpcReqWifiApGetStaAid * - rpc__req__wifi_ap_get_sta_aid__unpack +RpcRespGetDhcpDnsStatus * + rpc__resp__get_dhcp_dns_status__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_ap_get_sta_aid__free_unpacked - (RpcReqWifiApGetStaAid *message, +void rpc__resp__get_dhcp_dns_status__free_unpacked + (RpcRespGetDhcpDnsStatus *message, ProtobufCAllocator *allocator); -/* RpcReqWifiStaGetNegotiatedPhymode methods */ -void rpc__req__wifi_sta_get_negotiated_phymode__init - (RpcReqWifiStaGetNegotiatedPhymode *message); -size_t rpc__req__wifi_sta_get_negotiated_phymode__get_packed_size - (const RpcReqWifiStaGetNegotiatedPhymode *message); -size_t rpc__req__wifi_sta_get_negotiated_phymode__pack - (const RpcReqWifiStaGetNegotiatedPhymode *message, +/* RpcEventWifiEventNoArgs methods */ +void rpc__event__wifi_event_no_args__init + (RpcEventWifiEventNoArgs *message); +size_t rpc__event__wifi_event_no_args__get_packed_size + (const RpcEventWifiEventNoArgs *message); +size_t rpc__event__wifi_event_no_args__pack + (const RpcEventWifiEventNoArgs *message, uint8_t *out); -size_t rpc__req__wifi_sta_get_negotiated_phymode__pack_to_buffer - (const RpcReqWifiStaGetNegotiatedPhymode *message, +size_t rpc__event__wifi_event_no_args__pack_to_buffer + (const RpcEventWifiEventNoArgs *message, ProtobufCBuffer *buffer); -RpcReqWifiStaGetNegotiatedPhymode * - rpc__req__wifi_sta_get_negotiated_phymode__unpack +RpcEventWifiEventNoArgs * + rpc__event__wifi_event_no_args__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_sta_get_negotiated_phymode__free_unpacked - (RpcReqWifiStaGetNegotiatedPhymode *message, +void rpc__event__wifi_event_no_args__free_unpacked + (RpcEventWifiEventNoArgs *message, ProtobufCAllocator *allocator); -/* RpcRespWifiStaGetNegotiatedPhymode methods */ -void rpc__resp__wifi_sta_get_negotiated_phymode__init - (RpcRespWifiStaGetNegotiatedPhymode *message); -size_t rpc__resp__wifi_sta_get_negotiated_phymode__get_packed_size - (const RpcRespWifiStaGetNegotiatedPhymode *message); -size_t rpc__resp__wifi_sta_get_negotiated_phymode__pack - (const RpcRespWifiStaGetNegotiatedPhymode *message, +/* RpcEventESPInit methods */ +void rpc__event__espinit__init + (RpcEventESPInit *message); +size_t rpc__event__espinit__get_packed_size + (const RpcEventESPInit *message); +size_t rpc__event__espinit__pack + (const RpcEventESPInit *message, uint8_t *out); -size_t rpc__resp__wifi_sta_get_negotiated_phymode__pack_to_buffer - (const RpcRespWifiStaGetNegotiatedPhymode *message, +size_t rpc__event__espinit__pack_to_buffer + (const RpcEventESPInit *message, ProtobufCBuffer *buffer); -RpcRespWifiStaGetNegotiatedPhymode * - rpc__resp__wifi_sta_get_negotiated_phymode__unpack +RpcEventESPInit * + rpc__event__espinit__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_sta_get_negotiated_phymode__free_unpacked - (RpcRespWifiStaGetNegotiatedPhymode *message, +void rpc__event__espinit__free_unpacked + (RpcEventESPInit *message, ProtobufCAllocator *allocator); -/* RpcRespWifiApGetStaAid methods */ -void rpc__resp__wifi_ap_get_sta_aid__init - (RpcRespWifiApGetStaAid *message); -size_t rpc__resp__wifi_ap_get_sta_aid__get_packed_size - (const RpcRespWifiApGetStaAid *message); -size_t rpc__resp__wifi_ap_get_sta_aid__pack - (const RpcRespWifiApGetStaAid *message, +/* RpcEventHeartbeat methods */ +void rpc__event__heartbeat__init + (RpcEventHeartbeat *message); +size_t rpc__event__heartbeat__get_packed_size + (const RpcEventHeartbeat *message); +size_t rpc__event__heartbeat__pack + (const RpcEventHeartbeat *message, uint8_t *out); -size_t rpc__resp__wifi_ap_get_sta_aid__pack_to_buffer - (const RpcRespWifiApGetStaAid *message, +size_t rpc__event__heartbeat__pack_to_buffer + (const RpcEventHeartbeat *message, ProtobufCBuffer *buffer); -RpcRespWifiApGetStaAid * - rpc__resp__wifi_ap_get_sta_aid__unpack +RpcEventHeartbeat * + rpc__event__heartbeat__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_ap_get_sta_aid__free_unpacked - (RpcRespWifiApGetStaAid *message, +void rpc__event__heartbeat__free_unpacked + (RpcEventHeartbeat *message, ProtobufCAllocator *allocator); -/* RpcReqWifiStaGetRssi methods */ -void rpc__req__wifi_sta_get_rssi__init - (RpcReqWifiStaGetRssi *message); -size_t rpc__req__wifi_sta_get_rssi__get_packed_size - (const RpcReqWifiStaGetRssi *message); -size_t rpc__req__wifi_sta_get_rssi__pack - (const RpcReqWifiStaGetRssi *message, +/* RpcEventAPStaDisconnected methods */ +void rpc__event__ap__sta_disconnected__init + (RpcEventAPStaDisconnected *message); +size_t rpc__event__ap__sta_disconnected__get_packed_size + (const RpcEventAPStaDisconnected *message); +size_t rpc__event__ap__sta_disconnected__pack + (const RpcEventAPStaDisconnected *message, uint8_t *out); -size_t rpc__req__wifi_sta_get_rssi__pack_to_buffer - (const RpcReqWifiStaGetRssi *message, +size_t rpc__event__ap__sta_disconnected__pack_to_buffer + (const RpcEventAPStaDisconnected *message, ProtobufCBuffer *buffer); -RpcReqWifiStaGetRssi * - rpc__req__wifi_sta_get_rssi__unpack +RpcEventAPStaDisconnected * + rpc__event__ap__sta_disconnected__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_sta_get_rssi__free_unpacked - (RpcReqWifiStaGetRssi *message, +void rpc__event__ap__sta_disconnected__free_unpacked + (RpcEventAPStaDisconnected *message, ProtobufCAllocator *allocator); -/* RpcRespWifiStaGetRssi methods */ -void rpc__resp__wifi_sta_get_rssi__init - (RpcRespWifiStaGetRssi *message); -size_t rpc__resp__wifi_sta_get_rssi__get_packed_size - (const RpcRespWifiStaGetRssi *message); -size_t rpc__resp__wifi_sta_get_rssi__pack - (const RpcRespWifiStaGetRssi *message, +/* RpcEventAPStaConnected methods */ +void rpc__event__ap__sta_connected__init + (RpcEventAPStaConnected *message); +size_t rpc__event__ap__sta_connected__get_packed_size + (const RpcEventAPStaConnected *message); +size_t rpc__event__ap__sta_connected__pack + (const RpcEventAPStaConnected *message, uint8_t *out); -size_t rpc__resp__wifi_sta_get_rssi__pack_to_buffer - (const RpcRespWifiStaGetRssi *message, +size_t rpc__event__ap__sta_connected__pack_to_buffer + (const RpcEventAPStaConnected *message, ProtobufCBuffer *buffer); -RpcRespWifiStaGetRssi * - rpc__resp__wifi_sta_get_rssi__unpack +RpcEventAPStaConnected * + rpc__event__ap__sta_connected__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_sta_get_rssi__free_unpacked - (RpcRespWifiStaGetRssi *message, +void rpc__event__ap__sta_connected__free_unpacked + (RpcEventAPStaConnected *message, ProtobufCAllocator *allocator); -/* RpcReqWifiStaGetAid methods */ -void rpc__req__wifi_sta_get_aid__init - (RpcReqWifiStaGetAid *message); -size_t rpc__req__wifi_sta_get_aid__get_packed_size - (const RpcReqWifiStaGetAid *message); -size_t rpc__req__wifi_sta_get_aid__pack - (const RpcReqWifiStaGetAid *message, +/* RpcEventStaScanDone methods */ +void rpc__event__sta_scan_done__init + (RpcEventStaScanDone *message); +size_t rpc__event__sta_scan_done__get_packed_size + (const RpcEventStaScanDone *message); +size_t rpc__event__sta_scan_done__pack + (const RpcEventStaScanDone *message, uint8_t *out); -size_t rpc__req__wifi_sta_get_aid__pack_to_buffer - (const RpcReqWifiStaGetAid *message, +size_t rpc__event__sta_scan_done__pack_to_buffer + (const RpcEventStaScanDone *message, ProtobufCBuffer *buffer); -RpcReqWifiStaGetAid * - rpc__req__wifi_sta_get_aid__unpack +RpcEventStaScanDone * + rpc__event__sta_scan_done__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_sta_get_aid__free_unpacked - (RpcReqWifiStaGetAid *message, +void rpc__event__sta_scan_done__free_unpacked + (RpcEventStaScanDone *message, ProtobufCAllocator *allocator); -/* RpcRespWifiStaGetAid methods */ -void rpc__resp__wifi_sta_get_aid__init - (RpcRespWifiStaGetAid *message); -size_t rpc__resp__wifi_sta_get_aid__get_packed_size - (const RpcRespWifiStaGetAid *message); -size_t rpc__resp__wifi_sta_get_aid__pack - (const RpcRespWifiStaGetAid *message, +/* RpcEventStaConnected methods */ +void rpc__event__sta_connected__init + (RpcEventStaConnected *message); +size_t rpc__event__sta_connected__get_packed_size + (const RpcEventStaConnected *message); +size_t rpc__event__sta_connected__pack + (const RpcEventStaConnected *message, uint8_t *out); -size_t rpc__resp__wifi_sta_get_aid__pack_to_buffer - (const RpcRespWifiStaGetAid *message, +size_t rpc__event__sta_connected__pack_to_buffer + (const RpcEventStaConnected *message, ProtobufCBuffer *buffer); -RpcRespWifiStaGetAid * - rpc__resp__wifi_sta_get_aid__unpack +RpcEventStaConnected * + rpc__event__sta_connected__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_sta_get_aid__free_unpacked - (RpcRespWifiStaGetAid *message, +void rpc__event__sta_connected__free_unpacked + (RpcEventStaConnected *message, ProtobufCAllocator *allocator); -/* RpcReqWifiSetProtocols methods */ -void rpc__req__wifi_set_protocols__init - (RpcReqWifiSetProtocols *message); -size_t rpc__req__wifi_set_protocols__get_packed_size - (const RpcReqWifiSetProtocols *message); -size_t rpc__req__wifi_set_protocols__pack - (const RpcReqWifiSetProtocols *message, +/* RpcEventStaDisconnected methods */ +void rpc__event__sta_disconnected__init + (RpcEventStaDisconnected *message); +size_t rpc__event__sta_disconnected__get_packed_size + (const RpcEventStaDisconnected *message); +size_t rpc__event__sta_disconnected__pack + (const RpcEventStaDisconnected *message, uint8_t *out); -size_t rpc__req__wifi_set_protocols__pack_to_buffer - (const RpcReqWifiSetProtocols *message, +size_t rpc__event__sta_disconnected__pack_to_buffer + (const RpcEventStaDisconnected *message, ProtobufCBuffer *buffer); -RpcReqWifiSetProtocols * - rpc__req__wifi_set_protocols__unpack +RpcEventStaDisconnected * + rpc__event__sta_disconnected__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_set_protocols__free_unpacked - (RpcReqWifiSetProtocols *message, +void rpc__event__sta_disconnected__free_unpacked + (RpcEventStaDisconnected *message, ProtobufCAllocator *allocator); -/* RpcRespWifiSetProtocols methods */ -void rpc__resp__wifi_set_protocols__init - (RpcRespWifiSetProtocols *message); -size_t rpc__resp__wifi_set_protocols__get_packed_size - (const RpcRespWifiSetProtocols *message); -size_t rpc__resp__wifi_set_protocols__pack - (const RpcRespWifiSetProtocols *message, +/* RpcEventDhcpDnsStatus methods */ +void rpc__event__dhcp_dns_status__init + (RpcEventDhcpDnsStatus *message); +size_t rpc__event__dhcp_dns_status__get_packed_size + (const RpcEventDhcpDnsStatus *message); +size_t rpc__event__dhcp_dns_status__pack + (const RpcEventDhcpDnsStatus *message, uint8_t *out); -size_t rpc__resp__wifi_set_protocols__pack_to_buffer - (const RpcRespWifiSetProtocols *message, +size_t rpc__event__dhcp_dns_status__pack_to_buffer + (const RpcEventDhcpDnsStatus *message, ProtobufCBuffer *buffer); -RpcRespWifiSetProtocols * - rpc__resp__wifi_set_protocols__unpack +RpcEventDhcpDnsStatus * + rpc__event__dhcp_dns_status__unpack (ProtobufCAllocator *allocator, - size_t len, - const uint8_t *data); -void rpc__resp__wifi_set_protocols__free_unpacked - (RpcRespWifiSetProtocols *message, - ProtobufCAllocator *allocator); -/* RpcReqWifiGetProtocols methods */ -void rpc__req__wifi_get_protocols__init - (RpcReqWifiGetProtocols *message); -size_t rpc__req__wifi_get_protocols__get_packed_size - (const RpcReqWifiGetProtocols *message); -size_t rpc__req__wifi_get_protocols__pack - (const RpcReqWifiGetProtocols *message, + size_t len, + const uint8_t *data); +void rpc__event__dhcp_dns_status__free_unpacked + (RpcEventDhcpDnsStatus *message, + ProtobufCAllocator *allocator); +/* RpcEventStaItwtSetup methods */ +void rpc__event__sta_itwt_setup__init + (RpcEventStaItwtSetup *message); +size_t rpc__event__sta_itwt_setup__get_packed_size + (const RpcEventStaItwtSetup *message); +size_t rpc__event__sta_itwt_setup__pack + (const RpcEventStaItwtSetup *message, uint8_t *out); -size_t rpc__req__wifi_get_protocols__pack_to_buffer - (const RpcReqWifiGetProtocols *message, +size_t rpc__event__sta_itwt_setup__pack_to_buffer + (const RpcEventStaItwtSetup *message, ProtobufCBuffer *buffer); -RpcReqWifiGetProtocols * - rpc__req__wifi_get_protocols__unpack +RpcEventStaItwtSetup * + rpc__event__sta_itwt_setup__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_get_protocols__free_unpacked - (RpcReqWifiGetProtocols *message, +void rpc__event__sta_itwt_setup__free_unpacked + (RpcEventStaItwtSetup *message, ProtobufCAllocator *allocator); -/* RpcRespWifiGetProtocols methods */ -void rpc__resp__wifi_get_protocols__init - (RpcRespWifiGetProtocols *message); -size_t rpc__resp__wifi_get_protocols__get_packed_size - (const RpcRespWifiGetProtocols *message); -size_t rpc__resp__wifi_get_protocols__pack - (const RpcRespWifiGetProtocols *message, +/* RpcEventStaItwtTeardown methods */ +void rpc__event__sta_itwt_teardown__init + (RpcEventStaItwtTeardown *message); +size_t rpc__event__sta_itwt_teardown__get_packed_size + (const RpcEventStaItwtTeardown *message); +size_t rpc__event__sta_itwt_teardown__pack + (const RpcEventStaItwtTeardown *message, uint8_t *out); -size_t rpc__resp__wifi_get_protocols__pack_to_buffer - (const RpcRespWifiGetProtocols *message, +size_t rpc__event__sta_itwt_teardown__pack_to_buffer + (const RpcEventStaItwtTeardown *message, ProtobufCBuffer *buffer); -RpcRespWifiGetProtocols * - rpc__resp__wifi_get_protocols__unpack +RpcEventStaItwtTeardown * + rpc__event__sta_itwt_teardown__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_get_protocols__free_unpacked - (RpcRespWifiGetProtocols *message, +void rpc__event__sta_itwt_teardown__free_unpacked + (RpcEventStaItwtTeardown *message, ProtobufCAllocator *allocator); -/* RpcReqWifiSetBandwidths methods */ -void rpc__req__wifi_set_bandwidths__init - (RpcReqWifiSetBandwidths *message); -size_t rpc__req__wifi_set_bandwidths__get_packed_size - (const RpcReqWifiSetBandwidths *message); -size_t rpc__req__wifi_set_bandwidths__pack - (const RpcReqWifiSetBandwidths *message, +/* RpcEventStaItwtSuspend methods */ +void rpc__event__sta_itwt_suspend__init + (RpcEventStaItwtSuspend *message); +size_t rpc__event__sta_itwt_suspend__get_packed_size + (const RpcEventStaItwtSuspend *message); +size_t rpc__event__sta_itwt_suspend__pack + (const RpcEventStaItwtSuspend *message, uint8_t *out); -size_t rpc__req__wifi_set_bandwidths__pack_to_buffer - (const RpcReqWifiSetBandwidths *message, +size_t rpc__event__sta_itwt_suspend__pack_to_buffer + (const RpcEventStaItwtSuspend *message, ProtobufCBuffer *buffer); -RpcReqWifiSetBandwidths * - rpc__req__wifi_set_bandwidths__unpack +RpcEventStaItwtSuspend * + rpc__event__sta_itwt_suspend__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_set_bandwidths__free_unpacked - (RpcReqWifiSetBandwidths *message, +void rpc__event__sta_itwt_suspend__free_unpacked + (RpcEventStaItwtSuspend *message, ProtobufCAllocator *allocator); -/* RpcRespWifiSetBandwidths methods */ -void rpc__resp__wifi_set_bandwidths__init - (RpcRespWifiSetBandwidths *message); -size_t rpc__resp__wifi_set_bandwidths__get_packed_size - (const RpcRespWifiSetBandwidths *message); -size_t rpc__resp__wifi_set_bandwidths__pack - (const RpcRespWifiSetBandwidths *message, +/* RpcEventStaItwtProbe methods */ +void rpc__event__sta_itwt_probe__init + (RpcEventStaItwtProbe *message); +size_t rpc__event__sta_itwt_probe__get_packed_size + (const RpcEventStaItwtProbe *message); +size_t rpc__event__sta_itwt_probe__pack + (const RpcEventStaItwtProbe *message, uint8_t *out); -size_t rpc__resp__wifi_set_bandwidths__pack_to_buffer - (const RpcRespWifiSetBandwidths *message, +size_t rpc__event__sta_itwt_probe__pack_to_buffer + (const RpcEventStaItwtProbe *message, ProtobufCBuffer *buffer); -RpcRespWifiSetBandwidths * - rpc__resp__wifi_set_bandwidths__unpack +RpcEventStaItwtProbe * + rpc__event__sta_itwt_probe__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_set_bandwidths__free_unpacked - (RpcRespWifiSetBandwidths *message, +void rpc__event__sta_itwt_probe__free_unpacked + (RpcEventStaItwtProbe *message, ProtobufCAllocator *allocator); -/* RpcReqWifiGetBandwidths methods */ -void rpc__req__wifi_get_bandwidths__init - (RpcReqWifiGetBandwidths *message); -size_t rpc__req__wifi_get_bandwidths__get_packed_size - (const RpcReqWifiGetBandwidths *message); -size_t rpc__req__wifi_get_bandwidths__pack - (const RpcReqWifiGetBandwidths *message, +/* RpcReqWifiStaEnterpriseEnable methods */ +void rpc__req__wifi_sta_enterprise_enable__init + (RpcReqWifiStaEnterpriseEnable *message); +size_t rpc__req__wifi_sta_enterprise_enable__get_packed_size + (const RpcReqWifiStaEnterpriseEnable *message); +size_t rpc__req__wifi_sta_enterprise_enable__pack + (const RpcReqWifiStaEnterpriseEnable *message, uint8_t *out); -size_t rpc__req__wifi_get_bandwidths__pack_to_buffer - (const RpcReqWifiGetBandwidths *message, +size_t rpc__req__wifi_sta_enterprise_enable__pack_to_buffer + (const RpcReqWifiStaEnterpriseEnable *message, ProtobufCBuffer *buffer); -RpcReqWifiGetBandwidths * - rpc__req__wifi_get_bandwidths__unpack +RpcReqWifiStaEnterpriseEnable * + rpc__req__wifi_sta_enterprise_enable__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_get_bandwidths__free_unpacked - (RpcReqWifiGetBandwidths *message, +void rpc__req__wifi_sta_enterprise_enable__free_unpacked + (RpcReqWifiStaEnterpriseEnable *message, ProtobufCAllocator *allocator); -/* RpcRespWifiGetBandwidths methods */ -void rpc__resp__wifi_get_bandwidths__init - (RpcRespWifiGetBandwidths *message); -size_t rpc__resp__wifi_get_bandwidths__get_packed_size - (const RpcRespWifiGetBandwidths *message); -size_t rpc__resp__wifi_get_bandwidths__pack - (const RpcRespWifiGetBandwidths *message, +/* RpcRespWifiStaEnterpriseEnable methods */ +void rpc__resp__wifi_sta_enterprise_enable__init + (RpcRespWifiStaEnterpriseEnable *message); +size_t rpc__resp__wifi_sta_enterprise_enable__get_packed_size + (const RpcRespWifiStaEnterpriseEnable *message); +size_t rpc__resp__wifi_sta_enterprise_enable__pack + (const RpcRespWifiStaEnterpriseEnable *message, uint8_t *out); -size_t rpc__resp__wifi_get_bandwidths__pack_to_buffer - (const RpcRespWifiGetBandwidths *message, +size_t rpc__resp__wifi_sta_enterprise_enable__pack_to_buffer + (const RpcRespWifiStaEnterpriseEnable *message, ProtobufCBuffer *buffer); -RpcRespWifiGetBandwidths * - rpc__resp__wifi_get_bandwidths__unpack +RpcRespWifiStaEnterpriseEnable * + rpc__resp__wifi_sta_enterprise_enable__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_get_bandwidths__free_unpacked - (RpcRespWifiGetBandwidths *message, +void rpc__resp__wifi_sta_enterprise_enable__free_unpacked + (RpcRespWifiStaEnterpriseEnable *message, ProtobufCAllocator *allocator); -/* RpcReqWifiSetBand methods */ -void rpc__req__wifi_set_band__init - (RpcReqWifiSetBand *message); -size_t rpc__req__wifi_set_band__get_packed_size - (const RpcReqWifiSetBand *message); -size_t rpc__req__wifi_set_band__pack - (const RpcReqWifiSetBand *message, +/* RpcReqWifiStaEnterpriseDisable methods */ +void rpc__req__wifi_sta_enterprise_disable__init + (RpcReqWifiStaEnterpriseDisable *message); +size_t rpc__req__wifi_sta_enterprise_disable__get_packed_size + (const RpcReqWifiStaEnterpriseDisable *message); +size_t rpc__req__wifi_sta_enterprise_disable__pack + (const RpcReqWifiStaEnterpriseDisable *message, uint8_t *out); -size_t rpc__req__wifi_set_band__pack_to_buffer - (const RpcReqWifiSetBand *message, +size_t rpc__req__wifi_sta_enterprise_disable__pack_to_buffer + (const RpcReqWifiStaEnterpriseDisable *message, ProtobufCBuffer *buffer); -RpcReqWifiSetBand * - rpc__req__wifi_set_band__unpack +RpcReqWifiStaEnterpriseDisable * + rpc__req__wifi_sta_enterprise_disable__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_set_band__free_unpacked - (RpcReqWifiSetBand *message, +void rpc__req__wifi_sta_enterprise_disable__free_unpacked + (RpcReqWifiStaEnterpriseDisable *message, ProtobufCAllocator *allocator); -/* RpcRespWifiSetBand methods */ -void rpc__resp__wifi_set_band__init - (RpcRespWifiSetBand *message); -size_t rpc__resp__wifi_set_band__get_packed_size - (const RpcRespWifiSetBand *message); -size_t rpc__resp__wifi_set_band__pack - (const RpcRespWifiSetBand *message, +/* RpcRespWifiStaEnterpriseDisable methods */ +void rpc__resp__wifi_sta_enterprise_disable__init + (RpcRespWifiStaEnterpriseDisable *message); +size_t rpc__resp__wifi_sta_enterprise_disable__get_packed_size + (const RpcRespWifiStaEnterpriseDisable *message); +size_t rpc__resp__wifi_sta_enterprise_disable__pack + (const RpcRespWifiStaEnterpriseDisable *message, uint8_t *out); -size_t rpc__resp__wifi_set_band__pack_to_buffer - (const RpcRespWifiSetBand *message, +size_t rpc__resp__wifi_sta_enterprise_disable__pack_to_buffer + (const RpcRespWifiStaEnterpriseDisable *message, ProtobufCBuffer *buffer); -RpcRespWifiSetBand * - rpc__resp__wifi_set_band__unpack +RpcRespWifiStaEnterpriseDisable * + rpc__resp__wifi_sta_enterprise_disable__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_set_band__free_unpacked - (RpcRespWifiSetBand *message, +void rpc__resp__wifi_sta_enterprise_disable__free_unpacked + (RpcRespWifiStaEnterpriseDisable *message, ProtobufCAllocator *allocator); -/* RpcReqWifiGetBand methods */ -void rpc__req__wifi_get_band__init - (RpcReqWifiGetBand *message); -size_t rpc__req__wifi_get_band__get_packed_size - (const RpcReqWifiGetBand *message); -size_t rpc__req__wifi_get_band__pack - (const RpcReqWifiGetBand *message, +/* RpcReqEapSetIdentity methods */ +void rpc__req__eap_set_identity__init + (RpcReqEapSetIdentity *message); +size_t rpc__req__eap_set_identity__get_packed_size + (const RpcReqEapSetIdentity *message); +size_t rpc__req__eap_set_identity__pack + (const RpcReqEapSetIdentity *message, uint8_t *out); -size_t rpc__req__wifi_get_band__pack_to_buffer - (const RpcReqWifiGetBand *message, +size_t rpc__req__eap_set_identity__pack_to_buffer + (const RpcReqEapSetIdentity *message, ProtobufCBuffer *buffer); -RpcReqWifiGetBand * - rpc__req__wifi_get_band__unpack +RpcReqEapSetIdentity * + rpc__req__eap_set_identity__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_get_band__free_unpacked - (RpcReqWifiGetBand *message, +void rpc__req__eap_set_identity__free_unpacked + (RpcReqEapSetIdentity *message, ProtobufCAllocator *allocator); -/* RpcRespWifiGetBand methods */ -void rpc__resp__wifi_get_band__init - (RpcRespWifiGetBand *message); -size_t rpc__resp__wifi_get_band__get_packed_size - (const RpcRespWifiGetBand *message); -size_t rpc__resp__wifi_get_band__pack - (const RpcRespWifiGetBand *message, +/* RpcRespEapSetIdentity methods */ +void rpc__resp__eap_set_identity__init + (RpcRespEapSetIdentity *message); +size_t rpc__resp__eap_set_identity__get_packed_size + (const RpcRespEapSetIdentity *message); +size_t rpc__resp__eap_set_identity__pack + (const RpcRespEapSetIdentity *message, uint8_t *out); -size_t rpc__resp__wifi_get_band__pack_to_buffer - (const RpcRespWifiGetBand *message, +size_t rpc__resp__eap_set_identity__pack_to_buffer + (const RpcRespEapSetIdentity *message, ProtobufCBuffer *buffer); -RpcRespWifiGetBand * - rpc__resp__wifi_get_band__unpack +RpcRespEapSetIdentity * + rpc__resp__eap_set_identity__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_get_band__free_unpacked - (RpcRespWifiGetBand *message, +void rpc__resp__eap_set_identity__free_unpacked + (RpcRespEapSetIdentity *message, ProtobufCAllocator *allocator); -/* RpcReqWifiSetBandMode methods */ -void rpc__req__wifi_set_band_mode__init - (RpcReqWifiSetBandMode *message); -size_t rpc__req__wifi_set_band_mode__get_packed_size - (const RpcReqWifiSetBandMode *message); -size_t rpc__req__wifi_set_band_mode__pack - (const RpcReqWifiSetBandMode *message, +/* RpcReqEapClearIdentity methods */ +void rpc__req__eap_clear_identity__init + (RpcReqEapClearIdentity *message); +size_t rpc__req__eap_clear_identity__get_packed_size + (const RpcReqEapClearIdentity *message); +size_t rpc__req__eap_clear_identity__pack + (const RpcReqEapClearIdentity *message, uint8_t *out); -size_t rpc__req__wifi_set_band_mode__pack_to_buffer - (const RpcReqWifiSetBandMode *message, +size_t rpc__req__eap_clear_identity__pack_to_buffer + (const RpcReqEapClearIdentity *message, ProtobufCBuffer *buffer); -RpcReqWifiSetBandMode * - rpc__req__wifi_set_band_mode__unpack +RpcReqEapClearIdentity * + rpc__req__eap_clear_identity__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_set_band_mode__free_unpacked - (RpcReqWifiSetBandMode *message, +void rpc__req__eap_clear_identity__free_unpacked + (RpcReqEapClearIdentity *message, ProtobufCAllocator *allocator); -/* RpcRespWifiSetBandMode methods */ -void rpc__resp__wifi_set_band_mode__init - (RpcRespWifiSetBandMode *message); -size_t rpc__resp__wifi_set_band_mode__get_packed_size - (const RpcRespWifiSetBandMode *message); -size_t rpc__resp__wifi_set_band_mode__pack - (const RpcRespWifiSetBandMode *message, +/* RpcRespEapClearIdentity methods */ +void rpc__resp__eap_clear_identity__init + (RpcRespEapClearIdentity *message); +size_t rpc__resp__eap_clear_identity__get_packed_size + (const RpcRespEapClearIdentity *message); +size_t rpc__resp__eap_clear_identity__pack + (const RpcRespEapClearIdentity *message, uint8_t *out); -size_t rpc__resp__wifi_set_band_mode__pack_to_buffer - (const RpcRespWifiSetBandMode *message, +size_t rpc__resp__eap_clear_identity__pack_to_buffer + (const RpcRespEapClearIdentity *message, ProtobufCBuffer *buffer); -RpcRespWifiSetBandMode * - rpc__resp__wifi_set_band_mode__unpack +RpcRespEapClearIdentity * + rpc__resp__eap_clear_identity__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_set_band_mode__free_unpacked - (RpcRespWifiSetBandMode *message, +void rpc__resp__eap_clear_identity__free_unpacked + (RpcRespEapClearIdentity *message, ProtobufCAllocator *allocator); -/* RpcReqWifiGetBandMode methods */ -void rpc__req__wifi_get_band_mode__init - (RpcReqWifiGetBandMode *message); -size_t rpc__req__wifi_get_band_mode__get_packed_size - (const RpcReqWifiGetBandMode *message); -size_t rpc__req__wifi_get_band_mode__pack - (const RpcReqWifiGetBandMode *message, +/* RpcReqEapSetUsername methods */ +void rpc__req__eap_set_username__init + (RpcReqEapSetUsername *message); +size_t rpc__req__eap_set_username__get_packed_size + (const RpcReqEapSetUsername *message); +size_t rpc__req__eap_set_username__pack + (const RpcReqEapSetUsername *message, uint8_t *out); -size_t rpc__req__wifi_get_band_mode__pack_to_buffer - (const RpcReqWifiGetBandMode *message, +size_t rpc__req__eap_set_username__pack_to_buffer + (const RpcReqEapSetUsername *message, ProtobufCBuffer *buffer); -RpcReqWifiGetBandMode * - rpc__req__wifi_get_band_mode__unpack +RpcReqEapSetUsername * + rpc__req__eap_set_username__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_get_band_mode__free_unpacked - (RpcReqWifiGetBandMode *message, +void rpc__req__eap_set_username__free_unpacked + (RpcReqEapSetUsername *message, ProtobufCAllocator *allocator); -/* RpcRespWifiGetBandMode methods */ -void rpc__resp__wifi_get_band_mode__init - (RpcRespWifiGetBandMode *message); -size_t rpc__resp__wifi_get_band_mode__get_packed_size - (const RpcRespWifiGetBandMode *message); -size_t rpc__resp__wifi_get_band_mode__pack - (const RpcRespWifiGetBandMode *message, +/* RpcRespEapSetUsername methods */ +void rpc__resp__eap_set_username__init + (RpcRespEapSetUsername *message); +size_t rpc__resp__eap_set_username__get_packed_size + (const RpcRespEapSetUsername *message); +size_t rpc__resp__eap_set_username__pack + (const RpcRespEapSetUsername *message, uint8_t *out); -size_t rpc__resp__wifi_get_band_mode__pack_to_buffer - (const RpcRespWifiGetBandMode *message, +size_t rpc__resp__eap_set_username__pack_to_buffer + (const RpcRespEapSetUsername *message, ProtobufCBuffer *buffer); -RpcRespWifiGetBandMode * - rpc__resp__wifi_get_band_mode__unpack +RpcRespEapSetUsername * + rpc__resp__eap_set_username__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_get_band_mode__free_unpacked - (RpcRespWifiGetBandMode *message, +void rpc__resp__eap_set_username__free_unpacked + (RpcRespEapSetUsername *message, ProtobufCAllocator *allocator); -/* RpcReqWifiSetInactiveTime methods */ -void rpc__req__wifi_set_inactive_time__init - (RpcReqWifiSetInactiveTime *message); -size_t rpc__req__wifi_set_inactive_time__get_packed_size - (const RpcReqWifiSetInactiveTime *message); -size_t rpc__req__wifi_set_inactive_time__pack - (const RpcReqWifiSetInactiveTime *message, +/* RpcReqEapClearUsername methods */ +void rpc__req__eap_clear_username__init + (RpcReqEapClearUsername *message); +size_t rpc__req__eap_clear_username__get_packed_size + (const RpcReqEapClearUsername *message); +size_t rpc__req__eap_clear_username__pack + (const RpcReqEapClearUsername *message, uint8_t *out); -size_t rpc__req__wifi_set_inactive_time__pack_to_buffer - (const RpcReqWifiSetInactiveTime *message, +size_t rpc__req__eap_clear_username__pack_to_buffer + (const RpcReqEapClearUsername *message, ProtobufCBuffer *buffer); -RpcReqWifiSetInactiveTime * - rpc__req__wifi_set_inactive_time__unpack +RpcReqEapClearUsername * + rpc__req__eap_clear_username__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_set_inactive_time__free_unpacked - (RpcReqWifiSetInactiveTime *message, +void rpc__req__eap_clear_username__free_unpacked + (RpcReqEapClearUsername *message, ProtobufCAllocator *allocator); -/* RpcRespWifiSetInactiveTime methods */ -void rpc__resp__wifi_set_inactive_time__init - (RpcRespWifiSetInactiveTime *message); -size_t rpc__resp__wifi_set_inactive_time__get_packed_size - (const RpcRespWifiSetInactiveTime *message); -size_t rpc__resp__wifi_set_inactive_time__pack - (const RpcRespWifiSetInactiveTime *message, +/* RpcRespEapClearUsername methods */ +void rpc__resp__eap_clear_username__init + (RpcRespEapClearUsername *message); +size_t rpc__resp__eap_clear_username__get_packed_size + (const RpcRespEapClearUsername *message); +size_t rpc__resp__eap_clear_username__pack + (const RpcRespEapClearUsername *message, uint8_t *out); -size_t rpc__resp__wifi_set_inactive_time__pack_to_buffer - (const RpcRespWifiSetInactiveTime *message, +size_t rpc__resp__eap_clear_username__pack_to_buffer + (const RpcRespEapClearUsername *message, ProtobufCBuffer *buffer); -RpcRespWifiSetInactiveTime * - rpc__resp__wifi_set_inactive_time__unpack +RpcRespEapClearUsername * + rpc__resp__eap_clear_username__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_set_inactive_time__free_unpacked - (RpcRespWifiSetInactiveTime *message, +void rpc__resp__eap_clear_username__free_unpacked + (RpcRespEapClearUsername *message, ProtobufCAllocator *allocator); -/* RpcReqWifiGetInactiveTime methods */ -void rpc__req__wifi_get_inactive_time__init - (RpcReqWifiGetInactiveTime *message); -size_t rpc__req__wifi_get_inactive_time__get_packed_size - (const RpcReqWifiGetInactiveTime *message); -size_t rpc__req__wifi_get_inactive_time__pack - (const RpcReqWifiGetInactiveTime *message, +/* RpcReqEapSetPassword methods */ +void rpc__req__eap_set_password__init + (RpcReqEapSetPassword *message); +size_t rpc__req__eap_set_password__get_packed_size + (const RpcReqEapSetPassword *message); +size_t rpc__req__eap_set_password__pack + (const RpcReqEapSetPassword *message, uint8_t *out); -size_t rpc__req__wifi_get_inactive_time__pack_to_buffer - (const RpcReqWifiGetInactiveTime *message, +size_t rpc__req__eap_set_password__pack_to_buffer + (const RpcReqEapSetPassword *message, ProtobufCBuffer *buffer); -RpcReqWifiGetInactiveTime * - rpc__req__wifi_get_inactive_time__unpack +RpcReqEapSetPassword * + rpc__req__eap_set_password__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_get_inactive_time__free_unpacked - (RpcReqWifiGetInactiveTime *message, +void rpc__req__eap_set_password__free_unpacked + (RpcReqEapSetPassword *message, ProtobufCAllocator *allocator); -/* RpcRespWifiGetInactiveTime methods */ -void rpc__resp__wifi_get_inactive_time__init - (RpcRespWifiGetInactiveTime *message); -size_t rpc__resp__wifi_get_inactive_time__get_packed_size - (const RpcRespWifiGetInactiveTime *message); -size_t rpc__resp__wifi_get_inactive_time__pack - (const RpcRespWifiGetInactiveTime *message, +/* RpcRespEapSetPassword methods */ +void rpc__resp__eap_set_password__init + (RpcRespEapSetPassword *message); +size_t rpc__resp__eap_set_password__get_packed_size + (const RpcRespEapSetPassword *message); +size_t rpc__resp__eap_set_password__pack + (const RpcRespEapSetPassword *message, uint8_t *out); -size_t rpc__resp__wifi_get_inactive_time__pack_to_buffer - (const RpcRespWifiGetInactiveTime *message, +size_t rpc__resp__eap_set_password__pack_to_buffer + (const RpcRespEapSetPassword *message, ProtobufCBuffer *buffer); -RpcRespWifiGetInactiveTime * - rpc__resp__wifi_get_inactive_time__unpack +RpcRespEapSetPassword * + rpc__resp__eap_set_password__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_get_inactive_time__free_unpacked - (RpcRespWifiGetInactiveTime *message, +void rpc__resp__eap_set_password__free_unpacked + (RpcRespEapSetPassword *message, ProtobufCAllocator *allocator); -/* RpcReqWifiStaItwtSetup methods */ -void rpc__req__wifi_sta_itwt_setup__init - (RpcReqWifiStaItwtSetup *message); -size_t rpc__req__wifi_sta_itwt_setup__get_packed_size - (const RpcReqWifiStaItwtSetup *message); -size_t rpc__req__wifi_sta_itwt_setup__pack - (const RpcReqWifiStaItwtSetup *message, +/* RpcReqEapClearPassword methods */ +void rpc__req__eap_clear_password__init + (RpcReqEapClearPassword *message); +size_t rpc__req__eap_clear_password__get_packed_size + (const RpcReqEapClearPassword *message); +size_t rpc__req__eap_clear_password__pack + (const RpcReqEapClearPassword *message, uint8_t *out); -size_t rpc__req__wifi_sta_itwt_setup__pack_to_buffer - (const RpcReqWifiStaItwtSetup *message, +size_t rpc__req__eap_clear_password__pack_to_buffer + (const RpcReqEapClearPassword *message, ProtobufCBuffer *buffer); -RpcReqWifiStaItwtSetup * - rpc__req__wifi_sta_itwt_setup__unpack +RpcReqEapClearPassword * + rpc__req__eap_clear_password__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_sta_itwt_setup__free_unpacked - (RpcReqWifiStaItwtSetup *message, +void rpc__req__eap_clear_password__free_unpacked + (RpcReqEapClearPassword *message, ProtobufCAllocator *allocator); -/* RpcRespWifiStaItwtSetup methods */ -void rpc__resp__wifi_sta_itwt_setup__init - (RpcRespWifiStaItwtSetup *message); -size_t rpc__resp__wifi_sta_itwt_setup__get_packed_size - (const RpcRespWifiStaItwtSetup *message); -size_t rpc__resp__wifi_sta_itwt_setup__pack - (const RpcRespWifiStaItwtSetup *message, +/* RpcRespEapClearPassword methods */ +void rpc__resp__eap_clear_password__init + (RpcRespEapClearPassword *message); +size_t rpc__resp__eap_clear_password__get_packed_size + (const RpcRespEapClearPassword *message); +size_t rpc__resp__eap_clear_password__pack + (const RpcRespEapClearPassword *message, uint8_t *out); -size_t rpc__resp__wifi_sta_itwt_setup__pack_to_buffer - (const RpcRespWifiStaItwtSetup *message, +size_t rpc__resp__eap_clear_password__pack_to_buffer + (const RpcRespEapClearPassword *message, ProtobufCBuffer *buffer); -RpcRespWifiStaItwtSetup * - rpc__resp__wifi_sta_itwt_setup__unpack +RpcRespEapClearPassword * + rpc__resp__eap_clear_password__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_sta_itwt_setup__free_unpacked - (RpcRespWifiStaItwtSetup *message, +void rpc__resp__eap_clear_password__free_unpacked + (RpcRespEapClearPassword *message, ProtobufCAllocator *allocator); -/* RpcReqWifiStaItwtTeardown methods */ -void rpc__req__wifi_sta_itwt_teardown__init - (RpcReqWifiStaItwtTeardown *message); -size_t rpc__req__wifi_sta_itwt_teardown__get_packed_size - (const RpcReqWifiStaItwtTeardown *message); -size_t rpc__req__wifi_sta_itwt_teardown__pack - (const RpcReqWifiStaItwtTeardown *message, +/* RpcReqEapSetNewPassword methods */ +void rpc__req__eap_set_new_password__init + (RpcReqEapSetNewPassword *message); +size_t rpc__req__eap_set_new_password__get_packed_size + (const RpcReqEapSetNewPassword *message); +size_t rpc__req__eap_set_new_password__pack + (const RpcReqEapSetNewPassword *message, uint8_t *out); -size_t rpc__req__wifi_sta_itwt_teardown__pack_to_buffer - (const RpcReqWifiStaItwtTeardown *message, +size_t rpc__req__eap_set_new_password__pack_to_buffer + (const RpcReqEapSetNewPassword *message, ProtobufCBuffer *buffer); -RpcReqWifiStaItwtTeardown * - rpc__req__wifi_sta_itwt_teardown__unpack +RpcReqEapSetNewPassword * + rpc__req__eap_set_new_password__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_sta_itwt_teardown__free_unpacked - (RpcReqWifiStaItwtTeardown *message, +void rpc__req__eap_set_new_password__free_unpacked + (RpcReqEapSetNewPassword *message, ProtobufCAllocator *allocator); -/* RpcRespWifiStaItwtTeardown methods */ -void rpc__resp__wifi_sta_itwt_teardown__init - (RpcRespWifiStaItwtTeardown *message); -size_t rpc__resp__wifi_sta_itwt_teardown__get_packed_size - (const RpcRespWifiStaItwtTeardown *message); -size_t rpc__resp__wifi_sta_itwt_teardown__pack - (const RpcRespWifiStaItwtTeardown *message, +/* RpcRespEapSetNewPassword methods */ +void rpc__resp__eap_set_new_password__init + (RpcRespEapSetNewPassword *message); +size_t rpc__resp__eap_set_new_password__get_packed_size + (const RpcRespEapSetNewPassword *message); +size_t rpc__resp__eap_set_new_password__pack + (const RpcRespEapSetNewPassword *message, uint8_t *out); -size_t rpc__resp__wifi_sta_itwt_teardown__pack_to_buffer - (const RpcRespWifiStaItwtTeardown *message, +size_t rpc__resp__eap_set_new_password__pack_to_buffer + (const RpcRespEapSetNewPassword *message, ProtobufCBuffer *buffer); -RpcRespWifiStaItwtTeardown * - rpc__resp__wifi_sta_itwt_teardown__unpack +RpcRespEapSetNewPassword * + rpc__resp__eap_set_new_password__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_sta_itwt_teardown__free_unpacked - (RpcRespWifiStaItwtTeardown *message, +void rpc__resp__eap_set_new_password__free_unpacked + (RpcRespEapSetNewPassword *message, ProtobufCAllocator *allocator); -/* RpcReqWifiStaItwtSuspend methods */ -void rpc__req__wifi_sta_itwt_suspend__init - (RpcReqWifiStaItwtSuspend *message); -size_t rpc__req__wifi_sta_itwt_suspend__get_packed_size - (const RpcReqWifiStaItwtSuspend *message); -size_t rpc__req__wifi_sta_itwt_suspend__pack - (const RpcReqWifiStaItwtSuspend *message, +/* RpcReqEapClearNewPassword methods */ +void rpc__req__eap_clear_new_password__init + (RpcReqEapClearNewPassword *message); +size_t rpc__req__eap_clear_new_password__get_packed_size + (const RpcReqEapClearNewPassword *message); +size_t rpc__req__eap_clear_new_password__pack + (const RpcReqEapClearNewPassword *message, uint8_t *out); -size_t rpc__req__wifi_sta_itwt_suspend__pack_to_buffer - (const RpcReqWifiStaItwtSuspend *message, +size_t rpc__req__eap_clear_new_password__pack_to_buffer + (const RpcReqEapClearNewPassword *message, ProtobufCBuffer *buffer); -RpcReqWifiStaItwtSuspend * - rpc__req__wifi_sta_itwt_suspend__unpack +RpcReqEapClearNewPassword * + rpc__req__eap_clear_new_password__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_sta_itwt_suspend__free_unpacked - (RpcReqWifiStaItwtSuspend *message, +void rpc__req__eap_clear_new_password__free_unpacked + (RpcReqEapClearNewPassword *message, ProtobufCAllocator *allocator); -/* RpcRespWifiStaItwtSuspend methods */ -void rpc__resp__wifi_sta_itwt_suspend__init - (RpcRespWifiStaItwtSuspend *message); -size_t rpc__resp__wifi_sta_itwt_suspend__get_packed_size - (const RpcRespWifiStaItwtSuspend *message); -size_t rpc__resp__wifi_sta_itwt_suspend__pack - (const RpcRespWifiStaItwtSuspend *message, +/* RpcRespEapClearNewPassword methods */ +void rpc__resp__eap_clear_new_password__init + (RpcRespEapClearNewPassword *message); +size_t rpc__resp__eap_clear_new_password__get_packed_size + (const RpcRespEapClearNewPassword *message); +size_t rpc__resp__eap_clear_new_password__pack + (const RpcRespEapClearNewPassword *message, uint8_t *out); -size_t rpc__resp__wifi_sta_itwt_suspend__pack_to_buffer - (const RpcRespWifiStaItwtSuspend *message, +size_t rpc__resp__eap_clear_new_password__pack_to_buffer + (const RpcRespEapClearNewPassword *message, ProtobufCBuffer *buffer); -RpcRespWifiStaItwtSuspend * - rpc__resp__wifi_sta_itwt_suspend__unpack +RpcRespEapClearNewPassword * + rpc__resp__eap_clear_new_password__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_sta_itwt_suspend__free_unpacked - (RpcRespWifiStaItwtSuspend *message, +void rpc__resp__eap_clear_new_password__free_unpacked + (RpcRespEapClearNewPassword *message, ProtobufCAllocator *allocator); -/* RpcReqWifiStaItwtGetFlowIdStatus methods */ -void rpc__req__wifi_sta_itwt_get_flow_id_status__init - (RpcReqWifiStaItwtGetFlowIdStatus *message); -size_t rpc__req__wifi_sta_itwt_get_flow_id_status__get_packed_size - (const RpcReqWifiStaItwtGetFlowIdStatus *message); -size_t rpc__req__wifi_sta_itwt_get_flow_id_status__pack - (const RpcReqWifiStaItwtGetFlowIdStatus *message, +/* RpcReqEapSetCaCert methods */ +void rpc__req__eap_set_ca_cert__init + (RpcReqEapSetCaCert *message); +size_t rpc__req__eap_set_ca_cert__get_packed_size + (const RpcReqEapSetCaCert *message); +size_t rpc__req__eap_set_ca_cert__pack + (const RpcReqEapSetCaCert *message, uint8_t *out); -size_t rpc__req__wifi_sta_itwt_get_flow_id_status__pack_to_buffer - (const RpcReqWifiStaItwtGetFlowIdStatus *message, +size_t rpc__req__eap_set_ca_cert__pack_to_buffer + (const RpcReqEapSetCaCert *message, ProtobufCBuffer *buffer); -RpcReqWifiStaItwtGetFlowIdStatus * - rpc__req__wifi_sta_itwt_get_flow_id_status__unpack +RpcReqEapSetCaCert * + rpc__req__eap_set_ca_cert__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_sta_itwt_get_flow_id_status__free_unpacked - (RpcReqWifiStaItwtGetFlowIdStatus *message, +void rpc__req__eap_set_ca_cert__free_unpacked + (RpcReqEapSetCaCert *message, ProtobufCAllocator *allocator); -/* RpcRespWifiStaItwtGetFlowIdStatus methods */ -void rpc__resp__wifi_sta_itwt_get_flow_id_status__init - (RpcRespWifiStaItwtGetFlowIdStatus *message); -size_t rpc__resp__wifi_sta_itwt_get_flow_id_status__get_packed_size - (const RpcRespWifiStaItwtGetFlowIdStatus *message); -size_t rpc__resp__wifi_sta_itwt_get_flow_id_status__pack - (const RpcRespWifiStaItwtGetFlowIdStatus *message, +/* RpcRespEapSetCaCert methods */ +void rpc__resp__eap_set_ca_cert__init + (RpcRespEapSetCaCert *message); +size_t rpc__resp__eap_set_ca_cert__get_packed_size + (const RpcRespEapSetCaCert *message); +size_t rpc__resp__eap_set_ca_cert__pack + (const RpcRespEapSetCaCert *message, uint8_t *out); -size_t rpc__resp__wifi_sta_itwt_get_flow_id_status__pack_to_buffer - (const RpcRespWifiStaItwtGetFlowIdStatus *message, +size_t rpc__resp__eap_set_ca_cert__pack_to_buffer + (const RpcRespEapSetCaCert *message, ProtobufCBuffer *buffer); -RpcRespWifiStaItwtGetFlowIdStatus * - rpc__resp__wifi_sta_itwt_get_flow_id_status__unpack +RpcRespEapSetCaCert * + rpc__resp__eap_set_ca_cert__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_sta_itwt_get_flow_id_status__free_unpacked - (RpcRespWifiStaItwtGetFlowIdStatus *message, +void rpc__resp__eap_set_ca_cert__free_unpacked + (RpcRespEapSetCaCert *message, ProtobufCAllocator *allocator); -/* RpcReqWifiStaItwtSendProbeReq methods */ -void rpc__req__wifi_sta_itwt_send_probe_req__init - (RpcReqWifiStaItwtSendProbeReq *message); -size_t rpc__req__wifi_sta_itwt_send_probe_req__get_packed_size - (const RpcReqWifiStaItwtSendProbeReq *message); -size_t rpc__req__wifi_sta_itwt_send_probe_req__pack - (const RpcReqWifiStaItwtSendProbeReq *message, +/* RpcReqEapClearCaCert methods */ +void rpc__req__eap_clear_ca_cert__init + (RpcReqEapClearCaCert *message); +size_t rpc__req__eap_clear_ca_cert__get_packed_size + (const RpcReqEapClearCaCert *message); +size_t rpc__req__eap_clear_ca_cert__pack + (const RpcReqEapClearCaCert *message, uint8_t *out); -size_t rpc__req__wifi_sta_itwt_send_probe_req__pack_to_buffer - (const RpcReqWifiStaItwtSendProbeReq *message, +size_t rpc__req__eap_clear_ca_cert__pack_to_buffer + (const RpcReqEapClearCaCert *message, ProtobufCBuffer *buffer); -RpcReqWifiStaItwtSendProbeReq * - rpc__req__wifi_sta_itwt_send_probe_req__unpack +RpcReqEapClearCaCert * + rpc__req__eap_clear_ca_cert__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_sta_itwt_send_probe_req__free_unpacked - (RpcReqWifiStaItwtSendProbeReq *message, +void rpc__req__eap_clear_ca_cert__free_unpacked + (RpcReqEapClearCaCert *message, ProtobufCAllocator *allocator); -/* RpcRespWifiStaItwtSendProbeReq methods */ -void rpc__resp__wifi_sta_itwt_send_probe_req__init - (RpcRespWifiStaItwtSendProbeReq *message); -size_t rpc__resp__wifi_sta_itwt_send_probe_req__get_packed_size - (const RpcRespWifiStaItwtSendProbeReq *message); -size_t rpc__resp__wifi_sta_itwt_send_probe_req__pack - (const RpcRespWifiStaItwtSendProbeReq *message, +/* RpcRespEapClearCaCert methods */ +void rpc__resp__eap_clear_ca_cert__init + (RpcRespEapClearCaCert *message); +size_t rpc__resp__eap_clear_ca_cert__get_packed_size + (const RpcRespEapClearCaCert *message); +size_t rpc__resp__eap_clear_ca_cert__pack + (const RpcRespEapClearCaCert *message, uint8_t *out); -size_t rpc__resp__wifi_sta_itwt_send_probe_req__pack_to_buffer - (const RpcRespWifiStaItwtSendProbeReq *message, +size_t rpc__resp__eap_clear_ca_cert__pack_to_buffer + (const RpcRespEapClearCaCert *message, ProtobufCBuffer *buffer); -RpcRespWifiStaItwtSendProbeReq * - rpc__resp__wifi_sta_itwt_send_probe_req__unpack +RpcRespEapClearCaCert * + rpc__resp__eap_clear_ca_cert__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_sta_itwt_send_probe_req__free_unpacked - (RpcRespWifiStaItwtSendProbeReq *message, +void rpc__resp__eap_clear_ca_cert__free_unpacked + (RpcRespEapClearCaCert *message, ProtobufCAllocator *allocator); -/* RpcReqWifiStaItwtSetTargetWakeTimeOffset methods */ -void rpc__req__wifi_sta_itwt_set_target_wake_time_offset__init - (RpcReqWifiStaItwtSetTargetWakeTimeOffset *message); -size_t rpc__req__wifi_sta_itwt_set_target_wake_time_offset__get_packed_size - (const RpcReqWifiStaItwtSetTargetWakeTimeOffset *message); -size_t rpc__req__wifi_sta_itwt_set_target_wake_time_offset__pack - (const RpcReqWifiStaItwtSetTargetWakeTimeOffset *message, +/* RpcReqEapSetCertificateAndKey methods */ +void rpc__req__eap_set_certificate_and_key__init + (RpcReqEapSetCertificateAndKey *message); +size_t rpc__req__eap_set_certificate_and_key__get_packed_size + (const RpcReqEapSetCertificateAndKey *message); +size_t rpc__req__eap_set_certificate_and_key__pack + (const RpcReqEapSetCertificateAndKey *message, uint8_t *out); -size_t rpc__req__wifi_sta_itwt_set_target_wake_time_offset__pack_to_buffer - (const RpcReqWifiStaItwtSetTargetWakeTimeOffset *message, +size_t rpc__req__eap_set_certificate_and_key__pack_to_buffer + (const RpcReqEapSetCertificateAndKey *message, ProtobufCBuffer *buffer); -RpcReqWifiStaItwtSetTargetWakeTimeOffset * - rpc__req__wifi_sta_itwt_set_target_wake_time_offset__unpack +RpcReqEapSetCertificateAndKey * + rpc__req__eap_set_certificate_and_key__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_sta_itwt_set_target_wake_time_offset__free_unpacked - (RpcReqWifiStaItwtSetTargetWakeTimeOffset *message, +void rpc__req__eap_set_certificate_and_key__free_unpacked + (RpcReqEapSetCertificateAndKey *message, ProtobufCAllocator *allocator); -/* RpcRespWifiStaItwtSetTargetWakeTimeOffset methods */ -void rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__init - (RpcRespWifiStaItwtSetTargetWakeTimeOffset *message); -size_t rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__get_packed_size - (const RpcRespWifiStaItwtSetTargetWakeTimeOffset *message); -size_t rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__pack - (const RpcRespWifiStaItwtSetTargetWakeTimeOffset *message, +/* RpcRespEapSetCertificateAndKey methods */ +void rpc__resp__eap_set_certificate_and_key__init + (RpcRespEapSetCertificateAndKey *message); +size_t rpc__resp__eap_set_certificate_and_key__get_packed_size + (const RpcRespEapSetCertificateAndKey *message); +size_t rpc__resp__eap_set_certificate_and_key__pack + (const RpcRespEapSetCertificateAndKey *message, uint8_t *out); -size_t rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__pack_to_buffer - (const RpcRespWifiStaItwtSetTargetWakeTimeOffset *message, +size_t rpc__resp__eap_set_certificate_and_key__pack_to_buffer + (const RpcRespEapSetCertificateAndKey *message, ProtobufCBuffer *buffer); -RpcRespWifiStaItwtSetTargetWakeTimeOffset * - rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__unpack +RpcRespEapSetCertificateAndKey * + rpc__resp__eap_set_certificate_and_key__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__free_unpacked - (RpcRespWifiStaItwtSetTargetWakeTimeOffset *message, +void rpc__resp__eap_set_certificate_and_key__free_unpacked + (RpcRespEapSetCertificateAndKey *message, ProtobufCAllocator *allocator); -/* RpcReqWifiStaTwtConfig methods */ -void rpc__req__wifi_sta_twt_config__init - (RpcReqWifiStaTwtConfig *message); -size_t rpc__req__wifi_sta_twt_config__get_packed_size - (const RpcReqWifiStaTwtConfig *message); -size_t rpc__req__wifi_sta_twt_config__pack - (const RpcReqWifiStaTwtConfig *message, +/* RpcReqEapClearCertificateAndKey methods */ +void rpc__req__eap_clear_certificate_and_key__init + (RpcReqEapClearCertificateAndKey *message); +size_t rpc__req__eap_clear_certificate_and_key__get_packed_size + (const RpcReqEapClearCertificateAndKey *message); +size_t rpc__req__eap_clear_certificate_and_key__pack + (const RpcReqEapClearCertificateAndKey *message, uint8_t *out); -size_t rpc__req__wifi_sta_twt_config__pack_to_buffer - (const RpcReqWifiStaTwtConfig *message, +size_t rpc__req__eap_clear_certificate_and_key__pack_to_buffer + (const RpcReqEapClearCertificateAndKey *message, ProtobufCBuffer *buffer); -RpcReqWifiStaTwtConfig * - rpc__req__wifi_sta_twt_config__unpack +RpcReqEapClearCertificateAndKey * + rpc__req__eap_clear_certificate_and_key__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__wifi_sta_twt_config__free_unpacked - (RpcReqWifiStaTwtConfig *message, +void rpc__req__eap_clear_certificate_and_key__free_unpacked + (RpcReqEapClearCertificateAndKey *message, ProtobufCAllocator *allocator); -/* RpcRespWifiStaTwtConfig methods */ -void rpc__resp__wifi_sta_twt_config__init - (RpcRespWifiStaTwtConfig *message); -size_t rpc__resp__wifi_sta_twt_config__get_packed_size - (const RpcRespWifiStaTwtConfig *message); -size_t rpc__resp__wifi_sta_twt_config__pack - (const RpcRespWifiStaTwtConfig *message, +/* RpcRespEapClearCertificateAndKey methods */ +void rpc__resp__eap_clear_certificate_and_key__init + (RpcRespEapClearCertificateAndKey *message); +size_t rpc__resp__eap_clear_certificate_and_key__get_packed_size + (const RpcRespEapClearCertificateAndKey *message); +size_t rpc__resp__eap_clear_certificate_and_key__pack + (const RpcRespEapClearCertificateAndKey *message, uint8_t *out); -size_t rpc__resp__wifi_sta_twt_config__pack_to_buffer - (const RpcRespWifiStaTwtConfig *message, +size_t rpc__resp__eap_clear_certificate_and_key__pack_to_buffer + (const RpcRespEapClearCertificateAndKey *message, ProtobufCBuffer *buffer); -RpcRespWifiStaTwtConfig * - rpc__resp__wifi_sta_twt_config__unpack +RpcRespEapClearCertificateAndKey * + rpc__resp__eap_clear_certificate_and_key__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__wifi_sta_twt_config__free_unpacked - (RpcRespWifiStaTwtConfig *message, +void rpc__resp__eap_clear_certificate_and_key__free_unpacked + (RpcRespEapClearCertificateAndKey *message, ProtobufCAllocator *allocator); -/* RpcReqGetCoprocessorFwVersion methods */ -void rpc__req__get_coprocessor_fw_version__init - (RpcReqGetCoprocessorFwVersion *message); -size_t rpc__req__get_coprocessor_fw_version__get_packed_size - (const RpcReqGetCoprocessorFwVersion *message); -size_t rpc__req__get_coprocessor_fw_version__pack - (const RpcReqGetCoprocessorFwVersion *message, +/* RpcReqEapSetDisableTimeCheck methods */ +void rpc__req__eap_set_disable_time_check__init + (RpcReqEapSetDisableTimeCheck *message); +size_t rpc__req__eap_set_disable_time_check__get_packed_size + (const RpcReqEapSetDisableTimeCheck *message); +size_t rpc__req__eap_set_disable_time_check__pack + (const RpcReqEapSetDisableTimeCheck *message, uint8_t *out); -size_t rpc__req__get_coprocessor_fw_version__pack_to_buffer - (const RpcReqGetCoprocessorFwVersion *message, +size_t rpc__req__eap_set_disable_time_check__pack_to_buffer + (const RpcReqEapSetDisableTimeCheck *message, ProtobufCBuffer *buffer); -RpcReqGetCoprocessorFwVersion * - rpc__req__get_coprocessor_fw_version__unpack +RpcReqEapSetDisableTimeCheck * + rpc__req__eap_set_disable_time_check__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__get_coprocessor_fw_version__free_unpacked - (RpcReqGetCoprocessorFwVersion *message, +void rpc__req__eap_set_disable_time_check__free_unpacked + (RpcReqEapSetDisableTimeCheck *message, ProtobufCAllocator *allocator); -/* RpcRespGetCoprocessorFwVersion methods */ -void rpc__resp__get_coprocessor_fw_version__init - (RpcRespGetCoprocessorFwVersion *message); -size_t rpc__resp__get_coprocessor_fw_version__get_packed_size - (const RpcRespGetCoprocessorFwVersion *message); -size_t rpc__resp__get_coprocessor_fw_version__pack - (const RpcRespGetCoprocessorFwVersion *message, +/* RpcRespEapSetDisableTimeCheck methods */ +void rpc__resp__eap_set_disable_time_check__init + (RpcRespEapSetDisableTimeCheck *message); +size_t rpc__resp__eap_set_disable_time_check__get_packed_size + (const RpcRespEapSetDisableTimeCheck *message); +size_t rpc__resp__eap_set_disable_time_check__pack + (const RpcRespEapSetDisableTimeCheck *message, uint8_t *out); -size_t rpc__resp__get_coprocessor_fw_version__pack_to_buffer - (const RpcRespGetCoprocessorFwVersion *message, +size_t rpc__resp__eap_set_disable_time_check__pack_to_buffer + (const RpcRespEapSetDisableTimeCheck *message, ProtobufCBuffer *buffer); -RpcRespGetCoprocessorFwVersion * - rpc__resp__get_coprocessor_fw_version__unpack +RpcRespEapSetDisableTimeCheck * + rpc__resp__eap_set_disable_time_check__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__get_coprocessor_fw_version__free_unpacked - (RpcRespGetCoprocessorFwVersion *message, +void rpc__resp__eap_set_disable_time_check__free_unpacked + (RpcRespEapSetDisableTimeCheck *message, ProtobufCAllocator *allocator); -/* RpcReqSetDhcpDnsStatus methods */ -void rpc__req__set_dhcp_dns_status__init - (RpcReqSetDhcpDnsStatus *message); -size_t rpc__req__set_dhcp_dns_status__get_packed_size - (const RpcReqSetDhcpDnsStatus *message); -size_t rpc__req__set_dhcp_dns_status__pack - (const RpcReqSetDhcpDnsStatus *message, +/* RpcReqEapGetDisableTimeCheck methods */ +void rpc__req__eap_get_disable_time_check__init + (RpcReqEapGetDisableTimeCheck *message); +size_t rpc__req__eap_get_disable_time_check__get_packed_size + (const RpcReqEapGetDisableTimeCheck *message); +size_t rpc__req__eap_get_disable_time_check__pack + (const RpcReqEapGetDisableTimeCheck *message, uint8_t *out); -size_t rpc__req__set_dhcp_dns_status__pack_to_buffer - (const RpcReqSetDhcpDnsStatus *message, +size_t rpc__req__eap_get_disable_time_check__pack_to_buffer + (const RpcReqEapGetDisableTimeCheck *message, ProtobufCBuffer *buffer); -RpcReqSetDhcpDnsStatus * - rpc__req__set_dhcp_dns_status__unpack +RpcReqEapGetDisableTimeCheck * + rpc__req__eap_get_disable_time_check__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__set_dhcp_dns_status__free_unpacked - (RpcReqSetDhcpDnsStatus *message, +void rpc__req__eap_get_disable_time_check__free_unpacked + (RpcReqEapGetDisableTimeCheck *message, ProtobufCAllocator *allocator); -/* RpcRespSetDhcpDnsStatus methods */ -void rpc__resp__set_dhcp_dns_status__init - (RpcRespSetDhcpDnsStatus *message); -size_t rpc__resp__set_dhcp_dns_status__get_packed_size - (const RpcRespSetDhcpDnsStatus *message); -size_t rpc__resp__set_dhcp_dns_status__pack - (const RpcRespSetDhcpDnsStatus *message, +/* RpcRespEapGetDisableTimeCheck methods */ +void rpc__resp__eap_get_disable_time_check__init + (RpcRespEapGetDisableTimeCheck *message); +size_t rpc__resp__eap_get_disable_time_check__get_packed_size + (const RpcRespEapGetDisableTimeCheck *message); +size_t rpc__resp__eap_get_disable_time_check__pack + (const RpcRespEapGetDisableTimeCheck *message, uint8_t *out); -size_t rpc__resp__set_dhcp_dns_status__pack_to_buffer - (const RpcRespSetDhcpDnsStatus *message, +size_t rpc__resp__eap_get_disable_time_check__pack_to_buffer + (const RpcRespEapGetDisableTimeCheck *message, ProtobufCBuffer *buffer); -RpcRespSetDhcpDnsStatus * - rpc__resp__set_dhcp_dns_status__unpack +RpcRespEapGetDisableTimeCheck * + rpc__resp__eap_get_disable_time_check__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__set_dhcp_dns_status__free_unpacked - (RpcRespSetDhcpDnsStatus *message, +void rpc__resp__eap_get_disable_time_check__free_unpacked + (RpcRespEapGetDisableTimeCheck *message, ProtobufCAllocator *allocator); -/* RpcReqGetDhcpDnsStatus methods */ -void rpc__req__get_dhcp_dns_status__init - (RpcReqGetDhcpDnsStatus *message); -size_t rpc__req__get_dhcp_dns_status__get_packed_size - (const RpcReqGetDhcpDnsStatus *message); -size_t rpc__req__get_dhcp_dns_status__pack - (const RpcReqGetDhcpDnsStatus *message, +/* RpcReqEapSetTtlsPhase2Method methods */ +void rpc__req__eap_set_ttls_phase2_method__init + (RpcReqEapSetTtlsPhase2Method *message); +size_t rpc__req__eap_set_ttls_phase2_method__get_packed_size + (const RpcReqEapSetTtlsPhase2Method *message); +size_t rpc__req__eap_set_ttls_phase2_method__pack + (const RpcReqEapSetTtlsPhase2Method *message, uint8_t *out); -size_t rpc__req__get_dhcp_dns_status__pack_to_buffer - (const RpcReqGetDhcpDnsStatus *message, +size_t rpc__req__eap_set_ttls_phase2_method__pack_to_buffer + (const RpcReqEapSetTtlsPhase2Method *message, ProtobufCBuffer *buffer); -RpcReqGetDhcpDnsStatus * - rpc__req__get_dhcp_dns_status__unpack +RpcReqEapSetTtlsPhase2Method * + rpc__req__eap_set_ttls_phase2_method__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__req__get_dhcp_dns_status__free_unpacked - (RpcReqGetDhcpDnsStatus *message, +void rpc__req__eap_set_ttls_phase2_method__free_unpacked + (RpcReqEapSetTtlsPhase2Method *message, ProtobufCAllocator *allocator); -/* RpcRespGetDhcpDnsStatus methods */ -void rpc__resp__get_dhcp_dns_status__init - (RpcRespGetDhcpDnsStatus *message); -size_t rpc__resp__get_dhcp_dns_status__get_packed_size - (const RpcRespGetDhcpDnsStatus *message); -size_t rpc__resp__get_dhcp_dns_status__pack - (const RpcRespGetDhcpDnsStatus *message, +/* RpcRespEapSetTtlsPhase2Method methods */ +void rpc__resp__eap_set_ttls_phase2_method__init + (RpcRespEapSetTtlsPhase2Method *message); +size_t rpc__resp__eap_set_ttls_phase2_method__get_packed_size + (const RpcRespEapSetTtlsPhase2Method *message); +size_t rpc__resp__eap_set_ttls_phase2_method__pack + (const RpcRespEapSetTtlsPhase2Method *message, uint8_t *out); -size_t rpc__resp__get_dhcp_dns_status__pack_to_buffer - (const RpcRespGetDhcpDnsStatus *message, +size_t rpc__resp__eap_set_ttls_phase2_method__pack_to_buffer + (const RpcRespEapSetTtlsPhase2Method *message, ProtobufCBuffer *buffer); -RpcRespGetDhcpDnsStatus * - rpc__resp__get_dhcp_dns_status__unpack +RpcRespEapSetTtlsPhase2Method * + rpc__resp__eap_set_ttls_phase2_method__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__resp__get_dhcp_dns_status__free_unpacked - (RpcRespGetDhcpDnsStatus *message, +void rpc__resp__eap_set_ttls_phase2_method__free_unpacked + (RpcRespEapSetTtlsPhase2Method *message, ProtobufCAllocator *allocator); -/* RpcEventWifiEventNoArgs methods */ -void rpc__event__wifi_event_no_args__init - (RpcEventWifiEventNoArgs *message); -size_t rpc__event__wifi_event_no_args__get_packed_size - (const RpcEventWifiEventNoArgs *message); -size_t rpc__event__wifi_event_no_args__pack - (const RpcEventWifiEventNoArgs *message, +/* RpcReqEapSetSuiteb192bitCertification methods */ +void rpc__req__eap_set_suiteb192bit_certification__init + (RpcReqEapSetSuiteb192bitCertification *message); +size_t rpc__req__eap_set_suiteb192bit_certification__get_packed_size + (const RpcReqEapSetSuiteb192bitCertification *message); +size_t rpc__req__eap_set_suiteb192bit_certification__pack + (const RpcReqEapSetSuiteb192bitCertification *message, uint8_t *out); -size_t rpc__event__wifi_event_no_args__pack_to_buffer - (const RpcEventWifiEventNoArgs *message, +size_t rpc__req__eap_set_suiteb192bit_certification__pack_to_buffer + (const RpcReqEapSetSuiteb192bitCertification *message, ProtobufCBuffer *buffer); -RpcEventWifiEventNoArgs * - rpc__event__wifi_event_no_args__unpack +RpcReqEapSetSuiteb192bitCertification * + rpc__req__eap_set_suiteb192bit_certification__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__event__wifi_event_no_args__free_unpacked - (RpcEventWifiEventNoArgs *message, +void rpc__req__eap_set_suiteb192bit_certification__free_unpacked + (RpcReqEapSetSuiteb192bitCertification *message, ProtobufCAllocator *allocator); -/* RpcEventESPInit methods */ -void rpc__event__espinit__init - (RpcEventESPInit *message); -size_t rpc__event__espinit__get_packed_size - (const RpcEventESPInit *message); -size_t rpc__event__espinit__pack - (const RpcEventESPInit *message, +/* RpcRespEapSetSuiteb192bitCertification methods */ +void rpc__resp__eap_set_suiteb192bit_certification__init + (RpcRespEapSetSuiteb192bitCertification *message); +size_t rpc__resp__eap_set_suiteb192bit_certification__get_packed_size + (const RpcRespEapSetSuiteb192bitCertification *message); +size_t rpc__resp__eap_set_suiteb192bit_certification__pack + (const RpcRespEapSetSuiteb192bitCertification *message, uint8_t *out); -size_t rpc__event__espinit__pack_to_buffer - (const RpcEventESPInit *message, +size_t rpc__resp__eap_set_suiteb192bit_certification__pack_to_buffer + (const RpcRespEapSetSuiteb192bitCertification *message, ProtobufCBuffer *buffer); -RpcEventESPInit * - rpc__event__espinit__unpack +RpcRespEapSetSuiteb192bitCertification * + rpc__resp__eap_set_suiteb192bit_certification__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__event__espinit__free_unpacked - (RpcEventESPInit *message, +void rpc__resp__eap_set_suiteb192bit_certification__free_unpacked + (RpcRespEapSetSuiteb192bitCertification *message, ProtobufCAllocator *allocator); -/* RpcEventHeartbeat methods */ -void rpc__event__heartbeat__init - (RpcEventHeartbeat *message); -size_t rpc__event__heartbeat__get_packed_size - (const RpcEventHeartbeat *message); -size_t rpc__event__heartbeat__pack - (const RpcEventHeartbeat *message, +/* RpcReqEapSetPacFile methods */ +void rpc__req__eap_set_pac_file__init + (RpcReqEapSetPacFile *message); +size_t rpc__req__eap_set_pac_file__get_packed_size + (const RpcReqEapSetPacFile *message); +size_t rpc__req__eap_set_pac_file__pack + (const RpcReqEapSetPacFile *message, uint8_t *out); -size_t rpc__event__heartbeat__pack_to_buffer - (const RpcEventHeartbeat *message, +size_t rpc__req__eap_set_pac_file__pack_to_buffer + (const RpcReqEapSetPacFile *message, ProtobufCBuffer *buffer); -RpcEventHeartbeat * - rpc__event__heartbeat__unpack +RpcReqEapSetPacFile * + rpc__req__eap_set_pac_file__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__event__heartbeat__free_unpacked - (RpcEventHeartbeat *message, +void rpc__req__eap_set_pac_file__free_unpacked + (RpcReqEapSetPacFile *message, ProtobufCAllocator *allocator); -/* RpcEventAPStaDisconnected methods */ -void rpc__event__ap__sta_disconnected__init - (RpcEventAPStaDisconnected *message); -size_t rpc__event__ap__sta_disconnected__get_packed_size - (const RpcEventAPStaDisconnected *message); -size_t rpc__event__ap__sta_disconnected__pack - (const RpcEventAPStaDisconnected *message, +/* RpcRespEapSetPacFile methods */ +void rpc__resp__eap_set_pac_file__init + (RpcRespEapSetPacFile *message); +size_t rpc__resp__eap_set_pac_file__get_packed_size + (const RpcRespEapSetPacFile *message); +size_t rpc__resp__eap_set_pac_file__pack + (const RpcRespEapSetPacFile *message, uint8_t *out); -size_t rpc__event__ap__sta_disconnected__pack_to_buffer - (const RpcEventAPStaDisconnected *message, +size_t rpc__resp__eap_set_pac_file__pack_to_buffer + (const RpcRespEapSetPacFile *message, ProtobufCBuffer *buffer); -RpcEventAPStaDisconnected * - rpc__event__ap__sta_disconnected__unpack +RpcRespEapSetPacFile * + rpc__resp__eap_set_pac_file__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__event__ap__sta_disconnected__free_unpacked - (RpcEventAPStaDisconnected *message, +void rpc__resp__eap_set_pac_file__free_unpacked + (RpcRespEapSetPacFile *message, ProtobufCAllocator *allocator); -/* RpcEventAPStaConnected methods */ -void rpc__event__ap__sta_connected__init - (RpcEventAPStaConnected *message); -size_t rpc__event__ap__sta_connected__get_packed_size - (const RpcEventAPStaConnected *message); -size_t rpc__event__ap__sta_connected__pack - (const RpcEventAPStaConnected *message, +/* RpcReqEapSetFastParams methods */ +void rpc__req__eap_set_fast_params__init + (RpcReqEapSetFastParams *message); +size_t rpc__req__eap_set_fast_params__get_packed_size + (const RpcReqEapSetFastParams *message); +size_t rpc__req__eap_set_fast_params__pack + (const RpcReqEapSetFastParams *message, uint8_t *out); -size_t rpc__event__ap__sta_connected__pack_to_buffer - (const RpcEventAPStaConnected *message, +size_t rpc__req__eap_set_fast_params__pack_to_buffer + (const RpcReqEapSetFastParams *message, ProtobufCBuffer *buffer); -RpcEventAPStaConnected * - rpc__event__ap__sta_connected__unpack +RpcReqEapSetFastParams * + rpc__req__eap_set_fast_params__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__event__ap__sta_connected__free_unpacked - (RpcEventAPStaConnected *message, +void rpc__req__eap_set_fast_params__free_unpacked + (RpcReqEapSetFastParams *message, ProtobufCAllocator *allocator); -/* RpcEventStaScanDone methods */ -void rpc__event__sta_scan_done__init - (RpcEventStaScanDone *message); -size_t rpc__event__sta_scan_done__get_packed_size - (const RpcEventStaScanDone *message); -size_t rpc__event__sta_scan_done__pack - (const RpcEventStaScanDone *message, +/* RpcRespEapSetFastParams methods */ +void rpc__resp__eap_set_fast_params__init + (RpcRespEapSetFastParams *message); +size_t rpc__resp__eap_set_fast_params__get_packed_size + (const RpcRespEapSetFastParams *message); +size_t rpc__resp__eap_set_fast_params__pack + (const RpcRespEapSetFastParams *message, uint8_t *out); -size_t rpc__event__sta_scan_done__pack_to_buffer - (const RpcEventStaScanDone *message, +size_t rpc__resp__eap_set_fast_params__pack_to_buffer + (const RpcRespEapSetFastParams *message, ProtobufCBuffer *buffer); -RpcEventStaScanDone * - rpc__event__sta_scan_done__unpack +RpcRespEapSetFastParams * + rpc__resp__eap_set_fast_params__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__event__sta_scan_done__free_unpacked - (RpcEventStaScanDone *message, +void rpc__resp__eap_set_fast_params__free_unpacked + (RpcRespEapSetFastParams *message, ProtobufCAllocator *allocator); -/* RpcEventStaConnected methods */ -void rpc__event__sta_connected__init - (RpcEventStaConnected *message); -size_t rpc__event__sta_connected__get_packed_size - (const RpcEventStaConnected *message); -size_t rpc__event__sta_connected__pack - (const RpcEventStaConnected *message, +/* RpcReqEapUseDefaultCertBundle methods */ +void rpc__req__eap_use_default_cert_bundle__init + (RpcReqEapUseDefaultCertBundle *message); +size_t rpc__req__eap_use_default_cert_bundle__get_packed_size + (const RpcReqEapUseDefaultCertBundle *message); +size_t rpc__req__eap_use_default_cert_bundle__pack + (const RpcReqEapUseDefaultCertBundle *message, uint8_t *out); -size_t rpc__event__sta_connected__pack_to_buffer - (const RpcEventStaConnected *message, +size_t rpc__req__eap_use_default_cert_bundle__pack_to_buffer + (const RpcReqEapUseDefaultCertBundle *message, ProtobufCBuffer *buffer); -RpcEventStaConnected * - rpc__event__sta_connected__unpack +RpcReqEapUseDefaultCertBundle * + rpc__req__eap_use_default_cert_bundle__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__event__sta_connected__free_unpacked - (RpcEventStaConnected *message, +void rpc__req__eap_use_default_cert_bundle__free_unpacked + (RpcReqEapUseDefaultCertBundle *message, ProtobufCAllocator *allocator); -/* RpcEventStaDisconnected methods */ -void rpc__event__sta_disconnected__init - (RpcEventStaDisconnected *message); -size_t rpc__event__sta_disconnected__get_packed_size - (const RpcEventStaDisconnected *message); -size_t rpc__event__sta_disconnected__pack - (const RpcEventStaDisconnected *message, +/* RpcRespEapUseDefaultCertBundle methods */ +void rpc__resp__eap_use_default_cert_bundle__init + (RpcRespEapUseDefaultCertBundle *message); +size_t rpc__resp__eap_use_default_cert_bundle__get_packed_size + (const RpcRespEapUseDefaultCertBundle *message); +size_t rpc__resp__eap_use_default_cert_bundle__pack + (const RpcRespEapUseDefaultCertBundle *message, uint8_t *out); -size_t rpc__event__sta_disconnected__pack_to_buffer - (const RpcEventStaDisconnected *message, +size_t rpc__resp__eap_use_default_cert_bundle__pack_to_buffer + (const RpcRespEapUseDefaultCertBundle *message, ProtobufCBuffer *buffer); -RpcEventStaDisconnected * - rpc__event__sta_disconnected__unpack +RpcRespEapUseDefaultCertBundle * + rpc__resp__eap_use_default_cert_bundle__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__event__sta_disconnected__free_unpacked - (RpcEventStaDisconnected *message, +void rpc__resp__eap_use_default_cert_bundle__free_unpacked + (RpcRespEapUseDefaultCertBundle *message, ProtobufCAllocator *allocator); -/* RpcEventDhcpDnsStatus methods */ -void rpc__event__dhcp_dns_status__init - (RpcEventDhcpDnsStatus *message); -size_t rpc__event__dhcp_dns_status__get_packed_size - (const RpcEventDhcpDnsStatus *message); -size_t rpc__event__dhcp_dns_status__pack - (const RpcEventDhcpDnsStatus *message, +/* RpcReqWifiSetOkcSupport methods */ +void rpc__req__wifi_set_okc_support__init + (RpcReqWifiSetOkcSupport *message); +size_t rpc__req__wifi_set_okc_support__get_packed_size + (const RpcReqWifiSetOkcSupport *message); +size_t rpc__req__wifi_set_okc_support__pack + (const RpcReqWifiSetOkcSupport *message, uint8_t *out); -size_t rpc__event__dhcp_dns_status__pack_to_buffer - (const RpcEventDhcpDnsStatus *message, +size_t rpc__req__wifi_set_okc_support__pack_to_buffer + (const RpcReqWifiSetOkcSupport *message, ProtobufCBuffer *buffer); -RpcEventDhcpDnsStatus * - rpc__event__dhcp_dns_status__unpack +RpcReqWifiSetOkcSupport * + rpc__req__wifi_set_okc_support__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__event__dhcp_dns_status__free_unpacked - (RpcEventDhcpDnsStatus *message, +void rpc__req__wifi_set_okc_support__free_unpacked + (RpcReqWifiSetOkcSupport *message, ProtobufCAllocator *allocator); -/* RpcEventStaItwtSetup methods */ -void rpc__event__sta_itwt_setup__init - (RpcEventStaItwtSetup *message); -size_t rpc__event__sta_itwt_setup__get_packed_size - (const RpcEventStaItwtSetup *message); -size_t rpc__event__sta_itwt_setup__pack - (const RpcEventStaItwtSetup *message, +/* RpcRespWifiSetOkcSupport methods */ +void rpc__resp__wifi_set_okc_support__init + (RpcRespWifiSetOkcSupport *message); +size_t rpc__resp__wifi_set_okc_support__get_packed_size + (const RpcRespWifiSetOkcSupport *message); +size_t rpc__resp__wifi_set_okc_support__pack + (const RpcRespWifiSetOkcSupport *message, uint8_t *out); -size_t rpc__event__sta_itwt_setup__pack_to_buffer - (const RpcEventStaItwtSetup *message, +size_t rpc__resp__wifi_set_okc_support__pack_to_buffer + (const RpcRespWifiSetOkcSupport *message, ProtobufCBuffer *buffer); -RpcEventStaItwtSetup * - rpc__event__sta_itwt_setup__unpack +RpcRespWifiSetOkcSupport * + rpc__resp__wifi_set_okc_support__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__event__sta_itwt_setup__free_unpacked - (RpcEventStaItwtSetup *message, +void rpc__resp__wifi_set_okc_support__free_unpacked + (RpcRespWifiSetOkcSupport *message, ProtobufCAllocator *allocator); -/* RpcEventStaItwtTeardown methods */ -void rpc__event__sta_itwt_teardown__init - (RpcEventStaItwtTeardown *message); -size_t rpc__event__sta_itwt_teardown__get_packed_size - (const RpcEventStaItwtTeardown *message); -size_t rpc__event__sta_itwt_teardown__pack - (const RpcEventStaItwtTeardown *message, +/* RpcReqEapSetDomainName methods */ +void rpc__req__eap_set_domain_name__init + (RpcReqEapSetDomainName *message); +size_t rpc__req__eap_set_domain_name__get_packed_size + (const RpcReqEapSetDomainName *message); +size_t rpc__req__eap_set_domain_name__pack + (const RpcReqEapSetDomainName *message, uint8_t *out); -size_t rpc__event__sta_itwt_teardown__pack_to_buffer - (const RpcEventStaItwtTeardown *message, +size_t rpc__req__eap_set_domain_name__pack_to_buffer + (const RpcReqEapSetDomainName *message, ProtobufCBuffer *buffer); -RpcEventStaItwtTeardown * - rpc__event__sta_itwt_teardown__unpack +RpcReqEapSetDomainName * + rpc__req__eap_set_domain_name__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__event__sta_itwt_teardown__free_unpacked - (RpcEventStaItwtTeardown *message, +void rpc__req__eap_set_domain_name__free_unpacked + (RpcReqEapSetDomainName *message, ProtobufCAllocator *allocator); -/* RpcEventStaItwtSuspend methods */ -void rpc__event__sta_itwt_suspend__init - (RpcEventStaItwtSuspend *message); -size_t rpc__event__sta_itwt_suspend__get_packed_size - (const RpcEventStaItwtSuspend *message); -size_t rpc__event__sta_itwt_suspend__pack - (const RpcEventStaItwtSuspend *message, +/* RpcRespEapSetDomainName methods */ +void rpc__resp__eap_set_domain_name__init + (RpcRespEapSetDomainName *message); +size_t rpc__resp__eap_set_domain_name__get_packed_size + (const RpcRespEapSetDomainName *message); +size_t rpc__resp__eap_set_domain_name__pack + (const RpcRespEapSetDomainName *message, uint8_t *out); -size_t rpc__event__sta_itwt_suspend__pack_to_buffer - (const RpcEventStaItwtSuspend *message, +size_t rpc__resp__eap_set_domain_name__pack_to_buffer + (const RpcRespEapSetDomainName *message, ProtobufCBuffer *buffer); -RpcEventStaItwtSuspend * - rpc__event__sta_itwt_suspend__unpack +RpcRespEapSetDomainName * + rpc__resp__eap_set_domain_name__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__event__sta_itwt_suspend__free_unpacked - (RpcEventStaItwtSuspend *message, +void rpc__resp__eap_set_domain_name__free_unpacked + (RpcRespEapSetDomainName *message, ProtobufCAllocator *allocator); -/* RpcEventStaItwtProbe methods */ -void rpc__event__sta_itwt_probe__init - (RpcEventStaItwtProbe *message); -size_t rpc__event__sta_itwt_probe__get_packed_size - (const RpcEventStaItwtProbe *message); -size_t rpc__event__sta_itwt_probe__pack - (const RpcEventStaItwtProbe *message, +/* RpcReqEapSetEapMethods methods */ +void rpc__req__eap_set_eap_methods__init + (RpcReqEapSetEapMethods *message); +size_t rpc__req__eap_set_eap_methods__get_packed_size + (const RpcReqEapSetEapMethods *message); +size_t rpc__req__eap_set_eap_methods__pack + (const RpcReqEapSetEapMethods *message, uint8_t *out); -size_t rpc__event__sta_itwt_probe__pack_to_buffer - (const RpcEventStaItwtProbe *message, +size_t rpc__req__eap_set_eap_methods__pack_to_buffer + (const RpcReqEapSetEapMethods *message, ProtobufCBuffer *buffer); -RpcEventStaItwtProbe * - rpc__event__sta_itwt_probe__unpack +RpcReqEapSetEapMethods * + rpc__req__eap_set_eap_methods__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); -void rpc__event__sta_itwt_probe__free_unpacked - (RpcEventStaItwtProbe *message, +void rpc__req__eap_set_eap_methods__free_unpacked + (RpcReqEapSetEapMethods *message, + ProtobufCAllocator *allocator); +/* RpcRespEapSetEapMethods methods */ +void rpc__resp__eap_set_eap_methods__init + (RpcRespEapSetEapMethods *message); +size_t rpc__resp__eap_set_eap_methods__get_packed_size + (const RpcRespEapSetEapMethods *message); +size_t rpc__resp__eap_set_eap_methods__pack + (const RpcRespEapSetEapMethods *message, + uint8_t *out); +size_t rpc__resp__eap_set_eap_methods__pack_to_buffer + (const RpcRespEapSetEapMethods *message, + ProtobufCBuffer *buffer); +RpcRespEapSetEapMethods * + rpc__resp__eap_set_eap_methods__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__eap_set_eap_methods__free_unpacked + (RpcRespEapSetEapMethods *message, ProtobufCAllocator *allocator); /* Rpc methods */ void rpc__init @@ -7864,6 +9564,9 @@ typedef void (*WifiTwtConfig_Closure) typedef void (*ConnectedSTAList_Closure) (const ConnectedSTAList *message, void *closure_data); +typedef void (*EapFastConfig_Closure) + (const EapFastConfig *message, + void *closure_data); typedef void (*RpcReqGetMacAddress_Closure) (const RpcReqGetMacAddress *message, void *closure_data); @@ -8299,6 +10002,150 @@ typedef void (*RpcEventStaItwtSuspend_Closure) typedef void (*RpcEventStaItwtProbe_Closure) (const RpcEventStaItwtProbe *message, void *closure_data); +typedef void (*RpcReqWifiStaEnterpriseEnable_Closure) + (const RpcReqWifiStaEnterpriseEnable *message, + void *closure_data); +typedef void (*RpcRespWifiStaEnterpriseEnable_Closure) + (const RpcRespWifiStaEnterpriseEnable *message, + void *closure_data); +typedef void (*RpcReqWifiStaEnterpriseDisable_Closure) + (const RpcReqWifiStaEnterpriseDisable *message, + void *closure_data); +typedef void (*RpcRespWifiStaEnterpriseDisable_Closure) + (const RpcRespWifiStaEnterpriseDisable *message, + void *closure_data); +typedef void (*RpcReqEapSetIdentity_Closure) + (const RpcReqEapSetIdentity *message, + void *closure_data); +typedef void (*RpcRespEapSetIdentity_Closure) + (const RpcRespEapSetIdentity *message, + void *closure_data); +typedef void (*RpcReqEapClearIdentity_Closure) + (const RpcReqEapClearIdentity *message, + void *closure_data); +typedef void (*RpcRespEapClearIdentity_Closure) + (const RpcRespEapClearIdentity *message, + void *closure_data); +typedef void (*RpcReqEapSetUsername_Closure) + (const RpcReqEapSetUsername *message, + void *closure_data); +typedef void (*RpcRespEapSetUsername_Closure) + (const RpcRespEapSetUsername *message, + void *closure_data); +typedef void (*RpcReqEapClearUsername_Closure) + (const RpcReqEapClearUsername *message, + void *closure_data); +typedef void (*RpcRespEapClearUsername_Closure) + (const RpcRespEapClearUsername *message, + void *closure_data); +typedef void (*RpcReqEapSetPassword_Closure) + (const RpcReqEapSetPassword *message, + void *closure_data); +typedef void (*RpcRespEapSetPassword_Closure) + (const RpcRespEapSetPassword *message, + void *closure_data); +typedef void (*RpcReqEapClearPassword_Closure) + (const RpcReqEapClearPassword *message, + void *closure_data); +typedef void (*RpcRespEapClearPassword_Closure) + (const RpcRespEapClearPassword *message, + void *closure_data); +typedef void (*RpcReqEapSetNewPassword_Closure) + (const RpcReqEapSetNewPassword *message, + void *closure_data); +typedef void (*RpcRespEapSetNewPassword_Closure) + (const RpcRespEapSetNewPassword *message, + void *closure_data); +typedef void (*RpcReqEapClearNewPassword_Closure) + (const RpcReqEapClearNewPassword *message, + void *closure_data); +typedef void (*RpcRespEapClearNewPassword_Closure) + (const RpcRespEapClearNewPassword *message, + void *closure_data); +typedef void (*RpcReqEapSetCaCert_Closure) + (const RpcReqEapSetCaCert *message, + void *closure_data); +typedef void (*RpcRespEapSetCaCert_Closure) + (const RpcRespEapSetCaCert *message, + void *closure_data); +typedef void (*RpcReqEapClearCaCert_Closure) + (const RpcReqEapClearCaCert *message, + void *closure_data); +typedef void (*RpcRespEapClearCaCert_Closure) + (const RpcRespEapClearCaCert *message, + void *closure_data); +typedef void (*RpcReqEapSetCertificateAndKey_Closure) + (const RpcReqEapSetCertificateAndKey *message, + void *closure_data); +typedef void (*RpcRespEapSetCertificateAndKey_Closure) + (const RpcRespEapSetCertificateAndKey *message, + void *closure_data); +typedef void (*RpcReqEapClearCertificateAndKey_Closure) + (const RpcReqEapClearCertificateAndKey *message, + void *closure_data); +typedef void (*RpcRespEapClearCertificateAndKey_Closure) + (const RpcRespEapClearCertificateAndKey *message, + void *closure_data); +typedef void (*RpcReqEapSetDisableTimeCheck_Closure) + (const RpcReqEapSetDisableTimeCheck *message, + void *closure_data); +typedef void (*RpcRespEapSetDisableTimeCheck_Closure) + (const RpcRespEapSetDisableTimeCheck *message, + void *closure_data); +typedef void (*RpcReqEapGetDisableTimeCheck_Closure) + (const RpcReqEapGetDisableTimeCheck *message, + void *closure_data); +typedef void (*RpcRespEapGetDisableTimeCheck_Closure) + (const RpcRespEapGetDisableTimeCheck *message, + void *closure_data); +typedef void (*RpcReqEapSetTtlsPhase2Method_Closure) + (const RpcReqEapSetTtlsPhase2Method *message, + void *closure_data); +typedef void (*RpcRespEapSetTtlsPhase2Method_Closure) + (const RpcRespEapSetTtlsPhase2Method *message, + void *closure_data); +typedef void (*RpcReqEapSetSuiteb192bitCertification_Closure) + (const RpcReqEapSetSuiteb192bitCertification *message, + void *closure_data); +typedef void (*RpcRespEapSetSuiteb192bitCertification_Closure) + (const RpcRespEapSetSuiteb192bitCertification *message, + void *closure_data); +typedef void (*RpcReqEapSetPacFile_Closure) + (const RpcReqEapSetPacFile *message, + void *closure_data); +typedef void (*RpcRespEapSetPacFile_Closure) + (const RpcRespEapSetPacFile *message, + void *closure_data); +typedef void (*RpcReqEapSetFastParams_Closure) + (const RpcReqEapSetFastParams *message, + void *closure_data); +typedef void (*RpcRespEapSetFastParams_Closure) + (const RpcRespEapSetFastParams *message, + void *closure_data); +typedef void (*RpcReqEapUseDefaultCertBundle_Closure) + (const RpcReqEapUseDefaultCertBundle *message, + void *closure_data); +typedef void (*RpcRespEapUseDefaultCertBundle_Closure) + (const RpcRespEapUseDefaultCertBundle *message, + void *closure_data); +typedef void (*RpcReqWifiSetOkcSupport_Closure) + (const RpcReqWifiSetOkcSupport *message, + void *closure_data); +typedef void (*RpcRespWifiSetOkcSupport_Closure) + (const RpcRespWifiSetOkcSupport *message, + void *closure_data); +typedef void (*RpcReqEapSetDomainName_Closure) + (const RpcReqEapSetDomainName *message, + void *closure_data); +typedef void (*RpcRespEapSetDomainName_Closure) + (const RpcRespEapSetDomainName *message, + void *closure_data); +typedef void (*RpcReqEapSetEapMethods_Closure) + (const RpcReqEapSetEapMethods *message, + void *closure_data); +typedef void (*RpcRespEapSetEapMethods_Closure) + (const RpcRespEapSetEapMethods *message, + void *closure_data); typedef void (*Rpc_Closure) (const Rpc *message, void *closure_data); @@ -8361,6 +10208,7 @@ extern const ProtobufCMessageDescriptor wifi_bandwidths__descriptor; extern const ProtobufCMessageDescriptor wifi_itwt_setup_config__descriptor; extern const ProtobufCMessageDescriptor wifi_twt_config__descriptor; extern const ProtobufCMessageDescriptor connected_stalist__descriptor; +extern const ProtobufCMessageDescriptor eap_fast_config__descriptor; extern const ProtobufCMessageDescriptor rpc__req__get_mac_address__descriptor; extern const ProtobufCMessageDescriptor rpc__resp__get_mac_address__descriptor; extern const ProtobufCMessageDescriptor rpc__req__get_mode__descriptor; @@ -8506,6 +10354,54 @@ extern const ProtobufCMessageDescriptor rpc__event__sta_itwt_setup__descriptor; extern const ProtobufCMessageDescriptor rpc__event__sta_itwt_teardown__descriptor; extern const ProtobufCMessageDescriptor rpc__event__sta_itwt_suspend__descriptor; extern const ProtobufCMessageDescriptor rpc__event__sta_itwt_probe__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__wifi_sta_enterprise_enable__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__wifi_sta_enterprise_enable__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__wifi_sta_enterprise_disable__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__wifi_sta_enterprise_disable__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__eap_set_identity__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__eap_set_identity__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__eap_clear_identity__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__eap_clear_identity__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__eap_set_username__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__eap_set_username__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__eap_clear_username__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__eap_clear_username__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__eap_set_password__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__eap_set_password__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__eap_clear_password__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__eap_clear_password__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__eap_set_new_password__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__eap_set_new_password__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__eap_clear_new_password__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__eap_clear_new_password__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__eap_set_ca_cert__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__eap_set_ca_cert__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__eap_clear_ca_cert__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__eap_clear_ca_cert__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__eap_set_certificate_and_key__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__eap_set_certificate_and_key__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__eap_clear_certificate_and_key__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__eap_clear_certificate_and_key__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__eap_set_disable_time_check__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__eap_set_disable_time_check__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__eap_get_disable_time_check__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__eap_get_disable_time_check__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__eap_set_ttls_phase2_method__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__eap_set_ttls_phase2_method__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__eap_set_suiteb192bit_certification__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__eap_set_suiteb192bit_certification__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__eap_set_pac_file__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__eap_set_pac_file__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__eap_set_fast_params__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__eap_set_fast_params__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__eap_use_default_cert_bundle__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__eap_use_default_cert_bundle__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__wifi_set_okc_support__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__wifi_set_okc_support__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__eap_set_domain_name__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__eap_set_domain_name__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__eap_set_eap_methods__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__eap_set_eap_methods__descriptor; extern const ProtobufCMessageDescriptor rpc__descriptor; PROTOBUF_C__END_DECLS diff --git a/common/proto/esp_hosted_rpc.proto b/common/proto/esp_hosted_rpc.proto index 19e72e76..9fb9c7d1 100644 --- a/common/proto/esp_hosted_rpc.proto +++ b/common/proto/esp_hosted_rpc.proto @@ -425,9 +425,34 @@ enum RpcId { Req_WifiStaItwtSendProbeReq = 359; //0x167 Req_WifiStaItwtSetTargetWakeTimeOffset = 360; //0x168 + Req_WifiStaEnterpriseEnable = 361; //0x169 + Req_WifiStaEnterpriseDisable = 362; //0x16A + Req_EapSetIdentity = 363; //0x16B + Req_EapClearIdentity = 364; //0x16C + Req_EapSetUsername = 365; //0x16D + Req_EapClearUsername = 366; //0x16E + Req_EapSetPassword = 367; //0x16F + Req_EapClearPassword = 368; //0x170 + Req_EapSetNewPassword = 369; //0x171 + Req_EapClearNewPassword = 370; //0x172 + Req_EapSetCaCert = 371; //0x173 + Req_EapClearCaCert = 372; //0x174 + Req_EapSetCertificateAndKey = 373; //0x175 + Req_EapClearCertificateAndKey = 374; //0x176 + Req_EapGetDisableTimeCheck = 375; //0x177 + Req_EapSetTtlsPhase2Method = 376; //0x178 + Req_EapSetSuitebCertification = 377; //0x179 + Req_EapSetPacFile = 378; //0x17A + Req_EapSetFastParams = 379; //0x17B + Req_EapUseDefaultCertBundle = 380; //0x17C + Req_WifiSetOkcSupport = 381; //0x17D + Req_EapSetDomainName = 382; //0x17E + Req_EapSetDisableTimeCheck = 383; //0x17F + Req_EapSetEapMethods = 384; // 0x180 /* Add new control path command response before Req_Max * and update Req_Max */ - Req_Max = 361; //0x169 + Req_Max = 385; // 0x181 + /** Response Msgs **/ Resp_Base = 512; @@ -562,9 +587,34 @@ enum RpcId { Resp_WifiStaItwtSendProbeReq = 615; Resp_WifiStaItwtSetTargetWakeTimeOffset = 616; + Resp_WifiStaEnterpriseEnable = 617; + Resp_WifiStaEnterpriseDisable = 618; + Resp_EapSetIdentity = 619; + Resp_EapClearIdentity = 620; + Resp_EapSetUsername = 621; + Resp_EapClearUsername = 622; + Resp_EapSetPassword = 623; + Resp_EapClearPassword = 624; + Resp_EapSetNewPassword = 625; + Resp_EapClearNewPassword = 626; + Resp_EapSetCaCert = 627; + Resp_EapClearCaCert = 628; + Resp_EapSetCertificateAndKey = 629; + Resp_EapClearCertificateAndKey = 630; + Resp_EapGetDisableTimeCheck = 631; + Resp_EapSetTtlsPhase2Method = 632; + Resp_EapSetSuitebCertification = 633; + Resp_EapSetPacFile = 634; + Resp_EapSetFastParams = 635; + Resp_EapUseDefaultCertBundle = 636; + Resp_WifiSetOkcSupport = 637; + Resp_EapSetDomainName = 638; + Resp_EapSetDisableTimeCheck = 639; + Resp_EapSetEapMethods = 640; /* Add new control path command response before Resp_Max * and update Resp_Max */ - Resp_Max = 617; + Resp_Max = 641; + /** Event Msgs **/ Event_Base = 768; @@ -1052,6 +1102,11 @@ message ConnectedSTAList { int32 rssi = 2; } +message eap_fast_config { + int32 fast_provisioning = 1; // Enable or disable Fast Provisioning in EAP-FAST (0 = disabled, 1 = enabled) + int32 fast_max_pac_list_len = 2; // Maximum length of the PAC (Protected Access Credential) list + bool fast_pac_format_binary = 3; // Set to true for binary format PAC, false for ASCII format PAC +} /* Control path structures */ /** Req/Resp structure **/ @@ -1806,6 +1861,200 @@ message Rpc_Event_StaItwtProbe { uint32 reason = 3; } +message Rpc_Req_WifiStaEnterpriseEnable { +} + +message Rpc_Resp_WifiStaEnterpriseEnable { + int32 resp = 1; +} + +message Rpc_Req_WifiStaEnterpriseDisable { +} + +message Rpc_Resp_WifiStaEnterpriseDisable { + int32 resp = 1; +} + +message Rpc_Req_EapSetIdentity { + bytes identity = 1; + int32 len = 2; +} + +message Rpc_Resp_EapSetIdentity { + int32 resp = 1; +} + +message Rpc_Req_EapClearIdentity { +} + +message Rpc_Resp_EapClearIdentity { + int32 resp = 1; +} + +message Rpc_Req_EapSetUsername { + bytes username = 1; + int32 len = 2; +} + +message Rpc_Resp_EapSetUsername { + int32 resp = 1; +} + +message Rpc_Req_EapClearUsername { +} + +message Rpc_Resp_EapClearUsername { + int32 resp = 1; +} + +message Rpc_Req_EapSetPassword { + bytes password = 1; + int32 len = 2; +} + +message Rpc_Resp_EapSetPassword { + int32 resp = 1; +} + +message Rpc_Req_EapClearPassword { +} + +message Rpc_Resp_EapClearPassword { + int32 resp = 1; +} + +message Rpc_Req_EapSetNewPassword { + bytes new_password = 1; + int32 len = 2; +} + +message Rpc_Resp_EapSetNewPassword { + int32 resp = 1; +} + +message Rpc_Req_EapClearNewPassword { +} + +message Rpc_Resp_EapClearNewPassword { + int32 resp = 1; +} + +message Rpc_Req_EapSetCaCert { + bytes ca_cert = 1; + int32 ca_cert_len = 2; +} + +message Rpc_Resp_EapSetCaCert { + int32 resp = 1; +} + +message Rpc_Req_EapClearCaCert { +} + +message Rpc_Resp_EapClearCaCert { + int32 resp = 1; +} + +message Rpc_Req_EapSetCertificateAndKey { + bytes client_cert = 1; + int32 client_cert_len = 2; + bytes private_key = 3; + int32 private_key_len = 4; + bytes private_key_password = 5; + int32 private_key_passwd_len = 6; +} + +message Rpc_Resp_EapSetCertificateAndKey { + int32 resp = 1; +} + +message Rpc_Req_EapClearCertificateAndKey { +} + +message Rpc_Resp_EapClearCertificateAndKey { + int32 resp = 1; +} + +message Rpc_Req_EapSetDisableTimeCheck { + bool disable = 1; +} + +message Rpc_Resp_EapSetDisableTimeCheck { + int32 resp = 1; +} + +message Rpc_Req_EapGetDisableTimeCheck { +} + +message Rpc_Resp_EapGetDisableTimeCheck { + int32 resp = 1; + bool disable = 2; +} + +message Rpc_Req_EapSetTtlsPhase2Method { + int32 type = 1; +} + +message Rpc_Resp_EapSetTtlsPhase2Method { + int32 resp = 1; +} + +message Rpc_Req_EapSetSuiteb192bitCertification { + bool enable = 1; +} + +message Rpc_Resp_EapSetSuiteb192bitCertification { + int32 resp = 1; +} + +message Rpc_Req_EapSetPacFile { + bytes pac_file = 1; + int32 pac_file_len = 2; +} + +message Rpc_Resp_EapSetPacFile { + int32 resp = 1; +} + +message Rpc_Req_EapSetFastParams { + eap_fast_config eap_fast_config = 1; +} + +message Rpc_Resp_EapSetFastParams { + int32 resp = 1; +} + +message Rpc_Req_EapUseDefaultCertBundle { + bool use_default_bundle = 1; +} + +message Rpc_Resp_EapUseDefaultCertBundle { + int32 resp = 1; +} + +message Rpc_Req_WifiSetOkcSupport { + bool enable = 1; +} + +message Rpc_Resp_WifiSetOkcSupport { + int32 resp = 1; +} + +message Rpc_Req_EapSetDomainName { + bytes domain_name = 1; +} + +message Rpc_Resp_EapSetDomainName { + int32 resp = 1; +} + +message Rpc_Req_EapSetEapMethods { + int32 methods = 1; +} + +message Rpc_Resp_EapSetEapMethods { + int32 resp = 1; +} message Rpc { /* msg_type could be req, resp or Event */ RpcType msg_type = 1; @@ -1913,6 +2162,30 @@ message Rpc { Rpc_Req_WifiStaItwtGetFlowIdStatus req_wifi_sta_itwt_get_flow_id_status = 358; Rpc_Req_WifiStaItwtSendProbeReq req_wifi_sta_itwt_send_probe_req = 359; Rpc_Req_WifiStaItwtSetTargetWakeTimeOffset req_wifi_sta_itwt_set_target_wake_time_offset = 360; + Rpc_Req_WifiStaEnterpriseEnable req_wifi_sta_enterprise_enable = 361; + Rpc_Req_WifiStaEnterpriseDisable req_wifi_sta_enterprise_disable = 362; + Rpc_Req_EapSetIdentity req_eap_set_identity = 363; + Rpc_Req_EapClearIdentity req_eap_clear_identity = 364; + Rpc_Req_EapSetUsername req_eap_set_username = 365; + Rpc_Req_EapClearUsername req_eap_clear_username = 366; + Rpc_Req_EapSetPassword req_eap_set_password = 367; + Rpc_Req_EapClearPassword req_eap_clear_password = 368; + Rpc_Req_EapSetNewPassword req_eap_set_new_password = 369; + Rpc_Req_EapClearNewPassword req_eap_clear_new_password = 370; + Rpc_Req_EapSetCaCert req_eap_set_ca_cert = 371; + Rpc_Req_EapClearCaCert req_eap_clear_ca_cert = 372; + Rpc_Req_EapSetCertificateAndKey req_eap_set_certificate_and_key = 373; + Rpc_Req_EapClearCertificateAndKey req_eap_clear_certificate_and_key = 374; + Rpc_Req_EapGetDisableTimeCheck req_eap_get_disable_time_check = 375; + Rpc_Req_EapSetTtlsPhase2Method req_eap_set_ttls_phase2_method = 376; + Rpc_Req_EapSetSuiteb192bitCertification req_eap_set_suiteb_certification = 377; + Rpc_Req_EapSetPacFile req_eap_set_pac_file = 378; + Rpc_Req_EapSetFastParams req_eap_set_fast_params = 379; + Rpc_Req_EapUseDefaultCertBundle req_eap_use_default_cert_bundle = 380; + Rpc_Req_WifiSetOkcSupport req_wifi_set_okc_support = 381; + Rpc_Req_EapSetDomainName req_eap_set_domain_name = 382; + Rpc_Req_EapSetDisableTimeCheck req_eap_set_disable_time_check = 383; + Rpc_Req_EapSetEapMethods req_eap_set_eap_methods = 384; /** Responses **/ Rpc_Resp_GetMacAddress resp_get_mac_address = 513; @@ -2008,7 +2281,30 @@ message Rpc { Rpc_Resp_WifiStaItwtGetFlowIdStatus resp_wifi_sta_itwt_get_flow_id_status = 614; Rpc_Resp_WifiStaItwtSendProbeReq resp_wifi_sta_itwt_send_probe_req = 615; Rpc_Resp_WifiStaItwtSetTargetWakeTimeOffset resp_wifi_sta_itwt_set_target_wake_time_offset = 616; - + Rpc_Resp_WifiStaEnterpriseEnable resp_wifi_sta_enterprise_enable = 617; + Rpc_Resp_WifiStaEnterpriseDisable resp_wifi_sta_enterprise_disable = 618; + Rpc_Resp_EapSetIdentity resp_eap_set_identity = 619; + Rpc_Resp_EapClearIdentity resp_eap_clear_identity = 620; + Rpc_Resp_EapSetUsername resp_eap_set_username = 621; + Rpc_Resp_EapClearUsername resp_eap_clear_username = 622; + Rpc_Resp_EapSetPassword resp_eap_set_password = 623; + Rpc_Resp_EapClearPassword resp_eap_clear_password = 624; + Rpc_Resp_EapSetNewPassword resp_eap_set_new_password = 625; + Rpc_Resp_EapClearNewPassword resp_eap_clear_new_password = 626; + Rpc_Resp_EapSetCaCert resp_eap_set_ca_cert = 627; + Rpc_Resp_EapClearCaCert resp_eap_clear_ca_cert = 628; + Rpc_Resp_EapSetCertificateAndKey resp_eap_set_certificate_and_key = 629; + Rpc_Resp_EapClearCertificateAndKey resp_eap_clear_certificate_and_key = 630; + Rpc_Resp_EapGetDisableTimeCheck resp_eap_get_disable_time_check = 631; + Rpc_Resp_EapSetTtlsPhase2Method resp_eap_set_ttls_phase2_method = 632; + Rpc_Resp_EapSetSuiteb192bitCertification resp_eap_set_suiteb_certification = 633; + Rpc_Resp_EapSetPacFile resp_eap_set_pac_file = 634; + Rpc_Resp_EapSetFastParams resp_eap_set_fast_params = 635; + Rpc_Resp_EapUseDefaultCertBundle resp_eap_use_default_cert_bundle = 636; + Rpc_Resp_WifiSetOkcSupport resp_wifi_set_okc_support = 637; + Rpc_Resp_EapSetDomainName resp_eap_set_domain_name = 638; + Rpc_Resp_EapSetDisableTimeCheck resp_eap_set_disable_time_check = 639; + Rpc_Resp_EapSetEapMethods resp_eap_set_eap_methods = 640; /** Notifications **/ Rpc_Event_ESPInit event_esp_init = 769; Rpc_Event_Heartbeat event_heartbeat = 770; diff --git a/host/api/priv/esp_hosted_api_priv.h b/host/api/priv/esp_hosted_api_priv.h index e58afe86..a61678be 100644 --- a/host/api/priv/esp_hosted_api_priv.h +++ b/host/api/priv/esp_hosted_api_priv.h @@ -20,6 +20,10 @@ extern "C" { #include "esp_hosted_ota.h" #include "port_esp_hosted_host_wifi_config.h" +#if H_WIFI_ENTERPRISE_SUPPORT +#include "esp_eap_client.h" +#endif + /* Remote WiFi API Functions - Port/Implementation Specific */ esp_err_t esp_wifi_remote_init(const wifi_init_config_t *arg); esp_err_t esp_wifi_remote_deinit(void); @@ -89,6 +93,37 @@ esp_err_t esp_wifi_remote_set_bandwidths(wifi_interface_t ifx, wifi_bandwidths_t esp_err_t esp_wifi_remote_get_bandwidths(wifi_interface_t ifx, wifi_bandwidths_t *bw); #endif +#if H_WIFI_ENTERPRISE_SUPPORT +esp_err_t esp_wifi_remote_sta_enterprise_enable(void); +esp_err_t esp_wifi_remote_sta_enterprise_disable(void); +esp_err_t esp_eap_client_remote_set_identity(const unsigned char *identity, int len); +esp_err_t esp_eap_client_remote_clear_identity(void); +esp_err_t esp_eap_client_remote_set_username(const unsigned char *username, int len); +esp_err_t esp_eap_client_remote_clear_username(void); +esp_err_t esp_eap_client_remote_set_password(const unsigned char *password, int len); +esp_err_t esp_eap_client_remote_clear_password(void); +esp_err_t esp_eap_client_remote_set_new_password(const unsigned char *new_password, int len); +esp_err_t esp_eap_client_remote_clear_new_password(void); +esp_err_t esp_eap_client_remote_set_ca_cert(const unsigned char *ca_cert, int ca_cert_len); +esp_err_t esp_eap_client_remote_clear_ca_cert(void); +esp_err_t esp_eap_client_remote_clear_certificate_and_key(void); +esp_err_t esp_eap_client_remote_set_disable_time_check(bool disable); +esp_err_t esp_eap_client_remote_get_disable_time_check(bool *disable); +esp_err_t esp_eap_client_remote_set_ttls_phase2_method(esp_eap_ttls_phase2_types type); +esp_err_t esp_eap_client_remote_set_suiteb_192bit_certification(bool enable); +esp_err_t esp_eap_client_remote_set_pac_file(const unsigned char *pac_file, int pac_file_len); +esp_err_t esp_eap_client_remote_set_fast_params(esp_eap_fast_config config); +esp_err_t esp_eap_client_remote_use_default_cert_bundle(bool use_default_bundle); +esp_err_t esp_wifi_remote_set_okc_support(bool enable); +esp_err_t esp_eap_client_remote_set_domain_name(const char *domain_name); +esp_err_t esp_eap_client_remote_set_certificate_and_key(const unsigned char *client_cert, int client_cert_len, + const unsigned char *private_key, int private_key_len, + const unsigned char *private_key_password, int private_key_passwd_len); +#if H_GOT_SET_EAP_METHODS_API +esp_err_t esp_eap_client_remote_set_eap_methods(esp_eap_method_t methods); +#endif +#endif + #ifdef __cplusplus } #endif diff --git a/host/api/src/esp_hosted_api.c b/host/api/src/esp_hosted_api.c index 791ad75f..bbf28943 100644 --- a/host/api/src/esp_hosted_api.c +++ b/host/api/src/esp_hosted_api.c @@ -542,6 +542,160 @@ esp_err_t esp_hosted_get_coprocessor_fwversion(esp_hosted_coprocessor_fwver_t *v return rpc_get_coprocessor_fwversion(ver_info); } +#if H_WIFI_ENTERPRISE_SUPPORT +esp_err_t esp_wifi_remote_sta_enterprise_enable(void) +{ + check_transport_up(); + return rpc_wifi_sta_enterprise_enable(); +} + +esp_err_t esp_wifi_remote_sta_enterprise_disable(void) +{ + check_transport_up(); + return rpc_wifi_sta_enterprise_disable(); +} + +esp_err_t esp_eap_client_remote_set_identity(const unsigned char *identity, int len) +{ + check_transport_up(); + return rpc_eap_client_set_identity(identity, len); +} + +esp_err_t esp_eap_client_remote_clear_identity(void) +{ + check_transport_up(); + return rpc_eap_client_clear_identity(); +} + +esp_err_t esp_eap_client_remote_set_username(const unsigned char *username, int len) +{ + check_transport_up(); + return rpc_eap_client_set_username(username, len); +} + +esp_err_t esp_eap_client_remote_clear_username(void) +{ + check_transport_up(); + return rpc_eap_client_clear_username(); +} + +esp_err_t esp_eap_client_remote_set_password(const unsigned char *password, int len) +{ + check_transport_up(); + return rpc_eap_client_set_password(password, len); +} + +esp_err_t esp_eap_client_remote_clear_password(void) +{ + check_transport_up(); + return rpc_eap_client_clear_password(); +} + +esp_err_t esp_eap_client_remote_set_new_password(const unsigned char *new_password, int len) +{ + check_transport_up(); + return rpc_eap_client_set_new_password(new_password, len); +} + +esp_err_t esp_eap_client_remote_clear_new_password(void) +{ + check_transport_up(); + return rpc_eap_client_clear_new_password(); +} + +esp_err_t esp_eap_client_remote_set_ca_cert(const unsigned char *ca_cert, int ca_cert_len) +{ + check_transport_up(); + return rpc_eap_client_set_ca_cert(ca_cert, ca_cert_len); +} + +esp_err_t esp_eap_client_remote_clear_ca_cert(void) +{ + check_transport_up(); + return rpc_eap_client_clear_ca_cert(); +} + +esp_err_t esp_eap_client_remote_set_certificate_and_key(const unsigned char *client_cert, + int client_cert_len, + const unsigned char *private_key, + int private_key_len, + const unsigned char *private_key_password, + int private_key_passwd_len) +{ + check_transport_up(); + return rpc_eap_client_set_certificate_and_key(client_cert, client_cert_len, private_key, + private_key_len, private_key_password, private_key_passwd_len); +} + +esp_err_t esp_eap_client_remote_clear_certificate_and_key(void) +{ + check_transport_up(); + return rpc_eap_client_clear_certificate_and_key(); +} + +esp_err_t esp_eap_client_remote_set_disable_time_check(bool disable) +{ + check_transport_up(); + return rpc_eap_client_set_disable_time_check(disable); +} + +esp_err_t esp_eap_client_remote_get_disable_time_check(bool *disable) +{ + check_transport_up(); + return rpc_eap_client_get_disable_time_check(disable); +} + +esp_err_t esp_eap_client_remote_set_ttls_phase2_method(esp_eap_ttls_phase2_types type) +{ + check_transport_up(); + return rpc_eap_client_set_ttls_phase2_method(type); +} + +esp_err_t esp_eap_client_remote_set_suiteb_192bit_certification(bool enable) +{ + check_transport_up(); + return rpc_eap_client_set_suiteb_192bit_certification(enable); +} + +esp_err_t esp_eap_client_remote_set_pac_file(const unsigned char *pac_file, int pac_file_len) +{ + check_transport_up(); + return rpc_eap_client_set_pac_file(pac_file, pac_file_len); +} + +esp_err_t esp_eap_client_remote_set_fast_params(esp_eap_fast_config config) +{ + check_transport_up(); + return rpc_eap_client_set_fast_params(config); +} + +esp_err_t esp_eap_client_remote_use_default_cert_bundle(bool use_default_bundle) +{ + check_transport_up(); + return rpc_eap_client_use_default_cert_bundle(use_default_bundle); +} + +esp_err_t esp_wifi_remote_set_okc_support(bool enable) +{ + check_transport_up(); + return rpc_wifi_set_okc_support(enable); +} + +esp_err_t esp_eap_client_remote_set_domain_name(const char *domain_name) +{ + check_transport_up(); + return rpc_eap_client_set_domain_name(domain_name); +} + +#if H_GOT_SET_EAP_METHODS_API +esp_err_t esp_eap_client_remote_set_eap_methods(esp_eap_method_t methods) +{ + check_transport_up(); + return rpc_eap_client_set_eap_methods(methods); +} +#endif +#endif + /* esp_err_t esp_wifi_remote_scan_get_ap_record(wifi_ap_record_t *ap_record) esp_err_t esp_wifi_remote_set_csi(_Bool en) esp_err_t esp_wifi_remote_set_csi_rx_cb(wifi_csi_cb_t cb, void *ctx) diff --git a/host/api/src/esp_wifi_weak.c b/host/api/src/esp_wifi_weak.c index c0c45a64..336e0d85 100644 --- a/host/api/src/esp_wifi_weak.c +++ b/host/api/src/esp_wifi_weak.c @@ -313,3 +313,131 @@ H_WEAK_REF esp_err_t esp_wifi_get_bandwidths(wifi_interface_t ifx, wifi_bandwidt return esp_wifi_remote_get_bandwidths(ifx, bw); } #endif + +#if H_WIFI_ENTERPRISE_SUPPORT +H_WEAK_REF esp_err_t esp_wifi_sta_enterprise_enable(void) +{ + return esp_wifi_remote_sta_enterprise_enable(); +} + +H_WEAK_REF esp_err_t esp_wifi_sta_enterprise_disable(void) +{ + return esp_wifi_remote_sta_enterprise_disable(); +} + +H_WEAK_REF esp_err_t esp_eap_client_set_identity(const unsigned char *identity, int len) +{ + return esp_eap_client_remote_set_identity(identity, len); +} + +H_WEAK_REF void esp_eap_client_clear_identity(void) +{ + esp_eap_client_remote_clear_identity(); +} + +H_WEAK_REF esp_err_t esp_eap_client_set_username(const unsigned char *username, int len) +{ + return esp_eap_client_remote_set_username(username, len); +} + +H_WEAK_REF void esp_eap_client_clear_username(void) +{ + esp_eap_client_remote_clear_username(); +} + +H_WEAK_REF esp_err_t esp_eap_client_set_password(const unsigned char *password, int len) +{ + return esp_eap_client_remote_set_password(password, len); +} + +H_WEAK_REF void esp_eap_client_clear_password(void) +{ + esp_eap_client_remote_clear_password(); +} + +H_WEAK_REF esp_err_t esp_eap_client_set_new_password(const unsigned char *new_password, int len) +{ + return esp_eap_client_remote_set_new_password(new_password, len); +} + +H_WEAK_REF void esp_eap_client_clear_new_password(void) +{ + esp_eap_client_remote_clear_new_password(); +} + +H_WEAK_REF esp_err_t esp_eap_client_set_ca_cert(const unsigned char *ca_cert, int ca_cert_len) +{ + return esp_eap_client_remote_set_ca_cert(ca_cert, ca_cert_len); +} + +H_WEAK_REF void esp_eap_client_clear_ca_cert(void) +{ + esp_eap_client_remote_clear_ca_cert(); +} + +H_WEAK_REF esp_err_t esp_eap_client_set_certificate_and_key(const unsigned char *client_cert, int client_cert_len, + const unsigned char *private_key, int private_key_len, + const unsigned char *private_key_password, int private_key_passwd_len) +{ + return esp_eap_client_remote_set_certificate_and_key(client_cert, client_cert_len, + private_key, private_key_len, + private_key_password, private_key_passwd_len); +} + +H_WEAK_REF void esp_eap_client_clear_certificate_and_key(void) +{ + esp_eap_client_remote_clear_certificate_and_key(); +} + +H_WEAK_REF esp_err_t esp_eap_client_set_disable_time_check(bool disable) +{ + return esp_eap_client_remote_set_disable_time_check(disable); +} + +H_WEAK_REF esp_err_t esp_eap_client_get_disable_time_check(bool *disable) +{ + return esp_eap_client_remote_get_disable_time_check(disable); +} + +H_WEAK_REF esp_err_t esp_eap_client_set_ttls_phase2_method(esp_eap_ttls_phase2_types type) +{ + return esp_eap_client_remote_set_ttls_phase2_method(type); +} + +H_WEAK_REF esp_err_t esp_eap_client_set_suiteb_192bit_certification(bool enable) +{ + return esp_eap_client_remote_set_suiteb_192bit_certification(enable); +} + +H_WEAK_REF esp_err_t esp_eap_client_set_pac_file(const unsigned char *pac_file, int pac_file_len) +{ + return esp_eap_client_remote_set_pac_file(pac_file, pac_file_len); +} + +H_WEAK_REF esp_err_t esp_eap_client_set_fast_params(esp_eap_fast_config config) +{ + return esp_eap_client_remote_set_fast_params(config); +} + +H_WEAK_REF esp_err_t esp_eap_client_use_default_cert_bundle(bool use_default_bundle) +{ + return esp_eap_client_remote_use_default_cert_bundle(use_default_bundle); +} + +H_WEAK_REF void esp_wifi_set_okc_support(bool enable) +{ + esp_wifi_remote_set_okc_support(enable); +} + +H_WEAK_REF esp_err_t esp_eap_client_set_domain_name(const char *domain_name) +{ + return esp_eap_client_remote_set_domain_name(domain_name); +} + +#if H_GOT_SET_EAP_METHODS_API +esp_err_t esp_eap_client_set_eap_methods(esp_eap_method_t methods) +{ + return esp_eap_client_remote_set_eap_methods(methods); +} +#endif +#endif diff --git a/host/drivers/rpc/core/rpc_req.c b/host/drivers/rpc/core/rpc_req.c index 3ef47ecc..0e3d22f0 100644 --- a/host/drivers/rpc/core/rpc_req.c +++ b/host/drivers/rpc/core/rpc_req.c @@ -91,6 +91,16 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) case RPC_ID__Req_WifiStaGetAid: case RPC_ID__Req_WifiGetBand: case RPC_ID__Req_WifiGetBandMode: +#if H_WIFI_ENTERPRISE_SUPPORT + case RPC_ID__Req_WifiStaEnterpriseEnable: + case RPC_ID__Req_WifiStaEnterpriseDisable: + case RPC_ID__Req_EapClearIdentity: + case RPC_ID__Req_EapClearUsername: + case RPC_ID__Req_EapClearPassword: + case RPC_ID__Req_EapClearNewPassword: + case RPC_ID__Req_EapClearCaCert: + case RPC_ID__Req_EapClearCertificateAndKey: +#endif case RPC_ID__Req_WifiScanGetApRecord: { /* Intentional fallthrough & empty */ break; @@ -617,6 +627,104 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) RPC_REQ_COPY_STR(p_c->dhcp_gw, p_a->dhcp_gw, 64); RPC_REQ_COPY_STR(p_c->dns_ip, p_a->dns_ip, 64); break; +#if H_WIFI_ENTERPRISE_SUPPORT + } case RPC_ID__Req_EapSetIdentity: { + RPC_ALLOC_ASSIGN(RpcReqEapSetIdentity, req_eap_set_identity, + rpc__req__eap_set_identity__init); + RPC_REQ_COPY_BYTES(req_payload->identity, (uint8_t *)app_req->u.eap_identity.identity, app_req->u.eap_identity.len); + req_payload->len = app_req->u.eap_identity.len; + break; + } case RPC_ID__Req_EapSetUsername: { + RPC_ALLOC_ASSIGN(RpcReqEapSetUsername, req_eap_set_username, + rpc__req__eap_set_username__init); + RPC_REQ_COPY_BYTES(req_payload->username, (uint8_t *)app_req->u.eap_username.username, app_req->u.eap_username.len); + req_payload->len = app_req->u.eap_username.len; + break; + } case RPC_ID__Req_EapSetPassword: { + RPC_ALLOC_ASSIGN(RpcReqEapSetPassword, req_eap_set_password, + rpc__req__eap_set_password__init); + RPC_REQ_COPY_BYTES(req_payload->password, (uint8_t *)app_req->u.eap_password.password, app_req->u.eap_password.len); + req_payload->len = app_req->u.eap_password.len; + break; + } case RPC_ID__Req_EapSetNewPassword: { + RPC_ALLOC_ASSIGN(RpcReqEapSetNewPassword, req_eap_set_new_password, + rpc__req__eap_set_new_password__init); + RPC_REQ_COPY_BYTES(req_payload->new_password, (uint8_t *)app_req->u.eap_password.password, app_req->u.eap_password.len); + req_payload->len = app_req->u.eap_password.len; + break; + } case RPC_ID__Req_EapSetCaCert: { + RPC_ALLOC_ASSIGN(RpcReqEapSetCaCert, req_eap_set_ca_cert, + rpc__req__eap_set_ca_cert__init); + RPC_REQ_COPY_BYTES(req_payload->ca_cert, (uint8_t *)app_req->u.eap_ca_cert.ca_cert, app_req->u.eap_ca_cert.len); + req_payload->ca_cert_len = app_req->u.eap_ca_cert.len; + break; + } case RPC_ID__Req_EapSetCertificateAndKey: { + RPC_ALLOC_ASSIGN(RpcReqEapSetCertificateAndKey, req_eap_set_certificate_and_key, + rpc__req__eap_set_certificate_and_key__init); + RPC_REQ_COPY_BYTES(req_payload->client_cert, (uint8_t *)app_req->u.eap_cert_key.client_cert, app_req->u.eap_cert_key.client_cert_len); + req_payload->client_cert_len = app_req->u.eap_cert_key.client_cert_len; + RPC_REQ_COPY_BYTES(req_payload->private_key, (uint8_t *)app_req->u.eap_cert_key.private_key, app_req->u.eap_cert_key.private_key_len); + req_payload->private_key_len = app_req->u.eap_cert_key.private_key_len; + RPC_REQ_COPY_BYTES(req_payload->private_key_password, (uint8_t *)app_req->u.eap_cert_key.private_key_password, app_req->u.eap_cert_key.private_key_passwd_len); + req_payload->private_key_passwd_len = app_req->u.eap_cert_key.private_key_passwd_len; + break; + } case RPC_ID__Req_EapSetDisableTimeCheck: { + RPC_ALLOC_ASSIGN(RpcReqEapSetDisableTimeCheck, req_eap_set_disable_time_check, + rpc__req__eap_set_disable_time_check__init); + req_payload->disable = app_req->u.eap_disable_time_check.disable; + break; + } case RPC_ID__Req_EapSetTtlsPhase2Method: { + RPC_ALLOC_ASSIGN(RpcReqEapSetTtlsPhase2Method, req_eap_set_ttls_phase2_method, + rpc__req__eap_set_ttls_phase2_method__init); + req_payload->type = app_req->u.eap_ttls_phase2; + break; + } case RPC_ID__Req_EapSetSuitebCertification: { + RPC_ALLOC_ASSIGN(RpcReqEapSetSuiteb192bitCertification, req_eap_set_suiteb_certification, + rpc__req__eap_set_suiteb192bit_certification__init); + req_payload->enable = app_req->u.eap_suiteb_192bit.enable; + break; + } case RPC_ID__Req_EapSetPacFile: { + RPC_ALLOC_ASSIGN(RpcReqEapSetPacFile, req_eap_set_pac_file, + rpc__req__eap_set_pac_file__init); + RPC_REQ_COPY_BYTES(req_payload->pac_file, (uint8_t *)app_req->u.eap_pac_file.pac_file, app_req->u.eap_pac_file.len); + req_payload->pac_file_len = app_req->u.eap_pac_file.len; + break; + } case RPC_ID__Req_EapSetFastParams: { + RPC_ALLOC_ASSIGN(RpcReqEapSetFastParams, req_eap_set_fast_params, + rpc__req__eap_set_fast_params__init); + RPC_ALLOC_ELEMENT(EapFastConfig, req_payload->eap_fast_config, eap_fast_config__init); + req_payload->eap_fast_config->fast_provisioning = app_req->u.eap_fast_config.fast_provisioning; + req_payload->eap_fast_config->fast_max_pac_list_len = app_req->u.eap_fast_config.fast_max_pac_list_len; + req_payload->eap_fast_config->fast_pac_format_binary = app_req->u.eap_fast_config.fast_pac_format_binary; + break; + } case RPC_ID__Req_EapUseDefaultCertBundle: { + RPC_ALLOC_ASSIGN(RpcReqEapUseDefaultCertBundle, req_eap_use_default_cert_bundle, + rpc__req__eap_use_default_cert_bundle__init); + req_payload->use_default_bundle = app_req->u.eap_default_cert_bundle.use_default; + break; +#if H_GOT_EAP_OKC_SUPPORT + } case RPC_ID__Req_WifiSetOkcSupport: { + RPC_ALLOC_ASSIGN(RpcReqWifiSetOkcSupport, req_wifi_set_okc_support, + rpc__req__wifi_set_okc_support__init); + req_payload->enable = app_req->u.wifi_okc_support.enable; + break; +#endif +#if H_GOT_EAP_SET_DOMAIN_NAME + } case RPC_ID__Req_EapSetDomainName: { + RPC_ALLOC_ASSIGN(RpcReqEapSetDomainName, req_eap_set_domain_name, + rpc__req__eap_set_domain_name__init); + + RPC_REQ_COPY_BYTES(req_payload->domain_name, (uint8_t *)app_req->u.eap_domain_name.domain_name, strlen(app_req->u.eap_domain_name.domain_name) + 1); + break; +#endif +#if H_GOT_SET_EAP_METHODS_API + } case RPC_ID__Req_EapSetEapMethods: { + RPC_ALLOC_ASSIGN(RpcReqEapSetEapMethods, req_eap_set_eap_methods, + rpc__req__eap_set_eap_methods__init); + req_payload->methods = app_req->u.methods; + break; +#endif +#endif } default: { *failure_status = RPC_ERR_UNSUPPORTED_MSG; ESP_LOGE(TAG, "Unsupported RPC Req[%u]",req->msg_id); diff --git a/host/drivers/rpc/core/rpc_rsp.c b/host/drivers/rpc/core/rpc_rsp.c index 435c8373..e52f5392 100644 --- a/host/drivers/rpc/core/rpc_rsp.c +++ b/host/drivers/rpc/core/rpc_rsp.c @@ -681,6 +681,105 @@ int rpc_parse_rsp(Rpc *rpc_msg, ctrl_cmd_t *app_resp) RPC_FAIL_ON_NULL(resp_set_dhcp_dns); RPC_ERR_IN_RESP(resp_set_dhcp_dns); break; +#if H_WIFI_ENTERPRISE_SUPPORT + } case RPC_ID__Resp_WifiStaEnterpriseEnable: { + RPC_FAIL_ON_NULL(resp_wifi_sta_enterprise_enable); + RPC_ERR_IN_RESP(resp_wifi_sta_enterprise_enable); + break; + } case RPC_ID__Resp_WifiStaEnterpriseDisable: { + RPC_FAIL_ON_NULL(resp_wifi_sta_enterprise_disable); + RPC_ERR_IN_RESP(resp_wifi_sta_enterprise_disable); + break; + } case RPC_ID__Resp_EapSetIdentity: { + RPC_FAIL_ON_NULL(resp_eap_set_identity); + RPC_ERR_IN_RESP(resp_eap_set_identity); + break; + } case RPC_ID__Resp_EapClearIdentity: { + RPC_FAIL_ON_NULL(resp_eap_clear_identity); + RPC_ERR_IN_RESP(resp_eap_clear_identity); + break; + } case RPC_ID__Resp_EapSetUsername: { + RPC_FAIL_ON_NULL(resp_eap_set_username); + RPC_ERR_IN_RESP(resp_eap_set_username); + break; + } case RPC_ID__Resp_EapClearUsername: { + RPC_FAIL_ON_NULL(resp_eap_clear_username); + RPC_ERR_IN_RESP(resp_eap_clear_username); + break; + } case RPC_ID__Resp_EapSetPassword: { + RPC_FAIL_ON_NULL(resp_eap_set_password); + RPC_ERR_IN_RESP(resp_eap_set_password); + break; + } case RPC_ID__Resp_EapClearPassword: { + RPC_FAIL_ON_NULL(resp_eap_clear_password); + RPC_ERR_IN_RESP(resp_eap_clear_password); + break; + } case RPC_ID__Resp_EapSetNewPassword: { + RPC_FAIL_ON_NULL(resp_eap_set_new_password); + RPC_ERR_IN_RESP(resp_eap_set_new_password); + break; + } case RPC_ID__Resp_EapClearNewPassword: { + RPC_FAIL_ON_NULL(resp_eap_clear_new_password); + RPC_ERR_IN_RESP(resp_eap_clear_new_password); + break; + } case RPC_ID__Resp_EapSetCaCert: { + RPC_FAIL_ON_NULL(resp_eap_set_ca_cert); + RPC_ERR_IN_RESP(resp_eap_set_ca_cert); + break; + } case RPC_ID__Resp_EapClearCaCert: { + RPC_FAIL_ON_NULL(resp_eap_clear_ca_cert); + RPC_ERR_IN_RESP(resp_eap_clear_ca_cert); + break; + } case RPC_ID__Resp_EapSetCertificateAndKey: { + RPC_FAIL_ON_NULL(resp_eap_set_certificate_and_key); + RPC_ERR_IN_RESP(resp_eap_set_certificate_and_key); + break; + } case RPC_ID__Resp_EapClearCertificateAndKey: { + RPC_FAIL_ON_NULL(resp_eap_clear_certificate_and_key); + RPC_ERR_IN_RESP(resp_eap_clear_certificate_and_key); + break; + } case RPC_ID__Resp_EapGetDisableTimeCheck: { + RPC_FAIL_ON_NULL(resp_eap_get_disable_time_check); + RPC_ERR_IN_RESP(resp_eap_get_disable_time_check); + app_resp->u.eap_disable_time_check.disable = rpc_msg->resp_eap_get_disable_time_check->disable; + break; + } case RPC_ID__Resp_EapSetTtlsPhase2Method: { + RPC_FAIL_ON_NULL(resp_eap_set_ttls_phase2_method); + RPC_ERR_IN_RESP(resp_eap_set_ttls_phase2_method); + break; + } case RPC_ID__Resp_EapSetSuitebCertification: { + RPC_FAIL_ON_NULL(resp_eap_set_suiteb_certification); + RPC_ERR_IN_RESP(resp_eap_set_suiteb_certification); + break; + } case RPC_ID__Resp_EapSetPacFile: { + RPC_FAIL_ON_NULL(resp_eap_set_pac_file); + RPC_ERR_IN_RESP(resp_eap_set_pac_file); + break; + } case RPC_ID__Resp_EapSetFastParams: { + RPC_FAIL_ON_NULL(resp_eap_set_fast_params); + RPC_ERR_IN_RESP(resp_eap_set_fast_params); + break; + } case RPC_ID__Resp_EapUseDefaultCertBundle: { + RPC_FAIL_ON_NULL(resp_eap_use_default_cert_bundle); + RPC_ERR_IN_RESP(resp_eap_use_default_cert_bundle); + break; + } case RPC_ID__Resp_WifiSetOkcSupport: { + RPC_FAIL_ON_NULL(resp_wifi_set_okc_support); + RPC_ERR_IN_RESP(resp_wifi_set_okc_support); + break; + } case RPC_ID__Resp_EapSetDomainName: { + RPC_FAIL_ON_NULL(resp_eap_set_domain_name); + RPC_ERR_IN_RESP(resp_eap_set_domain_name); + break; + } case RPC_ID__Resp_EapSetDisableTimeCheck: { + RPC_FAIL_ON_NULL(resp_eap_set_disable_time_check); + RPC_ERR_IN_RESP(resp_eap_set_disable_time_check); + break; + } case RPC_ID__Resp_EapSetEapMethods: { + RPC_FAIL_ON_NULL(resp_eap_set_eap_methods); + RPC_ERR_IN_RESP(resp_eap_set_eap_methods); + break; +#endif } default: { ESP_LOGE(TAG, "Unsupported rpc Resp[%u]", rpc_msg->msg_id); goto fail_parse_rpc_msg; diff --git a/host/drivers/rpc/slaveif/rpc_slave_if.c b/host/drivers/rpc/slaveif/rpc_slave_if.c index a3837bba..242f12a5 100644 --- a/host/drivers/rpc/slaveif/rpc_slave_if.c +++ b/host/drivers/rpc/slaveif/rpc_slave_if.c @@ -445,3 +445,151 @@ ctrl_cmd_t * rpc_slaveif_set_slave_dhcp_dns_status(ctrl_cmd_t *req) RPC_SEND_REQ(RPC_ID__Req_SetDhcpDnsStatus); RPC_DECODE_RSP_IF_NOT_ASYNC(); } + +#if H_WIFI_ENTERPRISE_SUPPORT +ctrl_cmd_t * rpc_slaveif_wifi_sta_enterprise_enable(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_WifiStaEnterpriseEnable); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_wifi_sta_enterprise_disable(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_WifiStaEnterpriseDisable); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_eap_set_identity(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_EapSetIdentity); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_eap_clear_identity(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_EapClearIdentity); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_eap_set_username(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_EapSetUsername); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_eap_clear_username(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_EapClearUsername); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_eap_set_password(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_EapSetPassword); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_eap_clear_password(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_EapClearPassword); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_eap_set_new_password(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_EapSetNewPassword); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_eap_clear_new_password(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_EapClearNewPassword); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_eap_set_ca_cert(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_EapSetCaCert); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_eap_clear_ca_cert(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_EapClearCaCert); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_eap_set_certificate_and_key(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_EapSetCertificateAndKey); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_eap_clear_certificate_and_key(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_EapClearCertificateAndKey); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_eap_get_disable_time_check(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_EapGetDisableTimeCheck); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_eap_set_ttls_phase2_method(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_EapSetTtlsPhase2Method); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_eap_set_suiteb_certification(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_EapSetSuitebCertification); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_eap_set_pac_file(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_EapSetPacFile); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_eap_set_fast_params(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_EapSetFastParams); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_eap_use_default_cert_bundle(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_EapUseDefaultCertBundle); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_wifi_set_okc_support(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_WifiSetOkcSupport); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_eap_set_domain_name(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_EapSetDomainName); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_eap_set_disable_time_check(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_EapSetDisableTimeCheck); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +#if H_GOT_SET_EAP_METHODS_API +ctrl_cmd_t * rpc_slaveif_eap_set_eap_methods(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_EapSetEapMethods); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} +#endif +#endif diff --git a/host/drivers/rpc/slaveif/rpc_slave_if.h b/host/drivers/rpc/slaveif/rpc_slave_if.h index d7986ed8..52172df7 100644 --- a/host/drivers/rpc/slaveif/rpc_slave_if.h +++ b/host/drivers/rpc/slaveif/rpc_slave_if.h @@ -14,6 +14,10 @@ #include "esp_wifi_types.h" #include "port_esp_hosted_host_wifi_config.h" +#if H_WIFI_ENTERPRISE_SUPPORT +#include "esp_eap_client.h" +#endif + #ifdef __cplusplus extern "C" { #endif @@ -201,6 +205,63 @@ typedef struct { int32_t wifi_event_id; } event_wifi_simple_t; +#if H_WIFI_ENTERPRISE_SUPPORT +typedef struct { + const unsigned char *identity; + int len; +} rpc_eap_identity_t; + +typedef struct { + const unsigned char *username; + int len; +} rpc_eap_username_t; + +typedef struct { + const unsigned char *password; + int len; +} rpc_eap_password_t; + +typedef struct { + const unsigned char *ca_cert; + int len; +} rpc_eap_ca_cert_t; + +typedef struct { + const unsigned char *client_cert; + int client_cert_len; + const unsigned char *private_key; + int private_key_len; + const unsigned char *private_key_password; + int private_key_passwd_len; +} rpc_eap_cert_key_t; + +typedef struct { + bool disable; +} rpc_eap_disable_time_check_t; + +typedef struct { + bool enable; +} rpc_eap_suiteb_192bit_t; + +typedef struct { + const unsigned char *pac_file; + int len; +} rpc_eap_pac_file_t; + + +typedef struct { + bool use_default; +} rpc_eap_default_cert_bundle_t; + +typedef struct { + bool enable; +} rpc_wifi_okc_support_t; + +typedef struct { + const char *domain_name; +} rpc_eap_domain_name_t; +#endif + typedef struct Ctrl_cmd_t { /* msg type could be 1. req 2. resp 3. notification */ uint8_t msg_type; @@ -314,6 +375,37 @@ typedef struct Ctrl_cmd_t { wifi_event_sta_itwt_suspend_t e_wifi_sta_itwt_suspend; wifi_event_sta_itwt_probe_t e_wifi_sta_itwt_probe; +#endif +#if H_WIFI_ENTERPRISE_SUPPORT + rpc_eap_identity_t eap_identity; + + rpc_eap_username_t eap_username; + + rpc_eap_password_t eap_password; + + rpc_eap_ca_cert_t eap_ca_cert; + + rpc_eap_cert_key_t eap_cert_key; + + rpc_eap_disable_time_check_t eap_disable_time_check; + + esp_eap_ttls_phase2_types eap_ttls_phase2; + + rpc_eap_suiteb_192bit_t eap_suiteb_192bit; + + rpc_eap_pac_file_t eap_pac_file; + + esp_eap_fast_config eap_fast_config; + + rpc_eap_default_cert_bundle_t eap_default_cert_bundle; + + rpc_wifi_okc_support_t wifi_okc_support; + + rpc_eap_domain_name_t eap_domain_name; + +#if H_GOT_SET_EAP_METHODS_API + esp_eap_method_t methods; +#endif #endif }u; @@ -530,6 +622,32 @@ ctrl_cmd_t * rpc_slaveif_wifi_sta_itwt_suspend(ctrl_cmd_t *req); ctrl_cmd_t * rpc_slaveif_wifi_sta_itwt_get_flow_id_status(ctrl_cmd_t *req); ctrl_cmd_t * rpc_slaveif_wifi_sta_itwt_send_probe_req(ctrl_cmd_t *req); ctrl_cmd_t * rpc_slaveif_wifi_sta_itwt_set_target_wake_time_offset(ctrl_cmd_t *req); +#if H_WIFI_ENTERPRISE_SUPPORT +ctrl_cmd_t * rpc_slaveif_wifi_sta_enterprise_enable(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_sta_enterprise_disable(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_eap_set_identity(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_eap_clear_identity(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_eap_set_username(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_eap_clear_username(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_eap_set_password(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_eap_clear_password(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_eap_set_new_password(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_eap_clear_new_password(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_eap_set_ca_cert(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_eap_clear_ca_cert(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_eap_set_certificate_and_key(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_eap_clear_certificate_and_key(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_eap_set_disable_time_check(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_eap_get_disable_time_check(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_eap_set_ttls_phase2_method(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_eap_set_suiteb_certification(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_eap_set_pac_file(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_eap_set_fast_params(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_eap_use_default_cert_bundle(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_wifi_set_okc_support(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_eap_set_domain_name(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_eap_set_eap_methods(ctrl_cmd_t *req); +#endif #ifdef __cplusplus } #endif diff --git a/host/drivers/rpc/wrap/rpc_wrap.c b/host/drivers/rpc/wrap/rpc_wrap.c index b934af60..30958d1b 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.c +++ b/host/drivers/rpc/wrap/rpc_wrap.c @@ -545,6 +545,32 @@ int rpc_rsp_callback(ctrl_cmd_t * app_resp) case RPC_ID__Resp_WifiStaItwtSendProbeReq: case RPC_ID__Resp_WifiStaItwtSetTargetWakeTimeOffset: #endif // H_WIFI_HE_SUPPORT +#if H_WIFI_ENTERPRISE_SUPPORT + case RPC_ID__Resp_WifiStaEnterpriseEnable: + case RPC_ID__Resp_WifiStaEnterpriseDisable: + case RPC_ID__Resp_EapSetIdentity: + case RPC_ID__Resp_EapClearIdentity: + case RPC_ID__Resp_EapSetUsername: + case RPC_ID__Resp_EapClearUsername: + case RPC_ID__Resp_EapSetPassword: + case RPC_ID__Resp_EapClearPassword: + case RPC_ID__Resp_EapSetNewPassword: + case RPC_ID__Resp_EapClearNewPassword: + case RPC_ID__Resp_EapSetCaCert: + case RPC_ID__Resp_EapClearCaCert: + case RPC_ID__Resp_EapSetCertificateAndKey: + case RPC_ID__Resp_EapClearCertificateAndKey: + case RPC_ID__Resp_EapGetDisableTimeCheck: + case RPC_ID__Resp_EapSetTtlsPhase2Method: + case RPC_ID__Resp_EapSetSuitebCertification: + case RPC_ID__Resp_EapSetPacFile: + case RPC_ID__Resp_EapSetFastParams: + case RPC_ID__Resp_EapUseDefaultCertBundle: + case RPC_ID__Resp_WifiSetOkcSupport: + case RPC_ID__Resp_EapSetDomainName: + case RPC_ID__Resp_EapSetDisableTimeCheck: + case RPC_ID__Resp_EapSetEapMethods: +#endif case RPC_ID__Resp_GetCoprocessorFwVersion: { /* Intended fallthrough */ break; @@ -1608,3 +1634,301 @@ esp_err_t rpc_set_dhcp_dns_status(wifi_interface_t ifx, uint8_t link_up, resp = rpc_slaveif_set_slave_dhcp_dns_status(req); return rpc_rsp_callback(resp); } + +#if H_WIFI_ENTERPRISE_SUPPORT +esp_err_t rpc_wifi_sta_enterprise_enable(void) +{ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + resp = rpc_slaveif_wifi_sta_enterprise_enable(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_wifi_sta_enterprise_disable(void) +{ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + resp = rpc_slaveif_wifi_sta_enterprise_disable(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_eap_client_set_identity(const unsigned char *identity, int len) +{ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + if (!identity || len <= 0) { + return FAILURE; + } + + req->u.eap_identity.identity = identity; + req->u.eap_identity.len = len; + + resp = rpc_slaveif_eap_set_identity(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_eap_client_clear_identity(void) +{ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + resp = rpc_slaveif_eap_clear_identity(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_eap_client_set_username(const unsigned char *username, int len) +{ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + if (!username || len <= 0) { + return FAILURE; + } + + req->u.eap_username.username = username; + req->u.eap_username.len = len; + + resp = rpc_slaveif_eap_set_username(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_eap_client_clear_username(void) +{ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + resp = rpc_slaveif_eap_clear_username(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_eap_client_set_password(const unsigned char *password, int len) +{ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + if (!password || len <= 0) { + return FAILURE; + } + + req->u.eap_password.password = password; + req->u.eap_password.len = len; + + resp = rpc_slaveif_eap_set_password(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_eap_client_clear_password(void) +{ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + resp = rpc_slaveif_eap_clear_password(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_eap_client_set_new_password(const unsigned char *new_password, int len) +{ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + if (!new_password || len <= 0) { + return FAILURE; + } + + req->u.eap_password.password = new_password; + req->u.eap_password.len = len; + + resp = rpc_slaveif_eap_set_new_password(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_eap_client_clear_new_password(void) +{ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + resp = rpc_slaveif_eap_clear_new_password(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_eap_client_set_ca_cert(const unsigned char *ca_cert, int ca_cert_len) +{ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + if (!ca_cert || ca_cert_len <= 0) { + return FAILURE; + } + + req->u.eap_ca_cert.ca_cert = ca_cert; + req->u.eap_ca_cert.len = ca_cert_len; + + resp = rpc_slaveif_eap_set_ca_cert(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_eap_client_clear_ca_cert(void) +{ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + resp = rpc_slaveif_eap_clear_ca_cert(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_eap_client_set_certificate_and_key(const unsigned char *client_cert, int client_cert_len, + const unsigned char *private_key, int private_key_len, + const unsigned char *private_key_password, int private_key_passwd_len) +{ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + if (!client_cert || (client_cert_len <= 0) || + !private_key || (private_key_len <= 0) || + (private_key_password && private_key_passwd_len <= 0) || + (private_key_passwd_len > 0 && !private_key_password)) { + return FAILURE; + } + + req->u.eap_cert_key.client_cert = client_cert; + req->u.eap_cert_key.client_cert_len = client_cert_len; + + req->u.eap_cert_key.private_key = private_key; + req->u.eap_cert_key.private_key_len = private_key_len; + + req->u.eap_cert_key.private_key_password = private_key_password; + req->u.eap_cert_key.private_key_passwd_len = private_key_passwd_len; + + resp = rpc_slaveif_eap_set_certificate_and_key(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_eap_client_clear_certificate_and_key(void) +{ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + resp = rpc_slaveif_eap_clear_certificate_and_key(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_eap_client_set_disable_time_check(bool disable) +{ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + req->u.eap_disable_time_check.disable = disable; + resp = rpc_slaveif_eap_set_disable_time_check(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_eap_client_get_disable_time_check(bool *disable) +{ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + if (!disable) + return FAILURE; + + resp = rpc_slaveif_eap_get_disable_time_check(req); + + if (resp && resp->resp_event_status == SUCCESS) { + *disable = resp->u.eap_disable_time_check.disable; + } + + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_eap_client_set_ttls_phase2_method(esp_eap_ttls_phase2_types type) +{ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + req->u.eap_ttls_phase2 = type; + resp = rpc_slaveif_eap_set_ttls_phase2_method(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_eap_client_set_suiteb_192bit_certification(bool enable) +{ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + req->u.eap_suiteb_192bit.enable = enable; + resp = rpc_slaveif_eap_set_suiteb_certification(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_eap_client_set_pac_file(const unsigned char *pac_file, int pac_file_len) +{ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + if (!pac_file || pac_file_len <= 0) + return FAILURE; + + req->u.eap_pac_file.pac_file = pac_file; + req->u.eap_pac_file.len = pac_file_len; + + resp = rpc_slaveif_eap_set_pac_file(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_eap_client_set_fast_params(esp_eap_fast_config config) +{ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + req->u.eap_fast_config = config; + resp = rpc_slaveif_eap_set_fast_params(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_eap_client_use_default_cert_bundle(bool use_default_bundle) +{ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + req->u.eap_default_cert_bundle.use_default = use_default_bundle; + resp = rpc_slaveif_eap_use_default_cert_bundle(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_wifi_set_okc_support(bool enable) +{ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + req->u.wifi_okc_support.enable = enable; + resp = rpc_slaveif_wifi_set_okc_support(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_eap_client_set_domain_name(const char *domain_name) +{ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + if (!domain_name) + return FAILURE; + + req->u.eap_domain_name.domain_name = domain_name; + resp = rpc_slaveif_eap_set_domain_name(req); + return rpc_rsp_callback(resp); +} + +#if H_GOT_SET_EAP_METHODS_API +esp_err_t rpc_eap_client_set_eap_methods(esp_eap_method_t methods) +{ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + req->u.methods = methods; + resp = rpc_slaveif_eap_set_eap_methods(req); + return rpc_rsp_callback(resp); +} +#endif +#endif diff --git a/host/drivers/rpc/wrap/rpc_wrap.h b/host/drivers/rpc/wrap/rpc_wrap.h index 58f9d17d..63c291ce 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.h +++ b/host/drivers/rpc/wrap/rpc_wrap.h @@ -18,6 +18,10 @@ extern "C" { #include "esp_hosted_api_types.h" #include "esp_hosted_ota.h" +#if H_WIFI_ENTERPRISE_SUPPORT +#include "esp_eap_client.h" +#endif + /** Exported variables **/ /** Inline functions **/ @@ -106,6 +110,38 @@ esp_err_t rpc_set_dhcp_dns_status(wifi_interface_t interface, uint8_t link_up, uint8_t dhcp_up, char *dhcp_ip, char *dhcp_nm, char *dhcp_gw, uint8_t dns_up, char *dns_ip, uint8_t dns_type); +#if H_WIFI_ENTERPRISE_SUPPORT +esp_err_t rpc_wifi_sta_enterprise_enable(void); +esp_err_t rpc_wifi_sta_enterprise_disable(void); +esp_err_t rpc_eap_client_set_identity(const unsigned char *identity, int len); +esp_err_t rpc_eap_client_clear_identity(void); +esp_err_t rpc_eap_client_set_username(const unsigned char *username, int len); +esp_err_t rpc_eap_client_clear_username(void); +esp_err_t rpc_eap_client_set_password(const unsigned char *password, int len); +esp_err_t rpc_eap_client_clear_password(void); +esp_err_t rpc_eap_client_set_new_password(const unsigned char *new_password, int len); +esp_err_t rpc_eap_client_clear_new_password(void); +esp_err_t rpc_eap_client_set_ca_cert(const unsigned char *ca_cert, int ca_cert_len); +esp_err_t rpc_eap_client_clear_ca_cert(void); + +esp_err_t rpc_eap_client_set_certificate_and_key(const unsigned char *client_cert, int client_cert_len, + const unsigned char *private_key, int private_key_len, + const unsigned char *private_key_password, int private_key_passwd_len); +esp_err_t rpc_eap_client_clear_certificate_and_key(void); +esp_err_t rpc_eap_client_set_disable_time_check(bool disable); +esp_err_t rpc_eap_client_get_disable_time_check(bool *disable); +esp_err_t rpc_eap_client_set_ttls_phase2_method(esp_eap_ttls_phase2_types type); +esp_err_t rpc_eap_client_set_suiteb_192bit_certification(bool enable); +esp_err_t rpc_eap_client_set_pac_file(const unsigned char *pac_file, int pac_file_len); +esp_err_t rpc_eap_client_set_fast_params(esp_eap_fast_config config); +esp_err_t rpc_eap_client_use_default_cert_bundle(bool use_default_bundle); +esp_err_t rpc_wifi_set_okc_support(bool enable); +esp_err_t rpc_eap_client_set_domain_name(const char *domain_name); +#if H_GOT_SET_EAP_METHODS_API +esp_err_t rpc_eap_client_set_eap_methods(esp_eap_method_t methods); +#endif +#endif + #ifdef __cplusplus } #endif diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index 16aabe64..e278ced7 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -6,6 +6,6 @@ #ifndef __ESP_HOSTED_HOST_FW_VERSION_H__ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 -#define ESP_HOSTED_VERSION_MINOR_1 3 -#define ESP_HOSTED_VERSION_PATCH_1 3 +#define ESP_HOSTED_VERSION_MINOR_1 4 +#define ESP_HOSTED_VERSION_PATCH_1 0 #endif diff --git a/host/port/esp/freertos/include/port_esp_hosted_host_wifi_config.h b/host/port/esp/freertos/include/port_esp_hosted_host_wifi_config.h index 69b81f1f..b806c966 100644 --- a/host/port/esp/freertos/include/port_esp_hosted_host_wifi_config.h +++ b/host/port/esp/freertos/include/port_esp_hosted_host_wifi_config.h @@ -25,6 +25,12 @@ #define H_WIFI_DUALBAND_SUPPORT 0 #endif +#ifdef CONFIG_ESP_WIFI_REMOTE_EAP_ENABLED + #define H_WIFI_ENTERPRISE_SUPPORT 1 +#else + #define H_WIFI_ENTERPRISE_SUPPORT 0 +#endif + /* ESP-IDF 5.5.0 breaking change: reserved/he_reserved renamed to reserved1/reserved2 */ #if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 5, 0) #define H_WIFI_NEW_RESERVED_FIELD_NAMES 1 @@ -73,4 +79,21 @@ #define H_PRESENT_IN_ESP_IDF_6_0_0 0 #endif +#if (ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 3, 4)) || (ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 4, 3)) || ESP_IDF_VERSION == ESP_IDF_VERSION_VAL(5, 5, 0) +#define H_GOT_SET_EAP_METHODS_API 0 +#else +#define H_GOT_SET_EAP_METHODS_API 1 +#endif +#if (ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 3, 4)) || (ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 4, 3)) +#define H_GOT_EAP_SET_DOMAIN_NAME 0 +#else +#define H_GOT_EAP_SET_DOMAIN_NAME 1 +#endif + +#if (ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 4, 3)) +#define H_GOT_EAP_OKC_SUPPORT 0 +#else +#define H_GOT_EAP_OKC_SUPPORT 1 +#endif + #endif /* __ESP_HOSTED_WIFI_CONFIG_H__ */ diff --git a/idf_component.yml b/idf_component.yml index e19f7dba..831d37ce 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.3.3" +version: "2.4.0" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/CMakeLists.txt b/slave/CMakeLists.txt index bebd5273..76c70de2 100644 --- a/slave/CMakeLists.txt +++ b/slave/CMakeLists.txt @@ -8,7 +8,7 @@ add_compile_options(-Wl,--wrap=esp_wifi_init) include($ENV{IDF_PATH}/tools/cmake/project.cmake) list(APPEND EXCLUDE_COMPONENTS lwip esp_netif) -set(COMPONENTS esp_timer esptool_py bootloader main nvs_flash esp_rom esp_wifi protocomm driver mqtt) +set(COMPONENTS esp_timer esptool_py bootloader main nvs_flash esp_rom esp_wifi protocomm driver mqtt wpa_supplicant) #list(APPEND COMPONENTS esp_gdbstub) # incase gdbstub needed project(network_adapter) idf_build_set_property(COMPILE_OPTIONS "-fdiagnostics-color=always" APPEND) diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index 58692640..c727f325 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -6,6 +6,6 @@ #ifndef __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 -#define PROJECT_VERSION_MINOR_1 3 -#define PROJECT_VERSION_PATCH_1 3 +#define PROJECT_VERSION_MINOR_1 4 +#define PROJECT_VERSION_PATCH_1 0 #endif diff --git a/slave/main/slave_control.c b/slave/main/slave_control.c index d12985c4..e6ec2dd3 100644 --- a/slave/main/slave_control.c +++ b/slave/main/slave_control.c @@ -23,7 +23,9 @@ #if CONFIG_SOC_WIFI_HE_SUPPORT #include "esp_wifi_he.h" #endif - +#if H_WIFI_ENTERPRISE_SUPPORT +#include "esp_eap_client.h" +#endif /* Slave-side: Always support reserved field decoding for maximum compatibility * The host may or may not have CONFIG_ESP_HOSTED_DECODE_WIFI_RESERVED_FIELD enabled */ @@ -59,6 +61,18 @@ static wifi_config_t new_wifi_config = {0}; static bool new_config_recvd = false; static wifi_event_sta_connected_t lkg_sta_connected_event = {0}; +#if H_WIFI_ENTERPRISE_SUPPORT +#define CLEAR_CERT(ptr, len) \ + do { \ + if (ptr) { \ + memset(ptr, 0, len); \ + free(ptr); \ + ptr = NULL; \ + } \ + len = 0; \ + } while (0) +#endif + typedef struct esp_rpc_cmd { int req_num; esp_err_t (*command_handler)(Rpc *req, @@ -79,6 +93,17 @@ static rpc_dhcp_dns_status_t s2h_dhcp_dns = {0}; #endif +#if H_WIFI_ENTERPRISE_SUPPORT +unsigned char *g_ca_cert = NULL; +int g_ca_cert_len = 0; +unsigned char *g_client_cert = NULL; +int g_client_cert_len = 0; +unsigned char *g_private_key = NULL; +int g_private_key_len = 0; +unsigned char *g_private_key_password = NULL; +int g_private_key_passwd_len = 0; +#endif + static esp_ota_handle_t handle; const esp_partition_t* update_partition = NULL; static int ota_msg = 0; @@ -216,6 +241,20 @@ void vTimerCallback( TimerHandle_t xTimer ) esp_restart(); } +#if H_WIFI_ENTERPRISE_SUPPORT +static void free_all_g_eap_cert_and_key(void) +{ + CLEAR_CERT(g_client_cert, g_client_cert_len); + CLEAR_CERT(g_private_key, g_private_key_len); + CLEAR_CERT(g_private_key_password, g_private_key_passwd_len); +} + +static void free_g_ca_cert(void) +{ + CLEAR_CERT(g_ca_cert, g_ca_cert_len); +} +#endif + /* Function returns mac address of station/softap */ static esp_err_t req_wifi_get_mac(Rpc *req, Rpc *resp, void *priv_data) @@ -1263,6 +1302,10 @@ static esp_err_t req_wifi_deinit(Rpc *req, Rpc *resp, void *priv_data) RpcReqWifiDeinit, req_wifi_deinit, rpc__resp__wifi_deinit__init); +#if H_WIFI_ENTERPRISE_SUPPORT + free_g_ca_cert(); + free_all_g_eap_cert_and_key(); +#endif RPC_RET_FAIL_IF(esp_wifi_deinit()); return ESP_OK; @@ -2701,6 +2744,362 @@ static esp_err_t req_wifi_get_inactive_time(Rpc *req, Rpc *resp, void *priv_data return ESP_OK; } +#if H_WIFI_ENTERPRISE_SUPPORT +static esp_err_t req_wifi_sta_enterprise_enable(Rpc *req, + Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE_SIMPLE(RpcRespWifiStaEnterpriseEnable, resp_wifi_sta_enterprise_enable, + RpcReqWifiStaEnterpriseEnable, req_wifi_sta_enterprise_enable, + rpc__resp__wifi_sta_enterprise_enable__init); + + RPC_RET_FAIL_IF(esp_wifi_sta_enterprise_enable()); + + return ESP_OK; +} + +static esp_err_t req_wifi_sta_enterprise_disable(Rpc *req, + Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE_SIMPLE(RpcRespWifiStaEnterpriseDisable, resp_wifi_sta_enterprise_disable, + RpcReqWifiStaEnterpriseDisable, req_wifi_sta_enterprise_disable, + rpc__resp__wifi_sta_enterprise_disable__init); + + free_g_ca_cert(); + free_all_g_eap_cert_and_key(); + RPC_RET_FAIL_IF(esp_wifi_sta_enterprise_disable()); + + return ESP_OK; +} + +static esp_err_t req_eap_set_identity(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespEapSetIdentity, resp_eap_set_identity, + RpcReqEapSetIdentity, req_eap_set_identity, + rpc__resp__eap_set_identity__init); + + RPC_RET_FAIL_IF(!req_payload->identity.data || req_payload->len <= 0); + const unsigned char *identity = req_payload->identity.data; + int len = req_payload->len; + + RPC_RET_FAIL_IF(esp_eap_client_set_identity(identity, len)); + return ESP_OK; +} + +static esp_err_t req_eap_clear_identity(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE_SIMPLE(RpcRespEapClearIdentity, resp_eap_clear_identity, + RpcReqEapClearIdentity, req_eap_clear_identity, + rpc__resp__eap_clear_identity__init); + + esp_eap_client_clear_identity(); + + return ESP_OK; +} + +static esp_err_t req_eap_set_username(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespEapSetUsername, resp_eap_set_username, + RpcReqEapSetUsername, req_eap_set_username, + rpc__resp__eap_set_username__init); + + RPC_RET_FAIL_IF(!req_payload->username.data || req_payload->len <= 0); + const unsigned char *username = req_payload->username.data; + int len = req_payload->len; + + RPC_RET_FAIL_IF(esp_eap_client_set_username(username, len)); + + return ESP_OK; +} + +static esp_err_t req_eap_clear_username(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE_SIMPLE(RpcRespEapClearUsername, resp_eap_clear_username, + RpcReqEapClearUsername, req_eap_clear_username, + rpc__resp__eap_clear_username__init); + + esp_eap_client_clear_username(); + + return ESP_OK; +} + +static esp_err_t req_eap_set_password(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespEapSetPassword, resp_eap_set_password, + RpcReqEapSetPassword, req_eap_set_password, + rpc__resp__eap_set_password__init); + + RPC_RET_FAIL_IF(!req_payload->password.data || req_payload->len <= 0); + const unsigned char *password = req_payload->password.data; + int len = req_payload->len; + + RPC_RET_FAIL_IF(esp_eap_client_set_password(password, len)); + + return ESP_OK; +} + +static esp_err_t req_eap_clear_password(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE_SIMPLE(RpcRespEapClearPassword, resp_eap_clear_password, + RpcReqEapClearPassword, req_eap_clear_password, + rpc__resp__eap_clear_password__init); + + esp_eap_client_clear_password(); + + return ESP_OK; +} + +static esp_err_t req_eap_set_new_password(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespEapSetNewPassword, resp_eap_set_new_password, + RpcReqEapSetNewPassword, req_eap_set_new_password, + rpc__resp__eap_set_new_password__init); + + RPC_RET_FAIL_IF(!req_payload->new_password.data || req_payload->len <= 0); + + RPC_RET_FAIL_IF(esp_eap_client_set_password(req_payload->new_password.data, req_payload->len)); + + return ESP_OK; +} + +static esp_err_t req_eap_clear_new_password(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE_SIMPLE(RpcRespEapClearNewPassword, resp_eap_clear_new_password, + RpcReqEapClearNewPassword, req_eap_clear_new_password, + rpc__resp__eap_clear_new_password__init); + + esp_eap_client_clear_new_password(); + + return ESP_OK; +} + +static esp_err_t req_eap_set_ca_cert(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespEapSetCaCert, resp_eap_set_ca_cert, + RpcReqEapSetCaCert, req_eap_set_ca_cert, + rpc__resp__eap_set_ca_cert__init); + + RPC_RET_FAIL_IF(!req_payload->ca_cert.data || req_payload->ca_cert_len <= 0); + free_g_ca_cert(); + g_ca_cert_len = req_payload->ca_cert_len; + if (g_ca_cert_len) { + g_ca_cert = (unsigned char *)malloc(g_ca_cert_len); + if (g_ca_cert == NULL) { + return ESP_ERR_NO_MEM; + } + memcpy(g_ca_cert, req_payload->ca_cert.data, g_ca_cert_len); + } + + RPC_RET_FAIL_IF(esp_eap_client_set_ca_cert(g_ca_cert, g_ca_cert_len)); + + return ESP_OK; +} + +static esp_err_t req_eap_clear_ca_cert(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE_SIMPLE(RpcRespEapClearCaCert, resp_eap_clear_ca_cert, + RpcReqEapClearCaCert, req_eap_clear_ca_cert, + rpc__resp__eap_clear_ca_cert__init); + + free_g_ca_cert(); + esp_eap_client_clear_ca_cert(); + + return ESP_OK; +} + +static esp_err_t req_eap_set_certificate_and_key(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespEapSetCertificateAndKey, resp_eap_set_certificate_and_key, + RpcReqEapSetCertificateAndKey, req_eap_set_certificate_and_key, + rpc__resp__eap_set_certificate_and_key__init); + + RPC_RET_FAIL_IF((req_payload->client_cert.data && req_payload->client_cert_len <= 0) || + (req_payload->client_cert_len > 0 && !req_payload->client_cert.data)); + RPC_RET_FAIL_IF((req_payload->private_key.data && req_payload->private_key_len <= 0) || + (req_payload->private_key_len > 0 && !req_payload->private_key.data)); + RPC_RET_FAIL_IF((req_payload->private_key_password.data && req_payload->private_key_passwd_len <= 0) || + (req_payload->private_key_passwd_len > 0 && !req_payload->private_key_password.data)); + + free_all_g_eap_cert_and_key(); + g_client_cert_len = req_payload->client_cert_len; + if (g_client_cert_len) { + g_client_cert = (unsigned char *)malloc(g_client_cert_len); + if (g_client_cert == NULL) { + return ESP_ERR_NO_MEM; + } + memcpy(g_client_cert, req_payload->client_cert.data, g_client_cert_len); + } + + g_private_key_len = req_payload->private_key_len; + if (g_private_key_len) { + g_private_key = (unsigned char *)malloc(g_private_key_len); + if (g_private_key == NULL) { + free_all_g_eap_cert_and_key(); + return ESP_ERR_NO_MEM; + } + memcpy(g_private_key, req_payload->private_key.data, g_private_key_len); + } + + g_private_key_passwd_len = req_payload->private_key_passwd_len; + if (g_private_key_passwd_len) { + g_private_key_password = (unsigned char *)malloc(g_private_key_passwd_len); + if (g_private_key_password == NULL) { + free_all_g_eap_cert_and_key(); + return ESP_ERR_NO_MEM; + } + memcpy(g_private_key_password, req_payload->private_key_password.data, g_private_key_passwd_len); + } + + RPC_RET_FAIL_IF(esp_eap_client_set_certificate_and_key(g_client_cert, g_client_cert_len, + g_private_key, g_private_key_len, + g_private_key_password, g_private_key_passwd_len)); + + return ESP_OK; +} + +static esp_err_t req_eap_clear_certificate_and_key(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE_SIMPLE(RpcRespEapClearCertificateAndKey, resp_eap_clear_certificate_and_key, + RpcReqEapClearCertificateAndKey, req_eap_clear_certificate_and_key, + rpc__resp__eap_clear_certificate_and_key__init); + + free_all_g_eap_cert_and_key(); + esp_eap_client_clear_certificate_and_key(); + + return ESP_OK; +} + +static esp_err_t req_eap_set_disable_time_check(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespEapSetDisableTimeCheck, resp_eap_set_disable_time_check, + RpcReqEapSetDisableTimeCheck, req_eap_set_disable_time_check, + rpc__resp__eap_set_disable_time_check__init); + + RPC_RET_FAIL_IF(esp_eap_client_set_disable_time_check(req_payload->disable)); + + return ESP_OK; +} + +static esp_err_t req_eap_get_disable_time_check(Rpc *req, Rpc *resp, void *priv_data) +{ + bool disable = false; + + RPC_TEMPLATE_SIMPLE(RpcRespEapGetDisableTimeCheck, resp_eap_get_disable_time_check, + RpcReqEapGetDisableTimeCheck, req_eap_get_disable_time_check, + rpc__resp__eap_get_disable_time_check__init); + + RPC_RET_FAIL_IF(esp_eap_client_get_disable_time_check(&disable)); + + resp_payload->disable = disable; + + return ESP_OK; +} + +static esp_err_t req_eap_set_ttls_phase2_method(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespEapSetTtlsPhase2Method, resp_eap_set_ttls_phase2_method, + RpcReqEapSetTtlsPhase2Method, req_eap_set_ttls_phase2_method, + rpc__resp__eap_set_ttls_phase2_method__init); + + RPC_RET_FAIL_IF(esp_eap_client_set_ttls_phase2_method(req_payload->type)); + + return ESP_OK; +} + +static esp_err_t req_eap_set_suiteb_certification(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespEapSetSuiteb192bitCertification, resp_eap_set_suiteb_certification, + RpcReqEapSetSuiteb192bitCertification, req_eap_set_suiteb_certification, + rpc__resp__eap_set_suiteb192bit_certification__init); + + RPC_RET_FAIL_IF(esp_eap_client_set_suiteb_192bit_certification(req_payload->enable)); + + return ESP_OK; +} + +static esp_err_t req_eap_set_pac_file(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespEapSetPacFile, resp_eap_set_pac_file, + RpcReqEapSetPacFile, req_eap_set_pac_file, + rpc__resp__eap_set_pac_file__init); + + RPC_RET_FAIL_IF(!req_payload->pac_file.data || req_payload->pac_file_len <= 0); + const unsigned char *pac_file = req_payload->pac_file.data; + int pac_file_len = req_payload->pac_file_len; + + RPC_RET_FAIL_IF(esp_eap_client_set_pac_file(pac_file, pac_file_len)); + + return ESP_OK; +} + +static esp_err_t req_eap_set_fast_params(Rpc *req, Rpc *resp, void *priv_data) +{ + esp_eap_fast_config fast_config = {0}; + + RPC_TEMPLATE(RpcRespEapSetFastParams, resp_eap_set_fast_params, + RpcReqEapSetFastParams, req_eap_set_fast_params, + rpc__resp__eap_set_fast_params__init); + + fast_config.fast_provisioning = req_payload->eap_fast_config->fast_provisioning; + fast_config.fast_max_pac_list_len = req_payload->eap_fast_config->fast_max_pac_list_len; + fast_config.fast_pac_format_binary = req_payload->eap_fast_config->fast_pac_format_binary; + + RPC_RET_FAIL_IF(esp_eap_client_set_fast_params(fast_config)); + + return ESP_OK; +} + +static esp_err_t req_eap_use_default_cert_bundle(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespEapUseDefaultCertBundle, resp_eap_use_default_cert_bundle, + RpcReqEapUseDefaultCertBundle, req_eap_use_default_cert_bundle, + rpc__resp__eap_use_default_cert_bundle__init); + + RPC_RET_FAIL_IF(esp_eap_client_use_default_cert_bundle(req_payload->use_default_bundle)); + + return ESP_OK; +} + +#if H_GOT_EAP_OKC_SUPPORT +static esp_err_t req_wifi_set_okc_support(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespWifiSetOkcSupport, resp_wifi_set_okc_support, + RpcReqWifiSetOkcSupport, req_wifi_set_okc_support, + rpc__resp__wifi_set_okc_support__init); + + esp_wifi_set_okc_support(req_payload->enable); + return ESP_OK; +} +#endif + +#if H_GOT_EAP_SET_DOMAIN_NAME +static esp_err_t req_eap_set_domain_name(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespEapSetDomainName, resp_eap_set_domain_name, + RpcReqEapSetDomainName, req_eap_set_domain_name, + rpc__resp__eap_set_domain_name__init); + + const char *domain_name = (const char *)req_payload->domain_name.data; + RPC_RET_FAIL_IF(!req_payload->domain_name.data); + + RPC_RET_FAIL_IF(esp_eap_client_set_domain_name(domain_name)); + return ESP_OK; +} +#endif + +#if H_GOT_SET_EAP_METHODS_API +static esp_err_t req_eap_set_eap_methods(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespEapSetEapMethods, resp_eap_set_eap_methods, + RpcReqEapSetEapMethods, req_eap_set_eap_methods, + rpc__resp__eap_set_eap_methods__init); + + RPC_RET_FAIL_IF(esp_eap_client_set_eap_methods(req_payload->methods)); + + return ESP_OK; +} +#endif +#endif // H_WIFI_ENTERPRISE_SUPPORT + static esp_err_t req_get_coprocessor_fw_version(Rpc *req, Rpc *resp, void *priv_data) { RPC_TEMPLATE_SIMPLE(RpcRespGetCoprocessorFwVersion, resp_get_coprocessor_fwversion, @@ -3103,6 +3502,110 @@ static esp_rpc_req_t req_table[] = { .command_handler = req_wifi_sta_itwt_set_target_wake_time_offset }, #endif // CONFIG_SOC_WIFI_HE_SUPPORT +#if H_WIFI_ENTERPRISE_SUPPORT + { + .req_num = RPC_ID__Req_WifiStaEnterpriseEnable, + .command_handler = req_wifi_sta_enterprise_enable + }, + { + .req_num = RPC_ID__Req_WifiStaEnterpriseDisable, + .command_handler = req_wifi_sta_enterprise_disable + }, + { + .req_num = RPC_ID__Req_EapSetIdentity, + .command_handler = req_eap_set_identity + }, + { + .req_num = RPC_ID__Req_EapClearIdentity, + .command_handler = req_eap_clear_identity + }, + { + .req_num = RPC_ID__Req_EapSetUsername, + .command_handler = req_eap_set_username + }, + { + .req_num = RPC_ID__Req_EapClearUsername, + .command_handler = req_eap_clear_username + }, + { + .req_num = RPC_ID__Req_EapSetPassword, + .command_handler = req_eap_set_password + }, + { + .req_num = RPC_ID__Req_EapClearPassword, + .command_handler = req_eap_clear_password + }, + { + .req_num = RPC_ID__Req_EapSetNewPassword, + .command_handler = req_eap_set_new_password + }, + { + .req_num = RPC_ID__Req_EapClearNewPassword, + .command_handler = req_eap_clear_new_password + }, + { + .req_num = RPC_ID__Req_EapSetCaCert, + .command_handler = req_eap_set_ca_cert + }, + { + .req_num = RPC_ID__Req_EapClearCaCert, + .command_handler = req_eap_clear_ca_cert + }, + { + .req_num = RPC_ID__Req_EapSetCertificateAndKey, + .command_handler = req_eap_set_certificate_and_key + }, + { + .req_num = RPC_ID__Req_EapClearCertificateAndKey, + .command_handler = req_eap_clear_certificate_and_key + }, + { + .req_num = RPC_ID__Req_EapGetDisableTimeCheck, + .command_handler = req_eap_get_disable_time_check + }, + { + .req_num = RPC_ID__Req_EapSetTtlsPhase2Method, + .command_handler = req_eap_set_ttls_phase2_method + }, + { + .req_num = RPC_ID__Req_EapSetSuitebCertification, + .command_handler = req_eap_set_suiteb_certification + }, + { + .req_num = RPC_ID__Req_EapSetPacFile, + .command_handler = req_eap_set_pac_file + }, + { + .req_num = RPC_ID__Req_EapSetFastParams, + .command_handler = req_eap_set_fast_params + }, + { + .req_num = RPC_ID__Req_EapUseDefaultCertBundle, + .command_handler = req_eap_use_default_cert_bundle + }, +#if H_GOT_EAP_OKC_SUPPORT + { + .req_num = RPC_ID__Req_WifiSetOkcSupport, + .command_handler = req_wifi_set_okc_support + }, +#endif +#if H_GOT_EAP_SET_DOMAIN_NAME + { + .req_num = RPC_ID__Req_EapSetDomainName, + .command_handler = req_eap_set_domain_name + }, +#endif + { + .req_num = RPC_ID__Req_EapSetDisableTimeCheck, + .command_handler = req_eap_set_disable_time_check + }, +#if H_GOT_SET_EAP_METHODS_API + { + .req_num = RPC_ID__Req_EapSetEapMethods, + .command_handler = req_eap_set_eap_methods + }, +#endif +#endif }; diff --git a/slave/main/slave_wifi_config.h b/slave/main/slave_wifi_config.h index 1b5b1735..cb2fd62a 100644 --- a/slave/main/slave_wifi_config.h +++ b/slave/main/slave_wifi_config.h @@ -57,4 +57,16 @@ #define WIFI_ENABLE_CACHE_TX_BUFFER WIFI_ENABLE_SPIRAM #endif +#ifdef CONFIG_ESP_WIFI_ENTERPRISE_SUPPORT + #define H_WIFI_ENTERPRISE_SUPPORT 1 +#else + #define H_WIFI_ENTERPRISE_SUPPORT 0 +#endif + +#if (ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 3, 4)) || (ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 4, 3)) || (H_PRESENT_IN_ESP_IDF_5_5_0) +#define H_GOT_SET_EAP_METHODS_API 0 +#else +#define H_GOT_SET_EAP_METHODS_API 1 +#endif + #endif diff --git a/slave/sdkconfig.ci.all_features b/slave/sdkconfig.ci.all_features index 9aee346b..72f3f9f6 100644 --- a/slave/sdkconfig.ci.all_features +++ b/slave/sdkconfig.ci.all_features @@ -4,3 +4,4 @@ CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED=y CONFIG_ESP_HOSTED_HOST_POWER_SAVE_ENABLED=y CONFIG_ESP_HOSTED_CLI_ENABLED=y CONFIG_ESP_HOSTED_USE_EXAMPLE_WIFI_PRE_PROVISION_CONFIG=y +CONFIG_ESP_WIFI_ENTERPRISE_SUPPORT=n diff --git a/slave/sdkconfig.ci.wifi_enterprise b/slave/sdkconfig.ci.wifi_enterprise new file mode 100644 index 00000000..d036e06b --- /dev/null +++ b/slave/sdkconfig.ci.wifi_enterprise @@ -0,0 +1 @@ +CONFIG_ESP_WIFI_ENTERPRISE_SUPPORT=y diff --git a/slave/sdkconfig.defaults b/slave/sdkconfig.defaults index bc2062ac..91777c7c 100644 --- a/slave/sdkconfig.defaults +++ b/slave/sdkconfig.defaults @@ -10,3 +10,6 @@ CONFIG_PARTITION_TABLE_TWO_OTA=y CONFIG_FREERTOS_HZ=1000 CONFIG_ESP_WIFI_NVS_ENABLED=y CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF=y + +#Disable enterprise support by default +CONFIG_ESP_WIFI_ENTERPRISE_SUPPORT=n From 397996bf414a2e47b63f4a9c406fefe368c3a053 Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Thu, 4 Sep 2025 18:29:05 +0800 Subject: [PATCH 091/114] bugfix(bootloader_esp32): Reduce ESP32 bootloader size - reduced size of ESP32 bootloader to prevent build errors - added scheduled CI for ESP32 - extended scheduled CI to cover C2, C3 and S3 - added ESP-IDF v5.5.1 as a build target --- .gitlab/ci/merge_request_jobs.yml | 4 +- .gitlab/ci/scheduled_pipeline_jobs.yml | 82 ++++++++++++++++++++++ host/esp_hosted_host_fw_ver.h | 2 +- idf_component.yml | 2 +- slave/main/esp_hosted_coprocessor_fw_ver.h | 2 +- slave/sdkconfig.defaults.esp32 | 4 ++ 6 files changed, 91 insertions(+), 5 deletions(-) diff --git a/.gitlab/ci/merge_request_jobs.yml b/.gitlab/ci/merge_request_jobs.yml index 9009336f..dcd8e13c 100644 --- a/.gitlab/ci/merge_request_jobs.yml +++ b/.gitlab/ci/merge_request_jobs.yml @@ -13,7 +13,7 @@ build_idf_v5.5: image: espressif/idf:${IDF_VER} parallel: matrix: - - IDF_VER: ["v5.5", "release-v5.5"] + - IDF_VER: ["v5.5", "v5.5.1", "release-v5.5"] IDF_TARGET: ["esp32p4"] IDF_SLAVE_TARGET: ["esp32c6", "esp32c5"] IDF_EXAMPLE_PATH: [examples/wifi/iperf] @@ -37,7 +37,7 @@ build_coprocessor_idf_v5.5: parallel: matrix: - IDF_TARGET: ["esp32c6", "esp32c5"] - IDF_VER: ["v5.5", "release-v5.5"] + IDF_VER: ["v5.5", "v5.5.1", "release-v5.5"] SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart"] build_coprocessor_idf_master: diff --git a/.gitlab/ci/scheduled_pipeline_jobs.yml b/.gitlab/ci/scheduled_pipeline_jobs.yml index 2e9d1276..591aeee6 100644 --- a/.gitlab/ci/scheduled_pipeline_jobs.yml +++ b/.gitlab/ci/scheduled_pipeline_jobs.yml @@ -58,6 +58,8 @@ build_idf_master_scheduled: IDF_EXAMPLE_PATH: [examples/protocols/mqtt/tcp, examples/wifi/iperf] build_all_features_enabled_master_scheduled: + tags: + - scheduled_build rules: - !reference [.scheduled_pipeline_rules, rules] extends: .build_template @@ -82,6 +84,32 @@ build_coprocessor_idf_v5.3_scheduled: IDF_VER: ["v5.3.1", "v5.3.2", "v5.3.3", "release-v5.3"] SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart"] +build_coprocessor_idf_v5.3_scheduled_2: + tags: + - scheduled_build + rules: + - !reference [.scheduled_pipeline_rules, rules] + extends: .build_template_coprocessor + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_TARGET: ["esp32c2", "esp32c3", "esp32s3"] + IDF_VER: ["v5.3.1", "v5.3.2", "v5.3.3", "release-v5.3"] + SLAVE_CI_FILE: ["spi", "spi_hd", "uart"] + +build_coprocessor_idf_v5.3_scheduled_esp32: + tags: + - scheduled_build + rules: + - !reference [.scheduled_pipeline_rules, rules] + extends: .build_template_coprocessor + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_TARGET: ["esp32"] + IDF_VER: ["v5.3.1", "v5.3.2", "v5.3.3", "release-v5.3"] + SLAVE_CI_FILE: ["sdio", "spi", "uart"] + build_coprocessor_idf_v5.4_scheduled: tags: - scheduled_build @@ -95,7 +123,61 @@ build_coprocessor_idf_v5.4_scheduled: IDF_VER: ["v5.4", "v5.4.1", "v5.4.2", "release-v5.4"] SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart"] +build_coprocessor_idf_v5.4_scheduled_2: + tags: + - scheduled_build + rules: + - !reference [.scheduled_pipeline_rules, rules] + extends: .build_template_coprocessor + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_TARGET: ["esp32c2", "esp32c3", "esp32s3"] + IDF_VER: ["v5.4", "v5.4.1", "v5.4.2", "release-v5.4"] + SLAVE_CI_FILE: ["spi", "spi_hd", "uart"] + +build_coprocessor_idf_v5.4_scheduled_esp32: + tags: + - scheduled_build + rules: + - !reference [.scheduled_pipeline_rules, rules] + extends: .build_template_coprocessor + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_TARGET: ["esp32"] + IDF_VER: ["v5.4", "v5.4.1", "v5.4.2", "release-v5.4"] + SLAVE_CI_FILE: ["sdio", "spi", "uart"] + +build_coprocessor_idf_v5.5_scheduled: + tags: + - scheduled_build + rules: + - !reference [.scheduled_pipeline_rules, rules] + extends: .build_template_coprocessor + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_TARGET: ["esp32c2", "esp32c3", "esp32s3"] + IDF_VER: ["v5.5", "v5.5.1", "release-v5.5"] + SLAVE_CI_FILE: ["spi", "spi_hd", "uart"] + +build_coprocessor_idf_v5.5_scheduled_esp32: + tags: + - scheduled_build + rules: + - !reference [.scheduled_pipeline_rules, rules] + extends: .build_template_coprocessor + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_TARGET: ["esp32"] + IDF_VER: ["v5.5", "v5.5.1", "release-v5.5"] + SLAVE_CI_FILE: ["sdio", "spi", "uart"] + build_coprocessor_idf_master_all_features_enabled_scheduled: + tags: + - scheduled_build rules: - !reference [.scheduled_pipeline_rules, rules] extends: .build_template_coprocessor diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index e278ced7..753d6812 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 #define ESP_HOSTED_VERSION_MINOR_1 4 -#define ESP_HOSTED_VERSION_PATCH_1 0 +#define ESP_HOSTED_VERSION_PATCH_1 1 #endif diff --git a/idf_component.yml b/idf_component.yml index 831d37ce..aa098de0 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.4.0" +version: "2.4.1" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index c727f325..70d9e8ba 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 #define PROJECT_VERSION_MINOR_1 4 -#define PROJECT_VERSION_PATCH_1 0 +#define PROJECT_VERSION_PATCH_1 1 #endif diff --git a/slave/sdkconfig.defaults.esp32 b/slave/sdkconfig.defaults.esp32 index 39049fa7..55c0c346 100644 --- a/slave/sdkconfig.defaults.esp32 +++ b/slave/sdkconfig.defaults.esp32 @@ -36,3 +36,7 @@ CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.esp32.csv" # iram text saving CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH=y + +# OS +CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y +CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF=n From f89e00dc25ec52d0f32175fd86895dd16361418e Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Fri, 12 Sep 2025 16:40:33 +0800 Subject: [PATCH 092/114] build(lwip_split): fix ignored lwip hook header in slave example --- host/esp_hosted_host_fw_ver.h | 2 +- idf_component.yml | 2 +- slave/CMakeLists.txt | 18 +++++++++++++++--- slave/main/esp_hosted_coprocessor_fw_ver.h | 2 +- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index 753d6812..9e639bec 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 #define ESP_HOSTED_VERSION_MINOR_1 4 -#define ESP_HOSTED_VERSION_PATCH_1 1 +#define ESP_HOSTED_VERSION_PATCH_1 2 #endif diff --git a/idf_component.yml b/idf_component.yml index aa098de0..76ab6189 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.4.1" +version: "2.4.2" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/CMakeLists.txt b/slave/CMakeLists.txt index 76c70de2..9b625cb5 100644 --- a/slave/CMakeLists.txt +++ b/slave/CMakeLists.txt @@ -13,15 +13,27 @@ set(COMPONENTS esp_timer esptool_py bootloader main nvs_flash esp_rom esp_wifi p project(network_adapter) idf_build_set_property(COMPILE_OPTIONS "-fdiagnostics-color=always" APPEND) -if(EXISTS "${PROJECT_DIR}/../common/esp_hosted_lwip_src_port_hook.h") + +if(EXISTS "${PROJECT_DIR}/../common") + set(common_dir "${PROJECT_DIR}/../common") + message(STATUS "common: ${common_dir}") +elseif(EXISTS "${PROJECT_DIR}/main/common") + set(common_dir "${PROJECT_DIR}/main/common") + message(STATUS "common: ${common_dir}") +else() + message(FATAL_ERROR "Could not find 'common' directory in either '${PROJECT_DIR}/../common' or '${PROJECT_DIR}/main/common'") +endif() + + +if(EXISTS "${common_dir}/esp_hosted_lwip_src_port_hook.h") idf_component_get_property(lwip lwip COMPONENT_LIB) if(TARGET ${lwip}) # Use generator expressions to only apply to non-INTERFACE targets get_target_property(lwip_type ${lwip} TYPE) if(NOT lwip_type STREQUAL "INTERFACE_LIBRARY") message(STATUS "********** Configuring LWIP for network split mode with custom hook **********") - target_include_directories(${lwip} PRIVATE "${PROJECT_DIR}/../common") - target_compile_definitions(${lwip} PRIVATE "-DESP_IDF_LWIP_HOOK_FILENAME=\"${PROJECT_DIR}/../common/esp_hosted_lwip_src_port_hook.h\"") + target_include_directories(${lwip} PRIVATE "${common_dir}") + target_compile_definitions(${lwip} PRIVATE "-DESP_IDF_LWIP_HOOK_FILENAME=\"${common_dir}/esp_hosted_lwip_src_port_hook.h\"") endif() endif() endif() diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index 70d9e8ba..0bf80bbe 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 #define PROJECT_VERSION_MINOR_1 4 -#define PROJECT_VERSION_PATCH_1 1 +#define PROJECT_VERSION_PATCH_1 2 #endif From 1cc75eefbd9418f1987150e96f6f3b404e5c0091 Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Thu, 11 Sep 2025 11:14:18 +0800 Subject: [PATCH 093/114] bugfix(fix_ci): Fix CI - use our `.idf_build_apps.toml` to override default IDF toml - used `--enable-preview-targets` by default so `idf-build-apps` can build preview targets if required --- .gitlab/ci/merge_request_jobs.yml | 41 +++++++++++---------- .gitlab/ci/scheduled_pipeline_jobs.yml | 50 +++++++++++++++++--------- .gitlab/ci/templates.yml | 26 +++++++------- .idf_build_apps.toml | 1 + 4 files changed, 68 insertions(+), 50 deletions(-) create mode 100644 .idf_build_apps.toml diff --git a/.gitlab/ci/merge_request_jobs.yml b/.gitlab/ci/merge_request_jobs.yml index dcd8e13c..c2a2cd50 100644 --- a/.gitlab/ci/merge_request_jobs.yml +++ b/.gitlab/ci/merge_request_jobs.yml @@ -16,9 +16,12 @@ build_idf_v5.5: - IDF_VER: ["v5.5", "v5.5.1", "release-v5.5"] IDF_TARGET: ["esp32p4"] IDF_SLAVE_TARGET: ["esp32c6", "esp32c5"] - IDF_EXAMPLE_PATH: [examples/wifi/iperf] + IDF_EXAMPLE_PATH: ["examples/wifi/iperf"] -build_idf_master: +### build mqtt/tcp example mqtt/tcp sdkconfig.ci.p4_wifi +build_idf_master_mqtt_tcp: + variables: + EXAMPLE_CI_FILE: "sdkconfig.ci.p4_wifi" rules: - !reference [.default_rules, rules] extends: .build_template @@ -26,47 +29,43 @@ build_idf_master: parallel: matrix: - IDF_TARGET: ["esp32p4"] - IDF_SLAVE_TARGET: ["esp32c6", "esp32c5", "esp32c61" ] - IDF_EXAMPLE_PATH: [examples/protocols/mqtt/tcp, examples/wifi/iperf] + IDF_SLAVE_TARGET: ["esp32c6", "esp32c5", "esp32c61"] + IDF_EXAMPLE_PATH: ["examples/protocols/mqtt/tcp"] -build_coprocessor_idf_v5.5: +build_idf_master_iperf: rules: - !reference [.default_rules, rules] - extends: .build_template_coprocessor - image: espressif/idf:${IDF_VER} + extends: .build_template + image: espressif/idf:latest parallel: matrix: - - IDF_TARGET: ["esp32c6", "esp32c5"] - IDF_VER: ["v5.5", "v5.5.1", "release-v5.5"] - SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart"] + - IDF_TARGET: ["esp32p4"] + IDF_SLAVE_TARGET: ["esp32c6", "esp32c5", "esp32c61"] + IDF_EXAMPLE_PATH: ["examples/wifi/iperf"] -build_coprocessor_idf_master: +build_coprocessor_idf_v5.5: rules: - !reference [.default_rules, rules] extends: .build_template_coprocessor - image: espressif/idf:latest + image: espressif/idf:${IDF_VER} parallel: matrix: - - IDF_TARGET: ["esp32c6"] + - IDF_TARGET: ["esp32c6", "esp32c5"] + IDF_VER: ["v5.5", "v5.5.1", "release-v5.5"] SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart"] -### build target for SOCs still in preview -build_coprocessor_idf_master_preview_targets_c5: - variables: - EXTRA_BUILD_FLAGS: "--enable-preview-targets" +build_coprocessor_idf_master: rules: - !reference [.default_rules, rules] extends: .build_template_coprocessor image: espressif/idf:latest parallel: matrix: - - IDF_TARGET: ["esp32c5"] + - IDF_TARGET: ["esp32c6", "esp32c5"] SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart"] # for C61, build for sdio only for now -build_coprocessor_idf_master_preview_targets_c61: - variables: - EXTRA_BUILD_FLAGS: "--enable-preview-targets" +build_coprocessor_idf_master_c61: rules: - !reference [.default_rules, rules] extends: .build_template_coprocessor diff --git a/.gitlab/ci/scheduled_pipeline_jobs.yml b/.gitlab/ci/scheduled_pipeline_jobs.yml index 591aeee6..0dcdff7c 100644 --- a/.gitlab/ci/scheduled_pipeline_jobs.yml +++ b/.gitlab/ci/scheduled_pipeline_jobs.yml @@ -1,6 +1,8 @@ # Holds jobs that run from the scheduled pipeline -build_idf_v5.3_scheduled: +build_idf_v5.3_mqtt_tcp_scheduled: + variables: + EXAMPLE_CI_FILE: "sdkconfig.ci.p4_wifi" tags: - scheduled_build rules: @@ -12,10 +14,11 @@ build_idf_v5.3_scheduled: - IDF_VER: ["v5.3.1", "v5.3.2", "v5.3.3", "release-v5.3"] IDF_TARGET: ["esp32p4", "esp32h2"] IDF_SLAVE_TARGET: ["esp32c6"] - IDF_EXAMPLE_PATH: examples/protocols/mqtt/tcp - #IDF_EXAMPLE_PATH: [examples/wifi/iperf] + IDF_EXAMPLE_PATH: ["examples/protocols/mqtt/tcp"] -build_idf_v5.4_scheduled: +build_idf_v5.4_mqtt_tcp_scheduled: + variables: + EXAMPLE_CI_FILE: "sdkconfig.ci.p4_wifi" tags: - scheduled_build rules: @@ -27,10 +30,9 @@ build_idf_v5.4_scheduled: - IDF_VER: ["v5.4", "v5.4.1", "v5.4.2", "release-v5.4"] IDF_TARGET: ["esp32p4", "esp32h2"] IDF_SLAVE_TARGET: ["esp32c6"] - IDF_EXAMPLE_PATH: examples/protocols/mqtt/tcp - #IDF_EXAMPLE_PATH: [examples/wifi/iperf] + IDF_EXAMPLE_PATH: ["examples/protocols/mqtt/tcp"] -build_idf_v5.5_scheduled: +build_idf_v5.5_iperf_scheduled: tags: - scheduled_build rules: @@ -42,9 +44,11 @@ build_idf_v5.5_scheduled: - IDF_VER: ["v5.5", "release-v5.5"] IDF_TARGET: ["esp32p4", "esp32h2"] IDF_SLAVE_TARGET: ["esp32", "esp32c2", "esp32c3", "esp32s3" ] - IDF_EXAMPLE_PATH: [examples/wifi/iperf] + IDF_EXAMPLE_PATH: ["examples/wifi/iperf"] -build_idf_master_scheduled: +build_idf_master_mqtt_tcp_scheduled: + variables: + EXAMPLE_CI_FILE: "sdkconfig.ci.p4_wifi" tags: - scheduled_build rules: @@ -55,9 +59,24 @@ build_idf_master_scheduled: matrix: - IDF_TARGET: ["esp32p4", "esp32h2"] IDF_SLAVE_TARGET: ["esp32", "esp32c2", "esp32c3", "esp32s3" ] - IDF_EXAMPLE_PATH: [examples/protocols/mqtt/tcp, examples/wifi/iperf] + IDF_EXAMPLE_PATH: ["examples/protocols/mqtt/tcp"] -build_all_features_enabled_master_scheduled: +build_idf_master_iperf_scheduled: + tags: + - scheduled_build + rules: + - !reference [.scheduled_pipeline_rules, rules] + extends: .build_template + image: espressif/idf:latest + parallel: + matrix: + - IDF_TARGET: ["esp32p4", "esp32h2"] + IDF_SLAVE_TARGET: ["esp32", "esp32c2", "esp32c3", "esp32s3" ] + IDF_EXAMPLE_PATH: ["examples/wifi/iperf"] + +build_all_features_enabled_master_iperf_scheduled: + variables: + SDKCONFIG_CI_FILE: "sdkconfig.ci.all_features_enabled" tags: - scheduled_build rules: @@ -68,8 +87,7 @@ build_all_features_enabled_master_scheduled: matrix: - IDF_TARGET: ["esp32p4"] IDF_SLAVE_TARGET: ["esp32c6", "esp32c5"] - IDF_EXAMPLE_PATH: [examples/wifi/iperf] - SDKCONFIG_CI_FILE: "sdkconfig.ci.all_features_enabled" + IDF_EXAMPLE_PATH: ["examples/wifi/iperf"] build_coprocessor_idf_v5.3_scheduled: tags: @@ -97,7 +115,7 @@ build_coprocessor_idf_v5.3_scheduled_2: IDF_VER: ["v5.3.1", "v5.3.2", "v5.3.3", "release-v5.3"] SLAVE_CI_FILE: ["spi", "spi_hd", "uart"] -build_coprocessor_idf_v5.3_scheduled_esp32: +build_coprocessor_idf_v5.3_esp32_scheduled: tags: - scheduled_build rules: @@ -136,7 +154,7 @@ build_coprocessor_idf_v5.4_scheduled_2: IDF_VER: ["v5.4", "v5.4.1", "v5.4.2", "release-v5.4"] SLAVE_CI_FILE: ["spi", "spi_hd", "uart"] -build_coprocessor_idf_v5.4_scheduled_esp32: +build_coprocessor_idf_v5.4_esp32_scheduled: tags: - scheduled_build rules: @@ -162,7 +180,7 @@ build_coprocessor_idf_v5.5_scheduled: IDF_VER: ["v5.5", "v5.5.1", "release-v5.5"] SLAVE_CI_FILE: ["spi", "spi_hd", "uart"] -build_coprocessor_idf_v5.5_scheduled_esp32: +build_coprocessor_idf_v5.5_esp32_scheduled: tags: - scheduled_build rules: diff --git a/.gitlab/ci/templates.yml b/.gitlab/ci/templates.yml index 3ef32462..6fbeae9c 100644 --- a/.gitlab/ci/templates.yml +++ b/.gitlab/ci/templates.yml @@ -18,7 +18,6 @@ expire_in: 4 days script: - source ${IDF_PATH}/export.sh - - pip install idf-ci - pip install idf-component-manager idf-build-apps --upgrade - SDKCONFIG_PATTERN="sdkconfig.ci.${SLAVE_CI_FILE}" # Build with IDF pedantic flags and IDF build apps script @@ -26,14 +25,9 @@ - export EXTRA_CFLAGS="${PEDANTIC_FLAGS} -Wstrict-prototypes" - export EXTRA_CXXFLAGS="${PEDANTIC_FLAGS}" - cd slave - - | - if [ -z "${EXTRA_BUILD_FLAGS}" ]; then - idf-build-apps find --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} - idf-build-apps build --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} - else - idf-build-apps find "${EXTRA_BUILD_FLAGS}" --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} - idf-build-apps build "${EXTRA_BUILD_FLAGS}" --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} - fi + # use --enable-preview-targets to build for all targets + - idf-build-apps find --enable-preview-targets --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} + - idf-build-apps build --enable-preview-targets --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} .build_template: stage: build @@ -46,7 +40,6 @@ expire_in: 4 days script: - source ${IDF_PATH}/export.sh - - pip install idf-ci - pip install idf-component-manager idf-build-apps --upgrade # Need to rename the cloned "esp_hosted_mcu" directory since the injected component name is "esp_hosted" - cd .. && rm -rf esp_hosted && mv esp_hosted_mcu esp_hosted && cd esp_hosted @@ -70,23 +63,30 @@ echo "CONFIG_SLAVE_IDF_TARGET_${IDF_SLAVE_TARGET^^}=y" >> sdkconfig.defaults echo "Added slave target CONFIG_SLAVE_IDF_TARGET_${IDF_SLAVE_TARGET^^}=y to sdkconfig.defaults" fi - # Copy specific sdkconfig.ci file if SDKCONFIG_CI_FILE is specified + # HOSTED_CI_FILE: use custom sdkconfig CI file from esp_hosted directory, or + # EXAMPLE_CI_FILE: use sdkconfig CI file in example directory - | if [ ! -z "${SDKCONFIG_CI_FILE}" ]; then cp ${OVERRIDE_PATH}/${SDKCONFIG_CI_FILE} ./sdkconfig.ci.custom echo "Using custom sdkconfig: ${SDKCONFIG_CI_FILE}" SDKCONFIG_PATTERN="sdkconfig.ci.custom" + elif [ ! -z "${EXAMPLE_CI_FILE}" ]; then + echo "Using CI sdkconfig file in example: ${EXAMPLE_CI_FILE}" + SDKCONFIG_PATTERN="./${EXAMPLE_CI_FILE}" else SDKCONFIG_PATTERN="sdkconfig.ci*" fi + - echo "SDKCONFIG_PATTERN is ${SDKCONFIG_PATTERN}" # Build with IDF pedantic flags and IDF build apps script - export PEDANTIC_FLAGS="-DIDF_CI_BUILD -Werror -Werror=deprecated-declarations -Werror=unused-variable -Werror=unused-but-set-variable -Werror=unused-function" - export EXTRA_CFLAGS="${PEDANTIC_FLAGS} -Wstrict-prototypes" - export EXTRA_CXXFLAGS="${PEDANTIC_FLAGS}" # Remove the conflicting extconn config that disables hosted - rm -f sdkconfig.ci.*extconn* - - idf-build-apps find --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} - - idf-build-apps build --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} + # use --config-file to override default IDF config file + # use --enable-preview-targets to build for all targets + - idf-build-apps find --enable-preview-targets --config-file "${OVERRIDE_PATH}/.idf_build_apps.toml" --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} + - idf-build-apps build --enable-preview-targets --config-file "${OVERRIDE_PATH}/.idf_build_apps.toml" --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} # - echo "----------- last sdkconfig.defaults,ci* used (${IDF_TARGET}-${IDF_SLAVE_TARGET}) --------------" # - cat sdkconfig.defaults # - cat sdkconfig.ci* diff --git a/.idf_build_apps.toml b/.idf_build_apps.toml new file mode 100644 index 00000000..e761d02b --- /dev/null +++ b/.idf_build_apps.toml @@ -0,0 +1 @@ +build_log_filename = "" From 40fc1a96808006d3392f24bb50608421649ef2a9 Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Wed, 10 Sep 2025 14:34:55 +0800 Subject: [PATCH 094/114] feature(wifi_dpp): Added Wi-Fi Easy Connect (DPP) - added code to handle DPP events with provided supplicant callback on host and co-processor - added `host_wifi_easy_connect_dpp_enrollee` to examples - added `rpc_utils.c` to hold common routines - copy incoming wifi station config from RPC to structure - used by both RPC response and DPP incoming config event - added support for Supplicant DPP events - starts/stops a supplicant thread to trigger the user provided callback - added support for WiFi DPP events - on co-processor, moved code to copy sta config to common funtion - used by both get_wifi_config and DPP get config events - added Features documentation - added CHANGELOG --- CHANGELOG.md | 17 + CMakeLists.txt | 1 + Kconfig | 14 + README.md | 4 + common/proto/esp_hosted_rpc.pb-c.c | 12015 +++++++++------- common/proto/esp_hosted_rpc.pb-c.h | 1624 ++- common/proto/esp_hosted_rpc.proto | 655 +- docs/features.md | 29 + .../CMakeLists.txt | 6 + .../README.md | 72 + .../main/CMakeLists.txt | 2 + .../main/Kconfig.projbuild | 17 + .../main/dpp_enrollee_main.c | 268 + .../main/idf_component.yml | 10 + .../sdkconfig.defaults | 7 + .../sdkconfig.defaults.esp32p4 | 6 + host/api/priv/esp_hosted_api_priv.h | 23 +- host/api/src/esp_hosted_api.c | 38 + host/api/src/esp_wifi_weak.c | 36 + host/drivers/rpc/core/rpc_evt.c | 69 + host/drivers/rpc/core/rpc_req.c | 38 +- host/drivers/rpc/core/rpc_rsp.c | 91 +- host/drivers/rpc/core/rpc_utils.c | 97 + host/drivers/rpc/core/rpc_utils.h | 19 + host/drivers/rpc/slaveif/rpc_slave_if.c | 31 + host/drivers/rpc/slaveif/rpc_slave_if.h | 54 +- host/drivers/rpc/wrap/rpc_wrap.c | 316 +- host/drivers/rpc/wrap/rpc_wrap.h | 12 + host/esp_hosted.h | 1 - host/esp_hosted_host_fw_ver.h | 2 +- .../port_esp_hosted_host_wifi_config.h | 31 + idf_component.yml | 2 +- slave/CMakeLists.txt | 3 +- slave/main/Kconfig.projbuild | 6 + slave/main/esp_hosted_coprocessor_fw_ver.h | 2 +- slave/main/slave_control.c | 536 +- slave/main/slave_control.h | 95 +- slave/main/slave_wifi_config.h | 26 + 38 files changed, 9898 insertions(+), 6377 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 docs/features.md create mode 100644 examples/host_wifi_easy_connect_dpp_enrollee/CMakeLists.txt create mode 100644 examples/host_wifi_easy_connect_dpp_enrollee/README.md create mode 100644 examples/host_wifi_easy_connect_dpp_enrollee/main/CMakeLists.txt create mode 100644 examples/host_wifi_easy_connect_dpp_enrollee/main/Kconfig.projbuild create mode 100644 examples/host_wifi_easy_connect_dpp_enrollee/main/dpp_enrollee_main.c create mode 100644 examples/host_wifi_easy_connect_dpp_enrollee/main/idf_component.yml create mode 100644 examples/host_wifi_easy_connect_dpp_enrollee/sdkconfig.defaults create mode 100644 examples/host_wifi_easy_connect_dpp_enrollee/sdkconfig.defaults.esp32p4 create mode 100644 host/drivers/rpc/core/rpc_utils.c create mode 100644 host/drivers/rpc/core/rpc_utils.h diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..34d7066d --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,17 @@ +# Changelog + +## 2.4.2 + +### Features + +- Add support for Wi-Fi Easy Connect (DPP) + - [Espressif documentation](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/network/esp_dpp.html) on Wi-Fi Easy Connect (DPP) + - [ESP-Hosted Enrollee Example](https://github.com/espressif/esp-hosted-mcu/tree/main/examples/host_wifi_easy_connect_dpp_enrollee) using DPP to securely onboard a ESP32P4 with C6 board to a network with the help of a QR code and an Android 10+ device + +### APIs added + +- `esp_supp_dpp_init` +- `esp_supp_dpp_deinit` +- `esp_supp_dpp_bootstrap_gen` +- `esp_supp_dpp_start_listen` +- `esp_supp_dpp_stop_listen` diff --git a/CMakeLists.txt b/CMakeLists.txt index 0ba89f2e..c63d1a78 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,6 +36,7 @@ if(CONFIG_ESP_HOSTED_ENABLED) "${rpc_core_dir}/rpc_req.c" "${rpc_core_dir}/rpc_rsp.c" "${rpc_core_dir}/rpc_evt.c" + "${rpc_core_dir}/rpc_utils.c" "${rpc_slaveif_dir}/rpc_slave_if.c" "${rpc_wrap_dir}/rpc_wrap.c") diff --git a/Kconfig b/Kconfig index b987b3de..0187ea51 100644 --- a/Kconfig +++ b/Kconfig @@ -1506,6 +1506,20 @@ ESP32XX_SPI_HD_CLK_FREQ_RANGE_MAX := 40 can instruct the co-processor to negotiate specific wake and sleep schedules with the access point (AP) for lower power consumption. + config ESP_HOSTED_ENABLE_DPP + bool "Enable Wi-Fi Easy Connect (DPP)" + default n + help + Enable Wi-Fi Easy Connect (DPP) support + + config ESP_HOSTED_DPP_URI_LEN_MAX + int "Maximum length of URI used to generate QR code in Wi-Fi Easy Connect" + depends on ESP_HOSTED_ENABLE_DPP + default 255 + help + URIs used to generate the QR code should be less than this length. + Increase this value if the received URI can be larger + config ESP_HOSTED_USE_MEMPOOL bool "Cache allocated memory like mempool - helps to reduce malloc calls" default y diff --git a/README.md b/README.md index 72695cdc..25d9177e 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,10 @@ This can be any generic microcontroller (MCU). We demonstrate any ESP as host. U - **Extensible RPC library** - The Remote Procedure Call (RPC) used by ESP-Hosted can be extended to provide any function required by the Host, as long as the co-processor can support it. Currently, the essential [ESP-IDF](https://github.com/espressif/esp-idf) Wi-Fi functions have been implemented. +## 3.1 Features Supported by ESP-Hosted + +See the [Features](https://github.com/espressif/esp-hosted-mcu/blob/main/docs/features.md) document for features currently supported by ESP-Hosted. + ## 4 Quick Demo with ESP32-P4-Function-EV-Board Impatient to test? We've got you covered! diff --git a/common/proto/esp_hosted_rpc.pb-c.c b/common/proto/esp_hosted_rpc.pb-c.c index 74c478db..ef91986f 100644 --- a/common/proto/esp_hosted_rpc.pb-c.c +++ b/common/proto/esp_hosted_rpc.pb-c.c @@ -8107,2933 +8107,3653 @@ void rpc__resp__get_dhcp_dns_status__free_unpacked assert(message->base.descriptor == &rpc__resp__get_dhcp_dns_status__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__event__wifi_event_no_args__init - (RpcEventWifiEventNoArgs *message) +void rpc__req__supp_dpp_init__init + (RpcReqSuppDppInit *message) { - static const RpcEventWifiEventNoArgs init_value = RPC__EVENT__WIFI_EVENT_NO_ARGS__INIT; + static const RpcReqSuppDppInit init_value = RPC__REQ__SUPP_DPP_INIT__INIT; *message = init_value; } -size_t rpc__event__wifi_event_no_args__get_packed_size - (const RpcEventWifiEventNoArgs *message) +size_t rpc__req__supp_dpp_init__get_packed_size + (const RpcReqSuppDppInit *message) { - assert(message->base.descriptor == &rpc__event__wifi_event_no_args__descriptor); + assert(message->base.descriptor == &rpc__req__supp_dpp_init__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__event__wifi_event_no_args__pack - (const RpcEventWifiEventNoArgs *message, +size_t rpc__req__supp_dpp_init__pack + (const RpcReqSuppDppInit *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__event__wifi_event_no_args__descriptor); + assert(message->base.descriptor == &rpc__req__supp_dpp_init__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__event__wifi_event_no_args__pack_to_buffer - (const RpcEventWifiEventNoArgs *message, +size_t rpc__req__supp_dpp_init__pack_to_buffer + (const RpcReqSuppDppInit *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__event__wifi_event_no_args__descriptor); + assert(message->base.descriptor == &rpc__req__supp_dpp_init__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcEventWifiEventNoArgs * - rpc__event__wifi_event_no_args__unpack +RpcReqSuppDppInit * + rpc__req__supp_dpp_init__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcEventWifiEventNoArgs *) - protobuf_c_message_unpack (&rpc__event__wifi_event_no_args__descriptor, + return (RpcReqSuppDppInit *) + protobuf_c_message_unpack (&rpc__req__supp_dpp_init__descriptor, allocator, len, data); } -void rpc__event__wifi_event_no_args__free_unpacked - (RpcEventWifiEventNoArgs *message, +void rpc__req__supp_dpp_init__free_unpacked + (RpcReqSuppDppInit *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__event__wifi_event_no_args__descriptor); + assert(message->base.descriptor == &rpc__req__supp_dpp_init__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__event__espinit__init - (RpcEventESPInit *message) +void rpc__resp__supp_dpp_init__init + (RpcRespSuppDppInit *message) { - static const RpcEventESPInit init_value = RPC__EVENT__ESPINIT__INIT; + static const RpcRespSuppDppInit init_value = RPC__RESP__SUPP_DPP_INIT__INIT; *message = init_value; } -size_t rpc__event__espinit__get_packed_size - (const RpcEventESPInit *message) +size_t rpc__resp__supp_dpp_init__get_packed_size + (const RpcRespSuppDppInit *message) { - assert(message->base.descriptor == &rpc__event__espinit__descriptor); + assert(message->base.descriptor == &rpc__resp__supp_dpp_init__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__event__espinit__pack - (const RpcEventESPInit *message, +size_t rpc__resp__supp_dpp_init__pack + (const RpcRespSuppDppInit *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__event__espinit__descriptor); + assert(message->base.descriptor == &rpc__resp__supp_dpp_init__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__event__espinit__pack_to_buffer - (const RpcEventESPInit *message, +size_t rpc__resp__supp_dpp_init__pack_to_buffer + (const RpcRespSuppDppInit *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__event__espinit__descriptor); + assert(message->base.descriptor == &rpc__resp__supp_dpp_init__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcEventESPInit * - rpc__event__espinit__unpack +RpcRespSuppDppInit * + rpc__resp__supp_dpp_init__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcEventESPInit *) - protobuf_c_message_unpack (&rpc__event__espinit__descriptor, + return (RpcRespSuppDppInit *) + protobuf_c_message_unpack (&rpc__resp__supp_dpp_init__descriptor, allocator, len, data); } -void rpc__event__espinit__free_unpacked - (RpcEventESPInit *message, +void rpc__resp__supp_dpp_init__free_unpacked + (RpcRespSuppDppInit *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__event__espinit__descriptor); + assert(message->base.descriptor == &rpc__resp__supp_dpp_init__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__event__heartbeat__init - (RpcEventHeartbeat *message) +void rpc__req__supp_dpp_deinit__init + (RpcReqSuppDppDeinit *message) { - static const RpcEventHeartbeat init_value = RPC__EVENT__HEARTBEAT__INIT; + static const RpcReqSuppDppDeinit init_value = RPC__REQ__SUPP_DPP_DEINIT__INIT; *message = init_value; } -size_t rpc__event__heartbeat__get_packed_size - (const RpcEventHeartbeat *message) +size_t rpc__req__supp_dpp_deinit__get_packed_size + (const RpcReqSuppDppDeinit *message) { - assert(message->base.descriptor == &rpc__event__heartbeat__descriptor); + assert(message->base.descriptor == &rpc__req__supp_dpp_deinit__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__event__heartbeat__pack - (const RpcEventHeartbeat *message, +size_t rpc__req__supp_dpp_deinit__pack + (const RpcReqSuppDppDeinit *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__event__heartbeat__descriptor); + assert(message->base.descriptor == &rpc__req__supp_dpp_deinit__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__event__heartbeat__pack_to_buffer - (const RpcEventHeartbeat *message, +size_t rpc__req__supp_dpp_deinit__pack_to_buffer + (const RpcReqSuppDppDeinit *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__event__heartbeat__descriptor); + assert(message->base.descriptor == &rpc__req__supp_dpp_deinit__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcEventHeartbeat * - rpc__event__heartbeat__unpack +RpcReqSuppDppDeinit * + rpc__req__supp_dpp_deinit__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcEventHeartbeat *) - protobuf_c_message_unpack (&rpc__event__heartbeat__descriptor, + return (RpcReqSuppDppDeinit *) + protobuf_c_message_unpack (&rpc__req__supp_dpp_deinit__descriptor, allocator, len, data); } -void rpc__event__heartbeat__free_unpacked - (RpcEventHeartbeat *message, +void rpc__req__supp_dpp_deinit__free_unpacked + (RpcReqSuppDppDeinit *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__event__heartbeat__descriptor); + assert(message->base.descriptor == &rpc__req__supp_dpp_deinit__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__event__ap__sta_disconnected__init - (RpcEventAPStaDisconnected *message) +void rpc__resp__supp_dpp_deinit__init + (RpcRespSuppDppDeinit *message) { - static const RpcEventAPStaDisconnected init_value = RPC__EVENT__AP__STA_DISCONNECTED__INIT; + static const RpcRespSuppDppDeinit init_value = RPC__RESP__SUPP_DPP_DEINIT__INIT; *message = init_value; } -size_t rpc__event__ap__sta_disconnected__get_packed_size - (const RpcEventAPStaDisconnected *message) +size_t rpc__resp__supp_dpp_deinit__get_packed_size + (const RpcRespSuppDppDeinit *message) { - assert(message->base.descriptor == &rpc__event__ap__sta_disconnected__descriptor); + assert(message->base.descriptor == &rpc__resp__supp_dpp_deinit__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__event__ap__sta_disconnected__pack - (const RpcEventAPStaDisconnected *message, +size_t rpc__resp__supp_dpp_deinit__pack + (const RpcRespSuppDppDeinit *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__event__ap__sta_disconnected__descriptor); + assert(message->base.descriptor == &rpc__resp__supp_dpp_deinit__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__event__ap__sta_disconnected__pack_to_buffer - (const RpcEventAPStaDisconnected *message, +size_t rpc__resp__supp_dpp_deinit__pack_to_buffer + (const RpcRespSuppDppDeinit *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__event__ap__sta_disconnected__descriptor); + assert(message->base.descriptor == &rpc__resp__supp_dpp_deinit__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcEventAPStaDisconnected * - rpc__event__ap__sta_disconnected__unpack +RpcRespSuppDppDeinit * + rpc__resp__supp_dpp_deinit__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcEventAPStaDisconnected *) - protobuf_c_message_unpack (&rpc__event__ap__sta_disconnected__descriptor, + return (RpcRespSuppDppDeinit *) + protobuf_c_message_unpack (&rpc__resp__supp_dpp_deinit__descriptor, allocator, len, data); } -void rpc__event__ap__sta_disconnected__free_unpacked - (RpcEventAPStaDisconnected *message, +void rpc__resp__supp_dpp_deinit__free_unpacked + (RpcRespSuppDppDeinit *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__event__ap__sta_disconnected__descriptor); + assert(message->base.descriptor == &rpc__resp__supp_dpp_deinit__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__event__ap__sta_connected__init - (RpcEventAPStaConnected *message) +void rpc__req__supp_dpp_bootstrap_gen__init + (RpcReqSuppDppBootstrapGen *message) { - static const RpcEventAPStaConnected init_value = RPC__EVENT__AP__STA_CONNECTED__INIT; + static const RpcReqSuppDppBootstrapGen init_value = RPC__REQ__SUPP_DPP_BOOTSTRAP_GEN__INIT; *message = init_value; } -size_t rpc__event__ap__sta_connected__get_packed_size - (const RpcEventAPStaConnected *message) +size_t rpc__req__supp_dpp_bootstrap_gen__get_packed_size + (const RpcReqSuppDppBootstrapGen *message) { - assert(message->base.descriptor == &rpc__event__ap__sta_connected__descriptor); + assert(message->base.descriptor == &rpc__req__supp_dpp_bootstrap_gen__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__event__ap__sta_connected__pack - (const RpcEventAPStaConnected *message, +size_t rpc__req__supp_dpp_bootstrap_gen__pack + (const RpcReqSuppDppBootstrapGen *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__event__ap__sta_connected__descriptor); + assert(message->base.descriptor == &rpc__req__supp_dpp_bootstrap_gen__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__event__ap__sta_connected__pack_to_buffer - (const RpcEventAPStaConnected *message, +size_t rpc__req__supp_dpp_bootstrap_gen__pack_to_buffer + (const RpcReqSuppDppBootstrapGen *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__event__ap__sta_connected__descriptor); + assert(message->base.descriptor == &rpc__req__supp_dpp_bootstrap_gen__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcEventAPStaConnected * - rpc__event__ap__sta_connected__unpack +RpcReqSuppDppBootstrapGen * + rpc__req__supp_dpp_bootstrap_gen__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcEventAPStaConnected *) - protobuf_c_message_unpack (&rpc__event__ap__sta_connected__descriptor, + return (RpcReqSuppDppBootstrapGen *) + protobuf_c_message_unpack (&rpc__req__supp_dpp_bootstrap_gen__descriptor, allocator, len, data); } -void rpc__event__ap__sta_connected__free_unpacked - (RpcEventAPStaConnected *message, +void rpc__req__supp_dpp_bootstrap_gen__free_unpacked + (RpcReqSuppDppBootstrapGen *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__event__ap__sta_connected__descriptor); + assert(message->base.descriptor == &rpc__req__supp_dpp_bootstrap_gen__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__event__sta_scan_done__init - (RpcEventStaScanDone *message) +void rpc__resp__supp_dpp_bootstrap_gen__init + (RpcRespSuppDppBootstrapGen *message) { - static const RpcEventStaScanDone init_value = RPC__EVENT__STA_SCAN_DONE__INIT; + static const RpcRespSuppDppBootstrapGen init_value = RPC__RESP__SUPP_DPP_BOOTSTRAP_GEN__INIT; *message = init_value; } -size_t rpc__event__sta_scan_done__get_packed_size - (const RpcEventStaScanDone *message) +size_t rpc__resp__supp_dpp_bootstrap_gen__get_packed_size + (const RpcRespSuppDppBootstrapGen *message) { - assert(message->base.descriptor == &rpc__event__sta_scan_done__descriptor); + assert(message->base.descriptor == &rpc__resp__supp_dpp_bootstrap_gen__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__event__sta_scan_done__pack - (const RpcEventStaScanDone *message, +size_t rpc__resp__supp_dpp_bootstrap_gen__pack + (const RpcRespSuppDppBootstrapGen *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__event__sta_scan_done__descriptor); + assert(message->base.descriptor == &rpc__resp__supp_dpp_bootstrap_gen__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__event__sta_scan_done__pack_to_buffer - (const RpcEventStaScanDone *message, +size_t rpc__resp__supp_dpp_bootstrap_gen__pack_to_buffer + (const RpcRespSuppDppBootstrapGen *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__event__sta_scan_done__descriptor); + assert(message->base.descriptor == &rpc__resp__supp_dpp_bootstrap_gen__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcEventStaScanDone * - rpc__event__sta_scan_done__unpack +RpcRespSuppDppBootstrapGen * + rpc__resp__supp_dpp_bootstrap_gen__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcEventStaScanDone *) - protobuf_c_message_unpack (&rpc__event__sta_scan_done__descriptor, + return (RpcRespSuppDppBootstrapGen *) + protobuf_c_message_unpack (&rpc__resp__supp_dpp_bootstrap_gen__descriptor, allocator, len, data); } -void rpc__event__sta_scan_done__free_unpacked - (RpcEventStaScanDone *message, +void rpc__resp__supp_dpp_bootstrap_gen__free_unpacked + (RpcRespSuppDppBootstrapGen *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__event__sta_scan_done__descriptor); + assert(message->base.descriptor == &rpc__resp__supp_dpp_bootstrap_gen__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__event__sta_connected__init - (RpcEventStaConnected *message) +void rpc__req__supp_dpp_start_listen__init + (RpcReqSuppDppStartListen *message) { - static const RpcEventStaConnected init_value = RPC__EVENT__STA_CONNECTED__INIT; + static const RpcReqSuppDppStartListen init_value = RPC__REQ__SUPP_DPP_START_LISTEN__INIT; *message = init_value; } -size_t rpc__event__sta_connected__get_packed_size - (const RpcEventStaConnected *message) +size_t rpc__req__supp_dpp_start_listen__get_packed_size + (const RpcReqSuppDppStartListen *message) { - assert(message->base.descriptor == &rpc__event__sta_connected__descriptor); + assert(message->base.descriptor == &rpc__req__supp_dpp_start_listen__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__event__sta_connected__pack - (const RpcEventStaConnected *message, +size_t rpc__req__supp_dpp_start_listen__pack + (const RpcReqSuppDppStartListen *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__event__sta_connected__descriptor); + assert(message->base.descriptor == &rpc__req__supp_dpp_start_listen__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__event__sta_connected__pack_to_buffer - (const RpcEventStaConnected *message, +size_t rpc__req__supp_dpp_start_listen__pack_to_buffer + (const RpcReqSuppDppStartListen *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__event__sta_connected__descriptor); + assert(message->base.descriptor == &rpc__req__supp_dpp_start_listen__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcEventStaConnected * - rpc__event__sta_connected__unpack +RpcReqSuppDppStartListen * + rpc__req__supp_dpp_start_listen__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcEventStaConnected *) - protobuf_c_message_unpack (&rpc__event__sta_connected__descriptor, + return (RpcReqSuppDppStartListen *) + protobuf_c_message_unpack (&rpc__req__supp_dpp_start_listen__descriptor, allocator, len, data); } -void rpc__event__sta_connected__free_unpacked - (RpcEventStaConnected *message, +void rpc__req__supp_dpp_start_listen__free_unpacked + (RpcReqSuppDppStartListen *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__event__sta_connected__descriptor); + assert(message->base.descriptor == &rpc__req__supp_dpp_start_listen__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__event__sta_disconnected__init - (RpcEventStaDisconnected *message) +void rpc__resp__supp_dpp_start_listen__init + (RpcRespSuppDppStartListen *message) { - static const RpcEventStaDisconnected init_value = RPC__EVENT__STA_DISCONNECTED__INIT; + static const RpcRespSuppDppStartListen init_value = RPC__RESP__SUPP_DPP_START_LISTEN__INIT; *message = init_value; } -size_t rpc__event__sta_disconnected__get_packed_size - (const RpcEventStaDisconnected *message) +size_t rpc__resp__supp_dpp_start_listen__get_packed_size + (const RpcRespSuppDppStartListen *message) { - assert(message->base.descriptor == &rpc__event__sta_disconnected__descriptor); + assert(message->base.descriptor == &rpc__resp__supp_dpp_start_listen__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__event__sta_disconnected__pack - (const RpcEventStaDisconnected *message, +size_t rpc__resp__supp_dpp_start_listen__pack + (const RpcRespSuppDppStartListen *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__event__sta_disconnected__descriptor); + assert(message->base.descriptor == &rpc__resp__supp_dpp_start_listen__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__event__sta_disconnected__pack_to_buffer - (const RpcEventStaDisconnected *message, +size_t rpc__resp__supp_dpp_start_listen__pack_to_buffer + (const RpcRespSuppDppStartListen *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__event__sta_disconnected__descriptor); + assert(message->base.descriptor == &rpc__resp__supp_dpp_start_listen__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcEventStaDisconnected * - rpc__event__sta_disconnected__unpack +RpcRespSuppDppStartListen * + rpc__resp__supp_dpp_start_listen__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcEventStaDisconnected *) - protobuf_c_message_unpack (&rpc__event__sta_disconnected__descriptor, + return (RpcRespSuppDppStartListen *) + protobuf_c_message_unpack (&rpc__resp__supp_dpp_start_listen__descriptor, allocator, len, data); } -void rpc__event__sta_disconnected__free_unpacked - (RpcEventStaDisconnected *message, +void rpc__resp__supp_dpp_start_listen__free_unpacked + (RpcRespSuppDppStartListen *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__event__sta_disconnected__descriptor); + assert(message->base.descriptor == &rpc__resp__supp_dpp_start_listen__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__event__dhcp_dns_status__init - (RpcEventDhcpDnsStatus *message) +void rpc__req__supp_dpp_stop_listen__init + (RpcReqSuppDppStopListen *message) { - static const RpcEventDhcpDnsStatus init_value = RPC__EVENT__DHCP_DNS_STATUS__INIT; + static const RpcReqSuppDppStopListen init_value = RPC__REQ__SUPP_DPP_STOP_LISTEN__INIT; *message = init_value; } -size_t rpc__event__dhcp_dns_status__get_packed_size - (const RpcEventDhcpDnsStatus *message) +size_t rpc__req__supp_dpp_stop_listen__get_packed_size + (const RpcReqSuppDppStopListen *message) { - assert(message->base.descriptor == &rpc__event__dhcp_dns_status__descriptor); + assert(message->base.descriptor == &rpc__req__supp_dpp_stop_listen__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__event__dhcp_dns_status__pack - (const RpcEventDhcpDnsStatus *message, +size_t rpc__req__supp_dpp_stop_listen__pack + (const RpcReqSuppDppStopListen *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__event__dhcp_dns_status__descriptor); + assert(message->base.descriptor == &rpc__req__supp_dpp_stop_listen__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__event__dhcp_dns_status__pack_to_buffer - (const RpcEventDhcpDnsStatus *message, +size_t rpc__req__supp_dpp_stop_listen__pack_to_buffer + (const RpcReqSuppDppStopListen *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__event__dhcp_dns_status__descriptor); + assert(message->base.descriptor == &rpc__req__supp_dpp_stop_listen__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcEventDhcpDnsStatus * - rpc__event__dhcp_dns_status__unpack +RpcReqSuppDppStopListen * + rpc__req__supp_dpp_stop_listen__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcEventDhcpDnsStatus *) - protobuf_c_message_unpack (&rpc__event__dhcp_dns_status__descriptor, + return (RpcReqSuppDppStopListen *) + protobuf_c_message_unpack (&rpc__req__supp_dpp_stop_listen__descriptor, allocator, len, data); } -void rpc__event__dhcp_dns_status__free_unpacked - (RpcEventDhcpDnsStatus *message, +void rpc__req__supp_dpp_stop_listen__free_unpacked + (RpcReqSuppDppStopListen *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__event__dhcp_dns_status__descriptor); + assert(message->base.descriptor == &rpc__req__supp_dpp_stop_listen__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__event__sta_itwt_setup__init - (RpcEventStaItwtSetup *message) +void rpc__resp__supp_dpp_stop_listen__init + (RpcRespSuppDppStopListen *message) { - static const RpcEventStaItwtSetup init_value = RPC__EVENT__STA_ITWT_SETUP__INIT; + static const RpcRespSuppDppStopListen init_value = RPC__RESP__SUPP_DPP_STOP_LISTEN__INIT; *message = init_value; } -size_t rpc__event__sta_itwt_setup__get_packed_size - (const RpcEventStaItwtSetup *message) +size_t rpc__resp__supp_dpp_stop_listen__get_packed_size + (const RpcRespSuppDppStopListen *message) { - assert(message->base.descriptor == &rpc__event__sta_itwt_setup__descriptor); + assert(message->base.descriptor == &rpc__resp__supp_dpp_stop_listen__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__event__sta_itwt_setup__pack - (const RpcEventStaItwtSetup *message, +size_t rpc__resp__supp_dpp_stop_listen__pack + (const RpcRespSuppDppStopListen *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__event__sta_itwt_setup__descriptor); + assert(message->base.descriptor == &rpc__resp__supp_dpp_stop_listen__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__event__sta_itwt_setup__pack_to_buffer - (const RpcEventStaItwtSetup *message, +size_t rpc__resp__supp_dpp_stop_listen__pack_to_buffer + (const RpcRespSuppDppStopListen *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__event__sta_itwt_setup__descriptor); + assert(message->base.descriptor == &rpc__resp__supp_dpp_stop_listen__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcEventStaItwtSetup * - rpc__event__sta_itwt_setup__unpack +RpcRespSuppDppStopListen * + rpc__resp__supp_dpp_stop_listen__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcEventStaItwtSetup *) - protobuf_c_message_unpack (&rpc__event__sta_itwt_setup__descriptor, + return (RpcRespSuppDppStopListen *) + protobuf_c_message_unpack (&rpc__resp__supp_dpp_stop_listen__descriptor, allocator, len, data); } -void rpc__event__sta_itwt_setup__free_unpacked - (RpcEventStaItwtSetup *message, +void rpc__resp__supp_dpp_stop_listen__free_unpacked + (RpcRespSuppDppStopListen *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__event__sta_itwt_setup__descriptor); + assert(message->base.descriptor == &rpc__resp__supp_dpp_stop_listen__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__event__sta_itwt_teardown__init - (RpcEventStaItwtTeardown *message) +void rpc__event__wifi_event_no_args__init + (RpcEventWifiEventNoArgs *message) { - static const RpcEventStaItwtTeardown init_value = RPC__EVENT__STA_ITWT_TEARDOWN__INIT; + static const RpcEventWifiEventNoArgs init_value = RPC__EVENT__WIFI_EVENT_NO_ARGS__INIT; *message = init_value; } -size_t rpc__event__sta_itwt_teardown__get_packed_size - (const RpcEventStaItwtTeardown *message) +size_t rpc__event__wifi_event_no_args__get_packed_size + (const RpcEventWifiEventNoArgs *message) { - assert(message->base.descriptor == &rpc__event__sta_itwt_teardown__descriptor); + assert(message->base.descriptor == &rpc__event__wifi_event_no_args__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__event__sta_itwt_teardown__pack - (const RpcEventStaItwtTeardown *message, +size_t rpc__event__wifi_event_no_args__pack + (const RpcEventWifiEventNoArgs *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__event__sta_itwt_teardown__descriptor); + assert(message->base.descriptor == &rpc__event__wifi_event_no_args__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__event__sta_itwt_teardown__pack_to_buffer - (const RpcEventStaItwtTeardown *message, +size_t rpc__event__wifi_event_no_args__pack_to_buffer + (const RpcEventWifiEventNoArgs *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__event__sta_itwt_teardown__descriptor); + assert(message->base.descriptor == &rpc__event__wifi_event_no_args__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcEventStaItwtTeardown * - rpc__event__sta_itwt_teardown__unpack +RpcEventWifiEventNoArgs * + rpc__event__wifi_event_no_args__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcEventStaItwtTeardown *) - protobuf_c_message_unpack (&rpc__event__sta_itwt_teardown__descriptor, + return (RpcEventWifiEventNoArgs *) + protobuf_c_message_unpack (&rpc__event__wifi_event_no_args__descriptor, allocator, len, data); } -void rpc__event__sta_itwt_teardown__free_unpacked - (RpcEventStaItwtTeardown *message, +void rpc__event__wifi_event_no_args__free_unpacked + (RpcEventWifiEventNoArgs *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__event__sta_itwt_teardown__descriptor); + assert(message->base.descriptor == &rpc__event__wifi_event_no_args__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__event__sta_itwt_suspend__init - (RpcEventStaItwtSuspend *message) +void rpc__event__espinit__init + (RpcEventESPInit *message) { - static const RpcEventStaItwtSuspend init_value = RPC__EVENT__STA_ITWT_SUSPEND__INIT; + static const RpcEventESPInit init_value = RPC__EVENT__ESPINIT__INIT; *message = init_value; } -size_t rpc__event__sta_itwt_suspend__get_packed_size - (const RpcEventStaItwtSuspend *message) +size_t rpc__event__espinit__get_packed_size + (const RpcEventESPInit *message) { - assert(message->base.descriptor == &rpc__event__sta_itwt_suspend__descriptor); + assert(message->base.descriptor == &rpc__event__espinit__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__event__sta_itwt_suspend__pack - (const RpcEventStaItwtSuspend *message, +size_t rpc__event__espinit__pack + (const RpcEventESPInit *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__event__sta_itwt_suspend__descriptor); + assert(message->base.descriptor == &rpc__event__espinit__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__event__sta_itwt_suspend__pack_to_buffer - (const RpcEventStaItwtSuspend *message, +size_t rpc__event__espinit__pack_to_buffer + (const RpcEventESPInit *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__event__sta_itwt_suspend__descriptor); + assert(message->base.descriptor == &rpc__event__espinit__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcEventStaItwtSuspend * - rpc__event__sta_itwt_suspend__unpack +RpcEventESPInit * + rpc__event__espinit__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcEventStaItwtSuspend *) - protobuf_c_message_unpack (&rpc__event__sta_itwt_suspend__descriptor, + return (RpcEventESPInit *) + protobuf_c_message_unpack (&rpc__event__espinit__descriptor, allocator, len, data); } -void rpc__event__sta_itwt_suspend__free_unpacked - (RpcEventStaItwtSuspend *message, +void rpc__event__espinit__free_unpacked + (RpcEventESPInit *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__event__sta_itwt_suspend__descriptor); + assert(message->base.descriptor == &rpc__event__espinit__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__event__sta_itwt_probe__init - (RpcEventStaItwtProbe *message) +void rpc__event__heartbeat__init + (RpcEventHeartbeat *message) { - static const RpcEventStaItwtProbe init_value = RPC__EVENT__STA_ITWT_PROBE__INIT; + static const RpcEventHeartbeat init_value = RPC__EVENT__HEARTBEAT__INIT; *message = init_value; } -size_t rpc__event__sta_itwt_probe__get_packed_size - (const RpcEventStaItwtProbe *message) +size_t rpc__event__heartbeat__get_packed_size + (const RpcEventHeartbeat *message) { - assert(message->base.descriptor == &rpc__event__sta_itwt_probe__descriptor); + assert(message->base.descriptor == &rpc__event__heartbeat__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__event__sta_itwt_probe__pack - (const RpcEventStaItwtProbe *message, +size_t rpc__event__heartbeat__pack + (const RpcEventHeartbeat *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__event__sta_itwt_probe__descriptor); + assert(message->base.descriptor == &rpc__event__heartbeat__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__event__sta_itwt_probe__pack_to_buffer - (const RpcEventStaItwtProbe *message, +size_t rpc__event__heartbeat__pack_to_buffer + (const RpcEventHeartbeat *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__event__sta_itwt_probe__descriptor); + assert(message->base.descriptor == &rpc__event__heartbeat__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcEventStaItwtProbe * - rpc__event__sta_itwt_probe__unpack +RpcEventHeartbeat * + rpc__event__heartbeat__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcEventStaItwtProbe *) - protobuf_c_message_unpack (&rpc__event__sta_itwt_probe__descriptor, + return (RpcEventHeartbeat *) + protobuf_c_message_unpack (&rpc__event__heartbeat__descriptor, allocator, len, data); } -void rpc__event__sta_itwt_probe__free_unpacked - (RpcEventStaItwtProbe *message, +void rpc__event__heartbeat__free_unpacked + (RpcEventHeartbeat *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__event__sta_itwt_probe__descriptor); + assert(message->base.descriptor == &rpc__event__heartbeat__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__req__wifi_sta_enterprise_enable__init - (RpcReqWifiStaEnterpriseEnable *message) +void rpc__event__ap__sta_disconnected__init + (RpcEventAPStaDisconnected *message) { - static const RpcReqWifiStaEnterpriseEnable init_value = RPC__REQ__WIFI_STA_ENTERPRISE_ENABLE__INIT; + static const RpcEventAPStaDisconnected init_value = RPC__EVENT__AP__STA_DISCONNECTED__INIT; *message = init_value; } -size_t rpc__req__wifi_sta_enterprise_enable__get_packed_size - (const RpcReqWifiStaEnterpriseEnable *message) +size_t rpc__event__ap__sta_disconnected__get_packed_size + (const RpcEventAPStaDisconnected *message) { - assert(message->base.descriptor == &rpc__req__wifi_sta_enterprise_enable__descriptor); + assert(message->base.descriptor == &rpc__event__ap__sta_disconnected__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__req__wifi_sta_enterprise_enable__pack - (const RpcReqWifiStaEnterpriseEnable *message, +size_t rpc__event__ap__sta_disconnected__pack + (const RpcEventAPStaDisconnected *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__req__wifi_sta_enterprise_enable__descriptor); + assert(message->base.descriptor == &rpc__event__ap__sta_disconnected__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__req__wifi_sta_enterprise_enable__pack_to_buffer - (const RpcReqWifiStaEnterpriseEnable *message, +size_t rpc__event__ap__sta_disconnected__pack_to_buffer + (const RpcEventAPStaDisconnected *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__req__wifi_sta_enterprise_enable__descriptor); + assert(message->base.descriptor == &rpc__event__ap__sta_disconnected__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcReqWifiStaEnterpriseEnable * - rpc__req__wifi_sta_enterprise_enable__unpack +RpcEventAPStaDisconnected * + rpc__event__ap__sta_disconnected__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcReqWifiStaEnterpriseEnable *) - protobuf_c_message_unpack (&rpc__req__wifi_sta_enterprise_enable__descriptor, + return (RpcEventAPStaDisconnected *) + protobuf_c_message_unpack (&rpc__event__ap__sta_disconnected__descriptor, allocator, len, data); } -void rpc__req__wifi_sta_enterprise_enable__free_unpacked - (RpcReqWifiStaEnterpriseEnable *message, +void rpc__event__ap__sta_disconnected__free_unpacked + (RpcEventAPStaDisconnected *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__req__wifi_sta_enterprise_enable__descriptor); + assert(message->base.descriptor == &rpc__event__ap__sta_disconnected__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__resp__wifi_sta_enterprise_enable__init - (RpcRespWifiStaEnterpriseEnable *message) +void rpc__event__ap__sta_connected__init + (RpcEventAPStaConnected *message) { - static const RpcRespWifiStaEnterpriseEnable init_value = RPC__RESP__WIFI_STA_ENTERPRISE_ENABLE__INIT; + static const RpcEventAPStaConnected init_value = RPC__EVENT__AP__STA_CONNECTED__INIT; *message = init_value; } -size_t rpc__resp__wifi_sta_enterprise_enable__get_packed_size - (const RpcRespWifiStaEnterpriseEnable *message) +size_t rpc__event__ap__sta_connected__get_packed_size + (const RpcEventAPStaConnected *message) { - assert(message->base.descriptor == &rpc__resp__wifi_sta_enterprise_enable__descriptor); + assert(message->base.descriptor == &rpc__event__ap__sta_connected__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__resp__wifi_sta_enterprise_enable__pack - (const RpcRespWifiStaEnterpriseEnable *message, +size_t rpc__event__ap__sta_connected__pack + (const RpcEventAPStaConnected *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__resp__wifi_sta_enterprise_enable__descriptor); + assert(message->base.descriptor == &rpc__event__ap__sta_connected__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__resp__wifi_sta_enterprise_enable__pack_to_buffer - (const RpcRespWifiStaEnterpriseEnable *message, +size_t rpc__event__ap__sta_connected__pack_to_buffer + (const RpcEventAPStaConnected *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__resp__wifi_sta_enterprise_enable__descriptor); + assert(message->base.descriptor == &rpc__event__ap__sta_connected__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcRespWifiStaEnterpriseEnable * - rpc__resp__wifi_sta_enterprise_enable__unpack +RpcEventAPStaConnected * + rpc__event__ap__sta_connected__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcRespWifiStaEnterpriseEnable *) - protobuf_c_message_unpack (&rpc__resp__wifi_sta_enterprise_enable__descriptor, + return (RpcEventAPStaConnected *) + protobuf_c_message_unpack (&rpc__event__ap__sta_connected__descriptor, allocator, len, data); } -void rpc__resp__wifi_sta_enterprise_enable__free_unpacked - (RpcRespWifiStaEnterpriseEnable *message, +void rpc__event__ap__sta_connected__free_unpacked + (RpcEventAPStaConnected *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__resp__wifi_sta_enterprise_enable__descriptor); + assert(message->base.descriptor == &rpc__event__ap__sta_connected__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__req__wifi_sta_enterprise_disable__init - (RpcReqWifiStaEnterpriseDisable *message) +void rpc__event__sta_scan_done__init + (RpcEventStaScanDone *message) { - static const RpcReqWifiStaEnterpriseDisable init_value = RPC__REQ__WIFI_STA_ENTERPRISE_DISABLE__INIT; + static const RpcEventStaScanDone init_value = RPC__EVENT__STA_SCAN_DONE__INIT; *message = init_value; } -size_t rpc__req__wifi_sta_enterprise_disable__get_packed_size - (const RpcReqWifiStaEnterpriseDisable *message) +size_t rpc__event__sta_scan_done__get_packed_size + (const RpcEventStaScanDone *message) { - assert(message->base.descriptor == &rpc__req__wifi_sta_enterprise_disable__descriptor); + assert(message->base.descriptor == &rpc__event__sta_scan_done__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__req__wifi_sta_enterprise_disable__pack - (const RpcReqWifiStaEnterpriseDisable *message, +size_t rpc__event__sta_scan_done__pack + (const RpcEventStaScanDone *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__req__wifi_sta_enterprise_disable__descriptor); + assert(message->base.descriptor == &rpc__event__sta_scan_done__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__req__wifi_sta_enterprise_disable__pack_to_buffer - (const RpcReqWifiStaEnterpriseDisable *message, +size_t rpc__event__sta_scan_done__pack_to_buffer + (const RpcEventStaScanDone *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__req__wifi_sta_enterprise_disable__descriptor); + assert(message->base.descriptor == &rpc__event__sta_scan_done__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcReqWifiStaEnterpriseDisable * - rpc__req__wifi_sta_enterprise_disable__unpack +RpcEventStaScanDone * + rpc__event__sta_scan_done__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcReqWifiStaEnterpriseDisable *) - protobuf_c_message_unpack (&rpc__req__wifi_sta_enterprise_disable__descriptor, + return (RpcEventStaScanDone *) + protobuf_c_message_unpack (&rpc__event__sta_scan_done__descriptor, allocator, len, data); } -void rpc__req__wifi_sta_enterprise_disable__free_unpacked - (RpcReqWifiStaEnterpriseDisable *message, +void rpc__event__sta_scan_done__free_unpacked + (RpcEventStaScanDone *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__req__wifi_sta_enterprise_disable__descriptor); + assert(message->base.descriptor == &rpc__event__sta_scan_done__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__resp__wifi_sta_enterprise_disable__init - (RpcRespWifiStaEnterpriseDisable *message) +void rpc__event__sta_connected__init + (RpcEventStaConnected *message) { - static const RpcRespWifiStaEnterpriseDisable init_value = RPC__RESP__WIFI_STA_ENTERPRISE_DISABLE__INIT; + static const RpcEventStaConnected init_value = RPC__EVENT__STA_CONNECTED__INIT; *message = init_value; } -size_t rpc__resp__wifi_sta_enterprise_disable__get_packed_size - (const RpcRespWifiStaEnterpriseDisable *message) +size_t rpc__event__sta_connected__get_packed_size + (const RpcEventStaConnected *message) { - assert(message->base.descriptor == &rpc__resp__wifi_sta_enterprise_disable__descriptor); + assert(message->base.descriptor == &rpc__event__sta_connected__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__resp__wifi_sta_enterprise_disable__pack - (const RpcRespWifiStaEnterpriseDisable *message, +size_t rpc__event__sta_connected__pack + (const RpcEventStaConnected *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__resp__wifi_sta_enterprise_disable__descriptor); + assert(message->base.descriptor == &rpc__event__sta_connected__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__resp__wifi_sta_enterprise_disable__pack_to_buffer - (const RpcRespWifiStaEnterpriseDisable *message, +size_t rpc__event__sta_connected__pack_to_buffer + (const RpcEventStaConnected *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__resp__wifi_sta_enterprise_disable__descriptor); + assert(message->base.descriptor == &rpc__event__sta_connected__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcRespWifiStaEnterpriseDisable * - rpc__resp__wifi_sta_enterprise_disable__unpack +RpcEventStaConnected * + rpc__event__sta_connected__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcRespWifiStaEnterpriseDisable *) - protobuf_c_message_unpack (&rpc__resp__wifi_sta_enterprise_disable__descriptor, + return (RpcEventStaConnected *) + protobuf_c_message_unpack (&rpc__event__sta_connected__descriptor, allocator, len, data); } -void rpc__resp__wifi_sta_enterprise_disable__free_unpacked - (RpcRespWifiStaEnterpriseDisable *message, +void rpc__event__sta_connected__free_unpacked + (RpcEventStaConnected *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__resp__wifi_sta_enterprise_disable__descriptor); + assert(message->base.descriptor == &rpc__event__sta_connected__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__req__eap_set_identity__init - (RpcReqEapSetIdentity *message) +void rpc__event__sta_disconnected__init + (RpcEventStaDisconnected *message) { - static const RpcReqEapSetIdentity init_value = RPC__REQ__EAP_SET_IDENTITY__INIT; + static const RpcEventStaDisconnected init_value = RPC__EVENT__STA_DISCONNECTED__INIT; *message = init_value; } -size_t rpc__req__eap_set_identity__get_packed_size - (const RpcReqEapSetIdentity *message) +size_t rpc__event__sta_disconnected__get_packed_size + (const RpcEventStaDisconnected *message) { - assert(message->base.descriptor == &rpc__req__eap_set_identity__descriptor); + assert(message->base.descriptor == &rpc__event__sta_disconnected__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__req__eap_set_identity__pack - (const RpcReqEapSetIdentity *message, +size_t rpc__event__sta_disconnected__pack + (const RpcEventStaDisconnected *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__req__eap_set_identity__descriptor); + assert(message->base.descriptor == &rpc__event__sta_disconnected__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__req__eap_set_identity__pack_to_buffer - (const RpcReqEapSetIdentity *message, +size_t rpc__event__sta_disconnected__pack_to_buffer + (const RpcEventStaDisconnected *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__req__eap_set_identity__descriptor); + assert(message->base.descriptor == &rpc__event__sta_disconnected__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcReqEapSetIdentity * - rpc__req__eap_set_identity__unpack +RpcEventStaDisconnected * + rpc__event__sta_disconnected__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcReqEapSetIdentity *) - protobuf_c_message_unpack (&rpc__req__eap_set_identity__descriptor, + return (RpcEventStaDisconnected *) + protobuf_c_message_unpack (&rpc__event__sta_disconnected__descriptor, allocator, len, data); } -void rpc__req__eap_set_identity__free_unpacked - (RpcReqEapSetIdentity *message, +void rpc__event__sta_disconnected__free_unpacked + (RpcEventStaDisconnected *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__req__eap_set_identity__descriptor); + assert(message->base.descriptor == &rpc__event__sta_disconnected__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__resp__eap_set_identity__init - (RpcRespEapSetIdentity *message) +void rpc__event__dhcp_dns_status__init + (RpcEventDhcpDnsStatus *message) { - static const RpcRespEapSetIdentity init_value = RPC__RESP__EAP_SET_IDENTITY__INIT; + static const RpcEventDhcpDnsStatus init_value = RPC__EVENT__DHCP_DNS_STATUS__INIT; *message = init_value; } -size_t rpc__resp__eap_set_identity__get_packed_size - (const RpcRespEapSetIdentity *message) +size_t rpc__event__dhcp_dns_status__get_packed_size + (const RpcEventDhcpDnsStatus *message) { - assert(message->base.descriptor == &rpc__resp__eap_set_identity__descriptor); + assert(message->base.descriptor == &rpc__event__dhcp_dns_status__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__resp__eap_set_identity__pack - (const RpcRespEapSetIdentity *message, +size_t rpc__event__dhcp_dns_status__pack + (const RpcEventDhcpDnsStatus *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__resp__eap_set_identity__descriptor); + assert(message->base.descriptor == &rpc__event__dhcp_dns_status__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__resp__eap_set_identity__pack_to_buffer - (const RpcRespEapSetIdentity *message, +size_t rpc__event__dhcp_dns_status__pack_to_buffer + (const RpcEventDhcpDnsStatus *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__resp__eap_set_identity__descriptor); + assert(message->base.descriptor == &rpc__event__dhcp_dns_status__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcRespEapSetIdentity * - rpc__resp__eap_set_identity__unpack +RpcEventDhcpDnsStatus * + rpc__event__dhcp_dns_status__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcRespEapSetIdentity *) - protobuf_c_message_unpack (&rpc__resp__eap_set_identity__descriptor, + return (RpcEventDhcpDnsStatus *) + protobuf_c_message_unpack (&rpc__event__dhcp_dns_status__descriptor, allocator, len, data); } -void rpc__resp__eap_set_identity__free_unpacked - (RpcRespEapSetIdentity *message, +void rpc__event__dhcp_dns_status__free_unpacked + (RpcEventDhcpDnsStatus *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__resp__eap_set_identity__descriptor); + assert(message->base.descriptor == &rpc__event__dhcp_dns_status__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__req__eap_clear_identity__init - (RpcReqEapClearIdentity *message) +void rpc__event__sta_itwt_setup__init + (RpcEventStaItwtSetup *message) { - static const RpcReqEapClearIdentity init_value = RPC__REQ__EAP_CLEAR_IDENTITY__INIT; + static const RpcEventStaItwtSetup init_value = RPC__EVENT__STA_ITWT_SETUP__INIT; *message = init_value; } -size_t rpc__req__eap_clear_identity__get_packed_size - (const RpcReqEapClearIdentity *message) +size_t rpc__event__sta_itwt_setup__get_packed_size + (const RpcEventStaItwtSetup *message) { - assert(message->base.descriptor == &rpc__req__eap_clear_identity__descriptor); + assert(message->base.descriptor == &rpc__event__sta_itwt_setup__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__req__eap_clear_identity__pack - (const RpcReqEapClearIdentity *message, +size_t rpc__event__sta_itwt_setup__pack + (const RpcEventStaItwtSetup *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__req__eap_clear_identity__descriptor); + assert(message->base.descriptor == &rpc__event__sta_itwt_setup__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__req__eap_clear_identity__pack_to_buffer - (const RpcReqEapClearIdentity *message, +size_t rpc__event__sta_itwt_setup__pack_to_buffer + (const RpcEventStaItwtSetup *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__req__eap_clear_identity__descriptor); + assert(message->base.descriptor == &rpc__event__sta_itwt_setup__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcReqEapClearIdentity * - rpc__req__eap_clear_identity__unpack +RpcEventStaItwtSetup * + rpc__event__sta_itwt_setup__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcReqEapClearIdentity *) - protobuf_c_message_unpack (&rpc__req__eap_clear_identity__descriptor, + return (RpcEventStaItwtSetup *) + protobuf_c_message_unpack (&rpc__event__sta_itwt_setup__descriptor, allocator, len, data); } -void rpc__req__eap_clear_identity__free_unpacked - (RpcReqEapClearIdentity *message, +void rpc__event__sta_itwt_setup__free_unpacked + (RpcEventStaItwtSetup *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__req__eap_clear_identity__descriptor); + assert(message->base.descriptor == &rpc__event__sta_itwt_setup__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__resp__eap_clear_identity__init - (RpcRespEapClearIdentity *message) +void rpc__event__sta_itwt_teardown__init + (RpcEventStaItwtTeardown *message) { - static const RpcRespEapClearIdentity init_value = RPC__RESP__EAP_CLEAR_IDENTITY__INIT; + static const RpcEventStaItwtTeardown init_value = RPC__EVENT__STA_ITWT_TEARDOWN__INIT; *message = init_value; } -size_t rpc__resp__eap_clear_identity__get_packed_size - (const RpcRespEapClearIdentity *message) +size_t rpc__event__sta_itwt_teardown__get_packed_size + (const RpcEventStaItwtTeardown *message) { - assert(message->base.descriptor == &rpc__resp__eap_clear_identity__descriptor); + assert(message->base.descriptor == &rpc__event__sta_itwt_teardown__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__resp__eap_clear_identity__pack - (const RpcRespEapClearIdentity *message, +size_t rpc__event__sta_itwt_teardown__pack + (const RpcEventStaItwtTeardown *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__resp__eap_clear_identity__descriptor); + assert(message->base.descriptor == &rpc__event__sta_itwt_teardown__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__resp__eap_clear_identity__pack_to_buffer - (const RpcRespEapClearIdentity *message, +size_t rpc__event__sta_itwt_teardown__pack_to_buffer + (const RpcEventStaItwtTeardown *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__resp__eap_clear_identity__descriptor); + assert(message->base.descriptor == &rpc__event__sta_itwt_teardown__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcRespEapClearIdentity * - rpc__resp__eap_clear_identity__unpack +RpcEventStaItwtTeardown * + rpc__event__sta_itwt_teardown__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcRespEapClearIdentity *) - protobuf_c_message_unpack (&rpc__resp__eap_clear_identity__descriptor, + return (RpcEventStaItwtTeardown *) + protobuf_c_message_unpack (&rpc__event__sta_itwt_teardown__descriptor, allocator, len, data); } -void rpc__resp__eap_clear_identity__free_unpacked - (RpcRespEapClearIdentity *message, +void rpc__event__sta_itwt_teardown__free_unpacked + (RpcEventStaItwtTeardown *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__resp__eap_clear_identity__descriptor); + assert(message->base.descriptor == &rpc__event__sta_itwt_teardown__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__req__eap_set_username__init - (RpcReqEapSetUsername *message) +void rpc__event__sta_itwt_suspend__init + (RpcEventStaItwtSuspend *message) { - static const RpcReqEapSetUsername init_value = RPC__REQ__EAP_SET_USERNAME__INIT; + static const RpcEventStaItwtSuspend init_value = RPC__EVENT__STA_ITWT_SUSPEND__INIT; *message = init_value; } -size_t rpc__req__eap_set_username__get_packed_size - (const RpcReqEapSetUsername *message) +size_t rpc__event__sta_itwt_suspend__get_packed_size + (const RpcEventStaItwtSuspend *message) { - assert(message->base.descriptor == &rpc__req__eap_set_username__descriptor); + assert(message->base.descriptor == &rpc__event__sta_itwt_suspend__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__req__eap_set_username__pack - (const RpcReqEapSetUsername *message, +size_t rpc__event__sta_itwt_suspend__pack + (const RpcEventStaItwtSuspend *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__req__eap_set_username__descriptor); + assert(message->base.descriptor == &rpc__event__sta_itwt_suspend__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__req__eap_set_username__pack_to_buffer - (const RpcReqEapSetUsername *message, +size_t rpc__event__sta_itwt_suspend__pack_to_buffer + (const RpcEventStaItwtSuspend *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__req__eap_set_username__descriptor); + assert(message->base.descriptor == &rpc__event__sta_itwt_suspend__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcReqEapSetUsername * - rpc__req__eap_set_username__unpack +RpcEventStaItwtSuspend * + rpc__event__sta_itwt_suspend__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcReqEapSetUsername *) - protobuf_c_message_unpack (&rpc__req__eap_set_username__descriptor, + return (RpcEventStaItwtSuspend *) + protobuf_c_message_unpack (&rpc__event__sta_itwt_suspend__descriptor, allocator, len, data); } -void rpc__req__eap_set_username__free_unpacked - (RpcReqEapSetUsername *message, +void rpc__event__sta_itwt_suspend__free_unpacked + (RpcEventStaItwtSuspend *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__req__eap_set_username__descriptor); + assert(message->base.descriptor == &rpc__event__sta_itwt_suspend__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__resp__eap_set_username__init - (RpcRespEapSetUsername *message) +void rpc__event__sta_itwt_probe__init + (RpcEventStaItwtProbe *message) { - static const RpcRespEapSetUsername init_value = RPC__RESP__EAP_SET_USERNAME__INIT; + static const RpcEventStaItwtProbe init_value = RPC__EVENT__STA_ITWT_PROBE__INIT; *message = init_value; } -size_t rpc__resp__eap_set_username__get_packed_size - (const RpcRespEapSetUsername *message) +size_t rpc__event__sta_itwt_probe__get_packed_size + (const RpcEventStaItwtProbe *message) { - assert(message->base.descriptor == &rpc__resp__eap_set_username__descriptor); + assert(message->base.descriptor == &rpc__event__sta_itwt_probe__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__resp__eap_set_username__pack - (const RpcRespEapSetUsername *message, +size_t rpc__event__sta_itwt_probe__pack + (const RpcEventStaItwtProbe *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__resp__eap_set_username__descriptor); + assert(message->base.descriptor == &rpc__event__sta_itwt_probe__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__resp__eap_set_username__pack_to_buffer - (const RpcRespEapSetUsername *message, +size_t rpc__event__sta_itwt_probe__pack_to_buffer + (const RpcEventStaItwtProbe *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__resp__eap_set_username__descriptor); + assert(message->base.descriptor == &rpc__event__sta_itwt_probe__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcRespEapSetUsername * - rpc__resp__eap_set_username__unpack +RpcEventStaItwtProbe * + rpc__event__sta_itwt_probe__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcRespEapSetUsername *) - protobuf_c_message_unpack (&rpc__resp__eap_set_username__descriptor, + return (RpcEventStaItwtProbe *) + protobuf_c_message_unpack (&rpc__event__sta_itwt_probe__descriptor, allocator, len, data); } -void rpc__resp__eap_set_username__free_unpacked - (RpcRespEapSetUsername *message, +void rpc__event__sta_itwt_probe__free_unpacked + (RpcEventStaItwtProbe *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__resp__eap_set_username__descriptor); + assert(message->base.descriptor == &rpc__event__sta_itwt_probe__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__req__eap_clear_username__init - (RpcReqEapClearUsername *message) +void rpc__req__wifi_sta_enterprise_enable__init + (RpcReqWifiStaEnterpriseEnable *message) { - static const RpcReqEapClearUsername init_value = RPC__REQ__EAP_CLEAR_USERNAME__INIT; + static const RpcReqWifiStaEnterpriseEnable init_value = RPC__REQ__WIFI_STA_ENTERPRISE_ENABLE__INIT; *message = init_value; } -size_t rpc__req__eap_clear_username__get_packed_size - (const RpcReqEapClearUsername *message) +size_t rpc__req__wifi_sta_enterprise_enable__get_packed_size + (const RpcReqWifiStaEnterpriseEnable *message) { - assert(message->base.descriptor == &rpc__req__eap_clear_username__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_enterprise_enable__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__req__eap_clear_username__pack - (const RpcReqEapClearUsername *message, +size_t rpc__req__wifi_sta_enterprise_enable__pack + (const RpcReqWifiStaEnterpriseEnable *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__req__eap_clear_username__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_enterprise_enable__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__req__eap_clear_username__pack_to_buffer - (const RpcReqEapClearUsername *message, +size_t rpc__req__wifi_sta_enterprise_enable__pack_to_buffer + (const RpcReqWifiStaEnterpriseEnable *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__req__eap_clear_username__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_enterprise_enable__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcReqEapClearUsername * - rpc__req__eap_clear_username__unpack +RpcReqWifiStaEnterpriseEnable * + rpc__req__wifi_sta_enterprise_enable__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcReqEapClearUsername *) - protobuf_c_message_unpack (&rpc__req__eap_clear_username__descriptor, + return (RpcReqWifiStaEnterpriseEnable *) + protobuf_c_message_unpack (&rpc__req__wifi_sta_enterprise_enable__descriptor, allocator, len, data); } -void rpc__req__eap_clear_username__free_unpacked - (RpcReqEapClearUsername *message, +void rpc__req__wifi_sta_enterprise_enable__free_unpacked + (RpcReqWifiStaEnterpriseEnable *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__req__eap_clear_username__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_enterprise_enable__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__resp__eap_clear_username__init - (RpcRespEapClearUsername *message) +void rpc__resp__wifi_sta_enterprise_enable__init + (RpcRespWifiStaEnterpriseEnable *message) { - static const RpcRespEapClearUsername init_value = RPC__RESP__EAP_CLEAR_USERNAME__INIT; + static const RpcRespWifiStaEnterpriseEnable init_value = RPC__RESP__WIFI_STA_ENTERPRISE_ENABLE__INIT; *message = init_value; } -size_t rpc__resp__eap_clear_username__get_packed_size - (const RpcRespEapClearUsername *message) +size_t rpc__resp__wifi_sta_enterprise_enable__get_packed_size + (const RpcRespWifiStaEnterpriseEnable *message) { - assert(message->base.descriptor == &rpc__resp__eap_clear_username__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_enterprise_enable__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__resp__eap_clear_username__pack - (const RpcRespEapClearUsername *message, +size_t rpc__resp__wifi_sta_enterprise_enable__pack + (const RpcRespWifiStaEnterpriseEnable *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__resp__eap_clear_username__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_enterprise_enable__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__resp__eap_clear_username__pack_to_buffer - (const RpcRespEapClearUsername *message, +size_t rpc__resp__wifi_sta_enterprise_enable__pack_to_buffer + (const RpcRespWifiStaEnterpriseEnable *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__resp__eap_clear_username__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_enterprise_enable__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcRespEapClearUsername * - rpc__resp__eap_clear_username__unpack +RpcRespWifiStaEnterpriseEnable * + rpc__resp__wifi_sta_enterprise_enable__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcRespEapClearUsername *) - protobuf_c_message_unpack (&rpc__resp__eap_clear_username__descriptor, + return (RpcRespWifiStaEnterpriseEnable *) + protobuf_c_message_unpack (&rpc__resp__wifi_sta_enterprise_enable__descriptor, allocator, len, data); } -void rpc__resp__eap_clear_username__free_unpacked - (RpcRespEapClearUsername *message, +void rpc__resp__wifi_sta_enterprise_enable__free_unpacked + (RpcRespWifiStaEnterpriseEnable *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__resp__eap_clear_username__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_enterprise_enable__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__req__eap_set_password__init - (RpcReqEapSetPassword *message) +void rpc__req__wifi_sta_enterprise_disable__init + (RpcReqWifiStaEnterpriseDisable *message) { - static const RpcReqEapSetPassword init_value = RPC__REQ__EAP_SET_PASSWORD__INIT; + static const RpcReqWifiStaEnterpriseDisable init_value = RPC__REQ__WIFI_STA_ENTERPRISE_DISABLE__INIT; *message = init_value; } -size_t rpc__req__eap_set_password__get_packed_size - (const RpcReqEapSetPassword *message) +size_t rpc__req__wifi_sta_enterprise_disable__get_packed_size + (const RpcReqWifiStaEnterpriseDisable *message) { - assert(message->base.descriptor == &rpc__req__eap_set_password__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_enterprise_disable__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__req__eap_set_password__pack - (const RpcReqEapSetPassword *message, +size_t rpc__req__wifi_sta_enterprise_disable__pack + (const RpcReqWifiStaEnterpriseDisable *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__req__eap_set_password__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_enterprise_disable__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__req__eap_set_password__pack_to_buffer - (const RpcReqEapSetPassword *message, +size_t rpc__req__wifi_sta_enterprise_disable__pack_to_buffer + (const RpcReqWifiStaEnterpriseDisable *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__req__eap_set_password__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_enterprise_disable__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcReqEapSetPassword * - rpc__req__eap_set_password__unpack +RpcReqWifiStaEnterpriseDisable * + rpc__req__wifi_sta_enterprise_disable__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcReqEapSetPassword *) - protobuf_c_message_unpack (&rpc__req__eap_set_password__descriptor, + return (RpcReqWifiStaEnterpriseDisable *) + protobuf_c_message_unpack (&rpc__req__wifi_sta_enterprise_disable__descriptor, allocator, len, data); } -void rpc__req__eap_set_password__free_unpacked - (RpcReqEapSetPassword *message, +void rpc__req__wifi_sta_enterprise_disable__free_unpacked + (RpcReqWifiStaEnterpriseDisable *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__req__eap_set_password__descriptor); + assert(message->base.descriptor == &rpc__req__wifi_sta_enterprise_disable__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__resp__eap_set_password__init - (RpcRespEapSetPassword *message) +void rpc__resp__wifi_sta_enterprise_disable__init + (RpcRespWifiStaEnterpriseDisable *message) { - static const RpcRespEapSetPassword init_value = RPC__RESP__EAP_SET_PASSWORD__INIT; + static const RpcRespWifiStaEnterpriseDisable init_value = RPC__RESP__WIFI_STA_ENTERPRISE_DISABLE__INIT; *message = init_value; } -size_t rpc__resp__eap_set_password__get_packed_size - (const RpcRespEapSetPassword *message) +size_t rpc__resp__wifi_sta_enterprise_disable__get_packed_size + (const RpcRespWifiStaEnterpriseDisable *message) { - assert(message->base.descriptor == &rpc__resp__eap_set_password__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_enterprise_disable__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__resp__eap_set_password__pack - (const RpcRespEapSetPassword *message, +size_t rpc__resp__wifi_sta_enterprise_disable__pack + (const RpcRespWifiStaEnterpriseDisable *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__resp__eap_set_password__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_enterprise_disable__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__resp__eap_set_password__pack_to_buffer - (const RpcRespEapSetPassword *message, +size_t rpc__resp__wifi_sta_enterprise_disable__pack_to_buffer + (const RpcRespWifiStaEnterpriseDisable *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__resp__eap_set_password__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_enterprise_disable__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcRespEapSetPassword * - rpc__resp__eap_set_password__unpack +RpcRespWifiStaEnterpriseDisable * + rpc__resp__wifi_sta_enterprise_disable__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcRespEapSetPassword *) - protobuf_c_message_unpack (&rpc__resp__eap_set_password__descriptor, + return (RpcRespWifiStaEnterpriseDisable *) + protobuf_c_message_unpack (&rpc__resp__wifi_sta_enterprise_disable__descriptor, allocator, len, data); } -void rpc__resp__eap_set_password__free_unpacked - (RpcRespEapSetPassword *message, +void rpc__resp__wifi_sta_enterprise_disable__free_unpacked + (RpcRespWifiStaEnterpriseDisable *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__resp__eap_set_password__descriptor); + assert(message->base.descriptor == &rpc__resp__wifi_sta_enterprise_disable__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__req__eap_clear_password__init - (RpcReqEapClearPassword *message) +void rpc__req__eap_set_identity__init + (RpcReqEapSetIdentity *message) { - static const RpcReqEapClearPassword init_value = RPC__REQ__EAP_CLEAR_PASSWORD__INIT; + static const RpcReqEapSetIdentity init_value = RPC__REQ__EAP_SET_IDENTITY__INIT; *message = init_value; } -size_t rpc__req__eap_clear_password__get_packed_size - (const RpcReqEapClearPassword *message) +size_t rpc__req__eap_set_identity__get_packed_size + (const RpcReqEapSetIdentity *message) { - assert(message->base.descriptor == &rpc__req__eap_clear_password__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_identity__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__req__eap_clear_password__pack - (const RpcReqEapClearPassword *message, +size_t rpc__req__eap_set_identity__pack + (const RpcReqEapSetIdentity *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__req__eap_clear_password__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_identity__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__req__eap_clear_password__pack_to_buffer - (const RpcReqEapClearPassword *message, +size_t rpc__req__eap_set_identity__pack_to_buffer + (const RpcReqEapSetIdentity *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__req__eap_clear_password__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_identity__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcReqEapClearPassword * - rpc__req__eap_clear_password__unpack +RpcReqEapSetIdentity * + rpc__req__eap_set_identity__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcReqEapClearPassword *) - protobuf_c_message_unpack (&rpc__req__eap_clear_password__descriptor, + return (RpcReqEapSetIdentity *) + protobuf_c_message_unpack (&rpc__req__eap_set_identity__descriptor, allocator, len, data); } -void rpc__req__eap_clear_password__free_unpacked - (RpcReqEapClearPassword *message, +void rpc__req__eap_set_identity__free_unpacked + (RpcReqEapSetIdentity *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__req__eap_clear_password__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_identity__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__resp__eap_clear_password__init - (RpcRespEapClearPassword *message) +void rpc__resp__eap_set_identity__init + (RpcRespEapSetIdentity *message) { - static const RpcRespEapClearPassword init_value = RPC__RESP__EAP_CLEAR_PASSWORD__INIT; + static const RpcRespEapSetIdentity init_value = RPC__RESP__EAP_SET_IDENTITY__INIT; *message = init_value; } -size_t rpc__resp__eap_clear_password__get_packed_size - (const RpcRespEapClearPassword *message) +size_t rpc__resp__eap_set_identity__get_packed_size + (const RpcRespEapSetIdentity *message) { - assert(message->base.descriptor == &rpc__resp__eap_clear_password__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_identity__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__resp__eap_clear_password__pack - (const RpcRespEapClearPassword *message, +size_t rpc__resp__eap_set_identity__pack + (const RpcRespEapSetIdentity *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__resp__eap_clear_password__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_identity__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__resp__eap_clear_password__pack_to_buffer - (const RpcRespEapClearPassword *message, +size_t rpc__resp__eap_set_identity__pack_to_buffer + (const RpcRespEapSetIdentity *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__resp__eap_clear_password__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_identity__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcRespEapClearPassword * - rpc__resp__eap_clear_password__unpack +RpcRespEapSetIdentity * + rpc__resp__eap_set_identity__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcRespEapClearPassword *) - protobuf_c_message_unpack (&rpc__resp__eap_clear_password__descriptor, + return (RpcRespEapSetIdentity *) + protobuf_c_message_unpack (&rpc__resp__eap_set_identity__descriptor, allocator, len, data); } -void rpc__resp__eap_clear_password__free_unpacked - (RpcRespEapClearPassword *message, +void rpc__resp__eap_set_identity__free_unpacked + (RpcRespEapSetIdentity *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__resp__eap_clear_password__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_identity__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__req__eap_set_new_password__init - (RpcReqEapSetNewPassword *message) +void rpc__req__eap_clear_identity__init + (RpcReqEapClearIdentity *message) { - static const RpcReqEapSetNewPassword init_value = RPC__REQ__EAP_SET_NEW_PASSWORD__INIT; + static const RpcReqEapClearIdentity init_value = RPC__REQ__EAP_CLEAR_IDENTITY__INIT; *message = init_value; } -size_t rpc__req__eap_set_new_password__get_packed_size - (const RpcReqEapSetNewPassword *message) +size_t rpc__req__eap_clear_identity__get_packed_size + (const RpcReqEapClearIdentity *message) { - assert(message->base.descriptor == &rpc__req__eap_set_new_password__descriptor); + assert(message->base.descriptor == &rpc__req__eap_clear_identity__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__req__eap_set_new_password__pack - (const RpcReqEapSetNewPassword *message, +size_t rpc__req__eap_clear_identity__pack + (const RpcReqEapClearIdentity *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__req__eap_set_new_password__descriptor); + assert(message->base.descriptor == &rpc__req__eap_clear_identity__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__req__eap_set_new_password__pack_to_buffer - (const RpcReqEapSetNewPassword *message, +size_t rpc__req__eap_clear_identity__pack_to_buffer + (const RpcReqEapClearIdentity *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__req__eap_set_new_password__descriptor); + assert(message->base.descriptor == &rpc__req__eap_clear_identity__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcReqEapSetNewPassword * - rpc__req__eap_set_new_password__unpack +RpcReqEapClearIdentity * + rpc__req__eap_clear_identity__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcReqEapSetNewPassword *) - protobuf_c_message_unpack (&rpc__req__eap_set_new_password__descriptor, + return (RpcReqEapClearIdentity *) + protobuf_c_message_unpack (&rpc__req__eap_clear_identity__descriptor, allocator, len, data); } -void rpc__req__eap_set_new_password__free_unpacked - (RpcReqEapSetNewPassword *message, +void rpc__req__eap_clear_identity__free_unpacked + (RpcReqEapClearIdentity *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__req__eap_set_new_password__descriptor); + assert(message->base.descriptor == &rpc__req__eap_clear_identity__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__resp__eap_set_new_password__init - (RpcRespEapSetNewPassword *message) +void rpc__resp__eap_clear_identity__init + (RpcRespEapClearIdentity *message) { - static const RpcRespEapSetNewPassword init_value = RPC__RESP__EAP_SET_NEW_PASSWORD__INIT; + static const RpcRespEapClearIdentity init_value = RPC__RESP__EAP_CLEAR_IDENTITY__INIT; *message = init_value; } -size_t rpc__resp__eap_set_new_password__get_packed_size - (const RpcRespEapSetNewPassword *message) +size_t rpc__resp__eap_clear_identity__get_packed_size + (const RpcRespEapClearIdentity *message) { - assert(message->base.descriptor == &rpc__resp__eap_set_new_password__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_clear_identity__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__resp__eap_set_new_password__pack - (const RpcRespEapSetNewPassword *message, +size_t rpc__resp__eap_clear_identity__pack + (const RpcRespEapClearIdentity *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__resp__eap_set_new_password__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_clear_identity__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__resp__eap_set_new_password__pack_to_buffer - (const RpcRespEapSetNewPassword *message, +size_t rpc__resp__eap_clear_identity__pack_to_buffer + (const RpcRespEapClearIdentity *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__resp__eap_set_new_password__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_clear_identity__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcRespEapSetNewPassword * - rpc__resp__eap_set_new_password__unpack +RpcRespEapClearIdentity * + rpc__resp__eap_clear_identity__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcRespEapSetNewPassword *) - protobuf_c_message_unpack (&rpc__resp__eap_set_new_password__descriptor, + return (RpcRespEapClearIdentity *) + protobuf_c_message_unpack (&rpc__resp__eap_clear_identity__descriptor, allocator, len, data); } -void rpc__resp__eap_set_new_password__free_unpacked - (RpcRespEapSetNewPassword *message, +void rpc__resp__eap_clear_identity__free_unpacked + (RpcRespEapClearIdentity *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__resp__eap_set_new_password__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_clear_identity__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__req__eap_clear_new_password__init - (RpcReqEapClearNewPassword *message) +void rpc__req__eap_set_username__init + (RpcReqEapSetUsername *message) { - static const RpcReqEapClearNewPassword init_value = RPC__REQ__EAP_CLEAR_NEW_PASSWORD__INIT; + static const RpcReqEapSetUsername init_value = RPC__REQ__EAP_SET_USERNAME__INIT; *message = init_value; } -size_t rpc__req__eap_clear_new_password__get_packed_size - (const RpcReqEapClearNewPassword *message) +size_t rpc__req__eap_set_username__get_packed_size + (const RpcReqEapSetUsername *message) { - assert(message->base.descriptor == &rpc__req__eap_clear_new_password__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_username__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__req__eap_clear_new_password__pack - (const RpcReqEapClearNewPassword *message, +size_t rpc__req__eap_set_username__pack + (const RpcReqEapSetUsername *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__req__eap_clear_new_password__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_username__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__req__eap_clear_new_password__pack_to_buffer - (const RpcReqEapClearNewPassword *message, +size_t rpc__req__eap_set_username__pack_to_buffer + (const RpcReqEapSetUsername *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__req__eap_clear_new_password__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_username__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcReqEapClearNewPassword * - rpc__req__eap_clear_new_password__unpack +RpcReqEapSetUsername * + rpc__req__eap_set_username__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcReqEapClearNewPassword *) - protobuf_c_message_unpack (&rpc__req__eap_clear_new_password__descriptor, + return (RpcReqEapSetUsername *) + protobuf_c_message_unpack (&rpc__req__eap_set_username__descriptor, allocator, len, data); } -void rpc__req__eap_clear_new_password__free_unpacked - (RpcReqEapClearNewPassword *message, +void rpc__req__eap_set_username__free_unpacked + (RpcReqEapSetUsername *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__req__eap_clear_new_password__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_username__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__resp__eap_clear_new_password__init - (RpcRespEapClearNewPassword *message) +void rpc__resp__eap_set_username__init + (RpcRespEapSetUsername *message) { - static const RpcRespEapClearNewPassword init_value = RPC__RESP__EAP_CLEAR_NEW_PASSWORD__INIT; + static const RpcRespEapSetUsername init_value = RPC__RESP__EAP_SET_USERNAME__INIT; *message = init_value; } -size_t rpc__resp__eap_clear_new_password__get_packed_size - (const RpcRespEapClearNewPassword *message) +size_t rpc__resp__eap_set_username__get_packed_size + (const RpcRespEapSetUsername *message) { - assert(message->base.descriptor == &rpc__resp__eap_clear_new_password__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_username__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__resp__eap_clear_new_password__pack - (const RpcRespEapClearNewPassword *message, +size_t rpc__resp__eap_set_username__pack + (const RpcRespEapSetUsername *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__resp__eap_clear_new_password__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_username__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__resp__eap_clear_new_password__pack_to_buffer - (const RpcRespEapClearNewPassword *message, +size_t rpc__resp__eap_set_username__pack_to_buffer + (const RpcRespEapSetUsername *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__resp__eap_clear_new_password__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_username__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcRespEapClearNewPassword * - rpc__resp__eap_clear_new_password__unpack +RpcRespEapSetUsername * + rpc__resp__eap_set_username__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcRespEapClearNewPassword *) - protobuf_c_message_unpack (&rpc__resp__eap_clear_new_password__descriptor, + return (RpcRespEapSetUsername *) + protobuf_c_message_unpack (&rpc__resp__eap_set_username__descriptor, allocator, len, data); } -void rpc__resp__eap_clear_new_password__free_unpacked - (RpcRespEapClearNewPassword *message, +void rpc__resp__eap_set_username__free_unpacked + (RpcRespEapSetUsername *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__resp__eap_clear_new_password__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_username__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__req__eap_set_ca_cert__init - (RpcReqEapSetCaCert *message) +void rpc__req__eap_clear_username__init + (RpcReqEapClearUsername *message) { - static const RpcReqEapSetCaCert init_value = RPC__REQ__EAP_SET_CA_CERT__INIT; + static const RpcReqEapClearUsername init_value = RPC__REQ__EAP_CLEAR_USERNAME__INIT; *message = init_value; } -size_t rpc__req__eap_set_ca_cert__get_packed_size - (const RpcReqEapSetCaCert *message) +size_t rpc__req__eap_clear_username__get_packed_size + (const RpcReqEapClearUsername *message) { - assert(message->base.descriptor == &rpc__req__eap_set_ca_cert__descriptor); + assert(message->base.descriptor == &rpc__req__eap_clear_username__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__req__eap_set_ca_cert__pack - (const RpcReqEapSetCaCert *message, +size_t rpc__req__eap_clear_username__pack + (const RpcReqEapClearUsername *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__req__eap_set_ca_cert__descriptor); + assert(message->base.descriptor == &rpc__req__eap_clear_username__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__req__eap_set_ca_cert__pack_to_buffer - (const RpcReqEapSetCaCert *message, +size_t rpc__req__eap_clear_username__pack_to_buffer + (const RpcReqEapClearUsername *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__req__eap_set_ca_cert__descriptor); + assert(message->base.descriptor == &rpc__req__eap_clear_username__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcReqEapSetCaCert * - rpc__req__eap_set_ca_cert__unpack +RpcReqEapClearUsername * + rpc__req__eap_clear_username__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcReqEapSetCaCert *) - protobuf_c_message_unpack (&rpc__req__eap_set_ca_cert__descriptor, + return (RpcReqEapClearUsername *) + protobuf_c_message_unpack (&rpc__req__eap_clear_username__descriptor, allocator, len, data); } -void rpc__req__eap_set_ca_cert__free_unpacked - (RpcReqEapSetCaCert *message, +void rpc__req__eap_clear_username__free_unpacked + (RpcReqEapClearUsername *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__req__eap_set_ca_cert__descriptor); + assert(message->base.descriptor == &rpc__req__eap_clear_username__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__resp__eap_set_ca_cert__init - (RpcRespEapSetCaCert *message) +void rpc__resp__eap_clear_username__init + (RpcRespEapClearUsername *message) { - static const RpcRespEapSetCaCert init_value = RPC__RESP__EAP_SET_CA_CERT__INIT; + static const RpcRespEapClearUsername init_value = RPC__RESP__EAP_CLEAR_USERNAME__INIT; *message = init_value; } -size_t rpc__resp__eap_set_ca_cert__get_packed_size - (const RpcRespEapSetCaCert *message) +size_t rpc__resp__eap_clear_username__get_packed_size + (const RpcRespEapClearUsername *message) { - assert(message->base.descriptor == &rpc__resp__eap_set_ca_cert__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_clear_username__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__resp__eap_set_ca_cert__pack - (const RpcRespEapSetCaCert *message, +size_t rpc__resp__eap_clear_username__pack + (const RpcRespEapClearUsername *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__resp__eap_set_ca_cert__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_clear_username__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__resp__eap_set_ca_cert__pack_to_buffer - (const RpcRespEapSetCaCert *message, +size_t rpc__resp__eap_clear_username__pack_to_buffer + (const RpcRespEapClearUsername *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__resp__eap_set_ca_cert__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_clear_username__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcRespEapSetCaCert * - rpc__resp__eap_set_ca_cert__unpack +RpcRespEapClearUsername * + rpc__resp__eap_clear_username__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcRespEapSetCaCert *) - protobuf_c_message_unpack (&rpc__resp__eap_set_ca_cert__descriptor, + return (RpcRespEapClearUsername *) + protobuf_c_message_unpack (&rpc__resp__eap_clear_username__descriptor, allocator, len, data); } -void rpc__resp__eap_set_ca_cert__free_unpacked - (RpcRespEapSetCaCert *message, +void rpc__resp__eap_clear_username__free_unpacked + (RpcRespEapClearUsername *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__resp__eap_set_ca_cert__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_clear_username__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__req__eap_clear_ca_cert__init - (RpcReqEapClearCaCert *message) +void rpc__req__eap_set_password__init + (RpcReqEapSetPassword *message) { - static const RpcReqEapClearCaCert init_value = RPC__REQ__EAP_CLEAR_CA_CERT__INIT; + static const RpcReqEapSetPassword init_value = RPC__REQ__EAP_SET_PASSWORD__INIT; *message = init_value; } -size_t rpc__req__eap_clear_ca_cert__get_packed_size - (const RpcReqEapClearCaCert *message) +size_t rpc__req__eap_set_password__get_packed_size + (const RpcReqEapSetPassword *message) { - assert(message->base.descriptor == &rpc__req__eap_clear_ca_cert__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_password__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__req__eap_clear_ca_cert__pack - (const RpcReqEapClearCaCert *message, +size_t rpc__req__eap_set_password__pack + (const RpcReqEapSetPassword *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__req__eap_clear_ca_cert__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_password__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__req__eap_clear_ca_cert__pack_to_buffer - (const RpcReqEapClearCaCert *message, +size_t rpc__req__eap_set_password__pack_to_buffer + (const RpcReqEapSetPassword *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__req__eap_clear_ca_cert__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_password__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcReqEapClearCaCert * - rpc__req__eap_clear_ca_cert__unpack +RpcReqEapSetPassword * + rpc__req__eap_set_password__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcReqEapClearCaCert *) - protobuf_c_message_unpack (&rpc__req__eap_clear_ca_cert__descriptor, + return (RpcReqEapSetPassword *) + protobuf_c_message_unpack (&rpc__req__eap_set_password__descriptor, allocator, len, data); } -void rpc__req__eap_clear_ca_cert__free_unpacked - (RpcReqEapClearCaCert *message, +void rpc__req__eap_set_password__free_unpacked + (RpcReqEapSetPassword *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__req__eap_clear_ca_cert__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_password__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__resp__eap_clear_ca_cert__init - (RpcRespEapClearCaCert *message) +void rpc__resp__eap_set_password__init + (RpcRespEapSetPassword *message) { - static const RpcRespEapClearCaCert init_value = RPC__RESP__EAP_CLEAR_CA_CERT__INIT; + static const RpcRespEapSetPassword init_value = RPC__RESP__EAP_SET_PASSWORD__INIT; *message = init_value; } -size_t rpc__resp__eap_clear_ca_cert__get_packed_size - (const RpcRespEapClearCaCert *message) +size_t rpc__resp__eap_set_password__get_packed_size + (const RpcRespEapSetPassword *message) { - assert(message->base.descriptor == &rpc__resp__eap_clear_ca_cert__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_password__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__resp__eap_clear_ca_cert__pack - (const RpcRespEapClearCaCert *message, +size_t rpc__resp__eap_set_password__pack + (const RpcRespEapSetPassword *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__resp__eap_clear_ca_cert__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_password__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__resp__eap_clear_ca_cert__pack_to_buffer - (const RpcRespEapClearCaCert *message, +size_t rpc__resp__eap_set_password__pack_to_buffer + (const RpcRespEapSetPassword *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__resp__eap_clear_ca_cert__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_password__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcRespEapClearCaCert * - rpc__resp__eap_clear_ca_cert__unpack +RpcRespEapSetPassword * + rpc__resp__eap_set_password__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcRespEapClearCaCert *) - protobuf_c_message_unpack (&rpc__resp__eap_clear_ca_cert__descriptor, + return (RpcRespEapSetPassword *) + protobuf_c_message_unpack (&rpc__resp__eap_set_password__descriptor, allocator, len, data); } -void rpc__resp__eap_clear_ca_cert__free_unpacked - (RpcRespEapClearCaCert *message, +void rpc__resp__eap_set_password__free_unpacked + (RpcRespEapSetPassword *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__resp__eap_clear_ca_cert__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_password__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__req__eap_set_certificate_and_key__init - (RpcReqEapSetCertificateAndKey *message) +void rpc__req__eap_clear_password__init + (RpcReqEapClearPassword *message) { - static const RpcReqEapSetCertificateAndKey init_value = RPC__REQ__EAP_SET_CERTIFICATE_AND_KEY__INIT; + static const RpcReqEapClearPassword init_value = RPC__REQ__EAP_CLEAR_PASSWORD__INIT; *message = init_value; } -size_t rpc__req__eap_set_certificate_and_key__get_packed_size - (const RpcReqEapSetCertificateAndKey *message) +size_t rpc__req__eap_clear_password__get_packed_size + (const RpcReqEapClearPassword *message) { - assert(message->base.descriptor == &rpc__req__eap_set_certificate_and_key__descriptor); + assert(message->base.descriptor == &rpc__req__eap_clear_password__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__req__eap_set_certificate_and_key__pack - (const RpcReqEapSetCertificateAndKey *message, +size_t rpc__req__eap_clear_password__pack + (const RpcReqEapClearPassword *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__req__eap_set_certificate_and_key__descriptor); + assert(message->base.descriptor == &rpc__req__eap_clear_password__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__req__eap_set_certificate_and_key__pack_to_buffer - (const RpcReqEapSetCertificateAndKey *message, +size_t rpc__req__eap_clear_password__pack_to_buffer + (const RpcReqEapClearPassword *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__req__eap_set_certificate_and_key__descriptor); + assert(message->base.descriptor == &rpc__req__eap_clear_password__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcReqEapSetCertificateAndKey * - rpc__req__eap_set_certificate_and_key__unpack +RpcReqEapClearPassword * + rpc__req__eap_clear_password__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcReqEapSetCertificateAndKey *) - protobuf_c_message_unpack (&rpc__req__eap_set_certificate_and_key__descriptor, + return (RpcReqEapClearPassword *) + protobuf_c_message_unpack (&rpc__req__eap_clear_password__descriptor, allocator, len, data); } -void rpc__req__eap_set_certificate_and_key__free_unpacked - (RpcReqEapSetCertificateAndKey *message, +void rpc__req__eap_clear_password__free_unpacked + (RpcReqEapClearPassword *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__req__eap_set_certificate_and_key__descriptor); + assert(message->base.descriptor == &rpc__req__eap_clear_password__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__resp__eap_set_certificate_and_key__init - (RpcRespEapSetCertificateAndKey *message) +void rpc__resp__eap_clear_password__init + (RpcRespEapClearPassword *message) { - static const RpcRespEapSetCertificateAndKey init_value = RPC__RESP__EAP_SET_CERTIFICATE_AND_KEY__INIT; + static const RpcRespEapClearPassword init_value = RPC__RESP__EAP_CLEAR_PASSWORD__INIT; *message = init_value; } -size_t rpc__resp__eap_set_certificate_and_key__get_packed_size - (const RpcRespEapSetCertificateAndKey *message) +size_t rpc__resp__eap_clear_password__get_packed_size + (const RpcRespEapClearPassword *message) { - assert(message->base.descriptor == &rpc__resp__eap_set_certificate_and_key__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_clear_password__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__resp__eap_set_certificate_and_key__pack - (const RpcRespEapSetCertificateAndKey *message, +size_t rpc__resp__eap_clear_password__pack + (const RpcRespEapClearPassword *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__resp__eap_set_certificate_and_key__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_clear_password__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__resp__eap_set_certificate_and_key__pack_to_buffer - (const RpcRespEapSetCertificateAndKey *message, +size_t rpc__resp__eap_clear_password__pack_to_buffer + (const RpcRespEapClearPassword *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__resp__eap_set_certificate_and_key__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_clear_password__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcRespEapSetCertificateAndKey * - rpc__resp__eap_set_certificate_and_key__unpack +RpcRespEapClearPassword * + rpc__resp__eap_clear_password__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcRespEapSetCertificateAndKey *) - protobuf_c_message_unpack (&rpc__resp__eap_set_certificate_and_key__descriptor, + return (RpcRespEapClearPassword *) + protobuf_c_message_unpack (&rpc__resp__eap_clear_password__descriptor, allocator, len, data); } -void rpc__resp__eap_set_certificate_and_key__free_unpacked - (RpcRespEapSetCertificateAndKey *message, +void rpc__resp__eap_clear_password__free_unpacked + (RpcRespEapClearPassword *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__resp__eap_set_certificate_and_key__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_clear_password__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__req__eap_clear_certificate_and_key__init - (RpcReqEapClearCertificateAndKey *message) +void rpc__req__eap_set_new_password__init + (RpcReqEapSetNewPassword *message) { - static const RpcReqEapClearCertificateAndKey init_value = RPC__REQ__EAP_CLEAR_CERTIFICATE_AND_KEY__INIT; + static const RpcReqEapSetNewPassword init_value = RPC__REQ__EAP_SET_NEW_PASSWORD__INIT; *message = init_value; } -size_t rpc__req__eap_clear_certificate_and_key__get_packed_size - (const RpcReqEapClearCertificateAndKey *message) +size_t rpc__req__eap_set_new_password__get_packed_size + (const RpcReqEapSetNewPassword *message) { - assert(message->base.descriptor == &rpc__req__eap_clear_certificate_and_key__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_new_password__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__req__eap_clear_certificate_and_key__pack - (const RpcReqEapClearCertificateAndKey *message, +size_t rpc__req__eap_set_new_password__pack + (const RpcReqEapSetNewPassword *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__req__eap_clear_certificate_and_key__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_new_password__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__req__eap_clear_certificate_and_key__pack_to_buffer - (const RpcReqEapClearCertificateAndKey *message, +size_t rpc__req__eap_set_new_password__pack_to_buffer + (const RpcReqEapSetNewPassword *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__req__eap_clear_certificate_and_key__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_new_password__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcReqEapClearCertificateAndKey * - rpc__req__eap_clear_certificate_and_key__unpack +RpcReqEapSetNewPassword * + rpc__req__eap_set_new_password__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcReqEapClearCertificateAndKey *) - protobuf_c_message_unpack (&rpc__req__eap_clear_certificate_and_key__descriptor, + return (RpcReqEapSetNewPassword *) + protobuf_c_message_unpack (&rpc__req__eap_set_new_password__descriptor, allocator, len, data); } -void rpc__req__eap_clear_certificate_and_key__free_unpacked - (RpcReqEapClearCertificateAndKey *message, +void rpc__req__eap_set_new_password__free_unpacked + (RpcReqEapSetNewPassword *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__req__eap_clear_certificate_and_key__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_new_password__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__resp__eap_clear_certificate_and_key__init - (RpcRespEapClearCertificateAndKey *message) +void rpc__resp__eap_set_new_password__init + (RpcRespEapSetNewPassword *message) { - static const RpcRespEapClearCertificateAndKey init_value = RPC__RESP__EAP_CLEAR_CERTIFICATE_AND_KEY__INIT; + static const RpcRespEapSetNewPassword init_value = RPC__RESP__EAP_SET_NEW_PASSWORD__INIT; *message = init_value; } -size_t rpc__resp__eap_clear_certificate_and_key__get_packed_size - (const RpcRespEapClearCertificateAndKey *message) +size_t rpc__resp__eap_set_new_password__get_packed_size + (const RpcRespEapSetNewPassword *message) { - assert(message->base.descriptor == &rpc__resp__eap_clear_certificate_and_key__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_new_password__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__resp__eap_clear_certificate_and_key__pack - (const RpcRespEapClearCertificateAndKey *message, +size_t rpc__resp__eap_set_new_password__pack + (const RpcRespEapSetNewPassword *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__resp__eap_clear_certificate_and_key__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_new_password__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__resp__eap_clear_certificate_and_key__pack_to_buffer - (const RpcRespEapClearCertificateAndKey *message, +size_t rpc__resp__eap_set_new_password__pack_to_buffer + (const RpcRespEapSetNewPassword *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__resp__eap_clear_certificate_and_key__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_new_password__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcRespEapClearCertificateAndKey * - rpc__resp__eap_clear_certificate_and_key__unpack +RpcRespEapSetNewPassword * + rpc__resp__eap_set_new_password__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcRespEapClearCertificateAndKey *) - protobuf_c_message_unpack (&rpc__resp__eap_clear_certificate_and_key__descriptor, + return (RpcRespEapSetNewPassword *) + protobuf_c_message_unpack (&rpc__resp__eap_set_new_password__descriptor, allocator, len, data); } -void rpc__resp__eap_clear_certificate_and_key__free_unpacked - (RpcRespEapClearCertificateAndKey *message, +void rpc__resp__eap_set_new_password__free_unpacked + (RpcRespEapSetNewPassword *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__resp__eap_clear_certificate_and_key__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_new_password__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__req__eap_set_disable_time_check__init - (RpcReqEapSetDisableTimeCheck *message) +void rpc__req__eap_clear_new_password__init + (RpcReqEapClearNewPassword *message) { - static const RpcReqEapSetDisableTimeCheck init_value = RPC__REQ__EAP_SET_DISABLE_TIME_CHECK__INIT; + static const RpcReqEapClearNewPassword init_value = RPC__REQ__EAP_CLEAR_NEW_PASSWORD__INIT; *message = init_value; } -size_t rpc__req__eap_set_disable_time_check__get_packed_size - (const RpcReqEapSetDisableTimeCheck *message) +size_t rpc__req__eap_clear_new_password__get_packed_size + (const RpcReqEapClearNewPassword *message) { - assert(message->base.descriptor == &rpc__req__eap_set_disable_time_check__descriptor); + assert(message->base.descriptor == &rpc__req__eap_clear_new_password__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__req__eap_set_disable_time_check__pack - (const RpcReqEapSetDisableTimeCheck *message, +size_t rpc__req__eap_clear_new_password__pack + (const RpcReqEapClearNewPassword *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__req__eap_set_disable_time_check__descriptor); + assert(message->base.descriptor == &rpc__req__eap_clear_new_password__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__req__eap_set_disable_time_check__pack_to_buffer - (const RpcReqEapSetDisableTimeCheck *message, +size_t rpc__req__eap_clear_new_password__pack_to_buffer + (const RpcReqEapClearNewPassword *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__req__eap_set_disable_time_check__descriptor); + assert(message->base.descriptor == &rpc__req__eap_clear_new_password__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcReqEapSetDisableTimeCheck * - rpc__req__eap_set_disable_time_check__unpack +RpcReqEapClearNewPassword * + rpc__req__eap_clear_new_password__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcReqEapSetDisableTimeCheck *) - protobuf_c_message_unpack (&rpc__req__eap_set_disable_time_check__descriptor, + return (RpcReqEapClearNewPassword *) + protobuf_c_message_unpack (&rpc__req__eap_clear_new_password__descriptor, allocator, len, data); } -void rpc__req__eap_set_disable_time_check__free_unpacked - (RpcReqEapSetDisableTimeCheck *message, +void rpc__req__eap_clear_new_password__free_unpacked + (RpcReqEapClearNewPassword *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__req__eap_set_disable_time_check__descriptor); + assert(message->base.descriptor == &rpc__req__eap_clear_new_password__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__resp__eap_set_disable_time_check__init - (RpcRespEapSetDisableTimeCheck *message) +void rpc__resp__eap_clear_new_password__init + (RpcRespEapClearNewPassword *message) { - static const RpcRespEapSetDisableTimeCheck init_value = RPC__RESP__EAP_SET_DISABLE_TIME_CHECK__INIT; + static const RpcRespEapClearNewPassword init_value = RPC__RESP__EAP_CLEAR_NEW_PASSWORD__INIT; *message = init_value; } -size_t rpc__resp__eap_set_disable_time_check__get_packed_size - (const RpcRespEapSetDisableTimeCheck *message) +size_t rpc__resp__eap_clear_new_password__get_packed_size + (const RpcRespEapClearNewPassword *message) { - assert(message->base.descriptor == &rpc__resp__eap_set_disable_time_check__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_clear_new_password__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__resp__eap_set_disable_time_check__pack - (const RpcRespEapSetDisableTimeCheck *message, +size_t rpc__resp__eap_clear_new_password__pack + (const RpcRespEapClearNewPassword *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__resp__eap_set_disable_time_check__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_clear_new_password__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__resp__eap_set_disable_time_check__pack_to_buffer - (const RpcRespEapSetDisableTimeCheck *message, +size_t rpc__resp__eap_clear_new_password__pack_to_buffer + (const RpcRespEapClearNewPassword *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__resp__eap_set_disable_time_check__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_clear_new_password__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcRespEapSetDisableTimeCheck * - rpc__resp__eap_set_disable_time_check__unpack +RpcRespEapClearNewPassword * + rpc__resp__eap_clear_new_password__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcRespEapSetDisableTimeCheck *) - protobuf_c_message_unpack (&rpc__resp__eap_set_disable_time_check__descriptor, + return (RpcRespEapClearNewPassword *) + protobuf_c_message_unpack (&rpc__resp__eap_clear_new_password__descriptor, allocator, len, data); } -void rpc__resp__eap_set_disable_time_check__free_unpacked - (RpcRespEapSetDisableTimeCheck *message, +void rpc__resp__eap_clear_new_password__free_unpacked + (RpcRespEapClearNewPassword *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__resp__eap_set_disable_time_check__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_clear_new_password__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__req__eap_get_disable_time_check__init - (RpcReqEapGetDisableTimeCheck *message) +void rpc__req__eap_set_ca_cert__init + (RpcReqEapSetCaCert *message) { - static const RpcReqEapGetDisableTimeCheck init_value = RPC__REQ__EAP_GET_DISABLE_TIME_CHECK__INIT; + static const RpcReqEapSetCaCert init_value = RPC__REQ__EAP_SET_CA_CERT__INIT; *message = init_value; } -size_t rpc__req__eap_get_disable_time_check__get_packed_size - (const RpcReqEapGetDisableTimeCheck *message) +size_t rpc__req__eap_set_ca_cert__get_packed_size + (const RpcReqEapSetCaCert *message) { - assert(message->base.descriptor == &rpc__req__eap_get_disable_time_check__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_ca_cert__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__req__eap_get_disable_time_check__pack - (const RpcReqEapGetDisableTimeCheck *message, +size_t rpc__req__eap_set_ca_cert__pack + (const RpcReqEapSetCaCert *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__req__eap_get_disable_time_check__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_ca_cert__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__req__eap_get_disable_time_check__pack_to_buffer - (const RpcReqEapGetDisableTimeCheck *message, +size_t rpc__req__eap_set_ca_cert__pack_to_buffer + (const RpcReqEapSetCaCert *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__req__eap_get_disable_time_check__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_ca_cert__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcReqEapGetDisableTimeCheck * - rpc__req__eap_get_disable_time_check__unpack +RpcReqEapSetCaCert * + rpc__req__eap_set_ca_cert__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcReqEapGetDisableTimeCheck *) - protobuf_c_message_unpack (&rpc__req__eap_get_disable_time_check__descriptor, + return (RpcReqEapSetCaCert *) + protobuf_c_message_unpack (&rpc__req__eap_set_ca_cert__descriptor, allocator, len, data); } -void rpc__req__eap_get_disable_time_check__free_unpacked - (RpcReqEapGetDisableTimeCheck *message, +void rpc__req__eap_set_ca_cert__free_unpacked + (RpcReqEapSetCaCert *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__req__eap_get_disable_time_check__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_ca_cert__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__resp__eap_get_disable_time_check__init - (RpcRespEapGetDisableTimeCheck *message) +void rpc__resp__eap_set_ca_cert__init + (RpcRespEapSetCaCert *message) { - static const RpcRespEapGetDisableTimeCheck init_value = RPC__RESP__EAP_GET_DISABLE_TIME_CHECK__INIT; + static const RpcRespEapSetCaCert init_value = RPC__RESP__EAP_SET_CA_CERT__INIT; *message = init_value; } -size_t rpc__resp__eap_get_disable_time_check__get_packed_size - (const RpcRespEapGetDisableTimeCheck *message) +size_t rpc__resp__eap_set_ca_cert__get_packed_size + (const RpcRespEapSetCaCert *message) { - assert(message->base.descriptor == &rpc__resp__eap_get_disable_time_check__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_ca_cert__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__resp__eap_get_disable_time_check__pack - (const RpcRespEapGetDisableTimeCheck *message, +size_t rpc__resp__eap_set_ca_cert__pack + (const RpcRespEapSetCaCert *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__resp__eap_get_disable_time_check__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_ca_cert__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__resp__eap_get_disable_time_check__pack_to_buffer - (const RpcRespEapGetDisableTimeCheck *message, +size_t rpc__resp__eap_set_ca_cert__pack_to_buffer + (const RpcRespEapSetCaCert *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__resp__eap_get_disable_time_check__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_ca_cert__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcRespEapGetDisableTimeCheck * - rpc__resp__eap_get_disable_time_check__unpack +RpcRespEapSetCaCert * + rpc__resp__eap_set_ca_cert__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcRespEapGetDisableTimeCheck *) - protobuf_c_message_unpack (&rpc__resp__eap_get_disable_time_check__descriptor, + return (RpcRespEapSetCaCert *) + protobuf_c_message_unpack (&rpc__resp__eap_set_ca_cert__descriptor, allocator, len, data); } -void rpc__resp__eap_get_disable_time_check__free_unpacked - (RpcRespEapGetDisableTimeCheck *message, +void rpc__resp__eap_set_ca_cert__free_unpacked + (RpcRespEapSetCaCert *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__resp__eap_get_disable_time_check__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_ca_cert__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__req__eap_set_ttls_phase2_method__init - (RpcReqEapSetTtlsPhase2Method *message) +void rpc__req__eap_clear_ca_cert__init + (RpcReqEapClearCaCert *message) { - static const RpcReqEapSetTtlsPhase2Method init_value = RPC__REQ__EAP_SET_TTLS_PHASE2_METHOD__INIT; + static const RpcReqEapClearCaCert init_value = RPC__REQ__EAP_CLEAR_CA_CERT__INIT; *message = init_value; } -size_t rpc__req__eap_set_ttls_phase2_method__get_packed_size - (const RpcReqEapSetTtlsPhase2Method *message) +size_t rpc__req__eap_clear_ca_cert__get_packed_size + (const RpcReqEapClearCaCert *message) { - assert(message->base.descriptor == &rpc__req__eap_set_ttls_phase2_method__descriptor); + assert(message->base.descriptor == &rpc__req__eap_clear_ca_cert__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__req__eap_set_ttls_phase2_method__pack - (const RpcReqEapSetTtlsPhase2Method *message, +size_t rpc__req__eap_clear_ca_cert__pack + (const RpcReqEapClearCaCert *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__req__eap_set_ttls_phase2_method__descriptor); + assert(message->base.descriptor == &rpc__req__eap_clear_ca_cert__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__req__eap_set_ttls_phase2_method__pack_to_buffer - (const RpcReqEapSetTtlsPhase2Method *message, +size_t rpc__req__eap_clear_ca_cert__pack_to_buffer + (const RpcReqEapClearCaCert *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__req__eap_set_ttls_phase2_method__descriptor); + assert(message->base.descriptor == &rpc__req__eap_clear_ca_cert__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcReqEapSetTtlsPhase2Method * - rpc__req__eap_set_ttls_phase2_method__unpack +RpcReqEapClearCaCert * + rpc__req__eap_clear_ca_cert__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcReqEapSetTtlsPhase2Method *) - protobuf_c_message_unpack (&rpc__req__eap_set_ttls_phase2_method__descriptor, + return (RpcReqEapClearCaCert *) + protobuf_c_message_unpack (&rpc__req__eap_clear_ca_cert__descriptor, allocator, len, data); } -void rpc__req__eap_set_ttls_phase2_method__free_unpacked - (RpcReqEapSetTtlsPhase2Method *message, +void rpc__req__eap_clear_ca_cert__free_unpacked + (RpcReqEapClearCaCert *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__req__eap_set_ttls_phase2_method__descriptor); + assert(message->base.descriptor == &rpc__req__eap_clear_ca_cert__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__resp__eap_set_ttls_phase2_method__init - (RpcRespEapSetTtlsPhase2Method *message) +void rpc__resp__eap_clear_ca_cert__init + (RpcRespEapClearCaCert *message) { - static const RpcRespEapSetTtlsPhase2Method init_value = RPC__RESP__EAP_SET_TTLS_PHASE2_METHOD__INIT; + static const RpcRespEapClearCaCert init_value = RPC__RESP__EAP_CLEAR_CA_CERT__INIT; *message = init_value; } -size_t rpc__resp__eap_set_ttls_phase2_method__get_packed_size - (const RpcRespEapSetTtlsPhase2Method *message) +size_t rpc__resp__eap_clear_ca_cert__get_packed_size + (const RpcRespEapClearCaCert *message) { - assert(message->base.descriptor == &rpc__resp__eap_set_ttls_phase2_method__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_clear_ca_cert__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__resp__eap_set_ttls_phase2_method__pack - (const RpcRespEapSetTtlsPhase2Method *message, +size_t rpc__resp__eap_clear_ca_cert__pack + (const RpcRespEapClearCaCert *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__resp__eap_set_ttls_phase2_method__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_clear_ca_cert__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__resp__eap_set_ttls_phase2_method__pack_to_buffer - (const RpcRespEapSetTtlsPhase2Method *message, +size_t rpc__resp__eap_clear_ca_cert__pack_to_buffer + (const RpcRespEapClearCaCert *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__resp__eap_set_ttls_phase2_method__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_clear_ca_cert__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcRespEapSetTtlsPhase2Method * - rpc__resp__eap_set_ttls_phase2_method__unpack +RpcRespEapClearCaCert * + rpc__resp__eap_clear_ca_cert__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcRespEapSetTtlsPhase2Method *) - protobuf_c_message_unpack (&rpc__resp__eap_set_ttls_phase2_method__descriptor, + return (RpcRespEapClearCaCert *) + protobuf_c_message_unpack (&rpc__resp__eap_clear_ca_cert__descriptor, allocator, len, data); } -void rpc__resp__eap_set_ttls_phase2_method__free_unpacked - (RpcRespEapSetTtlsPhase2Method *message, +void rpc__resp__eap_clear_ca_cert__free_unpacked + (RpcRespEapClearCaCert *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__resp__eap_set_ttls_phase2_method__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_clear_ca_cert__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__req__eap_set_suiteb192bit_certification__init - (RpcReqEapSetSuiteb192bitCertification *message) +void rpc__req__eap_set_certificate_and_key__init + (RpcReqEapSetCertificateAndKey *message) { - static const RpcReqEapSetSuiteb192bitCertification init_value = RPC__REQ__EAP_SET_SUITEB192BIT_CERTIFICATION__INIT; + static const RpcReqEapSetCertificateAndKey init_value = RPC__REQ__EAP_SET_CERTIFICATE_AND_KEY__INIT; *message = init_value; } -size_t rpc__req__eap_set_suiteb192bit_certification__get_packed_size - (const RpcReqEapSetSuiteb192bitCertification *message) +size_t rpc__req__eap_set_certificate_and_key__get_packed_size + (const RpcReqEapSetCertificateAndKey *message) { - assert(message->base.descriptor == &rpc__req__eap_set_suiteb192bit_certification__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_certificate_and_key__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__req__eap_set_suiteb192bit_certification__pack - (const RpcReqEapSetSuiteb192bitCertification *message, +size_t rpc__req__eap_set_certificate_and_key__pack + (const RpcReqEapSetCertificateAndKey *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__req__eap_set_suiteb192bit_certification__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_certificate_and_key__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__req__eap_set_suiteb192bit_certification__pack_to_buffer - (const RpcReqEapSetSuiteb192bitCertification *message, +size_t rpc__req__eap_set_certificate_and_key__pack_to_buffer + (const RpcReqEapSetCertificateAndKey *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__req__eap_set_suiteb192bit_certification__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_certificate_and_key__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcReqEapSetSuiteb192bitCertification * - rpc__req__eap_set_suiteb192bit_certification__unpack +RpcReqEapSetCertificateAndKey * + rpc__req__eap_set_certificate_and_key__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcReqEapSetSuiteb192bitCertification *) - protobuf_c_message_unpack (&rpc__req__eap_set_suiteb192bit_certification__descriptor, + return (RpcReqEapSetCertificateAndKey *) + protobuf_c_message_unpack (&rpc__req__eap_set_certificate_and_key__descriptor, allocator, len, data); } -void rpc__req__eap_set_suiteb192bit_certification__free_unpacked - (RpcReqEapSetSuiteb192bitCertification *message, +void rpc__req__eap_set_certificate_and_key__free_unpacked + (RpcReqEapSetCertificateAndKey *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__req__eap_set_suiteb192bit_certification__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_certificate_and_key__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__resp__eap_set_suiteb192bit_certification__init - (RpcRespEapSetSuiteb192bitCertification *message) +void rpc__resp__eap_set_certificate_and_key__init + (RpcRespEapSetCertificateAndKey *message) { - static const RpcRespEapSetSuiteb192bitCertification init_value = RPC__RESP__EAP_SET_SUITEB192BIT_CERTIFICATION__INIT; + static const RpcRespEapSetCertificateAndKey init_value = RPC__RESP__EAP_SET_CERTIFICATE_AND_KEY__INIT; *message = init_value; } -size_t rpc__resp__eap_set_suiteb192bit_certification__get_packed_size - (const RpcRespEapSetSuiteb192bitCertification *message) +size_t rpc__resp__eap_set_certificate_and_key__get_packed_size + (const RpcRespEapSetCertificateAndKey *message) { - assert(message->base.descriptor == &rpc__resp__eap_set_suiteb192bit_certification__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_certificate_and_key__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__resp__eap_set_suiteb192bit_certification__pack - (const RpcRespEapSetSuiteb192bitCertification *message, +size_t rpc__resp__eap_set_certificate_and_key__pack + (const RpcRespEapSetCertificateAndKey *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__resp__eap_set_suiteb192bit_certification__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_certificate_and_key__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__resp__eap_set_suiteb192bit_certification__pack_to_buffer - (const RpcRespEapSetSuiteb192bitCertification *message, +size_t rpc__resp__eap_set_certificate_and_key__pack_to_buffer + (const RpcRespEapSetCertificateAndKey *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__resp__eap_set_suiteb192bit_certification__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_certificate_and_key__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcRespEapSetSuiteb192bitCertification * - rpc__resp__eap_set_suiteb192bit_certification__unpack +RpcRespEapSetCertificateAndKey * + rpc__resp__eap_set_certificate_and_key__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcRespEapSetSuiteb192bitCertification *) - protobuf_c_message_unpack (&rpc__resp__eap_set_suiteb192bit_certification__descriptor, + return (RpcRespEapSetCertificateAndKey *) + protobuf_c_message_unpack (&rpc__resp__eap_set_certificate_and_key__descriptor, allocator, len, data); } -void rpc__resp__eap_set_suiteb192bit_certification__free_unpacked - (RpcRespEapSetSuiteb192bitCertification *message, +void rpc__resp__eap_set_certificate_and_key__free_unpacked + (RpcRespEapSetCertificateAndKey *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__resp__eap_set_suiteb192bit_certification__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_certificate_and_key__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__req__eap_set_pac_file__init - (RpcReqEapSetPacFile *message) +void rpc__req__eap_clear_certificate_and_key__init + (RpcReqEapClearCertificateAndKey *message) { - static const RpcReqEapSetPacFile init_value = RPC__REQ__EAP_SET_PAC_FILE__INIT; + static const RpcReqEapClearCertificateAndKey init_value = RPC__REQ__EAP_CLEAR_CERTIFICATE_AND_KEY__INIT; *message = init_value; } -size_t rpc__req__eap_set_pac_file__get_packed_size - (const RpcReqEapSetPacFile *message) +size_t rpc__req__eap_clear_certificate_and_key__get_packed_size + (const RpcReqEapClearCertificateAndKey *message) { - assert(message->base.descriptor == &rpc__req__eap_set_pac_file__descriptor); + assert(message->base.descriptor == &rpc__req__eap_clear_certificate_and_key__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__req__eap_set_pac_file__pack - (const RpcReqEapSetPacFile *message, +size_t rpc__req__eap_clear_certificate_and_key__pack + (const RpcReqEapClearCertificateAndKey *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__req__eap_set_pac_file__descriptor); + assert(message->base.descriptor == &rpc__req__eap_clear_certificate_and_key__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__req__eap_set_pac_file__pack_to_buffer - (const RpcReqEapSetPacFile *message, +size_t rpc__req__eap_clear_certificate_and_key__pack_to_buffer + (const RpcReqEapClearCertificateAndKey *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__req__eap_set_pac_file__descriptor); + assert(message->base.descriptor == &rpc__req__eap_clear_certificate_and_key__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcReqEapSetPacFile * - rpc__req__eap_set_pac_file__unpack +RpcReqEapClearCertificateAndKey * + rpc__req__eap_clear_certificate_and_key__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcReqEapSetPacFile *) - protobuf_c_message_unpack (&rpc__req__eap_set_pac_file__descriptor, + return (RpcReqEapClearCertificateAndKey *) + protobuf_c_message_unpack (&rpc__req__eap_clear_certificate_and_key__descriptor, allocator, len, data); } -void rpc__req__eap_set_pac_file__free_unpacked - (RpcReqEapSetPacFile *message, +void rpc__req__eap_clear_certificate_and_key__free_unpacked + (RpcReqEapClearCertificateAndKey *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__req__eap_set_pac_file__descriptor); + assert(message->base.descriptor == &rpc__req__eap_clear_certificate_and_key__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__resp__eap_set_pac_file__init - (RpcRespEapSetPacFile *message) +void rpc__resp__eap_clear_certificate_and_key__init + (RpcRespEapClearCertificateAndKey *message) { - static const RpcRespEapSetPacFile init_value = RPC__RESP__EAP_SET_PAC_FILE__INIT; + static const RpcRespEapClearCertificateAndKey init_value = RPC__RESP__EAP_CLEAR_CERTIFICATE_AND_KEY__INIT; *message = init_value; } -size_t rpc__resp__eap_set_pac_file__get_packed_size - (const RpcRespEapSetPacFile *message) +size_t rpc__resp__eap_clear_certificate_and_key__get_packed_size + (const RpcRespEapClearCertificateAndKey *message) { - assert(message->base.descriptor == &rpc__resp__eap_set_pac_file__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_clear_certificate_and_key__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__resp__eap_set_pac_file__pack - (const RpcRespEapSetPacFile *message, +size_t rpc__resp__eap_clear_certificate_and_key__pack + (const RpcRespEapClearCertificateAndKey *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__resp__eap_set_pac_file__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_clear_certificate_and_key__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__resp__eap_set_pac_file__pack_to_buffer - (const RpcRespEapSetPacFile *message, +size_t rpc__resp__eap_clear_certificate_and_key__pack_to_buffer + (const RpcRespEapClearCertificateAndKey *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__resp__eap_set_pac_file__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_clear_certificate_and_key__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcRespEapSetPacFile * - rpc__resp__eap_set_pac_file__unpack +RpcRespEapClearCertificateAndKey * + rpc__resp__eap_clear_certificate_and_key__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcRespEapSetPacFile *) - protobuf_c_message_unpack (&rpc__resp__eap_set_pac_file__descriptor, + return (RpcRespEapClearCertificateAndKey *) + protobuf_c_message_unpack (&rpc__resp__eap_clear_certificate_and_key__descriptor, allocator, len, data); } -void rpc__resp__eap_set_pac_file__free_unpacked - (RpcRespEapSetPacFile *message, +void rpc__resp__eap_clear_certificate_and_key__free_unpacked + (RpcRespEapClearCertificateAndKey *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__resp__eap_set_pac_file__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_clear_certificate_and_key__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__req__eap_set_fast_params__init - (RpcReqEapSetFastParams *message) +void rpc__req__eap_set_disable_time_check__init + (RpcReqEapSetDisableTimeCheck *message) { - static const RpcReqEapSetFastParams init_value = RPC__REQ__EAP_SET_FAST_PARAMS__INIT; + static const RpcReqEapSetDisableTimeCheck init_value = RPC__REQ__EAP_SET_DISABLE_TIME_CHECK__INIT; *message = init_value; } -size_t rpc__req__eap_set_fast_params__get_packed_size - (const RpcReqEapSetFastParams *message) +size_t rpc__req__eap_set_disable_time_check__get_packed_size + (const RpcReqEapSetDisableTimeCheck *message) { - assert(message->base.descriptor == &rpc__req__eap_set_fast_params__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_disable_time_check__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__req__eap_set_fast_params__pack - (const RpcReqEapSetFastParams *message, +size_t rpc__req__eap_set_disable_time_check__pack + (const RpcReqEapSetDisableTimeCheck *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__req__eap_set_fast_params__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_disable_time_check__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__req__eap_set_fast_params__pack_to_buffer - (const RpcReqEapSetFastParams *message, +size_t rpc__req__eap_set_disable_time_check__pack_to_buffer + (const RpcReqEapSetDisableTimeCheck *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__req__eap_set_fast_params__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_disable_time_check__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcReqEapSetFastParams * - rpc__req__eap_set_fast_params__unpack +RpcReqEapSetDisableTimeCheck * + rpc__req__eap_set_disable_time_check__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcReqEapSetFastParams *) - protobuf_c_message_unpack (&rpc__req__eap_set_fast_params__descriptor, + return (RpcReqEapSetDisableTimeCheck *) + protobuf_c_message_unpack (&rpc__req__eap_set_disable_time_check__descriptor, allocator, len, data); } -void rpc__req__eap_set_fast_params__free_unpacked - (RpcReqEapSetFastParams *message, +void rpc__req__eap_set_disable_time_check__free_unpacked + (RpcReqEapSetDisableTimeCheck *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__req__eap_set_fast_params__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_disable_time_check__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__resp__eap_set_fast_params__init - (RpcRespEapSetFastParams *message) +void rpc__resp__eap_set_disable_time_check__init + (RpcRespEapSetDisableTimeCheck *message) { - static const RpcRespEapSetFastParams init_value = RPC__RESP__EAP_SET_FAST_PARAMS__INIT; + static const RpcRespEapSetDisableTimeCheck init_value = RPC__RESP__EAP_SET_DISABLE_TIME_CHECK__INIT; *message = init_value; } -size_t rpc__resp__eap_set_fast_params__get_packed_size - (const RpcRespEapSetFastParams *message) +size_t rpc__resp__eap_set_disable_time_check__get_packed_size + (const RpcRespEapSetDisableTimeCheck *message) { - assert(message->base.descriptor == &rpc__resp__eap_set_fast_params__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_disable_time_check__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__resp__eap_set_fast_params__pack - (const RpcRespEapSetFastParams *message, +size_t rpc__resp__eap_set_disable_time_check__pack + (const RpcRespEapSetDisableTimeCheck *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__resp__eap_set_fast_params__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_disable_time_check__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__resp__eap_set_fast_params__pack_to_buffer - (const RpcRespEapSetFastParams *message, +size_t rpc__resp__eap_set_disable_time_check__pack_to_buffer + (const RpcRespEapSetDisableTimeCheck *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__resp__eap_set_fast_params__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_disable_time_check__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcRespEapSetFastParams * - rpc__resp__eap_set_fast_params__unpack +RpcRespEapSetDisableTimeCheck * + rpc__resp__eap_set_disable_time_check__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcRespEapSetFastParams *) - protobuf_c_message_unpack (&rpc__resp__eap_set_fast_params__descriptor, + return (RpcRespEapSetDisableTimeCheck *) + protobuf_c_message_unpack (&rpc__resp__eap_set_disable_time_check__descriptor, allocator, len, data); } -void rpc__resp__eap_set_fast_params__free_unpacked - (RpcRespEapSetFastParams *message, +void rpc__resp__eap_set_disable_time_check__free_unpacked + (RpcRespEapSetDisableTimeCheck *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__resp__eap_set_fast_params__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_disable_time_check__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__req__eap_use_default_cert_bundle__init - (RpcReqEapUseDefaultCertBundle *message) +void rpc__req__eap_get_disable_time_check__init + (RpcReqEapGetDisableTimeCheck *message) { - static const RpcReqEapUseDefaultCertBundle init_value = RPC__REQ__EAP_USE_DEFAULT_CERT_BUNDLE__INIT; + static const RpcReqEapGetDisableTimeCheck init_value = RPC__REQ__EAP_GET_DISABLE_TIME_CHECK__INIT; *message = init_value; } -size_t rpc__req__eap_use_default_cert_bundle__get_packed_size - (const RpcReqEapUseDefaultCertBundle *message) +size_t rpc__req__eap_get_disable_time_check__get_packed_size + (const RpcReqEapGetDisableTimeCheck *message) { - assert(message->base.descriptor == &rpc__req__eap_use_default_cert_bundle__descriptor); + assert(message->base.descriptor == &rpc__req__eap_get_disable_time_check__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__req__eap_use_default_cert_bundle__pack - (const RpcReqEapUseDefaultCertBundle *message, +size_t rpc__req__eap_get_disable_time_check__pack + (const RpcReqEapGetDisableTimeCheck *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__req__eap_use_default_cert_bundle__descriptor); + assert(message->base.descriptor == &rpc__req__eap_get_disable_time_check__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__req__eap_use_default_cert_bundle__pack_to_buffer - (const RpcReqEapUseDefaultCertBundle *message, +size_t rpc__req__eap_get_disable_time_check__pack_to_buffer + (const RpcReqEapGetDisableTimeCheck *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__req__eap_use_default_cert_bundle__descriptor); + assert(message->base.descriptor == &rpc__req__eap_get_disable_time_check__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcReqEapUseDefaultCertBundle * - rpc__req__eap_use_default_cert_bundle__unpack +RpcReqEapGetDisableTimeCheck * + rpc__req__eap_get_disable_time_check__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcReqEapUseDefaultCertBundle *) - protobuf_c_message_unpack (&rpc__req__eap_use_default_cert_bundle__descriptor, + return (RpcReqEapGetDisableTimeCheck *) + protobuf_c_message_unpack (&rpc__req__eap_get_disable_time_check__descriptor, allocator, len, data); } -void rpc__req__eap_use_default_cert_bundle__free_unpacked - (RpcReqEapUseDefaultCertBundle *message, +void rpc__req__eap_get_disable_time_check__free_unpacked + (RpcReqEapGetDisableTimeCheck *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__req__eap_use_default_cert_bundle__descriptor); + assert(message->base.descriptor == &rpc__req__eap_get_disable_time_check__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__resp__eap_use_default_cert_bundle__init - (RpcRespEapUseDefaultCertBundle *message) +void rpc__resp__eap_get_disable_time_check__init + (RpcRespEapGetDisableTimeCheck *message) { - static const RpcRespEapUseDefaultCertBundle init_value = RPC__RESP__EAP_USE_DEFAULT_CERT_BUNDLE__INIT; + static const RpcRespEapGetDisableTimeCheck init_value = RPC__RESP__EAP_GET_DISABLE_TIME_CHECK__INIT; *message = init_value; } -size_t rpc__resp__eap_use_default_cert_bundle__get_packed_size - (const RpcRespEapUseDefaultCertBundle *message) +size_t rpc__resp__eap_get_disable_time_check__get_packed_size + (const RpcRespEapGetDisableTimeCheck *message) { - assert(message->base.descriptor == &rpc__resp__eap_use_default_cert_bundle__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_get_disable_time_check__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__resp__eap_use_default_cert_bundle__pack - (const RpcRespEapUseDefaultCertBundle *message, +size_t rpc__resp__eap_get_disable_time_check__pack + (const RpcRespEapGetDisableTimeCheck *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__resp__eap_use_default_cert_bundle__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_get_disable_time_check__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__resp__eap_use_default_cert_bundle__pack_to_buffer - (const RpcRespEapUseDefaultCertBundle *message, +size_t rpc__resp__eap_get_disable_time_check__pack_to_buffer + (const RpcRespEapGetDisableTimeCheck *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__resp__eap_use_default_cert_bundle__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_get_disable_time_check__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcRespEapUseDefaultCertBundle * - rpc__resp__eap_use_default_cert_bundle__unpack +RpcRespEapGetDisableTimeCheck * + rpc__resp__eap_get_disable_time_check__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcRespEapUseDefaultCertBundle *) - protobuf_c_message_unpack (&rpc__resp__eap_use_default_cert_bundle__descriptor, + return (RpcRespEapGetDisableTimeCheck *) + protobuf_c_message_unpack (&rpc__resp__eap_get_disable_time_check__descriptor, allocator, len, data); } -void rpc__resp__eap_use_default_cert_bundle__free_unpacked - (RpcRespEapUseDefaultCertBundle *message, +void rpc__resp__eap_get_disable_time_check__free_unpacked + (RpcRespEapGetDisableTimeCheck *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__resp__eap_use_default_cert_bundle__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_get_disable_time_check__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__req__wifi_set_okc_support__init - (RpcReqWifiSetOkcSupport *message) +void rpc__req__eap_set_ttls_phase2_method__init + (RpcReqEapSetTtlsPhase2Method *message) { - static const RpcReqWifiSetOkcSupport init_value = RPC__REQ__WIFI_SET_OKC_SUPPORT__INIT; + static const RpcReqEapSetTtlsPhase2Method init_value = RPC__REQ__EAP_SET_TTLS_PHASE2_METHOD__INIT; *message = init_value; } -size_t rpc__req__wifi_set_okc_support__get_packed_size - (const RpcReqWifiSetOkcSupport *message) +size_t rpc__req__eap_set_ttls_phase2_method__get_packed_size + (const RpcReqEapSetTtlsPhase2Method *message) { - assert(message->base.descriptor == &rpc__req__wifi_set_okc_support__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_ttls_phase2_method__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__req__wifi_set_okc_support__pack - (const RpcReqWifiSetOkcSupport *message, +size_t rpc__req__eap_set_ttls_phase2_method__pack + (const RpcReqEapSetTtlsPhase2Method *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__req__wifi_set_okc_support__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_ttls_phase2_method__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__req__wifi_set_okc_support__pack_to_buffer - (const RpcReqWifiSetOkcSupport *message, +size_t rpc__req__eap_set_ttls_phase2_method__pack_to_buffer + (const RpcReqEapSetTtlsPhase2Method *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__req__wifi_set_okc_support__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_ttls_phase2_method__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcReqWifiSetOkcSupport * - rpc__req__wifi_set_okc_support__unpack +RpcReqEapSetTtlsPhase2Method * + rpc__req__eap_set_ttls_phase2_method__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcReqWifiSetOkcSupport *) - protobuf_c_message_unpack (&rpc__req__wifi_set_okc_support__descriptor, + return (RpcReqEapSetTtlsPhase2Method *) + protobuf_c_message_unpack (&rpc__req__eap_set_ttls_phase2_method__descriptor, allocator, len, data); } -void rpc__req__wifi_set_okc_support__free_unpacked - (RpcReqWifiSetOkcSupport *message, +void rpc__req__eap_set_ttls_phase2_method__free_unpacked + (RpcReqEapSetTtlsPhase2Method *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__req__wifi_set_okc_support__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_ttls_phase2_method__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__resp__wifi_set_okc_support__init - (RpcRespWifiSetOkcSupport *message) +void rpc__resp__eap_set_ttls_phase2_method__init + (RpcRespEapSetTtlsPhase2Method *message) { - static const RpcRespWifiSetOkcSupport init_value = RPC__RESP__WIFI_SET_OKC_SUPPORT__INIT; + static const RpcRespEapSetTtlsPhase2Method init_value = RPC__RESP__EAP_SET_TTLS_PHASE2_METHOD__INIT; *message = init_value; } -size_t rpc__resp__wifi_set_okc_support__get_packed_size - (const RpcRespWifiSetOkcSupport *message) +size_t rpc__resp__eap_set_ttls_phase2_method__get_packed_size + (const RpcRespEapSetTtlsPhase2Method *message) { - assert(message->base.descriptor == &rpc__resp__wifi_set_okc_support__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_ttls_phase2_method__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__resp__wifi_set_okc_support__pack - (const RpcRespWifiSetOkcSupport *message, +size_t rpc__resp__eap_set_ttls_phase2_method__pack + (const RpcRespEapSetTtlsPhase2Method *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__resp__wifi_set_okc_support__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_ttls_phase2_method__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__resp__wifi_set_okc_support__pack_to_buffer - (const RpcRespWifiSetOkcSupport *message, +size_t rpc__resp__eap_set_ttls_phase2_method__pack_to_buffer + (const RpcRespEapSetTtlsPhase2Method *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__resp__wifi_set_okc_support__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_ttls_phase2_method__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcRespWifiSetOkcSupport * - rpc__resp__wifi_set_okc_support__unpack +RpcRespEapSetTtlsPhase2Method * + rpc__resp__eap_set_ttls_phase2_method__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcRespWifiSetOkcSupport *) - protobuf_c_message_unpack (&rpc__resp__wifi_set_okc_support__descriptor, + return (RpcRespEapSetTtlsPhase2Method *) + protobuf_c_message_unpack (&rpc__resp__eap_set_ttls_phase2_method__descriptor, allocator, len, data); } -void rpc__resp__wifi_set_okc_support__free_unpacked - (RpcRespWifiSetOkcSupport *message, +void rpc__resp__eap_set_ttls_phase2_method__free_unpacked + (RpcRespEapSetTtlsPhase2Method *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__resp__wifi_set_okc_support__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_ttls_phase2_method__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__req__eap_set_domain_name__init - (RpcReqEapSetDomainName *message) +void rpc__req__eap_set_suiteb192bit_certification__init + (RpcReqEapSetSuiteb192bitCertification *message) { - static const RpcReqEapSetDomainName init_value = RPC__REQ__EAP_SET_DOMAIN_NAME__INIT; + static const RpcReqEapSetSuiteb192bitCertification init_value = RPC__REQ__EAP_SET_SUITEB192BIT_CERTIFICATION__INIT; *message = init_value; } -size_t rpc__req__eap_set_domain_name__get_packed_size - (const RpcReqEapSetDomainName *message) +size_t rpc__req__eap_set_suiteb192bit_certification__get_packed_size + (const RpcReqEapSetSuiteb192bitCertification *message) { - assert(message->base.descriptor == &rpc__req__eap_set_domain_name__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_suiteb192bit_certification__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__req__eap_set_domain_name__pack - (const RpcReqEapSetDomainName *message, +size_t rpc__req__eap_set_suiteb192bit_certification__pack + (const RpcReqEapSetSuiteb192bitCertification *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__req__eap_set_domain_name__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_suiteb192bit_certification__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__req__eap_set_domain_name__pack_to_buffer - (const RpcReqEapSetDomainName *message, +size_t rpc__req__eap_set_suiteb192bit_certification__pack_to_buffer + (const RpcReqEapSetSuiteb192bitCertification *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__req__eap_set_domain_name__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_suiteb192bit_certification__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcReqEapSetDomainName * - rpc__req__eap_set_domain_name__unpack +RpcReqEapSetSuiteb192bitCertification * + rpc__req__eap_set_suiteb192bit_certification__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcReqEapSetDomainName *) - protobuf_c_message_unpack (&rpc__req__eap_set_domain_name__descriptor, + return (RpcReqEapSetSuiteb192bitCertification *) + protobuf_c_message_unpack (&rpc__req__eap_set_suiteb192bit_certification__descriptor, allocator, len, data); } -void rpc__req__eap_set_domain_name__free_unpacked - (RpcReqEapSetDomainName *message, +void rpc__req__eap_set_suiteb192bit_certification__free_unpacked + (RpcReqEapSetSuiteb192bitCertification *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__req__eap_set_domain_name__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_suiteb192bit_certification__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__resp__eap_set_domain_name__init - (RpcRespEapSetDomainName *message) +void rpc__resp__eap_set_suiteb192bit_certification__init + (RpcRespEapSetSuiteb192bitCertification *message) { - static const RpcRespEapSetDomainName init_value = RPC__RESP__EAP_SET_DOMAIN_NAME__INIT; + static const RpcRespEapSetSuiteb192bitCertification init_value = RPC__RESP__EAP_SET_SUITEB192BIT_CERTIFICATION__INIT; *message = init_value; } -size_t rpc__resp__eap_set_domain_name__get_packed_size - (const RpcRespEapSetDomainName *message) +size_t rpc__resp__eap_set_suiteb192bit_certification__get_packed_size + (const RpcRespEapSetSuiteb192bitCertification *message) { - assert(message->base.descriptor == &rpc__resp__eap_set_domain_name__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_suiteb192bit_certification__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__resp__eap_set_domain_name__pack - (const RpcRespEapSetDomainName *message, +size_t rpc__resp__eap_set_suiteb192bit_certification__pack + (const RpcRespEapSetSuiteb192bitCertification *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__resp__eap_set_domain_name__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_suiteb192bit_certification__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__resp__eap_set_domain_name__pack_to_buffer - (const RpcRespEapSetDomainName *message, +size_t rpc__resp__eap_set_suiteb192bit_certification__pack_to_buffer + (const RpcRespEapSetSuiteb192bitCertification *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__resp__eap_set_domain_name__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_suiteb192bit_certification__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcRespEapSetDomainName * - rpc__resp__eap_set_domain_name__unpack +RpcRespEapSetSuiteb192bitCertification * + rpc__resp__eap_set_suiteb192bit_certification__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcRespEapSetDomainName *) - protobuf_c_message_unpack (&rpc__resp__eap_set_domain_name__descriptor, + return (RpcRespEapSetSuiteb192bitCertification *) + protobuf_c_message_unpack (&rpc__resp__eap_set_suiteb192bit_certification__descriptor, allocator, len, data); } -void rpc__resp__eap_set_domain_name__free_unpacked - (RpcRespEapSetDomainName *message, +void rpc__resp__eap_set_suiteb192bit_certification__free_unpacked + (RpcRespEapSetSuiteb192bitCertification *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__resp__eap_set_domain_name__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_suiteb192bit_certification__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__req__eap_set_eap_methods__init - (RpcReqEapSetEapMethods *message) +void rpc__req__eap_set_pac_file__init + (RpcReqEapSetPacFile *message) { - static const RpcReqEapSetEapMethods init_value = RPC__REQ__EAP_SET_EAP_METHODS__INIT; + static const RpcReqEapSetPacFile init_value = RPC__REQ__EAP_SET_PAC_FILE__INIT; *message = init_value; } -size_t rpc__req__eap_set_eap_methods__get_packed_size - (const RpcReqEapSetEapMethods *message) +size_t rpc__req__eap_set_pac_file__get_packed_size + (const RpcReqEapSetPacFile *message) { - assert(message->base.descriptor == &rpc__req__eap_set_eap_methods__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_pac_file__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__req__eap_set_eap_methods__pack - (const RpcReqEapSetEapMethods *message, +size_t rpc__req__eap_set_pac_file__pack + (const RpcReqEapSetPacFile *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__req__eap_set_eap_methods__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_pac_file__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__req__eap_set_eap_methods__pack_to_buffer - (const RpcReqEapSetEapMethods *message, +size_t rpc__req__eap_set_pac_file__pack_to_buffer + (const RpcReqEapSetPacFile *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__req__eap_set_eap_methods__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_pac_file__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcReqEapSetEapMethods * - rpc__req__eap_set_eap_methods__unpack +RpcReqEapSetPacFile * + rpc__req__eap_set_pac_file__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcReqEapSetEapMethods *) - protobuf_c_message_unpack (&rpc__req__eap_set_eap_methods__descriptor, + return (RpcReqEapSetPacFile *) + protobuf_c_message_unpack (&rpc__req__eap_set_pac_file__descriptor, allocator, len, data); } -void rpc__req__eap_set_eap_methods__free_unpacked - (RpcReqEapSetEapMethods *message, +void rpc__req__eap_set_pac_file__free_unpacked + (RpcReqEapSetPacFile *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__req__eap_set_eap_methods__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_pac_file__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__resp__eap_set_eap_methods__init - (RpcRespEapSetEapMethods *message) +void rpc__resp__eap_set_pac_file__init + (RpcRespEapSetPacFile *message) { - static const RpcRespEapSetEapMethods init_value = RPC__RESP__EAP_SET_EAP_METHODS__INIT; + static const RpcRespEapSetPacFile init_value = RPC__RESP__EAP_SET_PAC_FILE__INIT; *message = init_value; } -size_t rpc__resp__eap_set_eap_methods__get_packed_size - (const RpcRespEapSetEapMethods *message) +size_t rpc__resp__eap_set_pac_file__get_packed_size + (const RpcRespEapSetPacFile *message) { - assert(message->base.descriptor == &rpc__resp__eap_set_eap_methods__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_pac_file__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__resp__eap_set_eap_methods__pack - (const RpcRespEapSetEapMethods *message, +size_t rpc__resp__eap_set_pac_file__pack + (const RpcRespEapSetPacFile *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__resp__eap_set_eap_methods__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_pac_file__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__resp__eap_set_eap_methods__pack_to_buffer - (const RpcRespEapSetEapMethods *message, +size_t rpc__resp__eap_set_pac_file__pack_to_buffer + (const RpcRespEapSetPacFile *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__resp__eap_set_eap_methods__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_pac_file__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -RpcRespEapSetEapMethods * - rpc__resp__eap_set_eap_methods__unpack +RpcRespEapSetPacFile * + rpc__resp__eap_set_pac_file__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (RpcRespEapSetEapMethods *) - protobuf_c_message_unpack (&rpc__resp__eap_set_eap_methods__descriptor, + return (RpcRespEapSetPacFile *) + protobuf_c_message_unpack (&rpc__resp__eap_set_pac_file__descriptor, allocator, len, data); } -void rpc__resp__eap_set_eap_methods__free_unpacked - (RpcRespEapSetEapMethods *message, +void rpc__resp__eap_set_pac_file__free_unpacked + (RpcRespEapSetPacFile *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__resp__eap_set_eap_methods__descriptor); + assert(message->base.descriptor == &rpc__resp__eap_set_pac_file__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void rpc__init - (Rpc *message) +void rpc__req__eap_set_fast_params__init + (RpcReqEapSetFastParams *message) { - static const Rpc init_value = RPC__INIT; + static const RpcReqEapSetFastParams init_value = RPC__REQ__EAP_SET_FAST_PARAMS__INIT; *message = init_value; } -size_t rpc__get_packed_size - (const Rpc *message) +size_t rpc__req__eap_set_fast_params__get_packed_size + (const RpcReqEapSetFastParams *message) { - assert(message->base.descriptor == &rpc__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_fast_params__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } -size_t rpc__pack - (const Rpc *message, +size_t rpc__req__eap_set_fast_params__pack + (const RpcReqEapSetFastParams *message, uint8_t *out) { - assert(message->base.descriptor == &rpc__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_fast_params__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } -size_t rpc__pack_to_buffer - (const Rpc *message, +size_t rpc__req__eap_set_fast_params__pack_to_buffer + (const RpcReqEapSetFastParams *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &rpc__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_fast_params__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } -Rpc * - rpc__unpack +RpcReqEapSetFastParams * + rpc__req__eap_set_fast_params__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (Rpc *) - protobuf_c_message_unpack (&rpc__descriptor, + return (RpcReqEapSetFastParams *) + protobuf_c_message_unpack (&rpc__req__eap_set_fast_params__descriptor, allocator, len, data); } -void rpc__free_unpacked - (Rpc *message, +void rpc__req__eap_set_fast_params__free_unpacked + (RpcReqEapSetFastParams *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &rpc__descriptor); + assert(message->base.descriptor == &rpc__req__eap_set_fast_params__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -static const ProtobufCFieldDescriptor wifi_init_config__field_descriptors[24] = +void rpc__resp__eap_set_fast_params__init + (RpcRespEapSetFastParams *message) { - { - "static_rx_buf_num", - 1, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, static_rx_buf_num), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "dynamic_rx_buf_num", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, dynamic_rx_buf_num), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "tx_buf_type", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, tx_buf_type), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "static_tx_buf_num", - 4, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, static_tx_buf_num), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "dynamic_tx_buf_num", - 5, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, dynamic_tx_buf_num), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "cache_tx_buf_num", - 6, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, cache_tx_buf_num), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "csi_enable", - 7, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, csi_enable), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "ampdu_rx_enable", - 8, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, ampdu_rx_enable), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "ampdu_tx_enable", - 9, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, ampdu_tx_enable), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "amsdu_tx_enable", - 10, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, amsdu_tx_enable), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "nvs_enable", - 11, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(WifiInitConfig, nvs_enable), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "nano_enable", - 12, + static const RpcRespEapSetFastParams init_value = RPC__RESP__EAP_SET_FAST_PARAMS__INIT; + *message = init_value; +} +size_t rpc__resp__eap_set_fast_params__get_packed_size + (const RpcRespEapSetFastParams *message) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_fast_params__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__eap_set_fast_params__pack + (const RpcRespEapSetFastParams *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_fast_params__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__eap_set_fast_params__pack_to_buffer + (const RpcRespEapSetFastParams *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_fast_params__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespEapSetFastParams * + rpc__resp__eap_set_fast_params__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespEapSetFastParams *) + protobuf_c_message_unpack (&rpc__resp__eap_set_fast_params__descriptor, + allocator, len, data); +} +void rpc__resp__eap_set_fast_params__free_unpacked + (RpcRespEapSetFastParams *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__eap_set_fast_params__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__eap_use_default_cert_bundle__init + (RpcReqEapUseDefaultCertBundle *message) +{ + static const RpcReqEapUseDefaultCertBundle init_value = RPC__REQ__EAP_USE_DEFAULT_CERT_BUNDLE__INIT; + *message = init_value; +} +size_t rpc__req__eap_use_default_cert_bundle__get_packed_size + (const RpcReqEapUseDefaultCertBundle *message) +{ + assert(message->base.descriptor == &rpc__req__eap_use_default_cert_bundle__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__eap_use_default_cert_bundle__pack + (const RpcReqEapUseDefaultCertBundle *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__eap_use_default_cert_bundle__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__eap_use_default_cert_bundle__pack_to_buffer + (const RpcReqEapUseDefaultCertBundle *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__eap_use_default_cert_bundle__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqEapUseDefaultCertBundle * + rpc__req__eap_use_default_cert_bundle__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqEapUseDefaultCertBundle *) + protobuf_c_message_unpack (&rpc__req__eap_use_default_cert_bundle__descriptor, + allocator, len, data); +} +void rpc__req__eap_use_default_cert_bundle__free_unpacked + (RpcReqEapUseDefaultCertBundle *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__eap_use_default_cert_bundle__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__eap_use_default_cert_bundle__init + (RpcRespEapUseDefaultCertBundle *message) +{ + static const RpcRespEapUseDefaultCertBundle init_value = RPC__RESP__EAP_USE_DEFAULT_CERT_BUNDLE__INIT; + *message = init_value; +} +size_t rpc__resp__eap_use_default_cert_bundle__get_packed_size + (const RpcRespEapUseDefaultCertBundle *message) +{ + assert(message->base.descriptor == &rpc__resp__eap_use_default_cert_bundle__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__eap_use_default_cert_bundle__pack + (const RpcRespEapUseDefaultCertBundle *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__eap_use_default_cert_bundle__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__eap_use_default_cert_bundle__pack_to_buffer + (const RpcRespEapUseDefaultCertBundle *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__eap_use_default_cert_bundle__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespEapUseDefaultCertBundle * + rpc__resp__eap_use_default_cert_bundle__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespEapUseDefaultCertBundle *) + protobuf_c_message_unpack (&rpc__resp__eap_use_default_cert_bundle__descriptor, + allocator, len, data); +} +void rpc__resp__eap_use_default_cert_bundle__free_unpacked + (RpcRespEapUseDefaultCertBundle *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__eap_use_default_cert_bundle__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__wifi_set_okc_support__init + (RpcReqWifiSetOkcSupport *message) +{ + static const RpcReqWifiSetOkcSupport init_value = RPC__REQ__WIFI_SET_OKC_SUPPORT__INIT; + *message = init_value; +} +size_t rpc__req__wifi_set_okc_support__get_packed_size + (const RpcReqWifiSetOkcSupport *message) +{ + assert(message->base.descriptor == &rpc__req__wifi_set_okc_support__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__wifi_set_okc_support__pack + (const RpcReqWifiSetOkcSupport *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__wifi_set_okc_support__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__wifi_set_okc_support__pack_to_buffer + (const RpcReqWifiSetOkcSupport *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__wifi_set_okc_support__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqWifiSetOkcSupport * + rpc__req__wifi_set_okc_support__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqWifiSetOkcSupport *) + protobuf_c_message_unpack (&rpc__req__wifi_set_okc_support__descriptor, + allocator, len, data); +} +void rpc__req__wifi_set_okc_support__free_unpacked + (RpcReqWifiSetOkcSupport *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__wifi_set_okc_support__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__wifi_set_okc_support__init + (RpcRespWifiSetOkcSupport *message) +{ + static const RpcRespWifiSetOkcSupport init_value = RPC__RESP__WIFI_SET_OKC_SUPPORT__INIT; + *message = init_value; +} +size_t rpc__resp__wifi_set_okc_support__get_packed_size + (const RpcRespWifiSetOkcSupport *message) +{ + assert(message->base.descriptor == &rpc__resp__wifi_set_okc_support__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__wifi_set_okc_support__pack + (const RpcRespWifiSetOkcSupport *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__wifi_set_okc_support__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__wifi_set_okc_support__pack_to_buffer + (const RpcRespWifiSetOkcSupport *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__wifi_set_okc_support__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespWifiSetOkcSupport * + rpc__resp__wifi_set_okc_support__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespWifiSetOkcSupport *) + protobuf_c_message_unpack (&rpc__resp__wifi_set_okc_support__descriptor, + allocator, len, data); +} +void rpc__resp__wifi_set_okc_support__free_unpacked + (RpcRespWifiSetOkcSupport *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__wifi_set_okc_support__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__eap_set_domain_name__init + (RpcReqEapSetDomainName *message) +{ + static const RpcReqEapSetDomainName init_value = RPC__REQ__EAP_SET_DOMAIN_NAME__INIT; + *message = init_value; +} +size_t rpc__req__eap_set_domain_name__get_packed_size + (const RpcReqEapSetDomainName *message) +{ + assert(message->base.descriptor == &rpc__req__eap_set_domain_name__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__eap_set_domain_name__pack + (const RpcReqEapSetDomainName *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__eap_set_domain_name__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__eap_set_domain_name__pack_to_buffer + (const RpcReqEapSetDomainName *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__eap_set_domain_name__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqEapSetDomainName * + rpc__req__eap_set_domain_name__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqEapSetDomainName *) + protobuf_c_message_unpack (&rpc__req__eap_set_domain_name__descriptor, + allocator, len, data); +} +void rpc__req__eap_set_domain_name__free_unpacked + (RpcReqEapSetDomainName *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__eap_set_domain_name__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__eap_set_domain_name__init + (RpcRespEapSetDomainName *message) +{ + static const RpcRespEapSetDomainName init_value = RPC__RESP__EAP_SET_DOMAIN_NAME__INIT; + *message = init_value; +} +size_t rpc__resp__eap_set_domain_name__get_packed_size + (const RpcRespEapSetDomainName *message) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_domain_name__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__eap_set_domain_name__pack + (const RpcRespEapSetDomainName *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_domain_name__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__eap_set_domain_name__pack_to_buffer + (const RpcRespEapSetDomainName *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_domain_name__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespEapSetDomainName * + rpc__resp__eap_set_domain_name__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespEapSetDomainName *) + protobuf_c_message_unpack (&rpc__resp__eap_set_domain_name__descriptor, + allocator, len, data); +} +void rpc__resp__eap_set_domain_name__free_unpacked + (RpcRespEapSetDomainName *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__eap_set_domain_name__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__eap_set_eap_methods__init + (RpcReqEapSetEapMethods *message) +{ + static const RpcReqEapSetEapMethods init_value = RPC__REQ__EAP_SET_EAP_METHODS__INIT; + *message = init_value; +} +size_t rpc__req__eap_set_eap_methods__get_packed_size + (const RpcReqEapSetEapMethods *message) +{ + assert(message->base.descriptor == &rpc__req__eap_set_eap_methods__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__eap_set_eap_methods__pack + (const RpcReqEapSetEapMethods *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__eap_set_eap_methods__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__eap_set_eap_methods__pack_to_buffer + (const RpcReqEapSetEapMethods *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__eap_set_eap_methods__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqEapSetEapMethods * + rpc__req__eap_set_eap_methods__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqEapSetEapMethods *) + protobuf_c_message_unpack (&rpc__req__eap_set_eap_methods__descriptor, + allocator, len, data); +} +void rpc__req__eap_set_eap_methods__free_unpacked + (RpcReqEapSetEapMethods *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__eap_set_eap_methods__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__eap_set_eap_methods__init + (RpcRespEapSetEapMethods *message) +{ + static const RpcRespEapSetEapMethods init_value = RPC__RESP__EAP_SET_EAP_METHODS__INIT; + *message = init_value; +} +size_t rpc__resp__eap_set_eap_methods__get_packed_size + (const RpcRespEapSetEapMethods *message) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_eap_methods__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__eap_set_eap_methods__pack + (const RpcRespEapSetEapMethods *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_eap_methods__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__eap_set_eap_methods__pack_to_buffer + (const RpcRespEapSetEapMethods *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__eap_set_eap_methods__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespEapSetEapMethods * + rpc__resp__eap_set_eap_methods__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespEapSetEapMethods *) + protobuf_c_message_unpack (&rpc__resp__eap_set_eap_methods__descriptor, + allocator, len, data); +} +void rpc__resp__eap_set_eap_methods__free_unpacked + (RpcRespEapSetEapMethods *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__eap_set_eap_methods__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__event__supp_dpp_uri_ready__init + (RpcEventSuppDppUriReady *message) +{ + static const RpcEventSuppDppUriReady init_value = RPC__EVENT__SUPP_DPP_URI_READY__INIT; + *message = init_value; +} +size_t rpc__event__supp_dpp_uri_ready__get_packed_size + (const RpcEventSuppDppUriReady *message) +{ + assert(message->base.descriptor == &rpc__event__supp_dpp_uri_ready__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__event__supp_dpp_uri_ready__pack + (const RpcEventSuppDppUriReady *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__event__supp_dpp_uri_ready__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__event__supp_dpp_uri_ready__pack_to_buffer + (const RpcEventSuppDppUriReady *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__event__supp_dpp_uri_ready__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcEventSuppDppUriReady * + rpc__event__supp_dpp_uri_ready__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcEventSuppDppUriReady *) + protobuf_c_message_unpack (&rpc__event__supp_dpp_uri_ready__descriptor, + allocator, len, data); +} +void rpc__event__supp_dpp_uri_ready__free_unpacked + (RpcEventSuppDppUriReady *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__event__supp_dpp_uri_ready__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__event__supp_dpp_cfg_recvd__init + (RpcEventSuppDppCfgRecvd *message) +{ + static const RpcEventSuppDppCfgRecvd init_value = RPC__EVENT__SUPP_DPP_CFG_RECVD__INIT; + *message = init_value; +} +size_t rpc__event__supp_dpp_cfg_recvd__get_packed_size + (const RpcEventSuppDppCfgRecvd *message) +{ + assert(message->base.descriptor == &rpc__event__supp_dpp_cfg_recvd__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__event__supp_dpp_cfg_recvd__pack + (const RpcEventSuppDppCfgRecvd *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__event__supp_dpp_cfg_recvd__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__event__supp_dpp_cfg_recvd__pack_to_buffer + (const RpcEventSuppDppCfgRecvd *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__event__supp_dpp_cfg_recvd__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcEventSuppDppCfgRecvd * + rpc__event__supp_dpp_cfg_recvd__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcEventSuppDppCfgRecvd *) + protobuf_c_message_unpack (&rpc__event__supp_dpp_cfg_recvd__descriptor, + allocator, len, data); +} +void rpc__event__supp_dpp_cfg_recvd__free_unpacked + (RpcEventSuppDppCfgRecvd *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__event__supp_dpp_cfg_recvd__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__event__supp_dpp_fail__init + (RpcEventSuppDppFail *message) +{ + static const RpcEventSuppDppFail init_value = RPC__EVENT__SUPP_DPP_FAIL__INIT; + *message = init_value; +} +size_t rpc__event__supp_dpp_fail__get_packed_size + (const RpcEventSuppDppFail *message) +{ + assert(message->base.descriptor == &rpc__event__supp_dpp_fail__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__event__supp_dpp_fail__pack + (const RpcEventSuppDppFail *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__event__supp_dpp_fail__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__event__supp_dpp_fail__pack_to_buffer + (const RpcEventSuppDppFail *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__event__supp_dpp_fail__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcEventSuppDppFail * + rpc__event__supp_dpp_fail__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcEventSuppDppFail *) + protobuf_c_message_unpack (&rpc__event__supp_dpp_fail__descriptor, + allocator, len, data); +} +void rpc__event__supp_dpp_fail__free_unpacked + (RpcEventSuppDppFail *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__event__supp_dpp_fail__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__event__wifi_dpp_uri_ready__init + (RpcEventWifiDppUriReady *message) +{ + static const RpcEventWifiDppUriReady init_value = RPC__EVENT__WIFI_DPP_URI_READY__INIT; + *message = init_value; +} +size_t rpc__event__wifi_dpp_uri_ready__get_packed_size + (const RpcEventWifiDppUriReady *message) +{ + assert(message->base.descriptor == &rpc__event__wifi_dpp_uri_ready__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__event__wifi_dpp_uri_ready__pack + (const RpcEventWifiDppUriReady *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__event__wifi_dpp_uri_ready__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__event__wifi_dpp_uri_ready__pack_to_buffer + (const RpcEventWifiDppUriReady *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__event__wifi_dpp_uri_ready__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcEventWifiDppUriReady * + rpc__event__wifi_dpp_uri_ready__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcEventWifiDppUriReady *) + protobuf_c_message_unpack (&rpc__event__wifi_dpp_uri_ready__descriptor, + allocator, len, data); +} +void rpc__event__wifi_dpp_uri_ready__free_unpacked + (RpcEventWifiDppUriReady *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__event__wifi_dpp_uri_ready__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__event__wifi_dpp_cfg_recvd__init + (RpcEventWifiDppCfgRecvd *message) +{ + static const RpcEventWifiDppCfgRecvd init_value = RPC__EVENT__WIFI_DPP_CFG_RECVD__INIT; + *message = init_value; +} +size_t rpc__event__wifi_dpp_cfg_recvd__get_packed_size + (const RpcEventWifiDppCfgRecvd *message) +{ + assert(message->base.descriptor == &rpc__event__wifi_dpp_cfg_recvd__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__event__wifi_dpp_cfg_recvd__pack + (const RpcEventWifiDppCfgRecvd *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__event__wifi_dpp_cfg_recvd__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__event__wifi_dpp_cfg_recvd__pack_to_buffer + (const RpcEventWifiDppCfgRecvd *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__event__wifi_dpp_cfg_recvd__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcEventWifiDppCfgRecvd * + rpc__event__wifi_dpp_cfg_recvd__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcEventWifiDppCfgRecvd *) + protobuf_c_message_unpack (&rpc__event__wifi_dpp_cfg_recvd__descriptor, + allocator, len, data); +} +void rpc__event__wifi_dpp_cfg_recvd__free_unpacked + (RpcEventWifiDppCfgRecvd *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__event__wifi_dpp_cfg_recvd__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__event__wifi_dpp_fail__init + (RpcEventWifiDppFail *message) +{ + static const RpcEventWifiDppFail init_value = RPC__EVENT__WIFI_DPP_FAIL__INIT; + *message = init_value; +} +size_t rpc__event__wifi_dpp_fail__get_packed_size + (const RpcEventWifiDppFail *message) +{ + assert(message->base.descriptor == &rpc__event__wifi_dpp_fail__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__event__wifi_dpp_fail__pack + (const RpcEventWifiDppFail *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__event__wifi_dpp_fail__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__event__wifi_dpp_fail__pack_to_buffer + (const RpcEventWifiDppFail *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__event__wifi_dpp_fail__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcEventWifiDppFail * + rpc__event__wifi_dpp_fail__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcEventWifiDppFail *) + protobuf_c_message_unpack (&rpc__event__wifi_dpp_fail__descriptor, + allocator, len, data); +} +void rpc__event__wifi_dpp_fail__free_unpacked + (RpcEventWifiDppFail *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__event__wifi_dpp_fail__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__init + (Rpc *message) +{ + static const Rpc init_value = RPC__INIT; + *message = init_value; +} +size_t rpc__get_packed_size + (const Rpc *message) +{ + assert(message->base.descriptor == &rpc__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__pack + (const Rpc *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__pack_to_buffer + (const Rpc *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +Rpc * + rpc__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (Rpc *) + protobuf_c_message_unpack (&rpc__descriptor, + allocator, len, data); +} +void rpc__free_unpacked + (Rpc *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +static const ProtobufCFieldDescriptor wifi_init_config__field_descriptors[24] = +{ + { + "static_rx_buf_num", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, static_rx_buf_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dynamic_rx_buf_num", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, dynamic_rx_buf_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "tx_buf_type", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, tx_buf_type), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "static_tx_buf_num", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, static_tx_buf_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dynamic_tx_buf_num", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, dynamic_tx_buf_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cache_tx_buf_num", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, cache_tx_buf_num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "csi_enable", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, csi_enable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ampdu_rx_enable", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, ampdu_rx_enable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ampdu_tx_enable", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, ampdu_tx_enable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "amsdu_tx_enable", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, amsdu_tx_enable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "nvs_enable", + 11, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(WifiInitConfig, nvs_enable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "nano_enable", + 12, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ @@ -15940,60 +16660,307 @@ const ProtobufCMessageDescriptor rpc__req__wifi_init__descriptor = static const ProtobufCFieldDescriptor rpc__resp__wifi_init__field_descriptors[1] = { { - "resp", - 1, + "resp", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiInit, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__resp__wifi_init__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__wifi_init__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__wifi_init__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_WifiInit", + "RpcRespWifiInit", + "RpcRespWifiInit", + "", + sizeof(RpcRespWifiInit), + 1, + rpc__resp__wifi_init__field_descriptors, + rpc__resp__wifi_init__field_indices_by_name, + 1, rpc__resp__wifi_init__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_init__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define rpc__req__wifi_deinit__field_descriptors NULL +#define rpc__req__wifi_deinit__field_indices_by_name NULL +#define rpc__req__wifi_deinit__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_deinit__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiDeinit", + "RpcReqWifiDeinit", + "RpcReqWifiDeinit", + "", + sizeof(RpcReqWifiDeinit), + 0, + rpc__req__wifi_deinit__field_descriptors, + rpc__req__wifi_deinit__field_indices_by_name, + 0, rpc__req__wifi_deinit__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_deinit__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_deinit__field_descriptors[1] = +{ + { + "resp", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiDeinit, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__resp__wifi_deinit__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__wifi_deinit__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__wifi_deinit__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_WifiDeinit", + "RpcRespWifiDeinit", + "RpcRespWifiDeinit", + "", + sizeof(RpcRespWifiDeinit), + 1, + rpc__resp__wifi_deinit__field_descriptors, + rpc__resp__wifi_deinit__field_indices_by_name, + 1, rpc__resp__wifi_deinit__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_deinit__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__wifi_set_config__field_descriptors[2] = +{ + { + "iface", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcReqWifiSetConfig, iface), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cfg", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(RpcReqWifiSetConfig, cfg), + &wifi_config__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__req__wifi_set_config__field_indices_by_name[] = { + 1, /* field[1] = cfg */ + 0, /* field[0] = iface */ +}; +static const ProtobufCIntRange rpc__req__wifi_set_config__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor rpc__req__wifi_set_config__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiSetConfig", + "RpcReqWifiSetConfig", + "RpcReqWifiSetConfig", + "", + sizeof(RpcReqWifiSetConfig), + 2, + rpc__req__wifi_set_config__field_descriptors, + rpc__req__wifi_set_config__field_indices_by_name, + 1, rpc__req__wifi_set_config__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_config__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_config__field_descriptors[1] = +{ + { + "resp", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiSetConfig, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__resp__wifi_set_config__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__wifi_set_config__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__wifi_set_config__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_WifiSetConfig", + "RpcRespWifiSetConfig", + "RpcRespWifiSetConfig", + "", + sizeof(RpcRespWifiSetConfig), + 1, + rpc__resp__wifi_set_config__field_descriptors, + rpc__resp__wifi_set_config__field_indices_by_name, + 1, rpc__resp__wifi_set_config__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_config__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__wifi_get_config__field_descriptors[1] = +{ + { + "iface", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcReqWifiGetConfig, iface), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__req__wifi_get_config__field_indices_by_name[] = { + 0, /* field[0] = iface */ +}; +static const ProtobufCIntRange rpc__req__wifi_get_config__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__req__wifi_get_config__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiGetConfig", + "RpcReqWifiGetConfig", + "RpcReqWifiGetConfig", + "", + sizeof(RpcReqWifiGetConfig), + 1, + rpc__req__wifi_get_config__field_descriptors, + rpc__req__wifi_get_config__field_indices_by_name, + 1, rpc__req__wifi_get_config__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_config__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_config__field_descriptors[3] = +{ + { + "resp", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiGetConfig, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "iface", + 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiInit, resp), + offsetof(RpcRespWifiGetConfig, iface), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "cfg", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiGetConfig, cfg), + &wifi_config__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, }; -static const unsigned rpc__resp__wifi_init__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_get_config__field_indices_by_name[] = { + 2, /* field[2] = cfg */ + 1, /* field[1] = iface */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_init__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_config__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 3 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_init__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiInit", - "RpcRespWifiInit", - "RpcRespWifiInit", + "Rpc_Resp_WifiGetConfig", + "RpcRespWifiGetConfig", + "RpcRespWifiGetConfig", "", - sizeof(RpcRespWifiInit), - 1, - rpc__resp__wifi_init__field_descriptors, - rpc__resp__wifi_init__field_indices_by_name, - 1, rpc__resp__wifi_init__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_init__init, + sizeof(RpcRespWifiGetConfig), + 3, + rpc__resp__wifi_get_config__field_descriptors, + rpc__resp__wifi_get_config__field_indices_by_name, + 1, rpc__resp__wifi_get_config__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_config__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_deinit__field_descriptors NULL -#define rpc__req__wifi_deinit__field_indices_by_name NULL -#define rpc__req__wifi_deinit__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_deinit__descriptor = +#define rpc__req__wifi_connect__field_descriptors NULL +#define rpc__req__wifi_connect__field_indices_by_name NULL +#define rpc__req__wifi_connect__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_connect__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiDeinit", - "RpcReqWifiDeinit", - "RpcReqWifiDeinit", + "Rpc_Req_WifiConnect", + "RpcReqWifiConnect", + "RpcReqWifiConnect", "", - sizeof(RpcReqWifiDeinit), + sizeof(RpcReqWifiConnect), 0, - rpc__req__wifi_deinit__field_descriptors, - rpc__req__wifi_deinit__field_indices_by_name, - 0, rpc__req__wifi_deinit__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_deinit__init, + rpc__req__wifi_connect__field_descriptors, + rpc__req__wifi_connect__field_indices_by_name, + 0, rpc__req__wifi_connect__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_connect__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_deinit__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_connect__field_descriptors[1] = { { "resp", @@ -16001,88 +16968,111 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_deinit__field_descriptors[ PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiDeinit, resp), + offsetof(RpcRespWifiConnect, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_deinit__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_connect__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_deinit__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_connect__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_deinit__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_connect__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiDeinit", - "RpcRespWifiDeinit", - "RpcRespWifiDeinit", + "Rpc_Resp_WifiConnect", + "RpcRespWifiConnect", + "RpcRespWifiConnect", "", - sizeof(RpcRespWifiDeinit), + sizeof(RpcRespWifiConnect), 1, - rpc__resp__wifi_deinit__field_descriptors, - rpc__resp__wifi_deinit__field_indices_by_name, - 1, rpc__resp__wifi_deinit__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_deinit__init, + rpc__resp__wifi_connect__field_descriptors, + rpc__resp__wifi_connect__field_indices_by_name, + 1, rpc__resp__wifi_connect__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_connect__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_config__field_descriptors[2] = +#define rpc__req__wifi_disconnect__field_descriptors NULL +#define rpc__req__wifi_disconnect__field_indices_by_name NULL +#define rpc__req__wifi_disconnect__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_disconnect__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiDisconnect", + "RpcReqWifiDisconnect", + "RpcReqWifiDisconnect", + "", + sizeof(RpcReqWifiDisconnect), + 0, + rpc__req__wifi_disconnect__field_descriptors, + rpc__req__wifi_disconnect__field_indices_by_name, + 0, rpc__req__wifi_disconnect__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_disconnect__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_disconnect__field_descriptors[1] = { { - "iface", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetConfig, iface), - NULL, + offsetof(RpcRespWifiDisconnect, resp), NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "cfg", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetConfig, cfg), - &wifi_config__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_config__field_indices_by_name[] = { - 1, /* field[1] = cfg */ - 0, /* field[0] = iface */ +static const unsigned rpc__resp__wifi_disconnect__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_set_config__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_disconnect__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_config__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_disconnect__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetConfig", - "RpcReqWifiSetConfig", - "RpcReqWifiSetConfig", + "Rpc_Resp_WifiDisconnect", + "RpcRespWifiDisconnect", + "RpcRespWifiDisconnect", "", - sizeof(RpcReqWifiSetConfig), - 2, - rpc__req__wifi_set_config__field_descriptors, - rpc__req__wifi_set_config__field_indices_by_name, - 1, rpc__req__wifi_set_config__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_config__init, + sizeof(RpcRespWifiDisconnect), + 1, + rpc__resp__wifi_disconnect__field_descriptors, + rpc__resp__wifi_disconnect__field_indices_by_name, + 1, rpc__resp__wifi_disconnect__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_disconnect__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_config__field_descriptors[1] = +#define rpc__req__wifi_start__field_descriptors NULL +#define rpc__req__wifi_start__field_indices_by_name NULL +#define rpc__req__wifi_start__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_start__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStart", + "RpcReqWifiStart", + "RpcReqWifiStart", + "", + sizeof(RpcReqWifiStart), + 0, + rpc__req__wifi_start__field_descriptors, + rpc__req__wifi_start__field_indices_by_name, + 0, rpc__req__wifi_start__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_start__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_start__field_descriptors[1] = { { "resp", @@ -16090,157 +17080,157 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_config__field_descript PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetConfig, resp), + offsetof(RpcRespWifiStart, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_config__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_start__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_config__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_start__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_config__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_start__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetConfig", - "RpcRespWifiSetConfig", - "RpcRespWifiSetConfig", + "Rpc_Resp_WifiStart", + "RpcRespWifiStart", + "RpcRespWifiStart", "", - sizeof(RpcRespWifiSetConfig), + sizeof(RpcRespWifiStart), 1, - rpc__resp__wifi_set_config__field_descriptors, - rpc__resp__wifi_set_config__field_indices_by_name, - 1, rpc__resp__wifi_set_config__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_config__init, + rpc__resp__wifi_start__field_descriptors, + rpc__resp__wifi_start__field_indices_by_name, + 1, rpc__resp__wifi_start__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_start__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_get_config__field_descriptors[1] = +#define rpc__req__wifi_stop__field_descriptors NULL +#define rpc__req__wifi_stop__field_indices_by_name NULL +#define rpc__req__wifi_stop__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_stop__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStop", + "RpcReqWifiStop", + "RpcReqWifiStop", + "", + sizeof(RpcReqWifiStop), + 0, + rpc__req__wifi_stop__field_descriptors, + rpc__req__wifi_stop__field_indices_by_name, + 0, rpc__req__wifi_stop__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_stop__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_stop__field_descriptors[1] = { { - "iface", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiGetConfig, iface), + offsetof(RpcRespWifiStop, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_get_config__field_indices_by_name[] = { - 0, /* field[0] = iface */ +static const unsigned rpc__resp__wifi_stop__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_get_config__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_stop__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_get_config__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_stop__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetConfig", - "RpcReqWifiGetConfig", - "RpcReqWifiGetConfig", + "Rpc_Resp_WifiStop", + "RpcRespWifiStop", + "RpcRespWifiStop", "", - sizeof(RpcReqWifiGetConfig), + sizeof(RpcRespWifiStop), 1, - rpc__req__wifi_get_config__field_descriptors, - rpc__req__wifi_get_config__field_indices_by_name, - 1, rpc__req__wifi_get_config__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_config__init, + rpc__resp__wifi_stop__field_descriptors, + rpc__resp__wifi_stop__field_indices_by_name, + 1, rpc__resp__wifi_stop__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_stop__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_config__field_descriptors[3] = +static const ProtobufCFieldDescriptor rpc__req__wifi_scan_start__field_descriptors[3] = { { - "resp", + "config", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetConfig, resp), - NULL, + offsetof(RpcReqWifiScanStart, config), + &wifi_scan_config__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "iface", + "block", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetConfig, iface), + offsetof(RpcReqWifiScanStart, block), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "cfg", + "config_set", 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetConfig, cfg), - &wifi_config__descriptor, + offsetof(RpcReqWifiScanStart, config_set), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_config__field_indices_by_name[] = { - 2, /* field[2] = cfg */ - 1, /* field[1] = iface */ - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_scan_start__field_indices_by_name[] = { + 1, /* field[1] = block */ + 0, /* field[0] = config */ + 2, /* field[2] = config_set */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_config__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_scan_start__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_config__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_scan_start__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetConfig", - "RpcRespWifiGetConfig", - "RpcRespWifiGetConfig", + "Rpc_Req_WifiScanStart", + "RpcReqWifiScanStart", + "RpcReqWifiScanStart", "", - sizeof(RpcRespWifiGetConfig), + sizeof(RpcReqWifiScanStart), 3, - rpc__resp__wifi_get_config__field_descriptors, - rpc__resp__wifi_get_config__field_indices_by_name, - 1, rpc__resp__wifi_get_config__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_config__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_connect__field_descriptors NULL -#define rpc__req__wifi_connect__field_indices_by_name NULL -#define rpc__req__wifi_connect__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_connect__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiConnect", - "RpcReqWifiConnect", - "RpcReqWifiConnect", - "", - sizeof(RpcReqWifiConnect), - 0, - rpc__req__wifi_connect__field_descriptors, - rpc__req__wifi_connect__field_indices_by_name, - 0, rpc__req__wifi_connect__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_connect__init, + rpc__req__wifi_scan_start__field_descriptors, + rpc__req__wifi_scan_start__field_indices_by_name, + 1, rpc__req__wifi_scan_start__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_scan_start__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_connect__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_start__field_descriptors[1] = { { "resp", @@ -16248,55 +17238,55 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_connect__field_descriptors PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiConnect, resp), + offsetof(RpcRespWifiScanStart, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_connect__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_scan_start__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_connect__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_scan_start__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_connect__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_scan_start__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiConnect", - "RpcRespWifiConnect", - "RpcRespWifiConnect", + "Rpc_Resp_WifiScanStart", + "RpcRespWifiScanStart", + "RpcRespWifiScanStart", "", - sizeof(RpcRespWifiConnect), + sizeof(RpcRespWifiScanStart), 1, - rpc__resp__wifi_connect__field_descriptors, - rpc__resp__wifi_connect__field_indices_by_name, - 1, rpc__resp__wifi_connect__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_connect__init, + rpc__resp__wifi_scan_start__field_descriptors, + rpc__resp__wifi_scan_start__field_indices_by_name, + 1, rpc__resp__wifi_scan_start__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_scan_start__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_disconnect__field_descriptors NULL -#define rpc__req__wifi_disconnect__field_indices_by_name NULL -#define rpc__req__wifi_disconnect__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_disconnect__descriptor = +#define rpc__req__wifi_scan_stop__field_descriptors NULL +#define rpc__req__wifi_scan_stop__field_indices_by_name NULL +#define rpc__req__wifi_scan_stop__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_scan_stop__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiDisconnect", - "RpcReqWifiDisconnect", - "RpcReqWifiDisconnect", + "Rpc_Req_WifiScanStop", + "RpcReqWifiScanStop", + "RpcReqWifiScanStop", "", - sizeof(RpcReqWifiDisconnect), + sizeof(RpcReqWifiScanStop), 0, - rpc__req__wifi_disconnect__field_descriptors, - rpc__req__wifi_disconnect__field_indices_by_name, - 0, rpc__req__wifi_disconnect__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_disconnect__init, + rpc__req__wifi_scan_stop__field_descriptors, + rpc__req__wifi_scan_stop__field_indices_by_name, + 0, rpc__req__wifi_scan_stop__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_scan_stop__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_disconnect__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_stop__field_descriptors[1] = { { "resp", @@ -16304,55 +17294,55 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_disconnect__field_descript PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiDisconnect, resp), + offsetof(RpcRespWifiScanStop, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_disconnect__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_scan_stop__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_disconnect__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_scan_stop__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_disconnect__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_scan_stop__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiDisconnect", - "RpcRespWifiDisconnect", - "RpcRespWifiDisconnect", + "Rpc_Resp_WifiScanStop", + "RpcRespWifiScanStop", + "RpcRespWifiScanStop", "", - sizeof(RpcRespWifiDisconnect), + sizeof(RpcRespWifiScanStop), 1, - rpc__resp__wifi_disconnect__field_descriptors, - rpc__resp__wifi_disconnect__field_indices_by_name, - 1, rpc__resp__wifi_disconnect__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_disconnect__init, + rpc__resp__wifi_scan_stop__field_descriptors, + rpc__resp__wifi_scan_stop__field_indices_by_name, + 1, rpc__resp__wifi_scan_stop__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_scan_stop__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_start__field_descriptors NULL -#define rpc__req__wifi_start__field_indices_by_name NULL -#define rpc__req__wifi_start__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_start__descriptor = +#define rpc__req__wifi_scan_get_ap_num__field_descriptors NULL +#define rpc__req__wifi_scan_get_ap_num__field_indices_by_name NULL +#define rpc__req__wifi_scan_get_ap_num__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_scan_get_ap_num__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStart", - "RpcReqWifiStart", - "RpcReqWifiStart", + "Rpc_Req_WifiScanGetApNum", + "RpcReqWifiScanGetApNum", + "RpcReqWifiScanGetApNum", "", - sizeof(RpcReqWifiStart), + sizeof(RpcReqWifiScanGetApNum), 0, - rpc__req__wifi_start__field_descriptors, - rpc__req__wifi_start__field_indices_by_name, - 0, rpc__req__wifi_start__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_start__init, + rpc__req__wifi_scan_get_ap_num__field_descriptors, + rpc__req__wifi_scan_get_ap_num__field_indices_by_name, + 0, rpc__req__wifi_scan_get_ap_num__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_scan_get_ap_num__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_start__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_num__field_descriptors[2] = { { "resp", @@ -16360,157 +17350,170 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_start__field_descriptors[1 PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStart, resp), + offsetof(RpcRespWifiScanGetApNum, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "number", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiScanGetApNum, number), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_start__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_scan_get_ap_num__field_indices_by_name[] = { + 1, /* field[1] = number */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_start__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_scan_get_ap_num__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_start__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStart", - "RpcRespWifiStart", - "RpcRespWifiStart", - "", - sizeof(RpcRespWifiStart), - 1, - rpc__resp__wifi_start__field_descriptors, - rpc__resp__wifi_start__field_indices_by_name, - 1, rpc__resp__wifi_start__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_start__init, - NULL,NULL,NULL /* reserved[123] */ + { 0, 2 } }; -#define rpc__req__wifi_stop__field_descriptors NULL -#define rpc__req__wifi_stop__field_indices_by_name NULL -#define rpc__req__wifi_stop__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_stop__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_scan_get_ap_num__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStop", - "RpcReqWifiStop", - "RpcReqWifiStop", + "Rpc_Resp_WifiScanGetApNum", + "RpcRespWifiScanGetApNum", + "RpcRespWifiScanGetApNum", "", - sizeof(RpcReqWifiStop), - 0, - rpc__req__wifi_stop__field_descriptors, - rpc__req__wifi_stop__field_indices_by_name, - 0, rpc__req__wifi_stop__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_stop__init, + sizeof(RpcRespWifiScanGetApNum), + 2, + rpc__resp__wifi_scan_get_ap_num__field_descriptors, + rpc__resp__wifi_scan_get_ap_num__field_indices_by_name, + 1, rpc__resp__wifi_scan_get_ap_num__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_scan_get_ap_num__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_stop__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_scan_get_ap_records__field_descriptors[1] = { { - "resp", + "number", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStop, resp), + offsetof(RpcReqWifiScanGetApRecords, number), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_stop__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_scan_get_ap_records__field_indices_by_name[] = { + 0, /* field[0] = number */ }; -static const ProtobufCIntRange rpc__resp__wifi_stop__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_scan_get_ap_records__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_stop__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_scan_get_ap_records__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStop", - "RpcRespWifiStop", - "RpcRespWifiStop", + "Rpc_Req_WifiScanGetApRecords", + "RpcReqWifiScanGetApRecords", + "RpcReqWifiScanGetApRecords", "", - sizeof(RpcRespWifiStop), - 1, - rpc__resp__wifi_stop__field_descriptors, - rpc__resp__wifi_stop__field_indices_by_name, - 1, rpc__resp__wifi_stop__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_stop__init, + sizeof(RpcReqWifiScanGetApRecords), + 1, + rpc__req__wifi_scan_get_ap_records__field_descriptors, + rpc__req__wifi_scan_get_ap_records__field_indices_by_name, + 1, rpc__req__wifi_scan_get_ap_records__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_scan_get_ap_records__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_scan_start__field_descriptors[3] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_records__field_descriptors[3] = { { - "config", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiScanStart, config), - &wifi_scan_config__descriptor, + offsetof(RpcRespWifiScanGetApRecords, resp), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "block", + "number", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiScanStart, block), + offsetof(RpcRespWifiScanGetApRecords, number), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "config_set", + "ap_records", 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcReqWifiScanStart, config_set), - NULL, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(RpcRespWifiScanGetApRecords, n_ap_records), + offsetof(RpcRespWifiScanGetApRecords, ap_records), + &wifi_ap_record__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_scan_start__field_indices_by_name[] = { - 1, /* field[1] = block */ - 0, /* field[0] = config */ - 2, /* field[2] = config_set */ +static const unsigned rpc__resp__wifi_scan_get_ap_records__field_indices_by_name[] = { + 2, /* field[2] = ap_records */ + 1, /* field[1] = number */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_scan_start__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_scan_get_ap_records__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_scan_start__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_scan_get_ap_records__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiScanStart", - "RpcReqWifiScanStart", - "RpcReqWifiScanStart", + "Rpc_Resp_WifiScanGetApRecords", + "RpcRespWifiScanGetApRecords", + "RpcRespWifiScanGetApRecords", "", - sizeof(RpcReqWifiScanStart), + sizeof(RpcRespWifiScanGetApRecords), 3, - rpc__req__wifi_scan_start__field_descriptors, - rpc__req__wifi_scan_start__field_indices_by_name, - 1, rpc__req__wifi_scan_start__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_scan_start__init, + rpc__resp__wifi_scan_get_ap_records__field_descriptors, + rpc__resp__wifi_scan_get_ap_records__field_indices_by_name, + 1, rpc__resp__wifi_scan_get_ap_records__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_scan_get_ap_records__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_start__field_descriptors[1] = +#define rpc__req__wifi_scan_get_ap_record__field_descriptors NULL +#define rpc__req__wifi_scan_get_ap_record__field_indices_by_name NULL +#define rpc__req__wifi_scan_get_ap_record__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_scan_get_ap_record__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiScanGetApRecord", + "RpcReqWifiScanGetApRecord", + "RpcReqWifiScanGetApRecord", + "", + sizeof(RpcReqWifiScanGetApRecord), + 0, + rpc__req__wifi_scan_get_ap_record__field_descriptors, + rpc__req__wifi_scan_get_ap_record__field_indices_by_name, + 0, rpc__req__wifi_scan_get_ap_record__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_scan_get_ap_record__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_record__field_descriptors[2] = { { "resp", @@ -16518,55 +17521,68 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_start__field_descript PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanStart, resp), + offsetof(RpcRespWifiScanGetApRecord, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "ap_record", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiScanGetApRecord, ap_record), + &wifi_ap_record__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, }; -static const unsigned rpc__resp__wifi_scan_start__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_scan_get_ap_record__field_indices_by_name[] = { + 1, /* field[1] = ap_record */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_scan_start__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_scan_get_ap_record__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_scan_start__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_scan_get_ap_record__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiScanStart", - "RpcRespWifiScanStart", - "RpcRespWifiScanStart", + "Rpc_Resp_WifiScanGetApRecord", + "RpcRespWifiScanGetApRecord", + "RpcRespWifiScanGetApRecord", "", - sizeof(RpcRespWifiScanStart), - 1, - rpc__resp__wifi_scan_start__field_descriptors, - rpc__resp__wifi_scan_start__field_indices_by_name, - 1, rpc__resp__wifi_scan_start__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_scan_start__init, + sizeof(RpcRespWifiScanGetApRecord), + 2, + rpc__resp__wifi_scan_get_ap_record__field_descriptors, + rpc__resp__wifi_scan_get_ap_record__field_indices_by_name, + 1, rpc__resp__wifi_scan_get_ap_record__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_scan_get_ap_record__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_scan_stop__field_descriptors NULL -#define rpc__req__wifi_scan_stop__field_indices_by_name NULL -#define rpc__req__wifi_scan_stop__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_scan_stop__descriptor = +#define rpc__req__wifi_clear_ap_list__field_descriptors NULL +#define rpc__req__wifi_clear_ap_list__field_indices_by_name NULL +#define rpc__req__wifi_clear_ap_list__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_clear_ap_list__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiScanStop", - "RpcReqWifiScanStop", - "RpcReqWifiScanStop", + "Rpc_Req_WifiClearApList", + "RpcReqWifiClearApList", + "RpcReqWifiClearApList", "", - sizeof(RpcReqWifiScanStop), + sizeof(RpcReqWifiClearApList), 0, - rpc__req__wifi_scan_stop__field_descriptors, - rpc__req__wifi_scan_stop__field_indices_by_name, - 0, rpc__req__wifi_scan_stop__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_scan_stop__init, + rpc__req__wifi_clear_ap_list__field_descriptors, + rpc__req__wifi_clear_ap_list__field_indices_by_name, + 0, rpc__req__wifi_clear_ap_list__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_clear_ap_list__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_stop__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_clear_ap_list__field_descriptors[1] = { { "resp", @@ -16574,55 +17590,55 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_stop__field_descripto PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanStop, resp), + offsetof(RpcRespWifiClearApList, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_scan_stop__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_clear_ap_list__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_scan_stop__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_clear_ap_list__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_scan_stop__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_clear_ap_list__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiScanStop", - "RpcRespWifiScanStop", - "RpcRespWifiScanStop", + "Rpc_Resp_WifiClearApList", + "RpcRespWifiClearApList", + "RpcRespWifiClearApList", "", - sizeof(RpcRespWifiScanStop), + sizeof(RpcRespWifiClearApList), 1, - rpc__resp__wifi_scan_stop__field_descriptors, - rpc__resp__wifi_scan_stop__field_indices_by_name, - 1, rpc__resp__wifi_scan_stop__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_scan_stop__init, + rpc__resp__wifi_clear_ap_list__field_descriptors, + rpc__resp__wifi_clear_ap_list__field_indices_by_name, + 1, rpc__resp__wifi_clear_ap_list__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_clear_ap_list__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_scan_get_ap_num__field_descriptors NULL -#define rpc__req__wifi_scan_get_ap_num__field_indices_by_name NULL -#define rpc__req__wifi_scan_get_ap_num__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_scan_get_ap_num__descriptor = +#define rpc__req__wifi_restore__field_descriptors NULL +#define rpc__req__wifi_restore__field_indices_by_name NULL +#define rpc__req__wifi_restore__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_restore__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiScanGetApNum", - "RpcReqWifiScanGetApNum", - "RpcReqWifiScanGetApNum", + "Rpc_Req_WifiRestore", + "RpcReqWifiRestore", + "RpcReqWifiRestore", "", - sizeof(RpcReqWifiScanGetApNum), + sizeof(RpcReqWifiRestore), 0, - rpc__req__wifi_scan_get_ap_num__field_descriptors, - rpc__req__wifi_scan_get_ap_num__field_indices_by_name, - 0, rpc__req__wifi_scan_get_ap_num__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_scan_get_ap_num__init, + rpc__req__wifi_restore__field_descriptors, + rpc__req__wifi_restore__field_indices_by_name, + 0, rpc__req__wifi_restore__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_restore__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_num__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_restore__field_descriptors[1] = { { "resp", @@ -16630,88 +17646,131 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_num__field_des PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanGetApNum, resp), + offsetof(RpcRespWifiRestore, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__wifi_restore__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__wifi_restore__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__wifi_restore__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_WifiRestore", + "RpcRespWifiRestore", + "RpcRespWifiRestore", + "", + sizeof(RpcRespWifiRestore), + 1, + rpc__resp__wifi_restore__field_descriptors, + rpc__resp__wifi_restore__field_indices_by_name, + 1, rpc__resp__wifi_restore__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_restore__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define rpc__req__wifi_clear_fast_connect__field_descriptors NULL +#define rpc__req__wifi_clear_fast_connect__field_indices_by_name NULL +#define rpc__req__wifi_clear_fast_connect__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_clear_fast_connect__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiClearFastConnect", + "RpcReqWifiClearFastConnect", + "RpcReqWifiClearFastConnect", + "", + sizeof(RpcReqWifiClearFastConnect), + 0, + rpc__req__wifi_clear_fast_connect__field_descriptors, + rpc__req__wifi_clear_fast_connect__field_indices_by_name, + 0, rpc__req__wifi_clear_fast_connect__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_clear_fast_connect__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_clear_fast_connect__field_descriptors[1] = +{ { - "number", - 2, + "resp", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanGetApNum, number), + offsetof(RpcRespWifiClearFastConnect, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_scan_get_ap_num__field_indices_by_name[] = { - 1, /* field[1] = number */ +static const unsigned rpc__resp__wifi_clear_fast_connect__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_scan_get_ap_num__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_clear_fast_connect__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_scan_get_ap_num__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_clear_fast_connect__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiScanGetApNum", - "RpcRespWifiScanGetApNum", - "RpcRespWifiScanGetApNum", + "Rpc_Resp_WifiClearFastConnect", + "RpcRespWifiClearFastConnect", + "RpcRespWifiClearFastConnect", "", - sizeof(RpcRespWifiScanGetApNum), - 2, - rpc__resp__wifi_scan_get_ap_num__field_descriptors, - rpc__resp__wifi_scan_get_ap_num__field_indices_by_name, - 1, rpc__resp__wifi_scan_get_ap_num__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_scan_get_ap_num__init, + sizeof(RpcRespWifiClearFastConnect), + 1, + rpc__resp__wifi_clear_fast_connect__field_descriptors, + rpc__resp__wifi_clear_fast_connect__field_indices_by_name, + 1, rpc__resp__wifi_clear_fast_connect__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_clear_fast_connect__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_scan_get_ap_records__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_deauth_sta__field_descriptors[1] = { { - "number", + "aid", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiScanGetApRecords, number), + offsetof(RpcReqWifiDeauthSta, aid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_scan_get_ap_records__field_indices_by_name[] = { - 0, /* field[0] = number */ +static const unsigned rpc__req__wifi_deauth_sta__field_indices_by_name[] = { + 0, /* field[0] = aid */ }; -static const ProtobufCIntRange rpc__req__wifi_scan_get_ap_records__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_deauth_sta__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_scan_get_ap_records__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_deauth_sta__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiScanGetApRecords", - "RpcReqWifiScanGetApRecords", - "RpcReqWifiScanGetApRecords", + "Rpc_Req_WifiDeauthSta", + "RpcReqWifiDeauthSta", + "RpcReqWifiDeauthSta", "", - sizeof(RpcReqWifiScanGetApRecords), + sizeof(RpcReqWifiDeauthSta), 1, - rpc__req__wifi_scan_get_ap_records__field_descriptors, - rpc__req__wifi_scan_get_ap_records__field_indices_by_name, - 1, rpc__req__wifi_scan_get_ap_records__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_scan_get_ap_records__init, + rpc__req__wifi_deauth_sta__field_descriptors, + rpc__req__wifi_deauth_sta__field_indices_by_name, + 1, rpc__req__wifi_deauth_sta__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_deauth_sta__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_records__field_descriptors[3] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_deauth_sta__field_descriptors[2] = { { "resp", @@ -16719,81 +17778,68 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_records__field PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanGetApRecords, resp), + offsetof(RpcRespWifiDeauthSta, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "number", + "aid", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanGetApRecords, number), - NULL, + offsetof(RpcRespWifiDeauthSta, aid), NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "ap_records", - 3, - PROTOBUF_C_LABEL_REPEATED, - PROTOBUF_C_TYPE_MESSAGE, - offsetof(RpcRespWifiScanGetApRecords, n_ap_records), - offsetof(RpcRespWifiScanGetApRecords, ap_records), - &wifi_ap_record__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_scan_get_ap_records__field_indices_by_name[] = { - 2, /* field[2] = ap_records */ - 1, /* field[1] = number */ +static const unsigned rpc__resp__wifi_deauth_sta__field_indices_by_name[] = { + 1, /* field[1] = aid */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_scan_get_ap_records__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_deauth_sta__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 3 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_scan_get_ap_records__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_deauth_sta__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiScanGetApRecords", - "RpcRespWifiScanGetApRecords", - "RpcRespWifiScanGetApRecords", + "Rpc_Resp_WifiDeauthSta", + "RpcRespWifiDeauthSta", + "RpcRespWifiDeauthSta", "", - sizeof(RpcRespWifiScanGetApRecords), - 3, - rpc__resp__wifi_scan_get_ap_records__field_descriptors, - rpc__resp__wifi_scan_get_ap_records__field_indices_by_name, - 1, rpc__resp__wifi_scan_get_ap_records__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_scan_get_ap_records__init, + sizeof(RpcRespWifiDeauthSta), + 2, + rpc__resp__wifi_deauth_sta__field_descriptors, + rpc__resp__wifi_deauth_sta__field_indices_by_name, + 1, rpc__resp__wifi_deauth_sta__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_deauth_sta__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_scan_get_ap_record__field_descriptors NULL -#define rpc__req__wifi_scan_get_ap_record__field_indices_by_name NULL -#define rpc__req__wifi_scan_get_ap_record__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_scan_get_ap_record__descriptor = +#define rpc__req__wifi_sta_get_ap_info__field_descriptors NULL +#define rpc__req__wifi_sta_get_ap_info__field_indices_by_name NULL +#define rpc__req__wifi_sta_get_ap_info__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_ap_info__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiScanGetApRecord", - "RpcReqWifiScanGetApRecord", - "RpcReqWifiScanGetApRecord", + "Rpc_Req_WifiStaGetApInfo", + "RpcReqWifiStaGetApInfo", + "RpcReqWifiStaGetApInfo", "", - sizeof(RpcReqWifiScanGetApRecord), + sizeof(RpcReqWifiStaGetApInfo), 0, - rpc__req__wifi_scan_get_ap_record__field_descriptors, - rpc__req__wifi_scan_get_ap_record__field_indices_by_name, - 0, rpc__req__wifi_scan_get_ap_record__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_scan_get_ap_record__init, + rpc__req__wifi_sta_get_ap_info__field_descriptors, + rpc__req__wifi_sta_get_ap_info__field_indices_by_name, + 0, rpc__req__wifi_sta_get_ap_info__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_get_ap_info__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_record__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_ap_info__field_descriptors[2] = { { "resp", @@ -16801,7 +17847,7 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_record__field_ PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanGetApRecord, resp), + offsetof(RpcRespWifiStaGetApInfo, resp), NULL, NULL, 0, /* flags */ @@ -16813,56 +17859,89 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_scan_get_ap_record__field_ PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcRespWifiScanGetApRecord, ap_record), + offsetof(RpcRespWifiStaGetApInfo, ap_record), &wifi_ap_record__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_scan_get_ap_record__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_sta_get_ap_info__field_indices_by_name[] = { 1, /* field[1] = ap_record */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_scan_get_ap_record__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_get_ap_info__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_scan_get_ap_record__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_ap_info__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiScanGetApRecord", - "RpcRespWifiScanGetApRecord", - "RpcRespWifiScanGetApRecord", + "Rpc_Resp_WifiStaGetApInfo", + "RpcRespWifiStaGetApInfo", + "RpcRespWifiStaGetApInfo", "", - sizeof(RpcRespWifiScanGetApRecord), + sizeof(RpcRespWifiStaGetApInfo), 2, - rpc__resp__wifi_scan_get_ap_record__field_descriptors, - rpc__resp__wifi_scan_get_ap_record__field_indices_by_name, - 1, rpc__resp__wifi_scan_get_ap_record__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_scan_get_ap_record__init, + rpc__resp__wifi_sta_get_ap_info__field_descriptors, + rpc__resp__wifi_sta_get_ap_info__field_indices_by_name, + 1, rpc__resp__wifi_sta_get_ap_info__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_get_ap_info__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_clear_ap_list__field_descriptors NULL -#define rpc__req__wifi_clear_ap_list__field_indices_by_name NULL -#define rpc__req__wifi_clear_ap_list__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_clear_ap_list__descriptor = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_protocol__field_descriptors[2] = +{ + { + "ifx", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcReqWifiSetProtocol, ifx), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "protocol_bitmap", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcReqWifiSetProtocol, protocol_bitmap), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__req__wifi_set_protocol__field_indices_by_name[] = { + 0, /* field[0] = ifx */ + 1, /* field[1] = protocol_bitmap */ +}; +static const ProtobufCIntRange rpc__req__wifi_set_protocol__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor rpc__req__wifi_set_protocol__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiClearApList", - "RpcReqWifiClearApList", - "RpcReqWifiClearApList", + "Rpc_Req_WifiSetProtocol", + "RpcReqWifiSetProtocol", + "RpcReqWifiSetProtocol", "", - sizeof(RpcReqWifiClearApList), - 0, - rpc__req__wifi_clear_ap_list__field_descriptors, - rpc__req__wifi_clear_ap_list__field_indices_by_name, - 0, rpc__req__wifi_clear_ap_list__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_clear_ap_list__init, + sizeof(RpcReqWifiSetProtocol), + 2, + rpc__req__wifi_set_protocol__field_descriptors, + rpc__req__wifi_set_protocol__field_indices_by_name, + 1, rpc__req__wifi_set_protocol__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_protocol__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_clear_ap_list__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_protocol__field_descriptors[1] = { { "resp", @@ -16870,111 +17949,75 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_clear_ap_list__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiClearApList, resp), + offsetof(RpcRespWifiSetProtocol, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_clear_ap_list__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_set_protocol__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_clear_ap_list__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_protocol__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_clear_ap_list__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_protocol__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiClearApList", - "RpcRespWifiClearApList", - "RpcRespWifiClearApList", + "Rpc_Resp_WifiSetProtocol", + "RpcRespWifiSetProtocol", + "RpcRespWifiSetProtocol", "", - sizeof(RpcRespWifiClearApList), + sizeof(RpcRespWifiSetProtocol), 1, - rpc__resp__wifi_clear_ap_list__field_descriptors, - rpc__resp__wifi_clear_ap_list__field_indices_by_name, - 1, rpc__resp__wifi_clear_ap_list__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_clear_ap_list__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_restore__field_descriptors NULL -#define rpc__req__wifi_restore__field_indices_by_name NULL -#define rpc__req__wifi_restore__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_restore__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiRestore", - "RpcReqWifiRestore", - "RpcReqWifiRestore", - "", - sizeof(RpcReqWifiRestore), - 0, - rpc__req__wifi_restore__field_descriptors, - rpc__req__wifi_restore__field_indices_by_name, - 0, rpc__req__wifi_restore__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_restore__init, + rpc__resp__wifi_set_protocol__field_descriptors, + rpc__resp__wifi_set_protocol__field_indices_by_name, + 1, rpc__resp__wifi_set_protocol__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_protocol__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_restore__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_get_protocol__field_descriptors[1] = { { - "resp", + "ifx", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiRestore, resp), + offsetof(RpcReqWifiGetProtocol, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_restore__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_get_protocol__field_indices_by_name[] = { + 0, /* field[0] = ifx */ }; -static const ProtobufCIntRange rpc__resp__wifi_restore__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_get_protocol__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_restore__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_get_protocol__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiRestore", - "RpcRespWifiRestore", - "RpcRespWifiRestore", + "Rpc_Req_WifiGetProtocol", + "RpcReqWifiGetProtocol", + "RpcReqWifiGetProtocol", "", - sizeof(RpcRespWifiRestore), + sizeof(RpcReqWifiGetProtocol), 1, - rpc__resp__wifi_restore__field_descriptors, - rpc__resp__wifi_restore__field_indices_by_name, - 1, rpc__resp__wifi_restore__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_restore__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_clear_fast_connect__field_descriptors NULL -#define rpc__req__wifi_clear_fast_connect__field_indices_by_name NULL -#define rpc__req__wifi_clear_fast_connect__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_clear_fast_connect__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiClearFastConnect", - "RpcReqWifiClearFastConnect", - "RpcReqWifiClearFastConnect", - "", - sizeof(RpcReqWifiClearFastConnect), - 0, - rpc__req__wifi_clear_fast_connect__field_descriptors, - rpc__req__wifi_clear_fast_connect__field_indices_by_name, - 0, rpc__req__wifi_clear_fast_connect__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_clear_fast_connect__init, + rpc__req__wifi_get_protocol__field_descriptors, + rpc__req__wifi_get_protocol__field_indices_by_name, + 1, rpc__req__wifi_get_protocol__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_protocol__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_clear_fast_connect__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_protocol__field_descriptors[2] = { { "resp", @@ -16982,75 +18025,101 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_clear_fast_connect__field_ PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiClearFastConnect, resp), + offsetof(RpcRespWifiGetProtocol, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "protocol_bitmap", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiGetProtocol, protocol_bitmap), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_clear_fast_connect__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_get_protocol__field_indices_by_name[] = { + 1, /* field[1] = protocol_bitmap */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_clear_fast_connect__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_protocol__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_clear_fast_connect__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_protocol__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiClearFastConnect", - "RpcRespWifiClearFastConnect", - "RpcRespWifiClearFastConnect", + "Rpc_Resp_WifiGetProtocol", + "RpcRespWifiGetProtocol", + "RpcRespWifiGetProtocol", "", - sizeof(RpcRespWifiClearFastConnect), - 1, - rpc__resp__wifi_clear_fast_connect__field_descriptors, - rpc__resp__wifi_clear_fast_connect__field_indices_by_name, - 1, rpc__resp__wifi_clear_fast_connect__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_clear_fast_connect__init, + sizeof(RpcRespWifiGetProtocol), + 2, + rpc__resp__wifi_get_protocol__field_descriptors, + rpc__resp__wifi_get_protocol__field_indices_by_name, + 1, rpc__resp__wifi_get_protocol__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_protocol__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_deauth_sta__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_bandwidth__field_descriptors[2] = { { - "aid", + "ifx", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiDeauthSta, aid), + offsetof(RpcReqWifiSetBandwidth, ifx), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "bw", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcReqWifiSetBandwidth, bw), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_deauth_sta__field_indices_by_name[] = { - 0, /* field[0] = aid */ +static const unsigned rpc__req__wifi_set_bandwidth__field_indices_by_name[] = { + 1, /* field[1] = bw */ + 0, /* field[0] = ifx */ }; -static const ProtobufCIntRange rpc__req__wifi_deauth_sta__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_bandwidth__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_deauth_sta__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_bandwidth__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiDeauthSta", - "RpcReqWifiDeauthSta", - "RpcReqWifiDeauthSta", + "Rpc_Req_WifiSetBandwidth", + "RpcReqWifiSetBandwidth", + "RpcReqWifiSetBandwidth", "", - sizeof(RpcReqWifiDeauthSta), - 1, - rpc__req__wifi_deauth_sta__field_descriptors, - rpc__req__wifi_deauth_sta__field_indices_by_name, - 1, rpc__req__wifi_deauth_sta__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_deauth_sta__init, + sizeof(RpcReqWifiSetBandwidth), + 2, + rpc__req__wifi_set_bandwidth__field_descriptors, + rpc__req__wifi_set_bandwidth__field_indices_by_name, + 1, rpc__req__wifi_set_bandwidth__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_bandwidth__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_deauth_sta__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_bandwidth__field_descriptors[1] = { { "resp", @@ -17058,68 +18127,75 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_deauth_sta__field_descript PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiDeauthSta, resp), + offsetof(RpcRespWifiSetBandwidth, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__wifi_set_bandwidth__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__wifi_set_bandwidth__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__wifi_set_bandwidth__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_WifiSetBandwidth", + "RpcRespWifiSetBandwidth", + "RpcRespWifiSetBandwidth", + "", + sizeof(RpcRespWifiSetBandwidth), + 1, + rpc__resp__wifi_set_bandwidth__field_descriptors, + rpc__resp__wifi_set_bandwidth__field_indices_by_name, + 1, rpc__resp__wifi_set_bandwidth__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_bandwidth__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__wifi_get_bandwidth__field_descriptors[1] = +{ { - "aid", - 2, + "ifx", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiDeauthSta, aid), + offsetof(RpcReqWifiGetBandwidth, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_deauth_sta__field_indices_by_name[] = { - 1, /* field[1] = aid */ - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_get_bandwidth__field_indices_by_name[] = { + 0, /* field[0] = ifx */ }; -static const ProtobufCIntRange rpc__resp__wifi_deauth_sta__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_get_bandwidth__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_deauth_sta__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiDeauthSta", - "RpcRespWifiDeauthSta", - "RpcRespWifiDeauthSta", - "", - sizeof(RpcRespWifiDeauthSta), - 2, - rpc__resp__wifi_deauth_sta__field_descriptors, - rpc__resp__wifi_deauth_sta__field_indices_by_name, - 1, rpc__resp__wifi_deauth_sta__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_deauth_sta__init, - NULL,NULL,NULL /* reserved[123] */ + { 0, 1 } }; -#define rpc__req__wifi_sta_get_ap_info__field_descriptors NULL -#define rpc__req__wifi_sta_get_ap_info__field_indices_by_name NULL -#define rpc__req__wifi_sta_get_ap_info__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_ap_info__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_get_bandwidth__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaGetApInfo", - "RpcReqWifiStaGetApInfo", - "RpcReqWifiStaGetApInfo", + "Rpc_Req_WifiGetBandwidth", + "RpcReqWifiGetBandwidth", + "RpcReqWifiGetBandwidth", "", - sizeof(RpcReqWifiStaGetApInfo), - 0, - rpc__req__wifi_sta_get_ap_info__field_descriptors, - rpc__req__wifi_sta_get_ap_info__field_indices_by_name, - 0, rpc__req__wifi_sta_get_ap_info__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_get_ap_info__init, + sizeof(RpcReqWifiGetBandwidth), + 1, + rpc__req__wifi_get_bandwidth__field_descriptors, + rpc__req__wifi_get_bandwidth__field_indices_by_name, + 1, rpc__req__wifi_get_bandwidth__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_bandwidth__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_ap_info__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_bandwidth__field_descriptors[2] = { { "resp", @@ -17127,101 +18203,101 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_ap_info__field_des PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetApInfo, resp), + offsetof(RpcRespWifiGetBandwidth, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ap_record", + "bw", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetApInfo, ap_record), - &wifi_ap_record__descriptor, + offsetof(RpcRespWifiGetBandwidth, bw), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_get_ap_info__field_indices_by_name[] = { - 1, /* field[1] = ap_record */ +static const unsigned rpc__resp__wifi_get_bandwidth__field_indices_by_name[] = { + 1, /* field[1] = bw */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_get_ap_info__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_bandwidth__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_ap_info__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_bandwidth__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaGetApInfo", - "RpcRespWifiStaGetApInfo", - "RpcRespWifiStaGetApInfo", + "Rpc_Resp_WifiGetBandwidth", + "RpcRespWifiGetBandwidth", + "RpcRespWifiGetBandwidth", "", - sizeof(RpcRespWifiStaGetApInfo), + sizeof(RpcRespWifiGetBandwidth), 2, - rpc__resp__wifi_sta_get_ap_info__field_descriptors, - rpc__resp__wifi_sta_get_ap_info__field_indices_by_name, - 1, rpc__resp__wifi_sta_get_ap_info__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_get_ap_info__init, + rpc__resp__wifi_get_bandwidth__field_descriptors, + rpc__resp__wifi_get_bandwidth__field_indices_by_name, + 1, rpc__resp__wifi_get_bandwidth__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_bandwidth__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_protocol__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_channel__field_descriptors[2] = { { - "ifx", + "primary", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetProtocol, ifx), + offsetof(RpcReqWifiSetChannel, primary), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "protocol_bitmap", + "second", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetProtocol, protocol_bitmap), + offsetof(RpcReqWifiSetChannel, second), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_protocol__field_indices_by_name[] = { - 0, /* field[0] = ifx */ - 1, /* field[1] = protocol_bitmap */ +static const unsigned rpc__req__wifi_set_channel__field_indices_by_name[] = { + 0, /* field[0] = primary */ + 1, /* field[1] = second */ }; -static const ProtobufCIntRange rpc__req__wifi_set_protocol__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_channel__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_protocol__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_channel__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetProtocol", - "RpcReqWifiSetProtocol", - "RpcReqWifiSetProtocol", + "Rpc_Req_WifiSetChannel", + "RpcReqWifiSetChannel", + "RpcReqWifiSetChannel", "", - sizeof(RpcReqWifiSetProtocol), + sizeof(RpcReqWifiSetChannel), 2, - rpc__req__wifi_set_protocol__field_descriptors, - rpc__req__wifi_set_protocol__field_indices_by_name, - 1, rpc__req__wifi_set_protocol__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_protocol__init, + rpc__req__wifi_set_channel__field_descriptors, + rpc__req__wifi_set_channel__field_indices_by_name, + 1, rpc__req__wifi_set_channel__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_channel__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_protocol__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_channel__field_descriptors[1] = { { "resp", @@ -17229,253 +18305,302 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_protocol__field_descri PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetProtocol, resp), + offsetof(RpcRespWifiSetChannel, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_protocol__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_set_channel__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_protocol__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_channel__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_protocol__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_channel__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetProtocol", - "RpcRespWifiSetProtocol", - "RpcRespWifiSetProtocol", + "Rpc_Resp_WifiSetChannel", + "RpcRespWifiSetChannel", + "RpcRespWifiSetChannel", "", - sizeof(RpcRespWifiSetProtocol), + sizeof(RpcRespWifiSetChannel), 1, - rpc__resp__wifi_set_protocol__field_descriptors, - rpc__resp__wifi_set_protocol__field_indices_by_name, - 1, rpc__resp__wifi_set_protocol__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_protocol__init, + rpc__resp__wifi_set_channel__field_descriptors, + rpc__resp__wifi_set_channel__field_indices_by_name, + 1, rpc__resp__wifi_set_channel__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_channel__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_get_protocol__field_descriptors[1] = +#define rpc__req__wifi_get_channel__field_descriptors NULL +#define rpc__req__wifi_get_channel__field_indices_by_name NULL +#define rpc__req__wifi_get_channel__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_get_channel__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiGetChannel", + "RpcReqWifiGetChannel", + "RpcReqWifiGetChannel", + "", + sizeof(RpcReqWifiGetChannel), + 0, + rpc__req__wifi_get_channel__field_descriptors, + rpc__req__wifi_get_channel__field_indices_by_name, + 0, rpc__req__wifi_get_channel__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_channel__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_channel__field_descriptors[3] = { { - "ifx", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiGetProtocol, ifx), + offsetof(RpcRespWifiGetChannel, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__req__wifi_get_protocol__field_indices_by_name[] = { - 0, /* field[0] = ifx */ -}; -static const ProtobufCIntRange rpc__req__wifi_get_protocol__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__req__wifi_get_protocol__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetProtocol", - "RpcReqWifiGetProtocol", - "RpcReqWifiGetProtocol", - "", - sizeof(RpcReqWifiGetProtocol), - 1, - rpc__req__wifi_get_protocol__field_descriptors, - rpc__req__wifi_get_protocol__field_indices_by_name, - 1, rpc__req__wifi_get_protocol__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_protocol__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_protocol__field_descriptors[2] = -{ { - "resp", - 1, + "primary", + 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetProtocol, resp), + offsetof(RpcRespWifiGetChannel, primary), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "protocol_bitmap", - 2, + "second", + 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetProtocol, protocol_bitmap), + offsetof(RpcRespWifiGetChannel, second), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_protocol__field_indices_by_name[] = { - 1, /* field[1] = protocol_bitmap */ +static const unsigned rpc__resp__wifi_get_channel__field_indices_by_name[] = { + 1, /* field[1] = primary */ 0, /* field[0] = resp */ + 2, /* field[2] = second */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_protocol__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_channel__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 3 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_protocol__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_channel__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetProtocol", - "RpcRespWifiGetProtocol", - "RpcRespWifiGetProtocol", + "Rpc_Resp_WifiGetChannel", + "RpcRespWifiGetChannel", + "RpcRespWifiGetChannel", "", - sizeof(RpcRespWifiGetProtocol), - 2, - rpc__resp__wifi_get_protocol__field_descriptors, - rpc__resp__wifi_get_protocol__field_indices_by_name, - 1, rpc__resp__wifi_get_protocol__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_protocol__init, + sizeof(RpcRespWifiGetChannel), + 3, + rpc__resp__wifi_get_channel__field_descriptors, + rpc__resp__wifi_get_channel__field_indices_by_name, + 1, rpc__resp__wifi_get_channel__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_channel__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_bandwidth__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_storage__field_descriptors[1] = { { - "ifx", + "storage", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetBandwidth, ifx), + offsetof(RpcReqWifiSetStorage, storage), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__req__wifi_set_storage__field_indices_by_name[] = { + 0, /* field[0] = storage */ +}; +static const ProtobufCIntRange rpc__req__wifi_set_storage__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__req__wifi_set_storage__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiSetStorage", + "RpcReqWifiSetStorage", + "RpcReqWifiSetStorage", + "", + sizeof(RpcReqWifiSetStorage), + 1, + rpc__req__wifi_set_storage__field_descriptors, + rpc__req__wifi_set_storage__field_indices_by_name, + 1, rpc__req__wifi_set_storage__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_storage__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_storage__field_descriptors[1] = +{ { - "bw", - 2, + "resp", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetBandwidth, bw), + offsetof(RpcRespWifiSetStorage, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_bandwidth__field_indices_by_name[] = { - 1, /* field[1] = bw */ - 0, /* field[0] = ifx */ +static const unsigned rpc__resp__wifi_set_storage__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_set_bandwidth__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_storage__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_bandwidth__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_storage__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetBandwidth", - "RpcReqWifiSetBandwidth", - "RpcReqWifiSetBandwidth", + "Rpc_Resp_WifiSetStorage", + "RpcRespWifiSetStorage", + "RpcRespWifiSetStorage", "", - sizeof(RpcReqWifiSetBandwidth), - 2, - rpc__req__wifi_set_bandwidth__field_descriptors, - rpc__req__wifi_set_bandwidth__field_indices_by_name, - 1, rpc__req__wifi_set_bandwidth__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_bandwidth__init, + sizeof(RpcRespWifiSetStorage), + 1, + rpc__resp__wifi_set_storage__field_descriptors, + rpc__resp__wifi_set_storage__field_indices_by_name, + 1, rpc__resp__wifi_set_storage__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_storage__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_bandwidth__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_country_code__field_descriptors[2] = { { - "resp", + "country", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetBandwidth, resp), + offsetof(RpcReqWifiSetCountryCode, country), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ieee80211d_enabled", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(RpcReqWifiSetCountryCode, ieee80211d_enabled), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_bandwidth__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_set_country_code__field_indices_by_name[] = { + 0, /* field[0] = country */ + 1, /* field[1] = ieee80211d_enabled */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_bandwidth__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_country_code__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_bandwidth__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_country_code__descriptor = { - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetBandwidth", - "RpcRespWifiSetBandwidth", - "RpcRespWifiSetBandwidth", + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiSetCountryCode", + "RpcReqWifiSetCountryCode", + "RpcReqWifiSetCountryCode", "", - sizeof(RpcRespWifiSetBandwidth), - 1, - rpc__resp__wifi_set_bandwidth__field_descriptors, - rpc__resp__wifi_set_bandwidth__field_indices_by_name, - 1, rpc__resp__wifi_set_bandwidth__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_bandwidth__init, + sizeof(RpcReqWifiSetCountryCode), + 2, + rpc__req__wifi_set_country_code__field_descriptors, + rpc__req__wifi_set_country_code__field_indices_by_name, + 1, rpc__req__wifi_set_country_code__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_country_code__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_get_bandwidth__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_country_code__field_descriptors[1] = { { - "ifx", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiGetBandwidth, ifx), + offsetof(RpcRespWifiSetCountryCode, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_get_bandwidth__field_indices_by_name[] = { - 0, /* field[0] = ifx */ +static const unsigned rpc__resp__wifi_set_country_code__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_get_bandwidth__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_country_code__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_get_bandwidth__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_country_code__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetBandwidth", - "RpcReqWifiGetBandwidth", - "RpcReqWifiGetBandwidth", + "Rpc_Resp_WifiSetCountryCode", + "RpcRespWifiSetCountryCode", + "RpcRespWifiSetCountryCode", "", - sizeof(RpcReqWifiGetBandwidth), + sizeof(RpcRespWifiSetCountryCode), 1, - rpc__req__wifi_get_bandwidth__field_descriptors, - rpc__req__wifi_get_bandwidth__field_indices_by_name, - 1, rpc__req__wifi_get_bandwidth__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_bandwidth__init, + rpc__resp__wifi_set_country_code__field_descriptors, + rpc__resp__wifi_set_country_code__field_indices_by_name, + 1, rpc__resp__wifi_set_country_code__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_country_code__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_bandwidth__field_descriptors[2] = +#define rpc__req__wifi_get_country_code__field_descriptors NULL +#define rpc__req__wifi_get_country_code__field_indices_by_name NULL +#define rpc__req__wifi_get_country_code__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_get_country_code__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiGetCountryCode", + "RpcReqWifiGetCountryCode", + "RpcReqWifiGetCountryCode", + "", + sizeof(RpcReqWifiGetCountryCode), + 0, + rpc__req__wifi_get_country_code__field_descriptors, + rpc__req__wifi_get_country_code__field_indices_by_name, + 0, rpc__req__wifi_get_country_code__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_country_code__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_country_code__field_descriptors[2] = { { "resp", @@ -17483,101 +18608,88 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_bandwidth__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBandwidth, resp), + offsetof(RpcRespWifiGetCountryCode, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "bw", + "country", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBandwidth, bw), + offsetof(RpcRespWifiGetCountryCode, country), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_bandwidth__field_indices_by_name[] = { - 1, /* field[1] = bw */ +static const unsigned rpc__resp__wifi_get_country_code__field_indices_by_name[] = { + 1, /* field[1] = country */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_bandwidth__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_country_code__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_bandwidth__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_country_code__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetBandwidth", - "RpcRespWifiGetBandwidth", - "RpcRespWifiGetBandwidth", + "Rpc_Resp_WifiGetCountryCode", + "RpcRespWifiGetCountryCode", + "RpcRespWifiGetCountryCode", "", - sizeof(RpcRespWifiGetBandwidth), + sizeof(RpcRespWifiGetCountryCode), 2, - rpc__resp__wifi_get_bandwidth__field_descriptors, - rpc__resp__wifi_get_bandwidth__field_indices_by_name, - 1, rpc__resp__wifi_get_bandwidth__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_bandwidth__init, + rpc__resp__wifi_get_country_code__field_descriptors, + rpc__resp__wifi_get_country_code__field_indices_by_name, + 1, rpc__resp__wifi_get_country_code__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_country_code__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_channel__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_country__field_descriptors[1] = { { - "primary", + "country", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetChannel, primary), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "second", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetChannel, second), - NULL, + offsetof(RpcReqWifiSetCountry, country), + &wifi_country__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_channel__field_indices_by_name[] = { - 0, /* field[0] = primary */ - 1, /* field[1] = second */ +static const unsigned rpc__req__wifi_set_country__field_indices_by_name[] = { + 0, /* field[0] = country */ }; -static const ProtobufCIntRange rpc__req__wifi_set_channel__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_country__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_channel__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_country__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetChannel", - "RpcReqWifiSetChannel", - "RpcReqWifiSetChannel", + "Rpc_Req_WifiSetCountry", + "RpcReqWifiSetCountry", + "RpcReqWifiSetCountry", "", - sizeof(RpcReqWifiSetChannel), - 2, - rpc__req__wifi_set_channel__field_descriptors, - rpc__req__wifi_set_channel__field_indices_by_name, - 1, rpc__req__wifi_set_channel__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_channel__init, + sizeof(RpcReqWifiSetCountry), + 1, + rpc__req__wifi_set_country__field_descriptors, + rpc__req__wifi_set_country__field_indices_by_name, + 1, rpc__req__wifi_set_country__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_country__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_channel__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_country__field_descriptors[1] = { { "resp", @@ -17585,55 +18697,55 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_channel__field_descrip PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetChannel, resp), + offsetof(RpcRespWifiSetCountry, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_channel__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_set_country__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_channel__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_country__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_channel__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_country__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetChannel", - "RpcRespWifiSetChannel", - "RpcRespWifiSetChannel", + "Rpc_Resp_WifiSetCountry", + "RpcRespWifiSetCountry", + "RpcRespWifiSetCountry", "", - sizeof(RpcRespWifiSetChannel), + sizeof(RpcRespWifiSetCountry), 1, - rpc__resp__wifi_set_channel__field_descriptors, - rpc__resp__wifi_set_channel__field_indices_by_name, - 1, rpc__resp__wifi_set_channel__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_channel__init, + rpc__resp__wifi_set_country__field_descriptors, + rpc__resp__wifi_set_country__field_indices_by_name, + 1, rpc__resp__wifi_set_country__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_country__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_get_channel__field_descriptors NULL -#define rpc__req__wifi_get_channel__field_indices_by_name NULL -#define rpc__req__wifi_get_channel__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_get_channel__descriptor = +#define rpc__req__wifi_get_country__field_descriptors NULL +#define rpc__req__wifi_get_country__field_indices_by_name NULL +#define rpc__req__wifi_get_country__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_get_country__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetChannel", - "RpcReqWifiGetChannel", - "RpcReqWifiGetChannel", + "Rpc_Req_WifiGetCountry", + "RpcReqWifiGetCountry", + "RpcReqWifiGetCountry", "", - sizeof(RpcReqWifiGetChannel), + sizeof(RpcReqWifiGetCountry), 0, - rpc__req__wifi_get_channel__field_descriptors, - rpc__req__wifi_get_channel__field_indices_by_name, - 0, rpc__req__wifi_get_channel__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_channel__init, + rpc__req__wifi_get_country__field_descriptors, + rpc__req__wifi_get_country__field_indices_by_name, + 0, rpc__req__wifi_get_country__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_country__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_channel__field_descriptors[3] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_country__field_descriptors[2] = { { "resp", @@ -17641,101 +18753,175 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_channel__field_descrip PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetChannel, resp), + offsetof(RpcRespWifiGetCountry, resp), + NULL, NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "country", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiGetCountry, country), + &wifi_country__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__wifi_get_country__field_indices_by_name[] = { + 1, /* field[1] = country */ + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__wifi_get_country__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor rpc__resp__wifi_get_country__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_WifiGetCountry", + "RpcRespWifiGetCountry", + "RpcRespWifiGetCountry", + "", + sizeof(RpcRespWifiGetCountry), + 2, + rpc__resp__wifi_get_country__field_descriptors, + rpc__resp__wifi_get_country__field_indices_by_name, + 1, rpc__resp__wifi_get_country__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_country__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define rpc__req__wifi_ap_get_sta_list__field_descriptors NULL +#define rpc__req__wifi_ap_get_sta_list__field_indices_by_name NULL +#define rpc__req__wifi_ap_get_sta_list__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_ap_get_sta_list__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiApGetStaList", + "RpcReqWifiApGetStaList", + "RpcReqWifiApGetStaList", + "", + sizeof(RpcReqWifiApGetStaList), + 0, + rpc__req__wifi_ap_get_sta_list__field_descriptors, + rpc__req__wifi_ap_get_sta_list__field_indices_by_name, + 0, rpc__req__wifi_ap_get_sta_list__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_ap_get_sta_list__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_ap_get_sta_list__field_descriptors[2] = +{ { - "primary", - 2, + "resp", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetChannel, primary), + offsetof(RpcRespWifiApGetStaList, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "second", - 3, + "sta_list", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetChannel, second), - NULL, + offsetof(RpcRespWifiApGetStaList, sta_list), + &wifi_sta_list__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_channel__field_indices_by_name[] = { - 1, /* field[1] = primary */ +static const unsigned rpc__resp__wifi_ap_get_sta_list__field_indices_by_name[] = { 0, /* field[0] = resp */ - 2, /* field[2] = second */ + 1, /* field[1] = sta_list */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_channel__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_ap_get_sta_list__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 3 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_channel__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_ap_get_sta_list__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetChannel", - "RpcRespWifiGetChannel", - "RpcRespWifiGetChannel", + "Rpc_Resp_WifiApGetStaList", + "RpcRespWifiApGetStaList", + "RpcRespWifiApGetStaList", "", - sizeof(RpcRespWifiGetChannel), - 3, - rpc__resp__wifi_get_channel__field_descriptors, - rpc__resp__wifi_get_channel__field_indices_by_name, - 1, rpc__resp__wifi_get_channel__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_channel__init, + sizeof(RpcRespWifiApGetStaList), + 2, + rpc__resp__wifi_ap_get_sta_list__field_descriptors, + rpc__resp__wifi_ap_get_sta_list__field_indices_by_name, + 1, rpc__resp__wifi_ap_get_sta_list__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_ap_get_sta_list__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_storage__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_ap_get_sta_aid__field_descriptors[1] = { { - "storage", + "mac", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetStorage, storage), + offsetof(RpcReqWifiApGetStaAid, mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_storage__field_indices_by_name[] = { - 0, /* field[0] = storage */ +static const unsigned rpc__req__wifi_ap_get_sta_aid__field_indices_by_name[] = { + 0, /* field[0] = mac */ }; -static const ProtobufCIntRange rpc__req__wifi_set_storage__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_ap_get_sta_aid__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_storage__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_ap_get_sta_aid__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetStorage", - "RpcReqWifiSetStorage", - "RpcReqWifiSetStorage", + "Rpc_Req_WifiApGetStaAid", + "RpcReqWifiApGetStaAid", + "RpcReqWifiApGetStaAid", "", - sizeof(RpcReqWifiSetStorage), + sizeof(RpcReqWifiApGetStaAid), 1, - rpc__req__wifi_set_storage__field_descriptors, - rpc__req__wifi_set_storage__field_indices_by_name, - 1, rpc__req__wifi_set_storage__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_storage__init, + rpc__req__wifi_ap_get_sta_aid__field_descriptors, + rpc__req__wifi_ap_get_sta_aid__field_indices_by_name, + 1, rpc__req__wifi_ap_get_sta_aid__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_ap_get_sta_aid__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_storage__field_descriptors[1] = +#define rpc__req__wifi_sta_get_negotiated_phymode__field_descriptors NULL +#define rpc__req__wifi_sta_get_negotiated_phymode__field_indices_by_name NULL +#define rpc__req__wifi_sta_get_negotiated_phymode__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_negotiated_phymode__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStaGetNegotiatedPhymode", + "RpcReqWifiStaGetNegotiatedPhymode", + "RpcReqWifiStaGetNegotiatedPhymode", + "", + sizeof(RpcReqWifiStaGetNegotiatedPhymode), + 0, + rpc__req__wifi_sta_get_negotiated_phymode__field_descriptors, + rpc__req__wifi_sta_get_negotiated_phymode__field_indices_by_name, + 0, rpc__req__wifi_sta_get_negotiated_phymode__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_get_negotiated_phymode__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_negotiated_phymode__field_descriptors[2] = { { "resp", @@ -17743,88 +18929,119 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_storage__field_descrip PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetStorage, resp), + offsetof(RpcRespWifiStaGetNegotiatedPhymode, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "phymode", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiStaGetNegotiatedPhymode, phymode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_storage__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_sta_get_negotiated_phymode__field_indices_by_name[] = { + 1, /* field[1] = phymode */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_storage__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_get_negotiated_phymode__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_storage__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_negotiated_phymode__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetStorage", - "RpcRespWifiSetStorage", - "RpcRespWifiSetStorage", + "Rpc_Resp_WifiStaGetNegotiatedPhymode", + "RpcRespWifiStaGetNegotiatedPhymode", + "RpcRespWifiStaGetNegotiatedPhymode", "", - sizeof(RpcRespWifiSetStorage), - 1, - rpc__resp__wifi_set_storage__field_descriptors, - rpc__resp__wifi_set_storage__field_indices_by_name, - 1, rpc__resp__wifi_set_storage__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_storage__init, + sizeof(RpcRespWifiStaGetNegotiatedPhymode), + 2, + rpc__resp__wifi_sta_get_negotiated_phymode__field_descriptors, + rpc__resp__wifi_sta_get_negotiated_phymode__field_indices_by_name, + 1, rpc__resp__wifi_sta_get_negotiated_phymode__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_get_negotiated_phymode__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_country_code__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_ap_get_sta_aid__field_descriptors[2] = { { - "country", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetCountryCode, country), + offsetof(RpcRespWifiApGetStaAid, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ieee80211d_enabled", + "aid", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetCountryCode, ieee80211d_enabled), + offsetof(RpcRespWifiApGetStaAid, aid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_country_code__field_indices_by_name[] = { - 0, /* field[0] = country */ - 1, /* field[1] = ieee80211d_enabled */ +static const unsigned rpc__resp__wifi_ap_get_sta_aid__field_indices_by_name[] = { + 1, /* field[1] = aid */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_set_country_code__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_ap_get_sta_aid__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_country_code__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_ap_get_sta_aid__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetCountryCode", - "RpcReqWifiSetCountryCode", - "RpcReqWifiSetCountryCode", + "Rpc_Resp_WifiApGetStaAid", + "RpcRespWifiApGetStaAid", + "RpcRespWifiApGetStaAid", "", - sizeof(RpcReqWifiSetCountryCode), + sizeof(RpcRespWifiApGetStaAid), 2, - rpc__req__wifi_set_country_code__field_descriptors, - rpc__req__wifi_set_country_code__field_indices_by_name, - 1, rpc__req__wifi_set_country_code__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_country_code__init, + rpc__resp__wifi_ap_get_sta_aid__field_descriptors, + rpc__resp__wifi_ap_get_sta_aid__field_indices_by_name, + 1, rpc__resp__wifi_ap_get_sta_aid__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_ap_get_sta_aid__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_country_code__field_descriptors[1] = +#define rpc__req__wifi_sta_get_rssi__field_descriptors NULL +#define rpc__req__wifi_sta_get_rssi__field_indices_by_name NULL +#define rpc__req__wifi_sta_get_rssi__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_rssi__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStaGetRssi", + "RpcReqWifiStaGetRssi", + "RpcReqWifiStaGetRssi", + "", + sizeof(RpcReqWifiStaGetRssi), + 0, + rpc__req__wifi_sta_get_rssi__field_descriptors, + rpc__req__wifi_sta_get_rssi__field_indices_by_name, + 0, rpc__req__wifi_sta_get_rssi__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_get_rssi__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_rssi__field_descriptors[2] = { { "resp", @@ -17832,55 +19049,68 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_country_code__field_de PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetCountryCode, resp), + offsetof(RpcRespWifiStaGetRssi, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rssi", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiStaGetRssi, rssi), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_country_code__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_sta_get_rssi__field_indices_by_name[] = { 0, /* field[0] = resp */ + 1, /* field[1] = rssi */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_country_code__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_get_rssi__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_country_code__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_rssi__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetCountryCode", - "RpcRespWifiSetCountryCode", - "RpcRespWifiSetCountryCode", + "Rpc_Resp_WifiStaGetRssi", + "RpcRespWifiStaGetRssi", + "RpcRespWifiStaGetRssi", "", - sizeof(RpcRespWifiSetCountryCode), - 1, - rpc__resp__wifi_set_country_code__field_descriptors, - rpc__resp__wifi_set_country_code__field_indices_by_name, - 1, rpc__resp__wifi_set_country_code__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_country_code__init, + sizeof(RpcRespWifiStaGetRssi), + 2, + rpc__resp__wifi_sta_get_rssi__field_descriptors, + rpc__resp__wifi_sta_get_rssi__field_indices_by_name, + 1, rpc__resp__wifi_sta_get_rssi__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_get_rssi__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_get_country_code__field_descriptors NULL -#define rpc__req__wifi_get_country_code__field_indices_by_name NULL -#define rpc__req__wifi_get_country_code__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_get_country_code__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetCountryCode", - "RpcReqWifiGetCountryCode", - "RpcReqWifiGetCountryCode", +#define rpc__req__wifi_sta_get_aid__field_descriptors NULL +#define rpc__req__wifi_sta_get_aid__field_indices_by_name NULL +#define rpc__req__wifi_sta_get_aid__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_aid__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStaGetAid", + "RpcReqWifiStaGetAid", + "RpcReqWifiStaGetAid", "", - sizeof(RpcReqWifiGetCountryCode), + sizeof(RpcReqWifiStaGetAid), 0, - rpc__req__wifi_get_country_code__field_descriptors, - rpc__req__wifi_get_country_code__field_indices_by_name, - 0, rpc__req__wifi_get_country_code__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_country_code__init, + rpc__req__wifi_sta_get_aid__field_descriptors, + rpc__req__wifi_sta_get_aid__field_indices_by_name, + 0, rpc__req__wifi_sta_get_aid__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_get_aid__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_country_code__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_aid__field_descriptors[2] = { { "resp", @@ -17888,144 +19118,101 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_country_code__field_de PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetCountryCode, resp), + offsetof(RpcRespWifiStaGetAid, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "country", + "aid", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetCountryCode, country), + offsetof(RpcRespWifiStaGetAid, aid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_country_code__field_indices_by_name[] = { - 1, /* field[1] = country */ +static const unsigned rpc__resp__wifi_sta_get_aid__field_indices_by_name[] = { + 1, /* field[1] = aid */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_country_code__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_get_aid__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_country_code__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_aid__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetCountryCode", - "RpcRespWifiGetCountryCode", - "RpcRespWifiGetCountryCode", + "Rpc_Resp_WifiStaGetAid", + "RpcRespWifiStaGetAid", + "RpcRespWifiStaGetAid", "", - sizeof(RpcRespWifiGetCountryCode), + sizeof(RpcRespWifiStaGetAid), 2, - rpc__resp__wifi_get_country_code__field_descriptors, - rpc__resp__wifi_get_country_code__field_indices_by_name, - 1, rpc__resp__wifi_get_country_code__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_country_code__init, + rpc__resp__wifi_sta_get_aid__field_descriptors, + rpc__resp__wifi_sta_get_aid__field_indices_by_name, + 1, rpc__resp__wifi_sta_get_aid__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_get_aid__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_country__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_protocols__field_descriptors[2] = { { - "country", + "ifx", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetCountry, country), - &wifi_country__descriptor, + offsetof(RpcReqWifiSetProtocols, ifx), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__req__wifi_set_country__field_indices_by_name[] = { - 0, /* field[0] = country */ -}; -static const ProtobufCIntRange rpc__req__wifi_set_country__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__req__wifi_set_country__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetCountry", - "RpcReqWifiSetCountry", - "RpcReqWifiSetCountry", - "", - sizeof(RpcReqWifiSetCountry), - 1, - rpc__req__wifi_set_country__field_descriptors, - rpc__req__wifi_set_country__field_indices_by_name, - 1, rpc__req__wifi_set_country__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_country__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_country__field_descriptors[1] = -{ { - "resp", - 1, + "protocols", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetCountry, resp), - NULL, + offsetof(RpcReqWifiSetProtocols, protocols), + &wifi_protocols__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_country__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_set_protocols__field_indices_by_name[] = { + 0, /* field[0] = ifx */ + 1, /* field[1] = protocols */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_country__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_protocols__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_country__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetCountry", - "RpcRespWifiSetCountry", - "RpcRespWifiSetCountry", - "", - sizeof(RpcRespWifiSetCountry), - 1, - rpc__resp__wifi_set_country__field_descriptors, - rpc__resp__wifi_set_country__field_indices_by_name, - 1, rpc__resp__wifi_set_country__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_country__init, - NULL,NULL,NULL /* reserved[123] */ + { 0, 2 } }; -#define rpc__req__wifi_get_country__field_descriptors NULL -#define rpc__req__wifi_get_country__field_indices_by_name NULL -#define rpc__req__wifi_get_country__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_get_country__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_protocols__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetCountry", - "RpcReqWifiGetCountry", - "RpcReqWifiGetCountry", + "Rpc_Req_WifiSetProtocols", + "RpcReqWifiSetProtocols", + "RpcReqWifiSetProtocols", "", - sizeof(RpcReqWifiGetCountry), - 0, - rpc__req__wifi_get_country__field_descriptors, - rpc__req__wifi_get_country__field_indices_by_name, - 0, rpc__req__wifi_get_country__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_country__init, + sizeof(RpcReqWifiSetProtocols), + 2, + rpc__req__wifi_set_protocols__field_descriptors, + rpc__req__wifi_set_protocols__field_indices_by_name, + 1, rpc__req__wifi_set_protocols__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_protocols__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_country__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_protocols__field_descriptors[2] = { { "resp", @@ -18033,226 +19220,203 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_country__field_descrip PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetCountry, resp), + offsetof(RpcRespWifiSetProtocols, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "country", + "ifx", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetCountry, country), - &wifi_country__descriptor, + offsetof(RpcRespWifiSetProtocols, ifx), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_country__field_indices_by_name[] = { - 1, /* field[1] = country */ +static const unsigned rpc__resp__wifi_set_protocols__field_indices_by_name[] = { + 1, /* field[1] = ifx */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_country__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_protocols__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_country__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_protocols__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetCountry", - "RpcRespWifiGetCountry", - "RpcRespWifiGetCountry", + "Rpc_Resp_WifiSetProtocols", + "RpcRespWifiSetProtocols", + "RpcRespWifiSetProtocols", "", - sizeof(RpcRespWifiGetCountry), + sizeof(RpcRespWifiSetProtocols), 2, - rpc__resp__wifi_get_country__field_descriptors, - rpc__resp__wifi_get_country__field_indices_by_name, - 1, rpc__resp__wifi_get_country__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_country__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_ap_get_sta_list__field_descriptors NULL -#define rpc__req__wifi_ap_get_sta_list__field_indices_by_name NULL -#define rpc__req__wifi_ap_get_sta_list__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_ap_get_sta_list__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiApGetStaList", - "RpcReqWifiApGetStaList", - "RpcReqWifiApGetStaList", - "", - sizeof(RpcReqWifiApGetStaList), - 0, - rpc__req__wifi_ap_get_sta_list__field_descriptors, - rpc__req__wifi_ap_get_sta_list__field_indices_by_name, - 0, rpc__req__wifi_ap_get_sta_list__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_ap_get_sta_list__init, + rpc__resp__wifi_set_protocols__field_descriptors, + rpc__resp__wifi_set_protocols__field_indices_by_name, + 1, rpc__resp__wifi_set_protocols__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_protocols__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_ap_get_sta_list__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_get_protocols__field_descriptors[1] = { { - "resp", + "ifx", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiApGetStaList, resp), - NULL, + offsetof(RpcReqWifiGetProtocols, ifx), NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "sta_list", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiApGetStaList, sta_list), - &wifi_sta_list__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_ap_get_sta_list__field_indices_by_name[] = { - 0, /* field[0] = resp */ - 1, /* field[1] = sta_list */ +static const unsigned rpc__req__wifi_get_protocols__field_indices_by_name[] = { + 0, /* field[0] = ifx */ }; -static const ProtobufCIntRange rpc__resp__wifi_ap_get_sta_list__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_get_protocols__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_ap_get_sta_list__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_get_protocols__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiApGetStaList", - "RpcRespWifiApGetStaList", - "RpcRespWifiApGetStaList", + "Rpc_Req_WifiGetProtocols", + "RpcReqWifiGetProtocols", + "RpcReqWifiGetProtocols", "", - sizeof(RpcRespWifiApGetStaList), - 2, - rpc__resp__wifi_ap_get_sta_list__field_descriptors, - rpc__resp__wifi_ap_get_sta_list__field_indices_by_name, - 1, rpc__resp__wifi_ap_get_sta_list__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_ap_get_sta_list__init, + sizeof(RpcReqWifiGetProtocols), + 1, + rpc__req__wifi_get_protocols__field_descriptors, + rpc__req__wifi_get_protocols__field_indices_by_name, + 1, rpc__req__wifi_get_protocols__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_protocols__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_ap_get_sta_aid__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_protocols__field_descriptors[3] = { { - "mac", - 1, + "resp", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiGetProtocols, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ifx", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiApGetStaAid, mac), + offsetof(RpcRespWifiGetProtocols, ifx), + NULL, NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "protocols", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiGetProtocols, protocols), + &wifi_protocols__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_ap_get_sta_aid__field_indices_by_name[] = { - 0, /* field[0] = mac */ +static const unsigned rpc__resp__wifi_get_protocols__field_indices_by_name[] = { + 1, /* field[1] = ifx */ + 2, /* field[2] = protocols */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_ap_get_sta_aid__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_protocols__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__req__wifi_ap_get_sta_aid__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiApGetStaAid", - "RpcReqWifiApGetStaAid", - "RpcReqWifiApGetStaAid", - "", - sizeof(RpcReqWifiApGetStaAid), - 1, - rpc__req__wifi_ap_get_sta_aid__field_descriptors, - rpc__req__wifi_ap_get_sta_aid__field_indices_by_name, - 1, rpc__req__wifi_ap_get_sta_aid__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_ap_get_sta_aid__init, - NULL,NULL,NULL /* reserved[123] */ + { 0, 3 } }; -#define rpc__req__wifi_sta_get_negotiated_phymode__field_descriptors NULL -#define rpc__req__wifi_sta_get_negotiated_phymode__field_indices_by_name NULL -#define rpc__req__wifi_sta_get_negotiated_phymode__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_negotiated_phymode__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_protocols__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaGetNegotiatedPhymode", - "RpcReqWifiStaGetNegotiatedPhymode", - "RpcReqWifiStaGetNegotiatedPhymode", + "Rpc_Resp_WifiGetProtocols", + "RpcRespWifiGetProtocols", + "RpcRespWifiGetProtocols", "", - sizeof(RpcReqWifiStaGetNegotiatedPhymode), - 0, - rpc__req__wifi_sta_get_negotiated_phymode__field_descriptors, - rpc__req__wifi_sta_get_negotiated_phymode__field_indices_by_name, - 0, rpc__req__wifi_sta_get_negotiated_phymode__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_get_negotiated_phymode__init, + sizeof(RpcRespWifiGetProtocols), + 3, + rpc__resp__wifi_get_protocols__field_descriptors, + rpc__resp__wifi_get_protocols__field_indices_by_name, + 1, rpc__resp__wifi_get_protocols__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_protocols__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_negotiated_phymode__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_bandwidths__field_descriptors[2] = { { - "resp", + "ifx", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetNegotiatedPhymode, resp), + offsetof(RpcReqWifiSetBandwidths, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "phymode", + "bandwidths", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetNegotiatedPhymode, phymode), - NULL, + offsetof(RpcReqWifiSetBandwidths, bandwidths), + &wifi_bandwidths__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_get_negotiated_phymode__field_indices_by_name[] = { - 1, /* field[1] = phymode */ - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_set_bandwidths__field_indices_by_name[] = { + 1, /* field[1] = bandwidths */ + 0, /* field[0] = ifx */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_get_negotiated_phymode__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_bandwidths__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_negotiated_phymode__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_bandwidths__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaGetNegotiatedPhymode", - "RpcRespWifiStaGetNegotiatedPhymode", - "RpcRespWifiStaGetNegotiatedPhymode", + "Rpc_Req_WifiSetBandwidths", + "RpcReqWifiSetBandwidths", + "RpcReqWifiSetBandwidths", "", - sizeof(RpcRespWifiStaGetNegotiatedPhymode), + sizeof(RpcReqWifiSetBandwidths), 2, - rpc__resp__wifi_sta_get_negotiated_phymode__field_descriptors, - rpc__resp__wifi_sta_get_negotiated_phymode__field_indices_by_name, - 1, rpc__resp__wifi_sta_get_negotiated_phymode__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_get_negotiated_phymode__init, + rpc__req__wifi_set_bandwidths__field_descriptors, + rpc__req__wifi_set_bandwidths__field_indices_by_name, + 1, rpc__req__wifi_set_bandwidths__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_bandwidths__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_ap_get_sta_aid__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_bandwidths__field_descriptors[2] = { { "resp", @@ -18260,68 +19424,88 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_ap_get_sta_aid__field_desc PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiApGetStaAid, resp), + offsetof(RpcRespWifiSetBandwidths, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "aid", + "ifx", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiApGetStaAid, aid), + offsetof(RpcRespWifiSetBandwidths, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_ap_get_sta_aid__field_indices_by_name[] = { - 1, /* field[1] = aid */ +static const unsigned rpc__resp__wifi_set_bandwidths__field_indices_by_name[] = { + 1, /* field[1] = ifx */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_ap_get_sta_aid__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_bandwidths__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_ap_get_sta_aid__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_bandwidths__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiApGetStaAid", - "RpcRespWifiApGetStaAid", - "RpcRespWifiApGetStaAid", + "Rpc_Resp_WifiSetBandwidths", + "RpcRespWifiSetBandwidths", + "RpcRespWifiSetBandwidths", "", - sizeof(RpcRespWifiApGetStaAid), + sizeof(RpcRespWifiSetBandwidths), 2, - rpc__resp__wifi_ap_get_sta_aid__field_descriptors, - rpc__resp__wifi_ap_get_sta_aid__field_indices_by_name, - 1, rpc__resp__wifi_ap_get_sta_aid__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_ap_get_sta_aid__init, + rpc__resp__wifi_set_bandwidths__field_descriptors, + rpc__resp__wifi_set_bandwidths__field_indices_by_name, + 1, rpc__resp__wifi_set_bandwidths__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_bandwidths__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_sta_get_rssi__field_descriptors NULL -#define rpc__req__wifi_sta_get_rssi__field_indices_by_name NULL -#define rpc__req__wifi_sta_get_rssi__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_rssi__descriptor = +static const ProtobufCFieldDescriptor rpc__req__wifi_get_bandwidths__field_descriptors[1] = +{ + { + "ifx", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcReqWifiGetBandwidths, ifx), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__req__wifi_get_bandwidths__field_indices_by_name[] = { + 0, /* field[0] = ifx */ +}; +static const ProtobufCIntRange rpc__req__wifi_get_bandwidths__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__req__wifi_get_bandwidths__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaGetRssi", - "RpcReqWifiStaGetRssi", - "RpcReqWifiStaGetRssi", + "Rpc_Req_WifiGetBandwidths", + "RpcReqWifiGetBandwidths", + "RpcReqWifiGetBandwidths", "", - sizeof(RpcReqWifiStaGetRssi), - 0, - rpc__req__wifi_sta_get_rssi__field_descriptors, - rpc__req__wifi_sta_get_rssi__field_indices_by_name, - 0, rpc__req__wifi_sta_get_rssi__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_get_rssi__init, + sizeof(RpcReqWifiGetBandwidths), + 1, + rpc__req__wifi_get_bandwidths__field_descriptors, + rpc__req__wifi_get_bandwidths__field_indices_by_name, + 1, rpc__req__wifi_get_bandwidths__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_bandwidths__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_rssi__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_bandwidths__field_descriptors[3] = { { "resp", @@ -18329,170 +19513,157 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_rssi__field_descri PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetRssi, resp), + offsetof(RpcRespWifiGetBandwidths, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "rssi", + "ifx", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetRssi, rssi), + offsetof(RpcRespWifiGetBandwidths, ifx), + NULL, NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "bandwidths", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(RpcRespWifiGetBandwidths, bandwidths), + &wifi_bandwidths__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_get_rssi__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_get_bandwidths__field_indices_by_name[] = { + 2, /* field[2] = bandwidths */ + 1, /* field[1] = ifx */ 0, /* field[0] = resp */ - 1, /* field[1] = rssi */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_get_rssi__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_bandwidths__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_rssi__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaGetRssi", - "RpcRespWifiStaGetRssi", - "RpcRespWifiStaGetRssi", - "", - sizeof(RpcRespWifiStaGetRssi), - 2, - rpc__resp__wifi_sta_get_rssi__field_descriptors, - rpc__resp__wifi_sta_get_rssi__field_indices_by_name, - 1, rpc__resp__wifi_sta_get_rssi__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_get_rssi__init, - NULL,NULL,NULL /* reserved[123] */ + { 0, 3 } }; -#define rpc__req__wifi_sta_get_aid__field_descriptors NULL -#define rpc__req__wifi_sta_get_aid__field_indices_by_name NULL -#define rpc__req__wifi_sta_get_aid__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_sta_get_aid__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_bandwidths__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaGetAid", - "RpcReqWifiStaGetAid", - "RpcReqWifiStaGetAid", + "Rpc_Resp_WifiGetBandwidths", + "RpcRespWifiGetBandwidths", + "RpcRespWifiGetBandwidths", "", - sizeof(RpcReqWifiStaGetAid), - 0, - rpc__req__wifi_sta_get_aid__field_descriptors, - rpc__req__wifi_sta_get_aid__field_indices_by_name, - 0, rpc__req__wifi_sta_get_aid__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_get_aid__init, + sizeof(RpcRespWifiGetBandwidths), + 3, + rpc__resp__wifi_get_bandwidths__field_descriptors, + rpc__resp__wifi_get_bandwidths__field_indices_by_name, + 1, rpc__resp__wifi_get_bandwidths__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_bandwidths__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_get_aid__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_band__field_descriptors[1] = { { - "resp", + "band", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetAid, resp), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "aid", - 2, - PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaGetAid, aid), + offsetof(RpcReqWifiSetBand, band), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_get_aid__field_indices_by_name[] = { - 1, /* field[1] = aid */ - 0, /* field[0] = resp */ +static const unsigned rpc__req__wifi_set_band__field_indices_by_name[] = { + 0, /* field[0] = band */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_get_aid__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_band__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_get_aid__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_band__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaGetAid", - "RpcRespWifiStaGetAid", - "RpcRespWifiStaGetAid", + "Rpc_Req_WifiSetBand", + "RpcReqWifiSetBand", + "RpcReqWifiSetBand", "", - sizeof(RpcRespWifiStaGetAid), - 2, - rpc__resp__wifi_sta_get_aid__field_descriptors, - rpc__resp__wifi_sta_get_aid__field_indices_by_name, - 1, rpc__resp__wifi_sta_get_aid__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_get_aid__init, + sizeof(RpcReqWifiSetBand), + 1, + rpc__req__wifi_set_band__field_descriptors, + rpc__req__wifi_set_band__field_indices_by_name, + 1, rpc__req__wifi_set_band__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_band__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_protocols__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_band__field_descriptors[1] = { { - "ifx", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetProtocols, ifx), - NULL, + offsetof(RpcRespWifiSetBand, resp), NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "protocols", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetProtocols, protocols), - &wifi_protocols__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_protocols__field_indices_by_name[] = { - 0, /* field[0] = ifx */ - 1, /* field[1] = protocols */ +static const unsigned rpc__resp__wifi_set_band__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__wifi_set_protocols__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_band__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_protocols__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_band__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetProtocols", - "RpcReqWifiSetProtocols", - "RpcReqWifiSetProtocols", + "Rpc_Resp_WifiSetBand", + "RpcRespWifiSetBand", + "RpcRespWifiSetBand", "", - sizeof(RpcReqWifiSetProtocols), - 2, - rpc__req__wifi_set_protocols__field_descriptors, - rpc__req__wifi_set_protocols__field_indices_by_name, - 1, rpc__req__wifi_set_protocols__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_protocols__init, + sizeof(RpcRespWifiSetBand), + 1, + rpc__resp__wifi_set_band__field_descriptors, + rpc__resp__wifi_set_band__field_indices_by_name, + 1, rpc__resp__wifi_set_band__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_band__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_protocols__field_descriptors[2] = +#define rpc__req__wifi_get_band__field_descriptors NULL +#define rpc__req__wifi_get_band__field_indices_by_name NULL +#define rpc__req__wifi_get_band__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_get_band__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiGetBand", + "RpcReqWifiGetBand", + "RpcReqWifiGetBand", + "", + sizeof(RpcReqWifiGetBand), + 0, + rpc__req__wifi_get_band__field_descriptors, + rpc__req__wifi_get_band__field_indices_by_name, + 0, rpc__req__wifi_get_band__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_band__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_band__field_descriptors[2] = { { "resp", @@ -18500,88 +19671,88 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_protocols__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetProtocols, resp), + offsetof(RpcRespWifiGetBand, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ifx", + "band", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetProtocols, ifx), + offsetof(RpcRespWifiGetBand, band), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_protocols__field_indices_by_name[] = { - 1, /* field[1] = ifx */ +static const unsigned rpc__resp__wifi_get_band__field_indices_by_name[] = { + 1, /* field[1] = band */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_protocols__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_band__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_protocols__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_band__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetProtocols", - "RpcRespWifiSetProtocols", - "RpcRespWifiSetProtocols", + "Rpc_Resp_WifiGetBand", + "RpcRespWifiGetBand", + "RpcRespWifiGetBand", "", - sizeof(RpcRespWifiSetProtocols), + sizeof(RpcRespWifiGetBand), 2, - rpc__resp__wifi_set_protocols__field_descriptors, - rpc__resp__wifi_set_protocols__field_indices_by_name, - 1, rpc__resp__wifi_set_protocols__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_protocols__init, + rpc__resp__wifi_get_band__field_descriptors, + rpc__resp__wifi_get_band__field_indices_by_name, + 1, rpc__resp__wifi_get_band__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_band__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_get_protocols__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_band_mode__field_descriptors[1] = { { - "ifx", + "bandmode", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiGetProtocols, ifx), + offsetof(RpcReqWifiSetBandMode, bandmode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_get_protocols__field_indices_by_name[] = { - 0, /* field[0] = ifx */ +static const unsigned rpc__req__wifi_set_band_mode__field_indices_by_name[] = { + 0, /* field[0] = bandmode */ }; -static const ProtobufCIntRange rpc__req__wifi_get_protocols__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_band_mode__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_get_protocols__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_band_mode__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetProtocols", - "RpcReqWifiGetProtocols", - "RpcReqWifiGetProtocols", + "Rpc_Req_WifiSetBandMode", + "RpcReqWifiSetBandMode", + "RpcReqWifiSetBandMode", "", - sizeof(RpcReqWifiGetProtocols), + sizeof(RpcReqWifiSetBandMode), 1, - rpc__req__wifi_get_protocols__field_descriptors, - rpc__req__wifi_get_protocols__field_indices_by_name, - 1, rpc__req__wifi_get_protocols__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_protocols__init, + rpc__req__wifi_set_band_mode__field_descriptors, + rpc__req__wifi_set_band_mode__field_indices_by_name, + 1, rpc__req__wifi_set_band_mode__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_band_mode__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_protocols__field_descriptors[3] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_band_mode__field_descriptors[1] = { { "resp", @@ -18589,114 +19760,157 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_protocols__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetProtocols, resp), + offsetof(RpcRespWifiSetBandMode, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__wifi_set_band_mode__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__wifi_set_band_mode__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__wifi_set_band_mode__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_WifiSetBandMode", + "RpcRespWifiSetBandMode", + "RpcRespWifiSetBandMode", + "", + sizeof(RpcRespWifiSetBandMode), + 1, + rpc__resp__wifi_set_band_mode__field_descriptors, + rpc__resp__wifi_set_band_mode__field_indices_by_name, + 1, rpc__resp__wifi_set_band_mode__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_band_mode__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define rpc__req__wifi_get_band_mode__field_descriptors NULL +#define rpc__req__wifi_get_band_mode__field_indices_by_name NULL +#define rpc__req__wifi_get_band_mode__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_get_band_mode__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiGetBandMode", + "RpcReqWifiGetBandMode", + "RpcReqWifiGetBandMode", + "", + sizeof(RpcReqWifiGetBandMode), + 0, + rpc__req__wifi_get_band_mode__field_descriptors, + rpc__req__wifi_get_band_mode__field_indices_by_name, + 0, rpc__req__wifi_get_band_mode__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_band_mode__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_band_mode__field_descriptors[2] = +{ { - "ifx", - 2, + "resp", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetProtocols, ifx), + offsetof(RpcRespWifiGetBandMode, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "protocols", - 3, + "bandmode", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetProtocols, protocols), - &wifi_protocols__descriptor, + offsetof(RpcRespWifiGetBandMode, bandmode), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_protocols__field_indices_by_name[] = { - 1, /* field[1] = ifx */ - 2, /* field[2] = protocols */ +static const unsigned rpc__resp__wifi_get_band_mode__field_indices_by_name[] = { + 1, /* field[1] = bandmode */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_protocols__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_band_mode__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 3 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_protocols__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetProtocols", - "RpcRespWifiGetProtocols", - "RpcRespWifiGetProtocols", +const ProtobufCMessageDescriptor rpc__resp__wifi_get_band_mode__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_WifiGetBandMode", + "RpcRespWifiGetBandMode", + "RpcRespWifiGetBandMode", "", - sizeof(RpcRespWifiGetProtocols), - 3, - rpc__resp__wifi_get_protocols__field_descriptors, - rpc__resp__wifi_get_protocols__field_indices_by_name, - 1, rpc__resp__wifi_get_protocols__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_protocols__init, + sizeof(RpcRespWifiGetBandMode), + 2, + rpc__resp__wifi_get_band_mode__field_descriptors, + rpc__resp__wifi_get_band_mode__field_indices_by_name, + 1, rpc__resp__wifi_get_band_mode__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_band_mode__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_bandwidths__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_inactive_time__field_descriptors[2] = { { "ifx", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetBandwidths, ifx), + offsetof(RpcReqWifiSetInactiveTime, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "bandwidths", + "sec", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetBandwidths, bandwidths), - &wifi_bandwidths__descriptor, + offsetof(RpcReqWifiSetInactiveTime, sec), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_bandwidths__field_indices_by_name[] = { - 1, /* field[1] = bandwidths */ +static const unsigned rpc__req__wifi_set_inactive_time__field_indices_by_name[] = { 0, /* field[0] = ifx */ + 1, /* field[1] = sec */ }; -static const ProtobufCIntRange rpc__req__wifi_set_bandwidths__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_inactive_time__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_bandwidths__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_inactive_time__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetBandwidths", - "RpcReqWifiSetBandwidths", - "RpcReqWifiSetBandwidths", + "Rpc_Req_WifiSetInactiveTime", + "RpcReqWifiSetInactiveTime", + "RpcReqWifiSetInactiveTime", "", - sizeof(RpcReqWifiSetBandwidths), + sizeof(RpcReqWifiSetInactiveTime), 2, - rpc__req__wifi_set_bandwidths__field_descriptors, - rpc__req__wifi_set_bandwidths__field_indices_by_name, - 1, rpc__req__wifi_set_bandwidths__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_bandwidths__init, + rpc__req__wifi_set_inactive_time__field_descriptors, + rpc__req__wifi_set_inactive_time__field_indices_by_name, + 1, rpc__req__wifi_set_inactive_time__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_inactive_time__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_bandwidths__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_inactive_time__field_descriptors[1] = { { "resp", @@ -18704,88 +19918,75 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_bandwidths__field_desc PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetBandwidths, resp), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "ifx", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetBandwidths, ifx), + offsetof(RpcRespWifiSetInactiveTime, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_bandwidths__field_indices_by_name[] = { - 1, /* field[1] = ifx */ +static const unsigned rpc__resp__wifi_set_inactive_time__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_bandwidths__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_inactive_time__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_bandwidths__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_inactive_time__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetBandwidths", - "RpcRespWifiSetBandwidths", - "RpcRespWifiSetBandwidths", + "Rpc_Resp_WifiSetInactiveTime", + "RpcRespWifiSetInactiveTime", + "RpcRespWifiSetInactiveTime", "", - sizeof(RpcRespWifiSetBandwidths), - 2, - rpc__resp__wifi_set_bandwidths__field_descriptors, - rpc__resp__wifi_set_bandwidths__field_indices_by_name, - 1, rpc__resp__wifi_set_bandwidths__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_bandwidths__init, + sizeof(RpcRespWifiSetInactiveTime), + 1, + rpc__resp__wifi_set_inactive_time__field_descriptors, + rpc__resp__wifi_set_inactive_time__field_indices_by_name, + 1, rpc__resp__wifi_set_inactive_time__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_inactive_time__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_get_bandwidths__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_get_inactive_time__field_descriptors[1] = { { "ifx", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiGetBandwidths, ifx), + offsetof(RpcReqWifiGetInactiveTime, ifx), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_get_bandwidths__field_indices_by_name[] = { +static const unsigned rpc__req__wifi_get_inactive_time__field_indices_by_name[] = { 0, /* field[0] = ifx */ }; -static const ProtobufCIntRange rpc__req__wifi_get_bandwidths__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_get_inactive_time__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_get_bandwidths__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_get_inactive_time__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetBandwidths", - "RpcReqWifiGetBandwidths", - "RpcReqWifiGetBandwidths", + "Rpc_Req_WifiGetInactiveTime", + "RpcReqWifiGetInactiveTime", + "RpcReqWifiGetInactiveTime", "", - sizeof(RpcReqWifiGetBandwidths), + sizeof(RpcReqWifiGetInactiveTime), 1, - rpc__req__wifi_get_bandwidths__field_descriptors, - rpc__req__wifi_get_bandwidths__field_indices_by_name, - 1, rpc__req__wifi_get_bandwidths__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_bandwidths__init, + rpc__req__wifi_get_inactive_time__field_descriptors, + rpc__req__wifi_get_inactive_time__field_indices_by_name, + 1, rpc__req__wifi_get_inactive_time__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_get_inactive_time__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_bandwidths__field_descriptors[3] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_get_inactive_time__field_descriptors[2] = { { "resp", @@ -18793,101 +19994,88 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_bandwidths__field_desc PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBandwidths, resp), + offsetof(RpcRespWifiGetInactiveTime, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ifx", + "sec", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBandwidths, ifx), - NULL, + offsetof(RpcRespWifiGetInactiveTime, sec), NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "bandwidths", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBandwidths, bandwidths), - &wifi_bandwidths__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_bandwidths__field_indices_by_name[] = { - 2, /* field[2] = bandwidths */ - 1, /* field[1] = ifx */ +static const unsigned rpc__resp__wifi_get_inactive_time__field_indices_by_name[] = { 0, /* field[0] = resp */ + 1, /* field[1] = sec */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_bandwidths__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_get_inactive_time__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 3 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_bandwidths__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_get_inactive_time__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetBandwidths", - "RpcRespWifiGetBandwidths", - "RpcRespWifiGetBandwidths", + "Rpc_Resp_WifiGetInactiveTime", + "RpcRespWifiGetInactiveTime", + "RpcRespWifiGetInactiveTime", "", - sizeof(RpcRespWifiGetBandwidths), - 3, - rpc__resp__wifi_get_bandwidths__field_descriptors, - rpc__resp__wifi_get_bandwidths__field_indices_by_name, - 1, rpc__resp__wifi_get_bandwidths__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_bandwidths__init, + sizeof(RpcRespWifiGetInactiveTime), + 2, + rpc__resp__wifi_get_inactive_time__field_descriptors, + rpc__resp__wifi_get_inactive_time__field_indices_by_name, + 1, rpc__resp__wifi_get_inactive_time__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_get_inactive_time__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_band__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_setup__field_descriptors[1] = { { - "band", + "setup_config", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetBand, band), - NULL, + offsetof(RpcReqWifiStaItwtSetup, setup_config), + &wifi_itwt_setup_config__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_band__field_indices_by_name[] = { - 0, /* field[0] = band */ +static const unsigned rpc__req__wifi_sta_itwt_setup__field_indices_by_name[] = { + 0, /* field[0] = setup_config */ }; -static const ProtobufCIntRange rpc__req__wifi_set_band__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_sta_itwt_setup__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_band__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_setup__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetBand", - "RpcReqWifiSetBand", - "RpcReqWifiSetBand", + "Rpc_Req_WifiStaItwtSetup", + "RpcReqWifiStaItwtSetup", + "RpcReqWifiStaItwtSetup", "", - sizeof(RpcReqWifiSetBand), + sizeof(RpcReqWifiStaItwtSetup), 1, - rpc__req__wifi_set_band__field_descriptors, - rpc__req__wifi_set_band__field_indices_by_name, - 1, rpc__req__wifi_set_band__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_band__init, + rpc__req__wifi_sta_itwt_setup__field_descriptors, + rpc__req__wifi_sta_itwt_setup__field_indices_by_name, + 1, rpc__req__wifi_sta_itwt_setup__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_setup__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_band__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_setup__field_descriptors[1] = { { "resp", @@ -18895,144 +20083,164 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_band__field_descriptor PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetBand, resp), + offsetof(RpcRespWifiStaItwtSetup, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_band__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_sta_itwt_setup__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_band__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_setup__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_band__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_setup__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetBand", - "RpcRespWifiSetBand", - "RpcRespWifiSetBand", + "Rpc_Resp_WifiStaItwtSetup", + "RpcRespWifiStaItwtSetup", + "RpcRespWifiStaItwtSetup", "", - sizeof(RpcRespWifiSetBand), + sizeof(RpcRespWifiStaItwtSetup), 1, - rpc__resp__wifi_set_band__field_descriptors, - rpc__resp__wifi_set_band__field_indices_by_name, - 1, rpc__resp__wifi_set_band__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_band__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_get_band__field_descriptors NULL -#define rpc__req__wifi_get_band__field_indices_by_name NULL -#define rpc__req__wifi_get_band__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_get_band__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetBand", - "RpcReqWifiGetBand", - "RpcReqWifiGetBand", - "", - sizeof(RpcReqWifiGetBand), - 0, - rpc__req__wifi_get_band__field_descriptors, - rpc__req__wifi_get_band__field_indices_by_name, - 0, rpc__req__wifi_get_band__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_band__init, + rpc__resp__wifi_sta_itwt_setup__field_descriptors, + rpc__resp__wifi_sta_itwt_setup__field_indices_by_name, + 1, rpc__resp__wifi_sta_itwt_setup__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_setup__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_band__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_teardown__field_descriptors[1] = { { - "resp", + "flow_id", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBand, resp), + offsetof(RpcReqWifiStaItwtTeardown, flow_id), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__req__wifi_sta_itwt_teardown__field_indices_by_name[] = { + 0, /* field[0] = flow_id */ +}; +static const ProtobufCIntRange rpc__req__wifi_sta_itwt_teardown__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_teardown__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStaItwtTeardown", + "RpcReqWifiStaItwtTeardown", + "RpcReqWifiStaItwtTeardown", + "", + sizeof(RpcReqWifiStaItwtTeardown), + 1, + rpc__req__wifi_sta_itwt_teardown__field_descriptors, + rpc__req__wifi_sta_itwt_teardown__field_indices_by_name, + 1, rpc__req__wifi_sta_itwt_teardown__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_teardown__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_teardown__field_descriptors[1] = +{ { - "band", - 2, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBand, band), + offsetof(RpcRespWifiStaItwtTeardown, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_band__field_indices_by_name[] = { - 1, /* field[1] = band */ +static const unsigned rpc__resp__wifi_sta_itwt_teardown__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_band__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_teardown__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_band__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_teardown__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetBand", - "RpcRespWifiGetBand", - "RpcRespWifiGetBand", + "Rpc_Resp_WifiStaItwtTeardown", + "RpcRespWifiStaItwtTeardown", + "RpcRespWifiStaItwtTeardown", "", - sizeof(RpcRespWifiGetBand), - 2, - rpc__resp__wifi_get_band__field_descriptors, - rpc__resp__wifi_get_band__field_indices_by_name, - 1, rpc__resp__wifi_get_band__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_band__init, + sizeof(RpcRespWifiStaItwtTeardown), + 1, + rpc__resp__wifi_sta_itwt_teardown__field_descriptors, + rpc__resp__wifi_sta_itwt_teardown__field_indices_by_name, + 1, rpc__resp__wifi_sta_itwt_teardown__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_teardown__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_band_mode__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_suspend__field_descriptors[2] = { { - "bandmode", + "flow_id", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetBandMode, bandmode), + offsetof(RpcReqWifiStaItwtSuspend, flow_id), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "suspend_time_ms", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcReqWifiStaItwtSuspend, suspend_time_ms), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_band_mode__field_indices_by_name[] = { - 0, /* field[0] = bandmode */ +static const unsigned rpc__req__wifi_sta_itwt_suspend__field_indices_by_name[] = { + 0, /* field[0] = flow_id */ + 1, /* field[1] = suspend_time_ms */ }; -static const ProtobufCIntRange rpc__req__wifi_set_band_mode__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_sta_itwt_suspend__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_band_mode__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_suspend__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetBandMode", - "RpcReqWifiSetBandMode", - "RpcReqWifiSetBandMode", + "Rpc_Req_WifiStaItwtSuspend", + "RpcReqWifiStaItwtSuspend", + "RpcReqWifiStaItwtSuspend", "", - sizeof(RpcReqWifiSetBandMode), - 1, - rpc__req__wifi_set_band_mode__field_descriptors, - rpc__req__wifi_set_band_mode__field_indices_by_name, - 1, rpc__req__wifi_set_band_mode__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_band_mode__init, + sizeof(RpcReqWifiStaItwtSuspend), + 2, + rpc__req__wifi_sta_itwt_suspend__field_descriptors, + rpc__req__wifi_sta_itwt_suspend__field_indices_by_name, + 1, rpc__req__wifi_sta_itwt_suspend__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_suspend__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_band_mode__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_suspend__field_descriptors[1] = { { "resp", @@ -19040,55 +20248,55 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_band_mode__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetBandMode, resp), + offsetof(RpcRespWifiStaItwtSuspend, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_band_mode__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_sta_itwt_suspend__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_band_mode__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_suspend__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_band_mode__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_suspend__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetBandMode", - "RpcRespWifiSetBandMode", - "RpcRespWifiSetBandMode", + "Rpc_Resp_WifiStaItwtSuspend", + "RpcRespWifiStaItwtSuspend", + "RpcRespWifiStaItwtSuspend", "", - sizeof(RpcRespWifiSetBandMode), + sizeof(RpcRespWifiStaItwtSuspend), 1, - rpc__resp__wifi_set_band_mode__field_descriptors, - rpc__resp__wifi_set_band_mode__field_indices_by_name, - 1, rpc__resp__wifi_set_band_mode__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_band_mode__init, + rpc__resp__wifi_sta_itwt_suspend__field_descriptors, + rpc__resp__wifi_sta_itwt_suspend__field_indices_by_name, + 1, rpc__resp__wifi_sta_itwt_suspend__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_suspend__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_get_band_mode__field_descriptors NULL -#define rpc__req__wifi_get_band_mode__field_indices_by_name NULL -#define rpc__req__wifi_get_band_mode__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_get_band_mode__descriptor = +#define rpc__req__wifi_sta_itwt_get_flow_id_status__field_descriptors NULL +#define rpc__req__wifi_sta_itwt_get_flow_id_status__field_indices_by_name NULL +#define rpc__req__wifi_sta_itwt_get_flow_id_status__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_get_flow_id_status__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetBandMode", - "RpcReqWifiGetBandMode", - "RpcReqWifiGetBandMode", + "Rpc_Req_WifiStaItwtGetFlowIdStatus", + "RpcReqWifiStaItwtGetFlowIdStatus", + "RpcReqWifiStaItwtGetFlowIdStatus", "", - sizeof(RpcReqWifiGetBandMode), + sizeof(RpcReqWifiStaItwtGetFlowIdStatus), 0, - rpc__req__wifi_get_band_mode__field_descriptors, - rpc__req__wifi_get_band_mode__field_indices_by_name, - 0, rpc__req__wifi_get_band_mode__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_band_mode__init, + rpc__req__wifi_sta_itwt_get_flow_id_status__field_descriptors, + rpc__req__wifi_sta_itwt_get_flow_id_status__field_indices_by_name, + 0, rpc__req__wifi_sta_itwt_get_flow_id_status__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_get_flow_id_status__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_band_mode__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_get_flow_id_status__field_descriptors[2] = { { "resp", @@ -19096,101 +20304,88 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_band_mode__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBandMode, resp), + offsetof(RpcRespWifiStaItwtGetFlowIdStatus, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "bandmode", + "flow_id_bitmap", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetBandMode, bandmode), + offsetof(RpcRespWifiStaItwtGetFlowIdStatus, flow_id_bitmap), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_band_mode__field_indices_by_name[] = { - 1, /* field[1] = bandmode */ +static const unsigned rpc__resp__wifi_sta_itwt_get_flow_id_status__field_indices_by_name[] = { + 1, /* field[1] = flow_id_bitmap */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_band_mode__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_get_flow_id_status__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_band_mode__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_get_flow_id_status__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetBandMode", - "RpcRespWifiGetBandMode", - "RpcRespWifiGetBandMode", + "Rpc_Resp_WifiStaItwtGetFlowIdStatus", + "RpcRespWifiStaItwtGetFlowIdStatus", + "RpcRespWifiStaItwtGetFlowIdStatus", "", - sizeof(RpcRespWifiGetBandMode), + sizeof(RpcRespWifiStaItwtGetFlowIdStatus), 2, - rpc__resp__wifi_get_band_mode__field_descriptors, - rpc__resp__wifi_get_band_mode__field_indices_by_name, - 1, rpc__resp__wifi_get_band_mode__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_band_mode__init, + rpc__resp__wifi_sta_itwt_get_flow_id_status__field_descriptors, + rpc__resp__wifi_sta_itwt_get_flow_id_status__field_indices_by_name, + 1, rpc__resp__wifi_sta_itwt_get_flow_id_status__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_get_flow_id_status__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_inactive_time__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_send_probe_req__field_descriptors[1] = { { - "ifx", + "timeout_ms", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetInactiveTime, ifx), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "sec", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetInactiveTime, sec), + offsetof(RpcReqWifiStaItwtSendProbeReq, timeout_ms), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_set_inactive_time__field_indices_by_name[] = { - 0, /* field[0] = ifx */ - 1, /* field[1] = sec */ +static const unsigned rpc__req__wifi_sta_itwt_send_probe_req__field_indices_by_name[] = { + 0, /* field[0] = timeout_ms */ }; -static const ProtobufCIntRange rpc__req__wifi_set_inactive_time__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_sta_itwt_send_probe_req__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_set_inactive_time__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_send_probe_req__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetInactiveTime", - "RpcReqWifiSetInactiveTime", - "RpcReqWifiSetInactiveTime", + "Rpc_Req_WifiStaItwtSendProbeReq", + "RpcReqWifiStaItwtSendProbeReq", + "RpcReqWifiStaItwtSendProbeReq", "", - sizeof(RpcReqWifiSetInactiveTime), - 2, - rpc__req__wifi_set_inactive_time__field_descriptors, - rpc__req__wifi_set_inactive_time__field_indices_by_name, - 1, rpc__req__wifi_set_inactive_time__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_inactive_time__init, + sizeof(RpcReqWifiStaItwtSendProbeReq), + 1, + rpc__req__wifi_sta_itwt_send_probe_req__field_descriptors, + rpc__req__wifi_sta_itwt_send_probe_req__field_indices_by_name, + 1, rpc__req__wifi_sta_itwt_send_probe_req__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_send_probe_req__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_inactive_time__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_send_probe_req__field_descriptors[1] = { { "resp", @@ -19198,75 +20393,75 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_set_inactive_time__field_d PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetInactiveTime, resp), + offsetof(RpcRespWifiStaItwtSendProbeReq, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_inactive_time__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_sta_itwt_send_probe_req__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_inactive_time__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_send_probe_req__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_inactive_time__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_send_probe_req__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetInactiveTime", - "RpcRespWifiSetInactiveTime", - "RpcRespWifiSetInactiveTime", + "Rpc_Resp_WifiStaItwtSendProbeReq", + "RpcRespWifiStaItwtSendProbeReq", + "RpcRespWifiStaItwtSendProbeReq", "", - sizeof(RpcRespWifiSetInactiveTime), + sizeof(RpcRespWifiStaItwtSendProbeReq), 1, - rpc__resp__wifi_set_inactive_time__field_descriptors, - rpc__resp__wifi_set_inactive_time__field_indices_by_name, - 1, rpc__resp__wifi_set_inactive_time__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_inactive_time__init, + rpc__resp__wifi_sta_itwt_send_probe_req__field_descriptors, + rpc__resp__wifi_sta_itwt_send_probe_req__field_indices_by_name, + 1, rpc__resp__wifi_sta_itwt_send_probe_req__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_send_probe_req__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_get_inactive_time__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_set_target_wake_time_offset__field_descriptors[1] = { { - "ifx", + "offset_us", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiGetInactiveTime, ifx), + offsetof(RpcReqWifiStaItwtSetTargetWakeTimeOffset, offset_us), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_get_inactive_time__field_indices_by_name[] = { - 0, /* field[0] = ifx */ +static const unsigned rpc__req__wifi_sta_itwt_set_target_wake_time_offset__field_indices_by_name[] = { + 0, /* field[0] = offset_us */ }; -static const ProtobufCIntRange rpc__req__wifi_get_inactive_time__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_sta_itwt_set_target_wake_time_offset__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_get_inactive_time__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_set_target_wake_time_offset__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiGetInactiveTime", - "RpcReqWifiGetInactiveTime", - "RpcReqWifiGetInactiveTime", + "Rpc_Req_WifiStaItwtSetTargetWakeTimeOffset", + "RpcReqWifiStaItwtSetTargetWakeTimeOffset", + "RpcReqWifiStaItwtSetTargetWakeTimeOffset", "", - sizeof(RpcReqWifiGetInactiveTime), + sizeof(RpcReqWifiStaItwtSetTargetWakeTimeOffset), 1, - rpc__req__wifi_get_inactive_time__field_descriptors, - rpc__req__wifi_get_inactive_time__field_indices_by_name, - 1, rpc__req__wifi_get_inactive_time__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_get_inactive_time__init, + rpc__req__wifi_sta_itwt_set_target_wake_time_offset__field_descriptors, + rpc__req__wifi_sta_itwt_set_target_wake_time_offset__field_indices_by_name, + 1, rpc__req__wifi_sta_itwt_set_target_wake_time_offset__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_set_target_wake_time_offset__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_get_inactive_time__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__field_descriptors[1] = { { "resp", @@ -19274,88 +20469,75 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_get_inactive_time__field_d PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetInactiveTime, resp), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "sec", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(RpcRespWifiGetInactiveTime, sec), + offsetof(RpcRespWifiStaItwtSetTargetWakeTimeOffset, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_get_inactive_time__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__field_indices_by_name[] = { 0, /* field[0] = resp */ - 1, /* field[1] = sec */ }; -static const ProtobufCIntRange rpc__resp__wifi_get_inactive_time__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_get_inactive_time__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiGetInactiveTime", - "RpcRespWifiGetInactiveTime", - "RpcRespWifiGetInactiveTime", + "Rpc_Resp_WifiStaItwtSetTargetWakeTimeOffset", + "RpcRespWifiStaItwtSetTargetWakeTimeOffset", + "RpcRespWifiStaItwtSetTargetWakeTimeOffset", "", - sizeof(RpcRespWifiGetInactiveTime), - 2, - rpc__resp__wifi_get_inactive_time__field_descriptors, - rpc__resp__wifi_get_inactive_time__field_indices_by_name, - 1, rpc__resp__wifi_get_inactive_time__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_get_inactive_time__init, + sizeof(RpcRespWifiStaItwtSetTargetWakeTimeOffset), + 1, + rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__field_descriptors, + rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__field_indices_by_name, + 1, rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_setup__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_sta_twt_config__field_descriptors[1] = { { - "setup_config", + "config", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcReqWifiStaItwtSetup, setup_config), - &wifi_itwt_setup_config__descriptor, + offsetof(RpcReqWifiStaTwtConfig, config), + &wifi_twt_config__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_sta_itwt_setup__field_indices_by_name[] = { - 0, /* field[0] = setup_config */ +static const unsigned rpc__req__wifi_sta_twt_config__field_indices_by_name[] = { + 0, /* field[0] = config */ }; -static const ProtobufCIntRange rpc__req__wifi_sta_itwt_setup__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_sta_twt_config__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_setup__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_sta_twt_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaItwtSetup", - "RpcReqWifiStaItwtSetup", - "RpcReqWifiStaItwtSetup", + "Rpc_Req_WifiStaTwtConfig", + "RpcReqWifiStaTwtConfig", + "RpcReqWifiStaTwtConfig", "", - sizeof(RpcReqWifiStaItwtSetup), + sizeof(RpcReqWifiStaTwtConfig), 1, - rpc__req__wifi_sta_itwt_setup__field_descriptors, - rpc__req__wifi_sta_itwt_setup__field_indices_by_name, - 1, rpc__req__wifi_sta_itwt_setup__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_setup__init, + rpc__req__wifi_sta_twt_config__field_descriptors, + rpc__req__wifi_sta_twt_config__field_indices_by_name, + 1, rpc__req__wifi_sta_twt_config__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_twt_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_setup__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_twt_config__field_descriptors[1] = { { "resp", @@ -19363,385 +20545,274 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_setup__field_desc PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaItwtSetup, resp), + offsetof(RpcRespWifiStaTwtConfig, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_itwt_setup__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_sta_twt_config__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_setup__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_twt_config__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_setup__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_twt_config__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaItwtSetup", - "RpcRespWifiStaItwtSetup", - "RpcRespWifiStaItwtSetup", + "Rpc_Resp_WifiStaTwtConfig", + "RpcRespWifiStaTwtConfig", + "RpcRespWifiStaTwtConfig", "", - sizeof(RpcRespWifiStaItwtSetup), + sizeof(RpcRespWifiStaTwtConfig), 1, - rpc__resp__wifi_sta_itwt_setup__field_descriptors, - rpc__resp__wifi_sta_itwt_setup__field_indices_by_name, - 1, rpc__resp__wifi_sta_itwt_setup__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_setup__init, + rpc__resp__wifi_sta_twt_config__field_descriptors, + rpc__resp__wifi_sta_twt_config__field_indices_by_name, + 1, rpc__resp__wifi_sta_twt_config__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_twt_config__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_teardown__field_descriptors[1] = +#define rpc__req__get_coprocessor_fw_version__field_descriptors NULL +#define rpc__req__get_coprocessor_fw_version__field_indices_by_name NULL +#define rpc__req__get_coprocessor_fw_version__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__get_coprocessor_fw_version__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_GetCoprocessorFwVersion", + "RpcReqGetCoprocessorFwVersion", + "RpcReqGetCoprocessorFwVersion", + "", + sizeof(RpcReqGetCoprocessorFwVersion), + 0, + rpc__req__get_coprocessor_fw_version__field_descriptors, + rpc__req__get_coprocessor_fw_version__field_indices_by_name, + 0, rpc__req__get_coprocessor_fw_version__number_ranges, + (ProtobufCMessageInit) rpc__req__get_coprocessor_fw_version__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__get_coprocessor_fw_version__field_descriptors[4] = { { - "flow_id", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiStaItwtTeardown, flow_id), + offsetof(RpcRespGetCoprocessorFwVersion, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__req__wifi_sta_itwt_teardown__field_indices_by_name[] = { - 0, /* field[0] = flow_id */ -}; -static const ProtobufCIntRange rpc__req__wifi_sta_itwt_teardown__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_teardown__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaItwtTeardown", - "RpcReqWifiStaItwtTeardown", - "RpcReqWifiStaItwtTeardown", - "", - sizeof(RpcReqWifiStaItwtTeardown), - 1, - rpc__req__wifi_sta_itwt_teardown__field_descriptors, - rpc__req__wifi_sta_itwt_teardown__field_indices_by_name, - 1, rpc__req__wifi_sta_itwt_teardown__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_teardown__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_teardown__field_descriptors[1] = -{ { - "resp", - 1, + "major1", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaItwtTeardown, resp), + offsetof(RpcRespGetCoprocessorFwVersion, major1), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "minor1", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(RpcRespGetCoprocessorFwVersion, minor1), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "patch1", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(RpcRespGetCoprocessorFwVersion, patch1), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_itwt_teardown__field_indices_by_name[] = { +static const unsigned rpc__resp__get_coprocessor_fw_version__field_indices_by_name[] = { + 1, /* field[1] = major1 */ + 2, /* field[2] = minor1 */ + 3, /* field[3] = patch1 */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_teardown__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__get_coprocessor_fw_version__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 4 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_teardown__descriptor = +const ProtobufCMessageDescriptor rpc__resp__get_coprocessor_fw_version__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaItwtTeardown", - "RpcRespWifiStaItwtTeardown", - "RpcRespWifiStaItwtTeardown", - "", - sizeof(RpcRespWifiStaItwtTeardown), - 1, - rpc__resp__wifi_sta_itwt_teardown__field_descriptors, - rpc__resp__wifi_sta_itwt_teardown__field_indices_by_name, - 1, rpc__resp__wifi_sta_itwt_teardown__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_teardown__init, + "Rpc_Resp_GetCoprocessorFwVersion", + "RpcRespGetCoprocessorFwVersion", + "RpcRespGetCoprocessorFwVersion", + "", + sizeof(RpcRespGetCoprocessorFwVersion), + 4, + rpc__resp__get_coprocessor_fw_version__field_descriptors, + rpc__resp__get_coprocessor_fw_version__field_indices_by_name, + 1, rpc__resp__get_coprocessor_fw_version__number_ranges, + (ProtobufCMessageInit) rpc__resp__get_coprocessor_fw_version__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_suspend__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__set_dhcp_dns_status__field_descriptors[9] = { { - "flow_id", + "iface", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiStaItwtSuspend, flow_id), + offsetof(RpcReqSetDhcpDnsStatus, iface), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "suspend_time_ms", + "net_link_up", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiStaItwtSuspend, suspend_time_ms), + offsetof(RpcReqSetDhcpDnsStatus, net_link_up), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__req__wifi_sta_itwt_suspend__field_indices_by_name[] = { - 0, /* field[0] = flow_id */ - 1, /* field[1] = suspend_time_ms */ -}; -static const ProtobufCIntRange rpc__req__wifi_sta_itwt_suspend__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_suspend__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaItwtSuspend", - "RpcReqWifiStaItwtSuspend", - "RpcReqWifiStaItwtSuspend", - "", - sizeof(RpcReqWifiStaItwtSuspend), - 2, - rpc__req__wifi_sta_itwt_suspend__field_descriptors, - rpc__req__wifi_sta_itwt_suspend__field_indices_by_name, - 1, rpc__req__wifi_sta_itwt_suspend__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_suspend__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_suspend__field_descriptors[1] = -{ { - "resp", - 1, + "dhcp_up", + 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaItwtSuspend, resp), + offsetof(RpcReqSetDhcpDnsStatus, dhcp_up), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__resp__wifi_sta_itwt_suspend__field_indices_by_name[] = { - 0, /* field[0] = resp */ -}; -static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_suspend__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_suspend__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaItwtSuspend", - "RpcRespWifiStaItwtSuspend", - "RpcRespWifiStaItwtSuspend", - "", - sizeof(RpcRespWifiStaItwtSuspend), - 1, - rpc__resp__wifi_sta_itwt_suspend__field_descriptors, - rpc__resp__wifi_sta_itwt_suspend__field_indices_by_name, - 1, rpc__resp__wifi_sta_itwt_suspend__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_suspend__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__wifi_sta_itwt_get_flow_id_status__field_descriptors NULL -#define rpc__req__wifi_sta_itwt_get_flow_id_status__field_indices_by_name NULL -#define rpc__req__wifi_sta_itwt_get_flow_id_status__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_get_flow_id_status__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaItwtGetFlowIdStatus", - "RpcReqWifiStaItwtGetFlowIdStatus", - "RpcReqWifiStaItwtGetFlowIdStatus", - "", - sizeof(RpcReqWifiStaItwtGetFlowIdStatus), - 0, - rpc__req__wifi_sta_itwt_get_flow_id_status__field_descriptors, - rpc__req__wifi_sta_itwt_get_flow_id_status__field_indices_by_name, - 0, rpc__req__wifi_sta_itwt_get_flow_id_status__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_get_flow_id_status__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_get_flow_id_status__field_descriptors[2] = -{ { - "resp", - 1, + "dhcp_ip", + 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaItwtGetFlowIdStatus, resp), + offsetof(RpcReqSetDhcpDnsStatus, dhcp_ip), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "flow_id_bitmap", - 2, + "dhcp_nm", + 5, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaItwtGetFlowIdStatus, flow_id_bitmap), + offsetof(RpcReqSetDhcpDnsStatus, dhcp_nm), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__resp__wifi_sta_itwt_get_flow_id_status__field_indices_by_name[] = { - 1, /* field[1] = flow_id_bitmap */ - 0, /* field[0] = resp */ -}; -static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_get_flow_id_status__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_get_flow_id_status__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaItwtGetFlowIdStatus", - "RpcRespWifiStaItwtGetFlowIdStatus", - "RpcRespWifiStaItwtGetFlowIdStatus", - "", - sizeof(RpcRespWifiStaItwtGetFlowIdStatus), - 2, - rpc__resp__wifi_sta_itwt_get_flow_id_status__field_descriptors, - rpc__resp__wifi_sta_itwt_get_flow_id_status__field_indices_by_name, - 1, rpc__resp__wifi_sta_itwt_get_flow_id_status__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_get_flow_id_status__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_send_probe_req__field_descriptors[1] = -{ { - "timeout_ms", - 1, + "dhcp_gw", + 6, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcReqWifiStaItwtSendProbeReq, timeout_ms), + offsetof(RpcReqSetDhcpDnsStatus, dhcp_gw), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__req__wifi_sta_itwt_send_probe_req__field_indices_by_name[] = { - 0, /* field[0] = timeout_ms */ -}; -static const ProtobufCIntRange rpc__req__wifi_sta_itwt_send_probe_req__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_send_probe_req__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaItwtSendProbeReq", - "RpcReqWifiStaItwtSendProbeReq", - "RpcReqWifiStaItwtSendProbeReq", - "", - sizeof(RpcReqWifiStaItwtSendProbeReq), - 1, - rpc__req__wifi_sta_itwt_send_probe_req__field_descriptors, - rpc__req__wifi_sta_itwt_send_probe_req__field_indices_by_name, - 1, rpc__req__wifi_sta_itwt_send_probe_req__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_send_probe_req__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_send_probe_req__field_descriptors[1] = -{ { - "resp", - 1, + "dns_up", + 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaItwtSendProbeReq, resp), + offsetof(RpcReqSetDhcpDnsStatus, dns_up), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__resp__wifi_sta_itwt_send_probe_req__field_indices_by_name[] = { - 0, /* field[0] = resp */ -}; -static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_send_probe_req__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_send_probe_req__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaItwtSendProbeReq", - "RpcRespWifiStaItwtSendProbeReq", - "RpcRespWifiStaItwtSendProbeReq", - "", - sizeof(RpcRespWifiStaItwtSendProbeReq), - 1, - rpc__resp__wifi_sta_itwt_send_probe_req__field_descriptors, - rpc__resp__wifi_sta_itwt_send_probe_req__field_indices_by_name, - 1, rpc__resp__wifi_sta_itwt_send_probe_req__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_send_probe_req__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__req__wifi_sta_itwt_set_target_wake_time_offset__field_descriptors[1] = -{ { - "offset_us", - 1, + "dns_ip", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcReqSetDhcpDnsStatus, dns_ip), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dns_type", + 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiStaItwtSetTargetWakeTimeOffset, offset_us), + offsetof(RpcReqSetDhcpDnsStatus, dns_type), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_sta_itwt_set_target_wake_time_offset__field_indices_by_name[] = { - 0, /* field[0] = offset_us */ +static const unsigned rpc__req__set_dhcp_dns_status__field_indices_by_name[] = { + 5, /* field[5] = dhcp_gw */ + 3, /* field[3] = dhcp_ip */ + 4, /* field[4] = dhcp_nm */ + 2, /* field[2] = dhcp_up */ + 7, /* field[7] = dns_ip */ + 8, /* field[8] = dns_type */ + 6, /* field[6] = dns_up */ + 0, /* field[0] = iface */ + 1, /* field[1] = net_link_up */ }; -static const ProtobufCIntRange rpc__req__wifi_sta_itwt_set_target_wake_time_offset__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__set_dhcp_dns_status__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 9 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_sta_itwt_set_target_wake_time_offset__descriptor = +const ProtobufCMessageDescriptor rpc__req__set_dhcp_dns_status__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaItwtSetTargetWakeTimeOffset", - "RpcReqWifiStaItwtSetTargetWakeTimeOffset", - "RpcReqWifiStaItwtSetTargetWakeTimeOffset", + "Rpc_Req_SetDhcpDnsStatus", + "RpcReqSetDhcpDnsStatus", + "RpcReqSetDhcpDnsStatus", "", - sizeof(RpcReqWifiStaItwtSetTargetWakeTimeOffset), - 1, - rpc__req__wifi_sta_itwt_set_target_wake_time_offset__field_descriptors, - rpc__req__wifi_sta_itwt_set_target_wake_time_offset__field_indices_by_name, - 1, rpc__req__wifi_sta_itwt_set_target_wake_time_offset__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_itwt_set_target_wake_time_offset__init, + sizeof(RpcReqSetDhcpDnsStatus), + 9, + rpc__req__set_dhcp_dns_status__field_descriptors, + rpc__req__set_dhcp_dns_status__field_indices_by_name, + 1, rpc__req__set_dhcp_dns_status__number_ranges, + (ProtobufCMessageInit) rpc__req__set_dhcp_dns_status__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__set_dhcp_dns_status__field_descriptors[1] = { { "resp", @@ -19749,581 +20820,883 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_itwt_set_target_wake_t PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaItwtSetTargetWakeTimeOffset, resp), + offsetof(RpcRespSetDhcpDnsStatus, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__field_indices_by_name[] = { +static const unsigned rpc__resp__set_dhcp_dns_status__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__set_dhcp_dns_status__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__descriptor = +const ProtobufCMessageDescriptor rpc__resp__set_dhcp_dns_status__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaItwtSetTargetWakeTimeOffset", - "RpcRespWifiStaItwtSetTargetWakeTimeOffset", - "RpcRespWifiStaItwtSetTargetWakeTimeOffset", + "Rpc_Resp_SetDhcpDnsStatus", + "RpcRespSetDhcpDnsStatus", + "RpcRespSetDhcpDnsStatus", "", - sizeof(RpcRespWifiStaItwtSetTargetWakeTimeOffset), + sizeof(RpcRespSetDhcpDnsStatus), 1, - rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__field_descriptors, - rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__field_indices_by_name, - 1, rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_itwt_set_target_wake_time_offset__init, + rpc__resp__set_dhcp_dns_status__field_descriptors, + rpc__resp__set_dhcp_dns_status__field_indices_by_name, + 1, rpc__resp__set_dhcp_dns_status__number_ranges, + (ProtobufCMessageInit) rpc__resp__set_dhcp_dns_status__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_sta_twt_config__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__get_dhcp_dns_status__field_descriptors[1] = { { - "config", + "iface", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiStaTwtConfig, config), - &wifi_twt_config__descriptor, + offsetof(RpcReqGetDhcpDnsStatus, iface), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__wifi_sta_twt_config__field_indices_by_name[] = { - 0, /* field[0] = config */ +static const unsigned rpc__req__get_dhcp_dns_status__field_indices_by_name[] = { + 0, /* field[0] = iface */ }; -static const ProtobufCIntRange rpc__req__wifi_sta_twt_config__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__get_dhcp_dns_status__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__wifi_sta_twt_config__descriptor = +const ProtobufCMessageDescriptor rpc__req__get_dhcp_dns_status__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaTwtConfig", - "RpcReqWifiStaTwtConfig", - "RpcReqWifiStaTwtConfig", + "Rpc_Req_GetDhcpDnsStatus", + "RpcReqGetDhcpDnsStatus", + "RpcReqGetDhcpDnsStatus", "", - sizeof(RpcReqWifiStaTwtConfig), + sizeof(RpcReqGetDhcpDnsStatus), 1, - rpc__req__wifi_sta_twt_config__field_descriptors, - rpc__req__wifi_sta_twt_config__field_indices_by_name, - 1, rpc__req__wifi_sta_twt_config__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_twt_config__init, + rpc__req__get_dhcp_dns_status__field_descriptors, + rpc__req__get_dhcp_dns_status__field_indices_by_name, + 1, rpc__req__get_dhcp_dns_status__number_ranges, + (ProtobufCMessageInit) rpc__req__get_dhcp_dns_status__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_twt_config__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__get_dhcp_dns_status__field_descriptors[10] = { { - "resp", + "iface", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaTwtConfig, resp), + offsetof(RpcRespGetDhcpDnsStatus, iface), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "net_link_up", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespGetDhcpDnsStatus, net_link_up), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dhcp_up", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespGetDhcpDnsStatus, dhcp_up), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dhcp_ip", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcRespGetDhcpDnsStatus, dhcp_ip), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dhcp_nm", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcRespGetDhcpDnsStatus, dhcp_nm), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dhcp_gw", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcRespGetDhcpDnsStatus, dhcp_gw), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dns_up", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespGetDhcpDnsStatus, dns_up), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dns_ip", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcRespGetDhcpDnsStatus, dns_ip), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dns_type", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespGetDhcpDnsStatus, dns_type), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespGetDhcpDnsStatus, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_twt_config__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__resp__get_dhcp_dns_status__field_indices_by_name[] = { + 5, /* field[5] = dhcp_gw */ + 3, /* field[3] = dhcp_ip */ + 4, /* field[4] = dhcp_nm */ + 2, /* field[2] = dhcp_up */ + 7, /* field[7] = dns_ip */ + 8, /* field[8] = dns_type */ + 6, /* field[6] = dns_up */ + 0, /* field[0] = iface */ + 1, /* field[1] = net_link_up */ + 9, /* field[9] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_twt_config__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__get_dhcp_dns_status__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_twt_config__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaTwtConfig", - "RpcRespWifiStaTwtConfig", - "RpcRespWifiStaTwtConfig", - "", - sizeof(RpcRespWifiStaTwtConfig), - 1, - rpc__resp__wifi_sta_twt_config__field_descriptors, - rpc__resp__wifi_sta_twt_config__field_indices_by_name, - 1, rpc__resp__wifi_sta_twt_config__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_twt_config__init, - NULL,NULL,NULL /* reserved[123] */ + { 0, 10 } }; -#define rpc__req__get_coprocessor_fw_version__field_descriptors NULL -#define rpc__req__get_coprocessor_fw_version__field_indices_by_name NULL -#define rpc__req__get_coprocessor_fw_version__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__get_coprocessor_fw_version__descriptor = +const ProtobufCMessageDescriptor rpc__resp__get_dhcp_dns_status__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_GetCoprocessorFwVersion", - "RpcReqGetCoprocessorFwVersion", - "RpcReqGetCoprocessorFwVersion", + "Rpc_Resp_GetDhcpDnsStatus", + "RpcRespGetDhcpDnsStatus", + "RpcRespGetDhcpDnsStatus", "", - sizeof(RpcReqGetCoprocessorFwVersion), - 0, - rpc__req__get_coprocessor_fw_version__field_descriptors, - rpc__req__get_coprocessor_fw_version__field_indices_by_name, - 0, rpc__req__get_coprocessor_fw_version__number_ranges, - (ProtobufCMessageInit) rpc__req__get_coprocessor_fw_version__init, + sizeof(RpcRespGetDhcpDnsStatus), + 10, + rpc__resp__get_dhcp_dns_status__field_descriptors, + rpc__resp__get_dhcp_dns_status__field_indices_by_name, + 1, rpc__resp__get_dhcp_dns_status__number_ranges, + (ProtobufCMessageInit) rpc__resp__get_dhcp_dns_status__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__get_coprocessor_fw_version__field_descriptors[4] = +static const ProtobufCFieldDescriptor rpc__req__supp_dpp_init__field_descriptors[1] = { { - "resp", + "cb", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcRespGetCoprocessorFwVersion, resp), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "major1", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(RpcRespGetCoprocessorFwVersion, major1), + offsetof(RpcReqSuppDppInit, cb), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__req__supp_dpp_init__field_indices_by_name[] = { + 0, /* field[0] = cb */ +}; +static const ProtobufCIntRange rpc__req__supp_dpp_init__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__req__supp_dpp_init__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_SuppDppInit", + "RpcReqSuppDppInit", + "RpcReqSuppDppInit", + "", + sizeof(RpcReqSuppDppInit), + 1, + rpc__req__supp_dpp_init__field_descriptors, + rpc__req__supp_dpp_init__field_indices_by_name, + 1, rpc__req__supp_dpp_init__number_ranges, + (ProtobufCMessageInit) rpc__req__supp_dpp_init__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__supp_dpp_init__field_descriptors[1] = +{ { - "minor1", - 3, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetCoprocessorFwVersion, minor1), + offsetof(RpcRespSuppDppInit, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__supp_dpp_init__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__supp_dpp_init__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__supp_dpp_init__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_SuppDppInit", + "RpcRespSuppDppInit", + "RpcRespSuppDppInit", + "", + sizeof(RpcRespSuppDppInit), + 1, + rpc__resp__supp_dpp_init__field_descriptors, + rpc__resp__supp_dpp_init__field_indices_by_name, + 1, rpc__resp__supp_dpp_init__number_ranges, + (ProtobufCMessageInit) rpc__resp__supp_dpp_init__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define rpc__req__supp_dpp_deinit__field_descriptors NULL +#define rpc__req__supp_dpp_deinit__field_indices_by_name NULL +#define rpc__req__supp_dpp_deinit__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__supp_dpp_deinit__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_SuppDppDeinit", + "RpcReqSuppDppDeinit", + "RpcReqSuppDppDeinit", + "", + sizeof(RpcReqSuppDppDeinit), + 0, + rpc__req__supp_dpp_deinit__field_descriptors, + rpc__req__supp_dpp_deinit__field_indices_by_name, + 0, rpc__req__supp_dpp_deinit__number_ranges, + (ProtobufCMessageInit) rpc__req__supp_dpp_deinit__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__supp_dpp_deinit__field_descriptors[1] = +{ { - "patch1", - 4, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetCoprocessorFwVersion, patch1), + offsetof(RpcRespSuppDppDeinit, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__get_coprocessor_fw_version__field_indices_by_name[] = { - 1, /* field[1] = major1 */ - 2, /* field[2] = minor1 */ - 3, /* field[3] = patch1 */ +static const unsigned rpc__resp__supp_dpp_deinit__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__get_coprocessor_fw_version__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__supp_dpp_deinit__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 4 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__get_coprocessor_fw_version__descriptor = +const ProtobufCMessageDescriptor rpc__resp__supp_dpp_deinit__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_GetCoprocessorFwVersion", - "RpcRespGetCoprocessorFwVersion", - "RpcRespGetCoprocessorFwVersion", + "Rpc_Resp_SuppDppDeinit", + "RpcRespSuppDppDeinit", + "RpcRespSuppDppDeinit", "", - sizeof(RpcRespGetCoprocessorFwVersion), - 4, - rpc__resp__get_coprocessor_fw_version__field_descriptors, - rpc__resp__get_coprocessor_fw_version__field_indices_by_name, - 1, rpc__resp__get_coprocessor_fw_version__number_ranges, - (ProtobufCMessageInit) rpc__resp__get_coprocessor_fw_version__init, + sizeof(RpcRespSuppDppDeinit), + 1, + rpc__resp__supp_dpp_deinit__field_descriptors, + rpc__resp__supp_dpp_deinit__field_indices_by_name, + 1, rpc__resp__supp_dpp_deinit__number_ranges, + (ProtobufCMessageInit) rpc__resp__supp_dpp_deinit__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__set_dhcp_dns_status__field_descriptors[9] = +static const ProtobufCFieldDescriptor rpc__req__supp_dpp_bootstrap_gen__field_descriptors[4] = { { - "iface", + "chan_list", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcReqSetDhcpDnsStatus, iface), + offsetof(RpcReqSuppDppBootstrapGen, chan_list), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "net_link_up", + "type", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqSetDhcpDnsStatus, net_link_up), + offsetof(RpcReqSuppDppBootstrapGen, type), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dhcp_up", + "key", 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcReqSetDhcpDnsStatus, dhcp_up), + offsetof(RpcReqSuppDppBootstrapGen, key), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dhcp_ip", + "info", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcReqSetDhcpDnsStatus, dhcp_ip), + offsetof(RpcReqSuppDppBootstrapGen, info), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__req__supp_dpp_bootstrap_gen__field_indices_by_name[] = { + 0, /* field[0] = chan_list */ + 3, /* field[3] = info */ + 2, /* field[2] = key */ + 1, /* field[1] = type */ +}; +static const ProtobufCIntRange rpc__req__supp_dpp_bootstrap_gen__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor rpc__req__supp_dpp_bootstrap_gen__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_SuppDppBootstrapGen", + "RpcReqSuppDppBootstrapGen", + "RpcReqSuppDppBootstrapGen", + "", + sizeof(RpcReqSuppDppBootstrapGen), + 4, + rpc__req__supp_dpp_bootstrap_gen__field_descriptors, + rpc__req__supp_dpp_bootstrap_gen__field_indices_by_name, + 1, rpc__req__supp_dpp_bootstrap_gen__number_ranges, + (ProtobufCMessageInit) rpc__req__supp_dpp_bootstrap_gen__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__supp_dpp_bootstrap_gen__field_descriptors[1] = +{ { - "dhcp_nm", - 5, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqSetDhcpDnsStatus, dhcp_nm), + offsetof(RpcRespSuppDppBootstrapGen, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__supp_dpp_bootstrap_gen__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__supp_dpp_bootstrap_gen__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__supp_dpp_bootstrap_gen__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_SuppDppBootstrapGen", + "RpcRespSuppDppBootstrapGen", + "RpcRespSuppDppBootstrapGen", + "", + sizeof(RpcRespSuppDppBootstrapGen), + 1, + rpc__resp__supp_dpp_bootstrap_gen__field_descriptors, + rpc__resp__supp_dpp_bootstrap_gen__field_indices_by_name, + 1, rpc__resp__supp_dpp_bootstrap_gen__number_ranges, + (ProtobufCMessageInit) rpc__resp__supp_dpp_bootstrap_gen__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define rpc__req__supp_dpp_start_listen__field_descriptors NULL +#define rpc__req__supp_dpp_start_listen__field_indices_by_name NULL +#define rpc__req__supp_dpp_start_listen__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__supp_dpp_start_listen__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_SuppDppStartListen", + "RpcReqSuppDppStartListen", + "RpcReqSuppDppStartListen", + "", + sizeof(RpcReqSuppDppStartListen), + 0, + rpc__req__supp_dpp_start_listen__field_descriptors, + rpc__req__supp_dpp_start_listen__field_indices_by_name, + 0, rpc__req__supp_dpp_start_listen__number_ranges, + (ProtobufCMessageInit) rpc__req__supp_dpp_start_listen__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__supp_dpp_start_listen__field_descriptors[1] = +{ { - "dhcp_gw", - 6, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqSetDhcpDnsStatus, dhcp_gw), + offsetof(RpcRespSuppDppStartListen, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__supp_dpp_start_listen__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__supp_dpp_start_listen__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__supp_dpp_start_listen__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_SuppDppStartListen", + "RpcRespSuppDppStartListen", + "RpcRespSuppDppStartListen", + "", + sizeof(RpcRespSuppDppStartListen), + 1, + rpc__resp__supp_dpp_start_listen__field_descriptors, + rpc__resp__supp_dpp_start_listen__field_indices_by_name, + 1, rpc__resp__supp_dpp_start_listen__number_ranges, + (ProtobufCMessageInit) rpc__resp__supp_dpp_start_listen__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define rpc__req__supp_dpp_stop_listen__field_descriptors NULL +#define rpc__req__supp_dpp_stop_listen__field_indices_by_name NULL +#define rpc__req__supp_dpp_stop_listen__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__supp_dpp_stop_listen__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_SuppDppStopListen", + "RpcReqSuppDppStopListen", + "RpcReqSuppDppStopListen", + "", + sizeof(RpcReqSuppDppStopListen), + 0, + rpc__req__supp_dpp_stop_listen__field_descriptors, + rpc__req__supp_dpp_stop_listen__field_indices_by_name, + 0, rpc__req__supp_dpp_stop_listen__number_ranges, + (ProtobufCMessageInit) rpc__req__supp_dpp_stop_listen__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__supp_dpp_stop_listen__field_descriptors[1] = +{ { - "dns_up", - 7, + "resp", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqSetDhcpDnsStatus, dns_up), + offsetof(RpcRespSuppDppStopListen, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__supp_dpp_stop_listen__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__supp_dpp_stop_listen__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__supp_dpp_stop_listen__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_SuppDppStopListen", + "RpcRespSuppDppStopListen", + "RpcRespSuppDppStopListen", + "", + sizeof(RpcRespSuppDppStopListen), + 1, + rpc__resp__supp_dpp_stop_listen__field_descriptors, + rpc__resp__supp_dpp_stop_listen__field_indices_by_name, + 1, rpc__resp__supp_dpp_stop_listen__number_ranges, + (ProtobufCMessageInit) rpc__resp__supp_dpp_stop_listen__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__event__wifi_event_no_args__field_descriptors[2] = +{ { - "dns_ip", - 8, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqSetDhcpDnsStatus, dns_ip), + offsetof(RpcEventWifiEventNoArgs, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dns_type", - 9, + "event_id", + 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqSetDhcpDnsStatus, dns_type), + offsetof(RpcEventWifiEventNoArgs, event_id), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__set_dhcp_dns_status__field_indices_by_name[] = { - 5, /* field[5] = dhcp_gw */ - 3, /* field[3] = dhcp_ip */ - 4, /* field[4] = dhcp_nm */ - 2, /* field[2] = dhcp_up */ - 7, /* field[7] = dns_ip */ - 8, /* field[8] = dns_type */ - 6, /* field[6] = dns_up */ - 0, /* field[0] = iface */ - 1, /* field[1] = net_link_up */ +static const unsigned rpc__event__wifi_event_no_args__field_indices_by_name[] = { + 1, /* field[1] = event_id */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__set_dhcp_dns_status__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__wifi_event_no_args__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 9 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__set_dhcp_dns_status__descriptor = +const ProtobufCMessageDescriptor rpc__event__wifi_event_no_args__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_SetDhcpDnsStatus", - "RpcReqSetDhcpDnsStatus", - "RpcReqSetDhcpDnsStatus", + "Rpc_Event_WifiEventNoArgs", + "RpcEventWifiEventNoArgs", + "RpcEventWifiEventNoArgs", "", - sizeof(RpcReqSetDhcpDnsStatus), - 9, - rpc__req__set_dhcp_dns_status__field_descriptors, - rpc__req__set_dhcp_dns_status__field_indices_by_name, - 1, rpc__req__set_dhcp_dns_status__number_ranges, - (ProtobufCMessageInit) rpc__req__set_dhcp_dns_status__init, + sizeof(RpcEventWifiEventNoArgs), + 2, + rpc__event__wifi_event_no_args__field_descriptors, + rpc__event__wifi_event_no_args__field_indices_by_name, + 1, rpc__event__wifi_event_no_args__number_ranges, + (ProtobufCMessageInit) rpc__event__wifi_event_no_args__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__set_dhcp_dns_status__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__event__espinit__field_descriptors[1] = { { - "resp", + "init_data", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcRespSetDhcpDnsStatus, resp), + offsetof(RpcEventESPInit, init_data), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__set_dhcp_dns_status__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__event__espinit__field_indices_by_name[] = { + 0, /* field[0] = init_data */ }; -static const ProtobufCIntRange rpc__resp__set_dhcp_dns_status__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__espinit__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__set_dhcp_dns_status__descriptor = +const ProtobufCMessageDescriptor rpc__event__espinit__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_SetDhcpDnsStatus", - "RpcRespSetDhcpDnsStatus", - "RpcRespSetDhcpDnsStatus", + "Rpc_Event_ESPInit", + "RpcEventESPInit", + "RpcEventESPInit", "", - sizeof(RpcRespSetDhcpDnsStatus), + sizeof(RpcEventESPInit), 1, - rpc__resp__set_dhcp_dns_status__field_descriptors, - rpc__resp__set_dhcp_dns_status__field_indices_by_name, - 1, rpc__resp__set_dhcp_dns_status__number_ranges, - (ProtobufCMessageInit) rpc__resp__set_dhcp_dns_status__init, + rpc__event__espinit__field_descriptors, + rpc__event__espinit__field_indices_by_name, + 1, rpc__event__espinit__number_ranges, + (ProtobufCMessageInit) rpc__event__espinit__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__get_dhcp_dns_status__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__event__heartbeat__field_descriptors[1] = { { - "iface", + "hb_num", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqGetDhcpDnsStatus, iface), + offsetof(RpcEventHeartbeat, hb_num), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__get_dhcp_dns_status__field_indices_by_name[] = { - 0, /* field[0] = iface */ +static const unsigned rpc__event__heartbeat__field_indices_by_name[] = { + 0, /* field[0] = hb_num */ }; -static const ProtobufCIntRange rpc__req__get_dhcp_dns_status__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__heartbeat__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__get_dhcp_dns_status__descriptor = +const ProtobufCMessageDescriptor rpc__event__heartbeat__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_GetDhcpDnsStatus", - "RpcReqGetDhcpDnsStatus", - "RpcReqGetDhcpDnsStatus", + "Rpc_Event_Heartbeat", + "RpcEventHeartbeat", + "RpcEventHeartbeat", "", - sizeof(RpcReqGetDhcpDnsStatus), + sizeof(RpcEventHeartbeat), 1, - rpc__req__get_dhcp_dns_status__field_descriptors, - rpc__req__get_dhcp_dns_status__field_indices_by_name, - 1, rpc__req__get_dhcp_dns_status__number_ranges, - (ProtobufCMessageInit) rpc__req__get_dhcp_dns_status__init, + rpc__event__heartbeat__field_descriptors, + rpc__event__heartbeat__field_indices_by_name, + 1, rpc__event__heartbeat__number_ranges, + (ProtobufCMessageInit) rpc__event__heartbeat__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__get_dhcp_dns_status__field_descriptors[10] = +static const ProtobufCFieldDescriptor rpc__event__ap__sta_disconnected__field_descriptors[5] = { { - "iface", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, iface), + offsetof(RpcEventAPStaDisconnected, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "net_link_up", + "mac", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, net_link_up), + offsetof(RpcEventAPStaDisconnected, mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dhcp_up", + "aid", 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, dhcp_up), + offsetof(RpcEventAPStaDisconnected, aid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dhcp_ip", + "is_mesh_child", 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, dhcp_ip), + offsetof(RpcEventAPStaDisconnected, is_mesh_child), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dhcp_nm", + "reason", 5, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, - 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, dhcp_nm), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "dhcp_gw", - 6, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, dhcp_gw), + offsetof(RpcEventAPStaDisconnected, reason), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__event__ap__sta_disconnected__field_indices_by_name[] = { + 2, /* field[2] = aid */ + 3, /* field[3] = is_mesh_child */ + 1, /* field[1] = mac */ + 4, /* field[4] = reason */ + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__event__ap__sta_disconnected__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor rpc__event__ap__sta_disconnected__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Event_AP_StaDisconnected", + "RpcEventAPStaDisconnected", + "RpcEventAPStaDisconnected", + "", + sizeof(RpcEventAPStaDisconnected), + 5, + rpc__event__ap__sta_disconnected__field_descriptors, + rpc__event__ap__sta_disconnected__field_indices_by_name, + 1, rpc__event__ap__sta_disconnected__number_ranges, + (ProtobufCMessageInit) rpc__event__ap__sta_disconnected__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__event__ap__sta_connected__field_descriptors[4] = +{ { - "dns_up", - 7, + "resp", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, dns_up), + offsetof(RpcEventAPStaConnected, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dns_ip", - 8, + "mac", + 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, dns_ip), + offsetof(RpcEventAPStaConnected, mac), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dns_type", - 9, + "aid", + 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, dns_type), + offsetof(RpcEventAPStaConnected, aid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "resp", - 10, + "is_mesh_child", + 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(RpcRespGetDhcpDnsStatus, resp), + offsetof(RpcEventAPStaConnected, is_mesh_child), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__get_dhcp_dns_status__field_indices_by_name[] = { - 5, /* field[5] = dhcp_gw */ - 3, /* field[3] = dhcp_ip */ - 4, /* field[4] = dhcp_nm */ - 2, /* field[2] = dhcp_up */ - 7, /* field[7] = dns_ip */ - 8, /* field[8] = dns_type */ - 6, /* field[6] = dns_up */ - 0, /* field[0] = iface */ - 1, /* field[1] = net_link_up */ - 9, /* field[9] = resp */ +static const unsigned rpc__event__ap__sta_connected__field_indices_by_name[] = { + 2, /* field[2] = aid */ + 3, /* field[3] = is_mesh_child */ + 1, /* field[1] = mac */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__get_dhcp_dns_status__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__ap__sta_connected__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 10 } + { 0, 4 } }; -const ProtobufCMessageDescriptor rpc__resp__get_dhcp_dns_status__descriptor = +const ProtobufCMessageDescriptor rpc__event__ap__sta_connected__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_GetDhcpDnsStatus", - "RpcRespGetDhcpDnsStatus", - "RpcRespGetDhcpDnsStatus", + "Rpc_Event_AP_StaConnected", + "RpcEventAPStaConnected", + "RpcEventAPStaConnected", "", - sizeof(RpcRespGetDhcpDnsStatus), - 10, - rpc__resp__get_dhcp_dns_status__field_descriptors, - rpc__resp__get_dhcp_dns_status__field_indices_by_name, - 1, rpc__resp__get_dhcp_dns_status__number_ranges, - (ProtobufCMessageInit) rpc__resp__get_dhcp_dns_status__init, + sizeof(RpcEventAPStaConnected), + 4, + rpc__event__ap__sta_connected__field_descriptors, + rpc__event__ap__sta_connected__field_indices_by_name, + 1, rpc__event__ap__sta_connected__number_ranges, + (ProtobufCMessageInit) rpc__event__ap__sta_connected__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__wifi_event_no_args__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__event__sta_scan_done__field_descriptors[2] = { { "resp", @@ -20331,293 +21704,307 @@ static const ProtobufCFieldDescriptor rpc__event__wifi_event_no_args__field_desc PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventWifiEventNoArgs, resp), + offsetof(RpcEventStaScanDone, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "event_id", + "scan_done", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcEventWifiEventNoArgs, event_id), - NULL, + offsetof(RpcEventStaScanDone, scan_done), + &wifi_event_sta_scan_done__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__wifi_event_no_args__field_indices_by_name[] = { - 1, /* field[1] = event_id */ +static const unsigned rpc__event__sta_scan_done__field_indices_by_name[] = { 0, /* field[0] = resp */ + 1, /* field[1] = scan_done */ }; -static const ProtobufCIntRange rpc__event__wifi_event_no_args__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__sta_scan_done__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__event__wifi_event_no_args__descriptor = +const ProtobufCMessageDescriptor rpc__event__sta_scan_done__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_WifiEventNoArgs", - "RpcEventWifiEventNoArgs", - "RpcEventWifiEventNoArgs", + "Rpc_Event_StaScanDone", + "RpcEventStaScanDone", + "RpcEventStaScanDone", "", - sizeof(RpcEventWifiEventNoArgs), + sizeof(RpcEventStaScanDone), 2, - rpc__event__wifi_event_no_args__field_descriptors, - rpc__event__wifi_event_no_args__field_indices_by_name, - 1, rpc__event__wifi_event_no_args__number_ranges, - (ProtobufCMessageInit) rpc__event__wifi_event_no_args__init, + rpc__event__sta_scan_done__field_descriptors, + rpc__event__sta_scan_done__field_indices_by_name, + 1, rpc__event__sta_scan_done__number_ranges, + (ProtobufCMessageInit) rpc__event__sta_scan_done__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__espinit__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__event__sta_connected__field_descriptors[2] = { { - "init_data", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventESPInit, init_data), + offsetof(RpcEventStaConnected, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "sta_connected", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(RpcEventStaConnected, sta_connected), + &wifi_event_sta_connected__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, }; -static const unsigned rpc__event__espinit__field_indices_by_name[] = { - 0, /* field[0] = init_data */ +static const unsigned rpc__event__sta_connected__field_indices_by_name[] = { + 0, /* field[0] = resp */ + 1, /* field[1] = sta_connected */ }; -static const ProtobufCIntRange rpc__event__espinit__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__sta_connected__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__event__espinit__descriptor = +const ProtobufCMessageDescriptor rpc__event__sta_connected__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_ESPInit", - "RpcEventESPInit", - "RpcEventESPInit", + "Rpc_Event_StaConnected", + "RpcEventStaConnected", + "RpcEventStaConnected", "", - sizeof(RpcEventESPInit), - 1, - rpc__event__espinit__field_descriptors, - rpc__event__espinit__field_indices_by_name, - 1, rpc__event__espinit__number_ranges, - (ProtobufCMessageInit) rpc__event__espinit__init, + sizeof(RpcEventStaConnected), + 2, + rpc__event__sta_connected__field_descriptors, + rpc__event__sta_connected__field_indices_by_name, + 1, rpc__event__sta_connected__number_ranges, + (ProtobufCMessageInit) rpc__event__sta_connected__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__heartbeat__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__event__sta_disconnected__field_descriptors[2] = { { - "hb_num", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventHeartbeat, hb_num), - NULL, + offsetof(RpcEventStaDisconnected, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sta_disconnected", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(RpcEventStaDisconnected, sta_disconnected), + &wifi_event_sta_disconnected__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__heartbeat__field_indices_by_name[] = { - 0, /* field[0] = hb_num */ +static const unsigned rpc__event__sta_disconnected__field_indices_by_name[] = { + 0, /* field[0] = resp */ + 1, /* field[1] = sta_disconnected */ }; -static const ProtobufCIntRange rpc__event__heartbeat__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__sta_disconnected__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__event__heartbeat__descriptor = +const ProtobufCMessageDescriptor rpc__event__sta_disconnected__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_Heartbeat", - "RpcEventHeartbeat", - "RpcEventHeartbeat", + "Rpc_Event_StaDisconnected", + "RpcEventStaDisconnected", + "RpcEventStaDisconnected", "", - sizeof(RpcEventHeartbeat), - 1, - rpc__event__heartbeat__field_descriptors, - rpc__event__heartbeat__field_indices_by_name, - 1, rpc__event__heartbeat__number_ranges, - (ProtobufCMessageInit) rpc__event__heartbeat__init, + sizeof(RpcEventStaDisconnected), + 2, + rpc__event__sta_disconnected__field_descriptors, + rpc__event__sta_disconnected__field_indices_by_name, + 1, rpc__event__sta_disconnected__number_ranges, + (ProtobufCMessageInit) rpc__event__sta_disconnected__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__ap__sta_disconnected__field_descriptors[5] = +static const ProtobufCFieldDescriptor rpc__event__dhcp_dns_status__field_descriptors[10] = { { - "resp", + "iface", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaDisconnected, resp), + offsetof(RpcEventDhcpDnsStatus, iface), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "mac", + "net_link_up", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaDisconnected, mac), + offsetof(RpcEventDhcpDnsStatus, net_link_up), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "aid", + "dhcp_up", 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaDisconnected, aid), + offsetof(RpcEventDhcpDnsStatus, dhcp_up), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "is_mesh_child", + "dhcp_ip", 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaDisconnected, is_mesh_child), + offsetof(RpcEventDhcpDnsStatus, dhcp_ip), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "reason", + "dhcp_nm", 5, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaDisconnected, reason), + offsetof(RpcEventDhcpDnsStatus, dhcp_nm), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__event__ap__sta_disconnected__field_indices_by_name[] = { - 2, /* field[2] = aid */ - 3, /* field[3] = is_mesh_child */ - 1, /* field[1] = mac */ - 4, /* field[4] = reason */ - 0, /* field[0] = resp */ -}; -static const ProtobufCIntRange rpc__event__ap__sta_disconnected__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 5 } -}; -const ProtobufCMessageDescriptor rpc__event__ap__sta_disconnected__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_AP_StaDisconnected", - "RpcEventAPStaDisconnected", - "RpcEventAPStaDisconnected", - "", - sizeof(RpcEventAPStaDisconnected), - 5, - rpc__event__ap__sta_disconnected__field_descriptors, - rpc__event__ap__sta_disconnected__field_indices_by_name, - 1, rpc__event__ap__sta_disconnected__number_ranges, - (ProtobufCMessageInit) rpc__event__ap__sta_disconnected__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__event__ap__sta_connected__field_descriptors[4] = -{ { - "resp", - 1, + "dhcp_gw", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcEventDhcpDnsStatus, dhcp_gw), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dns_up", + 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaConnected, resp), + offsetof(RpcEventDhcpDnsStatus, dns_up), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "mac", - 2, + "dns_ip", + 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaConnected, mac), + offsetof(RpcEventDhcpDnsStatus, dns_ip), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "aid", - 3, + "dns_type", + 9, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaConnected, aid), + offsetof(RpcEventDhcpDnsStatus, dns_type), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "is_mesh_child", - 4, + "resp", + 10, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventAPStaConnected, is_mesh_child), + offsetof(RpcEventDhcpDnsStatus, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__ap__sta_connected__field_indices_by_name[] = { - 2, /* field[2] = aid */ - 3, /* field[3] = is_mesh_child */ - 1, /* field[1] = mac */ - 0, /* field[0] = resp */ +static const unsigned rpc__event__dhcp_dns_status__field_indices_by_name[] = { + 5, /* field[5] = dhcp_gw */ + 3, /* field[3] = dhcp_ip */ + 4, /* field[4] = dhcp_nm */ + 2, /* field[2] = dhcp_up */ + 7, /* field[7] = dns_ip */ + 8, /* field[8] = dns_type */ + 6, /* field[6] = dns_up */ + 0, /* field[0] = iface */ + 1, /* field[1] = net_link_up */ + 9, /* field[9] = resp */ }; -static const ProtobufCIntRange rpc__event__ap__sta_connected__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__dhcp_dns_status__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 4 } + { 0, 10 } }; -const ProtobufCMessageDescriptor rpc__event__ap__sta_connected__descriptor = +const ProtobufCMessageDescriptor rpc__event__dhcp_dns_status__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_AP_StaConnected", - "RpcEventAPStaConnected", - "RpcEventAPStaConnected", + "Rpc_Event_DhcpDnsStatus", + "RpcEventDhcpDnsStatus", + "RpcEventDhcpDnsStatus", "", - sizeof(RpcEventAPStaConnected), - 4, - rpc__event__ap__sta_connected__field_descriptors, - rpc__event__ap__sta_connected__field_indices_by_name, - 1, rpc__event__ap__sta_connected__number_ranges, - (ProtobufCMessageInit) rpc__event__ap__sta_connected__init, + sizeof(RpcEventDhcpDnsStatus), + 10, + rpc__event__dhcp_dns_status__field_descriptors, + rpc__event__dhcp_dns_status__field_indices_by_name, + 1, rpc__event__dhcp_dns_status__number_ranges, + (ProtobufCMessageInit) rpc__event__dhcp_dns_status__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__sta_scan_done__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__event__sta_itwt_setup__field_descriptors[5] = { { "resp", @@ -20625,101 +22012,89 @@ static const ProtobufCFieldDescriptor rpc__event__sta_scan_done__field_descripto PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaScanDone, resp), + offsetof(RpcEventStaItwtSetup, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "scan_done", + "config", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcEventStaScanDone, scan_done), - &wifi_event_sta_scan_done__descriptor, + offsetof(RpcEventStaItwtSetup, config), + &wifi_itwt_setup_config__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__event__sta_scan_done__field_indices_by_name[] = { - 0, /* field[0] = resp */ - 1, /* field[1] = scan_done */ -}; -static const ProtobufCIntRange rpc__event__sta_scan_done__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 2 } -}; -const ProtobufCMessageDescriptor rpc__event__sta_scan_done__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_StaScanDone", - "RpcEventStaScanDone", - "RpcEventStaScanDone", - "", - sizeof(RpcEventStaScanDone), - 2, - rpc__event__sta_scan_done__field_descriptors, - rpc__event__sta_scan_done__field_indices_by_name, - 1, rpc__event__sta_scan_done__number_ranges, - (ProtobufCMessageInit) rpc__event__sta_scan_done__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__event__sta_connected__field_descriptors[2] = -{ { - "resp", - 1, + "status", + 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaConnected, resp), + offsetof(RpcEventStaItwtSetup, status), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "sta_connected", - 2, + "reason", + 4, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaConnected, sta_connected), - &wifi_event_sta_connected__descriptor, + offsetof(RpcEventStaItwtSetup, reason), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "target_wake_time", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(RpcEventStaItwtSetup, target_wake_time), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__sta_connected__field_indices_by_name[] = { +static const unsigned rpc__event__sta_itwt_setup__field_indices_by_name[] = { + 1, /* field[1] = config */ + 3, /* field[3] = reason */ 0, /* field[0] = resp */ - 1, /* field[1] = sta_connected */ + 2, /* field[2] = status */ + 4, /* field[4] = target_wake_time */ }; -static const ProtobufCIntRange rpc__event__sta_connected__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__sta_itwt_setup__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 5 } }; -const ProtobufCMessageDescriptor rpc__event__sta_connected__descriptor = +const ProtobufCMessageDescriptor rpc__event__sta_itwt_setup__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_StaConnected", - "RpcEventStaConnected", - "RpcEventStaConnected", + "Rpc_Event_StaItwtSetup", + "RpcEventStaItwtSetup", + "RpcEventStaItwtSetup", "", - sizeof(RpcEventStaConnected), - 2, - rpc__event__sta_connected__field_descriptors, - rpc__event__sta_connected__field_indices_by_name, - 1, rpc__event__sta_connected__number_ranges, - (ProtobufCMessageInit) rpc__event__sta_connected__init, + sizeof(RpcEventStaItwtSetup), + 5, + rpc__event__sta_itwt_setup__field_descriptors, + rpc__event__sta_itwt_setup__field_indices_by_name, + 1, rpc__event__sta_itwt_setup__number_ranges, + (ProtobufCMessageInit) rpc__event__sta_itwt_setup__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__sta_disconnected__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__event__sta_itwt_teardown__field_descriptors[3] = { { "resp", @@ -20727,295 +22102,423 @@ static const ProtobufCFieldDescriptor rpc__event__sta_disconnected__field_descri PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaDisconnected, resp), + offsetof(RpcEventStaItwtTeardown, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "sta_disconnected", + "flow_id", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaDisconnected, sta_disconnected), - &wifi_event_sta_disconnected__descriptor, + offsetof(RpcEventStaItwtTeardown, flow_id), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "status", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(RpcEventStaItwtTeardown, status), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__sta_disconnected__field_indices_by_name[] = { +static const unsigned rpc__event__sta_itwt_teardown__field_indices_by_name[] = { + 1, /* field[1] = flow_id */ 0, /* field[0] = resp */ - 1, /* field[1] = sta_disconnected */ + 2, /* field[2] = status */ }; -static const ProtobufCIntRange rpc__event__sta_disconnected__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__sta_itwt_teardown__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 3 } }; -const ProtobufCMessageDescriptor rpc__event__sta_disconnected__descriptor = +const ProtobufCMessageDescriptor rpc__event__sta_itwt_teardown__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_StaDisconnected", - "RpcEventStaDisconnected", - "RpcEventStaDisconnected", + "Rpc_Event_StaItwtTeardown", + "RpcEventStaItwtTeardown", + "RpcEventStaItwtTeardown", "", - sizeof(RpcEventStaDisconnected), - 2, - rpc__event__sta_disconnected__field_descriptors, - rpc__event__sta_disconnected__field_indices_by_name, - 1, rpc__event__sta_disconnected__number_ranges, - (ProtobufCMessageInit) rpc__event__sta_disconnected__init, + sizeof(RpcEventStaItwtTeardown), + 3, + rpc__event__sta_itwt_teardown__field_descriptors, + rpc__event__sta_itwt_teardown__field_indices_by_name, + 1, rpc__event__sta_itwt_teardown__number_ranges, + (ProtobufCMessageInit) rpc__event__sta_itwt_teardown__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__dhcp_dns_status__field_descriptors[10] = +static const ProtobufCFieldDescriptor rpc__event__sta_itwt_suspend__field_descriptors[4] = { { - "iface", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventDhcpDnsStatus, iface), + offsetof(RpcEventStaItwtSuspend, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "net_link_up", + "status", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventDhcpDnsStatus, net_link_up), + offsetof(RpcEventStaItwtSuspend, status), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dhcp_up", + "flow_id_bitmap", 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcEventDhcpDnsStatus, dhcp_up), + offsetof(RpcEventStaItwtSuspend, flow_id_bitmap), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dhcp_ip", + "actual_suspend_time_ms", 4, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, - 0, /* quantifier_offset */ - offsetof(RpcEventDhcpDnsStatus, dhcp_ip), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "dhcp_nm", - 5, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, - 0, /* quantifier_offset */ - offsetof(RpcEventDhcpDnsStatus, dhcp_nm), + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_UINT32, + offsetof(RpcEventStaItwtSuspend, n_actual_suspend_time_ms), + offsetof(RpcEventStaItwtSuspend, actual_suspend_time_ms), NULL, NULL, - 0, /* flags */ + 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__event__sta_itwt_suspend__field_indices_by_name[] = { + 3, /* field[3] = actual_suspend_time_ms */ + 2, /* field[2] = flow_id_bitmap */ + 0, /* field[0] = resp */ + 1, /* field[1] = status */ +}; +static const ProtobufCIntRange rpc__event__sta_itwt_suspend__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor rpc__event__sta_itwt_suspend__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Event_StaItwtSuspend", + "RpcEventStaItwtSuspend", + "RpcEventStaItwtSuspend", + "", + sizeof(RpcEventStaItwtSuspend), + 4, + rpc__event__sta_itwt_suspend__field_descriptors, + rpc__event__sta_itwt_suspend__field_indices_by_name, + 1, rpc__event__sta_itwt_suspend__number_ranges, + (ProtobufCMessageInit) rpc__event__sta_itwt_suspend__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__event__sta_itwt_probe__field_descriptors[3] = +{ { - "dhcp_gw", - 6, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventDhcpDnsStatus, dhcp_gw), + offsetof(RpcEventStaItwtProbe, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dns_up", - 7, + "status", + 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventDhcpDnsStatus, dns_up), + offsetof(RpcEventStaItwtProbe, status), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "dns_ip", - 8, + "reason", + 3, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ - offsetof(RpcEventDhcpDnsStatus, dns_ip), + offsetof(RpcEventStaItwtProbe, reason), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__event__sta_itwt_probe__field_indices_by_name[] = { + 2, /* field[2] = reason */ + 0, /* field[0] = resp */ + 1, /* field[1] = status */ +}; +static const ProtobufCIntRange rpc__event__sta_itwt_probe__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor rpc__event__sta_itwt_probe__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Event_StaItwtProbe", + "RpcEventStaItwtProbe", + "RpcEventStaItwtProbe", + "", + sizeof(RpcEventStaItwtProbe), + 3, + rpc__event__sta_itwt_probe__field_descriptors, + rpc__event__sta_itwt_probe__field_indices_by_name, + 1, rpc__event__sta_itwt_probe__number_ranges, + (ProtobufCMessageInit) rpc__event__sta_itwt_probe__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define rpc__req__wifi_sta_enterprise_enable__field_descriptors NULL +#define rpc__req__wifi_sta_enterprise_enable__field_indices_by_name NULL +#define rpc__req__wifi_sta_enterprise_enable__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_sta_enterprise_enable__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStaEnterpriseEnable", + "RpcReqWifiStaEnterpriseEnable", + "RpcReqWifiStaEnterpriseEnable", + "", + sizeof(RpcReqWifiStaEnterpriseEnable), + 0, + rpc__req__wifi_sta_enterprise_enable__field_descriptors, + rpc__req__wifi_sta_enterprise_enable__field_indices_by_name, + 0, rpc__req__wifi_sta_enterprise_enable__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_enterprise_enable__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_enterprise_enable__field_descriptors[1] = +{ { - "dns_type", - 9, + "resp", + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventDhcpDnsStatus, dns_type), + offsetof(RpcRespWifiStaEnterpriseEnable, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__wifi_sta_enterprise_enable__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__wifi_sta_enterprise_enable__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_enterprise_enable__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_WifiStaEnterpriseEnable", + "RpcRespWifiStaEnterpriseEnable", + "RpcRespWifiStaEnterpriseEnable", + "", + sizeof(RpcRespWifiStaEnterpriseEnable), + 1, + rpc__resp__wifi_sta_enterprise_enable__field_descriptors, + rpc__resp__wifi_sta_enterprise_enable__field_indices_by_name, + 1, rpc__resp__wifi_sta_enterprise_enable__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_enterprise_enable__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define rpc__req__wifi_sta_enterprise_disable__field_descriptors NULL +#define rpc__req__wifi_sta_enterprise_disable__field_indices_by_name NULL +#define rpc__req__wifi_sta_enterprise_disable__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__wifi_sta_enterprise_disable__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_WifiStaEnterpriseDisable", + "RpcReqWifiStaEnterpriseDisable", + "RpcReqWifiStaEnterpriseDisable", + "", + sizeof(RpcReqWifiStaEnterpriseDisable), + 0, + rpc__req__wifi_sta_enterprise_disable__field_descriptors, + rpc__req__wifi_sta_enterprise_disable__field_indices_by_name, + 0, rpc__req__wifi_sta_enterprise_disable__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_sta_enterprise_disable__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_enterprise_disable__field_descriptors[1] = +{ { "resp", - 10, + 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventDhcpDnsStatus, resp), + offsetof(RpcRespWifiStaEnterpriseDisable, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__dhcp_dns_status__field_indices_by_name[] = { - 5, /* field[5] = dhcp_gw */ - 3, /* field[3] = dhcp_ip */ - 4, /* field[4] = dhcp_nm */ - 2, /* field[2] = dhcp_up */ - 7, /* field[7] = dns_ip */ - 8, /* field[8] = dns_type */ - 6, /* field[6] = dns_up */ - 0, /* field[0] = iface */ - 1, /* field[1] = net_link_up */ - 9, /* field[9] = resp */ +static const unsigned rpc__resp__wifi_sta_enterprise_disable__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__event__dhcp_dns_status__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_sta_enterprise_disable__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 10 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__event__dhcp_dns_status__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_sta_enterprise_disable__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_DhcpDnsStatus", - "RpcEventDhcpDnsStatus", - "RpcEventDhcpDnsStatus", + "Rpc_Resp_WifiStaEnterpriseDisable", + "RpcRespWifiStaEnterpriseDisable", + "RpcRespWifiStaEnterpriseDisable", "", - sizeof(RpcEventDhcpDnsStatus), - 10, - rpc__event__dhcp_dns_status__field_descriptors, - rpc__event__dhcp_dns_status__field_indices_by_name, - 1, rpc__event__dhcp_dns_status__number_ranges, - (ProtobufCMessageInit) rpc__event__dhcp_dns_status__init, + sizeof(RpcRespWifiStaEnterpriseDisable), + 1, + rpc__resp__wifi_sta_enterprise_disable__field_descriptors, + rpc__resp__wifi_sta_enterprise_disable__field_indices_by_name, + 1, rpc__resp__wifi_sta_enterprise_disable__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_sta_enterprise_disable__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__sta_itwt_setup__field_descriptors[5] = +static const ProtobufCFieldDescriptor rpc__req__eap_set_identity__field_descriptors[2] = { { - "resp", + "identity", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcEventStaItwtSetup, resp), + offsetof(RpcReqEapSetIdentity, identity), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "config", + "len", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, - 0, /* quantifier_offset */ - offsetof(RpcEventStaItwtSetup, config), - &wifi_itwt_setup_config__descriptor, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "status", - 3, - PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaItwtSetup, status), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "reason", - 4, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(RpcEventStaItwtSetup, reason), + offsetof(RpcReqEapSetIdentity, len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__req__eap_set_identity__field_indices_by_name[] = { + 0, /* field[0] = identity */ + 1, /* field[1] = len */ +}; +static const ProtobufCIntRange rpc__req__eap_set_identity__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor rpc__req__eap_set_identity__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_EapSetIdentity", + "RpcReqEapSetIdentity", + "RpcReqEapSetIdentity", + "", + sizeof(RpcReqEapSetIdentity), + 2, + rpc__req__eap_set_identity__field_descriptors, + rpc__req__eap_set_identity__field_indices_by_name, + 1, rpc__req__eap_set_identity__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_set_identity__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__eap_set_identity__field_descriptors[1] = +{ { - "target_wake_time", - 5, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT64, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaItwtSetup, target_wake_time), + offsetof(RpcRespEapSetIdentity, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__sta_itwt_setup__field_indices_by_name[] = { - 1, /* field[1] = config */ - 3, /* field[3] = reason */ +static const unsigned rpc__resp__eap_set_identity__field_indices_by_name[] = { 0, /* field[0] = resp */ - 2, /* field[2] = status */ - 4, /* field[4] = target_wake_time */ }; -static const ProtobufCIntRange rpc__event__sta_itwt_setup__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_set_identity__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 5 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__event__sta_itwt_setup__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_set_identity__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_StaItwtSetup", - "RpcEventStaItwtSetup", - "RpcEventStaItwtSetup", + "Rpc_Resp_EapSetIdentity", + "RpcRespEapSetIdentity", + "RpcRespEapSetIdentity", "", - sizeof(RpcEventStaItwtSetup), - 5, - rpc__event__sta_itwt_setup__field_descriptors, - rpc__event__sta_itwt_setup__field_indices_by_name, - 1, rpc__event__sta_itwt_setup__number_ranges, - (ProtobufCMessageInit) rpc__event__sta_itwt_setup__init, + sizeof(RpcRespEapSetIdentity), + 1, + rpc__resp__eap_set_identity__field_descriptors, + rpc__resp__eap_set_identity__field_indices_by_name, + 1, rpc__resp__eap_set_identity__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_set_identity__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__sta_itwt_teardown__field_descriptors[3] = +#define rpc__req__eap_clear_identity__field_descriptors NULL +#define rpc__req__eap_clear_identity__field_indices_by_name NULL +#define rpc__req__eap_clear_identity__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__eap_clear_identity__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_EapClearIdentity", + "RpcReqEapClearIdentity", + "RpcReqEapClearIdentity", + "", + sizeof(RpcReqEapClearIdentity), + 0, + rpc__req__eap_clear_identity__field_descriptors, + rpc__req__eap_clear_identity__field_indices_by_name, + 0, rpc__req__eap_clear_identity__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_clear_identity__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__eap_clear_identity__field_descriptors[1] = { { "resp", @@ -21023,140 +22526,144 @@ static const ProtobufCFieldDescriptor rpc__event__sta_itwt_teardown__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaItwtTeardown, resp), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "flow_id", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(RpcEventStaItwtTeardown, flow_id), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "status", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(RpcEventStaItwtTeardown, status), + offsetof(RpcRespEapClearIdentity, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__sta_itwt_teardown__field_indices_by_name[] = { - 1, /* field[1] = flow_id */ +static const unsigned rpc__resp__eap_clear_identity__field_indices_by_name[] = { 0, /* field[0] = resp */ - 2, /* field[2] = status */ }; -static const ProtobufCIntRange rpc__event__sta_itwt_teardown__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_clear_identity__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 3 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__event__sta_itwt_teardown__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_clear_identity__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_StaItwtTeardown", - "RpcEventStaItwtTeardown", - "RpcEventStaItwtTeardown", + "Rpc_Resp_EapClearIdentity", + "RpcRespEapClearIdentity", + "RpcRespEapClearIdentity", "", - sizeof(RpcEventStaItwtTeardown), - 3, - rpc__event__sta_itwt_teardown__field_descriptors, - rpc__event__sta_itwt_teardown__field_indices_by_name, - 1, rpc__event__sta_itwt_teardown__number_ranges, - (ProtobufCMessageInit) rpc__event__sta_itwt_teardown__init, + sizeof(RpcRespEapClearIdentity), + 1, + rpc__resp__eap_clear_identity__field_descriptors, + rpc__resp__eap_clear_identity__field_indices_by_name, + 1, rpc__resp__eap_clear_identity__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_clear_identity__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__sta_itwt_suspend__field_descriptors[4] = +static const ProtobufCFieldDescriptor rpc__req__eap_set_username__field_descriptors[2] = { { - "resp", + "username", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcEventStaItwtSuspend, resp), + offsetof(RpcReqEapSetUsername, username), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "status", + "len", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaItwtSuspend, status), + offsetof(RpcReqEapSetUsername, len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__req__eap_set_username__field_indices_by_name[] = { + 1, /* field[1] = len */ + 0, /* field[0] = username */ +}; +static const ProtobufCIntRange rpc__req__eap_set_username__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor rpc__req__eap_set_username__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_EapSetUsername", + "RpcReqEapSetUsername", + "RpcReqEapSetUsername", + "", + sizeof(RpcReqEapSetUsername), + 2, + rpc__req__eap_set_username__field_descriptors, + rpc__req__eap_set_username__field_indices_by_name, + 1, rpc__req__eap_set_username__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_set_username__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__eap_set_username__field_descriptors[1] = +{ { - "flow_id_bitmap", - 3, + "resp", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaItwtSuspend, flow_id_bitmap), + offsetof(RpcRespEapSetUsername, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, - { - "actual_suspend_time_ms", - 4, - PROTOBUF_C_LABEL_REPEATED, - PROTOBUF_C_TYPE_UINT32, - offsetof(RpcEventStaItwtSuspend, n_actual_suspend_time_ms), - offsetof(RpcEventStaItwtSuspend, actual_suspend_time_ms), - NULL, - NULL, - 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, }; -static const unsigned rpc__event__sta_itwt_suspend__field_indices_by_name[] = { - 3, /* field[3] = actual_suspend_time_ms */ - 2, /* field[2] = flow_id_bitmap */ +static const unsigned rpc__resp__eap_set_username__field_indices_by_name[] = { 0, /* field[0] = resp */ - 1, /* field[1] = status */ }; -static const ProtobufCIntRange rpc__event__sta_itwt_suspend__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_set_username__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 4 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__event__sta_itwt_suspend__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_set_username__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_StaItwtSuspend", - "RpcEventStaItwtSuspend", - "RpcEventStaItwtSuspend", + "Rpc_Resp_EapSetUsername", + "RpcRespEapSetUsername", + "RpcRespEapSetUsername", "", - sizeof(RpcEventStaItwtSuspend), - 4, - rpc__event__sta_itwt_suspend__field_descriptors, - rpc__event__sta_itwt_suspend__field_indices_by_name, - 1, rpc__event__sta_itwt_suspend__number_ranges, - (ProtobufCMessageInit) rpc__event__sta_itwt_suspend__init, + sizeof(RpcRespEapSetUsername), + 1, + rpc__resp__eap_set_username__field_descriptors, + rpc__resp__eap_set_username__field_indices_by_name, + 1, rpc__resp__eap_set_username__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_set_username__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__event__sta_itwt_probe__field_descriptors[3] = +#define rpc__req__eap_clear_username__field_descriptors NULL +#define rpc__req__eap_clear_username__field_indices_by_name NULL +#define rpc__req__eap_clear_username__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__eap_clear_username__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_EapClearUsername", + "RpcReqEapClearUsername", + "RpcReqEapClearUsername", + "", + sizeof(RpcReqEapClearUsername), + 0, + rpc__req__eap_clear_username__field_descriptors, + rpc__req__eap_clear_username__field_indices_by_name, + 0, rpc__req__eap_clear_username__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_clear_username__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__eap_clear_username__field_descriptors[1] = { { "resp", @@ -21164,81 +22671,88 @@ static const ProtobufCFieldDescriptor rpc__event__sta_itwt_probe__field_descript PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaItwtProbe, resp), + offsetof(RpcRespEapClearUsername, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, +}; +static const unsigned rpc__resp__eap_clear_username__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__eap_clear_username__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__eap_clear_username__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_EapClearUsername", + "RpcRespEapClearUsername", + "RpcRespEapClearUsername", + "", + sizeof(RpcRespEapClearUsername), + 1, + rpc__resp__eap_clear_username__field_descriptors, + rpc__resp__eap_clear_username__field_indices_by_name, + 1, rpc__resp__eap_clear_username__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_clear_username__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__eap_set_password__field_descriptors[2] = +{ { - "status", - 2, + "password", + 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcEventStaItwtProbe, status), + offsetof(RpcReqEapSetPassword, password), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "reason", - 3, + "len", + 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcEventStaItwtProbe, reason), + offsetof(RpcReqEapSetPassword, len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__event__sta_itwt_probe__field_indices_by_name[] = { - 2, /* field[2] = reason */ - 0, /* field[0] = resp */ - 1, /* field[1] = status */ +static const unsigned rpc__req__eap_set_password__field_indices_by_name[] = { + 1, /* field[1] = len */ + 0, /* field[0] = password */ }; -static const ProtobufCIntRange rpc__event__sta_itwt_probe__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__eap_set_password__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 3 } -}; -const ProtobufCMessageDescriptor rpc__event__sta_itwt_probe__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Event_StaItwtProbe", - "RpcEventStaItwtProbe", - "RpcEventStaItwtProbe", - "", - sizeof(RpcEventStaItwtProbe), - 3, - rpc__event__sta_itwt_probe__field_descriptors, - rpc__event__sta_itwt_probe__field_indices_by_name, - 1, rpc__event__sta_itwt_probe__number_ranges, - (ProtobufCMessageInit) rpc__event__sta_itwt_probe__init, - NULL,NULL,NULL /* reserved[123] */ + { 0, 2 } }; -#define rpc__req__wifi_sta_enterprise_enable__field_descriptors NULL -#define rpc__req__wifi_sta_enterprise_enable__field_indices_by_name NULL -#define rpc__req__wifi_sta_enterprise_enable__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_sta_enterprise_enable__descriptor = +const ProtobufCMessageDescriptor rpc__req__eap_set_password__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaEnterpriseEnable", - "RpcReqWifiStaEnterpriseEnable", - "RpcReqWifiStaEnterpriseEnable", + "Rpc_Req_EapSetPassword", + "RpcReqEapSetPassword", + "RpcReqEapSetPassword", "", - sizeof(RpcReqWifiStaEnterpriseEnable), - 0, - rpc__req__wifi_sta_enterprise_enable__field_descriptors, - rpc__req__wifi_sta_enterprise_enable__field_indices_by_name, - 0, rpc__req__wifi_sta_enterprise_enable__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_enterprise_enable__init, + sizeof(RpcReqEapSetPassword), + 2, + rpc__req__eap_set_password__field_descriptors, + rpc__req__eap_set_password__field_indices_by_name, + 1, rpc__req__eap_set_password__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_set_password__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_enterprise_enable__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__eap_set_password__field_descriptors[1] = { { "resp", @@ -21246,55 +22760,55 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_enterprise_enable__fie PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaEnterpriseEnable, resp), + offsetof(RpcRespEapSetPassword, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_enterprise_enable__field_indices_by_name[] = { +static const unsigned rpc__resp__eap_set_password__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_enterprise_enable__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_set_password__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_enterprise_enable__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_set_password__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaEnterpriseEnable", - "RpcRespWifiStaEnterpriseEnable", - "RpcRespWifiStaEnterpriseEnable", + "Rpc_Resp_EapSetPassword", + "RpcRespEapSetPassword", + "RpcRespEapSetPassword", "", - sizeof(RpcRespWifiStaEnterpriseEnable), + sizeof(RpcRespEapSetPassword), 1, - rpc__resp__wifi_sta_enterprise_enable__field_descriptors, - rpc__resp__wifi_sta_enterprise_enable__field_indices_by_name, - 1, rpc__resp__wifi_sta_enterprise_enable__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_enterprise_enable__init, + rpc__resp__eap_set_password__field_descriptors, + rpc__resp__eap_set_password__field_indices_by_name, + 1, rpc__resp__eap_set_password__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_set_password__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__wifi_sta_enterprise_disable__field_descriptors NULL -#define rpc__req__wifi_sta_enterprise_disable__field_indices_by_name NULL -#define rpc__req__wifi_sta_enterprise_disable__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__wifi_sta_enterprise_disable__descriptor = +#define rpc__req__eap_clear_password__field_descriptors NULL +#define rpc__req__eap_clear_password__field_indices_by_name NULL +#define rpc__req__eap_clear_password__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__eap_clear_password__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiStaEnterpriseDisable", - "RpcReqWifiStaEnterpriseDisable", - "RpcReqWifiStaEnterpriseDisable", + "Rpc_Req_EapClearPassword", + "RpcReqEapClearPassword", + "RpcReqEapClearPassword", "", - sizeof(RpcReqWifiStaEnterpriseDisable), + sizeof(RpcReqEapClearPassword), 0, - rpc__req__wifi_sta_enterprise_disable__field_descriptors, - rpc__req__wifi_sta_enterprise_disable__field_indices_by_name, - 0, rpc__req__wifi_sta_enterprise_disable__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_sta_enterprise_disable__init, + rpc__req__eap_clear_password__field_descriptors, + rpc__req__eap_clear_password__field_indices_by_name, + 0, rpc__req__eap_clear_password__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_clear_password__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_enterprise_disable__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__eap_clear_password__field_descriptors[1] = { { "resp", @@ -21302,45 +22816,45 @@ static const ProtobufCFieldDescriptor rpc__resp__wifi_sta_enterprise_disable__fi PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiStaEnterpriseDisable, resp), + offsetof(RpcRespEapClearPassword, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_sta_enterprise_disable__field_indices_by_name[] = { +static const unsigned rpc__resp__eap_clear_password__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_sta_enterprise_disable__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_clear_password__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_sta_enterprise_disable__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_clear_password__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiStaEnterpriseDisable", - "RpcRespWifiStaEnterpriseDisable", - "RpcRespWifiStaEnterpriseDisable", + "Rpc_Resp_EapClearPassword", + "RpcRespEapClearPassword", + "RpcRespEapClearPassword", "", - sizeof(RpcRespWifiStaEnterpriseDisable), + sizeof(RpcRespEapClearPassword), 1, - rpc__resp__wifi_sta_enterprise_disable__field_descriptors, - rpc__resp__wifi_sta_enterprise_disable__field_indices_by_name, - 1, rpc__resp__wifi_sta_enterprise_disable__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_sta_enterprise_disable__init, + rpc__resp__eap_clear_password__field_descriptors, + rpc__resp__eap_clear_password__field_indices_by_name, + 1, rpc__resp__eap_clear_password__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_clear_password__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__eap_set_identity__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__eap_set_new_password__field_descriptors[2] = { { - "identity", + "new_password", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcReqEapSetIdentity, identity), + offsetof(RpcReqEapSetNewPassword, new_password), NULL, NULL, 0, /* flags */ @@ -21352,38 +22866,38 @@ static const ProtobufCFieldDescriptor rpc__req__eap_set_identity__field_descript PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqEapSetIdentity, len), + offsetof(RpcReqEapSetNewPassword, len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__eap_set_identity__field_indices_by_name[] = { - 0, /* field[0] = identity */ +static const unsigned rpc__req__eap_set_new_password__field_indices_by_name[] = { 1, /* field[1] = len */ + 0, /* field[0] = new_password */ }; -static const ProtobufCIntRange rpc__req__eap_set_identity__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__eap_set_new_password__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__eap_set_identity__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_EapSetIdentity", - "RpcReqEapSetIdentity", - "RpcReqEapSetIdentity", +const ProtobufCMessageDescriptor rpc__req__eap_set_new_password__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_EapSetNewPassword", + "RpcReqEapSetNewPassword", + "RpcReqEapSetNewPassword", "", - sizeof(RpcReqEapSetIdentity), + sizeof(RpcReqEapSetNewPassword), 2, - rpc__req__eap_set_identity__field_descriptors, - rpc__req__eap_set_identity__field_indices_by_name, - 1, rpc__req__eap_set_identity__number_ranges, - (ProtobufCMessageInit) rpc__req__eap_set_identity__init, + rpc__req__eap_set_new_password__field_descriptors, + rpc__req__eap_set_new_password__field_indices_by_name, + 1, rpc__req__eap_set_new_password__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_set_new_password__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__eap_set_identity__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__eap_set_new_password__field_descriptors[1] = { { "resp", @@ -21391,55 +22905,55 @@ static const ProtobufCFieldDescriptor rpc__resp__eap_set_identity__field_descrip PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespEapSetIdentity, resp), + offsetof(RpcRespEapSetNewPassword, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__eap_set_identity__field_indices_by_name[] = { +static const unsigned rpc__resp__eap_set_new_password__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__eap_set_identity__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_set_new_password__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__eap_set_identity__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_set_new_password__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_EapSetIdentity", - "RpcRespEapSetIdentity", - "RpcRespEapSetIdentity", + "Rpc_Resp_EapSetNewPassword", + "RpcRespEapSetNewPassword", + "RpcRespEapSetNewPassword", "", - sizeof(RpcRespEapSetIdentity), + sizeof(RpcRespEapSetNewPassword), 1, - rpc__resp__eap_set_identity__field_descriptors, - rpc__resp__eap_set_identity__field_indices_by_name, - 1, rpc__resp__eap_set_identity__number_ranges, - (ProtobufCMessageInit) rpc__resp__eap_set_identity__init, + rpc__resp__eap_set_new_password__field_descriptors, + rpc__resp__eap_set_new_password__field_indices_by_name, + 1, rpc__resp__eap_set_new_password__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_set_new_password__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__eap_clear_identity__field_descriptors NULL -#define rpc__req__eap_clear_identity__field_indices_by_name NULL -#define rpc__req__eap_clear_identity__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__eap_clear_identity__descriptor = +#define rpc__req__eap_clear_new_password__field_descriptors NULL +#define rpc__req__eap_clear_new_password__field_indices_by_name NULL +#define rpc__req__eap_clear_new_password__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__eap_clear_new_password__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_EapClearIdentity", - "RpcReqEapClearIdentity", - "RpcReqEapClearIdentity", + "Rpc_Req_EapClearNewPassword", + "RpcReqEapClearNewPassword", + "RpcReqEapClearNewPassword", "", - sizeof(RpcReqEapClearIdentity), + sizeof(RpcReqEapClearNewPassword), 0, - rpc__req__eap_clear_identity__field_descriptors, - rpc__req__eap_clear_identity__field_indices_by_name, - 0, rpc__req__eap_clear_identity__number_ranges, - (ProtobufCMessageInit) rpc__req__eap_clear_identity__init, + rpc__req__eap_clear_new_password__field_descriptors, + rpc__req__eap_clear_new_password__field_indices_by_name, + 0, rpc__req__eap_clear_new_password__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_clear_new_password__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__eap_clear_identity__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__eap_clear_new_password__field_descriptors[1] = { { "resp", @@ -21447,88 +22961,88 @@ static const ProtobufCFieldDescriptor rpc__resp__eap_clear_identity__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespEapClearIdentity, resp), + offsetof(RpcRespEapClearNewPassword, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__eap_clear_identity__field_indices_by_name[] = { +static const unsigned rpc__resp__eap_clear_new_password__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__eap_clear_identity__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_clear_new_password__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__eap_clear_identity__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_clear_new_password__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_EapClearIdentity", - "RpcRespEapClearIdentity", - "RpcRespEapClearIdentity", + "Rpc_Resp_EapClearNewPassword", + "RpcRespEapClearNewPassword", + "RpcRespEapClearNewPassword", "", - sizeof(RpcRespEapClearIdentity), + sizeof(RpcRespEapClearNewPassword), 1, - rpc__resp__eap_clear_identity__field_descriptors, - rpc__resp__eap_clear_identity__field_indices_by_name, - 1, rpc__resp__eap_clear_identity__number_ranges, - (ProtobufCMessageInit) rpc__resp__eap_clear_identity__init, + rpc__resp__eap_clear_new_password__field_descriptors, + rpc__resp__eap_clear_new_password__field_indices_by_name, + 1, rpc__resp__eap_clear_new_password__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_clear_new_password__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__eap_set_username__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__eap_set_ca_cert__field_descriptors[2] = { { - "username", + "ca_cert", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcReqEapSetUsername, username), + offsetof(RpcReqEapSetCaCert, ca_cert), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "len", + "ca_cert_len", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqEapSetUsername, len), + offsetof(RpcReqEapSetCaCert, ca_cert_len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__eap_set_username__field_indices_by_name[] = { - 1, /* field[1] = len */ - 0, /* field[0] = username */ +static const unsigned rpc__req__eap_set_ca_cert__field_indices_by_name[] = { + 0, /* field[0] = ca_cert */ + 1, /* field[1] = ca_cert_len */ }; -static const ProtobufCIntRange rpc__req__eap_set_username__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__eap_set_ca_cert__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__eap_set_username__descriptor = +const ProtobufCMessageDescriptor rpc__req__eap_set_ca_cert__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_EapSetUsername", - "RpcReqEapSetUsername", - "RpcReqEapSetUsername", + "Rpc_Req_EapSetCaCert", + "RpcReqEapSetCaCert", + "RpcReqEapSetCaCert", "", - sizeof(RpcReqEapSetUsername), + sizeof(RpcReqEapSetCaCert), 2, - rpc__req__eap_set_username__field_descriptors, - rpc__req__eap_set_username__field_indices_by_name, - 1, rpc__req__eap_set_username__number_ranges, - (ProtobufCMessageInit) rpc__req__eap_set_username__init, + rpc__req__eap_set_ca_cert__field_descriptors, + rpc__req__eap_set_ca_cert__field_indices_by_name, + 1, rpc__req__eap_set_ca_cert__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_set_ca_cert__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__eap_set_username__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__eap_set_ca_cert__field_descriptors[1] = { { "resp", @@ -21536,55 +23050,55 @@ static const ProtobufCFieldDescriptor rpc__resp__eap_set_username__field_descrip PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespEapSetUsername, resp), + offsetof(RpcRespEapSetCaCert, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__eap_set_username__field_indices_by_name[] = { +static const unsigned rpc__resp__eap_set_ca_cert__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__eap_set_username__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_set_ca_cert__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__eap_set_username__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_set_ca_cert__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_EapSetUsername", - "RpcRespEapSetUsername", - "RpcRespEapSetUsername", + "Rpc_Resp_EapSetCaCert", + "RpcRespEapSetCaCert", + "RpcRespEapSetCaCert", "", - sizeof(RpcRespEapSetUsername), + sizeof(RpcRespEapSetCaCert), 1, - rpc__resp__eap_set_username__field_descriptors, - rpc__resp__eap_set_username__field_indices_by_name, - 1, rpc__resp__eap_set_username__number_ranges, - (ProtobufCMessageInit) rpc__resp__eap_set_username__init, + rpc__resp__eap_set_ca_cert__field_descriptors, + rpc__resp__eap_set_ca_cert__field_indices_by_name, + 1, rpc__resp__eap_set_ca_cert__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_set_ca_cert__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__eap_clear_username__field_descriptors NULL -#define rpc__req__eap_clear_username__field_indices_by_name NULL -#define rpc__req__eap_clear_username__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__eap_clear_username__descriptor = +#define rpc__req__eap_clear_ca_cert__field_descriptors NULL +#define rpc__req__eap_clear_ca_cert__field_indices_by_name NULL +#define rpc__req__eap_clear_ca_cert__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__eap_clear_ca_cert__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_EapClearUsername", - "RpcReqEapClearUsername", - "RpcReqEapClearUsername", + "Rpc_Req_EapClearCaCert", + "RpcReqEapClearCaCert", + "RpcReqEapClearCaCert", "", - sizeof(RpcReqEapClearUsername), + sizeof(RpcReqEapClearCaCert), 0, - rpc__req__eap_clear_username__field_descriptors, - rpc__req__eap_clear_username__field_indices_by_name, - 0, rpc__req__eap_clear_username__number_ranges, - (ProtobufCMessageInit) rpc__req__eap_clear_username__init, + rpc__req__eap_clear_ca_cert__field_descriptors, + rpc__req__eap_clear_ca_cert__field_indices_by_name, + 0, rpc__req__eap_clear_ca_cert__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_clear_ca_cert__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__eap_clear_username__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__eap_clear_ca_cert__field_descriptors[1] = { { "resp", @@ -21592,88 +23106,140 @@ static const ProtobufCFieldDescriptor rpc__resp__eap_clear_username__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespEapClearUsername, resp), + offsetof(RpcRespEapClearCaCert, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__eap_clear_username__field_indices_by_name[] = { +static const unsigned rpc__resp__eap_clear_ca_cert__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__eap_clear_username__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_clear_ca_cert__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__eap_clear_username__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_clear_ca_cert__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_EapClearUsername", - "RpcRespEapClearUsername", - "RpcRespEapClearUsername", + "Rpc_Resp_EapClearCaCert", + "RpcRespEapClearCaCert", + "RpcRespEapClearCaCert", "", - sizeof(RpcRespEapClearUsername), + sizeof(RpcRespEapClearCaCert), 1, - rpc__resp__eap_clear_username__field_descriptors, - rpc__resp__eap_clear_username__field_indices_by_name, - 1, rpc__resp__eap_clear_username__number_ranges, - (ProtobufCMessageInit) rpc__resp__eap_clear_username__init, + rpc__resp__eap_clear_ca_cert__field_descriptors, + rpc__resp__eap_clear_ca_cert__field_indices_by_name, + 1, rpc__resp__eap_clear_ca_cert__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_clear_ca_cert__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__eap_set_password__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__eap_set_certificate_and_key__field_descriptors[6] = { { - "password", + "client_cert", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcReqEapSetPassword, password), + offsetof(RpcReqEapSetCertificateAndKey, client_cert), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "client_cert_len", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcReqEapSetCertificateAndKey, client_cert_len), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "private_key", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcReqEapSetCertificateAndKey, private_key), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "private_key_len", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcReqEapSetCertificateAndKey, private_key_len), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "private_key_password", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcReqEapSetCertificateAndKey, private_key_password), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "len", - 2, + "private_key_passwd_len", + 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqEapSetPassword, len), + offsetof(RpcReqEapSetCertificateAndKey, private_key_passwd_len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__eap_set_password__field_indices_by_name[] = { - 1, /* field[1] = len */ - 0, /* field[0] = password */ +static const unsigned rpc__req__eap_set_certificate_and_key__field_indices_by_name[] = { + 0, /* field[0] = client_cert */ + 1, /* field[1] = client_cert_len */ + 2, /* field[2] = private_key */ + 3, /* field[3] = private_key_len */ + 5, /* field[5] = private_key_passwd_len */ + 4, /* field[4] = private_key_password */ }; -static const ProtobufCIntRange rpc__req__eap_set_password__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__eap_set_certificate_and_key__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 6 } }; -const ProtobufCMessageDescriptor rpc__req__eap_set_password__descriptor = +const ProtobufCMessageDescriptor rpc__req__eap_set_certificate_and_key__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_EapSetPassword", - "RpcReqEapSetPassword", - "RpcReqEapSetPassword", + "Rpc_Req_EapSetCertificateAndKey", + "RpcReqEapSetCertificateAndKey", + "RpcReqEapSetCertificateAndKey", "", - sizeof(RpcReqEapSetPassword), - 2, - rpc__req__eap_set_password__field_descriptors, - rpc__req__eap_set_password__field_indices_by_name, - 1, rpc__req__eap_set_password__number_ranges, - (ProtobufCMessageInit) rpc__req__eap_set_password__init, + sizeof(RpcReqEapSetCertificateAndKey), + 6, + rpc__req__eap_set_certificate_and_key__field_descriptors, + rpc__req__eap_set_certificate_and_key__field_indices_by_name, + 1, rpc__req__eap_set_certificate_and_key__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_set_certificate_and_key__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__eap_set_password__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__eap_set_certificate_and_key__field_descriptors[1] = { { "resp", @@ -21681,55 +23247,55 @@ static const ProtobufCFieldDescriptor rpc__resp__eap_set_password__field_descrip PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespEapSetPassword, resp), + offsetof(RpcRespEapSetCertificateAndKey, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__eap_set_password__field_indices_by_name[] = { +static const unsigned rpc__resp__eap_set_certificate_and_key__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__eap_set_password__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_set_certificate_and_key__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__eap_set_password__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_set_certificate_and_key__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_EapSetPassword", - "RpcRespEapSetPassword", - "RpcRespEapSetPassword", + "Rpc_Resp_EapSetCertificateAndKey", + "RpcRespEapSetCertificateAndKey", + "RpcRespEapSetCertificateAndKey", "", - sizeof(RpcRespEapSetPassword), + sizeof(RpcRespEapSetCertificateAndKey), 1, - rpc__resp__eap_set_password__field_descriptors, - rpc__resp__eap_set_password__field_indices_by_name, - 1, rpc__resp__eap_set_password__number_ranges, - (ProtobufCMessageInit) rpc__resp__eap_set_password__init, + rpc__resp__eap_set_certificate_and_key__field_descriptors, + rpc__resp__eap_set_certificate_and_key__field_indices_by_name, + 1, rpc__resp__eap_set_certificate_and_key__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_set_certificate_and_key__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__eap_clear_password__field_descriptors NULL -#define rpc__req__eap_clear_password__field_indices_by_name NULL -#define rpc__req__eap_clear_password__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__eap_clear_password__descriptor = +#define rpc__req__eap_clear_certificate_and_key__field_descriptors NULL +#define rpc__req__eap_clear_certificate_and_key__field_indices_by_name NULL +#define rpc__req__eap_clear_certificate_and_key__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__eap_clear_certificate_and_key__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_EapClearPassword", - "RpcReqEapClearPassword", - "RpcReqEapClearPassword", + "Rpc_Req_EapClearCertificateAndKey", + "RpcReqEapClearCertificateAndKey", + "RpcReqEapClearCertificateAndKey", "", - sizeof(RpcReqEapClearPassword), + sizeof(RpcReqEapClearCertificateAndKey), 0, - rpc__req__eap_clear_password__field_descriptors, - rpc__req__eap_clear_password__field_indices_by_name, - 0, rpc__req__eap_clear_password__number_ranges, - (ProtobufCMessageInit) rpc__req__eap_clear_password__init, + rpc__req__eap_clear_certificate_and_key__field_descriptors, + rpc__req__eap_clear_certificate_and_key__field_indices_by_name, + 0, rpc__req__eap_clear_certificate_and_key__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_clear_certificate_and_key__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__eap_clear_password__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__eap_clear_certificate_and_key__field_descriptors[1] = { { "resp", @@ -21737,88 +23303,75 @@ static const ProtobufCFieldDescriptor rpc__resp__eap_clear_password__field_descr PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespEapClearPassword, resp), + offsetof(RpcRespEapClearCertificateAndKey, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__eap_clear_password__field_indices_by_name[] = { +static const unsigned rpc__resp__eap_clear_certificate_and_key__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__eap_clear_password__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_clear_certificate_and_key__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__eap_clear_password__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_clear_certificate_and_key__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_EapClearPassword", - "RpcRespEapClearPassword", - "RpcRespEapClearPassword", + "Rpc_Resp_EapClearCertificateAndKey", + "RpcRespEapClearCertificateAndKey", + "RpcRespEapClearCertificateAndKey", "", - sizeof(RpcRespEapClearPassword), + sizeof(RpcRespEapClearCertificateAndKey), 1, - rpc__resp__eap_clear_password__field_descriptors, - rpc__resp__eap_clear_password__field_indices_by_name, - 1, rpc__resp__eap_clear_password__number_ranges, - (ProtobufCMessageInit) rpc__resp__eap_clear_password__init, + rpc__resp__eap_clear_certificate_and_key__field_descriptors, + rpc__resp__eap_clear_certificate_and_key__field_indices_by_name, + 1, rpc__resp__eap_clear_certificate_and_key__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_clear_certificate_and_key__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__eap_set_new_password__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__eap_set_disable_time_check__field_descriptors[1] = { { - "new_password", + "disable", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, - 0, /* quantifier_offset */ - offsetof(RpcReqEapSetNewPassword, new_password), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "len", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(RpcReqEapSetNewPassword, len), + offsetof(RpcReqEapSetDisableTimeCheck, disable), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__eap_set_new_password__field_indices_by_name[] = { - 1, /* field[1] = len */ - 0, /* field[0] = new_password */ +static const unsigned rpc__req__eap_set_disable_time_check__field_indices_by_name[] = { + 0, /* field[0] = disable */ }; -static const ProtobufCIntRange rpc__req__eap_set_new_password__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__eap_set_disable_time_check__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__eap_set_new_password__descriptor = +const ProtobufCMessageDescriptor rpc__req__eap_set_disable_time_check__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_EapSetNewPassword", - "RpcReqEapSetNewPassword", - "RpcReqEapSetNewPassword", + "Rpc_Req_EapSetDisableTimeCheck", + "RpcReqEapSetDisableTimeCheck", + "RpcReqEapSetDisableTimeCheck", "", - sizeof(RpcReqEapSetNewPassword), - 2, - rpc__req__eap_set_new_password__field_descriptors, - rpc__req__eap_set_new_password__field_indices_by_name, - 1, rpc__req__eap_set_new_password__number_ranges, - (ProtobufCMessageInit) rpc__req__eap_set_new_password__init, + sizeof(RpcReqEapSetDisableTimeCheck), + 1, + rpc__req__eap_set_disable_time_check__field_descriptors, + rpc__req__eap_set_disable_time_check__field_indices_by_name, + 1, rpc__req__eap_set_disable_time_check__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_set_disable_time_check__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__eap_set_new_password__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__eap_set_disable_time_check__field_descriptors[1] = { { "resp", @@ -21826,200 +23379,144 @@ static const ProtobufCFieldDescriptor rpc__resp__eap_set_new_password__field_des PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespEapSetNewPassword, resp), + offsetof(RpcRespEapSetDisableTimeCheck, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__eap_set_new_password__field_indices_by_name[] = { +static const unsigned rpc__resp__eap_set_disable_time_check__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__eap_set_new_password__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_set_disable_time_check__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__eap_set_new_password__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_set_disable_time_check__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_EapSetNewPassword", - "RpcRespEapSetNewPassword", - "RpcRespEapSetNewPassword", + "Rpc_Resp_EapSetDisableTimeCheck", + "RpcRespEapSetDisableTimeCheck", + "RpcRespEapSetDisableTimeCheck", "", - sizeof(RpcRespEapSetNewPassword), + sizeof(RpcRespEapSetDisableTimeCheck), 1, - rpc__resp__eap_set_new_password__field_descriptors, - rpc__resp__eap_set_new_password__field_indices_by_name, - 1, rpc__resp__eap_set_new_password__number_ranges, - (ProtobufCMessageInit) rpc__resp__eap_set_new_password__init, + rpc__resp__eap_set_disable_time_check__field_descriptors, + rpc__resp__eap_set_disable_time_check__field_indices_by_name, + 1, rpc__resp__eap_set_disable_time_check__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_set_disable_time_check__init, NULL,NULL,NULL /* reserved[123] */ }; -#define rpc__req__eap_clear_new_password__field_descriptors NULL -#define rpc__req__eap_clear_new_password__field_indices_by_name NULL -#define rpc__req__eap_clear_new_password__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__eap_clear_new_password__descriptor = +#define rpc__req__eap_get_disable_time_check__field_descriptors NULL +#define rpc__req__eap_get_disable_time_check__field_indices_by_name NULL +#define rpc__req__eap_get_disable_time_check__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__eap_get_disable_time_check__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_EapClearNewPassword", - "RpcReqEapClearNewPassword", - "RpcReqEapClearNewPassword", + "Rpc_Req_EapGetDisableTimeCheck", + "RpcReqEapGetDisableTimeCheck", + "RpcReqEapGetDisableTimeCheck", "", - sizeof(RpcReqEapClearNewPassword), + sizeof(RpcReqEapGetDisableTimeCheck), 0, - rpc__req__eap_clear_new_password__field_descriptors, - rpc__req__eap_clear_new_password__field_indices_by_name, - 0, rpc__req__eap_clear_new_password__number_ranges, - (ProtobufCMessageInit) rpc__req__eap_clear_new_password__init, + rpc__req__eap_get_disable_time_check__field_descriptors, + rpc__req__eap_get_disable_time_check__field_indices_by_name, + 0, rpc__req__eap_get_disable_time_check__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_get_disable_time_check__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__eap_clear_new_password__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__eap_get_disable_time_check__field_descriptors[2] = { { "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcRespEapClearNewPassword, resp), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, -}; -static const unsigned rpc__resp__eap_clear_new_password__field_indices_by_name[] = { - 0, /* field[0] = resp */ -}; -static const ProtobufCIntRange rpc__resp__eap_clear_new_password__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__resp__eap_clear_new_password__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_EapClearNewPassword", - "RpcRespEapClearNewPassword", - "RpcRespEapClearNewPassword", - "", - sizeof(RpcRespEapClearNewPassword), - 1, - rpc__resp__eap_clear_new_password__field_descriptors, - rpc__resp__eap_clear_new_password__field_indices_by_name, - 1, rpc__resp__eap_clear_new_password__number_ranges, - (ProtobufCMessageInit) rpc__resp__eap_clear_new_password__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__req__eap_set_ca_cert__field_descriptors[2] = -{ - { - "ca_cert", - 1, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqEapSetCaCert, ca_cert), + offsetof(RpcRespEapGetDisableTimeCheck, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "ca_cert_len", + "disable", 2, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(RpcReqEapSetCaCert, ca_cert_len), + offsetof(RpcRespEapGetDisableTimeCheck, disable), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__eap_set_ca_cert__field_indices_by_name[] = { - 0, /* field[0] = ca_cert */ - 1, /* field[1] = ca_cert_len */ +static const unsigned rpc__resp__eap_get_disable_time_check__field_indices_by_name[] = { + 1, /* field[1] = disable */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__eap_set_ca_cert__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_get_disable_time_check__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__eap_set_ca_cert__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_get_disable_time_check__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_EapSetCaCert", - "RpcReqEapSetCaCert", - "RpcReqEapSetCaCert", + "Rpc_Resp_EapGetDisableTimeCheck", + "RpcRespEapGetDisableTimeCheck", + "RpcRespEapGetDisableTimeCheck", "", - sizeof(RpcReqEapSetCaCert), + sizeof(RpcRespEapGetDisableTimeCheck), 2, - rpc__req__eap_set_ca_cert__field_descriptors, - rpc__req__eap_set_ca_cert__field_indices_by_name, - 1, rpc__req__eap_set_ca_cert__number_ranges, - (ProtobufCMessageInit) rpc__req__eap_set_ca_cert__init, + rpc__resp__eap_get_disable_time_check__field_descriptors, + rpc__resp__eap_get_disable_time_check__field_indices_by_name, + 1, rpc__resp__eap_get_disable_time_check__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_get_disable_time_check__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__eap_set_ca_cert__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__eap_set_ttls_phase2_method__field_descriptors[1] = { { - "resp", + "type", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespEapSetCaCert, resp), + offsetof(RpcReqEapSetTtlsPhase2Method, type), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__eap_set_ca_cert__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__eap_set_ttls_phase2_method__field_indices_by_name[] = { + 0, /* field[0] = type */ }; -static const ProtobufCIntRange rpc__resp__eap_set_ca_cert__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__eap_set_ttls_phase2_method__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__eap_set_ca_cert__descriptor = +const ProtobufCMessageDescriptor rpc__req__eap_set_ttls_phase2_method__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_EapSetCaCert", - "RpcRespEapSetCaCert", - "RpcRespEapSetCaCert", + "Rpc_Req_EapSetTtlsPhase2Method", + "RpcReqEapSetTtlsPhase2Method", + "RpcReqEapSetTtlsPhase2Method", "", - sizeof(RpcRespEapSetCaCert), + sizeof(RpcReqEapSetTtlsPhase2Method), 1, - rpc__resp__eap_set_ca_cert__field_descriptors, - rpc__resp__eap_set_ca_cert__field_indices_by_name, - 1, rpc__resp__eap_set_ca_cert__number_ranges, - (ProtobufCMessageInit) rpc__resp__eap_set_ca_cert__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__eap_clear_ca_cert__field_descriptors NULL -#define rpc__req__eap_clear_ca_cert__field_indices_by_name NULL -#define rpc__req__eap_clear_ca_cert__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__eap_clear_ca_cert__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_EapClearCaCert", - "RpcReqEapClearCaCert", - "RpcReqEapClearCaCert", - "", - sizeof(RpcReqEapClearCaCert), - 0, - rpc__req__eap_clear_ca_cert__field_descriptors, - rpc__req__eap_clear_ca_cert__field_indices_by_name, - 0, rpc__req__eap_clear_ca_cert__number_ranges, - (ProtobufCMessageInit) rpc__req__eap_clear_ca_cert__init, + rpc__req__eap_set_ttls_phase2_method__field_descriptors, + rpc__req__eap_set_ttls_phase2_method__field_indices_by_name, + 1, rpc__req__eap_set_ttls_phase2_method__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_set_ttls_phase2_method__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__eap_clear_ca_cert__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__eap_set_ttls_phase2_method__field_descriptors[1] = { { "resp", @@ -22027,140 +23524,75 @@ static const ProtobufCFieldDescriptor rpc__resp__eap_clear_ca_cert__field_descri PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespEapClearCaCert, resp), + offsetof(RpcRespEapSetTtlsPhase2Method, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__eap_clear_ca_cert__field_indices_by_name[] = { +static const unsigned rpc__resp__eap_set_ttls_phase2_method__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__eap_clear_ca_cert__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_set_ttls_phase2_method__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__eap_clear_ca_cert__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_set_ttls_phase2_method__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_EapClearCaCert", - "RpcRespEapClearCaCert", - "RpcRespEapClearCaCert", + "Rpc_Resp_EapSetTtlsPhase2Method", + "RpcRespEapSetTtlsPhase2Method", + "RpcRespEapSetTtlsPhase2Method", "", - sizeof(RpcRespEapClearCaCert), + sizeof(RpcRespEapSetTtlsPhase2Method), 1, - rpc__resp__eap_clear_ca_cert__field_descriptors, - rpc__resp__eap_clear_ca_cert__field_indices_by_name, - 1, rpc__resp__eap_clear_ca_cert__number_ranges, - (ProtobufCMessageInit) rpc__resp__eap_clear_ca_cert__init, + rpc__resp__eap_set_ttls_phase2_method__field_descriptors, + rpc__resp__eap_set_ttls_phase2_method__field_indices_by_name, + 1, rpc__resp__eap_set_ttls_phase2_method__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_set_ttls_phase2_method__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__eap_set_certificate_and_key__field_descriptors[6] = +static const ProtobufCFieldDescriptor rpc__req__eap_set_suiteb192bit_certification__field_descriptors[1] = { { - "client_cert", + "enable", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, - 0, /* quantifier_offset */ - offsetof(RpcReqEapSetCertificateAndKey, client_cert), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "client_cert_len", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcReqEapSetCertificateAndKey, client_cert_len), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "private_key", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, - 0, /* quantifier_offset */ - offsetof(RpcReqEapSetCertificateAndKey, private_key), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "private_key_len", - 4, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcReqEapSetCertificateAndKey, private_key_len), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "private_key_password", - 5, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BYTES, - 0, /* quantifier_offset */ - offsetof(RpcReqEapSetCertificateAndKey, private_key_password), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "private_key_passwd_len", - 6, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(RpcReqEapSetCertificateAndKey, private_key_passwd_len), + offsetof(RpcReqEapSetSuiteb192bitCertification, enable), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__eap_set_certificate_and_key__field_indices_by_name[] = { - 0, /* field[0] = client_cert */ - 1, /* field[1] = client_cert_len */ - 2, /* field[2] = private_key */ - 3, /* field[3] = private_key_len */ - 5, /* field[5] = private_key_passwd_len */ - 4, /* field[4] = private_key_password */ +static const unsigned rpc__req__eap_set_suiteb192bit_certification__field_indices_by_name[] = { + 0, /* field[0] = enable */ }; -static const ProtobufCIntRange rpc__req__eap_set_certificate_and_key__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__eap_set_suiteb192bit_certification__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 6 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__eap_set_certificate_and_key__descriptor = +const ProtobufCMessageDescriptor rpc__req__eap_set_suiteb192bit_certification__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_EapSetCertificateAndKey", - "RpcReqEapSetCertificateAndKey", - "RpcReqEapSetCertificateAndKey", + "Rpc_Req_EapSetSuiteb192bitCertification", + "RpcReqEapSetSuiteb192bitCertification", + "RpcReqEapSetSuiteb192bitCertification", "", - sizeof(RpcReqEapSetCertificateAndKey), - 6, - rpc__req__eap_set_certificate_and_key__field_descriptors, - rpc__req__eap_set_certificate_and_key__field_indices_by_name, - 1, rpc__req__eap_set_certificate_and_key__number_ranges, - (ProtobufCMessageInit) rpc__req__eap_set_certificate_and_key__init, + sizeof(RpcReqEapSetSuiteb192bitCertification), + 1, + rpc__req__eap_set_suiteb192bit_certification__field_descriptors, + rpc__req__eap_set_suiteb192bit_certification__field_indices_by_name, + 1, rpc__req__eap_set_suiteb192bit_certification__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_set_suiteb192bit_certification__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__eap_set_certificate_and_key__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__eap_set_suiteb192bit_certification__field_descriptors[1] = { { "resp", @@ -22168,187 +23600,164 @@ static const ProtobufCFieldDescriptor rpc__resp__eap_set_certificate_and_key__fi PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespEapSetCertificateAndKey, resp), + offsetof(RpcRespEapSetSuiteb192bitCertification, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__eap_set_certificate_and_key__field_indices_by_name[] = { +static const unsigned rpc__resp__eap_set_suiteb192bit_certification__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__eap_set_certificate_and_key__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_set_suiteb192bit_certification__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__eap_set_certificate_and_key__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_set_suiteb192bit_certification__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_EapSetCertificateAndKey", - "RpcRespEapSetCertificateAndKey", - "RpcRespEapSetCertificateAndKey", + "Rpc_Resp_EapSetSuiteb192bitCertification", + "RpcRespEapSetSuiteb192bitCertification", + "RpcRespEapSetSuiteb192bitCertification", "", - sizeof(RpcRespEapSetCertificateAndKey), + sizeof(RpcRespEapSetSuiteb192bitCertification), 1, - rpc__resp__eap_set_certificate_and_key__field_descriptors, - rpc__resp__eap_set_certificate_and_key__field_indices_by_name, - 1, rpc__resp__eap_set_certificate_and_key__number_ranges, - (ProtobufCMessageInit) rpc__resp__eap_set_certificate_and_key__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__eap_clear_certificate_and_key__field_descriptors NULL -#define rpc__req__eap_clear_certificate_and_key__field_indices_by_name NULL -#define rpc__req__eap_clear_certificate_and_key__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__eap_clear_certificate_and_key__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_EapClearCertificateAndKey", - "RpcReqEapClearCertificateAndKey", - "RpcReqEapClearCertificateAndKey", - "", - sizeof(RpcReqEapClearCertificateAndKey), - 0, - rpc__req__eap_clear_certificate_and_key__field_descriptors, - rpc__req__eap_clear_certificate_and_key__field_indices_by_name, - 0, rpc__req__eap_clear_certificate_and_key__number_ranges, - (ProtobufCMessageInit) rpc__req__eap_clear_certificate_and_key__init, + rpc__resp__eap_set_suiteb192bit_certification__field_descriptors, + rpc__resp__eap_set_suiteb192bit_certification__field_indices_by_name, + 1, rpc__resp__eap_set_suiteb192bit_certification__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_set_suiteb192bit_certification__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__eap_clear_certificate_and_key__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__eap_set_pac_file__field_descriptors[2] = { { - "resp", + "pac_file", 1, PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcReqEapSetPacFile, pac_file), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "pac_file_len", + 2, + PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespEapClearCertificateAndKey, resp), + offsetof(RpcReqEapSetPacFile, pac_file_len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__eap_clear_certificate_and_key__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__eap_set_pac_file__field_indices_by_name[] = { + 0, /* field[0] = pac_file */ + 1, /* field[1] = pac_file_len */ }; -static const ProtobufCIntRange rpc__resp__eap_clear_certificate_and_key__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__eap_set_pac_file__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__eap_clear_certificate_and_key__descriptor = +const ProtobufCMessageDescriptor rpc__req__eap_set_pac_file__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_EapClearCertificateAndKey", - "RpcRespEapClearCertificateAndKey", - "RpcRespEapClearCertificateAndKey", + "Rpc_Req_EapSetPacFile", + "RpcReqEapSetPacFile", + "RpcReqEapSetPacFile", "", - sizeof(RpcRespEapClearCertificateAndKey), - 1, - rpc__resp__eap_clear_certificate_and_key__field_descriptors, - rpc__resp__eap_clear_certificate_and_key__field_indices_by_name, - 1, rpc__resp__eap_clear_certificate_and_key__number_ranges, - (ProtobufCMessageInit) rpc__resp__eap_clear_certificate_and_key__init, + sizeof(RpcReqEapSetPacFile), + 2, + rpc__req__eap_set_pac_file__field_descriptors, + rpc__req__eap_set_pac_file__field_indices_by_name, + 1, rpc__req__eap_set_pac_file__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_set_pac_file__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__eap_set_disable_time_check__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__eap_set_pac_file__field_descriptors[1] = { { - "disable", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqEapSetDisableTimeCheck, disable), + offsetof(RpcRespEapSetPacFile, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__eap_set_disable_time_check__field_indices_by_name[] = { - 0, /* field[0] = disable */ +static const unsigned rpc__resp__eap_set_pac_file__field_indices_by_name[] = { + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__eap_set_disable_time_check__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_set_pac_file__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__eap_set_disable_time_check__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_set_pac_file__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_EapSetDisableTimeCheck", - "RpcReqEapSetDisableTimeCheck", - "RpcReqEapSetDisableTimeCheck", + "Rpc_Resp_EapSetPacFile", + "RpcRespEapSetPacFile", + "RpcRespEapSetPacFile", "", - sizeof(RpcReqEapSetDisableTimeCheck), + sizeof(RpcRespEapSetPacFile), 1, - rpc__req__eap_set_disable_time_check__field_descriptors, - rpc__req__eap_set_disable_time_check__field_indices_by_name, - 1, rpc__req__eap_set_disable_time_check__number_ranges, - (ProtobufCMessageInit) rpc__req__eap_set_disable_time_check__init, + rpc__resp__eap_set_pac_file__field_descriptors, + rpc__resp__eap_set_pac_file__field_indices_by_name, + 1, rpc__resp__eap_set_pac_file__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_set_pac_file__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__eap_set_disable_time_check__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__eap_set_fast_params__field_descriptors[1] = { { - "resp", + "eap_fast_config", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ - offsetof(RpcRespEapSetDisableTimeCheck, resp), - NULL, + offsetof(RpcReqEapSetFastParams, eap_fast_config), + &eap_fast_config__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__eap_set_disable_time_check__field_indices_by_name[] = { - 0, /* field[0] = resp */ +static const unsigned rpc__req__eap_set_fast_params__field_indices_by_name[] = { + 0, /* field[0] = eap_fast_config */ }; -static const ProtobufCIntRange rpc__resp__eap_set_disable_time_check__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__eap_set_fast_params__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__eap_set_disable_time_check__descriptor = +const ProtobufCMessageDescriptor rpc__req__eap_set_fast_params__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_EapSetDisableTimeCheck", - "RpcRespEapSetDisableTimeCheck", - "RpcRespEapSetDisableTimeCheck", + "Rpc_Req_EapSetFastParams", + "RpcReqEapSetFastParams", + "RpcReqEapSetFastParams", "", - sizeof(RpcRespEapSetDisableTimeCheck), + sizeof(RpcReqEapSetFastParams), 1, - rpc__resp__eap_set_disable_time_check__field_descriptors, - rpc__resp__eap_set_disable_time_check__field_indices_by_name, - 1, rpc__resp__eap_set_disable_time_check__number_ranges, - (ProtobufCMessageInit) rpc__resp__eap_set_disable_time_check__init, - NULL,NULL,NULL /* reserved[123] */ -}; -#define rpc__req__eap_get_disable_time_check__field_descriptors NULL -#define rpc__req__eap_get_disable_time_check__field_indices_by_name NULL -#define rpc__req__eap_get_disable_time_check__number_ranges NULL -const ProtobufCMessageDescriptor rpc__req__eap_get_disable_time_check__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_EapGetDisableTimeCheck", - "RpcReqEapGetDisableTimeCheck", - "RpcReqEapGetDisableTimeCheck", - "", - sizeof(RpcReqEapGetDisableTimeCheck), - 0, - rpc__req__eap_get_disable_time_check__field_descriptors, - rpc__req__eap_get_disable_time_check__field_indices_by_name, - 0, rpc__req__eap_get_disable_time_check__number_ranges, - (ProtobufCMessageInit) rpc__req__eap_get_disable_time_check__init, + rpc__req__eap_set_fast_params__field_descriptors, + rpc__req__eap_set_fast_params__field_indices_by_name, + 1, rpc__req__eap_set_fast_params__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_set_fast_params__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__eap_get_disable_time_check__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__resp__eap_set_fast_params__field_descriptors[1] = { { "resp", @@ -22356,88 +23765,75 @@ static const ProtobufCFieldDescriptor rpc__resp__eap_get_disable_time_check__fie PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespEapGetDisableTimeCheck, resp), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "disable", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, - 0, /* quantifier_offset */ - offsetof(RpcRespEapGetDisableTimeCheck, disable), + offsetof(RpcRespEapSetFastParams, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__eap_get_disable_time_check__field_indices_by_name[] = { - 1, /* field[1] = disable */ +static const unsigned rpc__resp__eap_set_fast_params__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__eap_get_disable_time_check__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_set_fast_params__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__eap_get_disable_time_check__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_set_fast_params__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_EapGetDisableTimeCheck", - "RpcRespEapGetDisableTimeCheck", - "RpcRespEapGetDisableTimeCheck", + "Rpc_Resp_EapSetFastParams", + "RpcRespEapSetFastParams", + "RpcRespEapSetFastParams", "", - sizeof(RpcRespEapGetDisableTimeCheck), - 2, - rpc__resp__eap_get_disable_time_check__field_descriptors, - rpc__resp__eap_get_disable_time_check__field_indices_by_name, - 1, rpc__resp__eap_get_disable_time_check__number_ranges, - (ProtobufCMessageInit) rpc__resp__eap_get_disable_time_check__init, + sizeof(RpcRespEapSetFastParams), + 1, + rpc__resp__eap_set_fast_params__field_descriptors, + rpc__resp__eap_set_fast_params__field_indices_by_name, + 1, rpc__resp__eap_set_fast_params__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_set_fast_params__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__eap_set_ttls_phase2_method__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__eap_use_default_cert_bundle__field_descriptors[1] = { { - "type", + "use_default_bundle", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, + PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(RpcReqEapSetTtlsPhase2Method, type), + offsetof(RpcReqEapUseDefaultCertBundle, use_default_bundle), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__eap_set_ttls_phase2_method__field_indices_by_name[] = { - 0, /* field[0] = type */ +static const unsigned rpc__req__eap_use_default_cert_bundle__field_indices_by_name[] = { + 0, /* field[0] = use_default_bundle */ }; -static const ProtobufCIntRange rpc__req__eap_set_ttls_phase2_method__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__eap_use_default_cert_bundle__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__eap_set_ttls_phase2_method__descriptor = +const ProtobufCMessageDescriptor rpc__req__eap_use_default_cert_bundle__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_EapSetTtlsPhase2Method", - "RpcReqEapSetTtlsPhase2Method", - "RpcReqEapSetTtlsPhase2Method", + "Rpc_Req_EapUseDefaultCertBundle", + "RpcReqEapUseDefaultCertBundle", + "RpcReqEapUseDefaultCertBundle", "", - sizeof(RpcReqEapSetTtlsPhase2Method), + sizeof(RpcReqEapUseDefaultCertBundle), 1, - rpc__req__eap_set_ttls_phase2_method__field_descriptors, - rpc__req__eap_set_ttls_phase2_method__field_indices_by_name, - 1, rpc__req__eap_set_ttls_phase2_method__number_ranges, - (ProtobufCMessageInit) rpc__req__eap_set_ttls_phase2_method__init, + rpc__req__eap_use_default_cert_bundle__field_descriptors, + rpc__req__eap_use_default_cert_bundle__field_indices_by_name, + 1, rpc__req__eap_use_default_cert_bundle__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_use_default_cert_bundle__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__eap_set_ttls_phase2_method__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__eap_use_default_cert_bundle__field_descriptors[1] = { { "resp", @@ -22445,37 +23841,37 @@ static const ProtobufCFieldDescriptor rpc__resp__eap_set_ttls_phase2_method__fie PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespEapSetTtlsPhase2Method, resp), + offsetof(RpcRespEapUseDefaultCertBundle, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__eap_set_ttls_phase2_method__field_indices_by_name[] = { +static const unsigned rpc__resp__eap_use_default_cert_bundle__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__eap_set_ttls_phase2_method__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_use_default_cert_bundle__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__eap_set_ttls_phase2_method__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_use_default_cert_bundle__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_EapSetTtlsPhase2Method", - "RpcRespEapSetTtlsPhase2Method", - "RpcRespEapSetTtlsPhase2Method", + "Rpc_Resp_EapUseDefaultCertBundle", + "RpcRespEapUseDefaultCertBundle", + "RpcRespEapUseDefaultCertBundle", "", - sizeof(RpcRespEapSetTtlsPhase2Method), + sizeof(RpcRespEapUseDefaultCertBundle), 1, - rpc__resp__eap_set_ttls_phase2_method__field_descriptors, - rpc__resp__eap_set_ttls_phase2_method__field_indices_by_name, - 1, rpc__resp__eap_set_ttls_phase2_method__number_ranges, - (ProtobufCMessageInit) rpc__resp__eap_set_ttls_phase2_method__init, + rpc__resp__eap_use_default_cert_bundle__field_descriptors, + rpc__resp__eap_use_default_cert_bundle__field_indices_by_name, + 1, rpc__resp__eap_use_default_cert_bundle__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_use_default_cert_bundle__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__eap_set_suiteb192bit_certification__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__wifi_set_okc_support__field_descriptors[1] = { { "enable", @@ -22483,37 +23879,37 @@ static const ProtobufCFieldDescriptor rpc__req__eap_set_suiteb192bit_certificati PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ - offsetof(RpcReqEapSetSuiteb192bitCertification, enable), + offsetof(RpcReqWifiSetOkcSupport, enable), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__eap_set_suiteb192bit_certification__field_indices_by_name[] = { +static const unsigned rpc__req__wifi_set_okc_support__field_indices_by_name[] = { 0, /* field[0] = enable */ }; -static const ProtobufCIntRange rpc__req__eap_set_suiteb192bit_certification__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__wifi_set_okc_support__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__eap_set_suiteb192bit_certification__descriptor = +const ProtobufCMessageDescriptor rpc__req__wifi_set_okc_support__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_EapSetSuiteb192bitCertification", - "RpcReqEapSetSuiteb192bitCertification", - "RpcReqEapSetSuiteb192bitCertification", + "Rpc_Req_WifiSetOkcSupport", + "RpcReqWifiSetOkcSupport", + "RpcReqWifiSetOkcSupport", "", - sizeof(RpcReqEapSetSuiteb192bitCertification), + sizeof(RpcReqWifiSetOkcSupport), 1, - rpc__req__eap_set_suiteb192bit_certification__field_descriptors, - rpc__req__eap_set_suiteb192bit_certification__field_indices_by_name, - 1, rpc__req__eap_set_suiteb192bit_certification__number_ranges, - (ProtobufCMessageInit) rpc__req__eap_set_suiteb192bit_certification__init, + rpc__req__wifi_set_okc_support__field_descriptors, + rpc__req__wifi_set_okc_support__field_indices_by_name, + 1, rpc__req__wifi_set_okc_support__number_ranges, + (ProtobufCMessageInit) rpc__req__wifi_set_okc_support__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__eap_set_suiteb192bit_certification__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__wifi_set_okc_support__field_descriptors[1] = { { "resp", @@ -22521,88 +23917,75 @@ static const ProtobufCFieldDescriptor rpc__resp__eap_set_suiteb192bit_certificat PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespEapSetSuiteb192bitCertification, resp), + offsetof(RpcRespWifiSetOkcSupport, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__eap_set_suiteb192bit_certification__field_indices_by_name[] = { +static const unsigned rpc__resp__wifi_set_okc_support__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__eap_set_suiteb192bit_certification__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__wifi_set_okc_support__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__eap_set_suiteb192bit_certification__descriptor = +const ProtobufCMessageDescriptor rpc__resp__wifi_set_okc_support__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_EapSetSuiteb192bitCertification", - "RpcRespEapSetSuiteb192bitCertification", - "RpcRespEapSetSuiteb192bitCertification", + "Rpc_Resp_WifiSetOkcSupport", + "RpcRespWifiSetOkcSupport", + "RpcRespWifiSetOkcSupport", "", - sizeof(RpcRespEapSetSuiteb192bitCertification), + sizeof(RpcRespWifiSetOkcSupport), 1, - rpc__resp__eap_set_suiteb192bit_certification__field_descriptors, - rpc__resp__eap_set_suiteb192bit_certification__field_indices_by_name, - 1, rpc__resp__eap_set_suiteb192bit_certification__number_ranges, - (ProtobufCMessageInit) rpc__resp__eap_set_suiteb192bit_certification__init, + rpc__resp__wifi_set_okc_support__field_descriptors, + rpc__resp__wifi_set_okc_support__field_indices_by_name, + 1, rpc__resp__wifi_set_okc_support__number_ranges, + (ProtobufCMessageInit) rpc__resp__wifi_set_okc_support__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__eap_set_pac_file__field_descriptors[2] = +static const ProtobufCFieldDescriptor rpc__req__eap_set_domain_name__field_descriptors[1] = { { - "pac_file", + "domain_name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcReqEapSetPacFile, pac_file), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "pac_file_len", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(RpcReqEapSetPacFile, pac_file_len), + offsetof(RpcReqEapSetDomainName, domain_name), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__eap_set_pac_file__field_indices_by_name[] = { - 0, /* field[0] = pac_file */ - 1, /* field[1] = pac_file_len */ +static const unsigned rpc__req__eap_set_domain_name__field_indices_by_name[] = { + 0, /* field[0] = domain_name */ }; -static const ProtobufCIntRange rpc__req__eap_set_pac_file__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__eap_set_domain_name__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 2 } + { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__eap_set_pac_file__descriptor = +const ProtobufCMessageDescriptor rpc__req__eap_set_domain_name__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_EapSetPacFile", - "RpcReqEapSetPacFile", - "RpcReqEapSetPacFile", + "Rpc_Req_EapSetDomainName", + "RpcReqEapSetDomainName", + "RpcReqEapSetDomainName", "", - sizeof(RpcReqEapSetPacFile), - 2, - rpc__req__eap_set_pac_file__field_descriptors, - rpc__req__eap_set_pac_file__field_indices_by_name, - 1, rpc__req__eap_set_pac_file__number_ranges, - (ProtobufCMessageInit) rpc__req__eap_set_pac_file__init, + sizeof(RpcReqEapSetDomainName), + 1, + rpc__req__eap_set_domain_name__field_descriptors, + rpc__req__eap_set_domain_name__field_indices_by_name, + 1, rpc__req__eap_set_domain_name__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_set_domain_name__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__eap_set_pac_file__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__eap_set_domain_name__field_descriptors[1] = { { "resp", @@ -22610,75 +23993,75 @@ static const ProtobufCFieldDescriptor rpc__resp__eap_set_pac_file__field_descrip PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespEapSetPacFile, resp), + offsetof(RpcRespEapSetDomainName, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__eap_set_pac_file__field_indices_by_name[] = { +static const unsigned rpc__resp__eap_set_domain_name__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__eap_set_pac_file__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_set_domain_name__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__eap_set_pac_file__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_set_domain_name__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_EapSetPacFile", - "RpcRespEapSetPacFile", - "RpcRespEapSetPacFile", + "Rpc_Resp_EapSetDomainName", + "RpcRespEapSetDomainName", + "RpcRespEapSetDomainName", "", - sizeof(RpcRespEapSetPacFile), + sizeof(RpcRespEapSetDomainName), 1, - rpc__resp__eap_set_pac_file__field_descriptors, - rpc__resp__eap_set_pac_file__field_indices_by_name, - 1, rpc__resp__eap_set_pac_file__number_ranges, - (ProtobufCMessageInit) rpc__resp__eap_set_pac_file__init, + rpc__resp__eap_set_domain_name__field_descriptors, + rpc__resp__eap_set_domain_name__field_indices_by_name, + 1, rpc__resp__eap_set_domain_name__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_set_domain_name__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__eap_set_fast_params__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__req__eap_set_eap_methods__field_descriptors[1] = { { - "eap_fast_config", + "methods", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_MESSAGE, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqEapSetFastParams, eap_fast_config), - &eap_fast_config__descriptor, + offsetof(RpcReqEapSetEapMethods, methods), + NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__eap_set_fast_params__field_indices_by_name[] = { - 0, /* field[0] = eap_fast_config */ +static const unsigned rpc__req__eap_set_eap_methods__field_indices_by_name[] = { + 0, /* field[0] = methods */ }; -static const ProtobufCIntRange rpc__req__eap_set_fast_params__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__req__eap_set_eap_methods__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__req__eap_set_fast_params__descriptor = +const ProtobufCMessageDescriptor rpc__req__eap_set_eap_methods__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_EapSetFastParams", - "RpcReqEapSetFastParams", - "RpcReqEapSetFastParams", + "Rpc_Req_EapSetEapMethods", + "RpcReqEapSetEapMethods", + "RpcReqEapSetEapMethods", "", - sizeof(RpcReqEapSetFastParams), + sizeof(RpcReqEapSetEapMethods), 1, - rpc__req__eap_set_fast_params__field_descriptors, - rpc__req__eap_set_fast_params__field_indices_by_name, - 1, rpc__req__eap_set_fast_params__number_ranges, - (ProtobufCMessageInit) rpc__req__eap_set_fast_params__init, + rpc__req__eap_set_eap_methods__field_descriptors, + rpc__req__eap_set_eap_methods__field_indices_by_name, + 1, rpc__req__eap_set_eap_methods__number_ranges, + (ProtobufCMessageInit) rpc__req__eap_set_eap_methods__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__eap_set_fast_params__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__resp__eap_set_eap_methods__field_descriptors[1] = { { "resp", @@ -22686,75 +24069,88 @@ static const ProtobufCFieldDescriptor rpc__resp__eap_set_fast_params__field_desc PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespEapSetFastParams, resp), + offsetof(RpcRespEapSetEapMethods, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__eap_set_fast_params__field_indices_by_name[] = { +static const unsigned rpc__resp__eap_set_eap_methods__field_indices_by_name[] = { 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__eap_set_fast_params__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__resp__eap_set_eap_methods__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; -const ProtobufCMessageDescriptor rpc__resp__eap_set_fast_params__descriptor = +const ProtobufCMessageDescriptor rpc__resp__eap_set_eap_methods__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_EapSetFastParams", - "RpcRespEapSetFastParams", - "RpcRespEapSetFastParams", + "Rpc_Resp_EapSetEapMethods", + "RpcRespEapSetEapMethods", + "RpcRespEapSetEapMethods", "", - sizeof(RpcRespEapSetFastParams), + sizeof(RpcRespEapSetEapMethods), 1, - rpc__resp__eap_set_fast_params__field_descriptors, - rpc__resp__eap_set_fast_params__field_indices_by_name, - 1, rpc__resp__eap_set_fast_params__number_ranges, - (ProtobufCMessageInit) rpc__resp__eap_set_fast_params__init, + rpc__resp__eap_set_eap_methods__field_descriptors, + rpc__resp__eap_set_eap_methods__field_indices_by_name, + 1, rpc__resp__eap_set_eap_methods__number_ranges, + (ProtobufCMessageInit) rpc__resp__eap_set_eap_methods__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__eap_use_default_cert_bundle__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__event__supp_dpp_uri_ready__field_descriptors[2] = { { - "use_default_bundle", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqEapUseDefaultCertBundle, use_default_bundle), + offsetof(RpcEventSuppDppUriReady, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "qrcode", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcEventSuppDppUriReady, qrcode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__eap_use_default_cert_bundle__field_indices_by_name[] = { - 0, /* field[0] = use_default_bundle */ +static const unsigned rpc__event__supp_dpp_uri_ready__field_indices_by_name[] = { + 1, /* field[1] = qrcode */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__eap_use_default_cert_bundle__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__supp_dpp_uri_ready__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__eap_use_default_cert_bundle__descriptor = +const ProtobufCMessageDescriptor rpc__event__supp_dpp_uri_ready__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_EapUseDefaultCertBundle", - "RpcReqEapUseDefaultCertBundle", - "RpcReqEapUseDefaultCertBundle", + "Rpc_Event_SuppDppUriReady", + "RpcEventSuppDppUriReady", + "RpcEventSuppDppUriReady", "", - sizeof(RpcReqEapUseDefaultCertBundle), - 1, - rpc__req__eap_use_default_cert_bundle__field_descriptors, - rpc__req__eap_use_default_cert_bundle__field_indices_by_name, - 1, rpc__req__eap_use_default_cert_bundle__number_ranges, - (ProtobufCMessageInit) rpc__req__eap_use_default_cert_bundle__init, + sizeof(RpcEventSuppDppUriReady), + 2, + rpc__event__supp_dpp_uri_ready__field_descriptors, + rpc__event__supp_dpp_uri_ready__field_indices_by_name, + 1, rpc__event__supp_dpp_uri_ready__number_ranges, + (ProtobufCMessageInit) rpc__event__supp_dpp_uri_ready__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__eap_use_default_cert_bundle__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__event__supp_dpp_cfg_recvd__field_descriptors[2] = { { "resp", @@ -22762,151 +24158,152 @@ static const ProtobufCFieldDescriptor rpc__resp__eap_use_default_cert_bundle__fi PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespEapUseDefaultCertBundle, resp), + offsetof(RpcEventSuppDppCfgRecvd, resp), + NULL, NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cfg", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(RpcEventSuppDppCfgRecvd, cfg), + &wifi_config__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__eap_use_default_cert_bundle__field_indices_by_name[] = { +static const unsigned rpc__event__supp_dpp_cfg_recvd__field_indices_by_name[] = { + 1, /* field[1] = cfg */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__eap_use_default_cert_bundle__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__supp_dpp_cfg_recvd__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__eap_use_default_cert_bundle__descriptor = +const ProtobufCMessageDescriptor rpc__event__supp_dpp_cfg_recvd__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_EapUseDefaultCertBundle", - "RpcRespEapUseDefaultCertBundle", - "RpcRespEapUseDefaultCertBundle", + "Rpc_Event_SuppDppCfgRecvd", + "RpcEventSuppDppCfgRecvd", + "RpcEventSuppDppCfgRecvd", "", - sizeof(RpcRespEapUseDefaultCertBundle), - 1, - rpc__resp__eap_use_default_cert_bundle__field_descriptors, - rpc__resp__eap_use_default_cert_bundle__field_indices_by_name, - 1, rpc__resp__eap_use_default_cert_bundle__number_ranges, - (ProtobufCMessageInit) rpc__resp__eap_use_default_cert_bundle__init, + sizeof(RpcEventSuppDppCfgRecvd), + 2, + rpc__event__supp_dpp_cfg_recvd__field_descriptors, + rpc__event__supp_dpp_cfg_recvd__field_indices_by_name, + 1, rpc__event__supp_dpp_cfg_recvd__number_ranges, + (ProtobufCMessageInit) rpc__event__supp_dpp_cfg_recvd__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__wifi_set_okc_support__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__event__supp_dpp_fail__field_descriptors[2] = { { - "enable", + "resp", 1, PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_BOOL, + PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqWifiSetOkcSupport, enable), + offsetof(RpcEventSuppDppFail, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__req__wifi_set_okc_support__field_indices_by_name[] = { - 0, /* field[0] = enable */ -}; -static const ProtobufCIntRange rpc__req__wifi_set_okc_support__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__req__wifi_set_okc_support__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_WifiSetOkcSupport", - "RpcReqWifiSetOkcSupport", - "RpcReqWifiSetOkcSupport", - "", - sizeof(RpcReqWifiSetOkcSupport), - 1, - rpc__req__wifi_set_okc_support__field_descriptors, - rpc__req__wifi_set_okc_support__field_indices_by_name, - 1, rpc__req__wifi_set_okc_support__number_ranges, - (ProtobufCMessageInit) rpc__req__wifi_set_okc_support__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__resp__wifi_set_okc_support__field_descriptors[1] = -{ { - "resp", - 1, + "reason", + 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespWifiSetOkcSupport, resp), + offsetof(RpcEventSuppDppFail, reason), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__wifi_set_okc_support__field_indices_by_name[] = { +static const unsigned rpc__event__supp_dpp_fail__field_indices_by_name[] = { + 1, /* field[1] = reason */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__wifi_set_okc_support__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__supp_dpp_fail__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__wifi_set_okc_support__descriptor = +const ProtobufCMessageDescriptor rpc__event__supp_dpp_fail__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_WifiSetOkcSupport", - "RpcRespWifiSetOkcSupport", - "RpcRespWifiSetOkcSupport", + "Rpc_Event_SuppDppFail", + "RpcEventSuppDppFail", + "RpcEventSuppDppFail", "", - sizeof(RpcRespWifiSetOkcSupport), - 1, - rpc__resp__wifi_set_okc_support__field_descriptors, - rpc__resp__wifi_set_okc_support__field_indices_by_name, - 1, rpc__resp__wifi_set_okc_support__number_ranges, - (ProtobufCMessageInit) rpc__resp__wifi_set_okc_support__init, + sizeof(RpcEventSuppDppFail), + 2, + rpc__event__supp_dpp_fail__field_descriptors, + rpc__event__supp_dpp_fail__field_indices_by_name, + 1, rpc__event__supp_dpp_fail__number_ranges, + (ProtobufCMessageInit) rpc__event__supp_dpp_fail__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__eap_set_domain_name__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__event__wifi_dpp_uri_ready__field_descriptors[2] = { { - "domain_name", + "resp", 1, PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcEventWifiDppUriReady, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "qrcode", + 2, + PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BYTES, 0, /* quantifier_offset */ - offsetof(RpcReqEapSetDomainName, domain_name), + offsetof(RpcEventWifiDppUriReady, qrcode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__req__eap_set_domain_name__field_indices_by_name[] = { - 0, /* field[0] = domain_name */ +static const unsigned rpc__event__wifi_dpp_uri_ready__field_indices_by_name[] = { + 1, /* field[1] = qrcode */ + 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__req__eap_set_domain_name__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__wifi_dpp_uri_ready__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__req__eap_set_domain_name__descriptor = +const ProtobufCMessageDescriptor rpc__event__wifi_dpp_uri_ready__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_EapSetDomainName", - "RpcReqEapSetDomainName", - "RpcReqEapSetDomainName", + "Rpc_Event_WifiDppUriReady", + "RpcEventWifiDppUriReady", + "RpcEventWifiDppUriReady", "", - sizeof(RpcReqEapSetDomainName), - 1, - rpc__req__eap_set_domain_name__field_descriptors, - rpc__req__eap_set_domain_name__field_indices_by_name, - 1, rpc__req__eap_set_domain_name__number_ranges, - (ProtobufCMessageInit) rpc__req__eap_set_domain_name__init, + sizeof(RpcEventWifiDppUriReady), + 2, + rpc__event__wifi_dpp_uri_ready__field_descriptors, + rpc__event__wifi_dpp_uri_ready__field_indices_by_name, + 1, rpc__event__wifi_dpp_uri_ready__number_ranges, + (ProtobufCMessageInit) rpc__event__wifi_dpp_uri_ready__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__resp__eap_set_domain_name__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__event__wifi_dpp_cfg_recvd__field_descriptors[2] = { { "resp", @@ -22914,113 +24311,101 @@ static const ProtobufCFieldDescriptor rpc__resp__eap_set_domain_name__field_desc PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespEapSetDomainName, resp), + offsetof(RpcEventWifiDppCfgRecvd, resp), + NULL, NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cfg", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(RpcEventWifiDppCfgRecvd, cfg), + &wifi_config__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__eap_set_domain_name__field_indices_by_name[] = { +static const unsigned rpc__event__wifi_dpp_cfg_recvd__field_indices_by_name[] = { + 1, /* field[1] = cfg */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__eap_set_domain_name__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__wifi_dpp_cfg_recvd__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__eap_set_domain_name__descriptor = +const ProtobufCMessageDescriptor rpc__event__wifi_dpp_cfg_recvd__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_EapSetDomainName", - "RpcRespEapSetDomainName", - "RpcRespEapSetDomainName", + "Rpc_Event_WifiDppCfgRecvd", + "RpcEventWifiDppCfgRecvd", + "RpcEventWifiDppCfgRecvd", "", - sizeof(RpcRespEapSetDomainName), - 1, - rpc__resp__eap_set_domain_name__field_descriptors, - rpc__resp__eap_set_domain_name__field_indices_by_name, - 1, rpc__resp__eap_set_domain_name__number_ranges, - (ProtobufCMessageInit) rpc__resp__eap_set_domain_name__init, + sizeof(RpcEventWifiDppCfgRecvd), + 2, + rpc__event__wifi_dpp_cfg_recvd__field_descriptors, + rpc__event__wifi_dpp_cfg_recvd__field_indices_by_name, + 1, rpc__event__wifi_dpp_cfg_recvd__number_ranges, + (ProtobufCMessageInit) rpc__event__wifi_dpp_cfg_recvd__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__req__eap_set_eap_methods__field_descriptors[1] = +static const ProtobufCFieldDescriptor rpc__event__wifi_dpp_fail__field_descriptors[2] = { { - "methods", + "resp", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcReqEapSetEapMethods, methods), + offsetof(RpcEventWifiDppFail, resp), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, -}; -static const unsigned rpc__req__eap_set_eap_methods__field_indices_by_name[] = { - 0, /* field[0] = methods */ -}; -static const ProtobufCIntRange rpc__req__eap_set_eap_methods__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor rpc__req__eap_set_eap_methods__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Req_EapSetEapMethods", - "RpcReqEapSetEapMethods", - "RpcReqEapSetEapMethods", - "", - sizeof(RpcReqEapSetEapMethods), - 1, - rpc__req__eap_set_eap_methods__field_descriptors, - rpc__req__eap_set_eap_methods__field_indices_by_name, - 1, rpc__req__eap_set_eap_methods__number_ranges, - (ProtobufCMessageInit) rpc__req__eap_set_eap_methods__init, - NULL,NULL,NULL /* reserved[123] */ -}; -static const ProtobufCFieldDescriptor rpc__resp__eap_set_eap_methods__field_descriptors[1] = -{ { - "resp", - 1, + "reason", + 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ - offsetof(RpcRespEapSetEapMethods, resp), + offsetof(RpcEventWifiDppFail, reason), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; -static const unsigned rpc__resp__eap_set_eap_methods__field_indices_by_name[] = { +static const unsigned rpc__event__wifi_dpp_fail__field_indices_by_name[] = { + 1, /* field[1] = reason */ 0, /* field[0] = resp */ }; -static const ProtobufCIntRange rpc__resp__eap_set_eap_methods__number_ranges[1 + 1] = +static const ProtobufCIntRange rpc__event__wifi_dpp_fail__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 1 } + { 0, 2 } }; -const ProtobufCMessageDescriptor rpc__resp__eap_set_eap_methods__descriptor = +const ProtobufCMessageDescriptor rpc__event__wifi_dpp_fail__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "Rpc_Resp_EapSetEapMethods", - "RpcRespEapSetEapMethods", - "RpcRespEapSetEapMethods", + "Rpc_Event_WifiDppFail", + "RpcEventWifiDppFail", + "RpcEventWifiDppFail", "", - sizeof(RpcRespEapSetEapMethods), - 1, - rpc__resp__eap_set_eap_methods__field_descriptors, - rpc__resp__eap_set_eap_methods__field_indices_by_name, - 1, rpc__resp__eap_set_eap_methods__number_ranges, - (ProtobufCMessageInit) rpc__resp__eap_set_eap_methods__init, + sizeof(RpcEventWifiDppFail), + 2, + rpc__event__wifi_dpp_fail__field_descriptors, + rpc__event__wifi_dpp_fail__field_indices_by_name, + 1, rpc__event__wifi_dpp_fail__number_ranges, + (ProtobufCMessageInit) rpc__event__wifi_dpp_fail__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__field_descriptors[196] = +static const ProtobufCFieldDescriptor rpc__field_descriptors[212] = { { "msg_type", @@ -23106,6 +24491,66 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[196] = 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "req_supp_dpp_init", + 261, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_supp_dpp_init), + &rpc__req__supp_dpp_init__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_supp_dpp_deinit", + 262, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_supp_dpp_deinit), + &rpc__req__supp_dpp_deinit__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_supp_dpp_bootstrap_gen", + 263, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_supp_dpp_bootstrap_gen), + &rpc__req__supp_dpp_bootstrap_gen__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_supp_dpp_start_listen", + 264, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_supp_dpp_start_listen), + &rpc__req__supp_dpp_start_listen__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_supp_dpp_stop_listen", + 265, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_supp_dpp_stop_listen), + &rpc__req__supp_dpp_stop_listen__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, { "req_wifi_set_ps", 270, @@ -24186,6 +25631,66 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[196] = 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "resp_supp_dpp_init", + 517, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_supp_dpp_init), + &rpc__resp__supp_dpp_init__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_supp_dpp_deinit", + 518, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_supp_dpp_deinit), + &rpc__resp__supp_dpp_deinit__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_supp_dpp_bootstrap_gen", + 519, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_supp_dpp_bootstrap_gen), + &rpc__resp__supp_dpp_bootstrap_gen__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_supp_dpp_start_listen", + 520, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_supp_dpp_start_listen), + &rpc__resp__supp_dpp_start_listen__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_supp_dpp_stop_listen", + 521, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_supp_dpp_stop_listen), + &rpc__resp__supp_dpp_stop_listen__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, { "resp_wifi_set_ps", 526, @@ -25374,226 +26879,314 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[196] = 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "event_supp_dpp_uri_ready", + 782, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, event_supp_dpp_uri_ready), + &rpc__event__supp_dpp_uri_ready__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "event_supp_dpp_cfg_recvd", + 783, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, event_supp_dpp_cfg_recvd), + &rpc__event__supp_dpp_cfg_recvd__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "event_supp_dpp_fail", + 784, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, event_supp_dpp_fail), + &rpc__event__supp_dpp_fail__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "event_wifi_dpp_uri_ready", + 785, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, event_wifi_dpp_uri_ready), + &rpc__event__wifi_dpp_uri_ready__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "event_wifi_dpp_cfg_recvd", + 786, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, event_wifi_dpp_cfg_recvd), + &rpc__event__wifi_dpp_cfg_recvd__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "event_wifi_dpp_fail", + 787, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, event_wifi_dpp_fail), + &rpc__event__wifi_dpp_fail__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, }; static const unsigned rpc__field_indices_by_name[] = { - 185, /* field[185] = event_ap_sta_connected */ - 186, /* field[186] = event_ap_sta_disconnected */ - 191, /* field[191] = event_dhcp_dns */ - 183, /* field[183] = event_esp_init */ - 184, /* field[184] = event_heartbeat */ - 189, /* field[189] = event_sta_connected */ - 190, /* field[190] = event_sta_disconnected */ - 195, /* field[195] = event_sta_itwt_probe */ - 192, /* field[192] = event_sta_itwt_setup */ - 194, /* field[194] = event_sta_itwt_suspend */ - 193, /* field[193] = event_sta_itwt_teardown */ - 188, /* field[188] = event_sta_scan_done */ - 187, /* field[187] = event_wifi_event_no_args */ + 195, /* field[195] = event_ap_sta_connected */ + 196, /* field[196] = event_ap_sta_disconnected */ + 201, /* field[201] = event_dhcp_dns */ + 193, /* field[193] = event_esp_init */ + 194, /* field[194] = event_heartbeat */ + 199, /* field[199] = event_sta_connected */ + 200, /* field[200] = event_sta_disconnected */ + 205, /* field[205] = event_sta_itwt_probe */ + 202, /* field[202] = event_sta_itwt_setup */ + 204, /* field[204] = event_sta_itwt_suspend */ + 203, /* field[203] = event_sta_itwt_teardown */ + 198, /* field[198] = event_sta_scan_done */ + 207, /* field[207] = event_supp_dpp_cfg_recvd */ + 208, /* field[208] = event_supp_dpp_fail */ + 206, /* field[206] = event_supp_dpp_uri_ready */ + 210, /* field[210] = event_wifi_dpp_cfg_recvd */ + 211, /* field[211] = event_wifi_dpp_fail */ + 209, /* field[209] = event_wifi_dpp_uri_ready */ + 197, /* field[197] = event_wifi_event_no_args */ 1, /* field[1] = msg_id */ 0, /* field[0] = msg_type */ - 14, /* field[14] = req_config_heartbeat */ - 80, /* field[80] = req_eap_clear_ca_cert */ - 82, /* field[82] = req_eap_clear_certificate_and_key */ - 72, /* field[72] = req_eap_clear_identity */ - 78, /* field[78] = req_eap_clear_new_password */ - 76, /* field[76] = req_eap_clear_password */ - 74, /* field[74] = req_eap_clear_username */ - 83, /* field[83] = req_eap_get_disable_time_check */ - 79, /* field[79] = req_eap_set_ca_cert */ - 81, /* field[81] = req_eap_set_certificate_and_key */ - 91, /* field[91] = req_eap_set_disable_time_check */ - 90, /* field[90] = req_eap_set_domain_name */ - 92, /* field[92] = req_eap_set_eap_methods */ - 87, /* field[87] = req_eap_set_fast_params */ - 71, /* field[71] = req_eap_set_identity */ - 77, /* field[77] = req_eap_set_new_password */ - 86, /* field[86] = req_eap_set_pac_file */ - 75, /* field[75] = req_eap_set_password */ - 85, /* field[85] = req_eap_set_suiteb_certification */ - 84, /* field[84] = req_eap_set_ttls_phase2_method */ - 73, /* field[73] = req_eap_set_username */ - 88, /* field[88] = req_eap_use_default_cert_bundle */ - 58, /* field[58] = req_get_coprocessor_fwversion */ - 61, /* field[61] = req_get_dhcp_dns */ + 19, /* field[19] = req_config_heartbeat */ + 85, /* field[85] = req_eap_clear_ca_cert */ + 87, /* field[87] = req_eap_clear_certificate_and_key */ + 77, /* field[77] = req_eap_clear_identity */ + 83, /* field[83] = req_eap_clear_new_password */ + 81, /* field[81] = req_eap_clear_password */ + 79, /* field[79] = req_eap_clear_username */ + 88, /* field[88] = req_eap_get_disable_time_check */ + 84, /* field[84] = req_eap_set_ca_cert */ + 86, /* field[86] = req_eap_set_certificate_and_key */ + 96, /* field[96] = req_eap_set_disable_time_check */ + 95, /* field[95] = req_eap_set_domain_name */ + 97, /* field[97] = req_eap_set_eap_methods */ + 92, /* field[92] = req_eap_set_fast_params */ + 76, /* field[76] = req_eap_set_identity */ + 82, /* field[82] = req_eap_set_new_password */ + 91, /* field[91] = req_eap_set_pac_file */ + 80, /* field[80] = req_eap_set_password */ + 90, /* field[90] = req_eap_set_suiteb_certification */ + 89, /* field[89] = req_eap_set_ttls_phase2_method */ + 78, /* field[78] = req_eap_set_username */ + 93, /* field[93] = req_eap_use_default_cert_bundle */ + 63, /* field[63] = req_get_coprocessor_fwversion */ + 66, /* field[66] = req_get_dhcp_dns */ 3, /* field[3] = req_get_mac_address */ - 13, /* field[13] = req_get_wifi_max_tx_power */ + 18, /* field[18] = req_get_wifi_max_tx_power */ 5, /* field[5] = req_get_wifi_mode */ - 9, /* field[9] = req_ota_begin */ - 11, /* field[11] = req_ota_end */ - 10, /* field[10] = req_ota_write */ - 60, /* field[60] = req_set_dhcp_dns */ + 14, /* field[14] = req_ota_begin */ + 16, /* field[16] = req_ota_end */ + 15, /* field[15] = req_ota_write */ + 65, /* field[65] = req_set_dhcp_dns */ 4, /* field[4] = req_set_mac_address */ - 12, /* field[12] = req_set_wifi_max_tx_power */ + 17, /* field[17] = req_set_wifi_max_tx_power */ 6, /* field[6] = req_set_wifi_mode */ - 41, /* field[41] = req_wifi_ap_get_sta_aid */ - 40, /* field[40] = req_wifi_ap_get_sta_list */ - 27, /* field[27] = req_wifi_clear_ap_list */ - 29, /* field[29] = req_wifi_clear_fast_connect */ - 19, /* field[19] = req_wifi_connect */ - 30, /* field[30] = req_wifi_deauth_sta */ - 16, /* field[16] = req_wifi_deinit */ - 20, /* field[20] = req_wifi_disconnect */ - 55, /* field[55] = req_wifi_get_band */ - 57, /* field[57] = req_wifi_get_bandmode */ - 35, /* field[35] = req_wifi_get_bandwidth */ - 53, /* field[53] = req_wifi_get_bandwidths */ - 37, /* field[37] = req_wifi_get_channel */ - 22, /* field[22] = req_wifi_get_config */ - 39, /* field[39] = req_wifi_get_country */ - 46, /* field[46] = req_wifi_get_country_code */ - 44, /* field[44] = req_wifi_get_inactive_time */ - 33, /* field[33] = req_wifi_get_protocol */ - 51, /* field[51] = req_wifi_get_protocols */ - 8, /* field[8] = req_wifi_get_ps */ - 15, /* field[15] = req_wifi_init */ - 28, /* field[28] = req_wifi_restore */ - 25, /* field[25] = req_wifi_scan_get_ap_num */ - 59, /* field[59] = req_wifi_scan_get_ap_record */ - 26, /* field[26] = req_wifi_scan_get_ap_records */ - 23, /* field[23] = req_wifi_scan_start */ - 24, /* field[24] = req_wifi_scan_stop */ - 54, /* field[54] = req_wifi_set_band */ - 56, /* field[56] = req_wifi_set_bandmode */ - 34, /* field[34] = req_wifi_set_bandwidth */ - 52, /* field[52] = req_wifi_set_bandwidths */ - 36, /* field[36] = req_wifi_set_channel */ - 21, /* field[21] = req_wifi_set_config */ - 38, /* field[38] = req_wifi_set_country */ - 45, /* field[45] = req_wifi_set_country_code */ - 43, /* field[43] = req_wifi_set_inactive_time */ - 89, /* field[89] = req_wifi_set_okc_support */ - 32, /* field[32] = req_wifi_set_protocol */ - 50, /* field[50] = req_wifi_set_protocols */ - 7, /* field[7] = req_wifi_set_ps */ - 42, /* field[42] = req_wifi_set_storage */ - 70, /* field[70] = req_wifi_sta_enterprise_disable */ - 69, /* field[69] = req_wifi_sta_enterprise_enable */ - 47, /* field[47] = req_wifi_sta_get_aid */ - 31, /* field[31] = req_wifi_sta_get_ap_info */ - 48, /* field[48] = req_wifi_sta_get_negotiated_phymode */ - 49, /* field[49] = req_wifi_sta_get_rssi */ - 66, /* field[66] = req_wifi_sta_itwt_get_flow_id_status */ - 67, /* field[67] = req_wifi_sta_itwt_send_probe_req */ - 68, /* field[68] = req_wifi_sta_itwt_set_target_wake_time_offset */ - 63, /* field[63] = req_wifi_sta_itwt_setup */ - 65, /* field[65] = req_wifi_sta_itwt_suspend */ - 64, /* field[64] = req_wifi_sta_itwt_teardown */ - 62, /* field[62] = req_wifi_sta_twt_config */ - 17, /* field[17] = req_wifi_start */ - 18, /* field[18] = req_wifi_stop */ - 104, /* field[104] = resp_config_heartbeat */ - 170, /* field[170] = resp_eap_clear_ca_cert */ - 172, /* field[172] = resp_eap_clear_certificate_and_key */ - 162, /* field[162] = resp_eap_clear_identity */ - 168, /* field[168] = resp_eap_clear_new_password */ - 166, /* field[166] = resp_eap_clear_password */ - 164, /* field[164] = resp_eap_clear_username */ - 173, /* field[173] = resp_eap_get_disable_time_check */ - 169, /* field[169] = resp_eap_set_ca_cert */ - 171, /* field[171] = resp_eap_set_certificate_and_key */ - 181, /* field[181] = resp_eap_set_disable_time_check */ - 180, /* field[180] = resp_eap_set_domain_name */ - 182, /* field[182] = resp_eap_set_eap_methods */ - 177, /* field[177] = resp_eap_set_fast_params */ - 161, /* field[161] = resp_eap_set_identity */ - 167, /* field[167] = resp_eap_set_new_password */ - 176, /* field[176] = resp_eap_set_pac_file */ - 165, /* field[165] = resp_eap_set_password */ - 175, /* field[175] = resp_eap_set_suiteb_certification */ - 174, /* field[174] = resp_eap_set_ttls_phase2_method */ - 163, /* field[163] = resp_eap_set_username */ - 178, /* field[178] = resp_eap_use_default_cert_bundle */ - 148, /* field[148] = resp_get_coprocessor_fwversion */ - 151, /* field[151] = resp_get_dhcp_dns */ - 93, /* field[93] = resp_get_mac_address */ - 103, /* field[103] = resp_get_wifi_max_tx_power */ - 95, /* field[95] = resp_get_wifi_mode */ - 99, /* field[99] = resp_ota_begin */ - 101, /* field[101] = resp_ota_end */ - 100, /* field[100] = resp_ota_write */ - 150, /* field[150] = resp_set_dhcp_dns */ - 94, /* field[94] = resp_set_mac_address */ - 102, /* field[102] = resp_set_wifi_max_tx_power */ - 96, /* field[96] = resp_set_wifi_mode */ - 131, /* field[131] = resp_wifi_ap_get_sta_aid */ - 130, /* field[130] = resp_wifi_ap_get_sta_list */ - 117, /* field[117] = resp_wifi_clear_ap_list */ - 119, /* field[119] = resp_wifi_clear_fast_connect */ - 109, /* field[109] = resp_wifi_connect */ - 120, /* field[120] = resp_wifi_deauth_sta */ - 106, /* field[106] = resp_wifi_deinit */ - 110, /* field[110] = resp_wifi_disconnect */ - 145, /* field[145] = resp_wifi_get_band */ - 147, /* field[147] = resp_wifi_get_bandmode */ - 125, /* field[125] = resp_wifi_get_bandwidth */ - 143, /* field[143] = resp_wifi_get_bandwidths */ - 127, /* field[127] = resp_wifi_get_channel */ - 112, /* field[112] = resp_wifi_get_config */ - 129, /* field[129] = resp_wifi_get_country */ - 136, /* field[136] = resp_wifi_get_country_code */ - 134, /* field[134] = resp_wifi_get_inactive_time */ - 123, /* field[123] = resp_wifi_get_protocol */ - 141, /* field[141] = resp_wifi_get_protocols */ - 98, /* field[98] = resp_wifi_get_ps */ - 105, /* field[105] = resp_wifi_init */ - 118, /* field[118] = resp_wifi_restore */ - 115, /* field[115] = resp_wifi_scan_get_ap_num */ - 149, /* field[149] = resp_wifi_scan_get_ap_record */ - 116, /* field[116] = resp_wifi_scan_get_ap_records */ - 113, /* field[113] = resp_wifi_scan_start */ - 114, /* field[114] = resp_wifi_scan_stop */ - 144, /* field[144] = resp_wifi_set_band */ - 146, /* field[146] = resp_wifi_set_bandmode */ - 124, /* field[124] = resp_wifi_set_bandwidth */ - 142, /* field[142] = resp_wifi_set_bandwidths */ - 126, /* field[126] = resp_wifi_set_channel */ - 111, /* field[111] = resp_wifi_set_config */ - 128, /* field[128] = resp_wifi_set_country */ - 135, /* field[135] = resp_wifi_set_country_code */ - 133, /* field[133] = resp_wifi_set_inactive_time */ - 179, /* field[179] = resp_wifi_set_okc_support */ - 122, /* field[122] = resp_wifi_set_protocol */ - 140, /* field[140] = resp_wifi_set_protocols */ - 97, /* field[97] = resp_wifi_set_ps */ - 132, /* field[132] = resp_wifi_set_storage */ - 160, /* field[160] = resp_wifi_sta_enterprise_disable */ - 159, /* field[159] = resp_wifi_sta_enterprise_enable */ - 137, /* field[137] = resp_wifi_sta_get_aid */ - 121, /* field[121] = resp_wifi_sta_get_ap_info */ - 138, /* field[138] = resp_wifi_sta_get_negotiated_phymode */ - 139, /* field[139] = resp_wifi_sta_get_rssi */ - 156, /* field[156] = resp_wifi_sta_itwt_get_flow_id_status */ - 157, /* field[157] = resp_wifi_sta_itwt_send_probe_req */ - 158, /* field[158] = resp_wifi_sta_itwt_set_target_wake_time_offset */ - 153, /* field[153] = resp_wifi_sta_itwt_setup */ - 155, /* field[155] = resp_wifi_sta_itwt_suspend */ - 154, /* field[154] = resp_wifi_sta_itwt_teardown */ - 152, /* field[152] = resp_wifi_sta_twt_config */ - 107, /* field[107] = resp_wifi_start */ - 108, /* field[108] = resp_wifi_stop */ + 9, /* field[9] = req_supp_dpp_bootstrap_gen */ + 8, /* field[8] = req_supp_dpp_deinit */ + 7, /* field[7] = req_supp_dpp_init */ + 10, /* field[10] = req_supp_dpp_start_listen */ + 11, /* field[11] = req_supp_dpp_stop_listen */ + 46, /* field[46] = req_wifi_ap_get_sta_aid */ + 45, /* field[45] = req_wifi_ap_get_sta_list */ + 32, /* field[32] = req_wifi_clear_ap_list */ + 34, /* field[34] = req_wifi_clear_fast_connect */ + 24, /* field[24] = req_wifi_connect */ + 35, /* field[35] = req_wifi_deauth_sta */ + 21, /* field[21] = req_wifi_deinit */ + 25, /* field[25] = req_wifi_disconnect */ + 60, /* field[60] = req_wifi_get_band */ + 62, /* field[62] = req_wifi_get_bandmode */ + 40, /* field[40] = req_wifi_get_bandwidth */ + 58, /* field[58] = req_wifi_get_bandwidths */ + 42, /* field[42] = req_wifi_get_channel */ + 27, /* field[27] = req_wifi_get_config */ + 44, /* field[44] = req_wifi_get_country */ + 51, /* field[51] = req_wifi_get_country_code */ + 49, /* field[49] = req_wifi_get_inactive_time */ + 38, /* field[38] = req_wifi_get_protocol */ + 56, /* field[56] = req_wifi_get_protocols */ + 13, /* field[13] = req_wifi_get_ps */ + 20, /* field[20] = req_wifi_init */ + 33, /* field[33] = req_wifi_restore */ + 30, /* field[30] = req_wifi_scan_get_ap_num */ + 64, /* field[64] = req_wifi_scan_get_ap_record */ + 31, /* field[31] = req_wifi_scan_get_ap_records */ + 28, /* field[28] = req_wifi_scan_start */ + 29, /* field[29] = req_wifi_scan_stop */ + 59, /* field[59] = req_wifi_set_band */ + 61, /* field[61] = req_wifi_set_bandmode */ + 39, /* field[39] = req_wifi_set_bandwidth */ + 57, /* field[57] = req_wifi_set_bandwidths */ + 41, /* field[41] = req_wifi_set_channel */ + 26, /* field[26] = req_wifi_set_config */ + 43, /* field[43] = req_wifi_set_country */ + 50, /* field[50] = req_wifi_set_country_code */ + 48, /* field[48] = req_wifi_set_inactive_time */ + 94, /* field[94] = req_wifi_set_okc_support */ + 37, /* field[37] = req_wifi_set_protocol */ + 55, /* field[55] = req_wifi_set_protocols */ + 12, /* field[12] = req_wifi_set_ps */ + 47, /* field[47] = req_wifi_set_storage */ + 75, /* field[75] = req_wifi_sta_enterprise_disable */ + 74, /* field[74] = req_wifi_sta_enterprise_enable */ + 52, /* field[52] = req_wifi_sta_get_aid */ + 36, /* field[36] = req_wifi_sta_get_ap_info */ + 53, /* field[53] = req_wifi_sta_get_negotiated_phymode */ + 54, /* field[54] = req_wifi_sta_get_rssi */ + 71, /* field[71] = req_wifi_sta_itwt_get_flow_id_status */ + 72, /* field[72] = req_wifi_sta_itwt_send_probe_req */ + 73, /* field[73] = req_wifi_sta_itwt_set_target_wake_time_offset */ + 68, /* field[68] = req_wifi_sta_itwt_setup */ + 70, /* field[70] = req_wifi_sta_itwt_suspend */ + 69, /* field[69] = req_wifi_sta_itwt_teardown */ + 67, /* field[67] = req_wifi_sta_twt_config */ + 22, /* field[22] = req_wifi_start */ + 23, /* field[23] = req_wifi_stop */ + 114, /* field[114] = resp_config_heartbeat */ + 180, /* field[180] = resp_eap_clear_ca_cert */ + 182, /* field[182] = resp_eap_clear_certificate_and_key */ + 172, /* field[172] = resp_eap_clear_identity */ + 178, /* field[178] = resp_eap_clear_new_password */ + 176, /* field[176] = resp_eap_clear_password */ + 174, /* field[174] = resp_eap_clear_username */ + 183, /* field[183] = resp_eap_get_disable_time_check */ + 179, /* field[179] = resp_eap_set_ca_cert */ + 181, /* field[181] = resp_eap_set_certificate_and_key */ + 191, /* field[191] = resp_eap_set_disable_time_check */ + 190, /* field[190] = resp_eap_set_domain_name */ + 192, /* field[192] = resp_eap_set_eap_methods */ + 187, /* field[187] = resp_eap_set_fast_params */ + 171, /* field[171] = resp_eap_set_identity */ + 177, /* field[177] = resp_eap_set_new_password */ + 186, /* field[186] = resp_eap_set_pac_file */ + 175, /* field[175] = resp_eap_set_password */ + 185, /* field[185] = resp_eap_set_suiteb_certification */ + 184, /* field[184] = resp_eap_set_ttls_phase2_method */ + 173, /* field[173] = resp_eap_set_username */ + 188, /* field[188] = resp_eap_use_default_cert_bundle */ + 158, /* field[158] = resp_get_coprocessor_fwversion */ + 161, /* field[161] = resp_get_dhcp_dns */ + 98, /* field[98] = resp_get_mac_address */ + 113, /* field[113] = resp_get_wifi_max_tx_power */ + 100, /* field[100] = resp_get_wifi_mode */ + 109, /* field[109] = resp_ota_begin */ + 111, /* field[111] = resp_ota_end */ + 110, /* field[110] = resp_ota_write */ + 160, /* field[160] = resp_set_dhcp_dns */ + 99, /* field[99] = resp_set_mac_address */ + 112, /* field[112] = resp_set_wifi_max_tx_power */ + 101, /* field[101] = resp_set_wifi_mode */ + 104, /* field[104] = resp_supp_dpp_bootstrap_gen */ + 103, /* field[103] = resp_supp_dpp_deinit */ + 102, /* field[102] = resp_supp_dpp_init */ + 105, /* field[105] = resp_supp_dpp_start_listen */ + 106, /* field[106] = resp_supp_dpp_stop_listen */ + 141, /* field[141] = resp_wifi_ap_get_sta_aid */ + 140, /* field[140] = resp_wifi_ap_get_sta_list */ + 127, /* field[127] = resp_wifi_clear_ap_list */ + 129, /* field[129] = resp_wifi_clear_fast_connect */ + 119, /* field[119] = resp_wifi_connect */ + 130, /* field[130] = resp_wifi_deauth_sta */ + 116, /* field[116] = resp_wifi_deinit */ + 120, /* field[120] = resp_wifi_disconnect */ + 155, /* field[155] = resp_wifi_get_band */ + 157, /* field[157] = resp_wifi_get_bandmode */ + 135, /* field[135] = resp_wifi_get_bandwidth */ + 153, /* field[153] = resp_wifi_get_bandwidths */ + 137, /* field[137] = resp_wifi_get_channel */ + 122, /* field[122] = resp_wifi_get_config */ + 139, /* field[139] = resp_wifi_get_country */ + 146, /* field[146] = resp_wifi_get_country_code */ + 144, /* field[144] = resp_wifi_get_inactive_time */ + 133, /* field[133] = resp_wifi_get_protocol */ + 151, /* field[151] = resp_wifi_get_protocols */ + 108, /* field[108] = resp_wifi_get_ps */ + 115, /* field[115] = resp_wifi_init */ + 128, /* field[128] = resp_wifi_restore */ + 125, /* field[125] = resp_wifi_scan_get_ap_num */ + 159, /* field[159] = resp_wifi_scan_get_ap_record */ + 126, /* field[126] = resp_wifi_scan_get_ap_records */ + 123, /* field[123] = resp_wifi_scan_start */ + 124, /* field[124] = resp_wifi_scan_stop */ + 154, /* field[154] = resp_wifi_set_band */ + 156, /* field[156] = resp_wifi_set_bandmode */ + 134, /* field[134] = resp_wifi_set_bandwidth */ + 152, /* field[152] = resp_wifi_set_bandwidths */ + 136, /* field[136] = resp_wifi_set_channel */ + 121, /* field[121] = resp_wifi_set_config */ + 138, /* field[138] = resp_wifi_set_country */ + 145, /* field[145] = resp_wifi_set_country_code */ + 143, /* field[143] = resp_wifi_set_inactive_time */ + 189, /* field[189] = resp_wifi_set_okc_support */ + 132, /* field[132] = resp_wifi_set_protocol */ + 150, /* field[150] = resp_wifi_set_protocols */ + 107, /* field[107] = resp_wifi_set_ps */ + 142, /* field[142] = resp_wifi_set_storage */ + 170, /* field[170] = resp_wifi_sta_enterprise_disable */ + 169, /* field[169] = resp_wifi_sta_enterprise_enable */ + 147, /* field[147] = resp_wifi_sta_get_aid */ + 131, /* field[131] = resp_wifi_sta_get_ap_info */ + 148, /* field[148] = resp_wifi_sta_get_negotiated_phymode */ + 149, /* field[149] = resp_wifi_sta_get_rssi */ + 166, /* field[166] = resp_wifi_sta_itwt_get_flow_id_status */ + 167, /* field[167] = resp_wifi_sta_itwt_send_probe_req */ + 168, /* field[168] = resp_wifi_sta_itwt_set_target_wake_time_offset */ + 163, /* field[163] = resp_wifi_sta_itwt_setup */ + 165, /* field[165] = resp_wifi_sta_itwt_suspend */ + 164, /* field[164] = resp_wifi_sta_itwt_teardown */ + 162, /* field[162] = resp_wifi_sta_twt_config */ + 117, /* field[117] = resp_wifi_start */ + 118, /* field[118] = resp_wifi_stop */ 2, /* field[2] = uid */ }; static const ProtobufCIntRange rpc__number_ranges[18 + 1] = { { 1, 0 }, { 257, 3 }, - { 270, 7 }, - { 297, 32 }, - { 311, 40 }, - { 325, 43 }, - { 334, 45 }, - { 338, 47 }, - { 341, 49 }, - { 513, 93 }, - { 526, 97 }, - { 553, 122 }, - { 567, 130 }, - { 581, 133 }, - { 590, 135 }, - { 594, 137 }, - { 597, 139 }, - { 769, 183 }, - { 0, 196 } + { 270, 12 }, + { 297, 37 }, + { 311, 45 }, + { 325, 48 }, + { 334, 50 }, + { 338, 52 }, + { 341, 54 }, + { 513, 98 }, + { 526, 107 }, + { 553, 132 }, + { 567, 140 }, + { 581, 143 }, + { 590, 145 }, + { 594, 147 }, + { 597, 149 }, + { 769, 193 }, + { 0, 212 } }; const ProtobufCMessageDescriptor rpc__descriptor = { @@ -25603,7 +27196,7 @@ const ProtobufCMessageDescriptor rpc__descriptor = "Rpc", "", sizeof(Rpc), - 196, + 212, rpc__field_descriptors, rpc__field_indices_by_name, 18, rpc__number_ranges, @@ -25780,7 +27373,7 @@ const ProtobufCEnumDescriptor rpc_type__descriptor = rpc_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; -static const ProtobufCEnumValue rpc_id__enum_values_by_number[254] = +static const ProtobufCEnumValue rpc_id__enum_values_by_number[270] = { { "MsgId_Invalid", "RPC_ID__MsgId_Invalid", 0 }, { "Req_Base", "RPC_ID__Req_Base", 256 }, @@ -25788,6 +27381,11 @@ static const ProtobufCEnumValue rpc_id__enum_values_by_number[254] = { "Req_SetMacAddress", "RPC_ID__Req_SetMacAddress", 258 }, { "Req_GetWifiMode", "RPC_ID__Req_GetWifiMode", 259 }, { "Req_SetWifiMode", "RPC_ID__Req_SetWifiMode", 260 }, + { "Req_SuppDppInit", "RPC_ID__Req_SuppDppInit", 261 }, + { "Req_SuppDppDeinit", "RPC_ID__Req_SuppDppDeinit", 262 }, + { "Req_SuppDppBootstrapGen", "RPC_ID__Req_SuppDppBootstrapGen", 263 }, + { "Req_SuppDppStartListen", "RPC_ID__Req_SuppDppStartListen", 264 }, + { "Req_SuppDppStopListen", "RPC_ID__Req_SuppDppStopListen", 265 }, { "Req_WifiSetPs", "RPC_ID__Req_WifiSetPs", 270 }, { "Req_WifiGetPs", "RPC_ID__Req_WifiGetPs", 271 }, { "Req_OTABegin", "RPC_ID__Req_OTABegin", 272 }, @@ -25907,6 +27505,11 @@ static const ProtobufCEnumValue rpc_id__enum_values_by_number[254] = { "Resp_SetMacAddress", "RPC_ID__Resp_SetMacAddress", 514 }, { "Resp_GetWifiMode", "RPC_ID__Resp_GetWifiMode", 515 }, { "Resp_SetWifiMode", "RPC_ID__Resp_SetWifiMode", 516 }, + { "Resp_SuppDppInit", "RPC_ID__Resp_SuppDppInit", 517 }, + { "Resp_SuppDppDeinit", "RPC_ID__Resp_SuppDppDeinit", 518 }, + { "Resp_SuppDppBootstrapGen", "RPC_ID__Resp_SuppDppBootstrapGen", 519 }, + { "Resp_SuppDppStartListen", "RPC_ID__Resp_SuppDppStartListen", 520 }, + { "Resp_SuppDppStopListen", "RPC_ID__Resp_SuppDppStopListen", 521 }, { "Resp_WifiSetPs", "RPC_ID__Resp_WifiSetPs", 526 }, { "Resp_WifiGetPs", "RPC_ID__Resp_WifiGetPs", 527 }, { "Resp_OTABegin", "RPC_ID__Resp_OTABegin", 528 }, @@ -26035,267 +27638,289 @@ static const ProtobufCEnumValue rpc_id__enum_values_by_number[254] = { "Event_StaItwtTeardown", "RPC_ID__Event_StaItwtTeardown", 779 }, { "Event_StaItwtSuspend", "RPC_ID__Event_StaItwtSuspend", 780 }, { "Event_StaItwtProbe", "RPC_ID__Event_StaItwtProbe", 781 }, - { "Event_Max", "RPC_ID__Event_Max", 782 }, + { "Event_SuppDppUriReady", "RPC_ID__Event_SuppDppUriReady", 782 }, + { "Event_SuppDppCfgRecvd", "RPC_ID__Event_SuppDppCfgRecvd", 783 }, + { "Event_SuppDppFail", "RPC_ID__Event_SuppDppFail", 784 }, + { "Event_WifiDppUriReady", "RPC_ID__Event_WifiDppUriReady", 785 }, + { "Event_WifiDppCfgRecvd", "RPC_ID__Event_WifiDppCfgRecvd", 786 }, + { "Event_WifiDppFail", "RPC_ID__Event_WifiDppFail", 787 }, + { "Event_Max", "RPC_ID__Event_Max", 788 }, }; static const ProtobufCIntRange rpc_id__value_ranges[] = { -{0, 0},{256, 1},{270, 6},{297, 31},{512, 120},{526, 125},{553, 150},{768, 239},{0, 254} -}; -static const ProtobufCEnumValueIndex rpc_id__enum_values_by_name[254] = -{ - { "Event_AP_StaConnected", 242 }, - { "Event_AP_StaDisconnected", 243 }, - { "Event_Base", 239 }, - { "Event_DhcpDnsStatus", 248 }, - { "Event_ESPInit", 240 }, - { "Event_Heartbeat", 241 }, - { "Event_Max", 253 }, - { "Event_StaConnected", 246 }, - { "Event_StaDisconnected", 247 }, - { "Event_StaItwtProbe", 252 }, - { "Event_StaItwtSetup", 249 }, - { "Event_StaItwtSuspend", 251 }, - { "Event_StaItwtTeardown", 250 }, - { "Event_StaScanDone", 245 }, - { "Event_WifiEventNoArgs", 244 }, +{0, 0},{256, 1},{270, 11},{297, 36},{512, 125},{526, 135},{553, 160},{768, 249},{0, 270} +}; +static const ProtobufCEnumValueIndex rpc_id__enum_values_by_name[270] = +{ + { "Event_AP_StaConnected", 252 }, + { "Event_AP_StaDisconnected", 253 }, + { "Event_Base", 249 }, + { "Event_DhcpDnsStatus", 258 }, + { "Event_ESPInit", 250 }, + { "Event_Heartbeat", 251 }, + { "Event_Max", 269 }, + { "Event_StaConnected", 256 }, + { "Event_StaDisconnected", 257 }, + { "Event_StaItwtProbe", 262 }, + { "Event_StaItwtSetup", 259 }, + { "Event_StaItwtSuspend", 261 }, + { "Event_StaItwtTeardown", 260 }, + { "Event_StaScanDone", 255 }, + { "Event_SuppDppCfgRecvd", 264 }, + { "Event_SuppDppFail", 265 }, + { "Event_SuppDppUriReady", 263 }, + { "Event_WifiDppCfgRecvd", 267 }, + { "Event_WifiDppFail", 268 }, + { "Event_WifiDppUriReady", 266 }, + { "Event_WifiEventNoArgs", 254 }, { "MsgId_Invalid", 0 }, { "Req_Base", 1 }, - { "Req_ConfigHeartbeat", 13 }, - { "Req_EapClearCaCert", 106 }, - { "Req_EapClearCertificateAndKey", 108 }, - { "Req_EapClearIdentity", 98 }, - { "Req_EapClearNewPassword", 104 }, - { "Req_EapClearPassword", 102 }, - { "Req_EapClearUsername", 100 }, - { "Req_EapGetDisableTimeCheck", 109 }, - { "Req_EapSetCaCert", 105 }, - { "Req_EapSetCertificateAndKey", 107 }, - { "Req_EapSetDisableTimeCheck", 117 }, - { "Req_EapSetDomainName", 116 }, - { "Req_EapSetEapMethods", 118 }, - { "Req_EapSetFastParams", 113 }, - { "Req_EapSetIdentity", 97 }, - { "Req_EapSetNewPassword", 103 }, - { "Req_EapSetPacFile", 112 }, - { "Req_EapSetPassword", 101 }, - { "Req_EapSetSuitebCertification", 111 }, - { "Req_EapSetTtlsPhase2Method", 110 }, - { "Req_EapSetUsername", 99 }, - { "Req_EapUseDefaultCertBundle", 114 }, - { "Req_GetCoprocessorFwVersion", 84 }, - { "Req_GetDhcpDnsStatus", 87 }, + { "Req_ConfigHeartbeat", 18 }, + { "Req_EapClearCaCert", 111 }, + { "Req_EapClearCertificateAndKey", 113 }, + { "Req_EapClearIdentity", 103 }, + { "Req_EapClearNewPassword", 109 }, + { "Req_EapClearPassword", 107 }, + { "Req_EapClearUsername", 105 }, + { "Req_EapGetDisableTimeCheck", 114 }, + { "Req_EapSetCaCert", 110 }, + { "Req_EapSetCertificateAndKey", 112 }, + { "Req_EapSetDisableTimeCheck", 122 }, + { "Req_EapSetDomainName", 121 }, + { "Req_EapSetEapMethods", 123 }, + { "Req_EapSetFastParams", 118 }, + { "Req_EapSetIdentity", 102 }, + { "Req_EapSetNewPassword", 108 }, + { "Req_EapSetPacFile", 117 }, + { "Req_EapSetPassword", 106 }, + { "Req_EapSetSuitebCertification", 116 }, + { "Req_EapSetTtlsPhase2Method", 115 }, + { "Req_EapSetUsername", 104 }, + { "Req_EapUseDefaultCertBundle", 119 }, + { "Req_GetCoprocessorFwVersion", 89 }, + { "Req_GetDhcpDnsStatus", 92 }, { "Req_GetMACAddress", 2 }, { "Req_GetWifiMode", 4 }, - { "Req_Max", 119 }, - { "Req_OTABegin", 8 }, - { "Req_OTAEnd", 10 }, - { "Req_OTAWrite", 9 }, - { "Req_SetDhcpDnsStatus", 86 }, + { "Req_Max", 124 }, + { "Req_OTABegin", 13 }, + { "Req_OTAEnd", 15 }, + { "Req_OTAWrite", 14 }, + { "Req_SetDhcpDnsStatus", 91 }, { "Req_SetMacAddress", 3 }, { "Req_SetWifiMode", 5 }, - { "Req_Wifi80211Tx", 51 }, - { "Req_WifiApGetStaAid", 46 }, - { "Req_WifiApGetStaList", 45 }, - { "Req_WifiClearApList", 26 }, - { "Req_WifiClearFastConnect", 28 }, - { "Req_WifiConfig11bRate", 66 }, - { "Req_WifiConfig80211TxRate", 70 }, - { "Req_WifiConnect", 18 }, - { "Req_WifiConnectionlessModuleSetWakeInterval", 67 }, - { "Req_WifiDeauthSta", 29 }, - { "Req_WifiDeinit", 15 }, - { "Req_WifiDisablePmfConfig", 71 }, - { "Req_WifiDisconnect", 19 }, - { "Req_WifiFtmEndSession", 64 }, - { "Req_WifiFtmInitiateSession", 63 }, - { "Req_WifiFtmRespSetOffset", 65 }, - { "Req_WifiGetAnt", 57 }, - { "Req_WifiGetAntGpio", 55 }, - { "Req_WifiGetBand", 81 }, - { "Req_WifiGetBandMode", 83 }, - { "Req_WifiGetBandwidth", 34 }, - { "Req_WifiGetBandwidths", 79 }, - { "Req_WifiGetChannel", 36 }, - { "Req_WifiGetConfig", 21 }, - { "Req_WifiGetCountry", 38 }, - { "Req_WifiGetCountryCode", 69 }, - { "Req_WifiGetEventMask", 50 }, - { "Req_WifiGetInactiveTime", 60 }, - { "Req_WifiGetMaxTxPower", 12 }, - { "Req_WifiGetPromiscuous", 40 }, - { "Req_WifiGetPromiscuousCtrlFilter", 44 }, - { "Req_WifiGetPromiscuousFilter", 42 }, - { "Req_WifiGetProtocol", 32 }, - { "Req_WifiGetProtocols", 77 }, - { "Req_WifiGetPs", 7 }, - { "Req_WifiGetTsfTime", 58 }, - { "Req_WifiInit", 14 }, - { "Req_WifiRestore", 27 }, - { "Req_WifiScanGetApNum", 24 }, - { "Req_WifiScanGetApRecord", 85 }, - { "Req_WifiScanGetApRecords", 25 }, - { "Req_WifiScanStart", 22 }, - { "Req_WifiScanStop", 23 }, - { "Req_WifiSetAnt", 56 }, - { "Req_WifiSetAntGpio", 54 }, - { "Req_WifiSetBand", 80 }, - { "Req_WifiSetBandMode", 82 }, - { "Req_WifiSetBandwidth", 33 }, - { "Req_WifiSetBandwidths", 78 }, - { "Req_WifiSetChannel", 35 }, - { "Req_WifiSetConfig", 20 }, - { "Req_WifiSetCountry", 37 }, - { "Req_WifiSetCountryCode", 68 }, - { "Req_WifiSetCsi", 53 }, - { "Req_WifiSetCsiConfig", 52 }, - { "Req_WifiSetDynamicCs", 74 }, - { "Req_WifiSetEventMask", 49 }, - { "Req_WifiSetInactiveTime", 59 }, - { "Req_WifiSetMaxTxPower", 11 }, - { "Req_WifiSetOkcSupport", 115 }, - { "Req_WifiSetPromiscuous", 39 }, - { "Req_WifiSetPromiscuousCtrlFilter", 43 }, - { "Req_WifiSetPromiscuousFilter", 41 }, - { "Req_WifiSetProtocol", 31 }, - { "Req_WifiSetProtocols", 76 }, - { "Req_WifiSetPs", 6 }, - { "Req_WifiSetRssiThreshold", 62 }, - { "Req_WifiSetStorage", 47 }, - { "Req_WifiSetVendorIe", 48 }, - { "Req_WifiStaEnterpriseDisable", 96 }, - { "Req_WifiStaEnterpriseEnable", 95 }, - { "Req_WifiStaGetAid", 72 }, - { "Req_WifiStaGetApInfo", 30 }, - { "Req_WifiStaGetNegotiatedPhymode", 73 }, - { "Req_WifiStaGetRssi", 75 }, - { "Req_WifiStaItwtGetFlowIdStatus", 92 }, - { "Req_WifiStaItwtSendProbeReq", 93 }, - { "Req_WifiStaItwtSetTargetWakeTimeOffset", 94 }, - { "Req_WifiStaItwtSetup", 89 }, - { "Req_WifiStaItwtSuspend", 91 }, - { "Req_WifiStaItwtTeardown", 90 }, - { "Req_WifiStaTwtConfig", 88 }, - { "Req_WifiStart", 16 }, - { "Req_WifiStatisDump", 61 }, - { "Req_WifiStop", 17 }, - { "Resp_Base", 120 }, - { "Resp_ConfigHeartbeat", 132 }, - { "Resp_EapClearCaCert", 225 }, - { "Resp_EapClearCertificateAndKey", 227 }, - { "Resp_EapClearIdentity", 217 }, - { "Resp_EapClearNewPassword", 223 }, - { "Resp_EapClearPassword", 221 }, - { "Resp_EapClearUsername", 219 }, - { "Resp_EapGetDisableTimeCheck", 228 }, - { "Resp_EapSetCaCert", 224 }, - { "Resp_EapSetCertificateAndKey", 226 }, - { "Resp_EapSetDisableTimeCheck", 236 }, - { "Resp_EapSetDomainName", 235 }, - { "Resp_EapSetEapMethods", 237 }, - { "Resp_EapSetFastParams", 232 }, - { "Resp_EapSetIdentity", 216 }, - { "Resp_EapSetNewPassword", 222 }, - { "Resp_EapSetPacFile", 231 }, - { "Resp_EapSetPassword", 220 }, - { "Resp_EapSetSuitebCertification", 230 }, - { "Resp_EapSetTtlsPhase2Method", 229 }, - { "Resp_EapSetUsername", 218 }, - { "Resp_EapUseDefaultCertBundle", 233 }, - { "Resp_GetCoprocessorFwVersion", 203 }, - { "Resp_GetDhcpDnsStatus", 206 }, - { "Resp_GetMACAddress", 121 }, - { "Resp_GetWifiMode", 123 }, - { "Resp_Max", 238 }, - { "Resp_OTABegin", 127 }, - { "Resp_OTAEnd", 129 }, - { "Resp_OTAWrite", 128 }, - { "Resp_SetDhcpDnsStatus", 205 }, - { "Resp_SetMacAddress", 122 }, - { "Resp_SetWifiMode", 124 }, - { "Resp_Wifi80211Tx", 170 }, - { "Resp_WifiApGetStaAid", 165 }, - { "Resp_WifiApGetStaList", 164 }, - { "Resp_WifiClearApList", 145 }, - { "Resp_WifiClearFastConnect", 147 }, - { "Resp_WifiConfig11bRate", 185 }, - { "Resp_WifiConfig80211TxRate", 189 }, - { "Resp_WifiConnect", 137 }, - { "Resp_WifiConnectionlessModuleSetWakeInterval", 186 }, - { "Resp_WifiDeauthSta", 148 }, - { "Resp_WifiDeinit", 134 }, - { "Resp_WifiDisablePmfConfig", 190 }, - { "Resp_WifiDisconnect", 138 }, - { "Resp_WifiFtmEndSession", 183 }, - { "Resp_WifiFtmInitiateSession", 182 }, - { "Resp_WifiFtmRespSetOffset", 184 }, - { "Resp_WifiGetAnt", 176 }, - { "Resp_WifiGetAntGpio", 174 }, - { "Resp_WifiGetBand", 200 }, - { "Resp_WifiGetBandMode", 202 }, - { "Resp_WifiGetBandwidth", 153 }, - { "Resp_WifiGetBandwidths", 198 }, - { "Resp_WifiGetChannel", 155 }, - { "Resp_WifiGetConfig", 140 }, - { "Resp_WifiGetCountry", 157 }, - { "Resp_WifiGetCountryCode", 188 }, - { "Resp_WifiGetEventMask", 169 }, - { "Resp_WifiGetInactiveTime", 179 }, - { "Resp_WifiGetMaxTxPower", 131 }, - { "Resp_WifiGetPromiscuous", 159 }, - { "Resp_WifiGetPromiscuousCtrlFilter", 163 }, - { "Resp_WifiGetPromiscuousFilter", 161 }, - { "Resp_WifiGetProtocol", 151 }, - { "Resp_WifiGetProtocols", 196 }, - { "Resp_WifiGetPs", 126 }, - { "Resp_WifiGetTsfTime", 177 }, - { "Resp_WifiInit", 133 }, - { "Resp_WifiRestore", 146 }, - { "Resp_WifiScanGetApNum", 143 }, - { "Resp_WifiScanGetApRecord", 204 }, - { "Resp_WifiScanGetApRecords", 144 }, - { "Resp_WifiScanStart", 141 }, - { "Resp_WifiScanStop", 142 }, - { "Resp_WifiSetAnt", 175 }, - { "Resp_WifiSetAntGpio", 173 }, - { "Resp_WifiSetBand", 199 }, - { "Resp_WifiSetBandMode", 201 }, - { "Resp_WifiSetBandwidth", 152 }, - { "Resp_WifiSetBandwidths", 197 }, - { "Resp_WifiSetChannel", 154 }, - { "Resp_WifiSetConfig", 139 }, - { "Resp_WifiSetCountry", 156 }, - { "Resp_WifiSetCountryCode", 187 }, - { "Resp_WifiSetCsi", 172 }, - { "Resp_WifiSetCsiConfig", 171 }, - { "Resp_WifiSetDynamicCs", 193 }, - { "Resp_WifiSetEventMask", 168 }, - { "Resp_WifiSetInactiveTime", 178 }, - { "Resp_WifiSetMaxTxPower", 130 }, - { "Resp_WifiSetOkcSupport", 234 }, - { "Resp_WifiSetPromiscuous", 158 }, - { "Resp_WifiSetPromiscuousCtrlFilter", 162 }, - { "Resp_WifiSetPromiscuousFilter", 160 }, - { "Resp_WifiSetProtocol", 150 }, - { "Resp_WifiSetProtocols", 195 }, - { "Resp_WifiSetPs", 125 }, - { "Resp_WifiSetRssiThreshold", 181 }, - { "Resp_WifiSetStorage", 166 }, - { "Resp_WifiSetVendorIe", 167 }, - { "Resp_WifiStaEnterpriseDisable", 215 }, - { "Resp_WifiStaEnterpriseEnable", 214 }, - { "Resp_WifiStaGetAid", 191 }, - { "Resp_WifiStaGetApInfo", 149 }, - { "Resp_WifiStaGetNegotiatedPhymode", 192 }, - { "Resp_WifiStaGetRssi", 194 }, - { "Resp_WifiStaItwtGetFlowIdStatus", 211 }, - { "Resp_WifiStaItwtSendProbeReq", 212 }, - { "Resp_WifiStaItwtSetTargetWakeTimeOffset", 213 }, - { "Resp_WifiStaItwtSetup", 208 }, - { "Resp_WifiStaItwtSuspend", 210 }, - { "Resp_WifiStaItwtTeardown", 209 }, - { "Resp_WifiStaTwtConfig", 207 }, - { "Resp_WifiStart", 135 }, - { "Resp_WifiStatisDump", 180 }, - { "Resp_WifiStop", 136 }, + { "Req_SuppDppBootstrapGen", 8 }, + { "Req_SuppDppDeinit", 7 }, + { "Req_SuppDppInit", 6 }, + { "Req_SuppDppStartListen", 9 }, + { "Req_SuppDppStopListen", 10 }, + { "Req_Wifi80211Tx", 56 }, + { "Req_WifiApGetStaAid", 51 }, + { "Req_WifiApGetStaList", 50 }, + { "Req_WifiClearApList", 31 }, + { "Req_WifiClearFastConnect", 33 }, + { "Req_WifiConfig11bRate", 71 }, + { "Req_WifiConfig80211TxRate", 75 }, + { "Req_WifiConnect", 23 }, + { "Req_WifiConnectionlessModuleSetWakeInterval", 72 }, + { "Req_WifiDeauthSta", 34 }, + { "Req_WifiDeinit", 20 }, + { "Req_WifiDisablePmfConfig", 76 }, + { "Req_WifiDisconnect", 24 }, + { "Req_WifiFtmEndSession", 69 }, + { "Req_WifiFtmInitiateSession", 68 }, + { "Req_WifiFtmRespSetOffset", 70 }, + { "Req_WifiGetAnt", 62 }, + { "Req_WifiGetAntGpio", 60 }, + { "Req_WifiGetBand", 86 }, + { "Req_WifiGetBandMode", 88 }, + { "Req_WifiGetBandwidth", 39 }, + { "Req_WifiGetBandwidths", 84 }, + { "Req_WifiGetChannel", 41 }, + { "Req_WifiGetConfig", 26 }, + { "Req_WifiGetCountry", 43 }, + { "Req_WifiGetCountryCode", 74 }, + { "Req_WifiGetEventMask", 55 }, + { "Req_WifiGetInactiveTime", 65 }, + { "Req_WifiGetMaxTxPower", 17 }, + { "Req_WifiGetPromiscuous", 45 }, + { "Req_WifiGetPromiscuousCtrlFilter", 49 }, + { "Req_WifiGetPromiscuousFilter", 47 }, + { "Req_WifiGetProtocol", 37 }, + { "Req_WifiGetProtocols", 82 }, + { "Req_WifiGetPs", 12 }, + { "Req_WifiGetTsfTime", 63 }, + { "Req_WifiInit", 19 }, + { "Req_WifiRestore", 32 }, + { "Req_WifiScanGetApNum", 29 }, + { "Req_WifiScanGetApRecord", 90 }, + { "Req_WifiScanGetApRecords", 30 }, + { "Req_WifiScanStart", 27 }, + { "Req_WifiScanStop", 28 }, + { "Req_WifiSetAnt", 61 }, + { "Req_WifiSetAntGpio", 59 }, + { "Req_WifiSetBand", 85 }, + { "Req_WifiSetBandMode", 87 }, + { "Req_WifiSetBandwidth", 38 }, + { "Req_WifiSetBandwidths", 83 }, + { "Req_WifiSetChannel", 40 }, + { "Req_WifiSetConfig", 25 }, + { "Req_WifiSetCountry", 42 }, + { "Req_WifiSetCountryCode", 73 }, + { "Req_WifiSetCsi", 58 }, + { "Req_WifiSetCsiConfig", 57 }, + { "Req_WifiSetDynamicCs", 79 }, + { "Req_WifiSetEventMask", 54 }, + { "Req_WifiSetInactiveTime", 64 }, + { "Req_WifiSetMaxTxPower", 16 }, + { "Req_WifiSetOkcSupport", 120 }, + { "Req_WifiSetPromiscuous", 44 }, + { "Req_WifiSetPromiscuousCtrlFilter", 48 }, + { "Req_WifiSetPromiscuousFilter", 46 }, + { "Req_WifiSetProtocol", 36 }, + { "Req_WifiSetProtocols", 81 }, + { "Req_WifiSetPs", 11 }, + { "Req_WifiSetRssiThreshold", 67 }, + { "Req_WifiSetStorage", 52 }, + { "Req_WifiSetVendorIe", 53 }, + { "Req_WifiStaEnterpriseDisable", 101 }, + { "Req_WifiStaEnterpriseEnable", 100 }, + { "Req_WifiStaGetAid", 77 }, + { "Req_WifiStaGetApInfo", 35 }, + { "Req_WifiStaGetNegotiatedPhymode", 78 }, + { "Req_WifiStaGetRssi", 80 }, + { "Req_WifiStaItwtGetFlowIdStatus", 97 }, + { "Req_WifiStaItwtSendProbeReq", 98 }, + { "Req_WifiStaItwtSetTargetWakeTimeOffset", 99 }, + { "Req_WifiStaItwtSetup", 94 }, + { "Req_WifiStaItwtSuspend", 96 }, + { "Req_WifiStaItwtTeardown", 95 }, + { "Req_WifiStaTwtConfig", 93 }, + { "Req_WifiStart", 21 }, + { "Req_WifiStatisDump", 66 }, + { "Req_WifiStop", 22 }, + { "Resp_Base", 125 }, + { "Resp_ConfigHeartbeat", 142 }, + { "Resp_EapClearCaCert", 235 }, + { "Resp_EapClearCertificateAndKey", 237 }, + { "Resp_EapClearIdentity", 227 }, + { "Resp_EapClearNewPassword", 233 }, + { "Resp_EapClearPassword", 231 }, + { "Resp_EapClearUsername", 229 }, + { "Resp_EapGetDisableTimeCheck", 238 }, + { "Resp_EapSetCaCert", 234 }, + { "Resp_EapSetCertificateAndKey", 236 }, + { "Resp_EapSetDisableTimeCheck", 246 }, + { "Resp_EapSetDomainName", 245 }, + { "Resp_EapSetEapMethods", 247 }, + { "Resp_EapSetFastParams", 242 }, + { "Resp_EapSetIdentity", 226 }, + { "Resp_EapSetNewPassword", 232 }, + { "Resp_EapSetPacFile", 241 }, + { "Resp_EapSetPassword", 230 }, + { "Resp_EapSetSuitebCertification", 240 }, + { "Resp_EapSetTtlsPhase2Method", 239 }, + { "Resp_EapSetUsername", 228 }, + { "Resp_EapUseDefaultCertBundle", 243 }, + { "Resp_GetCoprocessorFwVersion", 213 }, + { "Resp_GetDhcpDnsStatus", 216 }, + { "Resp_GetMACAddress", 126 }, + { "Resp_GetWifiMode", 128 }, + { "Resp_Max", 248 }, + { "Resp_OTABegin", 137 }, + { "Resp_OTAEnd", 139 }, + { "Resp_OTAWrite", 138 }, + { "Resp_SetDhcpDnsStatus", 215 }, + { "Resp_SetMacAddress", 127 }, + { "Resp_SetWifiMode", 129 }, + { "Resp_SuppDppBootstrapGen", 132 }, + { "Resp_SuppDppDeinit", 131 }, + { "Resp_SuppDppInit", 130 }, + { "Resp_SuppDppStartListen", 133 }, + { "Resp_SuppDppStopListen", 134 }, + { "Resp_Wifi80211Tx", 180 }, + { "Resp_WifiApGetStaAid", 175 }, + { "Resp_WifiApGetStaList", 174 }, + { "Resp_WifiClearApList", 155 }, + { "Resp_WifiClearFastConnect", 157 }, + { "Resp_WifiConfig11bRate", 195 }, + { "Resp_WifiConfig80211TxRate", 199 }, + { "Resp_WifiConnect", 147 }, + { "Resp_WifiConnectionlessModuleSetWakeInterval", 196 }, + { "Resp_WifiDeauthSta", 158 }, + { "Resp_WifiDeinit", 144 }, + { "Resp_WifiDisablePmfConfig", 200 }, + { "Resp_WifiDisconnect", 148 }, + { "Resp_WifiFtmEndSession", 193 }, + { "Resp_WifiFtmInitiateSession", 192 }, + { "Resp_WifiFtmRespSetOffset", 194 }, + { "Resp_WifiGetAnt", 186 }, + { "Resp_WifiGetAntGpio", 184 }, + { "Resp_WifiGetBand", 210 }, + { "Resp_WifiGetBandMode", 212 }, + { "Resp_WifiGetBandwidth", 163 }, + { "Resp_WifiGetBandwidths", 208 }, + { "Resp_WifiGetChannel", 165 }, + { "Resp_WifiGetConfig", 150 }, + { "Resp_WifiGetCountry", 167 }, + { "Resp_WifiGetCountryCode", 198 }, + { "Resp_WifiGetEventMask", 179 }, + { "Resp_WifiGetInactiveTime", 189 }, + { "Resp_WifiGetMaxTxPower", 141 }, + { "Resp_WifiGetPromiscuous", 169 }, + { "Resp_WifiGetPromiscuousCtrlFilter", 173 }, + { "Resp_WifiGetPromiscuousFilter", 171 }, + { "Resp_WifiGetProtocol", 161 }, + { "Resp_WifiGetProtocols", 206 }, + { "Resp_WifiGetPs", 136 }, + { "Resp_WifiGetTsfTime", 187 }, + { "Resp_WifiInit", 143 }, + { "Resp_WifiRestore", 156 }, + { "Resp_WifiScanGetApNum", 153 }, + { "Resp_WifiScanGetApRecord", 214 }, + { "Resp_WifiScanGetApRecords", 154 }, + { "Resp_WifiScanStart", 151 }, + { "Resp_WifiScanStop", 152 }, + { "Resp_WifiSetAnt", 185 }, + { "Resp_WifiSetAntGpio", 183 }, + { "Resp_WifiSetBand", 209 }, + { "Resp_WifiSetBandMode", 211 }, + { "Resp_WifiSetBandwidth", 162 }, + { "Resp_WifiSetBandwidths", 207 }, + { "Resp_WifiSetChannel", 164 }, + { "Resp_WifiSetConfig", 149 }, + { "Resp_WifiSetCountry", 166 }, + { "Resp_WifiSetCountryCode", 197 }, + { "Resp_WifiSetCsi", 182 }, + { "Resp_WifiSetCsiConfig", 181 }, + { "Resp_WifiSetDynamicCs", 203 }, + { "Resp_WifiSetEventMask", 178 }, + { "Resp_WifiSetInactiveTime", 188 }, + { "Resp_WifiSetMaxTxPower", 140 }, + { "Resp_WifiSetOkcSupport", 244 }, + { "Resp_WifiSetPromiscuous", 168 }, + { "Resp_WifiSetPromiscuousCtrlFilter", 172 }, + { "Resp_WifiSetPromiscuousFilter", 170 }, + { "Resp_WifiSetProtocol", 160 }, + { "Resp_WifiSetProtocols", 205 }, + { "Resp_WifiSetPs", 135 }, + { "Resp_WifiSetRssiThreshold", 191 }, + { "Resp_WifiSetStorage", 176 }, + { "Resp_WifiSetVendorIe", 177 }, + { "Resp_WifiStaEnterpriseDisable", 225 }, + { "Resp_WifiStaEnterpriseEnable", 224 }, + { "Resp_WifiStaGetAid", 201 }, + { "Resp_WifiStaGetApInfo", 159 }, + { "Resp_WifiStaGetNegotiatedPhymode", 202 }, + { "Resp_WifiStaGetRssi", 204 }, + { "Resp_WifiStaItwtGetFlowIdStatus", 221 }, + { "Resp_WifiStaItwtSendProbeReq", 222 }, + { "Resp_WifiStaItwtSetTargetWakeTimeOffset", 223 }, + { "Resp_WifiStaItwtSetup", 218 }, + { "Resp_WifiStaItwtSuspend", 220 }, + { "Resp_WifiStaItwtTeardown", 219 }, + { "Resp_WifiStaTwtConfig", 217 }, + { "Resp_WifiStart", 145 }, + { "Resp_WifiStatisDump", 190 }, + { "Resp_WifiStop", 146 }, }; const ProtobufCEnumDescriptor rpc_id__descriptor = { @@ -26304,9 +27929,9 @@ const ProtobufCEnumDescriptor rpc_id__descriptor = "RpcId", "RpcId", "", - 254, + 270, rpc_id__enum_values_by_number, - 254, + 270, rpc_id__enum_values_by_name, 8, rpc_id__value_ranges, diff --git a/common/proto/esp_hosted_rpc.pb-c.h b/common/proto/esp_hosted_rpc.pb-c.h index 2014e321..63ee7f19 100644 --- a/common/proto/esp_hosted_rpc.pb-c.h +++ b/common/proto/esp_hosted_rpc.pb-c.h @@ -10,253 +10,269 @@ PROTOBUF_C__BEGIN_DECLS #if PROTOBUF_C_VERSION_NUMBER < 1003000 # error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers. -#elif 1003003 < PROTOBUF_C_MIN_COMPILER_VERSION +#elif 1004001 < PROTOBUF_C_MIN_COMPILER_VERSION # error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c. #endif -typedef struct _WifiInitConfig WifiInitConfig; -typedef struct _WifiCountry WifiCountry; -typedef struct _WifiActiveScanTime WifiActiveScanTime; -typedef struct _WifiScanTime WifiScanTime; -typedef struct _WifiScanChannelBitmap WifiScanChannelBitmap; -typedef struct _WifiScanConfig WifiScanConfig; -typedef struct _WifiHeApInfo WifiHeApInfo; -typedef struct _WifiApRecord WifiApRecord; -typedef struct _WifiScanThreshold WifiScanThreshold; -typedef struct _WifiPmfConfig WifiPmfConfig; -typedef struct _WifiBssMaxIdleConfig WifiBssMaxIdleConfig; -typedef struct _WifiApConfig WifiApConfig; -typedef struct _WifiStaConfig WifiStaConfig; -typedef struct _WifiConfig WifiConfig; -typedef struct _WifiStaInfo WifiStaInfo; -typedef struct _WifiStaList WifiStaList; -typedef struct _WifiPktRxCtrl WifiPktRxCtrl; -typedef struct _WifiPromiscuousPkt WifiPromiscuousPkt; -typedef struct _WifiPromiscuousFilter WifiPromiscuousFilter; -typedef struct _WifiCsiConfig WifiCsiConfig; -typedef struct _WifiCsiInfo WifiCsiInfo; -typedef struct _WifiAntGpio WifiAntGpio; -typedef struct _WifiAntGpioConfig WifiAntGpioConfig; -typedef struct _WifiAntConfig WifiAntConfig; -typedef struct _WifiActionTxReq WifiActionTxReq; -typedef struct _WifiFtmInitiatorCfg WifiFtmInitiatorCfg; -typedef struct _WifiEventStaScanDone WifiEventStaScanDone; -typedef struct _WifiEventStaConnected WifiEventStaConnected; -typedef struct _WifiEventStaDisconnected WifiEventStaDisconnected; -typedef struct _WifiEventStaAuthmodeChange WifiEventStaAuthmodeChange; -typedef struct _WifiEventStaWpsErPin WifiEventStaWpsErPin; -typedef struct _ApCred ApCred; -typedef struct _WifiEventStaWpsErSuccess WifiEventStaWpsErSuccess; -typedef struct _WifiEventApProbeReqRx WifiEventApProbeReqRx; -typedef struct _WifiEventBssRssiLow WifiEventBssRssiLow; -typedef struct _WifiFtmReportEntry WifiFtmReportEntry; -typedef struct _WifiEventFtmReport WifiEventFtmReport; -typedef struct _WifiEventActionTxStatus WifiEventActionTxStatus; -typedef struct _WifiEventRocDone WifiEventRocDone; -typedef struct _WifiEventApWpsRgPin WifiEventApWpsRgPin; -typedef struct _WifiEventApWpsRgFailReason WifiEventApWpsRgFailReason; -typedef struct _WifiEventApWpsRgSuccess WifiEventApWpsRgSuccess; -typedef struct _WifiProtocols WifiProtocols; -typedef struct _WifiBandwidths WifiBandwidths; -typedef struct _WifiItwtSetupConfig WifiItwtSetupConfig; -typedef struct _WifiTwtConfig WifiTwtConfig; -typedef struct _ConnectedSTAList ConnectedSTAList; -typedef struct _EapFastConfig EapFastConfig; -typedef struct _RpcReqGetMacAddress RpcReqGetMacAddress; -typedef struct _RpcRespGetMacAddress RpcRespGetMacAddress; -typedef struct _RpcReqGetMode RpcReqGetMode; -typedef struct _RpcRespGetMode RpcRespGetMode; -typedef struct _RpcReqSetMode RpcReqSetMode; -typedef struct _RpcRespSetMode RpcRespSetMode; -typedef struct _RpcReqGetPs RpcReqGetPs; -typedef struct _RpcRespGetPs RpcRespGetPs; -typedef struct _RpcReqSetPs RpcReqSetPs; -typedef struct _RpcRespSetPs RpcRespSetPs; -typedef struct _RpcReqSetMacAddress RpcReqSetMacAddress; -typedef struct _RpcRespSetMacAddress RpcRespSetMacAddress; -typedef struct _RpcReqOTABegin RpcReqOTABegin; -typedef struct _RpcRespOTABegin RpcRespOTABegin; -typedef struct _RpcReqOTAWrite RpcReqOTAWrite; -typedef struct _RpcRespOTAWrite RpcRespOTAWrite; -typedef struct _RpcReqOTAEnd RpcReqOTAEnd; -typedef struct _RpcRespOTAEnd RpcRespOTAEnd; -typedef struct _RpcReqWifiSetMaxTxPower RpcReqWifiSetMaxTxPower; -typedef struct _RpcRespWifiSetMaxTxPower RpcRespWifiSetMaxTxPower; -typedef struct _RpcReqWifiGetMaxTxPower RpcReqWifiGetMaxTxPower; -typedef struct _RpcRespWifiGetMaxTxPower RpcRespWifiGetMaxTxPower; -typedef struct _RpcReqConfigHeartbeat RpcReqConfigHeartbeat; -typedef struct _RpcRespConfigHeartbeat RpcRespConfigHeartbeat; -typedef struct _RpcReqWifiInit RpcReqWifiInit; -typedef struct _RpcRespWifiInit RpcRespWifiInit; -typedef struct _RpcReqWifiDeinit RpcReqWifiDeinit; -typedef struct _RpcRespWifiDeinit RpcRespWifiDeinit; -typedef struct _RpcReqWifiSetConfig RpcReqWifiSetConfig; -typedef struct _RpcRespWifiSetConfig RpcRespWifiSetConfig; -typedef struct _RpcReqWifiGetConfig RpcReqWifiGetConfig; -typedef struct _RpcRespWifiGetConfig RpcRespWifiGetConfig; -typedef struct _RpcReqWifiConnect RpcReqWifiConnect; -typedef struct _RpcRespWifiConnect RpcRespWifiConnect; -typedef struct _RpcReqWifiDisconnect RpcReqWifiDisconnect; -typedef struct _RpcRespWifiDisconnect RpcRespWifiDisconnect; -typedef struct _RpcReqWifiStart RpcReqWifiStart; -typedef struct _RpcRespWifiStart RpcRespWifiStart; -typedef struct _RpcReqWifiStop RpcReqWifiStop; -typedef struct _RpcRespWifiStop RpcRespWifiStop; -typedef struct _RpcReqWifiScanStart RpcReqWifiScanStart; -typedef struct _RpcRespWifiScanStart RpcRespWifiScanStart; -typedef struct _RpcReqWifiScanStop RpcReqWifiScanStop; -typedef struct _RpcRespWifiScanStop RpcRespWifiScanStop; -typedef struct _RpcReqWifiScanGetApNum RpcReqWifiScanGetApNum; -typedef struct _RpcRespWifiScanGetApNum RpcRespWifiScanGetApNum; -typedef struct _RpcReqWifiScanGetApRecords RpcReqWifiScanGetApRecords; -typedef struct _RpcRespWifiScanGetApRecords RpcRespWifiScanGetApRecords; -typedef struct _RpcReqWifiScanGetApRecord RpcReqWifiScanGetApRecord; -typedef struct _RpcRespWifiScanGetApRecord RpcRespWifiScanGetApRecord; -typedef struct _RpcReqWifiClearApList RpcReqWifiClearApList; -typedef struct _RpcRespWifiClearApList RpcRespWifiClearApList; -typedef struct _RpcReqWifiRestore RpcReqWifiRestore; -typedef struct _RpcRespWifiRestore RpcRespWifiRestore; -typedef struct _RpcReqWifiClearFastConnect RpcReqWifiClearFastConnect; -typedef struct _RpcRespWifiClearFastConnect RpcRespWifiClearFastConnect; -typedef struct _RpcReqWifiDeauthSta RpcReqWifiDeauthSta; -typedef struct _RpcRespWifiDeauthSta RpcRespWifiDeauthSta; -typedef struct _RpcReqWifiStaGetApInfo RpcReqWifiStaGetApInfo; -typedef struct _RpcRespWifiStaGetApInfo RpcRespWifiStaGetApInfo; -typedef struct _RpcReqWifiSetProtocol RpcReqWifiSetProtocol; -typedef struct _RpcRespWifiSetProtocol RpcRespWifiSetProtocol; -typedef struct _RpcReqWifiGetProtocol RpcReqWifiGetProtocol; -typedef struct _RpcRespWifiGetProtocol RpcRespWifiGetProtocol; -typedef struct _RpcReqWifiSetBandwidth RpcReqWifiSetBandwidth; -typedef struct _RpcRespWifiSetBandwidth RpcRespWifiSetBandwidth; -typedef struct _RpcReqWifiGetBandwidth RpcReqWifiGetBandwidth; -typedef struct _RpcRespWifiGetBandwidth RpcRespWifiGetBandwidth; -typedef struct _RpcReqWifiSetChannel RpcReqWifiSetChannel; -typedef struct _RpcRespWifiSetChannel RpcRespWifiSetChannel; -typedef struct _RpcReqWifiGetChannel RpcReqWifiGetChannel; -typedef struct _RpcRespWifiGetChannel RpcRespWifiGetChannel; -typedef struct _RpcReqWifiSetStorage RpcReqWifiSetStorage; -typedef struct _RpcRespWifiSetStorage RpcRespWifiSetStorage; -typedef struct _RpcReqWifiSetCountryCode RpcReqWifiSetCountryCode; -typedef struct _RpcRespWifiSetCountryCode RpcRespWifiSetCountryCode; -typedef struct _RpcReqWifiGetCountryCode RpcReqWifiGetCountryCode; -typedef struct _RpcRespWifiGetCountryCode RpcRespWifiGetCountryCode; -typedef struct _RpcReqWifiSetCountry RpcReqWifiSetCountry; -typedef struct _RpcRespWifiSetCountry RpcRespWifiSetCountry; -typedef struct _RpcReqWifiGetCountry RpcReqWifiGetCountry; -typedef struct _RpcRespWifiGetCountry RpcRespWifiGetCountry; -typedef struct _RpcReqWifiApGetStaList RpcReqWifiApGetStaList; -typedef struct _RpcRespWifiApGetStaList RpcRespWifiApGetStaList; -typedef struct _RpcReqWifiApGetStaAid RpcReqWifiApGetStaAid; -typedef struct _RpcReqWifiStaGetNegotiatedPhymode RpcReqWifiStaGetNegotiatedPhymode; -typedef struct _RpcRespWifiStaGetNegotiatedPhymode RpcRespWifiStaGetNegotiatedPhymode; -typedef struct _RpcRespWifiApGetStaAid RpcRespWifiApGetStaAid; -typedef struct _RpcReqWifiStaGetRssi RpcReqWifiStaGetRssi; -typedef struct _RpcRespWifiStaGetRssi RpcRespWifiStaGetRssi; -typedef struct _RpcReqWifiStaGetAid RpcReqWifiStaGetAid; -typedef struct _RpcRespWifiStaGetAid RpcRespWifiStaGetAid; -typedef struct _RpcReqWifiSetProtocols RpcReqWifiSetProtocols; -typedef struct _RpcRespWifiSetProtocols RpcRespWifiSetProtocols; -typedef struct _RpcReqWifiGetProtocols RpcReqWifiGetProtocols; -typedef struct _RpcRespWifiGetProtocols RpcRespWifiGetProtocols; -typedef struct _RpcReqWifiSetBandwidths RpcReqWifiSetBandwidths; -typedef struct _RpcRespWifiSetBandwidths RpcRespWifiSetBandwidths; -typedef struct _RpcReqWifiGetBandwidths RpcReqWifiGetBandwidths; -typedef struct _RpcRespWifiGetBandwidths RpcRespWifiGetBandwidths; -typedef struct _RpcReqWifiSetBand RpcReqWifiSetBand; -typedef struct _RpcRespWifiSetBand RpcRespWifiSetBand; -typedef struct _RpcReqWifiGetBand RpcReqWifiGetBand; -typedef struct _RpcRespWifiGetBand RpcRespWifiGetBand; -typedef struct _RpcReqWifiSetBandMode RpcReqWifiSetBandMode; -typedef struct _RpcRespWifiSetBandMode RpcRespWifiSetBandMode; -typedef struct _RpcReqWifiGetBandMode RpcReqWifiGetBandMode; -typedef struct _RpcRespWifiGetBandMode RpcRespWifiGetBandMode; -typedef struct _RpcReqWifiSetInactiveTime RpcReqWifiSetInactiveTime; -typedef struct _RpcRespWifiSetInactiveTime RpcRespWifiSetInactiveTime; -typedef struct _RpcReqWifiGetInactiveTime RpcReqWifiGetInactiveTime; -typedef struct _RpcRespWifiGetInactiveTime RpcRespWifiGetInactiveTime; -typedef struct _RpcReqWifiStaItwtSetup RpcReqWifiStaItwtSetup; -typedef struct _RpcRespWifiStaItwtSetup RpcRespWifiStaItwtSetup; -typedef struct _RpcReqWifiStaItwtTeardown RpcReqWifiStaItwtTeardown; -typedef struct _RpcRespWifiStaItwtTeardown RpcRespWifiStaItwtTeardown; -typedef struct _RpcReqWifiStaItwtSuspend RpcReqWifiStaItwtSuspend; -typedef struct _RpcRespWifiStaItwtSuspend RpcRespWifiStaItwtSuspend; -typedef struct _RpcReqWifiStaItwtGetFlowIdStatus RpcReqWifiStaItwtGetFlowIdStatus; -typedef struct _RpcRespWifiStaItwtGetFlowIdStatus RpcRespWifiStaItwtGetFlowIdStatus; -typedef struct _RpcReqWifiStaItwtSendProbeReq RpcReqWifiStaItwtSendProbeReq; -typedef struct _RpcRespWifiStaItwtSendProbeReq RpcRespWifiStaItwtSendProbeReq; -typedef struct _RpcReqWifiStaItwtSetTargetWakeTimeOffset RpcReqWifiStaItwtSetTargetWakeTimeOffset; -typedef struct _RpcRespWifiStaItwtSetTargetWakeTimeOffset RpcRespWifiStaItwtSetTargetWakeTimeOffset; -typedef struct _RpcReqWifiStaTwtConfig RpcReqWifiStaTwtConfig; -typedef struct _RpcRespWifiStaTwtConfig RpcRespWifiStaTwtConfig; -typedef struct _RpcReqGetCoprocessorFwVersion RpcReqGetCoprocessorFwVersion; -typedef struct _RpcRespGetCoprocessorFwVersion RpcRespGetCoprocessorFwVersion; -typedef struct _RpcReqSetDhcpDnsStatus RpcReqSetDhcpDnsStatus; -typedef struct _RpcRespSetDhcpDnsStatus RpcRespSetDhcpDnsStatus; -typedef struct _RpcReqGetDhcpDnsStatus RpcReqGetDhcpDnsStatus; -typedef struct _RpcRespGetDhcpDnsStatus RpcRespGetDhcpDnsStatus; -typedef struct _RpcEventWifiEventNoArgs RpcEventWifiEventNoArgs; -typedef struct _RpcEventESPInit RpcEventESPInit; -typedef struct _RpcEventHeartbeat RpcEventHeartbeat; -typedef struct _RpcEventAPStaDisconnected RpcEventAPStaDisconnected; -typedef struct _RpcEventAPStaConnected RpcEventAPStaConnected; -typedef struct _RpcEventStaScanDone RpcEventStaScanDone; -typedef struct _RpcEventStaConnected RpcEventStaConnected; -typedef struct _RpcEventStaDisconnected RpcEventStaDisconnected; -typedef struct _RpcEventDhcpDnsStatus RpcEventDhcpDnsStatus; -typedef struct _RpcEventStaItwtSetup RpcEventStaItwtSetup; -typedef struct _RpcEventStaItwtTeardown RpcEventStaItwtTeardown; -typedef struct _RpcEventStaItwtSuspend RpcEventStaItwtSuspend; -typedef struct _RpcEventStaItwtProbe RpcEventStaItwtProbe; -typedef struct _RpcReqWifiStaEnterpriseEnable RpcReqWifiStaEnterpriseEnable; -typedef struct _RpcRespWifiStaEnterpriseEnable RpcRespWifiStaEnterpriseEnable; -typedef struct _RpcReqWifiStaEnterpriseDisable RpcReqWifiStaEnterpriseDisable; -typedef struct _RpcRespWifiStaEnterpriseDisable RpcRespWifiStaEnterpriseDisable; -typedef struct _RpcReqEapSetIdentity RpcReqEapSetIdentity; -typedef struct _RpcRespEapSetIdentity RpcRespEapSetIdentity; -typedef struct _RpcReqEapClearIdentity RpcReqEapClearIdentity; -typedef struct _RpcRespEapClearIdentity RpcRespEapClearIdentity; -typedef struct _RpcReqEapSetUsername RpcReqEapSetUsername; -typedef struct _RpcRespEapSetUsername RpcRespEapSetUsername; -typedef struct _RpcReqEapClearUsername RpcReqEapClearUsername; -typedef struct _RpcRespEapClearUsername RpcRespEapClearUsername; -typedef struct _RpcReqEapSetPassword RpcReqEapSetPassword; -typedef struct _RpcRespEapSetPassword RpcRespEapSetPassword; -typedef struct _RpcReqEapClearPassword RpcReqEapClearPassword; -typedef struct _RpcRespEapClearPassword RpcRespEapClearPassword; -typedef struct _RpcReqEapSetNewPassword RpcReqEapSetNewPassword; -typedef struct _RpcRespEapSetNewPassword RpcRespEapSetNewPassword; -typedef struct _RpcReqEapClearNewPassword RpcReqEapClearNewPassword; -typedef struct _RpcRespEapClearNewPassword RpcRespEapClearNewPassword; -typedef struct _RpcReqEapSetCaCert RpcReqEapSetCaCert; -typedef struct _RpcRespEapSetCaCert RpcRespEapSetCaCert; -typedef struct _RpcReqEapClearCaCert RpcReqEapClearCaCert; -typedef struct _RpcRespEapClearCaCert RpcRespEapClearCaCert; -typedef struct _RpcReqEapSetCertificateAndKey RpcReqEapSetCertificateAndKey; -typedef struct _RpcRespEapSetCertificateAndKey RpcRespEapSetCertificateAndKey; -typedef struct _RpcReqEapClearCertificateAndKey RpcReqEapClearCertificateAndKey; -typedef struct _RpcRespEapClearCertificateAndKey RpcRespEapClearCertificateAndKey; -typedef struct _RpcReqEapSetDisableTimeCheck RpcReqEapSetDisableTimeCheck; -typedef struct _RpcRespEapSetDisableTimeCheck RpcRespEapSetDisableTimeCheck; -typedef struct _RpcReqEapGetDisableTimeCheck RpcReqEapGetDisableTimeCheck; -typedef struct _RpcRespEapGetDisableTimeCheck RpcRespEapGetDisableTimeCheck; -typedef struct _RpcReqEapSetTtlsPhase2Method RpcReqEapSetTtlsPhase2Method; -typedef struct _RpcRespEapSetTtlsPhase2Method RpcRespEapSetTtlsPhase2Method; -typedef struct _RpcReqEapSetSuiteb192bitCertification RpcReqEapSetSuiteb192bitCertification; -typedef struct _RpcRespEapSetSuiteb192bitCertification RpcRespEapSetSuiteb192bitCertification; -typedef struct _RpcReqEapSetPacFile RpcReqEapSetPacFile; -typedef struct _RpcRespEapSetPacFile RpcRespEapSetPacFile; -typedef struct _RpcReqEapSetFastParams RpcReqEapSetFastParams; -typedef struct _RpcRespEapSetFastParams RpcRespEapSetFastParams; -typedef struct _RpcReqEapUseDefaultCertBundle RpcReqEapUseDefaultCertBundle; -typedef struct _RpcRespEapUseDefaultCertBundle RpcRespEapUseDefaultCertBundle; -typedef struct _RpcReqWifiSetOkcSupport RpcReqWifiSetOkcSupport; -typedef struct _RpcRespWifiSetOkcSupport RpcRespWifiSetOkcSupport; -typedef struct _RpcReqEapSetDomainName RpcReqEapSetDomainName; -typedef struct _RpcRespEapSetDomainName RpcRespEapSetDomainName; -typedef struct _RpcReqEapSetEapMethods RpcReqEapSetEapMethods; -typedef struct _RpcRespEapSetEapMethods RpcRespEapSetEapMethods; -typedef struct _Rpc Rpc; +typedef struct WifiInitConfig WifiInitConfig; +typedef struct WifiCountry WifiCountry; +typedef struct WifiActiveScanTime WifiActiveScanTime; +typedef struct WifiScanTime WifiScanTime; +typedef struct WifiScanChannelBitmap WifiScanChannelBitmap; +typedef struct WifiScanConfig WifiScanConfig; +typedef struct WifiHeApInfo WifiHeApInfo; +typedef struct WifiApRecord WifiApRecord; +typedef struct WifiScanThreshold WifiScanThreshold; +typedef struct WifiPmfConfig WifiPmfConfig; +typedef struct WifiBssMaxIdleConfig WifiBssMaxIdleConfig; +typedef struct WifiApConfig WifiApConfig; +typedef struct WifiStaConfig WifiStaConfig; +typedef struct WifiConfig WifiConfig; +typedef struct WifiStaInfo WifiStaInfo; +typedef struct WifiStaList WifiStaList; +typedef struct WifiPktRxCtrl WifiPktRxCtrl; +typedef struct WifiPromiscuousPkt WifiPromiscuousPkt; +typedef struct WifiPromiscuousFilter WifiPromiscuousFilter; +typedef struct WifiCsiConfig WifiCsiConfig; +typedef struct WifiCsiInfo WifiCsiInfo; +typedef struct WifiAntGpio WifiAntGpio; +typedef struct WifiAntGpioConfig WifiAntGpioConfig; +typedef struct WifiAntConfig WifiAntConfig; +typedef struct WifiActionTxReq WifiActionTxReq; +typedef struct WifiFtmInitiatorCfg WifiFtmInitiatorCfg; +typedef struct WifiEventStaScanDone WifiEventStaScanDone; +typedef struct WifiEventStaConnected WifiEventStaConnected; +typedef struct WifiEventStaDisconnected WifiEventStaDisconnected; +typedef struct WifiEventStaAuthmodeChange WifiEventStaAuthmodeChange; +typedef struct WifiEventStaWpsErPin WifiEventStaWpsErPin; +typedef struct ApCred ApCred; +typedef struct WifiEventStaWpsErSuccess WifiEventStaWpsErSuccess; +typedef struct WifiEventApProbeReqRx WifiEventApProbeReqRx; +typedef struct WifiEventBssRssiLow WifiEventBssRssiLow; +typedef struct WifiFtmReportEntry WifiFtmReportEntry; +typedef struct WifiEventFtmReport WifiEventFtmReport; +typedef struct WifiEventActionTxStatus WifiEventActionTxStatus; +typedef struct WifiEventRocDone WifiEventRocDone; +typedef struct WifiEventApWpsRgPin WifiEventApWpsRgPin; +typedef struct WifiEventApWpsRgFailReason WifiEventApWpsRgFailReason; +typedef struct WifiEventApWpsRgSuccess WifiEventApWpsRgSuccess; +typedef struct WifiProtocols WifiProtocols; +typedef struct WifiBandwidths WifiBandwidths; +typedef struct WifiItwtSetupConfig WifiItwtSetupConfig; +typedef struct WifiTwtConfig WifiTwtConfig; +typedef struct ConnectedSTAList ConnectedSTAList; +typedef struct EapFastConfig EapFastConfig; +typedef struct RpcReqGetMacAddress RpcReqGetMacAddress; +typedef struct RpcRespGetMacAddress RpcRespGetMacAddress; +typedef struct RpcReqGetMode RpcReqGetMode; +typedef struct RpcRespGetMode RpcRespGetMode; +typedef struct RpcReqSetMode RpcReqSetMode; +typedef struct RpcRespSetMode RpcRespSetMode; +typedef struct RpcReqGetPs RpcReqGetPs; +typedef struct RpcRespGetPs RpcRespGetPs; +typedef struct RpcReqSetPs RpcReqSetPs; +typedef struct RpcRespSetPs RpcRespSetPs; +typedef struct RpcReqSetMacAddress RpcReqSetMacAddress; +typedef struct RpcRespSetMacAddress RpcRespSetMacAddress; +typedef struct RpcReqOTABegin RpcReqOTABegin; +typedef struct RpcRespOTABegin RpcRespOTABegin; +typedef struct RpcReqOTAWrite RpcReqOTAWrite; +typedef struct RpcRespOTAWrite RpcRespOTAWrite; +typedef struct RpcReqOTAEnd RpcReqOTAEnd; +typedef struct RpcRespOTAEnd RpcRespOTAEnd; +typedef struct RpcReqWifiSetMaxTxPower RpcReqWifiSetMaxTxPower; +typedef struct RpcRespWifiSetMaxTxPower RpcRespWifiSetMaxTxPower; +typedef struct RpcReqWifiGetMaxTxPower RpcReqWifiGetMaxTxPower; +typedef struct RpcRespWifiGetMaxTxPower RpcRespWifiGetMaxTxPower; +typedef struct RpcReqConfigHeartbeat RpcReqConfigHeartbeat; +typedef struct RpcRespConfigHeartbeat RpcRespConfigHeartbeat; +typedef struct RpcReqWifiInit RpcReqWifiInit; +typedef struct RpcRespWifiInit RpcRespWifiInit; +typedef struct RpcReqWifiDeinit RpcReqWifiDeinit; +typedef struct RpcRespWifiDeinit RpcRespWifiDeinit; +typedef struct RpcReqWifiSetConfig RpcReqWifiSetConfig; +typedef struct RpcRespWifiSetConfig RpcRespWifiSetConfig; +typedef struct RpcReqWifiGetConfig RpcReqWifiGetConfig; +typedef struct RpcRespWifiGetConfig RpcRespWifiGetConfig; +typedef struct RpcReqWifiConnect RpcReqWifiConnect; +typedef struct RpcRespWifiConnect RpcRespWifiConnect; +typedef struct RpcReqWifiDisconnect RpcReqWifiDisconnect; +typedef struct RpcRespWifiDisconnect RpcRespWifiDisconnect; +typedef struct RpcReqWifiStart RpcReqWifiStart; +typedef struct RpcRespWifiStart RpcRespWifiStart; +typedef struct RpcReqWifiStop RpcReqWifiStop; +typedef struct RpcRespWifiStop RpcRespWifiStop; +typedef struct RpcReqWifiScanStart RpcReqWifiScanStart; +typedef struct RpcRespWifiScanStart RpcRespWifiScanStart; +typedef struct RpcReqWifiScanStop RpcReqWifiScanStop; +typedef struct RpcRespWifiScanStop RpcRespWifiScanStop; +typedef struct RpcReqWifiScanGetApNum RpcReqWifiScanGetApNum; +typedef struct RpcRespWifiScanGetApNum RpcRespWifiScanGetApNum; +typedef struct RpcReqWifiScanGetApRecords RpcReqWifiScanGetApRecords; +typedef struct RpcRespWifiScanGetApRecords RpcRespWifiScanGetApRecords; +typedef struct RpcReqWifiScanGetApRecord RpcReqWifiScanGetApRecord; +typedef struct RpcRespWifiScanGetApRecord RpcRespWifiScanGetApRecord; +typedef struct RpcReqWifiClearApList RpcReqWifiClearApList; +typedef struct RpcRespWifiClearApList RpcRespWifiClearApList; +typedef struct RpcReqWifiRestore RpcReqWifiRestore; +typedef struct RpcRespWifiRestore RpcRespWifiRestore; +typedef struct RpcReqWifiClearFastConnect RpcReqWifiClearFastConnect; +typedef struct RpcRespWifiClearFastConnect RpcRespWifiClearFastConnect; +typedef struct RpcReqWifiDeauthSta RpcReqWifiDeauthSta; +typedef struct RpcRespWifiDeauthSta RpcRespWifiDeauthSta; +typedef struct RpcReqWifiStaGetApInfo RpcReqWifiStaGetApInfo; +typedef struct RpcRespWifiStaGetApInfo RpcRespWifiStaGetApInfo; +typedef struct RpcReqWifiSetProtocol RpcReqWifiSetProtocol; +typedef struct RpcRespWifiSetProtocol RpcRespWifiSetProtocol; +typedef struct RpcReqWifiGetProtocol RpcReqWifiGetProtocol; +typedef struct RpcRespWifiGetProtocol RpcRespWifiGetProtocol; +typedef struct RpcReqWifiSetBandwidth RpcReqWifiSetBandwidth; +typedef struct RpcRespWifiSetBandwidth RpcRespWifiSetBandwidth; +typedef struct RpcReqWifiGetBandwidth RpcReqWifiGetBandwidth; +typedef struct RpcRespWifiGetBandwidth RpcRespWifiGetBandwidth; +typedef struct RpcReqWifiSetChannel RpcReqWifiSetChannel; +typedef struct RpcRespWifiSetChannel RpcRespWifiSetChannel; +typedef struct RpcReqWifiGetChannel RpcReqWifiGetChannel; +typedef struct RpcRespWifiGetChannel RpcRespWifiGetChannel; +typedef struct RpcReqWifiSetStorage RpcReqWifiSetStorage; +typedef struct RpcRespWifiSetStorage RpcRespWifiSetStorage; +typedef struct RpcReqWifiSetCountryCode RpcReqWifiSetCountryCode; +typedef struct RpcRespWifiSetCountryCode RpcRespWifiSetCountryCode; +typedef struct RpcReqWifiGetCountryCode RpcReqWifiGetCountryCode; +typedef struct RpcRespWifiGetCountryCode RpcRespWifiGetCountryCode; +typedef struct RpcReqWifiSetCountry RpcReqWifiSetCountry; +typedef struct RpcRespWifiSetCountry RpcRespWifiSetCountry; +typedef struct RpcReqWifiGetCountry RpcReqWifiGetCountry; +typedef struct RpcRespWifiGetCountry RpcRespWifiGetCountry; +typedef struct RpcReqWifiApGetStaList RpcReqWifiApGetStaList; +typedef struct RpcRespWifiApGetStaList RpcRespWifiApGetStaList; +typedef struct RpcReqWifiApGetStaAid RpcReqWifiApGetStaAid; +typedef struct RpcReqWifiStaGetNegotiatedPhymode RpcReqWifiStaGetNegotiatedPhymode; +typedef struct RpcRespWifiStaGetNegotiatedPhymode RpcRespWifiStaGetNegotiatedPhymode; +typedef struct RpcRespWifiApGetStaAid RpcRespWifiApGetStaAid; +typedef struct RpcReqWifiStaGetRssi RpcReqWifiStaGetRssi; +typedef struct RpcRespWifiStaGetRssi RpcRespWifiStaGetRssi; +typedef struct RpcReqWifiStaGetAid RpcReqWifiStaGetAid; +typedef struct RpcRespWifiStaGetAid RpcRespWifiStaGetAid; +typedef struct RpcReqWifiSetProtocols RpcReqWifiSetProtocols; +typedef struct RpcRespWifiSetProtocols RpcRespWifiSetProtocols; +typedef struct RpcReqWifiGetProtocols RpcReqWifiGetProtocols; +typedef struct RpcRespWifiGetProtocols RpcRespWifiGetProtocols; +typedef struct RpcReqWifiSetBandwidths RpcReqWifiSetBandwidths; +typedef struct RpcRespWifiSetBandwidths RpcRespWifiSetBandwidths; +typedef struct RpcReqWifiGetBandwidths RpcReqWifiGetBandwidths; +typedef struct RpcRespWifiGetBandwidths RpcRespWifiGetBandwidths; +typedef struct RpcReqWifiSetBand RpcReqWifiSetBand; +typedef struct RpcRespWifiSetBand RpcRespWifiSetBand; +typedef struct RpcReqWifiGetBand RpcReqWifiGetBand; +typedef struct RpcRespWifiGetBand RpcRespWifiGetBand; +typedef struct RpcReqWifiSetBandMode RpcReqWifiSetBandMode; +typedef struct RpcRespWifiSetBandMode RpcRespWifiSetBandMode; +typedef struct RpcReqWifiGetBandMode RpcReqWifiGetBandMode; +typedef struct RpcRespWifiGetBandMode RpcRespWifiGetBandMode; +typedef struct RpcReqWifiSetInactiveTime RpcReqWifiSetInactiveTime; +typedef struct RpcRespWifiSetInactiveTime RpcRespWifiSetInactiveTime; +typedef struct RpcReqWifiGetInactiveTime RpcReqWifiGetInactiveTime; +typedef struct RpcRespWifiGetInactiveTime RpcRespWifiGetInactiveTime; +typedef struct RpcReqWifiStaItwtSetup RpcReqWifiStaItwtSetup; +typedef struct RpcRespWifiStaItwtSetup RpcRespWifiStaItwtSetup; +typedef struct RpcReqWifiStaItwtTeardown RpcReqWifiStaItwtTeardown; +typedef struct RpcRespWifiStaItwtTeardown RpcRespWifiStaItwtTeardown; +typedef struct RpcReqWifiStaItwtSuspend RpcReqWifiStaItwtSuspend; +typedef struct RpcRespWifiStaItwtSuspend RpcRespWifiStaItwtSuspend; +typedef struct RpcReqWifiStaItwtGetFlowIdStatus RpcReqWifiStaItwtGetFlowIdStatus; +typedef struct RpcRespWifiStaItwtGetFlowIdStatus RpcRespWifiStaItwtGetFlowIdStatus; +typedef struct RpcReqWifiStaItwtSendProbeReq RpcReqWifiStaItwtSendProbeReq; +typedef struct RpcRespWifiStaItwtSendProbeReq RpcRespWifiStaItwtSendProbeReq; +typedef struct RpcReqWifiStaItwtSetTargetWakeTimeOffset RpcReqWifiStaItwtSetTargetWakeTimeOffset; +typedef struct RpcRespWifiStaItwtSetTargetWakeTimeOffset RpcRespWifiStaItwtSetTargetWakeTimeOffset; +typedef struct RpcReqWifiStaTwtConfig RpcReqWifiStaTwtConfig; +typedef struct RpcRespWifiStaTwtConfig RpcRespWifiStaTwtConfig; +typedef struct RpcReqGetCoprocessorFwVersion RpcReqGetCoprocessorFwVersion; +typedef struct RpcRespGetCoprocessorFwVersion RpcRespGetCoprocessorFwVersion; +typedef struct RpcReqSetDhcpDnsStatus RpcReqSetDhcpDnsStatus; +typedef struct RpcRespSetDhcpDnsStatus RpcRespSetDhcpDnsStatus; +typedef struct RpcReqGetDhcpDnsStatus RpcReqGetDhcpDnsStatus; +typedef struct RpcRespGetDhcpDnsStatus RpcRespGetDhcpDnsStatus; +typedef struct RpcReqSuppDppInit RpcReqSuppDppInit; +typedef struct RpcRespSuppDppInit RpcRespSuppDppInit; +typedef struct RpcReqSuppDppDeinit RpcReqSuppDppDeinit; +typedef struct RpcRespSuppDppDeinit RpcRespSuppDppDeinit; +typedef struct RpcReqSuppDppBootstrapGen RpcReqSuppDppBootstrapGen; +typedef struct RpcRespSuppDppBootstrapGen RpcRespSuppDppBootstrapGen; +typedef struct RpcReqSuppDppStartListen RpcReqSuppDppStartListen; +typedef struct RpcRespSuppDppStartListen RpcRespSuppDppStartListen; +typedef struct RpcReqSuppDppStopListen RpcReqSuppDppStopListen; +typedef struct RpcRespSuppDppStopListen RpcRespSuppDppStopListen; +typedef struct RpcEventWifiEventNoArgs RpcEventWifiEventNoArgs; +typedef struct RpcEventESPInit RpcEventESPInit; +typedef struct RpcEventHeartbeat RpcEventHeartbeat; +typedef struct RpcEventAPStaDisconnected RpcEventAPStaDisconnected; +typedef struct RpcEventAPStaConnected RpcEventAPStaConnected; +typedef struct RpcEventStaScanDone RpcEventStaScanDone; +typedef struct RpcEventStaConnected RpcEventStaConnected; +typedef struct RpcEventStaDisconnected RpcEventStaDisconnected; +typedef struct RpcEventDhcpDnsStatus RpcEventDhcpDnsStatus; +typedef struct RpcEventStaItwtSetup RpcEventStaItwtSetup; +typedef struct RpcEventStaItwtTeardown RpcEventStaItwtTeardown; +typedef struct RpcEventStaItwtSuspend RpcEventStaItwtSuspend; +typedef struct RpcEventStaItwtProbe RpcEventStaItwtProbe; +typedef struct RpcReqWifiStaEnterpriseEnable RpcReqWifiStaEnterpriseEnable; +typedef struct RpcRespWifiStaEnterpriseEnable RpcRespWifiStaEnterpriseEnable; +typedef struct RpcReqWifiStaEnterpriseDisable RpcReqWifiStaEnterpriseDisable; +typedef struct RpcRespWifiStaEnterpriseDisable RpcRespWifiStaEnterpriseDisable; +typedef struct RpcReqEapSetIdentity RpcReqEapSetIdentity; +typedef struct RpcRespEapSetIdentity RpcRespEapSetIdentity; +typedef struct RpcReqEapClearIdentity RpcReqEapClearIdentity; +typedef struct RpcRespEapClearIdentity RpcRespEapClearIdentity; +typedef struct RpcReqEapSetUsername RpcReqEapSetUsername; +typedef struct RpcRespEapSetUsername RpcRespEapSetUsername; +typedef struct RpcReqEapClearUsername RpcReqEapClearUsername; +typedef struct RpcRespEapClearUsername RpcRespEapClearUsername; +typedef struct RpcReqEapSetPassword RpcReqEapSetPassword; +typedef struct RpcRespEapSetPassword RpcRespEapSetPassword; +typedef struct RpcReqEapClearPassword RpcReqEapClearPassword; +typedef struct RpcRespEapClearPassword RpcRespEapClearPassword; +typedef struct RpcReqEapSetNewPassword RpcReqEapSetNewPassword; +typedef struct RpcRespEapSetNewPassword RpcRespEapSetNewPassword; +typedef struct RpcReqEapClearNewPassword RpcReqEapClearNewPassword; +typedef struct RpcRespEapClearNewPassword RpcRespEapClearNewPassword; +typedef struct RpcReqEapSetCaCert RpcReqEapSetCaCert; +typedef struct RpcRespEapSetCaCert RpcRespEapSetCaCert; +typedef struct RpcReqEapClearCaCert RpcReqEapClearCaCert; +typedef struct RpcRespEapClearCaCert RpcRespEapClearCaCert; +typedef struct RpcReqEapSetCertificateAndKey RpcReqEapSetCertificateAndKey; +typedef struct RpcRespEapSetCertificateAndKey RpcRespEapSetCertificateAndKey; +typedef struct RpcReqEapClearCertificateAndKey RpcReqEapClearCertificateAndKey; +typedef struct RpcRespEapClearCertificateAndKey RpcRespEapClearCertificateAndKey; +typedef struct RpcReqEapSetDisableTimeCheck RpcReqEapSetDisableTimeCheck; +typedef struct RpcRespEapSetDisableTimeCheck RpcRespEapSetDisableTimeCheck; +typedef struct RpcReqEapGetDisableTimeCheck RpcReqEapGetDisableTimeCheck; +typedef struct RpcRespEapGetDisableTimeCheck RpcRespEapGetDisableTimeCheck; +typedef struct RpcReqEapSetTtlsPhase2Method RpcReqEapSetTtlsPhase2Method; +typedef struct RpcRespEapSetTtlsPhase2Method RpcRespEapSetTtlsPhase2Method; +typedef struct RpcReqEapSetSuiteb192bitCertification RpcReqEapSetSuiteb192bitCertification; +typedef struct RpcRespEapSetSuiteb192bitCertification RpcRespEapSetSuiteb192bitCertification; +typedef struct RpcReqEapSetPacFile RpcReqEapSetPacFile; +typedef struct RpcRespEapSetPacFile RpcRespEapSetPacFile; +typedef struct RpcReqEapSetFastParams RpcReqEapSetFastParams; +typedef struct RpcRespEapSetFastParams RpcRespEapSetFastParams; +typedef struct RpcReqEapUseDefaultCertBundle RpcReqEapUseDefaultCertBundle; +typedef struct RpcRespEapUseDefaultCertBundle RpcRespEapUseDefaultCertBundle; +typedef struct RpcReqWifiSetOkcSupport RpcReqWifiSetOkcSupport; +typedef struct RpcRespWifiSetOkcSupport RpcRespWifiSetOkcSupport; +typedef struct RpcReqEapSetDomainName RpcReqEapSetDomainName; +typedef struct RpcRespEapSetDomainName RpcRespEapSetDomainName; +typedef struct RpcReqEapSetEapMethods RpcReqEapSetEapMethods; +typedef struct RpcRespEapSetEapMethods RpcRespEapSetEapMethods; +typedef struct RpcEventSuppDppUriReady RpcEventSuppDppUriReady; +typedef struct RpcEventSuppDppCfgRecvd RpcEventSuppDppCfgRecvd; +typedef struct RpcEventSuppDppFail RpcEventSuppDppFail; +typedef struct RpcEventWifiDppUriReady RpcEventWifiDppUriReady; +typedef struct RpcEventWifiDppCfgRecvd RpcEventWifiDppCfgRecvd; +typedef struct RpcEventWifiDppFail RpcEventWifiDppFail; +typedef struct Rpc Rpc; /* --- enums --- */ @@ -329,6 +345,26 @@ typedef enum _RpcId { *0x104 */ RPC_ID__Req_SetWifiMode = 260, + /* + *0x105 + */ + RPC_ID__Req_SuppDppInit = 261, + /* + *0x106 + */ + RPC_ID__Req_SuppDppDeinit = 262, + /* + *0x107 + */ + RPC_ID__Req_SuppDppBootstrapGen = 263, + /* + *0x108 + */ + RPC_ID__Req_SuppDppStartListen = 264, + /* + *0x109 + */ + RPC_ID__Req_SuppDppStopListen = 265, /* *0x10e */ @@ -810,6 +846,11 @@ typedef enum _RpcId { RPC_ID__Resp_SetMacAddress = 514, RPC_ID__Resp_GetWifiMode = 515, RPC_ID__Resp_SetWifiMode = 516, + RPC_ID__Resp_SuppDppInit = 517, + RPC_ID__Resp_SuppDppDeinit = 518, + RPC_ID__Resp_SuppDppBootstrapGen = 519, + RPC_ID__Resp_SuppDppStartListen = 520, + RPC_ID__Resp_SuppDppStopListen = 521, RPC_ID__Resp_WifiSetPs = 526, RPC_ID__Resp_WifiGetPs = 527, RPC_ID__Resp_OTABegin = 528, @@ -958,17 +999,29 @@ typedef enum _RpcId { RPC_ID__Event_StaItwtTeardown = 779, RPC_ID__Event_StaItwtSuspend = 780, RPC_ID__Event_StaItwtProbe = 781, + /* + * Supplicant DPP Events received by dpp callback on host + */ + RPC_ID__Event_SuppDppUriReady = 782, + RPC_ID__Event_SuppDppCfgRecvd = 783, + RPC_ID__Event_SuppDppFail = 784, + /* + * Wifi DPP Events + */ + RPC_ID__Event_WifiDppUriReady = 785, + RPC_ID__Event_WifiDppCfgRecvd = 786, + RPC_ID__Event_WifiDppFail = 787, /* * Add new control path command notification before Event_Max * and update Event_Max */ - RPC_ID__Event_Max = 782 + RPC_ID__Event_Max = 788 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(RPC_ID) } RpcId; /* --- messages --- */ -struct _WifiInitConfig +struct WifiInitConfig { ProtobufCMessage base; /* @@ -1073,7 +1126,7 @@ struct _WifiInitConfig , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } -struct _WifiCountry +struct WifiCountry { ProtobufCMessage base; /* @@ -1103,7 +1156,7 @@ struct _WifiCountry , {0,NULL}, 0, 0, 0, 0 } -struct _WifiActiveScanTime +struct WifiActiveScanTime { ProtobufCMessage base; /* @@ -1121,7 +1174,7 @@ struct _WifiActiveScanTime , 0, 0 } -struct _WifiScanTime +struct WifiScanTime { ProtobufCMessage base; /* @@ -1139,7 +1192,7 @@ struct _WifiScanTime , NULL, 0 } -struct _WifiScanChannelBitmap +struct WifiScanChannelBitmap { ProtobufCMessage base; /* @@ -1156,7 +1209,7 @@ struct _WifiScanChannelBitmap , 0, 0 } -struct _WifiScanConfig +struct WifiScanConfig { ProtobufCMessage base; /* @@ -1199,7 +1252,7 @@ struct _WifiScanConfig , {0,NULL}, {0,NULL}, 0, 0, 0, NULL, 0, NULL } -struct _WifiHeApInfo +struct WifiHeApInfo { ProtobufCMessage base; /* @@ -1221,7 +1274,7 @@ struct _WifiHeApInfo , 0, 0 } -struct _WifiApRecord +struct WifiApRecord { ProtobufCMessage base; /* @@ -1302,7 +1355,7 @@ struct _WifiApRecord , {0,NULL}, {0,NULL}, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0 } -struct _WifiScanThreshold +struct WifiScanThreshold { ProtobufCMessage base; /* @@ -1326,7 +1379,7 @@ struct _WifiScanThreshold , 0, 0, 0 } -struct _WifiPmfConfig +struct WifiPmfConfig { ProtobufCMessage base; /* @@ -1343,7 +1396,7 @@ struct _WifiPmfConfig , 0, 0 } -struct _WifiBssMaxIdleConfig +struct WifiBssMaxIdleConfig { ProtobufCMessage base; /* @@ -1360,7 +1413,7 @@ struct _WifiBssMaxIdleConfig , 0, 0 } -struct _WifiApConfig +struct WifiApConfig { ProtobufCMessage base; /* @@ -1443,7 +1496,7 @@ struct _WifiApConfig , {0,NULL}, {0,NULL}, 0, 0, 0, 0, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 0, NULL, 0 } -struct _WifiStaConfig +struct WifiStaConfig { ProtobufCMessage base; /* @@ -1543,10 +1596,10 @@ typedef enum { WIFI_CONFIG__U__NOT_SET = 0, WIFI_CONFIG__U_AP = 1, WIFI_CONFIG__U_STA = 2 - PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(WIFI_CONFIG__U) + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(WIFI_CONFIG__U__CASE) } WifiConfig__UCase; -struct _WifiConfig +struct WifiConfig { ProtobufCMessage base; WifiConfig__UCase u_case; @@ -1566,7 +1619,7 @@ struct _WifiConfig , WIFI_CONFIG__U__NOT_SET, {0} } -struct _WifiStaInfo +struct WifiStaInfo { ProtobufCMessage base; /* @@ -1593,7 +1646,7 @@ struct _WifiStaInfo , {0,NULL}, 0, 0 } -struct _WifiStaList +struct WifiStaList { ProtobufCMessage base; /* @@ -1611,7 +1664,7 @@ struct _WifiStaList , 0,NULL, 0 } -struct _WifiPktRxCtrl +struct WifiPktRxCtrl { ProtobufCMessage base; /* @@ -1719,7 +1772,7 @@ struct _WifiPktRxCtrl , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } -struct _WifiPromiscuousPkt +struct WifiPromiscuousPkt { ProtobufCMessage base; /* @@ -1736,7 +1789,7 @@ struct _WifiPromiscuousPkt , NULL, {0,NULL} } -struct _WifiPromiscuousFilter +struct WifiPromiscuousFilter { ProtobufCMessage base; /* @@ -1749,7 +1802,7 @@ struct _WifiPromiscuousFilter , 0 } -struct _WifiCsiConfig +struct WifiCsiConfig { ProtobufCMessage base; /* @@ -1787,7 +1840,7 @@ struct _WifiCsiConfig , 0, 0, 0, 0, 0, 0, 0 } -struct _WifiCsiInfo +struct WifiCsiInfo { ProtobufCMessage base; /* @@ -1820,7 +1873,7 @@ struct _WifiCsiInfo , NULL, {0,NULL}, {0,NULL}, 0, {0,NULL}, 0 } -struct _WifiAntGpio +struct WifiAntGpio { ProtobufCMessage base; /* @@ -1837,7 +1890,7 @@ struct _WifiAntGpio , 0, 0 } -struct _WifiAntGpioConfig +struct WifiAntGpioConfig { ProtobufCMessage base; /* @@ -1851,7 +1904,7 @@ struct _WifiAntGpioConfig , 0,NULL } -struct _WifiAntConfig +struct WifiAntConfig { ProtobufCMessage base; /* @@ -1880,7 +1933,7 @@ struct _WifiAntConfig , 0, 0, 0, 0, 0 } -struct _WifiActionTxReq +struct WifiActionTxReq { ProtobufCMessage base; /* @@ -1913,7 +1966,7 @@ struct _WifiActionTxReq , 0, {0,NULL}, 0, 0, {0,NULL} } -struct _WifiFtmInitiatorCfg +struct WifiFtmInitiatorCfg { ProtobufCMessage base; /* @@ -1938,7 +1991,7 @@ struct _WifiFtmInitiatorCfg , {0,NULL}, 0, 0, 0 } -struct _WifiEventStaScanDone +struct WifiEventStaScanDone { ProtobufCMessage base; /* @@ -1959,7 +2012,7 @@ struct _WifiEventStaScanDone , 0, 0, 0 } -struct _WifiEventStaConnected +struct WifiEventStaConnected { ProtobufCMessage base; /* @@ -1992,7 +2045,7 @@ struct _WifiEventStaConnected , {0,NULL}, 0, {0,NULL}, 0, 0, 0 } -struct _WifiEventStaDisconnected +struct WifiEventStaDisconnected { ProtobufCMessage base; /* @@ -2021,7 +2074,7 @@ struct _WifiEventStaDisconnected , {0,NULL}, 0, {0,NULL}, 0, 0 } -struct _WifiEventStaAuthmodeChange +struct WifiEventStaAuthmodeChange { ProtobufCMessage base; /* @@ -2038,7 +2091,7 @@ struct _WifiEventStaAuthmodeChange , 0, 0 } -struct _WifiEventStaWpsErPin +struct WifiEventStaWpsErPin { ProtobufCMessage base; /* @@ -2051,7 +2104,7 @@ struct _WifiEventStaWpsErPin , {0,NULL} } -struct _ApCred +struct ApCred { ProtobufCMessage base; /* @@ -2068,7 +2121,7 @@ struct _ApCred , {0,NULL}, {0,NULL} } -struct _WifiEventStaWpsErSuccess +struct WifiEventStaWpsErSuccess { ProtobufCMessage base; /* @@ -2089,7 +2142,7 @@ struct _WifiEventStaWpsErSuccess /* ** Argument structure for WIFI_EVENT_AP_PROBEREQRECVED event */ -struct _WifiEventApProbeReqRx +struct WifiEventApProbeReqRx { ProtobufCMessage base; /* @@ -2109,7 +2162,7 @@ struct _WifiEventApProbeReqRx /* ** Argument structure for WIFI_EVENT_STA_BSS_RSSI_LOW event */ -struct _WifiEventBssRssiLow +struct WifiEventBssRssiLow { ProtobufCMessage base; /* @@ -2122,7 +2175,7 @@ struct _WifiEventBssRssiLow , 0 } -struct _WifiFtmReportEntry +struct WifiFtmReportEntry { ProtobufCMessage base; /* @@ -2162,7 +2215,7 @@ struct _WifiFtmReportEntry , 0, 0, 0, 0, 0, 0, 0 } -struct _WifiEventFtmReport +struct WifiEventFtmReport { ProtobufCMessage base; /* @@ -2200,7 +2253,7 @@ struct _WifiEventFtmReport , {0,NULL}, 0, 0, 0, 0, 0,NULL, 0 } -struct _WifiEventActionTxStatus +struct WifiEventActionTxStatus { ProtobufCMessage base; /* @@ -2225,7 +2278,7 @@ struct _WifiEventActionTxStatus , 0, 0, {0,NULL}, 0 } -struct _WifiEventRocDone +struct WifiEventRocDone { ProtobufCMessage base; /* @@ -2238,7 +2291,7 @@ struct _WifiEventRocDone , 0 } -struct _WifiEventApWpsRgPin +struct WifiEventApWpsRgPin { ProtobufCMessage base; /* @@ -2251,7 +2304,7 @@ struct _WifiEventApWpsRgPin , {0,NULL} } -struct _WifiEventApWpsRgFailReason +struct WifiEventApWpsRgFailReason { ProtobufCMessage base; /* @@ -2268,7 +2321,7 @@ struct _WifiEventApWpsRgFailReason , 0, {0,NULL} } -struct _WifiEventApWpsRgSuccess +struct WifiEventApWpsRgSuccess { ProtobufCMessage base; /* @@ -2281,7 +2334,7 @@ struct _WifiEventApWpsRgSuccess , {0,NULL} } -struct _WifiProtocols +struct WifiProtocols { ProtobufCMessage base; /* @@ -2298,7 +2351,7 @@ struct _WifiProtocols , 0, 0 } -struct _WifiBandwidths +struct WifiBandwidths { ProtobufCMessage base; /* @@ -2315,7 +2368,7 @@ struct _WifiBandwidths , 0, 0 } -struct _WifiItwtSetupConfig +struct WifiItwtSetupConfig { ProtobufCMessage base; uint32_t setup_cmd; @@ -2340,7 +2393,7 @@ struct _WifiItwtSetupConfig , 0, 0, 0, 0, 0, 0 } -struct _WifiTwtConfig +struct WifiTwtConfig { ProtobufCMessage base; /* @@ -2357,7 +2410,7 @@ struct _WifiTwtConfig , 0, 0 } -struct _ConnectedSTAList +struct ConnectedSTAList { ProtobufCMessage base; ProtobufCBinaryData mac; @@ -2368,7 +2421,7 @@ struct _ConnectedSTAList , {0,NULL}, 0 } -struct _EapFastConfig +struct EapFastConfig { ProtobufCMessage base; /* @@ -2392,7 +2445,7 @@ struct _EapFastConfig /* ** Req/Resp structure * */ -struct _RpcReqGetMacAddress +struct RpcReqGetMacAddress { ProtobufCMessage base; int32_t mode; @@ -2402,7 +2455,7 @@ struct _RpcReqGetMacAddress , 0 } -struct _RpcRespGetMacAddress +struct RpcRespGetMacAddress { ProtobufCMessage base; ProtobufCBinaryData mac; @@ -2413,7 +2466,7 @@ struct _RpcRespGetMacAddress , {0,NULL}, 0 } -struct _RpcReqGetMode +struct RpcReqGetMode { ProtobufCMessage base; }; @@ -2422,7 +2475,7 @@ struct _RpcReqGetMode } -struct _RpcRespGetMode +struct RpcRespGetMode { ProtobufCMessage base; int32_t mode; @@ -2433,7 +2486,7 @@ struct _RpcRespGetMode , 0, 0 } -struct _RpcReqSetMode +struct RpcReqSetMode { ProtobufCMessage base; int32_t mode; @@ -2443,7 +2496,7 @@ struct _RpcReqSetMode , 0 } -struct _RpcRespSetMode +struct RpcRespSetMode { ProtobufCMessage base; int32_t resp; @@ -2453,7 +2506,7 @@ struct _RpcRespSetMode , 0 } -struct _RpcReqGetPs +struct RpcReqGetPs { ProtobufCMessage base; }; @@ -2462,7 +2515,7 @@ struct _RpcReqGetPs } -struct _RpcRespGetPs +struct RpcRespGetPs { ProtobufCMessage base; int32_t resp; @@ -2473,7 +2526,7 @@ struct _RpcRespGetPs , 0, 0 } -struct _RpcReqSetPs +struct RpcReqSetPs { ProtobufCMessage base; int32_t type; @@ -2483,7 +2536,7 @@ struct _RpcReqSetPs , 0 } -struct _RpcRespSetPs +struct RpcRespSetPs { ProtobufCMessage base; int32_t resp; @@ -2493,7 +2546,7 @@ struct _RpcRespSetPs , 0 } -struct _RpcReqSetMacAddress +struct RpcReqSetMacAddress { ProtobufCMessage base; ProtobufCBinaryData mac; @@ -2504,7 +2557,7 @@ struct _RpcReqSetMacAddress , {0,NULL}, 0 } -struct _RpcRespSetMacAddress +struct RpcRespSetMacAddress { ProtobufCMessage base; int32_t resp; @@ -2514,7 +2567,7 @@ struct _RpcRespSetMacAddress , 0 } -struct _RpcReqOTABegin +struct RpcReqOTABegin { ProtobufCMessage base; }; @@ -2523,7 +2576,7 @@ struct _RpcReqOTABegin } -struct _RpcRespOTABegin +struct RpcRespOTABegin { ProtobufCMessage base; int32_t resp; @@ -2533,7 +2586,7 @@ struct _RpcRespOTABegin , 0 } -struct _RpcReqOTAWrite +struct RpcReqOTAWrite { ProtobufCMessage base; ProtobufCBinaryData ota_data; @@ -2543,7 +2596,7 @@ struct _RpcReqOTAWrite , {0,NULL} } -struct _RpcRespOTAWrite +struct RpcRespOTAWrite { ProtobufCMessage base; int32_t resp; @@ -2553,7 +2606,7 @@ struct _RpcRespOTAWrite , 0 } -struct _RpcReqOTAEnd +struct RpcReqOTAEnd { ProtobufCMessage base; }; @@ -2562,7 +2615,7 @@ struct _RpcReqOTAEnd } -struct _RpcRespOTAEnd +struct RpcRespOTAEnd { ProtobufCMessage base; int32_t resp; @@ -2572,7 +2625,7 @@ struct _RpcRespOTAEnd , 0 } -struct _RpcReqWifiSetMaxTxPower +struct RpcReqWifiSetMaxTxPower { ProtobufCMessage base; int32_t power; @@ -2582,7 +2635,7 @@ struct _RpcReqWifiSetMaxTxPower , 0 } -struct _RpcRespWifiSetMaxTxPower +struct RpcRespWifiSetMaxTxPower { ProtobufCMessage base; int32_t resp; @@ -2592,7 +2645,7 @@ struct _RpcRespWifiSetMaxTxPower , 0 } -struct _RpcReqWifiGetMaxTxPower +struct RpcReqWifiGetMaxTxPower { ProtobufCMessage base; }; @@ -2601,7 +2654,7 @@ struct _RpcReqWifiGetMaxTxPower } -struct _RpcRespWifiGetMaxTxPower +struct RpcRespWifiGetMaxTxPower { ProtobufCMessage base; int32_t power; @@ -2612,7 +2665,7 @@ struct _RpcRespWifiGetMaxTxPower , 0, 0 } -struct _RpcReqConfigHeartbeat +struct RpcReqConfigHeartbeat { ProtobufCMessage base; protobuf_c_boolean enable; @@ -2623,7 +2676,7 @@ struct _RpcReqConfigHeartbeat , 0, 0 } -struct _RpcRespConfigHeartbeat +struct RpcRespConfigHeartbeat { ProtobufCMessage base; int32_t resp; @@ -2633,7 +2686,7 @@ struct _RpcRespConfigHeartbeat , 0 } -struct _RpcReqWifiInit +struct RpcReqWifiInit { ProtobufCMessage base; WifiInitConfig *cfg; @@ -2643,7 +2696,7 @@ struct _RpcReqWifiInit , NULL } -struct _RpcRespWifiInit +struct RpcRespWifiInit { ProtobufCMessage base; int32_t resp; @@ -2653,7 +2706,7 @@ struct _RpcRespWifiInit , 0 } -struct _RpcReqWifiDeinit +struct RpcReqWifiDeinit { ProtobufCMessage base; }; @@ -2662,7 +2715,7 @@ struct _RpcReqWifiDeinit } -struct _RpcRespWifiDeinit +struct RpcRespWifiDeinit { ProtobufCMessage base; int32_t resp; @@ -2672,7 +2725,7 @@ struct _RpcRespWifiDeinit , 0 } -struct _RpcReqWifiSetConfig +struct RpcReqWifiSetConfig { ProtobufCMessage base; int32_t iface; @@ -2683,7 +2736,7 @@ struct _RpcReqWifiSetConfig , 0, NULL } -struct _RpcRespWifiSetConfig +struct RpcRespWifiSetConfig { ProtobufCMessage base; int32_t resp; @@ -2693,7 +2746,7 @@ struct _RpcRespWifiSetConfig , 0 } -struct _RpcReqWifiGetConfig +struct RpcReqWifiGetConfig { ProtobufCMessage base; int32_t iface; @@ -2703,7 +2756,7 @@ struct _RpcReqWifiGetConfig , 0 } -struct _RpcRespWifiGetConfig +struct RpcRespWifiGetConfig { ProtobufCMessage base; int32_t resp; @@ -2715,7 +2768,7 @@ struct _RpcRespWifiGetConfig , 0, 0, NULL } -struct _RpcReqWifiConnect +struct RpcReqWifiConnect { ProtobufCMessage base; }; @@ -2724,7 +2777,7 @@ struct _RpcReqWifiConnect } -struct _RpcRespWifiConnect +struct RpcRespWifiConnect { ProtobufCMessage base; int32_t resp; @@ -2734,7 +2787,7 @@ struct _RpcRespWifiConnect , 0 } -struct _RpcReqWifiDisconnect +struct RpcReqWifiDisconnect { ProtobufCMessage base; }; @@ -2743,7 +2796,7 @@ struct _RpcReqWifiDisconnect } -struct _RpcRespWifiDisconnect +struct RpcRespWifiDisconnect { ProtobufCMessage base; int32_t resp; @@ -2753,7 +2806,7 @@ struct _RpcRespWifiDisconnect , 0 } -struct _RpcReqWifiStart +struct RpcReqWifiStart { ProtobufCMessage base; }; @@ -2762,7 +2815,7 @@ struct _RpcReqWifiStart } -struct _RpcRespWifiStart +struct RpcRespWifiStart { ProtobufCMessage base; int32_t resp; @@ -2772,7 +2825,7 @@ struct _RpcRespWifiStart , 0 } -struct _RpcReqWifiStop +struct RpcReqWifiStop { ProtobufCMessage base; }; @@ -2781,7 +2834,7 @@ struct _RpcReqWifiStop } -struct _RpcRespWifiStop +struct RpcRespWifiStop { ProtobufCMessage base; int32_t resp; @@ -2791,7 +2844,7 @@ struct _RpcRespWifiStop , 0 } -struct _RpcReqWifiScanStart +struct RpcReqWifiScanStart { ProtobufCMessage base; WifiScanConfig *config; @@ -2803,7 +2856,7 @@ struct _RpcReqWifiScanStart , NULL, 0, 0 } -struct _RpcRespWifiScanStart +struct RpcRespWifiScanStart { ProtobufCMessage base; int32_t resp; @@ -2813,7 +2866,7 @@ struct _RpcRespWifiScanStart , 0 } -struct _RpcReqWifiScanStop +struct RpcReqWifiScanStop { ProtobufCMessage base; }; @@ -2822,7 +2875,7 @@ struct _RpcReqWifiScanStop } -struct _RpcRespWifiScanStop +struct RpcRespWifiScanStop { ProtobufCMessage base; int32_t resp; @@ -2832,7 +2885,7 @@ struct _RpcRespWifiScanStop , 0 } -struct _RpcReqWifiScanGetApNum +struct RpcReqWifiScanGetApNum { ProtobufCMessage base; }; @@ -2841,7 +2894,7 @@ struct _RpcReqWifiScanGetApNum } -struct _RpcRespWifiScanGetApNum +struct RpcRespWifiScanGetApNum { ProtobufCMessage base; int32_t resp; @@ -2852,7 +2905,7 @@ struct _RpcRespWifiScanGetApNum , 0, 0 } -struct _RpcReqWifiScanGetApRecords +struct RpcReqWifiScanGetApRecords { ProtobufCMessage base; int32_t number; @@ -2862,7 +2915,7 @@ struct _RpcReqWifiScanGetApRecords , 0 } -struct _RpcRespWifiScanGetApRecords +struct RpcRespWifiScanGetApRecords { ProtobufCMessage base; int32_t resp; @@ -2875,7 +2928,7 @@ struct _RpcRespWifiScanGetApRecords , 0, 0, 0,NULL } -struct _RpcReqWifiScanGetApRecord +struct RpcReqWifiScanGetApRecord { ProtobufCMessage base; }; @@ -2884,7 +2937,7 @@ struct _RpcReqWifiScanGetApRecord } -struct _RpcRespWifiScanGetApRecord +struct RpcRespWifiScanGetApRecord { ProtobufCMessage base; int32_t resp; @@ -2895,7 +2948,7 @@ struct _RpcRespWifiScanGetApRecord , 0, NULL } -struct _RpcReqWifiClearApList +struct RpcReqWifiClearApList { ProtobufCMessage base; }; @@ -2904,7 +2957,7 @@ struct _RpcReqWifiClearApList } -struct _RpcRespWifiClearApList +struct RpcRespWifiClearApList { ProtobufCMessage base; int32_t resp; @@ -2914,7 +2967,7 @@ struct _RpcRespWifiClearApList , 0 } -struct _RpcReqWifiRestore +struct RpcReqWifiRestore { ProtobufCMessage base; }; @@ -2923,7 +2976,7 @@ struct _RpcReqWifiRestore } -struct _RpcRespWifiRestore +struct RpcRespWifiRestore { ProtobufCMessage base; int32_t resp; @@ -2933,7 +2986,7 @@ struct _RpcRespWifiRestore , 0 } -struct _RpcReqWifiClearFastConnect +struct RpcReqWifiClearFastConnect { ProtobufCMessage base; }; @@ -2942,7 +2995,7 @@ struct _RpcReqWifiClearFastConnect } -struct _RpcRespWifiClearFastConnect +struct RpcRespWifiClearFastConnect { ProtobufCMessage base; int32_t resp; @@ -2952,7 +3005,7 @@ struct _RpcRespWifiClearFastConnect , 0 } -struct _RpcReqWifiDeauthSta +struct RpcReqWifiDeauthSta { ProtobufCMessage base; int32_t aid; @@ -2962,7 +3015,7 @@ struct _RpcReqWifiDeauthSta , 0 } -struct _RpcRespWifiDeauthSta +struct RpcRespWifiDeauthSta { ProtobufCMessage base; int32_t resp; @@ -2973,7 +3026,7 @@ struct _RpcRespWifiDeauthSta , 0, 0 } -struct _RpcReqWifiStaGetApInfo +struct RpcReqWifiStaGetApInfo { ProtobufCMessage base; }; @@ -2982,7 +3035,7 @@ struct _RpcReqWifiStaGetApInfo } -struct _RpcRespWifiStaGetApInfo +struct RpcRespWifiStaGetApInfo { ProtobufCMessage base; int32_t resp; @@ -2993,7 +3046,7 @@ struct _RpcRespWifiStaGetApInfo , 0, NULL } -struct _RpcReqWifiSetProtocol +struct RpcReqWifiSetProtocol { ProtobufCMessage base; int32_t ifx; @@ -3004,7 +3057,7 @@ struct _RpcReqWifiSetProtocol , 0, 0 } -struct _RpcRespWifiSetProtocol +struct RpcRespWifiSetProtocol { ProtobufCMessage base; int32_t resp; @@ -3014,7 +3067,7 @@ struct _RpcRespWifiSetProtocol , 0 } -struct _RpcReqWifiGetProtocol +struct RpcReqWifiGetProtocol { ProtobufCMessage base; int32_t ifx; @@ -3024,7 +3077,7 @@ struct _RpcReqWifiGetProtocol , 0 } -struct _RpcRespWifiGetProtocol +struct RpcRespWifiGetProtocol { ProtobufCMessage base; int32_t resp; @@ -3035,7 +3088,7 @@ struct _RpcRespWifiGetProtocol , 0, 0 } -struct _RpcReqWifiSetBandwidth +struct RpcReqWifiSetBandwidth { ProtobufCMessage base; int32_t ifx; @@ -3046,7 +3099,7 @@ struct _RpcReqWifiSetBandwidth , 0, 0 } -struct _RpcRespWifiSetBandwidth +struct RpcRespWifiSetBandwidth { ProtobufCMessage base; int32_t resp; @@ -3056,7 +3109,7 @@ struct _RpcRespWifiSetBandwidth , 0 } -struct _RpcReqWifiGetBandwidth +struct RpcReqWifiGetBandwidth { ProtobufCMessage base; int32_t ifx; @@ -3066,7 +3119,7 @@ struct _RpcReqWifiGetBandwidth , 0 } -struct _RpcRespWifiGetBandwidth +struct RpcRespWifiGetBandwidth { ProtobufCMessage base; int32_t resp; @@ -3077,7 +3130,7 @@ struct _RpcRespWifiGetBandwidth , 0, 0 } -struct _RpcReqWifiSetChannel +struct RpcReqWifiSetChannel { ProtobufCMessage base; int32_t primary; @@ -3088,7 +3141,7 @@ struct _RpcReqWifiSetChannel , 0, 0 } -struct _RpcRespWifiSetChannel +struct RpcRespWifiSetChannel { ProtobufCMessage base; int32_t resp; @@ -3098,7 +3151,7 @@ struct _RpcRespWifiSetChannel , 0 } -struct _RpcReqWifiGetChannel +struct RpcReqWifiGetChannel { ProtobufCMessage base; }; @@ -3107,7 +3160,7 @@ struct _RpcReqWifiGetChannel } -struct _RpcRespWifiGetChannel +struct RpcRespWifiGetChannel { ProtobufCMessage base; int32_t resp; @@ -3119,7 +3172,7 @@ struct _RpcRespWifiGetChannel , 0, 0, 0 } -struct _RpcReqWifiSetStorage +struct RpcReqWifiSetStorage { ProtobufCMessage base; int32_t storage; @@ -3129,7 +3182,7 @@ struct _RpcReqWifiSetStorage , 0 } -struct _RpcRespWifiSetStorage +struct RpcRespWifiSetStorage { ProtobufCMessage base; int32_t resp; @@ -3139,7 +3192,7 @@ struct _RpcRespWifiSetStorage , 0 } -struct _RpcReqWifiSetCountryCode +struct RpcReqWifiSetCountryCode { ProtobufCMessage base; ProtobufCBinaryData country; @@ -3150,7 +3203,7 @@ struct _RpcReqWifiSetCountryCode , {0,NULL}, 0 } -struct _RpcRespWifiSetCountryCode +struct RpcRespWifiSetCountryCode { ProtobufCMessage base; int32_t resp; @@ -3160,7 +3213,7 @@ struct _RpcRespWifiSetCountryCode , 0 } -struct _RpcReqWifiGetCountryCode +struct RpcReqWifiGetCountryCode { ProtobufCMessage base; }; @@ -3169,7 +3222,7 @@ struct _RpcReqWifiGetCountryCode } -struct _RpcRespWifiGetCountryCode +struct RpcRespWifiGetCountryCode { ProtobufCMessage base; int32_t resp; @@ -3180,7 +3233,7 @@ struct _RpcRespWifiGetCountryCode , 0, {0,NULL} } -struct _RpcReqWifiSetCountry +struct RpcReqWifiSetCountry { ProtobufCMessage base; WifiCountry *country; @@ -3190,7 +3243,7 @@ struct _RpcReqWifiSetCountry , NULL } -struct _RpcRespWifiSetCountry +struct RpcRespWifiSetCountry { ProtobufCMessage base; int32_t resp; @@ -3200,7 +3253,7 @@ struct _RpcRespWifiSetCountry , 0 } -struct _RpcReqWifiGetCountry +struct RpcReqWifiGetCountry { ProtobufCMessage base; }; @@ -3209,7 +3262,7 @@ struct _RpcReqWifiGetCountry } -struct _RpcRespWifiGetCountry +struct RpcRespWifiGetCountry { ProtobufCMessage base; int32_t resp; @@ -3220,7 +3273,7 @@ struct _RpcRespWifiGetCountry , 0, NULL } -struct _RpcReqWifiApGetStaList +struct RpcReqWifiApGetStaList { ProtobufCMessage base; }; @@ -3229,7 +3282,7 @@ struct _RpcReqWifiApGetStaList } -struct _RpcRespWifiApGetStaList +struct RpcRespWifiApGetStaList { ProtobufCMessage base; int32_t resp; @@ -3240,7 +3293,7 @@ struct _RpcRespWifiApGetStaList , 0, NULL } -struct _RpcReqWifiApGetStaAid +struct RpcReqWifiApGetStaAid { ProtobufCMessage base; ProtobufCBinaryData mac; @@ -3250,7 +3303,7 @@ struct _RpcReqWifiApGetStaAid , {0,NULL} } -struct _RpcReqWifiStaGetNegotiatedPhymode +struct RpcReqWifiStaGetNegotiatedPhymode { ProtobufCMessage base; }; @@ -3259,7 +3312,7 @@ struct _RpcReqWifiStaGetNegotiatedPhymode } -struct _RpcRespWifiStaGetNegotiatedPhymode +struct RpcRespWifiStaGetNegotiatedPhymode { ProtobufCMessage base; int32_t resp; @@ -3270,7 +3323,7 @@ struct _RpcRespWifiStaGetNegotiatedPhymode , 0, 0 } -struct _RpcRespWifiApGetStaAid +struct RpcRespWifiApGetStaAid { ProtobufCMessage base; int32_t resp; @@ -3281,7 +3334,7 @@ struct _RpcRespWifiApGetStaAid , 0, 0 } -struct _RpcReqWifiStaGetRssi +struct RpcReqWifiStaGetRssi { ProtobufCMessage base; }; @@ -3290,7 +3343,7 @@ struct _RpcReqWifiStaGetRssi } -struct _RpcRespWifiStaGetRssi +struct RpcRespWifiStaGetRssi { ProtobufCMessage base; int32_t resp; @@ -3301,7 +3354,7 @@ struct _RpcRespWifiStaGetRssi , 0, 0 } -struct _RpcReqWifiStaGetAid +struct RpcReqWifiStaGetAid { ProtobufCMessage base; }; @@ -3310,7 +3363,7 @@ struct _RpcReqWifiStaGetAid } -struct _RpcRespWifiStaGetAid +struct RpcRespWifiStaGetAid { ProtobufCMessage base; int32_t resp; @@ -3321,7 +3374,7 @@ struct _RpcRespWifiStaGetAid , 0, 0 } -struct _RpcReqWifiSetProtocols +struct RpcReqWifiSetProtocols { ProtobufCMessage base; int32_t ifx; @@ -3332,7 +3385,7 @@ struct _RpcReqWifiSetProtocols , 0, NULL } -struct _RpcRespWifiSetProtocols +struct RpcRespWifiSetProtocols { ProtobufCMessage base; int32_t resp; @@ -3343,7 +3396,7 @@ struct _RpcRespWifiSetProtocols , 0, 0 } -struct _RpcReqWifiGetProtocols +struct RpcReqWifiGetProtocols { ProtobufCMessage base; int32_t ifx; @@ -3353,7 +3406,7 @@ struct _RpcReqWifiGetProtocols , 0 } -struct _RpcRespWifiGetProtocols +struct RpcRespWifiGetProtocols { ProtobufCMessage base; int32_t resp; @@ -3365,7 +3418,7 @@ struct _RpcRespWifiGetProtocols , 0, 0, NULL } -struct _RpcReqWifiSetBandwidths +struct RpcReqWifiSetBandwidths { ProtobufCMessage base; int32_t ifx; @@ -3376,7 +3429,7 @@ struct _RpcReqWifiSetBandwidths , 0, NULL } -struct _RpcRespWifiSetBandwidths +struct RpcRespWifiSetBandwidths { ProtobufCMessage base; int32_t resp; @@ -3387,7 +3440,7 @@ struct _RpcRespWifiSetBandwidths , 0, 0 } -struct _RpcReqWifiGetBandwidths +struct RpcReqWifiGetBandwidths { ProtobufCMessage base; int32_t ifx; @@ -3397,7 +3450,7 @@ struct _RpcReqWifiGetBandwidths , 0 } -struct _RpcRespWifiGetBandwidths +struct RpcRespWifiGetBandwidths { ProtobufCMessage base; int32_t resp; @@ -3409,7 +3462,7 @@ struct _RpcRespWifiGetBandwidths , 0, 0, NULL } -struct _RpcReqWifiSetBand +struct RpcReqWifiSetBand { ProtobufCMessage base; uint32_t band; @@ -3419,7 +3472,7 @@ struct _RpcReqWifiSetBand , 0 } -struct _RpcRespWifiSetBand +struct RpcRespWifiSetBand { ProtobufCMessage base; int32_t resp; @@ -3429,7 +3482,7 @@ struct _RpcRespWifiSetBand , 0 } -struct _RpcReqWifiGetBand +struct RpcReqWifiGetBand { ProtobufCMessage base; }; @@ -3438,7 +3491,7 @@ struct _RpcReqWifiGetBand } -struct _RpcRespWifiGetBand +struct RpcRespWifiGetBand { ProtobufCMessage base; int32_t resp; @@ -3449,7 +3502,7 @@ struct _RpcRespWifiGetBand , 0, 0 } -struct _RpcReqWifiSetBandMode +struct RpcReqWifiSetBandMode { ProtobufCMessage base; uint32_t bandmode; @@ -3459,7 +3512,7 @@ struct _RpcReqWifiSetBandMode , 0 } -struct _RpcRespWifiSetBandMode +struct RpcRespWifiSetBandMode { ProtobufCMessage base; int32_t resp; @@ -3469,7 +3522,7 @@ struct _RpcRespWifiSetBandMode , 0 } -struct _RpcReqWifiGetBandMode +struct RpcReqWifiGetBandMode { ProtobufCMessage base; }; @@ -3478,7 +3531,7 @@ struct _RpcReqWifiGetBandMode } -struct _RpcRespWifiGetBandMode +struct RpcRespWifiGetBandMode { ProtobufCMessage base; int32_t resp; @@ -3489,7 +3542,7 @@ struct _RpcRespWifiGetBandMode , 0, 0 } -struct _RpcReqWifiSetInactiveTime +struct RpcReqWifiSetInactiveTime { ProtobufCMessage base; uint32_t ifx; @@ -3500,7 +3553,7 @@ struct _RpcReqWifiSetInactiveTime , 0, 0 } -struct _RpcRespWifiSetInactiveTime +struct RpcRespWifiSetInactiveTime { ProtobufCMessage base; int32_t resp; @@ -3510,7 +3563,7 @@ struct _RpcRespWifiSetInactiveTime , 0 } -struct _RpcReqWifiGetInactiveTime +struct RpcReqWifiGetInactiveTime { ProtobufCMessage base; uint32_t ifx; @@ -3520,7 +3573,7 @@ struct _RpcReqWifiGetInactiveTime , 0 } -struct _RpcRespWifiGetInactiveTime +struct RpcRespWifiGetInactiveTime { ProtobufCMessage base; int32_t resp; @@ -3531,7 +3584,7 @@ struct _RpcRespWifiGetInactiveTime , 0, 0 } -struct _RpcReqWifiStaItwtSetup +struct RpcReqWifiStaItwtSetup { ProtobufCMessage base; WifiItwtSetupConfig *setup_config; @@ -3541,7 +3594,7 @@ struct _RpcReqWifiStaItwtSetup , NULL } -struct _RpcRespWifiStaItwtSetup +struct RpcRespWifiStaItwtSetup { ProtobufCMessage base; int32_t resp; @@ -3551,7 +3604,7 @@ struct _RpcRespWifiStaItwtSetup , 0 } -struct _RpcReqWifiStaItwtTeardown +struct RpcReqWifiStaItwtTeardown { ProtobufCMessage base; int32_t flow_id; @@ -3561,7 +3614,7 @@ struct _RpcReqWifiStaItwtTeardown , 0 } -struct _RpcRespWifiStaItwtTeardown +struct RpcRespWifiStaItwtTeardown { ProtobufCMessage base; int32_t resp; @@ -3571,7 +3624,7 @@ struct _RpcRespWifiStaItwtTeardown , 0 } -struct _RpcReqWifiStaItwtSuspend +struct RpcReqWifiStaItwtSuspend { ProtobufCMessage base; int32_t flow_id; @@ -3582,7 +3635,7 @@ struct _RpcReqWifiStaItwtSuspend , 0, 0 } -struct _RpcRespWifiStaItwtSuspend +struct RpcRespWifiStaItwtSuspend { ProtobufCMessage base; int32_t resp; @@ -3592,7 +3645,7 @@ struct _RpcRespWifiStaItwtSuspend , 0 } -struct _RpcReqWifiStaItwtGetFlowIdStatus +struct RpcReqWifiStaItwtGetFlowIdStatus { ProtobufCMessage base; }; @@ -3601,7 +3654,7 @@ struct _RpcReqWifiStaItwtGetFlowIdStatus } -struct _RpcRespWifiStaItwtGetFlowIdStatus +struct RpcRespWifiStaItwtGetFlowIdStatus { ProtobufCMessage base; int32_t resp; @@ -3612,7 +3665,7 @@ struct _RpcRespWifiStaItwtGetFlowIdStatus , 0, 0 } -struct _RpcReqWifiStaItwtSendProbeReq +struct RpcReqWifiStaItwtSendProbeReq { ProtobufCMessage base; int32_t timeout_ms; @@ -3622,7 +3675,7 @@ struct _RpcReqWifiStaItwtSendProbeReq , 0 } -struct _RpcRespWifiStaItwtSendProbeReq +struct RpcRespWifiStaItwtSendProbeReq { ProtobufCMessage base; int32_t resp; @@ -3632,7 +3685,7 @@ struct _RpcRespWifiStaItwtSendProbeReq , 0 } -struct _RpcReqWifiStaItwtSetTargetWakeTimeOffset +struct RpcReqWifiStaItwtSetTargetWakeTimeOffset { ProtobufCMessage base; int32_t offset_us; @@ -3642,7 +3695,7 @@ struct _RpcReqWifiStaItwtSetTargetWakeTimeOffset , 0 } -struct _RpcRespWifiStaItwtSetTargetWakeTimeOffset +struct RpcRespWifiStaItwtSetTargetWakeTimeOffset { ProtobufCMessage base; int32_t resp; @@ -3652,7 +3705,7 @@ struct _RpcRespWifiStaItwtSetTargetWakeTimeOffset , 0 } -struct _RpcReqWifiStaTwtConfig +struct RpcReqWifiStaTwtConfig { ProtobufCMessage base; WifiTwtConfig *config; @@ -3662,7 +3715,7 @@ struct _RpcReqWifiStaTwtConfig , NULL } -struct _RpcRespWifiStaTwtConfig +struct RpcRespWifiStaTwtConfig { ProtobufCMessage base; int32_t resp; @@ -3672,7 +3725,7 @@ struct _RpcRespWifiStaTwtConfig , 0 } -struct _RpcReqGetCoprocessorFwVersion +struct RpcReqGetCoprocessorFwVersion { ProtobufCMessage base; }; @@ -3681,7 +3734,7 @@ struct _RpcReqGetCoprocessorFwVersion } -struct _RpcRespGetCoprocessorFwVersion +struct RpcRespGetCoprocessorFwVersion { ProtobufCMessage base; int32_t resp; @@ -3694,7 +3747,7 @@ struct _RpcRespGetCoprocessorFwVersion , 0, 0, 0, 0 } -struct _RpcReqSetDhcpDnsStatus +struct RpcReqSetDhcpDnsStatus { ProtobufCMessage base; int32_t iface; @@ -3712,7 +3765,7 @@ struct _RpcReqSetDhcpDnsStatus , 0, 0, 0, {0,NULL}, {0,NULL}, {0,NULL}, 0, {0,NULL}, 0 } -struct _RpcRespSetDhcpDnsStatus +struct RpcRespSetDhcpDnsStatus { ProtobufCMessage base; int32_t resp; @@ -3722,7 +3775,7 @@ struct _RpcRespSetDhcpDnsStatus , 0 } -struct _RpcReqGetDhcpDnsStatus +struct RpcReqGetDhcpDnsStatus { ProtobufCMessage base; int32_t iface; @@ -3732,7 +3785,7 @@ struct _RpcReqGetDhcpDnsStatus , 0 } -struct _RpcRespGetDhcpDnsStatus +struct RpcRespGetDhcpDnsStatus { ProtobufCMessage base; int32_t iface; @@ -3751,7 +3804,122 @@ struct _RpcRespGetDhcpDnsStatus , 0, 0, 0, {0,NULL}, {0,NULL}, {0,NULL}, 0, {0,NULL}, 0, 0 } -struct _RpcEventWifiEventNoArgs +struct RpcReqSuppDppInit +{ + ProtobufCMessage base; + /* + * enables sending of Event_SuppDpp to host via callback + */ + protobuf_c_boolean cb; +}; +#define RPC__REQ__SUPP_DPP_INIT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__supp_dpp_init__descriptor) \ + , 0 } + + +struct RpcRespSuppDppInit +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__SUPP_DPP_INIT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__supp_dpp_init__descriptor) \ + , 0 } + + +struct RpcReqSuppDppDeinit +{ + ProtobufCMessage base; +}; +#define RPC__REQ__SUPP_DPP_DEINIT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__supp_dpp_deinit__descriptor) \ + } + + +struct RpcRespSuppDppDeinit +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__SUPP_DPP_DEINIT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__supp_dpp_deinit__descriptor) \ + , 0 } + + +struct RpcReqSuppDppBootstrapGen +{ + ProtobufCMessage base; + /* + * DPP Bootstrapping listen channels separated by commas + */ + ProtobufCBinaryData chan_list; + /* + * Bootstrap method type, only QR Code method is supported for now. + */ + int32_t type; + /* + * (Optional) 32 byte Raw Private Key for generating a Bootstrapping Public Key + */ + ProtobufCBinaryData key; + /* + * (Optional) Ancillary Device Information like Serial Number + */ + ProtobufCBinaryData info; +}; +#define RPC__REQ__SUPP_DPP_BOOTSTRAP_GEN__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__supp_dpp_bootstrap_gen__descriptor) \ + , {0,NULL}, 0, {0,NULL}, {0,NULL} } + + +struct RpcRespSuppDppBootstrapGen +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__SUPP_DPP_BOOTSTRAP_GEN__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__supp_dpp_bootstrap_gen__descriptor) \ + , 0 } + + +struct RpcReqSuppDppStartListen +{ + ProtobufCMessage base; +}; +#define RPC__REQ__SUPP_DPP_START_LISTEN__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__supp_dpp_start_listen__descriptor) \ + } + + +struct RpcRespSuppDppStartListen +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__SUPP_DPP_START_LISTEN__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__supp_dpp_start_listen__descriptor) \ + , 0 } + + +struct RpcReqSuppDppStopListen +{ + ProtobufCMessage base; +}; +#define RPC__REQ__SUPP_DPP_STOP_LISTEN__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__supp_dpp_stop_listen__descriptor) \ + } + + +struct RpcRespSuppDppStopListen +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__SUPP_DPP_STOP_LISTEN__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__supp_dpp_stop_listen__descriptor) \ + , 0 } + + +struct RpcEventWifiEventNoArgs { ProtobufCMessage base; int32_t resp; @@ -3762,7 +3930,7 @@ struct _RpcEventWifiEventNoArgs , 0, 0 } -struct _RpcEventESPInit +struct RpcEventESPInit { ProtobufCMessage base; ProtobufCBinaryData init_data; @@ -3772,7 +3940,7 @@ struct _RpcEventESPInit , {0,NULL} } -struct _RpcEventHeartbeat +struct RpcEventHeartbeat { ProtobufCMessage base; int32_t hb_num; @@ -3782,7 +3950,7 @@ struct _RpcEventHeartbeat , 0 } -struct _RpcEventAPStaDisconnected +struct RpcEventAPStaDisconnected { ProtobufCMessage base; int32_t resp; @@ -3796,7 +3964,7 @@ struct _RpcEventAPStaDisconnected , 0, {0,NULL}, 0, 0, 0 } -struct _RpcEventAPStaConnected +struct RpcEventAPStaConnected { ProtobufCMessage base; int32_t resp; @@ -3809,7 +3977,7 @@ struct _RpcEventAPStaConnected , 0, {0,NULL}, 0, 0 } -struct _RpcEventStaScanDone +struct RpcEventStaScanDone { ProtobufCMessage base; int32_t resp; @@ -3820,7 +3988,7 @@ struct _RpcEventStaScanDone , 0, NULL } -struct _RpcEventStaConnected +struct RpcEventStaConnected { ProtobufCMessage base; int32_t resp; @@ -3831,7 +3999,7 @@ struct _RpcEventStaConnected , 0, NULL } -struct _RpcEventStaDisconnected +struct RpcEventStaDisconnected { ProtobufCMessage base; int32_t resp; @@ -3842,7 +4010,7 @@ struct _RpcEventStaDisconnected , 0, NULL } -struct _RpcEventDhcpDnsStatus +struct RpcEventDhcpDnsStatus { ProtobufCMessage base; int32_t iface; @@ -3861,7 +4029,7 @@ struct _RpcEventDhcpDnsStatus , 0, 0, 0, {0,NULL}, {0,NULL}, {0,NULL}, 0, {0,NULL}, 0, 0 } -struct _RpcEventStaItwtSetup +struct RpcEventStaItwtSetup { ProtobufCMessage base; int32_t resp; @@ -3875,7 +4043,7 @@ struct _RpcEventStaItwtSetup , 0, NULL, 0, 0, 0 } -struct _RpcEventStaItwtTeardown +struct RpcEventStaItwtTeardown { ProtobufCMessage base; int32_t resp; @@ -3887,7 +4055,7 @@ struct _RpcEventStaItwtTeardown , 0, 0, 0 } -struct _RpcEventStaItwtSuspend +struct RpcEventStaItwtSuspend { ProtobufCMessage base; int32_t resp; @@ -3904,7 +4072,7 @@ struct _RpcEventStaItwtSuspend , 0, 0, 0, 0,NULL } -struct _RpcEventStaItwtProbe +struct RpcEventStaItwtProbe { ProtobufCMessage base; int32_t resp; @@ -3916,7 +4084,7 @@ struct _RpcEventStaItwtProbe , 0, 0, 0 } -struct _RpcReqWifiStaEnterpriseEnable +struct RpcReqWifiStaEnterpriseEnable { ProtobufCMessage base; }; @@ -3925,7 +4093,7 @@ struct _RpcReqWifiStaEnterpriseEnable } -struct _RpcRespWifiStaEnterpriseEnable +struct RpcRespWifiStaEnterpriseEnable { ProtobufCMessage base; int32_t resp; @@ -3935,7 +4103,7 @@ struct _RpcRespWifiStaEnterpriseEnable , 0 } -struct _RpcReqWifiStaEnterpriseDisable +struct RpcReqWifiStaEnterpriseDisable { ProtobufCMessage base; }; @@ -3944,7 +4112,7 @@ struct _RpcReqWifiStaEnterpriseDisable } -struct _RpcRespWifiStaEnterpriseDisable +struct RpcRespWifiStaEnterpriseDisable { ProtobufCMessage base; int32_t resp; @@ -3954,7 +4122,7 @@ struct _RpcRespWifiStaEnterpriseDisable , 0 } -struct _RpcReqEapSetIdentity +struct RpcReqEapSetIdentity { ProtobufCMessage base; ProtobufCBinaryData identity; @@ -3965,7 +4133,7 @@ struct _RpcReqEapSetIdentity , {0,NULL}, 0 } -struct _RpcRespEapSetIdentity +struct RpcRespEapSetIdentity { ProtobufCMessage base; int32_t resp; @@ -3975,7 +4143,7 @@ struct _RpcRespEapSetIdentity , 0 } -struct _RpcReqEapClearIdentity +struct RpcReqEapClearIdentity { ProtobufCMessage base; }; @@ -3984,7 +4152,7 @@ struct _RpcReqEapClearIdentity } -struct _RpcRespEapClearIdentity +struct RpcRespEapClearIdentity { ProtobufCMessage base; int32_t resp; @@ -3994,7 +4162,7 @@ struct _RpcRespEapClearIdentity , 0 } -struct _RpcReqEapSetUsername +struct RpcReqEapSetUsername { ProtobufCMessage base; ProtobufCBinaryData username; @@ -4005,7 +4173,7 @@ struct _RpcReqEapSetUsername , {0,NULL}, 0 } -struct _RpcRespEapSetUsername +struct RpcRespEapSetUsername { ProtobufCMessage base; int32_t resp; @@ -4015,7 +4183,7 @@ struct _RpcRespEapSetUsername , 0 } -struct _RpcReqEapClearUsername +struct RpcReqEapClearUsername { ProtobufCMessage base; }; @@ -4024,7 +4192,7 @@ struct _RpcReqEapClearUsername } -struct _RpcRespEapClearUsername +struct RpcRespEapClearUsername { ProtobufCMessage base; int32_t resp; @@ -4034,7 +4202,7 @@ struct _RpcRespEapClearUsername , 0 } -struct _RpcReqEapSetPassword +struct RpcReqEapSetPassword { ProtobufCMessage base; ProtobufCBinaryData password; @@ -4045,7 +4213,7 @@ struct _RpcReqEapSetPassword , {0,NULL}, 0 } -struct _RpcRespEapSetPassword +struct RpcRespEapSetPassword { ProtobufCMessage base; int32_t resp; @@ -4055,7 +4223,7 @@ struct _RpcRespEapSetPassword , 0 } -struct _RpcReqEapClearPassword +struct RpcReqEapClearPassword { ProtobufCMessage base; }; @@ -4064,7 +4232,7 @@ struct _RpcReqEapClearPassword } -struct _RpcRespEapClearPassword +struct RpcRespEapClearPassword { ProtobufCMessage base; int32_t resp; @@ -4074,7 +4242,7 @@ struct _RpcRespEapClearPassword , 0 } -struct _RpcReqEapSetNewPassword +struct RpcReqEapSetNewPassword { ProtobufCMessage base; ProtobufCBinaryData new_password; @@ -4085,7 +4253,7 @@ struct _RpcReqEapSetNewPassword , {0,NULL}, 0 } -struct _RpcRespEapSetNewPassword +struct RpcRespEapSetNewPassword { ProtobufCMessage base; int32_t resp; @@ -4095,7 +4263,7 @@ struct _RpcRespEapSetNewPassword , 0 } -struct _RpcReqEapClearNewPassword +struct RpcReqEapClearNewPassword { ProtobufCMessage base; }; @@ -4104,7 +4272,7 @@ struct _RpcReqEapClearNewPassword } -struct _RpcRespEapClearNewPassword +struct RpcRespEapClearNewPassword { ProtobufCMessage base; int32_t resp; @@ -4114,7 +4282,7 @@ struct _RpcRespEapClearNewPassword , 0 } -struct _RpcReqEapSetCaCert +struct RpcReqEapSetCaCert { ProtobufCMessage base; ProtobufCBinaryData ca_cert; @@ -4125,7 +4293,7 @@ struct _RpcReqEapSetCaCert , {0,NULL}, 0 } -struct _RpcRespEapSetCaCert +struct RpcRespEapSetCaCert { ProtobufCMessage base; int32_t resp; @@ -4135,7 +4303,7 @@ struct _RpcRespEapSetCaCert , 0 } -struct _RpcReqEapClearCaCert +struct RpcReqEapClearCaCert { ProtobufCMessage base; }; @@ -4144,7 +4312,7 @@ struct _RpcReqEapClearCaCert } -struct _RpcRespEapClearCaCert +struct RpcRespEapClearCaCert { ProtobufCMessage base; int32_t resp; @@ -4154,7 +4322,7 @@ struct _RpcRespEapClearCaCert , 0 } -struct _RpcReqEapSetCertificateAndKey +struct RpcReqEapSetCertificateAndKey { ProtobufCMessage base; ProtobufCBinaryData client_cert; @@ -4169,7 +4337,7 @@ struct _RpcReqEapSetCertificateAndKey , {0,NULL}, 0, {0,NULL}, 0, {0,NULL}, 0 } -struct _RpcRespEapSetCertificateAndKey +struct RpcRespEapSetCertificateAndKey { ProtobufCMessage base; int32_t resp; @@ -4179,7 +4347,7 @@ struct _RpcRespEapSetCertificateAndKey , 0 } -struct _RpcReqEapClearCertificateAndKey +struct RpcReqEapClearCertificateAndKey { ProtobufCMessage base; }; @@ -4188,7 +4356,7 @@ struct _RpcReqEapClearCertificateAndKey } -struct _RpcRespEapClearCertificateAndKey +struct RpcRespEapClearCertificateAndKey { ProtobufCMessage base; int32_t resp; @@ -4198,7 +4366,7 @@ struct _RpcRespEapClearCertificateAndKey , 0 } -struct _RpcReqEapSetDisableTimeCheck +struct RpcReqEapSetDisableTimeCheck { ProtobufCMessage base; protobuf_c_boolean disable; @@ -4208,7 +4376,7 @@ struct _RpcReqEapSetDisableTimeCheck , 0 } -struct _RpcRespEapSetDisableTimeCheck +struct RpcRespEapSetDisableTimeCheck { ProtobufCMessage base; int32_t resp; @@ -4218,7 +4386,7 @@ struct _RpcRespEapSetDisableTimeCheck , 0 } -struct _RpcReqEapGetDisableTimeCheck +struct RpcReqEapGetDisableTimeCheck { ProtobufCMessage base; }; @@ -4227,7 +4395,7 @@ struct _RpcReqEapGetDisableTimeCheck } -struct _RpcRespEapGetDisableTimeCheck +struct RpcRespEapGetDisableTimeCheck { ProtobufCMessage base; int32_t resp; @@ -4238,7 +4406,7 @@ struct _RpcRespEapGetDisableTimeCheck , 0, 0 } -struct _RpcReqEapSetTtlsPhase2Method +struct RpcReqEapSetTtlsPhase2Method { ProtobufCMessage base; int32_t type; @@ -4248,7 +4416,7 @@ struct _RpcReqEapSetTtlsPhase2Method , 0 } -struct _RpcRespEapSetTtlsPhase2Method +struct RpcRespEapSetTtlsPhase2Method { ProtobufCMessage base; int32_t resp; @@ -4258,7 +4426,7 @@ struct _RpcRespEapSetTtlsPhase2Method , 0 } -struct _RpcReqEapSetSuiteb192bitCertification +struct RpcReqEapSetSuiteb192bitCertification { ProtobufCMessage base; protobuf_c_boolean enable; @@ -4268,7 +4436,7 @@ struct _RpcReqEapSetSuiteb192bitCertification , 0 } -struct _RpcRespEapSetSuiteb192bitCertification +struct RpcRespEapSetSuiteb192bitCertification { ProtobufCMessage base; int32_t resp; @@ -4278,7 +4446,7 @@ struct _RpcRespEapSetSuiteb192bitCertification , 0 } -struct _RpcReqEapSetPacFile +struct RpcReqEapSetPacFile { ProtobufCMessage base; ProtobufCBinaryData pac_file; @@ -4289,7 +4457,7 @@ struct _RpcReqEapSetPacFile , {0,NULL}, 0 } -struct _RpcRespEapSetPacFile +struct RpcRespEapSetPacFile { ProtobufCMessage base; int32_t resp; @@ -4299,7 +4467,7 @@ struct _RpcRespEapSetPacFile , 0 } -struct _RpcReqEapSetFastParams +struct RpcReqEapSetFastParams { ProtobufCMessage base; EapFastConfig *eap_fast_config; @@ -4309,7 +4477,7 @@ struct _RpcReqEapSetFastParams , NULL } -struct _RpcRespEapSetFastParams +struct RpcRespEapSetFastParams { ProtobufCMessage base; int32_t resp; @@ -4319,7 +4487,7 @@ struct _RpcRespEapSetFastParams , 0 } -struct _RpcReqEapUseDefaultCertBundle +struct RpcReqEapUseDefaultCertBundle { ProtobufCMessage base; protobuf_c_boolean use_default_bundle; @@ -4329,7 +4497,7 @@ struct _RpcReqEapUseDefaultCertBundle , 0 } -struct _RpcRespEapUseDefaultCertBundle +struct RpcRespEapUseDefaultCertBundle { ProtobufCMessage base; int32_t resp; @@ -4339,7 +4507,7 @@ struct _RpcRespEapUseDefaultCertBundle , 0 } -struct _RpcReqWifiSetOkcSupport +struct RpcReqWifiSetOkcSupport { ProtobufCMessage base; protobuf_c_boolean enable; @@ -4349,7 +4517,7 @@ struct _RpcReqWifiSetOkcSupport , 0 } -struct _RpcRespWifiSetOkcSupport +struct RpcRespWifiSetOkcSupport { ProtobufCMessage base; int32_t resp; @@ -4359,7 +4527,7 @@ struct _RpcRespWifiSetOkcSupport , 0 } -struct _RpcReqEapSetDomainName +struct RpcReqEapSetDomainName { ProtobufCMessage base; ProtobufCBinaryData domain_name; @@ -4369,7 +4537,7 @@ struct _RpcReqEapSetDomainName , {0,NULL} } -struct _RpcRespEapSetDomainName +struct RpcRespEapSetDomainName { ProtobufCMessage base; int32_t resp; @@ -4379,7 +4547,7 @@ struct _RpcRespEapSetDomainName , 0 } -struct _RpcReqEapSetEapMethods +struct RpcReqEapSetEapMethods { ProtobufCMessage base; int32_t methods; @@ -4389,7 +4557,7 @@ struct _RpcReqEapSetEapMethods , 0 } -struct _RpcRespEapSetEapMethods +struct RpcRespEapSetEapMethods { ProtobufCMessage base; int32_t resp; @@ -4399,12 +4567,95 @@ struct _RpcRespEapSetEapMethods , 0 } +struct RpcEventSuppDppUriReady +{ + ProtobufCMessage base; + int32_t resp; + /* + * QR Code to configure the enrollee + */ + ProtobufCBinaryData qrcode; +}; +#define RPC__EVENT__SUPP_DPP_URI_READY__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__event__supp_dpp_uri_ready__descriptor) \ + , 0, {0,NULL} } + + +struct RpcEventSuppDppCfgRecvd +{ + ProtobufCMessage base; + int32_t resp; + WifiConfig *cfg; +}; +#define RPC__EVENT__SUPP_DPP_CFG_RECVD__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__event__supp_dpp_cfg_recvd__descriptor) \ + , 0, NULL } + + +struct RpcEventSuppDppFail +{ + ProtobufCMessage base; + int32_t resp; + /* + * failure reason + */ + int32_t reason; +}; +#define RPC__EVENT__SUPP_DPP_FAIL__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__event__supp_dpp_fail__descriptor) \ + , 0, 0 } + + +struct RpcEventWifiDppUriReady +{ + ProtobufCMessage base; + int32_t resp; + /* + * QR Code to configure the enrollee + */ + ProtobufCBinaryData qrcode; +}; +#define RPC__EVENT__WIFI_DPP_URI_READY__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__event__wifi_dpp_uri_ready__descriptor) \ + , 0, {0,NULL} } + + +struct RpcEventWifiDppCfgRecvd +{ + ProtobufCMessage base; + int32_t resp; + WifiConfig *cfg; +}; +#define RPC__EVENT__WIFI_DPP_CFG_RECVD__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__event__wifi_dpp_cfg_recvd__descriptor) \ + , 0, NULL } + + +struct RpcEventWifiDppFail +{ + ProtobufCMessage base; + int32_t resp; + /* + * failure reason + */ + int32_t reason; +}; +#define RPC__EVENT__WIFI_DPP_FAIL__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__event__wifi_dpp_fail__descriptor) \ + , 0, 0 } + + typedef enum { RPC__PAYLOAD__NOT_SET = 0, RPC__PAYLOAD_REQ_GET_MAC_ADDRESS = 257, RPC__PAYLOAD_REQ_SET_MAC_ADDRESS = 258, RPC__PAYLOAD_REQ_GET_WIFI_MODE = 259, RPC__PAYLOAD_REQ_SET_WIFI_MODE = 260, + RPC__PAYLOAD_REQ_SUPP_DPP_INIT = 261, + RPC__PAYLOAD_REQ_SUPP_DPP_DEINIT = 262, + RPC__PAYLOAD_REQ_SUPP_DPP_BOOTSTRAP_GEN = 263, + RPC__PAYLOAD_REQ_SUPP_DPP_START_LISTEN = 264, + RPC__PAYLOAD_REQ_SUPP_DPP_STOP_LISTEN = 265, RPC__PAYLOAD_REQ_WIFI_SET_PS = 270, RPC__PAYLOAD_REQ_WIFI_GET_PS = 271, RPC__PAYLOAD_REQ_OTA_BEGIN = 272, @@ -4495,6 +4746,11 @@ typedef enum { RPC__PAYLOAD_RESP_SET_MAC_ADDRESS = 514, RPC__PAYLOAD_RESP_GET_WIFI_MODE = 515, RPC__PAYLOAD_RESP_SET_WIFI_MODE = 516, + RPC__PAYLOAD_RESP_SUPP_DPP_INIT = 517, + RPC__PAYLOAD_RESP_SUPP_DPP_DEINIT = 518, + RPC__PAYLOAD_RESP_SUPP_DPP_BOOTSTRAP_GEN = 519, + RPC__PAYLOAD_RESP_SUPP_DPP_START_LISTEN = 520, + RPC__PAYLOAD_RESP_SUPP_DPP_STOP_LISTEN = 521, RPC__PAYLOAD_RESP_WIFI_SET_PS = 526, RPC__PAYLOAD_RESP_WIFI_GET_PS = 527, RPC__PAYLOAD_RESP_OTA_BEGIN = 528, @@ -4593,11 +4849,17 @@ typedef enum { RPC__PAYLOAD_EVENT_STA_ITWT_SETUP = 778, RPC__PAYLOAD_EVENT_STA_ITWT_TEARDOWN = 779, RPC__PAYLOAD_EVENT_STA_ITWT_SUSPEND = 780, - RPC__PAYLOAD_EVENT_STA_ITWT_PROBE = 781 - PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(RPC__PAYLOAD) + RPC__PAYLOAD_EVENT_STA_ITWT_PROBE = 781, + RPC__PAYLOAD_EVENT_SUPP_DPP_URI_READY = 782, + RPC__PAYLOAD_EVENT_SUPP_DPP_CFG_RECVD = 783, + RPC__PAYLOAD_EVENT_SUPP_DPP_FAIL = 784, + RPC__PAYLOAD_EVENT_WIFI_DPP_URI_READY = 785, + RPC__PAYLOAD_EVENT_WIFI_DPP_CFG_RECVD = 786, + RPC__PAYLOAD_EVENT_WIFI_DPP_FAIL = 787 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(RPC__PAYLOAD__CASE) } Rpc__PayloadCase; -struct _Rpc +struct Rpc { ProtobufCMessage base; /* @@ -4621,6 +4883,11 @@ struct _Rpc RpcReqSetMacAddress *req_set_mac_address; RpcReqGetMode *req_get_wifi_mode; RpcReqSetMode *req_set_wifi_mode; + RpcReqSuppDppInit *req_supp_dpp_init; + RpcReqSuppDppDeinit *req_supp_dpp_deinit; + RpcReqSuppDppBootstrapGen *req_supp_dpp_bootstrap_gen; + RpcReqSuppDppStartListen *req_supp_dpp_start_listen; + RpcReqSuppDppStopListen *req_supp_dpp_stop_listen; RpcReqSetPs *req_wifi_set_ps; RpcReqGetPs *req_wifi_get_ps; RpcReqOTABegin *req_ota_begin; @@ -4714,6 +4981,11 @@ struct _Rpc RpcRespSetMacAddress *resp_set_mac_address; RpcRespGetMode *resp_get_wifi_mode; RpcRespSetMode *resp_set_wifi_mode; + RpcRespSuppDppInit *resp_supp_dpp_init; + RpcRespSuppDppDeinit *resp_supp_dpp_deinit; + RpcRespSuppDppBootstrapGen *resp_supp_dpp_bootstrap_gen; + RpcRespSuppDppStartListen *resp_supp_dpp_start_listen; + RpcRespSuppDppStopListen *resp_supp_dpp_stop_listen; RpcRespSetPs *resp_wifi_set_ps; RpcRespGetPs *resp_wifi_get_ps; RpcRespOTABegin *resp_ota_begin; @@ -4816,6 +5088,12 @@ struct _Rpc RpcEventStaItwtTeardown *event_sta_itwt_teardown; RpcEventStaItwtSuspend *event_sta_itwt_suspend; RpcEventStaItwtProbe *event_sta_itwt_probe; + RpcEventSuppDppUriReady *event_supp_dpp_uri_ready; + RpcEventSuppDppCfgRecvd *event_supp_dpp_cfg_recvd; + RpcEventSuppDppFail *event_supp_dpp_fail; + RpcEventWifiDppUriReady *event_wifi_dpp_uri_ready; + RpcEventWifiDppCfgRecvd *event_wifi_dpp_cfg_recvd; + RpcEventWifiDppFail *event_wifi_dpp_fail; }; }; #define RPC__INIT \ @@ -8243,6 +8521,196 @@ RpcRespGetDhcpDnsStatus * void rpc__resp__get_dhcp_dns_status__free_unpacked (RpcRespGetDhcpDnsStatus *message, ProtobufCAllocator *allocator); +/* RpcReqSuppDppInit methods */ +void rpc__req__supp_dpp_init__init + (RpcReqSuppDppInit *message); +size_t rpc__req__supp_dpp_init__get_packed_size + (const RpcReqSuppDppInit *message); +size_t rpc__req__supp_dpp_init__pack + (const RpcReqSuppDppInit *message, + uint8_t *out); +size_t rpc__req__supp_dpp_init__pack_to_buffer + (const RpcReqSuppDppInit *message, + ProtobufCBuffer *buffer); +RpcReqSuppDppInit * + rpc__req__supp_dpp_init__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__supp_dpp_init__free_unpacked + (RpcReqSuppDppInit *message, + ProtobufCAllocator *allocator); +/* RpcRespSuppDppInit methods */ +void rpc__resp__supp_dpp_init__init + (RpcRespSuppDppInit *message); +size_t rpc__resp__supp_dpp_init__get_packed_size + (const RpcRespSuppDppInit *message); +size_t rpc__resp__supp_dpp_init__pack + (const RpcRespSuppDppInit *message, + uint8_t *out); +size_t rpc__resp__supp_dpp_init__pack_to_buffer + (const RpcRespSuppDppInit *message, + ProtobufCBuffer *buffer); +RpcRespSuppDppInit * + rpc__resp__supp_dpp_init__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__supp_dpp_init__free_unpacked + (RpcRespSuppDppInit *message, + ProtobufCAllocator *allocator); +/* RpcReqSuppDppDeinit methods */ +void rpc__req__supp_dpp_deinit__init + (RpcReqSuppDppDeinit *message); +size_t rpc__req__supp_dpp_deinit__get_packed_size + (const RpcReqSuppDppDeinit *message); +size_t rpc__req__supp_dpp_deinit__pack + (const RpcReqSuppDppDeinit *message, + uint8_t *out); +size_t rpc__req__supp_dpp_deinit__pack_to_buffer + (const RpcReqSuppDppDeinit *message, + ProtobufCBuffer *buffer); +RpcReqSuppDppDeinit * + rpc__req__supp_dpp_deinit__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__supp_dpp_deinit__free_unpacked + (RpcReqSuppDppDeinit *message, + ProtobufCAllocator *allocator); +/* RpcRespSuppDppDeinit methods */ +void rpc__resp__supp_dpp_deinit__init + (RpcRespSuppDppDeinit *message); +size_t rpc__resp__supp_dpp_deinit__get_packed_size + (const RpcRespSuppDppDeinit *message); +size_t rpc__resp__supp_dpp_deinit__pack + (const RpcRespSuppDppDeinit *message, + uint8_t *out); +size_t rpc__resp__supp_dpp_deinit__pack_to_buffer + (const RpcRespSuppDppDeinit *message, + ProtobufCBuffer *buffer); +RpcRespSuppDppDeinit * + rpc__resp__supp_dpp_deinit__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__supp_dpp_deinit__free_unpacked + (RpcRespSuppDppDeinit *message, + ProtobufCAllocator *allocator); +/* RpcReqSuppDppBootstrapGen methods */ +void rpc__req__supp_dpp_bootstrap_gen__init + (RpcReqSuppDppBootstrapGen *message); +size_t rpc__req__supp_dpp_bootstrap_gen__get_packed_size + (const RpcReqSuppDppBootstrapGen *message); +size_t rpc__req__supp_dpp_bootstrap_gen__pack + (const RpcReqSuppDppBootstrapGen *message, + uint8_t *out); +size_t rpc__req__supp_dpp_bootstrap_gen__pack_to_buffer + (const RpcReqSuppDppBootstrapGen *message, + ProtobufCBuffer *buffer); +RpcReqSuppDppBootstrapGen * + rpc__req__supp_dpp_bootstrap_gen__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__supp_dpp_bootstrap_gen__free_unpacked + (RpcReqSuppDppBootstrapGen *message, + ProtobufCAllocator *allocator); +/* RpcRespSuppDppBootstrapGen methods */ +void rpc__resp__supp_dpp_bootstrap_gen__init + (RpcRespSuppDppBootstrapGen *message); +size_t rpc__resp__supp_dpp_bootstrap_gen__get_packed_size + (const RpcRespSuppDppBootstrapGen *message); +size_t rpc__resp__supp_dpp_bootstrap_gen__pack + (const RpcRespSuppDppBootstrapGen *message, + uint8_t *out); +size_t rpc__resp__supp_dpp_bootstrap_gen__pack_to_buffer + (const RpcRespSuppDppBootstrapGen *message, + ProtobufCBuffer *buffer); +RpcRespSuppDppBootstrapGen * + rpc__resp__supp_dpp_bootstrap_gen__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__supp_dpp_bootstrap_gen__free_unpacked + (RpcRespSuppDppBootstrapGen *message, + ProtobufCAllocator *allocator); +/* RpcReqSuppDppStartListen methods */ +void rpc__req__supp_dpp_start_listen__init + (RpcReqSuppDppStartListen *message); +size_t rpc__req__supp_dpp_start_listen__get_packed_size + (const RpcReqSuppDppStartListen *message); +size_t rpc__req__supp_dpp_start_listen__pack + (const RpcReqSuppDppStartListen *message, + uint8_t *out); +size_t rpc__req__supp_dpp_start_listen__pack_to_buffer + (const RpcReqSuppDppStartListen *message, + ProtobufCBuffer *buffer); +RpcReqSuppDppStartListen * + rpc__req__supp_dpp_start_listen__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__supp_dpp_start_listen__free_unpacked + (RpcReqSuppDppStartListen *message, + ProtobufCAllocator *allocator); +/* RpcRespSuppDppStartListen methods */ +void rpc__resp__supp_dpp_start_listen__init + (RpcRespSuppDppStartListen *message); +size_t rpc__resp__supp_dpp_start_listen__get_packed_size + (const RpcRespSuppDppStartListen *message); +size_t rpc__resp__supp_dpp_start_listen__pack + (const RpcRespSuppDppStartListen *message, + uint8_t *out); +size_t rpc__resp__supp_dpp_start_listen__pack_to_buffer + (const RpcRespSuppDppStartListen *message, + ProtobufCBuffer *buffer); +RpcRespSuppDppStartListen * + rpc__resp__supp_dpp_start_listen__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__supp_dpp_start_listen__free_unpacked + (RpcRespSuppDppStartListen *message, + ProtobufCAllocator *allocator); +/* RpcReqSuppDppStopListen methods */ +void rpc__req__supp_dpp_stop_listen__init + (RpcReqSuppDppStopListen *message); +size_t rpc__req__supp_dpp_stop_listen__get_packed_size + (const RpcReqSuppDppStopListen *message); +size_t rpc__req__supp_dpp_stop_listen__pack + (const RpcReqSuppDppStopListen *message, + uint8_t *out); +size_t rpc__req__supp_dpp_stop_listen__pack_to_buffer + (const RpcReqSuppDppStopListen *message, + ProtobufCBuffer *buffer); +RpcReqSuppDppStopListen * + rpc__req__supp_dpp_stop_listen__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__supp_dpp_stop_listen__free_unpacked + (RpcReqSuppDppStopListen *message, + ProtobufCAllocator *allocator); +/* RpcRespSuppDppStopListen methods */ +void rpc__resp__supp_dpp_stop_listen__init + (RpcRespSuppDppStopListen *message); +size_t rpc__resp__supp_dpp_stop_listen__get_packed_size + (const RpcRespSuppDppStopListen *message); +size_t rpc__resp__supp_dpp_stop_listen__pack + (const RpcRespSuppDppStopListen *message, + uint8_t *out); +size_t rpc__resp__supp_dpp_stop_listen__pack_to_buffer + (const RpcRespSuppDppStopListen *message, + ProtobufCBuffer *buffer); +RpcRespSuppDppStopListen * + rpc__resp__supp_dpp_stop_listen__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__supp_dpp_stop_listen__free_unpacked + (RpcRespSuppDppStopListen *message, + ProtobufCAllocator *allocator); /* RpcEventWifiEventNoArgs methods */ void rpc__event__wifi_event_no_args__init (RpcEventWifiEventNoArgs *message); @@ -9402,6 +9870,120 @@ RpcRespEapSetEapMethods * void rpc__resp__eap_set_eap_methods__free_unpacked (RpcRespEapSetEapMethods *message, ProtobufCAllocator *allocator); +/* RpcEventSuppDppUriReady methods */ +void rpc__event__supp_dpp_uri_ready__init + (RpcEventSuppDppUriReady *message); +size_t rpc__event__supp_dpp_uri_ready__get_packed_size + (const RpcEventSuppDppUriReady *message); +size_t rpc__event__supp_dpp_uri_ready__pack + (const RpcEventSuppDppUriReady *message, + uint8_t *out); +size_t rpc__event__supp_dpp_uri_ready__pack_to_buffer + (const RpcEventSuppDppUriReady *message, + ProtobufCBuffer *buffer); +RpcEventSuppDppUriReady * + rpc__event__supp_dpp_uri_ready__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__event__supp_dpp_uri_ready__free_unpacked + (RpcEventSuppDppUriReady *message, + ProtobufCAllocator *allocator); +/* RpcEventSuppDppCfgRecvd methods */ +void rpc__event__supp_dpp_cfg_recvd__init + (RpcEventSuppDppCfgRecvd *message); +size_t rpc__event__supp_dpp_cfg_recvd__get_packed_size + (const RpcEventSuppDppCfgRecvd *message); +size_t rpc__event__supp_dpp_cfg_recvd__pack + (const RpcEventSuppDppCfgRecvd *message, + uint8_t *out); +size_t rpc__event__supp_dpp_cfg_recvd__pack_to_buffer + (const RpcEventSuppDppCfgRecvd *message, + ProtobufCBuffer *buffer); +RpcEventSuppDppCfgRecvd * + rpc__event__supp_dpp_cfg_recvd__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__event__supp_dpp_cfg_recvd__free_unpacked + (RpcEventSuppDppCfgRecvd *message, + ProtobufCAllocator *allocator); +/* RpcEventSuppDppFail methods */ +void rpc__event__supp_dpp_fail__init + (RpcEventSuppDppFail *message); +size_t rpc__event__supp_dpp_fail__get_packed_size + (const RpcEventSuppDppFail *message); +size_t rpc__event__supp_dpp_fail__pack + (const RpcEventSuppDppFail *message, + uint8_t *out); +size_t rpc__event__supp_dpp_fail__pack_to_buffer + (const RpcEventSuppDppFail *message, + ProtobufCBuffer *buffer); +RpcEventSuppDppFail * + rpc__event__supp_dpp_fail__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__event__supp_dpp_fail__free_unpacked + (RpcEventSuppDppFail *message, + ProtobufCAllocator *allocator); +/* RpcEventWifiDppUriReady methods */ +void rpc__event__wifi_dpp_uri_ready__init + (RpcEventWifiDppUriReady *message); +size_t rpc__event__wifi_dpp_uri_ready__get_packed_size + (const RpcEventWifiDppUriReady *message); +size_t rpc__event__wifi_dpp_uri_ready__pack + (const RpcEventWifiDppUriReady *message, + uint8_t *out); +size_t rpc__event__wifi_dpp_uri_ready__pack_to_buffer + (const RpcEventWifiDppUriReady *message, + ProtobufCBuffer *buffer); +RpcEventWifiDppUriReady * + rpc__event__wifi_dpp_uri_ready__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__event__wifi_dpp_uri_ready__free_unpacked + (RpcEventWifiDppUriReady *message, + ProtobufCAllocator *allocator); +/* RpcEventWifiDppCfgRecvd methods */ +void rpc__event__wifi_dpp_cfg_recvd__init + (RpcEventWifiDppCfgRecvd *message); +size_t rpc__event__wifi_dpp_cfg_recvd__get_packed_size + (const RpcEventWifiDppCfgRecvd *message); +size_t rpc__event__wifi_dpp_cfg_recvd__pack + (const RpcEventWifiDppCfgRecvd *message, + uint8_t *out); +size_t rpc__event__wifi_dpp_cfg_recvd__pack_to_buffer + (const RpcEventWifiDppCfgRecvd *message, + ProtobufCBuffer *buffer); +RpcEventWifiDppCfgRecvd * + rpc__event__wifi_dpp_cfg_recvd__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__event__wifi_dpp_cfg_recvd__free_unpacked + (RpcEventWifiDppCfgRecvd *message, + ProtobufCAllocator *allocator); +/* RpcEventWifiDppFail methods */ +void rpc__event__wifi_dpp_fail__init + (RpcEventWifiDppFail *message); +size_t rpc__event__wifi_dpp_fail__get_packed_size + (const RpcEventWifiDppFail *message); +size_t rpc__event__wifi_dpp_fail__pack + (const RpcEventWifiDppFail *message, + uint8_t *out); +size_t rpc__event__wifi_dpp_fail__pack_to_buffer + (const RpcEventWifiDppFail *message, + ProtobufCBuffer *buffer); +RpcEventWifiDppFail * + rpc__event__wifi_dpp_fail__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__event__wifi_dpp_fail__free_unpacked + (RpcEventWifiDppFail *message, + ProtobufCAllocator *allocator); /* Rpc methods */ void rpc__init (Rpc *message); @@ -9963,6 +10545,36 @@ typedef void (*RpcReqGetDhcpDnsStatus_Closure) typedef void (*RpcRespGetDhcpDnsStatus_Closure) (const RpcRespGetDhcpDnsStatus *message, void *closure_data); +typedef void (*RpcReqSuppDppInit_Closure) + (const RpcReqSuppDppInit *message, + void *closure_data); +typedef void (*RpcRespSuppDppInit_Closure) + (const RpcRespSuppDppInit *message, + void *closure_data); +typedef void (*RpcReqSuppDppDeinit_Closure) + (const RpcReqSuppDppDeinit *message, + void *closure_data); +typedef void (*RpcRespSuppDppDeinit_Closure) + (const RpcRespSuppDppDeinit *message, + void *closure_data); +typedef void (*RpcReqSuppDppBootstrapGen_Closure) + (const RpcReqSuppDppBootstrapGen *message, + void *closure_data); +typedef void (*RpcRespSuppDppBootstrapGen_Closure) + (const RpcRespSuppDppBootstrapGen *message, + void *closure_data); +typedef void (*RpcReqSuppDppStartListen_Closure) + (const RpcReqSuppDppStartListen *message, + void *closure_data); +typedef void (*RpcRespSuppDppStartListen_Closure) + (const RpcRespSuppDppStartListen *message, + void *closure_data); +typedef void (*RpcReqSuppDppStopListen_Closure) + (const RpcReqSuppDppStopListen *message, + void *closure_data); +typedef void (*RpcRespSuppDppStopListen_Closure) + (const RpcRespSuppDppStopListen *message, + void *closure_data); typedef void (*RpcEventWifiEventNoArgs_Closure) (const RpcEventWifiEventNoArgs *message, void *closure_data); @@ -10146,6 +10758,24 @@ typedef void (*RpcReqEapSetEapMethods_Closure) typedef void (*RpcRespEapSetEapMethods_Closure) (const RpcRespEapSetEapMethods *message, void *closure_data); +typedef void (*RpcEventSuppDppUriReady_Closure) + (const RpcEventSuppDppUriReady *message, + void *closure_data); +typedef void (*RpcEventSuppDppCfgRecvd_Closure) + (const RpcEventSuppDppCfgRecvd *message, + void *closure_data); +typedef void (*RpcEventSuppDppFail_Closure) + (const RpcEventSuppDppFail *message, + void *closure_data); +typedef void (*RpcEventWifiDppUriReady_Closure) + (const RpcEventWifiDppUriReady *message, + void *closure_data); +typedef void (*RpcEventWifiDppCfgRecvd_Closure) + (const RpcEventWifiDppCfgRecvd *message, + void *closure_data); +typedef void (*RpcEventWifiDppFail_Closure) + (const RpcEventWifiDppFail *message, + void *closure_data); typedef void (*Rpc_Closure) (const Rpc *message, void *closure_data); @@ -10341,6 +10971,16 @@ extern const ProtobufCMessageDescriptor rpc__req__set_dhcp_dns_status__descripto extern const ProtobufCMessageDescriptor rpc__resp__set_dhcp_dns_status__descriptor; extern const ProtobufCMessageDescriptor rpc__req__get_dhcp_dns_status__descriptor; extern const ProtobufCMessageDescriptor rpc__resp__get_dhcp_dns_status__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__supp_dpp_init__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__supp_dpp_init__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__supp_dpp_deinit__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__supp_dpp_deinit__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__supp_dpp_bootstrap_gen__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__supp_dpp_bootstrap_gen__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__supp_dpp_start_listen__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__supp_dpp_start_listen__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__supp_dpp_stop_listen__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__supp_dpp_stop_listen__descriptor; extern const ProtobufCMessageDescriptor rpc__event__wifi_event_no_args__descriptor; extern const ProtobufCMessageDescriptor rpc__event__espinit__descriptor; extern const ProtobufCMessageDescriptor rpc__event__heartbeat__descriptor; @@ -10402,6 +11042,12 @@ extern const ProtobufCMessageDescriptor rpc__req__eap_set_domain_name__descripto extern const ProtobufCMessageDescriptor rpc__resp__eap_set_domain_name__descriptor; extern const ProtobufCMessageDescriptor rpc__req__eap_set_eap_methods__descriptor; extern const ProtobufCMessageDescriptor rpc__resp__eap_set_eap_methods__descriptor; +extern const ProtobufCMessageDescriptor rpc__event__supp_dpp_uri_ready__descriptor; +extern const ProtobufCMessageDescriptor rpc__event__supp_dpp_cfg_recvd__descriptor; +extern const ProtobufCMessageDescriptor rpc__event__supp_dpp_fail__descriptor; +extern const ProtobufCMessageDescriptor rpc__event__wifi_dpp_uri_ready__descriptor; +extern const ProtobufCMessageDescriptor rpc__event__wifi_dpp_cfg_recvd__descriptor; +extern const ProtobufCMessageDescriptor rpc__event__wifi_dpp_fail__descriptor; extern const ProtobufCMessageDescriptor rpc__descriptor; PROTOBUF_C__END_DECLS diff --git a/common/proto/esp_hosted_rpc.proto b/common/proto/esp_hosted_rpc.proto index 9fb9c7d1..6f1f4c21 100644 --- a/common/proto/esp_hosted_rpc.proto +++ b/common/proto/esp_hosted_rpc.proto @@ -1,54 +1,39 @@ -/* Copyright (C) 2015-2023 Espressif Systems (Shanghai) PTE LTD */ -/* SPDX-License-Identifier: GPL-2.0-only OR Apache-2.0 */ +/* SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD */ +/* SPDX-License-Identifier: Apache-2.0 */ syntax = "proto3"; -/* Enums similar to ESP IDF */ -//enum Rpc_VendorIEType { -// Beacon = 0; -// Probe_req = 1; -// Probe_resp = 2; -// Assoc_req = 3; -// Assoc_resp = 4; -//} -// -//enum Rpc_VendorIEID { -// ID_0 = 0; -// ID_1 = 1; -//} - - enum Rpc_WifiBw { - BW_Invalid = 0; - HT20 = 1; - HT40 = 2; + BW_Invalid = 0; + HT20 = 1; + HT40 = 2; } enum Rpc_WifiPowerSave { - PS_Invalid = 0; - MIN_MODEM = 1; - MAX_MODEM = 2; + PS_Invalid = 0; + MIN_MODEM = 1; + MAX_MODEM = 2; } enum Rpc_WifiSecProt { - Open = 0; - WEP = 1; - WPA_PSK = 2; - WPA2_PSK = 3; - WPA_WPA2_PSK = 4; - WPA2_ENTERPRISE = 5; - WPA3_PSK = 6; - WPA2_WPA3_PSK = 7; + Open = 0; + WEP = 1; + WPA_PSK = 2; + WPA2_PSK = 3; + WPA_WPA2_PSK = 4; + WPA2_ENTERPRISE = 5; + WPA3_PSK = 6; + WPA2_WPA3_PSK = 7; } /* enums for Control path */ enum Rpc_Status { - Connected = 0; - Not_Connected = 1; - No_AP_Found = 2; - Connection_Fail = 3; - Invalid_Argument = 4; - Out_Of_Range = 5; + Connected = 0; + Not_Connected = 1; + No_AP_Found = 2; + Connection_Fail = 3; + Invalid_Argument = 4; + Out_Of_Range = 5; } @@ -59,235 +44,6 @@ MsgType_Invalid = 0; Event = 3; MsgType_Max = 4; } -// -//enum Rpc { -// ESP_ERR_WIFI_BASE = 0x3000; -// ESP_ERR_WIFI_NOT_INIT = 0x3001; -// ESP_ERR_WIFI_NOT_STARTED = 0x3002; -// ESP_ERR_WIFI_NOT_STOPPED = 0x3003; -// ESP_ERR_WIFI_IF = 0x3004; -// ESP_ERR_WIFI_MODE = 0x3005; -// ESP_ERR_WIFI_STATE = 0x3006; -// ESP_ERR_WIFI_CONN = 0x3007; -// ESP_ERR_WIFI_NVS = 0x3008; -// ESP_ERR_WIFI_MAC = 0x3009; -// ESP_ERR_WIFI_SSID = 0x300a; -// ESP_ERR_WIFI_PASSWORD = 0x300b; -// ESP_ERR_WIFI_TIMEOUT = 0x300c; -// ESP_ERR_WIFI_WAKE_FAIL = 0x300d; -// ESP_ERR_WIFI_WOULD_BLOCK = 0x300e; -// ESP_ERR_WIFI_NOT_CONNECT = 0x300f; -// /* 0x3010 0x3011 not present intentionally */ -// ESP_ERR_WIFI_POST = 0x3012; -// ESP_ERR_WIFI_INIT_STATE = 0x3013; -// ESP_ERR_WIFI_STOP_STATE = 0x3014; -// ESP_ERR_WIFI_NOT_ASSOC = 0x3015; -// ESP_ERR_WIFI_TX_DISALLOW = 0x3016; -//} - - -//enum ctrl_msg_type { -// invalid = 0; -// req = 1; -// resp = 2; -// event = 3; -// max = 4; -//} -// -//enum ctrl_msg_id { -// invalid = 0; -// req_base = 400; -// req_w_init = 401; -// req_w_deinit = 402; -// req_w_set_mode = 403; -// req_w_get_mode = 404; -// req_w_start = 405; -// req_w_stop = 406; -// req_w_restore = 407; -// req_w_connect = 408; -// req_w_disconnect = 409; -// req_w_clear_fast_connect = 410; -// req_w_deauth_sta = 411; -// req_w_scan_start = 412; -// req_w_scan_stop = 413; -// req_w_scan_get_ap_name = 414; -// req_w_scan_get_ap_records = 415; -// req_w_clear_ap_list = 416; -// req_w_sta_get_ap_info = 417; -// req_w_set_ps = 418; -// req_w_get_ps = 419; -// req_w_set_protocol = 420; -// req_w_get_protocol = 421; -// req_w_set_bandwidth = 422; -// req_w_get_bandwidth = 423; -// req_w_set_channel = 424; -// req_w_get_channel = 425; -// req_w_set_country = 426; -// req_w_get_country = 427; -// req_w_set_mac = 428; -// req_w_get_mac = 429; -// req_w_set_promiscuous_cb = 430; -// req_w_set_promiscuous = 431; -// req_w_get_promiscuous = 432; -// req_w_set_promiscuous_filter = 433; -// req_w_get_promiscuous_filter = 434; -// req_w_set_promiscuous_ctrl_filter = 435; -// req_w_get_promiscuous_ctrl_filter = 436; -// req_w_set_config = 437; -// req_w_get_config = 438; -// req_w_ap_get_sta_list = 439; -// req_w_ap_get_sta_aid = 440; -// req_w_set_storage = 441; -// req_w_set_vendor_ie = 442; -// req_w_set_vendor_ie_cb = 443; -// req_w_set_max_tx_power = 444; -// req_w_get_max_tx_power = 445; -// req_w_set_event_mask = 446; -// req_w_get_event_mask = 447; -// req_w_80211_tx = 448; -// req_w_set_csi_rx_cb = 449; -// req_w_set_csi_config = 450; -// req_w_set_csi = 451; -// req_w_set_ant_gpio = 452; -// req_w_get_ant_gpio = 453; -// req_w_set_ant = 454; -// req_w_get_ant = 455; -// req_w_get_tsf_time = 456; -// req_w_set_inactive_time = 457; -// req_w_get_inactive_time = 458; -// req_w_statis_dump = 459; -// req_w_set_rssi_threshold = 460; -// req_w_ftm_initiate_session = 461; -// req_w_ftm_end_session = 462; -// req_w_ftm_resp_set_offset = 463; -// req_w_config_11b_rate = 464; -// req_w_connectionless_module_set_wake_interval = 465; -// req_w_set_country_code = 466; -// req_w_get_country_code = 467; -// req_w_config_80211_tx_rate = 468; -// req_w_disable_pmf_config = 469; -// -// req_max = 470; -// -// -// rsp_base = 600; -// rsp_w_init = 601; -// rsp_w_deinit = 602; -// rsp_w_set_mode = 603; -// rsp_w_get_mode = 604; -// rsp_w_start = 605; -// rsp_w_stop = 606; -// rsp_w_restore = 607; -// rsp_w_connect = 608; -// rsp_w_disconnect = 609; -// rsp_w_clear_fast_connect = 610; -// rsp_w_deauth_sta = 611; -// rsp_w_scan_start = 612; -// rsp_w_scan_stop = 613; -// rsp_w_scan_get_ap_name = 614; -// rsp_w_scan_get_ap_records = 615; -// rsp_w_clear_ap_list = 616; -// rsp_w_sta_get_ap_info = 617; -// rsp_w_set_ps = 618; -// rsp_w_get_ps = 619; -// rsp_w_set_protocol = 620; -// rsp_w_get_protocol = 621; -// rsp_w_set_bandwidth = 622; -// rsp_w_get_bandwidth = 623; -// rsp_w_set_channel = 624; -// rsp_w_get_channel = 625; -// rsp_w_set_country = 626; -// rsp_w_get_country = 627; -// rsp_w_set_mac = 628; -// rsp_w_get_mac = 629; -// rsp_w_set_promiscuous_cb = 630; -// rsp_w_set_promiscuous = 631; -// rsp_w_get_promiscuous = 632; -// rsp_w_set_promiscuous_filter = 633; -// rsp_w_get_promiscuous_filter = 634; -// rsp_w_set_promiscuous_ctrl_filter = 635; -// rsp_w_get_promiscuous_ctrl_filter = 636; -// rsp_w_set_config = 637; -// rsp_w_get_config = 638; -// rsp_w_ap_get_sta_list = 639; -// rsp_w_ap_get_sta_aid = 640; -// rsp_w_set_storage = 641; -// rsp_w_set_vendor_ie = 642; -// rsp_w_set_vendor_ie_cb = 643; -// rsp_w_set_max_tx_power = 644; -// rsp_w_get_max_tx_power = 645; -// rsp_w_set_event_mask = 646; -// rsp_w_get_event_mask = 647; -// rsp_w_80211_tx = 648; -// rsp_w_set_csi_rx_cb = 649; -// rsp_w_set_csi_config = 650; -// rsp_w_set_csi = 651; -// rsp_w_set_ant_gpio = 652; -// rsp_w_get_ant_gpio = 653; -// rsp_w_set_ant = 654; -// rsp_w_get_ant = 655; -// rsp_w_get_tsf_time = 656; -// rsp_w_set_inactive_time = 657; -// rsp_w_get_inactive_time = 658; -// rsp_w_statis_dump = 659; -// rsp_w_set_rssi_threshold = 660; -// rsp_w_ftm_initiate_session = 661; -// rsp_w_ftm_end_session = 662; -// rsp_w_ftm_resp_set_offset = 663; -// rsp_w_config_11b_rate = 664; -// rsp_w_connectionless_module_set_wake_interval = 665; -// rsp_w_set_country_code = 666; -// rsp_w_get_country_code = 667; -// rsp_w_config_80211_tx_rate = 668; -// rsp_w_disable_pmf_config = 669; -// -// rsp_max = 670; -// -// -// evt_base = 800; -// evt_esp_started = 801; -// evt_heartbeat = 802; -// evt_w_ready = 803; /**< ESP32 WiFi ready */ -// evt_w_scan_done = 804; /**< ESP32 finish scanning AP */ -// evt_w_sta_start = 805; /**< ESP32 station start */ -// evt_w_sta_stop = 806; /**< ESP32 station stop */ -// evt_w_sta_connected = 807; /**< ESP32 station connected to AP */ -// evt_w_sta_disconnected = 808; /**< ESP32 station disconnected from AP */ -// evt_w_sta_authmode_change = 809; /**< the auth mode of AP connected by ESP32 station changed */ -// -// evt_w_sta_wps_er_success = 810; /**< ESP32 station wps succeeds in enrollee mode */ -// evt_w_sta_wps_er_failed = 811; /**< ESP32 station wps fails in enrollee mode */ -// evt_w_sta_wps_er_timeout = 812; /**< ESP32 station wps timeout in enrollee mode */ -// evt_w_sta_wps_er_pin = 813; /**< ESP32 station wps pin code in enrollee mode */ -// evt_w_sta_wps_er_pbc_overlap = 814; /**< ESP32 station wps overlap in enrollee mode */ -// -// evt_w_ap_start = 815; /**< ESP32 soft-AP start */ -// evt_w_ap_stop = 816; /**< ESP32 soft-AP stop */ -// evt_w_ap_staconnected = 817; /**< a station connected to ESP32 soft-AP */ -// evt_w_ap_stadisconnected = 818; /**< a station disconnected from ESP32 soft-AP */ -// evt_w_ap_probereqrecved = 819; /**< Receive probe request packet in soft-AP interface */ -// -// evt_w_ftm_report = 820; /**< Receive report of FTM procedure */ -// -// /* Add next events after this only */ -// evt_w_sta_bss_rssi_low = 821; /**< AP's RSSI crossed configured threshold */ -// evt_w_action_tx_status = 822; /**< Status indication of Action Tx operation */ -// evt_w_roc_done = 823; /**< Remain-on-Channel operation complete */ -// -// evt_w_sta_beacon_timeout = 824; /**< ESP32 station beacon timeout */ -// -// evt_w_connectionless_module_wake_interval_start = 825; /**< ESP32 connectionless module wake interval start */ -// -// evt_w_ap_wps_rg_success = 826; /**< Soft-AP wps succeeds in registrar mode */ -// evt_w_ap_wps_rg_failed = 827; /**< Soft-AP wps fails in registrar mode */ -// evt_w_ap_wps_rg_timeout = 828; /**< Soft-AP wps timeout in registrar mode */ -// evt_w_ap_wps_rg_pin = 829; /**< Soft-AP wps pin code in registrar mode */ -// evt_w_ap_wps_rg_pbc_overlap = 830; /**< Soft-AP wps overlap in registrar mode */ -// -// evt_max = 831; /**< Invalid WiFi event ID */ -// -//} - enum RpcId { MsgId_Invalid = 0; @@ -300,12 +56,12 @@ enum RpcId { Req_GetWifiMode = 259; //0x103 Req_SetWifiMode = 260; //0x104 - //Req_GetAPScanList = 261; //0x105 - //Req_GetAPConfig = 262; //0x106 - //Req_ConnectAP = 263; //0x107 - //Req_DisconnectAP = 264; //0x108 + Req_SuppDppInit = 261; //0x105 + Req_SuppDppDeinit = 262; //0x106 + Req_SuppDppBootstrapGen = 263; //0x107 + Req_SuppDppStartListen = 264; //0x108 + Req_SuppDppStopListen = 265; //0x109 - //Req_GetSoftAPConfig = 265; //0x109 //Req_SetSoftAPVendorSpecificIE = 266; //0x10a //Req_StartSoftAP = 267; //0x10b //Req_GetSoftAPConnectedSTAList = 268; //0x10c @@ -462,12 +218,12 @@ enum RpcId { Resp_GetWifiMode = 515; Resp_SetWifiMode = 516; - //Resp_GetAPScanList = 517; - //Resp_GetAPConfig = 518; - //Resp_ConnectAP = 519; - //Resp_DisconnectAP = 520; + Resp_SuppDppInit = 517; + Resp_SuppDppDeinit = 518; + Resp_SuppDppBootstrapGen = 519; + Resp_SuppDppStartListen = 520; + Resp_SuppDppStopListen = 521; - //Resp_GetSoftAPConfig = 521; //Resp_SetSoftAPVendorSpecificIE = 522; //Resp_StartSoftAP = 523; //Resp_GetSoftAPConnectedSTAList = 524; @@ -633,9 +389,18 @@ enum RpcId { Event_StaItwtSuspend = 780; Event_StaItwtProbe = 781; + // Supplicant DPP Events received by dpp callback on host + Event_SuppDppUriReady = 782; + Event_SuppDppCfgRecvd = 783; + Event_SuppDppFail = 784; + // Wifi DPP Events + Event_WifiDppUriReady = 785; + Event_WifiDppCfgRecvd = 786; + Event_WifiDppFail = 787; + /* Add new control path command notification before Event_Max * and update Event_Max */ - Event_Max = 782; + Event_Max = 788; } message wifi_init_config { @@ -706,11 +471,11 @@ message wifi_scan_config { } message wifi_he_ap_info { - //uint8_t bss_color:6; /**< an unsigned integer whose value is the BSS Color of the BSS corresponding to the AP */ - //uint8_t partial_bss_color:1; /**< indicate if an AID assignment rule based on the BSS color */ - //uint8_t bss_color_disabled:1; /**< indicate if the use of BSS color is disabled */ - uint32 bitmask = 1; /* Manually have to parse for above bits */ - uint32 bssid_index = 2; /**< in M-BSSID set, identifies the nontransmitted BSSID */ + //uint8_t bss_color:6; /**< an unsigned integer whose value is the BSS Color of the BSS corresponding to the AP */ + //uint8_t partial_bss_color:1; /**< indicate if an AID assignment rule based on the BSS color */ + //uint8_t bss_color_disabled:1; /**< indicate if the use of BSS color is disabled */ + uint32 bitmask = 1; /* Manually have to parse for above bits */ + uint32 bssid_index = 2; /**< in M-BSSID set, identifies the nontransmitted BSSID */ } message wifi_ap_record { @@ -751,7 +516,7 @@ message wifi_scan_threshold { Note: Incase this value is not set and password is set as per WPA2 standards(password len >= 8), it will be defaulted to WPA2 and device won't connect to deprecated WEP/WPA networks. Please set authmode threshold as WIFI_AUTH_WEP/WIFI_AUTH_WPA_PSK to connect to WEP/WPA networks */ - uint32 rssi_5g_adjustment = 3; /**< The RSSI value of the 5G AP is within the rssi_5g_adjustment range compared to the 2G AP, the 5G AP will be given priority for connection. */ + uint32 rssi_5g_adjustment = 3; /**< The RSSI value of the 5G AP is within the rssi_5g_adjustment range compared to the 2G AP, the 5G AP will be given priority for connection. */ } message wifi_pmf_config { @@ -760,8 +525,8 @@ message wifi_pmf_config { } message wifi_bss_max_idle_config { - uint32 period = 1; /**< Sets BSS Max idle period (1 Unit = 1000TUs OR 1.024 Seconds). If there are no frames for this period from a STA, SoftAP will disassociate due to inactivity. Setting it to 0 disables the feature */ - bool protected_keep_alive = 2; /**< Requires clients to use protected keep alive frames for BSS Max Idle period */ + uint32 period = 1; /**< Sets BSS Max idle period (1 Unit = 1000TUs OR 1.024 Seconds). If there are no frames for this period from a STA, SoftAP will disassociate due to inactivity. Setting it to 0 disables the feature */ + bool protected_keep_alive = 2; /**< Requires clients to use protected keep alive frames for BSS Max Idle period */ } message wifi_ap_config { @@ -779,12 +544,12 @@ message wifi_ap_config { bool ftm_responder = 10; /**< Enable FTM Responder mode */ wifi_pmf_config pmf_cfg = 11; /**< Configuration for Protected Management Frame */ int32 sae_pwe_h2e = 12; /**< Configuration for SAE PWE derivation method */ - uint32 csa_count = 13; /**< Channel Switch Announcement Count. Notify the station that the channel will switch after the csa_count beacon intervals. Default value: 3 */ - uint32 dtim_period = 14; /**< Dtim period of soft-AP. Range: 1 ~ 10. Default value: 1 */ - uint32 transition_disable = 15; /**< Whether to enable transition disable feature */ - uint32 sae_ext = 16; /**< Enable SAE EXT feature. SOC_GCMP_SUPPORT is required for this feature. */ - wifi_bss_max_idle_config bss_max_idle_cfg = 17; /**< Configuration for bss max idle, effective if CONFIG_WIFI_BSS_MAX_IDLE_SUPPORT is enabled */ - uint32 gtk_rekey_interval = 18; /**< GTK rekeying interval in seconds. If set to 0, GTK rekeying is disabled. Range: 60 ~ 65535 including 0. */ + uint32 csa_count = 13; /**< Channel Switch Announcement Count. Notify the station that the channel will switch after the csa_count beacon intervals. Default value: 3 */ + uint32 dtim_period = 14; /**< Dtim period of soft-AP. Range: 1 ~ 10. Default value: 1 */ + uint32 transition_disable = 15; /**< Whether to enable transition disable feature */ + uint32 sae_ext = 16; /**< Enable SAE EXT feature. SOC_GCMP_SUPPORT is required for this feature. */ + wifi_bss_max_idle_config bss_max_idle_cfg = 17; /**< Configuration for bss max idle, effective if CONFIG_WIFI_BSS_MAX_IDLE_SUPPORT is enabled */ + uint32 gtk_rekey_interval = 18; /**< GTK rekeying interval in seconds. If set to 0, GTK rekeying is disabled. Range: 60 ~ 65535 including 0. */ } message wifi_sta_config { @@ -814,20 +579,20 @@ Units: AP beacon intervals. Defaults to 3 if set to 0. */ uint32 failure_retry_cnt = 13; /**< Number of connection retries station will do before moving to next AP. scan_method should be set as WIFI_ALL_CHANNEL_SCAN to use this config. Note: Enabling this may cause connection time to increase incase best AP doesn't behave properly. */ - //uint32_t he_dcm_set:1; /**< Whether DCM max.constellation for transmission and reception is set. */ - //uint32_t he_dcm_max_constellation_tx:2; /**< Indicate the max.constellation for DCM in TB PPDU the STA supported. 0: not supported. 1: BPSK, 2: QPSK, 3: 16-QAM. The default value is 3. */ - //uint32_t he_dcm_max_constellation_rx:2; /**< Indicate the max.constellation for DCM in both Data field and HE-SIG-B field the STA supported. 0: not supported. 1: BPSK, 2: QPSK, 3: 16-QAM. The default value is 3. */ - //uint32_t he_mcs9_enabled:1; /**< Whether to support HE-MCS 0 to 9. The default value is 0. */ - //uint32_t he_su_beamformee_disabled:1; /**< Whether to disable support for operation as an SU beamformee. */ - //uint32_t he_trig_su_bmforming_feedback_disabled:1; /**< Whether to disable support the transmission of SU feedback in an HE TB sounding sequence. */ - //uint32_t he_trig_mu_bmforming_partial_feedback_disabled:1; /**< Whether to disable support the transmission of partial-bandwidth MU feedback in an HE TB sounding sequence. */ - // uint32_t he_trig_cqi_feedback_disabled:1; /**< Whether to disable support the transmission of CQI feedback in an HE TB sounding sequence. */ - // uint32_t vht_su_beamformee_disabled: 1; /**< Whether to disable support for operation as an VHT SU beamformee. */ - // uint32_t vht_mu_beamformee_disabled: 1; /**< Whether to disable support for operation as an VHT MU beamformee. */ - // uint32_t vht_mcs8_enabled: 1; /**< Whether to support VHT-MCS8. The default value is 0. */ - // uint32_t he_reserved:19; /**< Reserved for future feature set */ - uint32 he_bitmask = 14; - bytes sae_h2e_identifier = 15; /**< Password identifier for H2E. this needs to be null terminated string. SAE_H2E_IDENTIFIER_LEN chars */ + //uint32_t he_dcm_set:1; /**< Whether DCM max.constellation for transmission and reception is set. */ + //uint32_t he_dcm_max_constellation_tx:2; /**< Indicate the max.constellation for DCM in TB PPDU the STA supported. 0: not supported. 1: BPSK, 2: QPSK, 3: 16-QAM. The default value is 3. */ + //uint32_t he_dcm_max_constellation_rx:2; /**< Indicate the max.constellation for DCM in both Data field and HE-SIG-B field the STA supported. 0: not supported. 1: BPSK, 2: QPSK, 3: 16-QAM. The default value is 3. */ + //uint32_t he_mcs9_enabled:1; /**< Whether to support HE-MCS 0 to 9. The default value is 0. */ + //uint32_t he_su_beamformee_disabled:1; /**< Whether to disable support for operation as an SU beamformee. */ + //uint32_t he_trig_su_bmforming_feedback_disabled:1; /**< Whether to disable support the transmission of SU feedback in an HE TB sounding sequence. */ + //uint32_t he_trig_mu_bmforming_partial_feedback_disabled:1; /**< Whether to disable support the transmission of partial-bandwidth MU feedback in an HE TB sounding sequence. */ + // uint32_t he_trig_cqi_feedback_disabled:1; /**< Whether to disable support the transmission of CQI feedback in an HE TB sounding sequence. */ + // uint32_t vht_su_beamformee_disabled: 1; /**< Whether to disable support for operation as an VHT SU beamformee. */ + // uint32_t vht_mu_beamformee_disabled: 1; /**< Whether to disable support for operation as an VHT MU beamformee. */ + // uint32_t vht_mcs8_enabled: 1; /**< Whether to support VHT-MCS8. The default value is 0. */ + // uint32_t he_reserved:19; /**< Reserved for future feature set */ + uint32 he_bitmask = 14; + bytes sae_h2e_identifier = 15; /**< Password identifier for H2E. this needs to be null terminated string. SAE_H2E_IDENTIFIER_LEN chars */ uint32 sae_pk_mode = 16; /**< Configuration for SAE-PK (Public Key) Authentication method */ } @@ -1068,14 +833,14 @@ message wifi_bandwidths { message wifi_itwt_setup_config { uint32 setup_cmd = 1; - // uint16_t trigger : 1; /**< 1: a trigger-enabled individual TWT, 0: a non-trigger-enabled individual TWT */ - // uint16_t flow_type : 1; /**< 0: an announced individual TWT, 1: an unannounced individual TWT */ - // uint16_t flow_id : 3; /**< When set up an individual TWT agreement, the flow id will be assigned by AP after a successful agreement setup. - // flow_id could be specified to a value in the range of [0, 7], but it might be changed by AP in the response. - // When change TWT parameters of the existing TWT agreement, flow_id should be an existing one. The value range is [0, 7]. */ - // uint16_t wake_invl_expn : 5; /**< Individual TWT Wake Interval Exponent. The value range is [0, 31]. */ - // uint16_t wake_duration_unit : 1; /**< Individual TWT Wake duration unit, 0: 256us 1: TU (TU = 1024us)*/ - // uint16_t reserved : 5; /**< bit: 11.15 reserved */ + // uint16_t trigger : 1; /**< 1: a trigger-enabled individual TWT, 0: a non-trigger-enabled individual TWT */ + // uint16_t flow_type : 1; /**< 0: an announced individual TWT, 1: an unannounced individual TWT */ + // uint16_t flow_id : 3; /**< When set up an individual TWT agreement, the flow id will be assigned by AP after a successful agreement setup. + // flow_id could be specified to a value in the range of [0, 7], but it might be changed by AP in the response. + // When change TWT parameters of the existing TWT agreement, flow_id should be an existing one. The value range is [0, 7]. */ + // uint16_t wake_invl_expn : 5; /**< Individual TWT Wake Interval Exponent. The value range is [0, 31]. */ + // uint16_t wake_duration_unit : 1; /**< Individual TWT Wake duration unit, 0: 256us 1: TU (TU = 1024us)*/ + // uint16_t reserved : 5; /**< bit: 11.15 reserved */ uint32 bitmask_1 = 2; uint32 min_wake_dura = 3; uint32 wake_invl_mant = 4; @@ -1084,8 +849,8 @@ message wifi_itwt_setup_config { } message wifi_twt_config { - bool post_wakeup_event = 1; /**< post twt wakeup event */ - bool twt_enable_keep_alive = 2; /**< twt enable send qos null to keep alive */ + bool post_wakeup_event = 1; /**< post twt wakeup event */ + bool twt_enable_keep_alive = 2; /**< twt enable send qos null to keep alive */ } /* internal supporting structures for Rpc */ @@ -1160,81 +925,6 @@ message Rpc_Resp_SetMacAddress { int32 resp = 1; } - -//message Rpc_Req_GetAPConfig { -//} -// -///* To be deprecated */ -//message Rpc_Resp_GetAPConfig { -// bytes ssid = 1; -// bytes bssid = 2; -// int32 rssi = 3; -// int32 chnl = 4; -// int32 sec_prot = 5; -// int32 resp = 6; -//} - -/* To be deprecated */ -//message Rpc_Req_ConnectAP { -// string ssid = 1; -// string pwd = 2; -// string bssid = 3; -// bool is_wpa3_supported = 4; -// int32 listen_interval = 5; -//} -// -//message Rpc_Resp_ConnectAP { -// int32 resp = 1; -// bytes mac = 2; -//} - -//message Rpc_Req_GetSoftAPConfig { -//} -// -//message Rpc_Resp_GetSoftAPConfig { -// bytes ssid = 1; -// bytes pwd = 2; -// int32 chnl = 3; -// int32 sec_prot = 4; -// int32 max_conn = 5; -// bool ssid_hidden = 6; -// int32 bw = 7; -// int32 resp = 8; -//} - -//message Rpc_Req_StartSoftAP { -// string ssid = 1; -// string pwd = 2; -// int32 chnl = 3; -// int32 sec_prot = 4; -// int32 max_conn = 5; -// bool ssid_hidden = 6; -// int32 bw = 7; -//} -// -//message Rpc_Resp_StartSoftAP { -// int32 resp = 1; -// bytes mac = 2; -//} - -//message Rpc_Req_ScanResult { -//} -// -//message Rpc_Resp_ScanResult { -// uint32 count = 1; -// repeated ScanResult entries = 2; -// int32 resp = 3; -//} - -//message Rpc_Req_SoftAPConnectedSTA { -//} -// -//message Rpc_Resp_SoftAPConnectedSTA { -// uint32 num = 1; -// repeated ConnectedSTAList stations = 2; -// int32 resp = 3; -//} - message Rpc_Req_OTABegin { } @@ -1257,25 +947,6 @@ message Rpc_Resp_OTAEnd { int32 resp = 1; } -//message Rpc_Req_VendorIEData { -// int32 element_id = 1; -// int32 length = 2; -// bytes vendor_oui = 3; -// int32 vendor_oui_type = 4; -// bytes payload = 5; -//} -// -//message Rpc_Req_SetSoftAPVendorSpecificIE { -// bool enable = 1; -// int32 type = 2; -// int32 idx = 3; -// Rpc_Req_VendorIEData vendor_ie_data = 4; -//} -// -//message Rpc_Resp_SetSoftAPVendorSpecificIE { -// int32 resp = 1; -//} - message Rpc_Req_WifiSetMaxTxPower { int32 power = 1; } @@ -1774,6 +1445,46 @@ message Rpc_Resp_GetDhcpDnsStatus { int32 resp = 10; } +message Rpc_Req_SuppDppInit { + bool cb = 1; // enables sending of Event_SuppDpp to host via callback +} + +message Rpc_Resp_SuppDppInit { + int32 resp = 1; +} + +message Rpc_Req_SuppDppDeinit { +} + +message Rpc_Resp_SuppDppDeinit { + int32 resp = 1; +} + +message Rpc_Req_SuppDppBootstrapGen { + bytes chan_list = 1; // DPP Bootstrapping listen channels separated by commas + int32 type = 2; // Bootstrap method type, only QR Code method is supported for now. + bytes key = 3; // (Optional) 32 byte Raw Private Key for generating a Bootstrapping Public Key + bytes info = 4; // (Optional) Ancillary Device Information like Serial Number +} + +message Rpc_Resp_SuppDppBootstrapGen { + int32 resp = 1; +} + +message Rpc_Req_SuppDppStartListen { +} + +message Rpc_Resp_SuppDppStartListen { + int32 resp = 1; +} + +message Rpc_Req_SuppDppStopListen { +} + +message Rpc_Resp_SuppDppStopListen { + int32 resp = 1; +} + /** Event structure **/ message Rpc_Event_WifiEventNoArgs { @@ -2055,6 +1766,37 @@ message Rpc_Req_EapSetEapMethods { message Rpc_Resp_EapSetEapMethods { int32 resp = 1; } + +message Rpc_Event_SuppDppUriReady { + int32 resp = 1; + bytes qrcode = 2; // QR Code to configure the enrollee +} + +message Rpc_Event_SuppDppCfgRecvd { + int32 resp = 1; + wifi_config cfg = 2; +} + +message Rpc_Event_SuppDppFail { + int32 resp = 1; + int32 reason = 2; // failure reason +} + +message Rpc_Event_WifiDppUriReady { + int32 resp = 1; + bytes qrcode = 2; // QR Code to configure the enrollee +} + +message Rpc_Event_WifiDppCfgRecvd { + int32 resp = 1; + wifi_config cfg = 2; +} + +message Rpc_Event_WifiDppFail { + int32 resp = 1; + int32 reason = 2; // failure reason +} + message Rpc { /* msg_type could be req, resp or Event */ RpcType msg_type = 1; @@ -2073,12 +1815,12 @@ message Rpc { Rpc_Req_GetMode req_get_wifi_mode = 259; Rpc_Req_SetMode req_set_wifi_mode = 260; - //Rpc_Req_ScanResult req_scan_ap_list = 261; - //Rpc_Req_GetAPConfig req_get_ap_config = 262; - //Rpc_Req_ConnectAP req_connect_ap = 263; - //Rpc_Req_GetStatus req_disconnect_ap = 264; + Rpc_Req_SuppDppInit req_supp_dpp_init = 261; + Rpc_Req_SuppDppDeinit req_supp_dpp_deinit = 262; + Rpc_Req_SuppDppBootstrapGen req_supp_dpp_bootstrap_gen = 263; + Rpc_Req_SuppDppStartListen req_supp_dpp_start_listen = 264; + Rpc_Req_SuppDppStopListen req_supp_dpp_stop_listen = 265; - //Rpc_Req_GetSoftAPConfig req_get_softap_config = 265; //Rpc_Req_SetSoftAPVendorSpecificIE req_set_softap_vendor_specific_ie = 266; //Rpc_Req_StartSoftAP req_start_softap = 267; //Rpc_Req_SoftAPConnectedSTA req_softap_connected_stas_list = 268; @@ -2162,6 +1904,7 @@ message Rpc { Rpc_Req_WifiStaItwtGetFlowIdStatus req_wifi_sta_itwt_get_flow_id_status = 358; Rpc_Req_WifiStaItwtSendProbeReq req_wifi_sta_itwt_send_probe_req = 359; Rpc_Req_WifiStaItwtSetTargetWakeTimeOffset req_wifi_sta_itwt_set_target_wake_time_offset = 360; + Rpc_Req_WifiStaEnterpriseEnable req_wifi_sta_enterprise_enable = 361; Rpc_Req_WifiStaEnterpriseDisable req_wifi_sta_enterprise_disable = 362; Rpc_Req_EapSetIdentity req_eap_set_identity = 363; @@ -2193,12 +1936,12 @@ message Rpc { Rpc_Resp_GetMode resp_get_wifi_mode = 515; Rpc_Resp_SetMode resp_set_wifi_mode = 516; - //Rpc_Resp_ScanResult resp_scan_ap_list = 517; - //Rpc_Resp_GetAPConfig resp_get_ap_config = 518; - //Rpc_Resp_ConnectAP resp_connect_ap = 519; - //Rpc_Resp_GetStatus resp_disconnect_ap = 520; + Rpc_Resp_SuppDppInit resp_supp_dpp_init = 517; + Rpc_Resp_SuppDppDeinit resp_supp_dpp_deinit = 518; + Rpc_Resp_SuppDppBootstrapGen resp_supp_dpp_bootstrap_gen = 519; + Rpc_Resp_SuppDppStartListen resp_supp_dpp_start_listen = 520; + Rpc_Resp_SuppDppStopListen resp_supp_dpp_stop_listen = 521; - //Rpc_Resp_GetSoftAPConfig resp_get_softap_config = 521; //Rpc_Resp_SetSoftAPVendorSpecificIE resp_set_softap_vendor_specific_ie = 522; //Rpc_Resp_StartSoftAP resp_start_softap = 523; //Rpc_Resp_SoftAPConnectedSTA resp_softap_connected_stas_list = 524; @@ -2319,73 +2062,11 @@ message Rpc { Rpc_Event_StaItwtTeardown event_sta_itwt_teardown = 779; Rpc_Event_StaItwtSuspend event_sta_itwt_suspend = 780; Rpc_Event_StaItwtProbe event_sta_itwt_probe = 781; + Rpc_Event_SuppDppUriReady event_supp_dpp_uri_ready = 782; + Rpc_Event_SuppDppCfgRecvd event_supp_dpp_cfg_recvd = 783; + Rpc_Event_SuppDppFail event_supp_dpp_fail = 784; + Rpc_Event_WifiDppUriReady event_wifi_dpp_uri_ready = 785; + Rpc_Event_WifiDppCfgRecvd event_wifi_dpp_cfg_recvd = 786; + Rpc_Event_WifiDppFail event_wifi_dpp_fail = 787; } } - - -//message req_w_set_config { -// int32 iface = 1; -// wifi_config cfg = 2; -//} -// -//message rsp_w_set_config { -// int32 resp = 1; -//} -// -//message req_w_get_config { -// int32 iface = 1; -//} -// -//message rsp_w_get_config { -// int32 resp = 1; -// wifi_config cfg = 2; -//} -// -//message req_w_start { -//} -// -//message rsp_w_start { -// int32 resp = 1; -//} -// -//message evt_w_sta_connected { -// int32 resp = 1; -//} -// -//message evt_w_sta_disconnected { -// int32 resp = 1; -//} -// -//message evt_w_sta_start { -// int32 resp = 1; -//} -// -//message evt_w_sta_stop { -// int32 resp = 1; -//} -// -//message evt_w_ready { -// int32 resp = 1; -//} - -//message { -// int32 resp = 1; -//} - - - - - - - -//message Rpc_Resp_GetMode { -// int32 mode = 1; -// int32 resp = 2; -//} -// -//message Rpc_Req_SetMode { -//} -// -//message Rpc_Resp_SetMode { -// int32 resp = 1; -//} diff --git a/docs/features.md b/docs/features.md new file mode 100644 index 00000000..61348077 --- /dev/null +++ b/docs/features.md @@ -0,0 +1,29 @@ +# Features Implmented in ESP-Hosted-MCU + +This page documents the features implemented by ESP-Hosted-MCU. + +## Wi-Fi + +1. **Station** (scan, connect to an AP) +2. **SoftAP** (configure, start, stop) +3. **SoftAP+Station** +4. (Optional) [**Network Split**](feature_network_split.md) for splitting network traffic support between the co-processor and the host +5. (Optional) **iTWT** (individual Target Wake Time) Wi-Fi 6 (802.11ax) feature that lets a station negotiate its own wake/sleep schedule with an iTWT supporting AP to reduce power consumption + - only works with co-processors that support iTWT like the ESP32-C6 and ESP32-C5 +6. (Optional) **Wi-Fi Enterprise** security mode for enhanced security in business environments +7. (Optional) **Wi-Fi Easy Connect (DPP)** to securely onboard devices by scanning a QR code (displayed by the host) without entering a Wi-Fi password + - requires a smartphone that supports Wi-Fi Easy Connect to scan the QR code and start the onboarding operation + - APIs added: + - `esp_supp_dpp_init` + - `esp_supp_dpp_deinit` + - `esp_supp_dpp_bootstrap_gen` + - `esp_supp_dpp_start_listen` + - `esp_supp_dpp_stop_listen` + +## Bluetooth + +1. **ESP-Hosted / UART HCI** support for ESP-Nimble and ESP-Bluedroid. See [Bluetooth Design](bluetooth_design.md) for more information + +## Miscelaneous + +1. (Optional) [**Host Power Save**](feature_host_power_save.md) to allow Host to go to sleep and be waken by co-processor diff --git a/examples/host_wifi_easy_connect_dpp_enrollee/CMakeLists.txt b/examples/host_wifi_easy_connect_dpp_enrollee/CMakeLists.txt new file mode 100644 index 00000000..f8ada180 --- /dev/null +++ b/examples/host_wifi_easy_connect_dpp_enrollee/CMakeLists.txt @@ -0,0 +1,6 @@ +# The following lines of boilerplate have to be in your project's CMakeLists +# in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.16) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +project(dpp-enrollee) diff --git a/examples/host_wifi_easy_connect_dpp_enrollee/README.md b/examples/host_wifi_easy_connect_dpp_enrollee/README.md new file mode 100644 index 00000000..c031f753 --- /dev/null +++ b/examples/host_wifi_easy_connect_dpp_enrollee/README.md @@ -0,0 +1,72 @@ +| Supported Hosts | ESP32-P4 | +|-----------------|----------| + +| Supported Co-processors | ESP32 | ESP32-C Series | ESP32-S Series | +|-------------------------|-------|----------------|----------------| + +# Device Provisioning Protocol (Enrollee) Example + +This example shows how to configure ESP devices as an enrollee using Device Provisioning Protocol(DPP) also known as Wi-Fi Easy Connect. + +DPP provides a simple and secure way to onboard ESP devices to a network. +We now support DPP in Responder-Enrollee mode with AKM types PSK and DPP. + +You need a Wi-Fi Easy Connect with Initiator mode capable device to make use of this example. Some Android 10+ devices have this capability. (Vendor specific) + +To run the example with an Android 10+ device follow below steps - +1. Compile and flash the example on ESP device, a QR code will appear on your console. +2. Connect your phone to the network, say named "Example-AP". +3. Now go to Settings->WiFi & Internet->Wi-Fi->Example-AP->Advanced->Add Device. +4. Scan QR Code using the scanner, which will make ESP device connect to Example-AP. + +Optional configuration available + +*Note:* +- QR Code should be displayed as dark on a white/light background to work properly. +- If displayed QR Code had line gaps, try switching to a new font or a different Terminal program. See below QR Code for checking beforehand. + +### Example output + +Here is an example of the console output. +``` +I (807) wifi:mode : sta (24:0a:c4:23:da:20) +I (807) wifi dpp-enrollee: Started listening on Channel 11 for DPP Authentication +I (1157) wifi dpp-enrollee: Scan below QR Code to configure the enrollee: + + + █▀▀▀▀▀█ ██▄▄▄█▄▀██▄▄█▄ ▀ ▀▄ █▄▄ █▀▀▀▀▀█ + █ ███ █ ██▀█▀ ▀▀██▀█▄█▀▄▀ ██▀▀█ ▄ █ ███ █ + █ ▀▀▀ █ ▄█▀▄▄ ▄▄▀ █▄▀ ▄ ▄ ▄▀▄ ██ █ ▀▀▀ █ + ▀▀▀▀▀▀▀ ▀ █▄▀ ▀ ▀▄▀▄▀▄▀ █ ▀ ▀▄█ ▀ ▀▀▀▀▀▀▀ + █▀ ▄██▀ ▄█ ▀█ ▄▀▄▄▄ ▀▀█▄ ▄▀█▄█▀▀▄▄▄▀▄██▀█ + █▄▀ ▄ ▀▄█▄ ▀▀█▀▀█ ▀▄ ▄█▀▀▀▀█▀▄▄▄ ██▄ ▄█ + ▀█▀█▀ ▀▀ ▀ ▄▀▄▀▀ ▄ ▄▀▀▀ █▄ ▄▄ ▀█▄▀▄ █ + ▀ ▀ ▀▀▀█▄ █▀▀ █▄▄▄ █▄ █▄▀ ██▄ ▄▄▀█▄▀ ▄█ + ▀██▀▄█▀▄ ▄█ ▀▄▀ █ ▄ ▄█▄▀▄▀▄▄▀▄ ▄▄▄▀▄▄ + ▀▀▄█▀█▄▀▀█▄ ▄▀ █▄ ▀█▄█▄▀ ▀█▄▄ ▄▀▄ █▄▀ █ + ▄▀▀ ▀█▀▀▀ ▄ ▀█▀▀▄ ▀ ▄▄█▄ █ ██▀▄▀▀▄▄▄▄█▀▄ + ▀ ███▀▀▄ ▄ ▄ ▀█▄▄▀█▀▀▀ ▀▀▄▄ ▀ █▄ ▄█ + █ ▀▄▄ ▀▀▀▀▄▀▀▀▄█▄▄ ▄▀▄▀ ▀▄▀▄▀█▀▀▄▀ ▄█▄▀ + ███ ▄▀▄▀▀▄▀▀█▀▀▄ ▀▄ ████ █▀▄█▄▄ ▀█▄ ▀▀ ▀ + ▄▀█▀▀▀▀█▀ ▄█▄▀▀ ▄ ▀█▀▀ ▀ ▄▀▀ ▀▄█ ▄ ▀ + █ ▀▀▀▄██▄█▀ ▀█▄█▄ ▀██▀▄▀▄▀ █▀ ▀ ▄▄▀█ ▄█ + ▀▀▀ ▀▀▀▀▄▄█▄▀█▄ ▄ ▄ ▀▀▀█▄▄▀▀▀ █▀▀▀██▀▀▄ + █▀▀▀▀▀█ ▄▄▀█▀ ▄█▄█▄▄█▄ ▀ ▀▀▀█▄ ▀█ ▀ █ ▀ █ + █ ███ █ ▀█▀ ▀█▀▀▄▄▀ ▀▄█▀▀ ██▀█▀▀▀█▀▄▄▄█ + █ ▀▀▀ █ ▄▀█ ▄ ▄ ▀█▄ ▀▄▀█ ▀▄██▄ ▀ ▄█ ▄▀▄█ + ▀▀▀▀▀▀▀ ▀ ▀ ▀ ▀ ▀▀▀ ▀▀▀▀▀ ▀ ▀ ▀ + +I (6357) wifi dpp-enrollee: DPP Authentication successful, connecting to AP : DigitalFortress +I (6477) wifi:new:<1,0>, old:<1,0>, ap:<255,255>, sta:<1,0>, prof:1 +I (7277) wifi:state: init -> auth (b0) +I (7277) wifi:state: auth -> assoc (0) +I (7287) wifi:state: assoc -> run (10) +I (7317) wifi:connected with DigitalFortress, aid = 4, channel 1, BW20, bssid = 04:d4:c4:5e:22:f0 +I (7317) wifi:security type: 3, phy: bgn, rssi: -60 +I (7427) wifi:pm start, type: 1 + +I (7427) wifi:AP's beacon interval = 102400 us, DTIM period = 1 +I (11617) esp_netif_handlers: sta ip: 192.168.1.216, mask: 255.255.255.0, gw: 192.168.1.1 +I (11617) wifi dpp-enrollee: got ip:192.168.1.216 +I (11617) wifi dpp-enrollee: connected to ap SSID:DigitalFortress password:password +``` diff --git a/examples/host_wifi_easy_connect_dpp_enrollee/main/CMakeLists.txt b/examples/host_wifi_easy_connect_dpp_enrollee/main/CMakeLists.txt new file mode 100644 index 00000000..97a762af --- /dev/null +++ b/examples/host_wifi_easy_connect_dpp_enrollee/main/CMakeLists.txt @@ -0,0 +1,2 @@ +idf_component_register(SRCS "dpp_enrollee_main.c" + INCLUDE_DIRS ".") diff --git a/examples/host_wifi_easy_connect_dpp_enrollee/main/Kconfig.projbuild b/examples/host_wifi_easy_connect_dpp_enrollee/main/Kconfig.projbuild new file mode 100644 index 00000000..90a0928e --- /dev/null +++ b/examples/host_wifi_easy_connect_dpp_enrollee/main/Kconfig.projbuild @@ -0,0 +1,17 @@ +menu "Example Configuration" + config ESP_DPP_LISTEN_CHANNEL_LIST + string "DPP Listen channel list" + default "6" + help + DPP Bootstrapping listen channels separated by commas. + + config ESP_DPP_BOOTSTRAPPING_KEY + string "Bootstrapping key" + help + 64 hex digits (or 32 bytes) of raw private key for DPP Bootstrapping. + + config ESP_DPP_DEVICE_INFO + string "Additional Device Info" + help + Additional ancillary information to be included in QR Code. +endmenu diff --git a/examples/host_wifi_easy_connect_dpp_enrollee/main/dpp_enrollee_main.c b/examples/host_wifi_easy_connect_dpp_enrollee/main/dpp_enrollee_main.c new file mode 100644 index 00000000..de06cd51 --- /dev/null +++ b/examples/host_wifi_easy_connect_dpp_enrollee/main/dpp_enrollee_main.c @@ -0,0 +1,268 @@ +/* + * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Unlicense OR CC0-1.0 + */ + +/* DPP Enrollee Example + + This example code is in the Public Domain (or CC0 licensed, at your option.) + + Unless required by applicable law or agreed to in writing, this + software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + CONDITIONS OF ANY KIND, either express or implied. +*/ +#include +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "freertos/event_groups.h" +#include "esp_system.h" +#include "esp_wifi.h" +#include "esp_event.h" +#include "esp_dpp.h" +#include "esp_log.h" +#include "nvs_flash.h" +#include "qrcode.h" +#include "esp_idf_version.h" + +/** for ESP-IDF v5.5.0 and above, DPP events come in as Wi-Fi Events + ** set EXAMPLE_DPP_USE_WIFI_EVENTS to 0 to use the older Supplicant + ** based DPP events + */ +#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 5, 0) +#define EXAMPLE_DPP_USE_WIFI_EVENTS 1 +#else +#define EXAMPLE_DPP_USE_WIFI_EVENTS 0 +#endif + +#ifdef CONFIG_ESP_DPP_LISTEN_CHANNEL_LIST +#define EXAMPLE_DPP_LISTEN_CHANNEL_LIST CONFIG_ESP_DPP_LISTEN_CHANNEL_LIST +#else +#define EXAMPLE_DPP_LISTEN_CHANNEL_LIST "6" +#endif + +#ifdef CONFIG_ESP_DPP_BOOTSTRAPPING_KEY +#define EXAMPLE_DPP_BOOTSTRAPPING_KEY CONFIG_ESP_DPP_BOOTSTRAPPING_KEY +#else +#define EXAMPLE_DPP_BOOTSTRAPPING_KEY 0 +#endif + +#ifdef CONFIG_ESP_DPP_DEVICE_INFO +#define EXAMPLE_DPP_DEVICE_INFO CONFIG_ESP_DPP_DEVICE_INFO +#else +#define EXAMPLE_DPP_DEVICE_INFO 0 +#endif + +#define CURVE_SEC256R1_PKEY_HEX_DIGITS 64 + +static const char *TAG = "wifi dpp-enrollee"; +wifi_config_t s_dpp_wifi_config; + +static int s_retry_num = 0; + +/* FreeRTOS event group to signal when we are connected*/ +static EventGroupHandle_t s_dpp_event_group; + +#define DPP_CONNECTED_BIT BIT0 +#define DPP_CONNECT_FAIL_BIT BIT1 +#define DPP_AUTH_FAIL_BIT BIT2 +#define WIFI_MAX_RETRY_NUM 10 + +static void event_handler(void *arg, esp_event_base_t event_base, + int32_t event_id, void *event_data) +{ + if (event_base == WIFI_EVENT) { + switch (event_id) { + case WIFI_EVENT_STA_START: + ESP_ERROR_CHECK(esp_supp_dpp_start_listen()); + ESP_LOGW(TAG, "Started listening for DPP Authentication"); + break; + case WIFI_EVENT_STA_DISCONNECTED: + if (s_retry_num < WIFI_MAX_RETRY_NUM) { + esp_wifi_connect(); + s_retry_num++; + ESP_LOGI(TAG, "retry to connect to the AP"); + } else { + xEventGroupSetBits(s_dpp_event_group, DPP_CONNECT_FAIL_BIT); + } + break; + case WIFI_EVENT_STA_CONNECTED: + ESP_LOGI(TAG, "Successfully connected to the AP ssid : %s ", s_dpp_wifi_config.sta.ssid); + break; +#if EXAMPLE_DPP_USE_WIFI_EVENTS + case WIFI_EVENT_DPP_URI_READY: + wifi_event_dpp_uri_ready_t *uri_data = event_data; + ESP_LOGW(TAG, "uri_data_len %d", uri_data->uri_data_len); + if (uri_data != NULL) { + esp_qrcode_config_t cfg = ESP_QRCODE_CONFIG_DEFAULT(); + + ESP_LOGI(TAG, "Scan below QR Code to configure the enrollee:"); + // delay a short while so printing the QR code isn't + // interrupted by messages from background tasks + vTaskDelay(500 / portTICK_PERIOD_MS); + esp_qrcode_generate(&cfg, (const char *)uri_data->uri); + } + break; + case WIFI_EVENT_DPP_CFG_RECVD: + wifi_event_dpp_config_received_t *config = event_data; + memcpy(&s_dpp_wifi_config, &config->wifi_cfg, sizeof(s_dpp_wifi_config)); + s_retry_num = 0; + esp_wifi_set_config(ESP_IF_WIFI_STA, &s_dpp_wifi_config); + esp_wifi_connect(); + break; + case WIFI_EVENT_DPP_FAILED: + wifi_event_dpp_failed_t *dpp_failure = event_data; + if (s_retry_num < 5) { + ESP_LOGI(TAG, "DPP Auth failed (Reason: %s), retry...", esp_err_to_name((int)dpp_failure->failure_reason)); + ESP_ERROR_CHECK(esp_supp_dpp_start_listen()); + s_retry_num++; + } else { + xEventGroupSetBits(s_dpp_event_group, DPP_AUTH_FAIL_BIT); + } + break; +#endif + default: + break; + } + } + if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) { + ip_event_got_ip_t *event = (ip_event_got_ip_t *) event_data; + ESP_LOGI(TAG, "got ip:" IPSTR, IP2STR(&event->ip_info.ip)); + s_retry_num = 0; + xEventGroupSetBits(s_dpp_event_group, DPP_CONNECTED_BIT); + } +} + +#if !EXAMPLE_DPP_USE_WIFI_EVENTS +void dpp_enrollee_event_cb(esp_supp_dpp_event_t event, void *data) +{ + switch (event) { + case ESP_SUPP_DPP_URI_READY: + if (data != NULL) { + esp_qrcode_config_t cfg = ESP_QRCODE_CONFIG_DEFAULT(); + ESP_LOGI(TAG, "Scan below QR Code to configure the enrollee:"); + // delay a short while so printing the QR code isn't + // interrupted by messages from background tasks + vTaskDelay(500 / portTICK_PERIOD_MS); + esp_qrcode_generate(&cfg, (const char *)data); + } + break; + case ESP_SUPP_DPP_CFG_RECVD: + memcpy(&s_dpp_wifi_config, data, sizeof(s_dpp_wifi_config)); + s_retry_num = 0; + esp_wifi_set_config(ESP_IF_WIFI_STA, &s_dpp_wifi_config); + esp_wifi_connect(); + break; + case ESP_SUPP_DPP_FAIL: + if (s_retry_num < 5) { + ESP_LOGI(TAG, "DPP Auth failed (Reason: %s), retry...", esp_err_to_name((int)data)); + ESP_ERROR_CHECK(esp_supp_dpp_start_listen()); + s_retry_num++; + } else { + xEventGroupSetBits(s_dpp_event_group, DPP_AUTH_FAIL_BIT); + } + break; + default: + break; + } +} +#endif // !EXAMPLE_DPP_USE_WIFI_EVENTS + +esp_err_t dpp_enrollee_bootstrap(void) +{ + esp_err_t ret; + size_t pkey_len = strlen(EXAMPLE_DPP_BOOTSTRAPPING_KEY); + char *key = NULL; + + if (pkey_len) { + /* Currently only NIST P-256 curve is supported, add prefix/postfix accordingly */ + char prefix[] = "30310201010420"; + char postfix[] = "a00a06082a8648ce3d030107"; + + if (pkey_len != CURVE_SEC256R1_PKEY_HEX_DIGITS) { + ESP_LOGI(TAG, "Invalid key length! Private key needs to be 32 bytes (or 64 hex digits) long"); + return ESP_FAIL; + } + + key = malloc(sizeof(prefix) + pkey_len + sizeof(postfix)); + if (!key) { + ESP_LOGI(TAG, "Failed to allocate for bootstrapping key"); + return ESP_ERR_NO_MEM; + } + sprintf(key, "%s%s%s", prefix, EXAMPLE_DPP_BOOTSTRAPPING_KEY, postfix); + } + + /* Currently only supported method is QR Code */ + ret = esp_supp_dpp_bootstrap_gen(EXAMPLE_DPP_LISTEN_CHANNEL_LIST, DPP_BOOTSTRAP_QR_CODE, + key, EXAMPLE_DPP_DEVICE_INFO); + + if (key) + free(key); + + return ret; +} + +void dpp_enrollee_init(void) +{ + s_dpp_event_group = xEventGroupCreate(); + + ESP_ERROR_CHECK(esp_netif_init()); + + ESP_ERROR_CHECK(esp_event_loop_create_default()); + esp_netif_create_default_wifi_sta(); + + ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &event_handler, NULL)); + ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &event_handler, NULL)); + + wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); + ESP_ERROR_CHECK(esp_wifi_init(&cfg)); + + ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA)); +#if EXAMPLE_DPP_USE_WIFI_EVENTS + ESP_ERROR_CHECK(esp_supp_dpp_init(NULL)); +#else + ESP_ERROR_CHECK(esp_supp_dpp_init(dpp_enrollee_event_cb)); +#endif + ESP_ERROR_CHECK(dpp_enrollee_bootstrap()); + ESP_ERROR_CHECK(esp_wifi_start()); + + /* Waiting until either the connection is established (WIFI_CONNECTED_BIT) or connection failed for the maximum + * number of re-tries (WIFI_FAIL_BIT). The bits are set by event_handler() (see above) */ + EventBits_t bits = xEventGroupWaitBits(s_dpp_event_group, + DPP_CONNECTED_BIT | DPP_CONNECT_FAIL_BIT | DPP_AUTH_FAIL_BIT, + pdFALSE, + pdFALSE, + portMAX_DELAY); + + /* xEventGroupWaitBits() returns the bits before the call returned, hence we can test which event actually + * happened. */ + if (bits & DPP_CONNECTED_BIT) { + ESP_LOGI(TAG, "connected to ap SSID:%s password:%s", + s_dpp_wifi_config.sta.ssid, s_dpp_wifi_config.sta.password); + } else if (bits & DPP_CONNECT_FAIL_BIT) { + ESP_LOGI(TAG, "Failed to connect to SSID:%s, password:%s", + s_dpp_wifi_config.sta.ssid, s_dpp_wifi_config.sta.password); + } else if (bits & DPP_AUTH_FAIL_BIT) { + ESP_LOGI(TAG, "DPP Authentication failed after %d retries", s_retry_num); + } else { + ESP_LOGE(TAG, "UNEXPECTED EVENT"); + } + + esp_supp_dpp_deinit(); + ESP_ERROR_CHECK(esp_event_handler_unregister(IP_EVENT, IP_EVENT_STA_GOT_IP, &event_handler)); + ESP_ERROR_CHECK(esp_event_handler_unregister(WIFI_EVENT, ESP_EVENT_ANY_ID, &event_handler)); + vEventGroupDelete(s_dpp_event_group); +} + +void app_main(void) +{ + //Initialize NVS + esp_err_t ret = nvs_flash_init(); + if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) { + ESP_ERROR_CHECK(nvs_flash_erase()); + ret = nvs_flash_init(); + } + ESP_ERROR_CHECK(ret); + + dpp_enrollee_init(); +} diff --git a/examples/host_wifi_easy_connect_dpp_enrollee/main/idf_component.yml b/examples/host_wifi_easy_connect_dpp_enrollee/main/idf_component.yml new file mode 100644 index 00000000..55d47b83 --- /dev/null +++ b/examples/host_wifi_easy_connect_dpp_enrollee/main/idf_component.yml @@ -0,0 +1,10 @@ +dependencies: + qrcode: "^0.1.0" + espressif/esp_wifi_remote: + version: "*" + rules: + - if: "target in [esp32p4, esp32h2]" + espressif/esp_hosted: + version: "*" + rules: + - if: "target in [esp32p4, esp32h2]" diff --git a/examples/host_wifi_easy_connect_dpp_enrollee/sdkconfig.defaults b/examples/host_wifi_easy_connect_dpp_enrollee/sdkconfig.defaults new file mode 100644 index 00000000..cc90041c --- /dev/null +++ b/examples/host_wifi_easy_connect_dpp_enrollee/sdkconfig.defaults @@ -0,0 +1,7 @@ +CONFIG_FREERTOS_HZ=1000 + +### don't use any saved Wi-Fi config on the co-processor +CONFIG_WIFI_RMT_NVS_ENABLED=n + +### enable DPP feature +CONFIG_ESP_HOSTED_ENABLE_DPP=y diff --git a/examples/host_wifi_easy_connect_dpp_enrollee/sdkconfig.defaults.esp32p4 b/examples/host_wifi_easy_connect_dpp_enrollee/sdkconfig.defaults.esp32p4 new file mode 100644 index 00000000..739c9a83 --- /dev/null +++ b/examples/host_wifi_easy_connect_dpp_enrollee/sdkconfig.defaults.esp32p4 @@ -0,0 +1,6 @@ +# +# ESP32-P4 specific +# + +CONFIG_SLAVE_IDF_TARGET_ESP32C6=y +CONFIG_ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD=y diff --git a/host/api/priv/esp_hosted_api_priv.h b/host/api/priv/esp_hosted_api_priv.h index a61678be..b51c0fcb 100644 --- a/host/api/priv/esp_hosted_api_priv.h +++ b/host/api/priv/esp_hosted_api_priv.h @@ -1,8 +1,8 @@ /* -* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD -* -* SPDX-License-Identifier: Apache-2.0 -*/ + * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ /* prevent recursive inclusion */ #ifndef __ESP_HOSTED_API_PRIV_H__ @@ -20,10 +20,15 @@ extern "C" { #include "esp_hosted_ota.h" #include "port_esp_hosted_host_wifi_config.h" + #if H_WIFI_ENTERPRISE_SUPPORT #include "esp_eap_client.h" #endif +#if H_DPP_SUPPORT +#include "esp_dpp.h" +#endif + /* Remote WiFi API Functions - Port/Implementation Specific */ esp_err_t esp_wifi_remote_init(const wifi_init_config_t *arg); esp_err_t esp_wifi_remote_deinit(void); @@ -124,6 +129,16 @@ esp_err_t esp_eap_client_remote_set_eap_methods(esp_eap_method_t methods); #endif #endif +#if H_DPP_SUPPORT +esp_err_t esp_supp_remote_dpp_init(esp_supp_dpp_event_cb_t evt_cb); +esp_err_t esp_supp_remote_dpp_deinit(void); +esp_err_t esp_supp_remote_dpp_bootstrap_gen(const char *chan_list, + esp_supp_dpp_bootstrap_t type, + const char *key, const char *info); +esp_err_t esp_supp_remote_dpp_start_listen(void); +esp_err_t esp_supp_remote_dpp_stop_listen(void); +#endif + #ifdef __cplusplus } #endif diff --git a/host/api/src/esp_hosted_api.c b/host/api/src/esp_hosted_api.c index bbf28943..1c107755 100644 --- a/host/api/src/esp_hosted_api.c +++ b/host/api/src/esp_hosted_api.c @@ -19,6 +19,10 @@ extern "C" { #include "rpc_wrap.h" #include "esp_log.h" +#if H_DPP_SUPPORT +#include "esp_dpp.h" +#endif + /** Macros **/ static const char *TAG="H_API"; @@ -536,6 +540,40 @@ esp_err_t esp_wifi_remote_get_bandwidths(wifi_interface_t ifx, wifi_bandwidths_t } #endif +#if H_DPP_SUPPORT +esp_err_t esp_supp_remote_dpp_init(esp_supp_dpp_event_cb_t evt_cb) +{ + check_transport_up(); + return rpc_supp_dpp_init(evt_cb); +} + +esp_err_t esp_supp_remote_dpp_deinit(void) +{ + check_transport_up(); + return rpc_supp_dpp_deinit(); +} + +esp_err_t esp_supp_remote_dpp_bootstrap_gen(const char *chan_list, + esp_supp_dpp_bootstrap_t type, + const char *key, const char *info) +{ + check_transport_up(); + return rpc_supp_dpp_bootstrap_gen(chan_list, type, key, info); +} + +esp_err_t esp_supp_remote_dpp_start_listen(void) +{ + check_transport_up(); + return rpc_supp_dpp_start_listen(); +} + +esp_err_t esp_supp_remote_dpp_stop_listen(void) +{ + check_transport_up(); + return rpc_supp_dpp_stop_listen(); +} +#endif + esp_err_t esp_hosted_get_coprocessor_fwversion(esp_hosted_coprocessor_fwver_t *ver_info) { check_transport_up(); diff --git a/host/api/src/esp_wifi_weak.c b/host/api/src/esp_wifi_weak.c index 336e0d85..c971672f 100644 --- a/host/api/src/esp_wifi_weak.c +++ b/host/api/src/esp_wifi_weak.c @@ -14,6 +14,10 @@ #include "port_esp_hosted_host_config.h" #include "port_esp_hosted_host_wifi_config.h" +#if H_DPP_SUPPORT +#include "esp_dpp.h" +#endif + H_WEAK_REF esp_err_t esp_wifi_init(const wifi_init_config_t *config) { return esp_wifi_remote_init(config); @@ -441,3 +445,35 @@ esp_err_t esp_eap_client_set_eap_methods(esp_eap_method_t methods) } #endif #endif + +#if H_DPP_SUPPORT +/** + * Weak version of esp_dpp API + */ +H_WEAK_REF esp_err_t esp_supp_dpp_init(esp_supp_dpp_event_cb_t evt_cb) +{ + return esp_supp_remote_dpp_init(evt_cb); +} + +H_WEAK_REF esp_err_t esp_supp_dpp_deinit(void) +{ + return esp_supp_remote_dpp_deinit(); +} + +H_WEAK_REF esp_err_t esp_supp_dpp_bootstrap_gen(const char *chan_list, + esp_supp_dpp_bootstrap_t type, + const char *key, const char *info) +{ + return esp_supp_remote_dpp_bootstrap_gen(chan_list, type, key, info); +} + +H_WEAK_REF esp_err_t esp_supp_dpp_start_listen(void) +{ + return esp_supp_remote_dpp_start_listen(); +} + +H_WEAK_REF esp_err_t esp_supp_dpp_stop_listen(void) +{ + return esp_supp_remote_dpp_stop_listen(); +} +#endif diff --git a/host/drivers/rpc/core/rpc_evt.c b/host/drivers/rpc/core/rpc_evt.c index 15f5651a..b833d5d6 100644 --- a/host/drivers/rpc/core/rpc_evt.c +++ b/host/drivers/rpc/core/rpc_evt.c @@ -5,6 +5,7 @@ */ #include "rpc_core.h" +#include "rpc_utils.h" #include "rpc_slave_if.h" #include "esp_hosted_transport.h" #include "port_esp_hosted_host_log.h" @@ -264,6 +265,74 @@ int rpc_parse_evt(Rpc *rpc_msg, ctrl_cmd_t *app_ntfy) g_h.funcs->_h_memcpy(p_a->dns_ip, p_c->dns_ip.data, p_c->dns_ip.len); break; +#if H_SUPP_DPP_SUPPORT + } + case RPC_ID__Event_SuppDppUriReady: { + RpcEventSuppDppUriReady *p_c = rpc_msg->event_supp_dpp_uri_ready; + supp_wifi_event_dpp_uri_ready_t *p_a = &app_ntfy->u.e_dpp_uri_ready; + app_ntfy->resp_event_status = rpc_msg->event_supp_dpp_uri_ready->resp; + + g_h.funcs->_h_memset(p_a->uri, 0, DPP_URI_LEN_MAX); + + p_a->uri_data_len = p_c->qrcode.len; + if (p_a->uri_data_len <= DPP_URI_LEN_MAX) { + g_h.funcs->_h_memcpy(p_a->uri, p_c->qrcode.data, p_a->uri_data_len); + } else { + ESP_LOGE(TAG, "Incoming URI is too long (over %d bytes). Increase Kconfig ESP_HOSTED_DPP_URI_LEN_MAX for proper operation", DPP_URI_LEN_MAX - 1); + p_a->uri_data_len = 0; + } + break; + } + case RPC_ID__Event_SuppDppCfgRecvd: { + RpcEventSuppDppCfgRecvd *p_c = rpc_msg->event_supp_dpp_cfg_recvd; + supp_wifi_event_dpp_config_received_t *p_a = &app_ntfy->u.e_dpp_config_received; + app_ntfy->resp_event_status = rpc_msg->event_supp_dpp_uri_ready->resp; + + rpc_copy_wifi_sta_config(&p_a->wifi_cfg.sta, p_c->cfg->sta); + break; + } + case RPC_ID__Event_SuppDppFail: { + RpcEventSuppDppFail *p_c = rpc_msg->event_supp_dpp_fail; + supp_wifi_event_dpp_failed_t *p_a = &app_ntfy->u.e_dpp_failed; + app_ntfy->resp_event_status = rpc_msg->event_supp_dpp_fail->resp; + + p_a->failure_reason = p_c->reason; + break; +#endif // H_SUPP_DPP_SUPPORT +#if H_WIFI_DPP_SUPPORT + } + case RPC_ID__Event_WifiDppUriReady: { + RpcEventWifiDppUriReady *p_c = rpc_msg->event_wifi_dpp_uri_ready; + supp_wifi_event_dpp_uri_ready_t *p_a = &app_ntfy->u.e_dpp_uri_ready; + app_ntfy->resp_event_status = rpc_msg->event_supp_dpp_uri_ready->resp; + + g_h.funcs->_h_memset(p_a->uri, 0, DPP_URI_LEN_MAX); + + p_a->uri_data_len = p_c->qrcode.len; + if (p_a->uri_data_len <= DPP_URI_LEN_MAX) { + g_h.funcs->_h_memcpy(p_a->uri, p_c->qrcode.data, p_a->uri_data_len); + } else { + ESP_LOGE(TAG, "Incoming URI is too long (over %d bytes). Increase Kconfig ESP_HOSTED_DPP_URI_LEN_MAX for proper operation", DPP_URI_LEN_MAX - 1); + p_a->uri_data_len = 0; + } + break; + } + case RPC_ID__Event_WifiDppCfgRecvd: { + RpcEventWifiDppCfgRecvd *p_c = rpc_msg->event_wifi_dpp_cfg_recvd; + supp_wifi_event_dpp_config_received_t *p_a = &app_ntfy->u.e_dpp_config_received; + app_ntfy->resp_event_status = rpc_msg->event_supp_dpp_uri_ready->resp; + + rpc_copy_wifi_sta_config(&p_a->wifi_cfg.sta, p_c->cfg->sta); + break; + } + case RPC_ID__Event_WifiDppFail: { + RpcEventWifiDppFail *p_c = rpc_msg->event_wifi_dpp_fail; + supp_wifi_event_dpp_failed_t *p_a = &app_ntfy->u.e_dpp_failed; + app_ntfy->resp_event_status = rpc_msg->event_supp_dpp_fail->resp; + + p_a->failure_reason = p_c->reason; + break; +#endif // H_WIFI_DPP_SUPPORT } default: { ESP_LOGE(TAG, "Invalid/unsupported event[%u] received\n",rpc_msg->msg_id); goto fail_parse_rpc_msg; diff --git a/host/drivers/rpc/core/rpc_req.c b/host/drivers/rpc/core/rpc_req.c index 0e3d22f0..6c3fa1d0 100644 --- a/host/drivers/rpc/core/rpc_req.c +++ b/host/drivers/rpc/core/rpc_req.c @@ -100,6 +100,11 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) case RPC_ID__Req_EapClearNewPassword: case RPC_ID__Req_EapClearCaCert: case RPC_ID__Req_EapClearCertificateAndKey: +#endif +#if H_DPP_SUPPORT + case RPC_ID__Req_SuppDppDeinit: + case RPC_ID__Req_SuppDppStartListen: + case RPC_ID__Req_SuppDppStopListen: #endif case RPC_ID__Req_WifiScanGetApRecord: { /* Intentional fallthrough & empty */ @@ -713,7 +718,7 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) } case RPC_ID__Req_EapSetDomainName: { RPC_ALLOC_ASSIGN(RpcReqEapSetDomainName, req_eap_set_domain_name, rpc__req__eap_set_domain_name__init); - + RPC_REQ_COPY_BYTES(req_payload->domain_name, (uint8_t *)app_req->u.eap_domain_name.domain_name, strlen(app_req->u.eap_domain_name.domain_name) + 1); break; #endif @@ -724,6 +729,37 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) req_payload->methods = app_req->u.methods; break; #endif +#endif +#if H_DPP_SUPPORT + } case RPC_ID__Req_SuppDppInit: { + RPC_ALLOC_ASSIGN(RpcReqSuppDppInit,req_supp_dpp_init, + rpc__req__supp_dpp_init__init); + req_payload->cb = app_req->u.dpp_enable_cb; + break; + } case RPC_ID__Req_SuppDppBootstrapGen: { + RPC_ALLOC_ASSIGN(RpcReqSuppDppBootstrapGen,req_supp_dpp_bootstrap_gen, + rpc__req__supp_dpp_bootstrap_gen__init); + int str_len; + RpcReqSuppDppBootstrapGen *p_c = req_payload; + rpc_supp_dpp_bootstrap_gen_t* p_a = &app_req->u.dpp_bootstrap_gen; + + p_c->type = p_a->type; + + // chan_list: copy terminating NULL + str_len = strlen(p_a->chan_list); + RPC_REQ_COPY_BYTES(p_c->chan_list, (uint8_t *)p_a->chan_list, str_len + 1); + + // key is a fixed length (if provided) + if (p_a->key) { + RPC_REQ_COPY_BYTES(p_c->key, (uint8_t *)p_a->key, DPP_BOOTSTRAP_GEN_KEY_LEN); + } + + // info: copy terminating NULL + if (p_a->info) { + str_len = strlen(p_a->info); + RPC_REQ_COPY_BYTES(p_c->info, (uint8_t *)p_a->info, str_len + 1); + } + break; #endif } default: { *failure_status = RPC_ERR_UNSUPPORTED_MSG; diff --git a/host/drivers/rpc/core/rpc_rsp.c b/host/drivers/rpc/core/rpc_rsp.c index e52f5392..c17a736c 100644 --- a/host/drivers/rpc/core/rpc_rsp.c +++ b/host/drivers/rpc/core/rpc_rsp.c @@ -5,6 +5,7 @@ */ #include "rpc_core.h" +#include "rpc_utils.h" #include "rpc_slave_if.h" #include "esp_hosted_transport.h" #include "esp_hosted_bitmasks.h" @@ -41,7 +42,6 @@ DEFINE_LOG_TAG(rpc_rsp); goto fail_parse_rpc_msg; \ } - #define RPC_RSP_COPY_BYTES(dst,src) { \ if (src.data && src.len) { \ g_h.funcs->_h_memcpy(dst, src.data, src.len); \ @@ -251,72 +251,7 @@ int rpc_parse_rsp(Rpc *rpc_msg, ctrl_cmd_t *app_resp) case WIFI_IF_STA: { wifi_sta_config_t * p_a_sta = &(app_resp->u.wifi_config.u.sta); WifiStaConfig * p_c_sta = rpc_msg->resp_wifi_get_config->cfg->sta; - RPC_RSP_COPY_BYTES(p_a_sta->ssid, p_c_sta->ssid); - RPC_RSP_COPY_BYTES(p_a_sta->password, p_c_sta->password); - p_a_sta->scan_method = p_c_sta->scan_method; - p_a_sta->bssid_set = p_c_sta->bssid_set; - RPC_RSP_COPY_BYTES(p_a_sta->bssid, p_c_sta->bssid); - p_a_sta->channel = p_c_sta->channel; - p_a_sta->listen_interval = p_c_sta->listen_interval; - p_a_sta->sort_method = p_c_sta->sort_method; - if (p_c_sta->threshold) { - p_a_sta->threshold.rssi = p_c_sta->threshold->rssi; - p_a_sta->threshold.authmode = p_c_sta->threshold->authmode; -#if H_PRESENT_IN_ESP_IDF_5_4_0 - p_a_sta->threshold.rssi_5g_adjustment = p_c_sta->threshold->rssi_5g_adjustment; -#endif - } - //p_a_sta->ssid_hidden = p_c_sta->ssid_hidden; - //p_a_sta->max_connections = p_c_sta->max_connections; - if (p_c_sta->pmf_cfg) { - p_a_sta->pmf_cfg.capable = p_c_sta->pmf_cfg->capable; - p_a_sta->pmf_cfg.required = p_c_sta->pmf_cfg->required; - } - p_a_sta->rm_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_rm_enabled, p_c_sta->bitmask); - p_a_sta->btm_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_btm_enabled, p_c_sta->bitmask); - p_a_sta->mbo_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_mbo_enabled, p_c_sta->bitmask); - p_a_sta->ft_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_ft_enabled, p_c_sta->bitmask); - p_a_sta->owe_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_owe_enabled, p_c_sta->bitmask); - p_a_sta->transition_disable = H_GET_BIT(WIFI_STA_CONFIG_1_transition_disable, p_c_sta->bitmask); - -#if H_DECODE_WIFI_RESERVED_FIELD - #if H_WIFI_NEW_RESERVED_FIELD_NAMES - p_a_sta->reserved1 = WIFI_STA_CONFIG_1_GET_RESERVED_VAL(p_c_sta->bitmask); - #else - p_a_sta->reserved = WIFI_STA_CONFIG_1_GET_RESERVED_VAL(p_c_sta->bitmask); - #endif -#endif - - p_a_sta->sae_pwe_h2e = p_c_sta->sae_pwe_h2e; - p_a_sta->sae_pk_mode = p_c_sta->sae_pk_mode; - p_a_sta->failure_retry_cnt = p_c_sta->failure_retry_cnt; - - p_a_sta->he_dcm_set = H_GET_BIT(WIFI_STA_CONFIG_2_he_dcm_set_BIT, p_c_sta->he_bitmask); - - // WIFI_HE_STA_CONFIG_he_dcm_max_constellation_tx is two bits wide - p_a_sta->he_dcm_max_constellation_tx = (p_c_sta->he_bitmask >> WIFI_STA_CONFIG_2_he_dcm_max_constellation_tx_BITS) & 0x03; - // WIFI_HE_STA_CONFIG_he_dcm_max_constellation_rx is two bits wide - p_a_sta->he_dcm_max_constellation_rx = (p_c_sta->he_bitmask >> WIFI_STA_CONFIG_2_he_dcm_max_constellation_rx_BITS) & 0x03; - p_a_sta->he_mcs9_enabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_mcs9_enabled_BIT, p_c_sta->he_bitmask); - p_a_sta->he_su_beamformee_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_su_beamformee_disabled_BIT, p_c_sta->he_bitmask); - p_a_sta->he_trig_su_bmforming_feedback_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_trig_su_bmforming_feedback_disabled_BIT, p_c_sta->bitmask); - p_a_sta->he_trig_mu_bmforming_partial_feedback_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_trig_mu_bmforming_partial_feedback_disabled_BIT, p_c_sta->bitmask); - p_a_sta->he_trig_cqi_feedback_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_trig_cqi_feedback_disabled_BIT, p_c_sta->bitmask); - -#if H_PRESENT_IN_ESP_IDF_5_5_0 - p_a_sta->vht_su_beamformee_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_vht_su_beamformee_disabled, p_c_sta->he_bitmask); - p_a_sta->vht_mu_beamformee_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_vht_mu_beamformee_disabled, p_c_sta->he_bitmask); - p_a_sta->vht_mcs8_enabled = H_GET_BIT(WIFI_STA_CONFIG_2_vht_mcs8_enabled, p_c_sta->he_bitmask); -#endif - -#if H_DECODE_WIFI_RESERVED_FIELD - #if H_WIFI_NEW_RESERVED_FIELD_NAMES - p_a_sta->reserved2 = WIFI_STA_CONFIG_2_GET_RESERVED_VAL(p_c_sta->he_bitmask); - #else - p_a_sta->he_reserved = WIFI_STA_CONFIG_2_GET_RESERVED_VAL(p_c_sta->he_bitmask); - #endif -#endif - + rpc_copy_wifi_sta_config(p_a_sta, p_c_sta); break; } case WIFI_IF_AP: { @@ -779,6 +714,28 @@ int rpc_parse_rsp(Rpc *rpc_msg, ctrl_cmd_t *app_resp) RPC_FAIL_ON_NULL(resp_eap_set_eap_methods); RPC_ERR_IN_RESP(resp_eap_set_eap_methods); break; +#endif +#if H_DPP_SUPPORT + } case RPC_ID__Resp_SuppDppInit: { + RPC_FAIL_ON_NULL(resp_supp_dpp_init); + RPC_ERR_IN_RESP(resp_supp_dpp_init); + break; + } case RPC_ID__Resp_SuppDppDeinit: { + RPC_FAIL_ON_NULL(resp_supp_dpp_deinit); + RPC_ERR_IN_RESP(resp_supp_dpp_deinit); + break; + } case RPC_ID__Resp_SuppDppBootstrapGen: { + RPC_FAIL_ON_NULL(resp_supp_dpp_bootstrap_gen); + RPC_ERR_IN_RESP(resp_supp_dpp_bootstrap_gen); + break; + } case RPC_ID__Resp_SuppDppStartListen: { + RPC_FAIL_ON_NULL(resp_supp_dpp_start_listen); + RPC_ERR_IN_RESP(resp_supp_dpp_start_listen); + break; + } case RPC_ID__Resp_SuppDppStopListen: { + RPC_FAIL_ON_NULL(resp_supp_dpp_stop_listen); + RPC_ERR_IN_RESP(resp_supp_dpp_stop_listen); + break; #endif } default: { ESP_LOGE(TAG, "Unsupported rpc Resp[%u]", rpc_msg->msg_id); diff --git a/host/drivers/rpc/core/rpc_utils.c b/host/drivers/rpc/core/rpc_utils.c new file mode 100644 index 00000000..93237cf2 --- /dev/null +++ b/host/drivers/rpc/core/rpc_utils.c @@ -0,0 +1,97 @@ +/* + * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "rpc_utils.h" +#include "rpc_core.h" +#include "esp_hosted_bitmasks.h" +#include "esp_hosted_os_abstraction.h" + +#include "port_esp_hosted_host_wifi_config.h" +#include "port_esp_hosted_host_log.h" + +#include "esp_log.h" +DEFINE_LOG_TAG(rpc_utils); + +#define RPC_UTILS_COPY_BYTES(dst,src) { \ + if (src.data && src.len) { \ + g_h.funcs->_h_memcpy(dst, src.data, src.len); \ + } \ +} + +esp_err_t rpc_copy_wifi_sta_config(wifi_sta_config_t *dst, WifiStaConfig *src) +{ + wifi_sta_config_t * p_a_sta = dst; + WifiStaConfig * p_c_sta = src; + + ESP_LOGW(TAG, "Event: SSID %s", p_c_sta->ssid.data); + RPC_UTILS_COPY_BYTES(p_a_sta->ssid, p_c_sta->ssid); + RPC_UTILS_COPY_BYTES(p_a_sta->password, p_c_sta->password); + p_a_sta->scan_method = p_c_sta->scan_method; + p_a_sta->bssid_set = p_c_sta->bssid_set; + RPC_UTILS_COPY_BYTES(p_a_sta->bssid, p_c_sta->bssid); + p_a_sta->channel = p_c_sta->channel; + p_a_sta->listen_interval = p_c_sta->listen_interval; + p_a_sta->sort_method = p_c_sta->sort_method; + if (p_c_sta->threshold) { + p_a_sta->threshold.rssi = p_c_sta->threshold->rssi; + p_a_sta->threshold.authmode = p_c_sta->threshold->authmode; +#if H_PRESENT_IN_ESP_IDF_5_4_0 + p_a_sta->threshold.rssi_5g_adjustment = p_c_sta->threshold->rssi_5g_adjustment; +#endif + } + //p_a_sta->ssid_hidden = p_c_sta->ssid_hidden; + //p_a_sta->max_connections = p_c_sta->max_connections; + if (p_c_sta->pmf_cfg) { + p_a_sta->pmf_cfg.capable = p_c_sta->pmf_cfg->capable; + p_a_sta->pmf_cfg.required = p_c_sta->pmf_cfg->required; + } + p_a_sta->rm_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_rm_enabled, p_c_sta->bitmask); + p_a_sta->btm_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_btm_enabled, p_c_sta->bitmask); + p_a_sta->mbo_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_mbo_enabled, p_c_sta->bitmask); + p_a_sta->ft_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_ft_enabled, p_c_sta->bitmask); + p_a_sta->owe_enabled = H_GET_BIT(WIFI_STA_CONFIG_1_owe_enabled, p_c_sta->bitmask); + p_a_sta->transition_disable = H_GET_BIT(WIFI_STA_CONFIG_1_transition_disable, p_c_sta->bitmask); + +#if H_DECODE_WIFI_RESERVED_FIELD + #if H_WIFI_NEW_RESERVED_FIELD_NAMES + p_a_sta->reserved1 = WIFI_STA_CONFIG_1_GET_RESERVED_VAL(p_c_sta->bitmask); + #else + p_a_sta->reserved = WIFI_STA_CONFIG_1_GET_RESERVED_VAL(p_c_sta->bitmask); + #endif +#endif + + p_a_sta->sae_pwe_h2e = p_c_sta->sae_pwe_h2e; + p_a_sta->sae_pk_mode = p_c_sta->sae_pk_mode; + p_a_sta->failure_retry_cnt = p_c_sta->failure_retry_cnt; + + p_a_sta->he_dcm_set = H_GET_BIT(WIFI_STA_CONFIG_2_he_dcm_set_BIT, p_c_sta->he_bitmask); + + // WIFI_HE_STA_CONFIG_he_dcm_max_constellation_tx is two bits wide + p_a_sta->he_dcm_max_constellation_tx = (p_c_sta->he_bitmask >> WIFI_STA_CONFIG_2_he_dcm_max_constellation_tx_BITS) & 0x03; + // WIFI_HE_STA_CONFIG_he_dcm_max_constellation_rx is two bits wide + p_a_sta->he_dcm_max_constellation_rx = (p_c_sta->he_bitmask >> WIFI_STA_CONFIG_2_he_dcm_max_constellation_rx_BITS) & 0x03; + p_a_sta->he_mcs9_enabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_mcs9_enabled_BIT, p_c_sta->he_bitmask); + p_a_sta->he_su_beamformee_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_su_beamformee_disabled_BIT, p_c_sta->he_bitmask); + p_a_sta->he_trig_su_bmforming_feedback_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_trig_su_bmforming_feedback_disabled_BIT, p_c_sta->bitmask); + p_a_sta->he_trig_mu_bmforming_partial_feedback_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_trig_mu_bmforming_partial_feedback_disabled_BIT, p_c_sta->bitmask); + p_a_sta->he_trig_cqi_feedback_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_he_trig_cqi_feedback_disabled_BIT, p_c_sta->bitmask); + +#if H_PRESENT_IN_ESP_IDF_5_5_0 + p_a_sta->vht_su_beamformee_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_vht_su_beamformee_disabled, p_c_sta->he_bitmask); + p_a_sta->vht_mu_beamformee_disabled = H_GET_BIT(WIFI_STA_CONFIG_2_vht_mu_beamformee_disabled, p_c_sta->he_bitmask); + p_a_sta->vht_mcs8_enabled = H_GET_BIT(WIFI_STA_CONFIG_2_vht_mcs8_enabled, p_c_sta->he_bitmask); +#endif + +#if H_DECODE_WIFI_RESERVED_FIELD + #if H_WIFI_NEW_RESERVED_FIELD_NAMES + p_a_sta->reserved2 = WIFI_STA_CONFIG_2_GET_RESERVED_VAL(p_c_sta->he_bitmask); + #else + p_a_sta->he_reserved = WIFI_STA_CONFIG_2_GET_RESERVED_VAL(p_c_sta->he_bitmask); + #endif +#endif + + return ESP_FAIL; +} diff --git a/host/drivers/rpc/core/rpc_utils.h b/host/drivers/rpc/core/rpc_utils.h new file mode 100644 index 00000000..c50bf6a8 --- /dev/null +++ b/host/drivers/rpc/core/rpc_utils.h @@ -0,0 +1,19 @@ +/* + * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/* Common functions used by rpc code */ + +#ifndef __RPC_UTILS_H +#define __RPC_UTILS_H + +#include "esp_err.h" +#include "esp_wifi.h" + +#include "rpc_slave_if.h" + +esp_err_t rpc_copy_wifi_sta_config(wifi_sta_config_t *dst, WifiStaConfig *src); + +#endif diff --git a/host/drivers/rpc/slaveif/rpc_slave_if.c b/host/drivers/rpc/slaveif/rpc_slave_if.c index 242f12a5..7d4b5923 100644 --- a/host/drivers/rpc/slaveif/rpc_slave_if.c +++ b/host/drivers/rpc/slaveif/rpc_slave_if.c @@ -593,3 +593,34 @@ ctrl_cmd_t * rpc_slaveif_eap_set_eap_methods(ctrl_cmd_t *req) } #endif #endif +#if H_DPP_SUPPORT +ctrl_cmd_t * rpc_slaveif_supp_dpp_init(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_SuppDppInit); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_supp_dpp_deinit(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_SuppDppDeinit); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_supp_dpp_bootstrap_gen(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_SuppDppBootstrapGen); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_supp_dpp_start_listen(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_SuppDppStartListen); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_supp_dpp_stop_listen(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_SuppDppStopListen); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} +#endif diff --git a/host/drivers/rpc/slaveif/rpc_slave_if.h b/host/drivers/rpc/slaveif/rpc_slave_if.h index 52172df7..022b7010 100644 --- a/host/drivers/rpc/slaveif/rpc_slave_if.h +++ b/host/drivers/rpc/slaveif/rpc_slave_if.h @@ -17,6 +17,9 @@ #if H_WIFI_ENTERPRISE_SUPPORT #include "esp_eap_client.h" #endif +#if H_DPP_SUPPORT +#include "esp_dpp.h" +#endif #ifdef __cplusplus extern "C" { @@ -193,6 +196,34 @@ typedef struct { } rpc_wifi_itwt_suspend_t; #endif +#if H_DPP_SUPPORT +// current length of the optional bootstrap gen key length +// see documentation for `esp_supp_dpp_bootstrap_gen()` +#define DPP_BOOTSTRAP_GEN_KEY_LEN (32) + +#define DPP_URI_LEN_MAX (H_DPP_URI_LEN_MAX + 1) // include NULL at end of string + +typedef struct { + const char *chan_list; + esp_supp_dpp_bootstrap_t type; + const char *key; + const char *info; +} rpc_supp_dpp_bootstrap_gen_t; + +typedef struct { + uint32_t uri_data_len; /**< URI data length including null termination */ + char uri[DPP_URI_LEN_MAX]; /**< URI data */ +} supp_wifi_event_dpp_uri_ready_t; + +typedef struct { + wifi_config_t wifi_cfg; /**< Received WIFI config in DPP */ +} supp_wifi_event_dpp_config_received_t; + +typedef struct { + int failure_reason; /**< Failure reason */ +} supp_wifi_event_dpp_failed_t; +#endif + typedef struct { /* event */ uint32_t hb_num; @@ -353,6 +384,13 @@ typedef struct Ctrl_cmd_t { rpc_set_dhcp_dns_status_t slave_dhcp_dns_status; +#if H_DPP_SUPPORT + bool dpp_enable_cb; + + rpc_supp_dpp_bootstrap_gen_t dpp_bootstrap_gen; +#endif + + event_heartbeat_t e_heartbeat; event_wifi_simple_t e_wifi_simple; @@ -378,7 +416,7 @@ typedef struct Ctrl_cmd_t { #endif #if H_WIFI_ENTERPRISE_SUPPORT rpc_eap_identity_t eap_identity; - + rpc_eap_username_t eap_username; rpc_eap_password_t eap_password; @@ -406,6 +444,13 @@ typedef struct Ctrl_cmd_t { #if H_GOT_SET_EAP_METHODS_API esp_eap_method_t methods; #endif +#endif +#if H_DPP_SUPPORT + supp_wifi_event_dpp_uri_ready_t e_dpp_uri_ready; + + supp_wifi_event_dpp_config_received_t e_dpp_config_received; + + supp_wifi_event_dpp_failed_t e_dpp_failed; #endif }u; @@ -648,6 +693,13 @@ ctrl_cmd_t * rpc_slaveif_wifi_set_okc_support(ctrl_cmd_t *req); ctrl_cmd_t * rpc_slaveif_eap_set_domain_name(ctrl_cmd_t *req); ctrl_cmd_t * rpc_slaveif_eap_set_eap_methods(ctrl_cmd_t *req); #endif +#if H_DPP_SUPPORT +ctrl_cmd_t * rpc_slaveif_supp_dpp_init(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_supp_dpp_deinit(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_supp_dpp_bootstrap_gen(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_supp_dpp_start_listen(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_supp_dpp_stop_listen(ctrl_cmd_t *req); +#endif #ifdef __cplusplus } #endif diff --git a/host/drivers/rpc/wrap/rpc_wrap.c b/host/drivers/rpc/wrap/rpc_wrap.c index 30958d1b..4f76eedc 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.c +++ b/host/drivers/rpc/wrap/rpc_wrap.c @@ -18,6 +18,10 @@ #include "port_esp_hosted_host_log.h" #include "transport_drv.h" +#if H_DPP_SUPPORT +#include "esp_dpp.h" +#endif + static const char *TAG = "RPC_WRAP"; uint8_t restart_after_slave_ota = 0; @@ -34,7 +38,6 @@ uint8_t restart_after_slave_ota = 0; #define WIFI_INIT_RSP_TIMEOUT_SEC 10 #define OTA_FROM_WEB_URL 1 - /* Forward declarations */ static int rpc_wifi_connect_async(void); @@ -67,6 +70,27 @@ static ctrl_cmd_t * RPC_DEFAULT_REQ(void) #define NO 0 #define HEARTBEAT_DURATION_SEC 20 +#if H_SUPP_DPP_SUPPORT +// size of Callback queue used by the Supplicant DPP task +#define RPC_SUPP_CB_QUEUE_SIZE (5) + +typedef struct { + esp_supp_dpp_event_t dpp_event; + int dpp_reason; // to avoid doing malloc(sizeof(int)) as dpp_data + void * dpp_data; +} supp_cb_queue_item_t; + +static void * rpc_supp_cb_thread_hdl = NULL; +static queue_handle_t rpc_supp_cb_thread_q = NULL; + +static void rpc_supp_thread(void const *arg); +static esp_err_t rpc_supp_cb_thread_start(void); +static esp_err_t rpc_supp_cb_thread_stop(void); + +// evt_cb triggered when we receive a DPP callback event +static esp_supp_dpp_event_cb_t dpp_evt_cb = NULL; +#endif + typedef struct { int event; rpc_rsp_cb_t fun; @@ -153,8 +177,6 @@ static int rpc_event_callback(ctrl_cmd_t * app_event) wifi_event_sta_connected_t *p_e = &app_event->u.e_wifi_sta_connected; if (!netif_connected && netif_started) { - g_h.funcs->_h_event_wifi_post(WIFI_EVENT_STA_STOP, 0, 0, HOSTED_BLOCK_MAX); - g_h.funcs->_h_event_wifi_post(WIFI_EVENT_STA_START, 0, 0, HOSTED_BLOCK_MAX); g_h.funcs->_h_event_wifi_post(WIFI_EVENT_STA_CONNECTED, p_e, sizeof(wifi_event_sta_connected_t), HOSTED_BLOCK_MAX); netif_connected = true; @@ -193,6 +215,75 @@ static int rpc_event_callback(ctrl_cmd_t * app_event) p_e, sizeof(wifi_event_sta_itwt_probe_t), HOSTED_BLOCK_MAX); break; #endif // H_WIFI_HE_SUPPORT +#if H_WIFI_DPP_SUPPORT + } case RPC_ID__Event_WifiDppUriReady: { + ESP_LOGV(TAG, "ESP Event: DPP: URI Ready"); + supp_wifi_event_dpp_uri_ready_t *p_e = &app_event->u.e_dpp_uri_ready; + int len = p_e->uri_data_len; + g_h.funcs->_h_event_wifi_post(WIFI_EVENT_DPP_URI_READY, + p_e, sizeof(wifi_event_sta_itwt_probe_t) + len, HOSTED_BLOCK_MAX); + break; + } case RPC_ID__Event_WifiDppCfgRecvd: { + ESP_LOGV(TAG, "ESP Event: DPP: CFG Received"); + supp_wifi_event_dpp_config_received_t *p_e = &app_event->u.e_dpp_config_received; + g_h.funcs->_h_event_wifi_post(WIFI_EVENT_DPP_CFG_RECVD, + p_e, sizeof(wifi_event_dpp_config_received_t), HOSTED_BLOCK_MAX); + break; + } case RPC_ID__Event_WifiDppFail: { + ESP_LOGV(TAG, "ESP Event: DPP: Fail"); + supp_wifi_event_dpp_failed_t *p_e = &app_event->u.e_dpp_failed; + g_h.funcs->_h_event_wifi_post(WIFI_EVENT_DPP_FAILED, + p_e, sizeof(wifi_event_dpp_failed_t), HOSTED_BLOCK_MAX); + break; +#endif // H_WIFI_DPP_SUPPORT +#if H_SUPP_DPP_SUPPORT + // queue Supplicant DPP events on the dpp queue + } case RPC_ID__Event_SuppDppUriReady: { + if (rpc_supp_cb_thread_q) { + // copy the uri, push it to the queue + size_t len = strlen(app_event->u.e_dpp_uri_ready.uri) + 1; // include terminating NULL + supp_cb_queue_item_t item = { 0 }; + item.dpp_event = ESP_SUPP_DPP_URI_READY; + item.dpp_data = g_h.funcs->_h_malloc(len); + if (item.dpp_data) { + g_h.funcs->_h_memcpy(item.dpp_data, app_event->u.e_dpp_uri_ready.uri, len); + g_h.funcs->_h_queue_item(rpc_supp_cb_thread_q, &item, HOSTED_BLOCK_MAX); + } else { + ESP_LOGE(TAG, "malloc failed for dpp uri"); + } + } else { + ESP_LOGW(TAG, "no queue to push dpp uri: dropping event"); + } + break; + } case RPC_ID__Event_SuppDppCfgRecvd: { + if (rpc_supp_cb_thread_q) { + // copy the wifi config, push it to the queue + supp_cb_queue_item_t item = { 0 }; + item.dpp_event = ESP_SUPP_DPP_CFG_RECVD; + item.dpp_data = g_h.funcs->_h_malloc(sizeof(wifi_config_t)); + if (item.dpp_data) { + g_h.funcs->_h_memcpy(item.dpp_data, &app_event->u.e_dpp_config_received.wifi_cfg, + sizeof(wifi_config_t)); + g_h.funcs->_h_queue_item(rpc_supp_cb_thread_q, &item, HOSTED_BLOCK_MAX); + } else { + ESP_LOGE(TAG, "malloc failed for dpp wifi config"); + } + } else { + ESP_LOGW(TAG, "no queue to push dpp wifi config: dropping event"); + } + ESP_LOGW(TAG, "Finished Supplicant Event: Cfg Received"); + break; + } case RPC_ID__Event_SuppDppFail: { + if (rpc_supp_cb_thread_q) { + supp_cb_queue_item_t item = { 0 }; + item.dpp_event = ESP_SUPP_DPP_FAIL; + item.dpp_reason = app_event->u.e_dpp_failed.failure_reason; + g_h.funcs->_h_queue_item(rpc_supp_cb_thread_q, &item, HOSTED_BLOCK_MAX); + } else { + ESP_LOGW(TAG, "no queue to push dpp wifi config: dropping event"); + } + break; +#endif // H_SUPP_DPP_SUPPORT } case RPC_ID__Event_WifiEventNoArgs: { int wifi_event_id = app_event->u.e_wifi_simple.wifi_event_id; @@ -369,6 +460,20 @@ int rpc_register_event_callbacks(void) { RPC_ID__Event_StaItwtSuspend, rpc_event_callback }, { RPC_ID__Event_StaItwtProbe, rpc_event_callback }, #endif // H_WIFI_HE_SUPPORT +#if H_DPP_SUPPORT +#if H_SUPP_DPP_SUPPORT + // supp events get sent to the separate supp callback handler + { RPC_ID__Event_SuppDppUriReady, rpc_event_callback }, + { RPC_ID__Event_SuppDppCfgRecvd, rpc_event_callback }, + { RPC_ID__Event_SuppDppFail, rpc_event_callback }, +#endif +#if H_WIFI_DPP_SUPPORT + // wifi events are handled via wifi event handler + { RPC_ID__Event_WifiDppUriReady, rpc_event_callback }, + { RPC_ID__Event_WifiDppCfgRecvd, rpc_event_callback }, + { RPC_ID__Event_WifiDppFail, rpc_event_callback }, +#endif +#endif }; for (evt=0; evtresp_event_status == SUCCESS) { g_h.funcs->_h_memcpy(out_mac, resp->u.wifi_mac.mac, BSSID_BYTES_SIZE); - ESP_LOGI(TAG, "%s mac address is [" MACSTR "]", + ESP_LOGD(TAG, "%s mac address is [" MACSTR "]", mode==WIFI_IF_STA? "sta":"ap", MAC2STR(out_mac)); } return rpc_rsp_callback(resp); @@ -1932,3 +2044,199 @@ esp_err_t rpc_eap_client_set_eap_methods(esp_eap_method_t methods) } #endif #endif +#if H_DPP_SUPPORT +esp_err_t rpc_supp_dpp_init(esp_supp_dpp_event_cb_t evt_cb) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + // save the incoming callback + dpp_evt_cb = evt_cb; + +#if H_SUPP_DPP_SUPPORT + // start the cb thread, if required + if (dpp_evt_cb) { + if (ESP_OK != rpc_supp_cb_thread_start()) { + ESP_LOGE(TAG, "failed to start supp_cb_thread"); + } + } +#endif + + if (evt_cb) { + req->u.dpp_enable_cb = true; + } else { + req->u.dpp_enable_cb = false; + } + resp = rpc_slaveif_supp_dpp_init(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_supp_dpp_deinit(void) +{ +#if H_SUPP_DPP_SUPPORT + // stop the cb thread + rpc_supp_cb_thread_stop(); +#endif + + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + resp = rpc_slaveif_supp_dpp_deinit(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_supp_dpp_bootstrap_gen(const char *chan_list, + esp_supp_dpp_bootstrap_t type, + const char *key, const char *info) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + if (!chan_list) { + ESP_LOGE(TAG, "chan_list cannot be NULL"); + return ESP_FAIL; + } + req->u.dpp_bootstrap_gen.chan_list = chan_list; + req->u.dpp_bootstrap_gen.type = type; + req->u.dpp_bootstrap_gen.key = key; + req->u.dpp_bootstrap_gen.info = info; + + resp = rpc_slaveif_supp_dpp_bootstrap_gen(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_supp_dpp_start_listen(void) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + resp = rpc_slaveif_supp_dpp_start_listen(req); + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_supp_dpp_stop_listen(void) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + resp = rpc_slaveif_supp_dpp_stop_listen(req); + return rpc_rsp_callback(resp); +} + +#if H_SUPP_DPP_SUPPORT +// creates the suplicant dpp queue and starts the thread +static esp_err_t rpc_supp_cb_thread_start(void) +{ + // create the queue + if (!rpc_supp_cb_thread_q) { + rpc_supp_cb_thread_q = g_h.funcs->_h_create_queue(RPC_SUPP_CB_QUEUE_SIZE, + sizeof(supp_cb_queue_item_t)); + } + if (!rpc_supp_cb_thread_q) { + ESP_LOGE(TAG, "Failed to create rpc_supp_cb_thread_q"); + return ESP_FAIL; + } + + // create and start the thread + if (!rpc_supp_cb_thread_hdl) { + rpc_supp_cb_thread_hdl = g_h.funcs->_h_thread_create("rpc_supp_cb", RPC_TASK_PRIO, + RPC_TASK_STACK_SIZE, rpc_supp_thread, NULL); + } + if (!rpc_supp_cb_thread_hdl) { + ESP_LOGE(TAG, "Failed to create rpc_supp_cb_thread_hdl"); + // destroy the created queue also + g_h.funcs->_h_destroy_queue(rpc_supp_cb_thread_q); + rpc_supp_cb_thread_q = NULL; + return ESP_FAIL; + } + + return ESP_OK; +} + +// stops the thread and destroys the queue +static esp_err_t rpc_supp_cb_thread_stop(void) +{ + int res; + int i; + int num_items; + + if (rpc_supp_cb_thread_hdl) { + // stop the thread + res = g_h.funcs->_h_thread_cancel(rpc_supp_cb_thread_hdl); + if (!res) { + rpc_supp_cb_thread_hdl = NULL; + } else { + ESP_LOGE(TAG, "Failed to cancel rpc_supp_cb_thread_hdl"); + } + } else { + ESP_LOGD(TAG, "No rpc_supp_cb_thread_hdl to cancel"); + } + + if (rpc_supp_cb_thread_q) { + // remove all items from the queue + num_items = g_h.funcs->_h_queue_msg_waiting(rpc_supp_cb_thread_q); + for (i = 0; i < num_items; i++) { + supp_cb_queue_item_t item; + res = g_h.funcs->_h_dequeue_item(rpc_supp_cb_thread_q, &item, 0); + if (res) { + ESP_LOGE(TAG, "Error removing item from rpc_supp_cb_thread_q"); + continue; + } + if (item.dpp_data) { + g_h.funcs->_h_free(item.dpp_data); + } + } + + // destroy the queue + if (!g_h.funcs->_h_destroy_queue(rpc_supp_cb_thread_q)) { + rpc_supp_cb_thread_q = NULL; + } else { + ESP_LOGE(TAG, "Failed to destroy rpc_supp_cb_thread_q"); + } + } else { + ESP_LOGD(TAG, "No rpc_supp_cb_thread_q to delete"); + } + + return ESP_OK; +} + +static void rpc_supp_thread(void const *arg) +{ + int res; + supp_cb_queue_item_t item; + + while (1) { + // wait until there is an item to process + res = g_h.funcs->_h_dequeue_item(rpc_supp_cb_thread_q, &item, HOSTED_BLOCK_MAX); + if (res) { + ESP_LOGE(TAG, "Error getting item from rpc_supp_cb_thread_q"); + continue; + } + // triggger the callback with the data; + if (dpp_evt_cb) { + if (item.dpp_event == ESP_SUPP_DPP_FAIL) { + // user cb expected to cast provided data back to a int + // see https://github.com/espressif/esp-idf/blob/7912b04e6bdf8c9aeea88baff9e46794d04e4200/examples/wifi/wifi_easy_connect/dpp-enrollee/main/dpp_enrollee_main.c#L96 + dpp_evt_cb(item.dpp_event, (void *)item.dpp_reason); + } + else if (item.dpp_data) { + dpp_evt_cb(item.dpp_event, item.dpp_data); + } else { + ESP_LOGW(TAG, "unknown supplicant DPP event: dropping"); + } + } else { + ESP_LOGW(TAG, "no registed supplicant dpp cb: dropping dpp event"); + } + // free allocated memory + if (item.dpp_data) { + g_h.funcs->_h_free(item.dpp_data); + } + } +} +#endif // H_SUPP_DPP_SUPPORT +#endif // H_DPP_SUPPORT diff --git a/host/drivers/rpc/wrap/rpc_wrap.h b/host/drivers/rpc/wrap/rpc_wrap.h index 63c291ce..640cc693 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.h +++ b/host/drivers/rpc/wrap/rpc_wrap.h @@ -21,6 +21,9 @@ extern "C" { #if H_WIFI_ENTERPRISE_SUPPORT #include "esp_eap_client.h" #endif +#if H_DPP_SUPPORT +#include "esp_dpp.h" +#endif /** Exported variables **/ @@ -141,6 +144,15 @@ esp_err_t rpc_eap_client_set_domain_name(const char *domain_name); esp_err_t rpc_eap_client_set_eap_methods(esp_eap_method_t methods); #endif #endif +#if H_DPP_SUPPORT +esp_err_t rpc_supp_dpp_init(esp_supp_dpp_event_cb_t evt_cb); +esp_err_t rpc_supp_dpp_deinit(void); +esp_err_t rpc_supp_dpp_bootstrap_gen(const char *chan_list, + esp_supp_dpp_bootstrap_t type, + const char *key, const char *info); +esp_err_t rpc_supp_dpp_start_listen(void); +esp_err_t rpc_supp_dpp_stop_listen(void); +#endif #ifdef __cplusplus } diff --git a/host/esp_hosted.h b/host/esp_hosted.h index 1e20a41b..94560078 100644 --- a/host/esp_hosted.h +++ b/host/esp_hosted.h @@ -11,7 +11,6 @@ extern "C" { #endif -#include "esp_hosted_transport_config.h" #include "esp_hosted_api_types.h" #include "esp_hosted_host_fw_ver.h" #include "esp_hosted_ota.h" diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index 9e639bec..3a0eb50f 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 #define ESP_HOSTED_VERSION_MINOR_1 4 -#define ESP_HOSTED_VERSION_PATCH_1 2 +#define ESP_HOSTED_VERSION_PATCH_1 3 #endif diff --git a/host/port/esp/freertos/include/port_esp_hosted_host_wifi_config.h b/host/port/esp/freertos/include/port_esp_hosted_host_wifi_config.h index b806c966..b3272d27 100644 --- a/host/port/esp/freertos/include/port_esp_hosted_host_wifi_config.h +++ b/host/port/esp/freertos/include/port_esp_hosted_host_wifi_config.h @@ -95,5 +95,36 @@ #else #define H_GOT_EAP_OKC_SUPPORT 1 #endif +/** + * Wi-Fi Easy Connect (DPP) events is returned to user via + * Supplicant Callback or Wi-Fi DPP events, + * depending on IDF version + */ +// Supplicant Callback DPP Events: still available, but deprecated +#if CONFIG_ESP_HOSTED_ENABLE_DPP +#define H_SUPP_DPP_SUPPORT 1 +#else +#define H_SUPP_DPP_SUPPORT 0 +#endif + +// Wi-Fi DPP Events: only in IDF v5.5 and above +#if CONFIG_ESP_HOSTED_ENABLE_DPP && (ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 5, 0)) +#define H_WIFI_DPP_SUPPORT 1 +#else +#define H_WIFI_DPP_SUPPORT 0 +#endif + +// for generic DPP support +#if H_SUPP_DPP_SUPPORT || H_WIFI_DPP_SUPPORT +#define H_DPP_SUPPORT 1 +#else +#define H_DPP_SUPPORT 0 +#endif + +// this sets the maximum length of the URI we can receive to generate +// the QR code +#if H_DPP_SUPPORT +#define H_DPP_URI_LEN_MAX CONFIG_ESP_HOSTED_DPP_URI_LEN_MAX +#endif #endif /* __ESP_HOSTED_WIFI_CONFIG_H__ */ diff --git a/idf_component.yml b/idf_component.yml index 76ab6189..d76f51c9 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.4.2" +version: "2.4.3" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/CMakeLists.txt b/slave/CMakeLists.txt index 9b625cb5..9fb3561e 100644 --- a/slave/CMakeLists.txt +++ b/slave/CMakeLists.txt @@ -8,7 +8,8 @@ add_compile_options(-Wl,--wrap=esp_wifi_init) include($ENV{IDF_PATH}/tools/cmake/project.cmake) list(APPEND EXCLUDE_COMPONENTS lwip esp_netif) -set(COMPONENTS esp_timer esptool_py bootloader main nvs_flash esp_rom esp_wifi protocomm driver mqtt wpa_supplicant) +set(COMPONENTS esp_timer esptool_py bootloader main nvs_flash esp_rom esp_wifi protocomm driver mqtt wpa_supplicant wifi_provisioning) + #list(APPEND COMPONENTS esp_gdbstub) # incase gdbstub needed project(network_adapter) idf_build_set_property(COMPILE_OPTIONS "-fdiagnostics-color=always" APPEND) diff --git a/slave/main/Kconfig.projbuild b/slave/main/Kconfig.projbuild index d0228194..93cdd472 100644 --- a/slave/main/Kconfig.projbuild +++ b/slave/main/Kconfig.projbuild @@ -845,6 +845,12 @@ menu "Example Configuration" help Enable/disable sleeps while OTA operations + config ESP_WIFI_DPP_SUPPORT + bool "Enable Wi-Fi Easy Connect (DPP)" + default n + help + Enable Wi-Fi Easy Connect (DPP) support + menu "Hosted Debugging" config ESP_RAW_THROUGHPUT_TRANSPORT bool "RawTP: Transport level throughput debug test" diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index 0bf80bbe..bde099b3 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 #define PROJECT_VERSION_MINOR_1 4 -#define PROJECT_VERSION_PATCH_1 2 +#define PROJECT_VERSION_PATCH_1 3 #endif diff --git a/slave/main/slave_control.c b/slave/main/slave_control.c index e6ec2dd3..c4ed4fe5 100644 --- a/slave/main/slave_control.c +++ b/slave/main/slave_control.c @@ -20,6 +20,10 @@ #include "esp_hosted_log.h" #include "esp_hosted_coprocessor_fw_ver.h" +#if H_DPP_SUPPORT +#include "esp_dpp.h" +#endif + #if CONFIG_SOC_WIFI_HE_SUPPORT #include "esp_wifi_he.h" #endif @@ -843,6 +847,23 @@ static void event_handler_wifi(void* arg, esp_event_base_t event_base, ESP_LOGI(TAG, "Itwt Probe"); send_event_data_to_host(RPC_ID__Event_StaItwtProbe, event_data, sizeof(wifi_event_sta_itwt_probe_t)); +#endif +#if H_WIFI_DPP_SUPPORT + } else if (event_id == WIFI_EVENT_DPP_URI_READY) { + ESP_LOGW(TAG, "DPP URI Ready"); + wifi_event_dpp_uri_ready_t *uri = (wifi_event_dpp_uri_ready_t *)event_data; + int uri_len = uri->uri_data_len; + // include the length of the uri when sending event + send_event_data_to_host(RPC_ID__Event_WifiDppUriReady, + event_data, sizeof(wifi_event_dpp_uri_ready_t) + uri_len); + } else if (event_id == WIFI_EVENT_DPP_CFG_RECVD) { + ESP_LOGI(TAG, "DPP CFG Ready"); + send_event_data_to_host(RPC_ID__Event_WifiDppCfgRecvd, + event_data, sizeof(wifi_event_dpp_config_received_t)); + } else if (event_id == WIFI_EVENT_DPP_FAILED) { + ESP_LOGI(TAG, "DPP Failed"); + send_event_data_to_host(RPC_ID__Event_WifiDppFail, + event_data, sizeof(wifi_event_dpp_failed_t)); #endif } else { // ensure start events are only sent once during a state change @@ -1649,125 +1670,200 @@ static esp_err_t req_wifi_set_config(Rpc *req, Rpc *resp, void *priv_data) return ESP_OK; } -static esp_err_t req_wifi_get_config(Rpc *req, Rpc *resp, void *priv_data) -{ - wifi_interface_t iface; - wifi_config_t cfg = {0}; - - RPC_TEMPLATE(RpcRespWifiGetConfig, resp_wifi_get_config, - RpcReqWifiGetConfig, req_wifi_get_config, - rpc__resp__wifi_get_config__init); - - iface = req_payload->iface; - resp_payload->iface = iface; - RPC_RET_FAIL_IF(iface > WIFI_IF_AP); - RPC_RET_FAIL_IF(esp_wifi_get_config(iface, &cfg)); +typedef enum { + PAYLOAD_TYPE_RPC_RESP_WIFI_GET_CONFIG, + PAYLOAD_TYPE_RPC_EVENT_SUPP_DPP_GET_CONFIG, +#if H_WIFI_DPP_SUPPORT + PAYLOAD_TYPE_RPC_EVENT_WIFI_DPP_GET_CONFIG, +#endif +} rpc_payload_type_t; - RPC_ALLOC_ELEMENT(WifiConfig, resp_payload->cfg, wifi_config__init); - switch (iface) { +/* + * Copies the station config from ESP-IDF struct to RPC response/event. This is used in: + * - req_wifi_get_config + * - rpc_evt_supp + * - wifi_dpp_cfg_recvd + * + * `type` determines the type of payload the station config is copied to + */ +static esp_err_t copy_wifi_sta_cfg_to_rpc_struct(void *payload, rpc_payload_type_t type, + wifi_sta_config_t *sta_cfg) +{ + wifi_sta_config_t * p_a_sta = sta_cfg; + WifiStaConfig * p_c_sta = NULL; - case WIFI_IF_STA: { - wifi_sta_config_t * p_a_sta = &(cfg.sta); - resp_payload->cfg->u_case = WIFI_CONFIG__U_STA; + if (!payload) { + ESP_LOGE(TAG, "%s called with NULL payload", __func__); + return ESP_FAIL; + } + /** macros used to do allocation and copying depend on + ** resp_payload or ntfy_payload being defined and used, so do + ** them all here + **/ + switch (type) { + case PAYLOAD_TYPE_RPC_RESP_WIFI_GET_CONFIG: { + RpcRespWifiGetConfig *resp_payload = (RpcRespWifiGetConfig *)payload; RPC_ALLOC_ELEMENT(WifiStaConfig, resp_payload->cfg->sta, wifi_sta_config__init); - - WifiStaConfig * p_c_sta = resp_payload->cfg->sta; + p_c_sta = resp_payload->cfg->sta; RPC_RESP_COPY_STR(p_c_sta->ssid, p_a_sta->ssid, SSID_LENGTH); RPC_RESP_COPY_STR(p_c_sta->password, p_a_sta->password, PASSWORD_LENGTH); - p_c_sta->scan_method = p_a_sta->scan_method; - p_c_sta->bssid_set = p_a_sta->bssid_set; RPC_RESP_COPY_BYTES(p_c_sta->bssid, p_a_sta->bssid, BSSID_BYTES_SIZE); - p_c_sta->channel = p_a_sta->channel; - p_c_sta->listen_interval = p_a_sta->listen_interval; - p_c_sta->sort_method = p_a_sta->sort_method; RPC_ALLOC_ELEMENT(WifiScanThreshold, p_c_sta->threshold, wifi_scan_threshold__init); - p_c_sta->threshold->rssi = p_a_sta->threshold.rssi; - p_c_sta->threshold->authmode = p_a_sta->threshold.authmode; + RPC_ALLOC_ELEMENT(WifiPmfConfig, p_c_sta->pmf_cfg, wifi_pmf_config__init); + break; + } + case PAYLOAD_TYPE_RPC_EVENT_SUPP_DPP_GET_CONFIG: { + RpcEventSuppDppCfgRecvd *ntfy_payload = (RpcEventSuppDppCfgRecvd *)payload; + NTFY_ALLOC_ELEMENT(WifiStaConfig, ntfy_payload->cfg->sta, wifi_sta_config__init); + p_c_sta = ntfy_payload->cfg->sta; + NTFY_COPY_STR(p_c_sta->ssid, p_a_sta->ssid, SSID_LENGTH); + NTFY_COPY_STR(p_c_sta->password, p_a_sta->password, PASSWORD_LENGTH); + NTFY_COPY_BYTES(p_c_sta->bssid, p_a_sta->bssid, BSSID_BYTES_SIZE); + NTFY_ALLOC_ELEMENT(WifiScanThreshold, p_c_sta->threshold, wifi_scan_threshold__init); + NTFY_ALLOC_ELEMENT(WifiPmfConfig, p_c_sta->pmf_cfg, wifi_pmf_config__init); + break; + } +#if H_WIFI_DPP_SUPPORT + case PAYLOAD_TYPE_RPC_EVENT_WIFI_DPP_GET_CONFIG: { + RpcEventWifiDppCfgRecvd *ntfy_payload = (RpcEventWifiDppCfgRecvd *)payload; + NTFY_ALLOC_ELEMENT(WifiStaConfig, ntfy_payload->cfg->sta, wifi_sta_config__init); + p_c_sta = ntfy_payload->cfg->sta; + NTFY_COPY_STR(p_c_sta->ssid, p_a_sta->ssid, SSID_LENGTH); + NTFY_COPY_STR(p_c_sta->password, p_a_sta->password, PASSWORD_LENGTH); + NTFY_COPY_BYTES(p_c_sta->bssid, p_a_sta->bssid, BSSID_BYTES_SIZE); + NTFY_ALLOC_ELEMENT(WifiScanThreshold, p_c_sta->threshold, wifi_scan_threshold__init); + NTFY_ALLOC_ELEMENT(WifiPmfConfig, p_c_sta->pmf_cfg, wifi_pmf_config__init); + break; + } +#endif + } + + if (!p_c_sta) { + ESP_LOGE(TAG, "%s: p_c_sta still NULL", __func__); + return ESP_FAIL; + } + + // generic copying of data done here using only p_c_sta + p_c_sta->scan_method = p_a_sta->scan_method; + p_c_sta->bssid_set = p_a_sta->bssid_set; + p_c_sta->channel = p_a_sta->channel; + p_c_sta->listen_interval = p_a_sta->listen_interval; + p_c_sta->sort_method = p_a_sta->sort_method; + p_c_sta->threshold->rssi = p_a_sta->threshold.rssi; + p_c_sta->threshold->authmode = p_a_sta->threshold.authmode; #if H_PRESENT_IN_ESP_IDF_5_4_0 - p_c_sta->threshold->rssi_5g_adjustment = p_a_sta->threshold.rssi_5g_adjustment; + p_c_sta->threshold->rssi_5g_adjustment = p_a_sta->threshold.rssi_5g_adjustment; #endif - RPC_ALLOC_ELEMENT(WifiPmfConfig, p_c_sta->pmf_cfg, wifi_pmf_config__init); - p_c_sta->pmf_cfg->capable = p_a_sta->pmf_cfg.capable; - p_c_sta->pmf_cfg->required = p_a_sta->pmf_cfg.required; + p_c_sta->pmf_cfg->capable = p_a_sta->pmf_cfg.capable; + p_c_sta->pmf_cfg->required = p_a_sta->pmf_cfg.required; - if (p_a_sta->rm_enabled) - H_SET_BIT(WIFI_STA_CONFIG_1_rm_enabled, p_c_sta->bitmask); + if (p_a_sta->rm_enabled) + H_SET_BIT(WIFI_STA_CONFIG_1_rm_enabled, p_c_sta->bitmask); - if (p_a_sta->btm_enabled) - H_SET_BIT(WIFI_STA_CONFIG_1_btm_enabled, p_c_sta->bitmask); + if (p_a_sta->btm_enabled) + H_SET_BIT(WIFI_STA_CONFIG_1_btm_enabled, p_c_sta->bitmask); - if (p_a_sta->mbo_enabled) - H_SET_BIT(WIFI_STA_CONFIG_1_mbo_enabled, p_c_sta->bitmask); + if (p_a_sta->mbo_enabled) + H_SET_BIT(WIFI_STA_CONFIG_1_mbo_enabled, p_c_sta->bitmask); - if (p_a_sta->ft_enabled) - H_SET_BIT(WIFI_STA_CONFIG_1_ft_enabled, p_c_sta->bitmask); + if (p_a_sta->ft_enabled) + H_SET_BIT(WIFI_STA_CONFIG_1_ft_enabled, p_c_sta->bitmask); - if (p_a_sta->owe_enabled) - H_SET_BIT(WIFI_STA_CONFIG_1_owe_enabled, p_c_sta->bitmask); + if (p_a_sta->owe_enabled) + H_SET_BIT(WIFI_STA_CONFIG_1_owe_enabled, p_c_sta->bitmask); - if (p_a_sta->transition_disable) - H_SET_BIT(WIFI_STA_CONFIG_1_transition_disable, p_c_sta->bitmask); + if (p_a_sta->transition_disable) + H_SET_BIT(WIFI_STA_CONFIG_1_transition_disable, p_c_sta->bitmask); #if H_DECODE_WIFI_RESERVED_FIELD #if H_WIFI_NEW_RESERVED_FIELD_NAMES - WIFI_STA_CONFIG_1_SET_RESERVED_VAL(p_a_sta->reserved1, p_c_sta->bitmask); + WIFI_STA_CONFIG_1_SET_RESERVED_VAL(p_a_sta->reserved1, p_c_sta->bitmask); #else - WIFI_STA_CONFIG_1_SET_RESERVED_VAL(p_a_sta->reserved, p_c_sta->bitmask); + WIFI_STA_CONFIG_1_SET_RESERVED_VAL(p_a_sta->reserved, p_c_sta->bitmask); #endif #endif - p_c_sta->sae_pwe_h2e = p_a_sta->sae_pwe_h2e; - p_c_sta->sae_pk_mode = p_a_sta->sae_pk_mode; - p_c_sta->failure_retry_cnt = p_a_sta->failure_retry_cnt; + p_c_sta->sae_pwe_h2e = p_a_sta->sae_pwe_h2e; + p_c_sta->sae_pk_mode = p_a_sta->sae_pk_mode; + p_c_sta->failure_retry_cnt = p_a_sta->failure_retry_cnt; - /* HE field handling */ - if (p_a_sta->he_dcm_set) - H_SET_BIT(WIFI_STA_CONFIG_2_he_dcm_set_BIT, p_c_sta->he_bitmask); + /* HE field handling */ + if (p_a_sta->he_dcm_set) + H_SET_BIT(WIFI_STA_CONFIG_2_he_dcm_set_BIT, p_c_sta->he_bitmask); - /* WIFI_STA_CONFIG_2_he_dcm_max_constellation_tx is two bits wide */ - if (p_a_sta->he_dcm_max_constellation_tx & 0x03) { - p_c_sta->he_bitmask |= (p_a_sta->he_dcm_max_constellation_tx & 0x03) << WIFI_STA_CONFIG_2_he_dcm_max_constellation_tx_BITS; - } - /* WIFI_STA_CONFIG_2_he_dcm_max_constellation_rx is two bits wide */ - if (p_a_sta->he_dcm_max_constellation_rx & 0x03) { - p_c_sta->he_bitmask |= (p_a_sta->he_dcm_max_constellation_rx & 0x03) << WIFI_STA_CONFIG_2_he_dcm_max_constellation_rx_BITS; - } + /* WIFI_STA_CONFIG_2_he_dcm_max_constellation_tx is two bits wide */ + if (p_a_sta->he_dcm_max_constellation_tx & 0x03) { + p_c_sta->he_bitmask |= (p_a_sta->he_dcm_max_constellation_tx & 0x03) << WIFI_STA_CONFIG_2_he_dcm_max_constellation_tx_BITS; + } + /* WIFI_STA_CONFIG_2_he_dcm_max_constellation_rx is two bits wide */ + if (p_a_sta->he_dcm_max_constellation_rx & 0x03) { + p_c_sta->he_bitmask |= (p_a_sta->he_dcm_max_constellation_rx & 0x03) << WIFI_STA_CONFIG_2_he_dcm_max_constellation_rx_BITS; + } - if (p_a_sta->he_mcs9_enabled) - H_SET_BIT(WIFI_STA_CONFIG_2_he_mcs9_enabled_BIT, p_c_sta->he_bitmask); + if (p_a_sta->he_mcs9_enabled) + H_SET_BIT(WIFI_STA_CONFIG_2_he_mcs9_enabled_BIT, p_c_sta->he_bitmask); - if (p_a_sta->he_su_beamformee_disabled) - H_SET_BIT(WIFI_STA_CONFIG_2_he_su_beamformee_disabled_BIT, p_c_sta->he_bitmask); + if (p_a_sta->he_su_beamformee_disabled) + H_SET_BIT(WIFI_STA_CONFIG_2_he_su_beamformee_disabled_BIT, p_c_sta->he_bitmask); - if (p_a_sta->he_trig_su_bmforming_feedback_disabled) - H_SET_BIT(WIFI_STA_CONFIG_2_he_trig_su_bmforming_feedback_disabled_BIT, p_c_sta->he_bitmask); + if (p_a_sta->he_trig_su_bmforming_feedback_disabled) + H_SET_BIT(WIFI_STA_CONFIG_2_he_trig_su_bmforming_feedback_disabled_BIT, p_c_sta->he_bitmask); - if (p_a_sta->he_trig_mu_bmforming_partial_feedback_disabled) - H_SET_BIT(WIFI_STA_CONFIG_2_he_trig_mu_bmforming_partial_feedback_disabled_BIT, p_c_sta->he_bitmask); + if (p_a_sta->he_trig_mu_bmforming_partial_feedback_disabled) + H_SET_BIT(WIFI_STA_CONFIG_2_he_trig_mu_bmforming_partial_feedback_disabled_BIT, p_c_sta->he_bitmask); - if (p_a_sta->he_trig_cqi_feedback_disabled) - H_SET_BIT(WIFI_STA_CONFIG_2_he_trig_cqi_feedback_disabled_BIT, p_c_sta->he_bitmask); + if (p_a_sta->he_trig_cqi_feedback_disabled) + H_SET_BIT(WIFI_STA_CONFIG_2_he_trig_cqi_feedback_disabled_BIT, p_c_sta->he_bitmask); #if H_PRESENT_IN_ESP_IDF_5_5_0 - if (p_a_sta->vht_su_beamformee_disabled) - H_SET_BIT(WIFI_STA_CONFIG_2_vht_su_beamformee_disabled, p_c_sta->he_bitmask); + if (p_a_sta->vht_su_beamformee_disabled) + H_SET_BIT(WIFI_STA_CONFIG_2_vht_su_beamformee_disabled, p_c_sta->he_bitmask); - if (p_a_sta->vht_mu_beamformee_disabled) - H_SET_BIT(WIFI_STA_CONFIG_2_vht_mu_beamformee_disabled, p_c_sta->he_bitmask); + if (p_a_sta->vht_mu_beamformee_disabled) + H_SET_BIT(WIFI_STA_CONFIG_2_vht_mu_beamformee_disabled, p_c_sta->he_bitmask); - if (p_a_sta->vht_mcs8_enabled) - H_SET_BIT(WIFI_STA_CONFIG_2_vht_mcs8_enabled, p_c_sta->he_bitmask); + if (p_a_sta->vht_mcs8_enabled) + H_SET_BIT(WIFI_STA_CONFIG_2_vht_mcs8_enabled, p_c_sta->he_bitmask); #endif #if H_DECODE_WIFI_RESERVED_FIELD #if H_WIFI_NEW_RESERVED_FIELD_NAMES - WIFI_STA_CONFIG_2_SET_RESERVED_VAL(p_a_sta->reserved2, p_c_sta->he_bitmask); + WIFI_STA_CONFIG_2_SET_RESERVED_VAL(p_a_sta->reserved2, p_c_sta->he_bitmask); #else - WIFI_STA_CONFIG_2_SET_RESERVED_VAL(p_a_sta->he_reserved, p_c_sta->he_bitmask); + WIFI_STA_CONFIG_2_SET_RESERVED_VAL(p_a_sta->he_reserved, p_c_sta->he_bitmask); #endif #endif +err: + return ESP_OK; +} + +static esp_err_t req_wifi_get_config(Rpc *req, Rpc *resp, void *priv_data) +{ + wifi_interface_t iface; + wifi_config_t cfg = {0}; + + RPC_TEMPLATE(RpcRespWifiGetConfig, resp_wifi_get_config, + RpcReqWifiGetConfig, req_wifi_get_config, + rpc__resp__wifi_get_config__init); + + iface = req_payload->iface; + resp_payload->iface = iface; + RPC_RET_FAIL_IF(iface > WIFI_IF_AP); + RPC_RET_FAIL_IF(esp_wifi_get_config(iface, &cfg)); + + RPC_ALLOC_ELEMENT(WifiConfig, resp_payload->cfg, wifi_config__init); + switch (iface) { + + case WIFI_IF_STA: { + resp_payload->cfg->u_case = WIFI_CONFIG__U_STA; + esp_err_t res = copy_wifi_sta_cfg_to_rpc_struct(resp_payload, + PAYLOAD_TYPE_RPC_RESP_WIFI_GET_CONFIG, &cfg.sta); + if (res != ESP_OK) { + ESP_LOGE(TAG, "RPC_RESP: copy_wifi_sta_cfg_to_rpc_struct() FAILED"); + return res; + } break; } case WIFI_IF_AP: { @@ -3233,6 +3329,86 @@ static esp_err_t req_wifi_sta_itwt_set_target_wake_time_offset(Rpc *req, Rpc *re } #endif // CONFIG_SOC_WIFI_HE_SUPPORT +#if H_DPP_SUPPORT +void dpp_enrollee_event_cb(esp_supp_dpp_event_t event, void *data); + +static esp_err_t req_supp_dpp_init(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespSuppDppInit, resp_supp_dpp_init, + RpcReqSuppDppInit, req_supp_dpp_init, + rpc__resp__supp_dpp_init__init); + + if (req_payload->cb) { + // init with callback + ESP_LOGI(TAG, "dpp init with callback"); + RPC_RET_FAIL_IF(esp_supp_dpp_init(dpp_enrollee_event_cb)); + } else { + // init without callback + ESP_LOGI(TAG, "dpp init WITHOUT callback"); + RPC_RET_FAIL_IF(esp_supp_dpp_init(NULL)); + } + return ESP_OK; +} + +static esp_err_t req_supp_dpp_deinit(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE_SIMPLE(RpcRespSuppDppDeinit, resp_supp_dpp_deinit, + RpcReqSuppDppDeinit, req_supp_dpp_deinit, + rpc__resp__supp_dpp_deinit__init); + + RPC_RET_FAIL_IF(esp_supp_dpp_deinit()); + + return ESP_OK; +} + +static esp_err_t req_supp_dpp_bootstrap_gen(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespSuppDppBootstrapGen, resp_supp_dpp_bootstrap_gen, + RpcReqSuppDppBootstrapGen, req_supp_dpp_bootstrap_gen, + rpc__resp__supp_dpp_bootstrap_gen__init); + + const char *chan_list = NULL; + esp_supp_dpp_bootstrap_t type; + const char *key = NULL; + const char *info = NULL; + + chan_list = (const char *)req_payload->chan_list.data; + type = req_payload->type; + if (req_payload->key.len) { + key = (const char *)req_payload->key.data; + } + if (req_payload->info.len) { + info = (const char *)req_payload->info.data; + } + + RPC_RET_FAIL_IF(esp_supp_dpp_bootstrap_gen(chan_list, type, key, info)); + + return ESP_OK; +} + +static esp_err_t req_supp_dpp_start_listen(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE_SIMPLE(RpcRespSuppDppStartListen, resp_supp_dpp_start_listen, + RpcReqSuppDppStartListen, req_supp_dpp_start_listen, + rpc__resp__supp_dpp_start_listen__init); + + RPC_RET_FAIL_IF(esp_supp_dpp_start_listen()); + + return ESP_OK; +} + +static esp_err_t req_supp_dpp_stop_listen(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE_SIMPLE(RpcRespSuppDppStopListen, resp_supp_dpp_stop_listen, + RpcReqSuppDppStopListen, req_supp_dpp_stop_listen, + rpc__resp__supp_dpp_stop_listen__init); + + RPC_RET_FAIL_IF(esp_supp_dpp_stop_listen()); + + return ESP_OK; +} +#endif + static esp_rpc_req_t req_table[] = { { .req_num = RPC_ID__Req_GetMACAddress , @@ -3606,6 +3782,32 @@ static esp_rpc_req_t req_table[] = { }, #endif #endif +#if H_DPP_SUPPORT + { + .req_num = RPC_ID__Req_SuppDppInit, + .command_handler = req_supp_dpp_init + }, + { + .req_num = RPC_ID__Req_SuppDppDeinit, + .command_handler = req_supp_dpp_deinit + }, + { + .req_num = RPC_ID__Req_SuppDppDeinit, + .command_handler = req_supp_dpp_deinit + }, + { + .req_num = RPC_ID__Req_SuppDppBootstrapGen, + .command_handler = req_supp_dpp_bootstrap_gen + }, + { + .req_num = RPC_ID__Req_SuppDppStartListen, + .command_handler = req_supp_dpp_start_listen, + }, + { + .req_num = RPC_ID__Req_SuppDppStopListen, + .command_handler = req_supp_dpp_stop_listen, + }, +#endif }; @@ -4063,6 +4265,164 @@ static esp_err_t rpc_evt_Event_DhcpDnsStatus(Rpc *ntfy, } #endif +#if H_DPP_SUPPORT +void dpp_enrollee_event_cb(esp_supp_dpp_event_t event, void *data) +{ +#if H_SUPP_DPP_SUPPORT + switch (event) { + case ESP_SUPP_DPP_URI_READY: + if (data != NULL) { + // data is a URI to be passed back to host + int len = strlen(data) + 1; // include terminating null in data + send_event_data_to_host(RPC_ID__Event_SuppDppUriReady, data, len); + } else { + ESP_LOGE(TAG, "ESP_SUPP_DPP_URI_READY with no URI data"); + } + break; + case ESP_SUPP_DPP_CFG_RECVD: + if (data != NULL) { + // pass wifi config back to host + send_event_data_to_host(RPC_ID__Event_SuppDppCfgRecvd, data, sizeof(wifi_config_t)); + } else { + ESP_LOGE(TAG, "ESP_SUPP_DPP_URICFG_RECVD with no wifi config data"); + } + break; + case ESP_SUPP_DPP_FAIL: + { + // reason code is given, not pointer to reason code + // see https://github.com/espressif/esp-idf/blob/7912b04e6bdf8c9aeea88baff9e46794d04e4200/examples/wifi/wifi_easy_connect/dpp-enrollee/main/dpp_enrollee_main.c#L96 + int reason = (int)data; + send_event_data_to_host(RPC_ID__Event_SuppDppFail, &reason, sizeof(int)); + } + break; + default: + { + ESP_LOGE(TAG, "Unknown ESP_SUPP event"); + } + break; + } +#else // H_SUPP_DPP_SUPPORT + ESP_LOGW(TAG, "DPP Supplicant Callback not supported: ignoring event"); +#endif // H_SUPP_DPP_SUPPORT +} + +static esp_err_t rpc_evt_supp_dpp_uri_ready(Rpc *ntfy, + const uint8_t *data, ssize_t len) +{ + uint8_t *uri = (uint8_t *)data; + int uri_len = len; + + NTFY_TEMPLATE(RPC_ID__Event_SuppDppUriReady, + RpcEventSuppDppUriReady, event_supp_dpp_uri_ready, + rpc__event__supp_dpp_uri_ready__init); + + NTFY_COPY_BYTES(ntfy_payload->qrcode, uri, uri_len); + + ntfy_payload->resp = SUCCESS; + return ESP_OK; +} + +static esp_err_t rpc_evt_supp_dpp_cfg_recvd(Rpc *ntfy, + const uint8_t *data, ssize_t len) +{ + wifi_config_t *config = (wifi_config_t *)data; + wifi_sta_config_t *sta_config = &(config->sta); + esp_err_t res; + + NTFY_TEMPLATE(RPC_ID__Event_SuppDppCfgRecvd, + RpcEventSuppDppCfgRecvd, event_supp_dpp_cfg_recvd, + rpc__event__supp_dpp_cfg_recvd__init); + NTFY_ALLOC_ELEMENT(WifiConfig, ntfy_payload->cfg, wifi_config__init); + ntfy_payload->cfg->u_case = WIFI_CONFIG__U_STA; + + res = copy_wifi_sta_cfg_to_rpc_struct(ntfy_payload, + PAYLOAD_TYPE_RPC_EVENT_SUPP_DPP_GET_CONFIG, sta_config); + + if (res == ESP_OK) { + ntfy_payload->resp = SUCCESS; + return ESP_OK; + } else { + ESP_LOGE(TAG, "NTFY: copy_wifi_sta_cfg_to_rpc_struct() FAILED"); + return res; + } + err: + return ESP_FAIL; +} + +static esp_err_t rpc_evt_supp_dpp_fail(Rpc *ntfy, + const uint8_t *data, ssize_t len) +{ + NTFY_TEMPLATE(RPC_ID__Event_SuppDppFail, + RpcEventSuppDppFail, event_supp_dpp_fail, + rpc__event__supp_dpp_fail__init); + + int *reason = (int *)data; + + ntfy_payload->reason = *reason; + ntfy_payload->resp = SUCCESS; + return ESP_OK; +} + +#if H_WIFI_DPP_SUPPORT +static esp_err_t rpc_evt_wifi_dpp_uri_ready(Rpc *ntfy, + const uint8_t *data, ssize_t len) +{ + wifi_event_dpp_uri_ready_t *uri = (wifi_event_dpp_uri_ready_t *)data; + int uri_len = uri->uri_data_len; + + NTFY_TEMPLATE(RPC_ID__Event_WifiDppUriReady, + RpcEventWifiDppUriReady, event_wifi_dpp_uri_ready, + rpc__event__wifi_dpp_uri_ready__init); + + NTFY_COPY_BYTES(ntfy_payload->qrcode, uri->uri, uri_len); + + ntfy_payload->resp = SUCCESS; + return ESP_OK; +} + +static esp_err_t rpc_evt_wifi_dpp_cfg_recvd(Rpc *ntfy, + const uint8_t *data, ssize_t len) +{ + wifi_config_t *config = (wifi_config_t *)data; + wifi_sta_config_t *sta_config = &(config->sta); + esp_err_t res; + + NTFY_TEMPLATE(RPC_ID__Event_WifiDppCfgRecvd, + RpcEventWifiDppCfgRecvd, event_wifi_dpp_cfg_recvd, + rpc__event__wifi_dpp_cfg_recvd__init); + NTFY_ALLOC_ELEMENT(WifiConfig, ntfy_payload->cfg, wifi_config__init); + ntfy_payload->cfg->u_case = WIFI_CONFIG__U_STA; + + res = copy_wifi_sta_cfg_to_rpc_struct(ntfy_payload, + PAYLOAD_TYPE_RPC_EVENT_WIFI_DPP_GET_CONFIG, sta_config); + + if (res == ESP_OK) { + ntfy_payload->resp = SUCCESS; + return ESP_OK; + } else { + ESP_LOGE(TAG, "NTFY: copy_wifi_sta_cfg_to_rpc_struct() FAILED"); + return res; + } + err: + return ESP_FAIL; +} + +static esp_err_t rpc_evt_wifi_dpp_fail(Rpc *ntfy, + const uint8_t *data, ssize_t len) +{ + NTFY_TEMPLATE(RPC_ID__Event_WifiDppFail, + RpcEventWifiDppFail, event_wifi_dpp_fail, + rpc__event__wifi_dpp_fail__init); + + int *reason = (int *)data; + + ntfy_payload->reason = *reason; + ntfy_payload->resp = SUCCESS; + return ESP_OK; +} +#endif // H_WIFI_DPP_SUPPORT +#endif // H_DPP_SUPPORT + esp_err_t rpc_evt_handler(uint32_t session_id,const uint8_t *inbuf, ssize_t inlen, uint8_t **outbuf, ssize_t *outlen, void *priv_data) { @@ -4126,6 +4486,28 @@ esp_err_t rpc_evt_handler(uint32_t session_id,const uint8_t *inbuf, } case RPC_ID__Event_DhcpDnsStatus: { ret = rpc_evt_Event_DhcpDnsStatus(ntfy, inbuf, inlen); break; +#endif +#if H_SUPP_DPP_SUPPORT + } case RPC_ID__Event_SuppDppUriReady: { + ret = rpc_evt_supp_dpp_uri_ready(ntfy, inbuf, inlen); + break; + } case RPC_ID__Event_SuppDppCfgRecvd: { + ret = rpc_evt_supp_dpp_cfg_recvd(ntfy, inbuf, inlen); + break; + } case RPC_ID__Event_SuppDppFail: { + ret = rpc_evt_supp_dpp_fail(ntfy, inbuf, inlen); + break; +#endif // H_SUPP_DPP_SUPPORT +#if H_WIFI_DPP_SUPPORT + } case RPC_ID__Event_WifiDppUriReady: { + ret = rpc_evt_wifi_dpp_uri_ready(ntfy, inbuf, inlen); + break; + } case RPC_ID__Event_WifiDppCfgRecvd: { + ret = rpc_evt_wifi_dpp_cfg_recvd(ntfy, inbuf, inlen); + break; + } case RPC_ID__Event_WifiDppFail: { + ret = rpc_evt_wifi_dpp_fail(ntfy, inbuf, inlen); + break; #endif } default: { ESP_LOGE(TAG, "Incorrect/unsupported Ctrl Notification[%u]\n",ntfy->msg_id); diff --git a/slave/main/slave_control.h b/slave/main/slave_control.h index d05588c7..f4dbf9a3 100644 --- a/slave/main/slave_control.h +++ b/slave/main/slave_control.h @@ -1,17 +1,8 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2015-2021 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #ifndef __SLAVE_CONTROL__H__ #define __SLAVE_CONTROL__H__ @@ -40,17 +31,17 @@ } -#define NTFY_TEMPLATE(NtFy_MsgId, NtFy_TyPe, NtFy_StRuCt, InIt_FuN) \ - NtFy_TyPe *ntfy_payload = NULL; \ - ntfy_payload = (NtFy_TyPe*)calloc(1,sizeof(NtFy_TyPe)); \ - if (!ntfy_payload) { \ - ESP_LOGE(TAG,"Failed to allocate memory"); \ - return ESP_ERR_NO_MEM; \ - } \ - InIt_FuN(ntfy_payload); \ - ntfy->payload_case = NtFy_MsgId; \ - ntfy->NtFy_StRuCt = ntfy_payload; \ - ntfy_payload->resp = SUCCESS; +#define NTFY_TEMPLATE(NtFy_MsgId, NtFy_TyPe, NtFy_StRuCt, InIt_FuN) \ + NtFy_TyPe *ntfy_payload = NULL; \ + ntfy_payload = (NtFy_TyPe*)calloc(1,sizeof(NtFy_TyPe)); \ + if (!ntfy_payload) { \ + ESP_LOGE(TAG,"Failed to allocate memory"); \ + return ESP_ERR_NO_MEM; \ + } \ + InIt_FuN(ntfy_payload); \ + ntfy->payload_case = NtFy_MsgId; \ + ntfy->NtFy_StRuCt = ntfy_payload; \ + ntfy_payload->resp = SUCCESS; #define RPC_TEMPLATE(RspTyPe, RspStRuCt, ReqType, ReqStruct, InIt_FuN) \ RspTyPe *resp_payload = NULL; \ @@ -100,25 +91,25 @@ #define RPC_ALLOC_ELEMENT(TyPe,MsG_StRuCt,InIt_FuN) { \ - TyPe *NeW_AllocN = (TyPe *)calloc(1, sizeof(TyPe)); \ - if (!NeW_AllocN) { \ - ESP_LOGI(TAG,"Failed to allocate memory for req.%s\n",#MsG_StRuCt); \ - resp_payload->resp = RPC_ERR_MEMORY_FAILURE; \ - goto err; \ - } \ - MsG_StRuCt = NeW_AllocN; \ - InIt_FuN(MsG_StRuCt); \ + TyPe *NeW_AllocN = (TyPe *)calloc(1, sizeof(TyPe)); \ + if (!NeW_AllocN) { \ + ESP_LOGI(TAG,"Failed to allocate memory for req.%s\n",#MsG_StRuCt); \ + resp_payload->resp = RPC_ERR_MEMORY_FAILURE; \ + goto err; \ + } \ + MsG_StRuCt = NeW_AllocN; \ + InIt_FuN(MsG_StRuCt); \ } #define NTFY_ALLOC_ELEMENT(TyPe,MsG_StRuCt,InIt_FuN) { \ - TyPe *NeW_AllocN = (TyPe *)calloc(1, sizeof(TyPe)); \ - if (!NeW_AllocN) { \ - ESP_LOGI(TAG,"Failed to allocate memory for req.%s\n",#MsG_StRuCt); \ - ntfy_payload->resp = RPC_ERR_MEMORY_FAILURE; \ - goto err; \ - } \ - MsG_StRuCt = NeW_AllocN; \ - InIt_FuN(MsG_StRuCt); \ + TyPe *NeW_AllocN = (TyPe *)calloc(1, sizeof(TyPe)); \ + if (!NeW_AllocN) { \ + ESP_LOGI(TAG,"Failed to allocate memory for req.%s\n",#MsG_StRuCt); \ + ntfy_payload->resp = RPC_ERR_MEMORY_FAILURE; \ + goto err; \ + } \ + MsG_StRuCt = NeW_AllocN; \ + InIt_FuN(MsG_StRuCt); \ } #define NTFY_COPY_BYTES(dest, src, num) \ @@ -131,17 +122,27 @@ return ESP_OK; \ } \ memcpy(dest.data, src, num); \ - dest.len = num; \ + dest.len = num; \ } \ } while(0) +#define NTFY_COPY_STR(dest, src, max_len) \ + if (src) { \ + dest.data = (uint8_t*)strndup((char*)src, max_len); \ + if (!dest.data) { \ + ESP_LOGE(TAG, "%s:%u Failed to duplicate bytes\n",__func__,__LINE__); \ + ntfy_payload->resp = FAILURE; \ + return ESP_OK; \ + } \ + dest.len = min(max_len,strlen((char*)src)+1); \ + } + #define RPC_REQ_COPY_BYTES(dest, src, num_bytes) \ if (src.len && src.data) \ memcpy((char*)dest, src.data, min(min(sizeof(dest), num_bytes), src.len)); #define RPC_REQ_COPY_STR RPC_REQ_COPY_BYTES - #define RPC_RESP_COPY_STR(dest, src, max_len) \ if (src) { \ dest.data = (uint8_t*)strndup((char*)src, max_len); \ @@ -150,7 +151,7 @@ resp_payload->resp = FAILURE; \ return ESP_OK; \ } \ - dest.len = min(max_len,strlen((char*)src)+1); \ + dest.len = min(max_len,strlen((char*)src)+1); \ } #define RPC_RESP_COPY_BYTES_SRC_UNCHECKED(dest, src, num) \ @@ -163,7 +164,7 @@ return ESP_OK; \ } \ memcpy(dest.data, src, num); \ - dest.len = num; \ + dest.len = num; \ } \ } while(0) @@ -179,7 +180,7 @@ ESP_LOGE(TAG, "%s:%u Failed to duplicate bytes\n",__func__,__LINE__); \ return FAILURE; \ } \ - dest.len = min(max_len,strlen((char*)src)+1); \ + dest.len = min(max_len,strlen((char*)src)+1); \ } #define RPC_COPY_BYTES(dest, src, num) \ @@ -191,7 +192,7 @@ return FAILURE; \ } \ memcpy(dest.data, src, num); \ - dest.len = num; \ + dest.len = num; \ } \ } while(0) diff --git a/slave/main/slave_wifi_config.h b/slave/main/slave_wifi_config.h index cb2fd62a..07cd1b54 100644 --- a/slave/main/slave_wifi_config.h +++ b/slave/main/slave_wifi_config.h @@ -69,4 +69,30 @@ #define H_GOT_SET_EAP_METHODS_API 1 #endif +/** + * Wi-Fi Easy Connect (DPP) events is returned to user via + * Supplicant Callback or Wi-Fi DPP events, + * depending on IDF version + */ +// Supplicant Callback DPP Events: still available, but deprecated +#if CONFIG_ESP_WIFI_DPP_SUPPORT +#define H_SUPP_DPP_SUPPORT 1 +#else +#define H_SUPP_DPP_SUPPORT 0 +#endif + +// Wi-Fi DPP Events: only in IDF v5.5 and above +#if CONFIG_ESP_WIFI_DPP_SUPPORT && (ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 5, 0)) +#define H_WIFI_DPP_SUPPORT 1 +#else +#define H_WIFI_DPP_SUPPORT 0 +#endif + +// for generic DPP support +#if H_SUPP_DPP_SUPPORT || H_WIFI_DPP_SUPPORT +#define H_DPP_SUPPORT 1 +#else +#define H_DPP_SUPPORT 0 +#endif + #endif From 0da322693fe4ebeb9df12a38b2a0f76b7f3e9139 Mon Sep 17 00:00:00 2001 From: Chen Chen Date: Tue, 23 Sep 2025 14:56:55 +0800 Subject: [PATCH 095/114] refactor: Update driver dependency --- CHANGELOG.md | 6 ++++++ CMakeLists.txt | 3 ++- host/esp_hosted_host_fw_ver.h | 4 ++-- idf_component.yml | 2 +- slave/main/esp_hosted_coprocessor_fw_ver.h | 4 ++-- 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 34d7066d..3e797376 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 2.5.0 + +### Features + +- Remove dependency on deprecated `driver` component and added necessary dependencies instead + ## 2.4.2 ### Features diff --git a/CMakeLists.txt b/CMakeLists.txt index c63d1a78..45b02a87 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -124,7 +124,8 @@ if(CONFIG_ESP_HOSTED_ENABLED) endif() idf_component_register(SRCS ${srcs} - PRIV_REQUIRES soc esp_event esp_netif esp_timer driver esp_wifi bt esp_http_client console wpa_supplicant + PRIV_REQUIRES soc esp_event esp_netif esp_timer esp_wifi bt esp_http_client console wpa_supplicant esp_driver_spi + REQUIRES esp_driver_sdmmc esp_driver_uart INCLUDE_DIRS ${pub_include} PRIV_INCLUDE_DIRS ${priv_include}) diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index 3a0eb50f..0cf7dd82 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -6,6 +6,6 @@ #ifndef __ESP_HOSTED_HOST_FW_VERSION_H__ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 -#define ESP_HOSTED_VERSION_MINOR_1 4 -#define ESP_HOSTED_VERSION_PATCH_1 3 +#define ESP_HOSTED_VERSION_MINOR_1 5 +#define ESP_HOSTED_VERSION_PATCH_1 0 #endif diff --git a/idf_component.yml b/idf_component.yml index d76f51c9..a0876caa 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.4.3" +version: "2.5.0" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index bde099b3..aef8949e 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -6,6 +6,6 @@ #ifndef __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 -#define PROJECT_VERSION_MINOR_1 4 -#define PROJECT_VERSION_PATCH_1 3 +#define PROJECT_VERSION_MINOR_1 5 +#define PROJECT_VERSION_PATCH_1 0 #endif From 790ae809886ea65467b235376f6f82465a389ccf Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Wed, 24 Sep 2025 05:59:38 +0800 Subject: [PATCH 096/114] fix idf ci build - include esp_driver_gpio --- CMakeLists.txt | 2 +- host/esp_hosted_host_fw_ver.h | 2 +- idf_component.yml | 2 +- slave/main/esp_hosted_coprocessor_fw_ver.h | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 45b02a87..5237566d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -124,7 +124,7 @@ if(CONFIG_ESP_HOSTED_ENABLED) endif() idf_component_register(SRCS ${srcs} - PRIV_REQUIRES soc esp_event esp_netif esp_timer esp_wifi bt esp_http_client console wpa_supplicant esp_driver_spi + PRIV_REQUIRES soc esp_event esp_netif esp_timer esp_wifi bt esp_http_client console wpa_supplicant esp_driver_spi esp_driver_gpio REQUIRES esp_driver_sdmmc esp_driver_uart INCLUDE_DIRS ${pub_include} PRIV_INCLUDE_DIRS ${priv_include}) diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index 0cf7dd82..984d3800 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 #define ESP_HOSTED_VERSION_MINOR_1 5 -#define ESP_HOSTED_VERSION_PATCH_1 0 +#define ESP_HOSTED_VERSION_PATCH_1 1 #endif diff --git a/idf_component.yml b/idf_component.yml index a0876caa..6a2fe365 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.5.0" +version: "2.5.1" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index aef8949e..725a13ba 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 #define PROJECT_VERSION_MINOR_1 5 -#define PROJECT_VERSION_PATCH_1 0 +#define PROJECT_VERSION_PATCH_1 1 #endif From d653c2dbb15ac80d8b353a42abf0b19ec3e7810a Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Tue, 15 Jul 2025 13:56:13 +0800 Subject: [PATCH 097/114] feature(get_set_mac_intf) Added APIs to set BT Mac Address, bring up Controller - added APIs to set/get Mac Address (BT) - added Feature API to init/deinit, enable/disable BT controller - updated BT examples to work as expected with new APIs - added migration guide - updated BT documentation to add section about BT Controller changes - added example to change BT MAC - added python script to verify list of RPCs implemented against documentation - updated BT example `README.md` to note which hosts and BT controllers are supported - bumped `idf_component.yml` - added pre-commit and CI merge check for Changelog --- .gitlab/ci/merge_request_jobs.yml | 4 +- .gitlab/ci/templates.yml | 4 +- .pre-commit-config.yaml | 11 + CHANGELOG.md | 38 + README.md | 3 + common/proto/esp_hosted_rpc.pb-c.c | 1396 +++++++++++++---- common/proto/esp_hosted_rpc.pb-c.h | 298 +++- common/proto/esp_hosted_rpc.proto | 95 +- docs/bluetooth_design.md | 109 +- docs/implemented_rpcs.md | 132 ++ docs/migration_guide.md | 32 + .../README.md | 7 +- .../main/ble_compatibility_test.c | 34 +- .../sdkconfig.defaults | 2 + .../README.md | 7 +- .../main/main.c | 15 +- .../sdkconfig.defaults | 2 + examples/host_bluedroid_host_only/README.md | 4 +- examples/host_bluedroid_host_only/main/main.c | 17 +- .../sdkconfig.defaults | 2 + .../CMakeLists.txt | 6 + .../host_bt_controller_mac_addr/README.md | 178 +++ .../main/CMakeLists.txt | 4 + .../main/Kconfig.projbuild | 8 + .../main/idf_component.yml | 9 + .../host_bt_controller_mac_addr/main/main.c | 250 +++ .../sdkconfig.defaults | 27 + .../README.md | 7 +- .../main/main.c | 17 + .../sdkconfig.defaults | 2 + .../README.md | 7 +- .../main/main.c | 30 +- .../sdkconfig.defaults | 2 + host/api/src/esp_hosted_api.c | 66 + host/drivers/rpc/core/rpc_req.c | 57 +- host/drivers/rpc/core/rpc_rsp.c | 21 +- host/drivers/rpc/slaveif/rpc_slave_if.c | 18 + host/drivers/rpc/slaveif/rpc_slave_if.h | 56 + host/drivers/rpc/wrap/rpc_wrap.c | 110 ++ host/drivers/rpc/wrap/rpc_wrap.h | 9 + host/esp_hosted.h | 1 + host/esp_hosted_host_fw_ver.h | 2 +- host/esp_hosted_misc.h | 82 + .../include/port_esp_hosted_host_config.h | 4 - idf_component.yml | 2 +- slave/main/esp_hosted_coprocessor.c | 4 - slave/main/esp_hosted_coprocessor_fw_ver.h | 2 +- slave/main/slave_bt.c | 112 +- slave/main/slave_bt.h | 8 +- slave/main/slave_control.c | 114 ++ tools/check_changelog.py | 49 + tools/check_rpc_calls.py | 115 ++ 52 files changed, 3204 insertions(+), 387 deletions(-) create mode 100644 docs/implemented_rpcs.md create mode 100644 docs/migration_guide.md create mode 100644 examples/host_bt_controller_mac_addr/CMakeLists.txt create mode 100644 examples/host_bt_controller_mac_addr/README.md create mode 100644 examples/host_bt_controller_mac_addr/main/CMakeLists.txt create mode 100644 examples/host_bt_controller_mac_addr/main/Kconfig.projbuild create mode 100644 examples/host_bt_controller_mac_addr/main/idf_component.yml create mode 100644 examples/host_bt_controller_mac_addr/main/main.c create mode 100644 examples/host_bt_controller_mac_addr/sdkconfig.defaults create mode 100644 host/esp_hosted_misc.h create mode 100755 tools/check_changelog.py create mode 100755 tools/check_rpc_calls.py diff --git a/.gitlab/ci/merge_request_jobs.yml b/.gitlab/ci/merge_request_jobs.yml index c2a2cd50..ade4bda8 100644 --- a/.gitlab/ci/merge_request_jobs.yml +++ b/.gitlab/ci/merge_request_jobs.yml @@ -1,9 +1,9 @@ # Holds jobs that run from a merge request -check_ver: +premerge_check: rules: - !reference [.default_rules, rules] - extends: .check_ver_template + extends: .premerge_check_template image: espressif/idf:latest build_idf_v5.5: diff --git a/.gitlab/ci/templates.yml b/.gitlab/ci/templates.yml index 6fbeae9c..6ae19f14 100644 --- a/.gitlab/ci/templates.yml +++ b/.gitlab/ci/templates.yml @@ -1,6 +1,6 @@ # Holds templates used for jobs -.check_ver_template: +.premerge_check_template: stage: pre tags: - build @@ -8,6 +8,8 @@ - source ${IDF_PATH}/export.sh # check the exported fw versions - python tools/check_fw_versions.py + # check the changelog + - python tools/check_changelog.py .build_template_coprocessor: stage: build_coprocessor diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index fc2965cc..3300e4dc 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -8,6 +8,17 @@ repos: args: [ "--update" ] always_run: true pass_filenames: false + - id: rpc-checker + name: ESP-Hosted RPC Checker + entry: tools/check_rpc_calls.py + language: python + always_run: true + pass_filenames: false + - id: changelog-checker + name: ESP-Hosted Changelog Checker + entry: tools/check_changelog.py + language: python + files: ^idf_component.yml$ - repo: https://github.com/espressif/check-copyright/ rev: v1.1.1 hooks: diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e797376..9c7016aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,49 @@ # Changelog +## 2.5.2 + +### Features + +- Add support to get and set the BT Controller Mac Address + - To support set BT Controller Mac Address, BT Controller is now disabled by default on the co-processor, and host must enable the BT Controller. See [Initializing the Bluetooth Controller](https://github.com/espressif/esp-hosted-mcu/blob/main/docs/bluetooth_design.md#31-initializing-the-bluetooth-controller) for details +- Updated all ESP-Hosted BT related examples to account for new BT Controller behaviour + +### APIs added + +- `esp_hosted_bt_controller_init` +- `esp_hosted_bt_controller_deinit` +- `esp_hosted_bt_controller_enable` +- `esp_hosted_bt_controller_disable` +- `esp_hosted_iface_mac_addr_set` +- `esp_hosted_iface_mac_addr_get` +- `esp_hosted_iface_mac_addr_len_get` + +## 2.5.1 + +### Features + +- Added dependency on `esp_driver_gpio` + ## 2.5.0 ### Features - Remove dependency on deprecated `driver` component and added necessary dependencies instead +## 2.4.3 + +### Features + +- Added support for Wi-Fi Easy Connect (DPP) + +### APIs added + +- `esp_supp_remote_dpp_init` +- `esp_supp_remote_dpp_deinit` +- `esp_supp_remote_dpp_bootstrap_gen` +- `esp_supp_remote_dpp_start_listen` +- `esp_supp_remote_dpp_stop_listen` + ## 2.4.2 ### Features diff --git a/README.md b/README.md index 25d9177e..6b46a689 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ This can be any generic microcontroller (MCU). We demonstrate any ESP as host. U - Host extends the capabilities of the Hosted co-processor through Remote Procedure Calls (RPCs). The Host MCU sends these RPC commands to the Hosted co-processor using a reliable communication bus, like SPI, SDIO, or UART. The Hosted co-processor then handles the RPC and provides the requested functionality to the Host MCU. - The data (network or Bluetooth) is packaged efficiently at the transport layer to minimize overhead and delays when passing between the Host and co-processor. - This modular design allows any MCU to be used as the Host, and any ESP chip with Wi-Fi and/or Bluetooth to be used as the Hosted co-processor. The RPC calls can also be extended to provide any function required by the Host, as long as the co-processor can support it. +- The RPCs implemented are [listed in this document](https://github.com/espressif/esp-hosted-mcu/blob/main/docs/implemented_rpcs.md), including the ESP-Hosted release version that implements the RPCs. ## 3 Solution Flexibility @@ -271,6 +272,8 @@ Check [examples](https://github.com/espressif/esp-hosted-mcu/tree/main/examples) If you encounter issues with using ESP-Hosted, see the following guide: - [Troubleshooting Guide](https://github.com/espressif/esp-hosted-mcu/blob/main/docs/troubleshooting.md) +- [Migration Guide](https://github.com/espressif/esp-hosted-mcu/blob/main/docs/migration_guide.md) +- if you are upgrading to ESP-Hosted version V2.5.2 (or later) from an earlier version, there has been a change in the operation of the Bluetooth Controller on the co-processor. See [Migrating to V2.5.2](https://github.com/espressif/esp-hosted-mcu/blob/main/docs/migration_guide.md#migrating-to-v252) in the Migration Guide for more information. ## 11 References diff --git a/common/proto/esp_hosted_rpc.pb-c.c b/common/proto/esp_hosted_rpc.pb-c.c index ef91986f..e40ba902 100644 --- a/common/proto/esp_hosted_rpc.pb-c.c +++ b/common/proto/esp_hosted_rpc.pb-c.c @@ -8557,6 +8557,276 @@ void rpc__resp__supp_dpp_stop_listen__free_unpacked assert(message->base.descriptor == &rpc__resp__supp_dpp_stop_listen__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } +void rpc__req__iface_mac_addr_set_get__init + (RpcReqIfaceMacAddrSetGet *message) +{ + static const RpcReqIfaceMacAddrSetGet init_value = RPC__REQ__IFACE_MAC_ADDR_SET_GET__INIT; + *message = init_value; +} +size_t rpc__req__iface_mac_addr_set_get__get_packed_size + (const RpcReqIfaceMacAddrSetGet *message) +{ + assert(message->base.descriptor == &rpc__req__iface_mac_addr_set_get__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__iface_mac_addr_set_get__pack + (const RpcReqIfaceMacAddrSetGet *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__iface_mac_addr_set_get__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__iface_mac_addr_set_get__pack_to_buffer + (const RpcReqIfaceMacAddrSetGet *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__iface_mac_addr_set_get__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqIfaceMacAddrSetGet * + rpc__req__iface_mac_addr_set_get__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqIfaceMacAddrSetGet *) + protobuf_c_message_unpack (&rpc__req__iface_mac_addr_set_get__descriptor, + allocator, len, data); +} +void rpc__req__iface_mac_addr_set_get__free_unpacked + (RpcReqIfaceMacAddrSetGet *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__iface_mac_addr_set_get__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__iface_mac_addr_set_get__init + (RpcRespIfaceMacAddrSetGet *message) +{ + static const RpcRespIfaceMacAddrSetGet init_value = RPC__RESP__IFACE_MAC_ADDR_SET_GET__INIT; + *message = init_value; +} +size_t rpc__resp__iface_mac_addr_set_get__get_packed_size + (const RpcRespIfaceMacAddrSetGet *message) +{ + assert(message->base.descriptor == &rpc__resp__iface_mac_addr_set_get__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__iface_mac_addr_set_get__pack + (const RpcRespIfaceMacAddrSetGet *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__iface_mac_addr_set_get__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__iface_mac_addr_set_get__pack_to_buffer + (const RpcRespIfaceMacAddrSetGet *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__iface_mac_addr_set_get__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespIfaceMacAddrSetGet * + rpc__resp__iface_mac_addr_set_get__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespIfaceMacAddrSetGet *) + protobuf_c_message_unpack (&rpc__resp__iface_mac_addr_set_get__descriptor, + allocator, len, data); +} +void rpc__resp__iface_mac_addr_set_get__free_unpacked + (RpcRespIfaceMacAddrSetGet *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__iface_mac_addr_set_get__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__iface_mac_addr_len_get__init + (RpcReqIfaceMacAddrLenGet *message) +{ + static const RpcReqIfaceMacAddrLenGet init_value = RPC__REQ__IFACE_MAC_ADDR_LEN_GET__INIT; + *message = init_value; +} +size_t rpc__req__iface_mac_addr_len_get__get_packed_size + (const RpcReqIfaceMacAddrLenGet *message) +{ + assert(message->base.descriptor == &rpc__req__iface_mac_addr_len_get__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__iface_mac_addr_len_get__pack + (const RpcReqIfaceMacAddrLenGet *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__iface_mac_addr_len_get__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__iface_mac_addr_len_get__pack_to_buffer + (const RpcReqIfaceMacAddrLenGet *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__iface_mac_addr_len_get__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqIfaceMacAddrLenGet * + rpc__req__iface_mac_addr_len_get__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqIfaceMacAddrLenGet *) + protobuf_c_message_unpack (&rpc__req__iface_mac_addr_len_get__descriptor, + allocator, len, data); +} +void rpc__req__iface_mac_addr_len_get__free_unpacked + (RpcReqIfaceMacAddrLenGet *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__iface_mac_addr_len_get__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__iface_mac_addr_len_get__init + (RpcRespIfaceMacAddrLenGet *message) +{ + static const RpcRespIfaceMacAddrLenGet init_value = RPC__RESP__IFACE_MAC_ADDR_LEN_GET__INIT; + *message = init_value; +} +size_t rpc__resp__iface_mac_addr_len_get__get_packed_size + (const RpcRespIfaceMacAddrLenGet *message) +{ + assert(message->base.descriptor == &rpc__resp__iface_mac_addr_len_get__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__iface_mac_addr_len_get__pack + (const RpcRespIfaceMacAddrLenGet *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__iface_mac_addr_len_get__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__iface_mac_addr_len_get__pack_to_buffer + (const RpcRespIfaceMacAddrLenGet *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__iface_mac_addr_len_get__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespIfaceMacAddrLenGet * + rpc__resp__iface_mac_addr_len_get__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespIfaceMacAddrLenGet *) + protobuf_c_message_unpack (&rpc__resp__iface_mac_addr_len_get__descriptor, + allocator, len, data); +} +void rpc__resp__iface_mac_addr_len_get__free_unpacked + (RpcRespIfaceMacAddrLenGet *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__iface_mac_addr_len_get__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__req__feature_control__init + (RpcReqFeatureControl *message) +{ + static const RpcReqFeatureControl init_value = RPC__REQ__FEATURE_CONTROL__INIT; + *message = init_value; +} +size_t rpc__req__feature_control__get_packed_size + (const RpcReqFeatureControl *message) +{ + assert(message->base.descriptor == &rpc__req__feature_control__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__feature_control__pack + (const RpcReqFeatureControl *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__feature_control__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__feature_control__pack_to_buffer + (const RpcReqFeatureControl *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__feature_control__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqFeatureControl * + rpc__req__feature_control__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqFeatureControl *) + protobuf_c_message_unpack (&rpc__req__feature_control__descriptor, + allocator, len, data); +} +void rpc__req__feature_control__free_unpacked + (RpcReqFeatureControl *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__feature_control__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__feature_control__init + (RpcRespFeatureControl *message) +{ + static const RpcRespFeatureControl init_value = RPC__RESP__FEATURE_CONTROL__INIT; + *message = init_value; +} +size_t rpc__resp__feature_control__get_packed_size + (const RpcRespFeatureControl *message) +{ + assert(message->base.descriptor == &rpc__resp__feature_control__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__feature_control__pack + (const RpcRespFeatureControl *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__feature_control__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__feature_control__pack_to_buffer + (const RpcRespFeatureControl *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__feature_control__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespFeatureControl * + rpc__resp__feature_control__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespFeatureControl *) + protobuf_c_message_unpack (&rpc__resp__feature_control__descriptor, + allocator, len, data); +} +void rpc__resp__feature_control__free_unpacked + (RpcRespFeatureControl *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__feature_control__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} void rpc__event__wifi_event_no_args__init (RpcEventWifiEventNoArgs *message) { @@ -21402,6 +21672,390 @@ const ProtobufCMessageDescriptor rpc__resp__supp_dpp_stop_listen__descriptor = (ProtobufCMessageInit) rpc__resp__supp_dpp_stop_listen__init, NULL,NULL,NULL /* reserved[123] */ }; +static const ProtobufCFieldDescriptor rpc__req__iface_mac_addr_set_get__field_descriptors[3] = +{ + { + "set", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(RpcReqIfaceMacAddrSetGet, set), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "type", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(RpcReqIfaceMacAddrSetGet, type), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "mac", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcReqIfaceMacAddrSetGet, mac), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__req__iface_mac_addr_set_get__field_indices_by_name[] = { + 2, /* field[2] = mac */ + 0, /* field[0] = set */ + 1, /* field[1] = type */ +}; +static const ProtobufCIntRange rpc__req__iface_mac_addr_set_get__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor rpc__req__iface_mac_addr_set_get__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_IfaceMacAddrSetGet", + "RpcReqIfaceMacAddrSetGet", + "RpcReqIfaceMacAddrSetGet", + "", + sizeof(RpcReqIfaceMacAddrSetGet), + 3, + rpc__req__iface_mac_addr_set_get__field_descriptors, + rpc__req__iface_mac_addr_set_get__field_indices_by_name, + 1, rpc__req__iface_mac_addr_set_get__number_ranges, + (ProtobufCMessageInit) rpc__req__iface_mac_addr_set_get__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__iface_mac_addr_set_get__field_descriptors[4] = +{ + { + "resp", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespIfaceMacAddrSetGet, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "set", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(RpcRespIfaceMacAddrSetGet, set), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "type", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(RpcRespIfaceMacAddrSetGet, type), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "mac", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(RpcRespIfaceMacAddrSetGet, mac), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__resp__iface_mac_addr_set_get__field_indices_by_name[] = { + 3, /* field[3] = mac */ + 0, /* field[0] = resp */ + 1, /* field[1] = set */ + 2, /* field[2] = type */ +}; +static const ProtobufCIntRange rpc__resp__iface_mac_addr_set_get__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor rpc__resp__iface_mac_addr_set_get__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_IfaceMacAddrSetGet", + "RpcRespIfaceMacAddrSetGet", + "RpcRespIfaceMacAddrSetGet", + "", + sizeof(RpcRespIfaceMacAddrSetGet), + 4, + rpc__resp__iface_mac_addr_set_get__field_descriptors, + rpc__resp__iface_mac_addr_set_get__field_indices_by_name, + 1, rpc__resp__iface_mac_addr_set_get__number_ranges, + (ProtobufCMessageInit) rpc__resp__iface_mac_addr_set_get__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__iface_mac_addr_len_get__field_descriptors[1] = +{ + { + "type", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(RpcReqIfaceMacAddrLenGet, type), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__req__iface_mac_addr_len_get__field_indices_by_name[] = { + 0, /* field[0] = type */ +}; +static const ProtobufCIntRange rpc__req__iface_mac_addr_len_get__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__req__iface_mac_addr_len_get__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_IfaceMacAddrLenGet", + "RpcReqIfaceMacAddrLenGet", + "RpcReqIfaceMacAddrLenGet", + "", + sizeof(RpcReqIfaceMacAddrLenGet), + 1, + rpc__req__iface_mac_addr_len_get__field_descriptors, + rpc__req__iface_mac_addr_len_get__field_indices_by_name, + 1, rpc__req__iface_mac_addr_len_get__number_ranges, + (ProtobufCMessageInit) rpc__req__iface_mac_addr_len_get__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__iface_mac_addr_len_get__field_descriptors[3] = +{ + { + "resp", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespIfaceMacAddrLenGet, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "type", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(RpcRespIfaceMacAddrLenGet, type), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "len", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(RpcRespIfaceMacAddrLenGet, len), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__resp__iface_mac_addr_len_get__field_indices_by_name[] = { + 2, /* field[2] = len */ + 0, /* field[0] = resp */ + 1, /* field[1] = type */ +}; +static const ProtobufCIntRange rpc__resp__iface_mac_addr_len_get__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor rpc__resp__iface_mac_addr_len_get__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_IfaceMacAddrLenGet", + "RpcRespIfaceMacAddrLenGet", + "RpcRespIfaceMacAddrLenGet", + "", + sizeof(RpcRespIfaceMacAddrLenGet), + 3, + rpc__resp__iface_mac_addr_len_get__field_descriptors, + rpc__resp__iface_mac_addr_len_get__field_indices_by_name, + 1, rpc__resp__iface_mac_addr_len_get__number_ranges, + (ProtobufCMessageInit) rpc__resp__iface_mac_addr_len_get__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__req__feature_control__field_descriptors[3] = +{ + { + "feature", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(RpcReqFeatureControl, feature), + &rpc_feature__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "command", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(RpcReqFeatureControl, command), + &rpc_feature_command__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "option", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(RpcReqFeatureControl, option), + &rpc_feature_option__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__req__feature_control__field_indices_by_name[] = { + 1, /* field[1] = command */ + 0, /* field[0] = feature */ + 2, /* field[2] = option */ +}; +static const ProtobufCIntRange rpc__req__feature_control__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor rpc__req__feature_control__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_FeatureControl", + "RpcReqFeatureControl", + "RpcReqFeatureControl", + "", + sizeof(RpcReqFeatureControl), + 3, + rpc__req__feature_control__field_descriptors, + rpc__req__feature_control__field_indices_by_name, + 1, rpc__req__feature_control__number_ranges, + (ProtobufCMessageInit) rpc__req__feature_control__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__feature_control__field_descriptors[4] = +{ + { + "resp", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespFeatureControl, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "feature", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(RpcRespFeatureControl, feature), + &rpc_feature__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "command", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(RpcRespFeatureControl, command), + &rpc_feature_command__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "option", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(RpcRespFeatureControl, option), + &rpc_feature_option__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__resp__feature_control__field_indices_by_name[] = { + 2, /* field[2] = command */ + 1, /* field[1] = feature */ + 3, /* field[3] = option */ + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__feature_control__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor rpc__resp__feature_control__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_FeatureControl", + "RpcRespFeatureControl", + "RpcRespFeatureControl", + "", + sizeof(RpcRespFeatureControl), + 4, + rpc__resp__feature_control__field_descriptors, + rpc__resp__feature_control__field_indices_by_name, + 1, rpc__resp__feature_control__number_ranges, + (ProtobufCMessageInit) rpc__resp__feature_control__init, + NULL,NULL,NULL /* reserved[123] */ +}; static const ProtobufCFieldDescriptor rpc__event__wifi_event_no_args__field_descriptors[2] = { { @@ -24405,7 +25059,7 @@ const ProtobufCMessageDescriptor rpc__event__wifi_dpp_fail__descriptor = (ProtobufCMessageInit) rpc__event__wifi_dpp_fail__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__field_descriptors[212] = +static const ProtobufCFieldDescriptor rpc__field_descriptors[218] = { { "msg_type", @@ -25583,6 +26237,42 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[212] = 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "req_iface_mac_addr_set_get", + 385, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_iface_mac_addr_set_get), + &rpc__req__iface_mac_addr_set_get__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_iface_mac_addr_len_get", + 386, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_iface_mac_addr_len_get), + &rpc__req__iface_mac_addr_len_get__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "req_feature_control", + 387, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_feature_control), + &rpc__req__feature_control__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, { "resp_get_mac_address", 513, @@ -26723,6 +27413,42 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[212] = 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "resp_iface_mac_addr_set_get", + 641, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_iface_mac_addr_set_get), + &rpc__resp__iface_mac_addr_set_get__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_iface_mac_addr_len_get", + 642, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_iface_mac_addr_len_get), + &rpc__resp__iface_mac_addr_len_get__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resp_feature_control", + 643, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_feature_control), + &rpc__resp__feature_control__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, { "event_esp_init", 769, @@ -26953,25 +27679,25 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[212] = }, }; static const unsigned rpc__field_indices_by_name[] = { - 195, /* field[195] = event_ap_sta_connected */ - 196, /* field[196] = event_ap_sta_disconnected */ - 201, /* field[201] = event_dhcp_dns */ - 193, /* field[193] = event_esp_init */ - 194, /* field[194] = event_heartbeat */ - 199, /* field[199] = event_sta_connected */ - 200, /* field[200] = event_sta_disconnected */ - 205, /* field[205] = event_sta_itwt_probe */ - 202, /* field[202] = event_sta_itwt_setup */ - 204, /* field[204] = event_sta_itwt_suspend */ - 203, /* field[203] = event_sta_itwt_teardown */ - 198, /* field[198] = event_sta_scan_done */ - 207, /* field[207] = event_supp_dpp_cfg_recvd */ - 208, /* field[208] = event_supp_dpp_fail */ - 206, /* field[206] = event_supp_dpp_uri_ready */ - 210, /* field[210] = event_wifi_dpp_cfg_recvd */ - 211, /* field[211] = event_wifi_dpp_fail */ - 209, /* field[209] = event_wifi_dpp_uri_ready */ - 197, /* field[197] = event_wifi_event_no_args */ + 201, /* field[201] = event_ap_sta_connected */ + 202, /* field[202] = event_ap_sta_disconnected */ + 207, /* field[207] = event_dhcp_dns */ + 199, /* field[199] = event_esp_init */ + 200, /* field[200] = event_heartbeat */ + 205, /* field[205] = event_sta_connected */ + 206, /* field[206] = event_sta_disconnected */ + 211, /* field[211] = event_sta_itwt_probe */ + 208, /* field[208] = event_sta_itwt_setup */ + 210, /* field[210] = event_sta_itwt_suspend */ + 209, /* field[209] = event_sta_itwt_teardown */ + 204, /* field[204] = event_sta_scan_done */ + 213, /* field[213] = event_supp_dpp_cfg_recvd */ + 214, /* field[214] = event_supp_dpp_fail */ + 212, /* field[212] = event_supp_dpp_uri_ready */ + 216, /* field[216] = event_wifi_dpp_cfg_recvd */ + 217, /* field[217] = event_wifi_dpp_fail */ + 215, /* field[215] = event_wifi_dpp_uri_ready */ + 203, /* field[203] = event_wifi_event_no_args */ 1, /* field[1] = msg_id */ 0, /* field[0] = msg_type */ 19, /* field[19] = req_config_heartbeat */ @@ -26996,11 +27722,14 @@ static const unsigned rpc__field_indices_by_name[] = { 89, /* field[89] = req_eap_set_ttls_phase2_method */ 78, /* field[78] = req_eap_set_username */ 93, /* field[93] = req_eap_use_default_cert_bundle */ + 100, /* field[100] = req_feature_control */ 63, /* field[63] = req_get_coprocessor_fwversion */ 66, /* field[66] = req_get_dhcp_dns */ 3, /* field[3] = req_get_mac_address */ 18, /* field[18] = req_get_wifi_max_tx_power */ 5, /* field[5] = req_get_wifi_mode */ + 99, /* field[99] = req_iface_mac_addr_len_get */ + 98, /* field[98] = req_iface_mac_addr_set_get */ 14, /* field[14] = req_ota_begin */ 16, /* field[16] = req_ota_end */ 15, /* field[15] = req_ota_write */ @@ -27069,101 +27798,104 @@ static const unsigned rpc__field_indices_by_name[] = { 67, /* field[67] = req_wifi_sta_twt_config */ 22, /* field[22] = req_wifi_start */ 23, /* field[23] = req_wifi_stop */ - 114, /* field[114] = resp_config_heartbeat */ - 180, /* field[180] = resp_eap_clear_ca_cert */ - 182, /* field[182] = resp_eap_clear_certificate_and_key */ - 172, /* field[172] = resp_eap_clear_identity */ - 178, /* field[178] = resp_eap_clear_new_password */ - 176, /* field[176] = resp_eap_clear_password */ - 174, /* field[174] = resp_eap_clear_username */ - 183, /* field[183] = resp_eap_get_disable_time_check */ - 179, /* field[179] = resp_eap_set_ca_cert */ - 181, /* field[181] = resp_eap_set_certificate_and_key */ - 191, /* field[191] = resp_eap_set_disable_time_check */ - 190, /* field[190] = resp_eap_set_domain_name */ - 192, /* field[192] = resp_eap_set_eap_methods */ - 187, /* field[187] = resp_eap_set_fast_params */ - 171, /* field[171] = resp_eap_set_identity */ - 177, /* field[177] = resp_eap_set_new_password */ - 186, /* field[186] = resp_eap_set_pac_file */ - 175, /* field[175] = resp_eap_set_password */ - 185, /* field[185] = resp_eap_set_suiteb_certification */ - 184, /* field[184] = resp_eap_set_ttls_phase2_method */ - 173, /* field[173] = resp_eap_set_username */ - 188, /* field[188] = resp_eap_use_default_cert_bundle */ - 158, /* field[158] = resp_get_coprocessor_fwversion */ - 161, /* field[161] = resp_get_dhcp_dns */ - 98, /* field[98] = resp_get_mac_address */ - 113, /* field[113] = resp_get_wifi_max_tx_power */ - 100, /* field[100] = resp_get_wifi_mode */ - 109, /* field[109] = resp_ota_begin */ - 111, /* field[111] = resp_ota_end */ - 110, /* field[110] = resp_ota_write */ - 160, /* field[160] = resp_set_dhcp_dns */ - 99, /* field[99] = resp_set_mac_address */ - 112, /* field[112] = resp_set_wifi_max_tx_power */ - 101, /* field[101] = resp_set_wifi_mode */ - 104, /* field[104] = resp_supp_dpp_bootstrap_gen */ - 103, /* field[103] = resp_supp_dpp_deinit */ - 102, /* field[102] = resp_supp_dpp_init */ - 105, /* field[105] = resp_supp_dpp_start_listen */ - 106, /* field[106] = resp_supp_dpp_stop_listen */ - 141, /* field[141] = resp_wifi_ap_get_sta_aid */ - 140, /* field[140] = resp_wifi_ap_get_sta_list */ - 127, /* field[127] = resp_wifi_clear_ap_list */ - 129, /* field[129] = resp_wifi_clear_fast_connect */ - 119, /* field[119] = resp_wifi_connect */ - 130, /* field[130] = resp_wifi_deauth_sta */ - 116, /* field[116] = resp_wifi_deinit */ - 120, /* field[120] = resp_wifi_disconnect */ - 155, /* field[155] = resp_wifi_get_band */ - 157, /* field[157] = resp_wifi_get_bandmode */ - 135, /* field[135] = resp_wifi_get_bandwidth */ - 153, /* field[153] = resp_wifi_get_bandwidths */ - 137, /* field[137] = resp_wifi_get_channel */ - 122, /* field[122] = resp_wifi_get_config */ - 139, /* field[139] = resp_wifi_get_country */ - 146, /* field[146] = resp_wifi_get_country_code */ - 144, /* field[144] = resp_wifi_get_inactive_time */ - 133, /* field[133] = resp_wifi_get_protocol */ - 151, /* field[151] = resp_wifi_get_protocols */ - 108, /* field[108] = resp_wifi_get_ps */ - 115, /* field[115] = resp_wifi_init */ - 128, /* field[128] = resp_wifi_restore */ - 125, /* field[125] = resp_wifi_scan_get_ap_num */ - 159, /* field[159] = resp_wifi_scan_get_ap_record */ - 126, /* field[126] = resp_wifi_scan_get_ap_records */ - 123, /* field[123] = resp_wifi_scan_start */ - 124, /* field[124] = resp_wifi_scan_stop */ - 154, /* field[154] = resp_wifi_set_band */ - 156, /* field[156] = resp_wifi_set_bandmode */ - 134, /* field[134] = resp_wifi_set_bandwidth */ - 152, /* field[152] = resp_wifi_set_bandwidths */ - 136, /* field[136] = resp_wifi_set_channel */ - 121, /* field[121] = resp_wifi_set_config */ - 138, /* field[138] = resp_wifi_set_country */ - 145, /* field[145] = resp_wifi_set_country_code */ - 143, /* field[143] = resp_wifi_set_inactive_time */ - 189, /* field[189] = resp_wifi_set_okc_support */ - 132, /* field[132] = resp_wifi_set_protocol */ - 150, /* field[150] = resp_wifi_set_protocols */ - 107, /* field[107] = resp_wifi_set_ps */ - 142, /* field[142] = resp_wifi_set_storage */ - 170, /* field[170] = resp_wifi_sta_enterprise_disable */ - 169, /* field[169] = resp_wifi_sta_enterprise_enable */ - 147, /* field[147] = resp_wifi_sta_get_aid */ - 131, /* field[131] = resp_wifi_sta_get_ap_info */ - 148, /* field[148] = resp_wifi_sta_get_negotiated_phymode */ - 149, /* field[149] = resp_wifi_sta_get_rssi */ - 166, /* field[166] = resp_wifi_sta_itwt_get_flow_id_status */ - 167, /* field[167] = resp_wifi_sta_itwt_send_probe_req */ - 168, /* field[168] = resp_wifi_sta_itwt_set_target_wake_time_offset */ - 163, /* field[163] = resp_wifi_sta_itwt_setup */ - 165, /* field[165] = resp_wifi_sta_itwt_suspend */ - 164, /* field[164] = resp_wifi_sta_itwt_teardown */ - 162, /* field[162] = resp_wifi_sta_twt_config */ - 117, /* field[117] = resp_wifi_start */ - 118, /* field[118] = resp_wifi_stop */ + 117, /* field[117] = resp_config_heartbeat */ + 183, /* field[183] = resp_eap_clear_ca_cert */ + 185, /* field[185] = resp_eap_clear_certificate_and_key */ + 175, /* field[175] = resp_eap_clear_identity */ + 181, /* field[181] = resp_eap_clear_new_password */ + 179, /* field[179] = resp_eap_clear_password */ + 177, /* field[177] = resp_eap_clear_username */ + 186, /* field[186] = resp_eap_get_disable_time_check */ + 182, /* field[182] = resp_eap_set_ca_cert */ + 184, /* field[184] = resp_eap_set_certificate_and_key */ + 194, /* field[194] = resp_eap_set_disable_time_check */ + 193, /* field[193] = resp_eap_set_domain_name */ + 195, /* field[195] = resp_eap_set_eap_methods */ + 190, /* field[190] = resp_eap_set_fast_params */ + 174, /* field[174] = resp_eap_set_identity */ + 180, /* field[180] = resp_eap_set_new_password */ + 189, /* field[189] = resp_eap_set_pac_file */ + 178, /* field[178] = resp_eap_set_password */ + 188, /* field[188] = resp_eap_set_suiteb_certification */ + 187, /* field[187] = resp_eap_set_ttls_phase2_method */ + 176, /* field[176] = resp_eap_set_username */ + 191, /* field[191] = resp_eap_use_default_cert_bundle */ + 198, /* field[198] = resp_feature_control */ + 161, /* field[161] = resp_get_coprocessor_fwversion */ + 164, /* field[164] = resp_get_dhcp_dns */ + 101, /* field[101] = resp_get_mac_address */ + 116, /* field[116] = resp_get_wifi_max_tx_power */ + 103, /* field[103] = resp_get_wifi_mode */ + 197, /* field[197] = resp_iface_mac_addr_len_get */ + 196, /* field[196] = resp_iface_mac_addr_set_get */ + 112, /* field[112] = resp_ota_begin */ + 114, /* field[114] = resp_ota_end */ + 113, /* field[113] = resp_ota_write */ + 163, /* field[163] = resp_set_dhcp_dns */ + 102, /* field[102] = resp_set_mac_address */ + 115, /* field[115] = resp_set_wifi_max_tx_power */ + 104, /* field[104] = resp_set_wifi_mode */ + 107, /* field[107] = resp_supp_dpp_bootstrap_gen */ + 106, /* field[106] = resp_supp_dpp_deinit */ + 105, /* field[105] = resp_supp_dpp_init */ + 108, /* field[108] = resp_supp_dpp_start_listen */ + 109, /* field[109] = resp_supp_dpp_stop_listen */ + 144, /* field[144] = resp_wifi_ap_get_sta_aid */ + 143, /* field[143] = resp_wifi_ap_get_sta_list */ + 130, /* field[130] = resp_wifi_clear_ap_list */ + 132, /* field[132] = resp_wifi_clear_fast_connect */ + 122, /* field[122] = resp_wifi_connect */ + 133, /* field[133] = resp_wifi_deauth_sta */ + 119, /* field[119] = resp_wifi_deinit */ + 123, /* field[123] = resp_wifi_disconnect */ + 158, /* field[158] = resp_wifi_get_band */ + 160, /* field[160] = resp_wifi_get_bandmode */ + 138, /* field[138] = resp_wifi_get_bandwidth */ + 156, /* field[156] = resp_wifi_get_bandwidths */ + 140, /* field[140] = resp_wifi_get_channel */ + 125, /* field[125] = resp_wifi_get_config */ + 142, /* field[142] = resp_wifi_get_country */ + 149, /* field[149] = resp_wifi_get_country_code */ + 147, /* field[147] = resp_wifi_get_inactive_time */ + 136, /* field[136] = resp_wifi_get_protocol */ + 154, /* field[154] = resp_wifi_get_protocols */ + 111, /* field[111] = resp_wifi_get_ps */ + 118, /* field[118] = resp_wifi_init */ + 131, /* field[131] = resp_wifi_restore */ + 128, /* field[128] = resp_wifi_scan_get_ap_num */ + 162, /* field[162] = resp_wifi_scan_get_ap_record */ + 129, /* field[129] = resp_wifi_scan_get_ap_records */ + 126, /* field[126] = resp_wifi_scan_start */ + 127, /* field[127] = resp_wifi_scan_stop */ + 157, /* field[157] = resp_wifi_set_band */ + 159, /* field[159] = resp_wifi_set_bandmode */ + 137, /* field[137] = resp_wifi_set_bandwidth */ + 155, /* field[155] = resp_wifi_set_bandwidths */ + 139, /* field[139] = resp_wifi_set_channel */ + 124, /* field[124] = resp_wifi_set_config */ + 141, /* field[141] = resp_wifi_set_country */ + 148, /* field[148] = resp_wifi_set_country_code */ + 146, /* field[146] = resp_wifi_set_inactive_time */ + 192, /* field[192] = resp_wifi_set_okc_support */ + 135, /* field[135] = resp_wifi_set_protocol */ + 153, /* field[153] = resp_wifi_set_protocols */ + 110, /* field[110] = resp_wifi_set_ps */ + 145, /* field[145] = resp_wifi_set_storage */ + 173, /* field[173] = resp_wifi_sta_enterprise_disable */ + 172, /* field[172] = resp_wifi_sta_enterprise_enable */ + 150, /* field[150] = resp_wifi_sta_get_aid */ + 134, /* field[134] = resp_wifi_sta_get_ap_info */ + 151, /* field[151] = resp_wifi_sta_get_negotiated_phymode */ + 152, /* field[152] = resp_wifi_sta_get_rssi */ + 169, /* field[169] = resp_wifi_sta_itwt_get_flow_id_status */ + 170, /* field[170] = resp_wifi_sta_itwt_send_probe_req */ + 171, /* field[171] = resp_wifi_sta_itwt_set_target_wake_time_offset */ + 166, /* field[166] = resp_wifi_sta_itwt_setup */ + 168, /* field[168] = resp_wifi_sta_itwt_suspend */ + 167, /* field[167] = resp_wifi_sta_itwt_teardown */ + 165, /* field[165] = resp_wifi_sta_twt_config */ + 120, /* field[120] = resp_wifi_start */ + 121, /* field[121] = resp_wifi_stop */ 2, /* field[2] = uid */ }; static const ProtobufCIntRange rpc__number_ranges[18 + 1] = @@ -27177,16 +27909,16 @@ static const ProtobufCIntRange rpc__number_ranges[18 + 1] = { 334, 50 }, { 338, 52 }, { 341, 54 }, - { 513, 98 }, - { 526, 107 }, - { 553, 132 }, - { 567, 140 }, - { 581, 143 }, - { 590, 145 }, - { 594, 147 }, - { 597, 149 }, - { 769, 193 }, - { 0, 212 } + { 513, 101 }, + { 526, 110 }, + { 553, 135 }, + { 567, 143 }, + { 581, 146 }, + { 590, 148 }, + { 594, 150 }, + { 597, 152 }, + { 769, 199 }, + { 0, 218 } }; const ProtobufCMessageDescriptor rpc__descriptor = { @@ -27196,7 +27928,7 @@ const ProtobufCMessageDescriptor rpc__descriptor = "Rpc", "", sizeof(Rpc), - 212, + 218, rpc__field_descriptors, rpc__field_indices_by_name, 18, rpc__number_ranges, @@ -27373,7 +28105,97 @@ const ProtobufCEnumDescriptor rpc_type__descriptor = rpc_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; -static const ProtobufCEnumValue rpc_id__enum_values_by_number[270] = +static const ProtobufCEnumValue rpc_feature__enum_values_by_number[2] = +{ + { "Feature_None", "RPC_FEATURE__Feature_None", 0 }, + { "Feature_Bluetooth", "RPC_FEATURE__Feature_Bluetooth", 1 }, +}; +static const ProtobufCIntRange rpc_feature__value_ranges[] = { +{0, 0},{0, 2} +}; +static const ProtobufCEnumValueIndex rpc_feature__enum_values_by_name[2] = +{ + { "Feature_Bluetooth", 1 }, + { "Feature_None", 0 }, +}; +const ProtobufCEnumDescriptor rpc_feature__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "RpcFeature", + "RpcFeature", + "RpcFeature", + "", + 2, + rpc_feature__enum_values_by_number, + 2, + rpc_feature__enum_values_by_name, + 1, + rpc_feature__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue rpc_feature_command__enum_values_by_number[5] = +{ + { "Feature_Command_None", "RPC_FEATURE_COMMAND__Feature_Command_None", 0 }, + { "Feature_Command_BT_Init", "RPC_FEATURE_COMMAND__Feature_Command_BT_Init", 1 }, + { "Feature_Command_BT_Deinit", "RPC_FEATURE_COMMAND__Feature_Command_BT_Deinit", 2 }, + { "Feature_Command_BT_Enable", "RPC_FEATURE_COMMAND__Feature_Command_BT_Enable", 3 }, + { "Feature_Command_BT_Disable", "RPC_FEATURE_COMMAND__Feature_Command_BT_Disable", 4 }, +}; +static const ProtobufCIntRange rpc_feature_command__value_ranges[] = { +{0, 0},{0, 5} +}; +static const ProtobufCEnumValueIndex rpc_feature_command__enum_values_by_name[5] = +{ + { "Feature_Command_BT_Deinit", 2 }, + { "Feature_Command_BT_Disable", 4 }, + { "Feature_Command_BT_Enable", 3 }, + { "Feature_Command_BT_Init", 1 }, + { "Feature_Command_None", 0 }, +}; +const ProtobufCEnumDescriptor rpc_feature_command__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "RpcFeatureCommand", + "RpcFeatureCommand", + "RpcFeatureCommand", + "", + 5, + rpc_feature_command__enum_values_by_number, + 5, + rpc_feature_command__enum_values_by_name, + 1, + rpc_feature_command__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue rpc_feature_option__enum_values_by_number[2] = +{ + { "Feature_Option_None", "RPC_FEATURE_OPTION__Feature_Option_None", 0 }, + { "Feature_Option_BT_Deinit_Release_Memory", "RPC_FEATURE_OPTION__Feature_Option_BT_Deinit_Release_Memory", 1 }, +}; +static const ProtobufCIntRange rpc_feature_option__value_ranges[] = { +{0, 0},{0, 2} +}; +static const ProtobufCEnumValueIndex rpc_feature_option__enum_values_by_name[2] = +{ + { "Feature_Option_BT_Deinit_Release_Memory", 1 }, + { "Feature_Option_None", 0 }, +}; +const ProtobufCEnumDescriptor rpc_feature_option__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "RpcFeatureOption", + "RpcFeatureOption", + "RpcFeatureOption", + "", + 2, + rpc_feature_option__enum_values_by_number, + 2, + rpc_feature_option__enum_values_by_name, + 1, + rpc_feature_option__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue rpc_id__enum_values_by_number[276] = { { "MsgId_Invalid", "RPC_ID__MsgId_Invalid", 0 }, { "Req_Base", "RPC_ID__Req_Base", 256 }, @@ -27499,7 +28321,10 @@ static const ProtobufCEnumValue rpc_id__enum_values_by_number[270] = { "Req_EapSetDomainName", "RPC_ID__Req_EapSetDomainName", 382 }, { "Req_EapSetDisableTimeCheck", "RPC_ID__Req_EapSetDisableTimeCheck", 383 }, { "Req_EapSetEapMethods", "RPC_ID__Req_EapSetEapMethods", 384 }, - { "Req_Max", "RPC_ID__Req_Max", 385 }, + { "Req_IfaceMacAddrSetGet", "RPC_ID__Req_IfaceMacAddrSetGet", 385 }, + { "Req_IfaceMacAddrLenGet", "RPC_ID__Req_IfaceMacAddrLenGet", 386 }, + { "Req_FeatureControl", "RPC_ID__Req_FeatureControl", 387 }, + { "Req_Max", "RPC_ID__Req_Max", 388 }, { "Resp_Base", "RPC_ID__Resp_Base", 512 }, { "Resp_GetMACAddress", "RPC_ID__Resp_GetMACAddress", 513 }, { "Resp_SetMacAddress", "RPC_ID__Resp_SetMacAddress", 514 }, @@ -27623,7 +28448,10 @@ static const ProtobufCEnumValue rpc_id__enum_values_by_number[270] = { "Resp_EapSetDomainName", "RPC_ID__Resp_EapSetDomainName", 638 }, { "Resp_EapSetDisableTimeCheck", "RPC_ID__Resp_EapSetDisableTimeCheck", 639 }, { "Resp_EapSetEapMethods", "RPC_ID__Resp_EapSetEapMethods", 640 }, - { "Resp_Max", "RPC_ID__Resp_Max", 641 }, + { "Resp_IfaceMacAddrSetGet", "RPC_ID__Resp_IfaceMacAddrSetGet", 641 }, + { "Resp_IfaceMacAddrLenGet", "RPC_ID__Resp_IfaceMacAddrLenGet", 642 }, + { "Resp_FeatureControl", "RPC_ID__Resp_FeatureControl", 643 }, + { "Resp_Max", "RPC_ID__Resp_Max", 644 }, { "Event_Base", "RPC_ID__Event_Base", 768 }, { "Event_ESPInit", "RPC_ID__Event_ESPInit", 769 }, { "Event_Heartbeat", "RPC_ID__Event_Heartbeat", 770 }, @@ -27647,31 +28475,31 @@ static const ProtobufCEnumValue rpc_id__enum_values_by_number[270] = { "Event_Max", "RPC_ID__Event_Max", 788 }, }; static const ProtobufCIntRange rpc_id__value_ranges[] = { -{0, 0},{256, 1},{270, 11},{297, 36},{512, 125},{526, 135},{553, 160},{768, 249},{0, 270} -}; -static const ProtobufCEnumValueIndex rpc_id__enum_values_by_name[270] = -{ - { "Event_AP_StaConnected", 252 }, - { "Event_AP_StaDisconnected", 253 }, - { "Event_Base", 249 }, - { "Event_DhcpDnsStatus", 258 }, - { "Event_ESPInit", 250 }, - { "Event_Heartbeat", 251 }, - { "Event_Max", 269 }, - { "Event_StaConnected", 256 }, - { "Event_StaDisconnected", 257 }, - { "Event_StaItwtProbe", 262 }, - { "Event_StaItwtSetup", 259 }, - { "Event_StaItwtSuspend", 261 }, - { "Event_StaItwtTeardown", 260 }, - { "Event_StaScanDone", 255 }, - { "Event_SuppDppCfgRecvd", 264 }, - { "Event_SuppDppFail", 265 }, - { "Event_SuppDppUriReady", 263 }, - { "Event_WifiDppCfgRecvd", 267 }, - { "Event_WifiDppFail", 268 }, - { "Event_WifiDppUriReady", 266 }, - { "Event_WifiEventNoArgs", 254 }, +{0, 0},{256, 1},{270, 11},{297, 36},{512, 128},{526, 138},{553, 163},{768, 255},{0, 276} +}; +static const ProtobufCEnumValueIndex rpc_id__enum_values_by_name[276] = +{ + { "Event_AP_StaConnected", 258 }, + { "Event_AP_StaDisconnected", 259 }, + { "Event_Base", 255 }, + { "Event_DhcpDnsStatus", 264 }, + { "Event_ESPInit", 256 }, + { "Event_Heartbeat", 257 }, + { "Event_Max", 275 }, + { "Event_StaConnected", 262 }, + { "Event_StaDisconnected", 263 }, + { "Event_StaItwtProbe", 268 }, + { "Event_StaItwtSetup", 265 }, + { "Event_StaItwtSuspend", 267 }, + { "Event_StaItwtTeardown", 266 }, + { "Event_StaScanDone", 261 }, + { "Event_SuppDppCfgRecvd", 270 }, + { "Event_SuppDppFail", 271 }, + { "Event_SuppDppUriReady", 269 }, + { "Event_WifiDppCfgRecvd", 273 }, + { "Event_WifiDppFail", 274 }, + { "Event_WifiDppUriReady", 272 }, + { "Event_WifiEventNoArgs", 260 }, { "MsgId_Invalid", 0 }, { "Req_Base", 1 }, { "Req_ConfigHeartbeat", 18 }, @@ -27696,11 +28524,14 @@ static const ProtobufCEnumValueIndex rpc_id__enum_values_by_name[270] = { "Req_EapSetTtlsPhase2Method", 115 }, { "Req_EapSetUsername", 104 }, { "Req_EapUseDefaultCertBundle", 119 }, + { "Req_FeatureControl", 126 }, { "Req_GetCoprocessorFwVersion", 89 }, { "Req_GetDhcpDnsStatus", 92 }, { "Req_GetMACAddress", 2 }, { "Req_GetWifiMode", 4 }, - { "Req_Max", 124 }, + { "Req_IfaceMacAddrLenGet", 125 }, + { "Req_IfaceMacAddrSetGet", 124 }, + { "Req_Max", 127 }, { "Req_OTABegin", 13 }, { "Req_OTAEnd", 15 }, { "Req_OTAWrite", 14 }, @@ -27797,130 +28628,133 @@ static const ProtobufCEnumValueIndex rpc_id__enum_values_by_name[270] = { "Req_WifiStart", 21 }, { "Req_WifiStatisDump", 66 }, { "Req_WifiStop", 22 }, - { "Resp_Base", 125 }, - { "Resp_ConfigHeartbeat", 142 }, - { "Resp_EapClearCaCert", 235 }, - { "Resp_EapClearCertificateAndKey", 237 }, - { "Resp_EapClearIdentity", 227 }, - { "Resp_EapClearNewPassword", 233 }, - { "Resp_EapClearPassword", 231 }, - { "Resp_EapClearUsername", 229 }, - { "Resp_EapGetDisableTimeCheck", 238 }, - { "Resp_EapSetCaCert", 234 }, - { "Resp_EapSetCertificateAndKey", 236 }, - { "Resp_EapSetDisableTimeCheck", 246 }, - { "Resp_EapSetDomainName", 245 }, - { "Resp_EapSetEapMethods", 247 }, - { "Resp_EapSetFastParams", 242 }, - { "Resp_EapSetIdentity", 226 }, - { "Resp_EapSetNewPassword", 232 }, - { "Resp_EapSetPacFile", 241 }, - { "Resp_EapSetPassword", 230 }, - { "Resp_EapSetSuitebCertification", 240 }, - { "Resp_EapSetTtlsPhase2Method", 239 }, - { "Resp_EapSetUsername", 228 }, - { "Resp_EapUseDefaultCertBundle", 243 }, - { "Resp_GetCoprocessorFwVersion", 213 }, - { "Resp_GetDhcpDnsStatus", 216 }, - { "Resp_GetMACAddress", 126 }, - { "Resp_GetWifiMode", 128 }, - { "Resp_Max", 248 }, - { "Resp_OTABegin", 137 }, - { "Resp_OTAEnd", 139 }, - { "Resp_OTAWrite", 138 }, - { "Resp_SetDhcpDnsStatus", 215 }, - { "Resp_SetMacAddress", 127 }, - { "Resp_SetWifiMode", 129 }, - { "Resp_SuppDppBootstrapGen", 132 }, - { "Resp_SuppDppDeinit", 131 }, - { "Resp_SuppDppInit", 130 }, - { "Resp_SuppDppStartListen", 133 }, - { "Resp_SuppDppStopListen", 134 }, - { "Resp_Wifi80211Tx", 180 }, - { "Resp_WifiApGetStaAid", 175 }, - { "Resp_WifiApGetStaList", 174 }, - { "Resp_WifiClearApList", 155 }, - { "Resp_WifiClearFastConnect", 157 }, - { "Resp_WifiConfig11bRate", 195 }, - { "Resp_WifiConfig80211TxRate", 199 }, - { "Resp_WifiConnect", 147 }, - { "Resp_WifiConnectionlessModuleSetWakeInterval", 196 }, - { "Resp_WifiDeauthSta", 158 }, - { "Resp_WifiDeinit", 144 }, - { "Resp_WifiDisablePmfConfig", 200 }, - { "Resp_WifiDisconnect", 148 }, - { "Resp_WifiFtmEndSession", 193 }, - { "Resp_WifiFtmInitiateSession", 192 }, - { "Resp_WifiFtmRespSetOffset", 194 }, - { "Resp_WifiGetAnt", 186 }, - { "Resp_WifiGetAntGpio", 184 }, - { "Resp_WifiGetBand", 210 }, - { "Resp_WifiGetBandMode", 212 }, - { "Resp_WifiGetBandwidth", 163 }, - { "Resp_WifiGetBandwidths", 208 }, - { "Resp_WifiGetChannel", 165 }, - { "Resp_WifiGetConfig", 150 }, - { "Resp_WifiGetCountry", 167 }, - { "Resp_WifiGetCountryCode", 198 }, - { "Resp_WifiGetEventMask", 179 }, - { "Resp_WifiGetInactiveTime", 189 }, - { "Resp_WifiGetMaxTxPower", 141 }, - { "Resp_WifiGetPromiscuous", 169 }, - { "Resp_WifiGetPromiscuousCtrlFilter", 173 }, - { "Resp_WifiGetPromiscuousFilter", 171 }, - { "Resp_WifiGetProtocol", 161 }, - { "Resp_WifiGetProtocols", 206 }, - { "Resp_WifiGetPs", 136 }, - { "Resp_WifiGetTsfTime", 187 }, - { "Resp_WifiInit", 143 }, - { "Resp_WifiRestore", 156 }, - { "Resp_WifiScanGetApNum", 153 }, - { "Resp_WifiScanGetApRecord", 214 }, - { "Resp_WifiScanGetApRecords", 154 }, - { "Resp_WifiScanStart", 151 }, - { "Resp_WifiScanStop", 152 }, - { "Resp_WifiSetAnt", 185 }, - { "Resp_WifiSetAntGpio", 183 }, - { "Resp_WifiSetBand", 209 }, - { "Resp_WifiSetBandMode", 211 }, - { "Resp_WifiSetBandwidth", 162 }, - { "Resp_WifiSetBandwidths", 207 }, - { "Resp_WifiSetChannel", 164 }, - { "Resp_WifiSetConfig", 149 }, - { "Resp_WifiSetCountry", 166 }, - { "Resp_WifiSetCountryCode", 197 }, - { "Resp_WifiSetCsi", 182 }, - { "Resp_WifiSetCsiConfig", 181 }, - { "Resp_WifiSetDynamicCs", 203 }, - { "Resp_WifiSetEventMask", 178 }, - { "Resp_WifiSetInactiveTime", 188 }, - { "Resp_WifiSetMaxTxPower", 140 }, - { "Resp_WifiSetOkcSupport", 244 }, - { "Resp_WifiSetPromiscuous", 168 }, - { "Resp_WifiSetPromiscuousCtrlFilter", 172 }, - { "Resp_WifiSetPromiscuousFilter", 170 }, - { "Resp_WifiSetProtocol", 160 }, - { "Resp_WifiSetProtocols", 205 }, - { "Resp_WifiSetPs", 135 }, - { "Resp_WifiSetRssiThreshold", 191 }, - { "Resp_WifiSetStorage", 176 }, - { "Resp_WifiSetVendorIe", 177 }, - { "Resp_WifiStaEnterpriseDisable", 225 }, - { "Resp_WifiStaEnterpriseEnable", 224 }, - { "Resp_WifiStaGetAid", 201 }, - { "Resp_WifiStaGetApInfo", 159 }, - { "Resp_WifiStaGetNegotiatedPhymode", 202 }, - { "Resp_WifiStaGetRssi", 204 }, - { "Resp_WifiStaItwtGetFlowIdStatus", 221 }, - { "Resp_WifiStaItwtSendProbeReq", 222 }, - { "Resp_WifiStaItwtSetTargetWakeTimeOffset", 223 }, - { "Resp_WifiStaItwtSetup", 218 }, - { "Resp_WifiStaItwtSuspend", 220 }, - { "Resp_WifiStaItwtTeardown", 219 }, - { "Resp_WifiStaTwtConfig", 217 }, - { "Resp_WifiStart", 145 }, - { "Resp_WifiStatisDump", 190 }, - { "Resp_WifiStop", 146 }, + { "Resp_Base", 128 }, + { "Resp_ConfigHeartbeat", 145 }, + { "Resp_EapClearCaCert", 238 }, + { "Resp_EapClearCertificateAndKey", 240 }, + { "Resp_EapClearIdentity", 230 }, + { "Resp_EapClearNewPassword", 236 }, + { "Resp_EapClearPassword", 234 }, + { "Resp_EapClearUsername", 232 }, + { "Resp_EapGetDisableTimeCheck", 241 }, + { "Resp_EapSetCaCert", 237 }, + { "Resp_EapSetCertificateAndKey", 239 }, + { "Resp_EapSetDisableTimeCheck", 249 }, + { "Resp_EapSetDomainName", 248 }, + { "Resp_EapSetEapMethods", 250 }, + { "Resp_EapSetFastParams", 245 }, + { "Resp_EapSetIdentity", 229 }, + { "Resp_EapSetNewPassword", 235 }, + { "Resp_EapSetPacFile", 244 }, + { "Resp_EapSetPassword", 233 }, + { "Resp_EapSetSuitebCertification", 243 }, + { "Resp_EapSetTtlsPhase2Method", 242 }, + { "Resp_EapSetUsername", 231 }, + { "Resp_EapUseDefaultCertBundle", 246 }, + { "Resp_FeatureControl", 253 }, + { "Resp_GetCoprocessorFwVersion", 216 }, + { "Resp_GetDhcpDnsStatus", 219 }, + { "Resp_GetMACAddress", 129 }, + { "Resp_GetWifiMode", 131 }, + { "Resp_IfaceMacAddrLenGet", 252 }, + { "Resp_IfaceMacAddrSetGet", 251 }, + { "Resp_Max", 254 }, + { "Resp_OTABegin", 140 }, + { "Resp_OTAEnd", 142 }, + { "Resp_OTAWrite", 141 }, + { "Resp_SetDhcpDnsStatus", 218 }, + { "Resp_SetMacAddress", 130 }, + { "Resp_SetWifiMode", 132 }, + { "Resp_SuppDppBootstrapGen", 135 }, + { "Resp_SuppDppDeinit", 134 }, + { "Resp_SuppDppInit", 133 }, + { "Resp_SuppDppStartListen", 136 }, + { "Resp_SuppDppStopListen", 137 }, + { "Resp_Wifi80211Tx", 183 }, + { "Resp_WifiApGetStaAid", 178 }, + { "Resp_WifiApGetStaList", 177 }, + { "Resp_WifiClearApList", 158 }, + { "Resp_WifiClearFastConnect", 160 }, + { "Resp_WifiConfig11bRate", 198 }, + { "Resp_WifiConfig80211TxRate", 202 }, + { "Resp_WifiConnect", 150 }, + { "Resp_WifiConnectionlessModuleSetWakeInterval", 199 }, + { "Resp_WifiDeauthSta", 161 }, + { "Resp_WifiDeinit", 147 }, + { "Resp_WifiDisablePmfConfig", 203 }, + { "Resp_WifiDisconnect", 151 }, + { "Resp_WifiFtmEndSession", 196 }, + { "Resp_WifiFtmInitiateSession", 195 }, + { "Resp_WifiFtmRespSetOffset", 197 }, + { "Resp_WifiGetAnt", 189 }, + { "Resp_WifiGetAntGpio", 187 }, + { "Resp_WifiGetBand", 213 }, + { "Resp_WifiGetBandMode", 215 }, + { "Resp_WifiGetBandwidth", 166 }, + { "Resp_WifiGetBandwidths", 211 }, + { "Resp_WifiGetChannel", 168 }, + { "Resp_WifiGetConfig", 153 }, + { "Resp_WifiGetCountry", 170 }, + { "Resp_WifiGetCountryCode", 201 }, + { "Resp_WifiGetEventMask", 182 }, + { "Resp_WifiGetInactiveTime", 192 }, + { "Resp_WifiGetMaxTxPower", 144 }, + { "Resp_WifiGetPromiscuous", 172 }, + { "Resp_WifiGetPromiscuousCtrlFilter", 176 }, + { "Resp_WifiGetPromiscuousFilter", 174 }, + { "Resp_WifiGetProtocol", 164 }, + { "Resp_WifiGetProtocols", 209 }, + { "Resp_WifiGetPs", 139 }, + { "Resp_WifiGetTsfTime", 190 }, + { "Resp_WifiInit", 146 }, + { "Resp_WifiRestore", 159 }, + { "Resp_WifiScanGetApNum", 156 }, + { "Resp_WifiScanGetApRecord", 217 }, + { "Resp_WifiScanGetApRecords", 157 }, + { "Resp_WifiScanStart", 154 }, + { "Resp_WifiScanStop", 155 }, + { "Resp_WifiSetAnt", 188 }, + { "Resp_WifiSetAntGpio", 186 }, + { "Resp_WifiSetBand", 212 }, + { "Resp_WifiSetBandMode", 214 }, + { "Resp_WifiSetBandwidth", 165 }, + { "Resp_WifiSetBandwidths", 210 }, + { "Resp_WifiSetChannel", 167 }, + { "Resp_WifiSetConfig", 152 }, + { "Resp_WifiSetCountry", 169 }, + { "Resp_WifiSetCountryCode", 200 }, + { "Resp_WifiSetCsi", 185 }, + { "Resp_WifiSetCsiConfig", 184 }, + { "Resp_WifiSetDynamicCs", 206 }, + { "Resp_WifiSetEventMask", 181 }, + { "Resp_WifiSetInactiveTime", 191 }, + { "Resp_WifiSetMaxTxPower", 143 }, + { "Resp_WifiSetOkcSupport", 247 }, + { "Resp_WifiSetPromiscuous", 171 }, + { "Resp_WifiSetPromiscuousCtrlFilter", 175 }, + { "Resp_WifiSetPromiscuousFilter", 173 }, + { "Resp_WifiSetProtocol", 163 }, + { "Resp_WifiSetProtocols", 208 }, + { "Resp_WifiSetPs", 138 }, + { "Resp_WifiSetRssiThreshold", 194 }, + { "Resp_WifiSetStorage", 179 }, + { "Resp_WifiSetVendorIe", 180 }, + { "Resp_WifiStaEnterpriseDisable", 228 }, + { "Resp_WifiStaEnterpriseEnable", 227 }, + { "Resp_WifiStaGetAid", 204 }, + { "Resp_WifiStaGetApInfo", 162 }, + { "Resp_WifiStaGetNegotiatedPhymode", 205 }, + { "Resp_WifiStaGetRssi", 207 }, + { "Resp_WifiStaItwtGetFlowIdStatus", 224 }, + { "Resp_WifiStaItwtSendProbeReq", 225 }, + { "Resp_WifiStaItwtSetTargetWakeTimeOffset", 226 }, + { "Resp_WifiStaItwtSetup", 221 }, + { "Resp_WifiStaItwtSuspend", 223 }, + { "Resp_WifiStaItwtTeardown", 222 }, + { "Resp_WifiStaTwtConfig", 220 }, + { "Resp_WifiStart", 148 }, + { "Resp_WifiStatisDump", 193 }, + { "Resp_WifiStop", 149 }, }; const ProtobufCEnumDescriptor rpc_id__descriptor = { @@ -27929,9 +28763,9 @@ const ProtobufCEnumDescriptor rpc_id__descriptor = "RpcId", "RpcId", "", - 270, + 276, rpc_id__enum_values_by_number, - 270, + 276, rpc_id__enum_values_by_name, 8, rpc_id__value_ranges, diff --git a/common/proto/esp_hosted_rpc.pb-c.h b/common/proto/esp_hosted_rpc.pb-c.h index 63ee7f19..210d3140 100644 --- a/common/proto/esp_hosted_rpc.pb-c.h +++ b/common/proto/esp_hosted_rpc.pb-c.h @@ -205,6 +205,12 @@ typedef struct RpcReqSuppDppStartListen RpcReqSuppDppStartListen; typedef struct RpcRespSuppDppStartListen RpcRespSuppDppStartListen; typedef struct RpcReqSuppDppStopListen RpcReqSuppDppStopListen; typedef struct RpcRespSuppDppStopListen RpcRespSuppDppStopListen; +typedef struct RpcReqIfaceMacAddrSetGet RpcReqIfaceMacAddrSetGet; +typedef struct RpcRespIfaceMacAddrSetGet RpcRespIfaceMacAddrSetGet; +typedef struct RpcReqIfaceMacAddrLenGet RpcReqIfaceMacAddrLenGet; +typedef struct RpcRespIfaceMacAddrLenGet RpcRespIfaceMacAddrLenGet; +typedef struct RpcReqFeatureControl RpcReqFeatureControl; +typedef struct RpcRespFeatureControl RpcRespFeatureControl; typedef struct RpcEventWifiEventNoArgs RpcEventWifiEventNoArgs; typedef struct RpcEventESPInit RpcEventESPInit; typedef struct RpcEventHeartbeat RpcEventHeartbeat; @@ -320,6 +326,42 @@ typedef enum _RpcType { RPC_TYPE__MsgType_Max = 4 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(RPC_TYPE) } RpcType; +typedef enum _RpcFeature { + RPC_FEATURE__Feature_None = 0, + /* + * Bluetooth (BT) Feature + */ + /* + * add additional features here + */ + RPC_FEATURE__Feature_Bluetooth = 1 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(RPC_FEATURE) +} RpcFeature; +typedef enum _RpcFeatureCommand { + RPC_FEATURE_COMMAND__Feature_Command_None = 0, + /* + * Bluetooth (BT) Feature Commands + */ + RPC_FEATURE_COMMAND__Feature_Command_BT_Init = 1, + RPC_FEATURE_COMMAND__Feature_Command_BT_Deinit = 2, + RPC_FEATURE_COMMAND__Feature_Command_BT_Enable = 3, + /* + * add additional feature commands here + */ + RPC_FEATURE_COMMAND__Feature_Command_BT_Disable = 4 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(RPC_FEATURE_COMMAND) +} RpcFeatureCommand; +typedef enum _RpcFeatureOption { + RPC_FEATURE_OPTION__Feature_Option_None = 0, + /* + * Bluetooth (BT) Feature Options + */ + /* + * release memory when deinit BT + */ + RPC_FEATURE_OPTION__Feature_Option_BT_Deinit_Release_Memory = 1 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(RPC_FEATURE_OPTION) +} RpcFeatureOption; typedef enum _RpcId { RPC_ID__MsgId_Invalid = 0, /* @@ -827,17 +869,34 @@ typedef enum _RpcId { */ RPC_ID__Req_EapSetDisableTimeCheck = 383, /* - * 0x180 + *0x180 */ RPC_ID__Req_EapSetEapMethods = 384, + /* + *0x181 + */ + RPC_ID__Req_IfaceMacAddrSetGet = 385, + /* + *0x182 + */ + RPC_ID__Req_IfaceMacAddrLenGet = 386, + /* + * Common RPC to handle simple feature control with one optional parameter + * Supported Features: + * - BT Init/Deinit/Enable/Disable + */ + /* + *0x183 + */ + RPC_ID__Req_FeatureControl = 387, /* * Add new control path command response before Req_Max * and update Req_Max */ /* - * 0x181 + *0x184 */ - RPC_ID__Req_Max = 385, + RPC_ID__Req_Max = 388, /* ** Response Msgs * */ @@ -977,11 +1036,14 @@ typedef enum _RpcId { RPC_ID__Resp_EapSetDomainName = 638, RPC_ID__Resp_EapSetDisableTimeCheck = 639, RPC_ID__Resp_EapSetEapMethods = 640, + RPC_ID__Resp_IfaceMacAddrSetGet = 641, + RPC_ID__Resp_IfaceMacAddrLenGet = 642, + RPC_ID__Resp_FeatureControl = 643, /* * Add new control path command response before Resp_Max * and update Resp_Max */ - RPC_ID__Resp_Max = 641, + RPC_ID__Resp_Max = 644, /* ** Event Msgs * */ @@ -3919,6 +3981,81 @@ struct RpcRespSuppDppStopListen , 0 } +struct RpcReqIfaceMacAddrSetGet +{ + ProtobufCMessage base; + protobuf_c_boolean set; + uint32_t type; + /* + * only valid for set + */ + ProtobufCBinaryData mac; +}; +#define RPC__REQ__IFACE_MAC_ADDR_SET_GET__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__iface_mac_addr_set_get__descriptor) \ + , 0, 0, {0,NULL} } + + +struct RpcRespIfaceMacAddrSetGet +{ + ProtobufCMessage base; + int32_t resp; + protobuf_c_boolean set; + uint32_t type; + ProtobufCBinaryData mac; +}; +#define RPC__RESP__IFACE_MAC_ADDR_SET_GET__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__iface_mac_addr_set_get__descriptor) \ + , 0, 0, 0, {0,NULL} } + + +struct RpcReqIfaceMacAddrLenGet +{ + ProtobufCMessage base; + uint32_t type; +}; +#define RPC__REQ__IFACE_MAC_ADDR_LEN_GET__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__iface_mac_addr_len_get__descriptor) \ + , 0 } + + +struct RpcRespIfaceMacAddrLenGet +{ + ProtobufCMessage base; + int32_t resp; + uint32_t type; + uint32_t len; +}; +#define RPC__RESP__IFACE_MAC_ADDR_LEN_GET__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__iface_mac_addr_len_get__descriptor) \ + , 0, 0, 0 } + + +struct RpcReqFeatureControl +{ + ProtobufCMessage base; + RpcFeature feature; + RpcFeatureCommand command; + RpcFeatureOption option; +}; +#define RPC__REQ__FEATURE_CONTROL__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__feature_control__descriptor) \ + , RPC_FEATURE__Feature_None, RPC_FEATURE_COMMAND__Feature_Command_None, RPC_FEATURE_OPTION__Feature_Option_None } + + +struct RpcRespFeatureControl +{ + ProtobufCMessage base; + int32_t resp; + RpcFeature feature; + RpcFeatureCommand command; + RpcFeatureOption option; +}; +#define RPC__RESP__FEATURE_CONTROL__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__feature_control__descriptor) \ + , 0, RPC_FEATURE__Feature_None, RPC_FEATURE_COMMAND__Feature_Command_None, RPC_FEATURE_OPTION__Feature_Option_None } + + struct RpcEventWifiEventNoArgs { ProtobufCMessage base; @@ -4742,6 +4879,9 @@ typedef enum { RPC__PAYLOAD_REQ_EAP_SET_DOMAIN_NAME = 382, RPC__PAYLOAD_REQ_EAP_SET_DISABLE_TIME_CHECK = 383, RPC__PAYLOAD_REQ_EAP_SET_EAP_METHODS = 384, + RPC__PAYLOAD_REQ_IFACE_MAC_ADDR_SET_GET = 385, + RPC__PAYLOAD_REQ_IFACE_MAC_ADDR_LEN_GET = 386, + RPC__PAYLOAD_REQ_FEATURE_CONTROL = 387, RPC__PAYLOAD_RESP_GET_MAC_ADDRESS = 513, RPC__PAYLOAD_RESP_SET_MAC_ADDRESS = 514, RPC__PAYLOAD_RESP_GET_WIFI_MODE = 515, @@ -4837,6 +4977,9 @@ typedef enum { RPC__PAYLOAD_RESP_EAP_SET_DOMAIN_NAME = 638, RPC__PAYLOAD_RESP_EAP_SET_DISABLE_TIME_CHECK = 639, RPC__PAYLOAD_RESP_EAP_SET_EAP_METHODS = 640, + RPC__PAYLOAD_RESP_IFACE_MAC_ADDR_SET_GET = 641, + RPC__PAYLOAD_RESP_IFACE_MAC_ADDR_LEN_GET = 642, + RPC__PAYLOAD_RESP_FEATURE_CONTROL = 643, RPC__PAYLOAD_EVENT_ESP_INIT = 769, RPC__PAYLOAD_EVENT_HEARTBEAT = 770, RPC__PAYLOAD_EVENT_AP_STA_CONNECTED = 771, @@ -4974,6 +5117,9 @@ struct Rpc RpcReqEapSetDomainName *req_eap_set_domain_name; RpcReqEapSetDisableTimeCheck *req_eap_set_disable_time_check; RpcReqEapSetEapMethods *req_eap_set_eap_methods; + RpcReqIfaceMacAddrSetGet *req_iface_mac_addr_set_get; + RpcReqIfaceMacAddrLenGet *req_iface_mac_addr_len_get; + RpcReqFeatureControl *req_feature_control; /* ** Responses * */ @@ -5072,6 +5218,9 @@ struct Rpc RpcRespEapSetDomainName *resp_eap_set_domain_name; RpcRespEapSetDisableTimeCheck *resp_eap_set_disable_time_check; RpcRespEapSetEapMethods *resp_eap_set_eap_methods; + RpcRespIfaceMacAddrSetGet *resp_iface_mac_addr_set_get; + RpcRespIfaceMacAddrLenGet *resp_iface_mac_addr_len_get; + RpcRespFeatureControl *resp_feature_control; /* ** Notifications * */ @@ -8711,6 +8860,120 @@ RpcRespSuppDppStopListen * void rpc__resp__supp_dpp_stop_listen__free_unpacked (RpcRespSuppDppStopListen *message, ProtobufCAllocator *allocator); +/* RpcReqIfaceMacAddrSetGet methods */ +void rpc__req__iface_mac_addr_set_get__init + (RpcReqIfaceMacAddrSetGet *message); +size_t rpc__req__iface_mac_addr_set_get__get_packed_size + (const RpcReqIfaceMacAddrSetGet *message); +size_t rpc__req__iface_mac_addr_set_get__pack + (const RpcReqIfaceMacAddrSetGet *message, + uint8_t *out); +size_t rpc__req__iface_mac_addr_set_get__pack_to_buffer + (const RpcReqIfaceMacAddrSetGet *message, + ProtobufCBuffer *buffer); +RpcReqIfaceMacAddrSetGet * + rpc__req__iface_mac_addr_set_get__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__iface_mac_addr_set_get__free_unpacked + (RpcReqIfaceMacAddrSetGet *message, + ProtobufCAllocator *allocator); +/* RpcRespIfaceMacAddrSetGet methods */ +void rpc__resp__iface_mac_addr_set_get__init + (RpcRespIfaceMacAddrSetGet *message); +size_t rpc__resp__iface_mac_addr_set_get__get_packed_size + (const RpcRespIfaceMacAddrSetGet *message); +size_t rpc__resp__iface_mac_addr_set_get__pack + (const RpcRespIfaceMacAddrSetGet *message, + uint8_t *out); +size_t rpc__resp__iface_mac_addr_set_get__pack_to_buffer + (const RpcRespIfaceMacAddrSetGet *message, + ProtobufCBuffer *buffer); +RpcRespIfaceMacAddrSetGet * + rpc__resp__iface_mac_addr_set_get__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__iface_mac_addr_set_get__free_unpacked + (RpcRespIfaceMacAddrSetGet *message, + ProtobufCAllocator *allocator); +/* RpcReqIfaceMacAddrLenGet methods */ +void rpc__req__iface_mac_addr_len_get__init + (RpcReqIfaceMacAddrLenGet *message); +size_t rpc__req__iface_mac_addr_len_get__get_packed_size + (const RpcReqIfaceMacAddrLenGet *message); +size_t rpc__req__iface_mac_addr_len_get__pack + (const RpcReqIfaceMacAddrLenGet *message, + uint8_t *out); +size_t rpc__req__iface_mac_addr_len_get__pack_to_buffer + (const RpcReqIfaceMacAddrLenGet *message, + ProtobufCBuffer *buffer); +RpcReqIfaceMacAddrLenGet * + rpc__req__iface_mac_addr_len_get__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__iface_mac_addr_len_get__free_unpacked + (RpcReqIfaceMacAddrLenGet *message, + ProtobufCAllocator *allocator); +/* RpcRespIfaceMacAddrLenGet methods */ +void rpc__resp__iface_mac_addr_len_get__init + (RpcRespIfaceMacAddrLenGet *message); +size_t rpc__resp__iface_mac_addr_len_get__get_packed_size + (const RpcRespIfaceMacAddrLenGet *message); +size_t rpc__resp__iface_mac_addr_len_get__pack + (const RpcRespIfaceMacAddrLenGet *message, + uint8_t *out); +size_t rpc__resp__iface_mac_addr_len_get__pack_to_buffer + (const RpcRespIfaceMacAddrLenGet *message, + ProtobufCBuffer *buffer); +RpcRespIfaceMacAddrLenGet * + rpc__resp__iface_mac_addr_len_get__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__iface_mac_addr_len_get__free_unpacked + (RpcRespIfaceMacAddrLenGet *message, + ProtobufCAllocator *allocator); +/* RpcReqFeatureControl methods */ +void rpc__req__feature_control__init + (RpcReqFeatureControl *message); +size_t rpc__req__feature_control__get_packed_size + (const RpcReqFeatureControl *message); +size_t rpc__req__feature_control__pack + (const RpcReqFeatureControl *message, + uint8_t *out); +size_t rpc__req__feature_control__pack_to_buffer + (const RpcReqFeatureControl *message, + ProtobufCBuffer *buffer); +RpcReqFeatureControl * + rpc__req__feature_control__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__feature_control__free_unpacked + (RpcReqFeatureControl *message, + ProtobufCAllocator *allocator); +/* RpcRespFeatureControl methods */ +void rpc__resp__feature_control__init + (RpcRespFeatureControl *message); +size_t rpc__resp__feature_control__get_packed_size + (const RpcRespFeatureControl *message); +size_t rpc__resp__feature_control__pack + (const RpcRespFeatureControl *message, + uint8_t *out); +size_t rpc__resp__feature_control__pack_to_buffer + (const RpcRespFeatureControl *message, + ProtobufCBuffer *buffer); +RpcRespFeatureControl * + rpc__resp__feature_control__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__feature_control__free_unpacked + (RpcRespFeatureControl *message, + ProtobufCAllocator *allocator); /* RpcEventWifiEventNoArgs methods */ void rpc__event__wifi_event_no_args__init (RpcEventWifiEventNoArgs *message); @@ -10575,6 +10838,24 @@ typedef void (*RpcReqSuppDppStopListen_Closure) typedef void (*RpcRespSuppDppStopListen_Closure) (const RpcRespSuppDppStopListen *message, void *closure_data); +typedef void (*RpcReqIfaceMacAddrSetGet_Closure) + (const RpcReqIfaceMacAddrSetGet *message, + void *closure_data); +typedef void (*RpcRespIfaceMacAddrSetGet_Closure) + (const RpcRespIfaceMacAddrSetGet *message, + void *closure_data); +typedef void (*RpcReqIfaceMacAddrLenGet_Closure) + (const RpcReqIfaceMacAddrLenGet *message, + void *closure_data); +typedef void (*RpcRespIfaceMacAddrLenGet_Closure) + (const RpcRespIfaceMacAddrLenGet *message, + void *closure_data); +typedef void (*RpcReqFeatureControl_Closure) + (const RpcReqFeatureControl *message, + void *closure_data); +typedef void (*RpcRespFeatureControl_Closure) + (const RpcRespFeatureControl *message, + void *closure_data); typedef void (*RpcEventWifiEventNoArgs_Closure) (const RpcEventWifiEventNoArgs *message, void *closure_data); @@ -10790,6 +11071,9 @@ extern const ProtobufCEnumDescriptor rpc__wifi_power_save__descriptor; extern const ProtobufCEnumDescriptor rpc__wifi_sec_prot__descriptor; extern const ProtobufCEnumDescriptor rpc__status__descriptor; extern const ProtobufCEnumDescriptor rpc_type__descriptor; +extern const ProtobufCEnumDescriptor rpc_feature__descriptor; +extern const ProtobufCEnumDescriptor rpc_feature_command__descriptor; +extern const ProtobufCEnumDescriptor rpc_feature_option__descriptor; extern const ProtobufCEnumDescriptor rpc_id__descriptor; extern const ProtobufCMessageDescriptor wifi_init_config__descriptor; extern const ProtobufCMessageDescriptor wifi_country__descriptor; @@ -10981,6 +11265,12 @@ extern const ProtobufCMessageDescriptor rpc__req__supp_dpp_start_listen__descrip extern const ProtobufCMessageDescriptor rpc__resp__supp_dpp_start_listen__descriptor; extern const ProtobufCMessageDescriptor rpc__req__supp_dpp_stop_listen__descriptor; extern const ProtobufCMessageDescriptor rpc__resp__supp_dpp_stop_listen__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__iface_mac_addr_set_get__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__iface_mac_addr_set_get__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__iface_mac_addr_len_get__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__iface_mac_addr_len_get__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__feature_control__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__feature_control__descriptor; extern const ProtobufCMessageDescriptor rpc__event__wifi_event_no_args__descriptor; extern const ProtobufCMessageDescriptor rpc__event__espinit__descriptor; extern const ProtobufCMessageDescriptor rpc__event__heartbeat__descriptor; diff --git a/common/proto/esp_hosted_rpc.proto b/common/proto/esp_hosted_rpc.proto index 6f1f4c21..0c2ec585 100644 --- a/common/proto/esp_hosted_rpc.proto +++ b/common/proto/esp_hosted_rpc.proto @@ -45,6 +45,30 @@ MsgType_Invalid = 0; MsgType_Max = 4; } +enum RpcFeature { + Feature_None = 0; + // Bluetooth (BT) Feature + Feature_Bluetooth = 1; + // add additional features here +} + +enum RpcFeatureCommand { + Feature_Command_None = 0; + // Bluetooth (BT) Feature Commands + Feature_Command_BT_Init = 1; + Feature_Command_BT_Deinit = 2; + Feature_Command_BT_Enable = 3; + Feature_Command_BT_Disable = 4; + // add additional feature commands here +} + +enum RpcFeatureOption { + Feature_Option_None = 0; + // Bluetooth (BT) Feature Options + Feature_Option_BT_Deinit_Release_Memory = 1; // release memory when deinit BT + // add additional feature options here +} + enum RpcId { MsgId_Invalid = 0; @@ -204,11 +228,20 @@ enum RpcId { Req_WifiSetOkcSupport = 381; //0x17D Req_EapSetDomainName = 382; //0x17E Req_EapSetDisableTimeCheck = 383; //0x17F - Req_EapSetEapMethods = 384; // 0x180 + Req_EapSetEapMethods = 384; //0x180 + + Req_IfaceMacAddrSetGet = 385; //0x181 + Req_IfaceMacAddrLenGet = 386; //0x182 + + /* Common RPC to handle simple feature control with one optional parameter + * Supported Features: + * - BT Init/Deinit/Enable/Disable + */ + Req_FeatureControl = 387; //0x183 + /* Add new control path command response before Req_Max * and update Req_Max */ - Req_Max = 385; // 0x181 - + Req_Max = 388; //0x184 /** Response Msgs **/ Resp_Base = 512; @@ -367,10 +400,14 @@ enum RpcId { Resp_EapSetDomainName = 638; Resp_EapSetDisableTimeCheck = 639; Resp_EapSetEapMethods = 640; + + Resp_IfaceMacAddrSetGet = 641; + Resp_IfaceMacAddrLenGet = 642; + Resp_FeatureControl = 643; + /* Add new control path command response before Resp_Max * and update Resp_Max */ - Resp_Max = 641; - + Resp_Max = 644; /** Event Msgs **/ Event_Base = 768; @@ -1485,6 +1522,42 @@ message Rpc_Resp_SuppDppStopListen { int32 resp = 1; } +message Rpc_Req_IfaceMacAddrSetGet { + bool set = 1; + uint32 type = 2; + bytes mac = 3; // only valid for set +}; + +message Rpc_Resp_IfaceMacAddrSetGet { + int32 resp = 1; + bool set = 2; + uint32 type = 3; + bytes mac = 4; +}; + +message Rpc_Req_IfaceMacAddrLenGet { + uint32 type = 1; +}; + +message Rpc_Resp_IfaceMacAddrLenGet { + int32 resp = 1; + uint32 type = 2; + uint32 len = 3; +}; + +message Rpc_Req_FeatureControl { + RpcFeature feature = 1; + RpcFeatureCommand command = 2; + RpcFeatureOption option = 3; +}; + +message Rpc_Resp_FeatureControl { + int32 resp = 1; + RpcFeature feature = 2; + RpcFeatureCommand command = 3; + RpcFeatureOption option = 4; +}; + /** Event structure **/ message Rpc_Event_WifiEventNoArgs { @@ -1930,6 +2003,11 @@ message Rpc { Rpc_Req_EapSetDisableTimeCheck req_eap_set_disable_time_check = 383; Rpc_Req_EapSetEapMethods req_eap_set_eap_methods = 384; + Rpc_Req_IfaceMacAddrSetGet req_iface_mac_addr_set_get = 385; + Rpc_Req_IfaceMacAddrLenGet req_iface_mac_addr_len_get = 386; + + Rpc_Req_FeatureControl req_feature_control = 387; + /** Responses **/ Rpc_Resp_GetMacAddress resp_get_mac_address = 513; Rpc_Resp_SetMacAddress resp_set_mac_address = 514; @@ -2024,6 +2102,7 @@ message Rpc { Rpc_Resp_WifiStaItwtGetFlowIdStatus resp_wifi_sta_itwt_get_flow_id_status = 614; Rpc_Resp_WifiStaItwtSendProbeReq resp_wifi_sta_itwt_send_probe_req = 615; Rpc_Resp_WifiStaItwtSetTargetWakeTimeOffset resp_wifi_sta_itwt_set_target_wake_time_offset = 616; + Rpc_Resp_WifiStaEnterpriseEnable resp_wifi_sta_enterprise_enable = 617; Rpc_Resp_WifiStaEnterpriseDisable resp_wifi_sta_enterprise_disable = 618; Rpc_Resp_EapSetIdentity resp_eap_set_identity = 619; @@ -2048,6 +2127,12 @@ message Rpc { Rpc_Resp_EapSetDomainName resp_eap_set_domain_name = 638; Rpc_Resp_EapSetDisableTimeCheck resp_eap_set_disable_time_check = 639; Rpc_Resp_EapSetEapMethods resp_eap_set_eap_methods = 640; + + Rpc_Resp_IfaceMacAddrSetGet resp_iface_mac_addr_set_get = 641; + Rpc_Resp_IfaceMacAddrLenGet resp_iface_mac_addr_len_get = 642; + + Rpc_Resp_FeatureControl resp_feature_control = 643; + /** Notifications **/ Rpc_Event_ESPInit event_esp_init = 769; Rpc_Event_Heartbeat event_heartbeat = 770; diff --git a/docs/bluetooth_design.md b/docs/bluetooth_design.md index cc52e89c..77f162e1 100644 --- a/docs/bluetooth_design.md +++ b/docs/bluetooth_design.md @@ -2,31 +2,39 @@ **Table of Contents** +
+ +Table of Contents + - [1. Introduction](#1-introduction) - - [1.1 Choosing a Bluetooth Host stack](#11-choosing-a-bluetooth-host-stack) + - [1.1 Prerequisites](#11-prerequisites) + - [1.2 Choosing a Bluetooth Host stack](#12-choosing-a-bluetooth-host-stack) - [2. Bluetooth Controller](#2-bluetooth-controller) - [3. Bluetooth Interface](#3-bluetooth-interface) + - [3.1 Initializing the Bluetooth Controller](#31-initializing-the-bluetooth-controller) - [4. NimBLE Host Stack](#4-nimble-host-stack) - [4.1. Transporting HCI data using Hosted HCI in NimBLE](#41-transporting-hci-data-using-hosted-hci-in-nimble) - - [4.1.1. Bluetooth Host Hosted HCI Initialization](#411-bluetooth-host-hosted-hci-initialization) - - [4.1.2. Bluetooth Host Sending Data through Hosted HCI in NimBLE](#412-bluetooth-host-sending-data-through-hosted-hci-in-nimble) - - [4.1.3. Bluetooth Host Receiving Data from Hosted HCI in NimBLE](#413-bluetooth-host-receiving-data-from-hosted-hci-in-nimble) + - [4.1.1. Bluetooth Host Hosted HCI Initialization](#411-bluetooth-host-hosted-hci-initialization) + - [4.1.2. Bluetooth Host Sending Data through Hosted HCI in NimBLE](#412-bluetooth-host-sending-data-through-hosted-hci-in-nimble) + - [4.1.3. Bluetooth Host Receiving Data from Hosted HCI in NimBLE](#413-bluetooth-host-receiving-data-from-hosted-hci-in-nimble) - [4.2. Transporting HCI data using UART](#42-transporting-hci-data-using-uart) - [4.2.1. Bluetooth Host HCI Initialization](#421-bluetooth-host-hci-initialization) - - [4.2.2. Bluetooth Host Sending Data using HCI](#422-bluetooth-host-sending-data-using-hci) - - [4.2.3. Bluetooth Host Receiving Data using HCI](#423-bluetooth-host-receiving-data-using-hci) + - [4.2.2. Bluetooth Host Sending Data using HCI](#422-bluetooth-host-sending-data-using-hci) + - [4.2.3. Bluetooth Host Receiving Data using HCI](#423-bluetooth-host-receiving-data-using-hci) - [5. BlueDroid Host Stack](#5-bluedroid-host-stack) - [5.1. Transporting HCI data using Hosted HCI in BlueDroid](#51-transporting-hci-data-using-hosted-hci-in-bluedroid) - [5.1.1. Bluetooth Host Hosted HCI Initialization](#511-bluetooth-host-hosted-hci-initialization) - - [5.1.2. Bluetooth Host Sending Data through Hosted HCI in BlueDroid](#512-bluetooth-host-sending-data-through-hosted-hci-in-bluedroid) - - [5.1.3. Bluetooth Host Receiving Data from Hosted HCI in BlueDroid](#513-bluetooth-host-receiving-data-from-hosted-hci-in-bluedroid) + - [5.1.2. Bluetooth Host Sending Data through Hosted HCI in BlueDroid](#512-bluetooth-host-sending-data-through-hosted-hci-in-bluedroid) + - [5.1.3. Bluetooth Host Receiving Data from Hosted HCI in BlueDroid](#513-bluetooth-host-receiving-data-from-hosted-hci-in-bluedroid) - [5.2. Transporting HCI data using UART](#52-transporting-hci-data-using-uart) - [5.2.1. Bluetooth Host HCI Initialization](#521-bluetooth-host-hci-initialization) - - [5.2.2. Bluetooth Host Sending Data using HCI](#522-bluetooth-host-sending-data-using-hci) - - [5.2.3. Bluetooth Host Receiving Data using HCI](#523-bluetooth-host-receiving-data-using-hci) + - [5.2.2. Bluetooth Host Sending Data using HCI](#522-bluetooth-host-sending-data-using-hci) + - [5.2.3. Bluetooth Host Receiving Data using HCI](#523-bluetooth-host-receiving-data-using-hci) - [6. Configuring the Co-processor for Standard HCI over UART](#6-configuring-the-co-processor-for-standard-hci-over-uart) - [7. References](#7-references) +
+ ## 1. Introduction ESP-Hosted can transport Bluetooth HCI packets between the Bluetooth @@ -35,14 +43,6 @@ Co-processor. The Host MCU implement the Bluetooth app and Bluetooth Host Stack and the co-processor runs the Bluetooth controller and hardware. -> [!NOTE] -> Check that the memory requirement for your preferred Bluetooth host -> stack can be satisfied on the Host. - -> [!WARNING] -> The ESP32 only supports Bluetooth v4.2. If you are using a ESP32 as -> the co-processor, the host Bluetooth stack must also be v4.2. - ESP-Hosted is Bluetooth stack agnostic. To showcase ESP-Hosted's Bluetooth support, both `esp-nimble` and `esp-bluedroid` are used here. Users can use their own preferred Bluetooth stack with some @@ -58,7 +58,12 @@ as Bluetooth Low Energy. See [References](#7-references) for links with more information. -### 1.1 Choosing a Bluetooth Host stack +### 1.1 Prerequisites + +- check that the memory requirement for your preferred Bluetooth host stack can be satisfied on the Host. +- the ESP32 only supports Bluetooth v4.2. If you are using a ESP32 as the co-processor, the host Bluetooth stack must also be v4.2. + +### 1.2 Choosing a Bluetooth Host stack For usecases involving classic Bluetooth as well as Bluetooth Low Energy, BlueDroid should be used. @@ -129,6 +134,48 @@ Use this option if you want: > Bluetooth over Standard HCI configuration must be disabled, and vice > versa. +### 3.1 Initializing the Bluetooth Controller + +> [!NOTE] +> Before ESP-Hosted-MCU v2.5.2, the Bluetooth Controller on the +> co-processor was **enabled** by default. This section on +> initializing the Bluetooth Controller applies to ESP-Hosted-MCU +> v2.5.2 and after. + +The Bluetooth Controller on the co-processor is disabled by +default. This allows the BT Mac Address to be set, which must be done +before the controller is enabled. The BT Controller should be enabled +before initialzing the BT Host Stack. + +To get and set the BT Controller MAC address: + +1. Call `esp_hosted_connect_to_slave()` to intialise the transport +2. (Optional) Call `esp_hosted_iface_mac_addr_len_get` to get the length of the BT MAC address +3. (Optional) Call `esp_hosted_iface_mac_addr_get` to get the current BT MAC address +4. Call `esp_hosted_iface_mac_addr_set` to set the current BT MAC address + +After setting the BT Controller MAC address, you can now enable the BT Controller. + +> [!NOTE] +> This MAC address setting is temporary and will revert after device +> reset. For permanent MAC address change, modify during hardware +> provisioning or burn directly into eFuse using appropriate commands + +To enable the BT Controller: + +1. Call `esp_hosted_connect_to_slave()` to intialise the transport. (Skip this if already called while seting the BT MAC Address above.) +2. (Optional) Call `esp_hosted_iface_mac_addr_get()` and + `esp_hosted_iface_mac_addr_set()` to get and set the BT Mac Address +3. Call `esp_hosted_bt_controller_init()` to initialise the BT Controller +4. Call `esp_hosted_bt_controller_enable()` to enable the BT Controller +5. Initialise the BT Host stack + +To disable the Controller: + +1. Deinitialise the BT Host stack +2. Call `esp_hosted_bt_controller_disable()` to disable the BT Controller +3. Call `esp_hosted_bt_controller_deinit()` to deinit the BT Controller + ## 4. NimBLE Host Stack The ESP-Hosted Master implements the set of API calls required by the @@ -162,11 +209,11 @@ sequenceDiagram end ble ->> +hhci : hci_drv_init() - Note over hhci: do any init required + Note over hhci: do any init required hhci -->> -ble : ble ->> +hhci : ble_transport_ll_init() - Note over hhci : do any transport init required + Note over hhci : do any transport init required hhci -->> -ble : ``` @@ -227,12 +274,12 @@ sequenceDiagram alt Receive Event Data Note over hhci: convert HCI data to Event - hhci ->> ble : ble_transport_to_hs_evt() - ble -->> hhci : + hhci ->> ble : ble_transport_to_hs_evt() + ble -->> hhci : else Receive ACL Data Note over hhci: convert HCI data to ACL - hhci ->> ble : ble_transport_to_hs_acl() - ble -->> hhci : + hhci ->> ble : ble_transport_to_hs_acl() + ble -->> hhci : end hhci -->> -master : @@ -306,12 +353,12 @@ sequenceDiagram alt Receive Event Data Note over huart : convert HCI data to Event - huart ->> ble : ble_transport_to_hs_evt() - ble -->> huart : + huart ->> ble : ble_transport_to_hs_evt() + ble -->> huart : else Receive ACL Data Note over huart : convert HCI data to ACL - huart ->> ble : ble_transport_to_hs_acl() - ble -->> huart : + huart ->> ble : ble_transport_to_hs_acl() + ble -->> huart : end ``` @@ -357,7 +404,7 @@ sequenceDiagram end bt ->> +hhci : hosted_hci_bluedroid_open() - Note over hhci: do any init required + Note over hhci: do any init required hhci -->> -bt : ``` @@ -451,7 +498,7 @@ sequenceDiagram end bt ->> +huart : uart_open() - Note over huart: do any uart init required + Note over huart: do any uart init required huart -->> -bt : ``` diff --git a/docs/implemented_rpcs.md b/docs/implemented_rpcs.md new file mode 100644 index 00000000..2f8b4c43 --- /dev/null +++ b/docs/implemented_rpcs.md @@ -0,0 +1,132 @@ +# List of RPC Commands implmenented in ESP-Hosted + +A list of RPC Commands implemented in ESP-Hosted based on release version. + +The RPC IDs listed here are for requests and events. Each request will have a corresponding response. + +## List of RPC Requests + +| No. | RPC ID | RPC Command | Added in Release | +|----:|-------:|------------------------------------|------------------| +| 1 | 257 | GetMacAddress | 0.0.6 | +| 2 | 258 | SetMacAddress | 0.0.6 | +| 3 | 259 | GetMode | 0.0.6 | +| 4 | 260 | SetMode | 0.0.6 | +| 5 | 261 | SuppDppInit | 2.4.3 | +| 6 | 262 | SuppDppDeinit | 2.4.3 | +| 7 | 263 | SuppDppBootstrapGen | 2.4.3 | +| 8 | 264 | SuppDppStartListen | 2.4.3 | +| 9 | 265 | SuppDppStopListen | 2.4.3 | +| 10 | 270 | SetPs | 0.0.6 | +| 11 | 271 | GetPs | 0.0.6 | +| 12 | 272 | OTABegin | 0.0.6 | +| 13 | 273 | OTAWrite | 0.0.6 | +| 14 | 274 | OTAEnd | 0.0.6 | +| 15 | 275 | WifiSetMaxTxPower | 0.0.6 | +| 16 | 276 | WifiGetMaxTxPower | 0.0.6 | +| 17 | 277 | ConfigHeartbeat | 0.0.6 | +| 18 | 278 | WifiInit | 0.0.6 | +| 19 | 279 | WifiDeinit | 0.0.6 | +| 20 | 280 | WifiStart | 0.0.6 | +| 21 | 281 | WifiStop | 0.0.6 | +| 22 | 282 | WifiConnect | 0.0.6 | +| 23 | 283 | WifiDisconnect | 0.0.6 | +| 24 | 284 | WifiSetConfig | 0.0.6 | +| 25 | 285 | WifiGetConfig | 0.0.6 | +| 26 | 286 | WifiScanStart | 0.0.6 | +| 27 | 287 | WifiScanStop | 0.0.6 | +| 28 | 288 | WifiScanGetApNum | 0.0.6 | +| 29 | 289 | WifiScanGetApRecords | 0.0.6 | +| 30 | 290 | WifiClearApList | 0.0.6 | +| 31 | 291 | WifiRestore | 0.0.6 | +| 32 | 292 | WifiClearFastConnect | 0.0.6 | +| 33 | 293 | WifiDeauthSta | 0.0.6 | +| 34 | 294 | WifiStaGetApInfo | 0.0.6 | +| 35 | 297 | WifiSetProtocol | 0.0.6 | +| 36 | 298 | WifiGetProtocol | 0.0.6 | +| 37 | 299 | WifiSetBandwidth | 0.0.6 | +| 38 | 300 | WifiGetBandwidth | 0.0.6 | +| 39 | 301 | WifiSetChannel | 0.0.6 | +| 40 | 302 | WifiGetChannel | 0.0.6 | +| 41 | 303 | WifiSetCountry | 0.0.6 | +| 42 | 304 | WifiGetCountry | 0.0.6 | +| 43 | 311 | WifiApGetStaList | 0.0.6 | +| 44 | 312 | WifiApGetStaAid | 0.0.6 | +| 45 | 313 | WifiSetStorage | 0.0.6 | +| 46 | 325 | WifiSetInactiveTime | 2.2.3 | +| 47 | 326 | WifiGetInactiveTime | 2.2.3 | +| 48 | 334 | WifiSetCountryCode | 0.0.6 | +| 49 | 335 | WifiGetCountryCode | 0.0.6 | +| 50 | 338 | WifiStaGetAid | 0.0.10 | +| 51 | 339 | WifiStaGetNegotiatedPhymode | 1.1.3 | +| 52 | 341 | WifiStaGetRssi | 0.0.6 | +| 53 | 342 | WifiSetProtocols | 0.0.10 | +| 54 | 343 | WifiGetProtocols | 0.0.10 | +| 55 | 344 | WifiSetBandwidths | 0.0.10 | +| 56 | 345 | WifiGetBandwidths | 0.0.10 | +| 57 | 346 | WifiSetBand | 0.0.10 | +| 58 | 347 | WifiGetBand | 0.0.10 | +| 59 | 348 | WifiSetBandMode | 0.0.10 | +| 60 | 349 | WifiGetBandMode | 0.0.10 | +| 61 | 350 | GetCoprocessorFwVersion | 1.0.0 | +| 62 | 351 | WifiScanGetApRecord | 1.1.3 | +| 63 | 352 | SetDhcpDnsStatus | 2.1.0 | +| 64 | 353 | GetDhcpDnsStatus | 2.1.0 | +| 65 | 354 | WifiStaTwtConfig | 2.1.2 | +| 66 | 355 | WifiStaItwtSetup | 2.1.2 | +| 67 | 356 | WifiStaItwtTeardown | 2.1.2 | +| 68 | 357 | WifiStaItwtSuspend | 2.1.2 | +| 69 | 358 | WifiStaItwtGetFlowIdStatus | 2.1.2 | +| 70 | 359 | WifiStaItwtSendProbeReq | 2.1.2 | +| 71 | 360 | WifiStaItwtSetTargetWakeTimeOffset | 2.1.2 | +| 72 | 361 | WifiStaEnterpriseEnable | 2.4.0 | +| 73 | 362 | WifiStaEnterpriseDisable | 2.4.0 | +| 74 | 363 | EapSetIdentity | 2.4.0 | +| 75 | 364 | EapClearIdentity | 2.4.0 | +| 76 | 365 | EapSetUsername | 2.4.0 | +| 77 | 366 | EapClearUsername | 2.4.0 | +| 78 | 367 | EapSetPassword | 2.4.0 | +| 79 | 368 | EapClearPassword | 2.4.0 | +| 80 | 369 | EapSetNewPassword | 2.4.0 | +| 81 | 370 | EapClearNewPassword | 2.4.0 | +| 82 | 371 | EapSetCaCert | 2.4.0 | +| 83 | 372 | EapClearCaCert | 2.4.0 | +| 84 | 373 | EapSetCertificateAndKey | 2.4.0 | +| 85 | 374 | EapClearCertificateAndKey | 2.4.0 | +| 86 | 375 | EapGetDisableTimeCheck | 2.4.0 | +| 87 | 376 | EapSetTtlsPhase2Method | 2.4.0 | +| 88 | 377 | EapSetSuiteb192bitCertification | 2.4.0 | +| 89 | 378 | EapSetPacFile | 2.4.0 | +| 90 | 379 | EapSetFastParams | 2.4.0 | +| 91 | 380 | EapUseDefaultCertBundle | 2.4.0 | +| 92 | 381 | WifiSetOkcSupport | 2.4.0 | +| 93 | 382 | EapSetDomainName | 2.4.0 | +| 94 | 383 | EapSetDisableTimeCheck | 2.4.0 | +| 95 | 384 | EapSetEapMethods | 2.4.0 | +| 96 | 385 | IfaceMacAddrSetGet | 2.4.4 | +| 97 | 386 | IfaceMacAddrLenGet | 2.4.4 | +| 98 | 387 | FeatureControl | 2.4.4 | + +## List of RPC Events + +| No. | RPC ID | RPC Command | Added in Release | +|----:|-------:|--------------------|------------------| +| 1 | 769 | ESPInit | 0.0.6 | +| 2 | 770 | Heartbeat | 0.0.6 | +| 3 | 771 | AP_StaConnected | 0.0.6 | +| 4 | 772 | AP_StaDisconnected | 0.0.6 | +| 5 | 773 | WifiEventNoArgs | 0.0.6 | +| 6 | 774 | StaScanDone | 0.0.6 | +| 7 | 775 | StaConnected | 0.0.6 | +| 8 | 776 | StaDisconnected | 0.0.6 | +| 9 | 777 | DhcpDnsStatus | 2.0.17 | +| 10 | 778 | StaItwtSetup | 2.2.2 | +| 11 | 779 | StaItwtTeardown | 2.2.2 | +| 12 | 780 | StaItwtSuspend | 2.2.2 | +| 13 | 781 | StaItwtProbe | 2.2.2 | +| 14 | 782 | SuppDppUriReady | 2.4.3 | +| 15 | 783 | SuppDppCfgRecvd | 2.4.3 | +| 16 | 784 | SuppDppFail | 2.4.3 | +| 17 | 785 | WifiDppUriReady | 2.4.3 | +| 18 | 786 | WifiDppCfgRecvd | 2.4.3 | +| 19 | 787 | WifiDppFail | 2.4.3 | diff --git a/docs/migration_guide.md b/docs/migration_guide.md new file mode 100644 index 00000000..4fa1e1e5 --- /dev/null +++ b/docs/migration_guide.md @@ -0,0 +1,32 @@ +# Migration Guide + +This guide documents changes in ESP-Hosted that users must be aware of when migrating from older versions of ESP-Hosted. + +## Migrating to V2.5.2 + +### Bluetooth Controller on Co-processor Now Disabled by Default + +Before V2.5.2, the Bluetooth Controller on the co-processor was initialized and enabled by default when the co-processor starts. Now, the Controller is left in a disabled state upon start-up. + +**Reason for Change.** + +This change is to allow users to change the Bluetooth MAC Address of the co-processor from the default MAC address, if required. This can only be done before the Bluetooth Controller is initialized and enabled. + +**Changes required on Host.** + +Host must enable the Bluetooth Controller on the co-processor, before starting the Bluetooth Stack on the Host. To do this: + +1. Call `esp_hosted_connect_to_slave()` to ensure there is a ESP-Hosted connection to the slave. +2. **[Optional]** Set the BT Mac address using `esp_hosted_iface_mac_addr_set` +3. Initialise the BT Controller using `esp_hosted_bt_controller_init` +4. Enable the BT Controller using `esp_hosted_bt_controller_enable` + +See [Initializing the Bluetooth Controller](bluetooth_design.md#31-initializing-the-bluetooth-controller) for more details. + +You can now start the Host Bluetooth Stack and use Bluetooth as per normal. + +All ESP-Hosted Bluetooth Host examples (NimBLE and BlueDroid) have been updated with this change. + +For an example on how to change the BT Mac Address before starting the Bluetooth Controller, see: + +- [BT Controller example](../examples/host_bt_controller_mac_addr/) diff --git a/examples/host_bluedroid_ble_compatibility_test/README.md b/examples/host_bluedroid_ble_compatibility_test/README.md index 63a40d74..18e96917 100644 --- a/examples/host_bluedroid_ble_compatibility_test/README.md +++ b/examples/host_bluedroid_ble_compatibility_test/README.md @@ -1,5 +1,8 @@ -| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-H2 | ESP32-S3 | ESP32-P4 | ESP32-H2 | -| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- | -------- | -------- | +| Supported Hosts | ESP32 | ESP32-P Series | ESP32-H Series | ESP32-C Series | ESP32-S Series | Any other MCU hosts | +| --------------- | ----- | -------------- | -------------- | -------------- | -------------- | ------------------- | + +| Supported Co-Processors | ESP32 | ESP32-C Series | ESP32-S Series | +| ----------------------- | ----- | -------------- | -------------- | # ESP-IDF BLE Compatibility Test Example diff --git a/examples/host_bluedroid_ble_compatibility_test/main/ble_compatibility_test.c b/examples/host_bluedroid_ble_compatibility_test/main/ble_compatibility_test.c index fe5d8ee2..1e47bfd0 100644 --- a/examples/host_bluedroid_ble_compatibility_test/main/ble_compatibility_test.c +++ b/examples/host_bluedroid_ble_compatibility_test/main/ble_compatibility_test.c @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2021-2025 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Unlicense OR CC0-1.0 */ @@ -26,6 +26,7 @@ #include "ble_compatibility_test.h" #include "esp_gatt_common_api.h" +#include "esp_hosted.h" #include "esp_hosted_bluedroid.h" #define DEBUG_ON 0 @@ -509,7 +510,7 @@ static void gatts_profile_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_ ESP_LOGE(EXAMPLE_TAG, "create attr table failed, error code = %x", create_attr_ret); } } - break; + break; case ESP_GATTS_READ_EVT: //ESP_LOGE(EXAMPLE_TAG, "ESP_GATTS_READ_EVT, handle=0x%d, offset=%d", param->read.handle, param->read.offset); if(gatt_db_handle_table[IDX_CHAR_VAL_A] == param->read.handle) { @@ -518,7 +519,7 @@ static void gatts_profile_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_ if(gatt_db_handle_table[IDX_CHAR_VAL_B] == param->read.handle) { ESP_LOGE(EXAMPLE_TAG, "(5) ***** read char2 ***** "); } - break; + break; case ESP_GATTS_WRITE_EVT: if (!param->write.is_prep){ // the data length of gattc write must be less than GATTS_EXAMPLE_CHAR_VAL_LEN_MAX. @@ -561,7 +562,7 @@ static void gatts_profile_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_ /* handle prepare write */ example_prepare_write_event_env(gatts_if, &prepare_write_env, param); } - break; + break; case ESP_GATTS_EXEC_WRITE_EVT: // the length of gattc prepare write data must be less than GATTS_EXAMPLE_CHAR_VAL_LEN_MAX. ESP_LOGI(EXAMPLE_TAG, "ESP_GATTS_EXEC_WRITE_EVT, Length=%d", prepare_write_env.prepare_len); @@ -645,7 +646,29 @@ void app_main(void) } ESP_ERROR_CHECK( ret ); - /* initialize TRANSPORT first */ + // initialise connection to co-processor + esp_hosted_connect_to_slave(); + + // get fw version + ESP_LOGI("INFO", "getting fw version"); + esp_hosted_coprocessor_fwver_t fwver; + if (ESP_OK == esp_hosted_get_coprocessor_fwversion(&fwver)) { + ESP_LOGI("INFO", "FW Version: %d.%d.%d", + fwver.major1, fwver.minor1, fwver.patch1); + } else { + ESP_LOGW("INFO", "failed to get fw version"); + } + + // init bt controller + if (ESP_OK != esp_hosted_bt_controller_init()) { + ESP_LOGW("INFO", "failed to init bt controller"); + } + + // enable bt controller + if (ESP_OK != esp_hosted_bt_controller_enable()) { + ESP_LOGW("INFO", "failed to enable bt controller"); + } + hosted_hci_bluedroid_open(); /* get HCI driver operations */ @@ -656,7 +679,6 @@ void app_main(void) }; esp_bluedroid_attach_hci_driver(&operations); - #if 0 ESP_ERROR_CHECK(esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT)); diff --git a/examples/host_bluedroid_ble_compatibility_test/sdkconfig.defaults b/examples/host_bluedroid_ble_compatibility_test/sdkconfig.defaults index 30fef8e2..4e03dba3 100644 --- a/examples/host_bluedroid_ble_compatibility_test/sdkconfig.defaults +++ b/examples/host_bluedroid_ble_compatibility_test/sdkconfig.defaults @@ -1,3 +1,5 @@ +CONFIG_FREERTOS_HZ=1000 + # # BT config # - ESP32 co-processor only supports BLE 4.2 diff --git a/examples/host_bluedroid_bt_hid_mouse_device/README.md b/examples/host_bluedroid_bt_hid_mouse_device/README.md index b6fe73e1..8f7e4da4 100644 --- a/examples/host_bluedroid_bt_hid_mouse_device/README.md +++ b/examples/host_bluedroid_bt_hid_mouse_device/README.md @@ -1,5 +1,8 @@ -| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-H2 | ESP32-S3 | ESP32-P4 | ESP32-H2 | -| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- | -------- | -------- | +| Supported Hosts | ESP32 | ESP32-P Series | ESP32-H Series | ESP32-C Series | ESP32-S Series | Any other MCU hosts | +| --------------- | ----- | -------------- | -------------- | -------------- | -------------- | ------------------- | + +| Supported Co-Processors | ESP32 | +| ----------------------- | ----- | # Bluetooth HID Device example diff --git a/examples/host_bluedroid_bt_hid_mouse_device/main/main.c b/examples/host_bluedroid_bt_hid_mouse_device/main/main.c index 5255b464..ef4139aa 100644 --- a/examples/host_bluedroid_bt_hid_mouse_device/main/main.c +++ b/examples/host_bluedroid_bt_hid_mouse_device/main/main.c @@ -19,6 +19,7 @@ #include "freertos/task.h" #include "freertos/semphr.h" +#include "esp_hosted.h" #include "esp_hosted_bluedroid.h" #define REPORT_PROTOCOL_MOUSE_REPORT_SIZE (4) @@ -404,7 +405,19 @@ void app_main(void) } ESP_ERROR_CHECK( ret ); - /* initialize TRANSPORT first */ + // initialise connection to co-processor + esp_hosted_connect_to_slave(); + + // init bt controller + if (ESP_OK != esp_hosted_bt_controller_init()) { + ESP_LOGE("INFO", "failed to init bt controller"); + } + + // enable bt controller + if (ESP_OK != esp_hosted_bt_controller_enable()) { + ESP_LOGE("INFO", "failed to enable bt controller"); + } + hosted_hci_bluedroid_open(); /* get HCI driver operations */ diff --git a/examples/host_bluedroid_bt_hid_mouse_device/sdkconfig.defaults b/examples/host_bluedroid_bt_hid_mouse_device/sdkconfig.defaults index 22e6ff19..3fdc4b75 100644 --- a/examples/host_bluedroid_bt_hid_mouse_device/sdkconfig.defaults +++ b/examples/host_bluedroid_bt_hid_mouse_device/sdkconfig.defaults @@ -1,3 +1,5 @@ +CONFIG_FREERTOS_HZ=1000 + # # BT config # - ESP32 co-processor only supports BLE 4.2 diff --git a/examples/host_bluedroid_host_only/README.md b/examples/host_bluedroid_host_only/README.md index 1aa3cef0..27b1e9a9 100644 --- a/examples/host_bluedroid_host_only/README.md +++ b/examples/host_bluedroid_host_only/README.md @@ -1,5 +1,5 @@ -| Supported Hosts | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-H2 | ESP32-S3 | ESP32-P4 | ESP32-H2 | Any other MCU hosts | -| --------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- | -------- | -------- | ------------------- | +| Supported Hosts | ESP32 | ESP32-P Series | ESP32-H Series | ESP32-C Series | ESP32-S Series | Any other MCU hosts | +| --------------- | ----- | -------------- | -------------- | -------------- | -------------- | ------------------- | | Supported Co-Processors | ESP32 | | ----------------------- | ----- | diff --git a/examples/host_bluedroid_host_only/main/main.c b/examples/host_bluedroid_host_only/main/main.c index 6cce94a6..b5f53e6d 100644 --- a/examples/host_bluedroid_host_only/main/main.c +++ b/examples/host_bluedroid_host_only/main/main.c @@ -26,6 +26,7 @@ #include "esp_gap_bt_api.h" #include "esp_bluedroid_hci.h" +#include "esp_hosted.h" #include "esp_hosted_bluedroid.h" #define GAP_TAG "GAP" @@ -163,7 +164,7 @@ static void update_device_info(esp_bt_gap_cb_param_t *param) } if (!esp_bt_gap_is_valid_cod(cod) || - (!(esp_bt_gap_get_cod_major_dev(cod) == ESP_BT_COD_MAJOR_DEV_PHONE) && + (!(esp_bt_gap_get_cod_major_dev(cod) == ESP_BT_COD_MAJOR_DEV_PHONE) && !(esp_bt_gap_get_cod_major_dev(cod) == ESP_BT_COD_MAJOR_DEV_AV))) { return; } @@ -282,7 +283,19 @@ void app_main(void) } ESP_ERROR_CHECK( ret ); - /* initialize TRANSPORT first */ + // initialise connection to co-processor + esp_hosted_connect_to_slave(); + + // init bt controller + if (ESP_OK != esp_hosted_bt_controller_init()) { + ESP_LOGW("INFO", "failed to init bt controller"); + } + + // enable bt controller + if (ESP_OK != esp_hosted_bt_controller_enable()) { + ESP_LOGW("INFO", "failed to enable bt controller"); + } + hosted_hci_bluedroid_open(); /* get HCI driver operations */ diff --git a/examples/host_bluedroid_host_only/sdkconfig.defaults b/examples/host_bluedroid_host_only/sdkconfig.defaults index 02095c4c..245d48a6 100644 --- a/examples/host_bluedroid_host_only/sdkconfig.defaults +++ b/examples/host_bluedroid_host_only/sdkconfig.defaults @@ -1,3 +1,5 @@ +CONFIG_FREERTOS_HZ=1000 + # # BT config # - ESP32 co-processor only supports BLE 4.2 diff --git a/examples/host_bt_controller_mac_addr/CMakeLists.txt b/examples/host_bt_controller_mac_addr/CMakeLists.txt new file mode 100644 index 00000000..994697d8 --- /dev/null +++ b/examples/host_bt_controller_mac_addr/CMakeLists.txt @@ -0,0 +1,6 @@ +# The following lines of boilerplate have to be in your project's +# CMakeLists in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.16) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +project(bt_mac_addr_init) diff --git a/examples/host_bt_controller_mac_addr/README.md b/examples/host_bt_controller_mac_addr/README.md new file mode 100644 index 00000000..775e5176 --- /dev/null +++ b/examples/host_bt_controller_mac_addr/README.md @@ -0,0 +1,178 @@ +| Supported Hosts | ESP32 | ESP32-P Series | ESP32-H Series | ESP32-C Series | ESP32-S Series | Any other MCU hosts | +| --------------- | ----- | -------------- | -------------- | -------------- | -------------- | ------------------- | + +| Supported Co-Processors | ESP32 | ESP32-C Series | ESP32-S Series | +| ----------------------- | ----- | -------------- | -------------- | + +# BT Controller MAC Address and Initialisation Example + +This example shows how to change the MAC Address. When run, a BLE +Scanner should show a `Bluedroid_Beacon` device with the assigned MAC +address. + +For more information on the Bluedroid Beacon, see the ESP-IDF +[Bluedroid Beacon example](https://github.com/espressif/esp-idf/blob/master/examples/bluetooth/ble_get_started/bluedroid/Bluedroid_Beacon). + +This example can be modified to use NimBLE instead of Bluedroid. + +To run the example without modifying the BT Mac address, run `idf.py +menuconfig` --> `Example Configuration` and turn off `Update MAC +Address of BT Controller` option. + +### Build and Flash + +Run `idf.py -p PORT flash monitor` to build, flash and monitor the +project. + +(To exit the serial monitor, type ``Ctrl-]``.) + +## Example Output + +``` +I (25) boot: ESP-IDF v6.0-dev-2343-g92b90afa77 2nd stage bootloader +I (26) boot: compile time Sep 19 2025 13:47:15 +I (26) boot: Multicore bootloader +I (29) boot: chip revision: v1.0 +I (30) boot: efuse block revision: v0.1 +I (34) boot.esp32p4: SPI Speed : 80MHz +I (38) boot.esp32p4: SPI Mode : DIO +I (41) boot.esp32p4: SPI Flash Size : 2MB +I (45) boot: Enabling RNG early entropy source... +I (50) boot: Partition Table: +I (52) boot: ## Label Usage Type ST Offset Length +I (59) boot: 0 nvs WiFi data 01 02 00009000 00006000 +I (65) boot: 1 phy_init RF data 01 01 0000f000 00001000 +I (72) boot: 2 factory factory app 00 00 00010000 00100000 +I (79) boot: End of partition table +I (82) esp_image: segment 0: paddr=00010020 vaddr=40070020 size=3166ch (202348) map +I (125) esp_image: segment 1: paddr=00041694 vaddr=30100000 size=00044h ( 68) load +I (127) esp_image: segment 2: paddr=000416e0 vaddr=4ff00000 size=0e6ech ( 59116) load +I (141) esp_image: segment 3: paddr=0004fdd4 vaddr=4ff0e700 size=00244h ( 580) load +I (143) esp_image: segment 4: paddr=00050020 vaddr=40000020 size=6b1f4h (438772) map +I (221) esp_image: segment 5: paddr=000bb21c vaddr=4ff0e944 size=02398h ( 9112) load +I (228) boot: Loaded app from partition at offset 0x10000 +I (228) boot: Disabling RNG early entropy source... +W (239) pmu_pvt: blk_version is less than 2, pvt auto dbias init not supported in efuse. +I (241) cpu_start: Multicore app +I (251) cpu_start: GPIO 38 and 37 are used as console UART I/O pins +I (252) cpu_start: Pro cpu start user code +I (252) cpu_start: cpu freq: 360000000 Hz +I (254) app_init: Application information: +I (257) app_init: Project name: bt_mac_addr_init +I (262) app_init: App version: bb05bb9c +I (266) app_init: Compile time: Sep 19 2025 14:40:33 +I (271) app_init: ELF file SHA256: ab0fe993f... +I (275) app_init: ESP-IDF: v6.0-dev-2343-g92b90afa77 +I (281) efuse_init: Min chip rev: v0.1 +I (285) efuse_init: Max chip rev: v1.99 +I (289) efuse_init: Chip rev: v1.0 +I (293) heap_init: Initializing. RAM available for dynamic allocation: +I (299) heap_init: At 4FF130B0 len 00027F10 (159 KiB): RAM +I (304) heap_init: At 4FF3AFC0 len 00004BF0 (18 KiB): RAM +I (309) heap_init: At 4FF40000 len 00060000 (384 KiB): RAM +I (315) heap_init: At 50108080 len 00007F80 (31 KiB): RTCRAM +I (320) heap_init: At 30100044 len 00001FBC (7 KiB): TCM +I (326) spi_flash: detected chip: gd +I (328) spi_flash: flash io: dio +W (331) spi_flash: Detected size(16384k) larger than the size in the binary image header(2048k). Using the size in the binary image header. +I (343) host_init: ESP Hosted : Host chip_ip[18] +I (375) H_API: ESP-Hosted starting. Hosted_Tasks: prio:23, stack: 5120 RPC_task_stack: 5120 +I (375) H_API: ** add_esp_wifi_remote_channels ** +I (376) transport: Add ESP-Hosted channel IF[1]: S[0] Tx[0x4000c480] Rx[0x40020c3c] +--- 0x4000c480: transport_drv_sta_tx at /home/kysoh/projects/gitlab_esp_hosted_mcu/examples/host_bt_controller_mac_addr/components/esp_hosted/host/drivers/transport/transport_drv.c:245 +--- 0x40020c3c: esp_wifi_remote_channel_rx at /home/kysoh/projects/gitlab_esp_hosted_mcu/examples/host_bt_controller_mac_addr/managed_components/espressif__esp_wifi_remote/esp_wifi_remote_net.c:19 +I (384) transport: Add ESP-Hosted channel IF[2]: S[0] Tx[0x4000c3c0] Rx[0x40020c3c] +--- 0x4000c3c0: transport_drv_ap_tx at /home/kysoh/projects/gitlab_esp_hosted_mcu/examples/host_bt_controller_mac_addr/components/esp_hosted/host/drivers/transport/transport_drv.c:275 +--- 0x40020c3c: esp_wifi_remote_channel_rx at /home/kysoh/projects/gitlab_esp_hosted_mcu/examples/host_bt_controller_mac_addr/managed_components/espressif__esp_wifi_remote/esp_wifi_remote_net.c:19 +sdio_mempool_create free:196416 min-free:196416 lfb-def:155648 lfb-8bit:155648 + +I (400) H_SDIO_DRV: sdio_data_to_rx_buf_task started +I (403) main_task: Started on CPU0 +I (406) main_task: Calling app_main() +I (416) H_API: ESP-Hosted Try to communicate with ESP-Hosted slave + +I (416) transport: Attempt connection with slave: retry[0] +W (421) H_SDIO_DRV: Reset slave using GPIO[54] +I (425) os_wrapper_esp: GPIO [54] configured +I (1631) sdio_wrapper: SDIO master: Slot 1, Data-Lines: 4-bit Freq(KHz)[40000 KHz] +I (1631) sdio_wrapper: GPIOs: CLK[18] CMD[19] D0[14] D1[15] D2[16] D3[17] Slave_Reset[54] +I (1635) sdio_wrapper: Queues: Tx[20] Rx[20] SDIO-Rx-Mode[1] +Name: +Type: SDIO +Speed: 40.00 MHz (limit: 40.00 MHz) +Size: 0MB +CSD: ver=1, sector_size=0, capacity=0 read_bl_len=0 +SCR: sd_spec=0, bus_width=0 +TUPLE: DEVICE, size: 3: D9 01 FF +TUPLE: MANFID, size: 4 + MANF: 0092, CARD: 6666 +TUPLE: FUNCID, size: 2: 0C 00 +TUPLE: FUNCE, size: 4: 00 00 02 32 +TUPLE: CONFIG, size: 5: 01 01 00 02 07 +TUPLE: CFTABLE_ENTRY, size: 8 + INDX: C1, Intface: 1, Default: 1, Conf-Entry-Num: 1 + IF: 41 + FS: 30, misc: 0, mem_space: 1, irq: 1, io_space: 0, timing: 0, power: 0 + IR: 30, mask: 1, IRQ: FF FF + LEN: FFFF +TUPLE: END +I (1714) sdio_wrapper: Function 0 Blocksize: 512 +I (1718) sdio_wrapper: Function 1 Blocksize: 512 +I (1723) H_SDIO_DRV: Card init success, TRANSPORT_RX_ACTIVE +I (1728) transport: set_transport_state: 1 +I (1732) transport: Waiting for esp_hosted slave to be ready +I (1800) H_SDIO_DRV: SDIO Host operating in STREAMING MODE +I (1800) H_SDIO_DRV: Open data path at slave +I (1800) H_SDIO_DRV: Starting SDIO process rx task +I (1828) H_SDIO_DRV: Received ESP_PRIV_IF type message +I (1828) transport: Received INIT event from ESP32 peripheral +I (1828) transport: EVENT: 12 +I (1830) transport: Identified slave [esp32c6] +I (1834) transport: EVENT: 11 +I (1836) transport: capabilities: 0xd +I (1840) transport: Features supported are: +I (1844) transport: * WLAN +I (1846) transport: - HCI over SDIO +I (1850) transport: - BLE only +I (1853) transport: EVENT: 13 +I (1856) transport: ESP board type is : 13 + +I (1860) transport: Base transport is set-up, TRANSPORT_TX_ACTIVE +I (1866) H_API: Transport active +I (1869) transport: Slave chip Id[12] +I (1872) transport: raw_tp_dir[-], flow_ctrl: low[60] high[80] +I (1878) transport: transport_delayed_init +I (1881) esp_cli: Remove any existing deep_sleep cmd in cli +I (1887) esp_cli: Registering command: crash +I (1891) esp_cli: Registering command: reboot +I (1895) esp_cli: Registering command: mem-dump +I (1899) esp_cli: Registering command: task-dump +I (1903) esp_cli: Registering command: cpu-dump +I (1908) esp_cli: Registering command: heap-trace +I (1912) esp_cli: Registering command: sock-dump +I (1916) esp_cli: Registering command: host-power-save +I (1921) vhci_drv: Host BT Support: Enabled +I (1925) vhci_drv: BT Transport Type: VHCI +I (1929) H_SDIO_DRV: Received INIT event +I (1933) H_SDIO_DRV: Event type: 0x22 +I (1936) H_SDIO_DRV: Write thread started +I (1940) BT Example: getting fw version +I (2403) BT Example: FW Version: 2.4.4 +I (2410) BT Example: Current BT controller mac address is 9c:9e:6e:5a:b1:66 +I (2410) BT Example: Updating MAC address +I (2472) BT Example: New BT controller mac address is 08:3a:8d:01:01:01 +I (2582) transport: Attempt connection with slave: retry[0] +I (2582) transport: Transport is already up +I (2607) main_task: Returned from app_main() +I (2608) BT Example: Advertising data raw set, status 0 +I (2609) BT Example: Scan response data raw set, status 0 +I (2616) BT Example: Advertising start successfully +``` + +## Troubleshooting + +For any technical queries, please open an [issue](https://github.com/espressif/esp-hosted-mcu/issues) on ESP-Hosted on GitHub. We will get back to you soon. + +## References + +* Bluetooth Implementation in ESP-Hosted: https://github.com/espressif/esp-hosted-mcu/blob/main/docs/bluetooth_design.md diff --git a/examples/host_bt_controller_mac_addr/main/CMakeLists.txt b/examples/host_bt_controller_mac_addr/main/CMakeLists.txt new file mode 100644 index 00000000..18d510d9 --- /dev/null +++ b/examples/host_bt_controller_mac_addr/main/CMakeLists.txt @@ -0,0 +1,4 @@ +set(srcs "main.c") + +idf_component_register(SRCS "${srcs}" + INCLUDE_DIRS ".") diff --git a/examples/host_bt_controller_mac_addr/main/Kconfig.projbuild b/examples/host_bt_controller_mac_addr/main/Kconfig.projbuild new file mode 100644 index 00000000..6cb0e04a --- /dev/null +++ b/examples/host_bt_controller_mac_addr/main/Kconfig.projbuild @@ -0,0 +1,8 @@ +menu "Example Configuration" + + config EXAMPLE_UPDATE_MAC_ADDRESS + bool "Update MAC Address of BT Controller" + default y + help + Update the MAC Address on the BT Controller +endmenu diff --git a/examples/host_bt_controller_mac_addr/main/idf_component.yml b/examples/host_bt_controller_mac_addr/main/idf_component.yml new file mode 100644 index 00000000..50ffd415 --- /dev/null +++ b/examples/host_bt_controller_mac_addr/main/idf_component.yml @@ -0,0 +1,9 @@ +dependencies: + espressif/esp_wifi_remote: + version: ">=0.10" + rules: + - if: "target in [esp32p4, esp32h2]" + espressif/esp_hosted: + version: "~2" + rules: + - if: "target in [esp32p4, esp32h2]" diff --git a/examples/host_bt_controller_mac_addr/main/main.c b/examples/host_bt_controller_mac_addr/main/main.c new file mode 100644 index 00000000..cd541a4d --- /dev/null +++ b/examples/host_bt_controller_mac_addr/main/main.c @@ -0,0 +1,250 @@ +/* + * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "esp_log.h" +#include "nvs_flash.h" +#include "esp_hosted.h" +#include "esp_hosted_bluedroid.h" +#include "esp_system.h" + +/* BLE */ +#include "esp_gap_ble_api.h" +#include "esp_gattc_api.h" +#include "esp_gatt_defs.h" +#include "esp_bt_main.h" +#include "esp_bt_defs.h" +#include "freertos/FreeRTOS.h" + +#include "esp_log.h" + +#define UPDATE_MAC_ADDRESS CONFIG_EXAMPLE_UPDATE_MAC_ADDRESS + +#define ADV_CONFIG_FLAG (1 << 0) +#define SCAN_RSP_CONFIG_FLAG (1 << 1) +#define URI_PREFIX_HTTPS (0x17) + +static const char *TAG = "BT Example"; + +#if UPDATE_MAC_ADDRESS +// Note 1: This is an example MAC address for demo purposes. In production, +// use a unique MAC address from your allocated range or locally +// administered address space +// Note 2: This MAC address setting is temporary and will revert after device +// reset. For permanent MAC address change, modify during hardware +// provisioning or burn directly into eFuse using appropriate commands +static uint8_t new_mac_addr[] = { 0x08, 0x3A, 0x8D, 0x01, 0x01, 0x01 }; +#endif + +static void esp_gap_cb(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *param); + +static const char device_name[] = "Bluedroid_Beacon"; + +static uint8_t adv_config_done = 0; +static esp_bd_addr_t local_addr; +static uint8_t local_addr_type; + +static esp_ble_adv_params_t adv_params = { + .adv_int_min = 0x20, // 20ms + .adv_int_max = 0x20, // 20ms + .adv_type = ADV_TYPE_SCAN_IND, + .own_addr_type = BLE_ADDR_TYPE_PUBLIC, + .channel_map = ADV_CHNL_ALL, + .adv_filter_policy = ADV_FILTER_ALLOW_SCAN_ANY_CON_ANY, +}; + +//configure raw data for advertising packet +static uint8_t adv_raw_data[] = { + 0x02, ESP_BLE_AD_TYPE_FLAG, 0x06, + 0x11, ESP_BLE_AD_TYPE_NAME_CMPL, 'B', 'l', 'u', 'e', 'd', 'r', 'o', 'i', 'd', '_', 'B', 'e', 'a', 'c', 'o', 'n', + 0x02, ESP_BLE_AD_TYPE_TX_PWR, 0x09, + 0x03, ESP_BLE_AD_TYPE_APPEARANCE, 0x00,0x02, + 0x02, ESP_BLE_AD_TYPE_LE_ROLE, 0x00, +}; + +static uint8_t scan_rsp_raw_data[] = { + 0x08, ESP_BLE_AD_TYPE_LE_DEV_ADDR, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, ESP_BLE_AD_TYPE_URI, URI_PREFIX_HTTPS, '/', '/', 'e', 's', 'p', 'r', 'e', 's', 's', 'i', 'f', '.', 'c', 'o', 'm', +}; + +// function to get and (optionally) set BT Controller MAC address +static void bt_mac_actions(void) +{ + uint8_t mac[10] = { 0 }; + size_t mac_len = 0; + + // get length of bt mac address + mac_len = esp_hosted_iface_mac_addr_len_get(ESP_MAC_BT); + if (mac_len) { + ESP_LOGI(TAG, "length of mac address for BT is %" PRIu16, mac_len); + } else { + ESP_LOGE(TAG, "Failed to get length of mac address for BT"); + } + + // get current bt mac address + if (ESP_OK == esp_hosted_iface_mac_addr_get(mac, mac_len, ESP_MAC_BT)) { + ESP_LOGI(TAG, "Current BT controller mac address is "MACSTR, MAC2STR(mac)); +#if UPDATE_MAC_ADDRESS + // update BT mac address - must be done before initialising bt controller + ESP_LOGI(TAG, "Updating MAC address"); + // switch OUI + memcpy(mac, new_mac_addr, mac_len); + if (ESP_OK == esp_hosted_iface_mac_addr_set(mac, mac_len, ESP_MAC_BT)) { + } else { + ESP_LOGE(TAG, "Failed to set mac address for BT"); + } + if (ESP_OK == esp_hosted_iface_mac_addr_get(mac, mac_len, ESP_MAC_BT)) { + ESP_LOGI(TAG, "New BT controller mac address is "MACSTR, MAC2STR(mac)); + } else { + ESP_LOGE(TAG, "Failed to get mac address for BT after updating"); + } +#endif + } else { + ESP_LOGE(TAG, "Failed to get mac address for BT"); + } +} + +void app_main(void) +{ + /* Initialize NVS — it is used to store PHY calibration data */ + esp_err_t ret = nvs_flash_init(); + if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) { + ESP_ERROR_CHECK(nvs_flash_erase()); + ret = nvs_flash_init(); + } + ESP_ERROR_CHECK(ret); + + // initialise connection to co-processor + esp_hosted_connect_to_slave(); + + // get fw version + ESP_LOGI(TAG, "getting fw version"); + esp_hosted_coprocessor_fwver_t fwver; + if (ESP_OK == esp_hosted_get_coprocessor_fwversion(&fwver)) { + ESP_LOGI(TAG, "FW Version: %d.%d.%d", + fwver.major1, fwver.minor1, fwver.patch1); + } else { + ESP_LOGW(TAG, "failed to get fw version"); + } + + // changes to the MAC must be done before the BT Controller is initalised + bt_mac_actions(); + + // init bt controller + if (ESP_OK != esp_hosted_bt_controller_init()) { + ESP_LOGW(TAG, "Failed to init bt controller"); + return; + } + + // enable bt controller + if (ESP_OK != esp_hosted_bt_controller_enable()) { + ESP_LOGW(TAG, "Failed to enable bt controller"); + return; + } + + // initialise ESP-Hosted connection for Bluedroid + hosted_hci_bluedroid_open(); + + /* get HCI driver operations */ + esp_bluedroid_hci_driver_operations_t operations = { + .send = hosted_hci_bluedroid_send, + .check_send_available = hosted_hci_bluedroid_check_send_available, + .register_host_callback = hosted_hci_bluedroid_register_host_callback, + }; + esp_bluedroid_attach_hci_driver(&operations); + + ret = esp_bluedroid_init(); + if (ret) { + ESP_LOGE(TAG, "%s init bluetooth failed: %s", __func__, esp_err_to_name(ret)); + return; + } + + ret = esp_bluedroid_enable(); + if (ret) { + ESP_LOGE(TAG, "%s enable bluetooth failed: %s", __func__, esp_err_to_name(ret)); + return; + } + + ret = esp_ble_gap_register_callback(esp_gap_cb); + if (ret) { + ESP_LOGE(TAG, "gap register error, error code = %x", ret); + return; + } + + ret = esp_ble_gap_set_device_name(device_name); + if (ret) { + ESP_LOGE(TAG, "set device name error, error code = %x", ret); + return; + } + + //config adv data + adv_config_done |= ADV_CONFIG_FLAG; + adv_config_done |= SCAN_RSP_CONFIG_FLAG; + ret = esp_ble_gap_config_adv_data_raw(adv_raw_data, sizeof(adv_raw_data)); + if (ret) { + ESP_LOGE(TAG, "config adv data failed, error code = %x", ret); + return; + } + + ret = esp_ble_gap_get_local_used_addr(local_addr, &local_addr_type); + if (ret) { + ESP_LOGE(TAG, "get local used address failed, error code = %x", ret); + return; + } + + scan_rsp_raw_data[2] = local_addr[5]; + scan_rsp_raw_data[3] = local_addr[4]; + scan_rsp_raw_data[4] = local_addr[3]; + scan_rsp_raw_data[5] = local_addr[2]; + scan_rsp_raw_data[6] = local_addr[1]; + scan_rsp_raw_data[7] = local_addr[0]; + ret = esp_ble_gap_config_scan_rsp_data_raw(scan_rsp_raw_data, sizeof(scan_rsp_raw_data)); + if (ret) { + ESP_LOGE(TAG, "config scan rsp data failed, error code = %x", ret); + } +} + +static void esp_gap_cb(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *param) +{ + switch (event) { + case ESP_GAP_BLE_ADV_DATA_SET_COMPLETE_EVT: + ESP_LOGI(TAG, "Advertising data set, status %d", param->adv_data_cmpl.status); + adv_config_done &= (~ADV_CONFIG_FLAG); + if (adv_config_done == 0) { + esp_ble_gap_start_advertising(&adv_params); + } + break; + case ESP_GAP_BLE_ADV_DATA_RAW_SET_COMPLETE_EVT: + ESP_LOGI(TAG, "Advertising data raw set, status %d", param->adv_data_raw_cmpl.status); + adv_config_done &= (~ADV_CONFIG_FLAG); + if (adv_config_done == 0) { + esp_ble_gap_start_advertising(&adv_params); + } + break; + case ESP_GAP_BLE_SCAN_RSP_DATA_SET_COMPLETE_EVT: + ESP_LOGI(TAG, "Scan response data set, status %d", param->scan_rsp_data_cmpl.status); + adv_config_done &= (~SCAN_RSP_CONFIG_FLAG); + if (adv_config_done == 0) { + esp_ble_gap_start_advertising(&adv_params); + } + break; + case ESP_GAP_BLE_SCAN_RSP_DATA_RAW_SET_COMPLETE_EVT: + ESP_LOGI(TAG, "Scan response data raw set, status %d", param->scan_rsp_data_raw_cmpl.status); + adv_config_done &= (~SCAN_RSP_CONFIG_FLAG); + if (adv_config_done == 0) { + esp_ble_gap_start_advertising(&adv_params); + } + break; + case ESP_GAP_BLE_ADV_START_COMPLETE_EVT: + if (param->adv_start_cmpl.status != ESP_BT_STATUS_SUCCESS) { + ESP_LOGE(TAG, "Advertising start failed, status %d", param->adv_start_cmpl.status); + break; + } + ESP_LOGI(TAG, "Advertising start successfully"); + break; + default: + break; + } +} diff --git a/examples/host_bt_controller_mac_addr/sdkconfig.defaults b/examples/host_bt_controller_mac_addr/sdkconfig.defaults new file mode 100644 index 00000000..f469affd --- /dev/null +++ b/examples/host_bt_controller_mac_addr/sdkconfig.defaults @@ -0,0 +1,27 @@ +# Override some defaults so BT stack is enabled +# in this example + +CONFIG_FREERTOS_HZ=1000 + +# +# BT config +# +CONFIG_BT_ENABLED=y +CONFIG_BT_CONTROLLER_DISABLED=y +CONFIG_BT_BLUEDROID_ENABLED=y +CONFIG_BT_BLE_50_FEATURES_SUPPORTED=n +CONFIG_BT_BLE_42_FEATURES_SUPPORTED=y +# CONFIG_BT_LE_50_FEATURE_SUPPORT is not used on ESP32, ESP32-C3 and ESP32-S3. +# CONFIG_BT_LE_50_FEATURE_SUPPORT is not set + +# +# Wi-Fi Remote +# +CONFIG_ESP_WIFI_REMOTE_LIBRARY_HOSTED=y + +# +# Enable ESP Hosted BT +# Used as VHCI transport between BT Host and Controller +# +CONFIG_ESP_HOSTED_ENABLE_BT_BLUEDROID=y +CONFIG_ESP_HOSTED_BLUEDROID_HCI_VHCI=y diff --git a/examples/host_nimble_bleprph_host_only_uart_hci/README.md b/examples/host_nimble_bleprph_host_only_uart_hci/README.md index 8874768c..6e94129a 100644 --- a/examples/host_nimble_bleprph_host_only_uart_hci/README.md +++ b/examples/host_nimble_bleprph_host_only_uart_hci/README.md @@ -1,5 +1,8 @@ -| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-H2 | ESP32-S3 | ESP32-P4 | ESP32-H2 | -| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- | -------- | -------- | +| Supported Hosts | ESP32 | ESP32-P Series | ESP32-H Series | ESP32-C Series | ESP32-S Series | Any other MCU hosts | +| --------------- | ----- | -------------- | -------------- | -------------- | -------------- | ------------------- | + +| Supported Co-Processors | ESP32 | ESP32-C Series | ESP32-S Series | +| ----------------------- | ----- | -------------- | -------------- | # BLE Peripheral Example diff --git a/examples/host_nimble_bleprph_host_only_uart_hci/main/main.c b/examples/host_nimble_bleprph_host_only_uart_hci/main/main.c index 277c0353..8b19e654 100644 --- a/examples/host_nimble_bleprph_host_only_uart_hci/main/main.c +++ b/examples/host_nimble_bleprph_host_only_uart_hci/main/main.c @@ -16,6 +16,8 @@ #include "bleprph.h" #include "uart_driver.h" +#include "esp_hosted.h" + #if CONFIG_EXAMPLE_EXTENDED_ADV static uint8_t ext_adv_pattern_1[] = { 0x02, 0x01, 0x06, @@ -493,12 +495,27 @@ app_main(void) } ESP_ERROR_CHECK(ret); + // initialise connection to co-processor + esp_hosted_connect_to_slave(); + + // init bt controller + if (ESP_OK != esp_hosted_bt_controller_init()) { + ESP_LOGW("INFO", "failed to init bt controller"); + } + + // enable bt controller + if (ESP_OK != esp_hosted_bt_controller_enable()) { + ESP_LOGW("INFO", "failed to enable bt controller"); + } + hci_uart_open(); + ret = nimble_port_init(); if (ret != ESP_OK) { ESP_LOGE(tag, "Failed to init nimble %d ", ret); return; } + /* Initialize the NimBLE host configuration. */ ble_hs_cfg.reset_cb = bleprph_on_reset; ble_hs_cfg.sync_cb = bleprph_on_sync; diff --git a/examples/host_nimble_bleprph_host_only_uart_hci/sdkconfig.defaults b/examples/host_nimble_bleprph_host_only_uart_hci/sdkconfig.defaults index eb07a5c5..9d75e215 100644 --- a/examples/host_nimble_bleprph_host_only_uart_hci/sdkconfig.defaults +++ b/examples/host_nimble_bleprph_host_only_uart_hci/sdkconfig.defaults @@ -1,6 +1,8 @@ # Override some defaults so BT stack is enabled # in this example +CONFIG_FREERTOS_HZ=1000 + # # BT config # diff --git a/examples/host_nimble_bleprph_host_only_vhci/README.md b/examples/host_nimble_bleprph_host_only_vhci/README.md index 63a68f27..6e94f6b7 100644 --- a/examples/host_nimble_bleprph_host_only_vhci/README.md +++ b/examples/host_nimble_bleprph_host_only_vhci/README.md @@ -1,5 +1,8 @@ -| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-H2 | ESP32-S3 | ESP32-P4 | -| ----------------- | ----- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | +| Supported Hosts | ESP32 | ESP32-P Series | ESP32-H Series | ESP32-C Series | ESP32-S Series | Any other MCU hosts | +| --------------- | ----- | -------------- | -------------- | -------------- | -------------- | ------------------- | + +| Supported Co-Processors | ESP32 | ESP32-C Series | ESP32-S Series | +| ----------------------- | ----- | -------------- | -------------- | # BLE Host-Only Peripheral Hosted HCI Example diff --git a/examples/host_nimble_bleprph_host_only_vhci/main/main.c b/examples/host_nimble_bleprph_host_only_vhci/main/main.c index 8b5b2ec3..67972475 100644 --- a/examples/host_nimble_bleprph_host_only_vhci/main/main.c +++ b/examples/host_nimble_bleprph_host_only_vhci/main/main.c @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -15,6 +15,8 @@ #include "services/gap/ble_svc_gap.h" #include "bleprph.h" +#include "esp_hosted.h" + #if CONFIG_EXAMPLE_EXTENDED_ADV static uint8_t ext_adv_pattern_1[] = { 0x02, 0x01, 0x06, @@ -496,11 +498,35 @@ app_main(void) } ESP_ERROR_CHECK(ret); + // initialise connection to co-processor + esp_hosted_connect_to_slave(); + + // get fw version + ESP_LOGI("INFO", "getting fw version"); + esp_hosted_coprocessor_fwver_t fwver; + if (ESP_OK == esp_hosted_get_coprocessor_fwversion(&fwver)) { + ESP_LOGI("INFO", "FW Version: %d.%d.%d", + fwver.major1, fwver.minor1, fwver.patch1); + } else { + ESP_LOGW("INFO", "failed to get fw version"); + } + + // init bt controller + if (ESP_OK != esp_hosted_bt_controller_init()) { + ESP_LOGW("INFO", "failed to init bt controller"); + } + + // enable bt controller + if (ESP_OK != esp_hosted_bt_controller_enable()) { + ESP_LOGW("INFO", "failed to enable bt controller"); + } + ret = nimble_port_init(); if (ret != ESP_OK) { - ESP_LOGE(tag, "Failed to init nimble %d ", ret); + ESP_LOGW("INFO", "Failed to init nimble %d ", ret); return; } + /* Initialize the NimBLE host configuration. */ ble_hs_cfg.reset_cb = bleprph_on_reset; ble_hs_cfg.sync_cb = bleprph_on_sync; diff --git a/examples/host_nimble_bleprph_host_only_vhci/sdkconfig.defaults b/examples/host_nimble_bleprph_host_only_vhci/sdkconfig.defaults index 2e66a8a8..0674e2ca 100644 --- a/examples/host_nimble_bleprph_host_only_vhci/sdkconfig.defaults +++ b/examples/host_nimble_bleprph_host_only_vhci/sdkconfig.defaults @@ -1,6 +1,8 @@ # Override some defaults so BT stack is enabled # in this example +CONFIG_FREERTOS_HZ=1000 + # # BT config # diff --git a/host/api/src/esp_hosted_api.c b/host/api/src/esp_hosted_api.c index 1c107755..8ed2e020 100644 --- a/host/api/src/esp_hosted_api.c +++ b/host/api/src/esp_hosted_api.c @@ -14,6 +14,7 @@ extern "C" { #include "esp_hosted_wifi_remote_glue.h" #include "port_esp_hosted_host_wifi_config.h" #include "port_esp_hosted_host_os.h" +#include "esp_hosted_misc.h" #include "esp_check.h" #include "transport_drv.h" #include "rpc_wrap.h" @@ -734,6 +735,71 @@ esp_err_t esp_eap_client_remote_set_eap_methods(esp_eap_method_t methods) #endif #endif +esp_err_t esp_hosted_bt_controller_init(void) +{ + return rpc_bt_controller_init(); +} + +esp_err_t esp_hosted_bt_controller_deinit(bool mem_release) +{ + return rpc_bt_controller_deinit(mem_release); +} + +esp_err_t esp_hosted_bt_controller_enable(void) +{ + return rpc_bt_controller_enable(); +} + +esp_err_t esp_hosted_bt_controller_disable(void) +{ + return rpc_bt_controller_disable(); +} + +static bool check_mac_len(size_t mac_len, esp_mac_type_t type) +{ + if (((type == ESP_MAC_IEEE802154) && (mac_len == 8)) || + ((type == ESP_MAC_EFUSE_EXT) && (mac_len == 2)) || + (mac_len == 6)) { + return true; + } + return false; +} + +esp_err_t esp_hosted_iface_mac_addr_set(uint8_t *mac, size_t mac_len, esp_mac_type_t type) +{ + // check that incoming mac_len is correct for the provided type + if (!check_mac_len(mac_len, type)) { + ESP_LOGE(TAG, "Invalid mac length for provided MAC type"); + return ESP_ERR_INVALID_ARG; + } + + return rpc_iface_mac_addr_set_get(true, mac, mac_len, type); +} + +esp_err_t esp_hosted_iface_mac_addr_get(uint8_t *mac, size_t mac_len, esp_mac_type_t type) +{ + // check that incoming mac_len is correct for the provided type + if (!check_mac_len(mac_len, type)) { + ESP_LOGE(TAG, "Invalid mac length for provided MAC type"); + return ESP_ERR_INVALID_ARG; + } + + return rpc_iface_mac_addr_set_get(false, mac, mac_len, type); +} + +size_t esp_hosted_iface_mac_addr_len_get(esp_mac_type_t type) +{ + // NOTE: this API returns size_t, not esp_err_t + // to match size_t esp_mac_addr_len_get(esp_mac_type_t type) + size_t len; + + if (ESP_OK != rpc_iface_mac_addr_len_get(&len, type)) { + return 0; + } else { + return len; + } +} + /* esp_err_t esp_wifi_remote_scan_get_ap_record(wifi_ap_record_t *ap_record) esp_err_t esp_wifi_remote_set_csi(_Bool en) esp_err_t esp_wifi_remote_set_csi_rx_cb(wifi_csi_cb_t cb, void *ctx) diff --git a/host/drivers/rpc/core/rpc_req.c b/host/drivers/rpc/core/rpc_req.c index 6c3fa1d0..c558b622 100644 --- a/host/drivers/rpc/core/rpc_req.c +++ b/host/drivers/rpc/core/rpc_req.c @@ -574,7 +574,7 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) rpc__req__wifi_sta_itwt_set_target_wake_time_offset__init); req_payload->offset_us = app_req->u.wifi_itwt_set_target_wake_time_offset_us; break; -#endif +#endif // H_WIFI_HE_SUPPORT #if H_WIFI_DUALBAND_SUPPORT } case RPC_ID__Req_WifiSetProtocols: { RPC_ALLOC_ASSIGN(RpcReqWifiSetProtocols, req_wifi_set_protocols, @@ -614,7 +614,60 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) rpc__req__wifi_set_band_mode__init); req_payload->bandmode = app_req->u.wifi_band_mode; break; -#endif +#endif // H_WIFI_DUALBAND_SUPPORT + } case RPC_ID__Req_IfaceMacAddrSetGet: { + RPC_ALLOC_ASSIGN(RpcReqIfaceMacAddrSetGet, req_iface_mac_addr_set_get, + rpc__req__iface_mac_addr_set_get__init); + req_payload->set = app_req->u.iface_mac.set; + req_payload->type = app_req->u.iface_mac.type; + if (req_payload->set) { + RPC_REQ_COPY_BYTES(req_payload->mac, app_req->u.iface_mac.mac, + app_req->u.iface_mac.mac_len); + } + break; + } case RPC_ID__Req_FeatureControl: { + RPC_ALLOC_ASSIGN(RpcReqFeatureControl, req_feature_control, + rpc__req__feature_control__init); + // convert from rpc_slave_if.h enums to proto enums + switch (app_req->u.feature_control.feature) { + case FEATURE_BT: + req_payload->feature = RPC_FEATURE__Feature_Bluetooth; + break; + default: + req_payload->feature = RPC_FEATURE__Feature_None; + break; + } + switch (app_req->u.feature_control.command) { + case FEATURE_COMMAND_BT_INIT: + req_payload->command = RPC_FEATURE_COMMAND__Feature_Command_BT_Init; + break; + case FEATURE_COMMAND_BT_DEINIT: + req_payload->command = RPC_FEATURE_COMMAND__Feature_Command_BT_Deinit; + break; + case FEATURE_COMMAND_BT_ENABLE: + req_payload->command = RPC_FEATURE_COMMAND__Feature_Command_BT_Enable; + break; + case FEATURE_COMMAND_BT_DISABLE: + req_payload->command = RPC_FEATURE_COMMAND__Feature_Command_BT_Disable; + break; + default: + req_payload->command = RPC_FEATURE_COMMAND__Feature_Command_None; + break; + } + switch (app_req->u.feature_control.option) { + case FEATURE_OPTION_BT_DEINIT_RELEASE_MEMORY: + req_payload->option = RPC_FEATURE_OPTION__Feature_Option_BT_Deinit_Release_Memory; + break; + default: + req_payload->option = RPC_FEATURE_OPTION__Feature_Option_None; + break; + } + break; + } case RPC_ID__Req_IfaceMacAddrLenGet: { + RPC_ALLOC_ASSIGN(RpcReqIfaceMacAddrLenGet, req_iface_mac_addr_len_get, + rpc__req__iface_mac_addr_len_get__init); + req_payload->type = app_req->u.iface_mac_len.type; + break; } case RPC_ID__Req_SetDhcpDnsStatus: { RPC_ALLOC_ASSIGN(RpcReqSetDhcpDnsStatus, req_set_dhcp_dns, rpc__req__set_dhcp_dns_status__init); diff --git a/host/drivers/rpc/core/rpc_rsp.c b/host/drivers/rpc/core/rpc_rsp.c index c17a736c..6aac89e1 100644 --- a/host/drivers/rpc/core/rpc_rsp.c +++ b/host/drivers/rpc/core/rpc_rsp.c @@ -557,7 +557,7 @@ int rpc_parse_rsp(Rpc *rpc_msg, ctrl_cmd_t *app_resp) RPC_FAIL_ON_NULL(resp_wifi_sta_itwt_set_target_wake_time_offset); RPC_ERR_IN_RESP(resp_wifi_sta_itwt_set_target_wake_time_offset); break; -#endif +#endif // H_WIFI_HE_SUPPORT #if H_WIFI_DUALBAND_SUPPORT } case RPC_ID__Resp_WifiSetProtocols: { RPC_FAIL_ON_NULL(resp_wifi_set_protocols); @@ -611,7 +611,24 @@ int rpc_parse_rsp(Rpc *rpc_msg, ctrl_cmd_t *app_resp) app_resp->u.wifi_band_mode = rpc_msg->resp_wifi_get_bandmode->bandmode; break; -#endif +#endif // H_WIFI_DUALBAND_SUPPORT + } case RPC_ID__Resp_IfaceMacAddrSetGet: { + RPC_FAIL_ON_NULL(resp_iface_mac_addr_set_get); + RPC_ERR_IN_RESP(resp_iface_mac_addr_set_get); + RPC_RSP_COPY_BYTES(app_resp->u.iface_mac.mac, rpc_msg->resp_iface_mac_addr_set_get->mac); + break; + } case RPC_ID__Resp_IfaceMacAddrLenGet: { + RPC_FAIL_ON_NULL(resp_iface_mac_addr_len_get); + RPC_ERR_IN_RESP(resp_iface_mac_addr_len_get); + app_resp->u.iface_mac_len.type = + rpc_msg->resp_iface_mac_addr_len_get->type; + app_resp->u.iface_mac_len.len = + rpc_msg->resp_iface_mac_addr_len_get->len; + break; + } case RPC_ID__Resp_FeatureControl: { + RPC_FAIL_ON_NULL(resp_feature_control); + RPC_ERR_IN_RESP(resp_feature_control); + break; } case RPC_ID__Resp_SetDhcpDnsStatus: { RPC_FAIL_ON_NULL(resp_set_dhcp_dns); RPC_ERR_IN_RESP(resp_set_dhcp_dns); diff --git a/host/drivers/rpc/slaveif/rpc_slave_if.c b/host/drivers/rpc/slaveif/rpc_slave_if.c index 7d4b5923..f579d05a 100644 --- a/host/drivers/rpc/slaveif/rpc_slave_if.c +++ b/host/drivers/rpc/slaveif/rpc_slave_if.c @@ -396,6 +396,24 @@ ctrl_cmd_t * rpc_slaveif_get_coprocessor_fwversion(ctrl_cmd_t *req) RPC_DECODE_RSP_IF_NOT_ASYNC(); } +ctrl_cmd_t * rpc_slaveif_iface_mac_addr_set_get(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_IfaceMacAddrSetGet); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_feature_control(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_FeatureControl); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + +ctrl_cmd_t * rpc_slaveif_iface_mac_addr_len_get(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_IfaceMacAddrLenGet); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + #if H_WIFI_DUALBAND_SUPPORT ctrl_cmd_t * rpc_slaveif_wifi_get_protocols(ctrl_cmd_t *req) { diff --git a/host/drivers/rpc/slaveif/rpc_slave_if.h b/host/drivers/rpc/slaveif/rpc_slave_if.h index 022b7010..ebbee39a 100644 --- a/host/drivers/rpc/slaveif/rpc_slave_if.h +++ b/host/drivers/rpc/slaveif/rpc_slave_if.h @@ -11,6 +11,7 @@ #include #include "esp_hosted_rpc.pb-c.h" #include "esp_wifi.h" +#include "esp_mac.h" #include "esp_wifi_types.h" #include "port_esp_hosted_host_wifi_config.h" @@ -31,6 +32,8 @@ extern "C" { #define STATUS_LENGTH 14 #define VENDOR_OUI_BUF 3 +#define IFACE_MAC_SIZE 8 // 6 for MAC-48, 8 for EIU-64, 2 for EFUSE_EXT + /* #define SUCCESS 0 #define FAILURE -1 @@ -61,8 +64,35 @@ extern "C" { #define RPC_RX_QUEUE_SIZE 3 #define RPC_TX_QUEUE_SIZE 5 +typedef enum { + FEATURE_NONE, + FEATURE_BT, + // add additional features here +} rpc_feature; + +typedef enum { + FEATURE_COMMAND_NONE, + FEATURE_COMMAND_BT_INIT, + FEATURE_COMMAND_BT_DEINIT, + FEATURE_COMMAND_BT_ENABLE, + FEATURE_COMMAND_BT_DISABLE, + // add additional feature commands here +} rpc_feature_command; + +typedef enum { + FEATURE_OPTION_NONE, + FEATURE_OPTION_BT_DEINIT_RELEASE_MEMORY, + // add additional feature options here +} rpc_feature_option; + /*---- Control structures ----*/ +typedef struct { + rpc_feature feature; + rpc_feature_command command; + rpc_feature_option option; +} rcp_feature_control_t; + typedef struct { int mode; uint8_t mac[BSSID_BYTES_SIZE]; @@ -184,6 +214,18 @@ typedef struct { int dns_type; } rpc_set_dhcp_dns_status_t; +typedef struct { + bool set; + esp_mac_type_t type; + size_t mac_len; + uint8_t mac[IFACE_MAC_SIZE]; +} rpc_iface_mac_t; + +typedef struct { + size_t len; + esp_mac_type_t type; +} rpc_iface_mac_len_t; + typedef struct { wifi_interface_t ifx; uint16_t sec; @@ -356,6 +398,14 @@ typedef struct Ctrl_cmd_t { rpc_coprocessor_fwversion_t coprocessor_fwversion; + rpc_iface_mac_t iface_mac; + + rpc_iface_mac_len_t iface_mac_len; + + bool bt_mem_release; + + rcp_feature_control_t feature_control; + #if H_WIFI_HE_SUPPORT wifi_twt_config_t wifi_twt_config; @@ -658,6 +708,12 @@ ctrl_cmd_t * rpc_slaveif_wifi_get_band(ctrl_cmd_t *req); ctrl_cmd_t * rpc_slaveif_wifi_set_band_mode(ctrl_cmd_t *req); ctrl_cmd_t * rpc_slaveif_wifi_get_band_mode(ctrl_cmd_t *req); ctrl_cmd_t * rpc_slaveif_set_slave_dhcp_dns_status(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_iface_mac_addr_set_get(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slaveif_feature_control(ctrl_cmd_t *req); + +ctrl_cmd_t * rpc_slaveif_iface_mac_addr_set_get(ctrl_cmd_t *req); +ctrl_cmd_t * rpc_slave_feature_command(ctrl_cmd_t *req);; +ctrl_cmd_t * rpc_slaveif_iface_mac_addr_len_get(ctrl_cmd_t *req); ctrl_cmd_t * rpc_slaveif_wifi_set_inactive_time(ctrl_cmd_t *req); ctrl_cmd_t * rpc_slaveif_wifi_get_inactive_time(ctrl_cmd_t *req); ctrl_cmd_t * rpc_slaveif_wifi_sta_twt_config(ctrl_cmd_t *req); diff --git a/host/drivers/rpc/wrap/rpc_wrap.c b/host/drivers/rpc/wrap/rpc_wrap.c index 4f76eedc..d109cfa7 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.c +++ b/host/drivers/rpc/wrap/rpc_wrap.c @@ -37,9 +37,11 @@ uint8_t restart_after_slave_ota = 0; #define OTA_BEGIN_RSP_TIMEOUT_SEC 15 #define WIFI_INIT_RSP_TIMEOUT_SEC 10 #define OTA_FROM_WEB_URL 1 +#define GET_FWVERSION_TIMEOUT_SEC 1 /* Forward declarations */ static int rpc_wifi_connect_async(void); +static esp_err_t rpc_iface_feature_control(rcp_feature_control_t *feature_control); static ctrl_cmd_t * RPC_DEFAULT_REQ(void) { @@ -641,6 +643,9 @@ int rpc_rsp_callback(ctrl_cmd_t * app_resp) case RPC_ID__Resp_SetDhcpDnsStatus: case RPC_ID__Resp_WifiSetInactiveTime: case RPC_ID__Resp_WifiGetInactiveTime: + case RPC_ID__Resp_IfaceMacAddrSetGet: + case RPC_ID__Resp_IfaceMacAddrLenGet: + case RPC_ID__Resp_FeatureControl: #if H_WIFI_HE_SUPPORT case RPC_ID__Resp_WifiStaTwtConfig: case RPC_ID__Resp_WifiStaItwtSetup: @@ -836,6 +841,8 @@ esp_err_t rpc_get_coprocessor_fwversion(esp_hosted_coprocessor_fwver_t *ver_info { /* implemented synchronous */ ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + // change timeout value for this call + req->rsp_timeout_sec = GET_FWVERSION_TIMEOUT_SEC; ctrl_cmd_t *resp = NULL; resp = rpc_slaveif_get_coprocessor_fwversion(req); @@ -2044,6 +2051,7 @@ esp_err_t rpc_eap_client_set_eap_methods(esp_eap_method_t methods) } #endif #endif + #if H_DPP_SUPPORT esp_err_t rpc_supp_dpp_init(esp_supp_dpp_event_cb_t evt_cb) { @@ -2240,3 +2248,105 @@ static void rpc_supp_thread(void const *arg) } #endif // H_SUPP_DPP_SUPPORT #endif // H_DPP_SUPPORT + +esp_err_t rpc_iface_mac_addr_set_get(bool set, uint8_t *mac, size_t mac_len, esp_mac_type_t type) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + req->u.iface_mac.set = set; + req->u.iface_mac.type = type; + req->u.iface_mac.mac_len = mac_len; + memset(req->u.iface_mac.mac, 0, sizeof(req->u.iface_mac.mac)); + + if (set) { + memcpy(req->u.iface_mac.mac, mac, mac_len); + } + + resp = rpc_slaveif_iface_mac_addr_set_get(req); + + // copy mac address for get + if (!set && resp && resp->resp_event_status == SUCCESS) { + memcpy(mac, resp->u.iface_mac.mac, mac_len); + } + return rpc_rsp_callback(resp); +} + +int rpc_bt_controller_init(void) +{ + rcp_feature_control_t feature_control; + + feature_control.feature = FEATURE_BT; + feature_control.command = FEATURE_COMMAND_BT_INIT; + feature_control.option = FEATURE_OPTION_NONE; + + return rpc_iface_feature_control(&feature_control); +} + +int rpc_bt_controller_deinit(bool mem_release) +{ + rcp_feature_control_t feature_control; + + feature_control.feature = FEATURE_BT; + feature_control.command = FEATURE_COMMAND_BT_DEINIT; + if (mem_release) { + feature_control.option = FEATURE_OPTION_BT_DEINIT_RELEASE_MEMORY; + } else { + feature_control.option = FEATURE_OPTION_NONE; + } + + return rpc_iface_feature_control(&feature_control); +} + +int rpc_bt_controller_enable(void) +{ + rcp_feature_control_t feature_control; + + feature_control.feature = FEATURE_BT; + feature_control.command = FEATURE_COMMAND_BT_ENABLE; + feature_control.option = FEATURE_OPTION_NONE; + + return rpc_iface_feature_control(&feature_control); +} + +int rpc_bt_controller_disable(void) +{ + rcp_feature_control_t feature_control; + + feature_control.feature = FEATURE_BT; + feature_control.command = FEATURE_COMMAND_BT_DISABLE; + feature_control.option = FEATURE_OPTION_NONE; + + return rpc_iface_feature_control(&feature_control); +} + +esp_err_t rpc_iface_mac_addr_len_get(size_t *len, esp_mac_type_t type) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + req->u.iface_mac_len.type = type; + resp = rpc_slaveif_iface_mac_addr_len_get(req); + + if (resp && resp->resp_event_status == SUCCESS) { + *len = resp->u.iface_mac_len.len; + } + return rpc_rsp_callback(resp); +} + +static esp_err_t rpc_iface_feature_control(rcp_feature_control_t *feature_control) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + req->u.feature_control.feature = feature_control->feature; + req->u.feature_control.command = feature_control->command; + req->u.feature_control.option = feature_control->option; + + resp = rpc_slaveif_feature_control(req); + + return rpc_rsp_callback(resp); +} diff --git a/host/drivers/rpc/wrap/rpc_wrap.h b/host/drivers/rpc/wrap/rpc_wrap.h index 640cc693..7261397d 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.h +++ b/host/drivers/rpc/wrap/rpc_wrap.h @@ -15,6 +15,7 @@ extern "C" { /** Includes **/ #include "esp_wifi.h" #include "port_esp_hosted_host_wifi_config.h" +#include "esp_mac.h" #include "esp_hosted_api_types.h" #include "esp_hosted_ota.h" @@ -84,6 +85,14 @@ esp_err_t rpc_wifi_set_inactive_time(wifi_interface_t ifx, uint16_t sec); esp_err_t rpc_wifi_get_inactive_time(wifi_interface_t ifx, uint16_t *sec); esp_err_t rpc_get_coprocessor_fwversion(esp_hosted_coprocessor_fwver_t *ver_info); +esp_err_t rpc_bt_controller_init(void); +esp_err_t rpc_bt_controller_deinit(bool mem_release); +esp_err_t rpc_bt_controller_enable(void); +esp_err_t rpc_bt_controller_disable(void); + +esp_err_t rpc_iface_mac_addr_set_get(bool set, uint8_t *mac, size_t mac_len, esp_mac_type_t type); +esp_err_t rpc_iface_mac_addr_len_get(size_t *len, esp_mac_type_t type); + esp_err_t rpc_ota_begin(void); esp_err_t rpc_ota_write(uint8_t* ota_data, uint32_t ota_data_len); esp_err_t rpc_ota_end(void); diff --git a/host/esp_hosted.h b/host/esp_hosted.h index 94560078..0a85eb04 100644 --- a/host/esp_hosted.h +++ b/host/esp_hosted.h @@ -14,6 +14,7 @@ extern "C" { #include "esp_hosted_api_types.h" #include "esp_hosted_host_fw_ver.h" #include "esp_hosted_ota.h" +#include "esp_hosted_misc.h" typedef struct esp_hosted_transport_config esp_hosted_config_t; diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index 984d3800..825f814b 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 #define ESP_HOSTED_VERSION_MINOR_1 5 -#define ESP_HOSTED_VERSION_PATCH_1 1 +#define ESP_HOSTED_VERSION_PATCH_1 2 #endif diff --git a/host/esp_hosted_misc.h b/host/esp_hosted_misc.h new file mode 100644 index 00000000..687d00e6 --- /dev/null +++ b/host/esp_hosted_misc.h @@ -0,0 +1,82 @@ +/* + * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef __ESP_HOSTED_MISC_H__ +#define __ESP_HOSTED_MISC_H__ + +#include "esp_mac.h" + +/** + * @brief Initialise the BT Controller on the co-processor + * + * @return ESP_OK on success + */ +esp_err_t esp_hosted_bt_controller_init(void); + +/** + * @brief Deinitialise the BT Controller on the co-processor + * + * @param mem_release. Also releases memory used by controller. Once released, the BT controller cannot reuse the memory and cannot be initialised + * + * @return ESP_OK on success + */ +esp_err_t esp_hosted_bt_controller_deinit(bool mem_release); + +/** + * @brief Enables the BT Controller on the co-processor. Call only after initialising the BT controller. + * + * @return ESP_OK on success + */ +esp_err_t esp_hosted_bt_controller_enable(void); + +/** + * @brief Disables the BT Controller on the co-processor. Call before deinitialising the BT controller. + * + * @return ESP_OK on success + */ +esp_err_t esp_hosted_bt_controller_disable(void); + +/** + * @brief Set custom MAC address of the interface. + * + * This function allows you to overwrite the MAC addresses of the + * interfaces set by the base MAC address. + * + * @param mac MAC address, length: 6 bytes/8 bytes. + * length: 6 bytes for MAC-48 + * 8 bytes for EUI-64(used for ESP_MAC_IEEE802154 type) + * @param mac_len Length of the mac array + * @param type Type of MAC address + * + * @return ESP_OK on success + */ +esp_err_t esp_hosted_iface_mac_addr_set(uint8_t *mac, size_t mac_len, esp_mac_type_t type); + +/** + * @brief Read MAC address of the interface. + * + * @param mac base MAC address, length: 6 bytes/8 bytes. + * length: 6 bytes for MAC-48 + * 8 bytes for EUI-64(used for IEEE 802.15.4) + * @param mac_len Length of the mac array + * @param type Type of MAC address + * + * @return ESP_OK on success + */ +esp_err_t esp_hosted_iface_mac_addr_get(uint8_t *mac, size_t mac_len, esp_mac_type_t type); + +/** + * @brief Return the size of the MAC type in bytes. + * + * @param type Type of MAC address + * + * @return 0 MAC type not found (not supported) + * 6 bytes for MAC-48. + * 8 bytes for EUI-64. + */ +size_t esp_hosted_iface_mac_addr_len_get(esp_mac_type_t type); + +#endif diff --git a/host/port/esp/freertos/include/port_esp_hosted_host_config.h b/host/port/esp/freertos/include/port_esp_hosted_host_config.h index a1697b4a..82ecdc33 100644 --- a/host/port/esp/freertos/include/port_esp_hosted_host_config.h +++ b/host/port/esp/freertos/include/port_esp_hosted_host_config.h @@ -27,10 +27,6 @@ #define H_TRANSPORT_SPI 3 #define H_TRANSPORT_UART 4 -#ifdef CONFIG_ESP_HOSTED_SDIO_HOST_INTERFACE - #include "driver/sdmmc_host.h" -#endif - #ifdef CONFIG_ESP_HOSTED_UART_HOST_INTERFACE #include "hal/uart_types.h" #endif diff --git a/idf_component.yml b/idf_component.yml index 6a2fe365..3b589d0c 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.5.1" +version: "2.5.2" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/esp_hosted_coprocessor.c b/slave/main/esp_hosted_coprocessor.c index 22dbb871..edb136a4 100644 --- a/slave/main/esp_hosted_coprocessor.c +++ b/slave/main/esp_hosted_coprocessor.c @@ -1152,10 +1152,6 @@ esp_err_t esp_hosted_coprocessor_init(void) CONFIG_ESP_HOSTED_HOST_RESERVED_UDP_DEST_PORTS); #endif -#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_SOC_BT_SUPPORTED) - initialise_bluetooth(); -#endif - pc_pserial = protocomm_new(); if (pc_pserial == NULL) { ESP_LOGE(TAG,"Failed to allocate memory for new instance of protocomm "); diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index 725a13ba..dac44471 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 #define PROJECT_VERSION_MINOR_1 5 -#define PROJECT_VERSION_PATCH_1 1 +#define PROJECT_VERSION_PATCH_1 2 #endif diff --git a/slave/main/slave_bt.c b/slave/main/slave_bt.c index 7ec4953b..d0c6d197 100644 --- a/slave/main/slave_bt.c +++ b/slave/main/slave_bt.c @@ -196,8 +196,10 @@ ble_hs_rx_data(struct os_mbuf *om, void *arg) #endif #endif -esp_err_t initialise_bluetooth(void) +esp_err_t init_bluetooth(void) { + esp_err_t ret = ESP_FAIL; + #if CONFIG_BT_ENABLED uint8_t mac[BSSID_BYTES_SIZE] = {0}; esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT(); @@ -210,30 +212,13 @@ esp_err_t initialise_bluetooth(void) slave_bt_init_uart(&bt_cfg); #endif - ESP_ERROR_CHECK( esp_bt_controller_init(&bt_cfg) ); -#if BLUETOOTH_BLE - ESP_ERROR_CHECK( esp_bt_controller_enable(ESP_BT_MODE_BLE) ); -#elif BLUETOOTH_BT - ESP_ERROR_CHECK( esp_bt_controller_enable(ESP_BT_MODE_CLASSIC_BT) ); -#elif BLUETOOTH_BT_BLE - ESP_ERROR_CHECK( esp_bt_controller_enable(ESP_BT_MODE_BTDM) ); -#endif - -#if BLUETOOTH_HCI - esp_err_t ret = ESP_OK; - -#if SOC_ESP_NIMBLE_CONTROLLER && (ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 3, 0)) - ble_hci_trans_cfg_hs((ble_hci_trans_rx_cmd_fn *)ble_hs_hci_rx_evt,NULL, - (ble_hci_trans_rx_acl_fn *)ble_hs_rx_data,NULL); -#else - ret = esp_vhci_host_register_callback(&vhci_host_cb); -#endif - + ret = esp_bt_controller_init(&bt_cfg); if (ret != ESP_OK) { - ESP_LOGE(TAG, "Failed to register VHCI callback"); + ESP_LOGE(TAG, "esp_bt_controller_init() FAILED"); return ret; } +#if BLUETOOTH_HCI vhci_send_sem = xSemaphoreCreateBinary(); if (vhci_send_sem == NULL) { ESP_LOGE(TAG, "Failed to create VHCI send sem"); @@ -244,11 +229,13 @@ esp_err_t initialise_bluetooth(void) #endif #endif - return ESP_OK; + return ret; } -void deinitialize_bluetooth(void) +esp_err_t deinit_bluetooth(bool mem_release) { + esp_err_t result = ESP_FAIL; + #ifdef CONFIG_BT_ENABLED #if BLUETOOTH_HCI if (vhci_send_sem) { @@ -258,9 +245,84 @@ void deinitialize_bluetooth(void) vSemaphoreDelete(vhci_send_sem); vhci_send_sem = NULL; } - esp_bt_controller_disable(); - esp_bt_controller_deinit(); #endif + result = esp_bt_controller_deinit(); + if (result != ESP_OK) { + ESP_LOGE(TAG, "esp_bt_controller_deinit FAILED"); + return result; + } + + if (mem_release) { + result = ESP_OK; +#if BLUETOOTH_BLE + result = esp_bt_controller_mem_release(ESP_BT_MODE_BLE); +#elif BLUETOOTH_BT + result = esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT); +#elif BLUETOOTH_BT_BLE + result = esp_bt_controller_mem_release(ESP_BT_MODE_BTDM); +#endif + if (result != ESP_OK) { + ESP_LOGE(TAG, "esp_bt_controller_mem_release FAILED"); + return result; + } + } +#endif + return result; +} + +esp_err_t enable_bluetooth(void) +{ + esp_err_t ret = ESP_FAIL; + +#ifdef CONFIG_BT_ENABLED +#if BLUETOOTH_BLE + ret = esp_bt_controller_enable(ESP_BT_MODE_BLE); +#elif BLUETOOTH_BT + ret = esp_bt_controller_enable(ESP_BT_MODE_CLASSIC_BT); +#elif BLUETOOTH_BT_BLE + ret = esp_bt_controller_enable(ESP_BT_MODE_BTDM); +#endif + if (ret != ESP_OK) { + ESP_LOGE(TAG, "esp_bt_controller_enable FAILED (or not called)"); + return ret; + } + +#if BLUETOOTH_HCI +#if SOC_ESP_NIMBLE_CONTROLLER && (ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 3, 0)) + ble_hci_trans_cfg_hs((ble_hci_trans_rx_cmd_fn *)ble_hs_hci_rx_evt,NULL, + (ble_hci_trans_rx_acl_fn *)ble_hs_rx_data,NULL); +#else + ret = esp_vhci_host_register_callback(&vhci_host_cb); + + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to register VHCI callback"); + return ret; + } +#endif +#endif // BLUETOOTH_HCI +#endif // CONFIG_BT_ENABLED + + return ret; +} + +esp_err_t disable_bluetooth(void) +{ +#ifdef CONFIG_BT_ENABLED +#if BLUETOOTH_HCI +// unregister callback functions +#if SOC_ESP_NIMBLE_CONTROLLER && (ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 3, 0)) + ble_hci_trans_cfg_hs(NULL, NULL, + NULL, NULL); +#else + esp_vhci_host_callback_t null_cb = { + NULL, NULL }; + esp_vhci_host_register_callback(&null_cb); +#endif +#endif + + return esp_bt_controller_disable(); +#else + return ESP_FAIL; #endif } diff --git a/slave/main/slave_bt.h b/slave/main/slave_bt.h index 620c93ae..c9617958 100644 --- a/slave/main/slave_bt.h +++ b/slave/main/slave_bt.h @@ -19,6 +19,7 @@ #include "esp_err.h" #include "esp_idf_version.h" +#include #ifdef CONFIG_BT_ENABLED @@ -160,8 +161,11 @@ #endif #endif /* CONFIG_BT_ENABLED */ -void deinitialize_bluetooth(void); -esp_err_t initialise_bluetooth(void); +esp_err_t init_bluetooth(void); +esp_err_t enable_bluetooth(void); +esp_err_t disable_bluetooth(void); +esp_err_t deinit_bluetooth(bool mem_release); + uint8_t get_bluetooth_capabilities(void); uint32_t get_bluetooth_ext_capabilities(void); diff --git a/slave/main/slave_control.c b/slave/main/slave_control.c index c4ed4fe5..f6a87e67 100644 --- a/slave/main/slave_control.c +++ b/slave/main/slave_control.c @@ -13,11 +13,13 @@ #include "slave_control.h" #include "esp_hosted_rpc.pb-c.h" #include "esp_ota_ops.h" +#include "esp_mac.h" #include "esp_hosted_rpc.h" #include "esp_hosted_transport.h" #include "esp_hosted_bitmasks.h" #include "slave_wifi_config.h" #include "esp_hosted_log.h" +#include "slave_bt.h" #include "esp_hosted_coprocessor_fw_ver.h" #if H_DPP_SUPPORT @@ -50,6 +52,8 @@ #define MIN_TX_POWER 8 #define MAX_TX_POWER 84 +#define IFACE_MAC_SIZE 8 // 6 for MAC-48, 8 for EIU-64, 2 for EFUSE_EXT + #define MAX_STA_CONNECT_ATTEMPTS 3 #define TIMEOUT_IN_MIN (60*TIMEOUT_IN_SEC) @@ -3210,6 +3214,104 @@ static esp_err_t req_get_coprocessor_fw_version(Rpc *req, Rpc *resp, void *priv_ return ESP_OK; } +static esp_err_t req_iface_mac_addr_len_get(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespIfaceMacAddrLenGet, resp_iface_mac_addr_len_get, + RpcReqIfaceMacAddrLenGet, req_iface_mac_addr_len_get, + rpc__resp__iface_mac_addr_len_get__init); + + size_t len = esp_mac_addr_len_get(req_payload->type); + + resp_payload->type = req_payload->type; + resp_payload->len = len; + + return ESP_OK; +} + +static esp_err_t req_iface_mac_addr_set_get(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespIfaceMacAddrSetGet, resp_iface_mac_addr_set_get, + RpcReqIfaceMacAddrSetGet, req_iface_mac_addr_set_get, + rpc__resp__iface_mac_addr_set_get__init); + + // copy the incoming request to the outgoing response + resp_payload->set = req_payload->set; + resp_payload->type = req_payload->type; + + // get the expected len based on the type + size_t len = esp_mac_addr_len_get(req_payload->type); + + if (req_payload->set) { + // set the interface mac address + if (req_payload->mac.len) { + if (req_payload->mac.len == len) { + RPC_RET_FAIL_IF(esp_iface_mac_addr_set(req_payload->mac.data, req_payload->type)); + // copy the mac address that was set in the response + RPC_RESP_COPY_BYTES_SRC_UNCHECKED(resp_payload->mac, req_payload->mac.data, len); + } else { + ESP_LOGE(TAG, "expected mac length %" PRIu16 ", but got %" PRIu16, len, req_payload->mac.len); + resp_payload->resp = ESP_ERR_INVALID_ARG; + } + } else { + // no mac data provided + ESP_LOGE(TAG, "error: set iface mac address without mac data"); + resp_payload->resp = ESP_ERR_INVALID_ARG; + } + } else { + // get the interface mac address + uint8_t iface_mac[IFACE_MAC_SIZE] = {0}; + RPC_RET_FAIL_IF(esp_read_mac(iface_mac, req_payload->type)); + + RPC_RESP_COPY_BYTES_SRC_UNCHECKED(resp_payload->mac, iface_mac, len); + } + + return ESP_OK; +} + +static esp_err_t req_feature_control(Rpc *req, Rpc *resp, void *priv_data) +{ + RPC_TEMPLATE(RpcRespFeatureControl, resp_feature_control, + RpcReqFeatureControl, req_feature_control, + rpc__resp__feature_control__init); + + // copy the incoming request to the outgoing response + resp_payload->feature = req_payload->feature; + resp_payload->command = req_payload->command; + resp_payload->option = req_payload->option; + + if (req_payload->feature == RPC_FEATURE__Feature_Bluetooth) { + // decode the requested Bluetooth control + switch (req_payload->command) { + case RPC_FEATURE_COMMAND__Feature_Command_BT_Init: + RPC_RET_FAIL_IF(init_bluetooth()); + break; + case RPC_FEATURE_COMMAND__Feature_Command_BT_Deinit: + bool mem_release = false; + if (req_payload->option == RPC_FEATURE_OPTION__Feature_Option_BT_Deinit_Release_Memory) { + mem_release = true; + } + RPC_RET_FAIL_IF(deinit_bluetooth(mem_release)); + break; + case RPC_FEATURE_COMMAND__Feature_Command_BT_Enable: + RPC_RET_FAIL_IF(enable_bluetooth()); + break; + case RPC_FEATURE_COMMAND__Feature_Command_BT_Disable: + RPC_RET_FAIL_IF(disable_bluetooth()); + break; + default: + // invalid Bluetooth control feature + ESP_LOGE(TAG, "error: invalid Bluetooth Feature Control"); + resp_payload->resp = ESP_ERR_INVALID_ARG; + break; + } + } else { + // invalid feature + ESP_LOGE(TAG, "error: invalid Feature Control"); + resp_payload->resp = ESP_ERR_INVALID_ARG; + } + return ESP_OK; +} + #if CONFIG_SOC_WIFI_HE_SUPPORT static esp_err_t req_wifi_sta_twt_config(Rpc *req, Rpc *resp, void *priv_data) { @@ -3808,6 +3910,18 @@ static esp_rpc_req_t req_table[] = { .command_handler = req_supp_dpp_stop_listen, }, #endif + { + .req_num = RPC_ID__Req_IfaceMacAddrSetGet, + .command_handler = req_iface_mac_addr_set_get + }, + { + .req_num = RPC_ID__Req_IfaceMacAddrLenGet, + .command_handler = req_iface_mac_addr_len_get + }, + { + .req_num = RPC_ID__Req_FeatureControl, + .command_handler = req_feature_control + }, }; diff --git a/tools/check_changelog.py b/tools/check_changelog.py new file mode 100755 index 00000000..a7292bbe --- /dev/null +++ b/tools/check_changelog.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python +# +# SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD +# SPDX-License-Identifier: Apache-2.0 + +# check that the CHANGELOG.md file contains the changelog for the version +# in idf_component.yml +# exit with 0 if ok +# exit with 1 if fail + +# to be run whenever idf_component.yml is updated + +import re +import sys + +# paths to files to check +yml_file = "idf_component.yml" +changelog_file = "CHANGELOG.md" + +def get_idf_yml_version_as_string() -> str: + # read the yml file + file_info = open(yml_file, "r") + info = file_info.read() + file_info.close() + + # extract the version info + ver = re.search("^version: \"([0-9.]+)\"", info) + # print("yml:", ver.group(1)) + return ver.group(1) + +def changelog_has_version(ver_string: str) -> int: + # iterate over the changelog file + matching_line = "## " + ver_string + with open(changelog_file, "r") as changelog: + for line in changelog: + if re.match(matching_line, line): + return 0 + return 1 + +def check() -> int: + yml_string = get_idf_yml_version_as_string() + result = changelog_has_version(yml_string) + if result: + print(f"Changelog for version {yml_string} not found in {changelog_file}") + return 1 + return 0 + +if __name__ == '__main__': + sys.exit(check()) diff --git a/tools/check_rpc_calls.py b/tools/check_rpc_calls.py new file mode 100755 index 00000000..87dfd6cd --- /dev/null +++ b/tools/check_rpc_calls.py @@ -0,0 +1,115 @@ +#!/usr/bin/env python +# +# SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD +# SPDX-License-Identifier: Apache-2.0 + +# check that RPC calls in protobuf and documentation files match +# exit with 0 if ok +# exit with 1 if fail + +import os +import re +import sys + +# method: +# 1. get the set of RPC calls from both the protobuf and documentation files +# 2. compare the sets +# 3. if there are differences, print the differences + +protobuf_file = "common/proto/esp_hosted_rpc.proto" +doc_file = "docs/implemented_rpcs.md" + +def get_set_from_document() -> set: + set_rpcs = set() + + # read the protobuf file + try: + file_info = open(doc_file, "r") + except: + print("Document file open error") + return set_of_rpcs + + # from this pattern in the doc_file: + # | 1 | 257 | GetMacAddress | 0.0.6 | + # it will extract GetMacAddress + # this pattern works for the list of RCP Requests and Events + pattern = re.compile("\|\s*\d+\s*\|\s*\d+\s*\|\s*(\S+)") + + for line in file_info: + # get the list of rpc calls + rpc_call = pattern.search(line) + if rpc_call: + # print(rpc_call.group(1)) + set_rpcs.add(rpc_call.group(1)) + + file_info.close() + + # print(set_rpcs) + + return set_rpcs + +def get_set_from_protobuf() -> set: + set_rpcs = set() + + # read the protobuf file + try: + file_info = open(protobuf_file, "r") + except: + print("Protobuf file open error") + return set_of_rpcs + + # extract requests + # from this pattern in the protobuf_file + # Rpc_Req_GetMacAddress req_get_mac_address = 257; + # it will extract GetMacAddress + pattern_req = re.compile("\s+(Rpc_Req_)(\S+)\s+req_") + + # extract events + # from this pattern in the protobuf_file + # Rpc_Event_ESPInit event_esp_init = 769; + # it will extract ESPInit + pattern_event = re.compile("\s+(Rpc_Event_)(\S+)\s+event_") + + for line in file_info: + # get the list of rpc calls + rpc_call = pattern_req.search(line) + if rpc_call: + set_rpcs.add(rpc_call.group(2)) + rpc_call = pattern_event.search(line) + if rpc_call: + set_rpcs.add(rpc_call.group(2)) + + file_info.close() + + # print(set_rpcs) + + return set_rpcs + +def check() -> int: + ret = 1 + + # get the set of RPC calls in the protobuf file + protobuf_set = get_set_from_protobuf() + + # get the set of RPC calls in the documentation file + document_set = get_set_from_document() + + # compare the two + + # if not equal + if (protobuf_set == document_set): + ret = 0 + else: + # get the differences + only_in_docs = document_set.difference(protobuf_set) + only_in_protobuf = protobuf_set.difference(document_set) + + if only_in_docs: + print("Error: RPCs only found in document:", only_in_docs) + if only_in_protobuf: + print("Error: RPCs only found in protobuf:", only_in_protobuf) + + return ret + +if __name__ == '__main__': + sys.exit(check()) From e4c559b0fdf821db07029a0a8e705f8b9042a21e Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Wed, 24 Sep 2025 22:32:08 +0800 Subject: [PATCH 098/114] Fix the Esp-Hosted & ESP-IDF CI --- CHANGELOG.md | 4 ++++ host/esp_hosted_host_fw_ver.h | 2 +- host/esp_hosted_misc.h | 1 + idf_component.yml | 2 +- slave/main/esp_hosted_coprocessor_fw_ver.h | 2 +- 5 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c7016aa..96f2aae6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 2.5.3 + +Fix the ESP-IDF CI + ## 2.5.2 ### Features diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index 825f814b..0dd786e2 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 #define ESP_HOSTED_VERSION_MINOR_1 5 -#define ESP_HOSTED_VERSION_PATCH_1 2 +#define ESP_HOSTED_VERSION_PATCH_1 3 #endif diff --git a/host/esp_hosted_misc.h b/host/esp_hosted_misc.h index 687d00e6..29e6ad9f 100644 --- a/host/esp_hosted_misc.h +++ b/host/esp_hosted_misc.h @@ -7,6 +7,7 @@ #ifndef __ESP_HOSTED_MISC_H__ #define __ESP_HOSTED_MISC_H__ +#include #include "esp_mac.h" /** diff --git a/idf_component.yml b/idf_component.yml index 3b589d0c..6b841d11 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.5.2" +version: "2.5.3" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index dac44471..a09026c8 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 #define PROJECT_VERSION_MINOR_1 5 -#define PROJECT_VERSION_PATCH_1 2 +#define PROJECT_VERSION_PATCH_1 3 #endif From 8afd3a043d86dd100d165ed347068a462bcb190b Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Mon, 22 Sep 2025 10:32:21 +0800 Subject: [PATCH 099/114] feature(support_idf_v5_3): Add support for ESP-IDF v5.3 - fix host build to support changes in itwt API before and after v5.3.0 - fix co-processor BT VHCI interface changes before and after v5.3.0 - fix itwt example to build using v5.3.0 - fixed examples to build with esp32h2 - added IDF v5.3 to CI pipeline - fixed CI pipeline so it will build for actual target, overriding any target given in provided sdkconfig file - updated CI to build ESP-Hosted examples - updated Changelog --- .gitlab-ci.yml | 1 + .gitlab/ci/merge_request_jobs.yml | 50 +++++++++++- .gitlab/ci/scheduled_pipeline_jobs.yml | 73 ++++++++++++----- .gitlab/ci/templates.yml | 39 +++++++++- CHANGELOG.md | 78 +++++++++++++++---- docs/implemented_rpcs.md | 6 +- .../main/ble_compatibility_test.c | 2 +- .../main/main.c | 4 + .../sdkconfig.defaults.esp32h2 | 1 + .../sdkconfig.defaults.esp32h2 | 1 + .../sdkconfig.defaults.esp32p4 | 1 + .../host_bt_controller_mac_addr/main/main.c | 4 +- .../main/main.c | 14 ++-- .../main/main.c | 2 +- examples/host_wifi_itwt/main/itwt_main.c | 11 ++- host/api/priv/esp_hosted_api_priv.h | 4 + host/api/src/esp_hosted_api.c | 4 + host/api/src/esp_wifi_weak.c | 4 + host/drivers/rpc/core/rpc_req.c | 4 + host/drivers/rpc/slaveif/rpc_slave_if.h | 4 + host/drivers/rpc/wrap/rpc_wrap.c | 8 ++ host/drivers/rpc/wrap/rpc_wrap.h | 4 + host/esp_hosted_host_fw_ver.h | 2 +- .../port_esp_hosted_host_wifi_config.h | 11 ++- idf_component.yml | 2 +- slave/main/esp_hosted_coprocessor_fw_ver.h | 2 +- slave/main/slave_bt.c | 30 +++---- slave/main/slave_control.c | 12 +++ slave/main/slave_wifi_config.h | 7 +- 29 files changed, 305 insertions(+), 80 deletions(-) create mode 100644 examples/host_bluedroid_bt_hid_mouse_device/sdkconfig.defaults.esp32h2 create mode 100644 examples/host_bluedroid_host_only/sdkconfig.defaults.esp32h2 create mode 100644 examples/host_bluedroid_host_only/sdkconfig.defaults.esp32p4 diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e19127dd..af0a3f8d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,7 @@ stages: - pre - build_coprocessor + - build_example - build before_script: diff --git a/.gitlab/ci/merge_request_jobs.yml b/.gitlab/ci/merge_request_jobs.yml index ade4bda8..6ed88540 100644 --- a/.gitlab/ci/merge_request_jobs.yml +++ b/.gitlab/ci/merge_request_jobs.yml @@ -18,7 +18,7 @@ build_idf_v5.5: IDF_SLAVE_TARGET: ["esp32c6", "esp32c5"] IDF_EXAMPLE_PATH: ["examples/wifi/iperf"] -### build mqtt/tcp example mqtt/tcp sdkconfig.ci.p4_wifi +### build protocols/mqtt/tcp example build_idf_master_mqtt_tcp: variables: EXAMPLE_CI_FILE: "sdkconfig.ci.p4_wifi" @@ -32,6 +32,7 @@ build_idf_master_mqtt_tcp: IDF_SLAVE_TARGET: ["esp32c6", "esp32c5", "esp32c61"] IDF_EXAMPLE_PATH: ["examples/protocols/mqtt/tcp"] +### build wifi/iperf example build_idf_master_iperf: rules: - !reference [.default_rules, rules] @@ -74,3 +75,50 @@ build_coprocessor_idf_master_c61: matrix: - IDF_TARGET: ["esp32c61"] SLAVE_CI_FILE: ["sdio" ] + +### build ESP-Hosted examples +build_nimble_examples: + rules: + - !reference [.default_rules, rules] + extends: .build_template_example + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_TARGET: ["esp32p4"] + IDF_VER: ["latest", + "v5.5", "v5.5.1", "release-v5.5"] + IDF_SLAVE_TARGET: ["esp32c6"] + EXAMPLE_TO_BUILD: ["host_nimble_bleprph_host_only_vhci", + "host_nimble_bleprph_host_only_uart_hci"] + +build_bluedroid_examples: + rules: + - !reference [.default_rules, rules] + extends: .build_template_example + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_TARGET: ["esp32p4"] + IDF_VER: ["latest", + "v5.5", "v5.5.1", "release-v5.5"] + IDF_SLAVE_TARGET: ["esp32"] + EXAMPLE_TO_BUILD: ["host_bluedroid_ble_compatibility_test", + "host_bluedroid_bt_hid_mouse_device", + "host_bluedroid_host_only", + "host_bt_controller_mac_addr"] + +build_wifi_examples: + rules: + - !reference [.default_rules, rules] + extends: .build_template_example + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_TARGET: ["esp32p4"] + IDF_VER: ["latest", + "v5.5", "v5.5.1", "release-v5.5"] + IDF_SLAVE_TARGET: ["esp32c6", "esp32c5"] + EXAMPLE_TO_BUILD: ["host_wifi_easy_connect_dpp_enrollee", + "host_wifi_itwt", + "host_transport_config", + "host_network_split__power_save"] diff --git a/.gitlab/ci/scheduled_pipeline_jobs.yml b/.gitlab/ci/scheduled_pipeline_jobs.yml index 0dcdff7c..cef4d0a8 100644 --- a/.gitlab/ci/scheduled_pipeline_jobs.yml +++ b/.gitlab/ci/scheduled_pipeline_jobs.yml @@ -11,7 +11,7 @@ build_idf_v5.3_mqtt_tcp_scheduled: image: espressif/idf:${IDF_VER} parallel: matrix: - - IDF_VER: ["v5.3.1", "v5.3.2", "v5.3.3", "release-v5.3"] + - IDF_VER: ["v5.3", "v5.3.1", "v5.3.2", "v5.3.3", "v5.3.4", "release-v5.3"] IDF_TARGET: ["esp32p4", "esp32h2"] IDF_SLAVE_TARGET: ["esp32c6"] IDF_EXAMPLE_PATH: ["examples/protocols/mqtt/tcp"] @@ -74,21 +74,6 @@ build_idf_master_iperf_scheduled: IDF_SLAVE_TARGET: ["esp32", "esp32c2", "esp32c3", "esp32s3" ] IDF_EXAMPLE_PATH: ["examples/wifi/iperf"] -build_all_features_enabled_master_iperf_scheduled: - variables: - SDKCONFIG_CI_FILE: "sdkconfig.ci.all_features_enabled" - tags: - - scheduled_build - rules: - - !reference [.scheduled_pipeline_rules, rules] - extends: .build_template - image: espressif/idf:latest - parallel: - matrix: - - IDF_TARGET: ["esp32p4"] - IDF_SLAVE_TARGET: ["esp32c6", "esp32c5"] - IDF_EXAMPLE_PATH: ["examples/wifi/iperf"] - build_coprocessor_idf_v5.3_scheduled: tags: - scheduled_build @@ -99,7 +84,7 @@ build_coprocessor_idf_v5.3_scheduled: parallel: matrix: - IDF_TARGET: ["esp32c6"] - IDF_VER: ["v5.3.1", "v5.3.2", "v5.3.3", "release-v5.3"] + IDF_VER: ["v5.3", "v5.3.1", "v5.3.2", "v5.3.3", "v5.3.4", "release-v5.3"] SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart"] build_coprocessor_idf_v5.3_scheduled_2: @@ -112,7 +97,7 @@ build_coprocessor_idf_v5.3_scheduled_2: parallel: matrix: - IDF_TARGET: ["esp32c2", "esp32c3", "esp32s3"] - IDF_VER: ["v5.3.1", "v5.3.2", "v5.3.3", "release-v5.3"] + IDF_VER: ["v5.3", "v5.3.1", "v5.3.2", "v5.3.3", "v5.3.4", "release-v5.3"] SLAVE_CI_FILE: ["spi", "spi_hd", "uart"] build_coprocessor_idf_v5.3_esp32_scheduled: @@ -125,7 +110,7 @@ build_coprocessor_idf_v5.3_esp32_scheduled: parallel: matrix: - IDF_TARGET: ["esp32"] - IDF_VER: ["v5.3.1", "v5.3.2", "v5.3.3", "release-v5.3"] + IDF_VER: ["v5.3", "v5.3.1", "v5.3.2", "v5.3.3", "v5.3.4", "release-v5.3"] SLAVE_CI_FILE: ["sdio", "spi", "uart"] build_coprocessor_idf_v5.4_scheduled: @@ -204,3 +189,53 @@ build_coprocessor_idf_master_all_features_enabled_scheduled: matrix: - IDF_TARGET: ["esp32c6"] SLAVE_CI_FILE: ["all_features"] + +build_nimble_examples: + tags: + - scheduled_build + rules: + - !reference [.scheduled_pipeline_rules, rules] + extends: .build_template_example + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_TARGET: ["esp32p4", "esp32h2"] + IDF_VER: ["v5.4", "v5.4.1", "v5.4.2", "release-v5.4", + "v5.3", "v5.3.1", "v5.3.2", "v5.3.3", "v5.3.4", "release-v5.3"] + IDF_SLAVE_TARGET: ["esp32c6"] + EXAMPLE_TO_BUILD: ["host_nimble_bleprph_host_only_vhci", + "host_nimble_bleprph_host_only_uart_hci"] + +build_bluedroid_examples: + tags: + - scheduled_build + rules: + - !reference [.scheduled_pipeline_rules, rules] + extends: .build_template_example + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_TARGET: ["esp32p4", "esp32h2"] + IDF_VER: ["v5.4", "v5.4.1", "v5.4.2", "release-v5.4", + "v5.3", "v5.3.1", "v5.3.2", "v5.3.3", "v5.3.4", "release-v5.3"] + IDF_SLAVE_TARGET: ["esp32"] + EXAMPLE_TO_BUILD: ["host_bluedroid_ble_compatibility_test", + "host_bluedroid_bt_hid_mouse_device", + "host_bluedroid_host_only", + "host_bt_controller_mac_addr"] + +build_wifi_examples: + rules: + - !reference [.scheduled_pipeline_rules, rules] + extends: .build_template_example + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_TARGET: ["esp32p4", "esp32h2"] + IDF_VER: ["v5.4", "v5.4.1", "v5.4.2", "release-v5.4", + "v5.3", "v5.3.1", "v5.3.2", "v5.3.3", "v5.3.4", "release-v5.3"] + IDF_SLAVE_TARGET: ["esp32c6", "esp32c5"] + EXAMPLE_TO_BUILD: ["host_wifi_easy_connect_dpp_enrollee", + "host_wifi_itwt", + "host_transport_config", + "host_network_split__power_save"] diff --git a/.gitlab/ci/templates.yml b/.gitlab/ci/templates.yml index 6ae19f14..6afa3c13 100644 --- a/.gitlab/ci/templates.yml +++ b/.gitlab/ci/templates.yml @@ -31,6 +31,40 @@ - idf-build-apps find --enable-preview-targets --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} - idf-build-apps build --enable-preview-targets --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} +.build_template_example: + stage: build_example + tags: + - build + script: + - source ${IDF_PATH}/export.sh + - pip install idf-component-manager idf-build-apps --upgrade + # Need to rename the cloned "esp_hosted_mcu" directory since the injected component name is "esp_hosted" + - cd .. && rm -rf esp_hosted && mv esp_hosted_mcu esp_hosted && cd esp_hosted + # Create components directory and link esp_hosted component + - export OVERRIDE_PATH=`pwd` + - cd examples/${EXAMPLE_TO_BUILD} + # Create components directory and link esp_hosted component + - mkdir -p components + - ln -sf ${OVERRIDE_PATH} components/esp_hosted + # Override component dependency as backup only if not already present + - | + if ! grep -q "esp_hosted" main/idf_component.yml 2>/dev/null; then + cat ${OVERRIDE_PATH}/.gitlab-ci-override-idf-component.yml >> main/idf_component.yml + echo "Added esp_hosted override to idf_component.yml" + fi + # Add slave target configuration if specified + - | + if [ ! -z "${IDF_SLAVE_TARGET}" ]; then + echo "CONFIG_SLAVE_IDF_TARGET_${IDF_SLAVE_TARGET^^}=y" >> sdkconfig.defaults + echo "Added slave target CONFIG_SLAVE_IDF_TARGET_${IDF_SLAVE_TARGET^^}=y to sdkconfig.defaults" + fi + # Build with IDF pedantic flags and IDF build apps script + - export PEDANTIC_FLAGS="-DIDF_CI_BUILD -Werror -Werror=deprecated-declarations -Werror=unused-variable -Werror=unused-but-set-variable -Werror=unused-function" + - export EXTRA_CFLAGS="${PEDANTIC_FLAGS} -Wstrict-prototypes" + - export EXTRA_CXXFLAGS="${PEDANTIC_FLAGS}" + - idf-build-apps find -vv --target ${IDF_TARGET} + - idf-build-apps build -vv --target ${IDF_TARGET} + .build_template: stage: build tags: @@ -87,8 +121,9 @@ - rm -f sdkconfig.ci.*extconn* # use --config-file to override default IDF config file # use --enable-preview-targets to build for all targets - - idf-build-apps find --enable-preview-targets --config-file "${OVERRIDE_PATH}/.idf_build_apps.toml" --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} - - idf-build-apps build --enable-preview-targets --config-file "${OVERRIDE_PATH}/.idf_build_apps.toml" --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} + # use --override-sdkconfig-items to override (possibly incorrect) build target that may be in provided config file + - idf-build-apps find --enable-preview-targets --config-file "${OVERRIDE_PATH}/.idf_build_apps.toml" --config ${SDKCONFIG_PATTERN} --override-sdkconfig-items=CONFIG_IDF_TARGET=${IDF_TARGET} -vv --target ${IDF_TARGET} + - idf-build-apps build --enable-preview-targets --config-file "${OVERRIDE_PATH}/.idf_build_apps.toml" --config ${SDKCONFIG_PATTERN} --override-sdkconfig-items=CONFIG_IDF_TARGET=${IDF_TARGET} -vv --target ${IDF_TARGET} # - echo "----------- last sdkconfig.defaults,ci* used (${IDF_TARGET}-${IDF_SLAVE_TARGET}) --------------" # - cat sdkconfig.defaults # - cat sdkconfig.ci* diff --git a/CHANGELOG.md b/CHANGELOG.md index 96f2aae6..50aeaa4a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,21 @@ # Changelog +## 2.5.4 + +### Features + +- Added building with ESP-IDF v5.3 in CI +- Added building ESP-Hosted examples in CI + +### Bug Fixes + +- Fixed building with ESP32-H2 as host in CI (was skipping build) + ## 2.5.3 -Fix the ESP-IDF CI +### Bug Fixes + +- Fix the ESP-IDF CI ## 2.5.2 @@ -24,13 +37,13 @@ Fix the ESP-IDF CI ## 2.5.1 -### Features +### Bug Fixes - Added dependency on `esp_driver_gpio` ## 2.5.0 -### Features +### Bug Fixes - Remove dependency on deprecated `driver` component and added necessary dependencies instead @@ -38,20 +51,6 @@ Fix the ESP-IDF CI ### Features -- Added support for Wi-Fi Easy Connect (DPP) - -### APIs added - -- `esp_supp_remote_dpp_init` -- `esp_supp_remote_dpp_deinit` -- `esp_supp_remote_dpp_bootstrap_gen` -- `esp_supp_remote_dpp_start_listen` -- `esp_supp_remote_dpp_stop_listen` - -## 2.4.2 - -### Features - - Add support for Wi-Fi Easy Connect (DPP) - [Espressif documentation](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/network/esp_dpp.html) on Wi-Fi Easy Connect (DPP) - [ESP-Hosted Enrollee Example](https://github.com/espressif/esp-hosted-mcu/tree/main/examples/host_wifi_easy_connect_dpp_enrollee) using DPP to securely onboard a ESP32P4 with C6 board to a network with the help of a QR code and an Android 10+ device @@ -63,3 +62,48 @@ Fix the ESP-IDF CI - `esp_supp_dpp_bootstrap_gen` - `esp_supp_dpp_start_listen` - `esp_supp_dpp_stop_listen` + +## 2.4.2 + +### Bug Fixes + +- Fix ignored lwip hook header in slave example + +## 2.4.1 + +### Bug Fixes + +- Reduced ESP32 bootloader size + +## 2.4.0 + +### Features + +- Added support for Wi-Fi Enterprise + +### APIs added + +- `esp_wifi_sta_enterprise_enable` +- `esp_wifi_sta_enterprise_disable` +- `esp_eap_client_set_identity` +- `esp_eap_client_clear_identity` +- `esp_eap_client_set_username` +- `esp_eap_client_clear_username` +- `esp_eap_client_set_password` +- `esp_eap_client_clear_password` +- `esp_eap_client_set_new_password` +- `esp_eap_client_clear_new_password` +- `esp_eap_client_set_ca_cert` +- `esp_eap_client_clear_ca_cert` +- `esp_eap_client_set_certificate_and_key` +- `esp_eap_client_clear_certificate_and_key` +- `esp_eap_client_set_disable_time_check` +- `esp_eap_client_get_disable_time_check` +- `esp_eap_client_set_ttls_phase2_method` +- `esp_eap_client_set_suiteb_192bit_certification` +- `esp_eap_client_set_pac_file` +- `esp_eap_client_set_fast_params` +- `esp_eap_client_use_default_cert_bundle` +- `esp_wifi_set_okc_support` +- `esp_eap_client_set_domain_name` +- `esp_eap_client_set_eap_methods` diff --git a/docs/implemented_rpcs.md b/docs/implemented_rpcs.md index 2f8b4c43..0aa4c5a7 100644 --- a/docs/implemented_rpcs.md +++ b/docs/implemented_rpcs.md @@ -103,9 +103,9 @@ The RPC IDs listed here are for requests and events. Each request will have a co | 93 | 382 | EapSetDomainName | 2.4.0 | | 94 | 383 | EapSetDisableTimeCheck | 2.4.0 | | 95 | 384 | EapSetEapMethods | 2.4.0 | -| 96 | 385 | IfaceMacAddrSetGet | 2.4.4 | -| 97 | 386 | IfaceMacAddrLenGet | 2.4.4 | -| 98 | 387 | FeatureControl | 2.4.4 | +| 96 | 385 | IfaceMacAddrSetGet | 2.5.2 | +| 97 | 386 | IfaceMacAddrLenGet | 2.5.2 | +| 98 | 387 | FeatureControl | 2.5.2 | ## List of RPC Events diff --git a/examples/host_bluedroid_ble_compatibility_test/main/ble_compatibility_test.c b/examples/host_bluedroid_ble_compatibility_test/main/ble_compatibility_test.c index 1e47bfd0..9bceee9c 100644 --- a/examples/host_bluedroid_ble_compatibility_test/main/ble_compatibility_test.c +++ b/examples/host_bluedroid_ble_compatibility_test/main/ble_compatibility_test.c @@ -653,7 +653,7 @@ void app_main(void) ESP_LOGI("INFO", "getting fw version"); esp_hosted_coprocessor_fwver_t fwver; if (ESP_OK == esp_hosted_get_coprocessor_fwversion(&fwver)) { - ESP_LOGI("INFO", "FW Version: %d.%d.%d", + ESP_LOGI("INFO", "FW Version: %" PRIu32 ".%" PRIu32 ".%" PRIu32, fwver.major1, fwver.minor1, fwver.patch1); } else { ESP_LOGW("INFO", "failed to get fw version"); diff --git a/examples/host_bluedroid_bt_hid_mouse_device/main/main.c b/examples/host_bluedroid_bt_hid_mouse_device/main/main.c index ef4139aa..b8338350 100644 --- a/examples/host_bluedroid_bt_hid_mouse_device/main/main.c +++ b/examples/host_bluedroid_bt_hid_mouse_device/main/main.c @@ -19,6 +19,8 @@ #include "freertos/task.h" #include "freertos/semphr.h" +#include "esp_idf_version.h" + #include "esp_hosted.h" #include "esp_hosted_bluedroid.h" @@ -449,7 +451,9 @@ void app_main(void) ESP_LOGI(TAG, "setting cod major, peripheral"); esp_bt_cod_t cod = {0}; cod.major = ESP_BT_COD_MAJOR_DEV_PERIPHERAL; +#if ESP_IDF_VERSION > ESP_IDF_VERSION_VAL(5, 3, 0) cod.minor = ESP_BT_COD_MINOR_PERIPHERAL_POINTING; +#endif esp_bt_gap_set_cod(cod, ESP_BT_SET_COD_MAJOR_MINOR); vTaskDelay(2000 / portTICK_PERIOD_MS); diff --git a/examples/host_bluedroid_bt_hid_mouse_device/sdkconfig.defaults.esp32h2 b/examples/host_bluedroid_bt_hid_mouse_device/sdkconfig.defaults.esp32h2 new file mode 100644 index 00000000..1686559d --- /dev/null +++ b/examples/host_bluedroid_bt_hid_mouse_device/sdkconfig.defaults.esp32h2 @@ -0,0 +1 @@ +CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE=y diff --git a/examples/host_bluedroid_host_only/sdkconfig.defaults.esp32h2 b/examples/host_bluedroid_host_only/sdkconfig.defaults.esp32h2 new file mode 100644 index 00000000..1686559d --- /dev/null +++ b/examples/host_bluedroid_host_only/sdkconfig.defaults.esp32h2 @@ -0,0 +1 @@ +CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE=y diff --git a/examples/host_bluedroid_host_only/sdkconfig.defaults.esp32p4 b/examples/host_bluedroid_host_only/sdkconfig.defaults.esp32p4 new file mode 100644 index 00000000..1686559d --- /dev/null +++ b/examples/host_bluedroid_host_only/sdkconfig.defaults.esp32p4 @@ -0,0 +1 @@ +CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE=y diff --git a/examples/host_bt_controller_mac_addr/main/main.c b/examples/host_bt_controller_mac_addr/main/main.c index cd541a4d..fe11bff9 100644 --- a/examples/host_bt_controller_mac_addr/main/main.c +++ b/examples/host_bt_controller_mac_addr/main/main.c @@ -4,6 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ +#include + #include "esp_log.h" #include "nvs_flash.h" #include "esp_hosted.h" @@ -123,7 +125,7 @@ void app_main(void) ESP_LOGI(TAG, "getting fw version"); esp_hosted_coprocessor_fwver_t fwver; if (ESP_OK == esp_hosted_get_coprocessor_fwversion(&fwver)) { - ESP_LOGI(TAG, "FW Version: %d.%d.%d", + ESP_LOGI(TAG, "FW Version: %" PRIu32 ".%" PRIu32 ".%" PRIu32, fwver.major1, fwver.minor1, fwver.patch1); } else { ESP_LOGW(TAG, "failed to get fw version"); diff --git a/examples/host_nimble_bleprph_host_only_uart_hci/main/main.c b/examples/host_nimble_bleprph_host_only_uart_hci/main/main.c index 8b19e654..1e124d4c 100644 --- a/examples/host_nimble_bleprph_host_only_uart_hci/main/main.c +++ b/examples/host_nimble_bleprph_host_only_uart_hci/main/main.c @@ -225,19 +225,23 @@ bleprph_gap_event(struct ble_gap_event *event, void *arg) int rc; switch (event->type) { +#if defined(BLE_GAP_EVENT_LINK_ESTAB) case BLE_GAP_EVENT_LINK_ESTAB: +#else + case BLE_GAP_EVENT_CONNECT: +#endif /* A new connection was established or a connection attempt failed. */ MODLOG_DFLT(INFO, "connection %s; status=%d ", - event->link_estab.status == 0 ? "established" : "failed", - event->link_estab.status); - if (event->link_estab.status == 0) { - rc = ble_gap_conn_find(event->link_estab.conn_handle, &desc); + event->connect.status == 0 ? "established" : "failed", + event->connect.status); + if (event->connect.status == 0) { + rc = ble_gap_conn_find(event->connect.conn_handle, &desc); assert(rc == 0); bleprph_print_conn_desc(&desc); } MODLOG_DFLT(INFO, "\n"); - if (event->link_estab.status != 0) { + if (event->connect.status != 0) { /* Connection failed; resume advertising. */ #if CONFIG_EXAMPLE_EXTENDED_ADV ext_bleprph_advertise(); diff --git a/examples/host_nimble_bleprph_host_only_vhci/main/main.c b/examples/host_nimble_bleprph_host_only_vhci/main/main.c index 67972475..6e5736b2 100644 --- a/examples/host_nimble_bleprph_host_only_vhci/main/main.c +++ b/examples/host_nimble_bleprph_host_only_vhci/main/main.c @@ -505,7 +505,7 @@ app_main(void) ESP_LOGI("INFO", "getting fw version"); esp_hosted_coprocessor_fwver_t fwver; if (ESP_OK == esp_hosted_get_coprocessor_fwversion(&fwver)) { - ESP_LOGI("INFO", "FW Version: %d.%d.%d", + ESP_LOGI("INFO", "FW Version: %" PRIu32 ".%" PRIu32 ".%" PRIu32, fwver.major1, fwver.minor1, fwver.patch1); } else { ESP_LOGW("INFO", "failed to get fw version"); diff --git a/examples/host_wifi_itwt/main/itwt_main.c b/examples/host_wifi_itwt/main/itwt_main.c index 0b46d9ad..c2775a30 100644 --- a/examples/host_wifi_itwt/main/itwt_main.c +++ b/examples/host_wifi_itwt/main/itwt_main.c @@ -125,7 +125,13 @@ static void got_ip_handler(void *arg, esp_event_base_t event_base, esp_wifi_sta_get_negotiated_phymode(&phymode); if (phymode == WIFI_PHY_MODE_HE20) { esp_err_t err = ESP_OK; - wifi_itwt_setup_config_t setup_config = { +#if ESP_IDF_VERSION > ESP_IDF_VERSION_VAL(5, 3, 0) + wifi_itwt_setup_config_t setup_config +#else + // wifi_itwt_setup_config_t only found in IDF v5.3.1 and above + wifi_twt_setup_config_t setup_config +#endif + = { .setup_cmd = TWT_REQUEST, .flow_id = 0, .twt_id = CONFIG_EXAMPLE_ITWT_ID, @@ -271,6 +277,7 @@ static void wifi_itwt(void) ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA)); ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config)); +#if ESP_IDF_VERSION > ESP_IDF_VERSION_VAL(5, 3, 0) wifi_twt_config_t wifi_twt_config = { .post_wakeup_event = false, #if ESP_IDF_VERSION > ESP_IDF_VERSION_VAL(5, 3, 1) @@ -278,7 +285,9 @@ static void wifi_itwt(void) .twt_enable_keep_alive = keep_alive_enabled, #endif }; + // esp_wifi_sta_twt_config only found in IDF v5.3.1 and above ESP_ERROR_CHECK(esp_wifi_sta_twt_config(&wifi_twt_config)); +#endif #if CONFIG_SOC_WIFI_SUPPORT_5G || CONFIG_SLAVE_SOC_WIFI_SUPPORT_5G wifi_bandwidths_t bw = { .ghz_2g = WIFI_BW_HT20, diff --git a/host/api/priv/esp_hosted_api_priv.h b/host/api/priv/esp_hosted_api_priv.h index b51c0fcb..b5e39924 100644 --- a/host/api/priv/esp_hosted_api_priv.h +++ b/host/api/priv/esp_hosted_api_priv.h @@ -78,7 +78,11 @@ esp_err_t esp_wifi_remote_get_inactive_time(wifi_interface_t ifx, uint16_t *sec) #if H_WIFI_HE_SUPPORT esp_err_t esp_wifi_remote_sta_twt_config(wifi_twt_config_t *config); +#if H_WIFI_HE_GREATER_THAN_ESP_IDF_5_3 esp_err_t esp_wifi_remote_sta_itwt_setup(wifi_itwt_setup_config_t *setup_config); +#else +esp_err_t esp_wifi_remote_sta_itwt_setup(wifi_twt_setup_config_t *setup_config); +#endif esp_err_t esp_wifi_remote_sta_itwt_teardown(int flow_id); esp_err_t esp_wifi_remote_sta_itwt_suspend(int flow_id, int suspend_time_ms); esp_err_t esp_wifi_remote_sta_itwt_get_flow_id_status(int *flow_id_bitmap); diff --git a/host/api/src/esp_hosted_api.c b/host/api/src/esp_hosted_api.c index 8ed2e020..292a2f2e 100644 --- a/host/api/src/esp_hosted_api.c +++ b/host/api/src/esp_hosted_api.c @@ -459,7 +459,11 @@ esp_err_t esp_wifi_remote_sta_twt_config(wifi_twt_config_t *config) return rpc_wifi_sta_twt_config(config); } +#if H_WIFI_HE_GREATER_THAN_ESP_IDF_5_3 esp_err_t esp_wifi_remote_sta_itwt_setup(wifi_itwt_setup_config_t *setup_config) +#else +esp_err_t esp_wifi_remote_sta_itwt_setup(wifi_twt_setup_config_t *setup_config) +#endif { return rpc_wifi_sta_itwt_setup(setup_config); } diff --git a/host/api/src/esp_wifi_weak.c b/host/api/src/esp_wifi_weak.c index c971672f..0718da99 100644 --- a/host/api/src/esp_wifi_weak.c +++ b/host/api/src/esp_wifi_weak.c @@ -244,7 +244,11 @@ H_WEAK_REF esp_err_t esp_wifi_sta_twt_config(wifi_twt_config_t *config) return esp_wifi_remote_sta_twt_config(config); } +#if H_WIFI_HE_GREATER_THAN_ESP_IDF_5_3 H_WEAK_REF esp_err_t esp_wifi_sta_itwt_setup(wifi_itwt_setup_config_t *setup_config) +#else +H_WEAK_REF esp_err_t esp_wifi_sta_itwt_setup(wifi_twt_setup_config_t *setup_config) +#endif { return esp_wifi_remote_sta_itwt_setup(setup_config); } diff --git a/host/drivers/rpc/core/rpc_req.c b/host/drivers/rpc/core/rpc_req.c index c558b622..1c9cc682 100644 --- a/host/drivers/rpc/core/rpc_req.c +++ b/host/drivers/rpc/core/rpc_req.c @@ -517,7 +517,11 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) RPC_ALLOC_ASSIGN(RpcReqWifiStaItwtSetup, req_wifi_sta_itwt_setup, rpc__req__wifi_sta_itwt_setup__init); RPC_ALLOC_ELEMENT(WifiItwtSetupConfig, req_payload->setup_config, wifi_itwt_setup_config__init); +#if H_WIFI_HE_GREATER_THAN_ESP_IDF_5_3 wifi_itwt_setup_config_t * p_a_cfg = &app_req->u.wifi_itwt_setup_config; +#else + wifi_twt_setup_config_t * p_a_cfg = &app_req->u.wifi_twt_setup_config; +#endif WifiItwtSetupConfig * p_c_cfg = req_payload->setup_config; p_c_cfg->setup_cmd = p_a_cfg->setup_cmd; diff --git a/host/drivers/rpc/slaveif/rpc_slave_if.h b/host/drivers/rpc/slaveif/rpc_slave_if.h index ebbee39a..ec4e1001 100644 --- a/host/drivers/rpc/slaveif/rpc_slave_if.h +++ b/host/drivers/rpc/slaveif/rpc_slave_if.h @@ -409,7 +409,11 @@ typedef struct Ctrl_cmd_t { #if H_WIFI_HE_SUPPORT wifi_twt_config_t wifi_twt_config; +#if H_WIFI_HE_GREATER_THAN_ESP_IDF_5_3 wifi_itwt_setup_config_t wifi_itwt_setup_config; +#else + wifi_twt_setup_config_t wifi_twt_setup_config; +#endif int wifi_itwt_flow_id; diff --git a/host/drivers/rpc/wrap/rpc_wrap.c b/host/drivers/rpc/wrap/rpc_wrap.c index d109cfa7..300eb74e 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.c +++ b/host/drivers/rpc/wrap/rpc_wrap.c @@ -948,7 +948,11 @@ esp_err_t rpc_wifi_sta_twt_config(wifi_twt_config_t *config) return rpc_rsp_callback(resp); } +#if H_WIFI_HE_GREATER_THAN_ESP_IDF_5_3 esp_err_t rpc_wifi_sta_itwt_setup(wifi_itwt_setup_config_t *setup_config) +#else +esp_err_t rpc_wifi_sta_itwt_setup(wifi_twt_setup_config_t *setup_config) +#endif { /* implemented synchronous */ ctrl_cmd_t *req = RPC_DEFAULT_REQ(); @@ -957,7 +961,11 @@ esp_err_t rpc_wifi_sta_itwt_setup(wifi_itwt_setup_config_t *setup_config) if (!setup_config) return FAILURE; +#if H_WIFI_HE_GREATER_THAN_ESP_IDF_5_3 g_h.funcs->_h_memcpy(&req->u.wifi_itwt_setup_config, setup_config, sizeof(wifi_itwt_setup_config_t)); +#else + g_h.funcs->_h_memcpy(&req->u.wifi_twt_setup_config, setup_config, sizeof(wifi_twt_setup_config_t)); +#endif resp = rpc_slaveif_wifi_sta_itwt_setup(req); return rpc_rsp_callback(resp); } diff --git a/host/drivers/rpc/wrap/rpc_wrap.h b/host/drivers/rpc/wrap/rpc_wrap.h index 7261397d..369ae8ed 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.h +++ b/host/drivers/rpc/wrap/rpc_wrap.h @@ -99,7 +99,11 @@ esp_err_t rpc_ota_end(void); #if H_WIFI_HE_SUPPORT esp_err_t rpc_wifi_sta_twt_config(wifi_twt_config_t *config); +#if H_WIFI_HE_GREATER_THAN_ESP_IDF_5_3 esp_err_t rpc_wifi_sta_itwt_setup(wifi_itwt_setup_config_t *setup_config); +#else +esp_err_t rpc_wifi_sta_itwt_setup(wifi_twt_setup_config_t *setup_config); +#endif esp_err_t rpc_wifi_sta_itwt_teardown(int flow_id); esp_err_t rpc_wifi_sta_itwt_suspend(int flow_id, int suspend_time_ms); esp_err_t rpc_wifi_sta_itwt_get_flow_id_status(int *flow_id_bitmap); diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index 0dd786e2..e9809c19 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 #define ESP_HOSTED_VERSION_MINOR_1 5 -#define ESP_HOSTED_VERSION_PATCH_1 3 +#define ESP_HOSTED_VERSION_PATCH_1 4 #endif diff --git a/host/port/esp/freertos/include/port_esp_hosted_host_wifi_config.h b/host/port/esp/freertos/include/port_esp_hosted_host_wifi_config.h index b3272d27..20c1c2c5 100644 --- a/host/port/esp/freertos/include/port_esp_hosted_host_wifi_config.h +++ b/host/port/esp/freertos/include/port_esp_hosted_host_wifi_config.h @@ -8,16 +8,19 @@ #include "esp_idf_version.h" -#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 3, 1) -#error ESP-IDF version used is not supported -#endif - #if CONFIG_ESP_HOSTED_ENABLE_ITWT && CONFIG_SLAVE_SOC_WIFI_HE_SUPPORT #define H_WIFI_HE_SUPPORT 1 #else #define H_WIFI_HE_SUPPORT 0 #endif +// HE support (structs, API) changed after ESP-IDF v5.3 +#if H_WIFI_HE_SUPPORT && (ESP_IDF_VERSION > ESP_IDF_VERSION_VAL(5, 3, 0)) + #define H_WIFI_HE_GREATER_THAN_ESP_IDF_5_3 1 +#else + #define H_WIFI_HE_GREATER_THAN_ESP_IDF_5_3 0 +#endif + #if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 0) /* dual band API support available */ #define H_WIFI_DUALBAND_SUPPORT 1 diff --git a/idf_component.yml b/idf_component.yml index 6b841d11..16cf89b4 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.5.3" +version: "2.5.4" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index a09026c8..c0151bf3 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 #define PROJECT_VERSION_MINOR_1 5 -#define PROJECT_VERSION_PATCH_1 3 +#define PROJECT_VERSION_PATCH_1 4 #endif diff --git a/slave/main/slave_bt.c b/slave/main/slave_bt.c index d0c6d197..8fdf055d 100644 --- a/slave/main/slave_bt.c +++ b/slave/main/slave_bt.c @@ -1,18 +1,8 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2015-2021 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #include #include @@ -120,8 +110,8 @@ void process_hci_rx_pkt(uint8_t *payload, uint16_t payload_len) #if BLUETOOTH_HCI #if SOC_ESP_NIMBLE_CONTROLLER -#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 3, 0) -#include "nimble/ble_hci_trans.h" +#if ESP_IDF_VERSION <= ESP_IDF_VERSION_VAL(5, 3, 0) +#include "ble_hci_trans.h" typedef enum { DATA_TYPE_COMMAND = 1, @@ -190,7 +180,7 @@ ble_hs_rx_data(struct os_mbuf *om, void *arg) os_mbuf_free_chain(om); return 0; } -#endif // ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 3, 0) +#endif // ESP_IDF_VERSION <= ESP_IDF_VERSION_VAL(5, 3, 0) #endif #endif @@ -288,7 +278,7 @@ esp_err_t enable_bluetooth(void) } #if BLUETOOTH_HCI -#if SOC_ESP_NIMBLE_CONTROLLER && (ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 3, 0)) +#if SOC_ESP_NIMBLE_CONTROLLER && (ESP_IDF_VERSION <= ESP_IDF_VERSION_VAL(5, 3, 0)) ble_hci_trans_cfg_hs((ble_hci_trans_rx_cmd_fn *)ble_hs_hci_rx_evt,NULL, (ble_hci_trans_rx_acl_fn *)ble_hs_rx_data,NULL); #else @@ -310,7 +300,7 @@ esp_err_t disable_bluetooth(void) #ifdef CONFIG_BT_ENABLED #if BLUETOOTH_HCI // unregister callback functions -#if SOC_ESP_NIMBLE_CONTROLLER && (ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 3, 0)) +#if SOC_ESP_NIMBLE_CONTROLLER && (ESP_IDF_VERSION <= ESP_IDF_VERSION_VAL(5, 3, 0)) ble_hci_trans_cfg_hs(NULL, NULL, NULL, NULL); #else diff --git a/slave/main/slave_control.c b/slave/main/slave_control.c index f6a87e67..98db3d56 100644 --- a/slave/main/slave_control.c +++ b/slave/main/slave_control.c @@ -3313,6 +3313,7 @@ static esp_err_t req_feature_control(Rpc *req, Rpc *resp, void *priv_data) } #if CONFIG_SOC_WIFI_HE_SUPPORT +#if H_WIFI_HE_GREATER_THAN_ESP_IDF_5_3 static esp_err_t req_wifi_sta_twt_config(Rpc *req, Rpc *resp, void *priv_data) { RPC_TEMPLATE(RpcRespWifiStaTwtConfig, resp_wifi_sta_twt_config, @@ -3329,16 +3330,25 @@ static esp_err_t req_wifi_sta_twt_config(Rpc *req, Rpc *resp, void *priv_data) return ESP_OK; } +#endif static esp_err_t req_wifi_sta_itwt_setup(Rpc *req, Rpc *resp, void *priv_data) { +#if H_WIFI_HE_GREATER_THAN_ESP_IDF_5_3 wifi_itwt_setup_config_t cfg = {0}; +#else + wifi_twt_setup_config_t cfg = {0}; +#endif RPC_TEMPLATE(RpcRespWifiStaItwtSetup, resp_wifi_sta_itwt_setup, RpcReqWifiStaItwtSetup, req_wifi_sta_itwt_setup, rpc__resp__wifi_sta_itwt_setup__init); +#if H_WIFI_HE_GREATER_THAN_ESP_IDF_5_3 wifi_itwt_setup_config_t * p_a_cfg = &cfg; +#else + wifi_twt_setup_config_t * p_a_cfg = &cfg; +#endif WifiItwtSetupConfig *p_c_cfg = req_payload->setup_config; p_a_cfg->setup_cmd = p_c_cfg->setup_cmd; @@ -3751,10 +3761,12 @@ static esp_rpc_req_t req_table[] = { .command_handler = req_get_dhcp_dns_status }, #if CONFIG_SOC_WIFI_HE_SUPPORT +#if H_WIFI_HE_GREATER_THAN_ESP_IDF_5_3 { .req_num = RPC_ID__Req_WifiStaTwtConfig, .command_handler = req_wifi_sta_twt_config }, +#endif { .req_num = RPC_ID__Req_WifiStaItwtSetup, .command_handler = req_wifi_sta_itwt_setup diff --git a/slave/main/slave_wifi_config.h b/slave/main/slave_wifi_config.h index 07cd1b54..1704d4c9 100644 --- a/slave/main/slave_wifi_config.h +++ b/slave/main/slave_wifi_config.h @@ -8,8 +8,11 @@ #include "esp_idf_version.h" -#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 3, 1) -#error ESP-IDF version used is not supported +// HE support changed after ESP-IDF v5.3 +#if CONFIG_SOC_WIFI_HE_SUPPORT && (ESP_IDF_VERSION > ESP_IDF_VERSION_VAL(5, 3, 0)) + #define H_WIFI_HE_GREATER_THAN_ESP_IDF_5_3 1 +#else + #define H_WIFI_HE_GREATER_THAN_ESP_IDF_5_3 0 #endif /* ESP-IDF 5.5.0: renamed reserved fields to reserved1/reserved2 */ From 840a261eea8c85f318140c25896fec375e69bcfd Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Thu, 2 Oct 2025 11:34:26 +0800 Subject: [PATCH 100/114] bugfix(build): Fixed build break with latest ESP-IDF - added `esp_driver_sdio` component to co-processor - used `WIFI_IF_STA` and `WIFI_IF_AP` enums directly - updated Wi-Fi Easy Connect (DPP) to match current IDF v6.0 - added DPP build to CI pipelines - adjusted CI pipelines to build against ESP-IDF examples first - changes CI jobs templates - updated `idf_component.yml` --- .gitlab-ci.yml | 2 +- .gitlab/ci/merge_request_jobs.yml | 6 ++--- .gitlab/ci/scheduled_pipeline_jobs.yml | 6 +++-- .gitlab/ci/templates.yml | 3 +++ CHANGELOG.md | 8 ++++++ .../main/dpp_enrollee_main.c | 6 +++++ host/api/priv/esp_hosted_api_priv.h | 4 +++ host/api/src/esp_hosted_api.c | 8 ++++++ host/api/src/esp_wifi_weak.c | 7 +++++ host/drivers/rpc/wrap/rpc_wrap.c | 15 +++++++++++ host/drivers/rpc/wrap/rpc_wrap.h | 4 +++ host/esp_hosted_host_fw_ver.h | 2 +- .../port_esp_hosted_host_wifi_config.h | 6 ++++- idf_component.yml | 2 +- slave/CMakeLists.txt | 2 +- slave/main/esp_hosted_coprocessor.c | 4 +-- slave/main/esp_hosted_coprocessor_fw_ver.h | 2 +- slave/main/idf_component.yml | 6 ++--- slave/main/slave_control.c | 27 ++++++++++++------- slave/main/slave_wifi_config.h | 8 ++++-- slave/sdkconfig.ci.dpp | 2 ++ 21 files changed, 103 insertions(+), 27 deletions(-) create mode 100644 slave/sdkconfig.ci.dpp diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index af0a3f8d..992e978d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,8 +1,8 @@ stages: - pre + - build - build_coprocessor - build_example - - build before_script: - git submodule update --init --recursive diff --git a/.gitlab/ci/merge_request_jobs.yml b/.gitlab/ci/merge_request_jobs.yml index 6ed88540..37e37288 100644 --- a/.gitlab/ci/merge_request_jobs.yml +++ b/.gitlab/ci/merge_request_jobs.yml @@ -53,7 +53,7 @@ build_coprocessor_idf_v5.5: matrix: - IDF_TARGET: ["esp32c6", "esp32c5"] IDF_VER: ["v5.5", "v5.5.1", "release-v5.5"] - SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart"] + SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart", "dpp"] build_coprocessor_idf_master: rules: @@ -63,7 +63,7 @@ build_coprocessor_idf_master: parallel: matrix: - IDF_TARGET: ["esp32c6", "esp32c5"] - SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart"] + SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart", "dpp"] # for C61, build for sdio only for now build_coprocessor_idf_master_c61: @@ -74,7 +74,7 @@ build_coprocessor_idf_master_c61: parallel: matrix: - IDF_TARGET: ["esp32c61"] - SLAVE_CI_FILE: ["sdio" ] + SLAVE_CI_FILE: ["sdio"] ### build ESP-Hosted examples build_nimble_examples: diff --git a/.gitlab/ci/scheduled_pipeline_jobs.yml b/.gitlab/ci/scheduled_pipeline_jobs.yml index cef4d0a8..aa0a2f26 100644 --- a/.gitlab/ci/scheduled_pipeline_jobs.yml +++ b/.gitlab/ci/scheduled_pipeline_jobs.yml @@ -85,7 +85,7 @@ build_coprocessor_idf_v5.3_scheduled: matrix: - IDF_TARGET: ["esp32c6"] IDF_VER: ["v5.3", "v5.3.1", "v5.3.2", "v5.3.3", "v5.3.4", "release-v5.3"] - SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart"] + SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart", "dpp"] build_coprocessor_idf_v5.3_scheduled_2: tags: @@ -124,7 +124,7 @@ build_coprocessor_idf_v5.4_scheduled: matrix: - IDF_TARGET: ["esp32c6"] IDF_VER: ["v5.4", "v5.4.1", "v5.4.2", "release-v5.4"] - SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart"] + SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart", "dpp"] build_coprocessor_idf_v5.4_scheduled_2: tags: @@ -225,6 +225,8 @@ build_bluedroid_examples: "host_bt_controller_mac_addr"] build_wifi_examples: + tags: + - scheduled_build rules: - !reference [.scheduled_pipeline_rules, rules] extends: .build_template_example diff --git a/.gitlab/ci/templates.yml b/.gitlab/ci/templates.yml index 6afa3c13..cc33cf92 100644 --- a/.gitlab/ci/templates.yml +++ b/.gitlab/ci/templates.yml @@ -35,6 +35,9 @@ stage: build_example tags: - build + artifacts: + when: always + expire_in: 4 days script: - source ${IDF_PATH}/export.sh - pip install idf-component-manager idf-build-apps --upgrade diff --git a/CHANGELOG.md b/CHANGELOG.md index 50aeaa4a..62a08dcd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 2.5.5 + +### Bug Fixes + +- Fixed build errors when using latest version of ESP-IDF +- Updated Wi-Fi Easy Connect (DPP) code to match current ESP-IDF master +- Adjusted CI pipeline + ## 2.5.4 ### Features diff --git a/examples/host_wifi_easy_connect_dpp_enrollee/main/dpp_enrollee_main.c b/examples/host_wifi_easy_connect_dpp_enrollee/main/dpp_enrollee_main.c index de06cd51..444700d6 100644 --- a/examples/host_wifi_easy_connect_dpp_enrollee/main/dpp_enrollee_main.c +++ b/examples/host_wifi_easy_connect_dpp_enrollee/main/dpp_enrollee_main.c @@ -28,6 +28,8 @@ /** for ESP-IDF v5.5.0 and above, DPP events come in as Wi-Fi Events ** set EXAMPLE_DPP_USE_WIFI_EVENTS to 0 to use the older Supplicant ** based DPP events + * + ** Note: ESP-IDF v6.0 and above removed Supplicant based DPP events */ #if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 5, 0) #define EXAMPLE_DPP_USE_WIFI_EVENTS 1 @@ -219,7 +221,11 @@ void dpp_enrollee_init(void) ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA)); #if EXAMPLE_DPP_USE_WIFI_EVENTS +#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(6, 0, 0) + ESP_ERROR_CHECK(esp_supp_dpp_init()); +#else ESP_ERROR_CHECK(esp_supp_dpp_init(NULL)); +#endif #else ESP_ERROR_CHECK(esp_supp_dpp_init(dpp_enrollee_event_cb)); #endif diff --git a/host/api/priv/esp_hosted_api_priv.h b/host/api/priv/esp_hosted_api_priv.h index b5e39924..a8954d14 100644 --- a/host/api/priv/esp_hosted_api_priv.h +++ b/host/api/priv/esp_hosted_api_priv.h @@ -134,7 +134,11 @@ esp_err_t esp_eap_client_remote_set_eap_methods(esp_eap_method_t methods); #endif #if H_DPP_SUPPORT +#if H_SUPP_DPP_SUPPORT esp_err_t esp_supp_remote_dpp_init(esp_supp_dpp_event_cb_t evt_cb); +#else +esp_err_t esp_supp_remote_dpp_init(void); +#endif esp_err_t esp_supp_remote_dpp_deinit(void); esp_err_t esp_supp_remote_dpp_bootstrap_gen(const char *chan_list, esp_supp_dpp_bootstrap_t type, diff --git a/host/api/src/esp_hosted_api.c b/host/api/src/esp_hosted_api.c index 292a2f2e..45d2c491 100644 --- a/host/api/src/esp_hosted_api.c +++ b/host/api/src/esp_hosted_api.c @@ -546,11 +546,19 @@ esp_err_t esp_wifi_remote_get_bandwidths(wifi_interface_t ifx, wifi_bandwidths_t #endif #if H_DPP_SUPPORT +#if H_SUPP_DPP_SUPPORT esp_err_t esp_supp_remote_dpp_init(esp_supp_dpp_event_cb_t evt_cb) { check_transport_up(); return rpc_supp_dpp_init(evt_cb); } +#else +esp_err_t esp_supp_remote_dpp_init(void) +{ + check_transport_up(); + return rpc_supp_dpp_init(); +} +#endif esp_err_t esp_supp_remote_dpp_deinit(void) { diff --git a/host/api/src/esp_wifi_weak.c b/host/api/src/esp_wifi_weak.c index 0718da99..e182def0 100644 --- a/host/api/src/esp_wifi_weak.c +++ b/host/api/src/esp_wifi_weak.c @@ -454,10 +454,17 @@ esp_err_t esp_eap_client_set_eap_methods(esp_eap_method_t methods) /** * Weak version of esp_dpp API */ +#if H_SUPP_DPP_SUPPORT H_WEAK_REF esp_err_t esp_supp_dpp_init(esp_supp_dpp_event_cb_t evt_cb) { return esp_supp_remote_dpp_init(evt_cb); } +#else +H_WEAK_REF esp_err_t esp_supp_dpp_init(void) +{ + return esp_supp_remote_dpp_init(); +} +#endif H_WEAK_REF esp_err_t esp_supp_dpp_deinit(void) { diff --git a/host/drivers/rpc/wrap/rpc_wrap.c b/host/drivers/rpc/wrap/rpc_wrap.c index 300eb74e..7886ce9d 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.c +++ b/host/drivers/rpc/wrap/rpc_wrap.c @@ -2061,6 +2061,7 @@ esp_err_t rpc_eap_client_set_eap_methods(esp_eap_method_t methods) #endif #if H_DPP_SUPPORT +#if H_SUPP_DPP_SUPPORT esp_err_t rpc_supp_dpp_init(esp_supp_dpp_event_cb_t evt_cb) { /* implemented synchronous */ @@ -2087,6 +2088,20 @@ esp_err_t rpc_supp_dpp_init(esp_supp_dpp_event_cb_t evt_cb) resp = rpc_slaveif_supp_dpp_init(req); return rpc_rsp_callback(resp); } +#else // H_SUPP_DPP_SUPPORT +esp_err_t rpc_supp_dpp_init(void) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + // no callback + req->u.dpp_enable_cb = false; + + resp = rpc_slaveif_supp_dpp_init(req); + return rpc_rsp_callback(resp); +} +#endif esp_err_t rpc_supp_dpp_deinit(void) { diff --git a/host/drivers/rpc/wrap/rpc_wrap.h b/host/drivers/rpc/wrap/rpc_wrap.h index 369ae8ed..7cec5a48 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.h +++ b/host/drivers/rpc/wrap/rpc_wrap.h @@ -158,7 +158,11 @@ esp_err_t rpc_eap_client_set_eap_methods(esp_eap_method_t methods); #endif #endif #if H_DPP_SUPPORT +#if H_SUPP_DPP_SUPPORT esp_err_t rpc_supp_dpp_init(esp_supp_dpp_event_cb_t evt_cb); +#else +esp_err_t rpc_supp_dpp_init(void); +#endif esp_err_t rpc_supp_dpp_deinit(void); esp_err_t rpc_supp_dpp_bootstrap_gen(const char *chan_list, esp_supp_dpp_bootstrap_t type, diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index e9809c19..48ce04c5 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 #define ESP_HOSTED_VERSION_MINOR_1 5 -#define ESP_HOSTED_VERSION_PATCH_1 4 +#define ESP_HOSTED_VERSION_PATCH_1 5 #endif diff --git a/host/port/esp/freertos/include/port_esp_hosted_host_wifi_config.h b/host/port/esp/freertos/include/port_esp_hosted_host_wifi_config.h index 20c1c2c5..9dd80cbd 100644 --- a/host/port/esp/freertos/include/port_esp_hosted_host_wifi_config.h +++ b/host/port/esp/freertos/include/port_esp_hosted_host_wifi_config.h @@ -102,9 +102,13 @@ * Wi-Fi Easy Connect (DPP) events is returned to user via * Supplicant Callback or Wi-Fi DPP events, * depending on IDF version + * + * IDF v6.0 and above only support Wi-Fi DPP events + * IDF v5.5 support Wi-Fi and Supplicant DPP events + * earlier versions support only Supplicant DPP events */ // Supplicant Callback DPP Events: still available, but deprecated -#if CONFIG_ESP_HOSTED_ENABLE_DPP +#if CONFIG_ESP_HOSTED_ENABLE_DPP && (ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(6, 0, 0)) #define H_SUPP_DPP_SUPPORT 1 #else #define H_SUPP_DPP_SUPPORT 0 diff --git a/idf_component.yml b/idf_component.yml index 16cf89b4..def9a465 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.5.4" +version: "2.5.5" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/CMakeLists.txt b/slave/CMakeLists.txt index 9fb3561e..1df7d42f 100644 --- a/slave/CMakeLists.txt +++ b/slave/CMakeLists.txt @@ -8,7 +8,7 @@ add_compile_options(-Wl,--wrap=esp_wifi_init) include($ENV{IDF_PATH}/tools/cmake/project.cmake) list(APPEND EXCLUDE_COMPONENTS lwip esp_netif) -set(COMPONENTS esp_timer esptool_py bootloader main nvs_flash esp_rom esp_wifi protocomm driver mqtt wpa_supplicant wifi_provisioning) +set(COMPONENTS esp_timer esptool_py bootloader main nvs_flash esp_rom esp_wifi protocomm driver mqtt wpa_supplicant wifi_provisioning esp_driver_sdio) #list(APPEND COMPONENTS esp_gdbstub) # incase gdbstub needed project(network_adapter) diff --git a/slave/main/esp_hosted_coprocessor.c b/slave/main/esp_hosted_coprocessor.c index edb136a4..61dd0132 100644 --- a/slave/main/esp_hosted_coprocessor.c +++ b/slave/main/esp_hosted_coprocessor.c @@ -659,7 +659,7 @@ static void process_rx_pkt(interface_buffer_handle_t *buf_handle) if (buf_handle->if_type == ESP_STA_IF && station_connected) { /* Forward data to wlan driver */ do { - ret = esp_wifi_internal_tx(ESP_IF_WIFI_STA, payload, payload_len); + ret = esp_wifi_internal_tx(WIFI_IF_STA, payload, payload_len); if (ret) { vTaskDelay(pdMS_TO_TICKS(1)); } @@ -676,7 +676,7 @@ static void process_rx_pkt(interface_buffer_handle_t *buf_handle) #endif } else if (buf_handle->if_type == ESP_AP_IF && softap_started) { /* Forward data to wlan driver */ - esp_wifi_internal_tx(ESP_IF_WIFI_AP, payload, payload_len); + esp_wifi_internal_tx(WIFI_IF_AP, payload, payload_len); ESP_HEXLOGV("AP_Put", payload, payload_len, 32); } else if (buf_handle->if_type == ESP_SERIAL_IF) { #if ESP_PKT_STATS diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index c0151bf3..af8e71a2 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 #define PROJECT_VERSION_MINOR_1 5 -#define PROJECT_VERSION_PATCH_1 4 +#define PROJECT_VERSION_PATCH_1 5 #endif diff --git a/slave/main/idf_component.yml b/slave/main/idf_component.yml index fa9a6e59..06117d41 100644 --- a/slave/main/idf_component.yml +++ b/slave/main/idf_component.yml @@ -2,8 +2,8 @@ dependencies: cmd_system: path: ${IDF_PATH}/examples/system/console/advanced/components/cmd_system espressif/iperf-cmd: - version: "~0.1.1" + version: "~0.1.3" esp-qa/wifi-cmd: - version: "~0.1.0" + version: "~0.2.0" esp-qa/ping-cmd: - version: "~0.0.1" + version: "~1.0.0" diff --git a/slave/main/slave_control.c b/slave/main/slave_control.c index 98db3d56..b02ce244 100644 --- a/slave/main/slave_control.c +++ b/slave/main/slave_control.c @@ -815,7 +815,7 @@ static void event_handler_wifi(void* arg, esp_event_base_t event_base, send_event_data_to_host(RPC_ID__Event_StaConnected, event_data, sizeof(wifi_event_sta_connected_t)); memcpy(&lkg_sta_connected_event, event_data, sizeof(wifi_event_sta_connected_t)); - esp_wifi_internal_reg_rxcb(ESP_IF_WIFI_STA, (wifi_rxcb_t) wlan_sta_rx_callback); + esp_wifi_internal_reg_rxcb(WIFI_IF_STA, (wifi_rxcb_t) wlan_sta_rx_callback); station_connected = true; } else if (event_id == WIFI_EVENT_STA_DISCONNECTED) { station_connected = false; @@ -829,7 +829,7 @@ static void event_handler_wifi(void* arg, esp_event_base_t event_base, new_config_recvd = 0; } } - esp_wifi_internal_reg_rxcb(ESP_IF_WIFI_STA, NULL); + esp_wifi_internal_reg_rxcb(WIFI_IF_STA, NULL); ESP_LOGI(TAG, "Sta mode disconnect"); station_connecting = false; send_event_data_to_host(RPC_ID__Event_StaDisconnected, @@ -874,7 +874,7 @@ static void event_handler_wifi(void* arg, esp_event_base_t event_base, if (event_id == WIFI_EVENT_AP_START) { if (!softap_started) { ESP_LOGI(TAG,"softap started"); - esp_wifi_internal_reg_rxcb(ESP_IF_WIFI_AP, (wifi_rxcb_t) wlan_ap_rx_callback); + esp_wifi_internal_reg_rxcb(WIFI_IF_AP, (wifi_rxcb_t) wlan_ap_rx_callback); softap_started = 1; send_event_data_to_host(RPC_ID__Event_WifiEventNoArgs, &event_id, sizeof(event_id)); @@ -882,7 +882,7 @@ static void event_handler_wifi(void* arg, esp_event_base_t event_base, } else if (event_id == WIFI_EVENT_AP_STOP) { if (softap_started) { ESP_LOGI(TAG,"softap stopped"); - esp_wifi_internal_reg_rxcb(ESP_IF_WIFI_AP, NULL); + esp_wifi_internal_reg_rxcb(WIFI_IF_AP, NULL); softap_started = 0; send_event_data_to_host(RPC_ID__Event_WifiEventNoArgs, &event_id, sizeof(event_id)); @@ -3442,7 +3442,9 @@ static esp_err_t req_wifi_sta_itwt_set_target_wake_time_offset(Rpc *req, Rpc *re #endif // CONFIG_SOC_WIFI_HE_SUPPORT #if H_DPP_SUPPORT +#if H_SUPP_DPP_SUPPORT void dpp_enrollee_event_cb(esp_supp_dpp_event_t event, void *data); +#endif static esp_err_t req_supp_dpp_init(Rpc *req, Rpc *resp, void *priv_data) { @@ -3451,13 +3453,22 @@ static esp_err_t req_supp_dpp_init(Rpc *req, Rpc *resp, void *priv_data) rpc__resp__supp_dpp_init__init); if (req_payload->cb) { +#if H_SUPP_DPP_SUPPORT // init with callback ESP_LOGI(TAG, "dpp init with callback"); RPC_RET_FAIL_IF(esp_supp_dpp_init(dpp_enrollee_event_cb)); +#else + ESP_LOGE(TAG, "dpp init with callback NOT supported"); + resp_payload->resp = ESP_ERR_INVALID_ARG; +#endif } else { // init without callback ESP_LOGI(TAG, "dpp init WITHOUT callback"); +#if H_SUPP_DPP_SUPPORT RPC_RET_FAIL_IF(esp_supp_dpp_init(NULL)); +#else + RPC_RET_FAIL_IF(esp_supp_dpp_init()); +#endif } return ESP_OK; } @@ -4392,9 +4403,9 @@ static esp_err_t rpc_evt_Event_DhcpDnsStatus(Rpc *ntfy, #endif #if H_DPP_SUPPORT +#if H_SUPP_DPP_SUPPORT void dpp_enrollee_event_cb(esp_supp_dpp_event_t event, void *data) { -#if H_SUPP_DPP_SUPPORT switch (event) { case ESP_SUPP_DPP_URI_READY: if (data != NULL) { @@ -4427,9 +4438,6 @@ void dpp_enrollee_event_cb(esp_supp_dpp_event_t event, void *data) } break; } -#else // H_SUPP_DPP_SUPPORT - ESP_LOGW(TAG, "DPP Supplicant Callback not supported: ignoring event"); -#endif // H_SUPP_DPP_SUPPORT } static esp_err_t rpc_evt_supp_dpp_uri_ready(Rpc *ntfy, @@ -4488,6 +4496,7 @@ static esp_err_t rpc_evt_supp_dpp_fail(Rpc *ntfy, ntfy_payload->resp = SUCCESS; return ESP_OK; } +#endif // H_SUPP_DPP_SUPPORT #if H_WIFI_DPP_SUPPORT static esp_err_t rpc_evt_wifi_dpp_uri_ready(Rpc *ntfy, @@ -4634,7 +4643,7 @@ esp_err_t rpc_evt_handler(uint32_t session_id,const uint8_t *inbuf, } case RPC_ID__Event_WifiDppFail: { ret = rpc_evt_wifi_dpp_fail(ntfy, inbuf, inlen); break; -#endif +#endif // H_WIFI_DPP_SUPPORT } default: { ESP_LOGE(TAG, "Incorrect/unsupported Ctrl Notification[%u]\n",ntfy->msg_id); goto err; diff --git a/slave/main/slave_wifi_config.h b/slave/main/slave_wifi_config.h index 1704d4c9..0b5536ad 100644 --- a/slave/main/slave_wifi_config.h +++ b/slave/main/slave_wifi_config.h @@ -76,9 +76,13 @@ * Wi-Fi Easy Connect (DPP) events is returned to user via * Supplicant Callback or Wi-Fi DPP events, * depending on IDF version + * + * IDF v6.0 and above only support Wi-Fi DPP events + * IDF v5.5 support Wi-Fi and Supplicant DPP events + * earlier versions support only Supplicant DPP events */ -// Supplicant Callback DPP Events: still available, but deprecated -#if CONFIG_ESP_WIFI_DPP_SUPPORT +// Supplicant Callback DPP Events: removed from IDF v6.0 +#if CONFIG_ESP_WIFI_DPP_SUPPORT && (ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(6, 0, 0)) #define H_SUPP_DPP_SUPPORT 1 #else #define H_SUPP_DPP_SUPPORT 0 diff --git a/slave/sdkconfig.ci.dpp b/slave/sdkconfig.ci.dpp new file mode 100644 index 00000000..e4ad017a --- /dev/null +++ b/slave/sdkconfig.ci.dpp @@ -0,0 +1,2 @@ +CONFIG_ESP_SDIO_HOST_INTERFACE=y +CONFIG_ESP_WIFI_DPP_SUPPORT=y From e3bfd9f464ece18da4f765be1403bf63e497194e Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Fri, 3 Oct 2025 14:31:58 +0800 Subject: [PATCH 101/114] bugfix(build): Fixed build break caused by incompatible component versions - Updated co-processor and some example `idf_component.yml` files to set component dependencies based on the ESP-IDF version in use --- CHANGELOG.md | 6 ++++++ .../main/idf_component.yml | 16 ++++++++++++++-- .../main/idf_component.yml | 2 +- host/esp_hosted_host_fw_ver.h | 2 +- idf_component.yml | 2 +- slave/main/esp_hosted_coprocessor_fw_ver.h | 2 +- slave/main/idf_component.yml | 16 ++++++++++++++-- 7 files changed, 38 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 62a08dcd..5dbaf262 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 2.5.6 + +### Bug Fixes + +- Updated co-processor and some example `idf_component.yml` files to set component dependencies based on the ESP-IDF version in use + ## 2.5.5 ### Bug Fixes diff --git a/examples/host_network_split__power_save/main/idf_component.yml b/examples/host_network_split__power_save/main/idf_component.yml index f20a9ca5..a11ba0fd 100644 --- a/examples/host_network_split__power_save/main/idf_component.yml +++ b/examples/host_network_split__power_save/main/idf_component.yml @@ -2,9 +2,21 @@ dependencies: cmd_system: path: ${IDF_PATH}/examples/system/console/advanced/components/cmd_system espressif/iperf-cmd: - version: "~0.1.1" + matches: + - if: "idf_version >=6.0" + version: "~0.1.3" + - if: "idf_version <6.0" + version: "~0.1.1" esp-qa/wifi-cmd: - version: "~0.1.8" + matches: + - if: "idf_version >=6.0" + version: "~0.2.0" + - if: "idf_version >=5.5,<6.0" + version: "~0.2.2" + - if: "idf_version >=5.4,<5.5" + version: "~0.1.8" + - if: "idf_version >=5.3,<5.4" + version: "~0.1.0" esp-qa/ping-cmd: version: "~1.0.0" espressif/esp_wifi_remote: diff --git a/examples/host_wifi_easy_connect_dpp_enrollee/main/idf_component.yml b/examples/host_wifi_easy_connect_dpp_enrollee/main/idf_component.yml index 55d47b83..a603c6aa 100644 --- a/examples/host_wifi_easy_connect_dpp_enrollee/main/idf_component.yml +++ b/examples/host_wifi_easy_connect_dpp_enrollee/main/idf_component.yml @@ -1,7 +1,7 @@ dependencies: qrcode: "^0.1.0" espressif/esp_wifi_remote: - version: "*" + version: ">=0.10,<2.0" rules: - if: "target in [esp32p4, esp32h2]" espressif/esp_hosted: diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index 48ce04c5..5fbe9fa3 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 #define ESP_HOSTED_VERSION_MINOR_1 5 -#define ESP_HOSTED_VERSION_PATCH_1 5 +#define ESP_HOSTED_VERSION_PATCH_1 6 #endif diff --git a/idf_component.yml b/idf_component.yml index def9a465..d1b03a6c 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.5.5" +version: "2.5.6" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index af8e71a2..467ac971 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 #define PROJECT_VERSION_MINOR_1 5 -#define PROJECT_VERSION_PATCH_1 5 +#define PROJECT_VERSION_PATCH_1 6 #endif diff --git a/slave/main/idf_component.yml b/slave/main/idf_component.yml index 06117d41..37b22088 100644 --- a/slave/main/idf_component.yml +++ b/slave/main/idf_component.yml @@ -2,8 +2,20 @@ dependencies: cmd_system: path: ${IDF_PATH}/examples/system/console/advanced/components/cmd_system espressif/iperf-cmd: - version: "~0.1.3" + matches: + - if: "idf_version >=6.0" + version: "~0.1.3" + - if: "idf_version <6.0" + version: "~0.1.1" esp-qa/wifi-cmd: - version: "~0.2.0" + matches: + - if: "idf_version >=6.0" + version: "~0.2.0" + - if: "idf_version >=5.5,<6.0" + version: "~0.2.2" + - if: "idf_version >=5.4,<5.5" + version: "~0.1.8" + - if: "idf_version >=5.3,<5.4" + version: "~0.1.0" esp-qa/ping-cmd: version: "~1.0.0" From 95a035be52c1b0def733420de51b52ee4abe15bf Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Fri, 3 Oct 2025 16:52:25 +0800 Subject: [PATCH 102/114] bugfix(build_ci): Fix build breaks when Network Split and CLI are enabled on coprocessor --- .gitlab/ci/merge_request_jobs.yml | 43 +++++++++++++++------- CHANGELOG.md | 6 +++ common/utils/esp_hosted_cli.c | 2 +- host/esp_hosted_host_fw_ver.h | 2 +- idf_component.yml | 2 +- slave/main/esp_hosted_coprocessor_fw_ver.h | 2 +- slave/main/slave_control.c | 2 +- 7 files changed, 40 insertions(+), 19 deletions(-) diff --git a/.gitlab/ci/merge_request_jobs.yml b/.gitlab/ci/merge_request_jobs.yml index 37e37288..15072796 100644 --- a/.gitlab/ci/merge_request_jobs.yml +++ b/.gitlab/ci/merge_request_jobs.yml @@ -1,24 +1,20 @@ # Holds jobs that run from a merge request +### +### Check project pre-requisites have been fulfilled +### + premerge_check: rules: - !reference [.default_rules, rules] extends: .premerge_check_template image: espressif/idf:latest -build_idf_v5.5: - rules: - - !reference [.default_rules, rules] - extends: .build_template - image: espressif/idf:${IDF_VER} - parallel: - matrix: - - IDF_VER: ["v5.5", "v5.5.1", "release-v5.5"] - IDF_TARGET: ["esp32p4"] - IDF_SLAVE_TARGET: ["esp32c6", "esp32c5"] - IDF_EXAMPLE_PATH: ["examples/wifi/iperf"] +### +### Build host using ESP-IDF examples +### -### build protocols/mqtt/tcp example +### protocols/mqtt/tcp example build_idf_master_mqtt_tcp: variables: EXAMPLE_CI_FILE: "sdkconfig.ci.p4_wifi" @@ -29,10 +25,22 @@ build_idf_master_mqtt_tcp: parallel: matrix: - IDF_TARGET: ["esp32p4"] - IDF_SLAVE_TARGET: ["esp32c6", "esp32c5", "esp32c61"] + IDF_SLAVE_TARGET: ["esp32c6", "esp32c5"] IDF_EXAMPLE_PATH: ["examples/protocols/mqtt/tcp"] -### build wifi/iperf example +### wifi/iperf example +build_idf_v5.5_iperf: + rules: + - !reference [.default_rules, rules] + extends: .build_template + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_VER: ["v5.5", "v5.5.1", "release-v5.5"] + IDF_TARGET: ["esp32p4"] + IDF_SLAVE_TARGET: ["esp32c6", "esp32c5"] + IDF_EXAMPLE_PATH: ["examples/wifi/iperf"] + build_idf_master_iperf: rules: - !reference [.default_rules, rules] @@ -44,6 +52,10 @@ build_idf_master_iperf: IDF_SLAVE_TARGET: ["esp32c6", "esp32c5", "esp32c61"] IDF_EXAMPLE_PATH: ["examples/wifi/iperf"] +### +### Build coprocessor +### + build_coprocessor_idf_v5.5: rules: - !reference [.default_rules, rules] @@ -76,7 +88,10 @@ build_coprocessor_idf_master_c61: - IDF_TARGET: ["esp32c61"] SLAVE_CI_FILE: ["sdio"] +### ### build ESP-Hosted examples +### + build_nimble_examples: rules: - !reference [.default_rules, rules] diff --git a/CHANGELOG.md b/CHANGELOG.md index 5dbaf262..ebe50025 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 2.5.7 + +### Bug Fixes + +- Fixed build break when Network Split and CLI Commands are enabled on coprocessor + ## 2.5.6 ### Bug Fixes diff --git a/common/utils/esp_hosted_cli.c b/common/utils/esp_hosted_cli.c index 36d0edc3..1446ce87 100644 --- a/common/utils/esp_hosted_cli.c +++ b/common/utils/esp_hosted_cli.c @@ -395,7 +395,7 @@ int esp_cli_register_cmds(void) app_register_all_wifi_commands(); app_register_iperf_commands(); - app_register_ping_commands(); + ping_cmd_register_ping(); app_register_iperf_hook_func(iperf_hook_show_wifi_stats); #endif return 0; diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index 5fbe9fa3..d163423d 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 #define ESP_HOSTED_VERSION_MINOR_1 5 -#define ESP_HOSTED_VERSION_PATCH_1 6 +#define ESP_HOSTED_VERSION_PATCH_1 7 #endif diff --git a/idf_component.yml b/idf_component.yml index d1b03a6c..be9cf31f 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.5.6" +version: "2.5.7" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index 467ac971..07f05f47 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 #define PROJECT_VERSION_MINOR_1 5 -#define PROJECT_VERSION_PATCH_1 6 +#define PROJECT_VERSION_PATCH_1 7 #endif diff --git a/slave/main/slave_control.c b/slave/main/slave_control.c index b02ce244..12a67c7f 100644 --- a/slave/main/slave_control.c +++ b/slave/main/slave_control.c @@ -768,7 +768,7 @@ static esp_err_t set_slave_static_ip(wifi_interface_t iface, char *ip, char *nm, ESP_LOGI(TAG, "Set static IP addr ip:%s nm:%s gw:%s", ip, nm, gw); ESP_ERROR_CHECK(esp_netif_set_ip_info(slave_sta_netif, &ip_info)); - esp_wifi_internal_reg_rxcb(ESP_IF_WIFI_STA, (wifi_rxcb_t) wlan_sta_rx_callback); + esp_wifi_internal_reg_rxcb(WIFI_IF_STA, (wifi_rxcb_t) wlan_sta_rx_callback); return ESP_OK; } From 2153cef5352c83545d72ef6af4e4198821e59188 Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Fri, 3 Oct 2025 19:34:17 +0800 Subject: [PATCH 103/114] feat: Add staging branch workflow for safer component releases - Add staging branch as default MR target - Create staging branch rules for regression testing - Add job to promote staging to main after regression passes - Update scheduled jobs to run on staging branch --- .gitlab-ci.yml | 1 + .gitlab/ci/merge_request_jobs.yml | 13 +++++ .gitlab/ci/rules.yml | 10 +++- .gitlab/ci/scheduled_pipeline_jobs.yml | 68 +++++++++++----------- CHANGELOG.md | 6 ++ host/esp_hosted_host_fw_ver.h | 2 +- idf_component.yml | 2 +- slave/main/esp_hosted_coprocessor_fw_ver.h | 2 +- 8 files changed, 66 insertions(+), 38 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 992e978d..85d8c7a5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,6 +3,7 @@ stages: - build - build_coprocessor - build_example + - deploy before_script: - git submodule update --init --recursive diff --git a/.gitlab/ci/merge_request_jobs.yml b/.gitlab/ci/merge_request_jobs.yml index 15072796..96aae3e4 100644 --- a/.gitlab/ci/merge_request_jobs.yml +++ b/.gitlab/ci/merge_request_jobs.yml @@ -137,3 +137,16 @@ build_wifi_examples: "host_wifi_itwt", "host_transport_config", "host_network_split__power_save"] + +### +### Promote staging to main after successful regression +### + +promote_staging_to_main: + stage: deploy + rules: + - if: $CI_COMMIT_BRANCH == "staging" && $CI_PIPELINE_SOURCE == "push" + script: + - git push origin $CI_COMMIT_SHA:main + tags: + - build diff --git a/.gitlab/ci/rules.yml b/.gitlab/ci/rules.yml index 2b586f81..42c4ad51 100644 --- a/.gitlab/ci/rules.yml +++ b/.gitlab/ci/rules.yml @@ -1,12 +1,20 @@ # Holds rules for running jobs # default rule -# used for running jobs on a merge request +# used for running jobs on a merge request to staging .default_rules: rules: - if: $CI_PIPELINE_SOURCE == "schedule" when: never + - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "staging" + +# staging branch rule +# used for running regression jobs on staging branch +.staging_branch_rules: + rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event" + when: never + - if: $CI_COMMIT_BRANCH == "staging" && $CI_PIPELINE_SOURCE == "push" # scheduled pipeline rule # used for running jobs on a scheduled pipeline diff --git a/.gitlab/ci/scheduled_pipeline_jobs.yml b/.gitlab/ci/scheduled_pipeline_jobs.yml index aa0a2f26..9b16f0bf 100644 --- a/.gitlab/ci/scheduled_pipeline_jobs.yml +++ b/.gitlab/ci/scheduled_pipeline_jobs.yml @@ -4,9 +4,9 @@ build_idf_v5.3_mqtt_tcp_scheduled: variables: EXAMPLE_CI_FILE: "sdkconfig.ci.p4_wifi" tags: - - scheduled_build + - build rules: - - !reference [.scheduled_pipeline_rules, rules] + - !reference [.staging_branch_rules, rules] extends: .build_template image: espressif/idf:${IDF_VER} parallel: @@ -20,9 +20,9 @@ build_idf_v5.4_mqtt_tcp_scheduled: variables: EXAMPLE_CI_FILE: "sdkconfig.ci.p4_wifi" tags: - - scheduled_build + - build rules: - - !reference [.scheduled_pipeline_rules, rules] + - !reference [.staging_branch_rules, rules] extends: .build_template image: espressif/idf:${IDF_VER} parallel: @@ -34,9 +34,9 @@ build_idf_v5.4_mqtt_tcp_scheduled: build_idf_v5.5_iperf_scheduled: tags: - - scheduled_build + - build rules: - - !reference [.scheduled_pipeline_rules, rules] + - !reference [.staging_branch_rules, rules] extends: .build_template image: espressif/idf:${IDF_VER} parallel: @@ -50,9 +50,9 @@ build_idf_master_mqtt_tcp_scheduled: variables: EXAMPLE_CI_FILE: "sdkconfig.ci.p4_wifi" tags: - - scheduled_build + - build rules: - - !reference [.scheduled_pipeline_rules, rules] + - !reference [.staging_branch_rules, rules] extends: .build_template image: espressif/idf:latest parallel: @@ -63,9 +63,9 @@ build_idf_master_mqtt_tcp_scheduled: build_idf_master_iperf_scheduled: tags: - - scheduled_build + - build rules: - - !reference [.scheduled_pipeline_rules, rules] + - !reference [.staging_branch_rules, rules] extends: .build_template image: espressif/idf:latest parallel: @@ -76,9 +76,9 @@ build_idf_master_iperf_scheduled: build_coprocessor_idf_v5.3_scheduled: tags: - - scheduled_build + - build rules: - - !reference [.scheduled_pipeline_rules, rules] + - !reference [.staging_branch_rules, rules] extends: .build_template_coprocessor image: espressif/idf:${IDF_VER} parallel: @@ -89,9 +89,9 @@ build_coprocessor_idf_v5.3_scheduled: build_coprocessor_idf_v5.3_scheduled_2: tags: - - scheduled_build + - build rules: - - !reference [.scheduled_pipeline_rules, rules] + - !reference [.staging_branch_rules, rules] extends: .build_template_coprocessor image: espressif/idf:${IDF_VER} parallel: @@ -102,9 +102,9 @@ build_coprocessor_idf_v5.3_scheduled_2: build_coprocessor_idf_v5.3_esp32_scheduled: tags: - - scheduled_build + - build rules: - - !reference [.scheduled_pipeline_rules, rules] + - !reference [.staging_branch_rules, rules] extends: .build_template_coprocessor image: espressif/idf:${IDF_VER} parallel: @@ -115,9 +115,9 @@ build_coprocessor_idf_v5.3_esp32_scheduled: build_coprocessor_idf_v5.4_scheduled: tags: - - scheduled_build + - build rules: - - !reference [.scheduled_pipeline_rules, rules] + - !reference [.staging_branch_rules, rules] extends: .build_template_coprocessor image: espressif/idf:${IDF_VER} parallel: @@ -128,9 +128,9 @@ build_coprocessor_idf_v5.4_scheduled: build_coprocessor_idf_v5.4_scheduled_2: tags: - - scheduled_build + - build rules: - - !reference [.scheduled_pipeline_rules, rules] + - !reference [.staging_branch_rules, rules] extends: .build_template_coprocessor image: espressif/idf:${IDF_VER} parallel: @@ -141,9 +141,9 @@ build_coprocessor_idf_v5.4_scheduled_2: build_coprocessor_idf_v5.4_esp32_scheduled: tags: - - scheduled_build + - build rules: - - !reference [.scheduled_pipeline_rules, rules] + - !reference [.staging_branch_rules, rules] extends: .build_template_coprocessor image: espressif/idf:${IDF_VER} parallel: @@ -154,9 +154,9 @@ build_coprocessor_idf_v5.4_esp32_scheduled: build_coprocessor_idf_v5.5_scheduled: tags: - - scheduled_build + - build rules: - - !reference [.scheduled_pipeline_rules, rules] + - !reference [.staging_branch_rules, rules] extends: .build_template_coprocessor image: espressif/idf:${IDF_VER} parallel: @@ -167,9 +167,9 @@ build_coprocessor_idf_v5.5_scheduled: build_coprocessor_idf_v5.5_esp32_scheduled: tags: - - scheduled_build + - build rules: - - !reference [.scheduled_pipeline_rules, rules] + - !reference [.staging_branch_rules, rules] extends: .build_template_coprocessor image: espressif/idf:${IDF_VER} parallel: @@ -180,9 +180,9 @@ build_coprocessor_idf_v5.5_esp32_scheduled: build_coprocessor_idf_master_all_features_enabled_scheduled: tags: - - scheduled_build + - build rules: - - !reference [.scheduled_pipeline_rules, rules] + - !reference [.staging_branch_rules, rules] extends: .build_template_coprocessor image: espressif/idf:latest parallel: @@ -192,9 +192,9 @@ build_coprocessor_idf_master_all_features_enabled_scheduled: build_nimble_examples: tags: - - scheduled_build + - build rules: - - !reference [.scheduled_pipeline_rules, rules] + - !reference [.staging_branch_rules, rules] extends: .build_template_example image: espressif/idf:${IDF_VER} parallel: @@ -208,9 +208,9 @@ build_nimble_examples: build_bluedroid_examples: tags: - - scheduled_build + - build rules: - - !reference [.scheduled_pipeline_rules, rules] + - !reference [.staging_branch_rules, rules] extends: .build_template_example image: espressif/idf:${IDF_VER} parallel: @@ -226,9 +226,9 @@ build_bluedroid_examples: build_wifi_examples: tags: - - scheduled_build + - build rules: - - !reference [.scheduled_pipeline_rules, rules] + - !reference [.staging_branch_rules, rules] extends: .build_template_example image: espressif/idf:${IDF_VER} parallel: diff --git a/CHANGELOG.md b/CHANGELOG.md index ebe50025..c9471049 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 2.5.8 + +### Features + +- Add staging branch workflow for safer component releases + ## 2.5.7 ### Bug Fixes diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index d163423d..e5d39fb4 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 #define ESP_HOSTED_VERSION_MINOR_1 5 -#define ESP_HOSTED_VERSION_PATCH_1 7 +#define ESP_HOSTED_VERSION_PATCH_1 8 #endif diff --git a/idf_component.yml b/idf_component.yml index be9cf31f..9323379e 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.5.7" +version: "2.5.8" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index 07f05f47..cc128bf9 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 #define PROJECT_VERSION_MINOR_1 5 -#define PROJECT_VERSION_PATCH_1 7 +#define PROJECT_VERSION_PATCH_1 8 #endif From 6ead40c992cc5f0d5c017a2e905a5e4c96c73985 Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Fri, 3 Oct 2025 19:44:20 +0800 Subject: [PATCH 104/114] test the staging architecture with dummy MR --- CHANGELOG.md | 4 ++++ host/esp_hosted_host_fw_ver.h | 2 +- idf_component.yml | 2 +- slave/main/esp_hosted_coprocessor_fw_ver.h | 2 +- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c9471049..30c13365 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 2.5.9 + +Test staging with dummy MR + ## 2.5.8 ### Features diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index e5d39fb4..6417e41c 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 #define ESP_HOSTED_VERSION_MINOR_1 5 -#define ESP_HOSTED_VERSION_PATCH_1 8 +#define ESP_HOSTED_VERSION_PATCH_1 9 #endif diff --git a/idf_component.yml b/idf_component.yml index 9323379e..26a573f0 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.5.8" +version: "2.5.9" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index cc128bf9..5dcf3adc 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 #define PROJECT_VERSION_MINOR_1 5 -#define PROJECT_VERSION_PATCH_1 8 +#define PROJECT_VERSION_PATCH_1 9 #endif From 83622fadf5ff36fc6a20a5288e7129d395bb5eaa Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Fri, 3 Oct 2025 20:23:32 +0800 Subject: [PATCH 105/114] test staging architecture --- .gitlab/ci/merge_request_jobs.yml | 1 + CHANGELOG.md | 9 +++------ host/esp_hosted_host_fw_ver.h | 2 +- idf_component.yml | 2 +- slave/main/esp_hosted_coprocessor_fw_ver.h | 2 +- 5 files changed, 7 insertions(+), 9 deletions(-) diff --git a/.gitlab/ci/merge_request_jobs.yml b/.gitlab/ci/merge_request_jobs.yml index 96aae3e4..15d4528e 100644 --- a/.gitlab/ci/merge_request_jobs.yml +++ b/.gitlab/ci/merge_request_jobs.yml @@ -147,6 +147,7 @@ promote_staging_to_main: rules: - if: $CI_COMMIT_BRANCH == "staging" && $CI_PIPELINE_SOURCE == "push" script: + - git remote set-url origin https://oauth2:${GITLAB_TOKEN_STAGING_TO_MAIN}@gitlab.espressif.cn:6688/app-frameworks/esp_hosted_mcu.git - git push origin $CI_COMMIT_SHA:main tags: - build diff --git a/CHANGELOG.md b/CHANGELOG.md index 30c13365..c14a122c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,14 +1,11 @@ # Changelog -## 2.5.9 - -Test staging with dummy MR - -## 2.5.8 +## 2.5.10 ### Features -- Add staging branch workflow for safer component releases +- Version, 2.5.8 - 2.5.10: + - Add staging branch workflow for safer component releases ## 2.5.7 diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index 6417e41c..cae4612d 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 #define ESP_HOSTED_VERSION_MINOR_1 5 -#define ESP_HOSTED_VERSION_PATCH_1 9 +#define ESP_HOSTED_VERSION_PATCH_1 10 #endif diff --git a/idf_component.yml b/idf_component.yml index 26a573f0..5e97bedc 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.5.9" +version: "2.5.10" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index 5dcf3adc..11a4fb71 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 #define PROJECT_VERSION_MINOR_1 5 -#define PROJECT_VERSION_PATCH_1 9 +#define PROJECT_VERSION_PATCH_1 10 #endif From a9a959eccf3fc64ceb0489e13c639d3c7ae78e56 Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Tue, 7 Oct 2025 10:20:14 +0800 Subject: [PATCH 106/114] bugfix(build_ci): Enabled missing jobs on CI regression pipeline - renamed pipelines to "sanity" and "regression" - made the job names unique so they won't clobber one another in the YAML file --- .gitlab-ci.yml | 4 +-- ..._jobs.yml => regression_pipeline_jobs.yml} | 36 +++++++++---------- .gitlab/ci/rules.yml | 10 +----- ...uest_jobs.yml => sanity_pipeline_jobs.yml} | 20 +++++------ CHANGELOG.md | 8 +++++ host/esp_hosted_host_fw_ver.h | 2 +- idf_component.yml | 2 +- slave/main/esp_hosted_coprocessor_fw_ver.h | 2 +- 8 files changed, 42 insertions(+), 42 deletions(-) rename .gitlab/ci/{scheduled_pipeline_jobs.yml => regression_pipeline_jobs.yml} (88%) rename .gitlab/ci/{merge_request_jobs.yml => sanity_pipeline_jobs.yml} (91%) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 85d8c7a5..fac1305a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -11,5 +11,5 @@ before_script: include: - '.gitlab/ci/templates.yml' - '.gitlab/ci/rules.yml' - - '.gitlab/ci/scheduled_pipeline_jobs.yml' - - '.gitlab/ci/merge_request_jobs.yml' + - '.gitlab/ci/regression_pipeline_jobs.yml' + - '.gitlab/ci/sanity_pipeline_jobs.yml' diff --git a/.gitlab/ci/scheduled_pipeline_jobs.yml b/.gitlab/ci/regression_pipeline_jobs.yml similarity index 88% rename from .gitlab/ci/scheduled_pipeline_jobs.yml rename to .gitlab/ci/regression_pipeline_jobs.yml index 9b16f0bf..99e95782 100644 --- a/.gitlab/ci/scheduled_pipeline_jobs.yml +++ b/.gitlab/ci/regression_pipeline_jobs.yml @@ -1,6 +1,6 @@ -# Holds jobs that run from the scheduled pipeline +# Holds jobs that run before promoting to main branch -build_idf_v5.3_mqtt_tcp_scheduled: +regression_build_idf_v5.3_mqtt_tcp_scheduled: variables: EXAMPLE_CI_FILE: "sdkconfig.ci.p4_wifi" tags: @@ -16,7 +16,7 @@ build_idf_v5.3_mqtt_tcp_scheduled: IDF_SLAVE_TARGET: ["esp32c6"] IDF_EXAMPLE_PATH: ["examples/protocols/mqtt/tcp"] -build_idf_v5.4_mqtt_tcp_scheduled: +regression_build_idf_v5.4_mqtt_tcp_scheduled: variables: EXAMPLE_CI_FILE: "sdkconfig.ci.p4_wifi" tags: @@ -32,7 +32,7 @@ build_idf_v5.4_mqtt_tcp_scheduled: IDF_SLAVE_TARGET: ["esp32c6"] IDF_EXAMPLE_PATH: ["examples/protocols/mqtt/tcp"] -build_idf_v5.5_iperf_scheduled: +regression_build_idf_v5.5_iperf_scheduled: tags: - build rules: @@ -46,7 +46,7 @@ build_idf_v5.5_iperf_scheduled: IDF_SLAVE_TARGET: ["esp32", "esp32c2", "esp32c3", "esp32s3" ] IDF_EXAMPLE_PATH: ["examples/wifi/iperf"] -build_idf_master_mqtt_tcp_scheduled: +regression_build_idf_master_mqtt_tcp_scheduled: variables: EXAMPLE_CI_FILE: "sdkconfig.ci.p4_wifi" tags: @@ -61,7 +61,7 @@ build_idf_master_mqtt_tcp_scheduled: IDF_SLAVE_TARGET: ["esp32", "esp32c2", "esp32c3", "esp32s3" ] IDF_EXAMPLE_PATH: ["examples/protocols/mqtt/tcp"] -build_idf_master_iperf_scheduled: +regression_build_idf_master_iperf_scheduled: tags: - build rules: @@ -74,7 +74,7 @@ build_idf_master_iperf_scheduled: IDF_SLAVE_TARGET: ["esp32", "esp32c2", "esp32c3", "esp32s3" ] IDF_EXAMPLE_PATH: ["examples/wifi/iperf"] -build_coprocessor_idf_v5.3_scheduled: +regression_build_coprocessor_idf_v5.3_scheduled: tags: - build rules: @@ -87,7 +87,7 @@ build_coprocessor_idf_v5.3_scheduled: IDF_VER: ["v5.3", "v5.3.1", "v5.3.2", "v5.3.3", "v5.3.4", "release-v5.3"] SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart", "dpp"] -build_coprocessor_idf_v5.3_scheduled_2: +regression_build_coprocessor_idf_v5.3_scheduled_2: tags: - build rules: @@ -100,7 +100,7 @@ build_coprocessor_idf_v5.3_scheduled_2: IDF_VER: ["v5.3", "v5.3.1", "v5.3.2", "v5.3.3", "v5.3.4", "release-v5.3"] SLAVE_CI_FILE: ["spi", "spi_hd", "uart"] -build_coprocessor_idf_v5.3_esp32_scheduled: +regression_build_coprocessor_idf_v5.3_esp32_scheduled: tags: - build rules: @@ -113,7 +113,7 @@ build_coprocessor_idf_v5.3_esp32_scheduled: IDF_VER: ["v5.3", "v5.3.1", "v5.3.2", "v5.3.3", "v5.3.4", "release-v5.3"] SLAVE_CI_FILE: ["sdio", "spi", "uart"] -build_coprocessor_idf_v5.4_scheduled: +regression_build_coprocessor_idf_v5.4_scheduled: tags: - build rules: @@ -126,7 +126,7 @@ build_coprocessor_idf_v5.4_scheduled: IDF_VER: ["v5.4", "v5.4.1", "v5.4.2", "release-v5.4"] SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart", "dpp"] -build_coprocessor_idf_v5.4_scheduled_2: +regression_build_coprocessor_idf_v5.4_scheduled_2: tags: - build rules: @@ -139,7 +139,7 @@ build_coprocessor_idf_v5.4_scheduled_2: IDF_VER: ["v5.4", "v5.4.1", "v5.4.2", "release-v5.4"] SLAVE_CI_FILE: ["spi", "spi_hd", "uart"] -build_coprocessor_idf_v5.4_esp32_scheduled: +regression_build_coprocessor_idf_v5.4_esp32_scheduled: tags: - build rules: @@ -152,7 +152,7 @@ build_coprocessor_idf_v5.4_esp32_scheduled: IDF_VER: ["v5.4", "v5.4.1", "v5.4.2", "release-v5.4"] SLAVE_CI_FILE: ["sdio", "spi", "uart"] -build_coprocessor_idf_v5.5_scheduled: +regression_build_coprocessor_idf_v5.5_scheduled: tags: - build rules: @@ -165,7 +165,7 @@ build_coprocessor_idf_v5.5_scheduled: IDF_VER: ["v5.5", "v5.5.1", "release-v5.5"] SLAVE_CI_FILE: ["spi", "spi_hd", "uart"] -build_coprocessor_idf_v5.5_esp32_scheduled: +regression_build_coprocessor_idf_v5.5_esp32_scheduled: tags: - build rules: @@ -178,7 +178,7 @@ build_coprocessor_idf_v5.5_esp32_scheduled: IDF_VER: ["v5.5", "v5.5.1", "release-v5.5"] SLAVE_CI_FILE: ["sdio", "spi", "uart"] -build_coprocessor_idf_master_all_features_enabled_scheduled: +regression_build_coprocessor_idf_master_all_features_enabled_scheduled: tags: - build rules: @@ -190,7 +190,7 @@ build_coprocessor_idf_master_all_features_enabled_scheduled: - IDF_TARGET: ["esp32c6"] SLAVE_CI_FILE: ["all_features"] -build_nimble_examples: +regression_build_nimble_examples: tags: - build rules: @@ -206,7 +206,7 @@ build_nimble_examples: EXAMPLE_TO_BUILD: ["host_nimble_bleprph_host_only_vhci", "host_nimble_bleprph_host_only_uart_hci"] -build_bluedroid_examples: +regression_build_bluedroid_examples: tags: - build rules: @@ -224,7 +224,7 @@ build_bluedroid_examples: "host_bluedroid_host_only", "host_bt_controller_mac_addr"] -build_wifi_examples: +regression_build_wifi_examples: tags: - build rules: diff --git a/.gitlab/ci/rules.yml b/.gitlab/ci/rules.yml index 42c4ad51..620beb3b 100644 --- a/.gitlab/ci/rules.yml +++ b/.gitlab/ci/rules.yml @@ -4,7 +4,7 @@ # used for running jobs on a merge request to staging .default_rules: rules: - - if: $CI_PIPELINE_SOURCE == "schedule" + - if: $CI_COMMIT_BRANCH == "staging" && $CI_PIPELINE_SOURCE == "push" when: never - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "staging" @@ -15,11 +15,3 @@ - if: $CI_PIPELINE_SOURCE == "merge_request_event" when: never - if: $CI_COMMIT_BRANCH == "staging" && $CI_PIPELINE_SOURCE == "push" - -# scheduled pipeline rule -# used for running jobs on a scheduled pipeline -.scheduled_pipeline_rules: - rules: - - if: $CI_PIPELINE_SOURCE == "merge_request_event" - when: never - - if: $CI_PIPELINE_SOURCE == "schedule" diff --git a/.gitlab/ci/merge_request_jobs.yml b/.gitlab/ci/sanity_pipeline_jobs.yml similarity index 91% rename from .gitlab/ci/merge_request_jobs.yml rename to .gitlab/ci/sanity_pipeline_jobs.yml index 15d4528e..e2839f95 100644 --- a/.gitlab/ci/merge_request_jobs.yml +++ b/.gitlab/ci/sanity_pipeline_jobs.yml @@ -15,7 +15,7 @@ premerge_check: ### ### protocols/mqtt/tcp example -build_idf_master_mqtt_tcp: +sanity_build_idf_master_mqtt_tcp: variables: EXAMPLE_CI_FILE: "sdkconfig.ci.p4_wifi" rules: @@ -29,7 +29,7 @@ build_idf_master_mqtt_tcp: IDF_EXAMPLE_PATH: ["examples/protocols/mqtt/tcp"] ### wifi/iperf example -build_idf_v5.5_iperf: +sanity_build_idf_v5.5_iperf: rules: - !reference [.default_rules, rules] extends: .build_template @@ -41,7 +41,7 @@ build_idf_v5.5_iperf: IDF_SLAVE_TARGET: ["esp32c6", "esp32c5"] IDF_EXAMPLE_PATH: ["examples/wifi/iperf"] -build_idf_master_iperf: +sanity_build_idf_master_iperf: rules: - !reference [.default_rules, rules] extends: .build_template @@ -56,7 +56,7 @@ build_idf_master_iperf: ### Build coprocessor ### -build_coprocessor_idf_v5.5: +sanity_build_coprocessor_idf_v5.5: rules: - !reference [.default_rules, rules] extends: .build_template_coprocessor @@ -67,7 +67,7 @@ build_coprocessor_idf_v5.5: IDF_VER: ["v5.5", "v5.5.1", "release-v5.5"] SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart", "dpp"] -build_coprocessor_idf_master: +sanity_build_coprocessor_idf_master: rules: - !reference [.default_rules, rules] extends: .build_template_coprocessor @@ -78,7 +78,7 @@ build_coprocessor_idf_master: SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart", "dpp"] # for C61, build for sdio only for now -build_coprocessor_idf_master_c61: +sanity_build_coprocessor_idf_master_c61: rules: - !reference [.default_rules, rules] extends: .build_template_coprocessor @@ -92,7 +92,7 @@ build_coprocessor_idf_master_c61: ### build ESP-Hosted examples ### -build_nimble_examples: +sanity_build_nimble_examples: rules: - !reference [.default_rules, rules] extends: .build_template_example @@ -106,7 +106,7 @@ build_nimble_examples: EXAMPLE_TO_BUILD: ["host_nimble_bleprph_host_only_vhci", "host_nimble_bleprph_host_only_uart_hci"] -build_bluedroid_examples: +sanity_build_bluedroid_examples: rules: - !reference [.default_rules, rules] extends: .build_template_example @@ -122,7 +122,7 @@ build_bluedroid_examples: "host_bluedroid_host_only", "host_bt_controller_mac_addr"] -build_wifi_examples: +sanity_build_wifi_examples: rules: - !reference [.default_rules, rules] extends: .build_template_example @@ -139,7 +139,7 @@ build_wifi_examples: "host_network_split__power_save"] ### -### Promote staging to main after successful regression +### Promote staging to main after successful regression testing ### promote_staging_to_main: diff --git a/CHANGELOG.md b/CHANGELOG.md index c14a122c..190ec1de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 2.5.11 + +### Bug Fixes + +- Renamed CI pipelines to "sanity" and "regression" +- Prefix jobs with `sanity_` or `regression_` to make their names unique +- Enabled building of ESP-Hosted examples in regression pipeline + ## 2.5.10 ### Features diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index cae4612d..fc66c902 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 #define ESP_HOSTED_VERSION_MINOR_1 5 -#define ESP_HOSTED_VERSION_PATCH_1 10 +#define ESP_HOSTED_VERSION_PATCH_1 11 #endif diff --git a/idf_component.yml b/idf_component.yml index 5e97bedc..17ff9caf 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.5.10" +version: "2.5.11" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index 11a4fb71..78e4230b 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 #define PROJECT_VERSION_MINOR_1 5 -#define PROJECT_VERSION_PATCH_1 10 +#define PROJECT_VERSION_PATCH_1 11 #endif From 1731f4e840a33f8a4807ba6c8b4889879e01e85b Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Wed, 8 Oct 2025 14:08:18 +0800 Subject: [PATCH 107/114] bugfix(build_ci_2): Build CI pipeline errors - used compatible version `idf-build-apps` that came with the IDF version - enabled constraints to prevent incompatible versions of components being used while building - removed IDF v5.3 and v5.3.1 when building for P4: not compatible - fix added for v5.3.2 onwards - fixed bug in building bt_hid_mouse_device example - no esp_bt_cod_t::minor parameter in IDF v5.3 and v5.3.1 - fixed bug in `sdkconfig.default` for host_transport_config - missing newline at end of file caused append operation in CI scripts to misbehave - fixed bug causing host spi_hd transport building to fail - fixed bug causing host uart transport building to fail on ESP32-H2 - missing `Kconfig` UART options --- .gitlab/ci/regression_pipeline_jobs.yml | 148 +++++++++++++++--- .gitlab/ci/rules.yml | 9 ++ .gitlab/ci/sanity_pipeline_jobs.yml | 16 ++ .gitlab/ci/templates.yml | 28 ++-- CHANGELOG.md | 2 + Kconfig | 2 + .../main/main.c | 2 +- .../sdkconfig.ci.sdio | 1 + .../sdkconfig.ci.spi | 1 + .../sdkconfig.ci.spi_hd | 1 + .../sdkconfig.ci.uart | 1 + .../host_transport_config/sdkconfig.defaults | 2 +- host/drivers/transport/spi_hd/spi_hd_drv.c | 4 +- 13 files changed, 182 insertions(+), 35 deletions(-) create mode 100644 examples/host_network_split__power_save/sdkconfig.ci.sdio create mode 100644 examples/host_network_split__power_save/sdkconfig.ci.spi create mode 100644 examples/host_network_split__power_save/sdkconfig.ci.spi_hd create mode 100644 examples/host_network_split__power_save/sdkconfig.ci.uart diff --git a/.gitlab/ci/regression_pipeline_jobs.yml b/.gitlab/ci/regression_pipeline_jobs.yml index 99e95782..1c041cf9 100644 --- a/.gitlab/ci/regression_pipeline_jobs.yml +++ b/.gitlab/ci/regression_pipeline_jobs.yml @@ -1,6 +1,11 @@ # Holds jobs that run before promoting to main branch -regression_build_idf_v5.3_mqtt_tcp_scheduled: +### Notes: +# IDF v5.3 and v5.3.1 do not build for P4 +# - fix only merged for v5.3.2 and above +# - https://github.com/espressif/esp-idf/commit/1aec9e7df38bb7ccc9ec2fb846288910c329d77a + +regression_build_idf_v5.3_mqtt_tcp_h2: variables: EXAMPLE_CI_FILE: "sdkconfig.ci.p4_wifi" tags: @@ -12,11 +17,27 @@ regression_build_idf_v5.3_mqtt_tcp_scheduled: parallel: matrix: - IDF_VER: ["v5.3", "v5.3.1", "v5.3.2", "v5.3.3", "v5.3.4", "release-v5.3"] - IDF_TARGET: ["esp32p4", "esp32h2"] + IDF_TARGET: ["esp32h2"] + IDF_SLAVE_TARGET: ["esp32c6"] + IDF_EXAMPLE_PATH: ["examples/protocols/mqtt/tcp"] + +regression_build_idf_v5.3_mqtt_tcp_p4: + variables: + EXAMPLE_CI_FILE: "sdkconfig.ci.p4_wifi" + tags: + - build + rules: + - !reference [.staging_branch_rules, rules] + extends: .build_template + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_VER: ["v5.3.2", "v5.3.3", "v5.3.4", "release-v5.3"] + IDF_TARGET: ["esp32p4"] IDF_SLAVE_TARGET: ["esp32c6"] IDF_EXAMPLE_PATH: ["examples/protocols/mqtt/tcp"] -regression_build_idf_v5.4_mqtt_tcp_scheduled: +regression_build_idf_v5.4_mqtt_tcp: variables: EXAMPLE_CI_FILE: "sdkconfig.ci.p4_wifi" tags: @@ -32,7 +53,7 @@ regression_build_idf_v5.4_mqtt_tcp_scheduled: IDF_SLAVE_TARGET: ["esp32c6"] IDF_EXAMPLE_PATH: ["examples/protocols/mqtt/tcp"] -regression_build_idf_v5.5_iperf_scheduled: +regression_build_idf_v5.5_iperf: tags: - build rules: @@ -46,7 +67,7 @@ regression_build_idf_v5.5_iperf_scheduled: IDF_SLAVE_TARGET: ["esp32", "esp32c2", "esp32c3", "esp32s3" ] IDF_EXAMPLE_PATH: ["examples/wifi/iperf"] -regression_build_idf_master_mqtt_tcp_scheduled: +regression_build_idf_master_mqtt_tcp: variables: EXAMPLE_CI_FILE: "sdkconfig.ci.p4_wifi" tags: @@ -61,7 +82,7 @@ regression_build_idf_master_mqtt_tcp_scheduled: IDF_SLAVE_TARGET: ["esp32", "esp32c2", "esp32c3", "esp32s3" ] IDF_EXAMPLE_PATH: ["examples/protocols/mqtt/tcp"] -regression_build_idf_master_iperf_scheduled: +regression_build_idf_master_iperf: tags: - build rules: @@ -74,7 +95,7 @@ regression_build_idf_master_iperf_scheduled: IDF_SLAVE_TARGET: ["esp32", "esp32c2", "esp32c3", "esp32s3" ] IDF_EXAMPLE_PATH: ["examples/wifi/iperf"] -regression_build_coprocessor_idf_v5.3_scheduled: +regression_build_coprocessor_idf_v5.3_pt1: tags: - build rules: @@ -87,7 +108,7 @@ regression_build_coprocessor_idf_v5.3_scheduled: IDF_VER: ["v5.3", "v5.3.1", "v5.3.2", "v5.3.3", "v5.3.4", "release-v5.3"] SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart", "dpp"] -regression_build_coprocessor_idf_v5.3_scheduled_2: +regression_build_coprocessor_idf_v5.3_pt2: tags: - build rules: @@ -100,7 +121,7 @@ regression_build_coprocessor_idf_v5.3_scheduled_2: IDF_VER: ["v5.3", "v5.3.1", "v5.3.2", "v5.3.3", "v5.3.4", "release-v5.3"] SLAVE_CI_FILE: ["spi", "spi_hd", "uart"] -regression_build_coprocessor_idf_v5.3_esp32_scheduled: +regression_build_coprocessor_idf_v5.3_esp32: tags: - build rules: @@ -113,7 +134,7 @@ regression_build_coprocessor_idf_v5.3_esp32_scheduled: IDF_VER: ["v5.3", "v5.3.1", "v5.3.2", "v5.3.3", "v5.3.4", "release-v5.3"] SLAVE_CI_FILE: ["sdio", "spi", "uart"] -regression_build_coprocessor_idf_v5.4_scheduled: +regression_build_coprocessor_idf_v5.4_pt1: tags: - build rules: @@ -126,7 +147,7 @@ regression_build_coprocessor_idf_v5.4_scheduled: IDF_VER: ["v5.4", "v5.4.1", "v5.4.2", "release-v5.4"] SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart", "dpp"] -regression_build_coprocessor_idf_v5.4_scheduled_2: +regression_build_coprocessor_idf_v5.4_pt2: tags: - build rules: @@ -139,7 +160,7 @@ regression_build_coprocessor_idf_v5.4_scheduled_2: IDF_VER: ["v5.4", "v5.4.1", "v5.4.2", "release-v5.4"] SLAVE_CI_FILE: ["spi", "spi_hd", "uart"] -regression_build_coprocessor_idf_v5.4_esp32_scheduled: +regression_build_coprocessor_idf_v5.4_esp32: tags: - build rules: @@ -152,7 +173,7 @@ regression_build_coprocessor_idf_v5.4_esp32_scheduled: IDF_VER: ["v5.4", "v5.4.1", "v5.4.2", "release-v5.4"] SLAVE_CI_FILE: ["sdio", "spi", "uart"] -regression_build_coprocessor_idf_v5.5_scheduled: +regression_build_coprocessor_idf_v5.5: tags: - build rules: @@ -165,7 +186,7 @@ regression_build_coprocessor_idf_v5.5_scheduled: IDF_VER: ["v5.5", "v5.5.1", "release-v5.5"] SLAVE_CI_FILE: ["spi", "spi_hd", "uart"] -regression_build_coprocessor_idf_v5.5_esp32_scheduled: +regression_build_coprocessor_idf_v5.5_esp32: tags: - build rules: @@ -178,7 +199,7 @@ regression_build_coprocessor_idf_v5.5_esp32_scheduled: IDF_VER: ["v5.5", "v5.5.1", "release-v5.5"] SLAVE_CI_FILE: ["sdio", "spi", "uart"] -regression_build_coprocessor_idf_master_all_features_enabled_scheduled: +regression_build_coprocessor_idf_master_all_features_enabled: tags: - build rules: @@ -190,7 +211,7 @@ regression_build_coprocessor_idf_master_all_features_enabled_scheduled: - IDF_TARGET: ["esp32c6"] SLAVE_CI_FILE: ["all_features"] -regression_build_nimble_examples: +regression_build_nimble_examples_h2: tags: - build rules: @@ -199,14 +220,14 @@ regression_build_nimble_examples: image: espressif/idf:${IDF_VER} parallel: matrix: - - IDF_TARGET: ["esp32p4", "esp32h2"] + - IDF_TARGET: ["esp32h2"] IDF_VER: ["v5.4", "v5.4.1", "v5.4.2", "release-v5.4", "v5.3", "v5.3.1", "v5.3.2", "v5.3.3", "v5.3.4", "release-v5.3"] IDF_SLAVE_TARGET: ["esp32c6"] EXAMPLE_TO_BUILD: ["host_nimble_bleprph_host_only_vhci", "host_nimble_bleprph_host_only_uart_hci"] -regression_build_bluedroid_examples: +regression_build_nimble_examples_p4: tags: - build rules: @@ -215,7 +236,23 @@ regression_build_bluedroid_examples: image: espressif/idf:${IDF_VER} parallel: matrix: - - IDF_TARGET: ["esp32p4", "esp32h2"] + - IDF_TARGET: ["esp32p4"] + IDF_VER: ["v5.4", "v5.4.1", "v5.4.2", "release-v5.4", + "v5.3.2", "v5.3.3", "v5.3.4", "release-v5.3"] + IDF_SLAVE_TARGET: ["esp32c6"] + EXAMPLE_TO_BUILD: ["host_nimble_bleprph_host_only_vhci", + "host_nimble_bleprph_host_only_uart_hci"] + +regression_build_bluedroid_examples_h2: + tags: + - build + rules: + - !reference [.staging_branch_rules, rules] + extends: .build_template_example + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_TARGET: ["esp32h2"] IDF_VER: ["v5.4", "v5.4.1", "v5.4.2", "release-v5.4", "v5.3", "v5.3.1", "v5.3.2", "v5.3.3", "v5.3.4", "release-v5.3"] IDF_SLAVE_TARGET: ["esp32"] @@ -224,7 +261,7 @@ regression_build_bluedroid_examples: "host_bluedroid_host_only", "host_bt_controller_mac_addr"] -regression_build_wifi_examples: +regression_build_bluedroid_examples_p4: tags: - build rules: @@ -233,11 +270,78 @@ regression_build_wifi_examples: image: espressif/idf:${IDF_VER} parallel: matrix: - - IDF_TARGET: ["esp32p4", "esp32h2"] + - IDF_TARGET: ["esp32p4"] + IDF_VER: ["v5.4", "v5.4.1", "v5.4.2", "release-v5.4", + "v5.3.2", "v5.3.3", "v5.3.4", "release-v5.3"] + IDF_SLAVE_TARGET: ["esp32"] + EXAMPLE_TO_BUILD: ["host_bluedroid_ble_compatibility_test", + "host_bluedroid_bt_hid_mouse_device", + "host_bluedroid_host_only", + "host_bt_controller_mac_addr"] + +regression_build_wifi_examples_h2: + tags: + - build + rules: + - !reference [.staging_branch_rules, rules] + extends: .build_template_example + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_TARGET: ["esp32h2"] IDF_VER: ["v5.4", "v5.4.1", "v5.4.2", "release-v5.4", "v5.3", "v5.3.1", "v5.3.2", "v5.3.3", "v5.3.4", "release-v5.3"] - IDF_SLAVE_TARGET: ["esp32c6", "esp32c5"] + IDF_SLAVE_TARGET: ["esp32c6"] EXAMPLE_TO_BUILD: ["host_wifi_easy_connect_dpp_enrollee", "host_wifi_itwt", "host_transport_config", "host_network_split__power_save"] + +regression_build_wifi_examples_p4: + tags: + - build + rules: + - !reference [.staging_branch_rules, rules] + extends: .build_template_example + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_TARGET: ["esp32p4"] + IDF_VER: ["v5.4", "v5.4.1", "v5.4.2", "release-v5.4", + "v5.3.2", "v5.3.3", "v5.3.4", "release-v5.3"] + IDF_SLAVE_TARGET: ["esp32c6"] + EXAMPLE_TO_BUILD: ["host_wifi_easy_connect_dpp_enrollee", + "host_wifi_itwt", + "host_transport_config", + "host_network_split__power_save"] + +# build an example using the various transports +# this is to verify transport builds as expected on the host +# for h2, build only for ESP-IDF v5.3 and v5.3.1 +# for p4, build for other ESP-IDFs +regression_build_transport_examples_h2: + rules: + - !reference [.staging_branch_rules, rules] + extends: .build_template_example + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_TARGET: ["esp32h2"] + IDF_VER: ["v5.3", "v5.3.1"] + IDF_SLAVE_TARGET: ["esp32c6"] + EXAMPLE_TO_BUILD: ["host_network_split__power_save"] + EXAMPLE_CI_FILE: ["spi", "spi_hd", "uart"] + +regression_build_transport_examples_p4: + rules: + - !reference [.staging_branch_rules, rules] + extends: .build_template_example + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_TARGET: ["esp32p4"] + IDF_VER: ["v5.4", "v5.4.1", "v5.4.2", "release-v5.4", + "v5.3.2", "v5.3.3", "v5.3.4", "release-v5.3"] + IDF_SLAVE_TARGET: ["esp32c6"] + EXAMPLE_TO_BUILD: ["host_network_split__power_save"] + EXAMPLE_CI_FILE: ["sdio", "spi", "spi_hd", "uart"] diff --git a/.gitlab/ci/rules.yml b/.gitlab/ci/rules.yml index 620beb3b..ea0bd3df 100644 --- a/.gitlab/ci/rules.yml +++ b/.gitlab/ci/rules.yml @@ -15,3 +15,12 @@ - if: $CI_PIPELINE_SOURCE == "merge_request_event" when: never - if: $CI_COMMIT_BRANCH == "staging" && $CI_PIPELINE_SOURCE == "push" + +# no build rule to disable jobs temporarily +# while testing new build rules +.no_build_rules: + rules: + - if: $CI_PIPELINE_SOURCE == "merge_request_event" + when: never + - if: $CI_COMMIT_BRANCH == "staging" && $CI_PIPELINE_SOURCE == "push" + when: never diff --git a/.gitlab/ci/sanity_pipeline_jobs.yml b/.gitlab/ci/sanity_pipeline_jobs.yml index e2839f95..b3a6b658 100644 --- a/.gitlab/ci/sanity_pipeline_jobs.yml +++ b/.gitlab/ci/sanity_pipeline_jobs.yml @@ -138,6 +138,22 @@ sanity_build_wifi_examples: "host_transport_config", "host_network_split__power_save"] +# build an example using the various transports +# this is to verify transport builds as expected on the host +sanity_build_transport_examples: + rules: + - !reference [.default_rules, rules] + extends: .build_template_example + image: espressif/idf:${IDF_VER} + parallel: + matrix: + - IDF_TARGET: ["esp32p4"] + IDF_VER: ["latest", + "v5.5", "v5.5.1", "release-v5.5"] + IDF_SLAVE_TARGET: ["esp32c6"] + EXAMPLE_TO_BUILD: ["host_network_split__power_save"] + EXAMPLE_CI_FILE: ["sdio", "spi", "spi_hd", "uart"] + ### ### Promote staging to main after successful regression testing ### diff --git a/.gitlab/ci/templates.yml b/.gitlab/ci/templates.yml index cc33cf92..ef963849 100644 --- a/.gitlab/ci/templates.yml +++ b/.gitlab/ci/templates.yml @@ -19,8 +19,9 @@ when: always expire_in: 4 days script: + - export IDF_PYTHON_CHECK_CONSTRAINTS=yes + - ${IDF_PATH}/install.sh --enable-ci - source ${IDF_PATH}/export.sh - - pip install idf-component-manager idf-build-apps --upgrade - SDKCONFIG_PATTERN="sdkconfig.ci.${SLAVE_CI_FILE}" # Build with IDF pedantic flags and IDF build apps script - export PEDANTIC_FLAGS="-DIDF_CI_BUILD -Werror -Werror=deprecated-declarations -Werror=unused-variable -Werror=unused-but-set-variable -Werror=unused-function" @@ -28,8 +29,8 @@ - export EXTRA_CXXFLAGS="${PEDANTIC_FLAGS}" - cd slave # use --enable-preview-targets to build for all targets - - idf-build-apps find --enable-preview-targets --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} - - idf-build-apps build --enable-preview-targets --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} + - idf-build-apps find -p . --enable-preview-targets --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} + - idf-build-apps build -p . --enable-preview-targets --config ${SDKCONFIG_PATTERN} -vv --target ${IDF_TARGET} .build_template_example: stage: build_example @@ -39,8 +40,9 @@ when: always expire_in: 4 days script: + - export IDF_PYTHON_CHECK_CONSTRAINTS=yes + - ${IDF_PATH}/install.sh --enable-ci - source ${IDF_PATH}/export.sh - - pip install idf-component-manager idf-build-apps --upgrade # Need to rename the cloned "esp_hosted_mcu" directory since the injected component name is "esp_hosted" - cd .. && rm -rf esp_hosted && mv esp_hosted_mcu esp_hosted && cd esp_hosted # Create components directory and link esp_hosted component @@ -65,8 +67,15 @@ - export PEDANTIC_FLAGS="-DIDF_CI_BUILD -Werror -Werror=deprecated-declarations -Werror=unused-variable -Werror=unused-but-set-variable -Werror=unused-function" - export EXTRA_CFLAGS="${PEDANTIC_FLAGS} -Wstrict-prototypes" - export EXTRA_CXXFLAGS="${PEDANTIC_FLAGS}" - - idf-build-apps find -vv --target ${IDF_TARGET} - - idf-build-apps build -vv --target ${IDF_TARGET} + # Build with extra ci config file if specified + - | + if [ ! -z "${EXAMPLE_CI_FILE}" ]; then + idf-build-apps find -p . -vv --config sdkconfig.ci.${EXAMPLE_CI_FILE} --target ${IDF_TARGET} + idf-build-apps build -p . -vv --config sdkconfig.ci.${EXAMPLE_CI_FILE} --target ${IDF_TARGET} + else + idf-build-apps find -p . -vv --target ${IDF_TARGET} + idf-build-apps build -p . -vv --target ${IDF_TARGET} + fi .build_template: stage: build @@ -78,8 +87,9 @@ when: always expire_in: 4 days script: + - export IDF_PYTHON_CHECK_CONSTRAINTS=yes + - ${IDF_PATH}/install.sh --enable-ci - source ${IDF_PATH}/export.sh - - pip install idf-component-manager idf-build-apps --upgrade # Need to rename the cloned "esp_hosted_mcu" directory since the injected component name is "esp_hosted" - cd .. && rm -rf esp_hosted && mv esp_hosted_mcu esp_hosted && cd esp_hosted # Replaces esp_hosted component in example's deps with the one from the current repository @@ -125,8 +135,8 @@ # use --config-file to override default IDF config file # use --enable-preview-targets to build for all targets # use --override-sdkconfig-items to override (possibly incorrect) build target that may be in provided config file - - idf-build-apps find --enable-preview-targets --config-file "${OVERRIDE_PATH}/.idf_build_apps.toml" --config ${SDKCONFIG_PATTERN} --override-sdkconfig-items=CONFIG_IDF_TARGET=${IDF_TARGET} -vv --target ${IDF_TARGET} - - idf-build-apps build --enable-preview-targets --config-file "${OVERRIDE_PATH}/.idf_build_apps.toml" --config ${SDKCONFIG_PATTERN} --override-sdkconfig-items=CONFIG_IDF_TARGET=${IDF_TARGET} -vv --target ${IDF_TARGET} + - idf-build-apps find -p . --enable-preview-targets --config-file "${OVERRIDE_PATH}/.idf_build_apps.toml" --config ${SDKCONFIG_PATTERN} --override-sdkconfig-items=CONFIG_IDF_TARGET=${IDF_TARGET} -vv --target ${IDF_TARGET} + - idf-build-apps build -p . --enable-preview-targets --config-file "${OVERRIDE_PATH}/.idf_build_apps.toml" --config ${SDKCONFIG_PATTERN} --override-sdkconfig-items=CONFIG_IDF_TARGET=${IDF_TARGET} -vv --target ${IDF_TARGET} # - echo "----------- last sdkconfig.defaults,ci* used (${IDF_TARGET}-${IDF_SLAVE_TARGET}) --------------" # - cat sdkconfig.defaults # - cat sdkconfig.ci* diff --git a/CHANGELOG.md b/CHANGELOG.md index 190ec1de..94af66ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,9 +4,11 @@ ### Bug Fixes +- Fixes to use compatible version of `idf-build-apps` and constraints during CI pipeline builds - Renamed CI pipelines to "sanity" and "regression" - Prefix jobs with `sanity_` or `regression_` to make their names unique - Enabled building of ESP-Hosted examples in regression pipeline +- Various bug fixes found in the process of fixing the CI pipelines ## 2.5.10 diff --git a/Kconfig b/Kconfig index 0187ea51..b9a4437c 100644 --- a/Kconfig +++ b/Kconfig @@ -1265,6 +1265,7 @@ ESP32XX_SPI_HD_CLK_FREQ_RANGE_MAX := 40 default 21 if IDF_TARGET_ESP32C6 default 5 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 default 14 if IDF_TARGET_ESP32P4 + default 12 if IDF_TARGET_ESP32H2 range ESP_HOSTED_UART_TX_RANGE_MIN ESP_HOSTED_UART_TX_RANGE_MAX help GPIO used for UART TX @@ -1287,6 +1288,7 @@ ESP32XX_SPI_HD_CLK_FREQ_RANGE_MAX := 40 default 20 if IDF_TARGET_ESP32C6 default 4 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 default 15 if IDF_TARGET_ESP32P4 + default 22 if IDF_TARGET_ESP32H2 range ESP_HOSTED_UART_RX_RANGE_MIN ESP_HOSTED_UART_RX_RANGE_MAX help GPIO used for UART RX diff --git a/examples/host_bluedroid_bt_hid_mouse_device/main/main.c b/examples/host_bluedroid_bt_hid_mouse_device/main/main.c index b8338350..0e11588b 100644 --- a/examples/host_bluedroid_bt_hid_mouse_device/main/main.c +++ b/examples/host_bluedroid_bt_hid_mouse_device/main/main.c @@ -451,7 +451,7 @@ void app_main(void) ESP_LOGI(TAG, "setting cod major, peripheral"); esp_bt_cod_t cod = {0}; cod.major = ESP_BT_COD_MAJOR_DEV_PERIPHERAL; -#if ESP_IDF_VERSION > ESP_IDF_VERSION_VAL(5, 3, 0) +#if ESP_IDF_VERSION > ESP_IDF_VERSION_VAL(5, 3, 1) cod.minor = ESP_BT_COD_MINOR_PERIPHERAL_POINTING; #endif esp_bt_gap_set_cod(cod, ESP_BT_SET_COD_MAJOR_MINOR); diff --git a/examples/host_network_split__power_save/sdkconfig.ci.sdio b/examples/host_network_split__power_save/sdkconfig.ci.sdio new file mode 100644 index 00000000..b7c436fb --- /dev/null +++ b/examples/host_network_split__power_save/sdkconfig.ci.sdio @@ -0,0 +1 @@ +CONFIG_ESP_HOSTED_SDIO_HOST_INTERFACE=y diff --git a/examples/host_network_split__power_save/sdkconfig.ci.spi b/examples/host_network_split__power_save/sdkconfig.ci.spi new file mode 100644 index 00000000..bc3d128f --- /dev/null +++ b/examples/host_network_split__power_save/sdkconfig.ci.spi @@ -0,0 +1 @@ +CONFIG_ESP_HOSTED_SPI_HOST_INTERFACE=y diff --git a/examples/host_network_split__power_save/sdkconfig.ci.spi_hd b/examples/host_network_split__power_save/sdkconfig.ci.spi_hd new file mode 100644 index 00000000..b529f249 --- /dev/null +++ b/examples/host_network_split__power_save/sdkconfig.ci.spi_hd @@ -0,0 +1 @@ +CONFIG_ESP_HOSTED_SPI_HD_HOST_INTERFACE=y diff --git a/examples/host_network_split__power_save/sdkconfig.ci.uart b/examples/host_network_split__power_save/sdkconfig.ci.uart new file mode 100644 index 00000000..38975d30 --- /dev/null +++ b/examples/host_network_split__power_save/sdkconfig.ci.uart @@ -0,0 +1 @@ +CONFIG_ESP_HOSTED_UART_HOST_INTERFACE=y diff --git a/examples/host_transport_config/sdkconfig.defaults b/examples/host_transport_config/sdkconfig.defaults index 65cfce8e..9e45c40c 100644 --- a/examples/host_transport_config/sdkconfig.defaults +++ b/examples/host_transport_config/sdkconfig.defaults @@ -50,4 +50,4 @@ CONFIG_ESP_WIFI_ENABLED=y # Bluetooth Configuration (optional) CONFIG_BT_ENABLED=y -CONFIG_BT_BLUEDROID_ENABLED=y \ No newline at end of file +CONFIG_BT_BLUEDROID_ENABLED=y diff --git a/host/drivers/transport/spi_hd/spi_hd_drv.c b/host/drivers/transport/spi_hd/spi_hd_drv.c index e8f43983..bf01432a 100644 --- a/host/drivers/transport/spi_hd/spi_hd_drv.c +++ b/host/drivers/transport/spi_hd/spi_hd_drv.c @@ -102,7 +102,7 @@ static void spi_hd_read_task(void const* pvParameters); static void spi_hd_process_rx_task(void const* pvParameters); static int update_flow_ctrl(uint8_t *rxbuff); -static inline void spi_hd_mempool_create() +static inline void spi_hd_mempool_create(void) { MEM_DUMP("spi_hd_mempool_create"); buf_mp_g = mempool_create(MAX_SPI_HD_BUFFER_SIZE); @@ -111,7 +111,7 @@ static inline void spi_hd_mempool_create() #endif } -static inline void spi_hd_mempool_destroy() +static inline void spi_hd_mempool_destroy(void) { mempool_destroy(buf_mp_g); } From 3f6a8a13c9e668bd3c91f2a21f4dc034013355fc Mon Sep 17 00:00:00 2001 From: Soh Kam Yung Date: Thu, 17 Jul 2025 10:12:15 +0800 Subject: [PATCH 108/114] feature(esp32c61_support): Add support for C61 as co-processor - added SPI support for C61 - use `SOC_SPI_SUPPORT_SLAVE_HD_VER2` to check for SPI Slave HD support - updated GPIOs for SPI-FD and SPI-HD - marked SPI-HD pins D4-7 as unused to prevent GPIO warnings in spi driver during spi initialisation - updated docs - corrected CONFIG_xxx values to use to setup wi-fi settings - added optimised Wi-Fi settings for various co-processors - fixed build errors when raw throughput is enabled - fixed bug in SDIO on co-processor causing it to work in packet mode only --- .gitlab/ci/sanity_pipeline_jobs.yml | 13 +- CHANGELOG.md | 36 ++++ Kconfig | 13 +- README.md | 9 +- docs/esp32_p4_function_ev_board.md | 25 +-- docs/performance_optimization.md | 208 ++++++++++++++++++--- docs/sdio.md | 51 ++--- docs/spi_full_duplex.md | 50 ++--- docs/spi_half_duplex.md | 50 ++--- docs/uart.md | 50 ++--- host/esp_hosted_host_fw_ver.h | 2 +- host/utils/stats.c | 4 +- host/utils/stats.h | 2 + idf_component.yml | 2 +- slave/main/Kconfig.projbuild | 19 +- slave/main/esp_hosted_coprocessor_fw_ver.h | 2 +- slave/main/sdio_slave_api.c | 23 +-- slave/main/spi_hd_slave_api.c | 25 ++- slave/main/stats.c | 13 +- 19 files changed, 410 insertions(+), 187 deletions(-) diff --git a/.gitlab/ci/sanity_pipeline_jobs.yml b/.gitlab/ci/sanity_pipeline_jobs.yml index b3a6b658..c797c690 100644 --- a/.gitlab/ci/sanity_pipeline_jobs.yml +++ b/.gitlab/ci/sanity_pipeline_jobs.yml @@ -74,20 +74,9 @@ sanity_build_coprocessor_idf_master: image: espressif/idf:latest parallel: matrix: - - IDF_TARGET: ["esp32c6", "esp32c5"] + - IDF_TARGET: ["esp32c6", "esp32c5", "esp32c61"] SLAVE_CI_FILE: ["sdio", "spi", "spi_hd", "uart", "dpp"] -# for C61, build for sdio only for now -sanity_build_coprocessor_idf_master_c61: - rules: - - !reference [.default_rules, rules] - extends: .build_template_coprocessor - image: espressif/idf:latest - parallel: - matrix: - - IDF_TARGET: ["esp32c61"] - SLAVE_CI_FILE: ["sdio"] - ### ### build ESP-Hosted examples ### diff --git a/CHANGELOG.md b/CHANGELOG.md index 94af66ac..f46d5ace 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## 2.5.12 + +### Features + +- Add SPI (full and half duplex) and UART support for ESP32-C61 +- Updated documentation on applying optimised Wi-Fi settings to sdkconfigs + +### Bug Fixes + +- Fixed build issues when raw throughput testing is enabled +- Fixed bug in co-processor causing SDIO to operate only in packet mode + ## 2.5.11 ### Bug Fixes @@ -144,3 +156,27 @@ - `esp_wifi_set_okc_support` - `esp_eap_client_set_domain_name` - `esp_eap_client_set_eap_methods` + +## 2.3.3 + +### Features + +- Added SDIO support for ESP32-C61 + +## 2.3.2 + +### Features + +- Add host example to showcase transport config before `esp_hosted_init()` + +## 2.3.1 + +### Bug Fixes + +- Fixed a build break caused by refactoring + +## 2.3.0 + +### Features + +- Refactored common and port specific code diff --git a/Kconfig b/Kconfig index b9a4437c..c4efc961 100644 --- a/Kconfig +++ b/Kconfig @@ -101,6 +101,7 @@ menu "ESP-Hosted config" default "esp32c3" if SLAVE_IDF_TARGET_ESP32C3 default "esp32c6" if SLAVE_IDF_TARGET_ESP32C6 default "esp32c5" if SLAVE_IDF_TARGET_ESP32C5 + default "esp32c61" if SLAVE_IDF_TARGET_ESP32C61 default "invalid" menu "SPI Configuration" @@ -457,9 +458,9 @@ ESP32XX_SPI_CLK_FREQ_RANGE_MAX := 40 "Optimize SPI CLK by increasing till host practically can support" config ESP_HOSTED_SPI_FREQ_ESP32XX - depends on SLAVE_IDF_TARGET_ESP32C2 || SLAVE_IDF_TARGET_ESP32C3 || SLAVE_IDF_TARGET_ESP32S2 || SLAVE_IDF_TARGET_ESP32S3 || SLAVE_IDF_TARGET_ESP32C5 + depends on SLAVE_IDF_TARGET_ESP32C2 || SLAVE_IDF_TARGET_ESP32C3 || SLAVE_IDF_TARGET_ESP32S2 || SLAVE_IDF_TARGET_ESP32S3 || SLAVE_IDF_TARGET_ESP32C5 || SLAVE_IDF_TARGET_ESP32C61 int "SPI Clock Freq" - default 40 if SLAVE_IDF_TARGET_ESP32C2 || SLAVE_IDF_TARGET_ESP32C3 || SLAVE_IDF_TARGET_ESP32S2 || SLAVE_IDF_TARGET_ESP32S3 || SLAVE_IDF_TARGET_ESP32C5 + default 40 if SLAVE_IDF_TARGET_ESP32C2 || SLAVE_IDF_TARGET_ESP32C3 || SLAVE_IDF_TARGET_ESP32S2 || SLAVE_IDF_TARGET_ESP32S3 || SLAVE_IDF_TARGET_ESP32C5 || SLAVE_IDF_TARGET_ESP32C61 range $(ESP32XX_SPI_CLK_FREQ_RANGE_MIN) $(ESP32XX_SPI_CLK_FREQ_RANGE_MAX) help "Optimize SPI CLK by increasing till host practically can support" @@ -468,7 +469,7 @@ ESP32XX_SPI_CLK_FREQ_RANGE_MAX := 40 int default ESP_HOSTED_SPI_FREQ_ESP32 if SLAVE_IDF_TARGET_ESP32 default ESP_HOSTED_SPI_FREQ_ESP32C6 if SLAVE_IDF_TARGET_ESP32C6 - default ESP_HOSTED_SPI_FREQ_ESP32XX if SLAVE_IDF_TARGET_ESP32C2 || SLAVE_IDF_TARGET_ESP32C3 || SLAVE_IDF_TARGET_ESP32S2 || SLAVE_IDF_TARGET_ESP32S3 || SLAVE_IDF_TARGET_ESP32C5 + default ESP_HOSTED_SPI_FREQ_ESP32XX if SLAVE_IDF_TARGET_ESP32C2 || SLAVE_IDF_TARGET_ESP32C3 || SLAVE_IDF_TARGET_ESP32S2 || SLAVE_IDF_TARGET_ESP32S3 || SLAVE_IDF_TARGET_ESP32C5 || SLAVE_IDF_TARGET_ESP32C61 help "Optimize SPI CLK by increasing till host practically can support" @@ -1186,9 +1187,9 @@ ESP32XX_SPI_HD_CLK_FREQ_RANGE_MAX := 40 "Optimize CLK by increasing till host practically can support" config ESP_HOSTED_SPI_HD_FREQ_ESP32XX - depends on SLAVE_IDF_TARGET_ESP32C2 || SLAVE_IDF_TARGET_ESP32C3 || SLAVE_IDF_TARGET_ESP32S2 || SLAVE_IDF_TARGET_ESP32S3 || SLAVE_IDF_TARGET_ESP32C5 + depends on SLAVE_IDF_TARGET_ESP32C2 || SLAVE_IDF_TARGET_ESP32C3 || SLAVE_IDF_TARGET_ESP32S2 || SLAVE_IDF_TARGET_ESP32S3 || SLAVE_IDF_TARGET_ESP32C5 || SLAVE_IDF_TARGET_ESP32C61 int "SPI HD Clock Freq (MHz)" - default 40 if SLAVE_IDF_TARGET_ESP32C2 || SLAVE_IDF_TARGET_ESP32C3 || SLAVE_IDF_TARGET_ESP32S2 || SLAVE_IDF_TARGET_ESP32S3 || SLAVE_IDF_TARGET_ESP32C5 + default 40 if SLAVE_IDF_TARGET_ESP32C2 || SLAVE_IDF_TARGET_ESP32C3 || SLAVE_IDF_TARGET_ESP32S2 || SLAVE_IDF_TARGET_ESP32S3 || SLAVE_IDF_TARGET_ESP32C5 || SLAVE_IDF_TARGET_ESP32C61 range $(ESP32XX_SPI_HD_CLK_FREQ_RANGE_MIN) $(ESP32XX_SPI_HD_CLK_FREQ_RANGE_MAX) help "Optimize CLK by increasing till host practically can support" @@ -1196,7 +1197,7 @@ ESP32XX_SPI_HD_CLK_FREQ_RANGE_MAX := 40 config ESP_HOSTED_SPI_HD_CLK_FREQ int default ESP_HOSTED_SPI_HD_FREQ_ESP32C6 if SLAVE_IDF_TARGET_ESP32C6 - default ESP_HOSTED_SPI_HD_FREQ_ESP32XX if SLAVE_IDF_TARGET_ESP32C2 || SLAVE_IDF_TARGET_ESP32C3 || SLAVE_IDF_TARGET_ESP32S2 || SLAVE_IDF_TARGET_ESP32S3 || SLAVE_IDF_TARGET_ESP32C5 + default ESP_HOSTED_SPI_HD_FREQ_ESP32XX if SLAVE_IDF_TARGET_ESP32C2 || SLAVE_IDF_TARGET_ESP32C3 || SLAVE_IDF_TARGET_ESP32S2 || SLAVE_IDF_TARGET_ESP32S3 || SLAVE_IDF_TARGET_ESP32C5 || SLAVE_IDF_TARGET_ESP32C61 help "Optimize CLK by increasing till host practically can support" diff --git a/README.md b/README.md index 6b46a689..b8017e08 100644 --- a/README.md +++ b/README.md @@ -172,18 +172,15 @@ Legends: | Standard SPI | FD | 6 | jumper or PCB | Any_Slave | udp: 24 tcp: 22 | udp: 25 tcp: 22| Simplest solution for quick test | | Dual SPI | HD | 5 | jumper or PCB | Any_Slave [1] | udp: 32 tcp: 26 (O) | udp: 33 tcp: 25 (O) | Better throughput, but half duplex | | Quad SPI | HD | 7 | PCB only | Any_Slave [1] | udp: 41 tcp: 29 (O) | udp: 42 tcp: 28 (O) | Due to signal integrity, PCB is mandatory | -| SDIO 1-Bit | HD | 4 | jumper or PCB | ESP32, ESP32-C6, ESP32-C5 [3] | TBD | TBD | Stepping stone for PCB based SDIO 4-bit | -| SDIO 4-Bit | HD | 6 | PCB only | ESP32, ESP32-C6, ESP32-C5 [3] | udp: 79.5 tcp: 53.4 (S) | udp: 68.1 tcp: 44 (S) | Highest performance | +| SDIO 1-Bit | HD | 4 | jumper or PCB | ESP32, ESP32-C6, ESP32-C5, ESP32-C61 | TBD | TBD | Stepping stone for PCB based SDIO 4-bit | +| SDIO 4-Bit | HD | 6 | PCB only | ESP32, ESP32-C6, ESP32-C5, ESP32-C61 | udp: 79.5 tcp: 53.4 (S) | udp: 68.1 tcp: 44 (S) | Highest performance | | Only BT over UART | FD | 2 or 4 | jumper or PCB | Any_Slave | NA | NA | Dedicated Bluetooth over UART pins | | UART | FD | 2 | jumper or PCB | Any_Slave | udp: 0.68 tcp: 0.67 (O) | udp: 0.68 tcp: 0.60 (O) | UART dedicated for BT & Wi-Fi [2] | | Dedicated platforms | FD | Extra 2 or 4 | jumper or PCB | Any_Slave | NA | NA | UART dedicated for BT & Wi-Fi on any other transport | > [!NOTE] > - [1] Dual/Quad SPI is not supported on ESP32 -> -> - [2] UART is only suitable for low throughput environments -> -> - [3] Currently in BETA support for ESP32-C5 (`--preview` in ESP-IDF master branch) +> - [2] UART is suitable only for low throughput environments. Throughput was obtained with a baud rate of 921600. On the ESP32-P4 + C6 development board, a baud rate of 4 Mbits/s can be achieved, giving TCP/UDP throughput of around 3.3 MBits/s. With jumper cables, 'Standard SPI' and 'Dual SPI' solutions are easiest to evaluate, without much of hardware dependencies. SDIO 1-Bit can be tested with jumper cables, but it needs some additional hardware config, such as installation of external pull-up registers. diff --git a/docs/esp32_p4_function_ev_board.md b/docs/esp32_p4_function_ev_board.md index da8bc362..2c543570 100644 --- a/docs/esp32_p4_function_ev_board.md +++ b/docs/esp32_p4_function_ev_board.md @@ -94,18 +94,17 @@ But you can also evaluate without using it. Edit the `sdkconfig.defaults.esp32p4` file such that, it would have following content: ``` -#### Comment below two lines if present: -# CONFIG_ESP_HOST_WIFI_ENABLED=y -# CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE=y - -#### Add Wi-Fi Remote config for better performance: -CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=16 -CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=64 -CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=64 -CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y -CONFIG_ESP_WIFI_TX_BA_WIN=32 -CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y -CONFIG_ESP_WIFI_RX_BA_WIN=32 +### sdkconfig for ESP32-P4 + C6 Dev board +CONFIG_SLAVE_IDF_TARGET_ESP32C6=y +CONFIG_ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD=y + +CONFIG_WIFI_RMT_STATIC_RX_BUFFER_NUM=16 +CONFIG_WIFI_RMT_DYNAMIC_RX_BUFFER_NUM=64 +CONFIG_WIFI_RMT_DYNAMIC_TX_BUFFER_NUM=64 +CONFIG_WIFI_RMT_AMPDU_TX_ENABLED=y +CONFIG_WIFI_RMT_TX_BA_WIN=32 +CONFIG_WIFI_RMT_AMPDU_RX_ENABLED=y +CONFIG_WIFI_RMT_RX_BA_WIN=32 CONFIG_LWIP_TCP_SND_BUF_DEFAULT=65534 CONFIG_LWIP_TCP_WND_DEFAULT=65534 @@ -116,6 +115,8 @@ CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64 CONFIG_LWIP_TCP_SACK_OUT=y ``` +Optimised parameters for using other co-processors with the ESP32-P4 can be found in the [Performance Optimization Guide](performance_optimization.md). + ### 3.3. Building Firmware Set the ESP32-P4 as the target, build, flash the firmware and diff --git a/docs/performance_optimization.md b/docs/performance_optimization.md index b7cf70c6..a3811a73 100644 --- a/docs/performance_optimization.md +++ b/docs/performance_optimization.md @@ -1,20 +1,66 @@ # ESP-Hosted Performance Optimization Guide -Quick reference for optimizing ESP-Hosted performance across different transport interfaces. +Quick reference for optimizing ESP-Hosted performance across co-processors and different transport interfaces. -## Quick Start - High Performance Config +
+Table of Contents -For immediate performance gains, add these to your host's `sdkconfig.defaults.esp32XX` file: +1. [Quick Start - High Performance Config](#1-quick-start---high-performance-config) + + 1.1 [ESP32-C6 as Co-Procesor](#11-esp32-c6-as-co-procesor) + + 1.2 [ESP32-C5 as Co-Processor](#12-esp32-c5-as-co-processor) + + 1.3 [ESP32-C61 as Co-Processor](#13-esp32-c61-as-co-processor) + + 1.4 [ESP32-C2 as Co-Processor](#14-esp32-c2-as-co-processor) + +2. [Transport Optimization](#2-transport-optimization) + + 2.1 [SDIO (Highest Performance)](#21-sdio-highest-performance) + + 2.2 [SPI Full-Duplex](#22-spi-full-duplex) + + 2.3 [2.3 SPI Half-Duplex](#23-spi-half-duplex) + + 2.4 [UART (Lowest Performance)](#24-uart-lowest-performance) + +3. [Memory Optimization](#3-memory-optimization) + +4. [Hardware Guidelines](#4-hardware-guidelines) + + 4.1 [Critical Requirements](#41-critical-requirements) + + 4.2 [PCB Design Checklist](#42-pcb-design-checklist) + + 4.3 [Development Workflow](#43-development-workflow) + +
+ +## 1 Quick Start - High Performance Config + +For immediate performance gains, add these to your host's `sdkconfig.defaults.esp32XX` file based on the co-processor you are using. + +> [!NOTE] +> Adjust the values based on your MCU host's and co-processor memory capacity. These values may change when more testing shows better performance figures. + +Test conditions for throughput numbers using the performance settings: + +- raw: data transferred from sender to receiver over transport +- iPerf: `` <--`open air`--> `` <--`Lan Cable`--> `` + +### 1.1 ESP32-C6 as Co-Procesor ``` +### sdkconfig for ESP32-P4 + C6 as co-processor # Wi-Fi Performance -CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=16 -CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=64 -CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=64 -CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y -CONFIG_ESP_WIFI_TX_BA_WIN=32 -CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y -CONFIG_ESP_WIFI_RX_BA_WIN=32 +CONFIG_WIFI_RMT_STATIC_RX_BUFFER_NUM=16 +CONFIG_WIFI_RMT_DYNAMIC_RX_BUFFER_NUM=64 +CONFIG_WIFI_RMT_DYNAMIC_TX_BUFFER_NUM=64 +CONFIG_WIFI_RMT_AMPDU_TX_ENABLED=y +CONFIG_WIFI_RMT_TX_BA_WIN=32 +CONFIG_WIFI_RMT_AMPDU_RX_ENABLED=y +CONFIG_WIFI_RMT_RX_BA_WIN=32 # TCP/IP Performance CONFIG_LWIP_TCP_SND_BUF_DEFAULT=65534 @@ -25,11 +71,130 @@ CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64 CONFIG_LWIP_TCP_SACK_OUT=y ``` -> **Note**: Adjust values based on your MCU host's memory capacity and as per change as per build system +**Throughput using the settings.** + +Using SDIO Transport, 4-bits, running at 40MHz, connected to a 2.4GHz network over the air + +| Type | Direction | MBits/s | +|------------|---------------|--------:| +| Raw | P4 to C6 | 72 | +| Raw | C6 to P4 | 80 | +| iPerf, TCP | P4 to Test PC | 32 | +| iPerf, UDP | P4 to Test PC | 50 | +| iPerf, TCP | Test PC to P4 | 30 | +| iPerf, UDP | Test PC to P4 | 49 | + +### 1.2 ESP32-C5 as Co-Processor + +``` +### sdkconfig for ESP32-P4 + C5 as co-processor +# Wi-Fi Performance +CONFIG_WIFI_RMT_STATIC_RX_BUFFER_NUM=10 +CONFIG_WIFI_RMT_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_WIFI_RMT_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_WIFI_RMT_AMPDU_TX_ENABLED=y +CONFIG_WIFI_RMT_TX_BA_WIN=32 +CONFIG_WIFI_RMT_AMPDU_RX_ENABLED=y +CONFIG_WIFI_RMT_RX_BA_WIN=16 + +# TCP/IP Performance +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=11520 +CONFIG_LWIP_TCP_WND_DEFAULT=32768 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=48 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=48 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=48 + +CONFIG_LWIP_TCP_SACK_OUT=y +``` + +**Throughput using the settings.** + +Using SDIO Transport, 4-bits, running at 40MHz, connected to a 5GHz network over the air + +| Type | Direction | MBits/s | +|------------|---------------|--------:| +| Raw | P4 to C5 | 72 | +| Raw | C5 to P4 | 81 | +| iPerf, TCP | P4 to Test PC | 23 | +| iPerf, UDP | P4 to Test PC | 67 | +| iPerf, TCP | Test PC to P4 | 32 | +| iPerf, UDP | Test PC to P4 | 68 | + +### 1.3 ESP32-C61 as Co-Processor + +``` +### sdkconfig for ESP32-P4 + C61 as co-processor +# Wi-Fi Performance +CONFIG_WIFI_RMT_STATIC_RX_BUFFER_NUM=10 +CONFIG_WIFI_RMT_DYNAMIC_RX_BUFFER_NUM=16 +CONFIG_WIFI_RMT_DYNAMIC_TX_BUFFER_NUM=16 +CONFIG_WIFI_RMT_AMPDU_TX_ENABLED=y +CONFIG_WIFI_RMT_TX_BA_WIN=16 +CONFIG_WIFI_RMT_AMPDU_RX_ENABLED=y +CONFIG_WIFI_RMT_RX_BA_WIN=16 + +# TCP/IP Performance +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=20480 +CONFIG_LWIP_TCP_WND_DEFAULT=20480 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=48 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=64 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=48 + +CONFIG_LWIP_TCP_SACK_OUT=y +``` + +**Throughput using the settings.** -## Transport Optimization +Using SPI-FD Transport, running at 40MHz, connected to a 2.4GHz network over the air -### SDIO (Highest Performance) +| Type | Direction | MBits/s | +|------------|---------------|--------:| +| Raw | P4 to C61 | 25 | +| Raw | C61 to P4 | 26 | +| iPerf, TCP | P4 to Test PC | 12 | +| iPerf, UDP | P4 to Test PC | 18 | +| iPerf, TCP | Test PC to P4 | 15 | +| iPerf, UDP | Test PC to P4 | 23 | + +### 1.4 ESP32-C2 as Co-Processor + +``` +### sdkconfig for ESP32-P4 + C2 as co-processor +# Wi-Fi Performance +CONFIG_WIFI_RMT_STATIC_RX_BUFFER_NUM=10 +CONFIG_WIFI_RMT_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_WIFI_RMT_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_WIFI_RMT_AMPDU_TX_ENABLED=y +CONFIG_WIFI_RMT_TX_BA_WIN=6 +CONFIG_WIFI_RMT_AMPDU_RX_ENABLED=y +CONFIG_WIFI_RMT_RX_BA_WIN=6 + +# TCP/IP Performance +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=16384 +CONFIG_LWIP_TCP_WND_DEFAULT=32768 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=20 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=20 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=20 + +CONFIG_LWIP_TCP_SACK_OUT=y +``` + +**Throughput using the settings.** + +Using SPI-FD Transport, running at 40MHz, connected to a 2.4GHz network over the air + +| Type | Direction | MBits/s | +|------------|---------------|--------:| +| Raw | P4 to C2 | 25 | +| Raw | C2 to P4 | 26 | +| iPerf, TCP | P4 to Test PC | 12 | +| iPerf, UDP | P4 to Test PC | 18 | +| iPerf, TCP | Test PC to P4 | 13 | +| iPerf, UDP | Test PC to P4 | 15 | + +## 2 Transport Optimization + +### 2.1 SDIO (Highest Performance) - **Clock Speed**: Start at 20 MHz, optimize up to 50 MHz - **Bus Width**: Use 4-bit mode - **Hardware**: Use PCB with controlled impedance, external pull-ups (51kΩ) @@ -43,7 +208,7 @@ CONFIG_ESP_HOSTED_SDIO_BUS_WIDTH=4 > [!NOTE] > See [Performance and Memory Usage](sdio.md#9-performance-and-memory-usage) on the trade-off between SDIO Performance and Memory Use -### SPI Full-Duplex +### 2.2 SPI Full-Duplex - **Clock Speed**: ESP32: ≤10 MHz, Others: ≤40 MHz - **Hardware**: Use IO_MUX pins, short traces (≤10cm for jumpers) - **Checksum**: Mandatory (SPI hardware lacks error detection) @@ -52,15 +217,15 @@ CONFIG_ESP_HOSTED_SDIO_BUS_WIDTH=4 CONFIG_ESP_HOSTED_SPI_CLK_FREQ=40 ``` -### SPI Half-Duplex +### 2.3 SPI Half-Duplex - **Data Lines**: Use 4-line (Quad SPI) mode - **Similar optimizations as SPI Full-Duplex** -### UART (Lowest Performance) +### 2.4 UART (Lowest Performance) - **Baud Rate**: Use 921600 (highest stable rate) - **Best for**: Low-throughput applications, debugging -## Memory Optimization +## 3 Memory Optimization - Reduce memory footprint for resource-constrained applications: @@ -77,26 +242,27 @@ CONFIG_ESP_HOSTED_SPI_CLK_FREQ=40 - For example, disable bluetooth if not needed - Use external RAM, for higher memory (PSRAM is supported) - Optimise internal RAM using [ESP-IDF iram optimization tricks](https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/performance/ram-usage.html) -## Hardware Guidelines +## 4 Hardware Guidelines -### Critical Requirements +### 4.1 Critical Requirements 1. **Signal Integrity**: Use PCB designs for production, jumpers only for prototyping 2. **Power Supply**: Stable 3.3V, proper decoupling capacitors 3. **Trace Length**: Match lengths, especially clock vs data lines 4. **Pull-ups**: Required for SDIO (51kΩ) on CMD, D0-D3 lines -### PCB Design Checklist +### 4.2 PCB Design Checklist - [ ] Equal trace lengths for communication signals - [ ] Ground plane for signal stability - [ ] Controlled impedance traces (50Ω typical) - [ ] Series termination resistors for high-speed signals - [ ] Extra GPIOs reserved for future features (deep sleep, etc.) -## Development Workflow +### 4.3 Development Workflow 1. **Proof of Concept**: Start with jumper wires, low clock speeds 2. **Incremental Optimization**: Increase transport clock step by step 3. **Hardware Validation**: Move to PCB for final validation 4. **Performance Tuning**: Optimize buffers and configurations 5. **Disable features**: Any unsued components from ESP-IDF or + ESP-Hosted-MCU features could be disabled for more memory availability. diff --git a/docs/sdio.md b/docs/sdio.md index 3e065324..dba16010 100644 --- a/docs/sdio.md +++ b/docs/sdio.md @@ -8,6 +8,7 @@ If you wish to skip the theory, you can refer the [Quick Start Guide](#1-quick-s
Table of Contents + 1. [Quick Start Guide](#1-quick-start-guide) 2. [Introduction](#2-introduction) @@ -385,30 +386,36 @@ Now that ESP-IDF is set up, follow these steps to prepare the host: ### 7.3 Menuconfig, Build and Flash Host ##### 1. High performance configurations - This is optional step, suggested for high performance applications. +This is optional step, suggested for high performance applications. - If using ESP32-P4 as host: - - Remove the default `sdkconfig.defaults.esp32p4` file. - - Create a new `sdkconfig.defaults.esp32p4` file with the following content: - ``` - CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=16 - CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=64 - CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=64 - CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y - CONFIG_ESP_WIFI_TX_BA_WIN=32 - CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y - CONFIG_ESP_WIFI_RX_BA_WIN=32 - - CONFIG_LWIP_TCP_SND_BUF_DEFAULT=65534 - CONFIG_LWIP_TCP_WND_DEFAULT=65534 - CONFIG_LWIP_TCP_RECVMBOX_SIZE=64 - CONFIG_LWIP_UDP_RECVMBOX_SIZE=64 - CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64 - - CONFIG_LWIP_TCP_SACK_OUT=y - ``` +If using ESP32-P4 as host and the ESP32-C6 as the co-processor: + +- Remove all `CONFIG_ESP_WIFI_` settings. They do not apply to ESP-Hosted. +- Add the following settings to your `sdkconfig.defaults.esp32p4` file: + ``` + ### sdkconfig for ESP32-P4 + C6 Dev board + CONFIG_WIFI_RMT_STATIC_RX_BUFFER_NUM=16 + CONFIG_WIFI_RMT_DYNAMIC_RX_BUFFER_NUM=64 + CONFIG_WIFI_RMT_DYNAMIC_TX_BUFFER_NUM=64 + CONFIG_WIFI_RMT_AMPDU_TX_ENABLED=y + CONFIG_WIFI_RMT_TX_BA_WIN=32 + CONFIG_WIFI_RMT_AMPDU_RX_ENABLED=y + CONFIG_WIFI_RMT_RX_BA_WIN=32 + + CONFIG_LWIP_TCP_SND_BUF_DEFAULT=65534 + CONFIG_LWIP_TCP_WND_DEFAULT=65534 + CONFIG_LWIP_TCP_RECVMBOX_SIZE=64 + CONFIG_LWIP_UDP_RECVMBOX_SIZE=64 + CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64 + + CONFIG_LWIP_TCP_SACK_OUT=y + ``` + +For other ESP32 hosts, you can merge above configs into the corresponding `sdkconfig.defaults.esp32XX` file. + +To adjust other Wi-Fi parameters, run `idf.py menuconfig` and go to `Component config` ---> `Wi-Fi Remote` ---> `Wi-Fi configuration`. - For other hosts also, you can merge above configs in corresponding `sdkconfig.defaults.esp32XX` file. +Optimised parameters for other co-processors can be found in the [Performance Optimization Guide](performance_optimization.md). ###### 2. Set environment for your host ESP chip: diff --git a/docs/spi_full_duplex.md b/docs/spi_full_duplex.md index 1c6def6f..f7e0965e 100644 --- a/docs/spi_full_duplex.md +++ b/docs/spi_full_duplex.md @@ -412,30 +412,36 @@ If you happen to have both, host and co-processor as same ESP chipset type (for ### 8.3 Menuconfig, Build and Flash Host ##### 1. High performance configurations - This is optional step, suggested for high performance applications. +This is optional step, suggested for high performance applications. - If using ESP32-P4 as host: - - Remove the default `sdkconfig.defaults.esp32p4` file. - - Create a new `sdkconfig.defaults.esp32p4` file with the following content: - ``` - CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=16 - CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=64 - CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=64 - CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y - CONFIG_ESP_WIFI_TX_BA_WIN=32 - CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y - CONFIG_ESP_WIFI_RX_BA_WIN=32 - - CONFIG_LWIP_TCP_SND_BUF_DEFAULT=65534 - CONFIG_LWIP_TCP_WND_DEFAULT=65534 - CONFIG_LWIP_TCP_RECVMBOX_SIZE=64 - CONFIG_LWIP_UDP_RECVMBOX_SIZE=64 - CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64 - - CONFIG_LWIP_TCP_SACK_OUT=y - ``` +If using ESP32-P4 as host and the ESP32-C6 as the co-processor: + +- Remove all `CONFIG_ESP_WIFI_` settings. They do not apply to ESP-Hosted. +- Add the following settings to your `sdkconfig.defaults.esp32p4` file: + ``` + ### sdkconfig for ESP32-P4 + C6 Dev board + CONFIG_WIFI_RMT_STATIC_RX_BUFFER_NUM=16 + CONFIG_WIFI_RMT_DYNAMIC_RX_BUFFER_NUM=64 + CONFIG_WIFI_RMT_DYNAMIC_TX_BUFFER_NUM=64 + CONFIG_WIFI_RMT_AMPDU_TX_ENABLED=y + CONFIG_WIFI_RMT_TX_BA_WIN=32 + CONFIG_WIFI_RMT_AMPDU_RX_ENABLED=y + CONFIG_WIFI_RMT_RX_BA_WIN=32 + + CONFIG_LWIP_TCP_SND_BUF_DEFAULT=65534 + CONFIG_LWIP_TCP_WND_DEFAULT=65534 + CONFIG_LWIP_TCP_RECVMBOX_SIZE=64 + CONFIG_LWIP_UDP_RECVMBOX_SIZE=64 + CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64 + + CONFIG_LWIP_TCP_SACK_OUT=y + ``` + +For other ESP32 hosts, you can merge above configs into the corresponding `sdkconfig.defaults.esp32XX` file. + +To adjust other Wi-Fi parameters, run `idf.py menuconfig` and go to `Component config` ---> `Wi-Fi Remote` ---> `Wi-Fi configuration`. - For other hosts also, you can merge above configs in corresponding `sdkconfig.defaults.esp32XX` file. +Optimised parameters for other co-processors can be found in the [Performance Optimization Guide](performance_optimization.md). ###### 2. Set environment for your host ESP chip: diff --git a/docs/spi_half_duplex.md b/docs/spi_half_duplex.md index 14d538c7..e7ac8382 100644 --- a/docs/spi_half_duplex.md +++ b/docs/spi_half_duplex.md @@ -655,30 +655,36 @@ Now that ESP-IDF is set up, follow these steps to prepare the host: ### 10.3 Menuconfig, Build and Flash Host ###### 1. High performance configurations - This is optional step, suggested for high performance applications. +This is optional step, suggested for high performance applications. - If using ESP32-P4 as host: - - Remove the default `sdkconfig.defaults.esp32p4` file. - - Create a new `sdkconfig.defaults.esp32p4` file with the following content: - ``` - CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=16 - CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=64 - CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=64 - CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y - CONFIG_ESP_WIFI_TX_BA_WIN=32 - CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y - CONFIG_ESP_WIFI_RX_BA_WIN=32 - - CONFIG_LWIP_TCP_SND_BUF_DEFAULT=65534 - CONFIG_LWIP_TCP_WND_DEFAULT=65534 - CONFIG_LWIP_TCP_RECVMBOX_SIZE=64 - CONFIG_LWIP_UDP_RECVMBOX_SIZE=64 - CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64 - - CONFIG_LWIP_TCP_SACK_OUT=y - ``` +If using ESP32-P4 as host and the ESP32-C6 as the co-processor: + +- Remove all `CONFIG_ESP_WIFI_` settings. They do not apply to ESP-Hosted. +- Add the following settings to your `sdkconfig.defaults.esp32p4` file: + ``` + ### sdkconfig for ESP32-P4 + C6 Dev board + CONFIG_WIFI_RMT_STATIC_RX_BUFFER_NUM=16 + CONFIG_WIFI_RMT_DYNAMIC_RX_BUFFER_NUM=64 + CONFIG_WIFI_RMT_DYNAMIC_TX_BUFFER_NUM=64 + CONFIG_WIFI_RMT_AMPDU_TX_ENABLED=y + CONFIG_WIFI_RMT_TX_BA_WIN=32 + CONFIG_WIFI_RMT_AMPDU_RX_ENABLED=y + CONFIG_WIFI_RMT_RX_BA_WIN=32 + + CONFIG_LWIP_TCP_SND_BUF_DEFAULT=65534 + CONFIG_LWIP_TCP_WND_DEFAULT=65534 + CONFIG_LWIP_TCP_RECVMBOX_SIZE=64 + CONFIG_LWIP_UDP_RECVMBOX_SIZE=64 + CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64 + + CONFIG_LWIP_TCP_SACK_OUT=y + ``` + +For other ESP32 hosts, you can merge above configs into the corresponding `sdkconfig.defaults.esp32XX` file. + +To adjust other Wi-Fi parameters, run `idf.py menuconfig` and go to `Component config` ---> `Wi-Fi Remote` ---> `Wi-Fi configuration`. - For other hosts also, you can merge above configs in corresponding `sdkconfig.defaults.esp32XX` file. +Optimised parameters for other co-processors can be found in the [Performance Optimization Guide](performance_optimization.md). ###### 2. Set environment for your host ESP chip: diff --git a/docs/uart.md b/docs/uart.md index 915483c6..8c7e0444 100644 --- a/docs/uart.md +++ b/docs/uart.md @@ -287,30 +287,36 @@ Now that ESP-IDF is set up, follow these steps to prepare the host: ### 7.3 Menuconfig, Build and Flash Host ###### 1. High performance configurations - This is optional step, suggested for high performance applications. +This is optional step, suggested for high performance applications. - If using ESP32-P4 as host: - - Remove the default `sdkconfig.defaults.esp32p4` file. - - Create a new `sdkconfig.defaults.esp32p4` file with the following content: - ``` - CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=16 - CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=64 - CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=64 - CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y - CONFIG_ESP_WIFI_TX_BA_WIN=32 - CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y - CONFIG_ESP_WIFI_RX_BA_WIN=32 - - CONFIG_LWIP_TCP_SND_BUF_DEFAULT=65534 - CONFIG_LWIP_TCP_WND_DEFAULT=65534 - CONFIG_LWIP_TCP_RECVMBOX_SIZE=64 - CONFIG_LWIP_UDP_RECVMBOX_SIZE=64 - CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64 - - CONFIG_LWIP_TCP_SACK_OUT=y - ``` +If using ESP32-P4 as host and the ESP32-C6 as the co-processor: + +- Remove all `CONFIG_ESP_WIFI_` settings. They do not apply to ESP-Hosted. +- Add the following settings to your `sdkconfig.defaults.esp32p4` file: + ``` + ### sdkconfig for ESP32-P4 + C6 Dev board + CONFIG_WIFI_RMT_STATIC_RX_BUFFER_NUM=16 + CONFIG_WIFI_RMT_DYNAMIC_RX_BUFFER_NUM=64 + CONFIG_WIFI_RMT_DYNAMIC_TX_BUFFER_NUM=64 + CONFIG_WIFI_RMT_AMPDU_TX_ENABLED=y + CONFIG_WIFI_RMT_TX_BA_WIN=32 + CONFIG_WIFI_RMT_AMPDU_RX_ENABLED=y + CONFIG_WIFI_RMT_RX_BA_WIN=32 + + CONFIG_LWIP_TCP_SND_BUF_DEFAULT=65534 + CONFIG_LWIP_TCP_WND_DEFAULT=65534 + CONFIG_LWIP_TCP_RECVMBOX_SIZE=64 + CONFIG_LWIP_UDP_RECVMBOX_SIZE=64 + CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64 + + CONFIG_LWIP_TCP_SACK_OUT=y + ``` + +For other ESP32 hosts, you can merge above configs into the corresponding `sdkconfig.defaults.esp32XX` file. + +To adjust other Wi-Fi parameters, run `idf.py menuconfig` and go to `Component config` ---> `Wi-Fi Remote` ---> `Wi-Fi configuration`. - For other hosts also, you can merge above configs in corresponding `sdkconfig.defaults.esp32XX` file. +Optimised parameters for other co-processors can be found in the [Performance Optimization Guide](performance_optimization.md). ###### 2. Set environment for your host ESP chip: diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index fc66c902..0bc86ca7 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 #define ESP_HOSTED_VERSION_MINOR_1 5 -#define ESP_HOSTED_VERSION_PATCH_1 11 +#define ESP_HOSTED_VERSION_PATCH_1 12 #endif diff --git a/host/utils/stats.c b/host/utils/stats.c index ec8d0767..c499d5cf 100644 --- a/host/utils/stats.c +++ b/host/utils/stats.c @@ -126,7 +126,7 @@ static void raw_tp_tx_task(void const* pvParameters) for (i=0; i<(TEST_RAW_TP__BUF_SIZE/4-1); i++, ptr++) *ptr = 0xBAADF00D; - ret = esp_hosted_tx(ESP_TEST_IF, 0, raw_tp_tx_buf, TEST_RAW_TP__BUF_SIZE, H_BUFF_ZEROCOPY, stats_mempool_free, 0); + ret = esp_hosted_tx(ESP_TEST_IF, 0, raw_tp_tx_buf, TEST_RAW_TP__BUF_SIZE, H_BUFF_ZEROCOPY, raw_tp_tx_buf, stats_mempool_free, 0); #endif if (ret) { ESP_LOGE(TAG, "Failed to send to queue\n"); @@ -146,7 +146,7 @@ static void process_raw_tp_flags(uint8_t cap) if (test_raw_tp) { hosted_timer_handler = g_h.funcs->_h_timer_start("raw_tp_timer", SEC_TO_MILLISEC(TEST_RAW_TP__TIMEOUT), - HOSTED_TIMER_PERIODIC, raw_tp_timer_func, NULL); + H_TIMER_TYPE_PERIODIC, raw_tp_timer_func, NULL); if (!hosted_timer_handler) { ESP_LOGE(TAG, "Failed to create timer\n\r"); return; diff --git a/host/utils/stats.h b/host/utils/stats.h index 0e02b116..639e4310 100644 --- a/host/utils/stats.h +++ b/host/utils/stats.h @@ -7,6 +7,8 @@ #ifndef __STATS__H #define __STATS__H +#include "port_esp_hosted_host_config.h" + #ifdef __cplusplus extern "C" { #endif diff --git a/idf_component.yml b/idf_component.yml index 17ff9caf..6d26c556 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.5.11" +version: "2.5.12" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/Kconfig.projbuild b/slave/main/Kconfig.projbuild index 93cdd472..cf8ee9e5 100644 --- a/slave/main/Kconfig.projbuild +++ b/slave/main/Kconfig.projbuild @@ -41,10 +41,9 @@ menu "Example Configuration" help Enable/Disable SDIO host interface - # SPI Half Duplex is not supported in ESP32 config ESP_SPI_HD_HOST_INTERFACE bool "SPI Half-duplex" - depends on !IDF_TARGET_ESP32 + depends on SOC_SPI_SUPPORT_SLAVE_HD_VER2 help Enable/Disable SPI Half-duplex host interface @@ -146,6 +145,7 @@ menu "Example Configuration" default 18 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD default 15 if IDF_TARGET_ESP32 default 10 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 + default 8 if IDF_TARGET_ESP32C61 default 10 help SPI controller Host CS @@ -201,12 +201,13 @@ menu "Example Configuration" config ESP_SPI_GPIO_HANDSHAKE int "Slave GPIO pin for handshake" default 22 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD - default 18 if IDF_TARGET_ESP32C2 && C2_C5_MODULE_SUB_BOARD + default 4 if IDF_TARGET_ESP32C2 && C2_C5_MODULE_SUB_BOARD default 3 if IDF_TARGET_ESP32C2 && !C2_C5_MODULE_SUB_BOARD default 4 if IDF_TARGET_ESP32C5 && C2_C5_MODULE_SUB_BOARD default 1 if IDF_TARGET_ESP32C5 && !C2_C5_MODULE_SUB_BOARD default 3 if IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32C6 default 17 if IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32S2 + default 22 if IDF_TARGET_ESP32C61 default 26 help Slave GPIO pin to use for handshake with other spi controller @@ -218,6 +219,7 @@ menu "Example Configuration" default 4 if IDF_TARGET_ESP32C2 && !C2_C5_MODULE_SUB_BOARD default 0 if IDF_TARGET_ESP32C5 && C2_C5_MODULE_SUB_BOARD default 4 if IDF_TARGET_ESP32C5 && !C2_C5_MODULE_SUB_BOARD + default 23 if IDF_TARGET_ESP32C61 default 4 help Slave GPIO pin for indicating host that SPI slave has data to be read by host @@ -243,7 +245,8 @@ menu "Example Configuration" int "ESP to Host SPI queue size" default 10 if IDF_TARGET_ESP32 default 6 if IDF_TARGET_ESP32C2 && BT_ENABLED - default 10 if IDF_TARGET_ESP32C2 + default 10 if IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32C61 + default 10 if IDF_TARGET_ESP32C61 default 20 help Very small tx queue will lower ESP -- SPI --> Host data rate @@ -253,6 +256,7 @@ menu "Example Configuration" default 10 if IDF_TARGET_ESP32 default 6 if IDF_TARGET_ESP32C2 && BT_ENABLED default 7 if IDF_TARGET_ESP32C2 + default 10 if IDF_TARGET_ESP32C61 default 20 help Very small RX queue will lower ESP <-- SPI -- Host data rate @@ -449,6 +453,7 @@ menu "Example Configuration" config ESP_SPI_HD_GPIO_CS int "Slave GPIO pin for Host CS" default 18 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD + default 8 if IDF_TARGET_ESP32C61 default 10 help SPI HD controller Host CS @@ -480,6 +485,7 @@ menu "Example Configuration" depends on ESP_SPI_HD_PRIV_INTERFACE_4_DATA_LINES int "Slave GPIO pin for Host D2" default 22 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD + default 4 if IDF_TARGET_ESP32C61 default 5 help SPI HD controller Host D2 @@ -488,6 +494,7 @@ menu "Example Configuration" depends on ESP_SPI_HD_PRIV_INTERFACE_4_DATA_LINES int "Slave GPIO pin for Host D3" default 23 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD + default 3 if IDF_TARGET_ESP32C61 default 4 help SPI HD controller Host D3 @@ -497,6 +504,7 @@ menu "Example Configuration" default 2 if ESP_HOST_DEV_BOARD_P4_FUNC_BOARD default 0 if IDF_TARGET_ESP32C5 default 1 if IDF_TARGET_ESP32C2 + default 23 if IDF_TARGET_ESP32C61 default 11 help Slave GPIO pin for indicating host that SPI slave has data to be read by host @@ -525,6 +533,7 @@ menu "Example Configuration" int "Queue size" default 12 if IDF_TARGET_ESP32C2 default 10 if IDF_TARGET_ESP32C5 + default 10 if IDF_TARGET_ESP32C61 default 20 help Very small queue will lower SPI HD data rate @@ -557,6 +566,7 @@ menu "Example Configuration" default 5 if IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32C3 default 14 if IDF_TARGET_ESP32C5 default 21 if IDF_TARGET_ESP32C6 + default 23 if IDF_TARGET_ESP32C61 default 5 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 help GPIO used for UART TX @@ -567,6 +577,7 @@ menu "Example Configuration" default 4 if IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32C3 default 13 if IDF_TARGET_ESP32C5 default 20 if IDF_TARGET_ESP32C6 + default 22 if IDF_TARGET_ESP32C61 default 4 if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 help GPIO used for UART RX diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index 78e4230b..f652ea28 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -7,5 +7,5 @@ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 #define PROJECT_VERSION_MINOR_1 5 -#define PROJECT_VERSION_PATCH_1 11 +#define PROJECT_VERSION_PATCH_1 12 #endif diff --git a/slave/main/sdio_slave_api.c b/slave/main/sdio_slave_api.c index 06555465..cb243c54 100644 --- a/slave/main/sdio_slave_api.c +++ b/slave/main/sdio_slave_api.c @@ -1,17 +1,8 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2015-2025 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #include #include @@ -341,7 +332,7 @@ static interface_handle_t * sdio_init(void) esp_err_t ret = ESP_OK; sdio_slave_buf_handle_t handle = {0}; sdio_slave_config_t config = { -#if H_ESP_SDIO_STREAMING_MODE +#if CONFIG_ESP_SDIO_STREAMING_MODE .sending_mode = SDIO_SLAVE_SEND_STREAM, #else .sending_mode = SDIO_SLAVE_SEND_PACKET, @@ -368,7 +359,7 @@ static interface_handle_t * sdio_init(void) }; #if !SIMPLIFIED_SDIO_SLAVE - #if H_ESP_SDIO_STREAMING_MODE + #if CONFIG_ESP_SDIO_STREAMING_MODE ESP_LOGI(TAG, "%s: sending mode: SDIO_SLAVE_SEND_STREAM", __func__); #else ESP_LOGI(TAG, "%s: sending mode: SDIO_SLAVE_SEND_PACKET", __func__); diff --git a/slave/main/spi_hd_slave_api.c b/slave/main/spi_hd_slave_api.c index 2a6325c5..0a11789f 100644 --- a/slave/main/spi_hd_slave_api.c +++ b/slave/main/spi_hd_slave_api.c @@ -1,17 +1,8 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2024 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #include "sdkconfig.h" @@ -338,6 +329,12 @@ static void esp_spi_hd_get_bus_cfg(spi_bus_config_t * bus_cfg) bus_cfg->data2_io_num = -1; bus_cfg->data3_io_num = -1; #endif + // mark octal SPI_HD signals as not in use + bus_cfg->data4_io_num = -1; + bus_cfg->data5_io_num = -1; + bus_cfg->data6_io_num = -1; + bus_cfg->data7_io_num = -1; + bus_cfg->sclk_io_num = GPIO_SCLK; bus_cfg->max_transfer_sz = SPI_HD_BUFFER_SIZE; #if (NUM_DATA_BITS == 4) diff --git a/slave/main/stats.c b/slave/main/stats.c index 23bb2d6a..b82df0f6 100644 --- a/slave/main/stats.c +++ b/slave/main/stats.c @@ -1,5 +1,7 @@ -/* SPDX-License-Identifier: Apache-2.0 - * Copyright 2015-2025 Espressif Systems (Shanghai) PTE LTD +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 */ #include "stats.h" @@ -16,8 +18,13 @@ static const char TAG[] = "stats"; struct dbg_stats_t dbg_stats; #endif /* ESP_PKT_NUM_DEBUG */ -#if ESP_PKT_STATS +#if TEST_RAW_TP + #define ESP_PKT_STATS_REPORT_INTERVAL CONFIG_ESP_RAW_TP_REPORT_INTERVAL +#elif ESP_PKT_STATS #define ESP_PKT_STATS_REPORT_INTERVAL CONFIG_ESP_PKT_STATS_INTERVAL_SEC +#endif + +#if ESP_PKT_STATS struct pkt_stats_t pkt_stats; #endif /* ESP_PKT_STATS */ From bd1d2a3860fc29b01184796c47e3ea372bf0eeed Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Sat, 11 Oct 2025 15:37:06 +0800 Subject: [PATCH 109/114] - Version bump - 2.6.0 - Changes - Added public OTA APIs for slave firmware updates - Added host-triggered slave OTA example with support for HTTP, partition, and filesystem sources - Support for LittleFS filesystem-based OTA updates - APIs added - `esp_hosted_ota_begin` - `esp_hosted_ota_write` - `esp_hosted_ota_end` - `esp_hosted_ota_activate` - APIs deprecated - `esp_hosted_slave_ota` - Use the new OTA examples instead for more flexible OTA implementations - Examples added - `host_performs_slave_ota` - Host-triggered slave OTA example supporting HTTP URLs, partition sources and LittleFS filesystem sources --- .gitlab/ci/sanity_pipeline_jobs.yml | 3 +- CHANGELOG.md | 21 + CMakeLists.txt | 5 +- common/proto/esp_hosted_rpc.pb-c.c | 1170 ++++++++++------- common/proto/esp_hosted_rpc.pb-c.h | 99 ++ common/proto/esp_hosted_rpc.proto | 12 +- common/transport/esp_hosted_transport_init.h | 13 +- docs/esp32_p4_function_ev_board.md | 228 ++-- docs/implemented_rpcs.md | 2 + docs/migration_guide.md | 228 +++- docs/sdio.md | 49 +- docs/spi_full_duplex.md | 50 +- docs/spi_half_duplex.md | 53 +- docs/uart.md | 50 +- .../host_performs_slave_ota/CMakeLists.txt | 7 + examples/host_performs_slave_ota/README.md | 512 ++++++++ .../find_newest_firmware.cmake | 64 + .../flash_selected_firmware.cmake | 61 + .../components/ota_https/CMakeLists.txt | 28 + .../components/ota_https/ota_https.c | 390 ++++++ .../components/ota_https/ota_https.h | 25 + .../components/ota_https/ota_https_wifi.c | 122 ++ .../ota_https/test_server/README.md | 58 + .../test_server/create_https_server.py | 79 ++ .../test_server/create_self_signed_certs.sh | 55 + .../components/ota_littlefs/CMakeLists.txt | 55 + .../components/ota_littlefs/ota_littlefs.c | 369 ++++++ .../components/ota_littlefs/ota_littlefs.h | 25 + .../components/ota_partition/CMakeLists.txt | 86 ++ .../components/ota_partition/ota_partition.c | 241 ++++ .../components/ota_partition/ota_partition.h | 25 + .../main/CMakeLists.txt | 6 + .../main/Kconfig.projbuild | 130 ++ .../main/idf_component.yml | 15 + examples/host_performs_slave_ota/main/main.c | 152 +++ .../host_performs_slave_ota/partitions.csv | 9 + .../sdkconfig.defaults | 17 + .../main/dpp_enrollee_main.c | 4 +- host/api/include/esp_hosted_api_types.h | 4 +- host/api/include/esp_hosted_ota.h | 59 +- host/api/priv/esp_hosted_api_priv.h | 1 - host/api/src/esp_hosted_ota_api.c | 41 + host/drivers/rpc/core/rpc_req.c | 1 + host/drivers/rpc/core/rpc_rsp.c | 7 + host/drivers/rpc/slaveif/rpc_slave_if.c | 6 + host/drivers/rpc/slaveif/rpc_slave_if.h | 4 + host/drivers/rpc/wrap/rpc_wrap.c | 14 + host/drivers/rpc/wrap/rpc_wrap.h | 2 +- host/esp_hosted.h | 2 +- host/esp_hosted_host_fw_ver.h | 9 +- .../freertos/src/port_esp_hosted_host_ota.c | 249 ---- idf_component.yml | 2 +- slave/CMakeLists.txt | 37 +- slave/main/esp_hosted_coprocessor_fw_ver.h | 6 +- slave/main/slave_control.c | 87 +- 55 files changed, 3922 insertions(+), 1127 deletions(-) create mode 100644 examples/host_performs_slave_ota/CMakeLists.txt create mode 100644 examples/host_performs_slave_ota/README.md create mode 100644 examples/host_performs_slave_ota/components/common_ota_scripts/find_newest_firmware.cmake create mode 100644 examples/host_performs_slave_ota/components/common_ota_scripts/flash_selected_firmware.cmake create mode 100644 examples/host_performs_slave_ota/components/ota_https/CMakeLists.txt create mode 100644 examples/host_performs_slave_ota/components/ota_https/ota_https.c create mode 100644 examples/host_performs_slave_ota/components/ota_https/ota_https.h create mode 100644 examples/host_performs_slave_ota/components/ota_https/ota_https_wifi.c create mode 100644 examples/host_performs_slave_ota/components/ota_https/test_server/README.md create mode 100755 examples/host_performs_slave_ota/components/ota_https/test_server/create_https_server.py create mode 100755 examples/host_performs_slave_ota/components/ota_https/test_server/create_self_signed_certs.sh create mode 100644 examples/host_performs_slave_ota/components/ota_littlefs/CMakeLists.txt create mode 100644 examples/host_performs_slave_ota/components/ota_littlefs/ota_littlefs.c create mode 100644 examples/host_performs_slave_ota/components/ota_littlefs/ota_littlefs.h create mode 100644 examples/host_performs_slave_ota/components/ota_partition/CMakeLists.txt create mode 100644 examples/host_performs_slave_ota/components/ota_partition/ota_partition.c create mode 100644 examples/host_performs_slave_ota/components/ota_partition/ota_partition.h create mode 100644 examples/host_performs_slave_ota/main/CMakeLists.txt create mode 100644 examples/host_performs_slave_ota/main/Kconfig.projbuild create mode 100644 examples/host_performs_slave_ota/main/idf_component.yml create mode 100644 examples/host_performs_slave_ota/main/main.c create mode 100644 examples/host_performs_slave_ota/partitions.csv create mode 100644 examples/host_performs_slave_ota/sdkconfig.defaults create mode 100644 host/api/src/esp_hosted_ota_api.c delete mode 100644 host/port/esp/freertos/src/port_esp_hosted_host_ota.c diff --git a/.gitlab/ci/sanity_pipeline_jobs.yml b/.gitlab/ci/sanity_pipeline_jobs.yml index c797c690..2b91c8b7 100644 --- a/.gitlab/ci/sanity_pipeline_jobs.yml +++ b/.gitlab/ci/sanity_pipeline_jobs.yml @@ -125,7 +125,8 @@ sanity_build_wifi_examples: EXAMPLE_TO_BUILD: ["host_wifi_easy_connect_dpp_enrollee", "host_wifi_itwt", "host_transport_config", - "host_network_split__power_save"] + "host_network_split__power_save", + "host_performs_slave_ota"] # build an example using the various transports # this is to verify transport builds as expected on the host diff --git a/CHANGELOG.md b/CHANGELOG.md index f46d5ace..3509d15c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,26 @@ # Changelog +## 2.6.0 +- Added public OTA APIs for slave firmware updates +- Added host-triggered slave OTA example with support for HTTP, partition, and filesystem sources +- Support for LittleFS filesystem-based OTA updates +- Migration guide updated for 2.6.0 + +### APIs added + +- `esp_hosted_ota_begin` +- `esp_hosted_ota_write` +- `esp_hosted_ota_end` +- `esp_hosted_ota_activate` + +### APIs deprecated + +- `esp_hosted_slave_ota` - Use the new [Host Performs Slave OTA Example](examples/host_performs_slave_ota/README.md) instead for more flexible OTA implementations with comprehensive documentation and multiple deployment methods + +### Examples added + +- `host_performs_slave_ota` - Host-triggered slave OTA example supporting HTTP URLs, partition sources and LittleFS filesystem sources + ## 2.5.12 ### Features diff --git a/CMakeLists.txt b/CMakeLists.txt index 5237566d..a1b6b557 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,6 +7,7 @@ if(CONFIG_ESP_HOSTED_ENABLED) "${host_dir}/api/src/esp_wifi_weak.c" "${host_dir}/api/src/esp_hosted_api.c" "${host_dir}/api/src/esp_hosted_transport_config.c" + "${host_dir}/api/src/esp_hosted_ota_api.c" "${host_dir}/drivers/transport/transport_drv.c" "${host_dir}/drivers/serial/serial_ll_if.c" "${host_dir}/utils/stats.c" @@ -69,8 +70,6 @@ if(CONFIG_ESP_HOSTED_ENABLED) "${common_dir}/protobuf-c" "${common_dir}/proto" ) - # host ESP32 specific files - list(APPEND srcs "${host_dir}/port/esp/freertos/src/port_esp_hosted_host_ota.c") # cli list(APPEND srcs "${common_dir}/utils/esp_hosted_cli.c") @@ -107,7 +106,7 @@ if(CONFIG_ESP_HOSTED_ENABLED) list(APPEND srcs "${host_dir}/port/esp/freertos/src/port_esp_hosted_host_init.c" "${host_dir}/port/esp/freertos/src/port_esp_hosted_host_os.c" - "${host_dir}/port/esp/freertos/src/port_esp_hosted_host_ota.c" + #"${host_dir}/port/esp/freertos/src/port_esp_hosted_host_ota.c" "${host_dir}/port/esp/freertos/src/port_esp_hosted_host_transport_defaults.c" ) diff --git a/common/proto/esp_hosted_rpc.pb-c.c b/common/proto/esp_hosted_rpc.pb-c.c index e40ba902..f203b62b 100644 --- a/common/proto/esp_hosted_rpc.pb-c.c +++ b/common/proto/esp_hosted_rpc.pb-c.c @@ -2977,6 +2977,96 @@ void rpc__resp__otaend__free_unpacked assert(message->base.descriptor == &rpc__resp__otaend__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } +void rpc__req__otaactivate__init + (RpcReqOTAActivate *message) +{ + static const RpcReqOTAActivate init_value = RPC__REQ__OTAACTIVATE__INIT; + *message = init_value; +} +size_t rpc__req__otaactivate__get_packed_size + (const RpcReqOTAActivate *message) +{ + assert(message->base.descriptor == &rpc__req__otaactivate__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__req__otaactivate__pack + (const RpcReqOTAActivate *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__req__otaactivate__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__req__otaactivate__pack_to_buffer + (const RpcReqOTAActivate *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__req__otaactivate__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcReqOTAActivate * + rpc__req__otaactivate__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcReqOTAActivate *) + protobuf_c_message_unpack (&rpc__req__otaactivate__descriptor, + allocator, len, data); +} +void rpc__req__otaactivate__free_unpacked + (RpcReqOTAActivate *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__req__otaactivate__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void rpc__resp__otaactivate__init + (RpcRespOTAActivate *message) +{ + static const RpcRespOTAActivate init_value = RPC__RESP__OTAACTIVATE__INIT; + *message = init_value; +} +size_t rpc__resp__otaactivate__get_packed_size + (const RpcRespOTAActivate *message) +{ + assert(message->base.descriptor == &rpc__resp__otaactivate__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t rpc__resp__otaactivate__pack + (const RpcRespOTAActivate *message, + uint8_t *out) +{ + assert(message->base.descriptor == &rpc__resp__otaactivate__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t rpc__resp__otaactivate__pack_to_buffer + (const RpcRespOTAActivate *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &rpc__resp__otaactivate__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +RpcRespOTAActivate * + rpc__resp__otaactivate__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (RpcRespOTAActivate *) + protobuf_c_message_unpack (&rpc__resp__otaactivate__descriptor, + allocator, len, data); +} +void rpc__resp__otaactivate__free_unpacked + (RpcRespOTAActivate *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &rpc__resp__otaactivate__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} void rpc__req__wifi_set_max_tx_power__init (RpcReqWifiSetMaxTxPower *message) { @@ -16655,6 +16745,62 @@ const ProtobufCMessageDescriptor rpc__resp__otaend__descriptor = (ProtobufCMessageInit) rpc__resp__otaend__init, NULL,NULL,NULL /* reserved[123] */ }; +#define rpc__req__otaactivate__field_descriptors NULL +#define rpc__req__otaactivate__field_indices_by_name NULL +#define rpc__req__otaactivate__number_ranges NULL +const ProtobufCMessageDescriptor rpc__req__otaactivate__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Req_OTAActivate", + "RpcReqOTAActivate", + "RpcReqOTAActivate", + "", + sizeof(RpcReqOTAActivate), + 0, + rpc__req__otaactivate__field_descriptors, + rpc__req__otaactivate__field_indices_by_name, + 0, rpc__req__otaactivate__number_ranges, + (ProtobufCMessageInit) rpc__req__otaactivate__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor rpc__resp__otaactivate__field_descriptors[1] = +{ + { + "resp", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(RpcRespOTAActivate, resp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned rpc__resp__otaactivate__field_indices_by_name[] = { + 0, /* field[0] = resp */ +}; +static const ProtobufCIntRange rpc__resp__otaactivate__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor rpc__resp__otaactivate__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "Rpc_Resp_OTAActivate", + "RpcRespOTAActivate", + "RpcRespOTAActivate", + "", + sizeof(RpcRespOTAActivate), + 1, + rpc__resp__otaactivate__field_descriptors, + rpc__resp__otaactivate__field_indices_by_name, + 1, rpc__resp__otaactivate__number_ranges, + (ProtobufCMessageInit) rpc__resp__otaactivate__init, + NULL,NULL,NULL /* reserved[123] */ +}; static const ProtobufCFieldDescriptor rpc__req__wifi_set_max_tx_power__field_descriptors[1] = { { @@ -25059,7 +25205,7 @@ const ProtobufCMessageDescriptor rpc__event__wifi_dpp_fail__descriptor = (ProtobufCMessageInit) rpc__event__wifi_dpp_fail__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor rpc__field_descriptors[218] = +static const ProtobufCFieldDescriptor rpc__field_descriptors[220] = { { "msg_type", @@ -25205,6 +25351,18 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[218] = 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "req_ota_activate", + 266, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, req_ota_activate), + &rpc__req__otaactivate__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, { "req_wifi_set_ps", 270, @@ -26381,6 +26539,18 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[218] = 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "resp_ota_activate", + 522, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(Rpc, payload_case), + offsetof(Rpc, resp_ota_activate), + &rpc__resp__otaactivate__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, { "resp_wifi_set_ps", 526, @@ -27679,246 +27849,248 @@ static const ProtobufCFieldDescriptor rpc__field_descriptors[218] = }, }; static const unsigned rpc__field_indices_by_name[] = { - 201, /* field[201] = event_ap_sta_connected */ - 202, /* field[202] = event_ap_sta_disconnected */ - 207, /* field[207] = event_dhcp_dns */ - 199, /* field[199] = event_esp_init */ - 200, /* field[200] = event_heartbeat */ - 205, /* field[205] = event_sta_connected */ - 206, /* field[206] = event_sta_disconnected */ - 211, /* field[211] = event_sta_itwt_probe */ - 208, /* field[208] = event_sta_itwt_setup */ - 210, /* field[210] = event_sta_itwt_suspend */ - 209, /* field[209] = event_sta_itwt_teardown */ - 204, /* field[204] = event_sta_scan_done */ - 213, /* field[213] = event_supp_dpp_cfg_recvd */ - 214, /* field[214] = event_supp_dpp_fail */ - 212, /* field[212] = event_supp_dpp_uri_ready */ - 216, /* field[216] = event_wifi_dpp_cfg_recvd */ - 217, /* field[217] = event_wifi_dpp_fail */ - 215, /* field[215] = event_wifi_dpp_uri_ready */ - 203, /* field[203] = event_wifi_event_no_args */ + 203, /* field[203] = event_ap_sta_connected */ + 204, /* field[204] = event_ap_sta_disconnected */ + 209, /* field[209] = event_dhcp_dns */ + 201, /* field[201] = event_esp_init */ + 202, /* field[202] = event_heartbeat */ + 207, /* field[207] = event_sta_connected */ + 208, /* field[208] = event_sta_disconnected */ + 213, /* field[213] = event_sta_itwt_probe */ + 210, /* field[210] = event_sta_itwt_setup */ + 212, /* field[212] = event_sta_itwt_suspend */ + 211, /* field[211] = event_sta_itwt_teardown */ + 206, /* field[206] = event_sta_scan_done */ + 215, /* field[215] = event_supp_dpp_cfg_recvd */ + 216, /* field[216] = event_supp_dpp_fail */ + 214, /* field[214] = event_supp_dpp_uri_ready */ + 218, /* field[218] = event_wifi_dpp_cfg_recvd */ + 219, /* field[219] = event_wifi_dpp_fail */ + 217, /* field[217] = event_wifi_dpp_uri_ready */ + 205, /* field[205] = event_wifi_event_no_args */ 1, /* field[1] = msg_id */ 0, /* field[0] = msg_type */ - 19, /* field[19] = req_config_heartbeat */ - 85, /* field[85] = req_eap_clear_ca_cert */ - 87, /* field[87] = req_eap_clear_certificate_and_key */ - 77, /* field[77] = req_eap_clear_identity */ - 83, /* field[83] = req_eap_clear_new_password */ - 81, /* field[81] = req_eap_clear_password */ - 79, /* field[79] = req_eap_clear_username */ - 88, /* field[88] = req_eap_get_disable_time_check */ - 84, /* field[84] = req_eap_set_ca_cert */ - 86, /* field[86] = req_eap_set_certificate_and_key */ - 96, /* field[96] = req_eap_set_disable_time_check */ - 95, /* field[95] = req_eap_set_domain_name */ - 97, /* field[97] = req_eap_set_eap_methods */ - 92, /* field[92] = req_eap_set_fast_params */ - 76, /* field[76] = req_eap_set_identity */ - 82, /* field[82] = req_eap_set_new_password */ - 91, /* field[91] = req_eap_set_pac_file */ - 80, /* field[80] = req_eap_set_password */ - 90, /* field[90] = req_eap_set_suiteb_certification */ - 89, /* field[89] = req_eap_set_ttls_phase2_method */ - 78, /* field[78] = req_eap_set_username */ - 93, /* field[93] = req_eap_use_default_cert_bundle */ - 100, /* field[100] = req_feature_control */ - 63, /* field[63] = req_get_coprocessor_fwversion */ - 66, /* field[66] = req_get_dhcp_dns */ + 20, /* field[20] = req_config_heartbeat */ + 86, /* field[86] = req_eap_clear_ca_cert */ + 88, /* field[88] = req_eap_clear_certificate_and_key */ + 78, /* field[78] = req_eap_clear_identity */ + 84, /* field[84] = req_eap_clear_new_password */ + 82, /* field[82] = req_eap_clear_password */ + 80, /* field[80] = req_eap_clear_username */ + 89, /* field[89] = req_eap_get_disable_time_check */ + 85, /* field[85] = req_eap_set_ca_cert */ + 87, /* field[87] = req_eap_set_certificate_and_key */ + 97, /* field[97] = req_eap_set_disable_time_check */ + 96, /* field[96] = req_eap_set_domain_name */ + 98, /* field[98] = req_eap_set_eap_methods */ + 93, /* field[93] = req_eap_set_fast_params */ + 77, /* field[77] = req_eap_set_identity */ + 83, /* field[83] = req_eap_set_new_password */ + 92, /* field[92] = req_eap_set_pac_file */ + 81, /* field[81] = req_eap_set_password */ + 91, /* field[91] = req_eap_set_suiteb_certification */ + 90, /* field[90] = req_eap_set_ttls_phase2_method */ + 79, /* field[79] = req_eap_set_username */ + 94, /* field[94] = req_eap_use_default_cert_bundle */ + 101, /* field[101] = req_feature_control */ + 64, /* field[64] = req_get_coprocessor_fwversion */ + 67, /* field[67] = req_get_dhcp_dns */ 3, /* field[3] = req_get_mac_address */ - 18, /* field[18] = req_get_wifi_max_tx_power */ + 19, /* field[19] = req_get_wifi_max_tx_power */ 5, /* field[5] = req_get_wifi_mode */ - 99, /* field[99] = req_iface_mac_addr_len_get */ - 98, /* field[98] = req_iface_mac_addr_set_get */ - 14, /* field[14] = req_ota_begin */ - 16, /* field[16] = req_ota_end */ - 15, /* field[15] = req_ota_write */ - 65, /* field[65] = req_set_dhcp_dns */ + 100, /* field[100] = req_iface_mac_addr_len_get */ + 99, /* field[99] = req_iface_mac_addr_set_get */ + 12, /* field[12] = req_ota_activate */ + 15, /* field[15] = req_ota_begin */ + 17, /* field[17] = req_ota_end */ + 16, /* field[16] = req_ota_write */ + 66, /* field[66] = req_set_dhcp_dns */ 4, /* field[4] = req_set_mac_address */ - 17, /* field[17] = req_set_wifi_max_tx_power */ + 18, /* field[18] = req_set_wifi_max_tx_power */ 6, /* field[6] = req_set_wifi_mode */ 9, /* field[9] = req_supp_dpp_bootstrap_gen */ 8, /* field[8] = req_supp_dpp_deinit */ 7, /* field[7] = req_supp_dpp_init */ 10, /* field[10] = req_supp_dpp_start_listen */ 11, /* field[11] = req_supp_dpp_stop_listen */ - 46, /* field[46] = req_wifi_ap_get_sta_aid */ - 45, /* field[45] = req_wifi_ap_get_sta_list */ - 32, /* field[32] = req_wifi_clear_ap_list */ - 34, /* field[34] = req_wifi_clear_fast_connect */ - 24, /* field[24] = req_wifi_connect */ - 35, /* field[35] = req_wifi_deauth_sta */ - 21, /* field[21] = req_wifi_deinit */ - 25, /* field[25] = req_wifi_disconnect */ - 60, /* field[60] = req_wifi_get_band */ - 62, /* field[62] = req_wifi_get_bandmode */ - 40, /* field[40] = req_wifi_get_bandwidth */ - 58, /* field[58] = req_wifi_get_bandwidths */ - 42, /* field[42] = req_wifi_get_channel */ - 27, /* field[27] = req_wifi_get_config */ - 44, /* field[44] = req_wifi_get_country */ - 51, /* field[51] = req_wifi_get_country_code */ - 49, /* field[49] = req_wifi_get_inactive_time */ - 38, /* field[38] = req_wifi_get_protocol */ - 56, /* field[56] = req_wifi_get_protocols */ - 13, /* field[13] = req_wifi_get_ps */ - 20, /* field[20] = req_wifi_init */ - 33, /* field[33] = req_wifi_restore */ - 30, /* field[30] = req_wifi_scan_get_ap_num */ - 64, /* field[64] = req_wifi_scan_get_ap_record */ - 31, /* field[31] = req_wifi_scan_get_ap_records */ - 28, /* field[28] = req_wifi_scan_start */ - 29, /* field[29] = req_wifi_scan_stop */ - 59, /* field[59] = req_wifi_set_band */ - 61, /* field[61] = req_wifi_set_bandmode */ - 39, /* field[39] = req_wifi_set_bandwidth */ - 57, /* field[57] = req_wifi_set_bandwidths */ - 41, /* field[41] = req_wifi_set_channel */ - 26, /* field[26] = req_wifi_set_config */ - 43, /* field[43] = req_wifi_set_country */ - 50, /* field[50] = req_wifi_set_country_code */ - 48, /* field[48] = req_wifi_set_inactive_time */ - 94, /* field[94] = req_wifi_set_okc_support */ - 37, /* field[37] = req_wifi_set_protocol */ - 55, /* field[55] = req_wifi_set_protocols */ - 12, /* field[12] = req_wifi_set_ps */ - 47, /* field[47] = req_wifi_set_storage */ - 75, /* field[75] = req_wifi_sta_enterprise_disable */ - 74, /* field[74] = req_wifi_sta_enterprise_enable */ - 52, /* field[52] = req_wifi_sta_get_aid */ - 36, /* field[36] = req_wifi_sta_get_ap_info */ - 53, /* field[53] = req_wifi_sta_get_negotiated_phymode */ - 54, /* field[54] = req_wifi_sta_get_rssi */ - 71, /* field[71] = req_wifi_sta_itwt_get_flow_id_status */ - 72, /* field[72] = req_wifi_sta_itwt_send_probe_req */ - 73, /* field[73] = req_wifi_sta_itwt_set_target_wake_time_offset */ - 68, /* field[68] = req_wifi_sta_itwt_setup */ - 70, /* field[70] = req_wifi_sta_itwt_suspend */ - 69, /* field[69] = req_wifi_sta_itwt_teardown */ - 67, /* field[67] = req_wifi_sta_twt_config */ - 22, /* field[22] = req_wifi_start */ - 23, /* field[23] = req_wifi_stop */ - 117, /* field[117] = resp_config_heartbeat */ - 183, /* field[183] = resp_eap_clear_ca_cert */ - 185, /* field[185] = resp_eap_clear_certificate_and_key */ - 175, /* field[175] = resp_eap_clear_identity */ - 181, /* field[181] = resp_eap_clear_new_password */ - 179, /* field[179] = resp_eap_clear_password */ - 177, /* field[177] = resp_eap_clear_username */ - 186, /* field[186] = resp_eap_get_disable_time_check */ - 182, /* field[182] = resp_eap_set_ca_cert */ - 184, /* field[184] = resp_eap_set_certificate_and_key */ - 194, /* field[194] = resp_eap_set_disable_time_check */ - 193, /* field[193] = resp_eap_set_domain_name */ - 195, /* field[195] = resp_eap_set_eap_methods */ - 190, /* field[190] = resp_eap_set_fast_params */ - 174, /* field[174] = resp_eap_set_identity */ - 180, /* field[180] = resp_eap_set_new_password */ - 189, /* field[189] = resp_eap_set_pac_file */ - 178, /* field[178] = resp_eap_set_password */ - 188, /* field[188] = resp_eap_set_suiteb_certification */ - 187, /* field[187] = resp_eap_set_ttls_phase2_method */ - 176, /* field[176] = resp_eap_set_username */ - 191, /* field[191] = resp_eap_use_default_cert_bundle */ - 198, /* field[198] = resp_feature_control */ - 161, /* field[161] = resp_get_coprocessor_fwversion */ - 164, /* field[164] = resp_get_dhcp_dns */ - 101, /* field[101] = resp_get_mac_address */ - 116, /* field[116] = resp_get_wifi_max_tx_power */ - 103, /* field[103] = resp_get_wifi_mode */ - 197, /* field[197] = resp_iface_mac_addr_len_get */ - 196, /* field[196] = resp_iface_mac_addr_set_get */ - 112, /* field[112] = resp_ota_begin */ - 114, /* field[114] = resp_ota_end */ - 113, /* field[113] = resp_ota_write */ - 163, /* field[163] = resp_set_dhcp_dns */ - 102, /* field[102] = resp_set_mac_address */ - 115, /* field[115] = resp_set_wifi_max_tx_power */ - 104, /* field[104] = resp_set_wifi_mode */ - 107, /* field[107] = resp_supp_dpp_bootstrap_gen */ - 106, /* field[106] = resp_supp_dpp_deinit */ - 105, /* field[105] = resp_supp_dpp_init */ - 108, /* field[108] = resp_supp_dpp_start_listen */ - 109, /* field[109] = resp_supp_dpp_stop_listen */ - 144, /* field[144] = resp_wifi_ap_get_sta_aid */ - 143, /* field[143] = resp_wifi_ap_get_sta_list */ - 130, /* field[130] = resp_wifi_clear_ap_list */ - 132, /* field[132] = resp_wifi_clear_fast_connect */ - 122, /* field[122] = resp_wifi_connect */ - 133, /* field[133] = resp_wifi_deauth_sta */ - 119, /* field[119] = resp_wifi_deinit */ - 123, /* field[123] = resp_wifi_disconnect */ - 158, /* field[158] = resp_wifi_get_band */ - 160, /* field[160] = resp_wifi_get_bandmode */ - 138, /* field[138] = resp_wifi_get_bandwidth */ - 156, /* field[156] = resp_wifi_get_bandwidths */ - 140, /* field[140] = resp_wifi_get_channel */ - 125, /* field[125] = resp_wifi_get_config */ - 142, /* field[142] = resp_wifi_get_country */ - 149, /* field[149] = resp_wifi_get_country_code */ - 147, /* field[147] = resp_wifi_get_inactive_time */ - 136, /* field[136] = resp_wifi_get_protocol */ - 154, /* field[154] = resp_wifi_get_protocols */ - 111, /* field[111] = resp_wifi_get_ps */ - 118, /* field[118] = resp_wifi_init */ - 131, /* field[131] = resp_wifi_restore */ - 128, /* field[128] = resp_wifi_scan_get_ap_num */ - 162, /* field[162] = resp_wifi_scan_get_ap_record */ - 129, /* field[129] = resp_wifi_scan_get_ap_records */ - 126, /* field[126] = resp_wifi_scan_start */ - 127, /* field[127] = resp_wifi_scan_stop */ - 157, /* field[157] = resp_wifi_set_band */ - 159, /* field[159] = resp_wifi_set_bandmode */ - 137, /* field[137] = resp_wifi_set_bandwidth */ - 155, /* field[155] = resp_wifi_set_bandwidths */ - 139, /* field[139] = resp_wifi_set_channel */ - 124, /* field[124] = resp_wifi_set_config */ - 141, /* field[141] = resp_wifi_set_country */ - 148, /* field[148] = resp_wifi_set_country_code */ - 146, /* field[146] = resp_wifi_set_inactive_time */ - 192, /* field[192] = resp_wifi_set_okc_support */ - 135, /* field[135] = resp_wifi_set_protocol */ - 153, /* field[153] = resp_wifi_set_protocols */ - 110, /* field[110] = resp_wifi_set_ps */ - 145, /* field[145] = resp_wifi_set_storage */ - 173, /* field[173] = resp_wifi_sta_enterprise_disable */ - 172, /* field[172] = resp_wifi_sta_enterprise_enable */ - 150, /* field[150] = resp_wifi_sta_get_aid */ - 134, /* field[134] = resp_wifi_sta_get_ap_info */ - 151, /* field[151] = resp_wifi_sta_get_negotiated_phymode */ - 152, /* field[152] = resp_wifi_sta_get_rssi */ - 169, /* field[169] = resp_wifi_sta_itwt_get_flow_id_status */ - 170, /* field[170] = resp_wifi_sta_itwt_send_probe_req */ - 171, /* field[171] = resp_wifi_sta_itwt_set_target_wake_time_offset */ - 166, /* field[166] = resp_wifi_sta_itwt_setup */ - 168, /* field[168] = resp_wifi_sta_itwt_suspend */ - 167, /* field[167] = resp_wifi_sta_itwt_teardown */ - 165, /* field[165] = resp_wifi_sta_twt_config */ - 120, /* field[120] = resp_wifi_start */ - 121, /* field[121] = resp_wifi_stop */ + 47, /* field[47] = req_wifi_ap_get_sta_aid */ + 46, /* field[46] = req_wifi_ap_get_sta_list */ + 33, /* field[33] = req_wifi_clear_ap_list */ + 35, /* field[35] = req_wifi_clear_fast_connect */ + 25, /* field[25] = req_wifi_connect */ + 36, /* field[36] = req_wifi_deauth_sta */ + 22, /* field[22] = req_wifi_deinit */ + 26, /* field[26] = req_wifi_disconnect */ + 61, /* field[61] = req_wifi_get_band */ + 63, /* field[63] = req_wifi_get_bandmode */ + 41, /* field[41] = req_wifi_get_bandwidth */ + 59, /* field[59] = req_wifi_get_bandwidths */ + 43, /* field[43] = req_wifi_get_channel */ + 28, /* field[28] = req_wifi_get_config */ + 45, /* field[45] = req_wifi_get_country */ + 52, /* field[52] = req_wifi_get_country_code */ + 50, /* field[50] = req_wifi_get_inactive_time */ + 39, /* field[39] = req_wifi_get_protocol */ + 57, /* field[57] = req_wifi_get_protocols */ + 14, /* field[14] = req_wifi_get_ps */ + 21, /* field[21] = req_wifi_init */ + 34, /* field[34] = req_wifi_restore */ + 31, /* field[31] = req_wifi_scan_get_ap_num */ + 65, /* field[65] = req_wifi_scan_get_ap_record */ + 32, /* field[32] = req_wifi_scan_get_ap_records */ + 29, /* field[29] = req_wifi_scan_start */ + 30, /* field[30] = req_wifi_scan_stop */ + 60, /* field[60] = req_wifi_set_band */ + 62, /* field[62] = req_wifi_set_bandmode */ + 40, /* field[40] = req_wifi_set_bandwidth */ + 58, /* field[58] = req_wifi_set_bandwidths */ + 42, /* field[42] = req_wifi_set_channel */ + 27, /* field[27] = req_wifi_set_config */ + 44, /* field[44] = req_wifi_set_country */ + 51, /* field[51] = req_wifi_set_country_code */ + 49, /* field[49] = req_wifi_set_inactive_time */ + 95, /* field[95] = req_wifi_set_okc_support */ + 38, /* field[38] = req_wifi_set_protocol */ + 56, /* field[56] = req_wifi_set_protocols */ + 13, /* field[13] = req_wifi_set_ps */ + 48, /* field[48] = req_wifi_set_storage */ + 76, /* field[76] = req_wifi_sta_enterprise_disable */ + 75, /* field[75] = req_wifi_sta_enterprise_enable */ + 53, /* field[53] = req_wifi_sta_get_aid */ + 37, /* field[37] = req_wifi_sta_get_ap_info */ + 54, /* field[54] = req_wifi_sta_get_negotiated_phymode */ + 55, /* field[55] = req_wifi_sta_get_rssi */ + 72, /* field[72] = req_wifi_sta_itwt_get_flow_id_status */ + 73, /* field[73] = req_wifi_sta_itwt_send_probe_req */ + 74, /* field[74] = req_wifi_sta_itwt_set_target_wake_time_offset */ + 69, /* field[69] = req_wifi_sta_itwt_setup */ + 71, /* field[71] = req_wifi_sta_itwt_suspend */ + 70, /* field[70] = req_wifi_sta_itwt_teardown */ + 68, /* field[68] = req_wifi_sta_twt_config */ + 23, /* field[23] = req_wifi_start */ + 24, /* field[24] = req_wifi_stop */ + 119, /* field[119] = resp_config_heartbeat */ + 185, /* field[185] = resp_eap_clear_ca_cert */ + 187, /* field[187] = resp_eap_clear_certificate_and_key */ + 177, /* field[177] = resp_eap_clear_identity */ + 183, /* field[183] = resp_eap_clear_new_password */ + 181, /* field[181] = resp_eap_clear_password */ + 179, /* field[179] = resp_eap_clear_username */ + 188, /* field[188] = resp_eap_get_disable_time_check */ + 184, /* field[184] = resp_eap_set_ca_cert */ + 186, /* field[186] = resp_eap_set_certificate_and_key */ + 196, /* field[196] = resp_eap_set_disable_time_check */ + 195, /* field[195] = resp_eap_set_domain_name */ + 197, /* field[197] = resp_eap_set_eap_methods */ + 192, /* field[192] = resp_eap_set_fast_params */ + 176, /* field[176] = resp_eap_set_identity */ + 182, /* field[182] = resp_eap_set_new_password */ + 191, /* field[191] = resp_eap_set_pac_file */ + 180, /* field[180] = resp_eap_set_password */ + 190, /* field[190] = resp_eap_set_suiteb_certification */ + 189, /* field[189] = resp_eap_set_ttls_phase2_method */ + 178, /* field[178] = resp_eap_set_username */ + 193, /* field[193] = resp_eap_use_default_cert_bundle */ + 200, /* field[200] = resp_feature_control */ + 163, /* field[163] = resp_get_coprocessor_fwversion */ + 166, /* field[166] = resp_get_dhcp_dns */ + 102, /* field[102] = resp_get_mac_address */ + 118, /* field[118] = resp_get_wifi_max_tx_power */ + 104, /* field[104] = resp_get_wifi_mode */ + 199, /* field[199] = resp_iface_mac_addr_len_get */ + 198, /* field[198] = resp_iface_mac_addr_set_get */ + 111, /* field[111] = resp_ota_activate */ + 114, /* field[114] = resp_ota_begin */ + 116, /* field[116] = resp_ota_end */ + 115, /* field[115] = resp_ota_write */ + 165, /* field[165] = resp_set_dhcp_dns */ + 103, /* field[103] = resp_set_mac_address */ + 117, /* field[117] = resp_set_wifi_max_tx_power */ + 105, /* field[105] = resp_set_wifi_mode */ + 108, /* field[108] = resp_supp_dpp_bootstrap_gen */ + 107, /* field[107] = resp_supp_dpp_deinit */ + 106, /* field[106] = resp_supp_dpp_init */ + 109, /* field[109] = resp_supp_dpp_start_listen */ + 110, /* field[110] = resp_supp_dpp_stop_listen */ + 146, /* field[146] = resp_wifi_ap_get_sta_aid */ + 145, /* field[145] = resp_wifi_ap_get_sta_list */ + 132, /* field[132] = resp_wifi_clear_ap_list */ + 134, /* field[134] = resp_wifi_clear_fast_connect */ + 124, /* field[124] = resp_wifi_connect */ + 135, /* field[135] = resp_wifi_deauth_sta */ + 121, /* field[121] = resp_wifi_deinit */ + 125, /* field[125] = resp_wifi_disconnect */ + 160, /* field[160] = resp_wifi_get_band */ + 162, /* field[162] = resp_wifi_get_bandmode */ + 140, /* field[140] = resp_wifi_get_bandwidth */ + 158, /* field[158] = resp_wifi_get_bandwidths */ + 142, /* field[142] = resp_wifi_get_channel */ + 127, /* field[127] = resp_wifi_get_config */ + 144, /* field[144] = resp_wifi_get_country */ + 151, /* field[151] = resp_wifi_get_country_code */ + 149, /* field[149] = resp_wifi_get_inactive_time */ + 138, /* field[138] = resp_wifi_get_protocol */ + 156, /* field[156] = resp_wifi_get_protocols */ + 113, /* field[113] = resp_wifi_get_ps */ + 120, /* field[120] = resp_wifi_init */ + 133, /* field[133] = resp_wifi_restore */ + 130, /* field[130] = resp_wifi_scan_get_ap_num */ + 164, /* field[164] = resp_wifi_scan_get_ap_record */ + 131, /* field[131] = resp_wifi_scan_get_ap_records */ + 128, /* field[128] = resp_wifi_scan_start */ + 129, /* field[129] = resp_wifi_scan_stop */ + 159, /* field[159] = resp_wifi_set_band */ + 161, /* field[161] = resp_wifi_set_bandmode */ + 139, /* field[139] = resp_wifi_set_bandwidth */ + 157, /* field[157] = resp_wifi_set_bandwidths */ + 141, /* field[141] = resp_wifi_set_channel */ + 126, /* field[126] = resp_wifi_set_config */ + 143, /* field[143] = resp_wifi_set_country */ + 150, /* field[150] = resp_wifi_set_country_code */ + 148, /* field[148] = resp_wifi_set_inactive_time */ + 194, /* field[194] = resp_wifi_set_okc_support */ + 137, /* field[137] = resp_wifi_set_protocol */ + 155, /* field[155] = resp_wifi_set_protocols */ + 112, /* field[112] = resp_wifi_set_ps */ + 147, /* field[147] = resp_wifi_set_storage */ + 175, /* field[175] = resp_wifi_sta_enterprise_disable */ + 174, /* field[174] = resp_wifi_sta_enterprise_enable */ + 152, /* field[152] = resp_wifi_sta_get_aid */ + 136, /* field[136] = resp_wifi_sta_get_ap_info */ + 153, /* field[153] = resp_wifi_sta_get_negotiated_phymode */ + 154, /* field[154] = resp_wifi_sta_get_rssi */ + 171, /* field[171] = resp_wifi_sta_itwt_get_flow_id_status */ + 172, /* field[172] = resp_wifi_sta_itwt_send_probe_req */ + 173, /* field[173] = resp_wifi_sta_itwt_set_target_wake_time_offset */ + 168, /* field[168] = resp_wifi_sta_itwt_setup */ + 170, /* field[170] = resp_wifi_sta_itwt_suspend */ + 169, /* field[169] = resp_wifi_sta_itwt_teardown */ + 167, /* field[167] = resp_wifi_sta_twt_config */ + 122, /* field[122] = resp_wifi_start */ + 123, /* field[123] = resp_wifi_stop */ 2, /* field[2] = uid */ }; static const ProtobufCIntRange rpc__number_ranges[18 + 1] = { { 1, 0 }, { 257, 3 }, - { 270, 12 }, - { 297, 37 }, - { 311, 45 }, - { 325, 48 }, - { 334, 50 }, - { 338, 52 }, - { 341, 54 }, - { 513, 101 }, - { 526, 110 }, - { 553, 135 }, - { 567, 143 }, - { 581, 146 }, - { 590, 148 }, - { 594, 150 }, - { 597, 152 }, - { 769, 199 }, - { 0, 218 } + { 270, 13 }, + { 297, 38 }, + { 311, 46 }, + { 325, 49 }, + { 334, 51 }, + { 338, 53 }, + { 341, 55 }, + { 513, 102 }, + { 526, 112 }, + { 553, 137 }, + { 567, 145 }, + { 581, 148 }, + { 590, 150 }, + { 594, 152 }, + { 597, 154 }, + { 769, 201 }, + { 0, 220 } }; const ProtobufCMessageDescriptor rpc__descriptor = { @@ -27928,7 +28100,7 @@ const ProtobufCMessageDescriptor rpc__descriptor = "Rpc", "", sizeof(Rpc), - 218, + 220, rpc__field_descriptors, rpc__field_indices_by_name, 18, rpc__number_ranges, @@ -28195,7 +28367,7 @@ const ProtobufCEnumDescriptor rpc_feature_option__descriptor = rpc_feature_option__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; -static const ProtobufCEnumValue rpc_id__enum_values_by_number[276] = +static const ProtobufCEnumValue rpc_id__enum_values_by_number[278] = { { "MsgId_Invalid", "RPC_ID__MsgId_Invalid", 0 }, { "Req_Base", "RPC_ID__Req_Base", 256 }, @@ -28208,6 +28380,7 @@ static const ProtobufCEnumValue rpc_id__enum_values_by_number[276] = { "Req_SuppDppBootstrapGen", "RPC_ID__Req_SuppDppBootstrapGen", 263 }, { "Req_SuppDppStartListen", "RPC_ID__Req_SuppDppStartListen", 264 }, { "Req_SuppDppStopListen", "RPC_ID__Req_SuppDppStopListen", 265 }, + { "Req_OTAActivate", "RPC_ID__Req_OTAActivate", 266 }, { "Req_WifiSetPs", "RPC_ID__Req_WifiSetPs", 270 }, { "Req_WifiGetPs", "RPC_ID__Req_WifiGetPs", 271 }, { "Req_OTABegin", "RPC_ID__Req_OTABegin", 272 }, @@ -28335,6 +28508,7 @@ static const ProtobufCEnumValue rpc_id__enum_values_by_number[276] = { "Resp_SuppDppBootstrapGen", "RPC_ID__Resp_SuppDppBootstrapGen", 519 }, { "Resp_SuppDppStartListen", "RPC_ID__Resp_SuppDppStartListen", 520 }, { "Resp_SuppDppStopListen", "RPC_ID__Resp_SuppDppStopListen", 521 }, + { "Resp_OTAActivate", "RPC_ID__Resp_OTAActivate", 522 }, { "Resp_WifiSetPs", "RPC_ID__Resp_WifiSetPs", 526 }, { "Resp_WifiGetPs", "RPC_ID__Resp_WifiGetPs", 527 }, { "Resp_OTABegin", "RPC_ID__Resp_OTABegin", 528 }, @@ -28475,67 +28649,68 @@ static const ProtobufCEnumValue rpc_id__enum_values_by_number[276] = { "Event_Max", "RPC_ID__Event_Max", 788 }, }; static const ProtobufCIntRange rpc_id__value_ranges[] = { -{0, 0},{256, 1},{270, 11},{297, 36},{512, 128},{526, 138},{553, 163},{768, 255},{0, 276} -}; -static const ProtobufCEnumValueIndex rpc_id__enum_values_by_name[276] = -{ - { "Event_AP_StaConnected", 258 }, - { "Event_AP_StaDisconnected", 259 }, - { "Event_Base", 255 }, - { "Event_DhcpDnsStatus", 264 }, - { "Event_ESPInit", 256 }, - { "Event_Heartbeat", 257 }, - { "Event_Max", 275 }, - { "Event_StaConnected", 262 }, - { "Event_StaDisconnected", 263 }, - { "Event_StaItwtProbe", 268 }, - { "Event_StaItwtSetup", 265 }, - { "Event_StaItwtSuspend", 267 }, - { "Event_StaItwtTeardown", 266 }, - { "Event_StaScanDone", 261 }, - { "Event_SuppDppCfgRecvd", 270 }, - { "Event_SuppDppFail", 271 }, - { "Event_SuppDppUriReady", 269 }, - { "Event_WifiDppCfgRecvd", 273 }, - { "Event_WifiDppFail", 274 }, - { "Event_WifiDppUriReady", 272 }, - { "Event_WifiEventNoArgs", 260 }, +{0, 0},{256, 1},{270, 12},{297, 37},{512, 129},{526, 140},{553, 165},{768, 257},{0, 278} +}; +static const ProtobufCEnumValueIndex rpc_id__enum_values_by_name[278] = +{ + { "Event_AP_StaConnected", 260 }, + { "Event_AP_StaDisconnected", 261 }, + { "Event_Base", 257 }, + { "Event_DhcpDnsStatus", 266 }, + { "Event_ESPInit", 258 }, + { "Event_Heartbeat", 259 }, + { "Event_Max", 277 }, + { "Event_StaConnected", 264 }, + { "Event_StaDisconnected", 265 }, + { "Event_StaItwtProbe", 270 }, + { "Event_StaItwtSetup", 267 }, + { "Event_StaItwtSuspend", 269 }, + { "Event_StaItwtTeardown", 268 }, + { "Event_StaScanDone", 263 }, + { "Event_SuppDppCfgRecvd", 272 }, + { "Event_SuppDppFail", 273 }, + { "Event_SuppDppUriReady", 271 }, + { "Event_WifiDppCfgRecvd", 275 }, + { "Event_WifiDppFail", 276 }, + { "Event_WifiDppUriReady", 274 }, + { "Event_WifiEventNoArgs", 262 }, { "MsgId_Invalid", 0 }, { "Req_Base", 1 }, - { "Req_ConfigHeartbeat", 18 }, - { "Req_EapClearCaCert", 111 }, - { "Req_EapClearCertificateAndKey", 113 }, - { "Req_EapClearIdentity", 103 }, - { "Req_EapClearNewPassword", 109 }, - { "Req_EapClearPassword", 107 }, - { "Req_EapClearUsername", 105 }, - { "Req_EapGetDisableTimeCheck", 114 }, - { "Req_EapSetCaCert", 110 }, - { "Req_EapSetCertificateAndKey", 112 }, - { "Req_EapSetDisableTimeCheck", 122 }, - { "Req_EapSetDomainName", 121 }, - { "Req_EapSetEapMethods", 123 }, - { "Req_EapSetFastParams", 118 }, - { "Req_EapSetIdentity", 102 }, - { "Req_EapSetNewPassword", 108 }, - { "Req_EapSetPacFile", 117 }, - { "Req_EapSetPassword", 106 }, - { "Req_EapSetSuitebCertification", 116 }, - { "Req_EapSetTtlsPhase2Method", 115 }, - { "Req_EapSetUsername", 104 }, - { "Req_EapUseDefaultCertBundle", 119 }, - { "Req_FeatureControl", 126 }, - { "Req_GetCoprocessorFwVersion", 89 }, - { "Req_GetDhcpDnsStatus", 92 }, + { "Req_ConfigHeartbeat", 19 }, + { "Req_EapClearCaCert", 112 }, + { "Req_EapClearCertificateAndKey", 114 }, + { "Req_EapClearIdentity", 104 }, + { "Req_EapClearNewPassword", 110 }, + { "Req_EapClearPassword", 108 }, + { "Req_EapClearUsername", 106 }, + { "Req_EapGetDisableTimeCheck", 115 }, + { "Req_EapSetCaCert", 111 }, + { "Req_EapSetCertificateAndKey", 113 }, + { "Req_EapSetDisableTimeCheck", 123 }, + { "Req_EapSetDomainName", 122 }, + { "Req_EapSetEapMethods", 124 }, + { "Req_EapSetFastParams", 119 }, + { "Req_EapSetIdentity", 103 }, + { "Req_EapSetNewPassword", 109 }, + { "Req_EapSetPacFile", 118 }, + { "Req_EapSetPassword", 107 }, + { "Req_EapSetSuitebCertification", 117 }, + { "Req_EapSetTtlsPhase2Method", 116 }, + { "Req_EapSetUsername", 105 }, + { "Req_EapUseDefaultCertBundle", 120 }, + { "Req_FeatureControl", 127 }, + { "Req_GetCoprocessorFwVersion", 90 }, + { "Req_GetDhcpDnsStatus", 93 }, { "Req_GetMACAddress", 2 }, { "Req_GetWifiMode", 4 }, - { "Req_IfaceMacAddrLenGet", 125 }, - { "Req_IfaceMacAddrSetGet", 124 }, - { "Req_Max", 127 }, - { "Req_OTABegin", 13 }, - { "Req_OTAEnd", 15 }, - { "Req_OTAWrite", 14 }, - { "Req_SetDhcpDnsStatus", 91 }, + { "Req_IfaceMacAddrLenGet", 126 }, + { "Req_IfaceMacAddrSetGet", 125 }, + { "Req_Max", 128 }, + { "Req_OTAActivate", 11 }, + { "Req_OTABegin", 14 }, + { "Req_OTAEnd", 16 }, + { "Req_OTAWrite", 15 }, + { "Req_SetDhcpDnsStatus", 92 }, { "Req_SetMacAddress", 3 }, { "Req_SetWifiMode", 5 }, { "Req_SuppDppBootstrapGen", 8 }, @@ -28543,218 +28718,219 @@ static const ProtobufCEnumValueIndex rpc_id__enum_values_by_name[276] = { "Req_SuppDppInit", 6 }, { "Req_SuppDppStartListen", 9 }, { "Req_SuppDppStopListen", 10 }, - { "Req_Wifi80211Tx", 56 }, - { "Req_WifiApGetStaAid", 51 }, - { "Req_WifiApGetStaList", 50 }, - { "Req_WifiClearApList", 31 }, - { "Req_WifiClearFastConnect", 33 }, - { "Req_WifiConfig11bRate", 71 }, - { "Req_WifiConfig80211TxRate", 75 }, - { "Req_WifiConnect", 23 }, - { "Req_WifiConnectionlessModuleSetWakeInterval", 72 }, - { "Req_WifiDeauthSta", 34 }, - { "Req_WifiDeinit", 20 }, - { "Req_WifiDisablePmfConfig", 76 }, - { "Req_WifiDisconnect", 24 }, - { "Req_WifiFtmEndSession", 69 }, - { "Req_WifiFtmInitiateSession", 68 }, - { "Req_WifiFtmRespSetOffset", 70 }, - { "Req_WifiGetAnt", 62 }, - { "Req_WifiGetAntGpio", 60 }, - { "Req_WifiGetBand", 86 }, - { "Req_WifiGetBandMode", 88 }, - { "Req_WifiGetBandwidth", 39 }, - { "Req_WifiGetBandwidths", 84 }, - { "Req_WifiGetChannel", 41 }, - { "Req_WifiGetConfig", 26 }, - { "Req_WifiGetCountry", 43 }, - { "Req_WifiGetCountryCode", 74 }, - { "Req_WifiGetEventMask", 55 }, - { "Req_WifiGetInactiveTime", 65 }, - { "Req_WifiGetMaxTxPower", 17 }, - { "Req_WifiGetPromiscuous", 45 }, - { "Req_WifiGetPromiscuousCtrlFilter", 49 }, - { "Req_WifiGetPromiscuousFilter", 47 }, - { "Req_WifiGetProtocol", 37 }, - { "Req_WifiGetProtocols", 82 }, - { "Req_WifiGetPs", 12 }, - { "Req_WifiGetTsfTime", 63 }, - { "Req_WifiInit", 19 }, - { "Req_WifiRestore", 32 }, - { "Req_WifiScanGetApNum", 29 }, - { "Req_WifiScanGetApRecord", 90 }, - { "Req_WifiScanGetApRecords", 30 }, - { "Req_WifiScanStart", 27 }, - { "Req_WifiScanStop", 28 }, - { "Req_WifiSetAnt", 61 }, - { "Req_WifiSetAntGpio", 59 }, - { "Req_WifiSetBand", 85 }, - { "Req_WifiSetBandMode", 87 }, - { "Req_WifiSetBandwidth", 38 }, - { "Req_WifiSetBandwidths", 83 }, - { "Req_WifiSetChannel", 40 }, - { "Req_WifiSetConfig", 25 }, - { "Req_WifiSetCountry", 42 }, - { "Req_WifiSetCountryCode", 73 }, - { "Req_WifiSetCsi", 58 }, - { "Req_WifiSetCsiConfig", 57 }, - { "Req_WifiSetDynamicCs", 79 }, - { "Req_WifiSetEventMask", 54 }, - { "Req_WifiSetInactiveTime", 64 }, - { "Req_WifiSetMaxTxPower", 16 }, - { "Req_WifiSetOkcSupport", 120 }, - { "Req_WifiSetPromiscuous", 44 }, - { "Req_WifiSetPromiscuousCtrlFilter", 48 }, - { "Req_WifiSetPromiscuousFilter", 46 }, - { "Req_WifiSetProtocol", 36 }, - { "Req_WifiSetProtocols", 81 }, - { "Req_WifiSetPs", 11 }, - { "Req_WifiSetRssiThreshold", 67 }, - { "Req_WifiSetStorage", 52 }, - { "Req_WifiSetVendorIe", 53 }, - { "Req_WifiStaEnterpriseDisable", 101 }, - { "Req_WifiStaEnterpriseEnable", 100 }, - { "Req_WifiStaGetAid", 77 }, - { "Req_WifiStaGetApInfo", 35 }, - { "Req_WifiStaGetNegotiatedPhymode", 78 }, - { "Req_WifiStaGetRssi", 80 }, - { "Req_WifiStaItwtGetFlowIdStatus", 97 }, - { "Req_WifiStaItwtSendProbeReq", 98 }, - { "Req_WifiStaItwtSetTargetWakeTimeOffset", 99 }, - { "Req_WifiStaItwtSetup", 94 }, - { "Req_WifiStaItwtSuspend", 96 }, - { "Req_WifiStaItwtTeardown", 95 }, - { "Req_WifiStaTwtConfig", 93 }, - { "Req_WifiStart", 21 }, - { "Req_WifiStatisDump", 66 }, - { "Req_WifiStop", 22 }, - { "Resp_Base", 128 }, - { "Resp_ConfigHeartbeat", 145 }, - { "Resp_EapClearCaCert", 238 }, - { "Resp_EapClearCertificateAndKey", 240 }, - { "Resp_EapClearIdentity", 230 }, - { "Resp_EapClearNewPassword", 236 }, - { "Resp_EapClearPassword", 234 }, - { "Resp_EapClearUsername", 232 }, - { "Resp_EapGetDisableTimeCheck", 241 }, - { "Resp_EapSetCaCert", 237 }, - { "Resp_EapSetCertificateAndKey", 239 }, - { "Resp_EapSetDisableTimeCheck", 249 }, - { "Resp_EapSetDomainName", 248 }, - { "Resp_EapSetEapMethods", 250 }, - { "Resp_EapSetFastParams", 245 }, - { "Resp_EapSetIdentity", 229 }, - { "Resp_EapSetNewPassword", 235 }, - { "Resp_EapSetPacFile", 244 }, - { "Resp_EapSetPassword", 233 }, - { "Resp_EapSetSuitebCertification", 243 }, - { "Resp_EapSetTtlsPhase2Method", 242 }, - { "Resp_EapSetUsername", 231 }, - { "Resp_EapUseDefaultCertBundle", 246 }, - { "Resp_FeatureControl", 253 }, - { "Resp_GetCoprocessorFwVersion", 216 }, - { "Resp_GetDhcpDnsStatus", 219 }, - { "Resp_GetMACAddress", 129 }, - { "Resp_GetWifiMode", 131 }, - { "Resp_IfaceMacAddrLenGet", 252 }, - { "Resp_IfaceMacAddrSetGet", 251 }, - { "Resp_Max", 254 }, - { "Resp_OTABegin", 140 }, - { "Resp_OTAEnd", 142 }, - { "Resp_OTAWrite", 141 }, - { "Resp_SetDhcpDnsStatus", 218 }, - { "Resp_SetMacAddress", 130 }, - { "Resp_SetWifiMode", 132 }, - { "Resp_SuppDppBootstrapGen", 135 }, - { "Resp_SuppDppDeinit", 134 }, - { "Resp_SuppDppInit", 133 }, - { "Resp_SuppDppStartListen", 136 }, - { "Resp_SuppDppStopListen", 137 }, - { "Resp_Wifi80211Tx", 183 }, - { "Resp_WifiApGetStaAid", 178 }, - { "Resp_WifiApGetStaList", 177 }, - { "Resp_WifiClearApList", 158 }, - { "Resp_WifiClearFastConnect", 160 }, - { "Resp_WifiConfig11bRate", 198 }, - { "Resp_WifiConfig80211TxRate", 202 }, - { "Resp_WifiConnect", 150 }, - { "Resp_WifiConnectionlessModuleSetWakeInterval", 199 }, - { "Resp_WifiDeauthSta", 161 }, - { "Resp_WifiDeinit", 147 }, - { "Resp_WifiDisablePmfConfig", 203 }, - { "Resp_WifiDisconnect", 151 }, - { "Resp_WifiFtmEndSession", 196 }, - { "Resp_WifiFtmInitiateSession", 195 }, - { "Resp_WifiFtmRespSetOffset", 197 }, - { "Resp_WifiGetAnt", 189 }, - { "Resp_WifiGetAntGpio", 187 }, - { "Resp_WifiGetBand", 213 }, - { "Resp_WifiGetBandMode", 215 }, - { "Resp_WifiGetBandwidth", 166 }, - { "Resp_WifiGetBandwidths", 211 }, - { "Resp_WifiGetChannel", 168 }, - { "Resp_WifiGetConfig", 153 }, - { "Resp_WifiGetCountry", 170 }, - { "Resp_WifiGetCountryCode", 201 }, - { "Resp_WifiGetEventMask", 182 }, - { "Resp_WifiGetInactiveTime", 192 }, - { "Resp_WifiGetMaxTxPower", 144 }, - { "Resp_WifiGetPromiscuous", 172 }, - { "Resp_WifiGetPromiscuousCtrlFilter", 176 }, - { "Resp_WifiGetPromiscuousFilter", 174 }, - { "Resp_WifiGetProtocol", 164 }, - { "Resp_WifiGetProtocols", 209 }, - { "Resp_WifiGetPs", 139 }, - { "Resp_WifiGetTsfTime", 190 }, - { "Resp_WifiInit", 146 }, - { "Resp_WifiRestore", 159 }, - { "Resp_WifiScanGetApNum", 156 }, - { "Resp_WifiScanGetApRecord", 217 }, - { "Resp_WifiScanGetApRecords", 157 }, - { "Resp_WifiScanStart", 154 }, - { "Resp_WifiScanStop", 155 }, - { "Resp_WifiSetAnt", 188 }, - { "Resp_WifiSetAntGpio", 186 }, - { "Resp_WifiSetBand", 212 }, - { "Resp_WifiSetBandMode", 214 }, - { "Resp_WifiSetBandwidth", 165 }, - { "Resp_WifiSetBandwidths", 210 }, - { "Resp_WifiSetChannel", 167 }, - { "Resp_WifiSetConfig", 152 }, - { "Resp_WifiSetCountry", 169 }, - { "Resp_WifiSetCountryCode", 200 }, - { "Resp_WifiSetCsi", 185 }, - { "Resp_WifiSetCsiConfig", 184 }, - { "Resp_WifiSetDynamicCs", 206 }, - { "Resp_WifiSetEventMask", 181 }, - { "Resp_WifiSetInactiveTime", 191 }, - { "Resp_WifiSetMaxTxPower", 143 }, - { "Resp_WifiSetOkcSupport", 247 }, - { "Resp_WifiSetPromiscuous", 171 }, - { "Resp_WifiSetPromiscuousCtrlFilter", 175 }, - { "Resp_WifiSetPromiscuousFilter", 173 }, - { "Resp_WifiSetProtocol", 163 }, - { "Resp_WifiSetProtocols", 208 }, - { "Resp_WifiSetPs", 138 }, - { "Resp_WifiSetRssiThreshold", 194 }, - { "Resp_WifiSetStorage", 179 }, - { "Resp_WifiSetVendorIe", 180 }, - { "Resp_WifiStaEnterpriseDisable", 228 }, - { "Resp_WifiStaEnterpriseEnable", 227 }, - { "Resp_WifiStaGetAid", 204 }, - { "Resp_WifiStaGetApInfo", 162 }, - { "Resp_WifiStaGetNegotiatedPhymode", 205 }, - { "Resp_WifiStaGetRssi", 207 }, - { "Resp_WifiStaItwtGetFlowIdStatus", 224 }, - { "Resp_WifiStaItwtSendProbeReq", 225 }, - { "Resp_WifiStaItwtSetTargetWakeTimeOffset", 226 }, - { "Resp_WifiStaItwtSetup", 221 }, - { "Resp_WifiStaItwtSuspend", 223 }, - { "Resp_WifiStaItwtTeardown", 222 }, - { "Resp_WifiStaTwtConfig", 220 }, - { "Resp_WifiStart", 148 }, - { "Resp_WifiStatisDump", 193 }, - { "Resp_WifiStop", 149 }, + { "Req_Wifi80211Tx", 57 }, + { "Req_WifiApGetStaAid", 52 }, + { "Req_WifiApGetStaList", 51 }, + { "Req_WifiClearApList", 32 }, + { "Req_WifiClearFastConnect", 34 }, + { "Req_WifiConfig11bRate", 72 }, + { "Req_WifiConfig80211TxRate", 76 }, + { "Req_WifiConnect", 24 }, + { "Req_WifiConnectionlessModuleSetWakeInterval", 73 }, + { "Req_WifiDeauthSta", 35 }, + { "Req_WifiDeinit", 21 }, + { "Req_WifiDisablePmfConfig", 77 }, + { "Req_WifiDisconnect", 25 }, + { "Req_WifiFtmEndSession", 70 }, + { "Req_WifiFtmInitiateSession", 69 }, + { "Req_WifiFtmRespSetOffset", 71 }, + { "Req_WifiGetAnt", 63 }, + { "Req_WifiGetAntGpio", 61 }, + { "Req_WifiGetBand", 87 }, + { "Req_WifiGetBandMode", 89 }, + { "Req_WifiGetBandwidth", 40 }, + { "Req_WifiGetBandwidths", 85 }, + { "Req_WifiGetChannel", 42 }, + { "Req_WifiGetConfig", 27 }, + { "Req_WifiGetCountry", 44 }, + { "Req_WifiGetCountryCode", 75 }, + { "Req_WifiGetEventMask", 56 }, + { "Req_WifiGetInactiveTime", 66 }, + { "Req_WifiGetMaxTxPower", 18 }, + { "Req_WifiGetPromiscuous", 46 }, + { "Req_WifiGetPromiscuousCtrlFilter", 50 }, + { "Req_WifiGetPromiscuousFilter", 48 }, + { "Req_WifiGetProtocol", 38 }, + { "Req_WifiGetProtocols", 83 }, + { "Req_WifiGetPs", 13 }, + { "Req_WifiGetTsfTime", 64 }, + { "Req_WifiInit", 20 }, + { "Req_WifiRestore", 33 }, + { "Req_WifiScanGetApNum", 30 }, + { "Req_WifiScanGetApRecord", 91 }, + { "Req_WifiScanGetApRecords", 31 }, + { "Req_WifiScanStart", 28 }, + { "Req_WifiScanStop", 29 }, + { "Req_WifiSetAnt", 62 }, + { "Req_WifiSetAntGpio", 60 }, + { "Req_WifiSetBand", 86 }, + { "Req_WifiSetBandMode", 88 }, + { "Req_WifiSetBandwidth", 39 }, + { "Req_WifiSetBandwidths", 84 }, + { "Req_WifiSetChannel", 41 }, + { "Req_WifiSetConfig", 26 }, + { "Req_WifiSetCountry", 43 }, + { "Req_WifiSetCountryCode", 74 }, + { "Req_WifiSetCsi", 59 }, + { "Req_WifiSetCsiConfig", 58 }, + { "Req_WifiSetDynamicCs", 80 }, + { "Req_WifiSetEventMask", 55 }, + { "Req_WifiSetInactiveTime", 65 }, + { "Req_WifiSetMaxTxPower", 17 }, + { "Req_WifiSetOkcSupport", 121 }, + { "Req_WifiSetPromiscuous", 45 }, + { "Req_WifiSetPromiscuousCtrlFilter", 49 }, + { "Req_WifiSetPromiscuousFilter", 47 }, + { "Req_WifiSetProtocol", 37 }, + { "Req_WifiSetProtocols", 82 }, + { "Req_WifiSetPs", 12 }, + { "Req_WifiSetRssiThreshold", 68 }, + { "Req_WifiSetStorage", 53 }, + { "Req_WifiSetVendorIe", 54 }, + { "Req_WifiStaEnterpriseDisable", 102 }, + { "Req_WifiStaEnterpriseEnable", 101 }, + { "Req_WifiStaGetAid", 78 }, + { "Req_WifiStaGetApInfo", 36 }, + { "Req_WifiStaGetNegotiatedPhymode", 79 }, + { "Req_WifiStaGetRssi", 81 }, + { "Req_WifiStaItwtGetFlowIdStatus", 98 }, + { "Req_WifiStaItwtSendProbeReq", 99 }, + { "Req_WifiStaItwtSetTargetWakeTimeOffset", 100 }, + { "Req_WifiStaItwtSetup", 95 }, + { "Req_WifiStaItwtSuspend", 97 }, + { "Req_WifiStaItwtTeardown", 96 }, + { "Req_WifiStaTwtConfig", 94 }, + { "Req_WifiStart", 22 }, + { "Req_WifiStatisDump", 67 }, + { "Req_WifiStop", 23 }, + { "Resp_Base", 129 }, + { "Resp_ConfigHeartbeat", 147 }, + { "Resp_EapClearCaCert", 240 }, + { "Resp_EapClearCertificateAndKey", 242 }, + { "Resp_EapClearIdentity", 232 }, + { "Resp_EapClearNewPassword", 238 }, + { "Resp_EapClearPassword", 236 }, + { "Resp_EapClearUsername", 234 }, + { "Resp_EapGetDisableTimeCheck", 243 }, + { "Resp_EapSetCaCert", 239 }, + { "Resp_EapSetCertificateAndKey", 241 }, + { "Resp_EapSetDisableTimeCheck", 251 }, + { "Resp_EapSetDomainName", 250 }, + { "Resp_EapSetEapMethods", 252 }, + { "Resp_EapSetFastParams", 247 }, + { "Resp_EapSetIdentity", 231 }, + { "Resp_EapSetNewPassword", 237 }, + { "Resp_EapSetPacFile", 246 }, + { "Resp_EapSetPassword", 235 }, + { "Resp_EapSetSuitebCertification", 245 }, + { "Resp_EapSetTtlsPhase2Method", 244 }, + { "Resp_EapSetUsername", 233 }, + { "Resp_EapUseDefaultCertBundle", 248 }, + { "Resp_FeatureControl", 255 }, + { "Resp_GetCoprocessorFwVersion", 218 }, + { "Resp_GetDhcpDnsStatus", 221 }, + { "Resp_GetMACAddress", 130 }, + { "Resp_GetWifiMode", 132 }, + { "Resp_IfaceMacAddrLenGet", 254 }, + { "Resp_IfaceMacAddrSetGet", 253 }, + { "Resp_Max", 256 }, + { "Resp_OTAActivate", 139 }, + { "Resp_OTABegin", 142 }, + { "Resp_OTAEnd", 144 }, + { "Resp_OTAWrite", 143 }, + { "Resp_SetDhcpDnsStatus", 220 }, + { "Resp_SetMacAddress", 131 }, + { "Resp_SetWifiMode", 133 }, + { "Resp_SuppDppBootstrapGen", 136 }, + { "Resp_SuppDppDeinit", 135 }, + { "Resp_SuppDppInit", 134 }, + { "Resp_SuppDppStartListen", 137 }, + { "Resp_SuppDppStopListen", 138 }, + { "Resp_Wifi80211Tx", 185 }, + { "Resp_WifiApGetStaAid", 180 }, + { "Resp_WifiApGetStaList", 179 }, + { "Resp_WifiClearApList", 160 }, + { "Resp_WifiClearFastConnect", 162 }, + { "Resp_WifiConfig11bRate", 200 }, + { "Resp_WifiConfig80211TxRate", 204 }, + { "Resp_WifiConnect", 152 }, + { "Resp_WifiConnectionlessModuleSetWakeInterval", 201 }, + { "Resp_WifiDeauthSta", 163 }, + { "Resp_WifiDeinit", 149 }, + { "Resp_WifiDisablePmfConfig", 205 }, + { "Resp_WifiDisconnect", 153 }, + { "Resp_WifiFtmEndSession", 198 }, + { "Resp_WifiFtmInitiateSession", 197 }, + { "Resp_WifiFtmRespSetOffset", 199 }, + { "Resp_WifiGetAnt", 191 }, + { "Resp_WifiGetAntGpio", 189 }, + { "Resp_WifiGetBand", 215 }, + { "Resp_WifiGetBandMode", 217 }, + { "Resp_WifiGetBandwidth", 168 }, + { "Resp_WifiGetBandwidths", 213 }, + { "Resp_WifiGetChannel", 170 }, + { "Resp_WifiGetConfig", 155 }, + { "Resp_WifiGetCountry", 172 }, + { "Resp_WifiGetCountryCode", 203 }, + { "Resp_WifiGetEventMask", 184 }, + { "Resp_WifiGetInactiveTime", 194 }, + { "Resp_WifiGetMaxTxPower", 146 }, + { "Resp_WifiGetPromiscuous", 174 }, + { "Resp_WifiGetPromiscuousCtrlFilter", 178 }, + { "Resp_WifiGetPromiscuousFilter", 176 }, + { "Resp_WifiGetProtocol", 166 }, + { "Resp_WifiGetProtocols", 211 }, + { "Resp_WifiGetPs", 141 }, + { "Resp_WifiGetTsfTime", 192 }, + { "Resp_WifiInit", 148 }, + { "Resp_WifiRestore", 161 }, + { "Resp_WifiScanGetApNum", 158 }, + { "Resp_WifiScanGetApRecord", 219 }, + { "Resp_WifiScanGetApRecords", 159 }, + { "Resp_WifiScanStart", 156 }, + { "Resp_WifiScanStop", 157 }, + { "Resp_WifiSetAnt", 190 }, + { "Resp_WifiSetAntGpio", 188 }, + { "Resp_WifiSetBand", 214 }, + { "Resp_WifiSetBandMode", 216 }, + { "Resp_WifiSetBandwidth", 167 }, + { "Resp_WifiSetBandwidths", 212 }, + { "Resp_WifiSetChannel", 169 }, + { "Resp_WifiSetConfig", 154 }, + { "Resp_WifiSetCountry", 171 }, + { "Resp_WifiSetCountryCode", 202 }, + { "Resp_WifiSetCsi", 187 }, + { "Resp_WifiSetCsiConfig", 186 }, + { "Resp_WifiSetDynamicCs", 208 }, + { "Resp_WifiSetEventMask", 183 }, + { "Resp_WifiSetInactiveTime", 193 }, + { "Resp_WifiSetMaxTxPower", 145 }, + { "Resp_WifiSetOkcSupport", 249 }, + { "Resp_WifiSetPromiscuous", 173 }, + { "Resp_WifiSetPromiscuousCtrlFilter", 177 }, + { "Resp_WifiSetPromiscuousFilter", 175 }, + { "Resp_WifiSetProtocol", 165 }, + { "Resp_WifiSetProtocols", 210 }, + { "Resp_WifiSetPs", 140 }, + { "Resp_WifiSetRssiThreshold", 196 }, + { "Resp_WifiSetStorage", 181 }, + { "Resp_WifiSetVendorIe", 182 }, + { "Resp_WifiStaEnterpriseDisable", 230 }, + { "Resp_WifiStaEnterpriseEnable", 229 }, + { "Resp_WifiStaGetAid", 206 }, + { "Resp_WifiStaGetApInfo", 164 }, + { "Resp_WifiStaGetNegotiatedPhymode", 207 }, + { "Resp_WifiStaGetRssi", 209 }, + { "Resp_WifiStaItwtGetFlowIdStatus", 226 }, + { "Resp_WifiStaItwtSendProbeReq", 227 }, + { "Resp_WifiStaItwtSetTargetWakeTimeOffset", 228 }, + { "Resp_WifiStaItwtSetup", 223 }, + { "Resp_WifiStaItwtSuspend", 225 }, + { "Resp_WifiStaItwtTeardown", 224 }, + { "Resp_WifiStaTwtConfig", 222 }, + { "Resp_WifiStart", 150 }, + { "Resp_WifiStatisDump", 195 }, + { "Resp_WifiStop", 151 }, }; const ProtobufCEnumDescriptor rpc_id__descriptor = { @@ -28763,9 +28939,9 @@ const ProtobufCEnumDescriptor rpc_id__descriptor = "RpcId", "RpcId", "", - 276, + 278, rpc_id__enum_values_by_number, - 276, + 278, rpc_id__enum_values_by_name, 8, rpc_id__value_ranges, diff --git a/common/proto/esp_hosted_rpc.pb-c.h b/common/proto/esp_hosted_rpc.pb-c.h index 210d3140..e12f4ed6 100644 --- a/common/proto/esp_hosted_rpc.pb-c.h +++ b/common/proto/esp_hosted_rpc.pb-c.h @@ -81,6 +81,8 @@ typedef struct RpcReqOTAWrite RpcReqOTAWrite; typedef struct RpcRespOTAWrite RpcRespOTAWrite; typedef struct RpcReqOTAEnd RpcReqOTAEnd; typedef struct RpcRespOTAEnd RpcRespOTAEnd; +typedef struct RpcReqOTAActivate RpcReqOTAActivate; +typedef struct RpcRespOTAActivate RpcRespOTAActivate; typedef struct RpcReqWifiSetMaxTxPower RpcReqWifiSetMaxTxPower; typedef struct RpcRespWifiSetMaxTxPower RpcRespWifiSetMaxTxPower; typedef struct RpcReqWifiGetMaxTxPower RpcReqWifiGetMaxTxPower; @@ -407,6 +409,16 @@ typedef enum _RpcId { *0x109 */ RPC_ID__Req_SuppDppStopListen = 265, + /* + *Req_SetSoftAPVendorSpecificIE = 266; //0x10a + *Req_StartSoftAP = 267; //0x10b + *Req_GetSoftAPConnectedSTAList = 268; //0x10c + *Req_StopSoftAP = 269; //0x10d + */ + /* + *0x112 + */ + RPC_ID__Req_OTAActivate = 266, /* *0x10e */ @@ -910,6 +922,13 @@ typedef enum _RpcId { RPC_ID__Resp_SuppDppBootstrapGen = 519, RPC_ID__Resp_SuppDppStartListen = 520, RPC_ID__Resp_SuppDppStopListen = 521, + /* + *Resp_SetSoftAPVendorSpecificIE = 522; + *Resp_StartSoftAP = 523; + *Resp_GetSoftAPConnectedSTAList = 524; + *Resp_StopSoftAP = 525; + */ + RPC_ID__Resp_OTAActivate = 522, RPC_ID__Resp_WifiSetPs = 526, RPC_ID__Resp_WifiGetPs = 527, RPC_ID__Resp_OTABegin = 528, @@ -2687,6 +2706,25 @@ struct RpcRespOTAEnd , 0 } +struct RpcReqOTAActivate +{ + ProtobufCMessage base; +}; +#define RPC__REQ__OTAACTIVATE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__req__otaactivate__descriptor) \ + } + + +struct RpcRespOTAActivate +{ + ProtobufCMessage base; + int32_t resp; +}; +#define RPC__RESP__OTAACTIVATE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&rpc__resp__otaactivate__descriptor) \ + , 0 } + + struct RpcReqWifiSetMaxTxPower { ProtobufCMessage base; @@ -4793,6 +4831,7 @@ typedef enum { RPC__PAYLOAD_REQ_SUPP_DPP_BOOTSTRAP_GEN = 263, RPC__PAYLOAD_REQ_SUPP_DPP_START_LISTEN = 264, RPC__PAYLOAD_REQ_SUPP_DPP_STOP_LISTEN = 265, + RPC__PAYLOAD_REQ_OTA_ACTIVATE = 266, RPC__PAYLOAD_REQ_WIFI_SET_PS = 270, RPC__PAYLOAD_REQ_WIFI_GET_PS = 271, RPC__PAYLOAD_REQ_OTA_BEGIN = 272, @@ -4891,6 +4930,7 @@ typedef enum { RPC__PAYLOAD_RESP_SUPP_DPP_BOOTSTRAP_GEN = 519, RPC__PAYLOAD_RESP_SUPP_DPP_START_LISTEN = 520, RPC__PAYLOAD_RESP_SUPP_DPP_STOP_LISTEN = 521, + RPC__PAYLOAD_RESP_OTA_ACTIVATE = 522, RPC__PAYLOAD_RESP_WIFI_SET_PS = 526, RPC__PAYLOAD_RESP_WIFI_GET_PS = 527, RPC__PAYLOAD_RESP_OTA_BEGIN = 528, @@ -5031,6 +5071,12 @@ struct Rpc RpcReqSuppDppBootstrapGen *req_supp_dpp_bootstrap_gen; RpcReqSuppDppStartListen *req_supp_dpp_start_listen; RpcReqSuppDppStopListen *req_supp_dpp_stop_listen; + /* + *Rpc_Req_StartSoftAP req_start_softap = 267; + *Rpc_Req_SoftAPConnectedSTA req_softap_connected_stas_list = 268; + *Rpc_Req_GetStatus req_stop_softap = 269; + */ + RpcReqOTAActivate *req_ota_activate; RpcReqSetPs *req_wifi_set_ps; RpcReqGetPs *req_wifi_get_ps; RpcReqOTABegin *req_ota_begin; @@ -5132,6 +5178,13 @@ struct Rpc RpcRespSuppDppBootstrapGen *resp_supp_dpp_bootstrap_gen; RpcRespSuppDppStartListen *resp_supp_dpp_start_listen; RpcRespSuppDppStopListen *resp_supp_dpp_stop_listen; + /* + *Rpc_Resp_SetSoftAPVendorSpecificIE resp_set_softap_vendor_specific_ie = 522; + *Rpc_Resp_StartSoftAP resp_start_softap = 523; + *Rpc_Resp_SoftAPConnectedSTA resp_softap_connected_stas_list = 524; + *Rpc_Resp_GetStatus resp_stop_softap = 525; + */ + RpcRespOTAActivate *resp_ota_activate; RpcRespSetPs *resp_wifi_set_ps; RpcRespGetPs *resp_wifi_get_ps; RpcRespOTABegin *resp_ota_begin; @@ -6504,6 +6557,44 @@ RpcRespOTAEnd * void rpc__resp__otaend__free_unpacked (RpcRespOTAEnd *message, ProtobufCAllocator *allocator); +/* RpcReqOTAActivate methods */ +void rpc__req__otaactivate__init + (RpcReqOTAActivate *message); +size_t rpc__req__otaactivate__get_packed_size + (const RpcReqOTAActivate *message); +size_t rpc__req__otaactivate__pack + (const RpcReqOTAActivate *message, + uint8_t *out); +size_t rpc__req__otaactivate__pack_to_buffer + (const RpcReqOTAActivate *message, + ProtobufCBuffer *buffer); +RpcReqOTAActivate * + rpc__req__otaactivate__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__req__otaactivate__free_unpacked + (RpcReqOTAActivate *message, + ProtobufCAllocator *allocator); +/* RpcRespOTAActivate methods */ +void rpc__resp__otaactivate__init + (RpcRespOTAActivate *message); +size_t rpc__resp__otaactivate__get_packed_size + (const RpcRespOTAActivate *message); +size_t rpc__resp__otaactivate__pack + (const RpcRespOTAActivate *message, + uint8_t *out); +size_t rpc__resp__otaactivate__pack_to_buffer + (const RpcRespOTAActivate *message, + ProtobufCBuffer *buffer); +RpcRespOTAActivate * + rpc__resp__otaactivate__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void rpc__resp__otaactivate__free_unpacked + (RpcRespOTAActivate *message, + ProtobufCAllocator *allocator); /* RpcReqWifiSetMaxTxPower methods */ void rpc__req__wifi_set_max_tx_power__init (RpcReqWifiSetMaxTxPower *message); @@ -10466,6 +10557,12 @@ typedef void (*RpcReqOTAEnd_Closure) typedef void (*RpcRespOTAEnd_Closure) (const RpcRespOTAEnd *message, void *closure_data); +typedef void (*RpcReqOTAActivate_Closure) + (const RpcReqOTAActivate *message, + void *closure_data); +typedef void (*RpcRespOTAActivate_Closure) + (const RpcRespOTAActivate *message, + void *closure_data); typedef void (*RpcReqWifiSetMaxTxPower_Closure) (const RpcReqWifiSetMaxTxPower *message, void *closure_data); @@ -11141,6 +11238,8 @@ extern const ProtobufCMessageDescriptor rpc__req__otawrite__descriptor; extern const ProtobufCMessageDescriptor rpc__resp__otawrite__descriptor; extern const ProtobufCMessageDescriptor rpc__req__otaend__descriptor; extern const ProtobufCMessageDescriptor rpc__resp__otaend__descriptor; +extern const ProtobufCMessageDescriptor rpc__req__otaactivate__descriptor; +extern const ProtobufCMessageDescriptor rpc__resp__otaactivate__descriptor; extern const ProtobufCMessageDescriptor rpc__req__wifi_set_max_tx_power__descriptor; extern const ProtobufCMessageDescriptor rpc__resp__wifi_set_max_tx_power__descriptor; extern const ProtobufCMessageDescriptor rpc__req__wifi_get_max_tx_power__descriptor; diff --git a/common/proto/esp_hosted_rpc.proto b/common/proto/esp_hosted_rpc.proto index 0c2ec585..969fc73b 100644 --- a/common/proto/esp_hosted_rpc.proto +++ b/common/proto/esp_hosted_rpc.proto @@ -90,6 +90,7 @@ enum RpcId { //Req_StartSoftAP = 267; //0x10b //Req_GetSoftAPConnectedSTAList = 268; //0x10c //Req_StopSoftAP = 269; //0x10d + Req_OTAActivate = 266; //0x112 Req_WifiSetPs = 270; //0x10e Req_WifiGetPs = 271; //0x10f @@ -261,6 +262,7 @@ enum RpcId { //Resp_StartSoftAP = 523; //Resp_GetSoftAPConnectedSTAList = 524; //Resp_StopSoftAP = 525; + Resp_OTAActivate = 522; Resp_WifiSetPs = 526; Resp_WifiGetPs = 527; @@ -984,6 +986,13 @@ message Rpc_Resp_OTAEnd { int32 resp = 1; } +message Rpc_Req_OTAActivate { +} + +message Rpc_Resp_OTAActivate { + int32 resp = 1; +} + message Rpc_Req_WifiSetMaxTxPower { int32 power = 1; } @@ -1894,10 +1903,10 @@ message Rpc { Rpc_Req_SuppDppStartListen req_supp_dpp_start_listen = 264; Rpc_Req_SuppDppStopListen req_supp_dpp_stop_listen = 265; - //Rpc_Req_SetSoftAPVendorSpecificIE req_set_softap_vendor_specific_ie = 266; //Rpc_Req_StartSoftAP req_start_softap = 267; //Rpc_Req_SoftAPConnectedSTA req_softap_connected_stas_list = 268; //Rpc_Req_GetStatus req_stop_softap = 269; + Rpc_Req_OTAActivate req_ota_activate = 266; Rpc_Req_SetPs req_wifi_set_ps = 270; Rpc_Req_GetPs req_wifi_get_ps = 271; @@ -2024,6 +2033,7 @@ message Rpc { //Rpc_Resp_StartSoftAP resp_start_softap = 523; //Rpc_Resp_SoftAPConnectedSTA resp_softap_connected_stas_list = 524; //Rpc_Resp_GetStatus resp_stop_softap = 525; + Rpc_Resp_OTAActivate resp_ota_activate = 522; Rpc_Resp_SetPs resp_wifi_set_ps = 526; Rpc_Resp_GetPs resp_wifi_get_ps = 527; diff --git a/common/transport/esp_hosted_transport_init.h b/common/transport/esp_hosted_transport_init.h index d7ac7444..aeb94524 100644 --- a/common/transport/esp_hosted_transport_init.h +++ b/common/transport/esp_hosted_transport_init.h @@ -1,5 +1,9 @@ -// Copyright 2025 Espressif Systems (Shanghai) PTE LTD -/* SPDX-License-Identifier: GPL-2.0-only OR Apache-2.0 */ +/* + * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + /* Definitions used in ESP-Hosted Transport Initialization */ @@ -60,9 +64,4 @@ typedef enum { ESP_PRIV_FIRMWARE_VERSION, } ESP_PRIV_TAG_TYPE; -/** - * Macro to convert version number into an integer - */ -#define ESP_HOSTED_VERSION_VAL(major, minor, patch) ((major << 16) | (minor << 8) | (patch)) - #endif diff --git a/docs/esp32_p4_function_ev_board.md b/docs/esp32_p4_function_ev_board.md index 2c543570..7b4c41a1 100644 --- a/docs/esp32_p4_function_ev_board.md +++ b/docs/esp32_p4_function_ev_board.md @@ -11,8 +11,8 @@ - [Building Firmware](#33-building-firmware) - [4. Checking ESP-Hosted](#4-checking-esp-hosted) - [5. Flashing ESP32-C6](#5-flashing-esp32-c6) - - [Using ESP-Prog](#51-using-esp-prog) - - [OTA Updates](#52-ota-updates) + - [Using ESP-Prog](#51-serial-flashing-using-esp-prog-initial-setup) + - [OTA Updates](#52-esp-hosted-slave-ota-updates-recommended) - [6. Troubleshooting](#6-troubleshooting) - [7. Flashing the On-board ESP32-P4 through the ESP-Prog](#7-flashing-esp32-p4) - [8. Testing ESP-Hosted with SPI-FD with other MCUs](#8-testing-esp-hosted-with-spi-fd-with-other-mcus) @@ -21,7 +21,7 @@ ## 1. Introduction -This page documents using ESP-Hosted-MCU on the ESP32-P4-Function-EV-Board. The board comes with an on-board ESP32-C6 module, pre-flashed with ESP-Hosted-MCU slave code (v0.0.6). The board provides a Wi-Fi connection to the on-board ESP32-P4, which acts as the host. +This guide covers using ESP-Hosted-MCU on the ESP32-P4-Function-EV-Board. The board includes an on-board ESP32-C6 module that comes pre-flashed with ESP-Hosted-MCU slave firmware (v0.0.6). This provides Wi-Fi/Bluetooth connectivity to the on-board ESP32-P4, which acts as the host. The image below shows the board. @@ -33,15 +33,13 @@ The ESP32-P4 communicates with the ESP32-C6 module using SDIO. ## 2. Set-Up ESP-IDF -As you have reached here, it is highly likely that you have already setup ESP-IDF. +If you haven't already set up ESP-IDF, choose one of the following options: -If not done, Please set up ESP-IDF: - -#### Option 1: Installer Way +#### Option 1: Installer Way (Recommended) - **Windows** - - Install and setup ESP-IDF on Windows as documented in the [Standard Setup of Toolchain for Windows](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/windows-setup.html). - - Use the ESP-IDF [Powershell Command Prompt](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/windows-setup.html#using-the-command-prompt) for subsequent commands. + - Follow the [Standard Setup of Toolchain for Windows](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/windows-setup.html) + - Use the ESP-IDF [Powershell Command Prompt](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/windows-setup.html#using-the-command-prompt) for all commands - **Linux or MacOS** - For bash: @@ -55,23 +53,24 @@ If not done, Please set up ESP-IDF: #### Option 2: Manual Way -Please follow the [ESP-IDF Get Started Guide](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html) for manual installation. +Follow the [ESP-IDF Get Started Guide](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html) for manual installation. ## 3. Building Host for the P4 ### 3.1. Adding Components -Add `esp_wifi_remote` and `esp_hosted` components to the project: +Add the required components to your project: -``` +```bash idf.py add-dependency "espressif/esp_wifi_remote" idf.py add-dependency "espressif/esp_hosted" ``` -Remove 'esp-extconn' if present in `main/idf_component.yml`, as esp-extconn and esp-hosted cannot work together. -Open the `main/idf_component.yml` file and remove/comment the following block if present: +**Important:** Remove `esp-extconn` if present, as it conflicts with `esp-hosted`. -``` +Open `main/idf_component.yml` and remove or comment out this block if it exists: + +```yaml # ------- Delete or comment this block --------- espressif/esp-extconn: version: "~0.1.0" @@ -80,18 +79,15 @@ espressif/esp-extconn: # ----------------------------------- ``` -It is always good to use `esp_wifi_remote` as it provides all the Wi-Fi config and a wrapper abstraction layer. -But you can also evaluate without using it. - > [!IMPORTANT] -> Co-processor selection is done by wifi-remote. Ensure the correct -> co-processor chip is selected in `Component config` -> `Wi-Fi -> Remote` -> `choose slave target`. The target selected will affect -> the ESP-Hosted transport options and default GPIOs used. +> The co-processor is selected through `esp_wifi_remote`. Make sure to select the correct slave target in: +> `Component config` → `Wi-Fi Remote` → `choose slave target` +> +> This selection determines the ESP-Hosted transport options and default GPIOs. ### 3.2. Configuring Defaults -Edit the `sdkconfig.defaults.esp32p4` file such that, it would have following content: +Edit `sdkconfig.defaults.esp32p4` to include the following configuration: ``` ### sdkconfig for ESP32-P4 + C6 Dev board @@ -115,22 +111,23 @@ CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64 CONFIG_LWIP_TCP_SACK_OUT=y ``` -Optimised parameters for using other co-processors with the ESP32-P4 can be found in the [Performance Optimization Guide](performance_optimization.md). +For optimized parameters when using other co-processors, see the [Performance Optimization Guide](performance_optimization.md). ### 3.3. Building Firmware -Set the ESP32-P4 as the target, build, flash the firmware and -(optionally) monitor ESP32-P4 console output: +Build and flash the firmware: ```sh idf.py set-target esp32p4 idf.py build -idf.py -p flash monitor +idf.py -p flash monitor ``` +Replace `` with your actual serial port (e.g., `COM3` on Windows or `/dev/ttyUSB0` on Linux). + ## 4. Checking ESP-Hosted -When the P4 is running with Hosted, you should see console output similar to this after start-up: +After flashing, you should see output similar to this on the console: ``` I (498) H_API: esp_wifi_remote_init @@ -186,88 +183,39 @@ I (1848) H_SDIO_DRV: Received INIT event I (1868) rpc_wrap: Received Slave ESP Init ``` -## 5. Flashing ESP32-C6 -ESP32-C6 flashing is totally **optional**, as C6 is expected to be pre-flashed with ESP-Hosted slave firmware, 0.0.6. If you wish to get updated ESP-Hosted slave firmware, you can flash it using two ways, Either with ESP-Prog on ESP32-C6, or using OTA update configured using web server. - -### 5.1 OTA Updates - -To update the ESP32-C6 slave module using Over-The-Air (OTA) updates, follow these steps: - -1. Build the ESP-Hosted slave firmware for the ESP32-C6 module: +This confirms that ESP-Hosted is running correctly. -``` -idf.py create-project-from-example "espressif/esp_hosted:slave" -``` - -2. Set the target and start `Menuconfig`: - -```sh -idf.py set-target esp32c6 -idf.py menuconfig -``` - -3. Under **Example Configuration**, ensure that the Hosted transport - selected is `SDIO`. - -4. Build the firmware: - -```sh -idf.py build -``` - -5. Upload the firmware (the build/network_adapter.bin file) to a server or a local directory accessible via HTTP. - -6. On the ESP32-P4 host, add the following code to your application to initiate the OTA update: - -``` -#include "esp_hosted.h" - -esp_err_t esp_hosted_slave_ota(const char *url); -``` - -7. Call the `esp_hosted_slave_ota` function with the URL of the firmware binary: - -``` -esp_err_t err = esp_hosted_slave_ota("http://example.com/path/to/network_adapter.bin"); -if (err != ESP_OK) { - ESP_LOGE(TAG, "Failed to start OTA update: %s", esp_err_to_name(err)); -} -``` - -8. Monitor the console output to see the OTA update progress. +## 5. Flashing ESP32-C6 -### 5.2 Using ESP-Prog +Note: The ESP32-C6 comes pre-flashed with ESP-Hosted slave firmware v0.0.6, so this step is optional unless you need to update the firmware. However, it is **recommended** to upgrade to the latest slave firmware to get updated features and performance optimizations. -> [!NOTE] -> ESP-Prog is only required if you want to flash firmware to the -> ESP32-C6 module using the standard ESP Tools. +### 5.1 Serial Flashing Using ESP-Prog (Initial Setup) -This step is optional, as C6 is expected to be pre-flashed with ESP-Hosted slave firmware, 0.0.6. +> [!TIP] +> For firmware updates after initial setup, use the OTA method described in section 5.2 -The image below shows the board with an ESP-Prog connected to the -header to communicate with the on-board ESP32-C6.. +You'll need an ESP-Prog or similar UART adapter for serial flashing. ESP32-P4-Function-EV-Board with ESP-Prog Connected to ESP32-C6 *ESP32-P4-Function-EV-Board with ESP-Prog Connected to ESP32-C6* -If you need to update the ESP-Hosted slave firmware on the on-board -ESP32-C6 module using ESP-Prog, follow these steps: +**Steps:** -1. Check out the ESP-Hosted slave example project: +1. Get the ESP-Hosted slave example: -``` +```bash idf.py create-project-from-example "espressif/esp_hosted:slave" ``` -2. Set the target and start `Menuconfig`: +2. Configure the project: ```sh idf.py set-target esp32c6 idf.py menuconfig ``` -3. Navigate and ensure SDIO is enabled. By default it should already be enabled. +3. Verify SDIO is enabled (it should be by default): ``` Example Configuration └── Bus Config in between Host and Co-processor @@ -281,67 +229,55 @@ idf.py menuconfig idf.py build ``` -5. Connect the Program Header on the ESP-Prog to the `PROG_C6` header - on the board. The connections are as follows: - -| ESP-Prog | PROG_C6 | Notes | -| --- | --- | --- | -| ESP\_EN | EN | | -| ESP\_TXD | TXD | | -| ESP\_RXD | RXD | | -| VDD | - | Do not connect | -| GND | GND | | -| ESP\_IO0 | IO0 | | - +5. Connect ESP-Prog to the `PROG_C6` header: -6. Flashing the firmware +| ESP-Prog | PROG_C6 | Notes | +| --- | --- | --- | +| ESP\_EN | EN | | +| ESP\_TXD | TXD | | +| ESP\_RXD | RXD | | +| VDD | - | **Do not connect** | +| GND | GND | | +| ESP\_IO0 | IO0 | | -The on-board ESP32-P4 controls the reset signal for the ESP32-C6. To -prevent the P4 interfering with the C6 while flashing (by asserting -the C6 Reset signal during the firmware download), set the P4 into -Bootloader mode before flashing the firmware to the C6: +6. Put the ESP32-P4 into bootloader mode to prevent interference: -###### Manual Way - 1. hold down the `BOOT` button on the board - 2. press and release the `RST` button on the board - 3. release the `BOOT` button + **Manual method:** + - Hold down the `BOOT` button + - Press and release the `RST` button + - Release the `BOOT` button -###### Script Way - -```sh -esptool.py -p --before default_reset --after no_reset run -``` + **Script method:** + ```sh + esptool.py -p --before default_reset --after no_reset run + ``` -You can now flash the firmware to the C6 (and monitor the console -output): +7. Flash the C6: ```sh idf.py -p flash monitor ``` -## 6. Troubleshooting +### 5.2 ESP-Hosted Slave OTA Updates (Recommended) -If you encounter issues with using ESP-Hosted, see the following guide: +The ESP-Hosted link comes pre-configured and ready to use on first boot. You can update the slave firmware remotely from the host MCU using OTA (Over-The-Air) updates: **No** ESP-Prog, serial cable, or extra GPIO connections are required. -- [Troubleshooting Guide](troubleshooting.md) +For step-by-step instructions, see the [Host Performs Slave OTA Example](../examples/host_performs_slave_ota/README.md). -
-Flashing the On-board ESP32-P4 through the Serial Interface +## 6. Troubleshooting -## 7. Flashing the On-board ESP32-P4 through the ESP-Prog +If you encounter any issues, refer to the [Troubleshooting Guide](troubleshooting.md). -The USB connector on the board is the standard method for flashing the -firmware to the P4. An alternative method is to flash the P4 through -its serial interface using a ESP-Prog. +
+7. Flashing the On-board ESP32-P4 through the ESP-Prog -The image below shows the connection between the ESP-Prog and the -serial port pins on the P4 header for programming. +The standard way to flash the P4 is through the **USB connector with Type-C cable** inserted into USB-UART port on ESP32-P4. However, you can also use an ESP-Prog connected to the serial interface. ESP32-P4 Serial Connection with ESP-Prog *ESP32-P4 Serial Connection with ESP-Prog* -The connection between the ESP-Prog and the P4 header is as follows: +**Connections:** | ESP-Prog | P4 Header | | --- | --- | @@ -349,30 +285,31 @@ The connection between the ESP-Prog and the P4 header is as follows: | ESP\_RXD | U0RXD (GPIO 38) | | GND | GND | -Leave the other ESP-Prog connected unconnected. +Leave other ESP-Prog pins disconnected. -To flash the P4: +**Flashing steps:** -1. hold down the `BOOT` button on the board -2. press and release the `RST` button on the board -3. release the `BOOT` button +1. Hold down the `BOOT` button +2. Press and release the `RST` button +3. Release the `BOOT` button -You can now flash the firmware (and monitor the console output): +4. Flash the firmware: ```sh idf.py -p flash monitor ``` -To restart the P4 after flashing, press and release the `RST` button -on the board. +5. Press the `RST` button to restart the P4 after flashing.
## 8. Testing ESP-Hosted with SPI-FD with other MCUs -You can use SPI-FD (Full Duplex) on the ESP32-P4 to test ESP-Hosted with other ESP32s. Do this by connecting the ESP32 to the P4 through the J1 GPIO header on the ESP32-P4 DevKit. +You can test ESP-Hosted using SPI Full Duplex (SPI-FD) by connecting another ESP-Dev-Kit or ESP Chipset to the P4 through the J1 GPIO header. + +**Important:** Use GPIO 36 or lower to avoid LDO power issues with higher-numbered GPIOs. -Use GPIOs 36 or lower on the P4 DevKit to avoid LDO power issues with high numbered GPIOs. Here is one combination on GPIOs that can be used on the P4: +**Recommended GPIO configuration:** | Function | GPIO | |------------|------| @@ -385,15 +322,14 @@ Use GPIOs 36 or lower on the P4 DevKit to avoid LDO power issues with high numbe | Reset | 2 | > [!NOTE] -> Avoid using GPIO 35 and 36 as they affect the ESP32-P4 Bootloader Mode. See [ESP32-P4 Boot Mode Selection](https://docs.espressif.com/projects/esptool/en/latest/esp32p4/advanced-topics/boot-mode-selection.html#select-bootloader-mode) for more information. +> Avoid using GPIO 35 and 36, as they affect bootloader mode. See [ESP32-P4 Boot Mode Selection](https://docs.espressif.com/projects/esptool/en/latest/esp32p4/advanced-topics/boot-mode-selection.html#select-bootloader-mode) for details. > [!TIP] -> -> To measure the optimal performance, check out the [Shield Box Test Setup](shield-box-test-setup.md). +> For optimal performance testing, check out the [Shield Box Test Setup](shield-box-test-setup.md). ## 9. References -- ESP32-P4-Function-EV-Board: https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32p4/esp32-p4-function-ev-board/ -- ESP-Prog: https://docs.espressif.com/projects/esp-iot-solution/en/latest/hw-reference/ESP-Prog_guide.html -- `esp_wifi_remote` component: https://components.espressif.com/components/espressif/esp_wifi_remote/ -- `esp_hosted` component: https://components.espressif.com/components/espressif/esp_hosted/ +- [ESP32-P4-Function-EV-Board Documentation](https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32p4/esp32-p4-function-ev-board/) +- [ESP-Prog Guide](https://docs.espressif.com/projects/esp-iot-solution/en/latest/hw-reference/ESP-Prog_guide.html) +- [`esp_wifi_remote` component](https://components.espressif.com/components/espressif/esp_wifi_remote/) +- [`esp_hosted` component](https://components.espressif.com/components/espressif/esp_hosted/) diff --git a/docs/implemented_rpcs.md b/docs/implemented_rpcs.md index 0aa4c5a7..b8ab9463 100644 --- a/docs/implemented_rpcs.md +++ b/docs/implemented_rpcs.md @@ -106,6 +106,8 @@ The RPC IDs listed here are for requests and events. Each request will have a co | 96 | 385 | IfaceMacAddrSetGet | 2.5.2 | | 97 | 386 | IfaceMacAddrLenGet | 2.5.2 | | 98 | 387 | FeatureControl | 2.5.2 | +| 99 | 266 | OTAActivate | 2.6.0 | + ## List of RPC Events diff --git a/docs/migration_guide.md b/docs/migration_guide.md index 4fa1e1e5..e72c4c1a 100644 --- a/docs/migration_guide.md +++ b/docs/migration_guide.md @@ -1,32 +1,226 @@ -# Migration Guide +This migration guide documents key changes in ESP-Hosted that users must be aware of when migrating from older versions. -This guide documents changes in ESP-Hosted that users must be aware of when migrating from older versions of ESP-Hosted. +#### Index +1. [2.6.0 - ESP-Hosted Slave OTA](#coloryellow-text2512---esp-hosted-slave-ota) +2. [2.5.2 - Bluetooth Controller on Co-Processor Disabled by Default](#coloryellow-text252---bluetooth-controller-on-co-processor-disabled-by-default) -## Migrating to V2.5.2 -### Bluetooth Controller on Co-processor Now Disabled by Default +# $${\color{yellow} \text{2.6.0 - ESP-Hosted Slave OTA}}$$ -Before V2.5.2, the Bluetooth Controller on the co-processor was initialized and enabled by default when the co-processor starts. Now, the Controller is left in a disabled state upon start-up. -**Reason for Change.** +## Migration needed from versions -This change is to allow users to change the Bluetooth MAC Address of the co-processor from the default MAC address, if required. This can only be done before the Bluetooth Controller is initialized and enabled. +| Slave version | Host version | +| ------------- | ------------ | +| > 2.5.X | > 2.5.X | -**Changes required on Host.** +## Reason for change -Host must enable the Bluetooth Controller on the co-processor, before starting the Bluetooth Stack on the Host. To do this: +1. The existing `esp_hosted_slave_ota()` API was restrictive, supporting only HTTP-based OTA updates. + The OTA APIs are now exposed so developers can implement their own OTA mechanisms. +2. The port layer previously contained OTA logic, which forced inclusion of the HTTP client in the host codebase even when not required. -1. Call `esp_hosted_connect_to_slave()` to ensure there is a ESP-Hosted connection to the slave. -2. **[Optional]** Set the BT Mac address using `esp_hosted_iface_mac_addr_set` -3. Initialise the BT Controller using `esp_hosted_bt_controller_init` -4. Enable the BT Controller using `esp_hosted_bt_controller_enable` +## Changes required on host + +If you are migrating from the old `esp_hosted_slave_ota()` function, update your code as follows. + +### Old API (deprecated) + +```c +#include "esp_hosted.h" + +const char *image_url = "http://example.com/network_adapter.bin"; +esp_err_t ret = esp_hosted_slave_ota(image_url); +if (ret == ESP_OK) { + printf("OTA update failed[%d]\n", ret); +} +``` + +## New APIs + +The slave OTA process is now performed using the following APIs. + +### `esp_hosted_slave_ota_begin()` + +```c +esp_err_t esp_hosted_slave_ota_begin(void); +``` + +Initializes the OTA process on the slave. + +* Arguments: None +* Returns: `ESP_OK` on success, or an error code on failure +* What it does: + + * Prepares the slave for firmware reception + * Allocates OTA buffers + * Sets up the OTA partition on the slave + +### `esp_hosted_slave_ota_write()` + +```c +esp_err_t esp_hosted_slave_ota_write(const void *data, size_t size); +``` + +Sends firmware data chunks to the slave. + +* Arguments: + + * `data`: Pointer to firmware data chunk + * `size`: Size of the data chunk (typically 1400–1500 bytes) +* Returns: `ESP_OK` on success, or an error code on failure +* What it does: + + * Transmits firmware data over ESP-Hosted transport (SDIO/SPI/UART) + * The slave writes data to its OTA partition + * Can be called multiple times for large firmware images + +### `esp_hosted_slave_ota_end()` + +```c +esp_err_t esp_hosted_slave_ota_end(void); +``` + +Finalizes the OTA process. + +* Arguments: None +* Returns: `ESP_OK` on success, or an error code on failure +* What it does: + + * Validates the complete firmware image on the slave + * Calculates and verifies checksums + * Marks the new firmware as valid but not yet active + +### `esp_hosted_slave_ota_activate()` + +```c +esp_err_t esp_hosted_slave_ota_activate(void); +``` + +Activates the newly flashed firmware. + +* Arguments: None +* Returns: `ESP_OK` on success, or an error code on failure +* What it does: + + * Switches the slave’s boot partition to the new firmware + * Triggers slave reboot with the new firmware + * Note: After this call, the slave restarts with the new firmware + +## How to use the new APIs + +A dedicated example demonstrates the usage of the new OTA APIs: +[Slave OTA using ESP-Hosted transport](../examples/host_performs_slave_ota/README.md) + +> [!TIP] +> The example uses the new ESP-Hosted-MCU Slave OTA APIs. +> You can reuse or customize it for your own OTA workflow. + +Example methods supported: + +| Method | Description | +| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | +| Partition method | Slave firmware binary stored in Host’s partition table (`slave_fw` partition). Requires an extra host partition, but no Wi-Fi connectivity. | +| LittleFS method | Host partition formatted as LittleFS and stores the slave firmware. Requires an extra host partition, but no Wi-Fi connectivity. | +| HTTPS method | Slave firmware binary hosted on an HTTPS server. No extra host partition needed, but requires Wi-Fi connectivity. | + +# $${\color{yellow} \text{2.5.2 - Bluetooth Controller on Co-Processor Disabled by Default}}$$ + +## Migration needed from versions + +| Slave version | Host version | +| ------------- | ------------ | +| > 2.5.1 | > 2.5.1 | + +Before v2.5.2, the Bluetooth controller on the co-processor was initialized and enabled by default. +From v2.5.2 onwards, it starts in a disabled state. + +## Reason for change + +This allows users to modify the Bluetooth MAC address before the controller is initialized, as it can only be changed prior to enabling the controller. + +## New APIs + +### `esp_hosted_bt_controller_init()` + +```c +esp_err_t esp_hosted_bt_controller_init(void); +``` + +Initializes the Bluetooth controller on the co-processor. + +* Arguments: None +* Returns: `ESP_OK` on success, or an error code on failure +* What it does: + + * Allocates and initializes controller resources + * Prepares the controller for activation + +### `esp_hosted_bt_controller_deinit()` + +```c +esp_err_t esp_hosted_bt_controller_deinit(bool mem_release); +``` + +Deinitializes the Bluetooth controller on the co-processor. + +* Arguments: + + * `mem_release`: If true, releases controller memory (cannot be reused) +* Returns: `ESP_OK` on success, or an error code on failure +* What it does: + + * Stops the Bluetooth controller + * Optionally releases memory used by the controller + * Once released, the controller cannot be reinitialized without reboot + +### `esp_hosted_bt_controller_enable()` + +```c +esp_err_t esp_hosted_bt_controller_enable(void); +``` + +Enables the Bluetooth controller on the co-processor. + +* Arguments: None +* Returns: `ESP_OK` on success, or an error code on failure +* What it does: + + * Starts the Bluetooth controller task + * Enables radio and HCI interfaces for Bluetooth operation + +### `esp_hosted_bt_controller_disable()` + +```c +esp_err_t esp_hosted_bt_controller_disable(void); +``` + +Disables the Bluetooth controller on the co-processor. + +* Arguments: None +* Returns: `ESP_OK` on success, or an error code on failure +* What it does: + + * Gracefully stops the controller + * Disables the Bluetooth radio + * Must be called before deinitializing the controller + +## Changes required on host + +Before starting the Bluetooth stack on the host: + +1. Call `esp_hosted_connect_to_slave()` to establish a connection with the slave. +2. (Optional) Set the Bluetooth MAC address using `esp_hosted_iface_mac_addr_set()`. +3. Initialize the Bluetooth controller using `esp_hosted_bt_controller_init()`. +4. Enable the Bluetooth controller using `esp_hosted_bt_controller_enable()`. See [Initializing the Bluetooth Controller](bluetooth_design.md#31-initializing-the-bluetooth-controller) for more details. -You can now start the Host Bluetooth Stack and use Bluetooth as per normal. +## How to use the new APIs -All ESP-Hosted Bluetooth Host examples (NimBLE and BlueDroid) have been updated with this change. +You can now start the host Bluetooth stack and use Bluetooth as usual. +All ESP-Hosted Bluetooth host examples (NimBLE and BlueDroid) have been updated accordingly. -For an example on how to change the BT Mac Address before starting the Bluetooth Controller, see: +For an example showing how to change the BT MAC address before starting the controller, refer to: +[BT Controller Example](../examples/host_bt_controller_mac_addr/) -- [BT Controller example](../examples/host_bt_controller_mac_addr/) diff --git a/docs/sdio.md b/docs/sdio.md index dba16010..9c324e25 100644 --- a/docs/sdio.md +++ b/docs/sdio.md @@ -262,7 +262,13 @@ There are four steps to flash the ESP-Hosted co-processor firmware: ### 6.4 Co-processor Flashing -There are two methods to flash the ESP-Hosted co-processor firmware: +It is **recommended** to periodically upgrade the slave firmware to leverage new features, bug fixes, and performance improvements. + +| Method | Description | Recommended Use | +| -------------------------- | -------------------------------------------------- | ----------------------------------------------------- | +| **Direct Serial Flashing** | Uses UART pins for direct firmware installation | First-time setup to install ESP-Hosted slave firmware | +| **Slave OTA Update** | Performs slave firmware updates directly from Host | All subsequent updates after initial installation | + #### 6.4.1 Serial Flashing (Initial Setup) @@ -287,48 +293,11 @@ idf.py -p flash ##### 6.4.2 Co-processor OTA Flashing (Subsequent Updates) -For subsequent updates, you can re-use ESP-Hosted-MCU transport, as it should be already working. While doing OTA, Complete co-processor firmware image is not needed and only co-processor application partition, 'network_adapter.bin' need to be re-flashed remotely from host. - -1. Ensure your co-processor device is connected and communicating with the host with existing ESP-Hosted-MCU. - -2. Create a web server -You can re-use your existing web server or create a new locally for testing. Below is example to do it. - - Make a new directory so that web server can be run into it and navigate into it - - Create simple local web server using python3 - - ```bash - python3 -m http.server 8080 - ``` -3. Copy the co-processor app partition `network_adapter.bin` in the directory where you created the web server. - - The `network_adapter.bin` can be found in your co-processor project build at `/build/network_adapter.bin` - -4. Verify if web server is set-up correctly - - Open link `http://127.0.0.1:8080` in the browser and check if network_adapter.bin is available. - - Right click and copy the complete URL of this network_adapter.bin and note somewhere. +The ESP-Hosted link comes pre-configured and ready to use on first boot. You can update the slave firmware remotely from the host MCU using OTA (Over-The-Air) updates: **No** ESP-Prog, serial cable, or extra GPIO connections are required. -5. On the **host side**, use the `esp_hosted_slave_ota` function to initiate the OTA update: +For step-by-step instructions, see the [Host Performs Slave OTA Example](../examples/host_performs_slave_ota/README.md). - ```c - #include "esp_hosted.h" - const char* image_url = "http://example.com/path/to/network_adapter.bin"; //web server full url - esp_err_t ret = esp_hosted_slave_ota(image_url); - if (ret == ESP_OK) { - printf("co-processor OTA update failed[%d]\n", ret); - } - ``` - - This function will download the firmware in chunk by chunk as http client from the specified URL and flash it to the co-processor device through the established transport. - In above web server example, You can paste the copied url earlier. - - -6. Monitor the OTA progress through the console output on both the host and co-processor devices. - -> [!NOTE] -> -> A. The `esp_hosted_slave_ota` function is part of the ESP-Hosted-MCU API and handles the OTA process through the transport layer. \ -> B. Ensure that your host application has web server connectivity to download the firmware file. \ -> C. The co-processor device doesn't need to be connected to the web server for this OTA method. ## 7 Flashing the Host diff --git a/docs/spi_full_duplex.md b/docs/spi_full_duplex.md index f7e0965e..d1f2a947 100644 --- a/docs/spi_full_duplex.md +++ b/docs/spi_full_duplex.md @@ -302,6 +302,13 @@ idf.py build ### 7.4 Co-processor Flashing +It is **recommended** to periodically upgrade the slave firmware to leverage new features, bug fixes, and performance improvements. + +| Method | Description | Recommended Use | +| -------------------------- | -------------------------------------------------- | ----------------------------------------------------- | +| **Direct Serial Flashing** | Uses UART pins for direct firmware installation | First-time setup to install ESP-Hosted slave firmware | +| **Slave OTA Update** | Performs slave firmware updates directly from Host | All subsequent updates after initial installation | + ##### 7.4.1 Serial Flashing (Initial Setup) For the initial setup or when OTA is not available, use serial flashing. @@ -324,48 +331,9 @@ idf.py -p flash ##### 7.4.2 Co-processor OTA Flashing (Subsequent Updates) -For subsequent updates, you can re-use ESP-Hosted-MCU transport, as it should be already working. While doing OTA, Complete co-processor firmware image is not needed and only co-processor application partition, 'network_adapter.bin' need to be re-flashed remotely from host. - -1. Ensure your co-processor device is connected and communicating with the host with existing ESP-Hosted-MCU. - -2. Create a web server -You can re-use your existing web server or create a new locally for testing. Below is example to do it. - - Make a new directory so that web server can be run into it and navigate into it - - Create simple local web server using python3 - - ```bash - python3 -m http.server 8080 - ``` -3. Copy the co-processor app partition `network_adapter.bin` in the directory where you created the web server. - - The `network_adapter.bin` can be found in your co-processor project build at `/build/network_adapter.bin` - -4. Verify if web server is set-up correctly - - Open link `http://127.0.0.1:8080` in the browser and check if network_adapter.bin is available. - - Right click and copy the complete URL of this network_adapter.bin and note somewhere. - -5. On the **host side**, use the `esp_hosted_slave_ota` function to initiate the OTA update: +The ESP-Hosted link comes pre-configured and ready to use on first boot. You can update the slave firmware remotely from the host MCU using OTA (Over-The-Air) updates: **No** ESP-Prog, serial cable, or extra GPIO connections are required. - ```c - #include "esp_hosted.h" - - const char* image_url = "http://example.com/path/to/network_adapter.bin"; //web server full url - esp_err_t ret = esp_hosted_slave_ota(image_url); - if (ret == ESP_OK) { - printf("co-processor OTA update failed[%d]\n", ret); - } - ``` - - This function will download the firmware in chunk by chunk as http client from the specified URL and flash it to the co-processor device through the established transport. - In above web server example, You can paste the copied url earlier. - - -6. Monitor the OTA progress through the console output on both the host and co-processor devices. - -> [!NOTE] -> -> A. The `esp_hosted_slave_ota` function is part of the ESP-Hosted-MCU API and handles the OTA process through the transport layer. \ -> B. Ensure that your host application has web server connectivity to download the firmware file. \ -> C. The co-processor device doesn't need to be connected to the web server for this OTA method. +For step-by-step instructions, see the [Host Performs Slave OTA Example](../examples/host_performs_slave_ota/README.md). ## 8 Flashing the Host diff --git a/docs/spi_half_duplex.md b/docs/spi_half_duplex.md index e7ac8382..811b7e22 100644 --- a/docs/spi_half_duplex.md +++ b/docs/spi_half_duplex.md @@ -534,7 +534,15 @@ idf.py build ### 9.4 Co-processor Flashing -There are two methods to flash the ESP-Hosted co-processor firmware: +## Firmware Upgrade Guidelines + +It is **recommended** to periodically upgrade the slave firmware to leverage new features, bug fixes, and performance improvements. + +| Method | Description | Recommended Use | +| -------------------------- | -------------------------------------------------- | ----------------------------------------------------- | +| **Direct Serial Flashing** | Uses UART pins for direct firmware installation | First-time setup to install ESP-Hosted slave firmware | +| **Slave OTA Update** | Performs slave firmware updates directly from Host | All subsequent updates after initial installation | + ##### 9.4.1 Serial Flashing (Initial Setup) @@ -559,48 +567,9 @@ idf.py -p flash ##### 9.4.2 Co-processor OTA Flashing (Subsequent Updates) -For subsequent updates, you can re-use ESP-Hosted-MCU transport, as it should be already working. While doing OTA, Complete co-processor firmware image is not needed and only co-processor application partition, 'network_adapter.bin' need to be re-flashed remotely from host. - -1. Ensure your co-processor device is connected and communicating with the host with existing ESP-Hosted-MCU. - -2. Create a web server -You can re-use your existing web server or create a new locally for testing. Below is example to do it. - - Make a new directory so that web server can be run into it and navigate into it - - Create simple local web server using python3 - - ```bash - python3 -m http.server 8080 - ``` -3. Copy the co-processor app partition `network_adapter.bin` in the directory where you created the web server. - - The `network_adapter.bin` can be found in your co-processor project build at `/build/network_adapter.bin` - -4. Verify if web server is set-up correctly - - Open link `http://127.0.0.1:8080` in the browser and check if network_adapter.bin is available. - - Right click and copy the complete URL of this network_adapter.bin and note somewhere. - -5. On the **host side**, use the `esp_hosted_slave_ota` function to initiate the OTA update: +The ESP-Hosted link comes pre-configured and ready to use on first boot. You can update the slave firmware remotely from the host MCU using OTA (Over-The-Air) updates: **No** ESP-Prog, serial cable, or extra GPIO connections are required. - ```c - #include "esp_hosted.h" - - const char* image_url = "http://example.com/path/to/network_adapter.bin"; //web server full url - esp_err_t ret = esp_hosted_slave_ota(image_url); - if (ret == ESP_OK) { - printf("co-processor OTA update failed[%d]\n", ret); - } - ``` - - This function will download the firmware in chunk by chunk as http client from the specified URL and flash it to the co-processor device through the established transport. - In above web server example, You can paste the copied url earlier. - - -6. Monitor the OTA progress through the console output on both the host and co-processor devices. - -> [!NOTE] -> -> - The `esp_hosted_slave_ota` function is part of the ESP-Hosted-MCU API and handles the OTA process through the transport layer. -> - Ensure that your host application has web server connectivity to download the firmware file. -> - The co-processor device doesn't need to be connected to the web server for this OTA method. +For step-by-step instructions, see the [Host Performs Slave OTA Example](../examples/host_performs_slave_ota/README.md). ## 10 Flashing the Host diff --git a/docs/uart.md b/docs/uart.md index 8c7e0444..c6fa0845 100644 --- a/docs/uart.md +++ b/docs/uart.md @@ -170,7 +170,13 @@ idf.py build ### 6.4 Co-processor Flashing -There are two methods to flash the ESP-Hosted co-processor firmware: +It is **recommended** to periodically upgrade the slave firmware to leverage new features, bug fixes, and performance improvements. + +| Method | Description | Recommended Use | +| -------------------------- | -------------------------------------------------- | ----------------------------------------------------- | +| **Direct Serial Flashing** | Uses UART pins for direct firmware installation | First-time setup to install ESP-Hosted slave firmware | +| **Slave OTA Update** | Performs slave firmware updates directly from Host | All subsequent updates after initial installation | + ##### 6.4.1 Serial Flashing (Initial Setup) @@ -195,47 +201,9 @@ idf.py -p flash ##### 6.4.2 Co-processor OTA Flashing (Subsequent Updates) -For subsequent updates, you can re-use ESP-Hosted-MCU transport, as it should be already working. While doing OTA, Complete co-processor firmware image is not needed and only co-processor application partition, 'network_adapter.bin' need to be re-flashed remotely from host. - -1. Ensure your co-processor device is connected and communicating with the host with existing ESP-Hosted-MCU. - -2. Create a web server -You can re-use your existing web server or create a new locally for testing. Below is example to do it. - - Make a new directory so that web server can be run into it and navigate into it - - Create simple local web server using python3 - - ```bash - python3 -m http.server 8080 - ``` -3. Copy the co-processor app partition `network_adapter.bin` in the directory where you created the web server. - - The `network_adapter.bin` can be found in your co-processor project build at `/build/network_adapter.bin` - -4. Verify if web server is set-up correctly - - Open link `http://127.0.0.1:8080` in the browser and check if network_adapter.bin is available. - - Right click and copy the complete URL of this network_adapter.bin and note somewhere. - -5. On the **host side**, use the `esp_hosted_slave_ota` function to initiate the OTA update: +The ESP-Hosted link comes pre-configured and ready to use on first boot. You can update the slave firmware remotely from the host MCU using OTA (Over-The-Air) updates: **No** ESP-Prog, serial cable, or extra GPIO connections are required. - ```c - #include "esp_hosted.h" - - const char* image_url = "http://example.com/path/to/network_adapter.bin"; //web server full url - esp_err_t ret = esp_hosted_slave_ota(image_url); - if (ret == ESP_OK) { - printf("co-processor OTA update failed[%d]\n", ret); - } - ``` - - This function will download the firmware in chunk by chunk as http client from the specified URL and flash it to the co-processor device through the established transport. - In above web server example, You can paste the copied url earlier. - -6. Monitor the OTA progress through the console output on both the host and co-processor devices. - -> [!NOTE] -> -> - The `esp_hosted_slave_ota` function is part of the ESP-Hosted-MCU API and handles the OTA process through the transport layer. -> - Ensure that your host application has web server connectivity to download the firmware file. -> - The co-processor device doesn't need to be connected to the web server for this OTA method. +For step-by-step instructions, see the [Host Performs Slave OTA Example](../examples/host_performs_slave_ota/README.md). ## 7 Flashing the Host diff --git a/examples/host_performs_slave_ota/CMakeLists.txt b/examples/host_performs_slave_ota/CMakeLists.txt new file mode 100644 index 00000000..95d2c71d --- /dev/null +++ b/examples/host_performs_slave_ota/CMakeLists.txt @@ -0,0 +1,7 @@ +cmake_minimum_required(VERSION 3.16) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) + +set(PARTITION_TABLE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/partitions.csv") + +project(host_performs_slave_ota) diff --git a/examples/host_performs_slave_ota/README.md b/examples/host_performs_slave_ota/README.md new file mode 100644 index 00000000..3763309a --- /dev/null +++ b/examples/host_performs_slave_ota/README.md @@ -0,0 +1,512 @@ +# ESP-Hosted Slave OTA Example + +| Supported Targets | ESP32-P4 | ESP32-H2 | +| ----------------- | -------- | -------- | + +## What This Example Does + +This example demonstrates **ESP-Hosted Transport OTA** - updating slave firmware **through the existing ESP-Hosted connection** (SDIO/SPI/UART) without any additional hardware or physical access. + +**Key Features:** +- **No extra hardware needed** - uses your existing ESP-Hosted transport +- **Three OTA methods** - choose what works best for your deployment +- **Version checking** - prevents unnecessary updates + +## ESP-Hosted Slave Firmware Update Approaches + +There are a lot of ways that you can flash the slave firmware. +To limit possibilities, **two main approaches** could be understood. + +##### 1. ESP-Hosted Slave OTA (Current Example focus this) +- **Hardware**: None (reuses existing SDIO/SPI/UART serial channel from ESP-Hosted) +- **Use case**: Production updates, remote deployment +- **Access**: Over-the-air OR through Host partition (Uses RPC calls to slave) + +##### 2. Direct UART Flashing +- **Hardware**: ESP-Prog or UART connection +- **Use case**: Initial slave FW setup, firmware recovery, development +- **Access**: Requires physical access to device + + +**This example focuses entirely on Method 1** + +--- + +## ESP-Hosted Slave OTA APIs + +The ESP-Hosted slave OTA functionality is built around **4 core APIs** that handle the complete OTA process. These APIs are transport-agnostic and can work with any firmware source (LittleFS, Partition, HTTPS, SPIFFS, etc.). + +### ESP-Hosted-MCU Slave OTA APIs Used + +#### 1. `esp_hosted_slave_ota_begin()` +```c +esp_err_t esp_hosted_slave_ota_begin(void); +``` +- **Purpose**: Initializes the OTA process on the slave +- **Arguments**: None +- **Returns**: `ESP_OK` on success, error code on failure +- **What it does**: + - Prepares slave for firmware reception + - Allocates OTA buffers + - Sets up the OTA partition on slave + +#### 2. `esp_hosted_slave_ota_write()` +```c +esp_err_t esp_hosted_slave_ota_write(const void *data, size_t size); +``` +- **Purpose**: Sends firmware data chunks to the slave +- **Arguments**: + - `data`: Pointer to firmware data chunk + - `size`: Size of the data chunk (typically 1400-1500 bytes) +- **Returns**: `ESP_OK` on success, error code on failure +- **What it does**: + - Transmits firmware data over ESP-Hosted transport (SDIO/SPI/UART) + - Slave writes data to its OTA partition + - Can be called multiple times for large firmware + +#### 3. `esp_hosted_slave_ota_end()` +```c +esp_err_t esp_hosted_slave_ota_end(void); +``` +- **Purpose**: Finalizes the OTA process +- **Arguments**: None +- **Returns**: `ESP_OK` on success, error code on failure +- **What it does**: + - Validates the complete firmware image on slave + - Calculates and verifies checksums + - Marks the new firmware as valid but not active + +#### 4. `esp_hosted_slave_ota_activate()` +```c +esp_err_t esp_hosted_slave_ota_activate(void); +``` +- **Purpose**: Activates the newly flashed firmware +- **Arguments**: None +- **Returns**: `ESP_OK` on success, error code on failure +- **What it does**: + - Switches slave's boot partition to the new firmware + - Triggers slave reboot with new firmware + - **Note**: After this call, slave will restart with new firmware + +### Additional API used + +#### 5. `esp_hosted_get_coprocessor_fwversion()` +```c +esp_err_t esp_hosted_get_coprocessor_fwversion(esp_hosted_coprocessor_fwver_t *version); +``` +- **Purpose**: Gets the currently running slave firmware version +- **Arguments**: + - `version`: Pointer to structure to store version information +- **Returns**: `ESP_OK` on success, error code on failure +- **Structure**: + ```c + typedef struct { + uint32_t major1; // Major version + uint32_t minor1; // Minor version + uint32_t patch1; // Patch version + } esp_hosted_coprocessor_fwver_t; + ``` + +### How This Example Works + +This example demonstrates the **complete OTA workflow**: + +1. **Version Check** (optional): Uses `esp_hosted_get_coprocessor_fwversion()` to get current slave version +2. **Begin OTA**: Calls `esp_hosted_slave_ota_begin()` to initialize +3. **Transfer Firmware**: + - Reads firmware from source (LittleFS file/Partition/HTTPS download) + - Calls `esp_hosted_slave_ota_write()` repeatedly with chunks +4. **Finalize**: Calls `esp_hosted_slave_ota_end()` to validate firmware +5. **Activate**: Calls `esp_hosted_slave_ota_activate()` to switch to new firmware + +### Firmware Source Flexibility + +**Important**: These APIs are **not limited to the three methods shown**. You can use: +- **LittleFS** (this example) +- **Dedicated Partition** (this example) +- **HTTPS Download** (this example) +- **SPIFFS filesystem** +- **SD Card files** +- **NVS storage** +- **Custom network protocols** +- **Any other firmware source** + +The **key requirement** is that you can read the firmware data and feed it to `esp_hosted_slave_ota_write()` in chunks. + +--- + +## ESP-Hosted Slave OTA Methods + +Choose the method that best fits your deployment: + +| Method | Remarks | +|--------|----------| +| Slave OTA using LittleFS | Local deployment. One of Host partition formatted as LittleFS and pushed the slave fw as file | +| Slave OTA using Host Partition | Local deployment. Slave Fw flashed in one of Host partition directly | +| Slave OTA Using HTTPS | Needs internet access. Can re-use HTTPS server in the deployment | + +`Ease of Use`: LittleFS > HTTPS > Partition + +Pre-requisites: +1. Please ensure the slave application firmware binary is located in the designated path specified below to prevent 'File not Found' build errors. +2. For HTTPS-based updates, verify that the required certificates are properly installed to avoid connection establishment failures. + +--- + +## Project Structure + +``` +host_performs_slave_ota/ +├── components/ +│ ├── ota_partition/ # Slave OTA using Host Partition method +│ │ └── slave_fw_bin/ # Put slave .bin files here +│ ├── ota_littlefs/ # Slave OTA using LittleFS method +│ │ └── slave_fw_bin/ # Put slave .bin files here +│ └── ota_https/ # Slave OTA Using HTTPS method +│ ├── certs/ # SSL certificates +│ └── test_server/ # Local HTTPS server +├── partitions.csv # Universal partition table +└── main/ # Main application +``` + +## Host Partition Table +``` +nvs, data, nvs, 0x9000, 16K, +otadata, data, ota, 0xd000, 8K, +phy_init, data, phy, 0xf000, 4K, +ota_0, app, ota_0, 0x10000, 2M, +ota_1, app, ota_1, 0x210000, 2M, +storage, data, littlefs, 0x410000, 0x1E0000, # Used by Slave OTA using LittleFS +slave_fw, data, 0x40, 0x5F0000, 0x200000, # Used by Slave OTA using Host Partition +``` + +--- + +## Method 1: Slave OTA using LittleFS + +**Best for**: General use, dynamic updates, multiple firmware storage + +### How it works: +- Slave firmware stored in LittleFS filesystem +- Build system creates filesystem image with firmware +- OTA mounts filesystem and reads firmware file + +### Setup Steps: + +1. **Build slave firmware:** + Please build the slave firmware referring the [slave example](https://components.espressif.com/components/espressif/esp_hosted/examples/slave). + +2. **Copy slave firmware:** + ```bash + cp slave/build/network_adapter.bin examples/host_performs_slave_ota/components/ota_littlefs/slave_fw_bin/ + ``` + +3. **Configure (optional - already default):** + ```bash + idf.py menuconfig + # ESP-Hosted Slave OTA Configuration → OTA Method → LittleFS OTA + ``` + +4. **Build and flash:** + ```bash + idf.py -p build flash monitor + ``` + +### What happens: +- Build system creates LittleFS image containing slave firmware +- LittleFS image flashed to `storage` partition +- At runtime, OTA mounts filesystem, finds firmware, and compares versions +- Only updates if versions differ + +--- + +## Method 2: Slave OTA using Host Partition + +**Best for**: Production, fastest updates, most reliable + +### How it works: +- Slave firmware pre-flashed to dedicated partition +- OTA reads directly from partition (no filesystem overhead) +- Version comparison prevents unnecessary updates + +### Setup Steps: + +1. **Build slave firmware:** + Please build the slave firmware referring the [slave example](https://components.espressif.com/components/espressif/esp_hosted/examples/slave). + +2. **Copy slave firmware:** + ```bash + cp slave/build/network_adapter.bin examples/host_performs_slave_ota/components/ota_partition/slave_fw_bin/ + ``` + +3. **Configure:** + ```bash + idf.py menuconfig + # ESP-Hosted Slave OTA Configuration → OTA Method → Partition OTA + # (Default) Set partition label to: slave_fw + ``` + +4. **Build and flash:** + ```bash + idf.py -p build flash monitor + ``` + +### What happens: +- Build system detects slave firmware and shows notice +- During flash, slave firmware automatically flashed to `slave_fw` partition +- At runtime, OTA reads firmware from partition and compares versions +- Only updates if versions differ + +--- + +## Method 3: Slave OTA Using HTTPS + +**Best for**: Remote updates, internet deployment + +### How it works: +- Downloads slave firmware from HTTPS server +- Verifies image header while downloading +- Supports both self-signed and CA certificates + +### HTTPS Certificate Handling + +The Slave OTA Using HTTPS supports two certificate modes: + +#### Production Mode +For real servers with CA-signed certificates, disable self signed testing. +``` +ESP-Hosted Slave OTA Configuration +└── OTA Method + └── HTTPS OTA Config + └── Use self-signed certificate (Testing Only) ---> ❌ DISABLE +``` + +**How it works:** +- Uses ESP-IDF's built-in CA certificate bundle (`esp_crt_bundle_attach`) +- Automatically validates certificates from major CAs +- No additional certificate files needed +- Production-ready security + +#### Testing Mode (Self-Signed Certificates) +**For local testing with self-signed certificates** + +1. **Enable self-signed certificates:** +``` +ESP-Hosted Slave OTA Configuration +└── OTA Method + └── HTTPS OTA Config + └── Use self-signed certificate (Testing Only) ---> ENABLE +``` + +2. **Generate SSL certificates:** + ```bash + cd examples/host_performs_slave_ota/components/ota_https/test_server + ./create_self_signed_certs.sh + ``` + +3. **Start HTTPS server:** + ```bash + cd examples/host_performs_slave_ota/components/ota_https/test_server + python3 create_https_server.py + ``` + +4. **Copy slave firmware to server:** + Please build the slave firmware referring the [slave example](https://components.espressif.com/components/espressif/esp_hosted/examples/slave). + ```bash + cp slave/build/network_adapter.bin examples/host_performs_slave_ota/components/ota_https/test_server/ + ``` + +5. **Configure WiFi and URL:** + ```bash + idf.py menuconfig + # ESP-Hosted Slave OTA Configuration → OTA Method → HTTPS OTA + # Set HTTPS OTA URL to: https://:8443/network_adapter.bin + # Set WiFi SSID and password + ``` + +6. **Build and flash:** + ```bash + idf.py -p build flash monitor + ``` + +### What happens: +- ESP32 connects to WiFi +- Downloads firmware over HTTPS with certificate verification +- Verifies image header during download +- Compares versions and only updates if different + +--- + +## Configuration Reference + +### Menuconfig Options: +``` +ESP-Hosted Slave OTA Configuration +├── OTA Method +│ ├── HTTPS OTA (default) +│ │ │ +│ │ ├── Wi-Fi Config +│ │ │ ├── SSID <--change--> +│ │ │ └── Password <--change--> +│ │ │ +│ │ └── HTTPS OTA Config +│ │ ├── HTTPS OTA URL (https://...) <--change--> +│ │ └── Use self-signed certificate (Testing Only) <--ENABLE-to-test-using-self-certs> +│ │ └── Skip certificate Common Name check <--ENABLE-to-test-using-self-certs> +│ │ +│ ├── LittleFS OTA +│ │ └── Delete OTA file from LittleFS once finished (y) +│ │ +│ └── Partition OTA +│ └── Partition Label (for Partition Slave OTA) (slave_fw) +│ +├── Host-Slave version compatibility check (y) +│ +└── Skip OTA if slave firmware versions match (y) +``` + +--- + +## Expected Output + +##### Successful OTA: +``` +I (1234) host_performs_slave_ota: ESP-Hosted initialized successfully +I (1235) host_performs_slave_ota: Using XXXX OTA method +I (1240) ota_XXXX: Current slave firmware version: 2.5.12 +I (1242) ota_XXXX: New slave firmware version: 2.6.0 +I (1245) ota_XXXX: Version differs - proceeding with OTA +I (5678) ota_XXXX: XXXX OTA completed successfully +I (5680) host_performs_slave_ota: OTA completed successfully +``` + +##### Same Version (Skip OTA): +``` +I (1240) ota_XXXX: Current slave firmware version: 2.6.0 +I (1242) ota_XXXX: New slave firmware version: 2.6.0 +W (1245) ota_XXXX: Versions match. Skipping OTA. +I (1246) host_performs_slave_ota: OTA not required +``` + +--- + +## Troubleshooting + +### Build Issues: +- **"No .bin files found"**: Copy slave firmware to appropriate `slave_fw_bin/` directory +- **"Partition not found"**: Check `partitions.csv` includes required partitions + +### Runtime Issues: +- **"Failed to initialize ESP-Hosted"**: Check hardware connections +- **"OTA failed"**: Check version format mismatch, ensure slave firmware uses semantic versioning +- **WiFi issues (HTTPS)**: Verify network credentials and connectivity +- **SSL errors (HTTPS)**: Ensure certificate CN matches server IP address + +### Version Issues: +- Slave firmware now uses semantic versioning (e.g., `2.5.12`) instead of git hashes +- Host compares versions and skips OTA if versions match +- Check slave firmware version with `esp_hosted_get_coprocessor_fwversion()` + +## Limitation +- Older slave firmwares (< `2.15.12`) exposed git commit as `PROJECT_VER`, instead of `X.Y.Z` Hosted slave firmware version. + So, Comparison of `Slave firmware image version` Vs `Slave current FW version` will always fail. So OTA will be triggered. + +--- + +## Direct UART Flashing + +> [!NOTE] +> +> This section is for reference only. The main focus of this example is ESP-Hosted Transport OTA above. + +### Slave Flashing Using ESP-Prog + +> [!NOTE] +> ESP-Prog is only required if you want to flash firmware to the +> slave using the standard ESP Tools. + +In following section, ESP32-P4-Function EV Board is considered as example, to showcase, how ESP-Prog is to be connected. Any ESP can be programmed with ESP-Prog, including Host as well. + +The image below shows the board with an ESP-Prog connected to the header to communicate with the on-board ESP32-C6.. + +ESP32-P4-Function-EV-Board with ESP-Prog Connected to ESP32-C6 + +*ESP32-P4-Function-EV-Board with ESP-Prog Connected to ESP32-C6* + +If you need to update the ESP-Hosted slave firmware on the on-board ESP32-C6 module using ESP-Prog, follow these steps: + +1. Check out the ESP-Hosted slave example project: + +``` +idf.py create-project-from-example "espressif/esp_hosted:slave" +``` + +2. Set the target and start `Menuconfig`: + +```sh +idf.py set-target esp32c6 +idf.py menuconfig +``` + +3. Navigate and ensure SDIO is enabled. By default it should already be enabled. + ``` + Example Configuration + └── Bus Config in between Host and Co-processor + └── Transport layer + └── Select "SDIO" + ``` + +4. Build the firmware: + +```sh +idf.py build +``` + +5. Connect the Program Header on the ESP-Prog to the `PROG_C6` header + on the board. The connections are as follows: + +| ESP-Prog | PROG_C6 | Notes | +| --- | --- | --- | +| ESP\_EN | EN | | +| ESP\_TXD | TXD | | +| ESP\_RXD | RXD | | +| VDD | - | Do not connect | +| GND | GND | | +| ESP\_IO0 | IO0 | | + + +6. Flashing the firmware + +The on-board ESP32-P4 controls the reset signal for the ESP32-C6. To +prevent the P4 interfering with the C6 while flashing (by asserting +the C6 Reset signal during the firmware download), set the P4 into +Bootloader mode before flashing the firmware to the C6: + +###### Manual Way + 1. hold down the `BOOT` button on the board + 2. press and release the `RST` button on the board + 3. release the `BOOT` button + +###### Script Way + +```sh +esptool.py -p --before default_reset --after no_reset run +``` + +You can now flash the firmware to the C6 (and monitor the console +output): + +```sh +idf.py -p flash monitor +``` + +### Flashing Slave FW From Host MCU Using direct UART +You can connect above ESP32-C6 (slave) GPIOs directly on ESP32-P4 (Host) GPIOs and use [ESP-Serial-Flasher](https://github.com/espressif/esp-serial-flasher) to flash the Slave firmware from Host. + +**Hardware Required**: Host MCU UART connection (dedicated UART needed, cannot use ESP-Hosted bus) + +**Steps**: + +1. Connect host UART to slave flashing pins +2. Put host in bootloader mode (same as explined above) +3. Use esp-serial-flasher library to flash over UART diff --git a/examples/host_performs_slave_ota/components/common_ota_scripts/find_newest_firmware.cmake b/examples/host_performs_slave_ota/components/common_ota_scripts/find_newest_firmware.cmake new file mode 100644 index 00000000..b2fe41f4 --- /dev/null +++ b/examples/host_performs_slave_ota/components/common_ota_scripts/find_newest_firmware.cmake @@ -0,0 +1,64 @@ +# Common script to find the newest firmware file dynamically during build +# This runs every time during build, not just during configuration +# +# Required input variables: +# - SOURCE_COMPONENT_DIR: Path to the component source directory +# - BINARY_COMPONENT_DIR: Path to the component binary directory +# - OTA_ACTION: "prepare_littlefs" or "select_for_partition" +# +# Optional input variables: +# - COMPONENT_NAME: Name for logging (default: "OTA") + +if(NOT DEFINED COMPONENT_NAME) + set(COMPONENT_NAME "OTA") +endif() + +# Use the passed component directories +set(SOURCE_DIR "${SOURCE_COMPONENT_DIR}/slave_fw_bin") +set(TEMP_DIR "${BINARY_COMPONENT_DIR}/temp_littlefs") + +message(STATUS "${COMPONENT_NAME}: Dynamically searching for newest firmware...") +message(STATUS "${COMPONENT_NAME}: Searching in ${SOURCE_DIR}") + +# Get all .bin files +file(GLOB FIRMWARE_FILES "${SOURCE_DIR}/*.bin") + +if(NOT FIRMWARE_FILES) + message(FATAL_ERROR "${COMPONENT_NAME}: No .bin files found in ${SOURCE_DIR}") +endif() + +# Find the newest file by timestamp +set(NEWEST_FILE "") +set(NEWEST_TIMESTAMP 0) + +foreach(FIRMWARE_FILE ${FIRMWARE_FILES}) + file(TIMESTAMP "${FIRMWARE_FILE}" FILE_TIMESTAMP "%s") + message(STATUS "${COMPONENT_NAME}: File ${FIRMWARE_FILE} timestamp: ${FILE_TIMESTAMP}") + if(FILE_TIMESTAMP GREATER NEWEST_TIMESTAMP) + set(NEWEST_FILE "${FIRMWARE_FILE}") + set(NEWEST_TIMESTAMP "${FILE_TIMESTAMP}") + endif() +endforeach() + +get_filename_component(NEWEST_FILENAME "${NEWEST_FILE}" NAME) +message(STATUS "${COMPONENT_NAME}: Selected newest firmware: ${NEWEST_FILENAME}") + +# Perform the requested action +if(OTA_ACTION STREQUAL "prepare_littlefs") + # Clean and recreate temp directory for LittleFS + file(REMOVE_RECURSE "${TEMP_DIR}") + file(MAKE_DIRECTORY "${TEMP_DIR}") + file(COPY "${NEWEST_FILE}" DESTINATION "${TEMP_DIR}") + message(STATUS "${COMPONENT_NAME}: Prepared ${NEWEST_FILENAME} in temp directory for LittleFS") + +elseif(OTA_ACTION STREQUAL "select_for_partition") + # Write selection to files for partition OTA + file(WRITE "${BINARY_COMPONENT_DIR}/selected_firmware.txt" "${NEWEST_FILE}") + file(WRITE "${BINARY_COMPONENT_DIR}/selected_firmware_name.txt" "${NEWEST_FILENAME}") + message(STATUS "${COMPONENT_NAME}: Saved firmware selection for partition flashing") + +else() + message(FATAL_ERROR "${COMPONENT_NAME}: Unknown OTA_ACTION: ${OTA_ACTION}") +endif() + +message(STATUS "${COMPONENT_NAME}: Firmware selection completed") \ No newline at end of file diff --git a/examples/host_performs_slave_ota/components/common_ota_scripts/flash_selected_firmware.cmake b/examples/host_performs_slave_ota/components/common_ota_scripts/flash_selected_firmware.cmake new file mode 100644 index 00000000..eadc3ea0 --- /dev/null +++ b/examples/host_performs_slave_ota/components/common_ota_scripts/flash_selected_firmware.cmake @@ -0,0 +1,61 @@ +# Script to flash the dynamically selected firmware for partition OTA +# Reads the firmware path from the selection file and flashes it +# +# Required input variables: +# - BINARY_COMPONENT_DIR: Path to the component binary directory +# - SLAVE_FW_OFFSET: Partition offset for flashing +# - PYTHON: Python executable path + +if(NOT DEFINED COMPONENT_NAME) + set(COMPONENT_NAME "Partition OTA") +endif() + +# Read the selected firmware path and name +set(SELECTION_FILE "${BINARY_COMPONENT_DIR}/selected_firmware.txt") +set(NAME_FILE "${BINARY_COMPONENT_DIR}/selected_firmware_name.txt") + +if(NOT EXISTS "${SELECTION_FILE}") + message(FATAL_ERROR "${COMPONENT_NAME}: Selection file not found: ${SELECTION_FILE}") +endif() + +file(READ "${SELECTION_FILE}" SELECTED_FIRMWARE_PATH) +file(READ "${NAME_FILE}" SELECTED_FIRMWARE_NAME) + +# Remove any trailing newlines +string(STRIP "${SELECTED_FIRMWARE_PATH}" SELECTED_FIRMWARE_PATH) +string(STRIP "${SELECTED_FIRMWARE_NAME}" SELECTED_FIRMWARE_NAME) + +message(STATUS "-----------------------------------------------------") +message(STATUS "${COMPONENT_NAME}: Flashing ${SELECTED_FIRMWARE_NAME}") +message(STATUS "Path: ${SELECTED_FIRMWARE_PATH}") +message(STATUS "Offset: ${SLAVE_FW_OFFSET}") +message(STATUS "-----------------------------------------------------") + +# Check if file exists +if(NOT EXISTS "${SELECTED_FIRMWARE_PATH}") + message(FATAL_ERROR "❌ ERROR: Selected firmware file not found: ${SELECTED_FIRMWARE_PATH}") +endif() + +# Execute esptool (this will inherit the port from the parent build process) +execute_process( + COMMAND ${PYTHON} -m esptool + -b 2000000 + write-flash + --force + ${SLAVE_FW_OFFSET} "${SELECTED_FIRMWARE_PATH}" + RESULT_VARIABLE FLASH_RESULT + OUTPUT_VARIABLE FLASH_OUTPUT + ERROR_VARIABLE FLASH_ERROR + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_STRIP_TRAILING_WHITESPACE +) + +if(FLASH_OUTPUT) + message(STATUS "${FLASH_OUTPUT}") +endif() + +if(NOT FLASH_RESULT EQUAL 0) + message(FATAL_ERROR "❌ ERROR: Failed to flash firmware:\n${FLASH_ERROR}") +endif() + +message(STATUS "✅ Successfully flashed ${SELECTED_FIRMWARE_NAME} to partition!") diff --git a/examples/host_performs_slave_ota/components/ota_https/CMakeLists.txt b/examples/host_performs_slave_ota/components/ota_https/CMakeLists.txt new file mode 100644 index 00000000..616425d7 --- /dev/null +++ b/examples/host_performs_slave_ota/components/ota_https/CMakeLists.txt @@ -0,0 +1,28 @@ +if(CONFIG_OTA_METHOD_HTTPS) + set(SRC_LIST "ota_https.c" "ota_https_wifi.c") +endif() + +idf_component_register(SRCS ${SRC_LIST} + INCLUDE_DIRS "." + REQUIRES esp_http_client app_update esp_wifi esp_hosted nvs_flash esp_https_ota mbedtls esp-tls bootloader_support esp_app_format) + +# Conditional certificate embedding based on Kconfig +if(CONFIG_OTA_METHOD_HTTPS) +if(CONFIG_OTA_USE_SELF_SIGNED_CERT) + if(EXISTS "${COMPONENT_DIR}/certs/server_cert.pem") + target_add_binary_data( + ${COMPONENT_LIB} + "certs/server_cert.pem" + TEXT + ) + message(STATUS "✓ HTTPS OTA: Embedding self-signed certificate for testing") + else() + message(FATAL_ERROR + "HTTPS OTA: Self-signed cert enabled but certs/server_cert.pem not found! \n" + "1. Run ./create_self_signed_certs.sh in components/ota_https/test_server directory to generate certificates.\n" + "2. Run ./create_https_server.py in components/ota_https/test_server directory to start the HTTPS server.") + endif() +else() + message(STATUS "✓ HTTPS OTA: Using CA certificate bundle (Production mode)") +endif() +endif() diff --git a/examples/host_performs_slave_ota/components/ota_https/ota_https.c b/examples/host_performs_slave_ota/components/ota_https/ota_https.c new file mode 100644 index 00000000..3f6d106a --- /dev/null +++ b/examples/host_performs_slave_ota/components/ota_https/ota_https.c @@ -0,0 +1,390 @@ +/* + * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include +#include "esp_log.h" +#include "esp_err.h" +#include "esp_hosted.h" +#include "esp_http_client.h" +#include "esp_crt_bundle.h" // For certificate bundle +#include "sdkconfig.h" // For configuration macros +#include "esp_app_format.h" +#include "esp_app_desc.h" +#include "esp_hosted_api_types.h" + +#ifndef CHUNK_SIZE +#define CHUNK_SIZE 1400 +#endif + +static const char* TAG = "https_ota"; + +extern void establish_wifi_connection(void); + +/* Self-signed certificate - embedded at compile time (only if enabled) */ +#ifdef CONFIG_OTA_USE_SELF_SIGNED_CERT +extern const uint8_t server_cert_pem_start[] asm("_binary_server_cert_pem_start"); +extern const uint8_t server_cert_pem_end[] asm("_binary_server_cert_pem_end"); +#endif + +uint8_t http_err = 0; + +/* Function to parse ESP32 image header and get firmware info from buffer */ +static esp_err_t parse_image_header_from_buffer(const uint8_t* buffer, size_t buffer_size, size_t* firmware_size, char* app_version_str, size_t version_str_len) +{ + esp_image_header_t image_header; + esp_image_segment_header_t segment_header; + esp_app_desc_t app_desc; + size_t offset = 0; + size_t total_size = 0; + + /* Check if buffer has enough data for image header */ + if (buffer_size < sizeof(image_header)) { + ESP_LOGE(TAG, "Buffer too small for image header verification"); + return ESP_ERR_INVALID_SIZE; + } + + /* Read image header from buffer */ + memcpy(&image_header, buffer + offset, sizeof(image_header)); + + /* Validate magic number */ + if (image_header.magic != ESP_IMAGE_HEADER_MAGIC) { + ESP_LOGE(TAG, "Invalid image magic: 0x%" PRIx8, image_header.magic); + return ESP_ERR_INVALID_ARG; + } + + ESP_LOGI(TAG, "Image header: magic=0x%" PRIx8 ", segment_count=%" PRIu8 ", hash_appended=%" PRIu8, + image_header.magic, image_header.segment_count, image_header.hash_appended); + + /* Calculate total size by reading all segments */ + offset = sizeof(image_header); + total_size = sizeof(image_header); + + for (int i = 0; i < image_header.segment_count; i++) { + /* Check if buffer has enough data for segment header */ + if (buffer_size < offset + sizeof(segment_header)) { + ESP_LOGW(TAG, "Buffer too small to read all segment headers, using partial verification"); + break; + } + + /* Read segment header from buffer */ + memcpy(&segment_header, buffer + offset, sizeof(segment_header)); + + ESP_LOGI(TAG, "Segment %d: data_len=%" PRIu32 ", load_addr=0x%" PRIx32, i, segment_header.data_len, segment_header.load_addr); + + /* Add segment header size + data size */ + total_size += sizeof(segment_header) + segment_header.data_len; + offset += sizeof(segment_header) + segment_header.data_len; + + /* Read app description from the first segment */ + if (i == 0) { + size_t app_desc_offset = sizeof(image_header) + sizeof(segment_header); + if (buffer_size >= app_desc_offset + sizeof(app_desc)) { + memcpy(&app_desc, buffer + app_desc_offset, sizeof(app_desc)); + strncpy(app_version_str, app_desc.version, version_str_len - 1); + app_version_str[version_str_len - 1] = '\0'; + ESP_LOGI(TAG, "Found app description: version='%s', project_name='%s'", + app_desc.version, app_desc.project_name); + } else { + ESP_LOGW(TAG, "Buffer too small to read app description"); + strncpy(app_version_str, "unknown", version_str_len - 1); + app_version_str[version_str_len - 1] = '\0'; + } + } + } + + /* Add padding to align to 16 bytes */ + size_t padding = (16 - (total_size % 16)) % 16; + if (padding > 0) { + ESP_LOGD(TAG, "Adding %u bytes of padding for alignment", (unsigned int)padding); + total_size += padding; + } + + /* Add the checksum byte (always present) */ + total_size += 1; + ESP_LOGD(TAG, "Added 1 byte for checksum"); + + /* Add SHA256 hash if appended */ + bool has_hash = (image_header.hash_appended == 1); + if (has_hash) { + total_size += 32; // SHA256 hash is 32 bytes + ESP_LOGD(TAG, "Added 32 bytes for SHA256 hash (hash_appended=1)"); + } else { + ESP_LOGD(TAG, "No SHA256 hash appended (hash_appended=0)"); + } + + *firmware_size = total_size; + ESP_LOGI(TAG, "Total image size: %u bytes", (unsigned int)*firmware_size); + + return ESP_OK; +} + +static esp_err_t http_client_event_handler(esp_http_client_event_t *evt) +{ + switch(evt->event_id) { + case HTTP_EVENT_ERROR: + ESP_LOGE(TAG, "HTTP_EVENT_ERROR"); + http_err = 1; + break; + case HTTP_EVENT_ON_CONNECTED: + ESP_LOGI(TAG, "HTTPS_EVENT_ON_CONNECTED - SSL handshake successful"); + break; + case HTTP_EVENT_HEADER_SENT: + ESP_LOGI(TAG, "HTTPS_EVENT_HEADER_SENT"); + break; + case HTTP_EVENT_ON_HEADER: + ESP_LOGD(TAG, "HTTPS_EVENT_ON_HEADER: %s=%s", evt->header_key, evt->header_value); + if (strcmp(evt->header_key, "Content-Length") == 0) { + ESP_LOGI(TAG, "Content-Length: %s bytes", evt->header_value); + } + break; + case HTTP_EVENT_ON_DATA: + /* Data received - logged elsewhere */ + break; + case HTTP_EVENT_ON_FINISH: + ESP_LOGI(TAG, "HTTPS_EVENT_ON_FINISH - Transfer complete"); + break; + case HTTP_EVENT_DISCONNECTED: + ESP_LOGI(TAG, "HTTPS_EVENT_DISCONNECTED"); + break; + case HTTP_EVENT_REDIRECT: + ESP_LOGW(TAG, "HTTPS_EVENT_REDIRECT"); + break; + default: + ESP_LOGD(TAG, "Unhandled HTTPS event id: %d", evt->event_id); + break; + } + return ESP_OK; +} + +esp_err_t ota_https_perform(const char* image_url) +{ + uint8_t *ota_chunk = NULL; + esp_err_t err = ESP_OK; + int data_read = 0; + int ota_failed = 0; + + if ((image_url == NULL) || (image_url[0] == '\0')) { + ESP_LOGE(TAG, "Invalid image URL"); + return ESP_FAIL; + } + + // Validate HTTPS URL + if (strncmp(image_url, "https://", 8) != 0) { + ESP_LOGE(TAG, "URL must use HTTPS protocol"); + return ESP_FAIL; + } + + establish_wifi_connection(); + + ESP_LOGI(TAG, "Starting HTTPS OTA from URL: %s", image_url); + +#ifdef CONFIG_OTA_USE_SELF_SIGNED_CERT + // Log certificate information for self-signed mode + size_t cert_len = server_cert_pem_end - server_cert_pem_start; + ESP_LOGI(TAG, "Security: Self-signed certificate (Testing mode)"); + ESP_LOGI(TAG, "Certificate size: %u bytes", (unsigned int)cert_len); + + if (cert_len == 0) { + ESP_LOGE(TAG, "Certificate not embedded properly! Check CMakeLists.txt"); + return ESP_FAIL; + } +#else + ESP_LOGI(TAG, "Security: CA Certificate Bundle (Production mode)"); + ESP_LOGI(TAG, "Supports: Let's Encrypt, DigiCert, and 200+ CAs"); +#endif + + esp_http_client_config_t config = { + .url = image_url, + .timeout_ms = CONFIG_OTA_HTTPS_TIMEOUT_MS, + .transport_type = HTTP_TRANSPORT_OVER_SSL, // Force HTTPS + .event_handler = http_client_event_handler, + .buffer_size = 8192, // Larger buffer for SSL + .buffer_size_tx = 4096, // Increased TX buffer + +#ifdef CONFIG_OTA_USE_SELF_SIGNED_CERT + /* TESTING MODE - Self-signed certificate */ + .cert_pem = (const char *)server_cert_pem_start, + .cert_len = server_cert_pem_end - server_cert_pem_start, + .skip_cert_common_name_check = CONFIG_OTA_SKIP_CERT_CN_CHECK, + .use_global_ca_store = false, // Use only our certificate +#else + /* PRODUCTION MODE - CA certificate bundle */ + .crt_bundle_attach = esp_crt_bundle_attach, + .skip_cert_common_name_check = false, // Always validate CN in production +#endif + + .keep_alive_enable = true, + .keep_alive_idle = 5, + .keep_alive_interval = 5, + .keep_alive_count = 3, + }; + + esp_http_client_handle_t client = esp_http_client_init(&config); + if (client == NULL) { + ESP_LOGE(TAG, "Failed to initialize HTTPS client"); + return ESP_FAIL; + } + + /* Open connection */ + ESP_LOGI(TAG, "Opening HTTPS connection..."); + if ((err = esp_http_client_open(client, 0)) != ESP_OK) { + ESP_LOGE(TAG, "Failed to open HTTPS connection: %s", esp_err_to_name(err)); + ESP_LOGE(TAG, "Common causes:"); + ESP_LOGE(TAG, " - Certificate CN doesn't match server IP"); + ESP_LOGE(TAG, " - Server not running or unreachable"); + ESP_LOGE(TAG, " - WiFi connection issues"); + ESP_LOGE(TAG, " - Firewall blocking port 8443"); + esp_http_client_cleanup(client); + return err; + } + + if (http_err) { + ESP_LOGE(TAG, "Exiting OTA, due to http failure"); + esp_http_client_cleanup(client); + http_err = 0; + return ESP_FAIL; + } + + /* Fetch headers */ + ESP_LOGI(TAG, "Fetching HTTPS headers..."); + int64_t content_length = esp_http_client_fetch_headers(client); + + int http_status = esp_http_client_get_status_code(client); + if (http_status != 200) { + ESP_LOGE(TAG, "HTTPS request failed with status: %d", http_status); + esp_http_client_cleanup(client); + return ESP_FAIL; + } + + if (content_length <= 0) { + ESP_LOGE(TAG, "HTTP client fetch headers failed"); + ESP_LOGI(TAG, "HTTP GET Status = %d, content_length = %"PRId64, + esp_http_client_get_status_code(client), + esp_http_client_get_content_length(client)); + esp_http_client_close(client); + esp_http_client_cleanup(client); + return ESP_FAIL; + } + + ESP_LOGI(TAG, "HTTP GET Status = %d, content_length = %"PRId64, + esp_http_client_get_status_code(client), + esp_http_client_get_content_length(client)); + + /* Begin OTA */ + ESP_LOGI(TAG, "Preparing OTA"); + if ((err = esp_hosted_slave_ota_begin()) != ESP_OK) { + ESP_LOGE(TAG, "esp_hosted_slave_ota_begin failed: %s", esp_err_to_name(err)); + ESP_LOGI(TAG, "esp_ota_begin failed, error=%s", esp_err_to_name(err)); + esp_http_client_close(client); + esp_http_client_cleanup(client); + return err; + } + + ota_chunk = (uint8_t*)calloc(1, CHUNK_SIZE); + if (!ota_chunk) { + ESP_LOGE(TAG, "Failed to allocate OTA chunk memory"); + esp_http_client_close(client); + esp_http_client_cleanup(client); + return ESP_FAIL; + } + + ESP_LOGI(TAG, "Starting OTA data transfer over HTTPS"); + + /* Read and write OTA data */ + bool header_verified = false; + int chunk_count = 0; + + while ((data_read = esp_http_client_read(client, (char*)ota_chunk, CHUNK_SIZE)) > 0) { + ESP_LOGD(TAG, "Read image length %d", data_read); + + /* Verify image header from the first chunk */ + if (!header_verified && chunk_count == 0) { + size_t firmware_size; + char app_version[32]; + + ESP_LOGI(TAG, "Verifying image header from first chunk (%d bytes)", data_read); + if ((err = parse_image_header_from_buffer(ota_chunk, data_read, &firmware_size, app_version, sizeof(app_version))) != ESP_OK) { + ESP_LOGE(TAG, "Image header verification failed: %s", esp_err_to_name(err)); + ota_failed = 1; + break; + } + + ESP_LOGI(TAG, "Image verified - Size: %u bytes, Version: %s", (unsigned int)firmware_size, app_version); + +#ifdef CONFIG_OTA_VERSION_CHECK_SLAVEFW_SLAVE + /* Get current running slave firmware version and compare */ + esp_hosted_coprocessor_fwver_t current_slave_version = {0}; + esp_err_t version_ret = esp_hosted_get_coprocessor_fwversion(¤t_slave_version); + + if (version_ret == ESP_OK) { + char current_version_str[32]; + snprintf(current_version_str, sizeof(current_version_str), "%" PRIu32 ".%" PRIu32 ".%" PRIu32, + current_slave_version.major1, current_slave_version.minor1, current_slave_version.patch1); + + ESP_LOGI(TAG, "Current slave firmware version: %s", current_version_str); + ESP_LOGI(TAG, "New slave firmware version: %s", app_version); + + if (strcmp(app_version, current_version_str) == 0) { + ESP_LOGW(TAG, "Current slave firmware version (%s) is the same as new version (%s). Skipping OTA.", + current_version_str, app_version); + /* Cleanup and return success */ + free(ota_chunk); + esp_http_client_close(client); + esp_http_client_cleanup(client); + return ESP_HOSTED_SLAVE_OTA_NOT_REQUIRED; + } + + ESP_LOGI(TAG, "Version differs - proceeding with OTA from %s to %s", current_version_str, app_version); + } else { + ESP_LOGW(TAG, "Could not get current slave firmware version (error: %s), proceeding with OTA", + esp_err_to_name(version_ret)); + } +#else + ESP_LOGI(TAG, "Version check disabled - proceeding with OTA (new firmware version: %s)", app_version); +#endif + + header_verified = true; + } + + if ((err = esp_hosted_slave_ota_write(ota_chunk, data_read)) != ESP_OK) { + ESP_LOGE(TAG, "esp_hosted_slave_ota_write failed: %s", esp_err_to_name(err)); + ota_failed = 1; + break; + } + + chunk_count++; + } + + /* Cleanup resources */ + free(ota_chunk); + esp_http_client_close(client); + esp_http_client_cleanup(client); + + /* Check for read errors */ + if (data_read < 0) { + ESP_LOGE(TAG, "Error: HTTPS data read error"); + ota_failed = 1; + } + + /* End OTA */ + if ((err = esp_hosted_slave_ota_end()) != ESP_OK) { + ESP_LOGE(TAG, "esp_ota_end failed, error=%s", esp_err_to_name(err)); + esp_http_client_close(client); + esp_http_client_cleanup(client); + return err; + } + + /* Final result */ + if (ota_failed) { + ESP_LOGE(TAG, "********* Slave OTA Failed *******************"); + return ESP_FAIL; + } else { + ESP_LOGI(TAG, "********* Slave OTA Complete *******************"); + return ESP_HOSTED_SLAVE_OTA_COMPLETED; + } +} diff --git a/examples/host_performs_slave_ota/components/ota_https/ota_https.h b/examples/host_performs_slave_ota/components/ota_https/ota_https.h new file mode 100644 index 00000000..d66b25e9 --- /dev/null +++ b/examples/host_performs_slave_ota/components/ota_https/ota_https.h @@ -0,0 +1,25 @@ +/* + * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +#include "esp_err.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Perform HTTP OTA update + * + * @param url URL to download firmware from + * @return esp_err_t ESP_OK on success + */ +esp_err_t ota_https_perform(const char* url); + +#ifdef __cplusplus +} +#endif diff --git a/examples/host_performs_slave_ota/components/ota_https/ota_https_wifi.c b/examples/host_performs_slave_ota/components/ota_https/ota_https_wifi.c new file mode 100644 index 00000000..445b68e2 --- /dev/null +++ b/examples/host_performs_slave_ota/components/ota_https/ota_https_wifi.c @@ -0,0 +1,122 @@ +/* + * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +/* Miniature version of esp-idf example of Wi-Fi station, + * /examples/wifi/getting_started/station/main/station_example_main.c + * */ +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "freertos/event_groups.h" +#include "esp_system.h" +#include "esp_wifi.h" +#include "esp_event.h" +#include "esp_log.h" + +#include "lwip/err.h" +#include "lwip/sys.h" + +#ifdef CONFIG_OTA_METHOD_HTTPS +#include "nvs_flash.h" + +static const char* TAG = "ota_https_wifi"; + +#define EXAMPLE_ESP_WIFI_SSID CONFIG_ESP_WIFI_SSID +#define EXAMPLE_ESP_WIFI_PASS CONFIG_ESP_WIFI_PASSWORD +#define EXAMPLE_ESP_MAXIMUM_RETRY CONFIG_ESP_MAXIMUM_RETRY + +#define WIFI_CONNECTED_BIT BIT0 +#define WIFI_FAIL_BIT BIT1 + +/* FreeRTOS event group to signal when we are connected*/ +static EventGroupHandle_t s_wifi_event_group; + +static int s_retry_num = 0; + + +static void event_handler(void* arg, esp_event_base_t event_base, + int32_t event_id, void* event_data) +{ + if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START) { + esp_wifi_connect(); + } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED) { + if (s_retry_num < EXAMPLE_ESP_MAXIMUM_RETRY) { + esp_wifi_connect(); + s_retry_num++; + ESP_LOGI(TAG, "retry to connect to the AP"); + } else { + xEventGroupSetBits(s_wifi_event_group, WIFI_FAIL_BIT); + } + ESP_LOGI(TAG,"connect to the AP fail"); + } else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) { + ip_event_got_ip_t* event = (ip_event_got_ip_t*) event_data; + ESP_LOGI(TAG, "got ip:" IPSTR, IP2STR(&event->ip_info.ip)); + s_retry_num = 0; + xEventGroupSetBits(s_wifi_event_group, WIFI_CONNECTED_BIT); + } +} + +void wifi_init_sta(void) +{ + s_wifi_event_group = xEventGroupCreate(); + + esp_netif_init(); + + esp_event_loop_create_default(); + esp_netif_create_default_wifi_sta(); + + wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); + ESP_ERROR_CHECK(esp_wifi_init(&cfg)); + + esp_event_handler_instance_t instance_any_id; + esp_event_handler_instance_t instance_got_ip; + ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT, + ESP_EVENT_ANY_ID, + &event_handler, + NULL, + &instance_any_id)); + ESP_ERROR_CHECK(esp_event_handler_instance_register(IP_EVENT, + IP_EVENT_STA_GOT_IP, + &event_handler, + NULL, + &instance_got_ip)); + + wifi_config_t wifi_config = { + .sta = { + .ssid = EXAMPLE_ESP_WIFI_SSID, + .password = EXAMPLE_ESP_WIFI_PASS, + }, + }; + ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA) ); + ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config) ); + ESP_ERROR_CHECK(esp_wifi_start() ); + + ESP_LOGI(TAG, "wifi_init_sta finished."); + + /* Waiting until either the connection is established (WIFI_CONNECTED_BIT) or connection failed for the maximum + * number of re-tries (WIFI_FAIL_BIT). The bits are set by event_handler() (see above) */ + EventBits_t bits = xEventGroupWaitBits(s_wifi_event_group, + WIFI_CONNECTED_BIT | WIFI_FAIL_BIT, + pdFALSE, + pdFALSE, + portMAX_DELAY); + + if (bits & WIFI_CONNECTED_BIT) { + ESP_LOGI(TAG, "connected to ap SSID:%s password:%s", + EXAMPLE_ESP_WIFI_SSID, EXAMPLE_ESP_WIFI_PASS); + } else if (bits & WIFI_FAIL_BIT) { + ESP_LOGI(TAG, "Failed to connect to SSID:%s, password:%s", + EXAMPLE_ESP_WIFI_SSID, EXAMPLE_ESP_WIFI_PASS); + } else { + ESP_LOGE(TAG, "UNEXPECTED EVENT"); + } +} + +void establish_wifi_connection(void) +{ + ESP_LOGI(TAG, "ESP_WIFI_MODE_STA"); + wifi_init_sta(); +} + +#endif diff --git a/examples/host_performs_slave_ota/components/ota_https/test_server/README.md b/examples/host_performs_slave_ota/components/ota_https/test_server/README.md new file mode 100644 index 00000000..88417fa4 --- /dev/null +++ b/examples/host_performs_slave_ota/components/ota_https/test_server/README.md @@ -0,0 +1,58 @@ +# Test Server Tools + +This directory contains tools for testing HTTPS OTA functionality with self-signed certificates. + +## Files + +- `create_self_signed_certs.sh` - Generates self-signed certificates for testing +- `create_https_server.py` - Simple HTTPS server for serving OTA files +- `README.md` - This file + +## Quick Start + +### 1. Generate Test Certificates +```bash +cd test_server +bash create_self_signed_certs.sh +``` + +### 2. Start HTTPS Server +```bash +cd test_server +python3 create_https_server.py +``` + +### 3. Configure ESP32 +```bash +# From project root +idf.py menuconfig +``` + +Enable in menuconfig: +- `Component config` → `HTTPS OTA Configuration` → `Use self-signed certificate (Testing Only)` → **YES** +- Update `OTA Server URL` to the URL shown by the server + +## Important Notes + +- **Testing Only**: Self-signed certificates should only be used for testing +- **Security**: For production, use proper CA-signed certificates +- **IP Address**: The certificate is generated for your current IP address +- **Regenerate**: If your IP changes, regenerate certificates + +## Troubleshooting + +### Certificate not found error +```bash +# Make sure you're in test_server directory +cd test_server +bash create_self_signed_certs.sh +``` + +### Server won't start +- Check if port 8443 is available +- Ensure certificates exist in `../certs/` +``` +ls ../certs/ +server_cert.pem server_key.pem +``` +- Run from `test_server/` directory diff --git a/examples/host_performs_slave_ota/components/ota_https/test_server/create_https_server.py b/examples/host_performs_slave_ota/components/ota_https/test_server/create_https_server.py new file mode 100755 index 00000000..efacb173 --- /dev/null +++ b/examples/host_performs_slave_ota/components/ota_https/test_server/create_https_server.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python3 +# SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD +# SPDX-License-Identifier: Apache-2.0 +import http.server +import ssl +import socket +import os +import sys + +def get_local_ip(): + """Get the local IP address of this machine""" + try: + # Connect to a remote address (doesn't actually send data) + with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s: + s.connect(("8.8.8.8", 80)) + return s.getsockname()[0] + except Exception: + return "127.0.0.1" + +# Check if certificates exist (relative to component certs) +cert_path = '../certs/server_cert.pem' +key_path = '../certs/server_key.pem' + +if not os.path.exists(cert_path) or not os.path.exists(key_path): + print("ERROR: Certificates not found!") + print(f"Please run: bash create_self_signed_certs.sh") + print(f"Looking for: {cert_path} and {key_path}") + print(f"Note: Run this server from components/ota_https/test_server/ directory") + sys.exit(1) + +# Get local IP +local_ip = get_local_ip() +port = 8443 + +# Create HTTPS server +class CORSHTTPRequestHandler(http.server.SimpleHTTPRequestHandler): + def end_headers(self): + self.send_header('Access-Control-Allow-Origin', '*') + self.send_header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS') + self.send_header('Access-Control-Allow-Headers', '*') + super().end_headers() + + def log_message(self, format, *args): + """Enhanced logging""" + print(f"[{self.date_time_string()}] {format % args}") + +server_address = ('0.0.0.0', port) +httpd = http.server.HTTPServer(server_address, CORSHTTPRequestHandler) + +# Configure SSL with proper settings for ESP32 +ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) +ssl_context.minimum_version = ssl.TLSVersion.TLSv1_2 +ssl_context.set_ciphers('ECDHE+AESGCM:ECDHE+CHACHA20:DHE+AESGCM:DHE+CHACHA20:!aNULL:!MD5:!DSS') +ssl_context.load_cert_chain(cert_path, key_path) + +# Wrap socket with SSL +httpd.socket = ssl_context.wrap_socket(httpd.socket, server_side=True) + +print("=" * 60) +print("HTTPS OTA Server Started Successfully!") +print("=" * 60) +print(f"Server running on: https://{local_ip}:{port}") +print(f"Serving files from: {os.getcwd()}") +print(f"Using certificates:") +print(f" Cert: {cert_path}") +print(f" Key: {key_path}") +print("") +print("ESP32 Configuration:") +print(f" Set OTA_HTTP_URL to: https://{local_ip}:{port}/firmware.bin") +print("") +print("To test, place your firmware.bin file in this directory") +print("Press Ctrl+C to stop the server") +print("=" * 60) + +try: + httpd.serve_forever() +except KeyboardInterrupt: + print("\n🛑 Server stopped by user") + httpd.server_close() diff --git a/examples/host_performs_slave_ota/components/ota_https/test_server/create_self_signed_certs.sh b/examples/host_performs_slave_ota/components/ota_https/test_server/create_self_signed_certs.sh new file mode 100755 index 00000000..282356ed --- /dev/null +++ b/examples/host_performs_slave_ota/components/ota_https/test_server/create_self_signed_certs.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +# Create certificates for HTTPS OTA testing +# This script should be run from the component's test_server directory + +# Create a directory for certificates in the component's certs folder +mkdir -p ../certs +cd ../certs + +# Get your machine's IP address +IP_ADDRESS=$(ipconfig getifaddr en0 2>/dev/null || ipconfig getifaddr en1 2>/dev/null || echo "192.168.1.100") +echo "Creating certificate for IP: $IP_ADDRESS" +echo "If this IP is incorrect, please update the CN field manually" + +# Generate private key +openssl genrsa -out server_key.pem 2048 + +# Generate self-signed certificate (valid for 365 days) +# Use your actual IP address as Common Name +openssl req -new -x509 -key server_key.pem -out server_cert.pem -days 365 \ + -subj "/C=US/ST=State/L=City/O=ESP-OTA/CN=$IP_ADDRESS" \ + -extensions v3_req \ + -config <(cat < +#include +#include +#include +#include +#include "esp_log.h" +#include "esp_err.h" +#include "esp_littlefs.h" +#include "esp_hosted_ota.h" +#include +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "esp_app_format.h" +#include "esp_app_desc.h" +#include "esp_hosted.h" +#include "esp_hosted_api_types.h" + +static const char* TAG = "ota_littlefs"; + +#ifndef CHUNK_SIZE +#define CHUNK_SIZE 1500 +#endif + +/* Function to parse ESP32 image header and get firmware info from file */ +static esp_err_t parse_image_header_from_file(const char* file_path, size_t* firmware_size, char* app_version_str, size_t version_str_len) +{ + FILE* file; + esp_image_header_t image_header; + esp_image_segment_header_t segment_header; + esp_app_desc_t app_desc; + size_t offset = 0; + size_t total_size = 0; + + file = fopen(file_path, "rb"); + if (file == NULL) { + ESP_LOGE(TAG, "Failed to open firmware file for header verification: %s", file_path); + return ESP_FAIL; + } + + /* Read image header */ + if (fread(&image_header, sizeof(image_header), 1, file) != 1) { + ESP_LOGE(TAG, "Failed to read image header from file"); + fclose(file); + return ESP_FAIL; + } + + /* Validate magic number */ + if (image_header.magic != ESP_IMAGE_HEADER_MAGIC) { + ESP_LOGE(TAG, "Invalid image magic: 0x%" PRIx8, image_header.magic); + fclose(file); + return ESP_ERR_INVALID_ARG; + } + + ESP_LOGI(TAG, "Image header: magic=0x%" PRIx8 ", segment_count=%" PRIu8 ", hash_appended=%" PRIu8, + image_header.magic, image_header.segment_count, image_header.hash_appended); + + /* Calculate total size by reading all segments */ + offset = sizeof(image_header); + total_size = sizeof(image_header); + + for (int i = 0; i < image_header.segment_count; i++) { + /* Read segment header */ + if (fseek(file, offset, SEEK_SET) != 0 || + fread(&segment_header, sizeof(segment_header), 1, file) != 1) { + ESP_LOGE(TAG, "Failed to read segment %d header", i); + fclose(file); + return ESP_FAIL; + } + + ESP_LOGI(TAG, "Segment %d: data_len=%" PRIu32 ", load_addr=0x%" PRIx32, i, segment_header.data_len, segment_header.load_addr); + + /* Add segment header size + data size */ + total_size += sizeof(segment_header) + segment_header.data_len; + offset += sizeof(segment_header) + segment_header.data_len; + + /* Read app description from the first segment */ + if (i == 0) { + size_t app_desc_offset = sizeof(image_header) + sizeof(segment_header); + if (fseek(file, app_desc_offset, SEEK_SET) == 0 && + fread(&app_desc, sizeof(app_desc), 1, file) == 1) { + strncpy(app_version_str, app_desc.version, version_str_len - 1); + app_version_str[version_str_len - 1] = '\0'; + ESP_LOGI(TAG, "Found app description: version='%s', project_name='%s'", + app_desc.version, app_desc.project_name); + } else { + ESP_LOGW(TAG, "Failed to read app description"); + strncpy(app_version_str, "unknown", version_str_len - 1); + app_version_str[version_str_len - 1] = '\0'; + } + } + } + + /* Add padding to align to 16 bytes */ + size_t padding = (16 - (total_size % 16)) % 16; + if (padding > 0) { + ESP_LOGD(TAG, "Adding %u bytes of padding for alignment", (unsigned int)padding); + total_size += padding; + } + + /* Add the checksum byte (always present) */ + total_size += 1; + ESP_LOGD(TAG, "Added 1 byte for checksum"); + + /* Add SHA256 hash if appended */ + bool has_hash = (image_header.hash_appended == 1); + if (has_hash) { + total_size += 32; // SHA256 hash is 32 bytes + ESP_LOGD(TAG, "Added 32 bytes for SHA256 hash (hash_appended=1)"); + } else { + ESP_LOGD(TAG, "No SHA256 hash appended (hash_appended=0)"); + } + + *firmware_size = total_size; + ESP_LOGI(TAG, "Total image size: %u bytes", (unsigned int)*firmware_size); + + fclose(file); + return ESP_OK; +} + +/* Find latest firmware file in LittleFS */ +static esp_err_t find_latest_firmware(char* firmware_path, size_t max_len) +{ + DIR *dir; + struct dirent *entry; + struct stat file_stat; + char *latest_file = malloc(256); // Use heap instead of stack + char *full_path = malloc(512); // Use heap for full path + + if (!latest_file || !full_path) { + ESP_LOGE(TAG, "Failed to allocate memory for file search"); + if (latest_file) free(latest_file); + if (full_path) free(full_path); + return ESP_ERR_NO_MEM; + } + + memset(latest_file, 0, 256); + + dir = opendir("/littlefs"); + if (dir == NULL) { + ESP_LOGE(TAG, "Failed to open /littlefs directory"); + free(latest_file); + free(full_path); + return ESP_FAIL; + } + + ESP_LOGI(TAG, "Successfully opened /littlefs directory"); + + /* Find the first .bin file (since timestamps might not be reliable in LittleFS) */ + while ((entry = readdir(dir)) != NULL) { + ESP_LOGI(TAG, "Found file: %s", entry->d_name); + if (strstr(entry->d_name, ".bin") != NULL) { + ESP_LOGI(TAG, "Found .bin file: %s", entry->d_name); + snprintf(full_path, 512, "/littlefs/%s", entry->d_name); + + if (stat(full_path, &file_stat) == 0) { + ESP_LOGI(TAG, "File stat successful for %s, size: %ld", entry->d_name, file_stat.st_size); + /* Use the first .bin file found */ + strncpy(latest_file, entry->d_name, 255); + latest_file[255] = '\0'; // Ensure null termination + ESP_LOGI(TAG, "Using firmware file: %s", latest_file); + break; // Use the first .bin file found + } else { + ESP_LOGW(TAG, "Failed to stat file: %s", full_path); + } + } + } + closedir(dir); + + ESP_LOGI(TAG, "Final latest_file: '%s', length: %d", latest_file, strlen(latest_file)); + + if (strlen(latest_file) == 0) { + ESP_LOGE(TAG, "No .bin files found in /littlefs directory. Please refer doc to know how partition is created with slave firmware at correct path."); + free(latest_file); + free(full_path); + return ESP_FAIL; + } + + // Ensure we don't overflow the destination buffer + if (snprintf(firmware_path, max_len, "/littlefs/%s", latest_file) >= max_len) { + ESP_LOGE(TAG, "Firmware path too long"); + free(latest_file); + free(full_path); + return ESP_FAIL; + } + + ESP_LOGI(TAG, "Found latest firmware: %s", firmware_path); + + // Clean up allocated memory + free(latest_file); + free(full_path); + + return ESP_OK; +} + +esp_err_t ota_littlefs_perform(bool delete_after_use) +{ + char *firmware_path = malloc(256); // Use heap instead of stack + FILE *firmware_file; + uint8_t *chunk = malloc(CHUNK_SIZE); // Use heap for chunk buffer + size_t bytes_read; + esp_err_t ret = ESP_OK; + + if (!firmware_path || !chunk) { + ESP_LOGE(TAG, "Failed to allocate memory"); + if (firmware_path) free(firmware_path); + if (chunk) free(chunk); + return ESP_ERR_NO_MEM; + } + + ESP_LOGI(TAG, "Starting LittleFS OTA process"); + + /* Initialize LittleFS */ + ESP_LOGI(TAG, "Initializing LittleFS filesystem"); + esp_vfs_littlefs_conf_t conf = { + .base_path = "/littlefs", + .partition_label = "storage", + .format_if_mount_failed = true, + .dont_mount = false, + }; + + ret = esp_vfs_littlefs_register(&conf); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to initialize LittleFS: %s", esp_err_to_name(ret)); + free(firmware_path); + free(chunk); + return ret; + } + + ESP_LOGI(TAG, "LittleFS filesystem registered successfully"); + + /* Get filesystem info */ + size_t total = 0, used = 0; + ret = esp_littlefs_info("storage", &total, &used); + if (ret != ESP_OK) { + ESP_LOGW(TAG, "Failed to get LittleFS partition information (%s)", esp_err_to_name(ret)); + } else { + ESP_LOGI(TAG, "LittleFS partition size: total: %d, used: %d", total, used); + } + + /* Find the latest firmware file */ + ESP_LOGI(TAG, "Searching for firmware files in LittleFS"); + ret = find_latest_firmware(firmware_path, 256); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to find firmware file"); + esp_vfs_littlefs_unregister("storage"); + free(firmware_path); + free(chunk); + return ret; + } + ESP_LOGI(TAG, "Firmware file found: %s", firmware_path); + + /* Verify image header and get firmware info */ + size_t firmware_size; + char new_app_version[32]; + ret = parse_image_header_from_file(firmware_path, &firmware_size, new_app_version, sizeof(new_app_version)); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to parse image header: %s", esp_err_to_name(ret)); + esp_vfs_littlefs_unregister("storage"); + free(firmware_path); + free(chunk); + return ret; + } + + ESP_LOGI(TAG, "Firmware verified - Size: %u bytes, Version: %s", (unsigned int)firmware_size, new_app_version); + +#ifdef CONFIG_OTA_VERSION_CHECK_SLAVEFW_SLAVE + /* Get current running slave firmware version */ + esp_hosted_coprocessor_fwver_t current_slave_version = {0}; + esp_err_t version_ret = esp_hosted_get_coprocessor_fwversion(¤t_slave_version); + + if (version_ret == ESP_OK) { + char current_version_str[32]; + snprintf(current_version_str, sizeof(current_version_str), "%" PRIu32 ".%" PRIu32 ".%" PRIu32, + current_slave_version.major1, current_slave_version.minor1, current_slave_version.patch1); + + ESP_LOGI(TAG, "Current slave firmware version: %s", current_version_str); + ESP_LOGI(TAG, "New slave firmware version: %s", new_app_version); + + if (strcmp(new_app_version, current_version_str) == 0) { + ESP_LOGW(TAG, "Current slave firmware version (%s) is the same as new version (%s). Skipping OTA.", + current_version_str, new_app_version); + esp_vfs_littlefs_unregister("storage"); + free(firmware_path); + free(chunk); + return ESP_HOSTED_SLAVE_OTA_NOT_REQUIRED; + } + + ESP_LOGI(TAG, "Version differs - proceeding with OTA from %s to %s", current_version_str, new_app_version); + } else { + ESP_LOGW(TAG, "Could not get current slave firmware version (error: %s), proceeding with OTA", + esp_err_to_name(version_ret)); + } +#else + ESP_LOGI(TAG, "Version check disabled - proceeding with OTA (new firmware version: %s)", new_app_version); +#endif + + /* Open firmware file */ + firmware_file = fopen(firmware_path, "rb"); + if (firmware_file == NULL) { + ESP_LOGE(TAG, "Failed to open firmware file: %s", firmware_path); + esp_vfs_littlefs_unregister("storage"); + free(firmware_path); + free(chunk); + return ESP_FAIL; + } + + ESP_LOGI(TAG, "Starting OTA from LittleFS: %s", firmware_path); + + /* Begin OTA */ + ret = esp_hosted_slave_ota_begin(); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to begin OTA: %s", esp_err_to_name(ret)); + fclose(firmware_file); + esp_vfs_littlefs_unregister("storage"); + free(firmware_path); + free(chunk); + return ret; + } + + /* Write firmware in chunks */ + while ((bytes_read = fread(chunk, 1, CHUNK_SIZE, firmware_file)) > 0) { + ret = esp_hosted_slave_ota_write(chunk, bytes_read); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to write OTA chunk: %s", esp_err_to_name(ret)); + fclose(firmware_file); + esp_vfs_littlefs_unregister("storage"); + free(firmware_path); + free(chunk); + return ret; + } + } + + fclose(firmware_file); + + /* End OTA */ + ret = esp_hosted_slave_ota_end(); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to end OTA: %s", esp_err_to_name(ret)); + esp_vfs_littlefs_unregister("storage"); + free(firmware_path); + free(chunk); + return ret; + } + + ESP_LOGI(TAG, "LittleFS OTA completed successfully"); + + /* Delete firmware file if requested */ + if (delete_after_use) { + if (unlink(firmware_path) == 0) { + ESP_LOGI(TAG, "Deleted firmware file: %s", firmware_path); + } else { + ESP_LOGW(TAG, "Failed to delete firmware file: %s", firmware_path); + } + } + + esp_vfs_littlefs_unregister("storage"); + + /* Clean up allocated memory */ + free(firmware_path); + free(chunk); + + return ESP_HOSTED_SLAVE_OTA_COMPLETED; +} diff --git a/examples/host_performs_slave_ota/components/ota_littlefs/ota_littlefs.h b/examples/host_performs_slave_ota/components/ota_littlefs/ota_littlefs.h new file mode 100644 index 00000000..61b42b8e --- /dev/null +++ b/examples/host_performs_slave_ota/components/ota_littlefs/ota_littlefs.h @@ -0,0 +1,25 @@ +/* + * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +#include "esp_err.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Perform LittleFS OTA update + * + * @param delete_after_use Whether to delete firmware file after successful flash + * @return esp_err_t ESP_OK on success + */ +esp_err_t ota_littlefs_perform(bool delete_after_use); + +#ifdef __cplusplus +} +#endif diff --git a/examples/host_performs_slave_ota/components/ota_partition/CMakeLists.txt b/examples/host_performs_slave_ota/components/ota_partition/CMakeLists.txt new file mode 100644 index 00000000..47ec5e03 --- /dev/null +++ b/examples/host_performs_slave_ota/components/ota_partition/CMakeLists.txt @@ -0,0 +1,86 @@ +# Partition OTA Component CMakeLists.txt +# This component handles Partition-based OTA updates + +idf_component_register( + SRCS "ota_partition.c" + INCLUDE_DIRS "." + PRIV_REQUIRES "esp_partition" "esp_hosted" "bootloader_support" "esp_app_format" +) + +if(CONFIG_OTA_METHOD_PARTITION) +# --- Step 0: Get partition offset from partition table --- +set(SLAVE_FW_PARTITION_NAME "slave_fw") +file(READ "${CMAKE_SOURCE_DIR}/partitions.csv" PARTITION_TABLE_CONTENT) +string(REGEX MATCH "${SLAVE_FW_PARTITION_NAME}[^,]*,[^,]*,[^,]*,[ ]*([^,]*)" PARTITION_MATCH "${PARTITION_TABLE_CONTENT}") +if(PARTITION_MATCH) + string(REGEX REPLACE "${SLAVE_FW_PARTITION_NAME}[^,]*,[^,]*,[^,]*,[ ]*([^,]*)" "\\1" SLAVE_FW_OFFSET "${PARTITION_MATCH}") + string(STRIP "${SLAVE_FW_OFFSET}" SLAVE_FW_OFFSET) + message(STATUS "✅ Partition OTA: Found ${SLAVE_FW_PARTITION_NAME} partition at offset: ${SLAVE_FW_OFFSET}") +else() + set(SLAVE_FW_OFFSET "0x5F0000") # Fallback to hardcoded value + message(WARNING "⚠️ Partition OTA: Could not find ${SLAVE_FW_PARTITION_NAME} in partitions.csv, using fallback offset: ${SLAVE_FW_OFFSET}") +endif() + +# --- Step 1: Check if firmware files exist (early validation) --- +message(STATUS "🔍 Partition OTA: Checking for firmware files...") + +file(GLOB SLAVE_FW_BIN_FILES "${CMAKE_CURRENT_SOURCE_DIR}/slave_fw_bin/*.bin") + +if(SLAVE_FW_BIN_FILES) + message(STATUS "✅ Partition OTA: Found firmware files for dynamic selection") + + # Get Python and esptool path from IDF + idf_build_get_property(PYTHON PYTHON) + idf_build_get_property(ESPTOOL_PATH ESPTOOL_PATH) + + # Create a target that dynamically selects the newest firmware + add_custom_target(select_partition_firmware + COMMAND ${CMAKE_COMMAND} + -DSOURCE_COMPONENT_DIR=${CMAKE_CURRENT_SOURCE_DIR} + -DBINARY_COMPONENT_DIR=${CMAKE_CURRENT_BINARY_DIR} + -DCOMPONENT_NAME=Partition OTA + -DOTA_ACTION=select_for_partition + -P ${CMAKE_CURRENT_SOURCE_DIR}/../common_ota_scripts/find_newest_firmware.cmake + COMMENT "Partition OTA: Dynamically selecting newest firmware" + VERBATIM + ) + + # Create a target that flashes the selected firmware + add_custom_target(flash_slave_fw + DEPENDS select_partition_firmware + COMMAND ${CMAKE_COMMAND} + -DBINARY_COMPONENT_DIR=${CMAKE_CURRENT_BINARY_DIR} + -DSLAVE_FW_OFFSET=${SLAVE_FW_OFFSET} + -DPYTHON=${PYTHON} + -DCOMPONENT_NAME=Partition OTA + -P ${CMAKE_CURRENT_SOURCE_DIR}/../common_ota_scripts/flash_selected_firmware.cmake + COMMENT "Partition OTA: Flashing selected firmware to partition" + VERBATIM + ) + + # Make flash_slave_fw depend on the main project binary being built successfully + idf_build_get_property(project_name PROJECT_NAME) + add_dependencies(flash_slave_fw ${project_name}.elf) + + # Add flash_slave_fw to the flash target only after successful build + add_dependencies(flash flash_slave_fw) + +else() + message(WARNING "⚠️ Partition OTA: No .bin files found in slave_fw_bin directory. Nothing to flash.") + + # Add warning target for flash command when no slave firmware present + add_custom_target(warn_no_slave_fw + COMMAND ${CMAKE_COMMAND} -E echo "" + COMMAND ${CMAKE_COMMAND} -E echo "⚠️ WARNING: Partition OTA is enabled but no slave firmware found!" + COMMAND ${CMAKE_COMMAND} -E echo " Expected: .bin files in components/ota_partition/slave_fw_bin/" + COMMAND ${CMAKE_COMMAND} -E echo " Current flash will only flash the host application" + COMMAND ${CMAKE_COMMAND} -E echo " The partition at ${SLAVE_FW_OFFSET} will not be flashed this time" + COMMAND ${CMAKE_COMMAND} -E echo "" + COMMENT "Warning: No slave firmware binaries found" + VERBATIM + ) + + # Make flash target show this warning + add_dependencies(flash warn_no_slave_fw) +endif() +endif() \ No newline at end of file diff --git a/examples/host_performs_slave_ota/components/ota_partition/ota_partition.c b/examples/host_performs_slave_ota/components/ota_partition/ota_partition.c new file mode 100644 index 00000000..172ae6ab --- /dev/null +++ b/examples/host_performs_slave_ota/components/ota_partition/ota_partition.c @@ -0,0 +1,241 @@ +/* + * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include +#include "esp_log.h" +#include "esp_err.h" +#include "esp_partition.h" +#include "esp_hosted_ota.h" +#include "esp_app_format.h" +#include "esp_app_desc.h" +#include "esp_hosted.h" +#include "esp_hosted_api_types.h" + +static const char* TAG = "ota_partition"; + +#ifndef CHUNK_SIZE +#define CHUNK_SIZE 1500 +#endif + +/* Function to parse ESP32 image header and get firmware info */ +static esp_err_t parse_image_header(const esp_partition_t* partition, size_t* firmware_size, char* app_version_str, size_t version_str_len) +{ + esp_image_header_t image_header; + esp_image_segment_header_t segment_header; + esp_app_desc_t app_desc; + esp_err_t ret; + size_t offset = 0; + size_t total_size = 0; + + /* Read image header */ + ret = esp_partition_read(partition, offset, &image_header, sizeof(image_header)); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to read image header: %s", esp_err_to_name(ret)); + return ret; + } + + /* Validate magic number */ + if (image_header.magic != ESP_IMAGE_HEADER_MAGIC) { + ESP_LOGE(TAG, "Invalid image magic: 0x%" PRIx8, image_header.magic); + return ESP_ERR_INVALID_ARG; + } + + ESP_LOGI(TAG, "Image header: magic=0x%" PRIx8 ", segment_count=%" PRIu8 ", hash_appended=%" PRIu8, + image_header.magic, image_header.segment_count, image_header.hash_appended); + + /* Calculate total size by reading all segments */ + offset = sizeof(image_header); + total_size = sizeof(image_header); + + for (int i = 0; i < image_header.segment_count; i++) { + /* Read segment header */ + ret = esp_partition_read(partition, offset, &segment_header, sizeof(segment_header)); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to read segment %d header: %s", i, esp_err_to_name(ret)); + return ret; + } + + ESP_LOGI(TAG, "Segment %d: data_len=%" PRIu32 ", load_addr=0x%" PRIx32, i, segment_header.data_len, segment_header.load_addr); + + /* Add segment header size + data size */ + total_size += sizeof(segment_header) + segment_header.data_len; + offset += sizeof(segment_header) + segment_header.data_len; + + /* Read app description from the first segment */ + if (i == 0) { + size_t app_desc_offset = sizeof(image_header) + sizeof(segment_header); + ret = esp_partition_read(partition, app_desc_offset, &app_desc, sizeof(app_desc)); + if (ret == ESP_OK) { + strncpy(app_version_str, app_desc.version, version_str_len - 1); + app_version_str[version_str_len - 1] = '\0'; + ESP_LOGI(TAG, "Found app description: version='%s', project_name='%s'", + app_desc.version, app_desc.project_name); + } else { + ESP_LOGW(TAG, "Failed to read app description: %s", esp_err_to_name(ret)); + strncpy(app_version_str, "unknown", version_str_len - 1); + app_version_str[version_str_len - 1] = '\0'; + } + } + } + + /* Add padding to align to 16 bytes */ + size_t padding = (16 - (total_size % 16)) % 16; + if (padding > 0) { + ESP_LOGD(TAG, "Adding %u bytes of padding for alignment", (unsigned int)padding); + total_size += padding; + } + + /* Add the checksum byte (always present) */ + total_size += 1; + ESP_LOGD(TAG, "Added 1 byte for checksum"); + + /* Add SHA256 hash if appended */ + bool has_hash = (image_header.hash_appended == 1); + if (has_hash) { + total_size += 32; // SHA256 hash is 32 bytes + ESP_LOGD(TAG, "Added 32 bytes for SHA256 hash (hash_appended=1)"); + } else { + ESP_LOGD(TAG, "No SHA256 hash appended (hash_appended=0)"); + } + + *firmware_size = total_size; + ESP_LOGI(TAG, "Total image size: %u bytes", (unsigned int)*firmware_size); + + /* Debug: Read last 48 bytes to verify structure */ + uint8_t tail_data[48]; + size_t tail_offset = (total_size > 48) ? (total_size - 48) : 0; + ret = esp_partition_read(partition, tail_offset, tail_data, 48); + if (ret == ESP_OK) { + ESP_LOGD(TAG, "Last 48 bytes of image (offset %u):", (unsigned int)tail_offset); + ESP_LOG_BUFFER_HEX_LEVEL(TAG, tail_data, 48, ESP_LOG_DEBUG); + } + + return ESP_OK; +} + +esp_err_t ota_partition_perform(const char* partition_label) +{ + const esp_partition_t* partition; + esp_err_t ret = ESP_OK; + uint8_t chunk[CHUNK_SIZE]; + size_t bytes_read; + size_t offset = 0; + size_t firmware_size; + char new_app_version[32]; + + ESP_LOGI(TAG, "Starting Partition OTA from partition: %s", partition_label); + + /* Find the partition */ + partition = esp_partition_find_first(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_ANY, partition_label); + if (partition == NULL) { + ESP_LOGE(TAG, "Partition '%s' not found", partition_label); + return ESP_FAIL; + } + + ESP_LOGI(TAG, "Found partition: %s, size: %" PRIu32 " bytes", partition->label, partition->size); + + /* Parse image header to get firmware size and version */ + ret = parse_image_header(partition, &firmware_size, new_app_version, sizeof(new_app_version)); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to parse image header: %s", esp_err_to_name(ret)); + return ret; + } + + ESP_LOGI(TAG, "Firmware verified - Size: %u bytes, Version: %s", (unsigned int)firmware_size, new_app_version); + +#ifdef CONFIG_OTA_VERSION_CHECK_SLAVEFW_SLAVE + /* Get current running slave firmware version */ + esp_hosted_coprocessor_fwver_t current_slave_version = {0}; + esp_err_t version_ret = esp_hosted_get_coprocessor_fwversion(¤t_slave_version); + + if (version_ret == ESP_OK) { + char current_version_str[32]; + snprintf(current_version_str, sizeof(current_version_str), "%" PRIu32 ".%" PRIu32 ".%" PRIu32, + current_slave_version.major1, current_slave_version.minor1, current_slave_version.patch1); + + ESP_LOGI(TAG, "Current slave firmware version: %s", current_version_str); + ESP_LOGI(TAG, "New slave firmware version: %s", new_app_version); + + if (strcmp(new_app_version, current_version_str) == 0) { + ESP_LOGW(TAG, "Current slave firmware version (%s) is the same as new version (%s). Skipping OTA.", + current_version_str, new_app_version); + return ESP_HOSTED_SLAVE_OTA_NOT_REQUIRED; + } + + ESP_LOGI(TAG, "Version differs - proceeding with OTA from %s to %s", current_version_str, new_app_version); + } else { + ESP_LOGW(TAG, "Could not get current slave firmware version (error: %s), proceeding with OTA", + esp_err_to_name(version_ret)); + } +#else + ESP_LOGI(TAG, "Version check disabled - proceeding with OTA (new firmware version: %s)", new_app_version); +#endif + + /* Validate firmware size */ + if (firmware_size == 0) { + ESP_LOGE(TAG, "Firmware size is 0, cannot proceed with OTA"); + return ESP_ERR_INVALID_SIZE; + } + if (firmware_size > partition->size) { + ESP_LOGE(TAG, "Firmware size (%u) exceeds partition size (%" PRIu32 ")", (unsigned int)firmware_size, partition->size); + return ESP_ERR_INVALID_SIZE; + } + + ESP_LOGI(TAG, "Proceeding with OTA - Firmware size: %u bytes", (unsigned int)firmware_size); + + /* Begin OTA */ + ret = esp_hosted_slave_ota_begin(); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to begin OTA: %s", esp_err_to_name(ret)); + return ret; + } + + /* Read firmware from partition in chunks - only up to actual firmware size */ + uint32_t total_bytes_sent = 0; + uint32_t chunk_count = 0; + + while (offset < firmware_size) { + bytes_read = (firmware_size - offset > CHUNK_SIZE) ? CHUNK_SIZE : (firmware_size - offset); + + ret = esp_partition_read(partition, offset, chunk, bytes_read); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to read partition: %s", esp_err_to_name(ret)); + esp_hosted_slave_ota_end(); + return ret; + } + + ret = esp_hosted_slave_ota_write(chunk, bytes_read); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to write OTA chunk %" PRIu32 ": %s", chunk_count, esp_err_to_name(ret)); + esp_hosted_slave_ota_end(); + return ret; + } + + total_bytes_sent += bytes_read; + offset += bytes_read; + chunk_count++; + + /* Progress indicator */ + if (chunk_count % 50 == 0) { + ESP_LOGD(TAG, "Progress: %" PRIu32 "/%u bytes (%.1f%%)", + total_bytes_sent, (unsigned int)firmware_size, (float)total_bytes_sent * 100 / firmware_size); + } + } + + ESP_LOGD(TAG, "Total chunks sent: %" PRIu32 ", Total bytes sent: %" PRIu32, chunk_count, total_bytes_sent); + + /* End OTA */ + ret = esp_hosted_slave_ota_end(); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to end OTA: %s", esp_err_to_name(ret)); + return ret; + } + + ESP_LOGI(TAG, "Partition OTA completed successfully - Sent %u bytes", (unsigned int)firmware_size); + return ESP_HOSTED_SLAVE_OTA_COMPLETED; +} diff --git a/examples/host_performs_slave_ota/components/ota_partition/ota_partition.h b/examples/host_performs_slave_ota/components/ota_partition/ota_partition.h new file mode 100644 index 00000000..caf6dc91 --- /dev/null +++ b/examples/host_performs_slave_ota/components/ota_partition/ota_partition.h @@ -0,0 +1,25 @@ +/* + * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +#include "esp_err.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Perform Partition OTA update + * + * @param partition_label Label of the partition containing firmware + * @return esp_err_t ESP_OK on success + */ +esp_err_t ota_partition_perform(const char* partition_label); + +#ifdef __cplusplus +} +#endif diff --git a/examples/host_performs_slave_ota/main/CMakeLists.txt b/examples/host_performs_slave_ota/main/CMakeLists.txt new file mode 100644 index 00000000..c0e2d0e4 --- /dev/null +++ b/examples/host_performs_slave_ota/main/CMakeLists.txt @@ -0,0 +1,6 @@ +# Simple component selection based on Kconfig +set(COMPONENT_SRCS "main.c") +set(COMPONENT_REQUIRES esp_hosted console esp_timer) + +idf_component_register(SRCS ${COMPONENT_SRCS} + INCLUDE_DIRS ".") diff --git a/examples/host_performs_slave_ota/main/Kconfig.projbuild b/examples/host_performs_slave_ota/main/Kconfig.projbuild new file mode 100644 index 00000000..1b995e10 --- /dev/null +++ b/examples/host_performs_slave_ota/main/Kconfig.projbuild @@ -0,0 +1,130 @@ +menu "ESP-Hosted Slave OTA Config" + +choice OTA_METHOD + prompt "Select OTA Method" + default OTA_METHOD_HTTPS + help + Choose the OTA method for updating slave firmware. + +config OTA_METHOD_HTTPS + bool "HTTP OTA" + help + Download firmware from HTTPS URL + +config OTA_METHOD_LITTLEFS + bool "LittleFS OTA" + help + Read firmware from LittleFS filesystem + +config OTA_METHOD_PARTITION + bool "Partition OTA" + help + Read firmware from dedicated partition + +endchoice + +########### OTA with Partition ######## +config OTA_PARTITION_LABEL + string "Partition Label" + depends on OTA_METHOD_PARTITION + default "slave_fw" + help + Label of the partition containing firmware + +########### OTA with Littlefs ######### +config OTA_DELETE_FILE_AFTER_FLASH + depends on OTA_METHOD_LITTLEFS + bool "Delete OTA file from LittleFS/FatFS etc, once finished" + default y + +########### OTA with HTTPS ############ +menu "WiFi Connection" + depends on OTA_METHOD_HTTPS + config ESP_WIFI_SSID + string "WiFi SSID" + default "MyWiFiSSID" + help + SSID (network name) for the example to connect to. + + config ESP_WIFI_PASSWORD + string "WiFi Password" + default "MyWiFiPass@123" + help + WiFi password (WPA or WPA2) for the example to use. + + config ESP_MAXIMUM_RETRY + int "Maximum retry" + default 5 + help + Set the Maximum retry to avoid station reconnecting to the AP unlimited when the AP is really inexistent. + +endmenu + +menu "HTTPS OTA Configuration" + depends on OTA_METHOD_HTTPS + + config OTA_USE_SELF_SIGNED_CERT + bool "Use self-signed certificate (Testing Only)" + default n + help + Enable this ONLY for testing with self-signed certificates. + Disable for production use with CA-signed certificates. + + When enabled, the component will use an embedded certificate + from certs/server_cert.pem for HTTPS validation. + + When disabled, the component will use the ESP32 CA certificate + bundle which supports major CAs like Let's Encrypt, DigiCert, etc. + + config OTA_SKIP_CERT_CN_CHECK + bool "Skip certificate Common Name check" + depends on OTA_USE_SELF_SIGNED_CERT + default n + help + Skip Common Name validation in self-signed certificates. + Only enable if you cannot match the CN with your server IP/hostname. + + WARNING: This reduces security. Use only for testing. + + config OTA_HTTPS_TIMEOUT_MS + int "HTTPS connection timeout (milliseconds)" + default 30000 + range 5000 120000 + help + Timeout for HTTPS connection and SSL handshake. + Increase if you have slow network or server. + + config OTA_SERVER_URL + string "OTA Server URL" + default "https://192.168.1.3:8443/firmware.bin" + help + HTTPS URL of the OTA firmware file. + Must start with https:// + +endmenu + +########### OTA Verification Options ############ +menu "OTA Verification Options" + + config OTA_VERSION_CHECK_HOST_SLAVE + bool "Host-Slave version compatibility check" + default y + help + Check if host and slave firmware have compatible major.minor versions. + If host is X.Y.Z and slave is A.B.C, warn if X.Y != A.B. + + This ensures compatible API versions between host and slave. + + config OTA_VERSION_CHECK_SLAVEFW_SLAVE + bool "Skip OTA if slave firmware versions match" + default y + help + Compare current running slave firmware version with new firmware version. + Skip OTA if versions are identical to avoid unnecessary updates. + + Disable this to force OTA even when versions match. + +endmenu + + +endmenu diff --git a/examples/host_performs_slave_ota/main/idf_component.yml b/examples/host_performs_slave_ota/main/idf_component.yml new file mode 100644 index 00000000..9c2f54d7 --- /dev/null +++ b/examples/host_performs_slave_ota/main/idf_component.yml @@ -0,0 +1,15 @@ +dependencies: + cmd_system: + path: ${IDF_PATH}/examples/system/console/advanced/components/cmd_system + cmd_nvs: + path: ${IDF_PATH}/examples/system/console/advanced/components/cmd_nvs + espressif/esp_wifi_remote: + version: ">=0.10,<2.0" + rules: + - if: "target in [esp32p4, esp32h2]" + espressif/esp_hosted: + rules: + - if: "target in [esp32p4, esp32h2]" + joltwallet/littlefs: + version: "*" + diff --git a/examples/host_performs_slave_ota/main/main.c b/examples/host_performs_slave_ota/main/main.c new file mode 100644 index 00000000..d1aa5ea4 --- /dev/null +++ b/examples/host_performs_slave_ota/main/main.c @@ -0,0 +1,152 @@ +/* + * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include "esp_log.h" +#include "esp_system.h" +#include "nvs_flash.h" +#include "esp_event.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "esp_err.h" +#include "esp_hosted.h" +#include "esp_hosted_ota.h" +#include "esp_timer.h" +#include "esp_app_desc.h" +#include "esp_hosted_api_types.h" + +#if CONFIG_OTA_METHOD_HTTPS +#include "ota_https.h" +#elif CONFIG_OTA_METHOD_LITTLEFS +#include "ota_littlefs.h" +#elif CONFIG_OTA_METHOD_PARTITION +#include "ota_partition.h" +#endif + +static const char *TAG = "host_performs_slave_ota"; + +#ifdef CONFIG_OTA_VERSION_CHECK_HOST_SLAVE +/* Compare host and slave firmware versions */ +static int compare_self_version_with_slave_version(uint32_t slave_version) +{ + uint32_t host_version = ESP_HOSTED_VERSION_VAL(ESP_HOSTED_VERSION_MAJOR_1, + ESP_HOSTED_VERSION_MINOR_1, + ESP_HOSTED_VERSION_PATCH_1); + + // mask out patch level + // compare major.minor only + slave_version &= 0xFFFFFF00; + host_version &= 0xFFFFFF00; + + if (host_version == slave_version) { + // versions match + return 0; + } else if (host_version > slave_version) { + // host version > slave version + ESP_LOGW(TAG, "=== ESP-Hosted Version Warning ==="); + printf("Version on Host is NEWER than version on co-processor\n"); + printf("RPC requests sent by host may encounter timeout errors\n"); + printf("or may not be supported by co-processor\n"); + ESP_LOGW(TAG, "=== ESP-Hosted Version Warning ==="); + return -1; + } else { + // host version < slave version + ESP_LOGW(TAG, "=== ESP-Hosted Version Warning ==="); + printf("Version on Host is OLDER than version on co-processor\n"); + printf("Host may not be compatible with co-processor\n"); + ESP_LOGW(TAG, "=== ESP-Hosted Version Warning ==="); + return 1; + } +} + +/* Check host-slave version compatibility */ +static int compare_host_slave_version(void) +{ + /* Get slave version via RPC */ + esp_hosted_coprocessor_fwver_t slave_version_struct = {0}; + esp_err_t ret = esp_hosted_get_coprocessor_fwversion(&slave_version_struct); + + if (ret != ESP_OK) { + ESP_LOGW(TAG, "Could not get slave firmware version (error: %s)", esp_err_to_name(ret)); + ESP_LOGW(TAG, "Proceeding without version compatibility check"); + return ESP_OK; + } + + /* Convert slave version to 32-bit value for comparison */ + uint32_t slave_version = ESP_HOSTED_VERSION_VAL(slave_version_struct.major1, + slave_version_struct.minor1, + slave_version_struct.patch1); + + /* Log versions */ + ESP_LOGI(TAG, "Host firmware version: %d.%d.%d", ESP_HOSTED_VERSION_MAJOR_1, ESP_HOSTED_VERSION_MINOR_1, ESP_HOSTED_VERSION_PATCH_1); + ESP_LOGI(TAG, "Slave firmware version: %" PRIu32 ".%" PRIu32 ".%" PRIu32, + slave_version_struct.major1, slave_version_struct.minor1, slave_version_struct.patch1); + + return compare_self_version_with_slave_version(slave_version); +} +#endif + +void app_main(void) +{ + int ret; + int host_slave_version_not_compatible = 1; + + ESP_ERROR_CHECK(nvs_flash_init()); + ESP_ERROR_CHECK(esp_event_loop_create_default()); + ESP_ERROR_CHECK(esp_hosted_init()); + ESP_ERROR_CHECK(esp_hosted_connect_to_slave()); + + ESP_LOGI(TAG, "ESP-Hosted initialized successfully"); + +#ifdef CONFIG_OTA_VERSION_CHECK_HOST_SLAVE + /* Check host-slave version compatibility */ + host_slave_version_not_compatible = compare_host_slave_version(); +#endif + + if (!host_slave_version_not_compatible) { + ESP_LOGW(TAG, "Slave OTA not required, so nothing to do!"); + return; + } + + /* Perform OTA based on Kconfig selection */ +#if CONFIG_OTA_METHOD_HTTPS + ESP_LOGI(TAG, "Using HTTP OTA method"); + ret = ota_https_perform(CONFIG_OTA_SERVER_URL); +#elif CONFIG_OTA_METHOD_LITTLEFS + uint8_t delete_post_flash = 0; + ESP_LOGI(TAG, "Using LittleFS OTA method"); + #ifdef CONFIG_OTA_DELETE_FILE_AFTER_FLASH + delete_post_flash = 1; + #endif + ret = ota_littlefs_perform(delete_post_flash); +#elif CONFIG_OTA_METHOD_PARTITION + ESP_LOGI(TAG, "Using Partition OTA method"); + ret = ota_partition_perform(CONFIG_OTA_PARTITION_LABEL); +#else + ESP_LOGE(TAG, "No OTA method selected!"); + return; +#endif + + if (ret == ESP_HOSTED_SLAVE_OTA_COMPLETED) { + ESP_LOGI(TAG, "OTA completed successfully"); + + /* Activate the new firmware */ + ret = esp_hosted_slave_ota_activate(); + if (ret == ESP_OK) { + ESP_LOGI(TAG, "Slave will reboot with new firmware"); + ESP_LOGI(TAG, "********* Restarting host to avoid sync issues **********************"); + vTaskDelay(pdMS_TO_TICKS(2000)); + esp_restart(); + } else { + ESP_LOGE(TAG, "Failed to activate OTA: %s", esp_err_to_name(ret)); + } + } else if (ret == ESP_HOSTED_SLAVE_OTA_NOT_REQUIRED) { + ESP_LOGI(TAG, "OTA not required"); + } else { + ESP_LOGE(TAG, "OTA failed: %s", esp_err_to_name(ret)); + } +} diff --git a/examples/host_performs_slave_ota/partitions.csv b/examples/host_performs_slave_ota/partitions.csv new file mode 100644 index 00000000..c9c9a6b8 --- /dev/null +++ b/examples/host_performs_slave_ota/partitions.csv @@ -0,0 +1,9 @@ +# Universal partition table for all OTA methods +# Name, Type, SubType, Offset, Size, Flags +nvs, data, nvs, 0x9000, 16K, +otadata, data, ota, 0xd000, 8K, +phy_init, data, phy, 0xf000, 4K, +ota_0, app, ota_0, 0x10000, 2M, +ota_1, app, ota_1, 0x210000, 2M, +storage, data, littlefs, 0x410000, 0x1E0000, +slave_fw, data, 0x40, 0x5F0000, 0x200000, diff --git a/examples/host_performs_slave_ota/sdkconfig.defaults b/examples/host_performs_slave_ota/sdkconfig.defaults new file mode 100644 index 00000000..20e72d6b --- /dev/null +++ b/examples/host_performs_slave_ota/sdkconfig.defaults @@ -0,0 +1,17 @@ +# Default configuration for Host Slave OTA Simple Example + +# Flash size configuration +CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y +CONFIG_ESPTOOLPY_FLASHSIZE="8MB" + +# Force enable ESP-Hosted component +CONFIG_ESP_WIFI_REMOTE_ENABLED=y +CONFIG_ESP_HOSTED_ENABLED=y + +# FreeRTOS configuration +CONFIG_FREERTOS_HZ=1000 + +# Partition table +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions.csv" diff --git a/examples/host_wifi_easy_connect_dpp_enrollee/main/dpp_enrollee_main.c b/examples/host_wifi_easy_connect_dpp_enrollee/main/dpp_enrollee_main.c index 444700d6..18069976 100644 --- a/examples/host_wifi_easy_connect_dpp_enrollee/main/dpp_enrollee_main.c +++ b/examples/host_wifi_easy_connect_dpp_enrollee/main/dpp_enrollee_main.c @@ -109,7 +109,7 @@ static void event_handler(void *arg, esp_event_base_t event_base, wifi_event_dpp_config_received_t *config = event_data; memcpy(&s_dpp_wifi_config, &config->wifi_cfg, sizeof(s_dpp_wifi_config)); s_retry_num = 0; - esp_wifi_set_config(ESP_IF_WIFI_STA, &s_dpp_wifi_config); + esp_wifi_set_config(WIFI_IF_STA, &s_dpp_wifi_config); esp_wifi_connect(); break; case WIFI_EVENT_DPP_FAILED: @@ -152,7 +152,7 @@ void dpp_enrollee_event_cb(esp_supp_dpp_event_t event, void *data) case ESP_SUPP_DPP_CFG_RECVD: memcpy(&s_dpp_wifi_config, data, sizeof(s_dpp_wifi_config)); s_retry_num = 0; - esp_wifi_set_config(ESP_IF_WIFI_STA, &s_dpp_wifi_config); + esp_wifi_set_config(WIFI_IF_STA, &s_dpp_wifi_config); esp_wifi_connect(); break; case ESP_SUPP_DPP_FAIL: diff --git a/host/api/include/esp_hosted_api_types.h b/host/api/include/esp_hosted_api_types.h index 26740d75..f5ccc54b 100644 --- a/host/api/include/esp_hosted_api_types.h +++ b/host/api/include/esp_hosted_api_types.h @@ -1,5 +1,5 @@ /* -* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -8,6 +8,8 @@ #ifndef __ESP_HOSTED_API_TYPES_H__ #define __ESP_HOSTED_API_TYPES_H__ +#include + #ifdef __cplusplus extern "C" { #endif diff --git a/host/api/include/esp_hosted_ota.h b/host/api/include/esp_hosted_ota.h index 2a9fffab..a1ed1eab 100644 --- a/host/api/include/esp_hosted_ota.h +++ b/host/api/include/esp_hosted_ota.h @@ -1,5 +1,5 @@ /* -* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -19,17 +19,64 @@ * 3. Repeatedly call rpc_ota_write() with a continuous chunk of OTA data * 4. Call rpc_ota_end() * + * @deprecated This API is deprecated. Use the new OTA examples in examples/host_slave_ota/ + * and examples/host_self_ota/ which provide more flexible OTA implementations. + * These examples demonstrate how to use the low-level esp_hosted_ota_begin(), + * esp_hosted_ota_write(), and esp_hosted_ota_end() APIs directly. */ #ifndef __ESP_HOSTED_OTA_H__ #define __ESP_HOSTED_OTA_H__ -#ifdef ESP_PLATFORM -// OTA API for ESP-IDF #include "esp_err.h" -/* Fetch OTA image from a web server (image_url) */ -esp_err_t esp_hosted_slave_ota(const char* image_url); -#endif +enum { + ESP_HOSTED_SLAVE_OTA_ACTIVATED, + ESP_HOSTED_SLAVE_OTA_COMPLETED, + ESP_HOSTED_SLAVE_OTA_NOT_REQUIRED, + ESP_HOSTED_SLAVE_OTA_NOT_STARTED, + ESP_HOSTED_SLAVE_OTA_IN_PROGRESS, + ESP_HOSTED_SLAVE_OTA_FAILED, +}; + +/** + * @brief Fetch OTA image from a web server (image_url) + * @deprecated Use the examples in examples/host_slave_ota/ for new implementations + * @param image_url URL of the OTA image + * @return esp_err_t ESP_OK on success, error code on failure + */ +esp_err_t esp_hosted_slave_ota(const char* image_url) __attribute__((deprecated("Use examples/host_slave_ota/ for new OTA implementations"))); + +/* --------- OTA APIs --------- */ +/** + * @brief Begin OTA update on the remote coprocessor device + * + * @return esp_err_t ESP_OK on success, error code on failure + */ +esp_err_t esp_hosted_slave_ota_begin(void); + +/** + * @brief Write OTA data chunk to the remote coprocessor device + * + * @param ota_data Pointer to OTA data chunk + * @param ota_data_len Length of OTA data chunk + * @return esp_err_t ESP_OK on success, error code on failure + */ +esp_err_t esp_hosted_slave_ota_write(uint8_t* ota_data, uint32_t ota_data_len); + +/** + * @brief End OTA update on the remote coprocessor device + * + * @return esp_err_t ESP_OK on success, error code on failure + */ +esp_err_t esp_hosted_slave_ota_end(void); + +/** + * @brief Activate OTA update on the remote coprocessor device. This would also reboot the remote coprocessor. + * + * @return esp_err_t ESP_OK on success, error code on failure + */ +esp_err_t esp_hosted_slave_ota_activate(void); + #endif /*__ESP_HOSTED_OTA_H__*/ diff --git a/host/api/priv/esp_hosted_api_priv.h b/host/api/priv/esp_hosted_api_priv.h index a8954d14..fe0b4ecf 100644 --- a/host/api/priv/esp_hosted_api_priv.h +++ b/host/api/priv/esp_hosted_api_priv.h @@ -17,7 +17,6 @@ extern "C" { #include "esp_wifi.h" #include "esp_wifi_remote.h" #include "esp_hosted_api_types.h" -#include "esp_hosted_ota.h" #include "port_esp_hosted_host_wifi_config.h" diff --git a/host/api/src/esp_hosted_ota_api.c b/host/api/src/esp_hosted_ota_api.c new file mode 100644 index 00000000..54f346bd --- /dev/null +++ b/host/api/src/esp_hosted_ota_api.c @@ -0,0 +1,41 @@ +/* + * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "esp_hosted.h" +#include "esp_log.h" +#include "rpc_wrap.h" + +static const char* TAG = "esp_hosted_ota"; + + +esp_err_t esp_hosted_slave_ota_begin(void) +{ + ESP_LOGD(TAG, "Starting OTA on slave device"); + return rpc_ota_begin(); +} + +esp_err_t esp_hosted_slave_ota_write(uint8_t* ota_data, uint32_t ota_data_len) +{ + if (!ota_data || ota_data_len == 0) { + ESP_LOGE(TAG, "Invalid OTA data parameters"); + return ESP_ERR_INVALID_ARG; + } + + ESP_LOGV(TAG, "Writing %ld bytes of OTA data", ota_data_len); + return rpc_ota_write(ota_data, ota_data_len); +} + +esp_err_t esp_hosted_slave_ota_end(void) +{ + ESP_LOGD(TAG, "Ending OTA on slave device"); + return rpc_ota_end(); +} + +esp_err_t esp_hosted_slave_ota_activate(void) +{ + ESP_LOGD(TAG, "Activating OTA on slave device"); + return rpc_ota_activate(); +} diff --git a/host/drivers/rpc/core/rpc_req.c b/host/drivers/rpc/core/rpc_req.c index 1c9cc682..9a294228 100644 --- a/host/drivers/rpc/core/rpc_req.c +++ b/host/drivers/rpc/core/rpc_req.c @@ -70,6 +70,7 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) case RPC_ID__Req_WifiGetPs: case RPC_ID__Req_OTABegin: case RPC_ID__Req_OTAEnd: + case RPC_ID__Req_OTAActivate: case RPC_ID__Req_WifiDeinit: case RPC_ID__Req_WifiStart: case RPC_ID__Req_WifiStop: diff --git a/host/drivers/rpc/core/rpc_rsp.c b/host/drivers/rpc/core/rpc_rsp.c index 6aac89e1..3ac6d604 100644 --- a/host/drivers/rpc/core/rpc_rsp.c +++ b/host/drivers/rpc/core/rpc_rsp.c @@ -198,6 +198,13 @@ int rpc_parse_rsp(Rpc *rpc_msg, ctrl_cmd_t *app_resp) goto fail_parse_rpc_msg; } break; + } case RPC_ID__Resp_OTAActivate: { + RPC_FAIL_ON_NULL(resp_ota_activate); + if (rpc_msg->resp_ota_activate->resp) { + ESP_LOGE(TAG, "OTA activate failed"); + goto fail_parse_rpc_msg; + } + break; } case RPC_ID__Resp_WifiSetMaxTxPower: { RPC_FAIL_ON_NULL(resp_set_wifi_max_tx_power); RPC_ERR_IN_RESP(resp_set_wifi_max_tx_power); diff --git a/host/drivers/rpc/slaveif/rpc_slave_if.c b/host/drivers/rpc/slaveif/rpc_slave_if.c index f579d05a..340c8aa0 100644 --- a/host/drivers/rpc/slaveif/rpc_slave_if.c +++ b/host/drivers/rpc/slaveif/rpc_slave_if.c @@ -124,6 +124,12 @@ ctrl_cmd_t * rpc_slaveif_ota_end(ctrl_cmd_t *req) RPC_DECODE_RSP_IF_NOT_ASYNC(); } +ctrl_cmd_t * rpc_slaveif_ota_activate(ctrl_cmd_t *req) +{ + RPC_SEND_REQ(RPC_ID__Req_OTAActivate); + RPC_DECODE_RSP_IF_NOT_ASYNC(); +} + ctrl_cmd_t * rpc_slaveif_wifi_init(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_WifiInit); diff --git a/host/drivers/rpc/slaveif/rpc_slave_if.h b/host/drivers/rpc/slaveif/rpc_slave_if.h index ec4e1001..d328dd3a 100644 --- a/host/drivers/rpc/slaveif/rpc_slave_if.h +++ b/host/drivers/rpc/slaveif/rpc_slave_if.h @@ -663,6 +663,10 @@ ctrl_cmd_t * rpc_slaveif_ota_write(ctrl_cmd_t *req); * Creates timer which reset ESP32 after 5 sec */ ctrl_cmd_t * rpc_slaveif_ota_end(ctrl_cmd_t *req); +/* Performs an OTA activate operation for ESP32, It reboots the ESP32 + * to activate the newly written OTA partition */ +ctrl_cmd_t * rpc_slaveif_ota_activate(ctrl_cmd_t *req); + /* Gets the co-processor FW Version */ ctrl_cmd_t * rpc_slaveif_get_coprocessor_fwversion(ctrl_cmd_t *req); diff --git a/host/drivers/rpc/wrap/rpc_wrap.c b/host/drivers/rpc/wrap/rpc_wrap.c index 7886ce9d..f4bad2d8 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.c +++ b/host/drivers/rpc/wrap/rpc_wrap.c @@ -562,6 +562,9 @@ int rpc_rsp_callback(ctrl_cmd_t * app_resp) } case RPC_ID__Resp_OTAEnd : { ESP_LOGV(TAG, "OTA end success"); break; + } case RPC_ID__Resp_OTAActivate : { + ESP_LOGV(TAG, "OTA activate success"); + break; } case RPC_ID__Resp_WifiSetMaxTxPower: { ESP_LOGV(TAG, "Set wifi max tx power success"); break; @@ -837,6 +840,17 @@ int rpc_ota_end(void) return rpc_rsp_callback(resp); } +int rpc_ota_activate(void) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + resp = rpc_slaveif_ota_activate(req); + + return rpc_rsp_callback(resp); +} + esp_err_t rpc_get_coprocessor_fwversion(esp_hosted_coprocessor_fwver_t *ver_info) { /* implemented synchronous */ diff --git a/host/drivers/rpc/wrap/rpc_wrap.h b/host/drivers/rpc/wrap/rpc_wrap.h index 7cec5a48..cb386d98 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.h +++ b/host/drivers/rpc/wrap/rpc_wrap.h @@ -17,7 +17,6 @@ extern "C" { #include "port_esp_hosted_host_wifi_config.h" #include "esp_mac.h" #include "esp_hosted_api_types.h" -#include "esp_hosted_ota.h" #if H_WIFI_ENTERPRISE_SUPPORT #include "esp_eap_client.h" @@ -96,6 +95,7 @@ esp_err_t rpc_iface_mac_addr_len_get(size_t *len, esp_mac_type_t type); esp_err_t rpc_ota_begin(void); esp_err_t rpc_ota_write(uint8_t* ota_data, uint32_t ota_data_len); esp_err_t rpc_ota_end(void); +esp_err_t rpc_ota_activate(void); #if H_WIFI_HE_SUPPORT esp_err_t rpc_wifi_sta_twt_config(wifi_twt_config_t *config); diff --git a/host/esp_hosted.h b/host/esp_hosted.h index 0a85eb04..2f7c3691 100644 --- a/host/esp_hosted.h +++ b/host/esp_hosted.h @@ -13,8 +13,8 @@ extern "C" { #include "esp_hosted_api_types.h" #include "esp_hosted_host_fw_ver.h" -#include "esp_hosted_ota.h" #include "esp_hosted_misc.h" +#include "esp_hosted_ota.h" typedef struct esp_hosted_transport_config esp_hosted_config_t; diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index 0bc86ca7..8c965f56 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -6,6 +6,11 @@ #ifndef __ESP_HOSTED_HOST_FW_VERSION_H__ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 -#define ESP_HOSTED_VERSION_MINOR_1 5 -#define ESP_HOSTED_VERSION_PATCH_1 12 +#define ESP_HOSTED_VERSION_MINOR_1 6 +#define ESP_HOSTED_VERSION_PATCH_1 0 #endif + +/** + * Macro to convert version number into an integer + */ +#define ESP_HOSTED_VERSION_VAL(major, minor, patch) ((major << 16) | (minor << 8) | (patch)) diff --git a/host/port/esp/freertos/src/port_esp_hosted_host_ota.c b/host/port/esp/freertos/src/port_esp_hosted_host_ota.c deleted file mode 100644 index 7bc03d12..00000000 --- a/host/port/esp/freertos/src/port_esp_hosted_host_ota.c +++ /dev/null @@ -1,249 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -/* Current OTA method(s) supported: - * - OTA from a HTTP URL - * - * Procedure: - * 1. Prepare OTA binary - * 2. Call rpc_ota_begin() to start OTA - * 3. Repeatedly call rpc_ota_write() with a continuous chunk of OTA data - * 4. Call rpc_ota_end() - */ - -#include "esp_http_client.h" -#include "esp_log.h" - -#include "rpc_wrap.h" -#include "port_esp_hosted_host_os.h" -#include "esp_hosted_ota.h" - -#define CHUNK_SIZE 1400 -#define OTA_FROM_WEB_URL 1 - -static char* TAG = "hosted_ota"; - -#if OTA_FROM_WEB_URL -/* Default: Chunk by chunk transfer using esp http client library */ -uint8_t http_err = 0; -static esp_err_t http_client_event_handler(esp_http_client_event_t *evt) -{ - switch(evt->event_id) { - - case HTTP_EVENT_ERROR: - ESP_LOGI(TAG, "HTTP_EVENT_ERROR"); - http_err = 1; - break; - case HTTP_EVENT_ON_CONNECTED: - ESP_LOGI(TAG, "HTTP_EVENT_ON_CONNECTED"); - break; - case HTTP_EVENT_HEADER_SENT: - ESP_LOGI(TAG, "HTTP_EVENT_HEADER_SENT"); - break; - case HTTP_EVENT_ON_HEADER: - ESP_LOGI(TAG, "HTTP_EVENT_ON_HEADER, key=%s, value=%s", evt->header_key, evt->header_value); - break; - case HTTP_EVENT_ON_DATA: - /* Nothing to handle here */ - break; - case HTTP_EVENT_ON_FINISH: - ESP_LOGI(TAG, "HTTP_EVENT_ON_FINISH"); - break; - case HTTP_EVENT_DISCONNECTED: - ESP_LOGI(TAG, "HTTP_EVENT_DISCONNECTED"); - break; - case HTTP_EVENT_REDIRECT: - ESP_LOGW(TAG, "HTTP_EVENT_REDIRECT"); - break; - // Other trivial events like HTTP_EVENT_ON_HEADERS_COMPLETE can be handled when needed - default: - ESP_LOGD(TAG, "Unhandled event id: %d", evt->event_id); - break; - } - - return ESP_OK; -} - -static esp_err_t _hosted_ota(const char* image_url) -{ - uint8_t *ota_chunk = NULL; - esp_err_t err = 0; - int data_read = 0; - int ota_failed = 0; - - if (image_url == NULL) { - ESP_LOGE(TAG, "Invalid image URL"); - return ESP_FAIL; - } - - /* Initialize HTTP client configuration */ - esp_http_client_config_t config = { - .url = image_url, - .timeout_ms = 5000, - .event_handler = http_client_event_handler, - }; - - esp_http_client_handle_t client = esp_http_client_init(&config); - - ESP_LOGI(TAG, "http_open"); - if ((err = esp_http_client_open(client, 0)) != ESP_OK) { - ESP_LOGE(TAG, "Failed to open HTTP connection: %s", esp_err_to_name(err)); - ESP_LOGE(TAG, "Check if URL is correct and connectable: %s", image_url); - esp_http_client_cleanup(client); - return ESP_FAIL; - } - - if (http_err) { - ESP_LOGE(TAG, "Exiting OTA, due to http failure"); - esp_http_client_close(client); - esp_http_client_cleanup(client); - http_err = 0; - return ESP_FAIL; - } - - ESP_LOGI(TAG, "http_fetch_headers"); - int64_t content_length = esp_http_client_fetch_headers(client); - if (content_length <= 0) { - ESP_LOGE(TAG, "HTTP client fetch headers failed"); - ESP_LOGI(TAG, "HTTP GET Status = %d, content_length = %"PRId64, - esp_http_client_get_status_code(client), - esp_http_client_get_content_length(client)); - esp_http_client_close(client); - esp_http_client_cleanup(client); - return ESP_FAIL; - } - - ESP_LOGI(TAG, "HTTP GET Status = %d, content_length = %"PRId64, - esp_http_client_get_status_code(client), - esp_http_client_get_content_length(client)); - - ESP_LOGW(TAG, "********* Started Slave OTA *******************"); - ESP_LOGI(TAG, "*** Please wait for 5 mins to let slave OTA complete ***"); - - ESP_LOGI(TAG, "Preparing OTA"); - if ((err = rpc_ota_begin())) { - ESP_LOGW(TAG, "********* Slave OTA Begin Failed *******************"); - ESP_LOGI(TAG, "esp_ota_begin failed, error=%s", esp_err_to_name(err)); - esp_http_client_close(client); - esp_http_client_cleanup(client); - return ESP_FAIL; - } - - ota_chunk = (uint8_t*)g_h.funcs->_h_calloc(1, CHUNK_SIZE); - if (!ota_chunk) { - ESP_LOGE(TAG, "Failed to allocate otachunk mem\n"); - err = -ENOMEM; - } - - ESP_LOGI(TAG, "Starting OTA"); - - if (!err) { - while ((data_read = esp_http_client_read(client, (char*)ota_chunk, CHUNK_SIZE)) > 0) { - - ESP_LOGV(TAG, "Read image length %d", data_read); - if ((err = rpc_ota_write(ota_chunk, data_read))) { - ESP_LOGI(TAG, "rpc_ota_write failed"); - ota_failed = err; - break; - } - } - } - - g_h.funcs->_h_free(ota_chunk); - if (err) { - ESP_LOGW(TAG, "********* Slave OTA Failed *******************"); - ESP_LOGI(TAG, "esp_ota_write failed, error=%s", esp_err_to_name(err)); - ota_failed = -1; - } - - if (data_read < 0) { - ESP_LOGE(TAG, "Error: SSL data read error"); - ota_failed = -2; - } - - if ((err = rpc_ota_end())) { - ESP_LOGW(TAG, "********* Slave OTA Failed *******************"); - ESP_LOGI(TAG, "esp_ota_end failed, error=%s", esp_err_to_name(err)); - esp_http_client_close(client); - esp_http_client_cleanup(client); - ota_failed = err; - return ESP_FAIL; - } - - esp_http_client_cleanup(client); - if (!ota_failed) { - ESP_LOGW(TAG, "********* Slave OTA Complete *******************"); - ESP_LOGI(TAG, "OTA Successful, Slave will restart in while"); - ESP_LOGE(TAG, "Need to restart host after slave OTA is complete, to avoid sync issues"); - sleep(5); - ESP_LOGE(TAG, "********* Restarting Host **********************"); - esp_restart(); - } - return ota_failed; -} - -static esp_err_t esp_hosted_slave_ota_chunked(const char* image_url) -{ - uint8_t ota_retry = 2; - int ret = 0; - - do { - ret = _hosted_ota(image_url); - - ota_retry--; - if (ota_retry && ret) - ESP_LOGI(TAG, "OTA retry left: %u\n", ota_retry); - } while (ota_retry && ret); - - return ret; -} -#else -/* This assumes full slave binary is present locally */ -static esp_err_t esp_hosted_slave_ota_whole_image(const char* image_path) -{ - FILE* f = NULL; - char ota_chunk[CHUNK_SIZE] = {0}; - int ret = rpc_ota_begin(); - if (ret == ESP_OK) { - f = fopen(image_path,"rb"); - if (f == NULL) { - ESP_LOGE(TAG, "Failed to open file %s", image_path); - return ESP_FAIL; - } else { - ESP_LOGV(TAG, "Success in opening %s file", image_path); - } - while (!feof(f)) { - fread(&ota_chunk, CHUNK_SIZE, 1, f); - ret = rpc_ota_write((uint8_t* )&ota_chunk, CHUNK_SIZE); - if (ret) { - ESP_LOGE(TAG, "OTA procedure failed!!"); - /* TODO: Do we need to do OTA end irrespective of success/failure? */ - rpc_ota_end(); - return ESP_FAIL; - } - } - ret = rpc_ota_end(); - if (ret) { - return ESP_FAIL; - } - } else { - return ESP_FAIL; - } - ESP_LOGE(TAG, "ESP32 will restart after 5 sec"); - return ESP_OK; - ESP_LOGE(TAG, "For OTA, user need to integrate HTTP client lib and then invoke OTA"); - return ESP_FAIL; -} -#endif // ENABLE_HTTP_OTA - -esp_err_t esp_hosted_slave_ota(const char* image_url) -{ -#if OTA_FROM_WEB_URL - return esp_hosted_slave_ota_chunked(image_url); -#else - return esp_hosted_slave_ota_whole_image(image_url); -#endif -} diff --git a/idf_component.yml b/idf_component.yml index 6d26c556..9890d34d 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.5.12" +version: "2.6.0" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/CMakeLists.txt b/slave/CMakeLists.txt index 1df7d42f..95b9b488 100644 --- a/slave/CMakeLists.txt +++ b/slave/CMakeLists.txt @@ -5,6 +5,20 @@ cmake_minimum_required(VERSION 3.5) # Add the wrap flag for esp_wifi_init add_compile_options(-Wl,--wrap=esp_wifi_init) +# Read version from header file before project() call +file(READ "${CMAKE_CURRENT_SOURCE_DIR}/main/esp_hosted_coprocessor_fw_ver.h" HEADER_CONTENTS) +set(PROJECT_VERSION_REGEX "#define[ \t]+PROJECT_VERSION_MAJOR_1[ \t]+([0-9]+)[ \t\n]+#define[ \t]+PROJECT_VERSION_MINOR_1[ \t]+([0-9]+)[ \t\n]+#define[ \t]+PROJECT_VERSION_PATCH_1[ \t]+([0-9]+)") +string(REGEX MATCH "${PROJECT_VERSION_REGEX}" PROJECT_VERSION_MATCH "${HEADER_CONTENTS}") + +if(PROJECT_VERSION_MATCH) + set(PROJECT_VERSION_MAJOR_1 "${CMAKE_MATCH_1}") + set(PROJECT_VERSION_MINOR_1 "${CMAKE_MATCH_2}") + set(PROJECT_VERSION_PATCH_1 "${CMAKE_MATCH_3}") + # Set PROJECT_VER before project() call to override git versioning + set(PROJECT_VER "${PROJECT_VERSION_MAJOR_1}.${PROJECT_VERSION_MINOR_1}.${PROJECT_VERSION_PATCH_1}") + message(STATUS "Setting PROJECT_VER to: ${PROJECT_VER}") +endif() + include($ENV{IDF_PATH}/tools/cmake/project.cmake) list(APPEND EXCLUDE_COMPONENTS lwip esp_netif) @@ -39,22 +53,7 @@ if(TARGET ${lwip}) endif() endif() -### read and display FW Version -file(READ "${CMAKE_CURRENT_LIST_DIR}/main/esp_hosted_coprocessor_fw_ver.h" HEADER_CONTENTS) -set(PROJECT_VERSION_REGEX "#define[ \t]+PROJECT_VERSION_MAJOR_1[ \t]+([0-9]+)[ \t\n]+#define[ \t]+PROJECT_VERSION_MINOR_1[ \t]+([0-9]+)[ \t\n]+#define[ \t]+PROJECT_VERSION_PATCH_1[ \t]+([0-9]+)") -string(REGEX MATCH "${PROJECT_VERSION_REGEX}" PROJECT_VERSION_MATCH "${HEADER_CONTENTS}") - -if(PROJECT_VERSION_MATCH) - set(PROJECT_VERSION_MAJOR_1 "${CMAKE_MATCH_1}") - set(PROJECT_VERSION_MINOR_1 "${CMAKE_MATCH_2}") - set(PROJECT_VERSION_PATCH_1 "${CMAKE_MATCH_3}") - - # Construct project version - set(PROJECT_VER "${PROJECT_VERSION_MAJOR_1}.${PROJECT_VERSION_MINOR_1}.${PROJECT_VERSION_PATCH_1}") - - message(*************************************************************************************) - message(" Building ESP-Hosted-MCU FW :: ${PROJECT_VER} ") - message(*************************************************************************************) -else() - message(FATAL_ERROR "Failed to read project version from main/esp_hosted_coprocessor_fw_ver.h") -endif() +### Display FW Version (already read before project() call) +message(*************************************************************************************) +message(" Building ESP-Hosted-MCU FW :: ${PROJECT_VER} ") +message(*************************************************************************************) diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index f652ea28..57666b7e 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -6,6 +6,8 @@ #ifndef __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 -#define PROJECT_VERSION_MINOR_1 5 -#define PROJECT_VERSION_PATCH_1 12 +#define PROJECT_VERSION_MINOR_1 6 +#define PROJECT_VERSION_PATCH_1 0 + +#define ESP_HOSTED_VERSION_VAL(major, minor, patch) ((major << 16) | (minor << 8) | (patch)) #endif diff --git a/slave/main/slave_control.c b/slave/main/slave_control.c index 12a67c7f..3b9381db 100644 --- a/slave/main/slave_control.c +++ b/slave/main/slave_control.c @@ -58,7 +58,7 @@ #define TIMEOUT_IN_MIN (60*TIMEOUT_IN_SEC) #define TIMEOUT_IN_HOUR (60*TIMEOUT_IN_MIN) -#define RESTART_TIMEOUT (5*TIMEOUT_IN_SEC) +#define RESTART_TIMEOUT (2*TIMEOUT_IN_SEC) #define MIN_HEARTBEAT_INTERVAL (10) #define MAX_HEARTBEAT_INTERVAL (60*60) @@ -69,6 +69,16 @@ static wifi_config_t new_wifi_config = {0}; static bool new_config_recvd = false; static wifi_event_sta_connected_t lkg_sta_connected_event = {0}; +enum { + OTA_NOT_STARTED, + OTA_IN_PROGRESS, + OTA_FAILED, + OTA_COMPLETED, + OTA_ACTIVATED, +}; + +uint8_t ota_status = OTA_NOT_STARTED; + #if H_WIFI_ENTERPRISE_SUPPORT #define CLEAR_CERT(ptr, len) \ do { \ @@ -399,6 +409,7 @@ static esp_err_t req_ota_begin_handler (Rpc *req, ESP_LOGE(TAG, "OTA begin failed[%d]", ret); goto err; } + ota_status = OTA_IN_PROGRESS; ota_msg = 1; @@ -453,7 +464,6 @@ static esp_err_t req_ota_end_handler (Rpc *req, { esp_err_t ret = ESP_OK; RpcRespOTAEnd *resp_payload = NULL; - TimerHandle_t xTimer = NULL; if (!req || !resp) { ESP_LOGE(TAG, "Invalid parameters"); @@ -476,16 +486,72 @@ static esp_err_t req_ota_end_handler (Rpc *req, } else { ESP_LOGE(TAG, "OTA update failed in end (%s)!", esp_err_to_name(ret)); } + ota_status = OTA_FAILED; goto err; } + ESP_LOGI(TAG, "**** OTA updated successful, ready for activation ****"); + ota_status = OTA_COMPLETED; + resp_payload->resp = SUCCESS; + return ESP_OK; +err: + resp_payload->resp = ret; + return ESP_OK; +} + +/* Function OTA activate */ +static esp_err_t req_ota_activate_handler (Rpc *req, + Rpc *resp, void *priv_data) +{ + esp_err_t ret = ESP_OK; + RpcRespOTAActivate *resp_payload = NULL; + TimerHandle_t xTimer = NULL; + + if (!req || !resp) { + ESP_LOGE(TAG, "Invalid parameters"); + return ESP_FAIL; + } + + resp_payload = (RpcRespOTAActivate *)calloc(1,sizeof(RpcRespOTAActivate)); + if (!resp_payload) { + ESP_LOGE(TAG,"Failed to allocate memory"); + return ESP_ERR_NO_MEM; + } + rpc__resp__otaactivate__init(resp_payload); + resp->payload_case = RPC__PAYLOAD_RESP_OTA_ACTIVATE; + resp->resp_ota_activate = resp_payload; + + ret = ESP_OK; + switch (ota_status) { + case OTA_COMPLETED: + break; + case OTA_IN_PROGRESS: + ESP_LOGW(TAG, "OTA in progress"); + goto err; + break; + case OTA_NOT_STARTED: + ESP_LOGW(TAG, "OTA not started"); + goto err; + break; + case OTA_FAILED: + ESP_LOGW(TAG, "OTA failed"); + goto err; + break; + default: + ESP_LOGW(TAG, "OTA status unknown"); + goto err; + break; + } + /* set OTA partition for next boot */ ret = esp_ota_set_boot_partition(update_partition); if (ret != ESP_OK) { ESP_LOGE(TAG, "esp_ota_set_boot_partition failed (%s)!", esp_err_to_name(ret)); goto err; } - xTimer = xTimerCreate("Timer", RESTART_TIMEOUT , pdFALSE, 0, vTimerCallback); + ota_status = OTA_ACTIVATED; + /* Create timer to reboot system and activate OTA */ + xTimer = xTimerCreate("OTAActivateTimer", RESTART_TIMEOUT , pdFALSE, 0, vTimerCallback); if (xTimer == NULL) { ESP_LOGE(TAG, "Failed to create timer to restart system"); ret = -1; @@ -497,7 +563,7 @@ static esp_err_t req_ota_end_handler (Rpc *req, ret = -2; goto err; } - ESP_LOGE(TAG, "**** OTA updated successful, ESP32 will reboot in 5 sec ****"); + ESP_LOGE(TAG, "**** OTA activation initiated, ESP32 will reboot in 2 sec ****"); resp_payload->resp = SUCCESS; return ESP_OK; err: @@ -3569,6 +3635,10 @@ static esp_rpc_req_t req_table[] = { .req_num = RPC_ID__Req_OTAEnd, .command_handler = req_ota_end_handler }, + { + .req_num = RPC_ID__Req_OTAActivate, + .command_handler = req_ota_activate_handler + }, { .req_num = RPC_ID__Req_WifiSetMaxTxPower, .command_handler = req_wifi_set_max_tx_power @@ -3976,7 +4046,9 @@ static esp_err_t esp_rpc_command_dispatcher( goto err_not_supported; } - ESP_LOGI(TAG, "Received Req [0x%x]", req->msg_id); + if (req->msg_id != RPC_ID__Req_OTAWrite) { + ESP_LOGI(TAG, "Received Req [0x%x]", req->msg_id); + } req_index = lookup_req_handler(req->msg_id); if (req_index < 0) { @@ -4039,7 +4111,10 @@ esp_err_t data_transfer_handler(uint32_t session_id,const uint8_t *inbuf, resp->msg_id = req->msg_id - RPC_ID__Req_Base + RPC_ID__Resp_Base; resp->uid = req->uid; resp->payload_case = resp->msg_id; - ESP_LOGI(TAG, "Resp_MSGId for req[0x%x] is [0x%x], uid %ld", req->msg_id, resp->msg_id, resp->uid); + + if (resp->msg_id != RPC_ID__Resp_OTAWrite) { + ESP_LOGI(TAG, "Resp_MSGId for req[0x%x] is [0x%x], uid %ld", req->msg_id, resp->msg_id, resp->uid); + } ret = esp_rpc_command_dispatcher(req,resp,NULL); if (ret) { ESP_LOGE(TAG, "Command dispatching not happening"); From 25ae4fc44fff40a5d386404ca598bf5c7f892b8f Mon Sep 17 00:00:00 2001 From: Simon Canins Date: Thu, 16 Oct 2025 16:12:08 +0200 Subject: [PATCH 110/114] Added #ifdefs --- CMakeLists.txt | 4 +++- Kconfig | 8 ++++++++ host/drivers/rpc/core/rpc_req.c | 2 ++ host/drivers/rpc/core/rpc_rsp.c | 4 +++- host/drivers/rpc/slaveif/rpc_slave_if.c | 3 ++- host/drivers/rpc/slaveif/rpc_slave_if.h | 8 ++++++-- host/drivers/rpc/wrap/rpc_wrap.c | 8 +++++++- host/drivers/rpc/wrap/rpc_wrap.h | 9 ++++----- .../include/port_esp_hosted_host_config.h | 6 ++++++ .../esp/freertos/src/port_esp_hosted_host_gpio.c | 16 ++++++++-------- slave/main/slave_control.c | 3 +++ slave/main/transport_gpio_pin_guard.c | 11 +++++------ slave/main/transport_gpio_pin_guard.h | 7 ++++++- 13 files changed, 63 insertions(+), 26 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5e109f2e..36447414 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -70,7 +70,9 @@ if(CONFIG_ESP_HOSTED_ENABLED) "${common_dir}/protobuf-c" "${common_dir}/proto" ) - list(APPEND srcs "${host_dir}/port/esp/freertos/src/port_esp_hosted_host_gpio.c") + if(CONFIG_ESP_HOSTED_ENABLE_GPIO_CONTROL) + list(APPEND srcs "${host_dir}/port/esp/freertos/src/port_esp_hosted_host_gpio.c") + endif() # cli list(APPEND srcs "${common_dir}/utils/esp_hosted_cli.c") diff --git a/Kconfig b/Kconfig index c4efc961..949c41cb 100644 --- a/Kconfig +++ b/Kconfig @@ -1508,6 +1508,14 @@ ESP32XX_SPI_HD_CLK_FREQ_RANGE_MAX := 40 Enable Wi-Fi iTWT (individual Target Wake Time) APIs on Host. Using the API, Host can instruct the co-processor to negotiate specific wake and sleep schedules with the access point (AP) for lower power consumption. + + config ESP_HOSTED_ENABLE_GPIO_CONTROL + bool "Enable GPIO control on co-processor" + default n + help + Enable RPC methods that allow the HOST MCU to configure and control GPIOs + on the co-processor. Leave disabled unless you really need it. + GPIO requests that target pins used by the active transport will be rejected. config ESP_HOSTED_ENABLE_DPP bool "Enable Wi-Fi Easy Connect (DPP)" diff --git a/host/drivers/rpc/core/rpc_req.c b/host/drivers/rpc/core/rpc_req.c index 6099da9c..6e6af5b3 100644 --- a/host/drivers/rpc/core/rpc_req.c +++ b/host/drivers/rpc/core/rpc_req.c @@ -819,6 +819,7 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) } break; #endif +#if H_ENABLE_GPIO_CONTROL } case RPC_ID__Req_GpioConfig: { RPC_ALLOC_ASSIGN(RpcReqGpioConfig, req_gpio_config, rpc__req__gpio_config__init); @@ -868,6 +869,7 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) req_payload->gpio_num = app_req->u.gpio_set_pull_mode.gpio_num; req_payload->pull = app_req->u.gpio_set_pull_mode.pull_mode; break; +#endif } default: { *failure_status = RPC_ERR_UNSUPPORTED_MSG; ESP_LOGE(TAG, "Unsupported RPC Req[%u]",req->msg_id); diff --git a/host/drivers/rpc/core/rpc_rsp.c b/host/drivers/rpc/core/rpc_rsp.c index be155771..9229262e 100644 --- a/host/drivers/rpc/core/rpc_rsp.c +++ b/host/drivers/rpc/core/rpc_rsp.c @@ -761,7 +761,8 @@ int rpc_parse_rsp(Rpc *rpc_msg, ctrl_cmd_t *app_resp) RPC_ERR_IN_RESP(resp_supp_dpp_stop_listen); break; #endif - } case RPC_ID__Resp_GpioConfig: { +#if H_ENABLE_GPIO_CONTROL + } case RPC_ID__Resp_GpioConfig: { RPC_FAIL_ON_NULL(resp_gpio_config); RPC_ERR_IN_RESP(resp_gpio_config); break; @@ -790,6 +791,7 @@ int rpc_parse_rsp(Rpc *rpc_msg, ctrl_cmd_t *app_resp) RPC_FAIL_ON_NULL(resp_gpio_set_pull_mode); RPC_ERR_IN_RESP(resp_gpio_set_pull_mode); break; +#endif // H_ENABLE_GPIO_CONTROL } default: { ESP_LOGE(TAG, "Unsupported rpc Resp[%u]", rpc_msg->msg_id); goto fail_parse_rpc_msg; diff --git a/host/drivers/rpc/slaveif/rpc_slave_if.c b/host/drivers/rpc/slaveif/rpc_slave_if.c index 26ed1c1f..3c5def18 100644 --- a/host/drivers/rpc/slaveif/rpc_slave_if.c +++ b/host/drivers/rpc/slaveif/rpc_slave_if.c @@ -649,7 +649,7 @@ ctrl_cmd_t * rpc_slaveif_supp_dpp_stop_listen(ctrl_cmd_t *req) RPC_DECODE_RSP_IF_NOT_ASYNC(); } #endif - +#if H_ENABLE_GPIO_CONTROL ctrl_cmd_t * rpc_slaveif_gpio_config(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_GpioConfig); @@ -691,3 +691,4 @@ ctrl_cmd_t * rpc_slaveif_gpio_set_pull_mode(ctrl_cmd_t *req) RPC_SEND_REQ(RPC_ID__Req_GpioSetPullMode); RPC_DECODE_RSP_IF_NOT_ASYNC(); } +#endif //H_ENABLE_GPIO_CONTROL diff --git a/host/drivers/rpc/slaveif/rpc_slave_if.h b/host/drivers/rpc/slaveif/rpc_slave_if.h index 5a209a94..3282d7ce 100644 --- a/host/drivers/rpc/slaveif/rpc_slave_if.h +++ b/host/drivers/rpc/slaveif/rpc_slave_if.h @@ -13,7 +13,6 @@ #include "esp_wifi.h" #include "esp_mac.h" #include "esp_wifi_types.h" -#include "driver/gpio.h" #include "port_esp_hosted_host_wifi_config.h" #if H_WIFI_ENTERPRISE_SUPPORT @@ -336,6 +335,7 @@ typedef struct { } rpc_eap_domain_name_t; #endif +#if H_ENABLE_GPIO_CONTROL typedef struct { gpio_num_t gpio_num; uint32_t level; @@ -350,6 +350,7 @@ typedef struct { gpio_num_t gpio_num; gpio_pull_mode_t pull_mode; } rpc_gpio_set_pull_mode_t; +#endif typedef struct Ctrl_cmd_t { /* msg type could be 1. req 2. resp 3. notification */ @@ -522,7 +523,7 @@ typedef struct Ctrl_cmd_t { supp_wifi_event_dpp_failed_t e_dpp_failed; #endif - +#if H_ENABLE_GPIO_CONTROL gpio_config_t gpio_config; gpio_num_t gpio_num; @@ -534,6 +535,7 @@ typedef struct Ctrl_cmd_t { rpc_gpio_set_direction_t gpio_set_direction; rpc_gpio_set_pull_mode_t gpio_set_pull_mode; +#endif }u; /* By default this callback is set to NULL. @@ -792,6 +794,7 @@ ctrl_cmd_t * rpc_slaveif_supp_dpp_bootstrap_gen(ctrl_cmd_t *req); ctrl_cmd_t * rpc_slaveif_supp_dpp_start_listen(ctrl_cmd_t *req); ctrl_cmd_t * rpc_slaveif_supp_dpp_stop_listen(ctrl_cmd_t *req); #endif +#if H_ENABLE_GPIO_CONTROL ctrl_cmd_t * rpc_slaveif_gpio_config(ctrl_cmd_t *req); ctrl_cmd_t * rpc_slaveif_gpio_reset_pin(ctrl_cmd_t *req); ctrl_cmd_t * rpc_slaveif_gpio_set_level(ctrl_cmd_t *req); @@ -799,6 +802,7 @@ ctrl_cmd_t * rpc_slaveif_gpio_get_level(ctrl_cmd_t *req); ctrl_cmd_t * rpc_slaveif_gpio_set_direction(ctrl_cmd_t *req); ctrl_cmd_t * rpc_slaveif_gpio_input_enable(ctrl_cmd_t *req); ctrl_cmd_t * rpc_slaveif_gpio_set_pull_mode(ctrl_cmd_t *req); +#endif #ifdef __cplusplus } #endif diff --git a/host/drivers/rpc/wrap/rpc_wrap.c b/host/drivers/rpc/wrap/rpc_wrap.c index 5ef5681c..49b6a079 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.c +++ b/host/drivers/rpc/wrap/rpc_wrap.c @@ -13,6 +13,7 @@ #include "esp_hosted_rpc.h" #include "esp_log.h" #include "port_esp_hosted_host_wifi_config.h" +#include "port_esp_hosted_host_config.h" #include "port_esp_hosted_host_os.h" #include "esp_hosted_transport.h" #include "port_esp_hosted_host_log.h" @@ -691,6 +692,7 @@ int rpc_rsp_callback(ctrl_cmd_t * app_resp) case RPC_ID__Resp_SuppDppStartListen: case RPC_ID__Resp_SuppDppStopListen: #endif +#if H_ENABLE_GPIO_CONTROL case RPC_ID__Resp_GetCoprocessorFwVersion: case RPC_ID__Resp_GpioConfig: case RPC_ID__Resp_GpioResetPin: @@ -698,7 +700,9 @@ int rpc_rsp_callback(ctrl_cmd_t * app_resp) case RPC_ID__Resp_GpioGetLevel: case RPC_ID__Resp_GpioSetDirection: case RPC_ID__Resp_GpioInputEnable: - case RPC_ID__Resp_GpioSetPullMode: { + case RPC_ID__Resp_GpioSetPullMode: +#endif + { /* Intended fallthrough */ break; } default: { @@ -2395,6 +2399,7 @@ static esp_err_t rpc_iface_feature_control(rcp_feature_control_t *feature_contro return rpc_rsp_callback(resp); } +#if H_ENABLE_GPIO_CONTROL esp_err_t rpc_gpio_set_direction(gpio_num_t gpio_num, gpio_mode_t mode) { /* implemented synchronous */ @@ -2431,3 +2436,4 @@ esp_err_t rpc_gpio_set_pull_mode(gpio_num_t gpio_num, gpio_pull_mode_t pull_mode resp = rpc_slaveif_gpio_set_pull_mode(req); return rpc_rsp_callback(resp); } +#endif diff --git a/host/drivers/rpc/wrap/rpc_wrap.h b/host/drivers/rpc/wrap/rpc_wrap.h index a56e3e5c..655b835c 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.h +++ b/host/drivers/rpc/wrap/rpc_wrap.h @@ -14,8 +14,7 @@ extern "C" { /** Includes **/ #include "esp_wifi.h" -#include "driver/gpio.h" -#include "port_esp_hosted_host_wifi_config.h" +v#include "port_esp_hosted_host_wifi_config.h" #include "esp_mac.h" #include "esp_hosted_api_types.h" @@ -171,15 +170,15 @@ esp_err_t rpc_supp_dpp_bootstrap_gen(const char *chan_list, esp_err_t rpc_supp_dpp_start_listen(void); esp_err_t rpc_supp_dpp_stop_listen(void); #endif - +#if H_ENABLE_GPIO_CONTROL esp_err_t rpc_gpio_config(const gpio_config_t *pGPIOConfig); esp_err_t rpc_gpio_reset_pin(gpio_num_t gpio_num); esp_err_t rpc_gpio_set_level(gpio_num_t gpio_num, uint32_t level); int rpc_gpio_get_level(gpio_num_t gpio_num, int *level); esp_err_t rpc_gpio_set_direction(gpio_num_t gpio_num, gpio_mode_t mode); esp_err_t rpc_gpio_input_enable(gpio_num_t gpio_num); -esp_err_t rpc_gpio_set_pull_mode(gpio_num_t gpio_num, gpio_pull_mode_t pull); - +esp_err_t rpc_gpio_set_puall_mode(gpio_num_t gpio_num, gpio_pull_mode_t pull); +#endif #ifdef __cplusplus } diff --git a/host/port/esp/freertos/include/port_esp_hosted_host_config.h b/host/port/esp/freertos/include/port_esp_hosted_host_config.h index 82ecdc33..94bf070e 100644 --- a/host/port/esp/freertos/include/port_esp_hosted_host_config.h +++ b/host/port/esp/freertos/include/port_esp_hosted_host_config.h @@ -570,4 +570,10 @@ enum { esp_err_t esp_hosted_set_default_config(void); bool esp_hosted_is_config_valid(void); +#if CONFIG_ESP_HOSTED_ENABLE_GPIO_CONTROL +#define H_ENABLE_GPIO_CONTROL 1 +#else +#define H_ENABLE_GPIO_CONTROL 0 +#endif + #endif /*__ESP_HOSTED_CONFIG_H__*/ diff --git a/host/port/esp/freertos/src/port_esp_hosted_host_gpio.c b/host/port/esp/freertos/src/port_esp_hosted_host_gpio.c index 57f18b75..80e66de3 100644 --- a/host/port/esp/freertos/src/port_esp_hosted_host_gpio.c +++ b/host/port/esp/freertos/src/port_esp_hosted_host_gpio.c @@ -1,11 +1,7 @@ -/* Current GPIO method(s) supported: - * - gpio_config() - * - gpio_reset_pin() - * - gpio_set_level() - * - gpio_get_level() - * - gpio_set_direction() - * - gpio_input_enable() - * - gpio_set_pull_mode() +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 */ #include "esp_log.h" @@ -13,6 +9,8 @@ #include "rpc_wrap.h" #include "esp_hosted_gpio.h" +#if H_ENABLE_GPIO_CONTROL + static char *TAG = "hosted_gpio"; esp_err_t esp_hosted_gpio_config(const gpio_config_t *pGPIOConfig) @@ -51,3 +49,5 @@ esp_err_t esp_hosted_gpio_set_pull_mode(gpio_num_t gpio_num, gpio_pull_mode_t pu { return rpc_gpio_set_pull_mode(gpio_num, pull); } + +#endif // H_ENABLE_GPIO_CONTROL diff --git a/slave/main/slave_control.c b/slave/main/slave_control.c index f40a1e0c..e7f0a308 100644 --- a/slave/main/slave_control.c +++ b/slave/main/slave_control.c @@ -21,8 +21,11 @@ #include "esp_hosted_log.h" #include "slave_bt.h" #include "esp_hosted_coprocessor_fw_ver.h" + +#if CONFIG_ESP_HOSTED_ENABLE_GPIO_RPC #include "driver/gpio.h" #include "transport_gpio_pin_guard.h" +#endif #if H_DPP_SUPPORT #include "esp_dpp.h" diff --git a/slave/main/transport_gpio_pin_guard.c b/slave/main/transport_gpio_pin_guard.c index 13473570..d781b31e 100644 --- a/slave/main/transport_gpio_pin_guard.c +++ b/slave/main/transport_gpio_pin_guard.c @@ -1,6 +1,8 @@ -#include "transport_gpio_pin_guard.h" #include "sdkconfig.h" +#if CONFIG_ESP_HOSTED_ENABLE_GPIO_RPC +#include "transport_gpio_pin_guard.h" + static inline void add_pin(uint64_t *mask, int pin) { if (pin >= 0 && pin < GPIO_NUM_MAX) { @@ -35,11 +37,6 @@ static uint64_t get_reserved_pin_mask(void) add_pin(&mask, CONFIG_ESP_SPI_GPIO_HANDSHAKE); add_pin(&mask, CONFIG_ESP_SPI_GPIO_DATA_READY); add_pin(&mask, CONFIG_ESP_SPI_GPIO_RESET); - - add_pin(&mask, CONFIG_ESP_SPI_HSPI_GPIO_MOSI); - add_pin(&mask, CONFIG_ESP_SPI_HSPI_GPIO_MISO); - add_pin(&mask, CONFIG_ESP_SPI_HSPI_GPIO_CLK); - add_pin(&mask, CONFIG_ESP_SPI_HSPI_GPIO_CS); #endif /* ---------- SPI (half duplex) ---------- */ @@ -70,3 +67,5 @@ uint8_t transport_gpio_pin_guard_is_eligible(gpio_num_t pin) uint64_t reserved = get_reserved_pin_mask(); return ((reserved & (1ULL << pin)) == 0); } + +#endif // CONFIG_ESP_HOSTED_ENABLE_GPIO_RPC diff --git a/slave/main/transport_gpio_pin_guard.h b/slave/main/transport_gpio_pin_guard.h index b2738f6d..3b473d74 100644 --- a/slave/main/transport_gpio_pin_guard.h +++ b/slave/main/transport_gpio_pin_guard.h @@ -1,7 +1,11 @@ #pragma once -#include "driver/gpio.h" #include +#include "sdkconfig.h" + +#if CONFIG_ESP_HOSTED_ENABLE_GPIO_RPC + +#include "driver/gpio.h" /** * @brief Check if a GPIO pin is free for general use. @@ -12,3 +16,4 @@ */ uint8_t transport_gpio_pin_guard_is_eligible(gpio_num_t pin); +#endif From c41c6fc4435f8008a5da74bc74a8cf38821aca52 Mon Sep 17 00:00:00 2001 From: Yogesh Mantri Date: Thu, 16 Oct 2025 22:27:56 +0800 Subject: [PATCH 111/114] Minor fixes in slave ota example --- CHANGELOG.md | 3 + .../components/ota_https/ota_https.c | 32 +- .../components/ota_https/ota_https_wifi.c | 13 +- .../components/ota_littlefs/ota_littlefs.c | 644 +++++++++--------- .../components/ota_partition/ota_partition.c | 408 +++++------ host/esp_hosted_host_fw_ver.h | 5 +- idf_component.yml | 2 +- slave/main/esp_hosted_coprocessor_fw_ver.h | 3 +- 8 files changed, 565 insertions(+), 545 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3509d15c..47d1b44b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +## 2.6.1 +Minor fixes in Slave OTA example + ## 2.6.0 - Added public OTA APIs for slave firmware updates - Added host-triggered slave OTA example with support for HTTP, partition, and filesystem sources diff --git a/examples/host_performs_slave_ota/components/ota_https/ota_https.c b/examples/host_performs_slave_ota/components/ota_https/ota_https.c index 3f6d106a..dec6b7fb 100644 --- a/examples/host_performs_slave_ota/components/ota_https/ota_https.c +++ b/examples/host_performs_slave_ota/components/ota_https/ota_https.c @@ -23,7 +23,7 @@ static const char* TAG = "https_ota"; -extern void establish_wifi_connection(void); +extern esp_err_t establish_wifi_connection(void); /* Self-signed certificate - embedded at compile time (only if enabled) */ #ifdef CONFIG_OTA_USE_SELF_SIGNED_CERT @@ -170,16 +170,20 @@ esp_err_t ota_https_perform(const char* image_url) if ((image_url == NULL) || (image_url[0] == '\0')) { ESP_LOGE(TAG, "Invalid image URL"); - return ESP_FAIL; + return ESP_HOSTED_SLAVE_OTA_FAILED; } // Validate HTTPS URL if (strncmp(image_url, "https://", 8) != 0) { ESP_LOGE(TAG, "URL must use HTTPS protocol"); - return ESP_FAIL; + return ESP_HOSTED_SLAVE_OTA_FAILED; } - establish_wifi_connection(); + err = establish_wifi_connection(); + if (err != ESP_OK) { + ESP_LOGE(TAG, "WiFi connection failed: %s", esp_err_to_name(err)); + return ESP_HOSTED_SLAVE_OTA_FAILED; + } ESP_LOGI(TAG, "Starting HTTPS OTA from URL: %s", image_url); @@ -191,7 +195,7 @@ esp_err_t ota_https_perform(const char* image_url) if (cert_len == 0) { ESP_LOGE(TAG, "Certificate not embedded properly! Check CMakeLists.txt"); - return ESP_FAIL; + return ESP_HOSTED_SLAVE_OTA_FAILED; } #else ESP_LOGI(TAG, "Security: CA Certificate Bundle (Production mode)"); @@ -227,7 +231,7 @@ esp_err_t ota_https_perform(const char* image_url) esp_http_client_handle_t client = esp_http_client_init(&config); if (client == NULL) { ESP_LOGE(TAG, "Failed to initialize HTTPS client"); - return ESP_FAIL; + return ESP_HOSTED_SLAVE_OTA_FAILED; } /* Open connection */ @@ -240,14 +244,14 @@ esp_err_t ota_https_perform(const char* image_url) ESP_LOGE(TAG, " - WiFi connection issues"); ESP_LOGE(TAG, " - Firewall blocking port 8443"); esp_http_client_cleanup(client); - return err; + return ESP_HOSTED_SLAVE_OTA_FAILED; } if (http_err) { ESP_LOGE(TAG, "Exiting OTA, due to http failure"); esp_http_client_cleanup(client); http_err = 0; - return ESP_FAIL; + return ESP_HOSTED_SLAVE_OTA_FAILED; } /* Fetch headers */ @@ -258,7 +262,7 @@ esp_err_t ota_https_perform(const char* image_url) if (http_status != 200) { ESP_LOGE(TAG, "HTTPS request failed with status: %d", http_status); esp_http_client_cleanup(client); - return ESP_FAIL; + return ESP_HOSTED_SLAVE_OTA_FAILED; } if (content_length <= 0) { @@ -268,7 +272,7 @@ esp_err_t ota_https_perform(const char* image_url) esp_http_client_get_content_length(client)); esp_http_client_close(client); esp_http_client_cleanup(client); - return ESP_FAIL; + return ESP_HOSTED_SLAVE_OTA_FAILED; } ESP_LOGI(TAG, "HTTP GET Status = %d, content_length = %"PRId64, @@ -282,7 +286,7 @@ esp_err_t ota_https_perform(const char* image_url) ESP_LOGI(TAG, "esp_ota_begin failed, error=%s", esp_err_to_name(err)); esp_http_client_close(client); esp_http_client_cleanup(client); - return err; + return ESP_HOSTED_SLAVE_OTA_FAILED; } ota_chunk = (uint8_t*)calloc(1, CHUNK_SIZE); @@ -290,7 +294,7 @@ esp_err_t ota_https_perform(const char* image_url) ESP_LOGE(TAG, "Failed to allocate OTA chunk memory"); esp_http_client_close(client); esp_http_client_cleanup(client); - return ESP_FAIL; + return ESP_HOSTED_SLAVE_OTA_FAILED; } ESP_LOGI(TAG, "Starting OTA data transfer over HTTPS"); @@ -376,13 +380,13 @@ esp_err_t ota_https_perform(const char* image_url) ESP_LOGE(TAG, "esp_ota_end failed, error=%s", esp_err_to_name(err)); esp_http_client_close(client); esp_http_client_cleanup(client); - return err; + return ESP_HOSTED_SLAVE_OTA_FAILED; } /* Final result */ if (ota_failed) { ESP_LOGE(TAG, "********* Slave OTA Failed *******************"); - return ESP_FAIL; + return ESP_HOSTED_SLAVE_OTA_FAILED; } else { ESP_LOGI(TAG, "********* Slave OTA Complete *******************"); return ESP_HOSTED_SLAVE_OTA_COMPLETED; diff --git a/examples/host_performs_slave_ota/components/ota_https/ota_https_wifi.c b/examples/host_performs_slave_ota/components/ota_https/ota_https_wifi.c index 445b68e2..37f0e577 100644 --- a/examples/host_performs_slave_ota/components/ota_https/ota_https_wifi.c +++ b/examples/host_performs_slave_ota/components/ota_https/ota_https_wifi.c @@ -113,10 +113,21 @@ void wifi_init_sta(void) } } -void establish_wifi_connection(void) +esp_err_t establish_wifi_connection(void) { ESP_LOGI(TAG, "ESP_WIFI_MODE_STA"); wifi_init_sta(); + + EventBits_t bits = xEventGroupGetBits(s_wifi_event_group); + if (bits & WIFI_CONNECTED_BIT) { + return ESP_OK; + } else if (bits & WIFI_FAIL_BIT) { + ESP_LOGE(TAG, "WiFi connection failed after maximum retries"); + return ESP_FAIL; + } else { + ESP_LOGE(TAG, "WiFi connection in unexpected state"); + return ESP_ERR_INVALID_STATE; + } } #endif diff --git a/examples/host_performs_slave_ota/components/ota_littlefs/ota_littlefs.c b/examples/host_performs_slave_ota/components/ota_littlefs/ota_littlefs.c index b3262ea7..87c9d47d 100644 --- a/examples/host_performs_slave_ota/components/ota_littlefs/ota_littlefs.c +++ b/examples/host_performs_slave_ota/components/ota_littlefs/ota_littlefs.c @@ -30,340 +30,340 @@ static const char* TAG = "ota_littlefs"; /* Function to parse ESP32 image header and get firmware info from file */ static esp_err_t parse_image_header_from_file(const char* file_path, size_t* firmware_size, char* app_version_str, size_t version_str_len) { - FILE* file; - esp_image_header_t image_header; - esp_image_segment_header_t segment_header; - esp_app_desc_t app_desc; - size_t offset = 0; - size_t total_size = 0; - - file = fopen(file_path, "rb"); - if (file == NULL) { - ESP_LOGE(TAG, "Failed to open firmware file for header verification: %s", file_path); - return ESP_FAIL; - } - - /* Read image header */ - if (fread(&image_header, sizeof(image_header), 1, file) != 1) { - ESP_LOGE(TAG, "Failed to read image header from file"); - fclose(file); - return ESP_FAIL; - } - - /* Validate magic number */ - if (image_header.magic != ESP_IMAGE_HEADER_MAGIC) { - ESP_LOGE(TAG, "Invalid image magic: 0x%" PRIx8, image_header.magic); - fclose(file); - return ESP_ERR_INVALID_ARG; - } - - ESP_LOGI(TAG, "Image header: magic=0x%" PRIx8 ", segment_count=%" PRIu8 ", hash_appended=%" PRIu8, - image_header.magic, image_header.segment_count, image_header.hash_appended); - - /* Calculate total size by reading all segments */ - offset = sizeof(image_header); - total_size = sizeof(image_header); - - for (int i = 0; i < image_header.segment_count; i++) { - /* Read segment header */ - if (fseek(file, offset, SEEK_SET) != 0 || - fread(&segment_header, sizeof(segment_header), 1, file) != 1) { - ESP_LOGE(TAG, "Failed to read segment %d header", i); - fclose(file); - return ESP_FAIL; - } - - ESP_LOGI(TAG, "Segment %d: data_len=%" PRIu32 ", load_addr=0x%" PRIx32, i, segment_header.data_len, segment_header.load_addr); - - /* Add segment header size + data size */ - total_size += sizeof(segment_header) + segment_header.data_len; - offset += sizeof(segment_header) + segment_header.data_len; - - /* Read app description from the first segment */ - if (i == 0) { - size_t app_desc_offset = sizeof(image_header) + sizeof(segment_header); - if (fseek(file, app_desc_offset, SEEK_SET) == 0 && - fread(&app_desc, sizeof(app_desc), 1, file) == 1) { - strncpy(app_version_str, app_desc.version, version_str_len - 1); - app_version_str[version_str_len - 1] = '\0'; - ESP_LOGI(TAG, "Found app description: version='%s', project_name='%s'", - app_desc.version, app_desc.project_name); - } else { - ESP_LOGW(TAG, "Failed to read app description"); - strncpy(app_version_str, "unknown", version_str_len - 1); - app_version_str[version_str_len - 1] = '\0'; - } - } - } - - /* Add padding to align to 16 bytes */ - size_t padding = (16 - (total_size % 16)) % 16; - if (padding > 0) { - ESP_LOGD(TAG, "Adding %u bytes of padding for alignment", (unsigned int)padding); - total_size += padding; - } - - /* Add the checksum byte (always present) */ - total_size += 1; - ESP_LOGD(TAG, "Added 1 byte for checksum"); - - /* Add SHA256 hash if appended */ - bool has_hash = (image_header.hash_appended == 1); - if (has_hash) { - total_size += 32; // SHA256 hash is 32 bytes - ESP_LOGD(TAG, "Added 32 bytes for SHA256 hash (hash_appended=1)"); - } else { - ESP_LOGD(TAG, "No SHA256 hash appended (hash_appended=0)"); - } - - *firmware_size = total_size; - ESP_LOGI(TAG, "Total image size: %u bytes", (unsigned int)*firmware_size); - - fclose(file); - return ESP_OK; + FILE* file; + esp_image_header_t image_header; + esp_image_segment_header_t segment_header; + esp_app_desc_t app_desc; + size_t offset = 0; + size_t total_size = 0; + + file = fopen(file_path, "rb"); + if (file == NULL) { + ESP_LOGE(TAG, "Failed to open firmware file for header verification: %s", file_path); + return ESP_FAIL; + } + + /* Read image header */ + if (fread(&image_header, sizeof(image_header), 1, file) != 1) { + ESP_LOGE(TAG, "Failed to read image header from file"); + fclose(file); + return ESP_FAIL; + } + + /* Validate magic number */ + if (image_header.magic != ESP_IMAGE_HEADER_MAGIC) { + ESP_LOGE(TAG, "Invalid image magic: 0x%" PRIx8, image_header.magic); + fclose(file); + return ESP_ERR_INVALID_ARG; + } + + ESP_LOGI(TAG, "Image header: magic=0x%" PRIx8 ", segment_count=%" PRIu8 ", hash_appended=%" PRIu8, + image_header.magic, image_header.segment_count, image_header.hash_appended); + + /* Calculate total size by reading all segments */ + offset = sizeof(image_header); + total_size = sizeof(image_header); + + for (int i = 0; i < image_header.segment_count; i++) { + /* Read segment header */ + if (fseek(file, offset, SEEK_SET) != 0 || + fread(&segment_header, sizeof(segment_header), 1, file) != 1) { + ESP_LOGE(TAG, "Failed to read segment %d header", i); + fclose(file); + return ESP_FAIL; + } + + ESP_LOGI(TAG, "Segment %d: data_len=%" PRIu32 ", load_addr=0x%" PRIx32, i, segment_header.data_len, segment_header.load_addr); + + /* Add segment header size + data size */ + total_size += sizeof(segment_header) + segment_header.data_len; + offset += sizeof(segment_header) + segment_header.data_len; + + /* Read app description from the first segment */ + if (i == 0) { + size_t app_desc_offset = sizeof(image_header) + sizeof(segment_header); + if (fseek(file, app_desc_offset, SEEK_SET) == 0 && + fread(&app_desc, sizeof(app_desc), 1, file) == 1) { + strncpy(app_version_str, app_desc.version, version_str_len - 1); + app_version_str[version_str_len - 1] = '\0'; + ESP_LOGI(TAG, "Found app description: version='%s', project_name='%s'", + app_desc.version, app_desc.project_name); + } else { + ESP_LOGW(TAG, "Failed to read app description"); + strncpy(app_version_str, "unknown", version_str_len - 1); + app_version_str[version_str_len - 1] = '\0'; + } + } + } + + /* Add padding to align to 16 bytes */ + size_t padding = (16 - (total_size % 16)) % 16; + if (padding > 0) { + ESP_LOGD(TAG, "Adding %u bytes of padding for alignment", (unsigned int)padding); + total_size += padding; + } + + /* Add the checksum byte (always present) */ + total_size += 1; + ESP_LOGD(TAG, "Added 1 byte for checksum"); + + /* Add SHA256 hash if appended */ + bool has_hash = (image_header.hash_appended == 1); + if (has_hash) { + total_size += 32; // SHA256 hash is 32 bytes + ESP_LOGD(TAG, "Added 32 bytes for SHA256 hash (hash_appended=1)"); + } else { + ESP_LOGD(TAG, "No SHA256 hash appended (hash_appended=0)"); + } + + *firmware_size = total_size; + ESP_LOGI(TAG, "Total image size: %u bytes", (unsigned int)*firmware_size); + + fclose(file); + return ESP_OK; } /* Find latest firmware file in LittleFS */ static esp_err_t find_latest_firmware(char* firmware_path, size_t max_len) { - DIR *dir; - struct dirent *entry; - struct stat file_stat; - char *latest_file = malloc(256); // Use heap instead of stack - char *full_path = malloc(512); // Use heap for full path - - if (!latest_file || !full_path) { - ESP_LOGE(TAG, "Failed to allocate memory for file search"); - if (latest_file) free(latest_file); - if (full_path) free(full_path); - return ESP_ERR_NO_MEM; - } - - memset(latest_file, 0, 256); - - dir = opendir("/littlefs"); - if (dir == NULL) { - ESP_LOGE(TAG, "Failed to open /littlefs directory"); - free(latest_file); - free(full_path); - return ESP_FAIL; - } - - ESP_LOGI(TAG, "Successfully opened /littlefs directory"); - - /* Find the first .bin file (since timestamps might not be reliable in LittleFS) */ - while ((entry = readdir(dir)) != NULL) { - ESP_LOGI(TAG, "Found file: %s", entry->d_name); - if (strstr(entry->d_name, ".bin") != NULL) { - ESP_LOGI(TAG, "Found .bin file: %s", entry->d_name); - snprintf(full_path, 512, "/littlefs/%s", entry->d_name); - - if (stat(full_path, &file_stat) == 0) { - ESP_LOGI(TAG, "File stat successful for %s, size: %ld", entry->d_name, file_stat.st_size); - /* Use the first .bin file found */ - strncpy(latest_file, entry->d_name, 255); - latest_file[255] = '\0'; // Ensure null termination - ESP_LOGI(TAG, "Using firmware file: %s", latest_file); - break; // Use the first .bin file found - } else { - ESP_LOGW(TAG, "Failed to stat file: %s", full_path); - } - } - } - closedir(dir); - - ESP_LOGI(TAG, "Final latest_file: '%s', length: %d", latest_file, strlen(latest_file)); - - if (strlen(latest_file) == 0) { - ESP_LOGE(TAG, "No .bin files found in /littlefs directory. Please refer doc to know how partition is created with slave firmware at correct path."); - free(latest_file); - free(full_path); - return ESP_FAIL; - } - - // Ensure we don't overflow the destination buffer - if (snprintf(firmware_path, max_len, "/littlefs/%s", latest_file) >= max_len) { - ESP_LOGE(TAG, "Firmware path too long"); - free(latest_file); - free(full_path); - return ESP_FAIL; - } - - ESP_LOGI(TAG, "Found latest firmware: %s", firmware_path); - - // Clean up allocated memory - free(latest_file); - free(full_path); - - return ESP_OK; + DIR *dir; + struct dirent *entry; + struct stat file_stat; + char *latest_file = malloc(256); // Use heap instead of stack + char *full_path = malloc(512); // Use heap for full path + + if (!latest_file || !full_path) { + ESP_LOGE(TAG, "Failed to allocate memory for file search"); + if (latest_file) free(latest_file); + if (full_path) free(full_path); + return ESP_ERR_NO_MEM; + } + + memset(latest_file, 0, 256); + + dir = opendir("/littlefs"); + if (dir == NULL) { + ESP_LOGE(TAG, "Failed to open /littlefs directory"); + free(latest_file); + free(full_path); + return ESP_FAIL; + } + + ESP_LOGI(TAG, "Successfully opened /littlefs directory"); + + /* Find the first .bin file (since timestamps might not be reliable in LittleFS) */ + while ((entry = readdir(dir)) != NULL) { + ESP_LOGI(TAG, "Found file: %s", entry->d_name); + if (strstr(entry->d_name, ".bin") != NULL) { + ESP_LOGI(TAG, "Found .bin file: %s", entry->d_name); + snprintf(full_path, 512, "/littlefs/%s", entry->d_name); + + if (stat(full_path, &file_stat) == 0) { + ESP_LOGI(TAG, "File stat successful for %s, size: %ld", entry->d_name, file_stat.st_size); + /* Use the first .bin file found */ + strncpy(latest_file, entry->d_name, 255); + latest_file[255] = '\0'; // Ensure null termination + ESP_LOGI(TAG, "Using firmware file: %s", latest_file); + break; // Use the first .bin file found + } else { + ESP_LOGW(TAG, "Failed to stat file: %s", full_path); + } + } + } + closedir(dir); + + ESP_LOGI(TAG, "Final latest_file: '%s', length: %d", latest_file, strlen(latest_file)); + + if (strlen(latest_file) == 0) { + ESP_LOGE(TAG, "No .bin files found in /littlefs directory. Please refer doc to know how partition is created with slave firmware at correct path."); + free(latest_file); + free(full_path); + return ESP_FAIL; + } + + // Ensure we don't overflow the destination buffer + if (snprintf(firmware_path, max_len, "/littlefs/%s", latest_file) >= max_len) { + ESP_LOGE(TAG, "Firmware path too long"); + free(latest_file); + free(full_path); + return ESP_FAIL; + } + + ESP_LOGI(TAG, "Found latest firmware: %s", firmware_path); + + // Clean up allocated memory + free(latest_file); + free(full_path); + + return ESP_OK; } esp_err_t ota_littlefs_perform(bool delete_after_use) { - char *firmware_path = malloc(256); // Use heap instead of stack - FILE *firmware_file; - uint8_t *chunk = malloc(CHUNK_SIZE); // Use heap for chunk buffer - size_t bytes_read; - esp_err_t ret = ESP_OK; - - if (!firmware_path || !chunk) { - ESP_LOGE(TAG, "Failed to allocate memory"); - if (firmware_path) free(firmware_path); - if (chunk) free(chunk); - return ESP_ERR_NO_MEM; - } - - ESP_LOGI(TAG, "Starting LittleFS OTA process"); - - /* Initialize LittleFS */ - ESP_LOGI(TAG, "Initializing LittleFS filesystem"); - esp_vfs_littlefs_conf_t conf = { - .base_path = "/littlefs", - .partition_label = "storage", - .format_if_mount_failed = true, - .dont_mount = false, - }; - - ret = esp_vfs_littlefs_register(&conf); - if (ret != ESP_OK) { - ESP_LOGE(TAG, "Failed to initialize LittleFS: %s", esp_err_to_name(ret)); - free(firmware_path); - free(chunk); - return ret; - } - - ESP_LOGI(TAG, "LittleFS filesystem registered successfully"); - - /* Get filesystem info */ - size_t total = 0, used = 0; - ret = esp_littlefs_info("storage", &total, &used); - if (ret != ESP_OK) { - ESP_LOGW(TAG, "Failed to get LittleFS partition information (%s)", esp_err_to_name(ret)); - } else { - ESP_LOGI(TAG, "LittleFS partition size: total: %d, used: %d", total, used); - } - - /* Find the latest firmware file */ - ESP_LOGI(TAG, "Searching for firmware files in LittleFS"); - ret = find_latest_firmware(firmware_path, 256); - if (ret != ESP_OK) { - ESP_LOGE(TAG, "Failed to find firmware file"); - esp_vfs_littlefs_unregister("storage"); - free(firmware_path); - free(chunk); - return ret; - } - ESP_LOGI(TAG, "Firmware file found: %s", firmware_path); - - /* Verify image header and get firmware info */ - size_t firmware_size; - char new_app_version[32]; - ret = parse_image_header_from_file(firmware_path, &firmware_size, new_app_version, sizeof(new_app_version)); - if (ret != ESP_OK) { - ESP_LOGE(TAG, "Failed to parse image header: %s", esp_err_to_name(ret)); - esp_vfs_littlefs_unregister("storage"); - free(firmware_path); - free(chunk); - return ret; - } - - ESP_LOGI(TAG, "Firmware verified - Size: %u bytes, Version: %s", (unsigned int)firmware_size, new_app_version); + char *firmware_path = malloc(256); // Use heap instead of stack + FILE *firmware_file; + uint8_t *chunk = malloc(CHUNK_SIZE); // Use heap for chunk buffer + size_t bytes_read; + esp_err_t ret = ESP_OK; + + if (!firmware_path || !chunk) { + ESP_LOGE(TAG, "Failed to allocate memory"); + if (firmware_path) free(firmware_path); + if (chunk) free(chunk); + return ESP_ERR_NO_MEM; + } + + ESP_LOGI(TAG, "Starting LittleFS OTA process"); + + /* Initialize LittleFS */ + ESP_LOGI(TAG, "Initializing LittleFS filesystem"); + esp_vfs_littlefs_conf_t conf = { + .base_path = "/littlefs", + .partition_label = "storage", + .format_if_mount_failed = true, + .dont_mount = false, + }; + + ret = esp_vfs_littlefs_register(&conf); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to initialize LittleFS: %s", esp_err_to_name(ret)); + free(firmware_path); + free(chunk); + return ESP_HOSTED_SLAVE_OTA_FAILED; + } + + ESP_LOGI(TAG, "LittleFS filesystem registered successfully"); + + /* Get filesystem info */ + size_t total = 0, used = 0; + ret = esp_littlefs_info("storage", &total, &used); + if (ret != ESP_OK) { + ESP_LOGW(TAG, "Failed to get LittleFS partition information (%s)", esp_err_to_name(ret)); + } else { + ESP_LOGI(TAG, "LittleFS partition size: total: %d, used: %d", total, used); + } + + /* Find the latest firmware file */ + ESP_LOGI(TAG, "Searching for firmware files in LittleFS"); + ret = find_latest_firmware(firmware_path, 256); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to find firmware file"); + esp_vfs_littlefs_unregister("storage"); + free(firmware_path); + free(chunk); + return ESP_HOSTED_SLAVE_OTA_FAILED; + } + ESP_LOGI(TAG, "Firmware file found: %s", firmware_path); + + /* Verify image header and get firmware info */ + size_t firmware_size; + char new_app_version[32]; + ret = parse_image_header_from_file(firmware_path, &firmware_size, new_app_version, sizeof(new_app_version)); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to parse image header: %s", esp_err_to_name(ret)); + esp_vfs_littlefs_unregister("storage"); + free(firmware_path); + free(chunk); + return ESP_HOSTED_SLAVE_OTA_FAILED; + } + + ESP_LOGI(TAG, "Firmware verified - Size: %u bytes, Version: %s", (unsigned int)firmware_size, new_app_version); #ifdef CONFIG_OTA_VERSION_CHECK_SLAVEFW_SLAVE - /* Get current running slave firmware version */ - esp_hosted_coprocessor_fwver_t current_slave_version = {0}; - esp_err_t version_ret = esp_hosted_get_coprocessor_fwversion(¤t_slave_version); - - if (version_ret == ESP_OK) { - char current_version_str[32]; - snprintf(current_version_str, sizeof(current_version_str), "%" PRIu32 ".%" PRIu32 ".%" PRIu32, - current_slave_version.major1, current_slave_version.minor1, current_slave_version.patch1); - - ESP_LOGI(TAG, "Current slave firmware version: %s", current_version_str); - ESP_LOGI(TAG, "New slave firmware version: %s", new_app_version); - - if (strcmp(new_app_version, current_version_str) == 0) { - ESP_LOGW(TAG, "Current slave firmware version (%s) is the same as new version (%s). Skipping OTA.", - current_version_str, new_app_version); - esp_vfs_littlefs_unregister("storage"); - free(firmware_path); - free(chunk); - return ESP_HOSTED_SLAVE_OTA_NOT_REQUIRED; - } - - ESP_LOGI(TAG, "Version differs - proceeding with OTA from %s to %s", current_version_str, new_app_version); - } else { - ESP_LOGW(TAG, "Could not get current slave firmware version (error: %s), proceeding with OTA", - esp_err_to_name(version_ret)); - } + /* Get current running slave firmware version */ + esp_hosted_coprocessor_fwver_t current_slave_version = {0}; + esp_err_t version_ret = esp_hosted_get_coprocessor_fwversion(¤t_slave_version); + + if (version_ret == ESP_OK) { + char current_version_str[32]; + snprintf(current_version_str, sizeof(current_version_str), "%" PRIu32 ".%" PRIu32 ".%" PRIu32, + current_slave_version.major1, current_slave_version.minor1, current_slave_version.patch1); + + ESP_LOGI(TAG, "Current slave firmware version: %s", current_version_str); + ESP_LOGI(TAG, "New slave firmware version: %s", new_app_version); + + if (strcmp(new_app_version, current_version_str) == 0) { + ESP_LOGW(TAG, "Current slave firmware version (%s) is the same as new version (%s). Skipping OTA.", + current_version_str, new_app_version); + esp_vfs_littlefs_unregister("storage"); + free(firmware_path); + free(chunk); + return ESP_HOSTED_SLAVE_OTA_NOT_REQUIRED; + } + + ESP_LOGI(TAG, "Version differs - proceeding with OTA from %s to %s", current_version_str, new_app_version); + } else { + ESP_LOGW(TAG, "Could not get current slave firmware version (error: %s), proceeding with OTA", + esp_err_to_name(version_ret)); + } #else - ESP_LOGI(TAG, "Version check disabled - proceeding with OTA (new firmware version: %s)", new_app_version); + ESP_LOGI(TAG, "Version check disabled - proceeding with OTA (new firmware version: %s)", new_app_version); #endif - /* Open firmware file */ - firmware_file = fopen(firmware_path, "rb"); - if (firmware_file == NULL) { - ESP_LOGE(TAG, "Failed to open firmware file: %s", firmware_path); - esp_vfs_littlefs_unregister("storage"); - free(firmware_path); - free(chunk); - return ESP_FAIL; - } - - ESP_LOGI(TAG, "Starting OTA from LittleFS: %s", firmware_path); - - /* Begin OTA */ - ret = esp_hosted_slave_ota_begin(); - if (ret != ESP_OK) { - ESP_LOGE(TAG, "Failed to begin OTA: %s", esp_err_to_name(ret)); - fclose(firmware_file); - esp_vfs_littlefs_unregister("storage"); - free(firmware_path); - free(chunk); - return ret; - } - - /* Write firmware in chunks */ - while ((bytes_read = fread(chunk, 1, CHUNK_SIZE, firmware_file)) > 0) { - ret = esp_hosted_slave_ota_write(chunk, bytes_read); - if (ret != ESP_OK) { - ESP_LOGE(TAG, "Failed to write OTA chunk: %s", esp_err_to_name(ret)); - fclose(firmware_file); - esp_vfs_littlefs_unregister("storage"); - free(firmware_path); - free(chunk); - return ret; - } - } - - fclose(firmware_file); - - /* End OTA */ - ret = esp_hosted_slave_ota_end(); - if (ret != ESP_OK) { - ESP_LOGE(TAG, "Failed to end OTA: %s", esp_err_to_name(ret)); - esp_vfs_littlefs_unregister("storage"); - free(firmware_path); - free(chunk); - return ret; - } - - ESP_LOGI(TAG, "LittleFS OTA completed successfully"); - - /* Delete firmware file if requested */ - if (delete_after_use) { - if (unlink(firmware_path) == 0) { - ESP_LOGI(TAG, "Deleted firmware file: %s", firmware_path); - } else { - ESP_LOGW(TAG, "Failed to delete firmware file: %s", firmware_path); - } - } - - esp_vfs_littlefs_unregister("storage"); - - /* Clean up allocated memory */ - free(firmware_path); - free(chunk); - - return ESP_HOSTED_SLAVE_OTA_COMPLETED; + /* Open firmware file */ + firmware_file = fopen(firmware_path, "rb"); + if (firmware_file == NULL) { + ESP_LOGE(TAG, "Failed to open firmware file: %s", firmware_path); + esp_vfs_littlefs_unregister("storage"); + free(firmware_path); + free(chunk); + return ESP_FAIL; + } + + ESP_LOGI(TAG, "Starting OTA from LittleFS: %s", firmware_path); + + /* Begin OTA */ + ret = esp_hosted_slave_ota_begin(); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to begin OTA: %s", esp_err_to_name(ret)); + fclose(firmware_file); + esp_vfs_littlefs_unregister("storage"); + free(firmware_path); + free(chunk); + return ESP_HOSTED_SLAVE_OTA_FAILED; + } + + /* Write firmware in chunks */ + while ((bytes_read = fread(chunk, 1, CHUNK_SIZE, firmware_file)) > 0) { + ret = esp_hosted_slave_ota_write(chunk, bytes_read); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to write OTA chunk: %s", esp_err_to_name(ret)); + fclose(firmware_file); + esp_vfs_littlefs_unregister("storage"); + free(firmware_path); + free(chunk); + return ESP_HOSTED_SLAVE_OTA_FAILED; + } + } + + fclose(firmware_file); + + /* End OTA */ + ret = esp_hosted_slave_ota_end(); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to end OTA: %s", esp_err_to_name(ret)); + esp_vfs_littlefs_unregister("storage"); + free(firmware_path); + free(chunk); + return ESP_HOSTED_SLAVE_OTA_FAILED; + } + + ESP_LOGI(TAG, "LittleFS OTA completed successfully"); + + /* Delete firmware file if requested */ + if (delete_after_use) { + if (unlink(firmware_path) == 0) { + ESP_LOGI(TAG, "Deleted firmware file: %s", firmware_path); + } else { + ESP_LOGW(TAG, "Failed to delete firmware file: %s", firmware_path); + } + } + + esp_vfs_littlefs_unregister("storage"); + + /* Clean up allocated memory */ + free(firmware_path); + free(chunk); + + return ESP_HOSTED_SLAVE_OTA_COMPLETED; } diff --git a/examples/host_performs_slave_ota/components/ota_partition/ota_partition.c b/examples/host_performs_slave_ota/components/ota_partition/ota_partition.c index 172ae6ab..6b22e9b6 100644 --- a/examples/host_performs_slave_ota/components/ota_partition/ota_partition.c +++ b/examples/host_performs_slave_ota/components/ota_partition/ota_partition.c @@ -25,217 +25,217 @@ static const char* TAG = "ota_partition"; /* Function to parse ESP32 image header and get firmware info */ static esp_err_t parse_image_header(const esp_partition_t* partition, size_t* firmware_size, char* app_version_str, size_t version_str_len) { - esp_image_header_t image_header; - esp_image_segment_header_t segment_header; - esp_app_desc_t app_desc; - esp_err_t ret; - size_t offset = 0; - size_t total_size = 0; - - /* Read image header */ - ret = esp_partition_read(partition, offset, &image_header, sizeof(image_header)); - if (ret != ESP_OK) { - ESP_LOGE(TAG, "Failed to read image header: %s", esp_err_to_name(ret)); - return ret; - } - - /* Validate magic number */ - if (image_header.magic != ESP_IMAGE_HEADER_MAGIC) { - ESP_LOGE(TAG, "Invalid image magic: 0x%" PRIx8, image_header.magic); - return ESP_ERR_INVALID_ARG; - } - - ESP_LOGI(TAG, "Image header: magic=0x%" PRIx8 ", segment_count=%" PRIu8 ", hash_appended=%" PRIu8, - image_header.magic, image_header.segment_count, image_header.hash_appended); - - /* Calculate total size by reading all segments */ - offset = sizeof(image_header); - total_size = sizeof(image_header); - - for (int i = 0; i < image_header.segment_count; i++) { - /* Read segment header */ - ret = esp_partition_read(partition, offset, &segment_header, sizeof(segment_header)); - if (ret != ESP_OK) { - ESP_LOGE(TAG, "Failed to read segment %d header: %s", i, esp_err_to_name(ret)); - return ret; - } - - ESP_LOGI(TAG, "Segment %d: data_len=%" PRIu32 ", load_addr=0x%" PRIx32, i, segment_header.data_len, segment_header.load_addr); - - /* Add segment header size + data size */ - total_size += sizeof(segment_header) + segment_header.data_len; - offset += sizeof(segment_header) + segment_header.data_len; - - /* Read app description from the first segment */ - if (i == 0) { - size_t app_desc_offset = sizeof(image_header) + sizeof(segment_header); - ret = esp_partition_read(partition, app_desc_offset, &app_desc, sizeof(app_desc)); - if (ret == ESP_OK) { - strncpy(app_version_str, app_desc.version, version_str_len - 1); - app_version_str[version_str_len - 1] = '\0'; - ESP_LOGI(TAG, "Found app description: version='%s', project_name='%s'", - app_desc.version, app_desc.project_name); - } else { - ESP_LOGW(TAG, "Failed to read app description: %s", esp_err_to_name(ret)); - strncpy(app_version_str, "unknown", version_str_len - 1); - app_version_str[version_str_len - 1] = '\0'; - } - } - } - - /* Add padding to align to 16 bytes */ - size_t padding = (16 - (total_size % 16)) % 16; - if (padding > 0) { - ESP_LOGD(TAG, "Adding %u bytes of padding for alignment", (unsigned int)padding); - total_size += padding; - } - - /* Add the checksum byte (always present) */ - total_size += 1; - ESP_LOGD(TAG, "Added 1 byte for checksum"); - - /* Add SHA256 hash if appended */ - bool has_hash = (image_header.hash_appended == 1); - if (has_hash) { - total_size += 32; // SHA256 hash is 32 bytes - ESP_LOGD(TAG, "Added 32 bytes for SHA256 hash (hash_appended=1)"); - } else { - ESP_LOGD(TAG, "No SHA256 hash appended (hash_appended=0)"); - } - - *firmware_size = total_size; - ESP_LOGI(TAG, "Total image size: %u bytes", (unsigned int)*firmware_size); - - /* Debug: Read last 48 bytes to verify structure */ - uint8_t tail_data[48]; - size_t tail_offset = (total_size > 48) ? (total_size - 48) : 0; - ret = esp_partition_read(partition, tail_offset, tail_data, 48); - if (ret == ESP_OK) { - ESP_LOGD(TAG, "Last 48 bytes of image (offset %u):", (unsigned int)tail_offset); - ESP_LOG_BUFFER_HEX_LEVEL(TAG, tail_data, 48, ESP_LOG_DEBUG); - } - - return ESP_OK; + esp_image_header_t image_header; + esp_image_segment_header_t segment_header; + esp_app_desc_t app_desc; + esp_err_t ret; + size_t offset = 0; + size_t total_size = 0; + + /* Read image header */ + ret = esp_partition_read(partition, offset, &image_header, sizeof(image_header)); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to read image header: %s", esp_err_to_name(ret)); + return ret; + } + + /* Validate magic number */ + if (image_header.magic != ESP_IMAGE_HEADER_MAGIC) { + ESP_LOGE(TAG, "Invalid image magic: 0x%" PRIx8, image_header.magic); + return ESP_ERR_INVALID_ARG; + } + + ESP_LOGI(TAG, "Image header: magic=0x%" PRIx8 ", segment_count=%" PRIu8 ", hash_appended=%" PRIu8, + image_header.magic, image_header.segment_count, image_header.hash_appended); + + /* Calculate total size by reading all segments */ + offset = sizeof(image_header); + total_size = sizeof(image_header); + + for (int i = 0; i < image_header.segment_count; i++) { + /* Read segment header */ + ret = esp_partition_read(partition, offset, &segment_header, sizeof(segment_header)); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to read segment %d header: %s", i, esp_err_to_name(ret)); + return ret; + } + + ESP_LOGI(TAG, "Segment %d: data_len=%" PRIu32 ", load_addr=0x%" PRIx32, i, segment_header.data_len, segment_header.load_addr); + + /* Add segment header size + data size */ + total_size += sizeof(segment_header) + segment_header.data_len; + offset += sizeof(segment_header) + segment_header.data_len; + + /* Read app description from the first segment */ + if (i == 0) { + size_t app_desc_offset = sizeof(image_header) + sizeof(segment_header); + ret = esp_partition_read(partition, app_desc_offset, &app_desc, sizeof(app_desc)); + if (ret == ESP_OK) { + strncpy(app_version_str, app_desc.version, version_str_len - 1); + app_version_str[version_str_len - 1] = '\0'; + ESP_LOGI(TAG, "Found app description: version='%s', project_name='%s'", + app_desc.version, app_desc.project_name); + } else { + ESP_LOGW(TAG, "Failed to read app description: %s", esp_err_to_name(ret)); + strncpy(app_version_str, "unknown", version_str_len - 1); + app_version_str[version_str_len - 1] = '\0'; + } + } + } + + /* Add padding to align to 16 bytes */ + size_t padding = (16 - (total_size % 16)) % 16; + if (padding > 0) { + ESP_LOGD(TAG, "Adding %u bytes of padding for alignment", (unsigned int)padding); + total_size += padding; + } + + /* Add the checksum byte (always present) */ + total_size += 1; + ESP_LOGD(TAG, "Added 1 byte for checksum"); + + /* Add SHA256 hash if appended */ + bool has_hash = (image_header.hash_appended == 1); + if (has_hash) { + total_size += 32; // SHA256 hash is 32 bytes + ESP_LOGD(TAG, "Added 32 bytes for SHA256 hash (hash_appended=1)"); + } else { + ESP_LOGD(TAG, "No SHA256 hash appended (hash_appended=0)"); + } + + *firmware_size = total_size; + ESP_LOGI(TAG, "Total image size: %u bytes", (unsigned int)*firmware_size); + + /* Debug: Read last 48 bytes to verify structure */ + uint8_t tail_data[48]; + size_t tail_offset = (total_size > 48) ? (total_size - 48) : 0; + ret = esp_partition_read(partition, tail_offset, tail_data, 48); + if (ret == ESP_OK) { + ESP_LOGD(TAG, "Last 48 bytes of image (offset %u):", (unsigned int)tail_offset); + ESP_LOG_BUFFER_HEX_LEVEL(TAG, tail_data, 48, ESP_LOG_DEBUG); + } + + return ESP_OK; } esp_err_t ota_partition_perform(const char* partition_label) { - const esp_partition_t* partition; - esp_err_t ret = ESP_OK; - uint8_t chunk[CHUNK_SIZE]; - size_t bytes_read; - size_t offset = 0; - size_t firmware_size; - char new_app_version[32]; - - ESP_LOGI(TAG, "Starting Partition OTA from partition: %s", partition_label); - - /* Find the partition */ - partition = esp_partition_find_first(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_ANY, partition_label); - if (partition == NULL) { - ESP_LOGE(TAG, "Partition '%s' not found", partition_label); - return ESP_FAIL; - } - - ESP_LOGI(TAG, "Found partition: %s, size: %" PRIu32 " bytes", partition->label, partition->size); - - /* Parse image header to get firmware size and version */ - ret = parse_image_header(partition, &firmware_size, new_app_version, sizeof(new_app_version)); - if (ret != ESP_OK) { - ESP_LOGE(TAG, "Failed to parse image header: %s", esp_err_to_name(ret)); - return ret; - } - - ESP_LOGI(TAG, "Firmware verified - Size: %u bytes, Version: %s", (unsigned int)firmware_size, new_app_version); + const esp_partition_t* partition; + esp_err_t ret = ESP_OK; + uint8_t chunk[CHUNK_SIZE]; + size_t bytes_read; + size_t offset = 0; + size_t firmware_size; + char new_app_version[32]; + + ESP_LOGI(TAG, "Starting Partition OTA from partition: %s", partition_label); + + /* Find the partition */ + partition = esp_partition_find_first(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_ANY, partition_label); + if (partition == NULL) { + ESP_LOGE(TAG, "Partition '%s' not found", partition_label); + return ESP_FAIL; + } + + ESP_LOGI(TAG, "Found partition: %s, size: %" PRIu32 " bytes", partition->label, partition->size); + + /* Parse image header to get firmware size and version */ + ret = parse_image_header(partition, &firmware_size, new_app_version, sizeof(new_app_version)); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to parse image header: %s", esp_err_to_name(ret)); + return ESP_HOSTED_SLAVE_OTA_FAILED; + } + + ESP_LOGI(TAG, "Firmware verified - Size: %u bytes, Version: %s", (unsigned int)firmware_size, new_app_version); #ifdef CONFIG_OTA_VERSION_CHECK_SLAVEFW_SLAVE - /* Get current running slave firmware version */ - esp_hosted_coprocessor_fwver_t current_slave_version = {0}; - esp_err_t version_ret = esp_hosted_get_coprocessor_fwversion(¤t_slave_version); - - if (version_ret == ESP_OK) { - char current_version_str[32]; - snprintf(current_version_str, sizeof(current_version_str), "%" PRIu32 ".%" PRIu32 ".%" PRIu32, - current_slave_version.major1, current_slave_version.minor1, current_slave_version.patch1); - - ESP_LOGI(TAG, "Current slave firmware version: %s", current_version_str); - ESP_LOGI(TAG, "New slave firmware version: %s", new_app_version); - - if (strcmp(new_app_version, current_version_str) == 0) { - ESP_LOGW(TAG, "Current slave firmware version (%s) is the same as new version (%s). Skipping OTA.", - current_version_str, new_app_version); - return ESP_HOSTED_SLAVE_OTA_NOT_REQUIRED; - } - - ESP_LOGI(TAG, "Version differs - proceeding with OTA from %s to %s", current_version_str, new_app_version); - } else { - ESP_LOGW(TAG, "Could not get current slave firmware version (error: %s), proceeding with OTA", - esp_err_to_name(version_ret)); - } + /* Get current running slave firmware version */ + esp_hosted_coprocessor_fwver_t current_slave_version = {0}; + esp_err_t version_ret = esp_hosted_get_coprocessor_fwversion(¤t_slave_version); + + if (version_ret == ESP_OK) { + char current_version_str[32]; + snprintf(current_version_str, sizeof(current_version_str), "%" PRIu32 ".%" PRIu32 ".%" PRIu32, + current_slave_version.major1, current_slave_version.minor1, current_slave_version.patch1); + + ESP_LOGI(TAG, "Current slave firmware version: %s", current_version_str); + ESP_LOGI(TAG, "New slave firmware version: %s", new_app_version); + + if (strcmp(new_app_version, current_version_str) == 0) { + ESP_LOGW(TAG, "Current slave firmware version (%s) is the same as new version (%s). Skipping OTA.", + current_version_str, new_app_version); + return ESP_HOSTED_SLAVE_OTA_NOT_REQUIRED; + } + + ESP_LOGI(TAG, "Version differs - proceeding with OTA from %s to %s", current_version_str, new_app_version); + } else { + ESP_LOGW(TAG, "Could not get current slave firmware version (error: %s), proceeding with OTA", + esp_err_to_name(version_ret)); + } #else - ESP_LOGI(TAG, "Version check disabled - proceeding with OTA (new firmware version: %s)", new_app_version); + ESP_LOGI(TAG, "Version check disabled - proceeding with OTA (new firmware version: %s)", new_app_version); #endif - /* Validate firmware size */ - if (firmware_size == 0) { - ESP_LOGE(TAG, "Firmware size is 0, cannot proceed with OTA"); - return ESP_ERR_INVALID_SIZE; - } - if (firmware_size > partition->size) { - ESP_LOGE(TAG, "Firmware size (%u) exceeds partition size (%" PRIu32 ")", (unsigned int)firmware_size, partition->size); - return ESP_ERR_INVALID_SIZE; - } - - ESP_LOGI(TAG, "Proceeding with OTA - Firmware size: %u bytes", (unsigned int)firmware_size); - - /* Begin OTA */ - ret = esp_hosted_slave_ota_begin(); - if (ret != ESP_OK) { - ESP_LOGE(TAG, "Failed to begin OTA: %s", esp_err_to_name(ret)); - return ret; - } - - /* Read firmware from partition in chunks - only up to actual firmware size */ - uint32_t total_bytes_sent = 0; - uint32_t chunk_count = 0; - - while (offset < firmware_size) { - bytes_read = (firmware_size - offset > CHUNK_SIZE) ? CHUNK_SIZE : (firmware_size - offset); - - ret = esp_partition_read(partition, offset, chunk, bytes_read); - if (ret != ESP_OK) { - ESP_LOGE(TAG, "Failed to read partition: %s", esp_err_to_name(ret)); - esp_hosted_slave_ota_end(); - return ret; - } - - ret = esp_hosted_slave_ota_write(chunk, bytes_read); - if (ret != ESP_OK) { - ESP_LOGE(TAG, "Failed to write OTA chunk %" PRIu32 ": %s", chunk_count, esp_err_to_name(ret)); - esp_hosted_slave_ota_end(); - return ret; - } - - total_bytes_sent += bytes_read; - offset += bytes_read; - chunk_count++; - - /* Progress indicator */ - if (chunk_count % 50 == 0) { - ESP_LOGD(TAG, "Progress: %" PRIu32 "/%u bytes (%.1f%%)", - total_bytes_sent, (unsigned int)firmware_size, (float)total_bytes_sent * 100 / firmware_size); - } - } - - ESP_LOGD(TAG, "Total chunks sent: %" PRIu32 ", Total bytes sent: %" PRIu32, chunk_count, total_bytes_sent); - - /* End OTA */ - ret = esp_hosted_slave_ota_end(); - if (ret != ESP_OK) { - ESP_LOGE(TAG, "Failed to end OTA: %s", esp_err_to_name(ret)); - return ret; - } - - ESP_LOGI(TAG, "Partition OTA completed successfully - Sent %u bytes", (unsigned int)firmware_size); - return ESP_HOSTED_SLAVE_OTA_COMPLETED; + /* Validate firmware size */ + if (firmware_size == 0) { + ESP_LOGE(TAG, "Firmware size is 0, cannot proceed with OTA"); + return ESP_HOSTED_SLAVE_OTA_FAILED; + } + if (firmware_size > partition->size) { + ESP_LOGE(TAG, "Firmware size (%u) exceeds partition size (%" PRIu32 ")", (unsigned int)firmware_size, partition->size); + return ESP_HOSTED_SLAVE_OTA_FAILED; + } + + ESP_LOGI(TAG, "Proceeding with OTA - Firmware size: %u bytes", (unsigned int)firmware_size); + + /* Begin OTA */ + ret = esp_hosted_slave_ota_begin(); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to begin OTA: %s", esp_err_to_name(ret)); + return ESP_HOSTED_SLAVE_OTA_FAILED; + } + + /* Read firmware from partition in chunks - only up to actual firmware size */ + uint32_t total_bytes_sent = 0; + uint32_t chunk_count = 0; + + while (offset < firmware_size) { + bytes_read = (firmware_size - offset > CHUNK_SIZE) ? CHUNK_SIZE : (firmware_size - offset); + + ret = esp_partition_read(partition, offset, chunk, bytes_read); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to read partition: %s", esp_err_to_name(ret)); + esp_hosted_slave_ota_end(); + return ESP_HOSTED_SLAVE_OTA_FAILED; + } + + ret = esp_hosted_slave_ota_write(chunk, bytes_read); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to write OTA chunk %" PRIu32 ": %s", chunk_count, esp_err_to_name(ret)); + esp_hosted_slave_ota_end(); + return ESP_HOSTED_SLAVE_OTA_FAILED; + } + + total_bytes_sent += bytes_read; + offset += bytes_read; + chunk_count++; + + /* Progress indicator */ + if (chunk_count % 50 == 0) { + ESP_LOGD(TAG, "Progress: %" PRIu32 "/%u bytes (%.1f%%)", + total_bytes_sent, (unsigned int)firmware_size, (float)total_bytes_sent * 100 / firmware_size); + } + } + + ESP_LOGD(TAG, "Total chunks sent: %" PRIu32 ", Total bytes sent: %" PRIu32, chunk_count, total_bytes_sent); + + /* End OTA */ + ret = esp_hosted_slave_ota_end(); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to end OTA: %s", esp_err_to_name(ret)); + return ESP_HOSTED_SLAVE_OTA_FAILED; + } + + ESP_LOGI(TAG, "Partition OTA completed successfully - Sent %u bytes", (unsigned int)firmware_size); + return ESP_HOSTED_SLAVE_OTA_COMPLETED; } diff --git a/host/esp_hosted_host_fw_ver.h b/host/esp_hosted_host_fw_ver.h index 8c965f56..f191545e 100644 --- a/host/esp_hosted_host_fw_ver.h +++ b/host/esp_hosted_host_fw_ver.h @@ -7,10 +7,11 @@ #define __ESP_HOSTED_HOST_FW_VERSION_H__ #define ESP_HOSTED_VERSION_MAJOR_1 2 #define ESP_HOSTED_VERSION_MINOR_1 6 -#define ESP_HOSTED_VERSION_PATCH_1 0 -#endif +#define ESP_HOSTED_VERSION_PATCH_1 1 /** * Macro to convert version number into an integer */ #define ESP_HOSTED_VERSION_VAL(major, minor, patch) ((major << 16) | (minor << 8) | (patch)) + +#endif diff --git a/idf_component.yml b/idf_component.yml index 9890d34d..69a11628 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.6.0" +version: "2.6.1" description: ESP-Hosted-MCU provide drivers to act any ESP chipset as Wi-Fi or Bluetooth co-processor. url: https://github.com/espressif/esp-hosted-mcu examples: diff --git a/slave/main/esp_hosted_coprocessor_fw_ver.h b/slave/main/esp_hosted_coprocessor_fw_ver.h index 57666b7e..c8523ac8 100644 --- a/slave/main/esp_hosted_coprocessor_fw_ver.h +++ b/slave/main/esp_hosted_coprocessor_fw_ver.h @@ -7,7 +7,8 @@ #define __ESP_HOSTED_COPROCESSOR_FW_VER_H__ #define PROJECT_VERSION_MAJOR_1 2 #define PROJECT_VERSION_MINOR_1 6 -#define PROJECT_VERSION_PATCH_1 0 +#define PROJECT_VERSION_PATCH_1 1 #define ESP_HOSTED_VERSION_VAL(major, minor, patch) ((major << 16) | (minor << 8) | (patch)) + #endif From 4a01be185b6af337f65b53425c552aa0798ccdb8 Mon Sep 17 00:00:00 2001 From: Simon Canins Date: Thu, 16 Oct 2025 21:33:49 +0200 Subject: [PATCH 112/114] compiles again --- host/api/include/esp_hosted_gpio.h | 22 ++++-- host/drivers/rpc/slaveif/rpc_slave_if.h | 26 +++++-- host/drivers/rpc/wrap/rpc_wrap.c | 67 ++++++++++++++++++- host/drivers/rpc/wrap/rpc_wrap.h | 21 +++--- .../freertos/src/port_esp_hosted_host_gpio.c | 21 +++--- 5 files changed, 120 insertions(+), 37 deletions(-) diff --git a/host/api/include/esp_hosted_gpio.h b/host/api/include/esp_hosted_gpio.h index b6925b54..03e02166 100644 --- a/host/api/include/esp_hosted_gpio.h +++ b/host/api/include/esp_hosted_gpio.h @@ -12,14 +12,22 @@ #include "esp_err.h" -esp_err_t esp_hosted_gpio_config(const gpio_config_t *pGPIOConfig); -esp_err_t esp_hosted_gpio_reset_pin(gpio_num_t gpio_num); -esp_err_t esp_hosted_gpio_set_level(gpio_num_t gpio_num, uint32_t level); -int esp_hosted_gpio_get_level(gpio_num_t gpio_num); -esp_err_t esp_hosted_gpio_set_direction(gpio_num_t gpio_num, gpio_mode_t mode); -esp_err_t esp_hosted_gpio_input_enable(gpio_num_t gpio_num); -esp_err_t esp_hosted_gpio_set_pull_mode(gpio_num_t gpio_num, gpio_pull_mode_t pull); +typedef struct +{ + uint64_t pin_bit_mask; /*!< GPIO pin: set with bit mask, each bit maps to a GPIO */ + uint32_t mode; /*!< GPIO mode: set input/output mode */ + uint32_t pull_up_en; /*!< GPIO pull-up */ + uint32_t pull_down_en; /*!< GPIO pull-down */ + uint32_t intr_type; /*!< GPIO interrupt type */ +} esp_hosted_gpio_config_t; +esp_err_t esp_hosted_gpio_config(const esp_hosted_gpio_config_t *pGPIOConfig); +esp_err_t esp_hosted_gpio_reset_pin(uint32_t gpio_num); +esp_err_t esp_hosted_gpio_set_level(uint32_t gpio_num, uint32_t level); +int esp_hosted_gpio_get_level(uint32_t gpio_num); +esp_err_t esp_hosted_gpio_set_direction(uint32_t gpio_num, uint32_t mode); +esp_err_t esp_hosted_gpio_input_enable(uint32_t gpio_num); +esp_err_t esp_hosted_gpio_set_pull_mode(uint32_t gpio_num, uint32_t pull); #endif /*__ESP_HOSTED_GPIO_H__*/ diff --git a/host/drivers/rpc/slaveif/rpc_slave_if.h b/host/drivers/rpc/slaveif/rpc_slave_if.h index 3282d7ce..8388e564 100644 --- a/host/drivers/rpc/slaveif/rpc_slave_if.h +++ b/host/drivers/rpc/slaveif/rpc_slave_if.h @@ -14,6 +14,7 @@ #include "esp_mac.h" #include "esp_wifi_types.h" #include "port_esp_hosted_host_wifi_config.h" +#include "port_esp_hosted_host_config.h" #if H_WIFI_ENTERPRISE_SUPPORT #include "esp_eap_client.h" @@ -337,18 +338,29 @@ typedef struct { #if H_ENABLE_GPIO_CONTROL typedef struct { - gpio_num_t gpio_num; + uint64_t pin_bit_mask; /*!< GPIO pin: set with bit mask, each bit maps to a GPIO */ + uint32_t mode; /*!< GPIO mode: set input/output mode */ + uint32_t pull_up_en; /*!< GPIO pull-up */ + uint32_t pull_down_en; /*!< GPIO pull-down */ + uint32_t intr_type; /*!< GPIO interrupt type */ +//#if SOC_GPIO_SUPPORT_PIN_HYS_FILTER +// uint32_t hys_ctrl_mode; /*!< GPIO hysteresis: hysteresis filter on slope input */ +//#endif +} rpc_gpio_config_t; + +typedef struct { + uint32_t gpio_num; uint32_t level; } rpc_gpio_set_level_t; typedef struct { - gpio_num_t gpio_num; - gpio_mode_t mode; + uint32_t gpio_num; + uint32_t mode; } rpc_gpio_set_direction_t; typedef struct { - gpio_num_t gpio_num; - gpio_pull_mode_t pull_mode; + uint32_t gpio_num; + uint32_t pull_mode; } rpc_gpio_set_pull_mode_t; #endif @@ -524,9 +536,9 @@ typedef struct Ctrl_cmd_t { supp_wifi_event_dpp_failed_t e_dpp_failed; #endif #if H_ENABLE_GPIO_CONTROL - gpio_config_t gpio_config; + rpc_gpio_config_t gpio_config; - gpio_num_t gpio_num; + uint32_t gpio_num; rpc_gpio_set_level_t gpio_set_level; diff --git a/host/drivers/rpc/wrap/rpc_wrap.c b/host/drivers/rpc/wrap/rpc_wrap.c index 49b6a079..6fc76a24 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.c +++ b/host/drivers/rpc/wrap/rpc_wrap.c @@ -2400,7 +2400,68 @@ static esp_err_t rpc_iface_feature_control(rcp_feature_control_t *feature_contro } #if H_ENABLE_GPIO_CONTROL -esp_err_t rpc_gpio_set_direction(gpio_num_t gpio_num, gpio_mode_t mode) +esp_err_t rpc_gpio_config(const esp_hosted_gpio_config_t *pGPIOConfig) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + if (!pGPIOConfig) + return FAILURE; + + req->u.gpio_config.pin_bit_mask = pGPIOConfig->pin_bit_mask; + req->u.gpio_config.mode = pGPIOConfig->mode; + req->u.gpio_config.pull_up_en = pGPIOConfig->pull_up_en; + req->u.gpio_config.pull_down_en = pGPIOConfig->pull_down_en; + req->u.gpio_config.intr_type = pGPIOConfig->intr_type; + + resp = rpc_slaveif_gpio_config(req); + + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_gpio_reset(uint32_t gpio_num) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + req->u.gpio_num = gpio_num; + resp = rpc_slaveif_gpio_reset_pin(req); + + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_gpio_set_level(uint32_t gpio_num, uint32_t level) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + req->u.gpio_set_level.gpio_num = gpio_num; + req->u.gpio_set_level.level = level; + + resp = rpc_slaveif_gpio_set_level(req); + return rpc_rsp_callback(resp); +} + +int rpc_gpio_get_level(uint32_t gpio_num, int *level) +{ + /* implemented synchronous */ + ctrl_cmd_t *req = RPC_DEFAULT_REQ(); + ctrl_cmd_t *resp = NULL; + + req->u.gpio_num = gpio_num; + resp = rpc_slaveif_gpio_get_level(req); + + if (resp && resp->resp_event_status == SUCCESS) { + *level = resp->u.gpio_get_level; + } + + return rpc_rsp_callback(resp); +} + +esp_err_t rpc_gpio_set_direction(uint32_t gpio_num, uint32_t mode) { /* implemented synchronous */ ctrl_cmd_t *req = RPC_DEFAULT_REQ(); @@ -2413,7 +2474,7 @@ esp_err_t rpc_gpio_set_direction(gpio_num_t gpio_num, gpio_mode_t mode) return rpc_rsp_callback(resp); } -esp_err_t rpc_gpio_input_enable(gpio_num_t gpio_num) +esp_err_t rpc_gpio_input_enable(uint32_t gpio_num) { /* implemented synchronous */ ctrl_cmd_t *req = RPC_DEFAULT_REQ(); @@ -2424,7 +2485,7 @@ esp_err_t rpc_gpio_input_enable(gpio_num_t gpio_num) return rpc_rsp_callback(resp); } -esp_err_t rpc_gpio_set_pull_mode(gpio_num_t gpio_num, gpio_pull_mode_t pull_mode) +esp_err_t rpc_gpio_set_pull_mode(uint32_t gpio_num, uint32_t pull_mode) { /* implemented synchronous */ ctrl_cmd_t *req = RPC_DEFAULT_REQ(); diff --git a/host/drivers/rpc/wrap/rpc_wrap.h b/host/drivers/rpc/wrap/rpc_wrap.h index 655b835c..4159e533 100644 --- a/host/drivers/rpc/wrap/rpc_wrap.h +++ b/host/drivers/rpc/wrap/rpc_wrap.h @@ -14,7 +14,8 @@ extern "C" { /** Includes **/ #include "esp_wifi.h" -v#include "port_esp_hosted_host_wifi_config.h" +#include "port_esp_hosted_host_wifi_config.h" +#include "port_esp_hosted_host_config.h" #include "esp_mac.h" #include "esp_hosted_api_types.h" @@ -24,7 +25,9 @@ v#include "port_esp_hosted_host_wifi_config.h" #if H_DPP_SUPPORT #include "esp_dpp.h" #endif - +#if H_ENABLE_GPIO_CONTROL +#include "esp_hosted_gpio.h" +#endif /** Exported variables **/ /** Inline functions **/ @@ -171,13 +174,13 @@ esp_err_t rpc_supp_dpp_start_listen(void); esp_err_t rpc_supp_dpp_stop_listen(void); #endif #if H_ENABLE_GPIO_CONTROL -esp_err_t rpc_gpio_config(const gpio_config_t *pGPIOConfig); -esp_err_t rpc_gpio_reset_pin(gpio_num_t gpio_num); -esp_err_t rpc_gpio_set_level(gpio_num_t gpio_num, uint32_t level); -int rpc_gpio_get_level(gpio_num_t gpio_num, int *level); -esp_err_t rpc_gpio_set_direction(gpio_num_t gpio_num, gpio_mode_t mode); -esp_err_t rpc_gpio_input_enable(gpio_num_t gpio_num); -esp_err_t rpc_gpio_set_puall_mode(gpio_num_t gpio_num, gpio_pull_mode_t pull); +esp_err_t rpc_gpio_config(const esp_hosted_gpio_config_t *pGPIOConfig); +esp_err_t rpc_gpio_reset_pin(uint32_t gpio_num); +esp_err_t rpc_gpio_set_level(uint32_t gpio_num, uint32_t level); +int rpc_gpio_get_level(uint32_t gpio_num, int *level); +esp_err_t rpc_gpio_set_direction(uint32_t gpio_num, uint32_t mode); +esp_err_t rpc_gpio_input_enable(uint32_t gpio_num); +esp_err_t rpc_gpio_set_pull_mode(uint32_t gpio_num, uint32_t pull); #endif #ifdef __cplusplus diff --git a/host/port/esp/freertos/src/port_esp_hosted_host_gpio.c b/host/port/esp/freertos/src/port_esp_hosted_host_gpio.c index 80e66de3..25b8e8bc 100644 --- a/host/port/esp/freertos/src/port_esp_hosted_host_gpio.c +++ b/host/port/esp/freertos/src/port_esp_hosted_host_gpio.c @@ -7,45 +7,44 @@ #include "esp_log.h" #include "rpc_wrap.h" -#include "esp_hosted_gpio.h" +#include "port_esp_hosted_host_config.h" #if H_ENABLE_GPIO_CONTROL +#include "esp_hosted_gpio.h" -static char *TAG = "hosted_gpio"; - -esp_err_t esp_hosted_gpio_config(const gpio_config_t *pGPIOConfig) +esp_err_t esp_hosted_gpio_config(const esp_hosted_gpio_config_t *pGPIOConfig) { return rpc_gpio_config(pGPIOConfig); } -esp_err_t esp_hosted_gpio_reset_pin(gpio_num_t gpio_num) +esp_err_t esp_hosted_gpio_reset_pin(uint32_t gpio_num) { return rpc_gpio_reset_pin(gpio_num); } -esp_err_t esp_hosted_gpio_set_level(gpio_num_t gpio_num, uint32_t level) +esp_err_t esp_hosted_gpio_set_level(uint32_t gpio_num, uint32_t level) { return rpc_gpio_set_level(gpio_num, level); } -int esp_hosted_gpio_get_level(gpio_num_t gpio_num) +int esp_hosted_gpio_get_level(uint32_t gpio_num) { int level = 0; - esp_err_t err = rpc_gpio_get_level(gpio_num, &level); + rpc_gpio_get_level(gpio_num, &level); return level; } -esp_err_t esp_hosted_gpio_set_direction(gpio_num_t gpio_num, gpio_mode_t mode) +esp_err_t esp_hosted_gpio_set_direction(uint32_t gpio_num, uint32_t mode) { return rpc_gpio_set_direction(gpio_num, mode); } -esp_err_t esp_hosted_gpio_input_enable(gpio_num_t gpio_num) +esp_err_t esp_hosted_gpio_input_enable(uint32_t gpio_num) { return rpc_gpio_input_enable(gpio_num); } -esp_err_t esp_hosted_gpio_set_pull_mode(gpio_num_t gpio_num, gpio_pull_mode_t pull) +esp_err_t esp_hosted_gpio_set_pull_mode(uint32_t gpio_num, uint32_t pull) { return rpc_gpio_set_pull_mode(gpio_num, pull); } From e273a11985c000f7593cba241c640f5098004d5a Mon Sep 17 00:00:00 2001 From: Simon Canins Date: Thu, 16 Oct 2025 22:21:44 +0200 Subject: [PATCH 113/114] Fixed Kconfig on slave --- host/drivers/rpc/core/rpc_req.c | 2 +- host/drivers/rpc/core/rpc_rsp.c | 2 +- host/drivers/rpc/slaveif/rpc_slave_if.c | 1 - slave/main/Kconfig.projbuild | 19 ++++++++----------- 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/host/drivers/rpc/core/rpc_req.c b/host/drivers/rpc/core/rpc_req.c index 6e6af5b3..80f30130 100644 --- a/host/drivers/rpc/core/rpc_req.c +++ b/host/drivers/rpc/core/rpc_req.c @@ -690,7 +690,7 @@ int compose_rpc_req(Rpc *req, ctrl_cmd_t *app_req, int32_t *failure_status) RPC_REQ_COPY_STR(p_c->dhcp_gw, p_a->dhcp_gw, 64); RPC_REQ_COPY_STR(p_c->dns_ip, p_a->dns_ip, 64); break; - #if H_WIFI_ENTERPRISE_SUPPORT +#if H_WIFI_ENTERPRISE_SUPPORT } case RPC_ID__Req_EapSetIdentity: { RPC_ALLOC_ASSIGN(RpcReqEapSetIdentity, req_eap_set_identity, rpc__req__eap_set_identity__init); diff --git a/host/drivers/rpc/core/rpc_rsp.c b/host/drivers/rpc/core/rpc_rsp.c index 9229262e..06b6a276 100644 --- a/host/drivers/rpc/core/rpc_rsp.c +++ b/host/drivers/rpc/core/rpc_rsp.c @@ -640,7 +640,7 @@ int rpc_parse_rsp(Rpc *rpc_msg, ctrl_cmd_t *app_resp) RPC_FAIL_ON_NULL(resp_set_dhcp_dns); RPC_ERR_IN_RESP(resp_set_dhcp_dns); break; - #if H_WIFI_ENTERPRISE_SUPPORT +#if H_WIFI_ENTERPRISE_SUPPORT } case RPC_ID__Resp_WifiStaEnterpriseEnable: { RPC_FAIL_ON_NULL(resp_wifi_sta_enterprise_enable); RPC_ERR_IN_RESP(resp_wifi_sta_enterprise_enable); diff --git a/host/drivers/rpc/slaveif/rpc_slave_if.c b/host/drivers/rpc/slaveif/rpc_slave_if.c index 3c5def18..9884bc49 100644 --- a/host/drivers/rpc/slaveif/rpc_slave_if.c +++ b/host/drivers/rpc/slaveif/rpc_slave_if.c @@ -402,7 +402,6 @@ ctrl_cmd_t * rpc_slaveif_get_coprocessor_fwversion(ctrl_cmd_t *req) RPC_DECODE_RSP_IF_NOT_ASYNC(); } - ctrl_cmd_t * rpc_slaveif_iface_mac_addr_set_get(ctrl_cmd_t *req) { RPC_SEND_REQ(RPC_ID__Req_IfaceMacAddrSetGet); diff --git a/slave/main/Kconfig.projbuild b/slave/main/Kconfig.projbuild index b8db02a5..383b8d67 100644 --- a/slave/main/Kconfig.projbuild +++ b/slave/main/Kconfig.projbuild @@ -664,17 +664,7 @@ menu "Example Configuration" default ESP_SPI_GPIO_RESET if ESP_SPI_HOST_INTERFACE default ESP_SDIO_GPIO_RESET if ESP_SDIO_HOST_INTERFACE default ESP_SPI_HD_GPIO_RESET if ESP_SPI_HD_HOST_INTERFACE - default ESP_UART_GPIO_RESET if ESP_UART_HOST_INTERFACE - menu "Hosted GPIO" - config ESP_HOSTED_ENABLE_GPIO_RPC - bool "Expose GPIO RPC APIs (host can control slave GPIOs)" - default n - help - Enable RPC methods that allow the HOST MCU to configure and control - GPIOs on the SLAVE. Leave disabled unless you really need it. This - will additionally reject GPIO requests that target pins used by the - active transport (SPI/SDIO/SPI-HD/UART) - endmenu + default ESP_UART_GPIO_RESET if ESP_UART_HOST_INTERFACE endmenu # HCI UART menu for ESP32-C3/S3 @@ -1135,6 +1125,13 @@ menu "Example Configuration" This can be useful for testing and development purposes where a known Wi-Fi setup is required. + config ESP_HOSTED_ENABLE_GPIO_RPC + bool "Enable GPIO control on SLAVE (host can control slave GPIOs)" + default n + help + Enable RPC methods that allow the HOST MCU to configure and control + GPIOs on the SLAVE. Leave disabled unless you really need it. + Access to GPIOs used by the transport (SPI/SDIO/SPI-HD/UART) are always blocked. menu "Wi-Fi default config (pre-provisioning)" depends on ESP_HOSTED_USE_EXAMPLE_WIFI_PRE_PROVISION_CONFIG From 1e15cc45566e275e1f4723f11cd86b425a988562 Mon Sep 17 00:00:00 2001 From: Simon Canins Date: Thu, 16 Oct 2025 23:46:01 +0200 Subject: [PATCH 114/114] Fixed esp_hosted_rpc.proto --- common/proto/esp_hosted_rpc.pb-c.c | 76 +- common/proto/esp_hosted_rpc.pb-c.h | 18 +- common/proto/esp_hosted_rpc.proto | 4546 ++++++++++++++-------------- 3 files changed, 2320 insertions(+), 2320 deletions(-) diff --git a/common/proto/esp_hosted_rpc.pb-c.c b/common/proto/esp_hosted_rpc.pb-c.c index 380f76cc..2e34812f 100644 --- a/common/proto/esp_hosted_rpc.pb-c.c +++ b/common/proto/esp_hosted_rpc.pb-c.c @@ -30163,7 +30163,14 @@ static const ProtobufCEnumValue rpc_id__enum_values_by_number[292] = { "Resp_IfaceMacAddrSetGet", "RPC_ID__Resp_IfaceMacAddrSetGet", 641 }, { "Resp_IfaceMacAddrLenGet", "RPC_ID__Resp_IfaceMacAddrLenGet", 642 }, { "Resp_FeatureControl", "RPC_ID__Resp_FeatureControl", 643 }, - { "Resp_Max", "RPC_ID__Resp_Max", 644 }, + { "Resp_GpioConfig", "RPC_ID__Resp_GpioConfig", 644 }, + { "Resp_GpioResetPin", "RPC_ID__Resp_GpioResetPin", 645 }, + { "Resp_GpioSetLevel", "RPC_ID__Resp_GpioSetLevel", 646 }, + { "Resp_GpioGetLevel", "RPC_ID__Resp_GpioGetLevel", 647 }, + { "Resp_GpioSetDirection", "RPC_ID__Resp_GpioSetDirection", 648 }, + { "Resp_GpioInputEnable", "RPC_ID__Resp_GpioInputEnable", 649 }, + { "Resp_GpioSetPullMode", "RPC_ID__Resp_GpioSetPullMode", 650 }, + { "Resp_Max", "RPC_ID__Resp_Max", 651 }, { "Event_Base", "RPC_ID__Event_Base", 768 }, { "Event_ESPInit", "RPC_ID__Event_ESPInit", 769 }, { "Event_Heartbeat", "RPC_ID__Event_Heartbeat", 770 }, @@ -30184,41 +30191,34 @@ static const ProtobufCEnumValue rpc_id__enum_values_by_number[292] = { "Event_WifiDppUriReady", "RPC_ID__Event_WifiDppUriReady", 785 }, { "Event_WifiDppCfgRecvd", "RPC_ID__Event_WifiDppCfgRecvd", 786 }, { "Event_WifiDppFail", "RPC_ID__Event_WifiDppFail", 787 }, - { "Resp_GpioConfig", "RPC_ID__Resp_GpioConfig", 788 }, - { "Resp_GpioResetPin", "RPC_ID__Resp_GpioResetPin", 789 }, - { "Resp_GpioSetLevel", "RPC_ID__Resp_GpioSetLevel", 790 }, - { "Resp_GpioGetLevel", "RPC_ID__Resp_GpioGetLevel", 791 }, - { "Resp_GpioSetDirection", "RPC_ID__Resp_GpioSetDirection", 792 }, - { "Resp_GpioInputEnable", "RPC_ID__Resp_GpioInputEnable", 793 }, - { "Resp_GpioSetPullMode", "RPC_ID__Resp_GpioSetPullMode", 794 }, - { "Event_Max", "RPC_ID__Event_Max", 795 }, + { "Event_Max", "RPC_ID__Event_Max", 788 }, }; static const ProtobufCIntRange rpc_id__value_ranges[] = { -{0, 0},{256, 1},{270, 12},{297, 37},{512, 136},{526, 147},{553, 172},{768, 264},{0, 292} +{0, 0},{256, 1},{270, 12},{297, 37},{512, 136},{526, 147},{553, 172},{768, 271},{0, 292} }; static const ProtobufCEnumValueIndex rpc_id__enum_values_by_name[292] = { - { "Event_AP_StaConnected", 267 }, - { "Event_AP_StaDisconnected", 268 }, - { "Event_Base", 264 }, - { "Event_DhcpDnsStatus", 273 }, - { "Event_ESPInit", 265 }, - { "Event_Heartbeat", 266 }, + { "Event_AP_StaConnected", 274 }, + { "Event_AP_StaDisconnected", 275 }, + { "Event_Base", 271 }, + { "Event_DhcpDnsStatus", 280 }, + { "Event_ESPInit", 272 }, + { "Event_Heartbeat", 273 }, { "Event_Max", 291 }, - { "Event_StaConnected", 271 }, - { "Event_StaDisconnected", 272 }, - { "Event_StaItwtProbe", 277 }, - { "Event_StaItwtSetup", 274 }, - { "Event_StaItwtSuspend", 276 }, - { "Event_StaItwtTeardown", 275 }, - { "Event_StaScanDone", 270 }, - { "Event_SuppDppCfgRecvd", 279 }, - { "Event_SuppDppFail", 280 }, - { "Event_SuppDppUriReady", 278 }, - { "Event_WifiDppCfgRecvd", 282 }, - { "Event_WifiDppFail", 283 }, - { "Event_WifiDppUriReady", 281 }, - { "Event_WifiEventNoArgs", 269 }, + { "Event_StaConnected", 278 }, + { "Event_StaDisconnected", 279 }, + { "Event_StaItwtProbe", 284 }, + { "Event_StaItwtSetup", 281 }, + { "Event_StaItwtSuspend", 283 }, + { "Event_StaItwtTeardown", 282 }, + { "Event_StaScanDone", 277 }, + { "Event_SuppDppCfgRecvd", 286 }, + { "Event_SuppDppFail", 287 }, + { "Event_SuppDppUriReady", 285 }, + { "Event_WifiDppCfgRecvd", 289 }, + { "Event_WifiDppFail", 290 }, + { "Event_WifiDppUriReady", 288 }, + { "Event_WifiEventNoArgs", 276 }, { "MsgId_Invalid", 0 }, { "Req_Base", 1 }, { "Req_ConfigHeartbeat", 19 }, @@ -30383,16 +30383,16 @@ static const ProtobufCEnumValueIndex rpc_id__enum_values_by_name[292] = { "Resp_GetDhcpDnsStatus", 228 }, { "Resp_GetMACAddress", 137 }, { "Resp_GetWifiMode", 139 }, - { "Resp_GpioConfig", 284 }, - { "Resp_GpioGetLevel", 287 }, - { "Resp_GpioInputEnable", 289 }, - { "Resp_GpioResetPin", 285 }, - { "Resp_GpioSetDirection", 288 }, - { "Resp_GpioSetLevel", 286 }, - { "Resp_GpioSetPullMode", 290 }, + { "Resp_GpioConfig", 263 }, + { "Resp_GpioGetLevel", 266 }, + { "Resp_GpioInputEnable", 268 }, + { "Resp_GpioResetPin", 264 }, + { "Resp_GpioSetDirection", 267 }, + { "Resp_GpioSetLevel", 265 }, + { "Resp_GpioSetPullMode", 269 }, { "Resp_IfaceMacAddrLenGet", 261 }, { "Resp_IfaceMacAddrSetGet", 260 }, - { "Resp_Max", 263 }, + { "Resp_Max", 270 }, { "Resp_OTAActivate", 146 }, { "Resp_OTABegin", 149 }, { "Resp_OTAEnd", 151 }, diff --git a/common/proto/esp_hosted_rpc.pb-c.h b/common/proto/esp_hosted_rpc.pb-c.h index e5b8196b..860ef686 100644 --- a/common/proto/esp_hosted_rpc.pb-c.h +++ b/common/proto/esp_hosted_rpc.pb-c.h @@ -1101,11 +1101,18 @@ typedef enum _RpcId { RPC_ID__Resp_IfaceMacAddrSetGet = 641, RPC_ID__Resp_IfaceMacAddrLenGet = 642, RPC_ID__Resp_FeatureControl = 643, + RPC_ID__Resp_GpioConfig = 644, + RPC_ID__Resp_GpioResetPin = 645, + RPC_ID__Resp_GpioSetLevel = 646, + RPC_ID__Resp_GpioGetLevel = 647, + RPC_ID__Resp_GpioSetDirection = 648, + RPC_ID__Resp_GpioInputEnable = 649, + RPC_ID__Resp_GpioSetPullMode = 650, /* * Add new control path command response before Resp_Max * and update Resp_Max */ - RPC_ID__Resp_Max = 644, + RPC_ID__Resp_Max = 651, /* ** Event Msgs * */ @@ -1135,18 +1142,11 @@ typedef enum _RpcId { RPC_ID__Event_WifiDppUriReady = 785, RPC_ID__Event_WifiDppCfgRecvd = 786, RPC_ID__Event_WifiDppFail = 787, - RPC_ID__Resp_GpioConfig = 788, - RPC_ID__Resp_GpioResetPin = 789, - RPC_ID__Resp_GpioSetLevel = 790, - RPC_ID__Resp_GpioGetLevel = 791, - RPC_ID__Resp_GpioSetDirection = 792, - RPC_ID__Resp_GpioInputEnable = 793, - RPC_ID__Resp_GpioSetPullMode = 794, /* * Add new control path command notification before Event_Max * and update Event_Max */ - RPC_ID__Event_Max = 795 + RPC_ID__Event_Max = 788 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(RPC_ID) } RpcId; typedef enum _RpcGpioMode { diff --git a/common/proto/esp_hosted_rpc.proto b/common/proto/esp_hosted_rpc.proto index 736507a9..c7c7966b 100644 --- a/common/proto/esp_hosted_rpc.proto +++ b/common/proto/esp_hosted_rpc.proto @@ -1,2273 +1,2273 @@ -/* SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD */ -/* SPDX-License-Identifier: Apache-2.0 */ - -syntax = "proto3"; - -enum Rpc_WifiBw { - BW_Invalid = 0; - HT20 = 1; - HT40 = 2; -} - -enum Rpc_WifiPowerSave { - PS_Invalid = 0; - MIN_MODEM = 1; - MAX_MODEM = 2; -} - -enum Rpc_WifiSecProt { - Open = 0; - WEP = 1; - WPA_PSK = 2; - WPA2_PSK = 3; - WPA_WPA2_PSK = 4; - WPA2_ENTERPRISE = 5; - WPA3_PSK = 6; - WPA2_WPA3_PSK = 7; -} - -/* enums for Control path */ -enum Rpc_Status { - Connected = 0; - Not_Connected = 1; - No_AP_Found = 2; - Connection_Fail = 3; - Invalid_Argument = 4; - Out_Of_Range = 5; -} - - -enum RpcType { -MsgType_Invalid = 0; - Req = 1; - Resp = 2; - Event = 3; - MsgType_Max = 4; -} - -enum RpcFeature { - Feature_None = 0; - // Bluetooth (BT) Feature - Feature_Bluetooth = 1; - // add additional features here -} - -enum RpcFeatureCommand { - Feature_Command_None = 0; - // Bluetooth (BT) Feature Commands - Feature_Command_BT_Init = 1; - Feature_Command_BT_Deinit = 2; - Feature_Command_BT_Enable = 3; - Feature_Command_BT_Disable = 4; - // add additional feature commands here -} - -enum RpcFeatureOption { - Feature_Option_None = 0; - // Bluetooth (BT) Feature Options - Feature_Option_BT_Deinit_Release_Memory = 1; // release memory when deinit BT - // add additional feature options here -} - -enum RpcId { - MsgId_Invalid = 0; - - /** Request Msgs **/ - Req_Base = 256; //0x100 - - Req_GetMACAddress = 257; //0x101 - Req_SetMacAddress = 258; //0x102 - Req_GetWifiMode = 259; //0x103 - Req_SetWifiMode = 260; //0x104 - - Req_SuppDppInit = 261; //0x105 - Req_SuppDppDeinit = 262; //0x106 - Req_SuppDppBootstrapGen = 263; //0x107 - Req_SuppDppStartListen = 264; //0x108 - Req_SuppDppStopListen = 265; //0x109 - - //Req_SetSoftAPVendorSpecificIE = 266; //0x10a - //Req_StartSoftAP = 267; //0x10b - //Req_GetSoftAPConnectedSTAList = 268; //0x10c - //Req_StopSoftAP = 269; //0x10d - Req_OTAActivate = 266; //0x112 - - Req_WifiSetPs = 270; //0x10e - Req_WifiGetPs = 271; //0x10f - - Req_OTABegin = 272; //0x110 - Req_OTAWrite = 273; //0x111 - Req_OTAEnd = 274; //0x112 - - Req_WifiSetMaxTxPower = 275; //0x113 - Req_WifiGetMaxTxPower = 276; //0x114 - - Req_ConfigHeartbeat = 277; //0x115 - - Req_WifiInit = 278; //0x116 - Req_WifiDeinit = 279; //0x117 - Req_WifiStart = 280; //0x118 - Req_WifiStop = 281; //0x119 - Req_WifiConnect = 282; //0x11a - Req_WifiDisconnect = 283; //0x11b - Req_WifiSetConfig = 284; //0x11c - Req_WifiGetConfig = 285; //0x11d - - Req_WifiScanStart = 286; //0x11e - Req_WifiScanStop = 287; //0x11f - Req_WifiScanGetApNum = 288; //0x120 - Req_WifiScanGetApRecords = 289; //0x121 - Req_WifiClearApList = 290; //0x122 - - Req_WifiRestore = 291; //0x123 - Req_WifiClearFastConnect = 292; //0x124 - Req_WifiDeauthSta = 293; //0x125 - Req_WifiStaGetApInfo = 294; //0x126 - //Req_WifiSetPs = 295; //0x127 - //Req_WifiGetPs = 296; //0x128 - Req_WifiSetProtocol = 297; //0x129 - Req_WifiGetProtocol = 298; //0x12a - Req_WifiSetBandwidth = 299; //0x12b - Req_WifiGetBandwidth = 300; //0x12c - Req_WifiSetChannel = 301; //0x12d - Req_WifiGetChannel = 302; //0x12e - Req_WifiSetCountry = 303; //0x12f - Req_WifiGetCountry = 304; //0x130 - -// Req_WifiSetPromiscuousRxCb = 305; //0x131 - Req_WifiSetPromiscuous = 305; //0x131 - Req_WifiGetPromiscuous = 306; //0x132 - Req_WifiSetPromiscuousFilter = 307; //0x133 - Req_WifiGetPromiscuousFilter = 308; //0x134 - Req_WifiSetPromiscuousCtrlFilter = 309; //0x135 - Req_WifiGetPromiscuousCtrlFilter = 310; //0x136 - - Req_WifiApGetStaList = 311; //0x137 - Req_WifiApGetStaAid = 312; //0x138 - Req_WifiSetStorage = 313; //0x139 - Req_WifiSetVendorIe = 314; //0x13a -// Req_WifiSetVendorIeCb = 315; //0x13b - Req_WifiSetEventMask = 315; //0x13b - Req_WifiGetEventMask = 316; //0x13c - Req_Wifi80211Tx = 317; //0x13d - -// Req_WifiSetCsiRxCb = 318; //0x13e - Req_WifiSetCsiConfig = 318; //0x13e - Req_WifiSetCsi = 319; //0x13f - - Req_WifiSetAntGpio = 320; //0x140 - Req_WifiGetAntGpio = 321; //0x141 - Req_WifiSetAnt = 322; //0x142 - Req_WifiGetAnt = 323; //0x143 - - Req_WifiGetTsfTime = 324; //0x144 - Req_WifiSetInactiveTime = 325; //0x145 - Req_WifiGetInactiveTime = 326; //0x146 - Req_WifiStatisDump = 327; //0x147 - Req_WifiSetRssiThreshold = 328; //0x148 - - Req_WifiFtmInitiateSession = 329; //0x149 - Req_WifiFtmEndSession = 330; //0x14a - Req_WifiFtmRespSetOffset = 331; //0x14b - - Req_WifiConfig11bRate = 332; //0x14c - Req_WifiConnectionlessModuleSetWakeInterval = 333; //0x14d - Req_WifiSetCountryCode = 334; //0x14e - Req_WifiGetCountryCode = 335; //0x14f - Req_WifiConfig80211TxRate = 336; //0x150 - Req_WifiDisablePmfConfig = 337; //0x151 - Req_WifiStaGetAid = 338; //0x152 - Req_WifiStaGetNegotiatedPhymode = 339; //0x153 - Req_WifiSetDynamicCs = 340; //0x154 - Req_WifiStaGetRssi = 341; //0x155 - - Req_WifiSetProtocols = 342; //0x156 - Req_WifiGetProtocols = 343; //0x157 - Req_WifiSetBandwidths = 344; //0x158 - Req_WifiGetBandwidths = 345; //0x159 - - Req_WifiSetBand = 346; //0x15a - Req_WifiGetBand = 347; //0x15b - Req_WifiSetBandMode = 348; //0x15c - Req_WifiGetBandMode = 349; //0x15d - - Req_GetCoprocessorFwVersion = 350; //0x15e - - Req_WifiScanGetApRecord = 351; //0x15f - - Req_SetDhcpDnsStatus = 352; //0x160 - Req_GetDhcpDnsStatus = 353; //0x161 - - Req_WifiStaTwtConfig = 354; //0x162 - Req_WifiStaItwtSetup = 355; //0x163 - Req_WifiStaItwtTeardown = 356; //0x164 - Req_WifiStaItwtSuspend = 357; //0x165 - Req_WifiStaItwtGetFlowIdStatus = 358; //0x166 - Req_WifiStaItwtSendProbeReq = 359; //0x167 - Req_WifiStaItwtSetTargetWakeTimeOffset = 360; //0x168 - - Req_WifiStaEnterpriseEnable = 361; //0x169 - Req_WifiStaEnterpriseDisable = 362; //0x16A - Req_EapSetIdentity = 363; //0x16B - Req_EapClearIdentity = 364; //0x16C - Req_EapSetUsername = 365; //0x16D - Req_EapClearUsername = 366; //0x16E - Req_EapSetPassword = 367; //0x16F - Req_EapClearPassword = 368; //0x170 - Req_EapSetNewPassword = 369; //0x171 - Req_EapClearNewPassword = 370; //0x172 - Req_EapSetCaCert = 371; //0x173 - Req_EapClearCaCert = 372; //0x174 - Req_EapSetCertificateAndKey = 373; //0x175 - Req_EapClearCertificateAndKey = 374; //0x176 - Req_EapGetDisableTimeCheck = 375; //0x177 - Req_EapSetTtlsPhase2Method = 376; //0x178 - Req_EapSetSuitebCertification = 377; //0x179 - Req_EapSetPacFile = 378; //0x17A - Req_EapSetFastParams = 379; //0x17B - Req_EapUseDefaultCertBundle = 380; //0x17C - Req_WifiSetOkcSupport = 381; //0x17D - Req_EapSetDomainName = 382; //0x17E - Req_EapSetDisableTimeCheck = 383; //0x17F - Req_EapSetEapMethods = 384; //0x180 - - Req_IfaceMacAddrSetGet = 385; //0x181 - Req_IfaceMacAddrLenGet = 386; //0x182 - - /* Common RPC to handle simple feature control with one optional parameter - * Supported Features: - * - BT Init/Deinit/Enable/Disable - */ - Req_FeatureControl = 387; //0x183 - - Req_GpioConfig = 388; // 0x184 - Req_GpioResetPin = 389; // 0x185 - Req_GpioSetLevel = 390; // 0x186 - Req_GpioGetLevel = 391; // 0x187 - Req_GpioSetDirection = 392; // 0x188 - Req_GpioInputEnable = 393; // 0x189 - Req_GpioSetPullMode = 394; // 0x18A - - /* Add new control path command response before Req_Max - * and update Req_Max */ - Req_Max = 395; //0x18B - - /** Response Msgs **/ - Resp_Base = 512; - - Resp_GetMACAddress = 513; - Resp_SetMacAddress = 514; - Resp_GetWifiMode = 515; - Resp_SetWifiMode = 516; - - Resp_SuppDppInit = 517; - Resp_SuppDppDeinit = 518; - Resp_SuppDppBootstrapGen = 519; - Resp_SuppDppStartListen = 520; - Resp_SuppDppStopListen = 521; - - //Resp_SetSoftAPVendorSpecificIE = 522; - //Resp_StartSoftAP = 523; - //Resp_GetSoftAPConnectedSTAList = 524; - //Resp_StopSoftAP = 525; - Resp_OTAActivate = 522; - - Resp_WifiSetPs = 526; - Resp_WifiGetPs = 527; - - Resp_OTABegin = 528; - Resp_OTAWrite = 529; - Resp_OTAEnd = 530; - - Resp_WifiSetMaxTxPower = 531; - Resp_WifiGetMaxTxPower = 532; - - Resp_ConfigHeartbeat = 533; - - Resp_WifiInit = 534; - Resp_WifiDeinit = 535; - Resp_WifiStart = 536; - Resp_WifiStop = 537; - Resp_WifiConnect = 538; - Resp_WifiDisconnect = 539; - Resp_WifiSetConfig = 540; - Resp_WifiGetConfig = 541; - - Resp_WifiScanStart = 542; - Resp_WifiScanStop = 543; - Resp_WifiScanGetApNum = 544; - Resp_WifiScanGetApRecords = 545; - Resp_WifiClearApList = 546; - - Resp_WifiRestore = 547; - Resp_WifiClearFastConnect = 548; - Resp_WifiDeauthSta = 549; - Resp_WifiStaGetApInfo = 550; - //Resp_WifiSetPs = 551; - //Resp_WifiGetPs = 552; - Resp_WifiSetProtocol = 553; - Resp_WifiGetProtocol = 554; - Resp_WifiSetBandwidth = 555; - Resp_WifiGetBandwidth = 556; - Resp_WifiSetChannel = 557; - Resp_WifiGetChannel = 558; - Resp_WifiSetCountry = 559; - Resp_WifiGetCountry = 560; - -// Resp_WifiSetPromiscuousRxCb = 561; - Resp_WifiSetPromiscuous = 561; - Resp_WifiGetPromiscuous = 562; - Resp_WifiSetPromiscuousFilter = 563; - Resp_WifiGetPromiscuousFilter = 564; - Resp_WifiSetPromiscuousCtrlFilter = 565; - Resp_WifiGetPromiscuousCtrlFilter = 566; - - Resp_WifiApGetStaList = 567; - Resp_WifiApGetStaAid = 568; - Resp_WifiSetStorage = 569; - Resp_WifiSetVendorIe = 570; -// Resp_WifiSetVendorIeCb = 571; - Resp_WifiSetEventMask = 571; - Resp_WifiGetEventMask = 572; - Resp_Wifi80211Tx = 573; - -// Resp_WifiSetCsiRxCb = 573; - Resp_WifiSetCsiConfig = 574; - Resp_WifiSetCsi = 575; - - Resp_WifiSetAntGpio = 576; - Resp_WifiGetAntGpio = 577; - Resp_WifiSetAnt = 578; - Resp_WifiGetAnt = 579; - - Resp_WifiGetTsfTime = 580; - Resp_WifiSetInactiveTime = 581; - Resp_WifiGetInactiveTime = 582; - Resp_WifiStatisDump = 583; - Resp_WifiSetRssiThreshold = 584; - - Resp_WifiFtmInitiateSession = 585; - Resp_WifiFtmEndSession = 586; - Resp_WifiFtmRespSetOffset = 587; - - Resp_WifiConfig11bRate = 588; - Resp_WifiConnectionlessModuleSetWakeInterval = 589; - Resp_WifiSetCountryCode = 590; - Resp_WifiGetCountryCode = 591; - Resp_WifiConfig80211TxRate = 592; - Resp_WifiDisablePmfConfig = 593; - Resp_WifiStaGetAid = 594; - Resp_WifiStaGetNegotiatedPhymode = 595; - Resp_WifiSetDynamicCs = 596; - Resp_WifiStaGetRssi = 597; - - Resp_WifiSetProtocols = 598; - Resp_WifiGetProtocols = 599; - Resp_WifiSetBandwidths = 600; - Resp_WifiGetBandwidths = 601; - - Resp_WifiSetBand = 602; - Resp_WifiGetBand = 603; - Resp_WifiSetBandMode = 604; - Resp_WifiGetBandMode = 605; - - Resp_GetCoprocessorFwVersion = 606; - - Resp_WifiScanGetApRecord = 607; - - Resp_SetDhcpDnsStatus = 608; - Resp_GetDhcpDnsStatus = 609; - - Resp_WifiStaTwtConfig = 610; - Resp_WifiStaItwtSetup = 611; - Resp_WifiStaItwtTeardown = 612; - Resp_WifiStaItwtSuspend = 613; - Resp_WifiStaItwtGetFlowIdStatus = 614; - Resp_WifiStaItwtSendProbeReq = 615; - Resp_WifiStaItwtSetTargetWakeTimeOffset = 616; - - Resp_WifiStaEnterpriseEnable = 617; - Resp_WifiStaEnterpriseDisable = 618; - Resp_EapSetIdentity = 619; - Resp_EapClearIdentity = 620; - Resp_EapSetUsername = 621; - Resp_EapClearUsername = 622; - Resp_EapSetPassword = 623; - Resp_EapClearPassword = 624; - Resp_EapSetNewPassword = 625; - Resp_EapClearNewPassword = 626; - Resp_EapSetCaCert = 627; - Resp_EapClearCaCert = 628; - Resp_EapSetCertificateAndKey = 629; - Resp_EapClearCertificateAndKey = 630; - Resp_EapGetDisableTimeCheck = 631; - Resp_EapSetTtlsPhase2Method = 632; - Resp_EapSetSuitebCertification = 633; - Resp_EapSetPacFile = 634; - Resp_EapSetFastParams = 635; - Resp_EapUseDefaultCertBundle = 636; - Resp_WifiSetOkcSupport = 637; - Resp_EapSetDomainName = 638; - Resp_EapSetDisableTimeCheck = 639; - Resp_EapSetEapMethods = 640; - - Resp_IfaceMacAddrSetGet = 641; - Resp_IfaceMacAddrLenGet = 642; - Resp_FeatureControl = 643; - - /* Add new control path command response before Resp_Max - * and update Resp_Max */ - Resp_Max = 644; - - /** Event Msgs **/ - Event_Base = 768; - Event_ESPInit = 769; - Event_Heartbeat = 770; - Event_AP_StaConnected = 771; - Event_AP_StaDisconnected = 772; - Event_WifiEventNoArgs = 773; - Event_StaScanDone = 774; - Event_StaConnected = 775; - Event_StaDisconnected = 776; - Event_DhcpDnsStatus = 777; - - Event_StaItwtSetup = 778; - Event_StaItwtTeardown = 779; - Event_StaItwtSuspend = 780; - Event_StaItwtProbe = 781; - - // Supplicant DPP Events received by dpp callback on host - Event_SuppDppUriReady = 782; - Event_SuppDppCfgRecvd = 783; - Event_SuppDppFail = 784; - // Wifi DPP Events - Event_WifiDppUriReady = 785; - Event_WifiDppCfgRecvd = 786; - Event_WifiDppFail = 787; - - Resp_GpioConfig = 788; - Resp_GpioResetPin = 789; - Resp_GpioSetLevel = 790; - Resp_GpioGetLevel = 791; - Resp_GpioSetDirection = 792; - Resp_GpioInputEnable = 793; - Resp_GpioSetPullMode = 794; - - /* Add new control path command notification before Event_Max - * and update Event_Max */ - Event_Max = 795; -} - -message wifi_init_config { - int32 static_rx_buf_num = 1; /**< WiFi static RX buffer number */ - int32 dynamic_rx_buf_num = 2; /**< WiFi dynamic RX buffer number */ - int32 tx_buf_type = 3; /**< WiFi TX buffer type */ - int32 static_tx_buf_num = 4; /**< WiFi static TX buffer number */ - int32 dynamic_tx_buf_num = 5; /**< WiFi dynamic TX buffer number */ - int32 cache_tx_buf_num = 6; /**< WiFi TX cache buffer number */ - int32 csi_enable = 7; /**< WiFi channel state information enable flag */ - int32 ampdu_rx_enable = 8; /**< WiFi AMPDU RX feature enable flag */ - int32 ampdu_tx_enable = 9; /**< WiFi AMPDU TX feature enable flag */ - int32 amsdu_tx_enable = 10; /**< WiFi AMSDU TX feature enable flag */ - int32 nvs_enable = 11; /**< WiFi NVS flash enable flag */ - int32 nano_enable = 12; /**< Nano option for printf/scan family enable flag */ - int32 rx_ba_win = 13; /**< WiFi Block Ack RX window size */ - int32 wifi_task_core_id = 14; /**< WiFi Task Core ID */ - int32 beacon_max_len = 15; /**< WiFi softAP maximum length of the beacon */ - int32 mgmt_sbuf_num = 16; /**< WiFi management short buffer number, the minimum value is 6, the maximum value is 32 */ - uint64 feature_caps = 17; /**< Enables additional WiFi features and capabilities */ - bool sta_disconnected_pm = 18; /**< WiFi Power Management for station at disconnected status */ - int32 espnow_max_encrypt_num = 19; /**< Maximum encrypt number of peers supported by espnow */ - int32 magic = 20; /**< WiFi init magic number, it should be the last field */ - int32 rx_mgmt_buf_type = 21; /**< WiFi RX MGMT buffer type */ - int32 rx_mgmt_buf_num = 22; /**< WiFi RX MGMT buffer number */ - int32 tx_hetb_queue_num = 23; /**< WiFi TX HE TB QUEUE number for STA HE TB PPDU transmission */ - int32 dump_hesigb_enable = 24; /**< enable dump sigb field */ -} - -message wifi_country { - bytes cc = 1; /**< country code string of 3 chars*/ - uint32 schan = 2; /**< start channel */ - uint32 nchan = 3; /**< total channel number */ - int32 max_tx_power = 4; /**< This field is used for getting WiFi maximum transmitting power, - call esp_wifi_set_max_tx_power to set the maximum transmitting power. */ - int32 policy = 5; /**< country policy */ -} - - -message wifi_active_scan_time { - uint32 min = 1; /**< minimum active scan time per channel, units: millisecond */ - uint32 max = 2; /**< maximum active scan time per channel, units: millisecond, values above 1500ms may - cause station to disconnect from AP and are not recommended. */ -} ; - -message wifi_scan_time { - wifi_active_scan_time active = 1; /**< active scan time per channel, units: millisecond. */ - uint32 passive = 2; /**< passive scan time per channel, units: millisecond, values above 1500ms may - cause station to disconnect from AP and are not recommended. */ -} - -message wifi_scan_channel_bitmap { - uint32 ghz_2_channels = 1; /**< Represents 2.4 GHz channels, that bits can be set as wifi_2g_channel_bit_t shown. */ - uint32 ghz_5_channels = 2; /**< Represents 5 GHz channels, that bits can be set as wifi_5g_channel_bit_t shown. */ -} - -message wifi_scan_config { - bytes ssid = 1; /**< SSID of AP 33char*/ - bytes bssid = 2; /**< MAC address of AP 6char */ - uint32 channel = 3; /**< channel, scan the specific channel */ - bool show_hidden = 4; /**< enable to scan AP whose SSID is hidden */ - int32 scan_type = 5; /**< scan type, active or passive */ - wifi_scan_time scan_time = 6; /**< scan time per channel */ - uint32 home_chan_dwell_time = 7; /**< time spent at home channel between scanning consecutive channels.*/ - wifi_scan_channel_bitmap channel_bitmap = 8; /**< Channel bitmap for setting specific channels to be scanned. - Please note that the 'channel' parameter above needs to be set to 0 to allow scanning by bitmap. - Also, note that only allowed channels configured by wifi_country_t can be scanned. */ -} - -message wifi_he_ap_info { - //uint8_t bss_color:6; /**< an unsigned integer whose value is the BSS Color of the BSS corresponding to the AP */ - //uint8_t partial_bss_color:1; /**< indicate if an AID assignment rule based on the BSS color */ - //uint8_t bss_color_disabled:1; /**< indicate if the use of BSS color is disabled */ - uint32 bitmask = 1; /* Manually have to parse for above bits */ - uint32 bssid_index = 2; /**< in M-BSSID set, identifies the nontransmitted BSSID */ -} - -message wifi_ap_record { - bytes bssid = 1; /**< MAC address of AP 6char */ - bytes ssid = 2; /**< SSID of AP 33char */ - uint32 primary = 3; /**< channel of AP */ - int32 second = 4; /**< secondary channel of AP */ - int32 rssi = 5; /**< signal strength of AP */ - int32 authmode = 6; /**< authmode of AP */ - int32 pairwise_cipher = 7; /**< pairwise cipher of AP */ - int32 group_cipher = 8; /**< group cipher of AP */ - int32 ant = 9; /**< antenna used to receive beacon from AP */ - //uint32_t phy_11b:1; /**< bit: 0 flag to identify if 11b mode is enabled or not */ - //uint32_t phy_11g:1; /**< bit: 1 flag to identify if 11g mode is enabled or not */ - //uint32_t phy_11n:1; /**< bit: 2 flag to identify if 11n mode is enabled or not */ - //uint32_t phy_lr:1; /**< bit: 3 flag to identify if low rate is enabled or not */ - //uint32_t wps:1; /**< bit: 4 flag to identify if WPS is supported or not */ - //uint32_t ftm_responder:1; /**< bit: 5 flag to identify if FTM is supported in responder mode */ - //uint32_t ftm_initiator:1; /**< bit: 6 flag to identify if FTM is supported in initiator mode */ - //uint32_t reserved:25; /**< bit: 7..31 reserved */ - uint32 bitmask = 10; /* Manually have to parse for above bits */ - - wifi_country country = 11; /**< country information of AP */ - wifi_he_ap_info he_ap = 12; - uint32 bandwidth = 13; /**< For AP 20 MHz this value is set to 1. For AP 40 MHz this value is set to 2. - For AP 80 MHz this value is set to 3. For AP 160MHz this value is set to 4. - For AP 80+80MHz this value is set to 5*/ - uint32 vht_ch_freq1 = 14; /**< This fields are used only AP bandwidth is 80 and 160 MHz, to transmit the center channel - frequency of the BSS. For AP bandwidth is 80 + 80 MHz, it is the center channel frequency - of the lower frequency segment.*/ - uint32 vht_ch_freq2 = 15; /**< This fields are used only AP bandwidth is 80 + 80 MHz, and is used to transmit the center - channel frequency of the second segment. */ -} - -message wifi_scan_threshold { - int32 rssi = 1; /**< The minimum rssi to accept in the fast scan mode */ - int32 authmode = 2; /**< The weakest authmode to accept in the fast scan mode -Note: Incase this value is not set and password is set as per WPA2 standards(password len >= 8), -it will be defaulted to WPA2 and device won't connect to deprecated WEP/WPA networks. -Please set authmode threshold as WIFI_AUTH_WEP/WIFI_AUTH_WPA_PSK to connect to WEP/WPA networks */ - uint32 rssi_5g_adjustment = 3; /**< The RSSI value of the 5G AP is within the rssi_5g_adjustment range compared to the 2G AP, the 5G AP will be given priority for connection. */ -} - -message wifi_pmf_config { - bool capable = 1; /**< Deprecated variable. Device will always connect in PMF mode if other device also advertizes PMF capability. */ - bool required = 2; /**< Advertizes that Protected Management Frame is required. Device will not associate to non-PMF capable devices. */ -} - -message wifi_bss_max_idle_config { - uint32 period = 1; /**< Sets BSS Max idle period (1 Unit = 1000TUs OR 1.024 Seconds). If there are no frames for this period from a STA, SoftAP will disassociate due to inactivity. Setting it to 0 disables the feature */ - bool protected_keep_alive = 2; /**< Requires clients to use protected keep alive frames for BSS Max Idle period */ -} - -message wifi_ap_config { - bytes ssid = 1; /**< SSID of ESP32 soft-AP. If ssid_len field is 0, this must be a Null terminated string. Otherwise, length is set according to ssid_len. 32 char*/ - bytes password = 2; /**< Password of ESP32 soft-AP. 64 char*/ - uint32 ssid_len = 3; /**< Optional length of SSID field. */ - uint32 channel = 4; /**< Channel of ESP32 soft-AP */ - int32 authmode = 5; /**< Auth mode of ESP32 soft-AP. Do not support AUTH_WEP in soft-AP mode */ - uint32 ssid_hidden = 6; /**< Broadcast SSID or not, default 0, broadcast the SSID */ - uint32 max_connection = 7; /**< Max number of stations allowed to connect in */ - uint32 beacon_interval = 8; /**< Beacon interval which should be multiples of 100. Unit: TU(time unit, 1 TU = 1024 us). Range: 100 ~ 60000. Default value: 100 */ - int32 pairwise_cipher = 9; /**< pairwise cipher of SoftAP, group cipher will be derived using this. - cipher values are valid starting from WIFI_CIPHER_TYPE_TKIP, enum values before that will be considered as invalid and default cipher suites(TKIP+CCMP) will be used. - Valid cipher suites in softAP mode are WIFI_CIPHER_TYPE_TKIP, WIFI_CIPHER_TYPE_CCMP and WIFI_CIPHER_TYPE_TKIP_CCMP. */ - bool ftm_responder = 10; /**< Enable FTM Responder mode */ - wifi_pmf_config pmf_cfg = 11; /**< Configuration for Protected Management Frame */ - int32 sae_pwe_h2e = 12; /**< Configuration for SAE PWE derivation method */ - uint32 csa_count = 13; /**< Channel Switch Announcement Count. Notify the station that the channel will switch after the csa_count beacon intervals. Default value: 3 */ - uint32 dtim_period = 14; /**< Dtim period of soft-AP. Range: 1 ~ 10. Default value: 1 */ - uint32 transition_disable = 15; /**< Whether to enable transition disable feature */ - uint32 sae_ext = 16; /**< Enable SAE EXT feature. SOC_GCMP_SUPPORT is required for this feature. */ - wifi_bss_max_idle_config bss_max_idle_cfg = 17; /**< Configuration for bss max idle, effective if CONFIG_WIFI_BSS_MAX_IDLE_SUPPORT is enabled */ - uint32 gtk_rekey_interval = 18; /**< GTK rekeying interval in seconds. If set to 0, GTK rekeying is disabled. Range: 60 ~ 65535 including 0. */ -} - -message wifi_sta_config { - bytes ssid = 1; /**< SSID of target AP. 32char */ - bytes password = 2; /**< Password of target AP. 64char */ - int32 scan_method = 3; /**< do all channel scan or fast scan */ - bool bssid_set = 4; /**< whether set MAC address of target AP or not. Generally, station_config.bssid_set needs to be 0, - and it needs to be 1 only when users need to check the MAC address of the AP.*/ - bytes bssid = 5; /**< MAC address of target AP 6char */ - uint32 channel = 6; /**< channel of target AP. Set to 1~13 to scan starting from the specified channel - before connecting to AP. If the channel of AP is unknown, set it to 0.*/ - uint32 listen_interval = 7; /**< Listen interval for ESP32 station to receive beacon when WIFI_PS_MAX_MODEM is set. -Units: AP beacon intervals. Defaults to 3 if set to 0. */ - int32 sort_method = 8; /**< sort the connect AP in the list by rssi or security mode */ - wifi_scan_threshold threshold = 9; /**< When sort_method is set, only APs which have an auth mode that is more secure - than the selected auth mode and a signal stronger than the minimum RSSI will be used. */ - wifi_pmf_config pmf_cfg = 10; /**< Configuration for Protected Management Frame. Will be advertized in RSN Capabilities in RSN IE. */ - //uint32_t rm_enabled:1; /**< Whether Radio Measurements are enabled for the connection */ - //uint32_t btm_enabled:1; /**< Whether BSS Transition Management is enabled for the connection */ - //uint32_t mbo_enabled:1; /**< Whether MBO is enabled for the connection */ - //uint32_t ft_enabled:1; /**< Whether FT is enabled for the connection */ - //uint32_t owe_enabled:1; /**< Whether OWE is enabled for the connection */ - //uint32_t transition_disable:1; /**< Whether to enable transition disable feature */ - //uint32_t reserved:26; /**< Reserved for future feature set */ - uint32 bitmask = 11; - int32 sae_pwe_h2e = 12; /**< Whether SAE hash to element is enabled */ - uint32 failure_retry_cnt = 13; /**< Number of connection retries station will do before moving to next AP. - scan_method should be set as WIFI_ALL_CHANNEL_SCAN to use this config. - Note: Enabling this may cause connection time to increase incase best AP doesn't behave properly. */ - //uint32_t he_dcm_set:1; /**< Whether DCM max.constellation for transmission and reception is set. */ - //uint32_t he_dcm_max_constellation_tx:2; /**< Indicate the max.constellation for DCM in TB PPDU the STA supported. 0: not supported. 1: BPSK, 2: QPSK, 3: 16-QAM. The default value is 3. */ - //uint32_t he_dcm_max_constellation_rx:2; /**< Indicate the max.constellation for DCM in both Data field and HE-SIG-B field the STA supported. 0: not supported. 1: BPSK, 2: QPSK, 3: 16-QAM. The default value is 3. */ - //uint32_t he_mcs9_enabled:1; /**< Whether to support HE-MCS 0 to 9. The default value is 0. */ - //uint32_t he_su_beamformee_disabled:1; /**< Whether to disable support for operation as an SU beamformee. */ - //uint32_t he_trig_su_bmforming_feedback_disabled:1; /**< Whether to disable support the transmission of SU feedback in an HE TB sounding sequence. */ - //uint32_t he_trig_mu_bmforming_partial_feedback_disabled:1; /**< Whether to disable support the transmission of partial-bandwidth MU feedback in an HE TB sounding sequence. */ - // uint32_t he_trig_cqi_feedback_disabled:1; /**< Whether to disable support the transmission of CQI feedback in an HE TB sounding sequence. */ - // uint32_t vht_su_beamformee_disabled: 1; /**< Whether to disable support for operation as an VHT SU beamformee. */ - // uint32_t vht_mu_beamformee_disabled: 1; /**< Whether to disable support for operation as an VHT MU beamformee. */ - // uint32_t vht_mcs8_enabled: 1; /**< Whether to support VHT-MCS8. The default value is 0. */ - // uint32_t he_reserved:19; /**< Reserved for future feature set */ - uint32 he_bitmask = 14; - bytes sae_h2e_identifier = 15; /**< Password identifier for H2E. this needs to be null terminated string. SAE_H2E_IDENTIFIER_LEN chars */ - uint32 sae_pk_mode = 16; /**< Configuration for SAE-PK (Public Key) Authentication method */ -} - -message wifi_config { - oneof u { - wifi_ap_config ap = 1; /**< configuration of AP */ - wifi_sta_config sta = 2; /**< configuration of STA */ - } -} - -message wifi_sta_info { - bytes mac = 1; /**< mac address 6 char */ - int32 rssi = 2; /**< current average rssi of sta connected */ - //uint32_t phy_11b:1; /**< bit: 0 flag to identify if 11b mode is enabled or not */ - //uint32_t phy_11g:1; /**< bit: 1 flag to identify if 11g mode is enabled or not */ - //uint32_t phy_11n:1; /**< bit: 2 flag to identify if 11n mode is enabled or not */ - //uint32_t phy_lr:1; /**< bit: 3 flag to identify if low rate is enabled or not */ - //uint32_t phy_11x:1; /**< bit: 4 flag to identify identify if 11ax mode is enabled or not */ - //uint32_t is_mesh_child:1; /**< bit: 5 flag to identify mesh child */ - //uint32_t reserved:26; /**< bit: 6..31 reserved */ - uint32 bitmask = 3; -} - -message wifi_sta_list { - repeated wifi_sta_info sta = 1; /**< station list */ - int32 num = 2; /**< number of stations in the list (other entries are invalid) */ -} - -//message vendor_ie_data { -// uint32 element_id = 1; /**< Should be set to WIFI_VENDOR_IE_ELEMENT_ID (0xDD) */ -// uint32 length = 2; /**< Length of all bytes in the element data following this field. Minimum 4. */ -// bytes vendor_oui = 3; /**< Vendor identifier (OUI). 3 chars */ -// uint32 vendor_oui_type = 4; /**< Vendor-specific OUI type. */ -// bytes payload = 5; /**< Payload. Length is equal to value in 'length' field, minus 4. Note: Variable size */ -//} - -message wifi_pkt_rx_ctrl { - int32 rssi = 1; /**< 8bits Received Signal Strength Indicator(RSSI) of packet. unit: dBm */ - uint32 rate = 2; /**< 5bits PHY rate encoding of the packet. Only valid for non HT(11bg) packet */ - //uint32 :1; /**< reserved */ - uint32 sig_mode = 3; /**< 2bits 0: non HT(11bg) packet; 1: HT(11n) packet; 3: VHT(11ac) packet */ - //uint32 :16; /**< reserved */ - uint32 mcs = 4; /**< 7bits Modulation Coding Scheme. If is HT(11n) packet, shows the modulation, range from 0 to 76(MSC0 ~ MCS76) */ - uint32 cwb = 5; /**< 1bit Channel Bandwidth of the packet. 0: 20MHz; 1: 40MHz */ - //uint32 :16; /**< reserved */ - uint32 smoothing = 6; /**< 1bit reserved */ - uint32 not_sounding = 7; /**< 1bit reserved */ - //uint32 :1; /**< reserved */ - uint32 aggregation = 8; /**< 1bit Aggregation. 0: MPDU packet; 1: AMPDU packet */ - uint32 stbc = 9; /**< 2bits Space Time Block Code(STBC). 0: non STBC packet; 1: STBC packet */ - uint32 fec_coding = 10; /**< 1bit Flag is set for 11n packets which are LDPC */ - uint32 sgi = 11; /**< 1bit Short Guide Interval(SGI). 0: Long GI; 1: Short GI */ - int32 noise_floor = 12; /**< 8bits noise floor of Radio Frequency Module(RF). unit: dBm*/ - uint32 ampdu_cnt = 13; /**< 8bits ampdu cnt */ - uint32 channel = 14; /**< 4bits primary channel on which this packet is received */ - uint32 secondary_channel = 15; /**< 4bits secondary channel on which this packet is received. 0: none; 1: above; 2: below */ - //uint32 :8; /**< reserved */ - uint32 timestamp = 16; /**< 32bit timestamp. The local time when this packet is received. It is precise only if modem sleep or light sleep is not enabled. unit: microsecond */ - //uint32 :32; /**< reserved */ - //unsigned :32; /**< reserved */ - //unsigned :31; /**< reserved */ - uint32 ant = 17; /**< 1bit antenna number from which this packet is received. 0: WiFi antenna 0; 1: WiFi antenna 1 */ - uint32 sig_len = 18; /**< 12bits length of packet including Frame Check Sequence(FCS) */ - //unsigned :12; /**< reserved */ - uint32 rx_state = 19; /**< 8bits state of the packet. 0: no error; others: error numbers which are not public */ -} - -message wifi_promiscuous_pkt { - wifi_pkt_rx_ctrl rx_ctrl = 1; /**< metadata header */ - bytes payload = 2; /**< Note: variable length. Data or management payload. Length of payload is described by rx_ctrl.sig_len. Type of content determined by packet type argument of callback. */ -} - -message wifi_promiscuous_filter { - uint32 filter_mask = 1; /**< OR of one or more filter values WIFI_PROMIS_FILTER_* */ -} - -message wifi_csi_config { - bool lltf_en = 1; /**< enable to receive legacy long training field(lltf) data. Default enabled */ - bool htltf_en = 2; /**< enable to receive HT long training field(htltf) data. Default enabled */ - bool stbc_htltf2_en = 3; /**< enable to receive space time block code HT long training field(stbc-htltf2) data. Default enabled */ - bool ltf_merge_en = 4; /**< enable to generate htlft data by averaging lltf and ht_ltf data when receiving HT packet. Otherwise, use ht_ltf data directly. Default enabled */ - bool channel_filter_en = 5; /**< enable to turn on channel filter to smooth adjacent sub-carrier. Disable it to keep independence of adjacent sub-carrier. Default enabled */ - bool manu_scale = 6; /**< manually scale the CSI data by left shifting or automatically scale the CSI data. - If set true, please set the shift bits. false: automatically. true: manually. Default false */ - uint32 shift = 7; /**< manually left shift bits of the scale of the CSI data. The range of the left shift bits is 0~15 */ -} - -message wifi_csi_info { - wifi_pkt_rx_ctrl rx_ctrl = 1; /**< received packet radio metadata header of the CSI data */ - bytes mac = 2; /**< 6bits source MAC address of the CSI data */ - bytes dmac = 3; /**< 6bits destination MAC address of the CSI data */ - bool first_word_invalid = 4; /**< first four bytes of the CSI data is invalid or not */ - bytes buf = 5; /**< Note: variable length. buffer of CSI data */ - uint32 len = 6; /**< length of CSI data */ -} - -message wifi_ant_gpio { - uint32 gpio_select = 1; /**< 1bit Whether this GPIO is connected to external antenna switch */ - uint32 gpio_num = 2; /**< 7bits The GPIO number that connects to external antenna switch */ -} - -message wifi_ant_gpio_config { - repeated wifi_ant_gpio gpio_cfgs = 1; /**< The configurations of GPIOs that connect to external antenna switch */ -} - -message wifi_ant_config { - int32 rx_ant_mode = 1; /**< WiFi antenna mode for receiving */ - int32 rx_ant_default = 2; /**< Default antenna mode for receiving, it's ignored if rx_ant_mode is not WIFI_ANT_MODE_AUTO */ - int32 tx_ant_mode = 3; /**< WiFi antenna mode for transmission, it can be set to WIFI_ANT_MODE_AUTO only if rx_ant_mode is set to WIFI_ANT_MODE_AUTO */ - uint32 enabled_ant0 = 4; /**< 4bits Index (in antenna GPIO configuration) of enabled WIFI_ANT_MODE_ANT0 */ - uint32 enabled_ant1 = 5; /**< 4bits Index (in antenna GPIO configuration) of enabled WIFI_ANT_MODE_ANT1 */ -} - -message wifi_action_tx_req { - int32 ifx = 1; /**< WiFi interface to send request to */ - bytes dest_mac = 2; /**< 6bits Destination MAC address */ - bool no_ack = 3; /**< Indicates no ack required */ - //TODO - //wifi_action_rx_cb_t rx_cb; /**< Rx Callback to receive any response */ - uint32 data_len = 4; /**< Length of the appended Data */ - bytes data = 5; /**< note: variable length. Appended Data payload */ -} - -message wifi_ftm_initiator_cfg { - bytes resp_mac = 1; /**< 6bits MAC address of the FTM Responder */ - uint32 channel = 2; /**< Primary channel of the FTM Responder */ - uint32 frm_count = 3; /**< No. of FTM frames requested in terms of 4 or 8 bursts (allowed values - 0(No pref), 16, 24, 32, 64) */ - uint32 burst_period = 4; /**< Requested time period between consecutive FTM bursts in 100's of milliseconds (0 - No pref) */ -} - -message wifi_event_sta_scan_done { - uint32 status = 1; /**< status of scanning APs: 0 — success, 1 - failure */ - uint32 number = 2; /**< number of scan results */ - uint32 scan_id = 3; /**< scan sequence number, used for block scan */ -} - -message wifi_event_sta_connected { - bytes ssid = 1; /**< 32bytes SSID of connected AP */ - uint32 ssid_len = 2; /**< SSID length of connected AP */ - bytes bssid = 3; /**< 6bytes BSSID of connected AP*/ - uint32 channel = 4; /**< channel of connected AP*/ - int32 authmode = 5; /**< authentication mode used by AP*/ - int32 aid = 6; /**< authentication id assigned by the connected AP*/ -} - -message wifi_event_sta_disconnected { - bytes ssid = 1; /**< SSID of disconnected AP */ - uint32 ssid_len = 2; /**< SSID length of disconnected AP */ - bytes bssid = 3; /**< BSSID of disconnected AP */ - uint32 reason = 4; /**< reason of disconnection */ - int32 rssi = 5; /**< rssi of disconnection */ -} - -message wifi_event_sta_authmode_change { - int32 old_mode = 1; /**< the old auth mode of AP */ - int32 new_mode = 2; /**< the new auth mode of AP */ -} - -message wifi_event_sta_wps_er_pin { - bytes pin_code = 1; /**< 8bytes PIN code of station in enrollee mode */ -} - -message ap_cred { - bytes ssid = 1; /**< 32bytes SSID of AP */ - bytes passphrase = 2; /**< 64bytes Passphrase for the AP */ -} - -message wifi_event_sta_wps_er_success { - uint32 ap_cred_cnt = 1; /**< Number of AP credentials received */ - repeated ap_cred ap_creds = 2; /**< All AP credentials received from WPS handshake */ -} - -/** Argument structure for WIFI_EVENT_AP_PROBEREQRECVED event */ -message wifi_event_ap_probe_req_rx { - int32 rssi = 1; /**< Received probe request signal strength */ - uint32 mac = 2; /**< MAC address of the station which send probe request */ -} - -/** Argument structure for WIFI_EVENT_STA_BSS_RSSI_LOW event */ -message wifi_event_bss_rssi_low { - int32 rssi = 1; /**< RSSI value of bss */ -} - -message wifi_ftm_report_entry { - uint32 dlog_token = 1; /* *< Dialog Token of the FTM frame */ - int32 rssi = 2; /* *< RSSI of the FTM frame received */ - uint32 rtt = 3; /* *< Round Trip Time in pSec with a peer */ - /* TODO: uint32 is supported by proto? */ - uint64 t1 = 4; /* *< Time of departure of FTM frame from FTM Responder in pSec */ - uint64 t2 = 5; /* *< Time of arrival of FTM frame at FTM Initiator in pSec */ - uint64 t3 = 6; /* *< Time of departure of ACK from FTM Initiator in pSec */ - uint64 t4 = 7; /* *< Time of arrival of ACK at FTM Responder in pSec */ -} - -message wifi_event_ftm_report { - bytes peer_mac = 1; /* *< 6bytes MAC address of the FTM Peer */ - int32 status = 2; /* *< Status of the FTM operation */ - uint32 rtt_raw = 3; /* *< Raw average Round-Trip-Time with peer in Nano-Seconds */ - uint32 rtt_est = 4; /* *< Estimated Round-Trip-Time with peer in Nano-Seconds */ - uint32 dist_est = 5; /* *< Estimated one-way distance in Centi-Meters */ - repeated wifi_ftm_report_entry ftm_report_data = 6; /* *< Note var len Pointer to FTM Report with multiple entries, should be freed after use */ - uint32 ftm_report_num_entries = 7; /* *< Number of entries in the FTM Report data */ -} - -message wifi_event_action_tx_status { - int32 ifx = 1; /**< WiFi interface to send request to */ - uint32 context = 2; /**< Context to identify the request */ - bytes da = 3; /**< 6bytes Destination MAC address */ - uint32 status = 4; /**< Status of the operation */ -} - -message wifi_event_roc_done { - uint32 context = 1; /**< Context to identify the request */ -} - -message wifi_event_ap_wps_rg_pin { - bytes pin_code = 1; /**< 8bytes PIN code of station in enrollee mode */ -} - -message wifi_event_ap_wps_rg_fail_reason { - int32 reason = 1; /**< WPS failure reason wps_fail_reason_t */ - bytes peer_macaddr = 2; /**< 6bytes Enrollee mac address */ -} - -message wifi_event_ap_wps_rg_success { - bytes peer_macaddr = 1; /**< 6bytes Enrollee mac address */ -} - -message wifi_protocols { - uint32 ghz_2g = 1; /**< Represents 2.4 GHz protocol, support 802.11b or 802.11g or 802.11n or 802.11ax or LR mode */ - uint32 ghz_5g = 2; /**< Represents 5 GHz protocol, support 802.11a or 802.11n or 802.11ac or 802.11ax */ -} - -message wifi_bandwidths { - uint32 ghz_2g = 1; /* Represents 2.4 GHz bandwidth */ - uint32 ghz_5g = 2; /* Represents 5 GHz bandwidth */ -} - -message wifi_itwt_setup_config { - uint32 setup_cmd = 1; - // uint16_t trigger : 1; /**< 1: a trigger-enabled individual TWT, 0: a non-trigger-enabled individual TWT */ - // uint16_t flow_type : 1; /**< 0: an announced individual TWT, 1: an unannounced individual TWT */ - // uint16_t flow_id : 3; /**< When set up an individual TWT agreement, the flow id will be assigned by AP after a successful agreement setup. - // flow_id could be specified to a value in the range of [0, 7], but it might be changed by AP in the response. - // When change TWT parameters of the existing TWT agreement, flow_id should be an existing one. The value range is [0, 7]. */ - // uint16_t wake_invl_expn : 5; /**< Individual TWT Wake Interval Exponent. The value range is [0, 31]. */ - // uint16_t wake_duration_unit : 1; /**< Individual TWT Wake duration unit, 0: 256us 1: TU (TU = 1024us)*/ - // uint16_t reserved : 5; /**< bit: 11.15 reserved */ - uint32 bitmask_1 = 2; - uint32 min_wake_dura = 3; - uint32 wake_invl_mant = 4; - uint32 twt_id = 5; - uint32 timeout_time_ms = 6; -} - -message wifi_twt_config { - bool post_wakeup_event = 1; /**< post twt wakeup event */ - bool twt_enable_keep_alive = 2; /**< twt enable send qos null to keep alive */ -} - -/* internal supporting structures for Rpc */ -//message ScanResult { -// bytes bssid = 1; -// bytes ssid = 2; -// uint32 chnl = 3; -// int32 rssi = 4; -// int32 sec_prot = 5; -//} - -message ConnectedSTAList { - bytes mac = 1; - int32 rssi = 2; -} - -message eap_fast_config { - int32 fast_provisioning = 1; // Enable or disable Fast Provisioning in EAP-FAST (0 = disabled, 1 = enabled) - int32 fast_max_pac_list_len = 2; // Maximum length of the PAC (Protected Access Credential) list - bool fast_pac_format_binary = 3; // Set to true for binary format PAC, false for ASCII format PAC -} - -/* Control path structures */ -/** Req/Resp structure **/ -message Rpc_Req_GetMacAddress { - int32 mode = 1; -} - -message Rpc_Resp_GetMacAddress { - bytes mac = 1; - int32 resp = 2; -} - -message Rpc_Req_GetMode { -} - -message Rpc_Resp_GetMode { - int32 mode = 1; - int32 resp = 2; -} - -message Rpc_Req_SetMode { - int32 mode = 1; -} - -message Rpc_Resp_SetMode { - int32 resp = 1; -} - -message Rpc_Req_GetPs { -} - -message Rpc_Resp_GetPs { - int32 resp = 1; - int32 type = 2; -} - -message Rpc_Req_SetPs { - int32 type = 1; -} - -message Rpc_Resp_SetPs { - int32 resp = 1; -} - -message Rpc_Req_SetMacAddress { - bytes mac = 1; - int32 mode = 2; -} - -message Rpc_Resp_SetMacAddress { - int32 resp = 1; -} - -message Rpc_Req_OTABegin { -} - -message Rpc_Resp_OTABegin { - int32 resp = 1; -} - -message Rpc_Req_OTAWrite { - bytes ota_data = 1; -} - -message Rpc_Resp_OTAWrite { - int32 resp = 1; -} - -message Rpc_Req_OTAEnd { -} - -message Rpc_Resp_OTAEnd { - int32 resp = 1; -} - -message Rpc_Req_OTAActivate { -} - -message Rpc_Resp_OTAActivate { - int32 resp = 1; -} - -message Rpc_Req_WifiSetMaxTxPower { - int32 power = 1; -} - -message Rpc_Resp_WifiSetMaxTxPower { - int32 resp = 1; -} - -message Rpc_Req_WifiGetMaxTxPower { -} - -message Rpc_Resp_WifiGetMaxTxPower { - int32 power = 1; - int32 resp = 2; -} - -message Rpc_Req_ConfigHeartbeat { - bool enable = 1; - int32 duration = 2; -} - -message Rpc_Resp_ConfigHeartbeat { - int32 resp = 1; -} - -message Rpc_Req_WifiInit { - wifi_init_config cfg = 1; -} - -message Rpc_Resp_WifiInit { - int32 resp = 1; -} - -message Rpc_Req_WifiDeinit { -} - -message Rpc_Resp_WifiDeinit { - int32 resp = 1; -} - -message Rpc_Req_WifiSetConfig { - int32 iface = 1; - wifi_config cfg = 2; -} - -message Rpc_Resp_WifiSetConfig { - int32 resp = 1; -} - -message Rpc_Req_WifiGetConfig { - int32 iface = 1; -} - -message Rpc_Resp_WifiGetConfig { - int32 resp = 1; - int32 iface = 2; - wifi_config cfg = 3; -} - -message Rpc_Req_WifiConnect { -} - -message Rpc_Resp_WifiConnect { - int32 resp = 1; -} - -message Rpc_Req_WifiDisconnect { -} - -message Rpc_Resp_WifiDisconnect { - int32 resp = 1; -} - -message Rpc_Req_WifiStart { -} - -message Rpc_Resp_WifiStart { - int32 resp = 1; -} - -message Rpc_Req_WifiStop { -} - -message Rpc_Resp_WifiStop { - int32 resp = 1; -} - -message Rpc_Req_WifiScanStart { - wifi_scan_config config = 1; - bool block = 2; - int32 config_set = 3; -} - -message Rpc_Resp_WifiScanStart { - int32 resp = 1; -} - -message Rpc_Req_WifiScanStop { -} - -message Rpc_Resp_WifiScanStop { - int32 resp = 1; -} - -message Rpc_Req_WifiScanGetApNum { -} - -message Rpc_Resp_WifiScanGetApNum { - int32 resp = 1; - int32 number = 2; -} - -message Rpc_Req_WifiScanGetApRecords { - int32 number = 1; -} - -message Rpc_Resp_WifiScanGetApRecords { - int32 resp = 1; - int32 number = 2; - repeated wifi_ap_record ap_records = 3; -} - -message Rpc_Req_WifiScanGetApRecord { -} - -message Rpc_Resp_WifiScanGetApRecord { - int32 resp = 1; - wifi_ap_record ap_record = 2; -} - -message Rpc_Req_WifiClearApList { -} - -message Rpc_Resp_WifiClearApList { - int32 resp = 1; -} - -message Rpc_Req_WifiRestore { -} - -message Rpc_Resp_WifiRestore { - int32 resp = 1; -} - -message Rpc_Req_WifiClearFastConnect{ -} - -message Rpc_Resp_WifiClearFastConnect { - int32 resp = 1; -} - -message Rpc_Req_WifiDeauthSta { - int32 aid = 1; -} - -message Rpc_Resp_WifiDeauthSta { - int32 resp = 1; - int32 aid = 2; -} - -message Rpc_Req_WifiStaGetApInfo { -} - -message Rpc_Resp_WifiStaGetApInfo { - int32 resp = 1; - wifi_ap_record ap_record = 2; -} - -message Rpc_Req_WifiSetProtocol { - int32 ifx = 1; - int32 protocol_bitmap = 2; -} - -message Rpc_Resp_WifiSetProtocol { - int32 resp = 1; -} - -message Rpc_Req_WifiGetProtocol { - int32 ifx = 1; -} - -message Rpc_Resp_WifiGetProtocol { - int32 resp = 1; - int32 protocol_bitmap = 2; -} - -message Rpc_Req_WifiSetBandwidth { - int32 ifx = 1; - int32 bw = 2; -} - -message Rpc_Resp_WifiSetBandwidth { - int32 resp = 1; -} - -message Rpc_Req_WifiGetBandwidth { - int32 ifx = 1; -} - -message Rpc_Resp_WifiGetBandwidth { - int32 resp = 1; - int32 bw = 2; -} - -message Rpc_Req_WifiSetChannel { - int32 primary = 1; - int32 second = 2; -} - -message Rpc_Resp_WifiSetChannel { - int32 resp = 1; -} - -message Rpc_Req_WifiGetChannel { -} - -message Rpc_Resp_WifiGetChannel { - int32 resp = 1; - int32 primary = 2; - int32 second = 3; -} - -message Rpc_Req_WifiSetStorage { - int32 storage = 1; -} - -message Rpc_Resp_WifiSetStorage { - int32 resp = 1; -} - -message Rpc_Req_WifiSetCountryCode { - bytes country = 1; - bool ieee80211d_enabled = 2; -} - -message Rpc_Resp_WifiSetCountryCode { - int32 resp = 1; -} - -message Rpc_Req_WifiGetCountryCode { -} - -message Rpc_Resp_WifiGetCountryCode { - int32 resp = 1; - bytes country = 2; -} - -message Rpc_Req_WifiSetCountry { - wifi_country country = 1; -} - -message Rpc_Resp_WifiSetCountry { - int32 resp = 1; -} - -message Rpc_Req_WifiGetCountry { -} - -message Rpc_Resp_WifiGetCountry { - int32 resp = 1; - wifi_country country = 2; -} - -message Rpc_Req_WifiApGetStaList { -} - -message Rpc_Resp_WifiApGetStaList { - int32 resp = 1; - wifi_sta_list sta_list = 2; -} - -message Rpc_Req_WifiApGetStaAid { - bytes mac = 1; -} - -message Rpc_Req_WifiStaGetNegotiatedPhymode { -} - -message Rpc_Resp_WifiStaGetNegotiatedPhymode { - int32 resp = 1; - uint32 phymode = 2; -} - -message Rpc_Resp_WifiApGetStaAid { - int32 resp = 1; - uint32 aid = 2; -} - -message Rpc_Req_WifiStaGetRssi { -} - -message Rpc_Resp_WifiStaGetRssi { - int32 resp = 1; - int32 rssi = 2; -} - -message Rpc_Req_WifiStaGetAid { -} - -message Rpc_Resp_WifiStaGetAid { - int32 resp = 1; - uint32 aid = 2; -} - -message Rpc_Req_WifiSetProtocols { - int32 ifx = 1; - wifi_protocols protocols = 2; -} - -message Rpc_Resp_WifiSetProtocols { - int32 resp = 1; - uint32 ifx = 2; -} - -message Rpc_Req_WifiGetProtocols { - int32 ifx = 1; -} - -message Rpc_Resp_WifiGetProtocols { - int32 resp = 1; - int32 ifx = 2; - wifi_protocols protocols = 3; -} - -message Rpc_Req_WifiSetBandwidths { - int32 ifx = 1; - wifi_bandwidths bandwidths = 2; -} - -message Rpc_Resp_WifiSetBandwidths { - int32 resp = 1; - int32 ifx = 2; -} - -message Rpc_Req_WifiGetBandwidths { - int32 ifx = 1; -} - -message Rpc_Resp_WifiGetBandwidths { - int32 resp = 1; - int32 ifx = 2; - wifi_bandwidths bandwidths = 3; -} - -message Rpc_Req_WifiSetBand { - uint32 band = 1; -} - -message Rpc_Resp_WifiSetBand { - int32 resp = 1; -} - -message Rpc_Req_WifiGetBand { -} - -message Rpc_Resp_WifiGetBand { - int32 resp = 1; - uint32 band = 2; -} - -message Rpc_Req_WifiSetBandMode { - uint32 bandmode = 1; -} - -message Rpc_Resp_WifiSetBandMode { - int32 resp = 1; -} - -message Rpc_Req_WifiGetBandMode { -} - -message Rpc_Resp_WifiGetBandMode { - int32 resp = 1; - uint32 bandmode = 2; -} - -message Rpc_Req_WifiSetInactiveTime { - uint32 ifx = 1; - uint32 sec = 2; -} - -message Rpc_Resp_WifiSetInactiveTime { - int32 resp = 1; -} - -message Rpc_Req_WifiGetInactiveTime { - uint32 ifx = 1; -} - -message Rpc_Resp_WifiGetInactiveTime { - int32 resp = 1; - uint32 sec = 2; -} - -message Rpc_Req_WifiStaItwtSetup { - wifi_itwt_setup_config setup_config = 1; -} - -message Rpc_Resp_WifiStaItwtSetup { - int32 resp = 1; -} - -message Rpc_Req_WifiStaItwtTeardown { - int32 flow_id = 1; -} - -message Rpc_Resp_WifiStaItwtTeardown { - int32 resp = 1; -} - -message Rpc_Req_WifiStaItwtSuspend { - int32 flow_id = 1; - int32 suspend_time_ms = 2; -} - -message Rpc_Resp_WifiStaItwtSuspend { - int32 resp = 1; -} - -message Rpc_Req_WifiStaItwtGetFlowIdStatus { -} - -message Rpc_Resp_WifiStaItwtGetFlowIdStatus { - int32 resp = 1; - int32 flow_id_bitmap = 2; -} - -message Rpc_Req_WifiStaItwtSendProbeReq { - int32 timeout_ms = 1; -} - -message Rpc_Resp_WifiStaItwtSendProbeReq { - int32 resp = 1; -} - -message Rpc_Req_WifiStaItwtSetTargetWakeTimeOffset { - int32 offset_us = 1; -} - -message Rpc_Resp_WifiStaItwtSetTargetWakeTimeOffset { - int32 resp = 1; -} - -message Rpc_Req_WifiStaTwtConfig { - wifi_twt_config config = 1; -} - -message Rpc_Resp_WifiStaTwtConfig { - int32 resp = 1; -} - -message Rpc_Req_GetCoprocessorFwVersion { -} - -message Rpc_Resp_GetCoprocessorFwVersion { - int32 resp = 1; - uint32 major1 = 2; - uint32 minor1 = 3; - uint32 patch1 = 4; -} - -message Rpc_Req_SetDhcpDnsStatus { - int32 iface = 1; - int32 net_link_up = 2; - - int32 dhcp_up = 3; - bytes dhcp_ip = 4; - bytes dhcp_nm = 5; - bytes dhcp_gw = 6; - - int32 dns_up = 7; - bytes dns_ip = 8; - int32 dns_type = 9; -} - -message Rpc_Resp_SetDhcpDnsStatus { - int32 resp = 1; -} - -message Rpc_Req_GetDhcpDnsStatus { - int32 iface = 1; -} - -message Rpc_Resp_GetDhcpDnsStatus { - int32 iface = 1; - int32 net_link_up = 2; - - int32 dhcp_up = 3; - bytes dhcp_ip = 4; - bytes dhcp_nm = 5; - bytes dhcp_gw = 6; - - int32 dns_up = 7; - bytes dns_ip = 8; - int32 dns_type = 9; - int32 resp = 10; -} - -message Rpc_Req_SuppDppInit { - bool cb = 1; // enables sending of Event_SuppDpp to host via callback -} - -message Rpc_Resp_SuppDppInit { - int32 resp = 1; -} - -message Rpc_Req_SuppDppDeinit { -} - -message Rpc_Resp_SuppDppDeinit { - int32 resp = 1; -} - -message Rpc_Req_SuppDppBootstrapGen { - bytes chan_list = 1; // DPP Bootstrapping listen channels separated by commas - int32 type = 2; // Bootstrap method type, only QR Code method is supported for now. - bytes key = 3; // (Optional) 32 byte Raw Private Key for generating a Bootstrapping Public Key - bytes info = 4; // (Optional) Ancillary Device Information like Serial Number -} - -message Rpc_Resp_SuppDppBootstrapGen { - int32 resp = 1; -} - -message Rpc_Req_SuppDppStartListen { -} - -message Rpc_Resp_SuppDppStartListen { - int32 resp = 1; -} - -message Rpc_Req_SuppDppStopListen { -} - -message Rpc_Resp_SuppDppStopListen { - int32 resp = 1; -} - -message Rpc_Req_IfaceMacAddrSetGet { - bool set = 1; - uint32 type = 2; - bytes mac = 3; // only valid for set -}; - -message Rpc_Resp_IfaceMacAddrSetGet { - int32 resp = 1; - bool set = 2; - uint32 type = 3; - bytes mac = 4; -}; - -message Rpc_Req_IfaceMacAddrLenGet { - uint32 type = 1; -}; - -message Rpc_Resp_IfaceMacAddrLenGet { - int32 resp = 1; - uint32 type = 2; - uint32 len = 3; -}; - -message Rpc_Req_FeatureControl { - RpcFeature feature = 1; - RpcFeatureCommand command = 2; - RpcFeatureOption option = 3; -}; - -message Rpc_Resp_FeatureControl { - int32 resp = 1; - RpcFeature feature = 2; - RpcFeatureCommand command = 3; - RpcFeatureOption option = 4; -}; - -/** Event structure **/ - -message Rpc_Event_WifiEventNoArgs { - int32 resp = 1; - int32 event_id = 2; -} - -message Rpc_Event_ESPInit { - bytes init_data = 1; -} - -message Rpc_Event_Heartbeat { - int32 hb_num = 1; -} - -message Rpc_Event_AP_StaDisconnected { - int32 resp = 1; - bytes mac = 2; - uint32 aid = 3; - bool is_mesh_child = 4; - uint32 reason = 5; -} - -message Rpc_Event_AP_StaConnected { - int32 resp = 1; - bytes mac = 2; - uint32 aid = 3; - bool is_mesh_child = 4; -} - -message Rpc_Event_StaScanDone { - int32 resp = 1; - wifi_event_sta_scan_done scan_done = 2; -} - -message Rpc_Event_StaConnected { - int32 resp = 1; - wifi_event_sta_connected sta_connected = 2; -} - -message Rpc_Event_StaDisconnected { - int32 resp = 1; - wifi_event_sta_disconnected sta_disconnected = 2; -} - -message Rpc_Event_DhcpDnsStatus { - int32 iface = 1; - int32 net_link_up = 2; - - int32 dhcp_up = 3; - bytes dhcp_ip = 4; - bytes dhcp_nm = 5; - bytes dhcp_gw = 6; - - int32 dns_up = 7; - bytes dns_ip = 8; - int32 dns_type = 9; - int32 resp = 10; -} - -message Rpc_Event_StaItwtSetup { - int32 resp = 1; - wifi_itwt_setup_config config = 2; - int32 status = 3; - uint32 reason = 4; - uint64 target_wake_time = 5; -} - -message Rpc_Event_StaItwtTeardown { - int32 resp = 1; - uint32 flow_id = 2; - uint32 status = 3; -} - -message Rpc_Event_StaItwtSuspend { - int32 resp = 1; - int32 status = 2; - uint32 flow_id_bitmap = 3; - repeated uint32 actual_suspend_time_ms = 4; // represents uint32_t actual_suspend_time_ms[] -} - -message Rpc_Event_StaItwtProbe { - int32 resp = 1; - int32 status = 2; - uint32 reason = 3; -} - -message Rpc_Req_WifiStaEnterpriseEnable { -} - -message Rpc_Resp_WifiStaEnterpriseEnable { - int32 resp = 1; -} - -message Rpc_Req_WifiStaEnterpriseDisable { -} - -message Rpc_Resp_WifiStaEnterpriseDisable { - int32 resp = 1; -} - -message Rpc_Req_EapSetIdentity { - bytes identity = 1; - int32 len = 2; -} - -message Rpc_Resp_EapSetIdentity { - int32 resp = 1; -} - -message Rpc_Req_EapClearIdentity { -} - -message Rpc_Resp_EapClearIdentity { - int32 resp = 1; -} - -message Rpc_Req_EapSetUsername { - bytes username = 1; - int32 len = 2; -} - -message Rpc_Resp_EapSetUsername { - int32 resp = 1; -} - -message Rpc_Req_EapClearUsername { -} - -message Rpc_Resp_EapClearUsername { - int32 resp = 1; -} - -message Rpc_Req_EapSetPassword { - bytes password = 1; - int32 len = 2; -} - -message Rpc_Resp_EapSetPassword { - int32 resp = 1; -} - -message Rpc_Req_EapClearPassword { -} - -message Rpc_Resp_EapClearPassword { - int32 resp = 1; -} - -message Rpc_Req_EapSetNewPassword { - bytes new_password = 1; - int32 len = 2; -} - -message Rpc_Resp_EapSetNewPassword { - int32 resp = 1; -} - -message Rpc_Req_EapClearNewPassword { -} - -message Rpc_Resp_EapClearNewPassword { - int32 resp = 1; -} - -message Rpc_Req_EapSetCaCert { - bytes ca_cert = 1; - int32 ca_cert_len = 2; -} - -message Rpc_Resp_EapSetCaCert { - int32 resp = 1; -} - -message Rpc_Req_EapClearCaCert { -} - -message Rpc_Resp_EapClearCaCert { - int32 resp = 1; -} - -message Rpc_Req_EapSetCertificateAndKey { - bytes client_cert = 1; - int32 client_cert_len = 2; - bytes private_key = 3; - int32 private_key_len = 4; - bytes private_key_password = 5; - int32 private_key_passwd_len = 6; -} - -message Rpc_Resp_EapSetCertificateAndKey { - int32 resp = 1; -} - -message Rpc_Req_EapClearCertificateAndKey { -} - -message Rpc_Resp_EapClearCertificateAndKey { - int32 resp = 1; -} - -message Rpc_Req_EapSetDisableTimeCheck { - bool disable = 1; -} - -message Rpc_Resp_EapSetDisableTimeCheck { - int32 resp = 1; -} - -message Rpc_Req_EapGetDisableTimeCheck { -} - -message Rpc_Resp_EapGetDisableTimeCheck { - int32 resp = 1; - bool disable = 2; -} - -message Rpc_Req_EapSetTtlsPhase2Method { - int32 type = 1; -} - -message Rpc_Resp_EapSetTtlsPhase2Method { - int32 resp = 1; -} - -message Rpc_Req_EapSetSuiteb192bitCertification { - bool enable = 1; -} - -message Rpc_Resp_EapSetSuiteb192bitCertification { - int32 resp = 1; -} - -message Rpc_Req_EapSetPacFile { - bytes pac_file = 1; - int32 pac_file_len = 2; -} - -message Rpc_Resp_EapSetPacFile { - int32 resp = 1; -} - -message Rpc_Req_EapSetFastParams { - eap_fast_config eap_fast_config = 1; -} - -message Rpc_Resp_EapSetFastParams { - int32 resp = 1; -} - -message Rpc_Req_EapUseDefaultCertBundle { - bool use_default_bundle = 1; -} - -message Rpc_Resp_EapUseDefaultCertBundle { - int32 resp = 1; -} - -message Rpc_Req_WifiSetOkcSupport { - bool enable = 1; -} - -message Rpc_Resp_WifiSetOkcSupport { - int32 resp = 1; -} - -message Rpc_Req_EapSetDomainName { - bytes domain_name = 1; -} - -message Rpc_Resp_EapSetDomainName { - int32 resp = 1; -} - -message Rpc_Req_EapSetEapMethods { - int32 methods = 1; -} - -message Rpc_Resp_EapSetEapMethods { - int32 resp = 1; -} - -message Rpc_Event_SuppDppUriReady { - int32 resp = 1; - bytes qrcode = 2; // QR Code to configure the enrollee -} - -message Rpc_Event_SuppDppCfgRecvd { - int32 resp = 1; - wifi_config cfg = 2; -} - -message Rpc_Event_SuppDppFail { - int32 resp = 1; - int32 reason = 2; // failure reason -} - -message Rpc_Event_WifiDppUriReady { - int32 resp = 1; - bytes qrcode = 2; // QR Code to configure the enrollee -} - -message Rpc_Event_WifiDppCfgRecvd { - int32 resp = 1; - wifi_config cfg = 2; -} - -message Rpc_Event_WifiDppFail { - int32 resp = 1; - int32 reason = 2; // failure reason -} - -enum Rpc_GpioMode { - GPIO_MODE_DISABLE = 0; - GPIO_MODE_INPUT = 1; - GPIO_MODE_OUTPUT = 2; - GPIO_MODE_INPUT_OUTPUT = 3; -} - -enum Rpc_GpioPullMode { - GPIO_PULL_NONE = 0; - GPIO_PULL_UP = 1; - GPIO_PULL_DOWN = 2; -} - -message Rpc_GpioConfig { - uint64 pin_bit_mask = 1; - Rpc_GpioMode mode = 2; - bool pull_up_en = 3; - bool pull_down_en = 4; - int32 intr_type = 5; -} - -message Rpc_Req_GpioConfig { - Rpc_GpioConfig config = 1; -} -message Rpc_Resp_GpioConfig { - int32 resp = 1; -} - -message Rpc_Req_GpioReset { - int32 gpio_num = 1; -} -message Rpc_Resp_GpioResetPin { - int32 resp = 1; -} - -message Rpc_Req_GpioSetLevel { - int32 gpio_num = 1; - uint32 level = 2; // 0 or 1 -} -message Rpc_Resp_GpioSetLevel { - int32 resp = 1; -} - -message Rpc_Req_GpioGetLevel { - int32 gpio_num = 1; -} -message Rpc_Resp_GpioGetLevel { - int32 resp = 1; - uint32 level = 2; -} - -message Rpc_Req_GpioSetDirection { - int32 gpio_num = 1; - Rpc_GpioMode mode = 2; -} -message Rpc_Resp_GpioSetDirection { - int32 resp = 1; -} - -message Rpc_Req_GpioInputEnable { - int32 gpio_num = 1; -} -message Rpc_Resp_GpioInputEnable { - int32 resp = 1; -} - -message Rpc_Req_GpioSetPullMode { - int32 gpio_num = 1; - Rpc_GpioPullMode pull = 2; -} -message Rpc_Resp_GpioSetPullMode { - int32 resp = 1; -} - -message Rpc { - /* msg_type could be req, resp or Event */ - RpcType msg_type = 1; - - /* msg id */ - RpcId msg_id = 2; - - /* UID of message */ - uint32 uid = 3; - - /* union of all msg ids */ - oneof payload { - /** Requests **/ - Rpc_Req_GetMacAddress req_get_mac_address = 257; - Rpc_Req_SetMacAddress req_set_mac_address = 258; - Rpc_Req_GetMode req_get_wifi_mode = 259; - Rpc_Req_SetMode req_set_wifi_mode = 260; - - Rpc_Req_SuppDppInit req_supp_dpp_init = 261; - Rpc_Req_SuppDppDeinit req_supp_dpp_deinit = 262; - Rpc_Req_SuppDppBootstrapGen req_supp_dpp_bootstrap_gen = 263; - Rpc_Req_SuppDppStartListen req_supp_dpp_start_listen = 264; - Rpc_Req_SuppDppStopListen req_supp_dpp_stop_listen = 265; - - //Rpc_Req_StartSoftAP req_start_softap = 267; - //Rpc_Req_SoftAPConnectedSTA req_softap_connected_stas_list = 268; - //Rpc_Req_GetStatus req_stop_softap = 269; - Rpc_Req_OTAActivate req_ota_activate = 266; - - Rpc_Req_SetPs req_wifi_set_ps = 270; - Rpc_Req_GetPs req_wifi_get_ps = 271; - - Rpc_Req_OTABegin req_ota_begin = 272; - Rpc_Req_OTAWrite req_ota_write = 273; - Rpc_Req_OTAEnd req_ota_end = 274; - - Rpc_Req_WifiSetMaxTxPower req_set_wifi_max_tx_power = 275; - Rpc_Req_WifiGetMaxTxPower req_get_wifi_max_tx_power = 276; - Rpc_Req_ConfigHeartbeat req_config_heartbeat = 277; - - Rpc_Req_WifiInit req_wifi_init = 278; - Rpc_Req_WifiDeinit req_wifi_deinit = 279; - Rpc_Req_WifiStart req_wifi_start = 280; - Rpc_Req_WifiStop req_wifi_stop = 281; - Rpc_Req_WifiConnect req_wifi_connect = 282; - Rpc_Req_WifiDisconnect req_wifi_disconnect = 283; - Rpc_Req_WifiSetConfig req_wifi_set_config = 284; - Rpc_Req_WifiGetConfig req_wifi_get_config = 285; - - Rpc_Req_WifiScanStart req_wifi_scan_start = 286; - Rpc_Req_WifiScanStop req_wifi_scan_stop = 287; - Rpc_Req_WifiScanGetApNum req_wifi_scan_get_ap_num = 288; - Rpc_Req_WifiScanGetApRecords req_wifi_scan_get_ap_records = 289; - Rpc_Req_WifiClearApList req_wifi_clear_ap_list = 290; - - Rpc_Req_WifiRestore req_wifi_restore = 291; - Rpc_Req_WifiClearFastConnect req_wifi_clear_fast_connect = 292; - Rpc_Req_WifiDeauthSta req_wifi_deauth_sta = 293; - Rpc_Req_WifiStaGetApInfo req_wifi_sta_get_ap_info = 294; - - Rpc_Req_WifiSetProtocol req_wifi_set_protocol = 297; - Rpc_Req_WifiGetProtocol req_wifi_get_protocol = 298; - Rpc_Req_WifiSetBandwidth req_wifi_set_bandwidth = 299; - Rpc_Req_WifiGetBandwidth req_wifi_get_bandwidth = 300; - Rpc_Req_WifiSetChannel req_wifi_set_channel = 301; - Rpc_Req_WifiGetChannel req_wifi_get_channel = 302; - Rpc_Req_WifiSetCountry req_wifi_set_country = 303; - Rpc_Req_WifiGetCountry req_wifi_get_country = 304; - - Rpc_Req_WifiApGetStaList req_wifi_ap_get_sta_list = 311; - Rpc_Req_WifiApGetStaAid req_wifi_ap_get_sta_aid = 312; - Rpc_Req_WifiSetStorage req_wifi_set_storage = 313; - - Rpc_Req_WifiSetInactiveTime req_wifi_set_inactive_time = 325; - Rpc_Req_WifiGetInactiveTime req_wifi_get_inactive_time = 326; - - Rpc_Req_WifiSetCountryCode req_wifi_set_country_code = 334; - Rpc_Req_WifiGetCountryCode req_wifi_get_country_code = 335; - Rpc_Req_WifiStaGetAid req_wifi_sta_get_aid = 338; - Rpc_Req_WifiStaGetNegotiatedPhymode req_wifi_sta_get_negotiated_phymode = 339; - - Rpc_Req_WifiStaGetRssi req_wifi_sta_get_rssi = 341; - - Rpc_Req_WifiSetProtocols req_wifi_set_protocols = 342; - Rpc_Req_WifiGetProtocols req_wifi_get_protocols = 343; - Rpc_Req_WifiSetBandwidths req_wifi_set_bandwidths = 344; - Rpc_Req_WifiGetBandwidths req_wifi_get_bandwidths = 345; - - Rpc_Req_WifiSetBand req_wifi_set_band = 346; - Rpc_Req_WifiGetBand req_wifi_get_band = 347; - Rpc_Req_WifiSetBandMode req_wifi_set_bandmode = 348; - Rpc_Req_WifiGetBandMode req_wifi_get_bandmode = 349; - - Rpc_Req_GetCoprocessorFwVersion req_get_coprocessor_fwversion = 350; - - Rpc_Req_WifiScanGetApRecord req_wifi_scan_get_ap_record = 351; - - Rpc_Req_SetDhcpDnsStatus req_set_dhcp_dns = 352; - Rpc_Req_GetDhcpDnsStatus req_get_dhcp_dns = 353; - - Rpc_Req_WifiStaTwtConfig req_wifi_sta_twt_config = 354; - Rpc_Req_WifiStaItwtSetup req_wifi_sta_itwt_setup = 355; - Rpc_Req_WifiStaItwtTeardown req_wifi_sta_itwt_teardown = 356; - Rpc_Req_WifiStaItwtSuspend req_wifi_sta_itwt_suspend = 357; - Rpc_Req_WifiStaItwtGetFlowIdStatus req_wifi_sta_itwt_get_flow_id_status = 358; - Rpc_Req_WifiStaItwtSendProbeReq req_wifi_sta_itwt_send_probe_req = 359; - Rpc_Req_WifiStaItwtSetTargetWakeTimeOffset req_wifi_sta_itwt_set_target_wake_time_offset = 360; - - Rpc_Req_WifiStaEnterpriseEnable req_wifi_sta_enterprise_enable = 361; - Rpc_Req_WifiStaEnterpriseDisable req_wifi_sta_enterprise_disable = 362; - Rpc_Req_EapSetIdentity req_eap_set_identity = 363; - Rpc_Req_EapClearIdentity req_eap_clear_identity = 364; - Rpc_Req_EapSetUsername req_eap_set_username = 365; - Rpc_Req_EapClearUsername req_eap_clear_username = 366; - Rpc_Req_EapSetPassword req_eap_set_password = 367; - Rpc_Req_EapClearPassword req_eap_clear_password = 368; - Rpc_Req_EapSetNewPassword req_eap_set_new_password = 369; - Rpc_Req_EapClearNewPassword req_eap_clear_new_password = 370; - Rpc_Req_EapSetCaCert req_eap_set_ca_cert = 371; - Rpc_Req_EapClearCaCert req_eap_clear_ca_cert = 372; - Rpc_Req_EapSetCertificateAndKey req_eap_set_certificate_and_key = 373; - Rpc_Req_EapClearCertificateAndKey req_eap_clear_certificate_and_key = 374; - Rpc_Req_EapGetDisableTimeCheck req_eap_get_disable_time_check = 375; - Rpc_Req_EapSetTtlsPhase2Method req_eap_set_ttls_phase2_method = 376; - Rpc_Req_EapSetSuiteb192bitCertification req_eap_set_suiteb_certification = 377; - Rpc_Req_EapSetPacFile req_eap_set_pac_file = 378; - Rpc_Req_EapSetFastParams req_eap_set_fast_params = 379; - Rpc_Req_EapUseDefaultCertBundle req_eap_use_default_cert_bundle = 380; - Rpc_Req_WifiSetOkcSupport req_wifi_set_okc_support = 381; - Rpc_Req_EapSetDomainName req_eap_set_domain_name = 382; - Rpc_Req_EapSetDisableTimeCheck req_eap_set_disable_time_check = 383; - Rpc_Req_EapSetEapMethods req_eap_set_eap_methods = 384; - - Rpc_Req_IfaceMacAddrSetGet req_iface_mac_addr_set_get = 385; - Rpc_Req_IfaceMacAddrLenGet req_iface_mac_addr_len_get = 386; - - Rpc_Req_FeatureControl req_feature_control = 387; - - Rpc_Req_GpioConfig req_gpio_config = 388; - Rpc_Req_GpioReset req_gpio_reset = 389; - Rpc_Req_GpioSetLevel req_gpio_set_level = 390; - Rpc_Req_GpioGetLevel req_gpio_get_level = 391; - Rpc_Req_GpioSetDirection req_gpio_set_direction = 392; - Rpc_Req_GpioInputEnable req_gpio_input_enable = 393; - Rpc_Req_GpioSetPullMode req_gpio_set_pull_mode = 394; - - /** Responses **/ - Rpc_Resp_GetMacAddress resp_get_mac_address = 513; - Rpc_Resp_SetMacAddress resp_set_mac_address = 514; - Rpc_Resp_GetMode resp_get_wifi_mode = 515; - Rpc_Resp_SetMode resp_set_wifi_mode = 516; - - Rpc_Resp_SuppDppInit resp_supp_dpp_init = 517; - Rpc_Resp_SuppDppDeinit resp_supp_dpp_deinit = 518; - Rpc_Resp_SuppDppBootstrapGen resp_supp_dpp_bootstrap_gen = 519; - Rpc_Resp_SuppDppStartListen resp_supp_dpp_start_listen = 520; - Rpc_Resp_SuppDppStopListen resp_supp_dpp_stop_listen = 521; - - //Rpc_Resp_SetSoftAPVendorSpecificIE resp_set_softap_vendor_specific_ie = 522; - //Rpc_Resp_StartSoftAP resp_start_softap = 523; - //Rpc_Resp_SoftAPConnectedSTA resp_softap_connected_stas_list = 524; - //Rpc_Resp_GetStatus resp_stop_softap = 525; - Rpc_Resp_OTAActivate resp_ota_activate = 522; - - Rpc_Resp_SetPs resp_wifi_set_ps = 526; - Rpc_Resp_GetPs resp_wifi_get_ps = 527; - - Rpc_Resp_OTABegin resp_ota_begin = 528; - Rpc_Resp_OTAWrite resp_ota_write = 529; - Rpc_Resp_OTAEnd resp_ota_end = 530; - Rpc_Resp_WifiSetMaxTxPower resp_set_wifi_max_tx_power = 531; - Rpc_Resp_WifiGetMaxTxPower resp_get_wifi_max_tx_power = 532; - Rpc_Resp_ConfigHeartbeat resp_config_heartbeat = 533; - - Rpc_Resp_WifiInit resp_wifi_init = 534; - Rpc_Resp_WifiDeinit resp_wifi_deinit = 535; - Rpc_Resp_WifiStart resp_wifi_start = 536; - Rpc_Resp_WifiStop resp_wifi_stop = 537; - Rpc_Resp_WifiConnect resp_wifi_connect = 538; - Rpc_Resp_WifiDisconnect resp_wifi_disconnect = 539; - Rpc_Resp_WifiSetConfig resp_wifi_set_config = 540; - Rpc_Resp_WifiGetConfig resp_wifi_get_config = 541; - - Rpc_Resp_WifiScanStart resp_wifi_scan_start = 542; - Rpc_Resp_WifiScanStop resp_wifi_scan_stop = 543; - Rpc_Resp_WifiScanGetApNum resp_wifi_scan_get_ap_num = 544; - Rpc_Resp_WifiScanGetApRecords resp_wifi_scan_get_ap_records = 545; - Rpc_Resp_WifiClearApList resp_wifi_clear_ap_list = 546; - - Rpc_Resp_WifiRestore resp_wifi_restore = 547; - Rpc_Resp_WifiClearFastConnect resp_wifi_clear_fast_connect = 548; - Rpc_Resp_WifiDeauthSta resp_wifi_deauth_sta = 549; - Rpc_Resp_WifiStaGetApInfo resp_wifi_sta_get_ap_info = 550; - - Rpc_Resp_WifiSetProtocol resp_wifi_set_protocol = 553; - Rpc_Resp_WifiGetProtocol resp_wifi_get_protocol = 554; - Rpc_Resp_WifiSetBandwidth resp_wifi_set_bandwidth = 555; - Rpc_Resp_WifiGetBandwidth resp_wifi_get_bandwidth = 556; - Rpc_Resp_WifiSetChannel resp_wifi_set_channel = 557; - Rpc_Resp_WifiGetChannel resp_wifi_get_channel = 558; - Rpc_Resp_WifiSetCountry resp_wifi_set_country = 559; - Rpc_Resp_WifiGetCountry resp_wifi_get_country = 560; - - Rpc_Resp_WifiApGetStaList resp_wifi_ap_get_sta_list = 567; - Rpc_Resp_WifiApGetStaAid resp_wifi_ap_get_sta_aid = 568; - Rpc_Resp_WifiSetStorage resp_wifi_set_storage = 569; - - Rpc_Resp_WifiSetInactiveTime resp_wifi_set_inactive_time = 581; - Rpc_Resp_WifiGetInactiveTime resp_wifi_get_inactive_time = 582; - - Rpc_Resp_WifiSetCountryCode resp_wifi_set_country_code = 590; - Rpc_Resp_WifiGetCountryCode resp_wifi_get_country_code = 591; - Rpc_Resp_WifiStaGetAid resp_wifi_sta_get_aid = 594; - Rpc_Resp_WifiStaGetNegotiatedPhymode resp_wifi_sta_get_negotiated_phymode = 595; - - Rpc_Resp_WifiStaGetRssi resp_wifi_sta_get_rssi = 597; - - Rpc_Resp_WifiSetProtocols resp_wifi_set_protocols = 598; - Rpc_Resp_WifiGetProtocols resp_wifi_get_protocols = 599; - Rpc_Resp_WifiSetBandwidths resp_wifi_set_bandwidths = 600; - Rpc_Resp_WifiGetBandwidths resp_wifi_get_bandwidths = 601; - - Rpc_Resp_WifiSetBand resp_wifi_set_band = 602; - Rpc_Resp_WifiGetBand resp_wifi_get_band = 603; - Rpc_Resp_WifiSetBandMode resp_wifi_set_bandmode = 604; - Rpc_Resp_WifiGetBandMode resp_wifi_get_bandmode = 605; - - Rpc_Resp_GetCoprocessorFwVersion resp_get_coprocessor_fwversion = 606; - - Rpc_Resp_WifiScanGetApRecord resp_wifi_scan_get_ap_record = 607; - - Rpc_Resp_SetDhcpDnsStatus resp_set_dhcp_dns = 608; - Rpc_Resp_GetDhcpDnsStatus resp_get_dhcp_dns = 609; - - Rpc_Resp_WifiStaTwtConfig resp_wifi_sta_twt_config = 610; - Rpc_Resp_WifiStaItwtSetup resp_wifi_sta_itwt_setup = 611; - Rpc_Resp_WifiStaItwtTeardown resp_wifi_sta_itwt_teardown = 612; - Rpc_Resp_WifiStaItwtSuspend resp_wifi_sta_itwt_suspend = 613; - Rpc_Resp_WifiStaItwtGetFlowIdStatus resp_wifi_sta_itwt_get_flow_id_status = 614; - Rpc_Resp_WifiStaItwtSendProbeReq resp_wifi_sta_itwt_send_probe_req = 615; - Rpc_Resp_WifiStaItwtSetTargetWakeTimeOffset resp_wifi_sta_itwt_set_target_wake_time_offset = 616; - - Rpc_Resp_WifiStaEnterpriseEnable resp_wifi_sta_enterprise_enable = 617; - Rpc_Resp_WifiStaEnterpriseDisable resp_wifi_sta_enterprise_disable = 618; - Rpc_Resp_EapSetIdentity resp_eap_set_identity = 619; - Rpc_Resp_EapClearIdentity resp_eap_clear_identity = 620; - Rpc_Resp_EapSetUsername resp_eap_set_username = 621; - Rpc_Resp_EapClearUsername resp_eap_clear_username = 622; - Rpc_Resp_EapSetPassword resp_eap_set_password = 623; - Rpc_Resp_EapClearPassword resp_eap_clear_password = 624; - Rpc_Resp_EapSetNewPassword resp_eap_set_new_password = 625; - Rpc_Resp_EapClearNewPassword resp_eap_clear_new_password = 626; - Rpc_Resp_EapSetCaCert resp_eap_set_ca_cert = 627; - Rpc_Resp_EapClearCaCert resp_eap_clear_ca_cert = 628; - Rpc_Resp_EapSetCertificateAndKey resp_eap_set_certificate_and_key = 629; - Rpc_Resp_EapClearCertificateAndKey resp_eap_clear_certificate_and_key = 630; - Rpc_Resp_EapGetDisableTimeCheck resp_eap_get_disable_time_check = 631; - Rpc_Resp_EapSetTtlsPhase2Method resp_eap_set_ttls_phase2_method = 632; - Rpc_Resp_EapSetSuiteb192bitCertification resp_eap_set_suiteb_certification = 633; - Rpc_Resp_EapSetPacFile resp_eap_set_pac_file = 634; - Rpc_Resp_EapSetFastParams resp_eap_set_fast_params = 635; - Rpc_Resp_EapUseDefaultCertBundle resp_eap_use_default_cert_bundle = 636; - Rpc_Resp_WifiSetOkcSupport resp_wifi_set_okc_support = 637; - Rpc_Resp_EapSetDomainName resp_eap_set_domain_name = 638; - Rpc_Resp_EapSetDisableTimeCheck resp_eap_set_disable_time_check = 639; - Rpc_Resp_EapSetEapMethods resp_eap_set_eap_methods = 640; - - Rpc_Resp_IfaceMacAddrSetGet resp_iface_mac_addr_set_get = 641; - Rpc_Resp_IfaceMacAddrLenGet resp_iface_mac_addr_len_get = 642; - - Rpc_Resp_FeatureControl resp_feature_control = 643; - - Rpc_Resp_GpioConfig resp_gpio_config = 644; - Rpc_Resp_GpioResetPin resp_gpio_reset = 645; - Rpc_Resp_GpioSetLevel resp_gpio_set_level = 646; - Rpc_Resp_GpioGetLevel resp_gpio_get_level = 647; - Rpc_Resp_GpioSetDirection resp_gpio_set_direction = 648; - Rpc_Resp_GpioInputEnable resp_gpio_input_enable = 649; - Rpc_Resp_GpioSetPullMode resp_gpio_set_pull_mode = 650; - - /** Notifications **/ - Rpc_Event_ESPInit event_esp_init = 769; - Rpc_Event_Heartbeat event_heartbeat = 770; - Rpc_Event_AP_StaConnected event_ap_sta_connected = 771; - Rpc_Event_AP_StaDisconnected event_ap_sta_disconnected = 772; - Rpc_Event_WifiEventNoArgs event_wifi_event_no_args = 773; - Rpc_Event_StaScanDone event_sta_scan_done = 774; - Rpc_Event_StaConnected event_sta_connected = 775; - Rpc_Event_StaDisconnected event_sta_disconnected = 776; - Rpc_Event_DhcpDnsStatus event_dhcp_dns = 777; - Rpc_Event_StaItwtSetup event_sta_itwt_setup = 778; - Rpc_Event_StaItwtTeardown event_sta_itwt_teardown = 779; - Rpc_Event_StaItwtSuspend event_sta_itwt_suspend = 780; - Rpc_Event_StaItwtProbe event_sta_itwt_probe = 781; - Rpc_Event_SuppDppUriReady event_supp_dpp_uri_ready = 782; - Rpc_Event_SuppDppCfgRecvd event_supp_dpp_cfg_recvd = 783; - Rpc_Event_SuppDppFail event_supp_dpp_fail = 784; - Rpc_Event_WifiDppUriReady event_wifi_dpp_uri_ready = 785; - Rpc_Event_WifiDppCfgRecvd event_wifi_dpp_cfg_recvd = 786; - Rpc_Event_WifiDppFail event_wifi_dpp_fail = 787; - } -} +/* SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD */ +/* SPDX-License-Identifier: Apache-2.0 */ + +syntax = "proto3"; + +enum Rpc_WifiBw { + BW_Invalid = 0; + HT20 = 1; + HT40 = 2; +} + +enum Rpc_WifiPowerSave { + PS_Invalid = 0; + MIN_MODEM = 1; + MAX_MODEM = 2; +} + +enum Rpc_WifiSecProt { + Open = 0; + WEP = 1; + WPA_PSK = 2; + WPA2_PSK = 3; + WPA_WPA2_PSK = 4; + WPA2_ENTERPRISE = 5; + WPA3_PSK = 6; + WPA2_WPA3_PSK = 7; +} + +/* enums for Control path */ +enum Rpc_Status { + Connected = 0; + Not_Connected = 1; + No_AP_Found = 2; + Connection_Fail = 3; + Invalid_Argument = 4; + Out_Of_Range = 5; +} + + +enum RpcType { +MsgType_Invalid = 0; + Req = 1; + Resp = 2; + Event = 3; + MsgType_Max = 4; +} + +enum RpcFeature { + Feature_None = 0; + // Bluetooth (BT) Feature + Feature_Bluetooth = 1; + // add additional features here +} + +enum RpcFeatureCommand { + Feature_Command_None = 0; + // Bluetooth (BT) Feature Commands + Feature_Command_BT_Init = 1; + Feature_Command_BT_Deinit = 2; + Feature_Command_BT_Enable = 3; + Feature_Command_BT_Disable = 4; + // add additional feature commands here +} + +enum RpcFeatureOption { + Feature_Option_None = 0; + // Bluetooth (BT) Feature Options + Feature_Option_BT_Deinit_Release_Memory = 1; // release memory when deinit BT + // add additional feature options here +} + +enum RpcId { + MsgId_Invalid = 0; + + /** Request Msgs **/ + Req_Base = 256; //0x100 + + Req_GetMACAddress = 257; //0x101 + Req_SetMacAddress = 258; //0x102 + Req_GetWifiMode = 259; //0x103 + Req_SetWifiMode = 260; //0x104 + + Req_SuppDppInit = 261; //0x105 + Req_SuppDppDeinit = 262; //0x106 + Req_SuppDppBootstrapGen = 263; //0x107 + Req_SuppDppStartListen = 264; //0x108 + Req_SuppDppStopListen = 265; //0x109 + + //Req_SetSoftAPVendorSpecificIE = 266; //0x10a + //Req_StartSoftAP = 267; //0x10b + //Req_GetSoftAPConnectedSTAList = 268; //0x10c + //Req_StopSoftAP = 269; //0x10d + Req_OTAActivate = 266; //0x112 + + Req_WifiSetPs = 270; //0x10e + Req_WifiGetPs = 271; //0x10f + + Req_OTABegin = 272; //0x110 + Req_OTAWrite = 273; //0x111 + Req_OTAEnd = 274; //0x112 + + Req_WifiSetMaxTxPower = 275; //0x113 + Req_WifiGetMaxTxPower = 276; //0x114 + + Req_ConfigHeartbeat = 277; //0x115 + + Req_WifiInit = 278; //0x116 + Req_WifiDeinit = 279; //0x117 + Req_WifiStart = 280; //0x118 + Req_WifiStop = 281; //0x119 + Req_WifiConnect = 282; //0x11a + Req_WifiDisconnect = 283; //0x11b + Req_WifiSetConfig = 284; //0x11c + Req_WifiGetConfig = 285; //0x11d + + Req_WifiScanStart = 286; //0x11e + Req_WifiScanStop = 287; //0x11f + Req_WifiScanGetApNum = 288; //0x120 + Req_WifiScanGetApRecords = 289; //0x121 + Req_WifiClearApList = 290; //0x122 + + Req_WifiRestore = 291; //0x123 + Req_WifiClearFastConnect = 292; //0x124 + Req_WifiDeauthSta = 293; //0x125 + Req_WifiStaGetApInfo = 294; //0x126 + //Req_WifiSetPs = 295; //0x127 + //Req_WifiGetPs = 296; //0x128 + Req_WifiSetProtocol = 297; //0x129 + Req_WifiGetProtocol = 298; //0x12a + Req_WifiSetBandwidth = 299; //0x12b + Req_WifiGetBandwidth = 300; //0x12c + Req_WifiSetChannel = 301; //0x12d + Req_WifiGetChannel = 302; //0x12e + Req_WifiSetCountry = 303; //0x12f + Req_WifiGetCountry = 304; //0x130 + +// Req_WifiSetPromiscuousRxCb = 305; //0x131 + Req_WifiSetPromiscuous = 305; //0x131 + Req_WifiGetPromiscuous = 306; //0x132 + Req_WifiSetPromiscuousFilter = 307; //0x133 + Req_WifiGetPromiscuousFilter = 308; //0x134 + Req_WifiSetPromiscuousCtrlFilter = 309; //0x135 + Req_WifiGetPromiscuousCtrlFilter = 310; //0x136 + + Req_WifiApGetStaList = 311; //0x137 + Req_WifiApGetStaAid = 312; //0x138 + Req_WifiSetStorage = 313; //0x139 + Req_WifiSetVendorIe = 314; //0x13a +// Req_WifiSetVendorIeCb = 315; //0x13b + Req_WifiSetEventMask = 315; //0x13b + Req_WifiGetEventMask = 316; //0x13c + Req_Wifi80211Tx = 317; //0x13d + +// Req_WifiSetCsiRxCb = 318; //0x13e + Req_WifiSetCsiConfig = 318; //0x13e + Req_WifiSetCsi = 319; //0x13f + + Req_WifiSetAntGpio = 320; //0x140 + Req_WifiGetAntGpio = 321; //0x141 + Req_WifiSetAnt = 322; //0x142 + Req_WifiGetAnt = 323; //0x143 + + Req_WifiGetTsfTime = 324; //0x144 + Req_WifiSetInactiveTime = 325; //0x145 + Req_WifiGetInactiveTime = 326; //0x146 + Req_WifiStatisDump = 327; //0x147 + Req_WifiSetRssiThreshold = 328; //0x148 + + Req_WifiFtmInitiateSession = 329; //0x149 + Req_WifiFtmEndSession = 330; //0x14a + Req_WifiFtmRespSetOffset = 331; //0x14b + + Req_WifiConfig11bRate = 332; //0x14c + Req_WifiConnectionlessModuleSetWakeInterval = 333; //0x14d + Req_WifiSetCountryCode = 334; //0x14e + Req_WifiGetCountryCode = 335; //0x14f + Req_WifiConfig80211TxRate = 336; //0x150 + Req_WifiDisablePmfConfig = 337; //0x151 + Req_WifiStaGetAid = 338; //0x152 + Req_WifiStaGetNegotiatedPhymode = 339; //0x153 + Req_WifiSetDynamicCs = 340; //0x154 + Req_WifiStaGetRssi = 341; //0x155 + + Req_WifiSetProtocols = 342; //0x156 + Req_WifiGetProtocols = 343; //0x157 + Req_WifiSetBandwidths = 344; //0x158 + Req_WifiGetBandwidths = 345; //0x159 + + Req_WifiSetBand = 346; //0x15a + Req_WifiGetBand = 347; //0x15b + Req_WifiSetBandMode = 348; //0x15c + Req_WifiGetBandMode = 349; //0x15d + + Req_GetCoprocessorFwVersion = 350; //0x15e + + Req_WifiScanGetApRecord = 351; //0x15f + + Req_SetDhcpDnsStatus = 352; //0x160 + Req_GetDhcpDnsStatus = 353; //0x161 + + Req_WifiStaTwtConfig = 354; //0x162 + Req_WifiStaItwtSetup = 355; //0x163 + Req_WifiStaItwtTeardown = 356; //0x164 + Req_WifiStaItwtSuspend = 357; //0x165 + Req_WifiStaItwtGetFlowIdStatus = 358; //0x166 + Req_WifiStaItwtSendProbeReq = 359; //0x167 + Req_WifiStaItwtSetTargetWakeTimeOffset = 360; //0x168 + + Req_WifiStaEnterpriseEnable = 361; //0x169 + Req_WifiStaEnterpriseDisable = 362; //0x16A + Req_EapSetIdentity = 363; //0x16B + Req_EapClearIdentity = 364; //0x16C + Req_EapSetUsername = 365; //0x16D + Req_EapClearUsername = 366; //0x16E + Req_EapSetPassword = 367; //0x16F + Req_EapClearPassword = 368; //0x170 + Req_EapSetNewPassword = 369; //0x171 + Req_EapClearNewPassword = 370; //0x172 + Req_EapSetCaCert = 371; //0x173 + Req_EapClearCaCert = 372; //0x174 + Req_EapSetCertificateAndKey = 373; //0x175 + Req_EapClearCertificateAndKey = 374; //0x176 + Req_EapGetDisableTimeCheck = 375; //0x177 + Req_EapSetTtlsPhase2Method = 376; //0x178 + Req_EapSetSuitebCertification = 377; //0x179 + Req_EapSetPacFile = 378; //0x17A + Req_EapSetFastParams = 379; //0x17B + Req_EapUseDefaultCertBundle = 380; //0x17C + Req_WifiSetOkcSupport = 381; //0x17D + Req_EapSetDomainName = 382; //0x17E + Req_EapSetDisableTimeCheck = 383; //0x17F + Req_EapSetEapMethods = 384; //0x180 + + Req_IfaceMacAddrSetGet = 385; //0x181 + Req_IfaceMacAddrLenGet = 386; //0x182 + + /* Common RPC to handle simple feature control with one optional parameter + * Supported Features: + * - BT Init/Deinit/Enable/Disable + */ + Req_FeatureControl = 387; //0x183 + + Req_GpioConfig = 388; // 0x184 + Req_GpioResetPin = 389; // 0x185 + Req_GpioSetLevel = 390; // 0x186 + Req_GpioGetLevel = 391; // 0x187 + Req_GpioSetDirection = 392; // 0x188 + Req_GpioInputEnable = 393; // 0x189 + Req_GpioSetPullMode = 394; // 0x18A + + /* Add new control path command response before Req_Max + * and update Req_Max */ + Req_Max = 395; //0x18B + + /** Response Msgs **/ + Resp_Base = 512; + + Resp_GetMACAddress = 513; + Resp_SetMacAddress = 514; + Resp_GetWifiMode = 515; + Resp_SetWifiMode = 516; + + Resp_SuppDppInit = 517; + Resp_SuppDppDeinit = 518; + Resp_SuppDppBootstrapGen = 519; + Resp_SuppDppStartListen = 520; + Resp_SuppDppStopListen = 521; + + //Resp_SetSoftAPVendorSpecificIE = 522; + //Resp_StartSoftAP = 523; + //Resp_GetSoftAPConnectedSTAList = 524; + //Resp_StopSoftAP = 525; + Resp_OTAActivate = 522; + + Resp_WifiSetPs = 526; + Resp_WifiGetPs = 527; + + Resp_OTABegin = 528; + Resp_OTAWrite = 529; + Resp_OTAEnd = 530; + + Resp_WifiSetMaxTxPower = 531; + Resp_WifiGetMaxTxPower = 532; + + Resp_ConfigHeartbeat = 533; + + Resp_WifiInit = 534; + Resp_WifiDeinit = 535; + Resp_WifiStart = 536; + Resp_WifiStop = 537; + Resp_WifiConnect = 538; + Resp_WifiDisconnect = 539; + Resp_WifiSetConfig = 540; + Resp_WifiGetConfig = 541; + + Resp_WifiScanStart = 542; + Resp_WifiScanStop = 543; + Resp_WifiScanGetApNum = 544; + Resp_WifiScanGetApRecords = 545; + Resp_WifiClearApList = 546; + + Resp_WifiRestore = 547; + Resp_WifiClearFastConnect = 548; + Resp_WifiDeauthSta = 549; + Resp_WifiStaGetApInfo = 550; + //Resp_WifiSetPs = 551; + //Resp_WifiGetPs = 552; + Resp_WifiSetProtocol = 553; + Resp_WifiGetProtocol = 554; + Resp_WifiSetBandwidth = 555; + Resp_WifiGetBandwidth = 556; + Resp_WifiSetChannel = 557; + Resp_WifiGetChannel = 558; + Resp_WifiSetCountry = 559; + Resp_WifiGetCountry = 560; + +// Resp_WifiSetPromiscuousRxCb = 561; + Resp_WifiSetPromiscuous = 561; + Resp_WifiGetPromiscuous = 562; + Resp_WifiSetPromiscuousFilter = 563; + Resp_WifiGetPromiscuousFilter = 564; + Resp_WifiSetPromiscuousCtrlFilter = 565; + Resp_WifiGetPromiscuousCtrlFilter = 566; + + Resp_WifiApGetStaList = 567; + Resp_WifiApGetStaAid = 568; + Resp_WifiSetStorage = 569; + Resp_WifiSetVendorIe = 570; +// Resp_WifiSetVendorIeCb = 571; + Resp_WifiSetEventMask = 571; + Resp_WifiGetEventMask = 572; + Resp_Wifi80211Tx = 573; + +// Resp_WifiSetCsiRxCb = 573; + Resp_WifiSetCsiConfig = 574; + Resp_WifiSetCsi = 575; + + Resp_WifiSetAntGpio = 576; + Resp_WifiGetAntGpio = 577; + Resp_WifiSetAnt = 578; + Resp_WifiGetAnt = 579; + + Resp_WifiGetTsfTime = 580; + Resp_WifiSetInactiveTime = 581; + Resp_WifiGetInactiveTime = 582; + Resp_WifiStatisDump = 583; + Resp_WifiSetRssiThreshold = 584; + + Resp_WifiFtmInitiateSession = 585; + Resp_WifiFtmEndSession = 586; + Resp_WifiFtmRespSetOffset = 587; + + Resp_WifiConfig11bRate = 588; + Resp_WifiConnectionlessModuleSetWakeInterval = 589; + Resp_WifiSetCountryCode = 590; + Resp_WifiGetCountryCode = 591; + Resp_WifiConfig80211TxRate = 592; + Resp_WifiDisablePmfConfig = 593; + Resp_WifiStaGetAid = 594; + Resp_WifiStaGetNegotiatedPhymode = 595; + Resp_WifiSetDynamicCs = 596; + Resp_WifiStaGetRssi = 597; + + Resp_WifiSetProtocols = 598; + Resp_WifiGetProtocols = 599; + Resp_WifiSetBandwidths = 600; + Resp_WifiGetBandwidths = 601; + + Resp_WifiSetBand = 602; + Resp_WifiGetBand = 603; + Resp_WifiSetBandMode = 604; + Resp_WifiGetBandMode = 605; + + Resp_GetCoprocessorFwVersion = 606; + + Resp_WifiScanGetApRecord = 607; + + Resp_SetDhcpDnsStatus = 608; + Resp_GetDhcpDnsStatus = 609; + + Resp_WifiStaTwtConfig = 610; + Resp_WifiStaItwtSetup = 611; + Resp_WifiStaItwtTeardown = 612; + Resp_WifiStaItwtSuspend = 613; + Resp_WifiStaItwtGetFlowIdStatus = 614; + Resp_WifiStaItwtSendProbeReq = 615; + Resp_WifiStaItwtSetTargetWakeTimeOffset = 616; + + Resp_WifiStaEnterpriseEnable = 617; + Resp_WifiStaEnterpriseDisable = 618; + Resp_EapSetIdentity = 619; + Resp_EapClearIdentity = 620; + Resp_EapSetUsername = 621; + Resp_EapClearUsername = 622; + Resp_EapSetPassword = 623; + Resp_EapClearPassword = 624; + Resp_EapSetNewPassword = 625; + Resp_EapClearNewPassword = 626; + Resp_EapSetCaCert = 627; + Resp_EapClearCaCert = 628; + Resp_EapSetCertificateAndKey = 629; + Resp_EapClearCertificateAndKey = 630; + Resp_EapGetDisableTimeCheck = 631; + Resp_EapSetTtlsPhase2Method = 632; + Resp_EapSetSuitebCertification = 633; + Resp_EapSetPacFile = 634; + Resp_EapSetFastParams = 635; + Resp_EapUseDefaultCertBundle = 636; + Resp_WifiSetOkcSupport = 637; + Resp_EapSetDomainName = 638; + Resp_EapSetDisableTimeCheck = 639; + Resp_EapSetEapMethods = 640; + + Resp_IfaceMacAddrSetGet = 641; + Resp_IfaceMacAddrLenGet = 642; + Resp_FeatureControl = 643; + + Resp_GpioConfig = 644; + Resp_GpioResetPin = 645; + Resp_GpioSetLevel = 646; + Resp_GpioGetLevel = 647; + Resp_GpioSetDirection = 648; + Resp_GpioInputEnable = 649; + Resp_GpioSetPullMode = 650; + + /* Add new control path command response before Resp_Max + * and update Resp_Max */ + Resp_Max = 651; + + /** Event Msgs **/ + Event_Base = 768; + Event_ESPInit = 769; + Event_Heartbeat = 770; + Event_AP_StaConnected = 771; + Event_AP_StaDisconnected = 772; + Event_WifiEventNoArgs = 773; + Event_StaScanDone = 774; + Event_StaConnected = 775; + Event_StaDisconnected = 776; + Event_DhcpDnsStatus = 777; + + Event_StaItwtSetup = 778; + Event_StaItwtTeardown = 779; + Event_StaItwtSuspend = 780; + Event_StaItwtProbe = 781; + + // Supplicant DPP Events received by dpp callback on host + Event_SuppDppUriReady = 782; + Event_SuppDppCfgRecvd = 783; + Event_SuppDppFail = 784; + // Wifi DPP Events + Event_WifiDppUriReady = 785; + Event_WifiDppCfgRecvd = 786; + Event_WifiDppFail = 787; + + /* Add new control path command notification before Event_Max + * and update Event_Max */ + Event_Max = 788; +} + +message wifi_init_config { + int32 static_rx_buf_num = 1; /**< WiFi static RX buffer number */ + int32 dynamic_rx_buf_num = 2; /**< WiFi dynamic RX buffer number */ + int32 tx_buf_type = 3; /**< WiFi TX buffer type */ + int32 static_tx_buf_num = 4; /**< WiFi static TX buffer number */ + int32 dynamic_tx_buf_num = 5; /**< WiFi dynamic TX buffer number */ + int32 cache_tx_buf_num = 6; /**< WiFi TX cache buffer number */ + int32 csi_enable = 7; /**< WiFi channel state information enable flag */ + int32 ampdu_rx_enable = 8; /**< WiFi AMPDU RX feature enable flag */ + int32 ampdu_tx_enable = 9; /**< WiFi AMPDU TX feature enable flag */ + int32 amsdu_tx_enable = 10; /**< WiFi AMSDU TX feature enable flag */ + int32 nvs_enable = 11; /**< WiFi NVS flash enable flag */ + int32 nano_enable = 12; /**< Nano option for printf/scan family enable flag */ + int32 rx_ba_win = 13; /**< WiFi Block Ack RX window size */ + int32 wifi_task_core_id = 14; /**< WiFi Task Core ID */ + int32 beacon_max_len = 15; /**< WiFi softAP maximum length of the beacon */ + int32 mgmt_sbuf_num = 16; /**< WiFi management short buffer number, the minimum value is 6, the maximum value is 32 */ + uint64 feature_caps = 17; /**< Enables additional WiFi features and capabilities */ + bool sta_disconnected_pm = 18; /**< WiFi Power Management for station at disconnected status */ + int32 espnow_max_encrypt_num = 19; /**< Maximum encrypt number of peers supported by espnow */ + int32 magic = 20; /**< WiFi init magic number, it should be the last field */ + int32 rx_mgmt_buf_type = 21; /**< WiFi RX MGMT buffer type */ + int32 rx_mgmt_buf_num = 22; /**< WiFi RX MGMT buffer number */ + int32 tx_hetb_queue_num = 23; /**< WiFi TX HE TB QUEUE number for STA HE TB PPDU transmission */ + int32 dump_hesigb_enable = 24; /**< enable dump sigb field */ +} + +message wifi_country { + bytes cc = 1; /**< country code string of 3 chars*/ + uint32 schan = 2; /**< start channel */ + uint32 nchan = 3; /**< total channel number */ + int32 max_tx_power = 4; /**< This field is used for getting WiFi maximum transmitting power, + call esp_wifi_set_max_tx_power to set the maximum transmitting power. */ + int32 policy = 5; /**< country policy */ +} + + +message wifi_active_scan_time { + uint32 min = 1; /**< minimum active scan time per channel, units: millisecond */ + uint32 max = 2; /**< maximum active scan time per channel, units: millisecond, values above 1500ms may + cause station to disconnect from AP and are not recommended. */ +} ; + +message wifi_scan_time { + wifi_active_scan_time active = 1; /**< active scan time per channel, units: millisecond. */ + uint32 passive = 2; /**< passive scan time per channel, units: millisecond, values above 1500ms may + cause station to disconnect from AP and are not recommended. */ +} + +message wifi_scan_channel_bitmap { + uint32 ghz_2_channels = 1; /**< Represents 2.4 GHz channels, that bits can be set as wifi_2g_channel_bit_t shown. */ + uint32 ghz_5_channels = 2; /**< Represents 5 GHz channels, that bits can be set as wifi_5g_channel_bit_t shown. */ +} + +message wifi_scan_config { + bytes ssid = 1; /**< SSID of AP 33char*/ + bytes bssid = 2; /**< MAC address of AP 6char */ + uint32 channel = 3; /**< channel, scan the specific channel */ + bool show_hidden = 4; /**< enable to scan AP whose SSID is hidden */ + int32 scan_type = 5; /**< scan type, active or passive */ + wifi_scan_time scan_time = 6; /**< scan time per channel */ + uint32 home_chan_dwell_time = 7; /**< time spent at home channel between scanning consecutive channels.*/ + wifi_scan_channel_bitmap channel_bitmap = 8; /**< Channel bitmap for setting specific channels to be scanned. + Please note that the 'channel' parameter above needs to be set to 0 to allow scanning by bitmap. + Also, note that only allowed channels configured by wifi_country_t can be scanned. */ +} + +message wifi_he_ap_info { + //uint8_t bss_color:6; /**< an unsigned integer whose value is the BSS Color of the BSS corresponding to the AP */ + //uint8_t partial_bss_color:1; /**< indicate if an AID assignment rule based on the BSS color */ + //uint8_t bss_color_disabled:1; /**< indicate if the use of BSS color is disabled */ + uint32 bitmask = 1; /* Manually have to parse for above bits */ + uint32 bssid_index = 2; /**< in M-BSSID set, identifies the nontransmitted BSSID */ +} + +message wifi_ap_record { + bytes bssid = 1; /**< MAC address of AP 6char */ + bytes ssid = 2; /**< SSID of AP 33char */ + uint32 primary = 3; /**< channel of AP */ + int32 second = 4; /**< secondary channel of AP */ + int32 rssi = 5; /**< signal strength of AP */ + int32 authmode = 6; /**< authmode of AP */ + int32 pairwise_cipher = 7; /**< pairwise cipher of AP */ + int32 group_cipher = 8; /**< group cipher of AP */ + int32 ant = 9; /**< antenna used to receive beacon from AP */ + //uint32_t phy_11b:1; /**< bit: 0 flag to identify if 11b mode is enabled or not */ + //uint32_t phy_11g:1; /**< bit: 1 flag to identify if 11g mode is enabled or not */ + //uint32_t phy_11n:1; /**< bit: 2 flag to identify if 11n mode is enabled or not */ + //uint32_t phy_lr:1; /**< bit: 3 flag to identify if low rate is enabled or not */ + //uint32_t wps:1; /**< bit: 4 flag to identify if WPS is supported or not */ + //uint32_t ftm_responder:1; /**< bit: 5 flag to identify if FTM is supported in responder mode */ + //uint32_t ftm_initiator:1; /**< bit: 6 flag to identify if FTM is supported in initiator mode */ + //uint32_t reserved:25; /**< bit: 7..31 reserved */ + uint32 bitmask = 10; /* Manually have to parse for above bits */ + + wifi_country country = 11; /**< country information of AP */ + wifi_he_ap_info he_ap = 12; + uint32 bandwidth = 13; /**< For AP 20 MHz this value is set to 1. For AP 40 MHz this value is set to 2. + For AP 80 MHz this value is set to 3. For AP 160MHz this value is set to 4. + For AP 80+80MHz this value is set to 5*/ + uint32 vht_ch_freq1 = 14; /**< This fields are used only AP bandwidth is 80 and 160 MHz, to transmit the center channel + frequency of the BSS. For AP bandwidth is 80 + 80 MHz, it is the center channel frequency + of the lower frequency segment.*/ + uint32 vht_ch_freq2 = 15; /**< This fields are used only AP bandwidth is 80 + 80 MHz, and is used to transmit the center + channel frequency of the second segment. */ +} + +message wifi_scan_threshold { + int32 rssi = 1; /**< The minimum rssi to accept in the fast scan mode */ + int32 authmode = 2; /**< The weakest authmode to accept in the fast scan mode +Note: Incase this value is not set and password is set as per WPA2 standards(password len >= 8), +it will be defaulted to WPA2 and device won't connect to deprecated WEP/WPA networks. +Please set authmode threshold as WIFI_AUTH_WEP/WIFI_AUTH_WPA_PSK to connect to WEP/WPA networks */ + uint32 rssi_5g_adjustment = 3; /**< The RSSI value of the 5G AP is within the rssi_5g_adjustment range compared to the 2G AP, the 5G AP will be given priority for connection. */ +} + +message wifi_pmf_config { + bool capable = 1; /**< Deprecated variable. Device will always connect in PMF mode if other device also advertizes PMF capability. */ + bool required = 2; /**< Advertizes that Protected Management Frame is required. Device will not associate to non-PMF capable devices. */ +} + +message wifi_bss_max_idle_config { + uint32 period = 1; /**< Sets BSS Max idle period (1 Unit = 1000TUs OR 1.024 Seconds). If there are no frames for this period from a STA, SoftAP will disassociate due to inactivity. Setting it to 0 disables the feature */ + bool protected_keep_alive = 2; /**< Requires clients to use protected keep alive frames for BSS Max Idle period */ +} + +message wifi_ap_config { + bytes ssid = 1; /**< SSID of ESP32 soft-AP. If ssid_len field is 0, this must be a Null terminated string. Otherwise, length is set according to ssid_len. 32 char*/ + bytes password = 2; /**< Password of ESP32 soft-AP. 64 char*/ + uint32 ssid_len = 3; /**< Optional length of SSID field. */ + uint32 channel = 4; /**< Channel of ESP32 soft-AP */ + int32 authmode = 5; /**< Auth mode of ESP32 soft-AP. Do not support AUTH_WEP in soft-AP mode */ + uint32 ssid_hidden = 6; /**< Broadcast SSID or not, default 0, broadcast the SSID */ + uint32 max_connection = 7; /**< Max number of stations allowed to connect in */ + uint32 beacon_interval = 8; /**< Beacon interval which should be multiples of 100. Unit: TU(time unit, 1 TU = 1024 us). Range: 100 ~ 60000. Default value: 100 */ + int32 pairwise_cipher = 9; /**< pairwise cipher of SoftAP, group cipher will be derived using this. + cipher values are valid starting from WIFI_CIPHER_TYPE_TKIP, enum values before that will be considered as invalid and default cipher suites(TKIP+CCMP) will be used. + Valid cipher suites in softAP mode are WIFI_CIPHER_TYPE_TKIP, WIFI_CIPHER_TYPE_CCMP and WIFI_CIPHER_TYPE_TKIP_CCMP. */ + bool ftm_responder = 10; /**< Enable FTM Responder mode */ + wifi_pmf_config pmf_cfg = 11; /**< Configuration for Protected Management Frame */ + int32 sae_pwe_h2e = 12; /**< Configuration for SAE PWE derivation method */ + uint32 csa_count = 13; /**< Channel Switch Announcement Count. Notify the station that the channel will switch after the csa_count beacon intervals. Default value: 3 */ + uint32 dtim_period = 14; /**< Dtim period of soft-AP. Range: 1 ~ 10. Default value: 1 */ + uint32 transition_disable = 15; /**< Whether to enable transition disable feature */ + uint32 sae_ext = 16; /**< Enable SAE EXT feature. SOC_GCMP_SUPPORT is required for this feature. */ + wifi_bss_max_idle_config bss_max_idle_cfg = 17; /**< Configuration for bss max idle, effective if CONFIG_WIFI_BSS_MAX_IDLE_SUPPORT is enabled */ + uint32 gtk_rekey_interval = 18; /**< GTK rekeying interval in seconds. If set to 0, GTK rekeying is disabled. Range: 60 ~ 65535 including 0. */ +} + +message wifi_sta_config { + bytes ssid = 1; /**< SSID of target AP. 32char */ + bytes password = 2; /**< Password of target AP. 64char */ + int32 scan_method = 3; /**< do all channel scan or fast scan */ + bool bssid_set = 4; /**< whether set MAC address of target AP or not. Generally, station_config.bssid_set needs to be 0, + and it needs to be 1 only when users need to check the MAC address of the AP.*/ + bytes bssid = 5; /**< MAC address of target AP 6char */ + uint32 channel = 6; /**< channel of target AP. Set to 1~13 to scan starting from the specified channel + before connecting to AP. If the channel of AP is unknown, set it to 0.*/ + uint32 listen_interval = 7; /**< Listen interval for ESP32 station to receive beacon when WIFI_PS_MAX_MODEM is set. +Units: AP beacon intervals. Defaults to 3 if set to 0. */ + int32 sort_method = 8; /**< sort the connect AP in the list by rssi or security mode */ + wifi_scan_threshold threshold = 9; /**< When sort_method is set, only APs which have an auth mode that is more secure + than the selected auth mode and a signal stronger than the minimum RSSI will be used. */ + wifi_pmf_config pmf_cfg = 10; /**< Configuration for Protected Management Frame. Will be advertized in RSN Capabilities in RSN IE. */ + //uint32_t rm_enabled:1; /**< Whether Radio Measurements are enabled for the connection */ + //uint32_t btm_enabled:1; /**< Whether BSS Transition Management is enabled for the connection */ + //uint32_t mbo_enabled:1; /**< Whether MBO is enabled for the connection */ + //uint32_t ft_enabled:1; /**< Whether FT is enabled for the connection */ + //uint32_t owe_enabled:1; /**< Whether OWE is enabled for the connection */ + //uint32_t transition_disable:1; /**< Whether to enable transition disable feature */ + //uint32_t reserved:26; /**< Reserved for future feature set */ + uint32 bitmask = 11; + int32 sae_pwe_h2e = 12; /**< Whether SAE hash to element is enabled */ + uint32 failure_retry_cnt = 13; /**< Number of connection retries station will do before moving to next AP. + scan_method should be set as WIFI_ALL_CHANNEL_SCAN to use this config. + Note: Enabling this may cause connection time to increase incase best AP doesn't behave properly. */ + //uint32_t he_dcm_set:1; /**< Whether DCM max.constellation for transmission and reception is set. */ + //uint32_t he_dcm_max_constellation_tx:2; /**< Indicate the max.constellation for DCM in TB PPDU the STA supported. 0: not supported. 1: BPSK, 2: QPSK, 3: 16-QAM. The default value is 3. */ + //uint32_t he_dcm_max_constellation_rx:2; /**< Indicate the max.constellation for DCM in both Data field and HE-SIG-B field the STA supported. 0: not supported. 1: BPSK, 2: QPSK, 3: 16-QAM. The default value is 3. */ + //uint32_t he_mcs9_enabled:1; /**< Whether to support HE-MCS 0 to 9. The default value is 0. */ + //uint32_t he_su_beamformee_disabled:1; /**< Whether to disable support for operation as an SU beamformee. */ + //uint32_t he_trig_su_bmforming_feedback_disabled:1; /**< Whether to disable support the transmission of SU feedback in an HE TB sounding sequence. */ + //uint32_t he_trig_mu_bmforming_partial_feedback_disabled:1; /**< Whether to disable support the transmission of partial-bandwidth MU feedback in an HE TB sounding sequence. */ + // uint32_t he_trig_cqi_feedback_disabled:1; /**< Whether to disable support the transmission of CQI feedback in an HE TB sounding sequence. */ + // uint32_t vht_su_beamformee_disabled: 1; /**< Whether to disable support for operation as an VHT SU beamformee. */ + // uint32_t vht_mu_beamformee_disabled: 1; /**< Whether to disable support for operation as an VHT MU beamformee. */ + // uint32_t vht_mcs8_enabled: 1; /**< Whether to support VHT-MCS8. The default value is 0. */ + // uint32_t he_reserved:19; /**< Reserved for future feature set */ + uint32 he_bitmask = 14; + bytes sae_h2e_identifier = 15; /**< Password identifier for H2E. this needs to be null terminated string. SAE_H2E_IDENTIFIER_LEN chars */ + uint32 sae_pk_mode = 16; /**< Configuration for SAE-PK (Public Key) Authentication method */ +} + +message wifi_config { + oneof u { + wifi_ap_config ap = 1; /**< configuration of AP */ + wifi_sta_config sta = 2; /**< configuration of STA */ + } +} + +message wifi_sta_info { + bytes mac = 1; /**< mac address 6 char */ + int32 rssi = 2; /**< current average rssi of sta connected */ + //uint32_t phy_11b:1; /**< bit: 0 flag to identify if 11b mode is enabled or not */ + //uint32_t phy_11g:1; /**< bit: 1 flag to identify if 11g mode is enabled or not */ + //uint32_t phy_11n:1; /**< bit: 2 flag to identify if 11n mode is enabled or not */ + //uint32_t phy_lr:1; /**< bit: 3 flag to identify if low rate is enabled or not */ + //uint32_t phy_11x:1; /**< bit: 4 flag to identify identify if 11ax mode is enabled or not */ + //uint32_t is_mesh_child:1; /**< bit: 5 flag to identify mesh child */ + //uint32_t reserved:26; /**< bit: 6..31 reserved */ + uint32 bitmask = 3; +} + +message wifi_sta_list { + repeated wifi_sta_info sta = 1; /**< station list */ + int32 num = 2; /**< number of stations in the list (other entries are invalid) */ +} + +//message vendor_ie_data { +// uint32 element_id = 1; /**< Should be set to WIFI_VENDOR_IE_ELEMENT_ID (0xDD) */ +// uint32 length = 2; /**< Length of all bytes in the element data following this field. Minimum 4. */ +// bytes vendor_oui = 3; /**< Vendor identifier (OUI). 3 chars */ +// uint32 vendor_oui_type = 4; /**< Vendor-specific OUI type. */ +// bytes payload = 5; /**< Payload. Length is equal to value in 'length' field, minus 4. Note: Variable size */ +//} + +message wifi_pkt_rx_ctrl { + int32 rssi = 1; /**< 8bits Received Signal Strength Indicator(RSSI) of packet. unit: dBm */ + uint32 rate = 2; /**< 5bits PHY rate encoding of the packet. Only valid for non HT(11bg) packet */ + //uint32 :1; /**< reserved */ + uint32 sig_mode = 3; /**< 2bits 0: non HT(11bg) packet; 1: HT(11n) packet; 3: VHT(11ac) packet */ + //uint32 :16; /**< reserved */ + uint32 mcs = 4; /**< 7bits Modulation Coding Scheme. If is HT(11n) packet, shows the modulation, range from 0 to 76(MSC0 ~ MCS76) */ + uint32 cwb = 5; /**< 1bit Channel Bandwidth of the packet. 0: 20MHz; 1: 40MHz */ + //uint32 :16; /**< reserved */ + uint32 smoothing = 6; /**< 1bit reserved */ + uint32 not_sounding = 7; /**< 1bit reserved */ + //uint32 :1; /**< reserved */ + uint32 aggregation = 8; /**< 1bit Aggregation. 0: MPDU packet; 1: AMPDU packet */ + uint32 stbc = 9; /**< 2bits Space Time Block Code(STBC). 0: non STBC packet; 1: STBC packet */ + uint32 fec_coding = 10; /**< 1bit Flag is set for 11n packets which are LDPC */ + uint32 sgi = 11; /**< 1bit Short Guide Interval(SGI). 0: Long GI; 1: Short GI */ + int32 noise_floor = 12; /**< 8bits noise floor of Radio Frequency Module(RF). unit: dBm*/ + uint32 ampdu_cnt = 13; /**< 8bits ampdu cnt */ + uint32 channel = 14; /**< 4bits primary channel on which this packet is received */ + uint32 secondary_channel = 15; /**< 4bits secondary channel on which this packet is received. 0: none; 1: above; 2: below */ + //uint32 :8; /**< reserved */ + uint32 timestamp = 16; /**< 32bit timestamp. The local time when this packet is received. It is precise only if modem sleep or light sleep is not enabled. unit: microsecond */ + //uint32 :32; /**< reserved */ + //unsigned :32; /**< reserved */ + //unsigned :31; /**< reserved */ + uint32 ant = 17; /**< 1bit antenna number from which this packet is received. 0: WiFi antenna 0; 1: WiFi antenna 1 */ + uint32 sig_len = 18; /**< 12bits length of packet including Frame Check Sequence(FCS) */ + //unsigned :12; /**< reserved */ + uint32 rx_state = 19; /**< 8bits state of the packet. 0: no error; others: error numbers which are not public */ +} + +message wifi_promiscuous_pkt { + wifi_pkt_rx_ctrl rx_ctrl = 1; /**< metadata header */ + bytes payload = 2; /**< Note: variable length. Data or management payload. Length of payload is described by rx_ctrl.sig_len. Type of content determined by packet type argument of callback. */ +} + +message wifi_promiscuous_filter { + uint32 filter_mask = 1; /**< OR of one or more filter values WIFI_PROMIS_FILTER_* */ +} + +message wifi_csi_config { + bool lltf_en = 1; /**< enable to receive legacy long training field(lltf) data. Default enabled */ + bool htltf_en = 2; /**< enable to receive HT long training field(htltf) data. Default enabled */ + bool stbc_htltf2_en = 3; /**< enable to receive space time block code HT long training field(stbc-htltf2) data. Default enabled */ + bool ltf_merge_en = 4; /**< enable to generate htlft data by averaging lltf and ht_ltf data when receiving HT packet. Otherwise, use ht_ltf data directly. Default enabled */ + bool channel_filter_en = 5; /**< enable to turn on channel filter to smooth adjacent sub-carrier. Disable it to keep independence of adjacent sub-carrier. Default enabled */ + bool manu_scale = 6; /**< manually scale the CSI data by left shifting or automatically scale the CSI data. + If set true, please set the shift bits. false: automatically. true: manually. Default false */ + uint32 shift = 7; /**< manually left shift bits of the scale of the CSI data. The range of the left shift bits is 0~15 */ +} + +message wifi_csi_info { + wifi_pkt_rx_ctrl rx_ctrl = 1; /**< received packet radio metadata header of the CSI data */ + bytes mac = 2; /**< 6bits source MAC address of the CSI data */ + bytes dmac = 3; /**< 6bits destination MAC address of the CSI data */ + bool first_word_invalid = 4; /**< first four bytes of the CSI data is invalid or not */ + bytes buf = 5; /**< Note: variable length. buffer of CSI data */ + uint32 len = 6; /**< length of CSI data */ +} + +message wifi_ant_gpio { + uint32 gpio_select = 1; /**< 1bit Whether this GPIO is connected to external antenna switch */ + uint32 gpio_num = 2; /**< 7bits The GPIO number that connects to external antenna switch */ +} + +message wifi_ant_gpio_config { + repeated wifi_ant_gpio gpio_cfgs = 1; /**< The configurations of GPIOs that connect to external antenna switch */ +} + +message wifi_ant_config { + int32 rx_ant_mode = 1; /**< WiFi antenna mode for receiving */ + int32 rx_ant_default = 2; /**< Default antenna mode for receiving, it's ignored if rx_ant_mode is not WIFI_ANT_MODE_AUTO */ + int32 tx_ant_mode = 3; /**< WiFi antenna mode for transmission, it can be set to WIFI_ANT_MODE_AUTO only if rx_ant_mode is set to WIFI_ANT_MODE_AUTO */ + uint32 enabled_ant0 = 4; /**< 4bits Index (in antenna GPIO configuration) of enabled WIFI_ANT_MODE_ANT0 */ + uint32 enabled_ant1 = 5; /**< 4bits Index (in antenna GPIO configuration) of enabled WIFI_ANT_MODE_ANT1 */ +} + +message wifi_action_tx_req { + int32 ifx = 1; /**< WiFi interface to send request to */ + bytes dest_mac = 2; /**< 6bits Destination MAC address */ + bool no_ack = 3; /**< Indicates no ack required */ + //TODO + //wifi_action_rx_cb_t rx_cb; /**< Rx Callback to receive any response */ + uint32 data_len = 4; /**< Length of the appended Data */ + bytes data = 5; /**< note: variable length. Appended Data payload */ +} + +message wifi_ftm_initiator_cfg { + bytes resp_mac = 1; /**< 6bits MAC address of the FTM Responder */ + uint32 channel = 2; /**< Primary channel of the FTM Responder */ + uint32 frm_count = 3; /**< No. of FTM frames requested in terms of 4 or 8 bursts (allowed values - 0(No pref), 16, 24, 32, 64) */ + uint32 burst_period = 4; /**< Requested time period between consecutive FTM bursts in 100's of milliseconds (0 - No pref) */ +} + +message wifi_event_sta_scan_done { + uint32 status = 1; /**< status of scanning APs: 0 — success, 1 - failure */ + uint32 number = 2; /**< number of scan results */ + uint32 scan_id = 3; /**< scan sequence number, used for block scan */ +} + +message wifi_event_sta_connected { + bytes ssid = 1; /**< 32bytes SSID of connected AP */ + uint32 ssid_len = 2; /**< SSID length of connected AP */ + bytes bssid = 3; /**< 6bytes BSSID of connected AP*/ + uint32 channel = 4; /**< channel of connected AP*/ + int32 authmode = 5; /**< authentication mode used by AP*/ + int32 aid = 6; /**< authentication id assigned by the connected AP*/ +} + +message wifi_event_sta_disconnected { + bytes ssid = 1; /**< SSID of disconnected AP */ + uint32 ssid_len = 2; /**< SSID length of disconnected AP */ + bytes bssid = 3; /**< BSSID of disconnected AP */ + uint32 reason = 4; /**< reason of disconnection */ + int32 rssi = 5; /**< rssi of disconnection */ +} + +message wifi_event_sta_authmode_change { + int32 old_mode = 1; /**< the old auth mode of AP */ + int32 new_mode = 2; /**< the new auth mode of AP */ +} + +message wifi_event_sta_wps_er_pin { + bytes pin_code = 1; /**< 8bytes PIN code of station in enrollee mode */ +} + +message ap_cred { + bytes ssid = 1; /**< 32bytes SSID of AP */ + bytes passphrase = 2; /**< 64bytes Passphrase for the AP */ +} + +message wifi_event_sta_wps_er_success { + uint32 ap_cred_cnt = 1; /**< Number of AP credentials received */ + repeated ap_cred ap_creds = 2; /**< All AP credentials received from WPS handshake */ +} + +/** Argument structure for WIFI_EVENT_AP_PROBEREQRECVED event */ +message wifi_event_ap_probe_req_rx { + int32 rssi = 1; /**< Received probe request signal strength */ + uint32 mac = 2; /**< MAC address of the station which send probe request */ +} + +/** Argument structure for WIFI_EVENT_STA_BSS_RSSI_LOW event */ +message wifi_event_bss_rssi_low { + int32 rssi = 1; /**< RSSI value of bss */ +} + +message wifi_ftm_report_entry { + uint32 dlog_token = 1; /* *< Dialog Token of the FTM frame */ + int32 rssi = 2; /* *< RSSI of the FTM frame received */ + uint32 rtt = 3; /* *< Round Trip Time in pSec with a peer */ + /* TODO: uint32 is supported by proto? */ + uint64 t1 = 4; /* *< Time of departure of FTM frame from FTM Responder in pSec */ + uint64 t2 = 5; /* *< Time of arrival of FTM frame at FTM Initiator in pSec */ + uint64 t3 = 6; /* *< Time of departure of ACK from FTM Initiator in pSec */ + uint64 t4 = 7; /* *< Time of arrival of ACK at FTM Responder in pSec */ +} + +message wifi_event_ftm_report { + bytes peer_mac = 1; /* *< 6bytes MAC address of the FTM Peer */ + int32 status = 2; /* *< Status of the FTM operation */ + uint32 rtt_raw = 3; /* *< Raw average Round-Trip-Time with peer in Nano-Seconds */ + uint32 rtt_est = 4; /* *< Estimated Round-Trip-Time with peer in Nano-Seconds */ + uint32 dist_est = 5; /* *< Estimated one-way distance in Centi-Meters */ + repeated wifi_ftm_report_entry ftm_report_data = 6; /* *< Note var len Pointer to FTM Report with multiple entries, should be freed after use */ + uint32 ftm_report_num_entries = 7; /* *< Number of entries in the FTM Report data */ +} + +message wifi_event_action_tx_status { + int32 ifx = 1; /**< WiFi interface to send request to */ + uint32 context = 2; /**< Context to identify the request */ + bytes da = 3; /**< 6bytes Destination MAC address */ + uint32 status = 4; /**< Status of the operation */ +} + +message wifi_event_roc_done { + uint32 context = 1; /**< Context to identify the request */ +} + +message wifi_event_ap_wps_rg_pin { + bytes pin_code = 1; /**< 8bytes PIN code of station in enrollee mode */ +} + +message wifi_event_ap_wps_rg_fail_reason { + int32 reason = 1; /**< WPS failure reason wps_fail_reason_t */ + bytes peer_macaddr = 2; /**< 6bytes Enrollee mac address */ +} + +message wifi_event_ap_wps_rg_success { + bytes peer_macaddr = 1; /**< 6bytes Enrollee mac address */ +} + +message wifi_protocols { + uint32 ghz_2g = 1; /**< Represents 2.4 GHz protocol, support 802.11b or 802.11g or 802.11n or 802.11ax or LR mode */ + uint32 ghz_5g = 2; /**< Represents 5 GHz protocol, support 802.11a or 802.11n or 802.11ac or 802.11ax */ +} + +message wifi_bandwidths { + uint32 ghz_2g = 1; /* Represents 2.4 GHz bandwidth */ + uint32 ghz_5g = 2; /* Represents 5 GHz bandwidth */ +} + +message wifi_itwt_setup_config { + uint32 setup_cmd = 1; + // uint16_t trigger : 1; /**< 1: a trigger-enabled individual TWT, 0: a non-trigger-enabled individual TWT */ + // uint16_t flow_type : 1; /**< 0: an announced individual TWT, 1: an unannounced individual TWT */ + // uint16_t flow_id : 3; /**< When set up an individual TWT agreement, the flow id will be assigned by AP after a successful agreement setup. + // flow_id could be specified to a value in the range of [0, 7], but it might be changed by AP in the response. + // When change TWT parameters of the existing TWT agreement, flow_id should be an existing one. The value range is [0, 7]. */ + // uint16_t wake_invl_expn : 5; /**< Individual TWT Wake Interval Exponent. The value range is [0, 31]. */ + // uint16_t wake_duration_unit : 1; /**< Individual TWT Wake duration unit, 0: 256us 1: TU (TU = 1024us)*/ + // uint16_t reserved : 5; /**< bit: 11.15 reserved */ + uint32 bitmask_1 = 2; + uint32 min_wake_dura = 3; + uint32 wake_invl_mant = 4; + uint32 twt_id = 5; + uint32 timeout_time_ms = 6; +} + +message wifi_twt_config { + bool post_wakeup_event = 1; /**< post twt wakeup event */ + bool twt_enable_keep_alive = 2; /**< twt enable send qos null to keep alive */ +} + +/* internal supporting structures for Rpc */ +//message ScanResult { +// bytes bssid = 1; +// bytes ssid = 2; +// uint32 chnl = 3; +// int32 rssi = 4; +// int32 sec_prot = 5; +//} + +message ConnectedSTAList { + bytes mac = 1; + int32 rssi = 2; +} + +message eap_fast_config { + int32 fast_provisioning = 1; // Enable or disable Fast Provisioning in EAP-FAST (0 = disabled, 1 = enabled) + int32 fast_max_pac_list_len = 2; // Maximum length of the PAC (Protected Access Credential) list + bool fast_pac_format_binary = 3; // Set to true for binary format PAC, false for ASCII format PAC +} + +/* Control path structures */ +/** Req/Resp structure **/ +message Rpc_Req_GetMacAddress { + int32 mode = 1; +} + +message Rpc_Resp_GetMacAddress { + bytes mac = 1; + int32 resp = 2; +} + +message Rpc_Req_GetMode { +} + +message Rpc_Resp_GetMode { + int32 mode = 1; + int32 resp = 2; +} + +message Rpc_Req_SetMode { + int32 mode = 1; +} + +message Rpc_Resp_SetMode { + int32 resp = 1; +} + +message Rpc_Req_GetPs { +} + +message Rpc_Resp_GetPs { + int32 resp = 1; + int32 type = 2; +} + +message Rpc_Req_SetPs { + int32 type = 1; +} + +message Rpc_Resp_SetPs { + int32 resp = 1; +} + +message Rpc_Req_SetMacAddress { + bytes mac = 1; + int32 mode = 2; +} + +message Rpc_Resp_SetMacAddress { + int32 resp = 1; +} + +message Rpc_Req_OTABegin { +} + +message Rpc_Resp_OTABegin { + int32 resp = 1; +} + +message Rpc_Req_OTAWrite { + bytes ota_data = 1; +} + +message Rpc_Resp_OTAWrite { + int32 resp = 1; +} + +message Rpc_Req_OTAEnd { +} + +message Rpc_Resp_OTAEnd { + int32 resp = 1; +} + +message Rpc_Req_OTAActivate { +} + +message Rpc_Resp_OTAActivate { + int32 resp = 1; +} + +message Rpc_Req_WifiSetMaxTxPower { + int32 power = 1; +} + +message Rpc_Resp_WifiSetMaxTxPower { + int32 resp = 1; +} + +message Rpc_Req_WifiGetMaxTxPower { +} + +message Rpc_Resp_WifiGetMaxTxPower { + int32 power = 1; + int32 resp = 2; +} + +message Rpc_Req_ConfigHeartbeat { + bool enable = 1; + int32 duration = 2; +} + +message Rpc_Resp_ConfigHeartbeat { + int32 resp = 1; +} + +message Rpc_Req_WifiInit { + wifi_init_config cfg = 1; +} + +message Rpc_Resp_WifiInit { + int32 resp = 1; +} + +message Rpc_Req_WifiDeinit { +} + +message Rpc_Resp_WifiDeinit { + int32 resp = 1; +} + +message Rpc_Req_WifiSetConfig { + int32 iface = 1; + wifi_config cfg = 2; +} + +message Rpc_Resp_WifiSetConfig { + int32 resp = 1; +} + +message Rpc_Req_WifiGetConfig { + int32 iface = 1; +} + +message Rpc_Resp_WifiGetConfig { + int32 resp = 1; + int32 iface = 2; + wifi_config cfg = 3; +} + +message Rpc_Req_WifiConnect { +} + +message Rpc_Resp_WifiConnect { + int32 resp = 1; +} + +message Rpc_Req_WifiDisconnect { +} + +message Rpc_Resp_WifiDisconnect { + int32 resp = 1; +} + +message Rpc_Req_WifiStart { +} + +message Rpc_Resp_WifiStart { + int32 resp = 1; +} + +message Rpc_Req_WifiStop { +} + +message Rpc_Resp_WifiStop { + int32 resp = 1; +} + +message Rpc_Req_WifiScanStart { + wifi_scan_config config = 1; + bool block = 2; + int32 config_set = 3; +} + +message Rpc_Resp_WifiScanStart { + int32 resp = 1; +} + +message Rpc_Req_WifiScanStop { +} + +message Rpc_Resp_WifiScanStop { + int32 resp = 1; +} + +message Rpc_Req_WifiScanGetApNum { +} + +message Rpc_Resp_WifiScanGetApNum { + int32 resp = 1; + int32 number = 2; +} + +message Rpc_Req_WifiScanGetApRecords { + int32 number = 1; +} + +message Rpc_Resp_WifiScanGetApRecords { + int32 resp = 1; + int32 number = 2; + repeated wifi_ap_record ap_records = 3; +} + +message Rpc_Req_WifiScanGetApRecord { +} + +message Rpc_Resp_WifiScanGetApRecord { + int32 resp = 1; + wifi_ap_record ap_record = 2; +} + +message Rpc_Req_WifiClearApList { +} + +message Rpc_Resp_WifiClearApList { + int32 resp = 1; +} + +message Rpc_Req_WifiRestore { +} + +message Rpc_Resp_WifiRestore { + int32 resp = 1; +} + +message Rpc_Req_WifiClearFastConnect{ +} + +message Rpc_Resp_WifiClearFastConnect { + int32 resp = 1; +} + +message Rpc_Req_WifiDeauthSta { + int32 aid = 1; +} + +message Rpc_Resp_WifiDeauthSta { + int32 resp = 1; + int32 aid = 2; +} + +message Rpc_Req_WifiStaGetApInfo { +} + +message Rpc_Resp_WifiStaGetApInfo { + int32 resp = 1; + wifi_ap_record ap_record = 2; +} + +message Rpc_Req_WifiSetProtocol { + int32 ifx = 1; + int32 protocol_bitmap = 2; +} + +message Rpc_Resp_WifiSetProtocol { + int32 resp = 1; +} + +message Rpc_Req_WifiGetProtocol { + int32 ifx = 1; +} + +message Rpc_Resp_WifiGetProtocol { + int32 resp = 1; + int32 protocol_bitmap = 2; +} + +message Rpc_Req_WifiSetBandwidth { + int32 ifx = 1; + int32 bw = 2; +} + +message Rpc_Resp_WifiSetBandwidth { + int32 resp = 1; +} + +message Rpc_Req_WifiGetBandwidth { + int32 ifx = 1; +} + +message Rpc_Resp_WifiGetBandwidth { + int32 resp = 1; + int32 bw = 2; +} + +message Rpc_Req_WifiSetChannel { + int32 primary = 1; + int32 second = 2; +} + +message Rpc_Resp_WifiSetChannel { + int32 resp = 1; +} + +message Rpc_Req_WifiGetChannel { +} + +message Rpc_Resp_WifiGetChannel { + int32 resp = 1; + int32 primary = 2; + int32 second = 3; +} + +message Rpc_Req_WifiSetStorage { + int32 storage = 1; +} + +message Rpc_Resp_WifiSetStorage { + int32 resp = 1; +} + +message Rpc_Req_WifiSetCountryCode { + bytes country = 1; + bool ieee80211d_enabled = 2; +} + +message Rpc_Resp_WifiSetCountryCode { + int32 resp = 1; +} + +message Rpc_Req_WifiGetCountryCode { +} + +message Rpc_Resp_WifiGetCountryCode { + int32 resp = 1; + bytes country = 2; +} + +message Rpc_Req_WifiSetCountry { + wifi_country country = 1; +} + +message Rpc_Resp_WifiSetCountry { + int32 resp = 1; +} + +message Rpc_Req_WifiGetCountry { +} + +message Rpc_Resp_WifiGetCountry { + int32 resp = 1; + wifi_country country = 2; +} + +message Rpc_Req_WifiApGetStaList { +} + +message Rpc_Resp_WifiApGetStaList { + int32 resp = 1; + wifi_sta_list sta_list = 2; +} + +message Rpc_Req_WifiApGetStaAid { + bytes mac = 1; +} + +message Rpc_Req_WifiStaGetNegotiatedPhymode { +} + +message Rpc_Resp_WifiStaGetNegotiatedPhymode { + int32 resp = 1; + uint32 phymode = 2; +} + +message Rpc_Resp_WifiApGetStaAid { + int32 resp = 1; + uint32 aid = 2; +} + +message Rpc_Req_WifiStaGetRssi { +} + +message Rpc_Resp_WifiStaGetRssi { + int32 resp = 1; + int32 rssi = 2; +} + +message Rpc_Req_WifiStaGetAid { +} + +message Rpc_Resp_WifiStaGetAid { + int32 resp = 1; + uint32 aid = 2; +} + +message Rpc_Req_WifiSetProtocols { + int32 ifx = 1; + wifi_protocols protocols = 2; +} + +message Rpc_Resp_WifiSetProtocols { + int32 resp = 1; + uint32 ifx = 2; +} + +message Rpc_Req_WifiGetProtocols { + int32 ifx = 1; +} + +message Rpc_Resp_WifiGetProtocols { + int32 resp = 1; + int32 ifx = 2; + wifi_protocols protocols = 3; +} + +message Rpc_Req_WifiSetBandwidths { + int32 ifx = 1; + wifi_bandwidths bandwidths = 2; +} + +message Rpc_Resp_WifiSetBandwidths { + int32 resp = 1; + int32 ifx = 2; +} + +message Rpc_Req_WifiGetBandwidths { + int32 ifx = 1; +} + +message Rpc_Resp_WifiGetBandwidths { + int32 resp = 1; + int32 ifx = 2; + wifi_bandwidths bandwidths = 3; +} + +message Rpc_Req_WifiSetBand { + uint32 band = 1; +} + +message Rpc_Resp_WifiSetBand { + int32 resp = 1; +} + +message Rpc_Req_WifiGetBand { +} + +message Rpc_Resp_WifiGetBand { + int32 resp = 1; + uint32 band = 2; +} + +message Rpc_Req_WifiSetBandMode { + uint32 bandmode = 1; +} + +message Rpc_Resp_WifiSetBandMode { + int32 resp = 1; +} + +message Rpc_Req_WifiGetBandMode { +} + +message Rpc_Resp_WifiGetBandMode { + int32 resp = 1; + uint32 bandmode = 2; +} + +message Rpc_Req_WifiSetInactiveTime { + uint32 ifx = 1; + uint32 sec = 2; +} + +message Rpc_Resp_WifiSetInactiveTime { + int32 resp = 1; +} + +message Rpc_Req_WifiGetInactiveTime { + uint32 ifx = 1; +} + +message Rpc_Resp_WifiGetInactiveTime { + int32 resp = 1; + uint32 sec = 2; +} + +message Rpc_Req_WifiStaItwtSetup { + wifi_itwt_setup_config setup_config = 1; +} + +message Rpc_Resp_WifiStaItwtSetup { + int32 resp = 1; +} + +message Rpc_Req_WifiStaItwtTeardown { + int32 flow_id = 1; +} + +message Rpc_Resp_WifiStaItwtTeardown { + int32 resp = 1; +} + +message Rpc_Req_WifiStaItwtSuspend { + int32 flow_id = 1; + int32 suspend_time_ms = 2; +} + +message Rpc_Resp_WifiStaItwtSuspend { + int32 resp = 1; +} + +message Rpc_Req_WifiStaItwtGetFlowIdStatus { +} + +message Rpc_Resp_WifiStaItwtGetFlowIdStatus { + int32 resp = 1; + int32 flow_id_bitmap = 2; +} + +message Rpc_Req_WifiStaItwtSendProbeReq { + int32 timeout_ms = 1; +} + +message Rpc_Resp_WifiStaItwtSendProbeReq { + int32 resp = 1; +} + +message Rpc_Req_WifiStaItwtSetTargetWakeTimeOffset { + int32 offset_us = 1; +} + +message Rpc_Resp_WifiStaItwtSetTargetWakeTimeOffset { + int32 resp = 1; +} + +message Rpc_Req_WifiStaTwtConfig { + wifi_twt_config config = 1; +} + +message Rpc_Resp_WifiStaTwtConfig { + int32 resp = 1; +} + +message Rpc_Req_GetCoprocessorFwVersion { +} + +message Rpc_Resp_GetCoprocessorFwVersion { + int32 resp = 1; + uint32 major1 = 2; + uint32 minor1 = 3; + uint32 patch1 = 4; +} + +message Rpc_Req_SetDhcpDnsStatus { + int32 iface = 1; + int32 net_link_up = 2; + + int32 dhcp_up = 3; + bytes dhcp_ip = 4; + bytes dhcp_nm = 5; + bytes dhcp_gw = 6; + + int32 dns_up = 7; + bytes dns_ip = 8; + int32 dns_type = 9; +} + +message Rpc_Resp_SetDhcpDnsStatus { + int32 resp = 1; +} + +message Rpc_Req_GetDhcpDnsStatus { + int32 iface = 1; +} + +message Rpc_Resp_GetDhcpDnsStatus { + int32 iface = 1; + int32 net_link_up = 2; + + int32 dhcp_up = 3; + bytes dhcp_ip = 4; + bytes dhcp_nm = 5; + bytes dhcp_gw = 6; + + int32 dns_up = 7; + bytes dns_ip = 8; + int32 dns_type = 9; + int32 resp = 10; +} + +message Rpc_Req_SuppDppInit { + bool cb = 1; // enables sending of Event_SuppDpp to host via callback +} + +message Rpc_Resp_SuppDppInit { + int32 resp = 1; +} + +message Rpc_Req_SuppDppDeinit { +} + +message Rpc_Resp_SuppDppDeinit { + int32 resp = 1; +} + +message Rpc_Req_SuppDppBootstrapGen { + bytes chan_list = 1; // DPP Bootstrapping listen channels separated by commas + int32 type = 2; // Bootstrap method type, only QR Code method is supported for now. + bytes key = 3; // (Optional) 32 byte Raw Private Key for generating a Bootstrapping Public Key + bytes info = 4; // (Optional) Ancillary Device Information like Serial Number +} + +message Rpc_Resp_SuppDppBootstrapGen { + int32 resp = 1; +} + +message Rpc_Req_SuppDppStartListen { +} + +message Rpc_Resp_SuppDppStartListen { + int32 resp = 1; +} + +message Rpc_Req_SuppDppStopListen { +} + +message Rpc_Resp_SuppDppStopListen { + int32 resp = 1; +} + +message Rpc_Req_IfaceMacAddrSetGet { + bool set = 1; + uint32 type = 2; + bytes mac = 3; // only valid for set +}; + +message Rpc_Resp_IfaceMacAddrSetGet { + int32 resp = 1; + bool set = 2; + uint32 type = 3; + bytes mac = 4; +}; + +message Rpc_Req_IfaceMacAddrLenGet { + uint32 type = 1; +}; + +message Rpc_Resp_IfaceMacAddrLenGet { + int32 resp = 1; + uint32 type = 2; + uint32 len = 3; +}; + +message Rpc_Req_FeatureControl { + RpcFeature feature = 1; + RpcFeatureCommand command = 2; + RpcFeatureOption option = 3; +}; + +message Rpc_Resp_FeatureControl { + int32 resp = 1; + RpcFeature feature = 2; + RpcFeatureCommand command = 3; + RpcFeatureOption option = 4; +}; + +/** Event structure **/ + +message Rpc_Event_WifiEventNoArgs { + int32 resp = 1; + int32 event_id = 2; +} + +message Rpc_Event_ESPInit { + bytes init_data = 1; +} + +message Rpc_Event_Heartbeat { + int32 hb_num = 1; +} + +message Rpc_Event_AP_StaDisconnected { + int32 resp = 1; + bytes mac = 2; + uint32 aid = 3; + bool is_mesh_child = 4; + uint32 reason = 5; +} + +message Rpc_Event_AP_StaConnected { + int32 resp = 1; + bytes mac = 2; + uint32 aid = 3; + bool is_mesh_child = 4; +} + +message Rpc_Event_StaScanDone { + int32 resp = 1; + wifi_event_sta_scan_done scan_done = 2; +} + +message Rpc_Event_StaConnected { + int32 resp = 1; + wifi_event_sta_connected sta_connected = 2; +} + +message Rpc_Event_StaDisconnected { + int32 resp = 1; + wifi_event_sta_disconnected sta_disconnected = 2; +} + +message Rpc_Event_DhcpDnsStatus { + int32 iface = 1; + int32 net_link_up = 2; + + int32 dhcp_up = 3; + bytes dhcp_ip = 4; + bytes dhcp_nm = 5; + bytes dhcp_gw = 6; + + int32 dns_up = 7; + bytes dns_ip = 8; + int32 dns_type = 9; + int32 resp = 10; +} + +message Rpc_Event_StaItwtSetup { + int32 resp = 1; + wifi_itwt_setup_config config = 2; + int32 status = 3; + uint32 reason = 4; + uint64 target_wake_time = 5; +} + +message Rpc_Event_StaItwtTeardown { + int32 resp = 1; + uint32 flow_id = 2; + uint32 status = 3; +} + +message Rpc_Event_StaItwtSuspend { + int32 resp = 1; + int32 status = 2; + uint32 flow_id_bitmap = 3; + repeated uint32 actual_suspend_time_ms = 4; // represents uint32_t actual_suspend_time_ms[] +} + +message Rpc_Event_StaItwtProbe { + int32 resp = 1; + int32 status = 2; + uint32 reason = 3; +} + +message Rpc_Req_WifiStaEnterpriseEnable { +} + +message Rpc_Resp_WifiStaEnterpriseEnable { + int32 resp = 1; +} + +message Rpc_Req_WifiStaEnterpriseDisable { +} + +message Rpc_Resp_WifiStaEnterpriseDisable { + int32 resp = 1; +} + +message Rpc_Req_EapSetIdentity { + bytes identity = 1; + int32 len = 2; +} + +message Rpc_Resp_EapSetIdentity { + int32 resp = 1; +} + +message Rpc_Req_EapClearIdentity { +} + +message Rpc_Resp_EapClearIdentity { + int32 resp = 1; +} + +message Rpc_Req_EapSetUsername { + bytes username = 1; + int32 len = 2; +} + +message Rpc_Resp_EapSetUsername { + int32 resp = 1; +} + +message Rpc_Req_EapClearUsername { +} + +message Rpc_Resp_EapClearUsername { + int32 resp = 1; +} + +message Rpc_Req_EapSetPassword { + bytes password = 1; + int32 len = 2; +} + +message Rpc_Resp_EapSetPassword { + int32 resp = 1; +} + +message Rpc_Req_EapClearPassword { +} + +message Rpc_Resp_EapClearPassword { + int32 resp = 1; +} + +message Rpc_Req_EapSetNewPassword { + bytes new_password = 1; + int32 len = 2; +} + +message Rpc_Resp_EapSetNewPassword { + int32 resp = 1; +} + +message Rpc_Req_EapClearNewPassword { +} + +message Rpc_Resp_EapClearNewPassword { + int32 resp = 1; +} + +message Rpc_Req_EapSetCaCert { + bytes ca_cert = 1; + int32 ca_cert_len = 2; +} + +message Rpc_Resp_EapSetCaCert { + int32 resp = 1; +} + +message Rpc_Req_EapClearCaCert { +} + +message Rpc_Resp_EapClearCaCert { + int32 resp = 1; +} + +message Rpc_Req_EapSetCertificateAndKey { + bytes client_cert = 1; + int32 client_cert_len = 2; + bytes private_key = 3; + int32 private_key_len = 4; + bytes private_key_password = 5; + int32 private_key_passwd_len = 6; +} + +message Rpc_Resp_EapSetCertificateAndKey { + int32 resp = 1; +} + +message Rpc_Req_EapClearCertificateAndKey { +} + +message Rpc_Resp_EapClearCertificateAndKey { + int32 resp = 1; +} + +message Rpc_Req_EapSetDisableTimeCheck { + bool disable = 1; +} + +message Rpc_Resp_EapSetDisableTimeCheck { + int32 resp = 1; +} + +message Rpc_Req_EapGetDisableTimeCheck { +} + +message Rpc_Resp_EapGetDisableTimeCheck { + int32 resp = 1; + bool disable = 2; +} + +message Rpc_Req_EapSetTtlsPhase2Method { + int32 type = 1; +} + +message Rpc_Resp_EapSetTtlsPhase2Method { + int32 resp = 1; +} + +message Rpc_Req_EapSetSuiteb192bitCertification { + bool enable = 1; +} + +message Rpc_Resp_EapSetSuiteb192bitCertification { + int32 resp = 1; +} + +message Rpc_Req_EapSetPacFile { + bytes pac_file = 1; + int32 pac_file_len = 2; +} + +message Rpc_Resp_EapSetPacFile { + int32 resp = 1; +} + +message Rpc_Req_EapSetFastParams { + eap_fast_config eap_fast_config = 1; +} + +message Rpc_Resp_EapSetFastParams { + int32 resp = 1; +} + +message Rpc_Req_EapUseDefaultCertBundle { + bool use_default_bundle = 1; +} + +message Rpc_Resp_EapUseDefaultCertBundle { + int32 resp = 1; +} + +message Rpc_Req_WifiSetOkcSupport { + bool enable = 1; +} + +message Rpc_Resp_WifiSetOkcSupport { + int32 resp = 1; +} + +message Rpc_Req_EapSetDomainName { + bytes domain_name = 1; +} + +message Rpc_Resp_EapSetDomainName { + int32 resp = 1; +} + +message Rpc_Req_EapSetEapMethods { + int32 methods = 1; +} + +message Rpc_Resp_EapSetEapMethods { + int32 resp = 1; +} + +message Rpc_Event_SuppDppUriReady { + int32 resp = 1; + bytes qrcode = 2; // QR Code to configure the enrollee +} + +message Rpc_Event_SuppDppCfgRecvd { + int32 resp = 1; + wifi_config cfg = 2; +} + +message Rpc_Event_SuppDppFail { + int32 resp = 1; + int32 reason = 2; // failure reason +} + +message Rpc_Event_WifiDppUriReady { + int32 resp = 1; + bytes qrcode = 2; // QR Code to configure the enrollee +} + +message Rpc_Event_WifiDppCfgRecvd { + int32 resp = 1; + wifi_config cfg = 2; +} + +message Rpc_Event_WifiDppFail { + int32 resp = 1; + int32 reason = 2; // failure reason +} + +enum Rpc_GpioMode { + GPIO_MODE_DISABLE = 0; + GPIO_MODE_INPUT = 1; + GPIO_MODE_OUTPUT = 2; + GPIO_MODE_INPUT_OUTPUT = 3; +} + +enum Rpc_GpioPullMode { + GPIO_PULL_NONE = 0; + GPIO_PULL_UP = 1; + GPIO_PULL_DOWN = 2; +} + +message Rpc_GpioConfig { + uint64 pin_bit_mask = 1; + Rpc_GpioMode mode = 2; + bool pull_up_en = 3; + bool pull_down_en = 4; + int32 intr_type = 5; +} + +message Rpc_Req_GpioConfig { + Rpc_GpioConfig config = 1; +} +message Rpc_Resp_GpioConfig { + int32 resp = 1; +} + +message Rpc_Req_GpioReset { + int32 gpio_num = 1; +} +message Rpc_Resp_GpioResetPin { + int32 resp = 1; +} + +message Rpc_Req_GpioSetLevel { + int32 gpio_num = 1; + uint32 level = 2; // 0 or 1 +} +message Rpc_Resp_GpioSetLevel { + int32 resp = 1; +} + +message Rpc_Req_GpioGetLevel { + int32 gpio_num = 1; +} +message Rpc_Resp_GpioGetLevel { + int32 resp = 1; + uint32 level = 2; +} + +message Rpc_Req_GpioSetDirection { + int32 gpio_num = 1; + Rpc_GpioMode mode = 2; +} +message Rpc_Resp_GpioSetDirection { + int32 resp = 1; +} + +message Rpc_Req_GpioInputEnable { + int32 gpio_num = 1; +} +message Rpc_Resp_GpioInputEnable { + int32 resp = 1; +} + +message Rpc_Req_GpioSetPullMode { + int32 gpio_num = 1; + Rpc_GpioPullMode pull = 2; +} +message Rpc_Resp_GpioSetPullMode { + int32 resp = 1; +} + +message Rpc { + /* msg_type could be req, resp or Event */ + RpcType msg_type = 1; + + /* msg id */ + RpcId msg_id = 2; + + /* UID of message */ + uint32 uid = 3; + + /* union of all msg ids */ + oneof payload { + /** Requests **/ + Rpc_Req_GetMacAddress req_get_mac_address = 257; + Rpc_Req_SetMacAddress req_set_mac_address = 258; + Rpc_Req_GetMode req_get_wifi_mode = 259; + Rpc_Req_SetMode req_set_wifi_mode = 260; + + Rpc_Req_SuppDppInit req_supp_dpp_init = 261; + Rpc_Req_SuppDppDeinit req_supp_dpp_deinit = 262; + Rpc_Req_SuppDppBootstrapGen req_supp_dpp_bootstrap_gen = 263; + Rpc_Req_SuppDppStartListen req_supp_dpp_start_listen = 264; + Rpc_Req_SuppDppStopListen req_supp_dpp_stop_listen = 265; + + //Rpc_Req_StartSoftAP req_start_softap = 267; + //Rpc_Req_SoftAPConnectedSTA req_softap_connected_stas_list = 268; + //Rpc_Req_GetStatus req_stop_softap = 269; + Rpc_Req_OTAActivate req_ota_activate = 266; + + Rpc_Req_SetPs req_wifi_set_ps = 270; + Rpc_Req_GetPs req_wifi_get_ps = 271; + + Rpc_Req_OTABegin req_ota_begin = 272; + Rpc_Req_OTAWrite req_ota_write = 273; + Rpc_Req_OTAEnd req_ota_end = 274; + + Rpc_Req_WifiSetMaxTxPower req_set_wifi_max_tx_power = 275; + Rpc_Req_WifiGetMaxTxPower req_get_wifi_max_tx_power = 276; + Rpc_Req_ConfigHeartbeat req_config_heartbeat = 277; + + Rpc_Req_WifiInit req_wifi_init = 278; + Rpc_Req_WifiDeinit req_wifi_deinit = 279; + Rpc_Req_WifiStart req_wifi_start = 280; + Rpc_Req_WifiStop req_wifi_stop = 281; + Rpc_Req_WifiConnect req_wifi_connect = 282; + Rpc_Req_WifiDisconnect req_wifi_disconnect = 283; + Rpc_Req_WifiSetConfig req_wifi_set_config = 284; + Rpc_Req_WifiGetConfig req_wifi_get_config = 285; + + Rpc_Req_WifiScanStart req_wifi_scan_start = 286; + Rpc_Req_WifiScanStop req_wifi_scan_stop = 287; + Rpc_Req_WifiScanGetApNum req_wifi_scan_get_ap_num = 288; + Rpc_Req_WifiScanGetApRecords req_wifi_scan_get_ap_records = 289; + Rpc_Req_WifiClearApList req_wifi_clear_ap_list = 290; + + Rpc_Req_WifiRestore req_wifi_restore = 291; + Rpc_Req_WifiClearFastConnect req_wifi_clear_fast_connect = 292; + Rpc_Req_WifiDeauthSta req_wifi_deauth_sta = 293; + Rpc_Req_WifiStaGetApInfo req_wifi_sta_get_ap_info = 294; + + Rpc_Req_WifiSetProtocol req_wifi_set_protocol = 297; + Rpc_Req_WifiGetProtocol req_wifi_get_protocol = 298; + Rpc_Req_WifiSetBandwidth req_wifi_set_bandwidth = 299; + Rpc_Req_WifiGetBandwidth req_wifi_get_bandwidth = 300; + Rpc_Req_WifiSetChannel req_wifi_set_channel = 301; + Rpc_Req_WifiGetChannel req_wifi_get_channel = 302; + Rpc_Req_WifiSetCountry req_wifi_set_country = 303; + Rpc_Req_WifiGetCountry req_wifi_get_country = 304; + + Rpc_Req_WifiApGetStaList req_wifi_ap_get_sta_list = 311; + Rpc_Req_WifiApGetStaAid req_wifi_ap_get_sta_aid = 312; + Rpc_Req_WifiSetStorage req_wifi_set_storage = 313; + + Rpc_Req_WifiSetInactiveTime req_wifi_set_inactive_time = 325; + Rpc_Req_WifiGetInactiveTime req_wifi_get_inactive_time = 326; + + Rpc_Req_WifiSetCountryCode req_wifi_set_country_code = 334; + Rpc_Req_WifiGetCountryCode req_wifi_get_country_code = 335; + Rpc_Req_WifiStaGetAid req_wifi_sta_get_aid = 338; + Rpc_Req_WifiStaGetNegotiatedPhymode req_wifi_sta_get_negotiated_phymode = 339; + + Rpc_Req_WifiStaGetRssi req_wifi_sta_get_rssi = 341; + + Rpc_Req_WifiSetProtocols req_wifi_set_protocols = 342; + Rpc_Req_WifiGetProtocols req_wifi_get_protocols = 343; + Rpc_Req_WifiSetBandwidths req_wifi_set_bandwidths = 344; + Rpc_Req_WifiGetBandwidths req_wifi_get_bandwidths = 345; + + Rpc_Req_WifiSetBand req_wifi_set_band = 346; + Rpc_Req_WifiGetBand req_wifi_get_band = 347; + Rpc_Req_WifiSetBandMode req_wifi_set_bandmode = 348; + Rpc_Req_WifiGetBandMode req_wifi_get_bandmode = 349; + + Rpc_Req_GetCoprocessorFwVersion req_get_coprocessor_fwversion = 350; + + Rpc_Req_WifiScanGetApRecord req_wifi_scan_get_ap_record = 351; + + Rpc_Req_SetDhcpDnsStatus req_set_dhcp_dns = 352; + Rpc_Req_GetDhcpDnsStatus req_get_dhcp_dns = 353; + + Rpc_Req_WifiStaTwtConfig req_wifi_sta_twt_config = 354; + Rpc_Req_WifiStaItwtSetup req_wifi_sta_itwt_setup = 355; + Rpc_Req_WifiStaItwtTeardown req_wifi_sta_itwt_teardown = 356; + Rpc_Req_WifiStaItwtSuspend req_wifi_sta_itwt_suspend = 357; + Rpc_Req_WifiStaItwtGetFlowIdStatus req_wifi_sta_itwt_get_flow_id_status = 358; + Rpc_Req_WifiStaItwtSendProbeReq req_wifi_sta_itwt_send_probe_req = 359; + Rpc_Req_WifiStaItwtSetTargetWakeTimeOffset req_wifi_sta_itwt_set_target_wake_time_offset = 360; + + Rpc_Req_WifiStaEnterpriseEnable req_wifi_sta_enterprise_enable = 361; + Rpc_Req_WifiStaEnterpriseDisable req_wifi_sta_enterprise_disable = 362; + Rpc_Req_EapSetIdentity req_eap_set_identity = 363; + Rpc_Req_EapClearIdentity req_eap_clear_identity = 364; + Rpc_Req_EapSetUsername req_eap_set_username = 365; + Rpc_Req_EapClearUsername req_eap_clear_username = 366; + Rpc_Req_EapSetPassword req_eap_set_password = 367; + Rpc_Req_EapClearPassword req_eap_clear_password = 368; + Rpc_Req_EapSetNewPassword req_eap_set_new_password = 369; + Rpc_Req_EapClearNewPassword req_eap_clear_new_password = 370; + Rpc_Req_EapSetCaCert req_eap_set_ca_cert = 371; + Rpc_Req_EapClearCaCert req_eap_clear_ca_cert = 372; + Rpc_Req_EapSetCertificateAndKey req_eap_set_certificate_and_key = 373; + Rpc_Req_EapClearCertificateAndKey req_eap_clear_certificate_and_key = 374; + Rpc_Req_EapGetDisableTimeCheck req_eap_get_disable_time_check = 375; + Rpc_Req_EapSetTtlsPhase2Method req_eap_set_ttls_phase2_method = 376; + Rpc_Req_EapSetSuiteb192bitCertification req_eap_set_suiteb_certification = 377; + Rpc_Req_EapSetPacFile req_eap_set_pac_file = 378; + Rpc_Req_EapSetFastParams req_eap_set_fast_params = 379; + Rpc_Req_EapUseDefaultCertBundle req_eap_use_default_cert_bundle = 380; + Rpc_Req_WifiSetOkcSupport req_wifi_set_okc_support = 381; + Rpc_Req_EapSetDomainName req_eap_set_domain_name = 382; + Rpc_Req_EapSetDisableTimeCheck req_eap_set_disable_time_check = 383; + Rpc_Req_EapSetEapMethods req_eap_set_eap_methods = 384; + + Rpc_Req_IfaceMacAddrSetGet req_iface_mac_addr_set_get = 385; + Rpc_Req_IfaceMacAddrLenGet req_iface_mac_addr_len_get = 386; + + Rpc_Req_FeatureControl req_feature_control = 387; + + Rpc_Req_GpioConfig req_gpio_config = 388; + Rpc_Req_GpioReset req_gpio_reset = 389; + Rpc_Req_GpioSetLevel req_gpio_set_level = 390; + Rpc_Req_GpioGetLevel req_gpio_get_level = 391; + Rpc_Req_GpioSetDirection req_gpio_set_direction = 392; + Rpc_Req_GpioInputEnable req_gpio_input_enable = 393; + Rpc_Req_GpioSetPullMode req_gpio_set_pull_mode = 394; + + /** Responses **/ + Rpc_Resp_GetMacAddress resp_get_mac_address = 513; + Rpc_Resp_SetMacAddress resp_set_mac_address = 514; + Rpc_Resp_GetMode resp_get_wifi_mode = 515; + Rpc_Resp_SetMode resp_set_wifi_mode = 516; + + Rpc_Resp_SuppDppInit resp_supp_dpp_init = 517; + Rpc_Resp_SuppDppDeinit resp_supp_dpp_deinit = 518; + Rpc_Resp_SuppDppBootstrapGen resp_supp_dpp_bootstrap_gen = 519; + Rpc_Resp_SuppDppStartListen resp_supp_dpp_start_listen = 520; + Rpc_Resp_SuppDppStopListen resp_supp_dpp_stop_listen = 521; + + //Rpc_Resp_SetSoftAPVendorSpecificIE resp_set_softap_vendor_specific_ie = 522; + //Rpc_Resp_StartSoftAP resp_start_softap = 523; + //Rpc_Resp_SoftAPConnectedSTA resp_softap_connected_stas_list = 524; + //Rpc_Resp_GetStatus resp_stop_softap = 525; + Rpc_Resp_OTAActivate resp_ota_activate = 522; + + Rpc_Resp_SetPs resp_wifi_set_ps = 526; + Rpc_Resp_GetPs resp_wifi_get_ps = 527; + + Rpc_Resp_OTABegin resp_ota_begin = 528; + Rpc_Resp_OTAWrite resp_ota_write = 529; + Rpc_Resp_OTAEnd resp_ota_end = 530; + Rpc_Resp_WifiSetMaxTxPower resp_set_wifi_max_tx_power = 531; + Rpc_Resp_WifiGetMaxTxPower resp_get_wifi_max_tx_power = 532; + Rpc_Resp_ConfigHeartbeat resp_config_heartbeat = 533; + + Rpc_Resp_WifiInit resp_wifi_init = 534; + Rpc_Resp_WifiDeinit resp_wifi_deinit = 535; + Rpc_Resp_WifiStart resp_wifi_start = 536; + Rpc_Resp_WifiStop resp_wifi_stop = 537; + Rpc_Resp_WifiConnect resp_wifi_connect = 538; + Rpc_Resp_WifiDisconnect resp_wifi_disconnect = 539; + Rpc_Resp_WifiSetConfig resp_wifi_set_config = 540; + Rpc_Resp_WifiGetConfig resp_wifi_get_config = 541; + + Rpc_Resp_WifiScanStart resp_wifi_scan_start = 542; + Rpc_Resp_WifiScanStop resp_wifi_scan_stop = 543; + Rpc_Resp_WifiScanGetApNum resp_wifi_scan_get_ap_num = 544; + Rpc_Resp_WifiScanGetApRecords resp_wifi_scan_get_ap_records = 545; + Rpc_Resp_WifiClearApList resp_wifi_clear_ap_list = 546; + + Rpc_Resp_WifiRestore resp_wifi_restore = 547; + Rpc_Resp_WifiClearFastConnect resp_wifi_clear_fast_connect = 548; + Rpc_Resp_WifiDeauthSta resp_wifi_deauth_sta = 549; + Rpc_Resp_WifiStaGetApInfo resp_wifi_sta_get_ap_info = 550; + + Rpc_Resp_WifiSetProtocol resp_wifi_set_protocol = 553; + Rpc_Resp_WifiGetProtocol resp_wifi_get_protocol = 554; + Rpc_Resp_WifiSetBandwidth resp_wifi_set_bandwidth = 555; + Rpc_Resp_WifiGetBandwidth resp_wifi_get_bandwidth = 556; + Rpc_Resp_WifiSetChannel resp_wifi_set_channel = 557; + Rpc_Resp_WifiGetChannel resp_wifi_get_channel = 558; + Rpc_Resp_WifiSetCountry resp_wifi_set_country = 559; + Rpc_Resp_WifiGetCountry resp_wifi_get_country = 560; + + Rpc_Resp_WifiApGetStaList resp_wifi_ap_get_sta_list = 567; + Rpc_Resp_WifiApGetStaAid resp_wifi_ap_get_sta_aid = 568; + Rpc_Resp_WifiSetStorage resp_wifi_set_storage = 569; + + Rpc_Resp_WifiSetInactiveTime resp_wifi_set_inactive_time = 581; + Rpc_Resp_WifiGetInactiveTime resp_wifi_get_inactive_time = 582; + + Rpc_Resp_WifiSetCountryCode resp_wifi_set_country_code = 590; + Rpc_Resp_WifiGetCountryCode resp_wifi_get_country_code = 591; + Rpc_Resp_WifiStaGetAid resp_wifi_sta_get_aid = 594; + Rpc_Resp_WifiStaGetNegotiatedPhymode resp_wifi_sta_get_negotiated_phymode = 595; + + Rpc_Resp_WifiStaGetRssi resp_wifi_sta_get_rssi = 597; + + Rpc_Resp_WifiSetProtocols resp_wifi_set_protocols = 598; + Rpc_Resp_WifiGetProtocols resp_wifi_get_protocols = 599; + Rpc_Resp_WifiSetBandwidths resp_wifi_set_bandwidths = 600; + Rpc_Resp_WifiGetBandwidths resp_wifi_get_bandwidths = 601; + + Rpc_Resp_WifiSetBand resp_wifi_set_band = 602; + Rpc_Resp_WifiGetBand resp_wifi_get_band = 603; + Rpc_Resp_WifiSetBandMode resp_wifi_set_bandmode = 604; + Rpc_Resp_WifiGetBandMode resp_wifi_get_bandmode = 605; + + Rpc_Resp_GetCoprocessorFwVersion resp_get_coprocessor_fwversion = 606; + + Rpc_Resp_WifiScanGetApRecord resp_wifi_scan_get_ap_record = 607; + + Rpc_Resp_SetDhcpDnsStatus resp_set_dhcp_dns = 608; + Rpc_Resp_GetDhcpDnsStatus resp_get_dhcp_dns = 609; + + Rpc_Resp_WifiStaTwtConfig resp_wifi_sta_twt_config = 610; + Rpc_Resp_WifiStaItwtSetup resp_wifi_sta_itwt_setup = 611; + Rpc_Resp_WifiStaItwtTeardown resp_wifi_sta_itwt_teardown = 612; + Rpc_Resp_WifiStaItwtSuspend resp_wifi_sta_itwt_suspend = 613; + Rpc_Resp_WifiStaItwtGetFlowIdStatus resp_wifi_sta_itwt_get_flow_id_status = 614; + Rpc_Resp_WifiStaItwtSendProbeReq resp_wifi_sta_itwt_send_probe_req = 615; + Rpc_Resp_WifiStaItwtSetTargetWakeTimeOffset resp_wifi_sta_itwt_set_target_wake_time_offset = 616; + + Rpc_Resp_WifiStaEnterpriseEnable resp_wifi_sta_enterprise_enable = 617; + Rpc_Resp_WifiStaEnterpriseDisable resp_wifi_sta_enterprise_disable = 618; + Rpc_Resp_EapSetIdentity resp_eap_set_identity = 619; + Rpc_Resp_EapClearIdentity resp_eap_clear_identity = 620; + Rpc_Resp_EapSetUsername resp_eap_set_username = 621; + Rpc_Resp_EapClearUsername resp_eap_clear_username = 622; + Rpc_Resp_EapSetPassword resp_eap_set_password = 623; + Rpc_Resp_EapClearPassword resp_eap_clear_password = 624; + Rpc_Resp_EapSetNewPassword resp_eap_set_new_password = 625; + Rpc_Resp_EapClearNewPassword resp_eap_clear_new_password = 626; + Rpc_Resp_EapSetCaCert resp_eap_set_ca_cert = 627; + Rpc_Resp_EapClearCaCert resp_eap_clear_ca_cert = 628; + Rpc_Resp_EapSetCertificateAndKey resp_eap_set_certificate_and_key = 629; + Rpc_Resp_EapClearCertificateAndKey resp_eap_clear_certificate_and_key = 630; + Rpc_Resp_EapGetDisableTimeCheck resp_eap_get_disable_time_check = 631; + Rpc_Resp_EapSetTtlsPhase2Method resp_eap_set_ttls_phase2_method = 632; + Rpc_Resp_EapSetSuiteb192bitCertification resp_eap_set_suiteb_certification = 633; + Rpc_Resp_EapSetPacFile resp_eap_set_pac_file = 634; + Rpc_Resp_EapSetFastParams resp_eap_set_fast_params = 635; + Rpc_Resp_EapUseDefaultCertBundle resp_eap_use_default_cert_bundle = 636; + Rpc_Resp_WifiSetOkcSupport resp_wifi_set_okc_support = 637; + Rpc_Resp_EapSetDomainName resp_eap_set_domain_name = 638; + Rpc_Resp_EapSetDisableTimeCheck resp_eap_set_disable_time_check = 639; + Rpc_Resp_EapSetEapMethods resp_eap_set_eap_methods = 640; + + Rpc_Resp_IfaceMacAddrSetGet resp_iface_mac_addr_set_get = 641; + Rpc_Resp_IfaceMacAddrLenGet resp_iface_mac_addr_len_get = 642; + + Rpc_Resp_FeatureControl resp_feature_control = 643; + + Rpc_Resp_GpioConfig resp_gpio_config = 644; + Rpc_Resp_GpioResetPin resp_gpio_reset = 645; + Rpc_Resp_GpioSetLevel resp_gpio_set_level = 646; + Rpc_Resp_GpioGetLevel resp_gpio_get_level = 647; + Rpc_Resp_GpioSetDirection resp_gpio_set_direction = 648; + Rpc_Resp_GpioInputEnable resp_gpio_input_enable = 649; + Rpc_Resp_GpioSetPullMode resp_gpio_set_pull_mode = 650; + + /** Notifications **/ + Rpc_Event_ESPInit event_esp_init = 769; + Rpc_Event_Heartbeat event_heartbeat = 770; + Rpc_Event_AP_StaConnected event_ap_sta_connected = 771; + Rpc_Event_AP_StaDisconnected event_ap_sta_disconnected = 772; + Rpc_Event_WifiEventNoArgs event_wifi_event_no_args = 773; + Rpc_Event_StaScanDone event_sta_scan_done = 774; + Rpc_Event_StaConnected event_sta_connected = 775; + Rpc_Event_StaDisconnected event_sta_disconnected = 776; + Rpc_Event_DhcpDnsStatus event_dhcp_dns = 777; + Rpc_Event_StaItwtSetup event_sta_itwt_setup = 778; + Rpc_Event_StaItwtTeardown event_sta_itwt_teardown = 779; + Rpc_Event_StaItwtSuspend event_sta_itwt_suspend = 780; + Rpc_Event_StaItwtProbe event_sta_itwt_probe = 781; + Rpc_Event_SuppDppUriReady event_supp_dpp_uri_ready = 782; + Rpc_Event_SuppDppCfgRecvd event_supp_dpp_cfg_recvd = 783; + Rpc_Event_SuppDppFail event_supp_dpp_fail = 784; + Rpc_Event_WifiDppUriReady event_wifi_dpp_uri_ready = 785; + Rpc_Event_WifiDppCfgRecvd event_wifi_dpp_cfg_recvd = 786; + Rpc_Event_WifiDppFail event_wifi_dpp_fail = 787; + } +}