#include<string.h>#include<stdlib.h>#include"freertos/FreeRTOS.h"#include"freertos/task.h"#include"freertos/event_groups.h"#include"driver/uart.h"#include"esp_err.h"#include"esp_wifi.h"#include"esp_event.h"#include"esp_log.h"#include"esp_system.h"#include"nvs_flash.h"#include"tcpip_adapter.h"#include"esp_smartconfig.h"#include"smartconfig_ack.h"#include"lwip/err.h"#include"lwip/sockets.h"#include"lwip/sys.h"#include<lwip/netdb.h>staticconstchar*TAG ="sta mode";// socket#definePORT5000#defineHOST_IP_ADDR"192.168.3.132"staticconstchar*payload ="Message from ESP8266";/* FreeRTOS event group to signal when we are connected & ready to make a request */static EventGroupHandle_t s_wifi_event_group;/* The event group allows multiple bits for each event,
but we only care about one event - are we connected
to the AP with an IP? */staticconstint ESPTOUCH_DONE_BIT = BIT0;staticconstint ESP_GOT_IP_BIT = BIT1;staticvoiduart_115200_Init(void){ESP_ERROR_CHECK(uart_set_baudrate(UART_NUM_0,115200));}voidsmartconfig_task(){ESP_ERROR_CHECK(esp_smartconfig_set_type(SC_TYPE_ESPTOUCH));smartconfig_start_config_t cfg =SMARTCONFIG_START_CONFIG_DEFAULT();ESP_ERROR_CHECK(esp_smartconfig_start(&cfg));while(1){xEventGroupWaitBits(s_wifi_event_group, ESPTOUCH_DONE_BIT, pdTRUE, pdTRUE, portMAX_DELAY);ESP_LOGI(TAG,"smartconfig over");esp_smartconfig_stop();vTaskDelete(NULL);}}voidevent_handler(void*event_handler_arg,esp_event_base_t event_base,int32_t event_id,void*event_data){if(event_base == WIFI_EVENT){if(event_id == WIFI_EVENT_STA_START){ESP_LOGI(TAG,"start wifi config...");xTaskCreate(smartconfig_task,"smartconfig_task",4096,NULL,5,NULL);}elseif(event_id == WIFI_EVENT_STA_CONNECTED){ESP_LOGI(TAG,"sta connected...");}elseif(event_id == WIFI_EVENT_STA_DISCONNECTED){ESP_LOGI(TAG,"sta disconnect...");ESP_ERROR_CHECK(esp_wifi_connect());ESP_LOGI(TAG,"sta reconnect...");}}elseif(event_base == IP_EVENT){if(event_id == IP_EVENT_STA_GOT_IP){ESP_LOGI(TAG,"got ip...");xEventGroupSetBits(s_wifi_event_group, ESP_GOT_IP_BIT);}}elseif(event_base == SC_EVENT){if(event_id == SC_EVENT_SCAN_DONE){ESP_LOGI(TAG,"san mode...");}elseif(event_id == SC_EVENT_FOUND_CHANNEL){ESP_LOGI(TAG,"sta found channel...");}elseif(event_id == SC_EVENT_GOT_SSID_PSWD){ESP_LOGI(TAG,"sta got ssid pasd...");smartconfig_event_got_ssid_pswd_t*evt =(smartconfig_event_got_ssid_pswd_t*)event_data;wifi_config_t wifi_config;uint8_t rvd_data[33]={0};bzero(&wifi_config,sizeof(wifi_config_t));memcpy(wifi_config.sta.ssid, evt->ssid,sizeof(wifi_config.sta.ssid));memcpy(wifi_config.sta.password, evt->password,sizeof(wifi_config.sta.password));
wifi_config.sta.bssid_set = evt->bssid_set;if(wifi_config.sta.bssid_set == true){memcpy(wifi_config.sta.bssid, evt->bssid,sizeof(wifi_config.sta.bssid));}if(evt->type == SC_TYPE_ESPTOUCH_V2){ESP_ERROR_CHECK(esp_smartconfig_get_rvd_data(rvd_data,sizeof(rvd_data)));ESP_LOGI(TAG,"RVD_DATA:%s", rvd_data);}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());xEventGroupSetBits(s_wifi_event_group, ESPTOUCH_DONE_BIT);}}elseif(event_id == SC_EVENT_SEND_ACK_DONE){ESP_LOGI(TAG,"send ack...");}}staticvoidsmart_wifi_config(){tcpip_adapter_init();
s_wifi_event_group =xEventGroupCreate();ESP_ERROR_CHECK(esp_event_loop_create_default());wifi_init_config_t cfg =WIFI_INIT_CONFIG_DEFAULT();ESP_ERROR_CHECK(esp_wifi_init(&cfg));ESP_ERROR_CHECK(esp_wifi_set_ps(WIFI_PS_NONE));ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID,&event_handler,NULL));ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP,&event_handler,NULL));ESP_ERROR_CHECK(esp_event_handler_register(SC_EVENT, ESP_EVENT_ANY_ID,&event_handler,NULL));ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));ESP_ERROR_CHECK(esp_wifi_start());}staticvoidtcp_client_task(void*pvParameters){char rx_buffer[128];char addr_str[128];xEventGroupWaitBits(s_wifi_event_group, ESP_GOT_IP_BIT, pdTRUE, pdTRUE, portMAX_DELAY);while(1){structsockaddr_in destAddr;
destAddr.sin_addr.s_addr =inet_addr(HOST_IP_ADDR);
destAddr.sin_family = AF_INET;
destAddr.sin_port =htons(PORT);inet_ntoa_r(destAddr.sin_addr, addr_str,sizeof(addr_str)-1);int sock =socket(AF_INET, SOCK_STREAM, IPPROTO_IP);if(sock <0){ESP_LOGE(TAG,"Unable to create socket: errno %d", errno);break;}ESP_LOGI(TAG,"Socket created");int err =connect(sock,(structsockaddr*)&destAddr,sizeof(destAddr));if(err !=0){ESP_LOGE(TAG,"Socket unable to connect: errno %d", errno);close(sock);continue;}ESP_LOGI(TAG,"Successfully connected");while(1){int err =send(sock, payload,strlen(payload),0);if(err <0){ESP_LOGE(TAG,"Error occured during sending: errno %d", errno);break;}int len =recv(sock, rx_buffer,sizeof(rx_buffer)-1,0);// Error occured during receivingif(len <0){ESP_LOGE(TAG,"recv failed: errno %d", errno);break;}// Data receivedelse{
rx_buffer[len]=0;// Null-terminate whatever we received and treat like a stringESP_LOGI(TAG,"Received %d bytes from %s:", len, addr_str);ESP_LOGI(TAG,"%s", rx_buffer);}vTaskDelay(50/ portTICK_PERIOD_MS);}if(sock !=-1){ESP_LOGE(TAG,"Shutting down socket and restarting...");shutdown(sock,0);close(sock);}}vTaskDelete(NULL);}voidapp_main(){ESP_ERROR_CHECK(nvs_flash_init());//uart_115200_Init();ESP_LOGI(TAG,"start...");smart_wifi_config();xTaskCreate(tcp_client_task,"tcp_client",4096,NULL,5,NULL);}
ets Jan 82013,rst cause:2, boot mode:(3,6)
load 0x40100000, len 7032, room 16tail8
chksum 0x94
load 0x3ffe8408, len 24, room 0tail8
chksum 0x2d
load 0x3ffe8420, len 3328, room 0tail0
chksum 0x5a
csum 0x5a
[0;32mI (42) boot: ESP-IDF v3.4-49-g0f200b46-dirty 2nd stage bootloader[0m
[0;32mI (43) boot: compile time20:46:43[0m
[0;32mI (43) boot: SPI Speed : 80MHz[0m
[0;32mI (50) boot: SPI Mode : DIO[0m
[0;32mI (56) boot: SPI Flash Size : 1MB[0m
[0;32mI (62) boot: Partition Table:[0m
[0;32mI (68) boot: ## Label Usage Type ST Offset Length[0m[0;32mI (79) boot: 0 nvs WiFi data 01 02 00009000 00006000[0m
[0;32mI (90) boot: 1 phy_init RF data 01 01 0000f000 00001000[0m
[0;32mI (102) boot: 2 factory factory app 00 00 00010000 000f0000[0m
[0;32mI (113) boot: End of partition table[0m
[0;32mI (120) esp_image: segment 0: paddr=0x00010010 vaddr=0x40210010 size=0x5e224 (385572) map[0m
[0;32mI (260) esp_image: segment 1: paddr=0x0006e23c vaddr=0x4026e234 size=0x102f8 (66296) map[0m
[0;32mI (283) esp_image: segment 2: paddr=0x0007e53c vaddr=0x3ffe8000 size=0x0062c (1580) load[0m
[0;32mI (284) esp_image: segment 3: paddr=0x0007eb70 vaddr=0x40100000 size=0x00080 (128) load[0m
[0;32mI (294) esp_image: segment 4: paddr=0x0007ebf8 vaddr=0x40100080 size=0x05588 (21896) load[0m
[0;32mI (314) boot: Loaded app from partition at offset 0x10000[0m
[0;32mI (338) sta mode: start...[0m
[0;32mI (340) system_api: Base MAC address is not set, read default base MAC address from EFUSE[0m
[0;32mI (344) system_api: Base MAC address is not set, read default base MAC address from EFUSE[0m
phy_version: 1166.0, 7f5855b, Aug 192021, 15:51:14, RTOS new
[0;32mI (408) phy_init: phy ver: 1166_0[0m
[0;32mI (421) wifi:pm stop
[0m[0;32mI (422) sta mode: start wifi config...[0m
SC version: V3.0.0, TYPE: 0
sync_len: [60,643][0;32mI (3597) sta mode: san mode...[0m
T|head len 80
TYPE: ESPTOUCH, ch:1
T|PHONE MAC: 30:57:14:78:60:d0
T|AP MAC: a8:5a:e0:a6:57:74
[0;32mI (32598) sta mode: sta found channel...[0m
T|pswd: goproabc
T|ssid: oa-office
[0;32mI (38159) sta mode: sta got ssid pasd...[0m
[0;32mI (38162) sta mode: smartconfig over[0m
[0;32mI (38382) wifi:state: 0 ->2(b0)[0m[0;32mI (39382) wifi:state: 2 ->0(200)[0m[0;32mI (39383) sta mode: sta disconnect...[0m
[0;32mI (39385) sta mode: sta reconnect...[0m
E:AC 1, 11, 0
CONF:b00b, PLCP:62ab28, rf:fe000000, rx:14295,1ef9, tx:0
[0;32mI (42540) sta mode: sta disconnect...[0m
[0;32mI (42543) sta mode: sta reconnect...[0m
[0;32mI (42763) wifi:state: 0 ->2(b0)[0m[0;32mI (42773) wifi:state: 2 ->3(0)[0m[0;32mI (42795) wifi:state: 3 ->5(10)[0m[0;32mI (47250) wifi:state: 5 ->0(fc0)[0m[0;32mI (47251) sta mode: sta disconnect...[0m
[0;32mI (47254) sta mode: sta reconnect...[0m
[0;32mI (47266) wifi:state: 0 ->0(6c0)[0m[0;32mI (50409) sta mode: sta disconnect...[0m
[0;32mI (50412) sta mode: sta reconnect...[0m
[0;32mI (50632) wifi:state: 0 ->2(b0)[0m[0;32mI (50634) wifi:state: 2 ->3(0)[0m[0;32mI (50639) wifi:state: 3 ->5(10)[0m[0;32mI (50654) wifi:connected with oa-office, aid =3, channel 1, HT20, bssid = a8:5a:e0:a6:57:74
[0m[0;32mI (50658) sta mode: sta connected...[0m
[0;32mI (51401) tcpip_adapter: sta ip: 192.168.3.117, mask: 255.255.255.0, gw: 192.168.3.1[0m
[0;32mI (51404) sta mode: got ip...[0m
[0;32mI (51407) sta mode: Socket created[0m
[0;32mI (51514) sta mode: Successfully connected[0m