mirror of
				https://github.com/espressif/esp-idf.git
				synced 2025-10-28 04:05:39 +00:00 
			
		
		
		
	 9c0ee28670
			
		
	
	9c0ee28670
	
	
	
		
			
			List of changes in components/wifi_provisioning: * Manager version is now v1.1 * .proto files and protocomm handler added for sending Wi-Fi scan command and receiving scan results * Implemented handlers for wifi_scan protocomm endpoint * Update manager context data structure to hold scan state and results * scheme_softap now runs Wi-Fi in APSTA mode * Wi-Fi is started in AP mode when provisioning is started. This is necessary for scan list to work * Docs updates with information about new wifi_scan endpoint List of changes in tools/esp_prov: * Added functions for sending and receiving protobuf messages compatible with wifi_scan protocomm endpoint * Added feature to display/refresh scan results and accept user selection at runtime * New functions: * get_version() : only returns the protocol version string * has_capability() : check is a capability is present according to proto-ver response * wifi_scan feature is provided only if the `wifi_scan` capability is present Other changes: * Replace recursive mutex with plain mutex * assert on return value of mutex give / take calls * replace all calls with macros ACQUIRE_LOCK and RELEASE_LOCK * some checks added in scanning related private APIs * free and nullify scanning context and state if service is stopped while ongoing scan
		
			
				
	
	
		
			351 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			351 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* Generated by the protocol buffer compiler.  DO NOT EDIT! */
 | |
| /* Generated from: wifi_scan.proto */
 | |
| 
 | |
| #ifndef PROTOBUF_C_wifi_5fscan_2eproto__INCLUDED
 | |
| #define PROTOBUF_C_wifi_5fscan_2eproto__INCLUDED
 | |
| 
 | |
| #include <protobuf-c/protobuf-c.h>
 | |
| 
 | |
| 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 1003001 < 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
 | |
| 
 | |
| #include "constants.pb-c.h"
 | |
| #include "wifi_constants.pb-c.h"
 | |
| 
 | |
| typedef struct _CmdScanStart CmdScanStart;
 | |
| typedef struct _RespScanStart RespScanStart;
 | |
| typedef struct _CmdScanStatus CmdScanStatus;
 | |
| typedef struct _RespScanStatus RespScanStatus;
 | |
| typedef struct _CmdScanResult CmdScanResult;
 | |
| typedef struct _WiFiScanResult WiFiScanResult;
 | |
| typedef struct _RespScanResult RespScanResult;
 | |
| typedef struct _WiFiScanPayload WiFiScanPayload;
 | |
| 
 | |
| 
 | |
| /* --- enums --- */
 | |
| 
 | |
| typedef enum _WiFiScanMsgType {
 | |
|   WI_FI_SCAN_MSG_TYPE__TypeCmdScanStart = 0,
 | |
|   WI_FI_SCAN_MSG_TYPE__TypeRespScanStart = 1,
 | |
|   WI_FI_SCAN_MSG_TYPE__TypeCmdScanStatus = 2,
 | |
|   WI_FI_SCAN_MSG_TYPE__TypeRespScanStatus = 3,
 | |
|   WI_FI_SCAN_MSG_TYPE__TypeCmdScanResult = 4,
 | |
|   WI_FI_SCAN_MSG_TYPE__TypeRespScanResult = 5
 | |
|     PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(WI_FI_SCAN_MSG_TYPE)
 | |
| } WiFiScanMsgType;
 | |
| 
 | |
| /* --- messages --- */
 | |
| 
 | |
| struct  _CmdScanStart
 | |
| {
 | |
|   ProtobufCMessage base;
 | |
|   protobuf_c_boolean blocking;
 | |
|   protobuf_c_boolean passive;
 | |
|   uint32_t group_channels;
 | |
|   uint32_t period_ms;
 | |
| };
 | |
| #define CMD_SCAN_START__INIT \
 | |
|  { PROTOBUF_C_MESSAGE_INIT (&cmd_scan_start__descriptor) \
 | |
|     , 0, 0, 0, 0 }
 | |
| 
 | |
| 
 | |
| struct  _RespScanStart
 | |
| {
 | |
|   ProtobufCMessage base;
 | |
| };
 | |
| #define RESP_SCAN_START__INIT \
 | |
|  { PROTOBUF_C_MESSAGE_INIT (&resp_scan_start__descriptor) \
 | |
|      }
 | |
| 
 | |
| 
 | |
| struct  _CmdScanStatus
 | |
| {
 | |
|   ProtobufCMessage base;
 | |
| };
 | |
| #define CMD_SCAN_STATUS__INIT \
 | |
|  { PROTOBUF_C_MESSAGE_INIT (&cmd_scan_status__descriptor) \
 | |
|      }
 | |
| 
 | |
| 
 | |
| struct  _RespScanStatus
 | |
| {
 | |
|   ProtobufCMessage base;
 | |
|   protobuf_c_boolean scan_finished;
 | |
|   uint32_t result_count;
 | |
| };
 | |
| #define RESP_SCAN_STATUS__INIT \
 | |
|  { PROTOBUF_C_MESSAGE_INIT (&resp_scan_status__descriptor) \
 | |
|     , 0, 0 }
 | |
| 
 | |
| 
 | |
| struct  _CmdScanResult
 | |
| {
 | |
|   ProtobufCMessage base;
 | |
|   uint32_t start_index;
 | |
|   uint32_t count;
 | |
| };
 | |
| #define CMD_SCAN_RESULT__INIT \
 | |
|  { PROTOBUF_C_MESSAGE_INIT (&cmd_scan_result__descriptor) \
 | |
|     , 0, 0 }
 | |
| 
 | |
| 
 | |
| struct  _WiFiScanResult
 | |
| {
 | |
|   ProtobufCMessage base;
 | |
|   ProtobufCBinaryData ssid;
 | |
|   uint32_t channel;
 | |
|   int32_t rssi;
 | |
|   ProtobufCBinaryData bssid;
 | |
|   WifiAuthMode auth;
 | |
| };
 | |
| #define WI_FI_SCAN_RESULT__INIT \
 | |
|  { PROTOBUF_C_MESSAGE_INIT (&wi_fi_scan_result__descriptor) \
 | |
|     , {0,NULL}, 0, 0, {0,NULL}, WIFI_AUTH_MODE__Open }
 | |
| 
 | |
| 
 | |
| struct  _RespScanResult
 | |
| {
 | |
|   ProtobufCMessage base;
 | |
|   size_t n_entries;
 | |
|   WiFiScanResult **entries;
 | |
| };
 | |
| #define RESP_SCAN_RESULT__INIT \
 | |
|  { PROTOBUF_C_MESSAGE_INIT (&resp_scan_result__descriptor) \
 | |
|     , 0,NULL }
 | |
| 
 | |
| 
 | |
| typedef enum {
 | |
|   WI_FI_SCAN_PAYLOAD__PAYLOAD__NOT_SET = 0,
 | |
|   WI_FI_SCAN_PAYLOAD__PAYLOAD_CMD_SCAN_START = 10,
 | |
|   WI_FI_SCAN_PAYLOAD__PAYLOAD_RESP_SCAN_START = 11,
 | |
|   WI_FI_SCAN_PAYLOAD__PAYLOAD_CMD_SCAN_STATUS = 12,
 | |
|   WI_FI_SCAN_PAYLOAD__PAYLOAD_RESP_SCAN_STATUS = 13,
 | |
|   WI_FI_SCAN_PAYLOAD__PAYLOAD_CMD_SCAN_RESULT = 14,
 | |
|   WI_FI_SCAN_PAYLOAD__PAYLOAD_RESP_SCAN_RESULT = 15
 | |
|     PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(WI_FI_SCAN_PAYLOAD__PAYLOAD)
 | |
| } WiFiScanPayload__PayloadCase;
 | |
| 
 | |
| struct  _WiFiScanPayload
 | |
| {
 | |
|   ProtobufCMessage base;
 | |
|   WiFiScanMsgType msg;
 | |
|   Status status;
 | |
|   WiFiScanPayload__PayloadCase payload_case;
 | |
|   union {
 | |
|     CmdScanStart *cmd_scan_start;
 | |
|     RespScanStart *resp_scan_start;
 | |
|     CmdScanStatus *cmd_scan_status;
 | |
|     RespScanStatus *resp_scan_status;
 | |
|     CmdScanResult *cmd_scan_result;
 | |
|     RespScanResult *resp_scan_result;
 | |
|   };
 | |
| };
 | |
| #define WI_FI_SCAN_PAYLOAD__INIT \
 | |
|  { PROTOBUF_C_MESSAGE_INIT (&wi_fi_scan_payload__descriptor) \
 | |
|     , WI_FI_SCAN_MSG_TYPE__TypeCmdScanStart, STATUS__Success, WI_FI_SCAN_PAYLOAD__PAYLOAD__NOT_SET, {0} }
 | |
| 
 | |
| 
 | |
| /* CmdScanStart methods */
 | |
| void   cmd_scan_start__init
 | |
|                      (CmdScanStart         *message);
 | |
| size_t cmd_scan_start__get_packed_size
 | |
|                      (const CmdScanStart   *message);
 | |
| size_t cmd_scan_start__pack
 | |
|                      (const CmdScanStart   *message,
 | |
|                       uint8_t             *out);
 | |
| size_t cmd_scan_start__pack_to_buffer
 | |
|                      (const CmdScanStart   *message,
 | |
|                       ProtobufCBuffer     *buffer);
 | |
| CmdScanStart *
 | |
|        cmd_scan_start__unpack
 | |
|                      (ProtobufCAllocator  *allocator,
 | |
|                       size_t               len,
 | |
|                       const uint8_t       *data);
 | |
| void   cmd_scan_start__free_unpacked
 | |
|                      (CmdScanStart *message,
 | |
|                       ProtobufCAllocator *allocator);
 | |
| /* RespScanStart methods */
 | |
| void   resp_scan_start__init
 | |
|                      (RespScanStart         *message);
 | |
| size_t resp_scan_start__get_packed_size
 | |
|                      (const RespScanStart   *message);
 | |
| size_t resp_scan_start__pack
 | |
|                      (const RespScanStart   *message,
 | |
|                       uint8_t             *out);
 | |
| size_t resp_scan_start__pack_to_buffer
 | |
|                      (const RespScanStart   *message,
 | |
|                       ProtobufCBuffer     *buffer);
 | |
| RespScanStart *
 | |
|        resp_scan_start__unpack
 | |
|                      (ProtobufCAllocator  *allocator,
 | |
|                       size_t               len,
 | |
|                       const uint8_t       *data);
 | |
| void   resp_scan_start__free_unpacked
 | |
|                      (RespScanStart *message,
 | |
|                       ProtobufCAllocator *allocator);
 | |
| /* CmdScanStatus methods */
 | |
| void   cmd_scan_status__init
 | |
|                      (CmdScanStatus         *message);
 | |
| size_t cmd_scan_status__get_packed_size
 | |
|                      (const CmdScanStatus   *message);
 | |
| size_t cmd_scan_status__pack
 | |
|                      (const CmdScanStatus   *message,
 | |
|                       uint8_t             *out);
 | |
| size_t cmd_scan_status__pack_to_buffer
 | |
|                      (const CmdScanStatus   *message,
 | |
|                       ProtobufCBuffer     *buffer);
 | |
| CmdScanStatus *
 | |
|        cmd_scan_status__unpack
 | |
|                      (ProtobufCAllocator  *allocator,
 | |
|                       size_t               len,
 | |
|                       const uint8_t       *data);
 | |
| void   cmd_scan_status__free_unpacked
 | |
|                      (CmdScanStatus *message,
 | |
|                       ProtobufCAllocator *allocator);
 | |
| /* RespScanStatus methods */
 | |
| void   resp_scan_status__init
 | |
|                      (RespScanStatus         *message);
 | |
| size_t resp_scan_status__get_packed_size
 | |
|                      (const RespScanStatus   *message);
 | |
| size_t resp_scan_status__pack
 | |
|                      (const RespScanStatus   *message,
 | |
|                       uint8_t             *out);
 | |
| size_t resp_scan_status__pack_to_buffer
 | |
|                      (const RespScanStatus   *message,
 | |
|                       ProtobufCBuffer     *buffer);
 | |
| RespScanStatus *
 | |
|        resp_scan_status__unpack
 | |
|                      (ProtobufCAllocator  *allocator,
 | |
|                       size_t               len,
 | |
|                       const uint8_t       *data);
 | |
| void   resp_scan_status__free_unpacked
 | |
|                      (RespScanStatus *message,
 | |
|                       ProtobufCAllocator *allocator);
 | |
| /* CmdScanResult methods */
 | |
| void   cmd_scan_result__init
 | |
|                      (CmdScanResult         *message);
 | |
| size_t cmd_scan_result__get_packed_size
 | |
|                      (const CmdScanResult   *message);
 | |
| size_t cmd_scan_result__pack
 | |
|                      (const CmdScanResult   *message,
 | |
|                       uint8_t             *out);
 | |
| size_t cmd_scan_result__pack_to_buffer
 | |
|                      (const CmdScanResult   *message,
 | |
|                       ProtobufCBuffer     *buffer);
 | |
| CmdScanResult *
 | |
|        cmd_scan_result__unpack
 | |
|                      (ProtobufCAllocator  *allocator,
 | |
|                       size_t               len,
 | |
|                       const uint8_t       *data);
 | |
| void   cmd_scan_result__free_unpacked
 | |
|                      (CmdScanResult *message,
 | |
|                       ProtobufCAllocator *allocator);
 | |
| /* WiFiScanResult methods */
 | |
| void   wi_fi_scan_result__init
 | |
|                      (WiFiScanResult         *message);
 | |
| size_t wi_fi_scan_result__get_packed_size
 | |
|                      (const WiFiScanResult   *message);
 | |
| size_t wi_fi_scan_result__pack
 | |
|                      (const WiFiScanResult   *message,
 | |
|                       uint8_t             *out);
 | |
| size_t wi_fi_scan_result__pack_to_buffer
 | |
|                      (const WiFiScanResult   *message,
 | |
|                       ProtobufCBuffer     *buffer);
 | |
| WiFiScanResult *
 | |
|        wi_fi_scan_result__unpack
 | |
|                      (ProtobufCAllocator  *allocator,
 | |
|                       size_t               len,
 | |
|                       const uint8_t       *data);
 | |
| void   wi_fi_scan_result__free_unpacked
 | |
|                      (WiFiScanResult *message,
 | |
|                       ProtobufCAllocator *allocator);
 | |
| /* RespScanResult methods */
 | |
| void   resp_scan_result__init
 | |
|                      (RespScanResult         *message);
 | |
| size_t resp_scan_result__get_packed_size
 | |
|                      (const RespScanResult   *message);
 | |
| size_t resp_scan_result__pack
 | |
|                      (const RespScanResult   *message,
 | |
|                       uint8_t             *out);
 | |
| size_t resp_scan_result__pack_to_buffer
 | |
|                      (const RespScanResult   *message,
 | |
|                       ProtobufCBuffer     *buffer);
 | |
| RespScanResult *
 | |
|        resp_scan_result__unpack
 | |
|                      (ProtobufCAllocator  *allocator,
 | |
|                       size_t               len,
 | |
|                       const uint8_t       *data);
 | |
| void   resp_scan_result__free_unpacked
 | |
|                      (RespScanResult *message,
 | |
|                       ProtobufCAllocator *allocator);
 | |
| /* WiFiScanPayload methods */
 | |
| void   wi_fi_scan_payload__init
 | |
|                      (WiFiScanPayload         *message);
 | |
| size_t wi_fi_scan_payload__get_packed_size
 | |
|                      (const WiFiScanPayload   *message);
 | |
| size_t wi_fi_scan_payload__pack
 | |
|                      (const WiFiScanPayload   *message,
 | |
|                       uint8_t             *out);
 | |
| size_t wi_fi_scan_payload__pack_to_buffer
 | |
|                      (const WiFiScanPayload   *message,
 | |
|                       ProtobufCBuffer     *buffer);
 | |
| WiFiScanPayload *
 | |
|        wi_fi_scan_payload__unpack
 | |
|                      (ProtobufCAllocator  *allocator,
 | |
|                       size_t               len,
 | |
|                       const uint8_t       *data);
 | |
| void   wi_fi_scan_payload__free_unpacked
 | |
|                      (WiFiScanPayload *message,
 | |
|                       ProtobufCAllocator *allocator);
 | |
| /* --- per-message closures --- */
 | |
| 
 | |
| typedef void (*CmdScanStart_Closure)
 | |
|                  (const CmdScanStart *message,
 | |
|                   void *closure_data);
 | |
| typedef void (*RespScanStart_Closure)
 | |
|                  (const RespScanStart *message,
 | |
|                   void *closure_data);
 | |
| typedef void (*CmdScanStatus_Closure)
 | |
|                  (const CmdScanStatus *message,
 | |
|                   void *closure_data);
 | |
| typedef void (*RespScanStatus_Closure)
 | |
|                  (const RespScanStatus *message,
 | |
|                   void *closure_data);
 | |
| typedef void (*CmdScanResult_Closure)
 | |
|                  (const CmdScanResult *message,
 | |
|                   void *closure_data);
 | |
| typedef void (*WiFiScanResult_Closure)
 | |
|                  (const WiFiScanResult *message,
 | |
|                   void *closure_data);
 | |
| typedef void (*RespScanResult_Closure)
 | |
|                  (const RespScanResult *message,
 | |
|                   void *closure_data);
 | |
| typedef void (*WiFiScanPayload_Closure)
 | |
|                  (const WiFiScanPayload *message,
 | |
|                   void *closure_data);
 | |
| 
 | |
| /* --- services --- */
 | |
| 
 | |
| 
 | |
| /* --- descriptors --- */
 | |
| 
 | |
| extern const ProtobufCEnumDescriptor    wi_fi_scan_msg_type__descriptor;
 | |
| extern const ProtobufCMessageDescriptor cmd_scan_start__descriptor;
 | |
| extern const ProtobufCMessageDescriptor resp_scan_start__descriptor;
 | |
| extern const ProtobufCMessageDescriptor cmd_scan_status__descriptor;
 | |
| extern const ProtobufCMessageDescriptor resp_scan_status__descriptor;
 | |
| extern const ProtobufCMessageDescriptor cmd_scan_result__descriptor;
 | |
| extern const ProtobufCMessageDescriptor wi_fi_scan_result__descriptor;
 | |
| extern const ProtobufCMessageDescriptor resp_scan_result__descriptor;
 | |
| extern const ProtobufCMessageDescriptor wi_fi_scan_payload__descriptor;
 | |
| 
 | |
| PROTOBUF_C__END_DECLS
 | |
| 
 | |
| 
 | |
| #endif  /* PROTOBUF_C_wifi_5fscan_2eproto__INCLUDED */
 |