NOTE: This API has been deprecated from FreeRTOS V4.0.0
onwards. Please refer to
FreeRTOS_SetEndPointConfiguration
for the new APIs supporting IPv6, Multiple Endpoints and Multiple interfaces. To use the deprecated APIs please set
ipconfigIPv4_BACKWARD_COMPATIBLE to 1 in the FreeRTOSIPConfig.h header file.
FreeRTOS_IP.h
void FreeRTOS_SetIPAddress( uint32_t ulIPAddress );
This function can be used to update the IPv4 address of the first IPv4 endpoint used by the FreeRTOS-Plus-TCP device after
the TCP stack has already been initialized with a call to
FreeRTOS_IPInit_Multi().
It will have no effect if an IPv4 endpoint cannot be found.
Parameters:
ulIPAddress
|
The 32-bit IPv4 address, in network endian order, which the device should use.
FreeRTOS_htonl
can be used to get the network endian representation of the 32-bit IP address.
|
Caution:
This function is not thread safe and should be used with the taskENTER_CRITICAL
/taskEXIT_CRITICAL
pair. A call to this function should be made only when there is no active connection (either UDP or TCP), or else that
connection will be severed.
Example usage:
The following code snippet shows how to use FreeRTOS_SetIPAddress
.
void vUserTask( void *pvParameters )
{
uint32_t ulHostEndianIPAddress = 0xC0A8010C;
uint32_t ulNetworkEndianIPAddress = FreeRTOS_htonl( ulHostEndianIPAddress );
uint32_t ulHostEndianGatewayAddress = 0xC0A80101;
uint32_t ulNetworkEndianGatewayAddress = FreeRTOS_htonl( ulHostEndianGatewayAddress );
uint32_t ulHostEndianNetmask = 0xFFFFFF00;
uint32_t ulNetworkEndianNetmask = FreeRTOS_htonl( ulHostEndianNetmask );
BaseType_t xUserWantsToUpdateIP = pdFALSE;
BaseType_t xUserWantsToUpdateNetmask = pdFALSE;
BaseType_t xUserWantsToUpdateGateway = pdFALSE;
( void ) pvParameters;
for( ; ; )
{
if( xUserWantsToUpdateIP == pdTRUE )
{
taskENTER_CRITICAL();
{
FreeRTOS_SetIPAddress( ulNetworkEndianIPAddress );
}
taskEXIT_CRITICAL();
}
if( xUserWantsToUpdateNetmask == pdTRUE )
{
taskENTER_CRITICAL();
{
FreeRTOS_SetNetmask( ulNetworkEndianNetmask );
}
taskEXIT_CRITICAL();
}
if( xUserWantsToUpdateGateway == pdTRUE )
{
taskENTER_CRITICAL();
{
FreeRTOS_SetGetwayAddress( ulNetworkEndianGatewayAddress );
}
taskEXIT_CRITICAL();
}
}
}
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.