mirror of
				https://github.com/espressif/esp-idf.git
				synced 2025-10-31 04:59:55 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			109 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * SPDX-FileCopyrightText: 2020-2022 Espressif Systems (Shanghai) CO LTD
 | |
|  *
 | |
|  * SPDX-License-Identifier: Apache-2.0
 | |
|  */
 | |
| 
 | |
| #ifndef ESP_DPP_H
 | |
| #define ESP_DPP_H
 | |
| 
 | |
| #include <stdbool.h>
 | |
| 
 | |
| #include "esp_err.h"
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| #define ESP_ERR_DPP_FAILURE         (ESP_ERR_WIFI_BASE + 151)   /*!< Generic failure during DPP Operation */
 | |
| #define ESP_ERR_DPP_TX_FAILURE      (ESP_ERR_WIFI_BASE + 152)   /*!< DPP Frame Tx failed OR not Acked */
 | |
| #define ESP_ERR_DPP_INVALID_ATTR    (ESP_ERR_WIFI_BASE + 153)   /*!< Encountered invalid DPP Attribute */
 | |
| 
 | |
| /** @brief Types of Bootstrap Methods for DPP. */
 | |
| typedef enum dpp_bootstrap_type {
 | |
|     DPP_BOOTSTRAP_QR_CODE,  /**< QR Code Method */
 | |
|     DPP_BOOTSTRAP_PKEX,     /**< Proof of Knowledge Method */
 | |
|     DPP_BOOTSTRAP_NFC_URI,  /**< NFC URI record Method */
 | |
| } esp_supp_dpp_bootstrap_t;
 | |
| 
 | |
| /** @brief Types of Callback Events received from DPP Supplicant. */
 | |
| typedef enum {
 | |
|     ESP_SUPP_DPP_URI_READY,     /**< URI is ready through Bootstrapping */
 | |
|     ESP_SUPP_DPP_CFG_RECVD,     /**< Config received via DPP Authentication */
 | |
|     ESP_SUPP_DPP_FAIL,          /**< DPP Authentication failure */
 | |
| } esp_supp_dpp_event_t;
 | |
| 
 | |
| /**
 | |
|   * @brief Callback function for receiving DPP Events from Supplicant.
 | |
|   *
 | |
|   *        Callback function will be called with DPP related information.
 | |
|   *
 | |
|   * @param evt DPP event ID
 | |
|   * @param data Event data payload
 | |
|   */
 | |
| typedef void (*esp_supp_dpp_event_cb_t)(esp_supp_dpp_event_t evt, void *data);
 | |
| 
 | |
| /**
 | |
|   * @brief Initialize DPP Supplicant
 | |
|   *
 | |
|   *        Starts DPP Supplicant and initializes related Data Structures.
 | |
|   *
 | |
|   * @param evt_cb Callback function to receive DPP related events
 | |
|   *
 | |
|   * return
 | |
|   *    - ESP_OK: Success
 | |
|   *    - ESP_FAIL: Failure
 | |
|   */
 | |
| esp_err_t esp_supp_dpp_init(esp_supp_dpp_event_cb_t evt_cb);
 | |
| 
 | |
| /**
 | |
|   * @brief De-initalize DPP Supplicant
 | |
|   *
 | |
|   *        Frees memory from DPP Supplicant Data Structures.
 | |
|   */
 | |
| void esp_supp_dpp_deinit(void);
 | |
| 
 | |
| /**
 | |
|   * @brief Generates Bootstrap Information as an Enrollee.
 | |
|   *
 | |
|   *        Generates Out Of Band Bootstrap information as an Enrollee which can be
 | |
|   *        used by a DPP Configurator to provision the Enrollee.
 | |
|   *
 | |
|   * @param chan_list List of channels device will be available on for listening
 | |
|   * @param type Bootstrap method type, only QR Code method is supported for now.
 | |
|   * @param key (Optional) Private Key used to generate a Bootstrapping Public Key
 | |
|   * @param info (Optional) Ancilliary Device Information like Serial Number
 | |
|   *
 | |
|   * @return
 | |
|   *    - ESP_OK: Success
 | |
|   *    - ESP_FAIL: Failure
 | |
|   */
 | |
| esp_err_t
 | |
| esp_supp_dpp_bootstrap_gen(const char *chan_list, esp_supp_dpp_bootstrap_t type,
 | |
|                            const char *key, const char *info);
 | |
| 
 | |
| /**
 | |
|   * @brief Start listening on Channels provided during esp_supp_dpp_bootstrap_gen.
 | |
|   *
 | |
|   *        Listens on every Channel from Channel List for a pre-defined wait time.
 | |
|   *
 | |
|   * @return
 | |
|   *    - ESP_OK: Success
 | |
|   *    - ESP_FAIL: Generic Failure
 | |
|   *    - ESP_ERR_INVALID_STATE: ROC attempted before WiFi is started
 | |
|   *    - ESP_ERR_NO_MEM: Memory allocation failed while posting ROC request
 | |
|   */
 | |
| esp_err_t esp_supp_dpp_start_listen(void);
 | |
| 
 | |
| /**
 | |
|   * @brief Stop listening on Channels.
 | |
|   *
 | |
|   *        Stops listening on Channels and cancels ongoing listen operation.
 | |
|   */
 | |
| void esp_supp_dpp_stop_listen(void);
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| #endif /* ESP_DPP_H */
 | 
