Добрый день!
Задача стоит в управлении микропроцессорными устройствами через телефон с андроидом, с помощью esp8266.
Пытаюсь настроить сервер (esp за главного) с помощью примера "lwip_open_demo_app" в данной UDK на Eclipse.
Сервер поднимается, связь с телефоном настраивается, также получилось посылать data с телефона на esp8266, а вот в обратную сторону никак - не могу найти необходимой функции. Вернее, она вроде есть (tcpsrv_sent_data), но в примере она не применяется, и как ее использовать я так и не понял. постоянно ошибки в попытке назвать адресата. Так же, возможно необходимо не с помощью TCP, а с помощью UDP обмениваться пакетами?
Можете что-то подсказать?
Задача стоит в управлении микропроцессорными устройствами через телефон с андроидом, с помощью esp8266.
Пытаюсь настроить сервер (esp за главного) с помощью примера "lwip_open_demo_app" в данной UDK на Eclipse.
Сервер поднимается, связь с телефоном настраивается, также получилось посылать data с телефона на esp8266, а вот в обратную сторону никак - не могу найти необходимой функции. Вернее, она вроде есть (tcpsrv_sent_data), но в примере она не применяется, и как ее использовать я так и не понял. постоянно ошибки в попытке назвать адресата. Так же, возможно необходимо не с помощью TCP, а с помощью UDP обмениваться пакетами?
Можете что-то подсказать?
Код:
/******************************************************************************
* FunctionName : tcpsrv_sent_data
* Description : sent data for server
* Parameters : void *arg -- client or server to send
* uint8* psent -- Data to send
* uint16 length -- Length of data to send
* Returns : none
*******************************************************************************/
err_t ICACHE_FLASH_ATTR tcpsrv_sent_data(TCP_SERV_CONN * ts_conn, uint8 *psent, uint16 length)
{
if (ts_conn == NULL || psent == NULL || length == 0) {
return ERR_ARG;
}
//if(ts_conn->state == ESPCONN_WAIT) return;
struct tcp_pcb *pcb = ts_conn->pcb;
err_t err;
u16_t len = length;
if (tcp_sndbuf(pcb) < length) len = tcp_sndbuf(pcb);
if(len) {
u16_t mss2 = (tcp_mss(pcb)<< 1); // <<2 ???!!!
if(len > mss2) len = mss2;
do {
err = tcp_write(pcb, psent, len, 0);
if (err == ERR_MEM) len /= 2;
} while (err == ERR_MEM && len > 1);
if (err == ERR_OK) {
ts_conn->ptrbuf = psent + len;
ts_conn->cntr = length - len;
err = tcp_output(pcb);
}
else ts_conn->state = ESPCONN_CLOSE;
}
else return tcp_output(pcb);
return err;