From 49d8908e888108f638379acffc3ee497bdeebbbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BF=9B=E6=98=9F?= Date: Fri, 28 May 2021 10:28:28 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=9E=E9=80=80=20'Pull=20Request=20!2=20:?= =?UTF-8?q?=20add=20smart=20config'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sddc/main/sddc_esp8266_example.c | 136 +----------------- 1 file changed, 2 insertions(+), 134 deletions(-) diff --git a/examples/protocols/sddc/main/sddc_esp8266_example.c b/examples/protocols/sddc/main/sddc_esp8266_example.c index e4d156a8..2a11df83 100644 --- a/examples/protocols/sddc/main/sddc_esp8266_example.c +++ b/examples/protocols/sddc/main/sddc_esp8266_example.c @@ -28,17 +28,6 @@ #include "sddc.h" #include "cJSON.h" -#include "driver/gpio.h" -#include "tcpip_adapter.h" -#include "esp_smartconfig.h" -#include "smartconfig_ack.h" - -static EventGroupHandle_t wifi_event_group; -static const int CONNECTED_BIT = BIT0; -static const int ESPTOUCH_DONE_BIT = BIT1; -static const char *TAG = "sc"; -static int start_wifi_flag = 0; - /* * handle MESSAGE */ @@ -163,7 +152,7 @@ static char *esp8266_report_data_create(void) str = cJSON_Print(root); sddc_printf("REPORT DATA: %s\n", str); - start_wifi_flag = 1; + cJSON_Delete(root); return str; @@ -199,127 +188,6 @@ static char *esp8266_invite_data_create(void) return str; } -static void on_wifi_disconnect(void *arg, esp_event_base_t event_base, - int32_t event_id, void *event_data) -{ - system_event_sta_disconnected_t *event = (system_event_sta_disconnected_t *)event_data; - - ESP_LOGI(TAG, "Wi-Fi disconnected, trying to reconnect..."); - if (event->reason == WIFI_REASON_BASIC_RATE_NOT_SUPPORT) { - /*Switch to 802.11 bgn mode */ - esp_wifi_set_protocol(ESP_IF_WIFI_STA, WIFI_PROTOCAL_11B | WIFI_PROTOCAL_11G | WIFI_PROTOCAL_11N); - } -} - -static void on_got_ip(void *arg, esp_event_base_t event_base, - int32_t event_id, void *event_data) -{ - xEventGroupSetBits(wifi_event_group, CONNECTED_BIT); -} - -static void initialise_wifi(void) -{ - tcpip_adapter_init(); - wifi_event_group = xEventGroupCreate(); - ESP_ERROR_CHECK( esp_wifi_stop() ); - wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); - - ESP_ERROR_CHECK( esp_wifi_init(&cfg) ); - - ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, WIFI_EVENT_STA_DISCONNECTED, &on_wifi_disconnect, NULL)); - ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &on_got_ip, NULL)); - - ESP_ERROR_CHECK( esp_wifi_set_mode(WIFI_MODE_STA) ); - ESP_ERROR_CHECK( esp_wifi_start() ); - ESP_ERROR_CHECK( esp_wifi_connect() ); -} - -static void sc_callback(smartconfig_status_t status, void *pdata) -{ - switch (status) { - case SC_STATUS_WAIT: - ESP_LOGI(TAG, "SC_STATUS_WAIT"); - break; - case SC_STATUS_FIND_CHANNEL: - ESP_LOGI(TAG, "SC_STATUS_FINDING_CHANNEL"); - break; - case SC_STATUS_GETTING_SSID_PSWD: - ESP_LOGI(TAG, "SC_STATUS_GETTING_SSID_PSWD"); - break; - case SC_STATUS_LINK: - ESP_LOGI(TAG, "SC_STATUS_LINK"); - wifi_config_t *wifi_config = pdata; - ESP_LOGI(TAG, "SSID:%s", wifi_config->sta.ssid); - ESP_LOGI(TAG, "PASSWORD:%s", wifi_config->sta.password); - ESP_ERROR_CHECK( esp_wifi_disconnect() ); - ESP_ERROR_CHECK( esp_wifi_set_config(ESP_IF_WIFI_STA, wifi_config) ); - ESP_ERROR_CHECK( esp_wifi_connect() ); - break; - case SC_STATUS_LINK_OVER: - ESP_LOGI(TAG, "SC_STATUS_LINK_OVER"); - if (pdata != NULL) { - sc_callback_data_t *sc_callback_data = (sc_callback_data_t *)pdata; - switch (sc_callback_data->type) { - case SC_ACK_TYPE_ESPTOUCH: - ESP_LOGI(TAG, "Phone ip: %d.%d.%d.%d", sc_callback_data->ip[0], sc_callback_data->ip[1], sc_callback_data->ip[2], sc_callback_data->ip[3]); - ESP_LOGI(TAG, "TYPE: ESPTOUCH"); - break; - case SC_ACK_TYPE_AIRKISS: - ESP_LOGI(TAG, "TYPE: AIRKISS"); - break; - default: - ESP_LOGE(TAG, "TYPE: ERROR"); - break; - } - } - xEventGroupSetBits(wifi_event_group, ESPTOUCH_DONE_BIT); - break; - default: - break; - } -} - -void smartconfig_example_task(void * parm) -{ - EventBits_t uxBits; - ESP_ERROR_CHECK( esp_smartconfig_set_type(SC_TYPE_ESPTOUCH_AIRKISS) ); - ESP_ERROR_CHECK( esp_smartconfig_start(sc_callback) ); - while (1) { - uxBits = xEventGroupWaitBits(wifi_event_group, CONNECTED_BIT | ESPTOUCH_DONE_BIT, true, false, portMAX_DELAY); - if(uxBits & CONNECTED_BIT) { - ESP_LOGI(TAG, "WiFi Connected to ap"); - } - if(uxBits & ESPTOUCH_DONE_BIT) { - ESP_LOGI(TAG, "smartconfig over"); - esp_smartconfig_stop(); - vTaskDelete(NULL); - start_wifi_flag = 0; - } - } -} - -static void flash_key_gpio_task_example(void *arg) -{ - int i = 0; - while (1) { - vTaskDelay(1000 / portTICK_RATE_MS); - if (!gpio_get_level(0)) { - i++; - } else { - i = 0; - } - if (i > 3) { - i = 0; - sddc_printf("start smart config....\n"); - if (!start_wifi_flag) { - initialise_wifi(); - xTaskCreate(smartconfig_example_task, "smartconfig_example_task", 2048, NULL, 10, NULL); - start_wifi_flag = 1; - } - } - } -} - static void sddc_example_task(void *arg) { sddc_t *sddc; @@ -404,7 +272,7 @@ void app_main() ESP_ERROR_CHECK(nvs_flash_init()); ESP_ERROR_CHECK(esp_netif_init()); ESP_ERROR_CHECK(esp_event_loop_create_default()); - xTaskCreate(flash_key_gpio_task_example, "flash_key_gpio_task_example", 4096, NULL, 5, NULL); + ESP_ERROR_CHECK(example_connect()); xTaskCreate(sddc_example_task, "sddc_example_task", 4096, NULL, 5, NULL); -- Gitee