@@ -54,59 +54,63 @@ static EventGroupHandle_t s_dpp_event_group;
5454static void event_handler (void * arg , esp_event_base_t event_base ,
5555 int32_t event_id , void * event_data )
5656{
57- if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START ) {
58- ESP_ERROR_CHECK (esp_supp_dpp_start_listen ());
59- ESP_LOGI (TAG , "Started listening for DPP Authentication" );
60- } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED ) {
61- if (s_retry_num < WIFI_MAX_RETRY_NUM ) {
57+ if (event_base == WIFI_EVENT ) {
58+ switch (event_id ) {
59+ case WIFI_EVENT_STA_START :
60+ ESP_ERROR_CHECK (esp_supp_dpp_start_listen ());
61+ ESP_LOGI (TAG , "Started listening for DPP Authentication" );
62+ break ;
63+ case WIFI_EVENT_STA_DISCONNECTED :
64+ if (s_retry_num < WIFI_MAX_RETRY_NUM ) {
65+ esp_wifi_connect ();
66+ s_retry_num ++ ;
67+ ESP_LOGI (TAG , "Disconnect event, retry to connect to the AP" );
68+ } else {
69+ xEventGroupSetBits (s_dpp_event_group , DPP_CONNECT_FAIL_BIT );
70+ }
71+ break ;
72+ case WIFI_EVENT_STA_CONNECTED :
73+ ESP_LOGI (TAG , "Successfully connected to the AP ssid : %s " , s_dpp_wifi_config .sta .ssid );
74+ break ;
75+ case WIFI_EVENT_DPP_URI_READY :
76+ wifi_event_dpp_uri_ready_t * uri_data = event_data ;
77+ if (uri_data != NULL ) {
78+ esp_qrcode_config_t cfg = ESP_QRCODE_CONFIG_DEFAULT ();
79+
80+ ESP_LOGI (TAG , "Scan below QR Code to configure the enrollee:" );
81+ esp_qrcode_generate (& cfg , (const char * )uri_data -> uri );
82+ }
83+ break ;
84+ case WIFI_EVENT_DPP_CFG_RECVD :
85+ wifi_event_dpp_config_received_t * config = event_data ;
86+ memcpy (& s_dpp_wifi_config , & config -> wifi_cfg , sizeof (s_dpp_wifi_config ));
87+ s_retry_num = 0 ;
88+ esp_wifi_set_config (ESP_IF_WIFI_STA , & s_dpp_wifi_config );
6289 esp_wifi_connect ();
63- s_retry_num ++ ;
64- ESP_LOGI (TAG , "retry to connect to the AP" );
65- } else {
66- xEventGroupSetBits (s_dpp_event_group , DPP_CONNECT_FAIL_BIT );
90+ break ;
91+ case WIFI_EVENT_DPP_FAILED :
92+ wifi_event_dpp_failed_t * dpp_failure = event_data ;
93+ if (s_retry_num < 5 ) {
94+ ESP_LOGI (TAG , "DPP Auth failed (Reason: %s), retry..." , esp_err_to_name ((int )dpp_failure -> failure_reason ));
95+ ESP_ERROR_CHECK (esp_supp_dpp_start_listen ());
96+ s_retry_num ++ ;
97+ } else {
98+ xEventGroupSetBits (s_dpp_event_group , DPP_AUTH_FAIL_BIT );
99+ }
100+
101+ break ;
102+ default :
103+ break ;
67104 }
68- ESP_LOGI (TAG , "connect to the AP fail" );
69- } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_CONNECTED ) {
70- ESP_LOGI (TAG , "Successfully connected to the AP ssid : %s " , s_dpp_wifi_config .sta .ssid );
71- } else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP ) {
105+ }
106+ if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP ) {
72107 ip_event_got_ip_t * event = (ip_event_got_ip_t * ) event_data ;
73108 ESP_LOGI (TAG , "got ip:" IPSTR , IP2STR (& event -> ip_info .ip ));
74109 s_retry_num = 0 ;
75110 xEventGroupSetBits (s_dpp_event_group , DPP_CONNECTED_BIT );
76111 }
77112}
78113
79- void dpp_enrollee_event_cb (esp_supp_dpp_event_t event , void * data )
80- {
81- switch (event ) {
82- case ESP_SUPP_DPP_URI_READY :
83- if (data != NULL ) {
84- esp_qrcode_config_t cfg = ESP_QRCODE_CONFIG_DEFAULT ();
85-
86- ESP_LOGI (TAG , "Scan below QR Code to configure the enrollee:" );
87- esp_qrcode_generate (& cfg , (const char * )data );
88- }
89- break ;
90- case ESP_SUPP_DPP_CFG_RECVD :
91- memcpy (& s_dpp_wifi_config , data , sizeof (s_dpp_wifi_config ));
92- s_retry_num = 0 ;
93- esp_wifi_set_config (ESP_IF_WIFI_STA , & s_dpp_wifi_config );
94- esp_wifi_connect ();
95- break ;
96- case ESP_SUPP_DPP_FAIL :
97- if (s_retry_num < 5 ) {
98- ESP_LOGI (TAG , "DPP Auth failed (Reason: %s), retry..." , esp_err_to_name ((int )data ));
99- ESP_ERROR_CHECK (esp_supp_dpp_start_listen ());
100- s_retry_num ++ ;
101- } else {
102- xEventGroupSetBits (s_dpp_event_group , DPP_AUTH_FAIL_BIT );
103- }
104- break ;
105- default :
106- break ;
107- }
108- }
109-
110114esp_err_t dpp_enrollee_bootstrap (void )
111115{
112116 esp_err_t ret ;
@@ -157,7 +161,7 @@ void dpp_enrollee_init(void)
157161 ESP_ERROR_CHECK (esp_wifi_init (& cfg ));
158162
159163 ESP_ERROR_CHECK (esp_wifi_set_mode (WIFI_MODE_STA ));
160- ESP_ERROR_CHECK (esp_supp_dpp_init (dpp_enrollee_event_cb ));
164+ ESP_ERROR_CHECK (esp_supp_dpp_init (NULL ));
161165 ESP_ERROR_CHECK (dpp_enrollee_bootstrap ());
162166 ESP_ERROR_CHECK (esp_wifi_start ());
163167
@@ -171,10 +175,7 @@ void dpp_enrollee_init(void)
171175
172176 /* xEventGroupWaitBits() returns the bits before the call returned, hence we can test which event actually
173177 * happened. */
174- if (bits & DPP_CONNECTED_BIT ) {
175- ESP_LOGI (TAG , "connected to ap SSID:%s password:%s" ,
176- s_dpp_wifi_config .sta .ssid , s_dpp_wifi_config .sta .password );
177- } else if (bits & DPP_CONNECT_FAIL_BIT ) {
178+ if (bits & DPP_CONNECT_FAIL_BIT ) {
178179 ESP_LOGI (TAG , "Failed to connect to SSID:%s, password:%s" ,
179180 s_dpp_wifi_config .sta .ssid , s_dpp_wifi_config .sta .password );
180181 } else if (bits & DPP_AUTH_FAIL_BIT ) {
0 commit comments