void ICACHE_FLASH_ATTR tcpserver_init(void) { int8_t res; tcp_server.type = ESPCONN_TCP; tcp_server.state = ESPCONN_NONE; tcp_server.proto.tcp = &tcp_config; tcp_server.proto.tcp->local_port = TCP_SERVER_LOCAL_PORT; espconn_regist_connectcb(&tcp_server, incoming_connection_callback); espconn_tcp_set_max_con_allow(&tcp_server, 1); //Allow 1 connection max res = espconn_accept(&tcp_server); if(res == 0) os_printf("Created TCP server on port %d, running on ROM %d, AP RSSI: %ddBm, WiFi mode: %d.\r\n", tcp_server.proto.tcp->local_port, system_upgrade_userbin_check(), wifi_station_get_rssi(), wifi_get_phy_mode()); else os_printf("Failed to create TCP server, error code: %d.\r\n", res); }
//Initialize listening socket, do general initialization void ICACHE_FLASH_ATTR httpdPlatInit(int port, int maxConnCt) { httpdConn.type=ESPCONN_TCP; httpdConn.state=ESPCONN_NONE; httpdTcp.local_port=port; httpdConn.proto.tcp=&httpdTcp; espconn_regist_connectcb(&httpdConn, platConnCb); espconn_accept(&httpdConn); espconn_regist_time(&httpdConn, HTTPD_CONN_TIMEOUT, 0); // Configure timeout espconn_tcp_set_max_con_allow(&httpdConn, (uint8) maxConnCt); }
/** @brief Accept an incomming connection, setup connect_callback @param[in] *esp_config, ESP8266 network type an mode configuration structure @param[in] *esp_tcp_config, network protocol structure @param[in] port, network port to listen on @param[in] connect_callback: connection callback function pointer @return void */ MEMSPACE static void tcp_accept(struct espconn *esp_config, esp_tcp *esp_tcp_config, uint16_t port, void (*connect_callback)(struct espconn *)) { memset(esp_tcp_config, 0, sizeof(*esp_tcp_config)); esp_tcp_config->local_port = port; memset(esp_config, 0, sizeof(*esp_config)); esp_config->type = ESPCONN_TCP; esp_config->state = ESPCONN_NONE; esp_config->proto.tcp = esp_tcp_config; espconn_regist_connectcb(esp_config, (espconn_connect_callback)connect_callback); espconn_accept(esp_config); espconn_tcp_set_max_con_allow(esp_config, 1); }
void esp8266_tcp_stream_bind(lws_sockfd_type fd, int port, struct lws *wsi) { fd->proto.tcp->local_port = port; fd->reverse = wsi; hacky_context = wsi->context; espconn_regist_connectcb(fd, esp8266_cb_connect); /* hmmm it means, listen() + accept() */ espconn_accept(fd); espconn_tcp_set_max_con_allow(fd, 10); }
//Httpd initialization routine. Call this to kick off webserver functionality. void ICACHE_FLASH_ATTR httpdInit(HttpdBuiltInUrl *fixedUrls, int port) { int i; for (i = 0; i<MAX_CONN; i++) { connData[i].conn = NULL; } httpdConn.type = ESPCONN_TCP; httpdConn.state = ESPCONN_NONE; httpdTcp.local_port = port; httpdConn.proto.tcp = &httpdTcp; builtInUrls = fixedUrls; DBG("Httpd init, conn=%p\n", &httpdConn); espconn_regist_connectcb(&httpdConn, httpdConnectCb); espconn_accept(&httpdConn); espconn_tcp_set_max_con_allow(&httpdConn, MAX_CONN); }