commit 53509e30ba91f2befe7fae439f2f830dd2da3aad Author: Yilin Sun Date: Mon Jan 2 03:16:35 2023 +0800 Initial commit. Signed-off-by: Yilin Sun diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..a0ebf94 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "lib/nanopb"] + path = lib/nanopb + url = https://github.com/nanopb/nanopb.git diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..0159697 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,23 @@ +cmake_minimum_required(VERSION 3.10) + +project(esp_nano_hosted) + +set(NH_SOURCES + "proto/esp_hosted_config.pb.c" + "src/nh_ctrl_api.c" +) + +set(NH_INCLUDES + "include" + "proto" +) + +set(NH_LIBS + "protobuf-nanopb-static" +) + +add_subdirectory(lib/nanopb) + +add_library(${PROJECT_NAME} ${NH_SOURCES}) +target_include_directories(${PROJECT_NAME} PUBLIC ${NH_INCLUDES}) +target_link_libraries(${PROJECT_NAME} PUBLIC ${NH_LIBS}) \ No newline at end of file diff --git a/include/.gitkeep b/include/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/include/nh_ctrl_api.h b/include/nh_ctrl_api.h new file mode 100644 index 0000000..526e17a --- /dev/null +++ b/include/nh_ctrl_api.h @@ -0,0 +1,73 @@ +#ifndef NH_CTRL_API_H +#define NH_CTRL_API_H + +#include +#include + +typedef enum { + NH_RET_SUCCESS = 0, + NH_RET_FAIL = 1, + NH_RET_TIMEOUT = 2, +} nh_ret_t; + +/* OSA */ +typedef void *nh_osa_semaphore_t; +typedef nh_ret_t (*nh_osa_semaphore_create_t)(void *handle, nh_osa_semaphore_t *sem); +typedef nh_ret_t (*nh_osa_semaphore_take_t)(void *handle, nh_osa_semaphore_t sem, uint32_t timeout_msec); +typedef nh_ret_t (*nh_osa_semaphore_give_t)(void *handle, nh_osa_semaphore_t sem); + +typedef nh_ret_t (*nh_osa_buf_allocate_t)(void *handle, uint8_t **buf, uint32_t buf_size); +typedef nh_ret_t (*nh_osa_buf_free_t)(void *handle, uint8_t *buf); + +/* OPS */ +typedef nh_ret_t (*nh_ops_spi_xfer_t)(void *handle, uint8_t *tx_data, uint16_t *rx_data, uint16_t len); +typedef nh_ret_t (*nh_ops_hs_poll_t)(void *handle); +typedef nh_ret_t (*nh_ops_drdy_read_t)(void *handle, bool *rdy); + +/* Event callbacks */ +typedef void (*nh_cb_init_t)(void *handle); +typedef void (*nh_cb_heartbeat_t)(void *handle); +typedef void (*nh_cb_sta_disconn_from_ap_t)(void *handle); +typedef void (*nh_cb_sta_disconn_from_soft_ap_t)(void *handle); + +typedef struct { + nh_osa_buf_allocate_t buf_allocate; + nh_osa_buf_free_t buf_free; + nh_osa_semaphore_create_t sem_create; + nh_osa_semaphore_take_t sem_take; + nh_osa_semaphore_give_t sem_give; +} nh_ctrl_api_osa_t; + +typedef struct { + nh_ops_spi_xfer_t xfer; + nh_ops_hs_poll_t handshake_poll; + nh_ops_drdy_read_t data_ready_read; +} nh_ctrl_api_ops_t; + +typedef struct { + nh_cb_init_t init; + nh_cb_heartbeat_t heartbeat; + nh_cb_sta_disconn_from_ap_t sta_disconn_from_ap; + nh_cb_sta_disconn_from_soft_ap_t sta_disconn_from_soft_ap; +} nh_ctrl_api_cb_t; + +typedef struct { + nh_ctrl_api_osa_t osa; + nh_ctrl_api_ops_t ops; + nh_ctrl_api_cb_t cb; + void *user_data; + + /* Private states */ + uint8_t *p_buf_tx; + uint8_t *p_buf_rx; + bool p_flag_request; /* !! Guarded by: p_semaphore_request */ + nh_osa_semaphore_t p_semaphore_event; + nh_osa_semaphore_t p_semaphore_request; + nh_osa_semaphore_t p_semaphore_response; +} nh_ctrl_api_t; + +nh_ret_t nh_ctrl_api_init(nh_ctrl_api_t *api); +void nh_ctrl_api_task(nh_ctrl_api_t *api); +void nh_ctrl_api_inject_data_ready(nh_ctrl_api_t *api); + +#endif // NH_CTRL_API_H diff --git a/lib/.gitkeep b/lib/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/lib/nanopb b/lib/nanopb new file mode 160000 index 0000000..b97aa65 --- /dev/null +++ b/lib/nanopb @@ -0,0 +1 @@ +Subproject commit b97aa657a706d3ba4a9a6ccca7043c9d6fe41cba diff --git a/proto/.gitkeep b/proto/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/proto/esp_hosted_config.pb.c b/proto/esp_hosted_config.pb.c new file mode 100644 index 0000000..415da0e --- /dev/null +++ b/proto/esp_hosted_config.pb.c @@ -0,0 +1,150 @@ +/* Automatically generated nanopb constant definitions */ +/* Generated by nanopb-0.4.8-dev */ + +#include "esp_hosted_config.pb.h" +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +PB_BIND(ScanResult, ScanResult, AUTO) + + +PB_BIND(ConnectedSTAList, ConnectedSTAList, AUTO) + + +PB_BIND(CtrlMsg_Req_GetMacAddress, CtrlMsg_Req_GetMacAddress, AUTO) + + +PB_BIND(CtrlMsg_Resp_GetMacAddress, CtrlMsg_Resp_GetMacAddress, AUTO) + + +PB_BIND(CtrlMsg_Req_GetMode, CtrlMsg_Req_GetMode, AUTO) + + +PB_BIND(CtrlMsg_Resp_GetMode, CtrlMsg_Resp_GetMode, AUTO) + + +PB_BIND(CtrlMsg_Req_SetMode, CtrlMsg_Req_SetMode, AUTO) + + +PB_BIND(CtrlMsg_Resp_SetMode, CtrlMsg_Resp_SetMode, AUTO) + + +PB_BIND(CtrlMsg_Req_GetStatus, CtrlMsg_Req_GetStatus, AUTO) + + +PB_BIND(CtrlMsg_Resp_GetStatus, CtrlMsg_Resp_GetStatus, AUTO) + + +PB_BIND(CtrlMsg_Req_SetMacAddress, CtrlMsg_Req_SetMacAddress, AUTO) + + +PB_BIND(CtrlMsg_Resp_SetMacAddress, CtrlMsg_Resp_SetMacAddress, AUTO) + + +PB_BIND(CtrlMsg_Req_GetAPConfig, CtrlMsg_Req_GetAPConfig, AUTO) + + +PB_BIND(CtrlMsg_Resp_GetAPConfig, CtrlMsg_Resp_GetAPConfig, AUTO) + + +PB_BIND(CtrlMsg_Req_ConnectAP, CtrlMsg_Req_ConnectAP, AUTO) + + +PB_BIND(CtrlMsg_Resp_ConnectAP, CtrlMsg_Resp_ConnectAP, AUTO) + + +PB_BIND(CtrlMsg_Req_GetSoftAPConfig, CtrlMsg_Req_GetSoftAPConfig, AUTO) + + +PB_BIND(CtrlMsg_Resp_GetSoftAPConfig, CtrlMsg_Resp_GetSoftAPConfig, AUTO) + + +PB_BIND(CtrlMsg_Req_StartSoftAP, CtrlMsg_Req_StartSoftAP, AUTO) + + +PB_BIND(CtrlMsg_Resp_StartSoftAP, CtrlMsg_Resp_StartSoftAP, AUTO) + + +PB_BIND(CtrlMsg_Req_ScanResult, CtrlMsg_Req_ScanResult, AUTO) + + +PB_BIND(CtrlMsg_Resp_ScanResult, CtrlMsg_Resp_ScanResult, AUTO) + + +PB_BIND(CtrlMsg_Req_SoftAPConnectedSTA, CtrlMsg_Req_SoftAPConnectedSTA, AUTO) + + +PB_BIND(CtrlMsg_Resp_SoftAPConnectedSTA, CtrlMsg_Resp_SoftAPConnectedSTA, AUTO) + + +PB_BIND(CtrlMsg_Req_OTABegin, CtrlMsg_Req_OTABegin, AUTO) + + +PB_BIND(CtrlMsg_Resp_OTABegin, CtrlMsg_Resp_OTABegin, AUTO) + + +PB_BIND(CtrlMsg_Req_OTAWrite, CtrlMsg_Req_OTAWrite, AUTO) + + +PB_BIND(CtrlMsg_Resp_OTAWrite, CtrlMsg_Resp_OTAWrite, AUTO) + + +PB_BIND(CtrlMsg_Req_OTAEnd, CtrlMsg_Req_OTAEnd, AUTO) + + +PB_BIND(CtrlMsg_Resp_OTAEnd, CtrlMsg_Resp_OTAEnd, AUTO) + + +PB_BIND(CtrlMsg_Req_VendorIEData, CtrlMsg_Req_VendorIEData, AUTO) + + +PB_BIND(CtrlMsg_Req_SetSoftAPVendorSpecificIE, CtrlMsg_Req_SetSoftAPVendorSpecificIE, AUTO) + + +PB_BIND(CtrlMsg_Resp_SetSoftAPVendorSpecificIE, CtrlMsg_Resp_SetSoftAPVendorSpecificIE, AUTO) + + +PB_BIND(CtrlMsg_Req_SetWifiMaxTxPower, CtrlMsg_Req_SetWifiMaxTxPower, AUTO) + + +PB_BIND(CtrlMsg_Resp_SetWifiMaxTxPower, CtrlMsg_Resp_SetWifiMaxTxPower, AUTO) + + +PB_BIND(CtrlMsg_Req_GetWifiCurrTxPower, CtrlMsg_Req_GetWifiCurrTxPower, AUTO) + + +PB_BIND(CtrlMsg_Resp_GetWifiCurrTxPower, CtrlMsg_Resp_GetWifiCurrTxPower, AUTO) + + +PB_BIND(CtrlMsg_Req_ConfigHeartbeat, CtrlMsg_Req_ConfigHeartbeat, AUTO) + + +PB_BIND(CtrlMsg_Resp_ConfigHeartbeat, CtrlMsg_Resp_ConfigHeartbeat, AUTO) + + +PB_BIND(CtrlMsg_Event_ESPInit, CtrlMsg_Event_ESPInit, AUTO) + + +PB_BIND(CtrlMsg_Event_Heartbeat, CtrlMsg_Event_Heartbeat, AUTO) + + +PB_BIND(CtrlMsg_Event_StationDisconnectFromAP, CtrlMsg_Event_StationDisconnectFromAP, AUTO) + + +PB_BIND(CtrlMsg_Event_StationDisconnectFromESPSoftAP, CtrlMsg_Event_StationDisconnectFromESPSoftAP, AUTO) + + +PB_BIND(CtrlMsg, CtrlMsg, 2) + + + + + + + + + + + + diff --git a/proto/esp_hosted_config.pb.h b/proto/esp_hosted_config.pb.h new file mode 100644 index 0000000..5290a33 --- /dev/null +++ b/proto/esp_hosted_config.pb.h @@ -0,0 +1,1241 @@ +/* Automatically generated nanopb header */ +/* Generated by nanopb-0.4.8-dev */ + +#ifndef PB_ESP_HOSTED_CONFIG_PB_H_INCLUDED +#define PB_ESP_HOSTED_CONFIG_PB_H_INCLUDED +#include + +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +/* Enum definitions */ +/* Enums similar to ESP IDF */ +typedef enum _Ctrl_VendorIEType { + Ctrl_VendorIEType_Beacon = 0, + Ctrl_VendorIEType_Probe_req = 1, + Ctrl_VendorIEType_Probe_resp = 2, + Ctrl_VendorIEType_Assoc_req = 3, + Ctrl_VendorIEType_Assoc_resp = 4 +} Ctrl_VendorIEType; + +typedef enum _Ctrl_VendorIEID { + Ctrl_VendorIEID_ID_0 = 0, + Ctrl_VendorIEID_ID_1 = 1 +} Ctrl_VendorIEID; + +typedef enum _Ctrl_WifiMode { + Ctrl_WifiMode_NONE = 0, + Ctrl_WifiMode_STA = 1, + Ctrl_WifiMode_AP = 2, + Ctrl_WifiMode_APSTA = 3 +} Ctrl_WifiMode; + +typedef enum _Ctrl_WifiBw { + Ctrl_WifiBw_BW_Invalid = 0, + Ctrl_WifiBw_HT20 = 1, + Ctrl_WifiBw_HT40 = 2 +} Ctrl_WifiBw; + +typedef enum _Ctrl_WifiPowerSave { + Ctrl_WifiPowerSave_PS_Invalid = 0, + Ctrl_WifiPowerSave_MIN_MODEM = 1, + Ctrl_WifiPowerSave_MAX_MODEM = 2 +} Ctrl_WifiPowerSave; + +typedef enum _Ctrl_WifiSecProt { + Ctrl_WifiSecProt_Open = 0, + Ctrl_WifiSecProt_WEP = 1, + Ctrl_WifiSecProt_WPA_PSK = 2, + Ctrl_WifiSecProt_WPA2_PSK = 3, + Ctrl_WifiSecProt_WPA_WPA2_PSK = 4, + Ctrl_WifiSecProt_WPA2_ENTERPRISE = 5, + Ctrl_WifiSecProt_WPA3_PSK = 6, + Ctrl_WifiSecProt_WPA2_WPA3_PSK = 7 +} Ctrl_WifiSecProt; + +/* enums for Control path */ +typedef enum _Ctrl_Status { + Ctrl_Status_Connected = 0, + Ctrl_Status_Not_Connected = 1, + Ctrl_Status_No_AP_Found = 2, + Ctrl_Status_Connection_Fail = 3, + Ctrl_Status_Invalid_Argument = 4, + Ctrl_Status_Out_Of_Range = 5 +} Ctrl_Status; + +typedef enum _CtrlMsgType { + CtrlMsgType_MsgType_Invalid = 0, + CtrlMsgType_Req = 1, + CtrlMsgType_Resp = 2, + CtrlMsgType_Event = 3, + CtrlMsgType_MsgType_Max = 4 +} CtrlMsgType; + +typedef enum _CtrlMsgId { + CtrlMsgId_MsgId_Invalid = 0, + /* * Request Msgs * */ + CtrlMsgId_Req_Base = 100, + CtrlMsgId_Req_GetMACAddress = 101, + CtrlMsgId_Req_SetMacAddress = 102, + CtrlMsgId_Req_GetWifiMode = 103, + CtrlMsgId_Req_SetWifiMode = 104, + CtrlMsgId_Req_GetAPScanList = 105, + CtrlMsgId_Req_GetAPConfig = 106, + CtrlMsgId_Req_ConnectAP = 107, + CtrlMsgId_Req_DisconnectAP = 108, + CtrlMsgId_Req_GetSoftAPConfig = 109, + CtrlMsgId_Req_SetSoftAPVendorSpecificIE = 110, + CtrlMsgId_Req_StartSoftAP = 111, + CtrlMsgId_Req_GetSoftAPConnectedSTAList = 112, + CtrlMsgId_Req_StopSoftAP = 113, + CtrlMsgId_Req_SetPowerSaveMode = 114, + CtrlMsgId_Req_GetPowerSaveMode = 115, + CtrlMsgId_Req_OTABegin = 116, + CtrlMsgId_Req_OTAWrite = 117, + CtrlMsgId_Req_OTAEnd = 118, + CtrlMsgId_Req_SetWifiMaxTxPower = 119, + CtrlMsgId_Req_GetWifiCurrTxPower = 120, + CtrlMsgId_Req_ConfigHeartbeat = 121, + /* Add new control path command response before Req_Max + and update Req_Max */ + CtrlMsgId_Req_Max = 122, + /* * Response Msgs * */ + CtrlMsgId_Resp_Base = 200, + CtrlMsgId_Resp_GetMACAddress = 201, + CtrlMsgId_Resp_SetMacAddress = 202, + CtrlMsgId_Resp_GetWifiMode = 203, + CtrlMsgId_Resp_SetWifiMode = 204, + CtrlMsgId_Resp_GetAPScanList = 205, + CtrlMsgId_Resp_GetAPConfig = 206, + CtrlMsgId_Resp_ConnectAP = 207, + CtrlMsgId_Resp_DisconnectAP = 208, + CtrlMsgId_Resp_GetSoftAPConfig = 209, + CtrlMsgId_Resp_SetSoftAPVendorSpecificIE = 210, + CtrlMsgId_Resp_StartSoftAP = 211, + CtrlMsgId_Resp_GetSoftAPConnectedSTAList = 212, + CtrlMsgId_Resp_StopSoftAP = 213, + CtrlMsgId_Resp_SetPowerSaveMode = 214, + CtrlMsgId_Resp_GetPowerSaveMode = 215, + CtrlMsgId_Resp_OTABegin = 216, + CtrlMsgId_Resp_OTAWrite = 217, + CtrlMsgId_Resp_OTAEnd = 218, + CtrlMsgId_Resp_SetWifiMaxTxPower = 219, + CtrlMsgId_Resp_GetWifiCurrTxPower = 220, + CtrlMsgId_Resp_ConfigHeartbeat = 221, + /* Add new control path command response before Resp_Max + and update Resp_Max */ + CtrlMsgId_Resp_Max = 222, + /* * Event Msgs * */ + CtrlMsgId_Event_Base = 300, + CtrlMsgId_Event_ESPInit = 301, + CtrlMsgId_Event_Heartbeat = 302, + CtrlMsgId_Event_StationDisconnectFromAP = 303, + CtrlMsgId_Event_StationDisconnectFromESPSoftAP = 304, + /* Add new control path command notification before Event_Max + and update Event_Max */ + CtrlMsgId_Event_Max = 305 +} CtrlMsgId; + +/* Struct definitions */ +/* internal supporting structures for CtrlMsg */ +typedef struct _ScanResult { + pb_callback_t ssid; + uint32_t chnl; + int32_t rssi; + pb_callback_t bssid; + Ctrl_WifiSecProt sec_prot; +} ScanResult; + +typedef struct _ConnectedSTAList { + pb_callback_t mac; + int32_t rssi; +} ConnectedSTAList; + +/* * Req/Resp structure * */ +typedef struct _CtrlMsg_Req_GetMacAddress { + int32_t mode; +} CtrlMsg_Req_GetMacAddress; + +typedef struct _CtrlMsg_Resp_GetMacAddress { + pb_callback_t mac; + int32_t resp; +} CtrlMsg_Resp_GetMacAddress; + +typedef struct _CtrlMsg_Req_GetMode { + char dummy_field; +} CtrlMsg_Req_GetMode; + +typedef struct _CtrlMsg_Resp_GetMode { + int32_t mode; + int32_t resp; +} CtrlMsg_Resp_GetMode; + +typedef struct _CtrlMsg_Req_SetMode { + int32_t mode; +} CtrlMsg_Req_SetMode; + +typedef struct _CtrlMsg_Resp_SetMode { + int32_t resp; +} CtrlMsg_Resp_SetMode; + +typedef struct _CtrlMsg_Req_GetStatus { + char dummy_field; +} CtrlMsg_Req_GetStatus; + +typedef struct _CtrlMsg_Resp_GetStatus { + int32_t resp; +} CtrlMsg_Resp_GetStatus; + +typedef struct _CtrlMsg_Req_SetMacAddress { + pb_callback_t mac; + int32_t mode; +} CtrlMsg_Req_SetMacAddress; + +typedef struct _CtrlMsg_Resp_SetMacAddress { + int32_t resp; +} CtrlMsg_Resp_SetMacAddress; + +typedef struct _CtrlMsg_Req_GetAPConfig { + char dummy_field; +} CtrlMsg_Req_GetAPConfig; + +typedef struct _CtrlMsg_Resp_GetAPConfig { + pb_callback_t ssid; + pb_callback_t bssid; + int32_t rssi; + int32_t chnl; + Ctrl_WifiSecProt sec_prot; + int32_t resp; +} CtrlMsg_Resp_GetAPConfig; + +typedef struct _CtrlMsg_Req_ConnectAP { + pb_callback_t ssid; + pb_callback_t pwd; + pb_callback_t bssid; + bool is_wpa3_supported; + int32_t listen_interval; +} CtrlMsg_Req_ConnectAP; + +typedef struct _CtrlMsg_Resp_ConnectAP { + int32_t resp; + pb_callback_t mac; +} CtrlMsg_Resp_ConnectAP; + +typedef struct _CtrlMsg_Req_GetSoftAPConfig { + char dummy_field; +} CtrlMsg_Req_GetSoftAPConfig; + +typedef struct _CtrlMsg_Resp_GetSoftAPConfig { + pb_callback_t ssid; + pb_callback_t pwd; + int32_t chnl; + Ctrl_WifiSecProt sec_prot; + int32_t max_conn; + bool ssid_hidden; + int32_t bw; + int32_t resp; +} CtrlMsg_Resp_GetSoftAPConfig; + +typedef struct _CtrlMsg_Req_StartSoftAP { + pb_callback_t ssid; + pb_callback_t pwd; + int32_t chnl; + Ctrl_WifiSecProt sec_prot; + int32_t max_conn; + bool ssid_hidden; + int32_t bw; +} CtrlMsg_Req_StartSoftAP; + +typedef struct _CtrlMsg_Resp_StartSoftAP { + int32_t resp; + pb_callback_t mac; +} CtrlMsg_Resp_StartSoftAP; + +typedef struct _CtrlMsg_Req_ScanResult { + char dummy_field; +} CtrlMsg_Req_ScanResult; + +typedef struct _CtrlMsg_Resp_ScanResult { + uint32_t count; + pb_callback_t entries; + int32_t resp; +} CtrlMsg_Resp_ScanResult; + +typedef struct _CtrlMsg_Req_SoftAPConnectedSTA { + char dummy_field; +} CtrlMsg_Req_SoftAPConnectedSTA; + +typedef struct _CtrlMsg_Resp_SoftAPConnectedSTA { + uint32_t num; + pb_callback_t stations; + int32_t resp; +} CtrlMsg_Resp_SoftAPConnectedSTA; + +typedef struct _CtrlMsg_Req_OTABegin { + char dummy_field; +} CtrlMsg_Req_OTABegin; + +typedef struct _CtrlMsg_Resp_OTABegin { + int32_t resp; +} CtrlMsg_Resp_OTABegin; + +typedef struct _CtrlMsg_Req_OTAWrite { + pb_callback_t ota_data; +} CtrlMsg_Req_OTAWrite; + +typedef struct _CtrlMsg_Resp_OTAWrite { + int32_t resp; +} CtrlMsg_Resp_OTAWrite; + +typedef struct _CtrlMsg_Req_OTAEnd { + char dummy_field; +} CtrlMsg_Req_OTAEnd; + +typedef struct _CtrlMsg_Resp_OTAEnd { + int32_t resp; +} CtrlMsg_Resp_OTAEnd; + +typedef struct _CtrlMsg_Req_VendorIEData { + int32_t element_id; + int32_t length; + pb_callback_t vendor_oui; + int32_t vendor_oui_type; + pb_callback_t payload; +} CtrlMsg_Req_VendorIEData; + +typedef struct _CtrlMsg_Req_SetSoftAPVendorSpecificIE { + bool enable; + Ctrl_VendorIEType type; + Ctrl_VendorIEID idx; + bool has_vendor_ie_data; + CtrlMsg_Req_VendorIEData vendor_ie_data; +} CtrlMsg_Req_SetSoftAPVendorSpecificIE; + +typedef struct _CtrlMsg_Resp_SetSoftAPVendorSpecificIE { + int32_t resp; +} CtrlMsg_Resp_SetSoftAPVendorSpecificIE; + +typedef struct _CtrlMsg_Req_SetWifiMaxTxPower { + int32_t wifi_max_tx_power; +} CtrlMsg_Req_SetWifiMaxTxPower; + +typedef struct _CtrlMsg_Resp_SetWifiMaxTxPower { + int32_t resp; +} CtrlMsg_Resp_SetWifiMaxTxPower; + +typedef struct _CtrlMsg_Req_GetWifiCurrTxPower { + char dummy_field; +} CtrlMsg_Req_GetWifiCurrTxPower; + +typedef struct _CtrlMsg_Resp_GetWifiCurrTxPower { + int32_t wifi_curr_tx_power; + int32_t resp; +} CtrlMsg_Resp_GetWifiCurrTxPower; + +typedef struct _CtrlMsg_Req_ConfigHeartbeat { + bool enable; + int32_t duration; +} CtrlMsg_Req_ConfigHeartbeat; + +typedef struct _CtrlMsg_Resp_ConfigHeartbeat { + int32_t resp; +} CtrlMsg_Resp_ConfigHeartbeat; + +/* * Event structure * */ +typedef struct _CtrlMsg_Event_ESPInit { + pb_callback_t init_data; +} CtrlMsg_Event_ESPInit; + +typedef struct _CtrlMsg_Event_Heartbeat { + int32_t hb_num; +} CtrlMsg_Event_Heartbeat; + +typedef struct _CtrlMsg_Event_StationDisconnectFromAP { + int32_t resp; +} CtrlMsg_Event_StationDisconnectFromAP; + +typedef struct _CtrlMsg_Event_StationDisconnectFromESPSoftAP { + int32_t resp; + pb_callback_t mac; +} CtrlMsg_Event_StationDisconnectFromESPSoftAP; + +typedef struct _CtrlMsg { + /* msg_type could be req, resp or Event */ + CtrlMsgType msg_type; + /* msg id */ + CtrlMsgId msg_id; + pb_size_t which_payload; + union { + /* * Requests * */ + CtrlMsg_Req_GetMacAddress req_get_mac_address; + CtrlMsg_Req_SetMacAddress req_set_mac_address; + CtrlMsg_Req_GetMode req_get_wifi_mode; + CtrlMsg_Req_SetMode req_set_wifi_mode; + CtrlMsg_Req_ScanResult req_scan_ap_list; + CtrlMsg_Req_GetAPConfig req_get_ap_config; + CtrlMsg_Req_ConnectAP req_connect_ap; + CtrlMsg_Req_GetStatus req_disconnect_ap; + CtrlMsg_Req_GetSoftAPConfig req_get_softap_config; + CtrlMsg_Req_SetSoftAPVendorSpecificIE req_set_softap_vendor_specific_ie; + CtrlMsg_Req_StartSoftAP req_start_softap; + CtrlMsg_Req_SoftAPConnectedSTA req_softap_connected_stas_list; + CtrlMsg_Req_GetStatus req_stop_softap; + CtrlMsg_Req_SetMode req_set_power_save_mode; + CtrlMsg_Req_GetMode req_get_power_save_mode; + CtrlMsg_Req_OTABegin req_ota_begin; + CtrlMsg_Req_OTAWrite req_ota_write; + CtrlMsg_Req_OTAEnd req_ota_end; + CtrlMsg_Req_SetWifiMaxTxPower req_set_wifi_max_tx_power; + CtrlMsg_Req_GetWifiCurrTxPower req_get_wifi_curr_tx_power; + CtrlMsg_Req_ConfigHeartbeat req_config_heartbeat; + /* * Responses * */ + CtrlMsg_Resp_GetMacAddress resp_get_mac_address; + CtrlMsg_Resp_SetMacAddress resp_set_mac_address; + CtrlMsg_Resp_GetMode resp_get_wifi_mode; + CtrlMsg_Resp_SetMode resp_set_wifi_mode; + CtrlMsg_Resp_ScanResult resp_scan_ap_list; + CtrlMsg_Resp_GetAPConfig resp_get_ap_config; + CtrlMsg_Resp_ConnectAP resp_connect_ap; + CtrlMsg_Resp_GetStatus resp_disconnect_ap; + CtrlMsg_Resp_GetSoftAPConfig resp_get_softap_config; + CtrlMsg_Resp_SetSoftAPVendorSpecificIE resp_set_softap_vendor_specific_ie; + CtrlMsg_Resp_StartSoftAP resp_start_softap; + CtrlMsg_Resp_SoftAPConnectedSTA resp_softap_connected_stas_list; + CtrlMsg_Resp_GetStatus resp_stop_softap; + CtrlMsg_Resp_SetMode resp_set_power_save_mode; + CtrlMsg_Resp_GetMode resp_get_power_save_mode; + CtrlMsg_Resp_OTABegin resp_ota_begin; + CtrlMsg_Resp_OTAWrite resp_ota_write; + CtrlMsg_Resp_OTAEnd resp_ota_end; + CtrlMsg_Resp_SetWifiMaxTxPower resp_set_wifi_max_tx_power; + CtrlMsg_Resp_GetWifiCurrTxPower resp_get_wifi_curr_tx_power; + CtrlMsg_Resp_ConfigHeartbeat resp_config_heartbeat; + /* * Notifications * */ + CtrlMsg_Event_ESPInit event_esp_init; + CtrlMsg_Event_Heartbeat event_heartbeat; + CtrlMsg_Event_StationDisconnectFromAP event_station_disconnect_from_AP; + CtrlMsg_Event_StationDisconnectFromESPSoftAP event_station_disconnect_from_ESP_SoftAP; + } payload; +} CtrlMsg; + + +#ifdef __cplusplus +extern "C" { +#endif + +/* Helper constants for enums */ +#define _Ctrl_VendorIEType_MIN Ctrl_VendorIEType_Beacon +#define _Ctrl_VendorIEType_MAX Ctrl_VendorIEType_Assoc_resp +#define _Ctrl_VendorIEType_ARRAYSIZE ((Ctrl_VendorIEType)(Ctrl_VendorIEType_Assoc_resp+1)) + +#define _Ctrl_VendorIEID_MIN Ctrl_VendorIEID_ID_0 +#define _Ctrl_VendorIEID_MAX Ctrl_VendorIEID_ID_1 +#define _Ctrl_VendorIEID_ARRAYSIZE ((Ctrl_VendorIEID)(Ctrl_VendorIEID_ID_1+1)) + +#define _Ctrl_WifiMode_MIN Ctrl_WifiMode_NONE +#define _Ctrl_WifiMode_MAX Ctrl_WifiMode_APSTA +#define _Ctrl_WifiMode_ARRAYSIZE ((Ctrl_WifiMode)(Ctrl_WifiMode_APSTA+1)) + +#define _Ctrl_WifiBw_MIN Ctrl_WifiBw_BW_Invalid +#define _Ctrl_WifiBw_MAX Ctrl_WifiBw_HT40 +#define _Ctrl_WifiBw_ARRAYSIZE ((Ctrl_WifiBw)(Ctrl_WifiBw_HT40+1)) + +#define _Ctrl_WifiPowerSave_MIN Ctrl_WifiPowerSave_PS_Invalid +#define _Ctrl_WifiPowerSave_MAX Ctrl_WifiPowerSave_MAX_MODEM +#define _Ctrl_WifiPowerSave_ARRAYSIZE ((Ctrl_WifiPowerSave)(Ctrl_WifiPowerSave_MAX_MODEM+1)) + +#define _Ctrl_WifiSecProt_MIN Ctrl_WifiSecProt_Open +#define _Ctrl_WifiSecProt_MAX Ctrl_WifiSecProt_WPA2_WPA3_PSK +#define _Ctrl_WifiSecProt_ARRAYSIZE ((Ctrl_WifiSecProt)(Ctrl_WifiSecProt_WPA2_WPA3_PSK+1)) + +#define _Ctrl_Status_MIN Ctrl_Status_Connected +#define _Ctrl_Status_MAX Ctrl_Status_Out_Of_Range +#define _Ctrl_Status_ARRAYSIZE ((Ctrl_Status)(Ctrl_Status_Out_Of_Range+1)) + +#define _CtrlMsgType_MIN CtrlMsgType_MsgType_Invalid +#define _CtrlMsgType_MAX CtrlMsgType_MsgType_Max +#define _CtrlMsgType_ARRAYSIZE ((CtrlMsgType)(CtrlMsgType_MsgType_Max+1)) + +#define _CtrlMsgId_MIN CtrlMsgId_MsgId_Invalid +#define _CtrlMsgId_MAX CtrlMsgId_Event_Max +#define _CtrlMsgId_ARRAYSIZE ((CtrlMsgId)(CtrlMsgId_Event_Max+1)) + +#define ScanResult_sec_prot_ENUMTYPE Ctrl_WifiSecProt + + + + + + + + + + + + + +#define CtrlMsg_Resp_GetAPConfig_sec_prot_ENUMTYPE Ctrl_WifiSecProt + + + + +#define CtrlMsg_Resp_GetSoftAPConfig_sec_prot_ENUMTYPE Ctrl_WifiSecProt + +#define CtrlMsg_Req_StartSoftAP_sec_prot_ENUMTYPE Ctrl_WifiSecProt + + + + + + + + + + + + + +#define CtrlMsg_Req_SetSoftAPVendorSpecificIE_type_ENUMTYPE Ctrl_VendorIEType +#define CtrlMsg_Req_SetSoftAPVendorSpecificIE_idx_ENUMTYPE Ctrl_VendorIEID + + + + + + + + + + + + +#define CtrlMsg_msg_type_ENUMTYPE CtrlMsgType +#define CtrlMsg_msg_id_ENUMTYPE CtrlMsgId + + +/* Initializer values for message structs */ +#define ScanResult_init_default {{{NULL}, NULL}, 0, 0, {{NULL}, NULL}, _Ctrl_WifiSecProt_MIN} +#define ConnectedSTAList_init_default {{{NULL}, NULL}, 0} +#define CtrlMsg_Req_GetMacAddress_init_default {0} +#define CtrlMsg_Resp_GetMacAddress_init_default {{{NULL}, NULL}, 0} +#define CtrlMsg_Req_GetMode_init_default {0} +#define CtrlMsg_Resp_GetMode_init_default {0, 0} +#define CtrlMsg_Req_SetMode_init_default {0} +#define CtrlMsg_Resp_SetMode_init_default {0} +#define CtrlMsg_Req_GetStatus_init_default {0} +#define CtrlMsg_Resp_GetStatus_init_default {0} +#define CtrlMsg_Req_SetMacAddress_init_default {{{NULL}, NULL}, 0} +#define CtrlMsg_Resp_SetMacAddress_init_default {0} +#define CtrlMsg_Req_GetAPConfig_init_default {0} +#define CtrlMsg_Resp_GetAPConfig_init_default {{{NULL}, NULL}, {{NULL}, NULL}, 0, 0, _Ctrl_WifiSecProt_MIN, 0} +#define CtrlMsg_Req_ConnectAP_init_default {{{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, 0, 0} +#define CtrlMsg_Resp_ConnectAP_init_default {0, {{NULL}, NULL}} +#define CtrlMsg_Req_GetSoftAPConfig_init_default {0} +#define CtrlMsg_Resp_GetSoftAPConfig_init_default {{{NULL}, NULL}, {{NULL}, NULL}, 0, _Ctrl_WifiSecProt_MIN, 0, 0, 0, 0} +#define CtrlMsg_Req_StartSoftAP_init_default {{{NULL}, NULL}, {{NULL}, NULL}, 0, _Ctrl_WifiSecProt_MIN, 0, 0, 0} +#define CtrlMsg_Resp_StartSoftAP_init_default {0, {{NULL}, NULL}} +#define CtrlMsg_Req_ScanResult_init_default {0} +#define CtrlMsg_Resp_ScanResult_init_default {0, {{NULL}, NULL}, 0} +#define CtrlMsg_Req_SoftAPConnectedSTA_init_default {0} +#define CtrlMsg_Resp_SoftAPConnectedSTA_init_default {0, {{NULL}, NULL}, 0} +#define CtrlMsg_Req_OTABegin_init_default {0} +#define CtrlMsg_Resp_OTABegin_init_default {0} +#define CtrlMsg_Req_OTAWrite_init_default {{{NULL}, NULL}} +#define CtrlMsg_Resp_OTAWrite_init_default {0} +#define CtrlMsg_Req_OTAEnd_init_default {0} +#define CtrlMsg_Resp_OTAEnd_init_default {0} +#define CtrlMsg_Req_VendorIEData_init_default {0, 0, {{NULL}, NULL}, 0, {{NULL}, NULL}} +#define CtrlMsg_Req_SetSoftAPVendorSpecificIE_init_default {0, _Ctrl_VendorIEType_MIN, _Ctrl_VendorIEID_MIN, false, CtrlMsg_Req_VendorIEData_init_default} +#define CtrlMsg_Resp_SetSoftAPVendorSpecificIE_init_default {0} +#define CtrlMsg_Req_SetWifiMaxTxPower_init_default {0} +#define CtrlMsg_Resp_SetWifiMaxTxPower_init_default {0} +#define CtrlMsg_Req_GetWifiCurrTxPower_init_default {0} +#define CtrlMsg_Resp_GetWifiCurrTxPower_init_default {0, 0} +#define CtrlMsg_Req_ConfigHeartbeat_init_default {0, 0} +#define CtrlMsg_Resp_ConfigHeartbeat_init_default {0} +#define CtrlMsg_Event_ESPInit_init_default {{{NULL}, NULL}} +#define CtrlMsg_Event_Heartbeat_init_default {0} +#define CtrlMsg_Event_StationDisconnectFromAP_init_default {0} +#define CtrlMsg_Event_StationDisconnectFromESPSoftAP_init_default {0, {{NULL}, NULL}} +#define CtrlMsg_init_default {_CtrlMsgType_MIN, _CtrlMsgId_MIN, 0, {CtrlMsg_Req_GetMacAddress_init_default}} +#define ScanResult_init_zero {{{NULL}, NULL}, 0, 0, {{NULL}, NULL}, _Ctrl_WifiSecProt_MIN} +#define ConnectedSTAList_init_zero {{{NULL}, NULL}, 0} +#define CtrlMsg_Req_GetMacAddress_init_zero {0} +#define CtrlMsg_Resp_GetMacAddress_init_zero {{{NULL}, NULL}, 0} +#define CtrlMsg_Req_GetMode_init_zero {0} +#define CtrlMsg_Resp_GetMode_init_zero {0, 0} +#define CtrlMsg_Req_SetMode_init_zero {0} +#define CtrlMsg_Resp_SetMode_init_zero {0} +#define CtrlMsg_Req_GetStatus_init_zero {0} +#define CtrlMsg_Resp_GetStatus_init_zero {0} +#define CtrlMsg_Req_SetMacAddress_init_zero {{{NULL}, NULL}, 0} +#define CtrlMsg_Resp_SetMacAddress_init_zero {0} +#define CtrlMsg_Req_GetAPConfig_init_zero {0} +#define CtrlMsg_Resp_GetAPConfig_init_zero {{{NULL}, NULL}, {{NULL}, NULL}, 0, 0, _Ctrl_WifiSecProt_MIN, 0} +#define CtrlMsg_Req_ConnectAP_init_zero {{{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, 0, 0} +#define CtrlMsg_Resp_ConnectAP_init_zero {0, {{NULL}, NULL}} +#define CtrlMsg_Req_GetSoftAPConfig_init_zero {0} +#define CtrlMsg_Resp_GetSoftAPConfig_init_zero {{{NULL}, NULL}, {{NULL}, NULL}, 0, _Ctrl_WifiSecProt_MIN, 0, 0, 0, 0} +#define CtrlMsg_Req_StartSoftAP_init_zero {{{NULL}, NULL}, {{NULL}, NULL}, 0, _Ctrl_WifiSecProt_MIN, 0, 0, 0} +#define CtrlMsg_Resp_StartSoftAP_init_zero {0, {{NULL}, NULL}} +#define CtrlMsg_Req_ScanResult_init_zero {0} +#define CtrlMsg_Resp_ScanResult_init_zero {0, {{NULL}, NULL}, 0} +#define CtrlMsg_Req_SoftAPConnectedSTA_init_zero {0} +#define CtrlMsg_Resp_SoftAPConnectedSTA_init_zero {0, {{NULL}, NULL}, 0} +#define CtrlMsg_Req_OTABegin_init_zero {0} +#define CtrlMsg_Resp_OTABegin_init_zero {0} +#define CtrlMsg_Req_OTAWrite_init_zero {{{NULL}, NULL}} +#define CtrlMsg_Resp_OTAWrite_init_zero {0} +#define CtrlMsg_Req_OTAEnd_init_zero {0} +#define CtrlMsg_Resp_OTAEnd_init_zero {0} +#define CtrlMsg_Req_VendorIEData_init_zero {0, 0, {{NULL}, NULL}, 0, {{NULL}, NULL}} +#define CtrlMsg_Req_SetSoftAPVendorSpecificIE_init_zero {0, _Ctrl_VendorIEType_MIN, _Ctrl_VendorIEID_MIN, false, CtrlMsg_Req_VendorIEData_init_zero} +#define CtrlMsg_Resp_SetSoftAPVendorSpecificIE_init_zero {0} +#define CtrlMsg_Req_SetWifiMaxTxPower_init_zero {0} +#define CtrlMsg_Resp_SetWifiMaxTxPower_init_zero {0} +#define CtrlMsg_Req_GetWifiCurrTxPower_init_zero {0} +#define CtrlMsg_Resp_GetWifiCurrTxPower_init_zero {0, 0} +#define CtrlMsg_Req_ConfigHeartbeat_init_zero {0, 0} +#define CtrlMsg_Resp_ConfigHeartbeat_init_zero {0} +#define CtrlMsg_Event_ESPInit_init_zero {{{NULL}, NULL}} +#define CtrlMsg_Event_Heartbeat_init_zero {0} +#define CtrlMsg_Event_StationDisconnectFromAP_init_zero {0} +#define CtrlMsg_Event_StationDisconnectFromESPSoftAP_init_zero {0, {{NULL}, NULL}} +#define CtrlMsg_init_zero {_CtrlMsgType_MIN, _CtrlMsgId_MIN, 0, {CtrlMsg_Req_GetMacAddress_init_zero}} + +/* Field tags (for use in manual encoding/decoding) */ +#define ScanResult_ssid_tag 1 +#define ScanResult_chnl_tag 2 +#define ScanResult_rssi_tag 3 +#define ScanResult_bssid_tag 4 +#define ScanResult_sec_prot_tag 5 +#define ConnectedSTAList_mac_tag 1 +#define ConnectedSTAList_rssi_tag 2 +#define CtrlMsg_Req_GetMacAddress_mode_tag 1 +#define CtrlMsg_Resp_GetMacAddress_mac_tag 1 +#define CtrlMsg_Resp_GetMacAddress_resp_tag 2 +#define CtrlMsg_Resp_GetMode_mode_tag 1 +#define CtrlMsg_Resp_GetMode_resp_tag 2 +#define CtrlMsg_Req_SetMode_mode_tag 1 +#define CtrlMsg_Resp_SetMode_resp_tag 1 +#define CtrlMsg_Resp_GetStatus_resp_tag 1 +#define CtrlMsg_Req_SetMacAddress_mac_tag 1 +#define CtrlMsg_Req_SetMacAddress_mode_tag 2 +#define CtrlMsg_Resp_SetMacAddress_resp_tag 1 +#define CtrlMsg_Resp_GetAPConfig_ssid_tag 1 +#define CtrlMsg_Resp_GetAPConfig_bssid_tag 2 +#define CtrlMsg_Resp_GetAPConfig_rssi_tag 3 +#define CtrlMsg_Resp_GetAPConfig_chnl_tag 4 +#define CtrlMsg_Resp_GetAPConfig_sec_prot_tag 5 +#define CtrlMsg_Resp_GetAPConfig_resp_tag 6 +#define CtrlMsg_Req_ConnectAP_ssid_tag 1 +#define CtrlMsg_Req_ConnectAP_pwd_tag 2 +#define CtrlMsg_Req_ConnectAP_bssid_tag 3 +#define CtrlMsg_Req_ConnectAP_is_wpa3_supported_tag 4 +#define CtrlMsg_Req_ConnectAP_listen_interval_tag 5 +#define CtrlMsg_Resp_ConnectAP_resp_tag 1 +#define CtrlMsg_Resp_ConnectAP_mac_tag 2 +#define CtrlMsg_Resp_GetSoftAPConfig_ssid_tag 1 +#define CtrlMsg_Resp_GetSoftAPConfig_pwd_tag 2 +#define CtrlMsg_Resp_GetSoftAPConfig_chnl_tag 3 +#define CtrlMsg_Resp_GetSoftAPConfig_sec_prot_tag 4 +#define CtrlMsg_Resp_GetSoftAPConfig_max_conn_tag 5 +#define CtrlMsg_Resp_GetSoftAPConfig_ssid_hidden_tag 6 +#define CtrlMsg_Resp_GetSoftAPConfig_bw_tag 7 +#define CtrlMsg_Resp_GetSoftAPConfig_resp_tag 8 +#define CtrlMsg_Req_StartSoftAP_ssid_tag 1 +#define CtrlMsg_Req_StartSoftAP_pwd_tag 2 +#define CtrlMsg_Req_StartSoftAP_chnl_tag 3 +#define CtrlMsg_Req_StartSoftAP_sec_prot_tag 4 +#define CtrlMsg_Req_StartSoftAP_max_conn_tag 5 +#define CtrlMsg_Req_StartSoftAP_ssid_hidden_tag 6 +#define CtrlMsg_Req_StartSoftAP_bw_tag 7 +#define CtrlMsg_Resp_StartSoftAP_resp_tag 1 +#define CtrlMsg_Resp_StartSoftAP_mac_tag 2 +#define CtrlMsg_Resp_ScanResult_count_tag 1 +#define CtrlMsg_Resp_ScanResult_entries_tag 2 +#define CtrlMsg_Resp_ScanResult_resp_tag 3 +#define CtrlMsg_Resp_SoftAPConnectedSTA_num_tag 1 +#define CtrlMsg_Resp_SoftAPConnectedSTA_stations_tag 2 +#define CtrlMsg_Resp_SoftAPConnectedSTA_resp_tag 3 +#define CtrlMsg_Resp_OTABegin_resp_tag 1 +#define CtrlMsg_Req_OTAWrite_ota_data_tag 1 +#define CtrlMsg_Resp_OTAWrite_resp_tag 1 +#define CtrlMsg_Resp_OTAEnd_resp_tag 1 +#define CtrlMsg_Req_VendorIEData_element_id_tag 1 +#define CtrlMsg_Req_VendorIEData_length_tag 2 +#define CtrlMsg_Req_VendorIEData_vendor_oui_tag 3 +#define CtrlMsg_Req_VendorIEData_vendor_oui_type_tag 4 +#define CtrlMsg_Req_VendorIEData_payload_tag 5 +#define CtrlMsg_Req_SetSoftAPVendorSpecificIE_enable_tag 1 +#define CtrlMsg_Req_SetSoftAPVendorSpecificIE_type_tag 2 +#define CtrlMsg_Req_SetSoftAPVendorSpecificIE_idx_tag 3 +#define CtrlMsg_Req_SetSoftAPVendorSpecificIE_vendor_ie_data_tag 4 +#define CtrlMsg_Resp_SetSoftAPVendorSpecificIE_resp_tag 1 +#define CtrlMsg_Req_SetWifiMaxTxPower_wifi_max_tx_power_tag 1 +#define CtrlMsg_Resp_SetWifiMaxTxPower_resp_tag 1 +#define CtrlMsg_Resp_GetWifiCurrTxPower_wifi_curr_tx_power_tag 1 +#define CtrlMsg_Resp_GetWifiCurrTxPower_resp_tag 2 +#define CtrlMsg_Req_ConfigHeartbeat_enable_tag 1 +#define CtrlMsg_Req_ConfigHeartbeat_duration_tag 2 +#define CtrlMsg_Resp_ConfigHeartbeat_resp_tag 1 +#define CtrlMsg_Event_ESPInit_init_data_tag 1 +#define CtrlMsg_Event_Heartbeat_hb_num_tag 1 +#define CtrlMsg_Event_StationDisconnectFromAP_resp_tag 1 +#define CtrlMsg_Event_StationDisconnectFromESPSoftAP_resp_tag 1 +#define CtrlMsg_Event_StationDisconnectFromESPSoftAP_mac_tag 2 +#define CtrlMsg_msg_type_tag 1 +#define CtrlMsg_msg_id_tag 2 +#define CtrlMsg_req_get_mac_address_tag 101 +#define CtrlMsg_req_set_mac_address_tag 102 +#define CtrlMsg_req_get_wifi_mode_tag 103 +#define CtrlMsg_req_set_wifi_mode_tag 104 +#define CtrlMsg_req_scan_ap_list_tag 105 +#define CtrlMsg_req_get_ap_config_tag 106 +#define CtrlMsg_req_connect_ap_tag 107 +#define CtrlMsg_req_disconnect_ap_tag 108 +#define CtrlMsg_req_get_softap_config_tag 109 +#define CtrlMsg_req_set_softap_vendor_specific_ie_tag 110 +#define CtrlMsg_req_start_softap_tag 111 +#define CtrlMsg_req_softap_connected_stas_list_tag 112 +#define CtrlMsg_req_stop_softap_tag 113 +#define CtrlMsg_req_set_power_save_mode_tag 114 +#define CtrlMsg_req_get_power_save_mode_tag 115 +#define CtrlMsg_req_ota_begin_tag 116 +#define CtrlMsg_req_ota_write_tag 117 +#define CtrlMsg_req_ota_end_tag 118 +#define CtrlMsg_req_set_wifi_max_tx_power_tag 119 +#define CtrlMsg_req_get_wifi_curr_tx_power_tag 120 +#define CtrlMsg_req_config_heartbeat_tag 121 +#define CtrlMsg_resp_get_mac_address_tag 201 +#define CtrlMsg_resp_set_mac_address_tag 202 +#define CtrlMsg_resp_get_wifi_mode_tag 203 +#define CtrlMsg_resp_set_wifi_mode_tag 204 +#define CtrlMsg_resp_scan_ap_list_tag 205 +#define CtrlMsg_resp_get_ap_config_tag 206 +#define CtrlMsg_resp_connect_ap_tag 207 +#define CtrlMsg_resp_disconnect_ap_tag 208 +#define CtrlMsg_resp_get_softap_config_tag 209 +#define CtrlMsg_resp_set_softap_vendor_specific_ie_tag 210 +#define CtrlMsg_resp_start_softap_tag 211 +#define CtrlMsg_resp_softap_connected_stas_list_tag 212 +#define CtrlMsg_resp_stop_softap_tag 213 +#define CtrlMsg_resp_set_power_save_mode_tag 214 +#define CtrlMsg_resp_get_power_save_mode_tag 215 +#define CtrlMsg_resp_ota_begin_tag 216 +#define CtrlMsg_resp_ota_write_tag 217 +#define CtrlMsg_resp_ota_end_tag 218 +#define CtrlMsg_resp_set_wifi_max_tx_power_tag 219 +#define CtrlMsg_resp_get_wifi_curr_tx_power_tag 220 +#define CtrlMsg_resp_config_heartbeat_tag 221 +#define CtrlMsg_event_esp_init_tag 301 +#define CtrlMsg_event_heartbeat_tag 302 +#define CtrlMsg_event_station_disconnect_from_AP_tag 303 +#define CtrlMsg_event_station_disconnect_from_ESP_SoftAP_tag 304 + +/* Struct field encoding specification for nanopb */ +#define ScanResult_FIELDLIST(X, a) \ +X(a, CALLBACK, SINGULAR, BYTES, ssid, 1) \ +X(a, STATIC, SINGULAR, UINT32, chnl, 2) \ +X(a, STATIC, SINGULAR, INT32, rssi, 3) \ +X(a, CALLBACK, SINGULAR, BYTES, bssid, 4) \ +X(a, STATIC, SINGULAR, UENUM, sec_prot, 5) +#define ScanResult_CALLBACK pb_default_field_callback +#define ScanResult_DEFAULT NULL + +#define ConnectedSTAList_FIELDLIST(X, a) \ +X(a, CALLBACK, SINGULAR, BYTES, mac, 1) \ +X(a, STATIC, SINGULAR, INT32, rssi, 2) +#define ConnectedSTAList_CALLBACK pb_default_field_callback +#define ConnectedSTAList_DEFAULT NULL + +#define CtrlMsg_Req_GetMacAddress_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, INT32, mode, 1) +#define CtrlMsg_Req_GetMacAddress_CALLBACK NULL +#define CtrlMsg_Req_GetMacAddress_DEFAULT NULL + +#define CtrlMsg_Resp_GetMacAddress_FIELDLIST(X, a) \ +X(a, CALLBACK, SINGULAR, BYTES, mac, 1) \ +X(a, STATIC, SINGULAR, INT32, resp, 2) +#define CtrlMsg_Resp_GetMacAddress_CALLBACK pb_default_field_callback +#define CtrlMsg_Resp_GetMacAddress_DEFAULT NULL + +#define CtrlMsg_Req_GetMode_FIELDLIST(X, a) \ + +#define CtrlMsg_Req_GetMode_CALLBACK NULL +#define CtrlMsg_Req_GetMode_DEFAULT NULL + +#define CtrlMsg_Resp_GetMode_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, INT32, mode, 1) \ +X(a, STATIC, SINGULAR, INT32, resp, 2) +#define CtrlMsg_Resp_GetMode_CALLBACK NULL +#define CtrlMsg_Resp_GetMode_DEFAULT NULL + +#define CtrlMsg_Req_SetMode_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, INT32, mode, 1) +#define CtrlMsg_Req_SetMode_CALLBACK NULL +#define CtrlMsg_Req_SetMode_DEFAULT NULL + +#define CtrlMsg_Resp_SetMode_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, INT32, resp, 1) +#define CtrlMsg_Resp_SetMode_CALLBACK NULL +#define CtrlMsg_Resp_SetMode_DEFAULT NULL + +#define CtrlMsg_Req_GetStatus_FIELDLIST(X, a) \ + +#define CtrlMsg_Req_GetStatus_CALLBACK NULL +#define CtrlMsg_Req_GetStatus_DEFAULT NULL + +#define CtrlMsg_Resp_GetStatus_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, INT32, resp, 1) +#define CtrlMsg_Resp_GetStatus_CALLBACK NULL +#define CtrlMsg_Resp_GetStatus_DEFAULT NULL + +#define CtrlMsg_Req_SetMacAddress_FIELDLIST(X, a) \ +X(a, CALLBACK, SINGULAR, BYTES, mac, 1) \ +X(a, STATIC, SINGULAR, INT32, mode, 2) +#define CtrlMsg_Req_SetMacAddress_CALLBACK pb_default_field_callback +#define CtrlMsg_Req_SetMacAddress_DEFAULT NULL + +#define CtrlMsg_Resp_SetMacAddress_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, INT32, resp, 1) +#define CtrlMsg_Resp_SetMacAddress_CALLBACK NULL +#define CtrlMsg_Resp_SetMacAddress_DEFAULT NULL + +#define CtrlMsg_Req_GetAPConfig_FIELDLIST(X, a) \ + +#define CtrlMsg_Req_GetAPConfig_CALLBACK NULL +#define CtrlMsg_Req_GetAPConfig_DEFAULT NULL + +#define CtrlMsg_Resp_GetAPConfig_FIELDLIST(X, a) \ +X(a, CALLBACK, SINGULAR, BYTES, ssid, 1) \ +X(a, CALLBACK, SINGULAR, BYTES, bssid, 2) \ +X(a, STATIC, SINGULAR, INT32, rssi, 3) \ +X(a, STATIC, SINGULAR, INT32, chnl, 4) \ +X(a, STATIC, SINGULAR, UENUM, sec_prot, 5) \ +X(a, STATIC, SINGULAR, INT32, resp, 6) +#define CtrlMsg_Resp_GetAPConfig_CALLBACK pb_default_field_callback +#define CtrlMsg_Resp_GetAPConfig_DEFAULT NULL + +#define CtrlMsg_Req_ConnectAP_FIELDLIST(X, a) \ +X(a, CALLBACK, SINGULAR, STRING, ssid, 1) \ +X(a, CALLBACK, SINGULAR, STRING, pwd, 2) \ +X(a, CALLBACK, SINGULAR, STRING, bssid, 3) \ +X(a, STATIC, SINGULAR, BOOL, is_wpa3_supported, 4) \ +X(a, STATIC, SINGULAR, INT32, listen_interval, 5) +#define CtrlMsg_Req_ConnectAP_CALLBACK pb_default_field_callback +#define CtrlMsg_Req_ConnectAP_DEFAULT NULL + +#define CtrlMsg_Resp_ConnectAP_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, INT32, resp, 1) \ +X(a, CALLBACK, SINGULAR, BYTES, mac, 2) +#define CtrlMsg_Resp_ConnectAP_CALLBACK pb_default_field_callback +#define CtrlMsg_Resp_ConnectAP_DEFAULT NULL + +#define CtrlMsg_Req_GetSoftAPConfig_FIELDLIST(X, a) \ + +#define CtrlMsg_Req_GetSoftAPConfig_CALLBACK NULL +#define CtrlMsg_Req_GetSoftAPConfig_DEFAULT NULL + +#define CtrlMsg_Resp_GetSoftAPConfig_FIELDLIST(X, a) \ +X(a, CALLBACK, SINGULAR, BYTES, ssid, 1) \ +X(a, CALLBACK, SINGULAR, BYTES, pwd, 2) \ +X(a, STATIC, SINGULAR, INT32, chnl, 3) \ +X(a, STATIC, SINGULAR, UENUM, sec_prot, 4) \ +X(a, STATIC, SINGULAR, INT32, max_conn, 5) \ +X(a, STATIC, SINGULAR, BOOL, ssid_hidden, 6) \ +X(a, STATIC, SINGULAR, INT32, bw, 7) \ +X(a, STATIC, SINGULAR, INT32, resp, 8) +#define CtrlMsg_Resp_GetSoftAPConfig_CALLBACK pb_default_field_callback +#define CtrlMsg_Resp_GetSoftAPConfig_DEFAULT NULL + +#define CtrlMsg_Req_StartSoftAP_FIELDLIST(X, a) \ +X(a, CALLBACK, SINGULAR, STRING, ssid, 1) \ +X(a, CALLBACK, SINGULAR, STRING, pwd, 2) \ +X(a, STATIC, SINGULAR, INT32, chnl, 3) \ +X(a, STATIC, SINGULAR, UENUM, sec_prot, 4) \ +X(a, STATIC, SINGULAR, INT32, max_conn, 5) \ +X(a, STATIC, SINGULAR, BOOL, ssid_hidden, 6) \ +X(a, STATIC, SINGULAR, INT32, bw, 7) +#define CtrlMsg_Req_StartSoftAP_CALLBACK pb_default_field_callback +#define CtrlMsg_Req_StartSoftAP_DEFAULT NULL + +#define CtrlMsg_Resp_StartSoftAP_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, INT32, resp, 1) \ +X(a, CALLBACK, SINGULAR, BYTES, mac, 2) +#define CtrlMsg_Resp_StartSoftAP_CALLBACK pb_default_field_callback +#define CtrlMsg_Resp_StartSoftAP_DEFAULT NULL + +#define CtrlMsg_Req_ScanResult_FIELDLIST(X, a) \ + +#define CtrlMsg_Req_ScanResult_CALLBACK NULL +#define CtrlMsg_Req_ScanResult_DEFAULT NULL + +#define CtrlMsg_Resp_ScanResult_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, UINT32, count, 1) \ +X(a, CALLBACK, REPEATED, MESSAGE, entries, 2) \ +X(a, STATIC, SINGULAR, INT32, resp, 3) +#define CtrlMsg_Resp_ScanResult_CALLBACK pb_default_field_callback +#define CtrlMsg_Resp_ScanResult_DEFAULT NULL +#define CtrlMsg_Resp_ScanResult_entries_MSGTYPE ScanResult + +#define CtrlMsg_Req_SoftAPConnectedSTA_FIELDLIST(X, a) \ + +#define CtrlMsg_Req_SoftAPConnectedSTA_CALLBACK NULL +#define CtrlMsg_Req_SoftAPConnectedSTA_DEFAULT NULL + +#define CtrlMsg_Resp_SoftAPConnectedSTA_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, UINT32, num, 1) \ +X(a, CALLBACK, REPEATED, MESSAGE, stations, 2) \ +X(a, STATIC, SINGULAR, INT32, resp, 3) +#define CtrlMsg_Resp_SoftAPConnectedSTA_CALLBACK pb_default_field_callback +#define CtrlMsg_Resp_SoftAPConnectedSTA_DEFAULT NULL +#define CtrlMsg_Resp_SoftAPConnectedSTA_stations_MSGTYPE ConnectedSTAList + +#define CtrlMsg_Req_OTABegin_FIELDLIST(X, a) \ + +#define CtrlMsg_Req_OTABegin_CALLBACK NULL +#define CtrlMsg_Req_OTABegin_DEFAULT NULL + +#define CtrlMsg_Resp_OTABegin_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, INT32, resp, 1) +#define CtrlMsg_Resp_OTABegin_CALLBACK NULL +#define CtrlMsg_Resp_OTABegin_DEFAULT NULL + +#define CtrlMsg_Req_OTAWrite_FIELDLIST(X, a) \ +X(a, CALLBACK, SINGULAR, BYTES, ota_data, 1) +#define CtrlMsg_Req_OTAWrite_CALLBACK pb_default_field_callback +#define CtrlMsg_Req_OTAWrite_DEFAULT NULL + +#define CtrlMsg_Resp_OTAWrite_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, INT32, resp, 1) +#define CtrlMsg_Resp_OTAWrite_CALLBACK NULL +#define CtrlMsg_Resp_OTAWrite_DEFAULT NULL + +#define CtrlMsg_Req_OTAEnd_FIELDLIST(X, a) \ + +#define CtrlMsg_Req_OTAEnd_CALLBACK NULL +#define CtrlMsg_Req_OTAEnd_DEFAULT NULL + +#define CtrlMsg_Resp_OTAEnd_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, INT32, resp, 1) +#define CtrlMsg_Resp_OTAEnd_CALLBACK NULL +#define CtrlMsg_Resp_OTAEnd_DEFAULT NULL + +#define CtrlMsg_Req_VendorIEData_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, INT32, element_id, 1) \ +X(a, STATIC, SINGULAR, INT32, length, 2) \ +X(a, CALLBACK, SINGULAR, BYTES, vendor_oui, 3) \ +X(a, STATIC, SINGULAR, INT32, vendor_oui_type, 4) \ +X(a, CALLBACK, SINGULAR, BYTES, payload, 5) +#define CtrlMsg_Req_VendorIEData_CALLBACK pb_default_field_callback +#define CtrlMsg_Req_VendorIEData_DEFAULT NULL + +#define CtrlMsg_Req_SetSoftAPVendorSpecificIE_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, BOOL, enable, 1) \ +X(a, STATIC, SINGULAR, UENUM, type, 2) \ +X(a, STATIC, SINGULAR, UENUM, idx, 3) \ +X(a, STATIC, OPTIONAL, MESSAGE, vendor_ie_data, 4) +#define CtrlMsg_Req_SetSoftAPVendorSpecificIE_CALLBACK NULL +#define CtrlMsg_Req_SetSoftAPVendorSpecificIE_DEFAULT NULL +#define CtrlMsg_Req_SetSoftAPVendorSpecificIE_vendor_ie_data_MSGTYPE CtrlMsg_Req_VendorIEData + +#define CtrlMsg_Resp_SetSoftAPVendorSpecificIE_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, INT32, resp, 1) +#define CtrlMsg_Resp_SetSoftAPVendorSpecificIE_CALLBACK NULL +#define CtrlMsg_Resp_SetSoftAPVendorSpecificIE_DEFAULT NULL + +#define CtrlMsg_Req_SetWifiMaxTxPower_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, INT32, wifi_max_tx_power, 1) +#define CtrlMsg_Req_SetWifiMaxTxPower_CALLBACK NULL +#define CtrlMsg_Req_SetWifiMaxTxPower_DEFAULT NULL + +#define CtrlMsg_Resp_SetWifiMaxTxPower_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, INT32, resp, 1) +#define CtrlMsg_Resp_SetWifiMaxTxPower_CALLBACK NULL +#define CtrlMsg_Resp_SetWifiMaxTxPower_DEFAULT NULL + +#define CtrlMsg_Req_GetWifiCurrTxPower_FIELDLIST(X, a) \ + +#define CtrlMsg_Req_GetWifiCurrTxPower_CALLBACK NULL +#define CtrlMsg_Req_GetWifiCurrTxPower_DEFAULT NULL + +#define CtrlMsg_Resp_GetWifiCurrTxPower_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, INT32, wifi_curr_tx_power, 1) \ +X(a, STATIC, SINGULAR, INT32, resp, 2) +#define CtrlMsg_Resp_GetWifiCurrTxPower_CALLBACK NULL +#define CtrlMsg_Resp_GetWifiCurrTxPower_DEFAULT NULL + +#define CtrlMsg_Req_ConfigHeartbeat_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, BOOL, enable, 1) \ +X(a, STATIC, SINGULAR, INT32, duration, 2) +#define CtrlMsg_Req_ConfigHeartbeat_CALLBACK NULL +#define CtrlMsg_Req_ConfigHeartbeat_DEFAULT NULL + +#define CtrlMsg_Resp_ConfigHeartbeat_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, INT32, resp, 1) +#define CtrlMsg_Resp_ConfigHeartbeat_CALLBACK NULL +#define CtrlMsg_Resp_ConfigHeartbeat_DEFAULT NULL + +#define CtrlMsg_Event_ESPInit_FIELDLIST(X, a) \ +X(a, CALLBACK, SINGULAR, BYTES, init_data, 1) +#define CtrlMsg_Event_ESPInit_CALLBACK pb_default_field_callback +#define CtrlMsg_Event_ESPInit_DEFAULT NULL + +#define CtrlMsg_Event_Heartbeat_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, INT32, hb_num, 1) +#define CtrlMsg_Event_Heartbeat_CALLBACK NULL +#define CtrlMsg_Event_Heartbeat_DEFAULT NULL + +#define CtrlMsg_Event_StationDisconnectFromAP_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, INT32, resp, 1) +#define CtrlMsg_Event_StationDisconnectFromAP_CALLBACK NULL +#define CtrlMsg_Event_StationDisconnectFromAP_DEFAULT NULL + +#define CtrlMsg_Event_StationDisconnectFromESPSoftAP_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, INT32, resp, 1) \ +X(a, CALLBACK, SINGULAR, BYTES, mac, 2) +#define CtrlMsg_Event_StationDisconnectFromESPSoftAP_CALLBACK pb_default_field_callback +#define CtrlMsg_Event_StationDisconnectFromESPSoftAP_DEFAULT NULL + +#define CtrlMsg_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, UENUM, msg_type, 1) \ +X(a, STATIC, SINGULAR, UENUM, msg_id, 2) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,req_get_mac_address,payload.req_get_mac_address), 101) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,req_set_mac_address,payload.req_set_mac_address), 102) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,req_get_wifi_mode,payload.req_get_wifi_mode), 103) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,req_set_wifi_mode,payload.req_set_wifi_mode), 104) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,req_scan_ap_list,payload.req_scan_ap_list), 105) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,req_get_ap_config,payload.req_get_ap_config), 106) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,req_connect_ap,payload.req_connect_ap), 107) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,req_disconnect_ap,payload.req_disconnect_ap), 108) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,req_get_softap_config,payload.req_get_softap_config), 109) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,req_set_softap_vendor_specific_ie,payload.req_set_softap_vendor_specific_ie), 110) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,req_start_softap,payload.req_start_softap), 111) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,req_softap_connected_stas_list,payload.req_softap_connected_stas_list), 112) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,req_stop_softap,payload.req_stop_softap), 113) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,req_set_power_save_mode,payload.req_set_power_save_mode), 114) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,req_get_power_save_mode,payload.req_get_power_save_mode), 115) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,req_ota_begin,payload.req_ota_begin), 116) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,req_ota_write,payload.req_ota_write), 117) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,req_ota_end,payload.req_ota_end), 118) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,req_set_wifi_max_tx_power,payload.req_set_wifi_max_tx_power), 119) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,req_get_wifi_curr_tx_power,payload.req_get_wifi_curr_tx_power), 120) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,req_config_heartbeat,payload.req_config_heartbeat), 121) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,resp_get_mac_address,payload.resp_get_mac_address), 201) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,resp_set_mac_address,payload.resp_set_mac_address), 202) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,resp_get_wifi_mode,payload.resp_get_wifi_mode), 203) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,resp_set_wifi_mode,payload.resp_set_wifi_mode), 204) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,resp_scan_ap_list,payload.resp_scan_ap_list), 205) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,resp_get_ap_config,payload.resp_get_ap_config), 206) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,resp_connect_ap,payload.resp_connect_ap), 207) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,resp_disconnect_ap,payload.resp_disconnect_ap), 208) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,resp_get_softap_config,payload.resp_get_softap_config), 209) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,resp_set_softap_vendor_specific_ie,payload.resp_set_softap_vendor_specific_ie), 210) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,resp_start_softap,payload.resp_start_softap), 211) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,resp_softap_connected_stas_list,payload.resp_softap_connected_stas_list), 212) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,resp_stop_softap,payload.resp_stop_softap), 213) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,resp_set_power_save_mode,payload.resp_set_power_save_mode), 214) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,resp_get_power_save_mode,payload.resp_get_power_save_mode), 215) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,resp_ota_begin,payload.resp_ota_begin), 216) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,resp_ota_write,payload.resp_ota_write), 217) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,resp_ota_end,payload.resp_ota_end), 218) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,resp_set_wifi_max_tx_power,payload.resp_set_wifi_max_tx_power), 219) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,resp_get_wifi_curr_tx_power,payload.resp_get_wifi_curr_tx_power), 220) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,resp_config_heartbeat,payload.resp_config_heartbeat), 221) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,event_esp_init,payload.event_esp_init), 301) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,event_heartbeat,payload.event_heartbeat), 302) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,event_station_disconnect_from_AP,payload.event_station_disconnect_from_AP), 303) \ +X(a, STATIC, ONEOF, MESSAGE, (payload,event_station_disconnect_from_ESP_SoftAP,payload.event_station_disconnect_from_ESP_SoftAP), 304) +#define CtrlMsg_CALLBACK NULL +#define CtrlMsg_DEFAULT NULL +#define CtrlMsg_payload_req_get_mac_address_MSGTYPE CtrlMsg_Req_GetMacAddress +#define CtrlMsg_payload_req_set_mac_address_MSGTYPE CtrlMsg_Req_SetMacAddress +#define CtrlMsg_payload_req_get_wifi_mode_MSGTYPE CtrlMsg_Req_GetMode +#define CtrlMsg_payload_req_set_wifi_mode_MSGTYPE CtrlMsg_Req_SetMode +#define CtrlMsg_payload_req_scan_ap_list_MSGTYPE CtrlMsg_Req_ScanResult +#define CtrlMsg_payload_req_get_ap_config_MSGTYPE CtrlMsg_Req_GetAPConfig +#define CtrlMsg_payload_req_connect_ap_MSGTYPE CtrlMsg_Req_ConnectAP +#define CtrlMsg_payload_req_disconnect_ap_MSGTYPE CtrlMsg_Req_GetStatus +#define CtrlMsg_payload_req_get_softap_config_MSGTYPE CtrlMsg_Req_GetSoftAPConfig +#define CtrlMsg_payload_req_set_softap_vendor_specific_ie_MSGTYPE CtrlMsg_Req_SetSoftAPVendorSpecificIE +#define CtrlMsg_payload_req_start_softap_MSGTYPE CtrlMsg_Req_StartSoftAP +#define CtrlMsg_payload_req_softap_connected_stas_list_MSGTYPE CtrlMsg_Req_SoftAPConnectedSTA +#define CtrlMsg_payload_req_stop_softap_MSGTYPE CtrlMsg_Req_GetStatus +#define CtrlMsg_payload_req_set_power_save_mode_MSGTYPE CtrlMsg_Req_SetMode +#define CtrlMsg_payload_req_get_power_save_mode_MSGTYPE CtrlMsg_Req_GetMode +#define CtrlMsg_payload_req_ota_begin_MSGTYPE CtrlMsg_Req_OTABegin +#define CtrlMsg_payload_req_ota_write_MSGTYPE CtrlMsg_Req_OTAWrite +#define CtrlMsg_payload_req_ota_end_MSGTYPE CtrlMsg_Req_OTAEnd +#define CtrlMsg_payload_req_set_wifi_max_tx_power_MSGTYPE CtrlMsg_Req_SetWifiMaxTxPower +#define CtrlMsg_payload_req_get_wifi_curr_tx_power_MSGTYPE CtrlMsg_Req_GetWifiCurrTxPower +#define CtrlMsg_payload_req_config_heartbeat_MSGTYPE CtrlMsg_Req_ConfigHeartbeat +#define CtrlMsg_payload_resp_get_mac_address_MSGTYPE CtrlMsg_Resp_GetMacAddress +#define CtrlMsg_payload_resp_set_mac_address_MSGTYPE CtrlMsg_Resp_SetMacAddress +#define CtrlMsg_payload_resp_get_wifi_mode_MSGTYPE CtrlMsg_Resp_GetMode +#define CtrlMsg_payload_resp_set_wifi_mode_MSGTYPE CtrlMsg_Resp_SetMode +#define CtrlMsg_payload_resp_scan_ap_list_MSGTYPE CtrlMsg_Resp_ScanResult +#define CtrlMsg_payload_resp_get_ap_config_MSGTYPE CtrlMsg_Resp_GetAPConfig +#define CtrlMsg_payload_resp_connect_ap_MSGTYPE CtrlMsg_Resp_ConnectAP +#define CtrlMsg_payload_resp_disconnect_ap_MSGTYPE CtrlMsg_Resp_GetStatus +#define CtrlMsg_payload_resp_get_softap_config_MSGTYPE CtrlMsg_Resp_GetSoftAPConfig +#define CtrlMsg_payload_resp_set_softap_vendor_specific_ie_MSGTYPE CtrlMsg_Resp_SetSoftAPVendorSpecificIE +#define CtrlMsg_payload_resp_start_softap_MSGTYPE CtrlMsg_Resp_StartSoftAP +#define CtrlMsg_payload_resp_softap_connected_stas_list_MSGTYPE CtrlMsg_Resp_SoftAPConnectedSTA +#define CtrlMsg_payload_resp_stop_softap_MSGTYPE CtrlMsg_Resp_GetStatus +#define CtrlMsg_payload_resp_set_power_save_mode_MSGTYPE CtrlMsg_Resp_SetMode +#define CtrlMsg_payload_resp_get_power_save_mode_MSGTYPE CtrlMsg_Resp_GetMode +#define CtrlMsg_payload_resp_ota_begin_MSGTYPE CtrlMsg_Resp_OTABegin +#define CtrlMsg_payload_resp_ota_write_MSGTYPE CtrlMsg_Resp_OTAWrite +#define CtrlMsg_payload_resp_ota_end_MSGTYPE CtrlMsg_Resp_OTAEnd +#define CtrlMsg_payload_resp_set_wifi_max_tx_power_MSGTYPE CtrlMsg_Resp_SetWifiMaxTxPower +#define CtrlMsg_payload_resp_get_wifi_curr_tx_power_MSGTYPE CtrlMsg_Resp_GetWifiCurrTxPower +#define CtrlMsg_payload_resp_config_heartbeat_MSGTYPE CtrlMsg_Resp_ConfigHeartbeat +#define CtrlMsg_payload_event_esp_init_MSGTYPE CtrlMsg_Event_ESPInit +#define CtrlMsg_payload_event_heartbeat_MSGTYPE CtrlMsg_Event_Heartbeat +#define CtrlMsg_payload_event_station_disconnect_from_AP_MSGTYPE CtrlMsg_Event_StationDisconnectFromAP +#define CtrlMsg_payload_event_station_disconnect_from_ESP_SoftAP_MSGTYPE CtrlMsg_Event_StationDisconnectFromESPSoftAP + +extern const pb_msgdesc_t ScanResult_msg; +extern const pb_msgdesc_t ConnectedSTAList_msg; +extern const pb_msgdesc_t CtrlMsg_Req_GetMacAddress_msg; +extern const pb_msgdesc_t CtrlMsg_Resp_GetMacAddress_msg; +extern const pb_msgdesc_t CtrlMsg_Req_GetMode_msg; +extern const pb_msgdesc_t CtrlMsg_Resp_GetMode_msg; +extern const pb_msgdesc_t CtrlMsg_Req_SetMode_msg; +extern const pb_msgdesc_t CtrlMsg_Resp_SetMode_msg; +extern const pb_msgdesc_t CtrlMsg_Req_GetStatus_msg; +extern const pb_msgdesc_t CtrlMsg_Resp_GetStatus_msg; +extern const pb_msgdesc_t CtrlMsg_Req_SetMacAddress_msg; +extern const pb_msgdesc_t CtrlMsg_Resp_SetMacAddress_msg; +extern const pb_msgdesc_t CtrlMsg_Req_GetAPConfig_msg; +extern const pb_msgdesc_t CtrlMsg_Resp_GetAPConfig_msg; +extern const pb_msgdesc_t CtrlMsg_Req_ConnectAP_msg; +extern const pb_msgdesc_t CtrlMsg_Resp_ConnectAP_msg; +extern const pb_msgdesc_t CtrlMsg_Req_GetSoftAPConfig_msg; +extern const pb_msgdesc_t CtrlMsg_Resp_GetSoftAPConfig_msg; +extern const pb_msgdesc_t CtrlMsg_Req_StartSoftAP_msg; +extern const pb_msgdesc_t CtrlMsg_Resp_StartSoftAP_msg; +extern const pb_msgdesc_t CtrlMsg_Req_ScanResult_msg; +extern const pb_msgdesc_t CtrlMsg_Resp_ScanResult_msg; +extern const pb_msgdesc_t CtrlMsg_Req_SoftAPConnectedSTA_msg; +extern const pb_msgdesc_t CtrlMsg_Resp_SoftAPConnectedSTA_msg; +extern const pb_msgdesc_t CtrlMsg_Req_OTABegin_msg; +extern const pb_msgdesc_t CtrlMsg_Resp_OTABegin_msg; +extern const pb_msgdesc_t CtrlMsg_Req_OTAWrite_msg; +extern const pb_msgdesc_t CtrlMsg_Resp_OTAWrite_msg; +extern const pb_msgdesc_t CtrlMsg_Req_OTAEnd_msg; +extern const pb_msgdesc_t CtrlMsg_Resp_OTAEnd_msg; +extern const pb_msgdesc_t CtrlMsg_Req_VendorIEData_msg; +extern const pb_msgdesc_t CtrlMsg_Req_SetSoftAPVendorSpecificIE_msg; +extern const pb_msgdesc_t CtrlMsg_Resp_SetSoftAPVendorSpecificIE_msg; +extern const pb_msgdesc_t CtrlMsg_Req_SetWifiMaxTxPower_msg; +extern const pb_msgdesc_t CtrlMsg_Resp_SetWifiMaxTxPower_msg; +extern const pb_msgdesc_t CtrlMsg_Req_GetWifiCurrTxPower_msg; +extern const pb_msgdesc_t CtrlMsg_Resp_GetWifiCurrTxPower_msg; +extern const pb_msgdesc_t CtrlMsg_Req_ConfigHeartbeat_msg; +extern const pb_msgdesc_t CtrlMsg_Resp_ConfigHeartbeat_msg; +extern const pb_msgdesc_t CtrlMsg_Event_ESPInit_msg; +extern const pb_msgdesc_t CtrlMsg_Event_Heartbeat_msg; +extern const pb_msgdesc_t CtrlMsg_Event_StationDisconnectFromAP_msg; +extern const pb_msgdesc_t CtrlMsg_Event_StationDisconnectFromESPSoftAP_msg; +extern const pb_msgdesc_t CtrlMsg_msg; + +/* Defines for backwards compatibility with code written before nanopb-0.4.0 */ +#define ScanResult_fields &ScanResult_msg +#define ConnectedSTAList_fields &ConnectedSTAList_msg +#define CtrlMsg_Req_GetMacAddress_fields &CtrlMsg_Req_GetMacAddress_msg +#define CtrlMsg_Resp_GetMacAddress_fields &CtrlMsg_Resp_GetMacAddress_msg +#define CtrlMsg_Req_GetMode_fields &CtrlMsg_Req_GetMode_msg +#define CtrlMsg_Resp_GetMode_fields &CtrlMsg_Resp_GetMode_msg +#define CtrlMsg_Req_SetMode_fields &CtrlMsg_Req_SetMode_msg +#define CtrlMsg_Resp_SetMode_fields &CtrlMsg_Resp_SetMode_msg +#define CtrlMsg_Req_GetStatus_fields &CtrlMsg_Req_GetStatus_msg +#define CtrlMsg_Resp_GetStatus_fields &CtrlMsg_Resp_GetStatus_msg +#define CtrlMsg_Req_SetMacAddress_fields &CtrlMsg_Req_SetMacAddress_msg +#define CtrlMsg_Resp_SetMacAddress_fields &CtrlMsg_Resp_SetMacAddress_msg +#define CtrlMsg_Req_GetAPConfig_fields &CtrlMsg_Req_GetAPConfig_msg +#define CtrlMsg_Resp_GetAPConfig_fields &CtrlMsg_Resp_GetAPConfig_msg +#define CtrlMsg_Req_ConnectAP_fields &CtrlMsg_Req_ConnectAP_msg +#define CtrlMsg_Resp_ConnectAP_fields &CtrlMsg_Resp_ConnectAP_msg +#define CtrlMsg_Req_GetSoftAPConfig_fields &CtrlMsg_Req_GetSoftAPConfig_msg +#define CtrlMsg_Resp_GetSoftAPConfig_fields &CtrlMsg_Resp_GetSoftAPConfig_msg +#define CtrlMsg_Req_StartSoftAP_fields &CtrlMsg_Req_StartSoftAP_msg +#define CtrlMsg_Resp_StartSoftAP_fields &CtrlMsg_Resp_StartSoftAP_msg +#define CtrlMsg_Req_ScanResult_fields &CtrlMsg_Req_ScanResult_msg +#define CtrlMsg_Resp_ScanResult_fields &CtrlMsg_Resp_ScanResult_msg +#define CtrlMsg_Req_SoftAPConnectedSTA_fields &CtrlMsg_Req_SoftAPConnectedSTA_msg +#define CtrlMsg_Resp_SoftAPConnectedSTA_fields &CtrlMsg_Resp_SoftAPConnectedSTA_msg +#define CtrlMsg_Req_OTABegin_fields &CtrlMsg_Req_OTABegin_msg +#define CtrlMsg_Resp_OTABegin_fields &CtrlMsg_Resp_OTABegin_msg +#define CtrlMsg_Req_OTAWrite_fields &CtrlMsg_Req_OTAWrite_msg +#define CtrlMsg_Resp_OTAWrite_fields &CtrlMsg_Resp_OTAWrite_msg +#define CtrlMsg_Req_OTAEnd_fields &CtrlMsg_Req_OTAEnd_msg +#define CtrlMsg_Resp_OTAEnd_fields &CtrlMsg_Resp_OTAEnd_msg +#define CtrlMsg_Req_VendorIEData_fields &CtrlMsg_Req_VendorIEData_msg +#define CtrlMsg_Req_SetSoftAPVendorSpecificIE_fields &CtrlMsg_Req_SetSoftAPVendorSpecificIE_msg +#define CtrlMsg_Resp_SetSoftAPVendorSpecificIE_fields &CtrlMsg_Resp_SetSoftAPVendorSpecificIE_msg +#define CtrlMsg_Req_SetWifiMaxTxPower_fields &CtrlMsg_Req_SetWifiMaxTxPower_msg +#define CtrlMsg_Resp_SetWifiMaxTxPower_fields &CtrlMsg_Resp_SetWifiMaxTxPower_msg +#define CtrlMsg_Req_GetWifiCurrTxPower_fields &CtrlMsg_Req_GetWifiCurrTxPower_msg +#define CtrlMsg_Resp_GetWifiCurrTxPower_fields &CtrlMsg_Resp_GetWifiCurrTxPower_msg +#define CtrlMsg_Req_ConfigHeartbeat_fields &CtrlMsg_Req_ConfigHeartbeat_msg +#define CtrlMsg_Resp_ConfigHeartbeat_fields &CtrlMsg_Resp_ConfigHeartbeat_msg +#define CtrlMsg_Event_ESPInit_fields &CtrlMsg_Event_ESPInit_msg +#define CtrlMsg_Event_Heartbeat_fields &CtrlMsg_Event_Heartbeat_msg +#define CtrlMsg_Event_StationDisconnectFromAP_fields &CtrlMsg_Event_StationDisconnectFromAP_msg +#define CtrlMsg_Event_StationDisconnectFromESPSoftAP_fields &CtrlMsg_Event_StationDisconnectFromESPSoftAP_msg +#define CtrlMsg_fields &CtrlMsg_msg + +/* Maximum encoded size of messages (where known) */ +/* ScanResult_size depends on runtime parameters */ +/* ConnectedSTAList_size depends on runtime parameters */ +/* CtrlMsg_Resp_GetMacAddress_size depends on runtime parameters */ +/* CtrlMsg_Req_SetMacAddress_size depends on runtime parameters */ +/* CtrlMsg_Resp_GetAPConfig_size depends on runtime parameters */ +/* CtrlMsg_Req_ConnectAP_size depends on runtime parameters */ +/* CtrlMsg_Resp_ConnectAP_size depends on runtime parameters */ +/* CtrlMsg_Resp_GetSoftAPConfig_size depends on runtime parameters */ +/* CtrlMsg_Req_StartSoftAP_size depends on runtime parameters */ +/* CtrlMsg_Resp_StartSoftAP_size depends on runtime parameters */ +/* CtrlMsg_Resp_ScanResult_size depends on runtime parameters */ +/* CtrlMsg_Resp_SoftAPConnectedSTA_size depends on runtime parameters */ +/* CtrlMsg_Req_OTAWrite_size depends on runtime parameters */ +/* CtrlMsg_Req_VendorIEData_size depends on runtime parameters */ +/* CtrlMsg_Req_SetSoftAPVendorSpecificIE_size depends on runtime parameters */ +/* CtrlMsg_Event_ESPInit_size depends on runtime parameters */ +/* CtrlMsg_Event_StationDisconnectFromESPSoftAP_size depends on runtime parameters */ +/* CtrlMsg_size depends on runtime parameters */ +#define CtrlMsg_Event_Heartbeat_size 11 +#define CtrlMsg_Event_StationDisconnectFromAP_size 11 +#define CtrlMsg_Req_ConfigHeartbeat_size 13 +#define CtrlMsg_Req_GetAPConfig_size 0 +#define CtrlMsg_Req_GetMacAddress_size 11 +#define CtrlMsg_Req_GetMode_size 0 +#define CtrlMsg_Req_GetSoftAPConfig_size 0 +#define CtrlMsg_Req_GetStatus_size 0 +#define CtrlMsg_Req_GetWifiCurrTxPower_size 0 +#define CtrlMsg_Req_OTABegin_size 0 +#define CtrlMsg_Req_OTAEnd_size 0 +#define CtrlMsg_Req_ScanResult_size 0 +#define CtrlMsg_Req_SetMode_size 11 +#define CtrlMsg_Req_SetWifiMaxTxPower_size 11 +#define CtrlMsg_Req_SoftAPConnectedSTA_size 0 +#define CtrlMsg_Resp_ConfigHeartbeat_size 11 +#define CtrlMsg_Resp_GetMode_size 22 +#define CtrlMsg_Resp_GetStatus_size 11 +#define CtrlMsg_Resp_GetWifiCurrTxPower_size 22 +#define CtrlMsg_Resp_OTABegin_size 11 +#define CtrlMsg_Resp_OTAEnd_size 11 +#define CtrlMsg_Resp_OTAWrite_size 11 +#define CtrlMsg_Resp_SetMacAddress_size 11 +#define CtrlMsg_Resp_SetMode_size 11 +#define CtrlMsg_Resp_SetSoftAPVendorSpecificIE_size 11 +#define CtrlMsg_Resp_SetWifiMaxTxPower_size 11 + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif diff --git a/proto/esp_hosted_config.proto b/proto/esp_hosted_config.proto new file mode 100644 index 0000000..158d244 --- /dev/null +++ b/proto/esp_hosted_config.proto @@ -0,0 +1,432 @@ +syntax = "proto3"; + +/* Enums similar to ESP IDF */ +enum Ctrl_VendorIEType { + Beacon = 0; + Probe_req = 1; + Probe_resp = 2; + Assoc_req = 3; + Assoc_resp = 4; +} + +enum Ctrl_VendorIEID { + ID_0 = 0; + ID_1 = 1; +} + +enum Ctrl_WifiMode { + NONE = 0; + STA = 1; + AP = 2; + APSTA = 3; +} + +enum Ctrl_WifiBw { + BW_Invalid = 0; + HT20 = 1; + HT40 = 2; +} + +enum Ctrl_WifiPowerSave { + PS_Invalid = 0; + MIN_MODEM = 1; + MAX_MODEM = 2; +} + +enum Ctrl_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 Ctrl_Status { + Connected = 0; + Not_Connected = 1; + No_AP_Found = 2; + Connection_Fail = 3; + Invalid_Argument = 4; + Out_Of_Range = 5; +} + + +enum CtrlMsgType { + MsgType_Invalid = 0; + Req = 1; + Resp = 2; + Event = 3; + MsgType_Max = 4; +} + +enum CtrlMsgId { + MsgId_Invalid = 0; + + /** Request Msgs **/ + Req_Base = 100; + + Req_GetMACAddress = 101; + Req_SetMacAddress = 102; + Req_GetWifiMode = 103; + Req_SetWifiMode = 104; + + Req_GetAPScanList = 105; + Req_GetAPConfig = 106; + Req_ConnectAP = 107; + Req_DisconnectAP = 108; + + Req_GetSoftAPConfig = 109; + Req_SetSoftAPVendorSpecificIE = 110; + Req_StartSoftAP = 111; + Req_GetSoftAPConnectedSTAList = 112; + Req_StopSoftAP = 113; + + Req_SetPowerSaveMode = 114; + Req_GetPowerSaveMode = 115; + + Req_OTABegin = 116; + Req_OTAWrite = 117; + Req_OTAEnd = 118; + + Req_SetWifiMaxTxPower = 119; + Req_GetWifiCurrTxPower = 120; + + Req_ConfigHeartbeat = 121; + /* Add new control path command response before Req_Max + * and update Req_Max */ + Req_Max = 122; + + /** Response Msgs **/ + Resp_Base = 200; + + Resp_GetMACAddress = 201; + Resp_SetMacAddress = 202; + Resp_GetWifiMode = 203; + Resp_SetWifiMode = 204; + + Resp_GetAPScanList = 205; + Resp_GetAPConfig = 206; + Resp_ConnectAP = 207; + Resp_DisconnectAP = 208; + + Resp_GetSoftAPConfig = 209; + Resp_SetSoftAPVendorSpecificIE = 210; + Resp_StartSoftAP = 211; + Resp_GetSoftAPConnectedSTAList = 212; + Resp_StopSoftAP = 213; + + Resp_SetPowerSaveMode = 214; + Resp_GetPowerSaveMode = 215; + + Resp_OTABegin = 216; + Resp_OTAWrite = 217; + Resp_OTAEnd = 218; + + Resp_SetWifiMaxTxPower = 219; + Resp_GetWifiCurrTxPower = 220; + + Resp_ConfigHeartbeat = 221; + /* Add new control path command response before Resp_Max + * and update Resp_Max */ + Resp_Max = 222; + + /** Event Msgs **/ + Event_Base = 300; + Event_ESPInit = 301; + Event_Heartbeat = 302; + Event_StationDisconnectFromAP = 303; + Event_StationDisconnectFromESPSoftAP = 304; + /* Add new control path command notification before Event_Max + * and update Event_Max */ + Event_Max = 305; +} + +/* internal supporting structures for CtrlMsg */ +message ScanResult { + bytes ssid = 1; + uint32 chnl = 2; + int32 rssi = 3; + bytes bssid = 4; + Ctrl_WifiSecProt sec_prot = 5; +} + +message ConnectedSTAList { + bytes mac = 1; + int32 rssi = 2; +} + + +/* Control path structures */ +/** Req/Resp structure **/ +message CtrlMsg_Req_GetMacAddress { + int32 mode = 1; +} + +message CtrlMsg_Resp_GetMacAddress { + bytes mac = 1; + int32 resp = 2; +} + +message CtrlMsg_Req_GetMode { +} + +message CtrlMsg_Resp_GetMode { + int32 mode = 1; + int32 resp = 2; +} + +message CtrlMsg_Req_SetMode { + int32 mode = 1; +} + +message CtrlMsg_Resp_SetMode { + int32 resp = 1; +} + +message CtrlMsg_Req_GetStatus { +} + +message CtrlMsg_Resp_GetStatus { + int32 resp = 1; +} + +message CtrlMsg_Req_SetMacAddress { + bytes mac = 1; + int32 mode = 2; +} + +message CtrlMsg_Resp_SetMacAddress { + int32 resp = 1; +} + +message CtrlMsg_Req_GetAPConfig { +} + +message CtrlMsg_Resp_GetAPConfig { + bytes ssid = 1; + bytes bssid = 2; + int32 rssi = 3; + int32 chnl = 4; + Ctrl_WifiSecProt sec_prot = 5; + int32 resp = 6; +} + +message CtrlMsg_Req_ConnectAP { + string ssid = 1; + string pwd = 2; + string bssid = 3; + bool is_wpa3_supported = 4; + int32 listen_interval = 5; +} + +message CtrlMsg_Resp_ConnectAP { + int32 resp = 1; + bytes mac = 2; +} + +message CtrlMsg_Req_GetSoftAPConfig { +} + +message CtrlMsg_Resp_GetSoftAPConfig { + bytes ssid = 1; + bytes pwd = 2; + int32 chnl = 3; + Ctrl_WifiSecProt sec_prot = 4; + int32 max_conn = 5; + bool ssid_hidden = 6; + int32 bw = 7; + int32 resp = 8; +} + +message CtrlMsg_Req_StartSoftAP { + string ssid = 1; + string pwd = 2; + int32 chnl = 3; + Ctrl_WifiSecProt sec_prot = 4; + int32 max_conn = 5; + bool ssid_hidden = 6; + int32 bw = 7; +} + +message CtrlMsg_Resp_StartSoftAP { + int32 resp = 1; + bytes mac = 2; +} + +message CtrlMsg_Req_ScanResult { +} + +message CtrlMsg_Resp_ScanResult { + uint32 count = 1; + repeated ScanResult entries = 2; + int32 resp = 3; +} + +message CtrlMsg_Req_SoftAPConnectedSTA { +} + +message CtrlMsg_Resp_SoftAPConnectedSTA { + uint32 num = 1; + repeated ConnectedSTAList stations = 2; + int32 resp = 3; +} + +message CtrlMsg_Req_OTABegin { +} + +message CtrlMsg_Resp_OTABegin { + int32 resp = 1; +} + +message CtrlMsg_Req_OTAWrite { + bytes ota_data = 1; +} + +message CtrlMsg_Resp_OTAWrite { + int32 resp = 1; +} + +message CtrlMsg_Req_OTAEnd { +} + +message CtrlMsg_Resp_OTAEnd { + int32 resp = 1; +} + +message CtrlMsg_Req_VendorIEData { + int32 element_id = 1; + int32 length = 2; + bytes vendor_oui = 3; + int32 vendor_oui_type = 4; + bytes payload = 5; +} + +message CtrlMsg_Req_SetSoftAPVendorSpecificIE { + bool enable = 1; + Ctrl_VendorIEType type = 2; + Ctrl_VendorIEID idx = 3; + CtrlMsg_Req_VendorIEData vendor_ie_data = 4; +} + +message CtrlMsg_Resp_SetSoftAPVendorSpecificIE { + int32 resp = 1; +} + +message CtrlMsg_Req_SetWifiMaxTxPower { + int32 wifi_max_tx_power = 1; +} + +message CtrlMsg_Resp_SetWifiMaxTxPower { + int32 resp = 1; +} + +message CtrlMsg_Req_GetWifiCurrTxPower { +} + +message CtrlMsg_Resp_GetWifiCurrTxPower { + int32 wifi_curr_tx_power = 1; + int32 resp = 2; +} + +message CtrlMsg_Req_ConfigHeartbeat { + bool enable = 1; + int32 duration = 2; +} + +message CtrlMsg_Resp_ConfigHeartbeat { + int32 resp = 1; +} + +/** Event structure **/ +message CtrlMsg_Event_ESPInit { + bytes init_data = 1; +} + +message CtrlMsg_Event_Heartbeat { + int32 hb_num = 1; +} + +message CtrlMsg_Event_StationDisconnectFromAP { + int32 resp = 1; +} + +message CtrlMsg_Event_StationDisconnectFromESPSoftAP { + int32 resp = 1; + bytes mac = 2; +} + +message CtrlMsg { + /* msg_type could be req, resp or Event */ + CtrlMsgType msg_type = 1; + + /* msg id */ + CtrlMsgId msg_id = 2; + + /* union of all msg ids */ + oneof payload { + /** Requests **/ + CtrlMsg_Req_GetMacAddress req_get_mac_address = 101; + CtrlMsg_Req_SetMacAddress req_set_mac_address = 102; + CtrlMsg_Req_GetMode req_get_wifi_mode = 103; + CtrlMsg_Req_SetMode req_set_wifi_mode = 104; + + CtrlMsg_Req_ScanResult req_scan_ap_list = 105; + CtrlMsg_Req_GetAPConfig req_get_ap_config = 106; + CtrlMsg_Req_ConnectAP req_connect_ap = 107; + CtrlMsg_Req_GetStatus req_disconnect_ap = 108; + + CtrlMsg_Req_GetSoftAPConfig req_get_softap_config = 109; + CtrlMsg_Req_SetSoftAPVendorSpecificIE req_set_softap_vendor_specific_ie = 110; + CtrlMsg_Req_StartSoftAP req_start_softap = 111; + CtrlMsg_Req_SoftAPConnectedSTA req_softap_connected_stas_list = 112; + CtrlMsg_Req_GetStatus req_stop_softap = 113; + + CtrlMsg_Req_SetMode req_set_power_save_mode = 114; + CtrlMsg_Req_GetMode req_get_power_save_mode = 115; + + CtrlMsg_Req_OTABegin req_ota_begin = 116; + CtrlMsg_Req_OTAWrite req_ota_write = 117; + CtrlMsg_Req_OTAEnd req_ota_end = 118; + + CtrlMsg_Req_SetWifiMaxTxPower req_set_wifi_max_tx_power = 119; + CtrlMsg_Req_GetWifiCurrTxPower req_get_wifi_curr_tx_power = 120; + CtrlMsg_Req_ConfigHeartbeat req_config_heartbeat = 121; + + /** Responses **/ + CtrlMsg_Resp_GetMacAddress resp_get_mac_address = 201; + CtrlMsg_Resp_SetMacAddress resp_set_mac_address = 202; + CtrlMsg_Resp_GetMode resp_get_wifi_mode = 203; + CtrlMsg_Resp_SetMode resp_set_wifi_mode = 204; + + CtrlMsg_Resp_ScanResult resp_scan_ap_list = 205; + CtrlMsg_Resp_GetAPConfig resp_get_ap_config = 206; + CtrlMsg_Resp_ConnectAP resp_connect_ap = 207; + CtrlMsg_Resp_GetStatus resp_disconnect_ap = 208; + + CtrlMsg_Resp_GetSoftAPConfig resp_get_softap_config = 209; + CtrlMsg_Resp_SetSoftAPVendorSpecificIE resp_set_softap_vendor_specific_ie = 210; + CtrlMsg_Resp_StartSoftAP resp_start_softap = 211; + CtrlMsg_Resp_SoftAPConnectedSTA resp_softap_connected_stas_list = 212; + CtrlMsg_Resp_GetStatus resp_stop_softap = 213; + + CtrlMsg_Resp_SetMode resp_set_power_save_mode = 214; + CtrlMsg_Resp_GetMode resp_get_power_save_mode = 215; + + CtrlMsg_Resp_OTABegin resp_ota_begin = 216; + CtrlMsg_Resp_OTAWrite resp_ota_write = 217; + CtrlMsg_Resp_OTAEnd resp_ota_end = 218; + CtrlMsg_Resp_SetWifiMaxTxPower resp_set_wifi_max_tx_power = 219; + CtrlMsg_Resp_GetWifiCurrTxPower resp_get_wifi_curr_tx_power = 220; + CtrlMsg_Resp_ConfigHeartbeat resp_config_heartbeat = 221; + + /** Notifications **/ + CtrlMsg_Event_ESPInit event_esp_init = 301; + CtrlMsg_Event_Heartbeat event_heartbeat = 302; + CtrlMsg_Event_StationDisconnectFromAP event_station_disconnect_from_AP = 303; + CtrlMsg_Event_StationDisconnectFromESPSoftAP event_station_disconnect_from_ESP_SoftAP = 304; + } +} \ No newline at end of file diff --git a/src/nh_ctrl_api.c b/src/nh_ctrl_api.c new file mode 100644 index 0000000..1cfff42 --- /dev/null +++ b/src/nh_ctrl_api.c @@ -0,0 +1,87 @@ +#include "nh_ctrl_api.h" + +#include "esp_hosted_config.pb.h" + +#define NH_XFER_BUF_SIZE 1600 + +#define NH_SEMAPHORE_EVENT_TIMEOUT 1000 +#define NH_SEMAPHORE_REQ_TIMEOUT 5000 + +nh_ret_t nh_ctrl_api_init(nh_ctrl_api_t *api) { + nh_ret_t ret = NH_RET_SUCCESS; + + /* Create semaphore for input events (Data Ready, Ctrl API call) */ + ret = api->osa.sem_create(api->user_data, &api->p_semaphore_event); + if (ret != NH_RET_SUCCESS) { + return ret; + } + + /* Create semaphore for control API requests, we can support maximum 1 control API request at any given time */ + ret = api->osa.sem_create(api->user_data, &api->p_semaphore_request); + if (ret != NH_RET_SUCCESS) { + return ret; + } + + /* Create semaphore for control API responses */ + ret = api->osa.sem_create(api->user_data, &api->p_semaphore_response); + if (ret != NH_RET_SUCCESS) { + return ret; + } + + /* TODO: Determine the initial value of each semaphores. */ + + /* Allocate TX and RX buffers, we should minimalize the malloc-free counts to reduce memory fragmentation */ + ret = api->osa.buf_allocate(api->user_data, &api->p_buf_tx, NH_XFER_BUF_SIZE); + if (ret != NH_RET_SUCCESS) { + return ret; + } + + ret = api->osa.buf_allocate(api->user_data, &api->p_buf_rx, NH_XFER_BUF_SIZE); + if (ret != NH_RET_SUCCESS) { + return ret; + } + + return NH_RET_SUCCESS; +} + +void nh_ctrl_api_task(nh_ctrl_api_t *api) { + nh_ret_t ret = NH_RET_SUCCESS; + + ret = api->osa.sem_take(api->user_data, api->p_semaphore_event, NH_SEMAPHORE_EVENT_TIMEOUT); + if (ret != NH_RET_SUCCESS) { + /* Failed to acquire semaphore due to error or timed out */ + return; + } + + /* Acquired semaphore, could be an event or a request, or both. */ +} + +nh_ret_t nh_ctrl_api_get_mac(nh_ctrl_api_t *api, uint8_t *mac) { + nh_ret_t ret; + + ret = api->osa.sem_take(api->user_data, api->p_semaphore_request, NH_SEMAPHORE_REQ_TIMEOUT); + if (ret != NH_RET_SUCCESS) { + /* Failed to take the request semaphore in time, maybe due to another request in under way */ + return ret; + } + + /* TODO: Encode the request */ + CtrlMsg_Req_GetMacAddress req = CtrlMsg_Req_GetMacAddress_init_zero; + req.mode = Ctrl_WifiMode_STA; + + api->p_flag_request = true; + ret = api->osa.sem_give(api->user_data, api->p_semaphore_event); + if (ret != NH_RET_SUCCESS) { + goto give_sem_and_exit; + } + + ret = api->osa.sem_take(api->user_data, api->p_semaphore_response, NH_SEMAPHORE_REQ_TIMEOUT); + if(ret != NH_RET_SUCCESS) { + goto give_sem_and_exit; + } + +give_sem_and_exit: + api->osa.sem_give(api->user_data, api->p_semaphore_request); + + return ret; +} \ No newline at end of file