ulysses
(Ulysses Fonseca)
December 18, 2019, 5:34pm
1
Hi,
I’m receiving from FreeRTOS+TCP on this way:
xSizeReceive = 0;
while( (xReceLen = FreeRTOS_recv( xSocketSend, receive, sizeof(receive), 0 )) >= 0 ){
//vTaskDelay(pdMS_TO_TICKS( 250 ) );
xSizeReceive += xReceLen;
DEBUGOUT("->: %d '%s'\n",xReceLen,receive);
}
When i receive smaller packages don’t have problem, but when the content has more than 1000 bytes i only receive 1000 bytes, and function FreeRTOS_recv return 0.
I increase the ipconfigNETWORK_MTU for 1460 but don’t have diference, increase size of receive buffer to 4KB.
ulysses
(Ulysses Fonseca)
December 18, 2019, 7:09pm
2
I changed my received method for this new, like here :
for( ;; ){
/* Receive another block of data into the cRxedData buffer. */
xReceLen = FreeRTOS_recv( xSocketSend, recBuf, sizeof(recBuf), 0 );
if( xReceLen > 0 )
{
/* Data was received, process it here. */
//prvPorcessData( cRxedData, lBytesReceived );
DEBUGOUT("->: %d\n",xReceLen);
xSizeReceive += xReceLen;
}
else if( xReceLen == 0 )
{
/* No data was received, but FreeRTOS_recv() did not return an error.
Timeout? */
DEBUGOUT("Timeout\n");
}
else
{
DEBUGOUT("Shutdown\n");
/* Error (maybe the connected socket already shut down the socket?).
Attempt graceful shutdown. */
FreeRTOS_shutdown( xSocketSend, FREERTOS_SHUT_RDWR );
break;
}
}
while( (xReceLen = FreeRTOS_recv( xSocketSend, recBuf, sizeof(recBuf), 0 )) >= 0 ){
//vTaskDelay(pdMS_TO_TICKS( 250 ) );
//xSizeReceive += xReceLen;
DEBUGOUT("->: %d '%s'\n",xReceLen,recBuf);
}
For now is working, i’ll do more tests to validade.