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;
}
Exemple #2
0
/* 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();
}
Exemple #3
0
/* 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;
}