//Main routine. Initialize stdout, the I/O, filesystem and the webserver and we're done. void user_init(void) { wifi_station_set_auto_connect(FALSE); stdoutInit(); CFG_Load(); ioInit(); MAIN_DEBUG("\nInitialise ENC stack, dhcp if requested\n"); stack_init(); /* This DNS is only for the wifi interface, as wired never acts as an 'AP' */ captdnsInit(); // 0x40200000 is the base address for spi flash memory mapping, ESPFS_POS is the position // where image is written in flash that is defined in Makefile. #ifdef ESPFS_POS espFsInit((void*)(0x40200000 + ESPFS_POS)); #else espFsInit((void*)(webpages_espfs_start)); #endif httpdInit(builtInUrls, 80); #ifdef SHOW_HEAP_USE os_timer_disarm(&prHeapTimer); os_timer_setfn(&prHeapTimer, prHeapTimerCb, NULL); os_timer_arm(&prHeapTimer, 3000, 1); #endif os_timer_disarm(&websockTimer); os_timer_setfn(&websockTimer, websockTimerCb, NULL); os_timer_arm(&websockTimer, 1000, 1); os_printf("\nReady\n"); }
//Main routine. Initialize stdout, the I/O, filesystem and the webserver and we're done. void user_init(void) { stdoutInit(); ioInit(); captdnsInit(); // 0x40200000 is the base address for spi flash memory mapping, ESPFS_POS is the position // where image is written in flash that is defined in Makefile. #ifdef ESPFS_POS espFsInit((void*)(0x40200000 + ESPFS_POS)); #else espFsInit((void*)(webpages_espfs_start)); #endif httpdInit(builtInUrls, 80); #ifdef SHOW_HEAP_USE os_timer_disarm(&prHeapTimer); os_timer_setfn(&prHeapTimer, prHeapTimerCb, NULL); os_timer_arm(&prHeapTimer, 3000, 1); #endif os_printf("\nReady\n"); }
//Main routine. Initialize stdout, the I/O, filesystem and the webserver and we're done. void user_init(void) { mmInit(mmData); //Redirect stdout to websocket os_install_putc1((void *)stdoutPutcharWs); ioInit(); captdnsInit(); telnetInit(333); // 0x40200000 is the base address for spi flash memory mapping, ESPFS_POS is the position // where image is written in flash that is defined in Makefile. #ifdef ESPFS_POS espFsInit((void*)(0x40200000 + ESPFS_POS)); #else espFsInit((void*)(webpages_espfs_start)); #endif httpdInit(builtInUrls, 80); os_timer_disarm(&websockTimer); os_timer_setfn(&websockTimer, websockTimerCb, NULL); os_timer_arm(&websockTimer, 1000, 1); os_printf("\nReady\n"); wifi_set_sleep_type(LIGHT_SLEEP_T); }
/*The main working flow of this demo: a. start mesh function, searching for existing mesh network b. if there is no mesh network, search AP cache to connect to a recorded router. c. If we still failed to establish a connection, start ESP-TOUCH wait for configure. d. If ESP-TOUCH time out, re-search mesh network and AP CACHE. e. During the whole procedure,we can control and configure the light via a restful webserver. f. ESP-NOW is the recently released function to control the light without any WiFi connection.You can find it in app_switch */ void ICACHE_FLASH_ATTR light_main_flow() { UART_WaitTxFifoEmpty(0,50000); uart_init(74880,74880); user_DispAppInfo(); wifi_set_opmode(STATIONAP_MODE); #if ESP_MESH_SUPPORT wifi_station_set_auto_connect(0); wifi_station_disconnect(); #else wifi_station_set_auto_connect(1); #endif os_printf("SDK version:%s\n", system_get_sdk_version()); #if AP_CACHE wifi_station_ap_number_set(AP_CACHE_NUMBER); #endif #if ESP_NOW_SUPPORT /*We have added esp-now feature in the light project */ /*So that the lights in a certain MAC group can be easily controlled by an ESP-NOW controller*/ /*The sample code is in APP_CONTROLLER/APP_SWITCH*/ sp_MacInit();//csc add button Mac add and delet light_EspnowInit(); #endif #if 1 #if ESP_PLATFORM /*Initialization of the peripheral drivers*/ /*For light demo , it is user_light_init();*/ /* Also check whether assigned ip addr by the router.If so, connect to ESP-server */ user_esp_platform_init_peripheral(); disp_heap(5); #endif /*Establish a udp socket to receive local device detect info.*/ /*Listen to the port 1025, as well as udp broadcast. /*If receive a string of device_find_request, it reply its IP address and MAC.*/ user_devicefind_init(); disp_heap(6); /*Establish a TCP server for http(with JSON) POST or GET command to communicate with the device.*/ /*You can find the command in "2B-SDK-Espressif IoT Demo.pdf" to see the details.*/ /*the JSON command for curl is like:*/ /*3 Channel mode: curl -X POST -H "Content-Type:application/json" -d "{\"period\":1000,\"rgb\":{\"red\":16000,\"green\":16000,\"blue\":16000}}" http://192.168.4.1/config?command=light */ /*5 Channel mode: curl -X POST -H "Content-Type:application/json" -d "{\"period\":1000,\"rgb\":{\"red\":16000,\"green\":16000,\"blue\":16000,\"cwhite\":3000,\"wwhite\",3000}}" http://192.168.4.1/config?command=light */ /***********NOTE!!**************/ /*in MESH mode, you need to add "sip","sport" and "mdev_mac" fields to send command to the desired device*/ /*see details in MESH documentation*/ /*MESH INTERFACE IS AT PORT 8000*/ #if ESP_WEB_SUPPORT //Initialize DNS server for captive portal captdnsInit(); //Initialize espfs containing static webpages espFsInit((void*)(webpages_espfs_start)); //Initialize webserver httpdInit(builtInUrls, SERVER_PORT); //user_webserver_init(SERVER_PORT); #else #ifdef SERVER_SSL_ENABLE user_webserver_init(SERVER_SSL_PORT); #else user_webserver_init(SERVER_PORT); #endif #endif #endif //In debug mode, if you restart the light within 2 seconds, it will get into softap mode and wait for local upgrading firmware. //Restart again, it will clear the system param and set to default status. #if ESP_DEBUG_MODE extern struct esp_platform_saved_param esp_param; if(esp_param.reset_flg == MODE_APMODE){ os_printf("==================\r\n"); os_printf("RESET FLG==2,STATIONAP_MODE \r\n"); os_printf("==================\r\n"); #if ESP_MESH_SUPPORT user_DeviceFindRespSet(false); #endif struct softap_config config_softap; char ssid[33]={0}; wifi_softap_get_config(&config_softap); os_memset(config_softap.password, 0, sizeof(config_softap.password)); os_memset(config_softap.ssid, 0, sizeof(config_softap.ssid)); os_sprintf(ssid,"ESP_%06X",system_get_chip_id()); os_memcpy(config_softap.ssid, ssid, os_strlen(ssid)); config_softap.ssid_len = os_strlen(ssid); config_softap.authmode = AUTH_OPEN; wifi_softap_set_config(&config_softap); os_printf("SET STATION-AP MODE\r\n"); wifi_set_opmode(STATIONAP_MODE); user_esp_platform_set_reset_flg(MODE_RESET); #if ESP_WEB_SUPPORT os_printf("WEBSERVER INIT..."); //Initialize DNS server for captive portal captdnsInit(); //Initialize espfs containing static webpages espFsInit((void*)(webpages_espfs_start)); //Initialize webserver httpdInit(builtInUrls, SERVER_PORT); #endif os_timer_disarm(&reset_flg_t); os_timer_setfn(&reset_flg_t,user_esp_platform_set_reset_flg,MODE_NORMAL); os_timer_arm(&reset_flg_t,2000,0); user_light_set_duty(0, LIGHT_RED); user_light_set_duty(0, LIGHT_GREEN); user_light_set_duty(0, LIGHT_BLUE); user_light_set_duty(22222, LIGHT_WARM_WHITE); user_light_set_duty(22222, LIGHT_COLD_WHITE); os_delay_us(5000); light_ShowDevLevel(5); return; } #if ESP_RESET_DEBUG_EN else if(esp_param.reset_flg == MODE_RESET){ os_printf("==================\r\n"); os_printf("RESET FLG==1,RESET IN 200 MS \r\n"); os_printf("==================\r\n"); user_esp_platform_set_reset_flg(MODE_APMODE); os_timer_disarm(&reset_flg_t); os_timer_setfn(&reset_flg_t,user_esp_platform_reset_default,0); os_timer_arm(&reset_flg_t,200,0); } else{ os_printf("==================\r\n"); os_printf("RESET FLG==0,NORMAL MODE \r\n"); os_printf("==================\r\n"); user_esp_platform_set_reset_flg(MODE_APMODE); os_timer_disarm(&reset_flg_t); os_timer_setfn(&reset_flg_t,user_esp_platform_set_reset_flg,0); os_timer_arm(&reset_flg_t,2000,0); } #endif #endif #if ESP_MESH_SUPPORT /*initialize mesh network. 1. search for existing mesh. 2. if failed , try connecting recorded router. */ user_MeshParamInit(); user_MeshStart(); #elif ESP_TOUCH_SUPPORT esptouch_FlowStart(); #endif }