Thanks to one of the users of FreeRTOS+TCP, Tamas Selmeci, we discovered an issue: a TCP connection may die as soon as a transmitted packet gets dropped (never arrives).
This can only happen when
configTICK_RATE_HZ is defined as less than 1000 Hz.
Proposed change for now:
Within 'FreeRTOS_TCP_IP.c' : s/pdMS_TO_TICKS/pdMS_TO_MIN_TICKS/g In 'FreeRTOS_IP.h' please add this macro : #define pdMS_TO_MIN_TICKS( xTimeInMs )\ ( pdMS_TO_TICKS( ( xTimeInMs ) ) < 1 ? 1 : pdMS_TO_TICKS( ( xTimeInMs ) ) )
The problem occurs when
pdMS_TO_TICKS() returns zero. When
pxSocket->u.xTcp.usTimeout becomes zero it means: this socket does not need attention from the IP-task. As a result, the connection would die.
FreeRTOS+TCP will soon support multiple interfaces and IP-addresses!
If anyone would like to pioneer and help us with testing, pleas write to us directly ( e.g. to h.tibosch located at freertos.org ). We’d love to get feedback from you before releasing the new source code.