Socket Creation Problem

ramanuday wrote on Thursday, July 02, 2015:

I tried to create a new socket using

FreeRTOS_socket(FREERTOS_AF_INET, FREERTOS_SOCK_DGRAM, FREERTOS_IPPROTO_UDP );

but it is entering the vAssertCalled() function and continuously looping over there.

When i tried to debug it is being called from the function

FreeRTOS_Socket()
{


configASSERT( listLIST_IS_INITIALISED( &xBoundSocketsList ) );

}

Can anyone help me with this socket creation…?

rtel wrote on Thursday, July 02, 2015:

Have you called FreeRTOS_IPInit()? http://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/TCP_Networking_Tutorial_Initialising_TCP.html

heinbali01 wrote on Thursday, July 02, 2015:

Hi,

On the page referred to by Richard you will also see this important user-provided function:

void vApplicationIPNetworkEventHook( eIPCallbackEvent_t eNetworkEvent )
{
static BaseType_t xTasksAlreadyCreated = pdFALSE;

    /* Both eNetworkUp and eNetworkDown events can be processed here. */
    if( eNetworkEvent == eNetworkUp )
    {
        /* Create the tasks that use the TCP/IP stack if they have not already
        been created. */
        if( xTasksAlreadyCreated == pdFALSE )
        {
            /*
             * For convenience, tasks that use FreeRTOS+TCP can be created here
             * to ensure they are not created before the network is usable.
             */

            xTasksAlreadyCreated = pdTRUE;
        }
    }
}

Only after xTasksAlreadyCreated has become true, you can start create and use sockets.
Of course, you can also make this a global variable and call it something like:

BaseType_t xIPNetworkIsReady = pdFALSE;

Regards.