void ICACHE_FLASH_ATTR ap_server_close() { MessageQueue_clear(&sendq); MessageQueue_clear(&recvq); /* Note: Do not call espconn_disconnect. It seems the SDK does not like this, and will fall in an infinite loop and then restart by the watchdog. It may also print an error like "lmac.c 599". */ // tcpserver_conn = NULL; }
/* Message::clear: free message queue */ void Message::clear() { if(m_messageMutex) glfwDestroyMutex(m_messageMutex); if(m_logStringMutex) glfwDestroyMutex(m_logStringMutex); MessageQueue_clear(&m_messageQueue); MessageQueue_clear(&m_logStringQueue); initialize(); }
/* Message::clear: free message queue */ void Message::clear() { if(m_mutexCommand) glfwDestroyMutex(m_mutexCommand); if(m_mutexEvent) glfwDestroyMutex(m_mutexEvent); if(m_mutexLog) glfwDestroyMutex(m_mutexLog); MessageQueue_clear(&m_queueCommand); MessageQueue_clear(&m_queueEvent); MessageQueue_clear(&m_queueLog); initialize(); }
static int ICACHE_FLASH_ATTR server_init_tcp(uint8 ifnum) { DEBUG("enter server_init_tcp"); static struct ip_info info; static struct espconn server_conn; static esp_tcp server_tcp; int rc; if (!wifi_get_ip_info(ifnum, &info)) { ets_uart_printf("Failed to get ip info.\n"); DEBUG("exit server_init_tcp"); return -1; } MessageQueue_clear(&sendq); MessageQueue_clear(&recvq); system_os_task(server_task, SERVER_TASK_PRIO, server_task_queue, SERVER_TASK_QUEUE_LEN); server_tcp.local_port = 80; os_memcpy(server_tcp.local_ip, &(info.ip.addr), 4); server_conn.type = ESPCONN_TCP; server_conn.proto.tcp = &server_tcp; if (espconn_regist_sentcb(&server_conn, tcpserver_sent_cb) != 0) { ets_uart_printf("Failed to register sent callback.\n"); DEBUG("exit server_init_tcp"); return -1; } if (espconn_regist_recvcb(&server_conn, tcpserver_recv_cb) != 0) { ets_uart_printf("Failed to register recv callback.\n"); DEBUG("exit server_init_tcp"); return -1; } if (espconn_regist_connectcb(&server_conn, tcpserver_connect_cb) != 0) { ets_uart_printf("Failed to register connect callback.\n"); DEBUG("exit server_init_tcp"); return -1; } if (espconn_regist_reconcb(&server_conn, tcpserver_reconnect_cb) != 0) { ets_uart_printf("Failed to register reconnect callback.\n"); DEBUG("exit server_init_tcp"); return -1; } if (espconn_regist_disconcb(&server_conn, tcpserver_disconnect_cb) != 0) { ets_uart_printf("Failed to register disconnect callback.\n"); DEBUG("exit server_init_tcp"); return -1; } server_conn.link_cnt = 0; server_conn.reverse = NULL; espconn_disconnect(&server_conn); if ((rc = espconn_accept(&server_conn)) != 0) { if (rc == ESPCONN_ISCONN) { ets_uart_printf("TCP server already connected.\n"); } else { ets_uart_printf("Failed to accept. %d\n", rc); DEBUG("exit server_init_tcp"); return -1; } } else { /* Set to 0 for unlimited TCP connection time (no timeout) */ if (espconn_regist_time(&server_conn, 0, 0) != 0) { ets_uart_printf("Failed to set timeout interval.\n"); DEBUG("exit server_init_tcp"); return -1; } } // tcpserver_conn = &server_conn; ets_uart_printf("Successfully initialized TCP server.\n\n"); DEBUG("exit server_init_tcp"); return 0; }