В проекте используется lwip RAW API без RTOS
TCP клиент, соединяется с сервером и обменивается данными
после приема 2920 байт данных от сервера (в нескольких сообщениях) с момента соединения,
прием прекращается. На передачу стек продолжает работать нормально.
После дисконнекта и повторного коннекта, все снова работает, пока не будет принято 2920 байт.
код функции обработки приема
Код
err_t tcp_client_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err)
{
u8 data;
u32 i;
if(p!=NULL) //Защита при дисконнекте
{
for(i=0;i<p->len;i++)
{
data=((u8 *)p->payload)[i];
RxBuf[RxNum++]=data;
}
RxTotal+=p->len; //это тот самый счетчик, который считает принятые байты с момента коннекта до 2920
pbuf_free(p);
LAN_RxProcess();
}
return ERR_OK;
}