diff --git a/V4.3.1/_free_r_t_o_s___a_r_p_8c.html b/V4.3.1/_free_r_t_o_s___a_r_p_8c.html new file mode 100644 index 000000000..4ed1563a8 --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___a_r_p_8c.html @@ -0,0 +1,858 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_ARP.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_ARP.c File Reference
+
+
+ +

Implements the Address Resolution Protocol for the FreeRTOS+TCP network stack. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "queue.h"
+#include "semphr.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_IP_Timers.h"
+#include "FreeRTOS_Sockets.h"
+#include "FreeRTOS_IP_Private.h"
+#include "FreeRTOS_ARP.h"
+#include "FreeRTOS_UDP_IP.h"
+#include "FreeRTOS_DHCP.h"
+#include "FreeRTOS_DNS.h"
+#include "NetworkBufferManagement.h"
+#include "NetworkInterface.h"
+#include "FreeRTOS_Routing.h"
+
+ + + + + + + + + + + + + +

+Macros

+#define arpMAX_ARP_AGE_BEFORE_NEW_ARP_REQUEST   ( 3U )
 When the age of an entry in the ARP table reaches this value (it counts down to zero, so this is an old entry) an ARP request will be sent to see if the entry is still valid and can therefore be refreshed.
 
+#define arpGRATUITOUS_ARP_PERIOD   ( pdMS_TO_TICKS( 20000U ) )
 The time between gratuitous ARPs.
 
+#define arpIP_CLASH_RESET_TIMEOUT_MS   10000U
 When there is another device which has the same IP address as the IP address of this device, a defensive ARP request should be sent out. However, according to RFC 5227 section 1.1, there must be a minimum interval of 10 seconds between consecutive defensive ARP packets.
 
+#define arpIP_CLASH_MAX_RETRIES   1U
 Maximum number of defensive ARPs to be sent for an ARP clash per arpIP_CLASH_RESET_TIMEOUT_MS period. The retries are limited to one as outlined by RFC 5227 section 2.4 part b.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

static void vARPProcessPacketRequest (ARPPacket_t *pxARPFrame, NetworkEndPoint_t *pxTargetEndPoint, uint32_t ulSenderProtocolAddress)
 Process an ARP request packets.
 
static void vARPProcessPacketReply (const ARPPacket_t *pxARPFrame, NetworkEndPoint_t *pxTargetEndPoint, uint32_t ulSenderProtocolAddress)
 A device has sent an ARP reply, process it.
 
static eResolutionLookupResult_t prvCacheLookup (uint32_t ulAddressToLookup, MACAddress_t *const pxMACAddress, NetworkEndPoint_t **ppxEndPoint)
 Lookup an IP address in the ARP cache.
 
static eResolutionLookupResult_t eARPGetCacheEntryGateWay (uint32_t *pulIPAddress, MACAddress_t *const pxMACAddress, struct xNetworkEndPoint **ppxEndPoint)
 The IPv4 address is apparently a web-address. Find a gateway..
 
static BaseType_t prvFindCacheEntry (const MACAddress_t *pxMACAddress, const uint32_t ulIPAddress, struct xNetworkEndPoint *pxEndPoint, CacheLocation_t *pxLocation)
 The results of an ARP look-up shall be stored in the ARP cache. This helper function looks up the location.
 
eFrameProcessingResult_t eARPProcessPacket (const NetworkBufferDescriptor_t *pxNetworkBuffer)
 Process the ARP packets.
 
BaseType_t xIsIPInARPCache (uint32_t ulAddressToLookup)
 Check whether an IP address is in the ARP cache.
 
BaseType_t xCheckRequiresARPResolution (const NetworkBufferDescriptor_t *pxNetworkBuffer)
 Check whether a packet needs ARP resolution if it is on local subnet. If required send an ARP request.
 
void vARPRefreshCacheEntryAge (const MACAddress_t *pxMACAddress, const uint32_t ulIPAddress)
 Look for an IP-MAC couple in ARP cache and reset the 'age' field. If no match is found then no action will be taken.
 
void vARPRefreshCacheEntry (const MACAddress_t *pxMACAddress, const uint32_t ulIPAddress, struct xNetworkEndPoint *pxEndPoint)
 Add/update the ARP cache entry MAC-address to IP-address mapping.
 
eResolutionLookupResult_t eARPGetCacheEntry (uint32_t *pulIPAddress, MACAddress_t *const pxMACAddress, struct xNetworkEndPoint **ppxEndPoint)
 Look for ulIPAddress in the ARP cache.
 
+void vARPAgeCache (void)
 A call to this function will update (or 'Age') the ARP cache entries. The function will also try to prevent a removal of entry by sending an ARP query. It will also check whether we are waiting on an ARP reply - if we are, then an ARP request will be re-sent. In case an ARP entry has 'Aged' to 0, it will be removed from the ARP cache.
 
+void vARPSendGratuitous (void)
 Send a Gratuitous ARP packet to allow this node to announce the IP-MAC mapping to the entire network.
 
void FreeRTOS_OutputARPRequest_Multi (NetworkEndPoint_t *pxEndPoint, uint32_t ulIPAddress)
 Create and send an ARP request packet to given IPv4 endpoint.
 
void FreeRTOS_OutputARPRequest (uint32_t ulIPAddress)
 Create and send an ARP request packet.
 
BaseType_t xARPWaitResolution (uint32_t ulIPAddress, TickType_t uxTicksToWait)
 Wait for address resolution: look-up the IP-address in the ARP-cache, and if needed send an ARP request, and wait for a reply. This function is useful when called before FreeRTOS_sendto().
 
void vARPGenerateRequestPacket (NetworkBufferDescriptor_t *const pxNetworkBuffer)
 Generate an ARP request packet by copying various constant details to the buffer.
 
void FreeRTOS_ClearARP (const struct xNetworkEndPoint *pxEndPoint)
 A call to this function will clear the ARP cache.
 
+ + + + + + + +

+Variables

+_static ARPCacheRow_t xARPCache [ipconfigARP_CACHE_ENTRIES]
 The ARP cache.
 
+static TickType_t xLastGratuitousARPTime = 0U
 The time at which the last gratuitous ARP was sent. Gratuitous ARPs are used to ensure ARP tables are up to date and to detect IP address conflicts.
 
+

Detailed Description

+

Implements the Address Resolution Protocol for the FreeRTOS+TCP network stack.

+

Function Documentation

+ +

◆ vARPProcessPacketRequest()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void vARPProcessPacketRequest (ARPPacket_t * pxARPFrame,
NetworkEndPoint_t * pxTargetEndPoint,
uint32_t ulSenderProtocolAddress 
)
+
+static
+
+ +

Process an ARP request packets.

+
Parameters
+ + + + +
[in]pxARPFramethe complete ARP-frame.
[in]pxTargetEndPointthe end-point that handles the peer's address.
[in]ulSenderProtocolAddressthe IP-address of the sender.
+
+
+ +
+
+ +

◆ vARPProcessPacketReply()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void vARPProcessPacketReply (const ARPPacket_t * pxARPFrame,
NetworkEndPoint_t * pxTargetEndPoint,
uint32_t ulSenderProtocolAddress 
)
+
+static
+
+ +

A device has sent an ARP reply, process it.

+
Parameters
+ + + + +
[in]pxARPFrameThe ARP packet received.
[in]pxTargetEndPointThe end-point on which it is received.
[in]ulSenderProtocolAddressThe IPv4 address involved.
+
+
+ +
+
+ +

◆ prvCacheLookup()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static eResolutionLookupResult_t prvCacheLookup (uint32_t ulAddressToLookup,
MACAddress_t *const pxMACAddress,
NetworkEndPoint_t ** ppxEndPoint 
)
+
+static
+
+ +

Lookup an IP address in the ARP cache.

+
Parameters
+ + + + +
[in]ulAddressToLookupThe 32-bit representation of an IP address to lookup.
[out]pxMACAddressA pointer to MACAddress_t variable where, if there is an ARP cache hit, the MAC address corresponding to the IP address will be stored.
[in,out]ppxEndPointa pointer to the end-point will be stored.
+
+
+
Returns
When the IP-address is found: eResolutionCacheHit, when not found: eResolutionCacheMiss, and when waiting for a ARP reply: eResolutionFailed.
+ +
+
+ +

◆ eARPGetCacheEntryGateWay()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static eResolutionLookupResult_t eARPGetCacheEntryGateWay (uint32_t * pulIPAddress,
MACAddress_t *const pxMACAddress,
struct xNetworkEndPoint ** ppxEndPoint 
)
+
+static
+
+ +

The IPv4 address is apparently a web-address. Find a gateway..

+
Parameters
+ + + + +
[in]pulIPAddressThe target IP-address. It may be replaced with the IP address of a gateway.
[in]pxMACAddressIn case the MAC-address is found in cache, it will be stored to the buffer provided.
[out]ppxEndPointThe end-point of the gateway will be copy to the pointee.
+
+
+ +
+
+ +

◆ prvFindCacheEntry()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static BaseType_t prvFindCacheEntry (const MACAddress_t * pxMACAddress,
const uint32_t ulIPAddress,
struct xNetworkEndPoint * pxEndPoint,
CacheLocation_t * pxLocation 
)
+
+static
+
+ +

The results of an ARP look-up shall be stored in the ARP cache. This helper function looks up the location.

+
Parameters
+ + + + + +
[in]pxMACAddressThe MAC-address belonging to the IP-address.
[in]ulIPAddressThe IP-address of the entry.
[in]pxEndPointThe end-point that will stored in the table.
[out]pxLocationThe results of this search are written in this struct.
+
+
+ +
+
+ +

◆ eARPProcessPacket()

+ +
+
+ + + + + + + + +
eFrameProcessingResult_t eARPProcessPacket (const NetworkBufferDescriptor_t * pxNetworkBuffer)
+
+ +

Process the ARP packets.

+
Parameters
+ + +
[in]pxNetworkBufferThe network buffer with the packet to be processed.
+
+
+
Returns
An enum which says whether to return the frame or to release it.
+ +
+
+ +

◆ xIsIPInARPCache()

+ +
+
+ + + + + + + + +
BaseType_t xIsIPInARPCache (uint32_t ulAddressToLookup)
+
+ +

Check whether an IP address is in the ARP cache.

+
Parameters
+ + +
[in]ulAddressToLookupThe 32-bit representation of an IP address to check for.
+
+
+
Returns
When the IP-address is found: pdTRUE, else pdFALSE.
+ +
+
+ +

◆ xCheckRequiresARPResolution()

+ +
+
+ + + + + + + + +
BaseType_t xCheckRequiresARPResolution (const NetworkBufferDescriptor_t * pxNetworkBuffer)
+
+ +

Check whether a packet needs ARP resolution if it is on local subnet. If required send an ARP request.

+
Parameters
+ + +
[in]pxNetworkBufferThe network buffer with the packet to be checked.
+
+
+
Returns
pdTRUE if the packet needs ARP resolution, pdFALSE otherwise.
+ +
+
+ +

◆ vARPRefreshCacheEntryAge()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void vARPRefreshCacheEntryAge (const MACAddress_t * pxMACAddress,
const uint32_t ulIPAddress 
)
+
+ +

Look for an IP-MAC couple in ARP cache and reset the 'age' field. If no match is found then no action will be taken.

+
Parameters
+ + + +
[in]pxMACAddressPointer to the MAC address whose entry needs to be updated.
[in]ulIPAddressthe IP address whose corresponding entry needs to be updated.
+
+
+ +
+
+ +

◆ vARPRefreshCacheEntry()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void vARPRefreshCacheEntry (const MACAddress_t * pxMACAddress,
const uint32_t ulIPAddress,
struct xNetworkEndPoint * pxEndPoint 
)
+
+ +

Add/update the ARP cache entry MAC-address to IP-address mapping.

+
Parameters
+ + + + +
[in]pxMACAddressPointer to the MAC address whose mapping is being updated.
[in]ulIPAddress32-bit representation of the IP-address whose mapping is being updated.
[in]pxEndPointThe end-point stored in the table.
+
+
+ +
+
+ +

◆ eARPGetCacheEntry()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
eResolutionLookupResult_t eARPGetCacheEntry (uint32_t * pulIPAddress,
MACAddress_t *const pxMACAddress,
struct xNetworkEndPoint ** ppxEndPoint 
)
+
+ +

Look for ulIPAddress in the ARP cache.

+
Parameters
+ + + + +
[in,out]pulIPAddressPointer to the IP-address to be queried to the ARP cache.
[in,out]pxMACAddressPointer to a MACAddress_t variable where the MAC address will be stored, if found.
[out]ppxEndPointPointer to the end-point of the gateway will be stored.
+
+
+
Returns
If the IP address exists, copy the associated MAC address into pxMACAddress, refresh the ARP cache entry's age, and return eResolutionCacheHit. If the IP address does not exist in the ARP cache return eResolutionCacheMiss. If the packet cannot be sent for any reason (maybe DHCP is still in process, or the addressing needs a gateway but there isn't a gateway defined) then return eResolutionFailed.
+ +
+
+ +

◆ FreeRTOS_OutputARPRequest_Multi()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void FreeRTOS_OutputARPRequest_Multi (NetworkEndPoint_t * pxEndPoint,
uint32_t ulIPAddress 
)
+
+ +

Create and send an ARP request packet to given IPv4 endpoint.

+
Parameters
+ + + +
[in]pxEndPointEndpoint through which the requests should be sent.
[in]ulIPAddressA 32-bit representation of the IP-address whose physical (MAC) address is required.
+
+
+ +
+
+ +

◆ FreeRTOS_OutputARPRequest()

+ +
+
+ + + + + + + + +
void FreeRTOS_OutputARPRequest (uint32_t ulIPAddress)
+
+ +

Create and send an ARP request packet.

+
Parameters
+ + +
[in]ulIPAddressA 32-bit representation of the IP-address whose physical (MAC) address is required.
+
+
+ +
+
+ +

◆ xARPWaitResolution()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BaseType_t xARPWaitResolution (uint32_t ulIPAddress,
TickType_t uxTicksToWait 
)
+
+ +

Wait for address resolution: look-up the IP-address in the ARP-cache, and if needed send an ARP request, and wait for a reply. This function is useful when called before FreeRTOS_sendto().

+
Parameters
+ + + +
[in]ulIPAddressThe IP-address to look-up.
[in]uxTicksToWaitThe maximum number of clock ticks to wait for a reply.
+
+
+
Returns
Zero when successful.
+ +
+
+ +

◆ vARPGenerateRequestPacket()

+ +
+
+ + + + + + + + +
void vARPGenerateRequestPacket (NetworkBufferDescriptor_t *const pxNetworkBuffer)
+
+ +

Generate an ARP request packet by copying various constant details to the buffer.

+
Parameters
+ + +
[in,out]pxNetworkBufferPointer to the buffer which has to be filled with the ARP request packet details.
+
+
+ +
+
+ +

◆ FreeRTOS_ClearARP()

+ +
+
+ + + + + + + + +
void FreeRTOS_ClearARP (const struct xNetworkEndPoint * pxEndPoint)
+
+ +

A call to this function will clear the ARP cache.

+
Parameters
+ + +
[in]pxEndPointonly clean entries with this end-point, or when NULL, clear the entire ARP cache.
+
+
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___bit_config_8c.html b/V4.3.1/_free_r_t_o_s___bit_config_8c.html new file mode 100644 index 000000000..a2eac41cb --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___bit_config_8c.html @@ -0,0 +1,567 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_BitConfig.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_BitConfig.c File Reference
+
+
+ +

Some functions that help when analysing a binary stream of information. It offers an alternative to using packet structs with unaligned data members. +More...

+
#include <stdint.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "semphr.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_UDP_IP.h"
+#include "FreeRTOS_Sockets.h"
+#include "FreeRTOS_BitConfig.h"
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

BaseType_t xBitConfig_init (BitConfig_t *pxConfig, const uint8_t *pucData, size_t uxSize)
 Initialise a bit-config struct.
 
BaseType_t xBitConfig_read_uc (BitConfig_t *pxConfig, uint8_t *pucData, size_t uxSize)
 Read from a bit-config struct.
 
BaseType_t pucBitConfig_peek_last_index_uc (BitConfig_t *pxConfig, uint8_t *pucData, size_t uxSize)
 Peek the last byte from a bit-config struct.
 
uint8_t ucBitConfig_read_8 (BitConfig_t *pxConfig)
 Read a byte from the bit stream.
 
uint16_t usBitConfig_read_16 (BitConfig_t *pxConfig)
 Read 2 bytes from the bit stream.
 
uint32_t ulBitConfig_read_32 (BitConfig_t *pxConfig)
 Read 4 bytes from the bit stream.
 
void vBitConfig_write_uc (BitConfig_t *pxConfig, const uint8_t *pucData, size_t uxSize)
 Read any number bytes from the bit stream.
 
void vBitConfig_write_8 (BitConfig_t *pxConfig, uint8_t ucValue)
 Write a byte to the bit stream.
 
void vBitConfig_write_16 (BitConfig_t *pxConfig, uint16_t usValue)
 Write a short word to the bit stream.
 
void vBitConfig_write_32 (BitConfig_t *pxConfig, uint32_t ulValue)
 Write a 32-bit word to the bit stream.
 
void vBitConfig_release (BitConfig_t *pxConfig)
 Deallocate ( release ) the buffer, and clear the bit stream structure. Note that the struct must have be initialised before calling this function.
 
+

Detailed Description

+

Some functions that help when analysing a binary stream of information. It offers an alternative to using packet structs with unaligned data members.

+

Function Documentation

+ +

◆ xBitConfig_init()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t xBitConfig_init (BitConfig_t * pxConfig,
const uint8_t * pucData,
size_t uxSize 
)
+
+ +

Initialise a bit-config struct.

+
Parameters
+ + + + +
[in]pxConfigThe structure containing a copy of the bits.
[in]pucDataNot NULL if a bit-stream must be analysed, otherwise NULL.
[in]uxSizeThe length of the binary data stream.
+
+
+
Returns
pdTRUE if the malloc was OK, otherwise pdFALSE.
+ +
+
+ +

◆ xBitConfig_read_uc()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t xBitConfig_read_uc (BitConfig_t * pxConfig,
uint8_t * pucData,
size_t uxSize 
)
+
+ +

Read from a bit-config struct.

+
Parameters
+ + + + +
[in]pxConfigThe structure containing a copy of the bits.
[in]pucDataNot NULL if a bit-stream must be analysed, otherwise NULL.
[in]uxSizeThe length of the binary data stream.
+
+
+
Returns
pdTRUE if the malloc was OK, otherwise pdFALSE.
+ +
+
+ +

◆ pucBitConfig_peek_last_index_uc()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t pucBitConfig_peek_last_index_uc (BitConfig_t * pxConfig,
uint8_t * pucData,
size_t uxSize 
)
+
+ +

Peek the last byte from a bit-config struct.

+
Parameters
+ + + + +
[in]pxConfigThe structure containing a copy of the bits.
[in]pucDataThe buffer to stored peeked data.
[in]uxSizeThe length of the binary data stream.
+
+
+
Returns
pdTRUE if the malloc was OK, otherwise pdFALSE.
+ +
+
+ +

◆ ucBitConfig_read_8()

+ +
+
+ + + + + + + + +
uint8_t ucBitConfig_read_8 (BitConfig_t * pxConfig)
+
+ +

Read a byte from the bit stream.

+
Parameters
+ + +
[in]pxConfigThe structure containing a copy of the bits.
+
+
+
Returns
A byte value. When there was not enough data, xHasError will be set.
+ +
+
+ +

◆ usBitConfig_read_16()

+ +
+
+ + + + + + + + +
uint16_t usBitConfig_read_16 (BitConfig_t * pxConfig)
+
+ +

Read 2 bytes from the bit stream.

+
Parameters
+ + +
[in]pxConfigThe structure containing a copy of the bits.
+
+
+
Returns
A 16-bit value. When there was not enough data, xHasError will be set.
+ +
+
+ +

◆ ulBitConfig_read_32()

+ +
+
+ + + + + + + + +
uint32_t ulBitConfig_read_32 (BitConfig_t * pxConfig)
+
+ +

Read 4 bytes from the bit stream.

+
Parameters
+ + +
[in]pxConfigThe structure containing a copy of the bits.
+
+
+
Returns
A 32-bit value. When there was not enough data, xHasError will be set.
+ +
+
+ +

◆ vBitConfig_write_uc()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void vBitConfig_write_uc (BitConfig_t * pxConfig,
const uint8_t * pucData,
size_t uxSize 
)
+
+ +

Read any number bytes from the bit stream.

+
Parameters
+ + + + +
[in]pxConfigThe structure containing a copy of the bit stream.
[in]pucDataThe binary data to be written.
[in]uxSizeThe number of bytes to be written.
+
+
+

There is no return value. If the operation has failed, the field xHasError will be set.

+ +
+
+ +

◆ vBitConfig_write_8()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void vBitConfig_write_8 (BitConfig_t * pxConfig,
uint8_t ucValue 
)
+
+ +

Write a byte to the bit stream.

+
Parameters
+ + + +
[in]pxConfigThe structure containing a copy of the bits.
[in]ucValueThe byte to be written.
+
+
+

There is no return value. If the operation has failed, the field xHasError will be set.

+ +
+
+ +

◆ vBitConfig_write_16()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void vBitConfig_write_16 (BitConfig_t * pxConfig,
uint16_t usValue 
)
+
+ +

Write a short word to the bit stream.

+
Parameters
+ + + +
[in]pxConfigThe structure containing a copy of the bits.
[in]usValueThe 16-bit value to be written.
+
+
+

There is no return value. If the operation has failed, the field xHasError will be set.

+ +
+
+ +

◆ vBitConfig_write_32()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void vBitConfig_write_32 (BitConfig_t * pxConfig,
uint32_t ulValue 
)
+
+ +

Write a 32-bit word to the bit stream.

+
Parameters
+ + + +
[in]pxConfigThe structure containing a copy of the bits.
[in]ulValueThe 32-bit value to be written.
+
+
+

There is no return value. If the operation has failed, the field xHasError will be set.

+ +
+
+ +

◆ vBitConfig_release()

+ +
+
+ + + + + + + + +
void vBitConfig_release (BitConfig_t * pxConfig)
+
+ +

Deallocate ( release ) the buffer, and clear the bit stream structure. Note that the struct must have be initialised before calling this function.

+
Parameters
+ + +
[in]pxConfigThe structure containing a copy of the bits.
+
+
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___d_h_c_p_8c.html b/V4.3.1/_free_r_t_o_s___d_h_c_p_8c.html new file mode 100644 index 000000000..ec121e64f --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___d_h_c_p_8c.html @@ -0,0 +1,919 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_DHCP.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_DHCP.c File Reference
+
+
+ +

Implements the Dynamic Host Configuration Protocol for the FreeRTOS+TCP network stack. +More...

+
#include <stdint.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "semphr.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_Sockets.h"
+#include "FreeRTOS_IP_Private.h"
+#include "FreeRTOS_UDP_IP.h"
+#include "FreeRTOS_DHCP.h"
+#include "FreeRTOS_ARP.h"
+#include "FreeRTOS_IP_Timers.h"
+#include "NetworkInterface.h"
+#include "NetworkBufferManagement.h"
+#include "FreeRTOS_Routing.h"
+
+ + + + + +

+Macros

#define EP_DHCPData   pxEndPoint->xDHCPData
 
#define EP_IPv4_SETTINGS   pxEndPoint->ipv4_settings
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

static BaseType_t prvSendDHCPDiscover (NetworkEndPoint_t *pxEndPoint)
 Create and send a DHCP discover packet through the DHCP socket.
 
static BaseType_t prvProcessDHCPReplies (BaseType_t xExpectedMessageType, NetworkEndPoint_t *pxEndPoint)
 Process the DHCP replies.
 
static BaseType_t prvSendDHCPRequest (NetworkEndPoint_t *pxEndPoint)
 Create and send a DHCP request message through the DHCP socket.
 
static void prvInitialiseDHCP (NetworkEndPoint_t *pxEndPoint)
 Initialise the DHCP state machine by creating DHCP socket and begin the transaction.
 
static uint8_t * prvCreatePartDHCPMessage (struct freertos_sockaddr *pxAddress, BaseType_t xOpcode, const uint8_t *const pucOptionsArray, size_t *pxOptionsArraySize, const NetworkEndPoint_t *pxEndPoint)
 Create a partial DHCP message by filling in all the 'constant' fields.
 
+_static void prvCreateDHCPSocket (NetworkEndPoint_t *pxEndPoint)
 Create a DHCP socket with the defined timeouts. The same socket will be shared among all end-points that need DHCP.
 
static void prvCloseDHCPSocket (NetworkEndPoint_t *pxEndPoint)
 Close the DHCP socket, but only when there are no other end-points using it.
 
static void vDHCPProcessEndPoint (BaseType_t xReset, BaseType_t xDoCheck, NetworkEndPoint_t *pxEndPoint)
 Process the DHCP state machine based on current state.
 
static BaseType_t xHandleWaitingOffer (NetworkEndPoint_t *pxEndPoint, BaseType_t xDoCheck)
 Called by vDHCPProcessEndPoint(), this function handles the state 'eWaitingOffer'. If there is a reply, it will be examined, if there is a time-out, there may be a new new attempt, or it will give up.
 
static void vHandleWaitingAcknowledge (NetworkEndPoint_t *pxEndPoint, BaseType_t xDoCheck)
 Called by vDHCPProcessEndPoint(), this function handles the state 'eWaitingAcknowledge'. If there is a reply, it will be examined, if there is a time-out, there may be a new new attempt, or it will give up. After the acknowledge, the leasing of an IP-address will start.
 
static BaseType_t xHandleWaitingFirstDiscover (NetworkEndPoint_t *pxEndPoint)
 Called by vDHCPProcessEndPoint(), this function handles the state 'eWaitingSendFirstDiscover'. If will send a DISCOVER message to a DHCP server, and move to the next status 'eWaitingOffer'.
 
static void prvHandleWaitingeLeasedAddress (NetworkEndPoint_t *pxEndPoint)
 Called by vDHCPProcessEndPoint(), this function handles the state 'eLeasedAddress'. If waits until the lease must be renewed, and then send a new request.
 
static void vProcessHandleOption (NetworkEndPoint_t *pxEndPoint, ProcessSet_t *pxSet, BaseType_t xExpectedMessageType)
 Called by prvProcessDHCPReplies(), which walks through an array of DHCP options, this function will check a single option.
 
static BaseType_t xProcessCheckOption (ProcessSet_t *pxSet)
 Check an incoming DHCP option.
 
BaseType_t xIsDHCPSocket (const ConstSocket_t xSocket)
 Check whether a given socket is the DHCP socket or not.
 
void vDHCPProcess (BaseType_t xReset, struct xNetworkEndPoint *pxEndPoint)
 Process the DHCP state machine based on current state.
 
void vDHCPStop (struct xNetworkEndPoint *pxEndPoint)
 Stop the DHCP process. Close the DHCP socket when it's no longer used by any end-point.
 
static BaseType_t prvIsValidDHCPResponse (const DHCPMessage_IPv4_t *pxDHCPMessage)
 Check whether the DHCP response from the server has all valid invariant parameters and valid (non broadcast and non localhost) IP address being assigned to the device.
 
+ + + + + + + +

+Variables

+_static Socket_t xDHCPv4Socket
 The UDP socket used for all incoming and outgoing DHCP traffic.
 
+_static BaseType_t xDHCPSocketUserCount = 0
 The number of end-points that are making use of the UDP-socket.
 
+

Detailed Description

+

Implements the Dynamic Host Configuration Protocol for the FreeRTOS+TCP network stack.

+

Macro Definition Documentation

+ +

◆ EP_DHCPData

+ +
+
+ + + + +
#define EP_DHCPData   pxEndPoint->xDHCPData
+
+

Temporary define to make /single source similar to /multi version.

+ +
+
+ +

◆ EP_IPv4_SETTINGS

+ +
+
+ + + + +
#define EP_IPv4_SETTINGS   pxEndPoint->ipv4_settings
+
+

Temporary define to make /single source similar to /multi version.

+ +
+
+

Function Documentation

+ +

◆ prvSendDHCPDiscover()

+ +
+
+ + + + + +
+ + + + + + + + +
static BaseType_t prvSendDHCPDiscover (NetworkEndPoint_t * pxEndPoint)
+
+static
+
+ +

Create and send a DHCP discover packet through the DHCP socket.

+
Parameters
+ + +
[in]pxEndPointthe end-point for which the discover message will be sent.
+
+
+
Returns
: pdPASS if the DHCP discover message was sent successfully, pdFAIL otherwise.
+ +
+
+ +

◆ prvProcessDHCPReplies()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static BaseType_t prvProcessDHCPReplies (BaseType_t xExpectedMessageType,
NetworkEndPoint_t * pxEndPoint 
)
+
+static
+
+ +

Process the DHCP replies.

+
Parameters
+ + + +
[in]xExpectedMessageTypeThe type of the message the DHCP state machine is expecting. Messages of different type will be dropped.
[in]pxEndPointThe end-point to whom the replies are addressed.
+
+
+
Returns
pdPASS: if DHCP options are received correctly; pdFAIL: Otherwise.
+ +
+
+ +

◆ prvSendDHCPRequest()

+ +
+
+ + + + + +
+ + + + + + + + +
static BaseType_t prvSendDHCPRequest (NetworkEndPoint_t * pxEndPoint)
+
+static
+
+ +

Create and send a DHCP request message through the DHCP socket.

+
Parameters
+ + +
[in]pxEndPointThe end-point for which the request will be sent.
+
+
+ +
+
+ +

◆ prvInitialiseDHCP()

+ +
+
+ + + + + +
+ + + + + + + + +
static void prvInitialiseDHCP (NetworkEndPoint_t * pxEndPoint)
+
+static
+
+ +

Initialise the DHCP state machine by creating DHCP socket and begin the transaction.

+
Parameters
+ + +
[in]pxEndPointThe end-point that needs DHCP.
+
+
+ +
+
+ +

◆ prvCreatePartDHCPMessage()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static uint8_t * prvCreatePartDHCPMessage (struct freertos_sockaddr * pxAddress,
BaseType_t xOpcode,
const uint8_t *const pucOptionsArray,
size_t * pxOptionsArraySize,
const NetworkEndPoint_t * pxEndPoint 
)
+
+static
+
+ +

Create a partial DHCP message by filling in all the 'constant' fields.

+
Parameters
+ + + + + + +
[out]pxAddressAddress to be filled in.
[out]xOpcodeOpcode to be filled in the packet. Will always be 'dhcpREQUEST_OPCODE'.
[in]pucOptionsArrayThe options to be added to the packet.
[in,out]pxOptionsArraySizeByte count of the options. Its value might change.
[in]pxEndPointThe end-point for which the request will be sent.
+
+
+
Returns
Ethernet buffer of the partially created DHCP packet.
+ +
+
+ +

◆ prvCloseDHCPSocket()

+ +
+
+ + + + + +
+ + + + + + + + +
static void prvCloseDHCPSocket (NetworkEndPoint_t * pxEndPoint)
+
+static
+
+ +

Close the DHCP socket, but only when there are no other end-points using it.

+
Parameters
+ + +
[in]pxEndPointThe end-point that stops using the socket.
+
+
+ +
+
+ +

◆ vDHCPProcessEndPoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void vDHCPProcessEndPoint (BaseType_t xReset,
BaseType_t xDoCheck,
NetworkEndPoint_t * pxEndPoint 
)
+
+static
+
+ +

Process the DHCP state machine based on current state.

+
Parameters
+ + + + +
[in]xResetIs the DHCP state machine starting over? pdTRUE/pdFALSE.
[in]xDoChecktrue when an incoming message is to be expected, and prvProcessDHCPReplies() will be called.
[in]pxEndPointThe end-point for which the DHCP state machine should make one cycle.
+
+
+ +
+
+ +

◆ xHandleWaitingOffer()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static BaseType_t xHandleWaitingOffer (NetworkEndPoint_t * pxEndPoint,
BaseType_t xDoCheck 
)
+
+static
+
+ +

Called by vDHCPProcessEndPoint(), this function handles the state 'eWaitingOffer'. If there is a reply, it will be examined, if there is a time-out, there may be a new new attempt, or it will give up.

+
Parameters
+ + + +
[in]pxEndPointThe end-point that is getting an IP-address from a DHCP server
[in]xDoCheckWhen true, the function must handle any replies.
+
+
+
Returns
It returns pdTRUE in case the DHCP process must be given up.
+ +
+
+ +

◆ vHandleWaitingAcknowledge()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void vHandleWaitingAcknowledge (NetworkEndPoint_t * pxEndPoint,
BaseType_t xDoCheck 
)
+
+static
+
+ +

Called by vDHCPProcessEndPoint(), this function handles the state 'eWaitingAcknowledge'. If there is a reply, it will be examined, if there is a time-out, there may be a new new attempt, or it will give up. After the acknowledge, the leasing of an IP-address will start.

+
Parameters
+ + + +
[in]pxEndPointThe end-point that is getting an IP-address from a DHCP server
[in]xDoCheckWhen true, the function must handle any replies.
+
+
+ +
+
+ +

◆ xHandleWaitingFirstDiscover()

+ +
+
+ + + + + +
+ + + + + + + + +
static BaseType_t xHandleWaitingFirstDiscover (NetworkEndPoint_t * pxEndPoint)
+
+static
+
+ +

Called by vDHCPProcessEndPoint(), this function handles the state 'eWaitingSendFirstDiscover'. If will send a DISCOVER message to a DHCP server, and move to the next status 'eWaitingOffer'.

+
Parameters
+ + +
[in]pxEndPointThe end-point that is getting an IP-address from a DHCP server
+
+
+
Returns
xGivingUp: when pdTRUE, there was a fatal error and the process can not continue;
+ +
+
+ +

◆ prvHandleWaitingeLeasedAddress()

+ +
+
+ + + + + +
+ + + + + + + + +
static void prvHandleWaitingeLeasedAddress (NetworkEndPoint_t * pxEndPoint)
+
+static
+
+ +

Called by vDHCPProcessEndPoint(), this function handles the state 'eLeasedAddress'. If waits until the lease must be renewed, and then send a new request.

+
Parameters
+ + +
[in]pxEndPointThe end-point that is getting an IP-address from a DHCP server
+
+
+ +
+
+ +

◆ vProcessHandleOption()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void vProcessHandleOption (NetworkEndPoint_t * pxEndPoint,
ProcessSet_t * pxSet,
BaseType_t xExpectedMessageType 
)
+
+static
+
+ +

Called by prvProcessDHCPReplies(), which walks through an array of DHCP options, this function will check a single option.

+
Parameters
+ + + + +
[in]pxEndPointThe end-point that needs an IP-address.
[in]pxSetA set of variables that describe the parsing process.
[in]xExpectedMessageTypeThe type of message expected in the dhcpIPv4_MESSAGE_TYPE_OPTION_CODE option.
+
+
+ +
+
+ +

◆ xProcessCheckOption()

+ +
+
+ + + + + +
+ + + + + + + + +
static BaseType_t xProcessCheckOption (ProcessSet_t * pxSet)
+
+static
+
+ +

Check an incoming DHCP option.

+
Parameters
+ + +
[in]pxSetA set of variables needed to parse the DHCP reply.
+
+
+
Returns
pdPASS: 1 when the option must be analysed, 0 when the option must be skipped, and -1 when parsing must stop.
+ +
+
+ +

◆ xIsDHCPSocket()

+ +
+
+ + + + + + + + +
BaseType_t xIsDHCPSocket (const ConstSocket_t xSocket)
+
+ +

Check whether a given socket is the DHCP socket or not.

+
Parameters
+ + +
[in]xSocketThe socket to be checked.
+
+
+
Returns
If the socket given as parameter is the DHCP socket - return pdTRUE, else pdFALSE.
+ +
+
+ +

◆ vDHCPProcess()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void vDHCPProcess (BaseType_t xReset,
struct xNetworkEndPoint * pxEndPoint 
)
+
+ +

Process the DHCP state machine based on current state.

+
Parameters
+ + + +
[in]xResetIs the DHCP state machine starting over? pdTRUE/pdFALSE.
[in]pxEndPointThe end-point for which the DHCP state machine should make one cycle.
+
+
+ +
+
+ +

◆ vDHCPStop()

+ +
+
+ + + + + + + + +
void vDHCPStop (struct xNetworkEndPoint * pxEndPoint)
+
+ +

Stop the DHCP process. Close the DHCP socket when it's no longer used by any end-point.

+
Parameters
+ + +
[in]pxEndPointThe end-point for which we want to stop the DHCP process.
+
+
+ +
+
+ +

◆ prvIsValidDHCPResponse()

+ +
+
+ + + + + +
+ + + + + + + + +
static BaseType_t prvIsValidDHCPResponse (const DHCPMessage_IPv4_t * pxDHCPMessage)
+
+static
+
+ +

Check whether the DHCP response from the server has all valid invariant parameters and valid (non broadcast and non localhost) IP address being assigned to the device.

+
Parameters
+ + +
[in]pxDHCPMessageThe DHCP message.
+
+
+
Returns
pdPASS if the DHCP response has correct parameters; pdFAIL otherwise.
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___d_h_c_pv6_8c.html b/V4.3.1/_free_r_t_o_s___d_h_c_pv6_8c.html new file mode 100644 index 000000000..f25e5c7a8 --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___d_h_c_pv6_8c.html @@ -0,0 +1,989 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_DHCPv6.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_DHCPv6.c File Reference
+
+
+ +

A DHCPv6 client. +More...

+
#include <stdio.h>
+#include <ctype.h>
+#include <FreeRTOS.h>
+#include "task.h"
+#include "timers.h"
+#include "queue.h"
+#include "semphr.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_Sockets.h"
+#include "FreeRTOS_DHCPv6.h"
+#include "FreeRTOS_DNS.h"
+#include "NetworkBufferManagement.h"
+#include "FreeRTOS_IP_Private.h"
+#include "FreeRTOS_IP_Timers.h"
+#include "FreeRTOS_BitConfig.h"
+#include "FreeRTOS_Routing.h"
+
+ + + + + + + + + + + + + + + + + + + +

+Macros

+#define dhcpINITIAL_TIMER_PERIOD   ( pdMS_TO_TICKS( 250U ) )
 DHCP timer period in ms.
 
+#define dhcpINITIAL_DHCP_TX_PERIOD   ( pdMS_TO_TICKS( 5000U ) )
 DHCP transmit period in ms.
 
+#define EP_DHCPData   pxEndPoint->xDHCPData
 The following define is temporary and serves to make the /single source code more similar to the /multi version.
 
+#define EP_IPv6_SETTINGS   pxEndPoint->ipv6_settings
 Macro to access the IPv6 settings from the pxEndPoint.
 
+#define DHCPv6_SEND_MAX_BUFFER_SIZE   ( 256 )
 The maximum size of send buffer.
 
#define dhcpMANDATORY_OPTIONS
 When a reply is received, some options are mandatory for this driver.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

static BaseType_t prvIsOptionLengthValid (uint16_t usOption, size_t uxOptionLength, size_t uxRemainingSize)
 Check if option length is less than buffer size and larger than minimum requirement.
 
static BaseType_t prvDHCPv6Analyse (struct xNetworkEndPoint *pxEndPoint, const uint8_t *pucAnswer, size_t uxTotalLength, DHCPMessage_IPv6_t *pxDHCPMessage)
 Analyse the reply from a DHCP server.
 
static void vDHCPv6ProcessEndPoint (BaseType_t xReset, NetworkEndPoint_t *pxEndPoint, DHCPMessage_IPv6_t *pxDHCPMessage)
 Run one cycle of the DHCP state machine.
 
static void prvInitialiseDHCPv6 (NetworkEndPoint_t *pxEndPoint)
 Initialise the DHCP state machine of a given end-point.
 
static void prvSendDHCPMessage (NetworkEndPoint_t *pxEndPoint)
 Send a DHCPv6 message to a DHCP server.
 
static void prvCreateDHCPv6Socket (NetworkEndPoint_t *pxEndPoint)
 Return the UDP/DHCP socket, or create if it doesn't exist.
 
static void prvCloseDHCPv6Socket (NetworkEndPoint_t *pxEndPoint)
 Close the shared UDP/DHCP socket. This results in lowering the reference count. The last user of the socket will close it.
 
static BaseType_t xDHCPv6Process_PassReplyToEndPoint (struct xNetworkEndPoint *pxEndPoint)
 A DHCPv6 reply has been received. See to which end-point it belongs and pass it.
 
static void vDHCPv6ProcessEndPoint_HandleReply (NetworkEndPoint_t *pxEndPoint, DHCPMessage_IPv6_t *pxDHCPMessage)
 The DHCP process is about ready: the server sends a confirmation that the assigned IPv6 address may be used. The settings will be copied to 'pxEndPoint->ipv6_settings'.
 
static BaseType_t xDHCPv6ProcessEndPoint_HandleAdvertise (NetworkEndPoint_t *pxEndPoint, DHCPMessage_IPv6_t *pxDHCPMessage)
 An advertise packet has been received. Ask the application if it it shall send a request to obtain this IP-address.
 
static BaseType_t xDHCPv6ProcessEndPoint_HandleState (NetworkEndPoint_t *pxEndPoint, DHCPMessage_IPv6_t *pxDHCPMessage)
 This function is called periodically, or when a message was received for this end-point.
 
static BaseType_t prvDHCPv6_subOption (uint16_t usOption, const DHCPOptionSet_t *pxSet, DHCPMessage_IPv6_t *pxDHCPMessage, BitConfig_t *pxMessage)
 Either the option 'NonTemporaryAddress' or 'IA_for_Prefix_Delegation' was received. This function will read sub options like 'IA_Address', IA_Prefix, and Status_Code. It parses the raw message and fills 'pxDHCPMessage'.
 
static BaseType_t prvDHCPv6_handleOption (struct xNetworkEndPoint *pxEndPoint, uint16_t usOption, const DHCPOptionSet_t *pxSet, DHCPMessage_IPv6_t *pxDHCPMessage, BitConfig_t *pxMessage)
 A DHCP packet has a list of options, each one starting with a type and a length field. This function parses a single DHCP option.
 
eDHCPState_t eGetDHCPv6State (struct xNetworkEndPoint *pxEndPoint)
 Get the DHCP state from a given endpoint.
 
static BaseType_t prvDHCPv6_handleStatusCode (size_t uxLength, BitConfig_t *pxMessage)
 A DHCP packet has a list of options, one of them is Status Code. This function is used to parse it.
 
void vDHCPv6Process (BaseType_t xReset, struct xNetworkEndPoint *pxEndPoint)
 Check the DHCP socket and run one cycle of the DHCP state machine.
 
void vDHCPv6Stop (struct xNetworkEndPoint *pxEndPoint)
 Stop the DHCP process. Close the DHCP socket when it's no longer used by any end-point.
 
+ + + + + + + + + + +

+Variables

+_static Socket_t xDHCPv6Socket
 The UDP socket which is shared by all end-points that need DHCPv6.
 
+_static BaseType_t xDHCPv6SocketUserCount
 A reference count makes sure that the UDP socket will be deleted when it is not used anymore.
 
+_static DHCPMessage_IPv6_t xDHCPMessage
 DHCP IPv6 message object.
 
+

Detailed Description

+

A DHCPv6 client.

+

Macro Definition Documentation

+ +

◆ dhcpMANDATORY_OPTIONS

+ +
+
+ + + + +
#define dhcpMANDATORY_OPTIONS
+
+Value:
( ( ( ( uint32_t ) 1U ) << DHCPv6_Option_Client_Identifier ) | \
+
( ( ( uint32_t ) 1U ) << DHCPv6_Option_Server_Identifier ) )
+
+

When a reply is received, some options are mandatory for this driver.

+ +
+
+

Function Documentation

+ +

◆ prvIsOptionLengthValid()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static BaseType_t prvIsOptionLengthValid (uint16_t usOption,
size_t uxOptionLength,
size_t uxRemainingSize 
)
+
+static
+
+ +

Check if option length is less than buffer size and larger than minimum requirement.

+
Parameters
+ + + + +
[in]usOptionThe option code.
[in]uxOptionLengthThe option length to check.
[in]uxRemainingSizeRemaining size in the buffer.
+
+
+
Returns
pdTRUE if the length is valid, otherwise pdFALSE.
+ +
+
+ +

◆ prvDHCPv6Analyse()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static BaseType_t prvDHCPv6Analyse (struct xNetworkEndPoint * pxEndPoint,
const uint8_t * pucAnswer,
size_t uxTotalLength,
DHCPMessage_IPv6_t * pxDHCPMessage 
)
+
+static
+
+ +

Analyse the reply from a DHCP server.

+
Parameters
+ + + + + +
[in]pxEndPointThe end-point that wants a DHCPv6 address.
[in]pucAnswerThe payload text of the incoming packet.
[in]uxTotalLengthThe number of valid bytes in pucAnswer.
[in]pxDHCPMessageThe DHCP object of the end-point.
+
+
+
Returns
pdTRUE if the analysis was successful.
+ +
+
+ +

◆ vDHCPv6ProcessEndPoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void vDHCPv6ProcessEndPoint (BaseType_t xReset,
NetworkEndPoint_t * pxEndPoint,
DHCPMessage_IPv6_t * pxDHCPMessage 
)
+
+static
+
+ +

Run one cycle of the DHCP state machine.

+
Parameters
+ + + + +
[in]xResetpdTRUE is the state machine has to be reset.
[in]pxEndPointThe end-point that needs DHCP.
[in]pxDHCPMessageA DHCP message that has just been received, or NULL.
+
+
+ +
+
+ +

◆ prvInitialiseDHCPv6()

+ +
+
+ + + + + +
+ + + + + + + + +
static void prvInitialiseDHCPv6 (NetworkEndPoint_t * pxEndPoint)
+
+static
+
+ +

Initialise the DHCP state machine of a given end-point.

+
Parameters
+ + +
[in]pxEndPointThe end-point.
+
+
+ +
+
+ +

◆ prvSendDHCPMessage()

+ +
+
+ + + + + +
+ + + + + + + + +
static void prvSendDHCPMessage (NetworkEndPoint_t * pxEndPoint)
+
+static
+
+ +

Send a DHCPv6 message to a DHCP server.

+
Parameters
+ + +
[in]pxEndPointThe end-point for which a message will be sent.
+
+
+ +
+
+ +

◆ prvCreateDHCPv6Socket()

+ +
+
+ + + + + +
+ + + + + + + + +
static void prvCreateDHCPv6Socket (NetworkEndPoint_t * pxEndPoint)
+
+static
+
+ +

Return the UDP/DHCP socket, or create if it doesn't exist.

+
Parameters
+ + +
[in]pxEndPointThe end-point that needs the socket.
+
+
+ +
+
+ +

◆ prvCloseDHCPv6Socket()

+ +
+
+ + + + + +
+ + + + + + + + +
static void prvCloseDHCPv6Socket (NetworkEndPoint_t * pxEndPoint)
+
+static
+
+ +

Close the shared UDP/DHCP socket. This results in lowering the reference count. The last user of the socket will close it.

+
Parameters
+ + +
[in]pxEndPointThe end-point that wants to close the socket.
+
+
+ +
+
+ +

◆ xDHCPv6Process_PassReplyToEndPoint()

+ +
+
+ + + + + +
+ + + + + + + + +
static BaseType_t xDHCPv6Process_PassReplyToEndPoint (struct xNetworkEndPoint * pxEndPoint)
+
+static
+
+ +

A DHCPv6 reply has been received. See to which end-point it belongs and pass it.

+
Parameters
+ + +
[in]pxEndPointThe end-point for which vDHCPv6Process() is called.
+
+
+
Returns
In case the message is passed to 'pxEndPoint', return pdFALSE, meaning that the it has done its periodic processing.
+ +
+
+ +

◆ vDHCPv6ProcessEndPoint_HandleReply()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void vDHCPv6ProcessEndPoint_HandleReply (NetworkEndPoint_t * pxEndPoint,
DHCPMessage_IPv6_t * pxDHCPMessage 
)
+
+static
+
+ +

The DHCP process is about ready: the server sends a confirmation that the assigned IPv6 address may be used. The settings will be copied to 'pxEndPoint->ipv6_settings'.

+
Parameters
+ + + +
[in]pxEndPointThe end-point that is asking for an IP-address.
[in]pxDHCPMessageThe reply received from the DHCP server.
+
+
+ +
+
+ +

◆ xDHCPv6ProcessEndPoint_HandleAdvertise()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static BaseType_t xDHCPv6ProcessEndPoint_HandleAdvertise (NetworkEndPoint_t * pxEndPoint,
DHCPMessage_IPv6_t * pxDHCPMessage 
)
+
+static
+
+ +

An advertise packet has been received. Ask the application if it it shall send a request to obtain this IP-address.

+
Parameters
+ + + +
[in]pxEndPointThe end-point that is asking for an IP-address.
[in]pxDHCPMessageThe advertisement received from the DHCP server.
+
+
+
Returns
When the request will be send, pdFALSE will be returned.
+ +
+
+ +

◆ xDHCPv6ProcessEndPoint_HandleState()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static BaseType_t xDHCPv6ProcessEndPoint_HandleState (NetworkEndPoint_t * pxEndPoint,
DHCPMessage_IPv6_t * pxDHCPMessage 
)
+
+static
+
+ +

This function is called periodically, or when a message was received for this end-point.

+
Parameters
+ + + +
[in]pxEndPointThe end-point that is asking for an IP-address.
[in]pxDHCPMessagewhen not NULL, a message that was received for this end-point.
+
+
+
Returns
It returns pdTRUE in case the DHCP process is to be cancelled.
+ +
+
+ +

◆ prvDHCPv6_subOption()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static BaseType_t prvDHCPv6_subOption (uint16_t usOption,
const DHCPOptionSet_t * pxSet,
DHCPMessage_IPv6_t * pxDHCPMessage,
BitConfig_t * pxMessage 
)
+
+static
+
+ +

Either the option 'NonTemporaryAddress' or 'IA_for_Prefix_Delegation' was received. This function will read sub options like 'IA_Address', IA_Prefix, and Status_Code. It parses the raw message and fills 'pxDHCPMessage'.

+
Parameters
+ + + + + +
[in]usOptionThe DHCPv6 option that was received.
[in]pxSetIt contains the length and offset of the DHCP option.
[out]pxDHCPMessageit will be filled with the information from the option.
[in]pxMessageThe raw packet as it was received.
+
+
+
Returns
It returns pdTRUE in case the option parsed successfully, otherwise pdFALSE.
+ +
+
+ +

◆ prvDHCPv6_handleOption()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static BaseType_t prvDHCPv6_handleOption (struct xNetworkEndPoint * pxEndPoint,
uint16_t usOption,
const DHCPOptionSet_t * pxSet,
DHCPMessage_IPv6_t * pxDHCPMessage,
BitConfig_t * pxMessage 
)
+
+static
+
+ +

A DHCP packet has a list of options, each one starting with a type and a length field. This function parses a single DHCP option.

+
Parameters
+ + + + + + +
[in]pxEndPointThe end-point that wants a DHCPv6 address.
[in]usOptionIPv6 DHCP option to be handled.
[in]pxSetIt contains the length and offset of the DHCP option.
[out]pxDHCPMessageit will be filled with the information from the option.
[in]pxMessageThe raw packet as it was received.
+
+
+ +
+
+ +

◆ eGetDHCPv6State()

+ +
+
+ + + + + + + + +
eDHCPState_t eGetDHCPv6State (struct xNetworkEndPoint * pxEndPoint)
+
+ +

Get the DHCP state from a given endpoint.

+
Parameters
+ + +
[in]pxEndPointThe end-point for which vDHCPv6Process() is called.
+
+
+
Returns
DHCP state of the given endpoint
+ +
+
+ +

◆ prvDHCPv6_handleStatusCode()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static BaseType_t prvDHCPv6_handleStatusCode (size_t uxLength,
BitConfig_t * pxMessage 
)
+
+static
+
+ +

A DHCP packet has a list of options, one of them is Status Code. This function is used to parse it.

+
Parameters
+ + + +
[in]uxLengthTotal length for status code.
[in]pxMessageThe raw packet as it was received.
+
+
+
Returns
pdTRUE if status is success, otherwise pdFALSE.
+ +
+
+ +

◆ vDHCPv6Process()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void vDHCPv6Process (BaseType_t xReset,
struct xNetworkEndPoint * pxEndPoint 
)
+
+ +

Check the DHCP socket and run one cycle of the DHCP state machine.

+
Parameters
+ + + +
[in]xResetWhen pdTRUE, the state machine needs to be reset. This may happen when the end-point has just become up.
[in]pxEndPointThe end-point that wants a DHCPv6 address.
+
+
+ +
+
+ +

◆ vDHCPv6Stop()

+ +
+
+ + + + + + + + +
void vDHCPv6Stop (struct xNetworkEndPoint * pxEndPoint)
+
+ +

Stop the DHCP process. Close the DHCP socket when it's no longer used by any end-point.

+
Parameters
+ + +
[in]pxEndPointThe end-point for which we want to stop the DHCP process.
+
+
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___d_n_s_8c.html b/V4.3.1/_free_r_t_o_s___d_n_s_8c.html new file mode 100644 index 000000000..f1f6b8977 --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___d_n_s_8c.html @@ -0,0 +1,1304 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_DNS.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_DNS.c File Reference
+
+
+ +

Implements the Domain Name System for the FreeRTOS+TCP network stack. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "semphr.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_IP_Timers.h"
+#include "FreeRTOS_IP_Private.h"
+#include "FreeRTOS_UDP_IP.h"
+#include "FreeRTOS_DNS.h"
+#include "FreeRTOS_DHCP.h"
+#include "NetworkBufferManagement.h"
+#include "FreeRTOS_Routing.h"
+#include "NetworkInterface.h"
+#include "FreeRTOS_DNS_Globals.h"
+#include "FreeRTOS_DNS_Cache.h"
+#include "FreeRTOS_DNS_Parser.h"
+#include "FreeRTOS_DNS_Networking.h"
+#include "FreeRTOS_DNS_Callback.h"
+#include "pack_struct_start.h"
+#include "pack_struct_end.h"
+
+ + + + +

+Data Structures

struct  struct
 A DNS query consists of a header, as described in 'struct xDNSMessage' It is followed by 1 or more queries, each one consisting of a name and a tail, with two fields: type and class. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

static size_t prvCreateDNSMessage (uint8_t *pucUDPPayloadBuffer, const char *pcHostName, TickType_t uxIdentifier, UBaseType_t uxHostType)
 Create the DNS message in the zero copy buffer passed in the first parameter.
 
static uint32_t prvPrepareLookup (const char *pcHostName, struct freertos_addrinfo **ppxAddressInfo, BaseType_t xFamily, FOnDNSEvent pCallbackFunction, void *pvSearchID, TickType_t uxTimeout)
 Check if hostname is already known. If not, call prvGetHostByName() to send a DNS request.
 
static uint32_t prvGetHostByName (const char *pcHostName, TickType_t uxIdentifier, TickType_t uxReadTimeOut_ticks, struct freertos_addrinfo **ppxAddressInfo, BaseType_t xFamily)
 Prepare and send a message to a DNS server. 'uxReadTimeOut_ticks' will be passed as zero, in case the user has supplied a call-back function.
 
static void prvIncreaseDNS4Index (NetworkEndPoint_t *pxEndPoint)
 Increment the field 'ucDNSIndex', which is an index in the array.
 
static void prvIncreaseDNS6Index (NetworkEndPoint_t *pxEndPoint)
 Increment the field 'ucDNSIndex', which is an index in the array.
 
uint32_t FreeRTOS_gethostbyname (const char *pcHostName)
 Define FreeRTOS_gethostbyname() as a normal blocking call.
 
+void vDNSInitialise (void)
 Initialise the list of call-back structures.
 
void FreeRTOS_gethostbyname_cancel (void *pvSearchID)
 Remove the entry defined by the search ID to cancel a DNS request.
 
BaseType_t FreeRTOS_getaddrinfo (const char *pcName, const char *pcService, const struct freertos_addrinfo *pxHints, struct freertos_addrinfo **ppxResult)
 Look-up the IP-address of a host.
 
struct freertos_addrinfo * pxNew_AddrInfo (const char *pcName, BaseType_t xFamily, const uint8_t *pucAddress)
 Internal function: allocate and initialise a new struct of type freertos_addrinfo.
 
void FreeRTOS_freeaddrinfo (struct freertos_addrinfo *pxInfo)
 Free a chain of structs of type 'freertos_addrinfo'.
 
BaseType_t FreeRTOS_getaddrinfo_a (const char *pcName, const char *pcService, const struct freertos_addrinfo *pxHints, struct freertos_addrinfo **ppxResult, FOnDNSEvent pCallback, void *pvSearchID, TickType_t uxTimeout)
 Asynchronous version of getaddrinfo().
 
uint32_t FreeRTOS_gethostbyname_a (const char *pcHostName, FOnDNSEvent pCallback, void *pvSearchID, TickType_t uxTimeout)
 Get the IP-address corresponding to the given hostname.
 
static uint8_t * prvGetPayloadBuffer (NetworkBufferDescriptor_t **ppxNetworkBuffer, const char *pcHostName, size_t uxHeaderBytes)
 create a payload buffer and return it through the parameter
 
static NetworkEndPoint_t * prvFillSockAddress (struct freertos_sockaddr *pxAddress, const char *pcHostName)
 fill pxAddress from pucUDPPayloadBuffer
 
static uint32_t prvDNSReply (const struct xDNSBuffer *pxReceiveBuffer, struct freertos_addrinfo **ppxAddressInfo, TickType_t uxIdentifier, uint16_t usPort)
 return ip address from the dns reply message
 
static BaseType_t prvSendBuffer (const char *pcHostName, TickType_t uxIdentifier, Socket_t xDNSSocket, BaseType_t xFamily, const struct freertos_sockaddr *pxAddress)
 prepare the buffer before sending
 
static uint32_t prvGetHostByNameOp (const char *pcHostName, TickType_t uxIdentifier, Socket_t xDNSSocket, struct freertos_addrinfo **ppxAddressInfo, BaseType_t xFamily, TickType_t uxReadTimeOut_ticks)
 main dns operation description function
 
static uint32_t prvGetHostByNameOp_WithRetry (const char *pcHostName, TickType_t uxIdentifier, Socket_t xDNSSocket, struct freertos_addrinfo **ppxAddressInfo, BaseType_t xFamily, TickType_t uxReadTimeOut_ticks)
 helper function to prvGetHostByNameOP with multiple retries equal to ipconfigDNS_REQUEST_ATTEMPTS
 
uint32_t ulDNSHandlePacket (const NetworkBufferDescriptor_t *pxNetworkBuffer)
 Perform some preliminary checks and then parse the DNS packet.
 
uint32_t ulNBNSHandlePacket (NetworkBufferDescriptor_t *pxNetworkBuffer)
 Handle an NBNS packet.
 
BaseType_t FreeRTOS_SetDNSIPPreference (IPPreference_t eIPPreference)
 Sets the DNS IP preference while doing DNS lookup to indicate the preference for a DNS server: either IPv4 or IPv6. Defaults to xPreferenceIPv4.
 
+ + + + + + + + + + + + + + + + + + + +

+Variables

+const MACAddress_t xLLMNR_MacAddress = { { 0x01, 0x00, 0x5e, 0x00, 0x00, 0xfc } }
 The MAC address used for LLMNR.
 
+const MACAddress_t xLLMNR_MacAddressIPv6 = { { 0x33, 0x33, 0x00, 0x01, 0x00, 0x03 } }
 The IPv6 link-scope multicast MAC address.
 
const IPv6_Address_t ipLLMNR_IP_ADDR_IPv6
 The IPv6 link-scope multicast address.
 
+const MACAddress_t xMDNS_MacAddress = { { 0x01, 0x00, 0x5e, 0x00, 0x00, 0xfb } }
 The MAC address used for MDNS.
 
+const MACAddress_t xMDNS_MacAddressIPv6 = { { 0x33, 0x33, 0x00, 0x00, 0x00, 0xFB } }
 The IPv6 multicast DNS MAC address.
 
+IPPreference_t xDNS_IP_Preference = xPreferenceIPv4
 This global variable is being used to indicate to the driver which IP type is preferred for name service lookup, either IPv6 or IPv4.
 
+

Detailed Description

+

Implements the Domain Name System for the FreeRTOS+TCP network stack.

+

Function Documentation

+ +

◆ prvCreateDNSMessage()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static size_t prvCreateDNSMessage (uint8_t * pucUDPPayloadBuffer,
const char * pcHostName,
TickType_t uxIdentifier,
UBaseType_t uxHostType 
)
+
+static
+
+ +

Create the DNS message in the zero copy buffer passed in the first parameter.

+
Parameters
+ + + + + +
[in,out]pucUDPPayloadBufferThe zero copy buffer where the DNS message will be created.
[in]pcHostNameHostname to be looked up.
[in]uxIdentifierIdentifier to match sent and received packets
[in]uxHostTypednsTYPE_A_HOST ( IPv4 ) or dnsTYPE_AAAA_HOST ( IPv6 ).
+
+
+
Returns
Total size of the generated message, which is the space from the last written byte to the beginning of the buffer.
+ +
+
+ +

◆ prvPrepareLookup()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static uint32_t prvPrepareLookup (const char * pcHostName,
struct freertos_addrinfo ** ppxAddressInfo,
BaseType_t xFamily,
FOnDNSEvent pCallbackFunction,
void * pvSearchID,
TickType_t uxTimeout 
)
+
+static
+
+ +

Check if hostname is already known. If not, call prvGetHostByName() to send a DNS request.

+
Parameters
+ + + + + + + +
[in]pcHostNameThe hostname whose IP address is being queried.
[in,out]ppxAddressInfoA pointer to a pointer where the find results will be stored.
[in]xFamilyindicate what type of record is needed: FREERTOS_AF_INET4 or FREERTOS_AF_INET6.
[in]pCallbackFunctionThe callback function which will be called upon DNS response.
[in]pvSearchIDSearch ID for the callback function.
[in]uxTimeoutTimeout for the callback function.
+
+
+
Returns
The IP-address corresponding to the hostname.
+ +
+
+ +

◆ prvGetHostByName()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static uint32_t prvGetHostByName (const char * pcHostName,
TickType_t uxIdentifier,
TickType_t uxReadTimeOut_ticks,
struct freertos_addrinfo ** ppxAddressInfo,
BaseType_t xFamily 
)
+
+static
+
+ +

Prepare and send a message to a DNS server. 'uxReadTimeOut_ticks' will be passed as zero, in case the user has supplied a call-back function.

+
Parameters
+ + + + + + +
[in]pcHostNameThe hostname for which an IP address is required.
[in]uxIdentifierIdentifier to match sent and received packets
[in]uxReadTimeOut_ticksThe timeout in ticks for waiting. In case the user has supplied a call-back function, this value should be zero.
[in,out]ppxAddressInfoA pointer to a pointer where the find results will be stored.
[in]xFamilyEither FREERTOS_AF_INET4 or FREERTOS_AF_INET6.
+
+
+
Returns
The IPv4 IP address for the hostname being queried. It will be zero if there is no reply.
+ +
+
+ +

◆ prvIncreaseDNS4Index()

+ +
+
+ + + + + +
+ + + + + + + + +
static void prvIncreaseDNS4Index (NetworkEndPoint_t * pxEndPoint)
+
+static
+
+ +

Increment the field 'ucDNSIndex', which is an index in the array.

+

Increment the field 'ucDNSIndex', which is an index in the array of DNS addresses.

+
Parameters
+ + +
[in]pxEndPointThe end-point of which the DNS index should be incremented.
+
+
+ +
+
+ +

◆ prvIncreaseDNS6Index()

+ +
+
+ + + + + +
+ + + + + + + + +
static void prvIncreaseDNS6Index (NetworkEndPoint_t * pxEndPoint)
+
+static
+
+ +

Increment the field 'ucDNSIndex', which is an index in the array.

+

Increment the field 'ucDNSIndex', which is an index in the array of DNS addresses.

+
Parameters
+ + +
[in]pxEndPointThe end-point of which the DNS index should be incremented.
+
+
+ +
+
+ +

◆ FreeRTOS_gethostbyname()

+ +
+
+ + + + + + + + +
uint32_t FreeRTOS_gethostbyname (const char * pcHostName)
+
+ +

Define FreeRTOS_gethostbyname() as a normal blocking call.

+
Parameters
+ + +
[in]pcHostNameThe hostname whose IP address is being searched for.
+
+
+
Returns
The IP-address of the hostname.
+ +
+
+ +

◆ FreeRTOS_gethostbyname_cancel()

+ +
+
+ + + + + + + + +
void FreeRTOS_gethostbyname_cancel (void * pvSearchID)
+
+ +

Remove the entry defined by the search ID to cancel a DNS request.

+
Parameters
+ + +
[in]pvSearchIDThe search ID of the callback function associated with the DNS request being cancelled. Note that the value of the pointer matters, not the pointee.
+
+
+ +
+
+ +

◆ FreeRTOS_getaddrinfo()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t FreeRTOS_getaddrinfo (const char * pcName,
const char * pcService,
const struct freertos_addrinfo * pxHints,
struct freertos_addrinfo ** ppxResult 
)
+
+ +

Look-up the IP-address of a host.

+
Parameters
+ + + + + +
[in]pcNameThe name of the node or device
[in]pcServiceIgnored for now.
[in]pxHintsIf not NULL preferences. Can be used to indicate the preferred type if IP ( v4 or v6 ).
[out]ppxResultAn allocated struct, containing the results.
+
+
+
Returns
Zero when the operation was successful, otherwise a negative errno value.
+ +
+
+ +

◆ pxNew_AddrInfo()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
struct freertos_addrinfo * pxNew_AddrInfo (const char * pcName,
BaseType_t xFamily,
const uint8_t * pucAddress 
)
+
+ +

Internal function: allocate and initialise a new struct of type freertos_addrinfo.

+
Parameters
+ + + + +
[in]pcNamethe name of the host.
[in]xFamilythe type of IP-address: FREERTOS_AF_INET4 or FREERTOS_AF_INET6.
[in]pucAddressThe IP-address of the host.
+
+
+
Returns
A pointer to the newly allocated struct, or NULL in case malloc failed..
+ +
+
+ +

◆ FreeRTOS_freeaddrinfo()

+ +
+
+ + + + + + + + +
void FreeRTOS_freeaddrinfo (struct freertos_addrinfo * pxInfo)
+
+ +

Free a chain of structs of type 'freertos_addrinfo'.

+
Parameters
+ + +
[in]pxInfoThe first find result.
+
+
+ +
+
+ +

◆ FreeRTOS_getaddrinfo_a()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t FreeRTOS_getaddrinfo_a (const char * pcName,
const char * pcService,
const struct freertos_addrinfo * pxHints,
struct freertos_addrinfo ** ppxResult,
FOnDNSEvent pCallback,
void * pvSearchID,
TickType_t uxTimeout 
)
+
+ +

Asynchronous version of getaddrinfo().

+
Parameters
+ + + + + + + + +
[in]pcNameThe name of the node or device
[in]pcServiceIgnored for now.
[in]pxHintsIf not NULL preferences. Can be used to indicate the preferred type if IP ( v4 or v6 ).
[out]ppxResultAn allocated struct, containing the results.
[in]pCallbackA user-defined function which will be called on completion, either when found or after a time-out.
[in]pvSearchIDA user provided void pointer that will be communicated on completion.
[in]uxTimeoutThe maximum number of clock ticks that must be waited for a reply.
+
+
+
Returns
Zero when the operation was successful, otherwise a negative errno value.
+ +
+
+ +

◆ FreeRTOS_gethostbyname_a()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uint32_t FreeRTOS_gethostbyname_a (const char * pcHostName,
FOnDNSEvent pCallback,
void * pvSearchID,
TickType_t uxTimeout 
)
+
+ +

Get the IP-address corresponding to the given hostname.

+
Parameters
+ + + + + +
[in]pcHostNameThe hostname whose IP address is being queried.
[in]pCallbackThe callback function which will be called upon DNS response. It will be called with pcHostName, pvSearchID and pxAddressInfo which points to address info. The pxAddressInfo should be freed by the application once the callback has been called by the FreeRTOS_freeaddrinfo(). In case of timeouts pxAddressInfo can be NULL.
[in]pvSearchIDSearch ID for the callback function.
[in]uxTimeoutTimeout for the callback function.
+
+
+
Returns
The IP-address corresponding to the hostname. 0 is returned in case of failure.
+ +
+
+ +

◆ prvGetPayloadBuffer()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static uint8_t * prvGetPayloadBuffer (NetworkBufferDescriptor_t ** ppxNetworkBuffer,
const char * pcHostName,
size_t uxHeaderBytes 
)
+
+static
+
+ +

create a payload buffer and return it through the parameter

+
Parameters
+ + + + +
[out]ppxNetworkBuffernetwork buffer to create
[in]pcHostNamehostname to get its length
[in]uxHeaderBytesSize of the header (IPv4/IPv6)
+
+
+
Returns
pointer address to the payload buffer
+ +
+
+ +

◆ prvFillSockAddress()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static NetworkEndPoint_t * prvFillSockAddress (struct freertos_sockaddr * pxAddress,
const char * pcHostName 
)
+
+static
+
+ +

fill pxAddress from pucUDPPayloadBuffer

+
Parameters
+ + + +
[out]pxAddressip address and port ... structure
[in]pcHostNamehostname to get its length
+
+
+
Returns
The end-point that holds the DNS address.
+ +
+
+ +

◆ prvDNSReply()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static uint32_t prvDNSReply (const struct xDNSBuffer * pxReceiveBuffer,
struct freertos_addrinfo ** ppxAddressInfo,
TickType_t uxIdentifier,
uint16_t usPort 
)
+
+static
+
+ +

return ip address from the dns reply message

+
Parameters
+ + + + + +
[in]pxReceiveBufferreceived buffer from the DNS server
[in,out]ppxAddressInfoA pointer to a pointer where the find results will be stored.
[in]uxIdentifiermatches sent and received packets
[in]usPortPort from which DNS reply was read
+
+
+
Returns
ip address or zero on error
+ +
+
+ +

◆ prvSendBuffer()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static BaseType_t prvSendBuffer (const char * pcHostName,
TickType_t uxIdentifier,
Socket_t xDNSSocket,
BaseType_t xFamily,
const struct freertos_sockaddr * pxAddress 
)
+
+static
+
+ +

prepare the buffer before sending

+
Parameters
+ + + + + + +
[in]pcHostNamehostname to be looked up
[in]uxIdentifiermatches sent and received packets
[in]xDNSSocketa valid socket
[in]xFamilyindicate what type of record is needed: FREERTOS_AF_INET4 or FREERTOS_AF_INET6.
[in]pxAddressaddress structure
+
+
+
Returns
pdTRUE if sending the data was successful, pdFALSE otherwise.
+ +
+
+ +

◆ prvGetHostByNameOp()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static uint32_t prvGetHostByNameOp (const char * pcHostName,
TickType_t uxIdentifier,
Socket_t xDNSSocket,
struct freertos_addrinfo ** ppxAddressInfo,
BaseType_t xFamily,
TickType_t uxReadTimeOut_ticks 
)
+
+static
+
+ +

main dns operation description function

+
Parameters
+ + + + + + + +
[in]pcHostNamehostname to get its ip address
[in]uxIdentifierIdentifier to match sent and received packets
[in]xDNSSocketsocket
[in,out]ppxAddressInfoA pointer to a pointer where the find results will be stored.
[in]xFamilyEither FREERTOS_AF_INET4 or FREERTOS_AF_INET6.
[in]uxReadTimeOut_ticksThe timeout in ticks for waiting. In case the user has supplied a call-back function, this value should be zero.
+
+
+
Returns
ip address or zero on error
+ +
+
+ +

◆ prvGetHostByNameOp_WithRetry()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static uint32_t prvGetHostByNameOp_WithRetry (const char * pcHostName,
TickType_t uxIdentifier,
Socket_t xDNSSocket,
struct freertos_addrinfo ** ppxAddressInfo,
BaseType_t xFamily,
TickType_t uxReadTimeOut_ticks 
)
+
+static
+
+ +

helper function to prvGetHostByNameOP with multiple retries equal to ipconfigDNS_REQUEST_ATTEMPTS

+
Parameters
+ + + + + + + +
[in]pcHostNamehostname to get its ip address
[in]uxIdentifierIdentifier to match sent and received packets
[in]xDNSSocketsocket
[in,out]ppxAddressInfoA pointer to a pointer where the find results will be stored.
[in]xFamilyEither FREERTOS_AF_INET4 or FREERTOS_AF_INET6.
[in]uxReadTimeOut_ticksThe timeout in ticks for waiting. In case the user has supplied a call-back function, this value should be zero.
+
+
+
Returns
ip address or zero on error
+ +
+
+ +

◆ ulDNSHandlePacket()

+ +
+
+ + + + + + + + +
uint32_t ulDNSHandlePacket (const NetworkBufferDescriptor_t * pxNetworkBuffer)
+
+ +

Perform some preliminary checks and then parse the DNS packet.

+
Parameters
+ + +
[in]pxNetworkBufferThe network buffer to be parsed.
+
+
+
Returns
Always pdFAIL to indicate that the packet was not consumed and must be released by the caller.
+ +
+
+ +

◆ ulNBNSHandlePacket()

+ +
+
+ + + + + + + + +
uint32_t ulNBNSHandlePacket (NetworkBufferDescriptor_t * pxNetworkBuffer)
+
+ +

Handle an NBNS packet.

+
Parameters
+ + +
[in]pxNetworkBufferThe network buffer holding the NBNS packet.
+
+
+
Returns
pdFAIL to show that the packet was not consumed.
+ +
+
+ +

◆ FreeRTOS_SetDNSIPPreference()

+ +
+
+ + + + + + + + +
BaseType_t FreeRTOS_SetDNSIPPreference (IPPreference_t eIPPreference)
+
+ +

Sets the DNS IP preference while doing DNS lookup to indicate the preference for a DNS server: either IPv4 or IPv6. Defaults to xPreferenceIPv4.

+
Parameters
+ + +
[in]eIPPreferenceIP preference, can be either xPreferenceIPv4 or xPreferenceIPv6
+
+
+
Returns
pdPASS on success and pdFAIL on failure.
+ +
+
+

Variable Documentation

+ +

◆ ipLLMNR_IP_ADDR_IPv6

+ +
+
+ + + + +
const IPv6_Address_t ipLLMNR_IP_ADDR_IPv6
+
+Initial value:
=
+
{
+
{
+
0xff, 0x02,
+
0x00, 0x00,
+
0x00, 0x00,
+
0x00, 0x00,
+
0x00, 0x00,
+
0x00, 0x00,
+
0x00, 0x01,
+
0x00, 0x03,
+
}
+
}
+
+

The IPv6 link-scope multicast address.

+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___d_n_s___cache_8c.html b/V4.3.1/_free_r_t_o_s___d_n_s___cache_8c.html new file mode 100644 index 000000000..c0d89bf5a --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___d_n_s___cache_8c.html @@ -0,0 +1,718 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_DNS_Cache.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_DNS_Cache.c File Reference
+
+
+ +

File that handles the DNS caching option. +More...

+
#include "FreeRTOS_IP.h"
+#include "FreeRTOS_Sockets.h"
+#include "FreeRTOS_UDP_IP.h"
+#include "FreeRTOS_DHCP.h"
+#include "NetworkBufferManagement.h"
+#include "NetworkInterface.h"
+#include "FreeRTOS_DNS_Cache.h"
+#include "FreeRTOS_DNS_Globals.h"
+#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

static BaseType_t prvFindEntryIndex (const char *pcName, const IPv46_Address_t *pxIP, UBaseType_t *uxResult)
 returns the index of the hostname entry in the dns cache.
 
static BaseType_t prvGetCacheIPEntry (UBaseType_t uxIndex, IPv46_Address_t *pxIP, uint32_t ulCurrentTimeSeconds, struct freertos_addrinfo **ppxAddressInfo)
 get entry at index from the cache
 
static void prvUpdateCacheEntry (UBaseType_t uxIndex, uint32_t ulTTL, const IPv46_Address_t *pxIP, uint32_t ulCurrentTimeSeconds)
 update entry at index in the cache
 
static void prvInsertCacheEntry (const char *pcName, uint32_t ulTTL, const IPv46_Address_t *pxIP, uint32_t ulCurrentTimeSeconds)
 insert entry in the cache
 
static void prvReadDNSCache (BaseType_t uxIndex, struct freertos_addrinfo **ppxAddressInfo)
 Copy DNS cache entries at uxIndex to a linked struct addrinfo.
 
uint32_t FreeRTOS_dnslookup (const char *pcHostName)
 perform a dns lookup in the local cache
 
uint32_t FreeRTOS_dnslookup6 (const char *pcHostName, IPv6_Address_t *pxAddress_IPv6)
 Perform a dns lookup in the local cache (IPv6)
 
BaseType_t FreeRTOS_dns_update (const char *pcName, IPv46_Address_t *pxIP, uint32_t ulTTL, BaseType_t xLookUp, struct freertos_addrinfo **ppxAddressInfo)
 perform a dns update in the local cache
 
void FreeRTOS_dnsclear (void)
 perform a dns clear in the local cache
 
BaseType_t FreeRTOS_ProcessDNSCache (const char *pcName, IPv46_Address_t *pxIP, uint32_t ulTTL, BaseType_t xLookUp, struct freertos_addrinfo **ppxAddressInfo)
 process a DNS Cache request (get, update, or insert)
 
uint32_t Prepare_CacheLookup (const char *pcHostName, BaseType_t xFamily, struct freertos_addrinfo **ppxAddressInfo)
 Lookup the given hostname in the DNS cache.
 
+ + + + + + + +

+Variables

+static DNSCacheRow_t xDNSCache [ipconfigDNS_CACHE_ENTRIES]
 DNS cache structure instantiation.
 
+static UBaseType_t uxFreeEntry = 0U
 indicates the index of a free entry in the cache structure DNSCacheRow_t
 
+

Detailed Description

+

File that handles the DNS caching option.

+

Function Documentation

+ +

◆ prvFindEntryIndex()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static BaseType_t prvFindEntryIndex (const char * pcName,
const IPv46_Address_t * pxIP,
UBaseType_t * uxResult 
)
+
+static
+
+ +

returns the index of the hostname entry in the dns cache.

+

returns the index of the hostname entry in the dns cache.

+
Parameters
+ + + + +
[in]pcNamefind it in the cache
[in]pxIPip address
[out]uxResultindex number
+
+
+
Returns
res pdTRUE if index in found else pdFALSE
+ +
+
+ +

◆ prvGetCacheIPEntry()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static BaseType_t prvGetCacheIPEntry (UBaseType_t uxIndex,
IPv46_Address_t * pxIP,
uint32_t ulCurrentTimeSeconds,
struct freertos_addrinfo ** ppxAddressInfo 
)
+
+static
+
+ +

get entry at index from the cache

+

get entry at index from the cache.

+
Parameters
+ + + + + +
[in]uxIndexindex in the cache
[out]pxIPfill it with the result
[in]ulCurrentTimeSecondscurrent time
[out]ppxAddressInfoTarget to store the DNS entries.
+
+
+
Returns
pdTRUE if the value is valid pdFALSE otherwise
+
Postcondition
the global structure xDNSCache might be modified
+ +
+
+ +

◆ prvUpdateCacheEntry()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void prvUpdateCacheEntry (UBaseType_t uxIndex,
uint32_t ulTTL,
const IPv46_Address_t * pxIP,
uint32_t ulCurrentTimeSeconds 
)
+
+static
+
+ +

update entry at index in the cache

+

update entry at index in the cache.

+
Parameters
+ + + + + +
[in]uxIndexindex in the cache
[in]ulTTLtime to live (in seconds)
[in]pxIPip to update the cache with
[in]ulCurrentTimeSecondscurrent time
+
+
+
Postcondition
the global structure xDNSCache is modified
+ +
+
+ +

◆ prvInsertCacheEntry()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void prvInsertCacheEntry (const char * pcName,
uint32_t ulTTL,
const IPv46_Address_t * pxIP,
uint32_t ulCurrentTimeSeconds 
)
+
+static
+
+ +

insert entry in the cache

+

insert entry in the cache.

+
Parameters
+ + + + + +
[in]pcNamecache entry key
[in]ulTTLtime to live (in seconds)
[in]pxIPip address
[in]ulCurrentTimeSecondscurrent time
+
+
+
Postcondition
the global structure xDNSCache is modified
+ +
+
+ +

◆ prvReadDNSCache()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void prvReadDNSCache (BaseType_t uxIndex,
struct freertos_addrinfo ** ppxAddressInfo 
)
+
+static
+
+ +

Copy DNS cache entries at uxIndex to a linked struct addrinfo.

+

Copy DNS cache entries at xIndex to a linked struct addrinfo.

+
Parameters
+ + + +
[in]uxIndexThe index from where entries must be copied.
[out]ppxAddressInfoTarget to store the DNS entries.
+
+
+ +
+
+ +

◆ FreeRTOS_dnslookup()

+ +
+
+ + + + + + + + +
uint32_t FreeRTOS_dnslookup (const char * pcHostName)
+
+ +

perform a dns lookup in the local cache

+
Parameters
+ + +
pcHostNamethe lookup name
+
+
+
Returns
ulIPAddress with the value from the cache else returns a zero if the cache is not enabled or the lookup is not successful
+
Postcondition
the global structure xDNSCache might be modified
+ +
+
+ +

◆ FreeRTOS_dnslookup6()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint32_t FreeRTOS_dnslookup6 (const char * pcHostName,
IPv6_Address_t * pxAddress_IPv6 
)
+
+ +

Perform a dns lookup in the local cache (IPv6)

+
Parameters
+ + + +
pcHostNameThe lookup name
pxAddress_IPv6The IPv6 address looked up from the cache if the return value is non zero.
+
+
+
Returns
ulReturn Non zero if name is found in cache else returns a zero if the cache is not enabled or the lookup is not successful
+
Postcondition
the global structure xDNSCache might be modified
+ +
+
+ +

◆ FreeRTOS_dns_update()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t FreeRTOS_dns_update (const char * pcName,
IPv46_Address_t * pxIP,
uint32_t ulTTL,
BaseType_t xLookUp,
struct freertos_addrinfo ** ppxAddressInfo 
)
+
+ +

perform a dns update in the local cache

+
Parameters
+ + + + + + +
pcNamethe lookup name
pxIPthe ip value to insert/replace (IPv4/v6)
ulTTLTime To live (in seconds)
xLookUpIgnored
ppxAddressInfoA pointer to a pointer where the find results will be stored.
+
+
+
Returns
this is a dummy return, we are actually ignoring the return value from this function
+
Postcondition
the global structure xDNSCache might be modified
+ +
+
+ +

◆ FreeRTOS_dnsclear()

+ +
+
+ + + + + + + + +
void FreeRTOS_dnsclear (void )
+
+ +

perform a dns clear in the local cache

+
Postcondition
the global structure xDNSCache is modified
+ +
+
+ +

◆ FreeRTOS_ProcessDNSCache()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t FreeRTOS_ProcessDNSCache (const char * pcName,
IPv46_Address_t * pxIP,
uint32_t ulTTL,
BaseType_t xLookUp,
struct freertos_addrinfo ** ppxAddressInfo 
)
+
+ +

process a DNS Cache request (get, update, or insert)

+
Parameters
+ + + + + + +
[in]pcNamethe name of the host
[in,out]pxIPwhen doing a lookup, will be set, when doing an update, will be read.
[in]ulTTLTime To Live (in seconds)
[in]xLookUppdTRUE if a look-up is expected, pdFALSE, when the DNS cache must be updated.
[in,out]ppxAddressInfoA pointer to a pointer where the find results will be stored.
+
+
+
Returns
whether the operation was successful
+
Postcondition
the global structure xDNSCache might be modified
+ +
+
+ +

◆ Prepare_CacheLookup()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint32_t Prepare_CacheLookup (const char * pcHostName,
BaseType_t xFamily,
struct freertos_addrinfo ** ppxAddressInfo 
)
+
+ +

Lookup the given hostname in the DNS cache.

+
Parameters
+ + + + +
[in]pcHostNameTHe host name to lookup
[in]xFamilyIP type FREERTOS_AF_INET6 / FREERTOS_AF_INET4
[out]ppxAddressInfoTarget to store the DNS entries.
+
+
+
Returns
This function returns either a valid IPv4 address, or in case of an IPv6 lookup, it will return a non-zero.
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___d_n_s___callback_8c.html b/V4.3.1/_free_r_t_o_s___d_n_s___callback_8c.html new file mode 100644 index 000000000..e11901891 --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___d_n_s___callback_8c.html @@ -0,0 +1,299 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_DNS_Callback.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_DNS_Callback.c File Reference
+
+
+ +

File that handles the DNS Callback option. +More...

+
#include "FreeRTOS_DNS_Callback.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_IP_Private.h"
+#include "FreeRTOS_DNS_Globals.h"
+#include "FreeRTOS_IP_Timers.h"
+
+ + + + + + + + + + + + + +

+Functions

BaseType_t xDNSDoCallback (ParseSet_t *pxSet, struct freertos_addrinfo *pxAddress)
 A DNS reply was received, see if there is any matching entry and call the handler.
 
BaseType_t xDNSSetCallBack (const char *pcHostName, void *pvSearchID, FOnDNSEvent pCallbackFunction, TickType_t uxTimeout, TickType_t uxIdentifier, BaseType_t xIsIPv6)
 FreeRTOS_gethostbyname_a() was called along with callback parameters. Store them in a list for later reference.
 
void vDNSCheckCallBack (void *pvSearchID)
 Iterate through the list of call-back structures and remove old entries which have reached a timeout. As soon as the list has become empty, the DNS timer will be stopped. In case pvSearchID is supplied, the user wants to cancel a DNS request.
 
void vDNSCallbackInitialise ()
 initialize the cache
 
+ + + + +

+Variables

+static List_t xCallbackList
 list of callbacks to send
 
+

Detailed Description

+

File that handles the DNS Callback option.

+

Function Documentation

+ +

◆ xDNSDoCallback()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BaseType_t xDNSDoCallback (ParseSet_t * pxSet,
struct freertos_addrinfo * pxAddress 
)
+
+ +

A DNS reply was received, see if there is any matching entry and call the handler.

+
Parameters
+ + + +
[in,out]pxSeta set of variables that are shared among the helper functions.
[in]pxAddressPointer to address info ( IPv4/IPv6 ) obtained from the DNS server.
+
+
+
Returns
Returns pdTRUE if uxIdentifier was recognized.
+ +
+
+ +

◆ xDNSSetCallBack()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t xDNSSetCallBack (const char * pcHostName,
void * pvSearchID,
FOnDNSEvent pCallbackFunction,
TickType_t uxTimeout,
TickType_t uxIdentifier,
BaseType_t xIsIPv6 
)
+
+ +

FreeRTOS_gethostbyname_a() was called along with callback parameters. Store them in a list for later reference.

+
Parameters
+ + + + + + + +
[in]pcHostNameThe hostname whose IP address is being searched for.
[in]pvSearchIDThe search ID of the DNS callback function to set.
[in]pCallbackFunctionThe callback function pointer.
[in]uxTimeoutTimeout of the callback function.
[in]uxIdentifierRandom number used as ID in the DNS message.
[in]xIsIPv6pdTRUE if the address type should be IPv6.
+
+
+ +
+
+ +

◆ vDNSCheckCallBack()

+ +
+
+ + + + + + + + +
void vDNSCheckCallBack (void * pvSearchID)
+
+ +

Iterate through the list of call-back structures and remove old entries which have reached a timeout. As soon as the list has become empty, the DNS timer will be stopped. In case pvSearchID is supplied, the user wants to cancel a DNS request.

+
Parameters
+ + +
[in]pvSearchIDThe search ID of callback function whose associated DNS request is being cancelled. If non-ID specific checking of all requests is required, then this field should be kept as NULL.
+
+
+ +
+
+ +

◆ vDNSCallbackInitialise()

+ +
+
+ + + + + + + +
void vDNSCallbackInitialise ()
+
+ +

initialize the cache

+
Postcondition
will modify global list xCallbackList
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___d_n_s___networking_8c.html b/V4.3.1/_free_r_t_o_s___d_n_s___networking_8c.html new file mode 100644 index 000000000..5e4e10af7 --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___d_n_s___networking_8c.html @@ -0,0 +1,316 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_DNS_Networking.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_DNS_Networking.c File Reference
+
+
+ +

Implements the Domain Name System Networking for the FreeRTOS+TCP network stack. +More...

+
#include "FreeRTOS.h"
+#include "FreeRTOS_DNS_Networking.h"
+
+ + + + + + + + + + + + + + + + +

+Functions

BaseType_t DNS_BindSocket (Socket_t xSocket, uint16_t usPort)
 Bind the socket to a port number.
 
Socket_t DNS_CreateSocket (TickType_t uxReadTimeOut_ticks)
 Create a socket and bind it to the standard DNS port number.
 
BaseType_t DNS_SendRequest (Socket_t xDNSSocket, const struct freertos_sockaddr *xAddress, const struct xDNSBuffer *pxDNSBuf)
 perform a DNS network request
 
BaseType_t DNS_ReadReply (ConstSocket_t xDNSSocket, struct freertos_sockaddr *xAddress, struct xDNSBuffer *pxReceiveBuffer)
 perform a DNS network read
 
void DNS_CloseSocket (Socket_t xDNSSocket)
 perform a DNS network close
 
+

Detailed Description

+

Implements the Domain Name System Networking for the FreeRTOS+TCP network stack.

+

Function Documentation

+ +

◆ DNS_BindSocket()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BaseType_t DNS_BindSocket (Socket_t xSocket,
uint16_t usPort 
)
+
+ +

Bind the socket to a port number.

+
Parameters
+ + + +
[in]xSocketthe socket that must be bound.
[in]usPortthe port number to bind to.
+
+
+
Returns
The created socket - or NULL if the socket could not be created or could not be bound.
+ +
+
+ +

◆ DNS_CreateSocket()

+ +
+
+ + + + + + + + +
Socket_t DNS_CreateSocket (TickType_t uxReadTimeOut_ticks)
+
+ +

Create a socket and bind it to the standard DNS port number.

+
Returns
The created socket - or NULL if the socket could not be created or could not be bound.
+ +
+
+ +

◆ DNS_SendRequest()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t DNS_SendRequest (Socket_t xDNSSocket,
const struct freertos_sockaddr * xAddress,
const struct xDNSBuffer * pxDNSBuf 
)
+
+ +

perform a DNS network request

+
Parameters
+ + + + +
xDNSSocketCreated socket
xAddressaddress structure (ip, port etc)
pxDNSBufbuffer to send
+
+
+
Returns
xReturn: true if the message could be sent false otherwise
+ +
+
+ +

◆ DNS_ReadReply()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t DNS_ReadReply (ConstSocket_t xDNSSocket,
struct freertos_sockaddr * xAddress,
struct xDNSBuffer * pxReceiveBuffer 
)
+
+ +

perform a DNS network read

+
Parameters
+ + + + +
xDNSSocketsocket
xAddressaddress to read from
pxReceiveBufferbuffer to fill with received data
+
+
+ +
+
+ +

◆ DNS_CloseSocket()

+ +
+
+ + + + + + + + +
void DNS_CloseSocket (Socket_t xDNSSocket)
+
+ +

perform a DNS network close

+
Parameters
+ + +
xDNSSocketthe DNS socket to close
+
+
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___d_n_s___parser_8c.html b/V4.3.1/_free_r_t_o_s___d_n_s___parser_8c.html new file mode 100644 index 000000000..5e9613f4c --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___d_n_s___parser_8c.html @@ -0,0 +1,413 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_DNS_Parser.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_DNS_Parser.c File Reference
+
+
+ +

Implements the DNS message parser. +More...

+
#include "FreeRTOS.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_IP_Private.h"
+#include "FreeRTOS_DNS_Globals.h"
+#include "FreeRTOS_DNS_Parser.h"
+#include "FreeRTOS_DNS_Cache.h"
+#include "FreeRTOS_DNS_Callback.h"
+#include "NetworkBufferManagement.h"
+#include <string.h>
+
+ + + + + + + + + + + + + + + + + + + +

+Functions

size_t DNS_ReadNameField (ParseSet_t *pxSet, size_t uxDestLen)
 Read the Name field out of a DNS response packet.
 
size_t DNS_SkipNameField (const uint8_t *pucByte, size_t uxLength)
 Simple routine that jumps over the NAME field of a resource record.
 
uint32_t DNS_ParseDNSReply (uint8_t *pucUDPPayloadBuffer, size_t uxBufferLength, struct freertos_addrinfo **ppxAddressInfo, BaseType_t xExpected, uint16_t usPort)
 Process a response packet from a DNS server, or an LLMNR reply.
 
uint32_t parseDNSAnswer (ParseSet_t *pxSet, struct freertos_addrinfo **ppxAddressInfo, size_t *uxBytesRead)
 Process DNS answer field in a DNS response packet from a DNS server.
 
void prepareReplyDNSMessage (NetworkBufferDescriptor_t *pxNetworkBuffer, BaseType_t lNetLength)
 Send a DNS message to be used in MDNS, LLMNR or NBNS.
 
void DNS_TreatNBNS (uint8_t *pucPayload, size_t uxBufferLength, uint32_t ulIPAddress)
 Respond to an NBNS query or an NBNS reply.
 
+

Detailed Description

+

Implements the DNS message parser.

+

Function Documentation

+ +

◆ DNS_ReadNameField()

+ +
+
+ + + + + + + + + + + + + + + + + + +
size_t DNS_ReadNameField (ParseSet_t * pxSet,
size_t uxDestLen 
)
+
+ +

Read the Name field out of a DNS response packet.

+
Parameters
+ + + +
[in,out]pxSeta set of variables that are shared among the helper functions.
[in]uxDestLenSize of the pcName array.
+
+
+
Returns
If a fully formed name was found, then return the number of bytes processed in pucByte.
+ +
+
+ +

◆ DNS_SkipNameField()

+ +
+
+ + + + + + + + + + + + + + + + + + +
size_t DNS_SkipNameField (const uint8_t * pucByte,
size_t uxLength 
)
+
+ +

Simple routine that jumps over the NAME field of a resource record.

+
Parameters
+ + + +
[in]pucByteThe pointer to the resource record.
[in]uxLengthLength of the resource record.
+
+
+
Returns
It returns the number of bytes read, or zero when an error has occurred.
+ +
+
+ +

◆ DNS_ParseDNSReply()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uint32_t DNS_ParseDNSReply (uint8_t * pucUDPPayloadBuffer,
size_t uxBufferLength,
struct freertos_addrinfo ** ppxAddressInfo,
BaseType_t xExpected,
uint16_t usPort 
)
+
+ +

Process a response packet from a DNS server, or an LLMNR reply.

+
Parameters
+ + + + + + +
[in]pucUDPPayloadBufferThe DNS response received as a UDP payload.
[in]uxBufferLengthLength of the UDP payload buffer.
[in]ppxAddressInfoA pointer to a pointer where the results will be stored.
[in]xExpectedindicates whether the identifier in the reply was expected, and thus if the DNS cache may be updated with the reply.
[in]usPortThe server port number in order to identify the protocol.
+
+
+
Returns
The IP address in the DNS response if present and if xExpected is set to pdTRUE. An error code (dnsPARSE_ERROR) if there was an error in the DNS response. 0 if xExpected set to pdFALSE.
+ +
+
+ +

◆ parseDNSAnswer()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint32_t parseDNSAnswer (ParseSet_t * pxSet,
struct freertos_addrinfo ** ppxAddressInfo,
size_t * uxBytesRead 
)
+
+ +

Process DNS answer field in a DNS response packet from a DNS server.

+
Parameters
+ + + + +
[in]pxSeta set of variables that are shared among the helper functions.
[out]ppxAddressInfoa linked list storing the DNS answers.
[out]uxBytesReadtotal bytes consumed by the function
+
+
+
Returns
pdTRUE when successful, otherwise pdFALSE.
+ +
+
+ +

◆ prepareReplyDNSMessage()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void prepareReplyDNSMessage (NetworkBufferDescriptor_t * pxNetworkBuffer,
BaseType_t lNetLength 
)
+
+ +

Send a DNS message to be used in MDNS, LLMNR or NBNS.

+
Parameters
+ + + +
[in]pxNetworkBufferThe network buffer descriptor with the DNS message.
[in]lNetLengthThe length of the DNS message.
+
+
+ +
+
+ +

◆ DNS_TreatNBNS()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void DNS_TreatNBNS (uint8_t * pucPayload,
size_t uxBufferLength,
uint32_t ulIPAddress 
)
+
+ +

Respond to an NBNS query or an NBNS reply.

+
Parameters
+ + + + +
[in]pucPayloadthe UDP payload of the NBNS message.
[in]uxBufferLengthLength of the Buffer.
[in]ulIPAddressIP address of the sender.
+
+
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___i_c_m_p_8c.html b/V4.3.1/_free_r_t_o_s___i_c_m_p_8c.html new file mode 100644 index 000000000..cef011650 --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___i_c_m_p_8c.html @@ -0,0 +1,257 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_ICMP.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_ICMP.c File Reference
+
+
+ +

Implements the Internet Control Message Protocol for the FreeRTOS+TCP network stack. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "queue.h"
+#include "semphr.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_IP_Private.h"
+#include "FreeRTOS_ICMP.h"
+#include "FreeRTOS_Sockets.h"
+#include "FreeRTOS_UDP_IP.h"
+#include "FreeRTOS_DHCP.h"
+#include "NetworkInterface.h"
+#include "NetworkBufferManagement.h"
+#include "FreeRTOS_DNS.h"
+
+ + + + + + + + + + +

+Functions

static eFrameProcessingResult_t prvProcessICMPEchoRequest (ICMPPacket_t *const pxICMPPacket, const NetworkBufferDescriptor_t *const pxNetworkBuffer)
 Process an ICMP echo request.
 
static void prvProcessICMPEchoReply (ICMPPacket_t *const pxICMPPacket)
 Process an ICMP echo reply.
 
eFrameProcessingResult_t ProcessICMPPacket (const NetworkBufferDescriptor_t *const pxNetworkBuffer)
 Process an ICMP packet. Only echo requests and echo replies are recognised and handled.
 
+

Detailed Description

+

Implements the Internet Control Message Protocol for the FreeRTOS+TCP network stack.

+

Function Documentation

+ +

◆ prvProcessICMPEchoRequest()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static eFrameProcessingResult_t prvProcessICMPEchoRequest (ICMPPacket_t *const pxICMPPacket,
const NetworkBufferDescriptor_t *const pxNetworkBuffer 
)
+
+static
+
+ +

Process an ICMP echo request.

+
Parameters
+ + + +
[in,out]pxICMPPacketThe IP packet that contains the ICMP message.
pxNetworkBufferPointer to the network buffer containing the ICMP packet.
+
+
+
Returns
Function returns eReturnEthernetFrame.
+ +
+
+ +

◆ prvProcessICMPEchoReply()

+ +
+
+ + + + + +
+ + + + + + + + +
static void prvProcessICMPEchoReply (ICMPPacket_t *const pxICMPPacket)
+
+static
+
+ +

Process an ICMP echo reply.

+
Parameters
+ + +
[in]pxICMPPacketThe IP packet that contains the ICMP message.
+
+
+ +
+
+ +

◆ ProcessICMPPacket()

+ +
+
+ + + + + + + + +
eFrameProcessingResult_t ProcessICMPPacket (const NetworkBufferDescriptor_t *const pxNetworkBuffer)
+
+ +

Process an ICMP packet. Only echo requests and echo replies are recognised and handled.

+
Parameters
+ + +
[in,out]pxNetworkBufferThe pointer to the network buffer descriptor that contains the ICMP message.
+
+
+
Returns
eReleaseBuffer when the message buffer should be released, or eReturnEthernetFrame when the packet should be returned.
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___i_p_8c.html b/V4.3.1/_free_r_t_o_s___i_p_8c.html new file mode 100644 index 000000000..82bee35aa --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___i_p_8c.html @@ -0,0 +1,1318 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_IP.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_IP.c File Reference
+
+
+ +

Implements the basic functionality for the FreeRTOS+TCP network stack. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "queue.h"
+#include "semphr.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_ICMP.h"
+#include "FreeRTOS_IP_Timers.h"
+#include "FreeRTOS_IP_Utils.h"
+#include "FreeRTOS_Sockets.h"
+#include "FreeRTOS_IP_Private.h"
+#include "FreeRTOS_ARP.h"
+#include "FreeRTOS_ND.h"
+#include "FreeRTOS_UDP_IP.h"
+#include "FreeRTOS_DHCP.h"
+#include "FreeRTOS_DHCPv6.h"
+#include "NetworkInterface.h"
+#include "NetworkBufferManagement.h"
+#include "FreeRTOS_DNS.h"
+#include "FreeRTOS_Routing.h"
+
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

+#define ipINITIALISATION_RETRY_DELAY   ( pdMS_TO_TICKS( 3000U ) )
 Time delay between repeated attempts to initialise the network hardware.
 
+#define ipARP_RESOLUTION_MAX_DELAY   ( pdMS_TO_TICKS( 2000U ) )
 Maximum time to wait for an ARP resolution while holding a packet.
 
+#define ipND_RESOLUTION_MAX_DELAY   ( pdMS_TO_TICKS( 2000U ) )
 Maximum time to wait for a ND resolution while holding a packet.
 
+#define ipARP_TIMER_PERIOD_MS   ( 10000U )
 Defines how often the ARP resolution timer callback function is executed. The time is shorter in the Windows simulator as simulated time is not real time.
 
+#define ipND_TIMER_PERIOD_MS   ( 10000U )
 Defines how often the ND resolution timer callback function is executed. The time is shorter in the Windows simulator as simulated time is not real time.
 
+#define ipTCP_TIMER_PERIOD_MS   ( 1000U )
 When initialising the TCP timer, give it an initial time-out of 1 second.
 
#define iptraceIP_TASK_STARTING()   do {} while( ipFALSE_BOOL )
 
+#define ipIS_ETHERNET_FRAME_TYPE_INVALID(usFrameType)   ( ( usFrameType ) <= 0x0600U )
 The frame type field in the Ethernet header must have a value greater than 0x0600. If the configuration option ipconfigFILTER_OUT_NON_ETHERNET_II_FRAMES is enabled, the stack will discard packets with a frame type value less than or equal to 0x0600. However, if this option is disabled, the stack will continue to process these packets.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

static void prvCallDHCP_RA_Handler (NetworkEndPoint_t *pxEndPoint)
 Call the state machine of either DHCP, DHCPv6, or RA, whichever is activated.
 
+static void prvIPTask_Initialise (void)
 Helper function for prvIPTask, it does the first initializations at start-up. No parameters, no return type.
 
+static void prvIPTask_CheckPendingEvents (void)
 Check the value of 'xNetworkDownEventPending'. When non-zero, pending network-down events will be handled.
 
static void prvProcessIPEventsAndTimers (void)
 The pointer to buffer with packet waiting for ARP resolution.
 
static void prvIPTask (void *pvParameters)
 The IP task handles all requests from the user application and the network interface. It receives messages through a FreeRTOS queue called 'xNetworkEventQueue'. prvIPTask() is the only task which has access to the data of the IP-stack, and so it has no need of using mutexes.
 
static void prvProcessEthernetPacket (NetworkBufferDescriptor_t *const pxNetworkBuffer)
 Process the Ethernet packet.
 
static eFrameProcessingResult_t prvProcessIPPacket (const IPPacket_t *pxIPPacket, NetworkBufferDescriptor_t *const pxNetworkBuffer)
 Process an IP-packet.
 
static void prvHandleEthernetPacket (NetworkBufferDescriptor_t *pxBuffer)
 Handle the incoming Ethernet packets.
 
static void prvForwardTxPacket (NetworkBufferDescriptor_t *pxNetworkBuffer, BaseType_t xReleaseAfterSend)
 Send a network packet.
 
static eFrameProcessingResult_t prvProcessUDPPacket (NetworkBufferDescriptor_t *const pxNetworkBuffer)
 Check the sizes of the UDP packet and forward it to the UDP module ( xProcessReceivedUDPPacket() )
 
TaskHandle_t FreeRTOS_GetIPTaskHandle (void)
 The variable 'xIPTaskHandle' is declared static. This function gives read-only access to it.
 
void vIPNetworkUpCalls (struct xNetworkEndPoint *pxEndPoint)
 Perform all the required tasks when the network gets connected.
 
void FreeRTOS_NetworkDown (struct xNetworkInterface *pxNetworkInterface)
 Send a network down event to the IP-task. If it fails to post a message, the failure will be noted in the variable 'xNetworkDownEventPending' and later on a 'network-down' event, it will be executed.
 
BaseType_t FreeRTOS_NetworkDownFromISR (struct xNetworkInterface *pxNetworkInterface)
 Utility function. Process Network Down event from ISR. This function is supposed to be called form an ISR. It is recommended.
 
void * FreeRTOS_GetUDPPayloadBuffer_Multi (size_t uxRequestedSizeBytes, TickType_t uxBlockTimeTicks, uint8_t ucIPType)
 Obtain a buffer big enough for a UDP payload of given size and given IP type.
 
+BaseType_t FreeRTOS_IPInit_Multi (void)
 Initialise the FreeRTOS-Plus-TCP network stack and initialise the IP-task. Before calling this function, at least 1 interface and 1 end-point must have been set-up.
 
void FreeRTOS_ReleaseUDPPayloadBuffer (void const *pvBuffer)
 Release the UDP payload buffer.
 
void FreeRTOS_GetEndPointConfiguration (uint32_t *pulIPAddress, uint32_t *pulNetMask, uint32_t *pulGatewayAddress, uint32_t *pulDNSServerAddress, const struct xNetworkEndPoint *pxEndPoint)
 Get the current IPv4 address configuration. Only non-NULL pointers will be filled in. pxEndPoint must be non-NULL.
 
void FreeRTOS_SetEndPointConfiguration (const uint32_t *pulIPAddress, const uint32_t *pulNetMask, const uint32_t *pulGatewayAddress, const uint32_t *pulDNSServerAddress, struct xNetworkEndPoint *pxEndPoint)
 Set the current IPv4 network address configuration. Only non-NULL pointers will pointers will be used. pxEndPoint must pointer to a valid end-point.
 
BaseType_t FreeRTOS_ReleaseTCPPayloadBuffer (Socket_t xSocket, void const *pvBuffer, BaseType_t xByteCount)
 Release the memory that was previously obtained by calling FreeRTOS_recv() with the flag 'FREERTOS_ZERO_COPY'.
 
BaseType_t FreeRTOS_SendPingRequest (uint32_t ulIPAddress, size_t uxNumberOfBytesToSend, TickType_t uxBlockTimeTicks)
 Send a ping request to the given IP address. After receiving a reply, IP-task will call a user-supplied function 'vApplicationPingReplyHook()'.
 
BaseType_t xSendEventToIPTask (eIPEvent_t eEvent)
 Send an event to the IP task. It calls 'xSendEventStructToIPTask' internally.
 
BaseType_t xSendEventStructToIPTask (const IPStackEvent_t *pxEvent, TickType_t uxTimeout)
 Send an event (in form of struct) to the IP task to be processed.
 
eFrameProcessingResult_t eConsiderFrameForProcessing (const uint8_t *const pucEthernetBuffer)
 Decide whether this packet should be processed or not based on the IP address in the packet.
 
void vReturnEthernetFrame (NetworkBufferDescriptor_t *pxNetworkBuffer, BaseType_t xReleaseAfterSend)
 Send the Ethernet frame after checking for some conditions.
 
uint32_t FreeRTOS_GetIPAddress (void)
 Returns the IP address of the NIC.
 
BaseType_t xIPIsNetworkTaskReady (void)
 Returns whether the IP task is ready.
 
BaseType_t FreeRTOS_IsNetworkUp (void)
 Returns whether all end-points are up.
 
BaseType_t xIsNetworkDownEventPending (void)
 The variable 'xNetworkDownEventPending' is declared static. This function gives read-only access to it.
 
BaseType_t FreeRTOS_IsEndPointUp (const struct xNetworkEndPoint *pxEndPoint)
 Returns whether a particular end-point is up.
 
BaseType_t FreeRTOS_AllEndPointsUp (const struct xNetworkInterface *pxInterface)
 Return pdTRUE if all end-points belonging to a given interface are up. When pxInterface is null, all end-points will be checked.
 
size_t uxIPHeaderSizePacket (const NetworkBufferDescriptor_t *pxNetworkBuffer)
 Get the size of the IP-header, by checking the type of the network buffer.
 
size_t uxIPHeaderSizeSocket (const FreeRTOS_Socket_t *pxSocket)
 Get the size of the IP-header, by checking if the socket bIsIPv6 set.
 
+ + + + + + + + + + + + + + + + + + + +

+Variables

+QueueHandle_t xNetworkEventQueue = NULL
 The queue used to pass events into the IP-task for processing.
 
+uint16_t usPacketIdentifier = 0U
 The IP packet ID.
 
+const MACAddress_t xBroadcastMACAddress = { { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } }
 For convenience, a MAC address of all 0xffs is defined const for quick reference.
 
+static volatile BaseType_t xNetworkDownEventPending = pdFALSE
 Used to ensure network down events cannot be missed when they cannot be posted to the network event queue because the network event queue is already full.
 
+static TaskHandle_t xIPTaskHandle = NULL
 Stores the handle of the task that handles the stack. The handle is used (indirectly) by some utility function to determine if the utility function is being called by a task (in which case it is ok to block) or by the IP task itself (in which case it is not ok to block).
 
+static BaseType_t xIPTaskInitialised = pdFALSE
 Set to pdTRUE when the IP task is ready to start processing packets.
 
+

Detailed Description

+

Implements the basic functionality for the FreeRTOS+TCP network stack.

+

Macro Definition Documentation

+ +

◆ iptraceIP_TASK_STARTING

+ +
+
+ + + + + + + +
#define iptraceIP_TASK_STARTING()   do {} while( ipFALSE_BOOL )
+
+

Empty definition in case iptraceIP_TASK_STARTING is not defined.

+ +
+
+

Function Documentation

+ +

◆ prvCallDHCP_RA_Handler()

+ +
+
+ + + + + +
+ + + + + + + + +
static void prvCallDHCP_RA_Handler (NetworkEndPoint_t * pxEndPoint)
+
+static
+
+ +

Call the state machine of either DHCP, DHCPv6, or RA, whichever is activated.

+
Parameters
+ + +
[in]pxEndPointThe end-point for which the state-machine will be called.
+
+
+ +
+
+ +

◆ prvProcessIPEventsAndTimers()

+ +
+
+ + + + + +
+ + + + + + + + +
static void prvProcessIPEventsAndTimers (void )
+
+static
+
+ +

The pointer to buffer with packet waiting for ARP resolution.

+

Process the events sent to the IP task and process the timers.

+

The pointer to buffer with packet waiting for ND resolution.

+ +
+
+ +

◆ prvIPTask()

+ +
+
+ + + + + +
+ + + + + + + + +
static void prvIPTask (void * pvParameters)
+
+static
+
+ +

The IP task handles all requests from the user application and the network interface. It receives messages through a FreeRTOS queue called 'xNetworkEventQueue'. prvIPTask() is the only task which has access to the data of the IP-stack, and so it has no need of using mutexes.

+
Parameters
+ + +
[in]pvParametersNot used.
+
+
+

Stores interface structures.

+ +
+
+ +

◆ prvProcessEthernetPacket()

+ +
+
+ + + + + +
+ + + + + + + + +
static void prvProcessEthernetPacket (NetworkBufferDescriptor_t *const pxNetworkBuffer)
+
+static
+
+ +

Process the Ethernet packet.

+
Parameters
+ + +
[in,out]pxNetworkBufferthe network buffer containing the ethernet packet. If the buffer is large enough, it may be reused to send a reply.
+
+
+ +
+
+ +

◆ prvProcessIPPacket()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static eFrameProcessingResult_t prvProcessIPPacket (const IPPacket_t * pxIPPacket,
NetworkBufferDescriptor_t *const pxNetworkBuffer 
)
+
+static
+
+ +

Process an IP-packet.

+
Parameters
+ + + +
[in]pxIPPacketThe IP packet to be processed.
[in]pxNetworkBufferThe networkbuffer descriptor having the IP packet.
+
+
+
Returns
An enum to show whether the packet should be released/kept/processed etc.
+ +
+
+ +

◆ prvHandleEthernetPacket()

+ +
+
+ + + + + +
+ + + + + + + + +
static void prvHandleEthernetPacket (NetworkBufferDescriptor_t * pxBuffer)
+
+static
+
+ +

Handle the incoming Ethernet packets.

+
Parameters
+ + +
[in]pxBufferLinked/un-linked network buffer descriptor(s) to be processed.
+
+
+ +
+
+ +

◆ prvForwardTxPacket()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void prvForwardTxPacket (NetworkBufferDescriptor_t * pxNetworkBuffer,
BaseType_t xReleaseAfterSend 
)
+
+static
+
+ +

Send a network packet.

+
Parameters
+ + + +
[in]pxNetworkBufferThe message buffer.
[in]xReleaseAfterSendWhen true, the network interface will own the buffer and is responsible for it's release.
+
+
+ +
+
+ +

◆ prvProcessUDPPacket()

+ +
+
+ + + + + +
+ + + + + + + + +
static eFrameProcessingResult_t prvProcessUDPPacket (NetworkBufferDescriptor_t *const pxNetworkBuffer)
+
+static
+
+ +

Check the sizes of the UDP packet and forward it to the UDP module ( xProcessReceivedUDPPacket() )

+
Parameters
+ + +
[in]pxNetworkBufferThe network buffer containing the UDP packet.
+
+
+
Returns
eReleaseBuffer ( please release the buffer ). eFrameConsumed ( the buffer has now been released ).
+ +
+
+ +

◆ FreeRTOS_GetIPTaskHandle()

+ +
+
+ + + + + + + + +
TaskHandle_t FreeRTOS_GetIPTaskHandle (void )
+
+ +

The variable 'xIPTaskHandle' is declared static. This function gives read-only access to it.

+
Returns
The handle of the IP-task.
+ +
+
+ +

◆ vIPNetworkUpCalls()

+ +
+
+ + + + + + + + +
void vIPNetworkUpCalls (struct xNetworkEndPoint * pxEndPoint)
+
+ +

Perform all the required tasks when the network gets connected.

+
Parameters
+ + +
pxEndPointThe end-point which goes up.
+
+
+ +
+
+ +

◆ FreeRTOS_NetworkDown()

+ +
+
+ + + + + + + + +
void FreeRTOS_NetworkDown (struct xNetworkInterface * pxNetworkInterface)
+
+ +

Send a network down event to the IP-task. If it fails to post a message, the failure will be noted in the variable 'xNetworkDownEventPending' and later on a 'network-down' event, it will be executed.

+
Parameters
+ + +
[in]pxNetworkInterfaceThe interface that goes down.
+
+
+ +
+
+ +

◆ FreeRTOS_NetworkDownFromISR()

+ +
+
+ + + + + + + + +
BaseType_t FreeRTOS_NetworkDownFromISR (struct xNetworkInterface * pxNetworkInterface)
+
+ +

Utility function. Process Network Down event from ISR. This function is supposed to be called form an ISR. It is recommended.

+ +
Parameters
+ + +
[in]pxNetworkInterfaceThe interface that goes down.
+
+
+
Returns
If the event was processed successfully, then return pdTRUE. Else pdFALSE.
+ +
+
+ +

◆ FreeRTOS_GetUDPPayloadBuffer_Multi()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void * FreeRTOS_GetUDPPayloadBuffer_Multi (size_t uxRequestedSizeBytes,
TickType_t uxBlockTimeTicks,
uint8_t ucIPType 
)
+
+ +

Obtain a buffer big enough for a UDP payload of given size and given IP type.

+
Parameters
+ + + + +
[in]uxRequestedSizeBytesThe size of the UDP payload.
[in]uxBlockTimeTicksMaximum amount of time for which this call can block. This value is capped internally.
[in]ucIPTypeEither ipTYPE_IPv4 (0x40) or ipTYPE_IPv6 (0x60)
+
+
+
Returns
If a buffer was created then the pointer to that buffer is returned, else a NULL pointer is returned.
+ +
+
+ +

◆ FreeRTOS_ReleaseUDPPayloadBuffer()

+ +
+
+ + + + + + + + +
void FreeRTOS_ReleaseUDPPayloadBuffer (void const * pvBuffer)
+
+ +

Release the UDP payload buffer.

+
Parameters
+ + +
[in]pvBufferPointer to the UDP buffer that is to be released.
+
+
+ +
+
+ +

◆ FreeRTOS_GetEndPointConfiguration()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void FreeRTOS_GetEndPointConfiguration (uint32_t * pulIPAddress,
uint32_t * pulNetMask,
uint32_t * pulGatewayAddress,
uint32_t * pulDNSServerAddress,
const struct xNetworkEndPoint * pxEndPoint 
)
+
+ +

Get the current IPv4 address configuration. Only non-NULL pointers will be filled in. pxEndPoint must be non-NULL.

+
Parameters
+ + + + + + +
[out]pulIPAddressThe current IP-address assigned.
[out]pulNetMaskThe netmask used for current subnet.
[out]pulGatewayAddressThe gateway address.
[out]pulDNSServerAddressThe DNS server address.
[in]pxEndPointThe end-point which is being questioned.
+
+
+ +
+
+ +

◆ FreeRTOS_SetEndPointConfiguration()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void FreeRTOS_SetEndPointConfiguration (const uint32_t * pulIPAddress,
const uint32_t * pulNetMask,
const uint32_t * pulGatewayAddress,
const uint32_t * pulDNSServerAddress,
struct xNetworkEndPoint * pxEndPoint 
)
+
+ +

Set the current IPv4 network address configuration. Only non-NULL pointers will pointers will be used. pxEndPoint must pointer to a valid end-point.

+
Parameters
+ + + + + + +
[in]pulIPAddressThe current IP-address assigned.
[in]pulNetMaskThe netmask used for current subnet.
[in]pulGatewayAddressThe gateway address.
[in]pulDNSServerAddressThe DNS server address.
[in]pxEndPointThe end-point which is being questioned.
+
+
+ +
+
+ +

◆ FreeRTOS_ReleaseTCPPayloadBuffer()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t FreeRTOS_ReleaseTCPPayloadBuffer (Socket_t xSocket,
void const * pvBuffer,
BaseType_t xByteCount 
)
+
+ +

Release the memory that was previously obtained by calling FreeRTOS_recv() with the flag 'FREERTOS_ZERO_COPY'.

+
Parameters
+ + + + +
[in]xSocketThe socket that was read from.
[in]pvBufferThe buffer returned in the call to FreeRTOS_recv().
[in]xByteCountThe number of bytes that have been used.
+
+
+
Returns
pdPASS if the buffer was released successfully, otherwise pdFAIL is returned.
+ +
+
+ +

◆ FreeRTOS_SendPingRequest()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t FreeRTOS_SendPingRequest (uint32_t ulIPAddress,
size_t uxNumberOfBytesToSend,
TickType_t uxBlockTimeTicks 
)
+
+ +

Send a ping request to the given IP address. After receiving a reply, IP-task will call a user-supplied function 'vApplicationPingReplyHook()'.

+
Parameters
+ + + + +
[in]ulIPAddressThe IP address to which the ping is to be sent.
[in]uxNumberOfBytesToSendNumber of bytes in the ping request.
[in]uxBlockTimeTicksMaximum number of ticks to wait.
+
+
+
Returns
If successfully sent to IP task for processing then the sequence number of the ping packet or else, pdFAIL.
+ +
+
+ +

◆ xSendEventToIPTask()

+ +
+
+ + + + + + + + +
BaseType_t xSendEventToIPTask (eIPEvent_t eEvent)
+
+ +

Send an event to the IP task. It calls 'xSendEventStructToIPTask' internally.

+
Parameters
+ + +
[in]eEventThe event to be sent.
+
+
+
Returns
pdPASS if the event was sent (or the desired effect was achieved). Else, pdFAIL.
+ +
+
+ +

◆ xSendEventStructToIPTask()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BaseType_t xSendEventStructToIPTask (const IPStackEvent_t * pxEvent,
TickType_t uxTimeout 
)
+
+ +

Send an event (in form of struct) to the IP task to be processed.

+
Parameters
+ + + +
[in]pxEventThe event to be sent.
[in]uxTimeoutTimeout for waiting in case the queue is full. 0 for non-blocking calls.
+
+
+
Returns
pdPASS if the event was sent (or the desired effect was achieved). Else, pdFAIL.
+ +
+
+ +

◆ eConsiderFrameForProcessing()

+ +
+
+ + + + + + + + +
eFrameProcessingResult_t eConsiderFrameForProcessing (const uint8_t *const pucEthernetBuffer)
+
+ +

Decide whether this packet should be processed or not based on the IP address in the packet.

+
Parameters
+ + +
[in]pucEthernetBufferThe ethernet packet under consideration.
+
+
+
Returns
Enum saying whether to release or to process the packet.
+ +
+
+ +

◆ vReturnEthernetFrame()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void vReturnEthernetFrame (NetworkBufferDescriptor_t * pxNetworkBuffer,
BaseType_t xReleaseAfterSend 
)
+
+ +

Send the Ethernet frame after checking for some conditions.

+
Parameters
+ + + +
[in,out]pxNetworkBufferThe network buffer which is to be sent.
[in]xReleaseAfterSendWhether this network buffer is to be released or not.
+
+
+ +
+
+ +

◆ FreeRTOS_GetIPAddress()

+ +
+
+ + + + + + + + +
uint32_t FreeRTOS_GetIPAddress (void )
+
+ +

Returns the IP address of the NIC.

+
Returns
The IP address of the NIC.
+ +
+
+ +

◆ xIPIsNetworkTaskReady()

+ +
+
+ + + + + + + + +
BaseType_t xIPIsNetworkTaskReady (void )
+
+ +

Returns whether the IP task is ready.

+
Returns
pdTRUE if IP task is ready, else pdFALSE.
+ +
+
+ +

◆ FreeRTOS_IsNetworkUp()

+ +
+
+ + + + + + + + +
BaseType_t FreeRTOS_IsNetworkUp (void )
+
+ +

Returns whether all end-points are up.

+
Returns
pdTRUE if all defined end-points are up.
+ +
+
+ +

◆ xIsNetworkDownEventPending()

+ +
+
+ + + + + + + + +
BaseType_t xIsNetworkDownEventPending (void )
+
+ +

The variable 'xNetworkDownEventPending' is declared static. This function gives read-only access to it.

+
Returns
pdTRUE if there a network-down event pending. pdFALSE otherwise.
+ +
+
+ +

◆ FreeRTOS_IsEndPointUp()

+ +
+
+ + + + + + + + +
BaseType_t FreeRTOS_IsEndPointUp (const struct xNetworkEndPoint * pxEndPoint)
+
+ +

Returns whether a particular end-point is up.

+
Returns
pdTRUE if a particular end-points is up.
+ +
+
+ +

◆ FreeRTOS_AllEndPointsUp()

+ +
+
+ + + + + + + + +
BaseType_t FreeRTOS_AllEndPointsUp (const struct xNetworkInterface * pxInterface)
+
+ +

Return pdTRUE if all end-points belonging to a given interface are up. When pxInterface is null, all end-points will be checked.

+
Parameters
+ + +
[in]pxInterfaceThe network interface of interest, or NULL to check all end-points.
+
+
+
Returns
pdTRUE if all end-points are up, otherwise pdFALSE;
+ +
+
+ +

◆ uxIPHeaderSizePacket()

+ +
+
+ + + + + + + + +
size_t uxIPHeaderSizePacket (const NetworkBufferDescriptor_t * pxNetworkBuffer)
+
+ +

Get the size of the IP-header, by checking the type of the network buffer.

+
Parameters
+ + +
[in]pxNetworkBufferThe network buffer.
+
+
+
Returns
The size of the corresponding IP-header.
+ +
+
+ +

◆ uxIPHeaderSizeSocket()

+ +
+
+ + + + + + + + +
size_t uxIPHeaderSizeSocket (const FreeRTOS_Socket_t * pxSocket)
+
+ +

Get the size of the IP-header, by checking if the socket bIsIPv6 set.

+
Parameters
+ + +
[in]pxSocketThe socket.
+
+
+
Returns
The size of the corresponding IP-header.
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___i_p___timers_8c.html b/V4.3.1/_free_r_t_o_s___i_p___timers_8c.html new file mode 100644 index 000000000..af5492456 --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___i_p___timers_8c.html @@ -0,0 +1,559 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_IP_Timers.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_IP_Timers.c File Reference
+
+
+ +

Implements the Internet Control Message Protocol for the FreeRTOS+TCP network stack. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "queue.h"
+#include "semphr.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_IP_Timers.h"
+#include "FreeRTOS_IP_Utils.h"
+#include "FreeRTOS_Sockets.h"
+#include "FreeRTOS_IP_Private.h"
+#include "FreeRTOS_UDP_IP.h"
+#include "FreeRTOS_DHCP.h"
+#include "FreeRTOS_ARP.h"
+#include "FreeRTOS_ND.h"
+#include "NetworkInterface.h"
+#include "NetworkBufferManagement.h"
+#include "FreeRTOS_Routing.h"
+#include "FreeRTOS_DNS.h"
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

static void prvIPTimerStart (IPTimer_t *pxTimer, TickType_t xTime)
 Start an IP timer. The IP-task has its own implementation of a timer called 'IPTimer_t', which is based on the FreeRTOS 'TimeOut_t'.
 
static BaseType_t prvIPTimerCheck (IPTimer_t *pxTimer)
 Check the IP timer to see whether an IP event should be processed or not.
 
static void prvIPTimerReload (IPTimer_t *pxTimer, TickType_t xTime)
 Sets the reload time of an IP timer and restarts it.
 
TickType_t xCalculateSleepTime (void)
 Calculate the maximum sleep time remaining. It will go through all timers to see which timer will expire first. That will be the amount of time to block in the next call to xQueueReceive().
 
+void vCheckNetworkTimers (void)
 Check the network timers (ARP/ND/DHCP/DNS/TCP) and if they are expired, send an event to the IP-Task.
 
void vTCPTimerReload (TickType_t xTime)
 Sets the reload time of the TCP timer and restarts it.
 
void vDNSTimerReload (uint32_t ulCheckTime)
 Reload the DNS timer.
 
void vDHCP_RATimerReload (NetworkEndPoint_t *pxEndPoint, TickType_t uxClockTicks)
 Set the reload time of the DHCP/DHCPv6/RA timer.
 
void vNetworkTimerReload (TickType_t xTime)
 Reload the Network timer.
 
void vIPSetTCPTimerExpiredState (BaseType_t xExpiredState)
 Enable/disable the TCP timer.
 
void vIPSetDHCP_RATimerEnableState (NetworkEndPoint_t *pxEndPoint, BaseType_t xEnableState)
 Enable or disable the DHCP/DHCPv6/RA timer.
 
void vIPSetDNSTimerEnableState (BaseType_t xEnableState)
 Enable/disable the DNS timer.
 
+void vSetAllNetworksUp (BaseType_t xIsAllNetworksUp)
 Mark whether all interfaces are up or at least one interface is down. If all interfaces are up, the 'xNetworkTimer' will not be checked.
 
+ + + + + + + + + + + + + +

+Variables

+static BaseType_t xAllNetworksUp = pdFALSE
 'xAllNetworksUp' becomes pdTRUE when all network interfaces are initialised and becomes pdFALSE when any network interface goes down.
 
+static IPTimer_t xTCPTimer
 TCP timer, to check for timeouts, resends.
 
+static IPTimer_t xDNSTimer
 DNS timer, to check for timeouts when looking-up a domain.
 
+static IPTimer_t xNetworkTimer
 As long as not all networks are up, repeat initialisation by calling the xNetworkInterfaceInitialise() function of the interfaces that are not ready.
 
+

Detailed Description

+

Implements the Internet Control Message Protocol for the FreeRTOS+TCP network stack.

+

Function Documentation

+ +

◆ prvIPTimerStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void prvIPTimerStart (IPTimer_t * pxTimer,
TickType_t xTime 
)
+
+static
+
+ +

Start an IP timer. The IP-task has its own implementation of a timer called 'IPTimer_t', which is based on the FreeRTOS 'TimeOut_t'.

+

Start an IP timer. The IP-task has its own implementation of a timer called 'IPTimer_t', which is based on the FreeRTOS 'TimeOut_t'.

+
Parameters
+ + + +
[in]pxTimerPointer to the IP timer. When zero, the timer is marked as expired.
[in]xTimeTime to be loaded into the IP timer.
+
+
+ +
+
+ +

◆ prvIPTimerCheck()

+ +
+
+ + + + + +
+ + + + + + + + +
static BaseType_t prvIPTimerCheck (IPTimer_t * pxTimer)
+
+static
+
+ +

Check the IP timer to see whether an IP event should be processed or not.

+

Check the IP timer to see whether an IP event should be processed or not.

+
Parameters
+ + +
[in]pxTimerPointer to the IP timer.
+
+
+
Returns
If the timer is expired then pdTRUE is returned. Else pdFALSE.
+ +
+
+ +

◆ prvIPTimerReload()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void prvIPTimerReload (IPTimer_t * pxTimer,
TickType_t xTime 
)
+
+static
+
+ +

Sets the reload time of an IP timer and restarts it.

+

Sets the reload time of an IP timer and restarts it.

+
Parameters
+ + + +
[in]pxTimerPointer to the IP timer.
[in]xTimeTime to be reloaded into the IP timer.
+
+
+ +
+
+ +

◆ xCalculateSleepTime()

+ +
+
+ + + + + + + + +
TickType_t xCalculateSleepTime (void )
+
+ +

Calculate the maximum sleep time remaining. It will go through all timers to see which timer will expire first. That will be the amount of time to block in the next call to xQueueReceive().

+
Returns
The maximum sleep time or ipconfigMAX_IP_TASK_SLEEP_TIME, whichever is smaller.
+ +
+
+ +

◆ vTCPTimerReload()

+ +
+
+ + + + + + + + +
void vTCPTimerReload (TickType_t xTime)
+
+ +

Sets the reload time of the TCP timer and restarts it.

+
Parameters
+ + +
[in]xTimeTime to be reloaded into the TCP timer.
+
+
+ +
+
+ +

◆ vDNSTimerReload()

+ +
+
+ + + + + + + + +
void vDNSTimerReload (uint32_t ulCheckTime)
+
+ +

Reload the DNS timer.

+
Parameters
+ + +
[in]ulCheckTimeThe reload value.
+
+
+ +
+
+ +

◆ vDHCP_RATimerReload()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void vDHCP_RATimerReload (NetworkEndPoint_t * pxEndPoint,
TickType_t uxClockTicks 
)
+
+ +

Set the reload time of the DHCP/DHCPv6/RA timer.

+
Parameters
+ + + +
[in]pxEndPointThe end-point that needs to acquire an IP-address.
[in]uxClockTicksThe number of clock-ticks after which the timer should expire.
+
+
+ +
+
+ +

◆ vNetworkTimerReload()

+ +
+
+ + + + + + + + +
void vNetworkTimerReload (TickType_t xTime)
+
+ +

Reload the Network timer.

+
Parameters
+ + +
[in]xTimeTime to be reloaded into the Network timer.
+
+
+ +
+
+ +

◆ vIPSetTCPTimerExpiredState()

+ +
+
+ + + + + + + + +
void vIPSetTCPTimerExpiredState (BaseType_t xExpiredState)
+
+ +

Enable/disable the TCP timer.

+
Parameters
+ + +
[in]xExpiredStatepdTRUE - set as expired; pdFALSE - set as non-expired.
+
+
+ +
+
+ +

◆ vIPSetDHCP_RATimerEnableState()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void vIPSetDHCP_RATimerEnableState (NetworkEndPoint_t * pxEndPoint,
BaseType_t xEnableState 
)
+
+ +

Enable or disable the DHCP/DHCPv6/RA timer.

+
Parameters
+ + + +
[in]pxEndPointThe end-point that needs to acquire an IP-address.
[in]xEnableStatepdTRUE if the timer must be enabled, pdFALSE otherwise.
+
+
+ +
+
+ +

◆ vIPSetDNSTimerEnableState()

+ +
+
+ + + + + + + + +
void vIPSetDNSTimerEnableState (BaseType_t xEnableState)
+
+ +

Enable/disable the DNS timer.

+
Parameters
+ + +
[in]xEnableStatepdTRUE - enable timer; pdFALSE - disable timer.
+
+
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___i_p___utils_8c.html b/V4.3.1/_free_r_t_o_s___i_p___utils_8c.html new file mode 100644 index 000000000..f2f7de887 --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___i_p___utils_8c.html @@ -0,0 +1,1426 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_IP_Utils.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_IP_Utils.c File Reference
+
+
+ +

Implements the basic functionality for the FreeRTOS+TCP network stack. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "queue.h"
+#include "semphr.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_IP_Utils.h"
+#include "FreeRTOS_IP_Timers.h"
+#include "FreeRTOS_Sockets.h"
+#include "FreeRTOS_IP_Private.h"
+#include "FreeRTOS_ARP.h"
+#include "FreeRTOS_ND.h"
+#include "FreeRTOS_UDP_IP.h"
+#include "FreeRTOS_DHCP.h"
+#include "NetworkInterface.h"
+#include "NetworkBufferManagement.h"
+#include "FreeRTOS_DNS.h"
+#include "FreeRTOS_Routing.h"
+
+ + + + + + + + +

+Data Structures

union  xUnion32_t
 
union  xUnionPtr_t
 
union  uIntPtr
 uintptr_t is an unsigned integer type that is capable of storing a data pointer. Therefore it is safe to convert from a void pointer to a uintptr_t, using a union. More...
 
+ + + + + + + + + + + + + + + + + + + + + +

+Macros

#define ipEXPECTED_EthernetHeader_t_SIZE   ( ( size_t ) 14 )
 
#define ipEXPECTED_ARPHeader_t_SIZE   ( ( size_t ) 28 )
 
#define ipEXPECTED_IPHeader_t_SIZE   ( ( size_t ) 20 )
 
#define ipEXPECTED_IGMPHeader_t_SIZE   ( ( size_t ) 8 )
 
#define ipEXPECTED_ICMPHeader_t_SIZE   ( ( size_t ) 8 )
 
#define ipEXPECTED_UDPHeader_t_SIZE   ( ( size_t ) 8 )
 
#define ipEXPECTED_TCPHeader_t_SIZE   ( ( size_t ) 20 )
 
+#define ipINITIALISATION_RETRY_DELAY   ( pdMS_TO_TICKS( 3000U ) )
 Time delay between repeated attempts to initialise the network hardware.
 
+#define FREERTOS_MINIMUM_TCP_OFFSET   ( 5U )
 The minimum value of TCP offset value.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

static NetworkBufferDescriptor_t * prvPacketBuffer_to_NetworkBuffer (const void *pvBuffer, size_t uxOffset)
 Get the network buffer descriptor from the packet buffer.
 
static uintptr_t void_ptr_to_uintptr (const void *pvPointer)
 Helper function: cast a pointer to a numeric value 'uintptr_t', using a union as defined here above.
 
static BaseType_t prvChecksumProtocolChecks (size_t uxBufferLength, struct xPacketSummary *pxSet)
 Get and check the specific lengths depending on the protocol ( TCP/UDP/ICMP/IGMP ).
 
static BaseType_t prvChecksumProtocolMTUCheck (struct xPacketSummary *pxSet)
 See if the packet doesn't get bigger than the value of MTU.
 
static void prvChecksumProtocolCalculate (BaseType_t xOutgoingPacket, const uint8_t *pucEthernetBuffer, struct xPacketSummary *pxSet)
 Do the actual checksum calculations, both the pseudo header, and the payload.
 
static void prvChecksumProtocolSetChecksum (BaseType_t xOutgoingPacket, const uint8_t *pucEthernetBuffer, size_t uxBufferLength, const struct xPacketSummary *pxSet)
 For outgoing packets, set the checksum in the packet, for incoming packets: show logging in case an error occurred.
 
static void prvSetChecksumInPacket (const struct xPacketSummary *pxSet, uint16_t usChecksum)
 Set checksum in the packet.
 
static uint16_t prvGetChecksumFromPacket (const struct xPacketSummary *pxSet)
 Get checksum from the packet summary.
 
BaseType_t xSendDHCPEvent (struct xNetworkEndPoint *pxEndPoint)
 Create a DHCP event.
 
NetworkBufferDescriptor_t * pxDuplicateNetworkBufferWithDescriptor (const NetworkBufferDescriptor_t *const pxNetworkBuffer, size_t uxNewLength)
 Duplicate the given network buffer descriptor with a modified length.
 
NetworkBufferDescriptor_t * pxUDPPayloadBuffer_to_NetworkBuffer (const void *pvBuffer)
 Get the network buffer from the UDP Payload buffer.
 
BaseType_t xIsCallingFromIPTask (void)
 Function to check whether the current context belongs to the IP-task.
 
void prvProcessNetworkDownEvent (struct xNetworkInterface *pxInterface)
 Process a 'Network down' event and complete required processing.
 
+void vPreCheckConfigs (void)
 Check the values of configuration options and assert on it. Also verify that the IP-task has not already been initialized.
 
uint16_t usGenerateProtocolChecksum (uint8_t *pucEthernetBuffer, size_t uxBufferLength, BaseType_t xOutgoingPacket)
 Generate or check the protocol checksum of the data sent in the first parameter. At the same time, the length of the packet and the length of the different layers will be checked.
 
uint16_t usGenerateChecksum (uint16_t usSum, const uint8_t *pucNextData, size_t uxByteCount)
 Calculates the 16-bit checksum of an array of bytes.
 
int32_t FreeRTOS_max_int32 (int32_t a, int32_t b)
 Get the highest value of two int32's.
 
uint32_t FreeRTOS_max_uint32 (uint32_t a, uint32_t b)
 Get the highest value of two uint32_t's.
 
size_t FreeRTOS_max_size_t (size_t a, size_t b)
 Get the highest value of two size_t's.
 
int32_t FreeRTOS_min_int32 (int32_t a, int32_t b)
 Get the lowest value of two int32_t's.
 
uint32_t FreeRTOS_min_uint32 (uint32_t a, uint32_t b)
 Get the lowest value of two uint32_t's.
 
size_t FreeRTOS_min_size_t (size_t a, size_t b)
 Get the lowest value of two size_t's.
 
int32_t FreeRTOS_add_int32 (int32_t a, int32_t b)
 Performs a safe addition of two 32-bit integers, preventing overflow and underflow.
 
int32_t FreeRTOS_multiply_int32 (int32_t a, int32_t b)
 Performs a safe multiplication of two 32-bit integers, preventing overflow and underflow.
 
uint32_t FreeRTOS_round_up (uint32_t a, uint32_t d)
 Round-up a number to a multiple of 'd'.
 
uint32_t FreeRTOS_round_down (uint32_t a, uint32_t d)
 Round-down a number to a multiple of 'd'.
 
uint32_t ulChar2u32 (const uint8_t *pucPtr)
 Convert character array (of size 4) to equivalent 32-bit value.
 
uint16_t usChar2u16 (const uint8_t *pucPtr)
 Convert character array (of size 2) to equivalent 16-bit value.
 
eDHCPState_t eGetDHCPState (const struct xNetworkEndPoint *pxEndPoint)
 Returns the current state of a DHCP process.
 
+

Detailed Description

+

Implements the basic functionality for the FreeRTOS+TCP network stack.

+

Macro Definition Documentation

+ +

◆ ipEXPECTED_EthernetHeader_t_SIZE

+ +
+
+ + + + +
#define ipEXPECTED_EthernetHeader_t_SIZE   ( ( size_t ) 14 )
+
+

Ethernet Header size in bytes.

+ +
+
+ +

◆ ipEXPECTED_ARPHeader_t_SIZE

+ +
+
+ + + + +
#define ipEXPECTED_ARPHeader_t_SIZE   ( ( size_t ) 28 )
+
+

ARP header size in bytes.

+ +
+
+ +

◆ ipEXPECTED_IPHeader_t_SIZE

+ +
+
+ + + + +
#define ipEXPECTED_IPHeader_t_SIZE   ( ( size_t ) 20 )
+
+

IP header size in bytes.

+ +
+
+ +

◆ ipEXPECTED_IGMPHeader_t_SIZE

+ +
+
+ + + + +
#define ipEXPECTED_IGMPHeader_t_SIZE   ( ( size_t ) 8 )
+
+

IGMP header size in bytes.

+ +
+
+ +

◆ ipEXPECTED_ICMPHeader_t_SIZE

+ +
+
+ + + + +
#define ipEXPECTED_ICMPHeader_t_SIZE   ( ( size_t ) 8 )
+
+

ICMP header size in bytes.

+ +
+
+ +

◆ ipEXPECTED_UDPHeader_t_SIZE

+ +
+
+ + + + +
#define ipEXPECTED_UDPHeader_t_SIZE   ( ( size_t ) 8 )
+
+

UDP header size in bytes.

+ +
+
+ +

◆ ipEXPECTED_TCPHeader_t_SIZE

+ +
+
+ + + + +
#define ipEXPECTED_TCPHeader_t_SIZE   ( ( size_t ) 20 )
+
+

TCP header size in bytes.

+ +
+
+

Function Documentation

+ +

◆ prvPacketBuffer_to_NetworkBuffer()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static NetworkBufferDescriptor_t * prvPacketBuffer_to_NetworkBuffer (const void * pvBuffer,
size_t uxOffset 
)
+
+static
+
+ +

Get the network buffer descriptor from the packet buffer.

+
Parameters
+ + + +
[in]pvBufferThe pointer to packet buffer.
[in]uxOffsetAdditional offset (such as the packet length of UDP packet etc.).
+
+
+
Returns
The network buffer descriptor if the alignment is correct. Else a NULL is returned.
+ +
+
+ +

◆ void_ptr_to_uintptr()

+ +
+
+ + + + + +
+ + + + + + + + +
static uintptr_t void_ptr_to_uintptr (const void * pvPointer)
+
+static
+
+ +

Helper function: cast a pointer to a numeric value 'uintptr_t', using a union as defined here above.

+
Parameters
+ + +
[in]pvPointerA void pointer to be converted.
+
+
+
Returns
The value of the void pointer as an unsigned number.
+ +
+
+ +

◆ prvChecksumProtocolChecks()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static BaseType_t prvChecksumProtocolChecks (size_t uxBufferLength,
struct xPacketSummary * pxSet 
)
+
+static
+
+ +

Get and check the specific lengths depending on the protocol ( TCP/UDP/ICMP/IGMP ).

+
Parameters
+ + + +
[in]uxBufferLengthThe number of bytes to be sent or received.
[in]pxSetA struct describing this packet.
+
+
+
Returns
Non-zero in case of an error.
+ +
+
+ +

◆ prvChecksumProtocolMTUCheck()

+ +
+
+ + + + + +
+ + + + + + + + +
static BaseType_t prvChecksumProtocolMTUCheck (struct xPacketSummary * pxSet)
+
+static
+
+ +

See if the packet doesn't get bigger than the value of MTU.

+
Parameters
+ + +
[in]pxSetA struct describing this packet.
+
+
+
Returns
Non-zero in case of an error.
+ +
+
+ +

◆ prvChecksumProtocolCalculate()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void prvChecksumProtocolCalculate (BaseType_t xOutgoingPacket,
const uint8_t * pucEthernetBuffer,
struct xPacketSummary * pxSet 
)
+
+static
+
+ +

Do the actual checksum calculations, both the pseudo header, and the payload.

+
Parameters
+ + + + +
[in]xOutgoingPacketpdTRUE when the packet is to be sent.
[in]pucEthernetBufferThe buffer containing the packet.
[in]pxSetA struct describing this packet.
+
+
+ +
+
+ +

◆ prvChecksumProtocolSetChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void prvChecksumProtocolSetChecksum (BaseType_t xOutgoingPacket,
const uint8_t * pucEthernetBuffer,
size_t uxBufferLength,
const struct xPacketSummary * pxSet 
)
+
+static
+
+ +

For outgoing packets, set the checksum in the packet, for incoming packets: show logging in case an error occurred.

+
Parameters
+ + + + + +
[in]xOutgoingPacketNon-zero if this is an outgoing packet.
[in]pucEthernetBufferThe buffer containing the packet.
[in]uxBufferLengththe total number of bytes received, or the number of bytes written
[in]pxSetA struct describing this packet.
+
+
+ +
+
+ +

◆ prvSetChecksumInPacket()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void prvSetChecksumInPacket (const struct xPacketSummary * pxSet,
uint16_t usChecksum 
)
+
+static
+
+ +

Set checksum in the packet.

+
Parameters
+ + + +
pxSetPointer to the packet summary that describes the packet, to which the checksum will be set.
usChecksumChecksum value to be set.
+
+
+ +
+
+ +

◆ prvGetChecksumFromPacket()

+ +
+
+ + + + + +
+ + + + + + + + +
static uint16_t prvGetChecksumFromPacket (const struct xPacketSummary * pxSet)
+
+static
+
+ +

Get checksum from the packet summary.

+
Parameters
+ + +
pxSetPointer to the packet summary that describes the packet, from which the checksum will be retrieved.
+
+
+
Returns
Checksum value that is retrieved from pxSet.
+ +
+
+ +

◆ xSendDHCPEvent()

+ +
+
+ + + + + + + + +
BaseType_t xSendDHCPEvent (struct xNetworkEndPoint * pxEndPoint)
+
+ +

Create a DHCP event.

+
Returns
pdPASS or pdFAIL, depending on whether xSendEventStructToIPTask() succeeded.
+
Parameters
+ + +
pxEndPointThe end-point that needs DHCP.
+
+
+ +
+
+ +

◆ pxDuplicateNetworkBufferWithDescriptor()

+ +
+
+ + + + + + + + + + + + + + + + + + +
NetworkBufferDescriptor_t * pxDuplicateNetworkBufferWithDescriptor (const NetworkBufferDescriptor_t *const pxNetworkBuffer,
size_t uxNewLength 
)
+
+ +

Duplicate the given network buffer descriptor with a modified length.

+
Parameters
+ + + +
[in]pxNetworkBufferThe network buffer to be duplicated.
[in]uxNewLengthThe length for the new buffer.
+
+
+
Returns
If properly duplicated, then the duplicate network buffer or else, NULL.
+ +
+
+ +

◆ pxUDPPayloadBuffer_to_NetworkBuffer()

+ +
+
+ + + + + + + + +
NetworkBufferDescriptor_t * pxUDPPayloadBuffer_to_NetworkBuffer (const void * pvBuffer)
+
+ +

Get the network buffer from the UDP Payload buffer.

+
Parameters
+ + +
[in]pvBufferPointer to the UDP payload buffer.
+
+
+
Returns
The network buffer if the alignment is correct. Else a NULL is returned.
+ +
+
+ +

◆ xIsCallingFromIPTask()

+ +
+
+ + + + + + + + +
BaseType_t xIsCallingFromIPTask (void )
+
+ +

Function to check whether the current context belongs to the IP-task.

+
Returns
If the current context belongs to the IP-task, then pdTRUE is returned. Else pdFALSE is returned.
+
Note
Very important: the IP-task is not allowed to call its own API's, because it would easily get into a dead-lock.
+ +
+
+ +

◆ prvProcessNetworkDownEvent()

+ +
+
+ + + + + + + + +
void prvProcessNetworkDownEvent (struct xNetworkInterface * pxInterface)
+
+ +

Process a 'Network down' event and complete required processing.

+
Parameters
+ + +
pxInterfaceThe interface that goes down.
+
+
+ +
+
+ +

◆ usGenerateProtocolChecksum()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint16_t usGenerateProtocolChecksum (uint8_t * pucEthernetBuffer,
size_t uxBufferLength,
BaseType_t xOutgoingPacket 
)
+
+ +

Generate or check the protocol checksum of the data sent in the first parameter. At the same time, the length of the packet and the length of the different layers will be checked.

+
Parameters
+ + + + +
[in]pucEthernetBufferThe Ethernet buffer for which the checksum is to be calculated or checked. 'pucEthernetBuffer' is now non-const because the function will set the checksum fields, in case 'xOutgoingPacket' is pdTRUE.
[in]uxBufferLengththe total number of bytes received, or the number of bytes written in the packet buffer.
[in]xOutgoingPacketWhether this is an outgoing packet or not.
+
+
+
Returns
When xOutgoingPacket is false: the error code can be either: ipINVALID_LENGTH, ipUNHANDLED_PROTOCOL, ipWRONG_CRC, or ipCORRECT_CRC. When xOutgoingPacket is true: either ipINVALID_LENGTH, ipUNHANDLED_PROTOCOL, or ipCORRECT_CRC.
+ +
+
+ +

◆ usGenerateChecksum()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint16_t usGenerateChecksum (uint16_t usSum,
const uint8_t * pucNextData,
size_t uxByteCount 
)
+
+ +

Calculates the 16-bit checksum of an array of bytes.

+

This method generates a checksum for a given IPv4 header, per RFC791 (page 14). The checksum algorithm is described as: "[T]he 16 bit one's complement of the one's complement sum of all 16 bit words in the + header. For purposes of computing the checksum, the value of the checksum field is zero."

+

In a nutshell, that means that each 16-bit 'word' must be summed, after which the number of 'carries' (overflows) is added to the result. If that addition produces an overflow, that 'carry' must also be added to the final result. The final checksum should be the bitwise 'not' (ones-complement) of the result if the packet is meant to be transmitted, but this method simply returns the raw value, probably because when a packet is received, the checksum is verified by checking that ((received & calculated) == 0) without applying a bitwise 'not' to the 'calculated' checksum.

+

This logic is optimized for microcontrollers which have limited resources, so the logic looks odd. It iterates over the full range of 16-bit words, but it does so by processing several 32-bit words at once whenever possible. Its first step is to align the memory pointer to a 32-bit boundary, after which it runs a fast loop to process multiple 32-bit words at once and adding their 'carries'. Finally, it finishes up by processing any remaining 16-bit words, and adding up all of the 'carries'. With 32-bit arithmetic, the number of 16-bit 'carries' produced by sequential additions can be found by looking at the 16 most-significant bits of the 32-bit integer, since a 32-bit int will continue counting up instead of overflowing after 16 bits. That is why the actual checksum calculations look like: union.u32 = ( uint32_t ) union.u16[ 0 ] + union.u16[ 1 ];

+

Arguments: ulSum: This argument provides a value to initialise the progressive summation of the header's values to. It is often 0, but protocols like TCP or UDP can have pseudo-header fields which need to be included in the checksum. pucNextData: This argument contains the address of the first byte which this method should process. The method's memory iterator is initialised to this value. uxDataLengthBytes: This argument contains the number of bytes that this method should process.

+
Parameters
+ + + + +
[in]usSumThe initial sum, obtained from earlier data.
[in]pucNextDataThe actual data.
[in]uxByteCountThe number of bytes.
+
+
+
Returns
The 16-bit one's complement of the one's complement sum of all 16-bit words in the header
+ +
+
+ +

◆ FreeRTOS_max_int32()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int32_t FreeRTOS_max_int32 (int32_t a,
int32_t b 
)
+
+ +

Get the highest value of two int32's.

+
Parameters
+ + + +
[in]athe first value.
[in]bthe second value.
+
+
+
Returns
The highest of the two values.
+ +
+
+ +

◆ FreeRTOS_max_uint32()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint32_t FreeRTOS_max_uint32 (uint32_t a,
uint32_t b 
)
+
+ +

Get the highest value of two uint32_t's.

+
Parameters
+ + + +
[in]athe first value.
[in]bthe second value.
+
+
+
Returns
The highest of the two values.
+ +
+
+ +

◆ FreeRTOS_max_size_t()

+ +
+
+ + + + + + + + + + + + + + + + + + +
size_t FreeRTOS_max_size_t (size_t a,
size_t b 
)
+
+ +

Get the highest value of two size_t's.

+
Parameters
+ + + +
[in]athe first value.
[in]bthe second value.
+
+
+
Returns
The highest of the two values.
+ +
+
+ +

◆ FreeRTOS_min_int32()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int32_t FreeRTOS_min_int32 (int32_t a,
int32_t b 
)
+
+ +

Get the lowest value of two int32_t's.

+
Parameters
+ + + +
[in]athe first value.
[in]bthe second value.
+
+
+
Returns
The lowest of the two values.
+ +
+
+ +

◆ FreeRTOS_min_uint32()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint32_t FreeRTOS_min_uint32 (uint32_t a,
uint32_t b 
)
+
+ +

Get the lowest value of two uint32_t's.

+
Parameters
+ + + +
[in]athe first value.
[in]bthe second value.
+
+
+
Returns
The lowest of the two values.
+ +
+
+ +

◆ FreeRTOS_min_size_t()

+ +
+
+ + + + + + + + + + + + + + + + + + +
size_t FreeRTOS_min_size_t (size_t a,
size_t b 
)
+
+ +

Get the lowest value of two size_t's.

+
Parameters
+ + + +
[in]athe first value.
[in]bthe second value.
+
+
+
Returns
The lowest of the two values.
+ +
+
+ +

◆ FreeRTOS_add_int32()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int32_t FreeRTOS_add_int32 (int32_t a,
int32_t b 
)
+
+ +

Performs a safe addition of two 32-bit integers, preventing overflow and underflow.

+
Parameters
+ + + +
[in]athe first value.
[in]bthe second value.
+
+
+
Returns
The result of a + b if no overflow/underflow occurs, or INT32_MAX/INT32_MIN if overflow/underflow would occur.
+ +
+
+ +

◆ FreeRTOS_multiply_int32()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int32_t FreeRTOS_multiply_int32 (int32_t a,
int32_t b 
)
+
+ +

Performs a safe multiplication of two 32-bit integers, preventing overflow and underflow.

+
Parameters
+ + + +
[in]athe first value.
[in]bthe second value.
+
+
+
Returns
The result of a * b if no overflow occurs, or ipINT32_MAX_VALUE if an overflow would occur.
+ +
+
+ +

◆ FreeRTOS_round_up()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint32_t FreeRTOS_round_up (uint32_t a,
uint32_t d 
)
+
+ +

Round-up a number to a multiple of 'd'.

+
Parameters
+ + + +
[in]athe first value.
[in]dthe second value.
+
+
+
Returns
A multiple of d.
+ +
+
+ +

◆ FreeRTOS_round_down()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint32_t FreeRTOS_round_down (uint32_t a,
uint32_t d 
)
+
+ +

Round-down a number to a multiple of 'd'.

+
Parameters
+ + + +
[in]athe first value.
[in]dthe second value.
+
+
+
Returns
A multiple of d.
+ +
+
+ +

◆ ulChar2u32()

+ +
+
+ + + + + + + + +
uint32_t ulChar2u32 (const uint8_t * pucPtr)
+
+ +

Convert character array (of size 4) to equivalent 32-bit value.

+
Parameters
+ + +
[in]pucPtrThe character array.
+
+
+
Returns
32-bit equivalent value extracted from the character array.
+
Note
Going by MISRA rules, these utility functions should not be defined if they are not being used anywhere. But their use depends on the application and hence these functions are defined unconditionally.
+ +
+
+ +

◆ usChar2u16()

+ +
+
+ + + + + + + + +
uint16_t usChar2u16 (const uint8_t * pucPtr)
+
+ +

Convert character array (of size 2) to equivalent 16-bit value.

+
Parameters
+ + +
[in]pucPtrThe character array.
+
+
+
Returns
16-bit equivalent value extracted from the character array.
+
Note
Going by MISRA rules, these utility functions should not be defined if they are not being used anywhere. But their use depends on the application and hence these functions are defined unconditionally.
+ +
+
+ +

◆ eGetDHCPState()

+ +
+
+ + + + + + + + +
eDHCPState_t eGetDHCPState (const struct xNetworkEndPoint * pxEndPoint)
+
+ +

Returns the current state of a DHCP process.

+
Parameters
+ + +
[in]pxEndPointthe end-point which is going through the DHCP process.
+
+
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___i_pv4_8c.html b/V4.3.1/_free_r_t_o_s___i_pv4_8c.html new file mode 100644 index 000000000..572f244cc --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___i_pv4_8c.html @@ -0,0 +1,338 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_IPv4.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_IPv4.c File Reference
+
+
+ +

Implements the basic functionality for the FreeRTOS+TCP network stack. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+#include "FreeRTOS.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_IPv4.h"
+
+ + + + + +

+Macros

#define ipFIRST_MULTI_CAST_IPv4   0xE0000000U
 
#define ipLAST_MULTI_CAST_IPv4   0xF0000000U
 
+ + + + + + + + + + + + + + + + +

+Functions

BaseType_t xIsIPv4Multicast (uint32_t ulIPAddress)
 Is the IP address an IPv4 multicast address.
 
BaseType_t xBadIPv4Loopback (const IPHeader_t *const pxIPHeader)
 Check if the packet is an illegal loopback packet.
 
BaseType_t xIsIPv4Loopback (uint32_t ulAddress)
 Is the IP address an IPv4 loopback address.
 
enum eFrameProcessingResult prvAllowIPPacketIPv4 (const struct xIP_PACKET *const pxIPPacket, const struct xNETWORK_BUFFER *const pxNetworkBuffer, UBaseType_t uxHeaderLength)
 Check whether this IPv4 packet is to be allowed or to be dropped.
 
enum eFrameProcessingResult prvCheckIP4HeaderOptions (struct xNETWORK_BUFFER *const pxNetworkBuffer)
 Check if the IP-header is carrying options.
 
+

Detailed Description

+

Implements the basic functionality for the FreeRTOS+TCP network stack.

+

Macro Definition Documentation

+ +

◆ ipFIRST_MULTI_CAST_IPv4

+ +
+
+ + + + +
#define ipFIRST_MULTI_CAST_IPv4   0xE0000000U
+
+

Lower bound of the IPv4 multicast address.

+ +
+
+ +

◆ ipLAST_MULTI_CAST_IPv4

+ +
+
+ + + + +
#define ipLAST_MULTI_CAST_IPv4   0xF0000000U
+
+

Higher bound of the IPv4 multicast address.

+ +
+
+

Function Documentation

+ +

◆ xIsIPv4Multicast()

+ +
+
+ + + + + + + + +
BaseType_t xIsIPv4Multicast (uint32_t ulIPAddress)
+
+ +

Is the IP address an IPv4 multicast address.

+
Parameters
+ + +
[in]ulIPAddressThe IP address being checked.
+
+
+
Returns
pdTRUE if the IP address is a multicast address or else, pdFALSE.
+ +
+
+ +

◆ xBadIPv4Loopback()

+ +
+
+ + + + + + + + +
BaseType_t xBadIPv4Loopback (const IPHeader_t *const pxIPHeader)
+
+ +

Check if the packet is an illegal loopback packet.

+
Parameters
+ + +
[in]pxIPHeaderThe IP-header being checked.
+
+
+
Returns
Returns pdTRUE if the packet should be stopped, because either the source or the target address is a loopback address.
+ +
+
+ +

◆ xIsIPv4Loopback()

+ +
+
+ + + + + + + + +
BaseType_t xIsIPv4Loopback (uint32_t ulAddress)
+
+ +

Is the IP address an IPv4 loopback address.

+
Parameters
+ + +
[in]ulAddressThe IP address being checked.
+
+
+
Returns
pdTRUE if the IP address is a loopback address or else, pdFALSE.
+ +
+
+ +

◆ prvAllowIPPacketIPv4()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
enum eFrameProcessingResult prvAllowIPPacketIPv4 (const struct xIP_PACKET *const pxIPPacket,
const struct xNETWORK_BUFFER *const pxNetworkBuffer,
UBaseType_t uxHeaderLength 
)
+
+ +

Check whether this IPv4 packet is to be allowed or to be dropped.

+
Parameters
+ + + + +
[in]pxIPPacketThe IP packet under consideration.
[in]pxNetworkBufferThe whole network buffer.
[in]uxHeaderLengthThe length of the header.
+
+
+
Returns
Whether the packet should be processed or dropped.
+ +
+
+ +

◆ prvCheckIP4HeaderOptions()

+ +
+
+ + + + + + + + +
enum eFrameProcessingResult prvCheckIP4HeaderOptions (struct xNETWORK_BUFFER *const pxNetworkBuffer)
+
+ +

Check if the IP-header is carrying options.

+
Parameters
+ + +
[in]pxNetworkBufferthe network buffer that contains the packet.
+
+
+
Returns
Either 'eProcessBuffer' or 'eReleaseBuffer'
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___i_pv4___sockets_8c.html b/V4.3.1/_free_r_t_o_s___i_pv4___sockets_8c.html new file mode 100644 index 000000000..2313e29cf --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___i_pv4___sockets_8c.html @@ -0,0 +1,313 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_IPv4_Sockets.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_IPv4_Sockets.c File Reference
+
+
+ +

Implements the Sockets API based on Berkeley sockets for the FreeRTOS+TCP network stack. Sockets are used by the application processes to interact with the IP-task which in turn interacts with the hardware. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "queue.h"
+#include "semphr.h"
+#include "FreeRTOS_UDP_IP.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_IPv4_Sockets.h"
+
+ + + + +

+Macros

+#define socketMAX_IP_ADDRESS_OCTETS   ( 4U )
 The number of octets that make up an IP address.
 
+ + + + + + + + + + + + + +

+Functions

BaseType_t FreeRTOS_inet_pton4 (const char *pcSource, void *pvDestination)
 This function converts the character string pcSource into a network address structure, then copies the network address structure to pvDestination. pvDestination is written in network byte order.
 
const char * FreeRTOS_inet_ntop4 (const void *pvSource, char *pcDestination, socklen_t uxSize)
 Convert the 32-bit representation of the IP-address to the dotted decimal format.
 
void * xSend_UDP_Update_IPv4 (NetworkBufferDescriptor_t *pxNetworkBuffer, const struct freertos_sockaddr *pxDestinationAddress)
 Called by prvSendUDPPacket(), this function will UDP packet fields and IPv4 address for the packet to be send.
 
size_t xRecv_Update_IPv4 (const NetworkBufferDescriptor_t *pxNetworkBuffer, struct freertos_sockaddr *pxSourceAddress)
 Called by FreeRTOS_recvfrom(), this function will update socket address with IPv4 address from the packet received.
 
+

Detailed Description

+

Implements the Sockets API based on Berkeley sockets for the FreeRTOS+TCP network stack. Sockets are used by the application processes to interact with the IP-task which in turn interacts with the hardware.

+

Function Documentation

+ +

◆ FreeRTOS_inet_pton4()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BaseType_t FreeRTOS_inet_pton4 (const char * pcSource,
void * pvDestination 
)
+
+ +

This function converts the character string pcSource into a network address structure, then copies the network address structure to pvDestination. pvDestination is written in network byte order.

+
Parameters
+ + + +
[in]pcSourceThe character string in holding the IP address.
[out]pvDestinationThe returned network address in 32-bit network-endian format.
+
+
+
Returns
pdPASS if the translation was successful or else pdFAIL.
+ +
+
+ +

◆ FreeRTOS_inet_ntop4()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
const char * FreeRTOS_inet_ntop4 (const void * pvSource,
char * pcDestination,
socklen_t uxSize 
)
+
+ +

Convert the 32-bit representation of the IP-address to the dotted decimal format.

+
Parameters
+ + + + +
[in]pvSourceThe pointer to the 32-bit representation of the IP-address.
[out]pcDestinationThe pointer to a character array where the string of the dotted decimal IP format.
[in]uxSizeSize of the character array. This value makes sure that the code doesn't write beyond it's bounds.
+
+
+
Returns
The pointer to the string holding the dotted decimal format of the IP-address. If everything passes correctly, then the pointer being returned is the same as pcDestination, else a NULL is returned.
+ +
+
+ +

◆ xSend_UDP_Update_IPv4()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void * xSend_UDP_Update_IPv4 (NetworkBufferDescriptor_t * pxNetworkBuffer,
const struct freertos_sockaddr * pxDestinationAddress 
)
+
+ +

Called by prvSendUDPPacket(), this function will UDP packet fields and IPv4 address for the packet to be send.

+
Parameters
+ + + +
[in]pxNetworkBufferThe packet to be sent.
[in]pxDestinationAddressThe IPv4 socket address.
+
+
+
Returns
Returns NULL, always.
+ +
+
+ +

◆ xRecv_Update_IPv4()

+ +
+
+ + + + + + + + + + + + + + + + + + +
size_t xRecv_Update_IPv4 (const NetworkBufferDescriptor_t * pxNetworkBuffer,
struct freertos_sockaddr * pxSourceAddress 
)
+
+ +

Called by FreeRTOS_recvfrom(), this function will update socket address with IPv4 address from the packet received.

+
Parameters
+ + + +
[in]pxNetworkBufferThe packet received.
[in]pxSourceAddressThe IPv4 socket address.
+
+
+
Returns
The Payload Offset.
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___i_pv4___utils_8c.html b/V4.3.1/_free_r_t_o_s___i_pv4___utils_8c.html new file mode 100644 index 000000000..cc3ac852f --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___i_pv4___utils_8c.html @@ -0,0 +1,217 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_IPv4_Utils.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_IPv4_Utils.c File Reference
+
+
+ +

Implements the basic functionality for the FreeRTOS+TCP network stack functions for IPv4. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include "FreeRTOS.h"
+#include "FreeRTOS_IP.h"
+
+ + + + + + + +

+Functions

void vSetMultiCastIPv4MacAddress (uint32_t ulIPAddress, MACAddress_t *pxMACAddress)
 Set multicast MAC address.
 
BaseType_t prvChecksumIPv4Checks (uint8_t *pucEthernetBuffer, size_t uxBufferLength, struct xPacketSummary *pxSet)
 Do the first IPv4 length checks at the IP-header level.
 
+

Detailed Description

+

Implements the basic functionality for the FreeRTOS+TCP network stack functions for IPv4.

+

Function Documentation

+ +

◆ vSetMultiCastIPv4MacAddress()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void vSetMultiCastIPv4MacAddress (uint32_t ulIPAddress,
MACAddress_t * pxMACAddress 
)
+
+ +

Set multicast MAC address.

+
Parameters
+ + + +
[in]ulIPAddressIP address.
[out]pxMACAddressPointer to MAC address.
+
+
+ +
+
+ +

◆ prvChecksumIPv4Checks()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t prvChecksumIPv4Checks (uint8_t * pucEthernetBuffer,
size_t uxBufferLength,
struct xPacketSummary * pxSet 
)
+
+ +

Do the first IPv4 length checks at the IP-header level.

+
Parameters
+ + + + +
[in]pucEthernetBufferThe buffer containing the packet.
[in]uxBufferLengthThe number of bytes to be sent or received.
[in]pxSetA struct describing this packet.
+
+
+
Returns
Non-zero in case of an error.
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___i_pv6_8c.html b/V4.3.1/_free_r_t_o_s___i_pv6_8c.html new file mode 100644 index 000000000..b774db2e8 --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___i_pv6_8c.html @@ -0,0 +1,501 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_IPv6.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_IPv6.c File Reference
+
+
+ +

Implements the basic functionality for the FreeRTOS+TCP network stack. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+#include "FreeRTOS.h"
+#include "FreeRTOS_IP.h"
+
+ + + + + + + + + + +

+Macros

+#define IPv6MC_GET_SCOPE_VALUE(pxIPv6Address)   ( ( ( pxIPv6Address )->ucBytes[ 1 ] ) & 0x0FU )
 Get the scope field in IPv6 multicast address.
 
+#define IPv6MC_GET_FLAGS_VALUE(pxIPv6Address)   ( ( ( pxIPv6Address )->ucBytes[ 1 ] ) & 0xF0U )
 Get the flags field in IPv6 multicast address.
 
+#define IPv6MC_GET_GROUP_ID(pxIPv6Address, pxReturnGroupID)   ( xGetIPv6MulticastGroupID( pxIPv6Address, pxReturnGroupID ) )
 Get the group ID field in IPv6 multicast address.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

static void xGetIPv6MulticastGroupID (const IPv6_Address_t *pxIPv6Address, IPv6_Address_t *pxReturnGroupID)
 Get the group ID and stored into IPv6_Address_t.
 
BaseType_t xIsIPv6Loopback (const IPv6_Address_t *pxAddress)
 Check if the IP-address is an IPv6 loopback address.
 
BaseType_t xBadIPv6Loopback (const IPHeader_IPv6_t *const pxIPv6Header)
 Check if the packet is an illegal loopback packet.
 
BaseType_t xIsIPv6AllowedMulticast (const IPv6_Address_t *pxIPAddress)
 Check whether this IPv6 address is an allowed multicast address or not.
 
BaseType_t xCompareIPv6_Address (const IPv6_Address_t *pxLeft, const IPv6_Address_t *pxRight, size_t uxPrefixLength)
 Compares 2 IPv6 addresses and checks if the one on the left can handle the one on right. Note that 'xCompareIPv6_Address' will also check if 'pxRight' is the special unicast address: ff02::1:ffnn:nnnn, where nn:nnnn are the last 3 bytes of the IPv6 address.
 
eFrameProcessingResult_t prvAllowIPPacketIPv6 (const IPHeader_IPv6_t *const pxIPv6Header, const NetworkBufferDescriptor_t *const pxNetworkBuffer, UBaseType_t uxHeaderLength)
 Check whether this IPv6 packet is to be allowed or to be dropped.
 
BaseType_t xGetExtensionOrder (uint8_t ucProtocol, uint8_t ucNextHeader)
 Check extension header and next header and return their order.
 
eFrameProcessingResult_t eHandleIPv6ExtensionHeaders (NetworkBufferDescriptor_t *const pxNetworkBuffer, BaseType_t xDoRemove)
 Handle the IPv6 extension headers.
 
+ + + + + +

+Variables

const struct xIPv6_Address FreeRTOS_in6addr_any = { 0 }
 
const struct xIPv6_Address FreeRTOS_in6addr_loopback = { { 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 1U } }
 
+

Detailed Description

+

Implements the basic functionality for the FreeRTOS+TCP network stack.

+

Function Documentation

+ +

◆ xGetIPv6MulticastGroupID()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void xGetIPv6MulticastGroupID (const IPv6_Address_t * pxIPv6Address,
IPv6_Address_t * pxReturnGroupID 
)
+
+static
+
+ +

Get the group ID and stored into IPv6_Address_t.

+
Parameters
+ + + +
[in]pxIPv6AddressThe multicast address to filter group ID.
[out]pxReturnGroupIDThe buffer to store group ID.
+
+
+ +
+
+ +

◆ xIsIPv6Loopback()

+ +
+
+ + + + + + + + +
BaseType_t xIsIPv6Loopback (const IPv6_Address_t * pxAddress)
+
+ +

Check if the IP-address is an IPv6 loopback address.

+
Parameters
+ + +
[in]pxAddressThe IP-address being checked.
+
+
+
Returns
pdTRUE if the IP-address is a loopback address or else, pdFALSE.
+ +
+
+ +

◆ xBadIPv6Loopback()

+ +
+
+ + + + + + + + +
BaseType_t xBadIPv6Loopback (const IPHeader_IPv6_t *const pxIPv6Header)
+
+ +

Check if the packet is an illegal loopback packet.

+
Parameters
+ + +
[in]pxIPv6HeaderThe IP-header of the packet.
+
+
+
Returns
Returns pdTRUE if the packet should be stopped, because either the source or the target address is a loopback address.
+ +
+
+ +

◆ xIsIPv6AllowedMulticast()

+ +
+
+ + + + + + + + +
BaseType_t xIsIPv6AllowedMulticast (const IPv6_Address_t * pxIPAddress)
+
+ +

Check whether this IPv6 address is an allowed multicast address or not.

+
Parameters
+ + +
[in]pxIPAddressThe IP address to be checked.
+
+
+
Returns
Returns pdTRUE if pxIPAddress is an allowed multicast address, pdFALSE if not.
+ +
+
+ +

◆ xCompareIPv6_Address()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t xCompareIPv6_Address (const IPv6_Address_t * pxLeft,
const IPv6_Address_t * pxRight,
size_t uxPrefixLength 
)
+
+ +

Compares 2 IPv6 addresses and checks if the one on the left can handle the one on right. Note that 'xCompareIPv6_Address' will also check if 'pxRight' is the special unicast address: ff02::1:ffnn:nnnn, where nn:nnnn are the last 3 bytes of the IPv6 address.

+
Parameters
+ + + + +
[in]pxLeftFirst IP address.
[in]pxRightSecond IP address.
[in]uxPrefixLengthThe IP address prefix length in bits.
+
+
+
Returns
Returns 0 if it can handle it, else non zero .
+ +
+
+ +

◆ prvAllowIPPacketIPv6()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
eFrameProcessingResult_t prvAllowIPPacketIPv6 (const IPHeader_IPv6_t *const pxIPv6Header,
const NetworkBufferDescriptor_t *const pxNetworkBuffer,
UBaseType_t uxHeaderLength 
)
+
+ +

Check whether this IPv6 packet is to be allowed or to be dropped.

+
Parameters
+ + + + +
[in]pxIPv6HeaderThe IP packet under consideration.
[in]pxNetworkBufferThe whole network buffer.
[in]uxHeaderLengthThe length of the header.
+
+
+
Returns
Whether the packet should be processed or dropped.
+ +
+
+ +

◆ xGetExtensionOrder()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BaseType_t xGetExtensionOrder (uint8_t ucProtocol,
uint8_t ucNextHeader 
)
+
+ +

Check extension header and next header and return their order.

+
Parameters
+ + + +
[in]ucProtocolExtension header ID.
[in]ucNextHeaderNext header ID.
+
+
+
Returns
Extension header order in the packet.
+ +
+
+ +

◆ eHandleIPv6ExtensionHeaders()

+ +
+
+ + + + + + + + + + + + + + + + + + +
eFrameProcessingResult_t eHandleIPv6ExtensionHeaders (NetworkBufferDescriptor_t *const pxNetworkBuffer,
BaseType_t xDoRemove 
)
+
+ +

Handle the IPv6 extension headers.

+
Parameters
+ + + +
[in,out]pxNetworkBufferThe received packet that contains IPv6 extension headers.
[in]xDoRemoveFunction removes the extension header if xDoRemove is set to pdTRUE.
+
+
+
Returns
eProcessBuffer in case the options are removed successfully, otherwise eReleaseBuffer.
+ +
+
+

Variable Documentation

+ +

◆ FreeRTOS_in6addr_any

+ +
+
+ + + + +
const struct xIPv6_Address FreeRTOS_in6addr_any = { 0 }
+
+

This variable is initialized by the system to contain the wildcard IPv6 address.

+ +
+
+ +

◆ FreeRTOS_in6addr_loopback

+ +
+
+ + + + +
const struct xIPv6_Address FreeRTOS_in6addr_loopback = { { 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 1U } }
+
+

This variable is initialized by the system to contain the loopback IPv6 address.

+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___i_pv6___sockets_8c.html b/V4.3.1/_free_r_t_o_s___i_pv6___sockets_8c.html new file mode 100644 index 000000000..58498ee13 --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___i_pv6___sockets_8c.html @@ -0,0 +1,656 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_IPv6_Sockets.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_IPv6_Sockets.c File Reference
+
+
+ +

Implements the Sockets API based on Berkeley sockets for the FreeRTOS+TCP network stack. Sockets are used by the application processes to interact with the IP-task which in turn interacts with the hardware. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include "FreeRTOS.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_IPv6_Sockets.h"
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

FreeRTOS_Socket_t * pxTCPSocketLookup_IPv6 (FreeRTOS_Socket_t *pxSocket, const IPv46_Address_t *pxAddress)
 Called by pxTCPSocketLookup(), this function will check if a socket is connected to a remote IP-address. It will be called from a loop iterating through all sockets.
 
void * xSend_UDP_Update_IPv6 (NetworkBufferDescriptor_t *pxNetworkBuffer, const struct freertos_sockaddr *pxDestinationAddress)
 Called by prvSendUDPPacket(), this function will UDP packet fields and IPv6 address for the packet to be send.
 
size_t xRecv_Update_IPv6 (const NetworkBufferDescriptor_t *pxNetworkBuffer, struct freertos_sockaddr *pxSourceAddress)
 Called by FreeRTOS_recvfrom(), this function will update socket address with IPv6 address from the packet received.
 
char cHexToChar (uint16_t usValue)
 Converts a 4 bit (nibble) value to a readable hex character, e.g. 14 becomes 'e'.
 
socklen_t uxHexPrintShort (char *pcBuffer, size_t uxBufferSize, uint16_t usValue)
 Convert a short numeric value to a hex string of at most 4 characters. The resulting string is not null-terminated. The resulting string will not have leading zero's, except when 'usValue' equals zero.
 
void prv_ntop6_search_zeros (struct sNTOP6_Set *pxSet)
 Scan the binary IPv6 address and find the longest train of consecutive zero's. The result of this search will be stored in 'xZeroStart' and 'xZeroLength'.
 
static BaseType_t prv_ntop6_write_zeros (char *pcDestination, size_t uxSize, struct sNTOP6_Set *pxSet)
 The location is now at the longest train of zero's. Two colons have to be printed without a numeric value, e.g. "ff02::1".
 
static BaseType_t prv_ntop6_write_short (char *pcDestination, size_t uxSize, struct sNTOP6_Set *pxSet)
 Write a short value, as a hex number with at most 4 characters. E.g. the value 15 will be printed as "f".
 
const char * FreeRTOS_inet_ntop6 (const void *pvSource, char *pcDestination, socklen_t uxSize)
 This function converts a binary IPv6 address to a human readable notation.
 
static BaseType_t prv_inet_pton6_add_nibble (struct sPTON6_Set *pxSet, uint8_t ucNew, char ch)
 Converting a readable IPv6 address to its binary form, add one nibble.
 
static void prv_inet_pton6_set_zeros (struct sPTON6_Set *pxSet)
 Convert an ASCII character to its corresponding hexadecimal value. A :: block was found, now fill in the zero's.
 
BaseType_t FreeRTOS_inet_pton6 (const char *pcSource, void *pvDestination)
 Convert an IPv6 address in hexadecimal notation to a binary format of 16 bytes.
 
+

Detailed Description

+

Implements the Sockets API based on Berkeley sockets for the FreeRTOS+TCP network stack. Sockets are used by the application processes to interact with the IP-task which in turn interacts with the hardware.

+

Function Documentation

+ +

◆ pxTCPSocketLookup_IPv6()

+ +
+
+ + + + + + + + + + + + + + + + + + +
FreeRTOS_Socket_t * pxTCPSocketLookup_IPv6 (FreeRTOS_Socket_t * pxSocket,
const IPv46_Address_t * pxAddress 
)
+
+ +

Called by pxTCPSocketLookup(), this function will check if a socket is connected to a remote IP-address. It will be called from a loop iterating through all sockets.

+
Parameters
+ + + +
[in]pxSocketThe socket to be inspected.
[in]pxAddressThe IPv4/IPv6 address.
+
+
+
Returns
The socket in case it is connected to the remote IP-address.
+ +
+
+ +

◆ xSend_UDP_Update_IPv6()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void * xSend_UDP_Update_IPv6 (NetworkBufferDescriptor_t * pxNetworkBuffer,
const struct freertos_sockaddr * pxDestinationAddress 
)
+
+ +

Called by prvSendUDPPacket(), this function will UDP packet fields and IPv6 address for the packet to be send.

+
Parameters
+ + + +
[in]pxNetworkBufferThe packet to be sent.
[in]pxDestinationAddressThe IPv4 socket address.
+
+
+
Returns
Returns NULL, always.
+ +
+
+ +

◆ xRecv_Update_IPv6()

+ +
+
+ + + + + + + + + + + + + + + + + + +
size_t xRecv_Update_IPv6 (const NetworkBufferDescriptor_t * pxNetworkBuffer,
struct freertos_sockaddr * pxSourceAddress 
)
+
+ +

Called by FreeRTOS_recvfrom(), this function will update socket address with IPv6 address from the packet received.

+
Parameters
+ + + +
[in]pxNetworkBufferThe packet received.
[in]pxSourceAddressThe IPv4 socket address.
+
+
+
Returns
The Payload Offset.
+ +
+
+ +

◆ cHexToChar()

+ +
+
+ + + + + + + + +
char cHexToChar (uint16_t usValue)
+
+ +

Converts a 4 bit (nibble) value to a readable hex character, e.g. 14 becomes 'e'.

+
Parameters
+ + +
usValueThe value to be converted, must be between 0 and 15.
+
+
+
Returns
The character, between '0' and '9', or between 'a' and 'f'.
+ +
+
+ +

◆ uxHexPrintShort()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
socklen_t uxHexPrintShort (char * pcBuffer,
size_t uxBufferSize,
uint16_t usValue 
)
+
+ +

Convert a short numeric value to a hex string of at most 4 characters. The resulting string is not null-terminated. The resulting string will not have leading zero's, except when 'usValue' equals zero.

+
Parameters
+ + + + +
[in]pcBufferThe buffer to which the string is written.
[in]uxBufferSizeThe size of the buffer pointed to by 'pcBuffer'.
[in]usValueThe 16-bit value to be converted.
+
+
+
Returns
The number of bytes written to 'pcBuffer'.
+ +
+
+ +

◆ prv_ntop6_search_zeros()

+ +
+
+ + + + + + + + +
void prv_ntop6_search_zeros (struct sNTOP6_Set * pxSet)
+
+ +

Scan the binary IPv6 address and find the longest train of consecutive zero's. The result of this search will be stored in 'xZeroStart' and 'xZeroLength'.

+
Parameters
+ + +
pxSetthe set of parameters as used by FreeRTOS_inet_ntop6().
+
+
+ +
+
+ +

◆ prv_ntop6_write_zeros()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static BaseType_t prv_ntop6_write_zeros (char * pcDestination,
size_t uxSize,
struct sNTOP6_Set * pxSet 
)
+
+static
+
+ +

The location is now at the longest train of zero's. Two colons have to be printed without a numeric value, e.g. "ff02::1".

+
Parameters
+ + + + +
pcDestinationthe output buffer where the colons will be printed.
uxSizethe remaining length of the output buffer.
pxSetthe set of parameters as used by FreeRTOS_inet_ntop6().
+
+
+
Returns
pdPASS in case the output buffer is big enough to contain the colons.
+
Note
uxSize must be at least 2, enough to print "::". The string will get null-terminated later on.
+ +
+
+ +

◆ prv_ntop6_write_short()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static BaseType_t prv_ntop6_write_short (char * pcDestination,
size_t uxSize,
struct sNTOP6_Set * pxSet 
)
+
+static
+
+ +

Write a short value, as a hex number with at most 4 characters. E.g. the value 15 will be printed as "f".

+
Parameters
+ + + + +
pcDestinationthe output buffer where the hex number is to be printed.
uxSizethe remaining length of the output buffer.
pxSetthe set of parameters as used by FreeRTOS_inet_ntop6().
+
+
+
Returns
pdPASS in case the output buffer is big enough to contain the string.
+
Note
uxSize must be at least 4, enough to print "abcd". The string will get null-terminated later on.
+ +
+
+ +

◆ FreeRTOS_inet_ntop6()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
const char * FreeRTOS_inet_ntop6 (const void * pvSource,
char * pcDestination,
socklen_t uxSize 
)
+
+ +

This function converts a binary IPv6 address to a human readable notation.

+
Parameters
+ + + + +
[in]pvSourceThe binary address, 16 bytes long..
[out]pcDestinationThe human-readable ( hexadecimal ) notation of the address.
[in]uxSizeThe size of pvDestination. A value of 40 is recommended.
+
+
+
Returns
pdPASS if the translation was successful or else pdFAIL.
+ +
+
+ +

◆ prv_inet_pton6_add_nibble()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static BaseType_t prv_inet_pton6_add_nibble (struct sPTON6_Set * pxSet,
uint8_t ucNew,
char ch 
)
+
+static
+
+ +

Converting a readable IPv6 address to its binary form, add one nibble.

+
Parameters
+ + + + +
[in]pxSetA set of variables describing the conversion.
[in]ucNewThe hex value, between 0 and 15
[in]chThe character, such as '5', 'f', or ':'.
+
+
+
Returns
pdTRUE when the nibble was added, otherwise pdFALSE.
+ +
+
+ +

◆ prv_inet_pton6_set_zeros()

+ +
+
+ + + + + +
+ + + + + + + + +
static void prv_inet_pton6_set_zeros (struct sPTON6_Set * pxSet)
+
+static
+
+ +

Convert an ASCII character to its corresponding hexadecimal value. A :: block was found, now fill in the zero's.

+
Parameters
+ + +
[in]pxSetA set of variables describing the conversion.
+
+
+ +
+
+ +

◆ FreeRTOS_inet_pton6()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BaseType_t FreeRTOS_inet_pton6 (const char * pcSource,
void * pvDestination 
)
+
+ +

Convert an IPv6 address in hexadecimal notation to a binary format of 16 bytes.

+
Parameters
+ + + +
[in]pcSourceThe address in hexadecimal notation.
[out]pvDestinationThe address in binary format, 16 bytes long.
+
+
+
Returns
The 32-bit representation of IP(v4) address.
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___i_pv6___utils_8c.html b/V4.3.1/_free_r_t_o_s___i_pv6___utils_8c.html new file mode 100644 index 000000000..8663a4472 --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___i_pv6___utils_8c.html @@ -0,0 +1,346 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_IPv6_Utils.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_IPv6_Utils.c File Reference
+
+
+ +

Implements the basic functionality for the FreeRTOS+TCP network stack functions for IPv6. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include "FreeRTOS.h"
+#include "FreeRTOS_IP.h"
+
+ + + + + + + + + + + + + + + + +

+Functions

void vSetMultiCastIPv6MacAddress (const IPv6_Address_t *pxAddress, MACAddress_t *pxMACAddress)
 Set multicast MAC address.
 
BaseType_t prvChecksumIPv6Checks (uint8_t *pucEthernetBuffer, size_t uxBufferLength, struct xPacketSummary *pxSet)
 Do the first IPv6 length checks at the IP-header level.
 
BaseType_t prvChecksumICMPv6Checks (size_t uxBufferLength, struct xPacketSummary *pxSet)
 Check the buffer lengths of an ICMPv6 packet.
 
size_t usGetExtensionHeaderLength (const uint8_t *pucEthernetBuffer, size_t uxBufferLength, uint8_t *pucProtocol)
 Get total length of all extension headers in IPv6 packet.
 
void vManageSolicitedNodeAddress (const struct xNetworkEndPoint *pxEndPoint, BaseType_t xNetworkGoingUp)
 Every IPv6 end-point has a solicited node multicast address and a corresponding multicast MAC address. The IPv6 solicited node address also has an MLD reports associated with it. This function manages both the MAC address and the MLD report associated with the end-point's solicited-node address. On network UP, this function registers the MAC address with the network driver's filter and creates and MLD report for the UPv6 multicast address. On network DOWN, the function unregisters the MAC address and removes the MLD report. This is a "convenience" function that keeps all these tasks under one roof for easier maintenance.
 
+

Detailed Description

+

Implements the basic functionality for the FreeRTOS+TCP network stack functions for IPv6.

+

Function Documentation

+ +

◆ vSetMultiCastIPv6MacAddress()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void vSetMultiCastIPv6MacAddress (const IPv6_Address_t * pxAddress,
MACAddress_t * pxMACAddress 
)
+
+ +

Set multicast MAC address.

+
Parameters
+ + + +
[in]pxAddressIPv6 address.
[out]pxMACAddressPointer to MAC address.
+
+
+ +
+
+ +

◆ prvChecksumIPv6Checks()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t prvChecksumIPv6Checks (uint8_t * pucEthernetBuffer,
size_t uxBufferLength,
struct xPacketSummary * pxSet 
)
+
+ +

Do the first IPv6 length checks at the IP-header level.

+
Parameters
+ + + + +
[in]pucEthernetBufferThe buffer containing the packet.
[in]uxBufferLengthThe number of bytes to be sent or received.
[in]pxSetA struct describing this packet.
+
+
+
Returns
Non-zero in case of an error.
+ +
+
+ +

◆ prvChecksumICMPv6Checks()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BaseType_t prvChecksumICMPv6Checks (size_t uxBufferLength,
struct xPacketSummary * pxSet 
)
+
+ +

Check the buffer lengths of an ICMPv6 packet.

+
Parameters
+ + + +
[in]uxBufferLengthThe total length of the packet.
[in]pxSetA struct describing this packet.
+
+
+
Returns
Non-zero in case of an error.
+ +
+
+ +

◆ usGetExtensionHeaderLength()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
size_t usGetExtensionHeaderLength (const uint8_t * pucEthernetBuffer,
size_t uxBufferLength,
uint8_t * pucProtocol 
)
+
+ +

Get total length of all extension headers in IPv6 packet.

+
Parameters
+ + + + +
[in]pucEthernetBufferThe buffer containing the packet.
[in]uxBufferLengthThe number of bytes to be sent or received.
[out]pucProtocolThe L4 protocol, such as TCP/UDP/ICMPv6.
+
+
+
Returns
The total length of all extension headers, or whole buffer length when error detected.
+ +
+
+ +

◆ vManageSolicitedNodeAddress()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void vManageSolicitedNodeAddress (const struct xNetworkEndPoint * pxEndPoint,
BaseType_t xNetworkGoingUp 
)
+
+ +

Every IPv6 end-point has a solicited node multicast address and a corresponding multicast MAC address. The IPv6 solicited node address also has an MLD reports associated with it. This function manages both the MAC address and the MLD report associated with the end-point's solicited-node address. On network UP, this function registers the MAC address with the network driver's filter and creates and MLD report for the UPv6 multicast address. On network DOWN, the function unregisters the MAC address and removes the MLD report. This is a "convenience" function that keeps all these tasks under one roof for easier maintenance.

+
Parameters
+ + + +
[in]pxEndPointThe end-point for which a network up/down event is being handled.
[in]xNetworkGoingUppdTRUE when the network goes UP, pdFALSE when the network goes DOWN.
+
+
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___n_d_8c.html b/V4.3.1/_free_r_t_o_s___n_d_8c.html new file mode 100644 index 000000000..767247240 --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___n_d_8c.html @@ -0,0 +1,744 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_ND.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_ND.c File Reference
+
+
+ +

Implements a few functions that handle Neighbour Discovery and other ICMPv6 messages. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_Sockets.h"
+#include "FreeRTOS_IP_Private.h"
+#include "FreeRTOS_UDP_IP.h"
+#include "FreeRTOS_Routing.h"
+#include "FreeRTOS_ND.h"
+#include "FreeRTOS_IP_Timers.h"
+#include "FreeRTOS_DNS.h"
+#include "NetworkBufferManagement.h"
+
+ + + + + + + + + + + + + + + + +

+Macros

+#define ndICMPv6_FLAG_SOLICITED   0x40000000U
 Type of Neighbour Advertisement packets - SOLICIT.
 
+#define ndICMPv6_FLAG_UPDATE   0x20000000U
 Type of Neighbour Advertisement packets - UPDATE.
 
+#define ndDONT_BLOCK   ( ( TickType_t ) 0 )
 A block time of 0 simply means "don't block".
 
+#define ndECHO_DATA_FILL_BYTE   'x'
 The character used to fill ICMP echo requests, and therefore also the character expected to fill ICMP echo replies.
 
+#define ndMAX_CACHE_AGE_BEFORE_NEW_ND_SOLICITATION   ( 3U )
 When ucAge becomes 3 or less, it is time for a new neighbour solicitation.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

static eResolutionLookupResult_t prvMACResolve (const IPv6_Address_t *pxAddressToLookup, MACAddress_t *const pxMACAddress, NetworkEndPoint_t **ppxEndPoint)
 See if the MAC-address can be resolved because it is a multi-cast address.
 
static eResolutionLookupResult_t prvNDCacheLookup (const IPv6_Address_t *pxAddressToLookup, MACAddress_t *const pxMACAddress, NetworkEndPoint_t **ppxEndPoint)
 Lookup an MAC address in the ND cache from the IP address.
 
static NetworkEndPoint_t * pxFindLocalEndpoint (void)
 Find the first end-point of type IPv6.
 
eResolutionLookupResult_t eNDGetCacheEntry (IPv6_Address_t *pxIPAddress, MACAddress_t *const pxMACAddress, struct xNetworkEndPoint **ppxEndPoint)
 Find the MAC-address of an IPv6 address. It will first determine if is a multicast address, if not, it will check the ND cache.
 
void vNDRefreshCacheEntry (const MACAddress_t *pxMACAddress, const IPv6_Address_t *pxIPAddress, NetworkEndPoint_t *pxEndPoint)
 Store a combination of IP-address, MAC-address and an end-point in a free location in the ND cache.
 
+void vNDAgeCache (void)
 Reduce the age counter in each entry within the ND cache. An entry is no longer considered valid and is deleted if its age reaches zero. Just before getting to zero, 3 times a neighbour solicitation will be sent.
 
void FreeRTOS_ClearND (const struct xNetworkEndPoint *pxEndPoint)
 A call to this function will clear the ND cache.
 
static void prvReturnICMP_IPv6 (NetworkBufferDescriptor_t *const pxNetworkBuffer, size_t uxICMPSize)
 Return an ICMPv6 packet to the peer.
 
void vNDSendNeighbourSolicitation (NetworkBufferDescriptor_t *pxNetworkBuffer, const IPv6_Address_t *pxIPAddress)
 Send out an ND request for the IPv6 address contained in pxNetworkBuffer, and add an entry into the ND table that indicates that an ND reply is outstanding so re-transmissions can be generated.
 
BaseType_t FreeRTOS_SendPingRequestIPv6 (const IPv6_Address_t *pxIPAddress, size_t uxNumberOfBytesToSend, TickType_t uxBlockTimeTicks)
 Send a PING request using an ICMPv6 format.
 
+static void prvCheckWaitingBuffer (const IPv6_Address_t *pxIPv6Address)
 When a neighbour advertisement has been received, check if 'pxNDWaitingNetworkBuffer' was waiting for this new address look-up. If so, feed it to the IP-task as a new incoming packet.
 
eFrameProcessingResult_t prvProcessICMPMessage_IPv6 (NetworkBufferDescriptor_t *const pxNetworkBuffer)
 Process an ICMPv6 packet and send replies when applicable.
 
void FreeRTOS_OutputAdvertiseIPv6 (NetworkEndPoint_t *pxEndPoint)
 Send out a Neighbour Advertisement message.
 
BaseType_t FreeRTOS_CreateIPv6Address (IPv6_Address_t *pxIPAddress, const IPv6_Address_t *pxPrefix, size_t uxPrefixLength, BaseType_t xDoRandom)
 Create an IPv16 address, based on a prefix.
 
BaseType_t xCheckRequiresNDResolution (const NetworkBufferDescriptor_t *pxNetworkBuffer)
 Check whether a packet needs ND resolution if it is on local subnet. If required send an ND Solicitation.
 
+void vNDSendUnsolicited (void)
 Send an unsolicited ND packet to allow this node to announce the IP-MAC mapping to the entire network.
 
+ + + + + + + + + + + + + +

+Variables

+const uint8_t pcLOCAL_ALL_NODES_MULTICAST_IP [ipSIZE_OF_IPv6_ADDRESS] = { 0xffU, 0x02U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x01U }
 All nodes on the local network segment: IP address.
 
+const uint8_t pcLOCAL_ALL_NODES_MULTICAST_MAC [ipMAC_ADDRESS_LENGTH_BYTES] = { 0x33U, 0x33U, 0x00U, 0x00U, 0x00U, 0x01U }
 All nodes on the local network segment: MAC address.
 
+static NDCacheRow_t xNDCache [ipconfigND_CACHE_ENTRIES]
 The ND cache.
 
+static TickType_t xLastUnsolicitedNDTime = 0U
 The time at which the last unsolicited ND was sent. Unsolicited NDs are used to ensure ND tables are up to date and to detect IP address conflicts.
 
+

Detailed Description

+

Implements a few functions that handle Neighbour Discovery and other ICMPv6 messages.

+

Function Documentation

+ +

◆ prvMACResolve()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static eResolutionLookupResult_t prvMACResolve (const IPv6_Address_t * pxAddressToLookup,
MACAddress_t *const pxMACAddress,
NetworkEndPoint_t ** ppxEndPoint 
)
+
+static
+
+ +

See if the MAC-address can be resolved because it is a multi-cast address.

+
Parameters
+ + + + +
[in]pxAddressToLookupThe IP-address to look-up.
[out]pxMACAddressThe resulting MAC-address is stored here.
[out]ppxEndPointA pointer to an end-point pointer where the end-point will be stored.
+
+
+
Returns
An enum, either eResolutionCacheHit or eResolutionCacheMiss.
+ +
+
+ +

◆ prvNDCacheLookup()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static eResolutionLookupResult_t prvNDCacheLookup (const IPv6_Address_t * pxAddressToLookup,
MACAddress_t *const pxMACAddress,
NetworkEndPoint_t ** ppxEndPoint 
)
+
+static
+
+ +

Lookup an MAC address in the ND cache from the IP address.

+

Look-up an IPv6 address in the cache.

+
Parameters
+ + + + +
[in]pxAddressToLookupThe IPv6 address to look-up.Ethernet packet.
[out]pxMACAddressThe resulting MAC-address will be stored here.
[out]ppxEndPointA pointer to a pointer to an end-point, where the end-point will be stored.
+
+
+
Returns
An enum: either eResolutionCacheHit or eResolutionCacheMiss.
+ +
+
+ +

◆ pxFindLocalEndpoint()

+ +
+
+ + + + + +
+ + + + + + + + +
static NetworkEndPoint_t * pxFindLocalEndpoint (void )
+
+static
+
+ +

Find the first end-point of type IPv6.

+
Returns
The first IPv6 end-point found.
+ +
+
+ +

◆ eNDGetCacheEntry()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
eResolutionLookupResult_t eNDGetCacheEntry (IPv6_Address_t * pxIPAddress,
MACAddress_t *const pxMACAddress,
struct xNetworkEndPoint ** ppxEndPoint 
)
+
+ +

Find the MAC-address of an IPv6 address. It will first determine if is a multicast address, if not, it will check the ND cache.

+
Parameters
+ + + + +
[in]pxIPAddressThe IPv6 address to be looked up.
[out]pxMACAddressThe MAC-address found.
[out]ppxEndPointA pointer to a pointer to an end-point, where the end-point will be stored.
+
+
+
Returns
An enum which says whether the address was found: eResolutionCacheHit or eResolutionCacheMiss.
+ +
+
+ +

◆ vNDRefreshCacheEntry()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void vNDRefreshCacheEntry (const MACAddress_t * pxMACAddress,
const IPv6_Address_t * pxIPAddress,
NetworkEndPoint_t * pxEndPoint 
)
+
+ +

Store a combination of IP-address, MAC-address and an end-point in a free location in the ND cache.

+
Parameters
+ + + + +
[in]pxMACAddressThe MAC-address
[in]pxIPAddressThe IP-address
[in]pxEndPointThe end-point through which the IP-address can be reached.
+
+
+ +
+
+ +

◆ FreeRTOS_ClearND()

+ +
+
+ + + + + + + + +
void FreeRTOS_ClearND (const struct xNetworkEndPoint * pxEndPoint)
+
+ +

A call to this function will clear the ND cache.

+
Parameters
+ + +
[in]pxEndPointonly clean entries with this end-point, or when NULL, clear the entire ND cache.
+
+
+ +
+
+ +

◆ prvReturnICMP_IPv6()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void prvReturnICMP_IPv6 (NetworkBufferDescriptor_t *const pxNetworkBuffer,
size_t uxICMPSize 
)
+
+static
+
+ +

Return an ICMPv6 packet to the peer.

+
Parameters
+ + + +
[in]pxNetworkBufferThe Ethernet packet.
[in]uxICMPSizeThe number of bytes to be sent.
+
+
+ +
+
+ +

◆ vNDSendNeighbourSolicitation()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void vNDSendNeighbourSolicitation (NetworkBufferDescriptor_t * pxNetworkBuffer,
const IPv6_Address_t * pxIPAddress 
)
+
+ +

Send out an ND request for the IPv6 address contained in pxNetworkBuffer, and add an entry into the ND table that indicates that an ND reply is outstanding so re-transmissions can be generated.

+
Parameters
+ + + +
[in]pxNetworkBufferThe network buffer in which the message shall be stored.
[in]pxIPAddressThe IPv6 address that is asked to send a Neighbour Advertisement.
+
+
+
Note
Send out an ND request for the IPv6 address contained in pxNetworkBuffer, and add an entry into the ND table that indicates that an ND reply is outstanding so re-transmissions can be generated.
+ +
+
+ +

◆ FreeRTOS_SendPingRequestIPv6()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t FreeRTOS_SendPingRequestIPv6 (const IPv6_Address_t * pxIPAddress,
size_t uxNumberOfBytesToSend,
TickType_t uxBlockTimeTicks 
)
+
+ +

Send a PING request using an ICMPv6 format.

+
Parameters
+ + + + +
[in]pxIPAddressSend an IPv6 PING request.
[in]uxNumberOfBytesToSendThe number of bytes to be sent.
[in]uxBlockTimeTicksThe maximum number of clock-ticks to wait while putting the message on the queue for the IP-task.
+
+
+
Returns
When failed: pdFAIL, otherwise the PING sequence number.
+ +
+
+ +

◆ prvProcessICMPMessage_IPv6()

+ +
+
+ + + + + + + + +
eFrameProcessingResult_t prvProcessICMPMessage_IPv6 (NetworkBufferDescriptor_t *const pxNetworkBuffer)
+
+ +

Process an ICMPv6 packet and send replies when applicable.

+
Parameters
+ + +
[in]pxNetworkBufferThe Ethernet packet which contains an IPv6 message.
+
+
+
Returns
A const value 'eReleaseBuffer' which means that the network must still be released.
+ +
+
+ +

◆ FreeRTOS_OutputAdvertiseIPv6()

+ +
+
+ + + + + + + + +
void FreeRTOS_OutputAdvertiseIPv6 (NetworkEndPoint_t * pxEndPoint)
+
+ +

Send out a Neighbour Advertisement message.

+
Parameters
+ + +
[in]pxEndPointThe end-point to use.
+
+
+ +
+
+ +

◆ FreeRTOS_CreateIPv6Address()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t FreeRTOS_CreateIPv6Address (IPv6_Address_t * pxIPAddress,
const IPv6_Address_t * pxPrefix,
size_t uxPrefixLength,
BaseType_t xDoRandom 
)
+
+ +

Create an IPv16 address, based on a prefix.

+
Parameters
+ + + + + +
[out]pxIPAddressThe location where the new IPv6 address will be stored.
[in]pxPrefixThe prefix to be used.
[in]uxPrefixLengthThe length of the prefix.
[in]xDoRandomA non-zero value if the bits after the prefix should have a random value.
+
+
+
Returns
pdPASS if the operation was successful. Or pdFAIL in case xApplicationGetRandomNumber() returned an error.
+ +
+
+ +

◆ xCheckRequiresNDResolution()

+ +
+
+ + + + + + + + +
BaseType_t xCheckRequiresNDResolution (const NetworkBufferDescriptor_t * pxNetworkBuffer)
+
+ +

Check whether a packet needs ND resolution if it is on local subnet. If required send an ND Solicitation.

+
Parameters
+ + +
[in]pxNetworkBufferThe network buffer with the packet to be checked.
+
+
+
Returns
pdTRUE if the packet needs ND resolution, pdFALSE otherwise.
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___r_a_8c.html b/V4.3.1/_free_r_t_o_s___r_a_8c.html new file mode 100644 index 000000000..92b0a8ded --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___r_a_8c.html @@ -0,0 +1,554 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_RA.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_RA.c File Reference
+
+
+ +

A client implementation of Router advertisement protocol. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_Sockets.h"
+#include "FreeRTOS_IP_Private.h"
+#include "FreeRTOS_IP_Timers.h"
+#include "FreeRTOS_UDP_IP.h"
+#include "FreeRTOS_Routing.h"
+#include "FreeRTOS_ND.h"
+#include "FreeRTOS_DNS.h"
+#include "NetworkBufferManagement.h"
+
+ + + + + + + +

+Macros

#define raDONT_BLOCK   ( ( TickType_t ) 0 )
 
#define raDEFAULT_VERSION_TRAFFIC_CLASS   0x60U
 
#define raDEFAULT_HOP_LIMIT   255U
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

static void vRAProcessInit (NetworkEndPoint_t *pxEndPoint)
 Initialise the RA state machine.
 
static BaseType_t xGetLinkLocalAddress (const NetworkInterface_t *pxInterface, IPv6_Address_t *pxAddress)
 Find a link-local address that is bound to a given interface.
 
static ICMPPrefixOption_IPv6_t * vReceiveRA_ReadReply (const NetworkBufferDescriptor_t *pxNetworkBuffer)
 Read a received RA reply and return the prefix option from the packet.
 
static TickType_t xRAProcess_HandleWaitStates (NetworkEndPoint_t *pxEndPoint, TickType_t uxReloadTime)
 Handles the RA wait state and calculates the new timer reload value based on the wait state. Also checks if any timer has expired. If its found that there is no other device using the same IP-address vIPNetworkUpCalls() is called to send the network up event.
 
static TickType_t xRAProcess_HandleOtherStates (NetworkEndPoint_t *pxEndPoint, TickType_t uxReloadTime)
 Handles the RA states other than the wait states.
 
void vNDSendRouterSolicitation (NetworkBufferDescriptor_t *pxNetworkBuffer, IPv6_Address_t *pxIPAddress)
 Send an ICMPv6 message of the type: Router Solicitation.
 
void vReceiveNA (const NetworkBufferDescriptor_t *pxNetworkBuffer)
 Receive a NA ( Neighbour Advertisement ) message to see if a chosen IP-address is already in use.
 
void vReceiveRA (const NetworkBufferDescriptor_t *pxNetworkBuffer)
 Receive and analyse a RA ( Router Advertisement ) message. If the reply is satisfactory, the end-point will do SLAAC: choose an IP-address using the prefix offered, and completed with random bits. It will start testing if another device already exists that uses the same IP-address.
 
void vRAProcess (BaseType_t xDoReset, NetworkEndPoint_t *pxEndPoint)
 Do a single cycle of the RA state machine.
 
+

Detailed Description

+

A client implementation of Router advertisement protocol.

+

Macro Definition Documentation

+ +

◆ raDONT_BLOCK

+ +
+
+ + + + +
#define raDONT_BLOCK   ( ( TickType_t ) 0 )
+
+

A block time of 0 simply means "don't block".

+ +
+
+ +

◆ raDEFAULT_VERSION_TRAFFIC_CLASS

+ +
+
+ + + + +
#define raDEFAULT_VERSION_TRAFFIC_CLASS   0x60U
+
+

The default value for the IPv6-field 'ucVersionTrafficClass'.

+ +
+
+ +

◆ raDEFAULT_HOP_LIMIT

+ +
+
+ + + + +
#define raDEFAULT_HOP_LIMIT   255U
+
+

The default value for the IPv6-field 'ucHopLimit'.

+ +
+
+

Function Documentation

+ +

◆ vRAProcessInit()

+ +
+
+ + + + + +
+ + + + + + + + +
static void vRAProcessInit (NetworkEndPoint_t * pxEndPoint)
+
+static
+
+ +

Initialise the RA state machine.

+
Parameters
+ + +
[in]pxEndPointThe end-point for which Router Advertisement is required.
+
+
+ +
+
+ +

◆ xGetLinkLocalAddress()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static BaseType_t xGetLinkLocalAddress (const NetworkInterface_t * pxInterface,
IPv6_Address_t * pxAddress 
)
+
+static
+
+ +

Find a link-local address that is bound to a given interface.

+
Parameters
+ + + +
[in]pxInterfaceThe interface for which a link-local address is looked up.
[out]pxAddressThe IP address will be copied to this parameter.
+
+
+
Returns
pdPASS in case a link-local address was found, otherwise pdFAIL.
+ +
+
+ +

◆ vReceiveRA_ReadReply()

+ +
+
+ + + + + +
+ + + + + + + + +
static ICMPPrefixOption_IPv6_t * vReceiveRA_ReadReply (const NetworkBufferDescriptor_t * pxNetworkBuffer)
+
+static
+
+ +

Read a received RA reply and return the prefix option from the packet.

+
Parameters
+ + +
[in]pxNetworkBufferThe buffer that contains the message.
+
+
+
Returns
Returns the ICMP prefix option pointer, pointing to its location in the input RA reply message buffer.
+ +
+
+ +

◆ xRAProcess_HandleWaitStates()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static TickType_t xRAProcess_HandleWaitStates (NetworkEndPoint_t * pxEndPoint,
TickType_t uxReloadTime 
)
+
+static
+
+ +

Handles the RA wait state and calculates the new timer reload value based on the wait state. Also checks if any timer has expired. If its found that there is no other device using the same IP-address vIPNetworkUpCalls() is called to send the network up event.

+
Parameters
+ + + +
[in]pxEndPointThe end point for which RA assignment is required.
[out]uxReloadTimeTimer reload value in ticks.
+
+
+
Returns
New timer reload value.
+ +
+
+ +

◆ xRAProcess_HandleOtherStates()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static TickType_t xRAProcess_HandleOtherStates (NetworkEndPoint_t * pxEndPoint,
TickType_t uxReloadTime 
)
+
+static
+
+ +

Handles the RA states other than the wait states.

+
Parameters
+ + + +
[in]pxEndPointThe end point for which RA assignment is required.
[out]uxReloadTimeTimer reload value in ticks.
+
+
+
Returns
New timer reload value.
+ +
+
+ +

◆ vNDSendRouterSolicitation()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void vNDSendRouterSolicitation (NetworkBufferDescriptor_t * pxNetworkBuffer,
IPv6_Address_t * pxIPAddress 
)
+
+ +

Send an ICMPv6 message of the type: Router Solicitation.

+
Parameters
+ + + +
[in]pxNetworkBufferThe network buffer which can be used for this.
[in]pxIPAddressThe target address, normally ff02::2
+
+
+ +
+
+ +

◆ vReceiveNA()

+ +
+
+ + + + + + + + +
void vReceiveNA (const NetworkBufferDescriptor_t * pxNetworkBuffer)
+
+ +

Receive a NA ( Neighbour Advertisement ) message to see if a chosen IP-address is already in use.

+
Parameters
+ + +
[in]pxNetworkBufferThe buffer that contains the message.
+
+
+ +
+
+ +

◆ vReceiveRA()

+ +
+
+ + + + + + + + +
void vReceiveRA (const NetworkBufferDescriptor_t * pxNetworkBuffer)
+
+ +

Receive and analyse a RA ( Router Advertisement ) message. If the reply is satisfactory, the end-point will do SLAAC: choose an IP-address using the prefix offered, and completed with random bits. It will start testing if another device already exists that uses the same IP-address.

+
Parameters
+ + +
[in]pxNetworkBufferThe buffer that contains the message.
+
+
+ +
+
+ +

◆ vRAProcess()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void vRAProcess (BaseType_t xDoReset,
NetworkEndPoint_t * pxEndPoint 
)
+
+ +

Do a single cycle of the RA state machine.

+
Parameters
+ + + +
[in]xDoResetpdTRUE if the state machine must be reset.
[in]pxEndPointThe end-point for which a RA assignment is required.
+
+
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___routing_8c.html b/V4.3.1/_free_r_t_o_s___routing_8c.html new file mode 100644 index 000000000..38dbdecb3 --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___routing_8c.html @@ -0,0 +1,1142 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_Routing.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_Routing.c File Reference
+
+
+ +

Implements endpoint interfaces functions and utilities. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_Sockets.h"
+#include "FreeRTOS_IP_Private.h"
+#include "FreeRTOS_ARP.h"
+#include "FreeRTOS_ND.h"
+#include "FreeRTOS_UDP_IP.h"
+#include "FreeRTOS_DHCP.h"
+#include "NetworkBufferManagement.h"
+#include "FreeRTOS_DNS.h"
+#include "FreeRTOS_Routing.h"
+
+ + + + +

+Data Structures

struct  xIPv6_Couple
 A util struct to list the IPv6 IP types, prefix and type bit mask. More...
 
+ + + + + + + + + + + + +

+Macros

#define rMATCH_IP_ADDR   0
 Check IP-type, IP- and MAC-address found in the network packet.
 
#define rMATCH_IPv6_TYPE   1
 
#define rMATCH_MAC_ADDR   2
 
#define rMATCH_IP_TYPE   3
 
#define rMATCH_COUNT   4
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

static NetworkEndPoint_t * FreeRTOS_AddEndPoint (NetworkInterface_t *pxInterface, NetworkEndPoint_t *pxEndPoint)
 Add an end-point to a given interface.
 
void FreeRTOS_FillEndPoint (NetworkInterface_t *pxNetworkInterface, NetworkEndPoint_t *pxEndPoint, const uint8_t ucIPAddress[ipIP_ADDRESS_LENGTH_BYTES], const uint8_t ucNetMask[ipIP_ADDRESS_LENGTH_BYTES], const uint8_t ucGatewayAddress[ipIP_ADDRESS_LENGTH_BYTES], const uint8_t ucDNSServerAddress[ipIP_ADDRESS_LENGTH_BYTES], const uint8_t ucMACAddress[ipMAC_ADDRESS_LENGTH_BYTES])
 Configure and install a new IPv4 end-point.
 
NetworkInterface_t * FreeRTOS_AddNetworkInterface (NetworkInterface_t *pxInterface)
 Add a network interface to the list of interfaces. Check if the interface was already added in an earlier call.
 
NetworkInterface_t * FreeRTOS_FirstNetworkInterface (void)
 Get the first Network Interface, or NULL if none has been added.
 
NetworkInterface_t * FreeRTOS_NextNetworkInterface (const NetworkInterface_t *pxInterface)
 Get the next interface.
 
NetworkEndPoint_t * FreeRTOS_FirstEndPoint (const NetworkInterface_t *pxInterface)
 Find the first end-point bound to a given interface.
 
NetworkEndPoint_t * FreeRTOS_NextEndPoint (const NetworkInterface_t *pxInterface, NetworkEndPoint_t *pxEndPoint)
 Get the next end-point. The parameter 'pxInterface' may be NULL, which means: don't care which interface the end-point is bound to.
 
NetworkEndPoint_t * FreeRTOS_FindEndPointOnIP_IPv4 (uint32_t ulIPAddress)
 Find the end-point which has a given IPv4 address.
 
NetworkEndPoint_t * FreeRTOS_FindEndPointOnIP_IPv6 (const IPv6_Address_t *pxIPAddress)
 Find the end-point which handles a given IPv6 address.
 
NetworkEndPoint_t * FreeRTOS_FindEndPointOnMAC (const MACAddress_t *pxMACAddress, const NetworkInterface_t *pxInterface)
 Find the end-point that has a certain MAC-address.
 
NetworkEndPoint_t * FreeRTOS_FindEndPointOnNetMask (uint32_t ulIPAddress)
 Find an end-point that handles a given IPv4-address.
 
NetworkEndPoint_t * FreeRTOS_InterfaceEndPointOnNetMask (const NetworkInterface_t *pxInterface, uint32_t ulIPAddress)
 Find an end-point that handles a given IPv4-address.
 
NetworkEndPoint_t * FreeRTOS_InterfaceEPInSameSubnet_IPv6 (const NetworkInterface_t *pxInterface, const IPv6_Address_t *pxIPAddress)
 Finds an endpoint on the given interface which is in the same subnet as the given IP address. If NULL is passed for pxInterface, it looks through all the interfaces to find an endpoint in the same subnet as the given IP address.
 
void FreeRTOS_FillEndPoint_IPv6 (NetworkInterface_t *pxNetworkInterface, NetworkEndPoint_t *pxEndPoint, const IPv6_Address_t *pxIPAddress, const IPv6_Address_t *pxNetPrefix, size_t uxPrefixLength, const IPv6_Address_t *pxGatewayAddress, const IPv6_Address_t *pxDNSServerAddress, const uint8_t ucMACAddress[ipMAC_ADDRESS_LENGTH_BYTES])
 Configure and install a new IPv6 end-point.
 
NetworkEndPoint_t * FreeRTOS_FindEndPointOnNetMask_IPv6 (const IPv6_Address_t *pxIPv6Address)
 Find an end-point that handles a given IPv6-address.
 
NetworkEndPoint_t * pxEasyFit (const NetworkInterface_t *pxNetworkInterface, const uint16_t usFrameType, const IP_Address_t *pxIPAddressFrom, const IP_Address_t *pxIPAddressTo, const MACAddress_t *pxMACAddress)
 Find an end-point that handles an incoming packet based on its type, source/destination & MAC address.
 
NetworkEndPoint_t * FreeRTOS_MatchingEndpoint (const NetworkInterface_t *pxNetworkInterface, const uint8_t *pucEthernetBuffer)
 Find out the best matching end-point given an incoming Ethernet packet.
 
NetworkEndPoint_t * FreeRTOS_FindGateWay (BaseType_t xIPType)
 Find an end-point that defines a gateway of a certain type ( IPv4 or IPv6 ).
 
NetworkEndPoint_t * FreeRTOS_FirstEndPoint_IPv6 (const NetworkInterface_t *pxInterface)
 Find the first IPv6 end-point.
 
NetworkEndPoint_t * pxGetSocketEndpoint (ConstSocket_t xSocket)
 Get the end-point that is bound to a socket.
 
void vSetSocketEndpoint (Socket_t xSocket, NetworkEndPoint_t *pxEndPoint)
 Assign an end-point to a socket.
 
IPv6_Type_t xIPv6_GetIPType (const IPv6_Address_t *pxAddress)
 Returns the IP type of the given IPv6 address.
 
BaseType_t xCheckRequiresResolution (const NetworkBufferDescriptor_t *pxNetworkBuffer)
 Check whether a packet needs resolution if it is on local subnet. If required send a request.
 
+ + + + + + + +

+Variables

+struct xNetworkEndPoint * pxNetworkEndPoints = NULL
 A list of all network end-points. Each element has a next pointer.
 
+struct xNetworkInterface * pxNetworkInterfaces = NULL
 A list of all network interfaces:
 
+

Detailed Description

+

Implements endpoint interfaces functions and utilities.

+

Macro Definition Documentation

+ +

◆ rMATCH_IP_ADDR

+ +
+
+ + + + +
#define rMATCH_IP_ADDR   0
+
+ +

Check IP-type, IP- and MAC-address found in the network packet.

+

Find an endpoint with a matching IP-address.

+ +
+
+ +

◆ rMATCH_IPv6_TYPE

+ +
+
+ + + + +
#define rMATCH_IPv6_TYPE   1
+
+

Find an endpoint with a matching IPv6 type (both global or non global).

+ +
+
+ +

◆ rMATCH_MAC_ADDR

+ +
+
+ + + + +
#define rMATCH_MAC_ADDR   2
+
+

Find an endpoint with a matching MAC-address.

+ +
+
+ +

◆ rMATCH_IP_TYPE

+ +
+
+ + + + +
#define rMATCH_IP_TYPE   3
+
+

Find an endpoint with a matching IP-type, v4 or v6.

+ +
+
+ +

◆ rMATCH_COUNT

+ +
+
+ + + + +
#define rMATCH_COUNT   4
+
+

The number of methods.

+ +
+
+

Function Documentation

+ +

◆ FreeRTOS_AddEndPoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static NetworkEndPoint_t * FreeRTOS_AddEndPoint (NetworkInterface_t * pxInterface,
NetworkEndPoint_t * pxEndPoint 
)
+
+static
+
+ +

Add an end-point to a given interface.

+
Parameters
+ + + +
[in]pxInterfaceThe interface that gets a new end-point.
[in]pxEndPointThe end-point to be added.
+
+
+
Returns
The value of the parameter 'pxEndPoint'.
+ +
+
+ +

◆ FreeRTOS_FillEndPoint()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void FreeRTOS_FillEndPoint (NetworkInterface_t * pxNetworkInterface,
NetworkEndPoint_t * pxEndPoint,
const uint8_t ucIPAddress[ipIP_ADDRESS_LENGTH_BYTES],
const uint8_t ucNetMask[ipIP_ADDRESS_LENGTH_BYTES],
const uint8_t ucGatewayAddress[ipIP_ADDRESS_LENGTH_BYTES],
const uint8_t ucDNSServerAddress[ipIP_ADDRESS_LENGTH_BYTES],
const uint8_t ucMACAddress[ipMAC_ADDRESS_LENGTH_BYTES] 
)
+
+ +

Configure and install a new IPv4 end-point.

+
Parameters
+ + + + + + + + +
[in]pxNetworkInterfaceThe interface to which it belongs.
[in]pxEndPointSpace for the new end-point. This memory is dedicated for the end-point and should not be freed or get any other purpose.
[in]ucIPAddressThe IP-address.
[in]ucNetMaskThe prefix which shall be used for this end-point.
[in]ucGatewayAddressThe IP-address of a device on the LAN which can serve as as a gateway to the Internet.
[in]ucDNSServerAddressThe IP-address of a DNS server.
[in]ucMACAddressThe MAC address of the end-point.
+
+
+ +
+
+ +

◆ FreeRTOS_AddNetworkInterface()

+ +
+
+ + + + + + + + +
NetworkInterface_t * FreeRTOS_AddNetworkInterface (NetworkInterface_t * pxInterface)
+
+ +

Add a network interface to the list of interfaces. Check if the interface was already added in an earlier call.

+
Parameters
+ + +
[in]pxInterfaceThe address of the new interface.
+
+
+
Returns
The value of the parameter 'pxInterface'.
+ +
+
+ +

◆ FreeRTOS_FirstNetworkInterface()

+ +
+
+ + + + + + + + +
NetworkInterface_t * FreeRTOS_FirstNetworkInterface (void )
+
+ +

Get the first Network Interface, or NULL if none has been added.

+
Returns
The first interface, or NULL if none has been added
+ +
+
+ +

◆ FreeRTOS_NextNetworkInterface()

+ +
+
+ + + + + + + + +
NetworkInterface_t * FreeRTOS_NextNetworkInterface (const NetworkInterface_t * pxInterface)
+
+ +

Get the next interface.

+
Returns
The interface that comes after 'pxInterface'. NULL when either 'pxInterface' is NULL, or when 'pxInterface' is the last interface.
+ +
+
+ +

◆ FreeRTOS_FirstEndPoint()

+ +
+
+ + + + + + + + +
NetworkEndPoint_t * FreeRTOS_FirstEndPoint (const NetworkInterface_t * pxInterface)
+
+ +

Find the first end-point bound to a given interface.

+
Parameters
+ + +
[in]pxInterfaceThe interface whose first end-point will be returned.
+
+
+
Returns
The first end-point that is found to the interface, or NULL when the interface doesn't have any end-point yet.
+ +
+
+ +

◆ FreeRTOS_NextEndPoint()

+ +
+
+ + + + + + + + + + + + + + + + + + +
NetworkEndPoint_t * FreeRTOS_NextEndPoint (const NetworkInterface_t * pxInterface,
NetworkEndPoint_t * pxEndPoint 
)
+
+ +

Get the next end-point. The parameter 'pxInterface' may be NULL, which means: don't care which interface the end-point is bound to.

+
Parameters
+ + + +
[in]pxInterfaceAn interface of interest, or NULL when iterating through all end-points.
[in]pxEndPointThis is the current end-point.
+
+
+
Returns
The end-point that is found, or NULL when there are no more end-points in the list.
+ +
+
+ +

◆ FreeRTOS_FindEndPointOnIP_IPv4()

+ +
+
+ + + + + + + + +
NetworkEndPoint_t * FreeRTOS_FindEndPointOnIP_IPv4 (uint32_t ulIPAddress)
+
+ +

Find the end-point which has a given IPv4 address.

+
Parameters
+ + +
[in]ulIPAddressThe IP-address of interest, or 0 if any IPv4 end-point may be returned.
+
+
+
Returns
The end-point found or NULL.
+ +
+
+ +

◆ FreeRTOS_FindEndPointOnIP_IPv6()

+ +
+
+ + + + + + + + +
NetworkEndPoint_t * FreeRTOS_FindEndPointOnIP_IPv6 (const IPv6_Address_t * pxIPAddress)
+
+ +

Find the end-point which handles a given IPv6 address.

+
Parameters
+ + +
[in]pxIPAddressThe IP-address of interest.
+
+
+
Returns
The end-point found or NULL.
+ +
+
+ +

◆ FreeRTOS_FindEndPointOnMAC()

+ +
+
+ + + + + + + + + + + + + + + + + + +
NetworkEndPoint_t * FreeRTOS_FindEndPointOnMAC (const MACAddress_t * pxMACAddress,
const NetworkInterface_t * pxInterface 
)
+
+ +

Find the end-point that has a certain MAC-address.

+
Parameters
+ + + +
[in]pxMACAddressThe Ethernet packet.
[in]pxInterfaceThe interface on which the packet was received, or NULL when unknown.
+
+
+
Returns
The end-point that has the given MAC-address.
+ +
+
+ +

◆ FreeRTOS_FindEndPointOnNetMask()

+ +
+
+ + + + + + + + +
NetworkEndPoint_t * FreeRTOS_FindEndPointOnNetMask (uint32_t ulIPAddress)
+
+ +

Find an end-point that handles a given IPv4-address.

+
Parameters
+ + +
[in]ulIPAddressThe IP-address for which an end-point is looked-up.
+
+
+
Returns
An end-point that has the same network mask as the given IP-address.
+ +
+
+ +

◆ FreeRTOS_InterfaceEndPointOnNetMask()

+ +
+
+ + + + + + + + + + + + + + + + + + +
NetworkEndPoint_t * FreeRTOS_InterfaceEndPointOnNetMask (const NetworkInterface_t * pxInterface,
uint32_t ulIPAddress 
)
+
+ +

Find an end-point that handles a given IPv4-address.

+
Parameters
+ + + +
[in]pxInterfaceOnly end-points that have this interface are returned, unless pxInterface is NULL.
[in]ulIPAddressThe IP-address for which an end-point is looked-up.
+
+
+
Returns
An end-point that has the same network mask as the given IP-address.
+ +
+
+ +

◆ FreeRTOS_InterfaceEPInSameSubnet_IPv6()

+ +
+
+ + + + + + + + + + + + + + + + + + +
NetworkEndPoint_t * FreeRTOS_InterfaceEPInSameSubnet_IPv6 (const NetworkInterface_t * pxInterface,
const IPv6_Address_t * pxIPAddress 
)
+
+ +

Finds an endpoint on the given interface which is in the same subnet as the given IP address. If NULL is passed for pxInterface, it looks through all the interfaces to find an endpoint in the same subnet as the given IP address.

+
Parameters
+ + + +
[in]pxInterfaceOnly end-points that have this interface are returned, unless pxInterface is NULL.
[in]pxIPAddressThe IPv6-address for which an end-point is looked-up.
+
+
+
Returns
An end-point that is in the same subnet as the given IP-address.
+ +
+
+ +

◆ FreeRTOS_FillEndPoint_IPv6()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void FreeRTOS_FillEndPoint_IPv6 (NetworkInterface_t * pxNetworkInterface,
NetworkEndPoint_t * pxEndPoint,
const IPv6_Address_t * pxIPAddress,
const IPv6_Address_t * pxNetPrefix,
size_t uxPrefixLength,
const IPv6_Address_t * pxGatewayAddress,
const IPv6_Address_t * pxDNSServerAddress,
const uint8_t ucMACAddress[ipMAC_ADDRESS_LENGTH_BYTES] 
)
+
+ +

Configure and install a new IPv6 end-point.

+
Parameters
+ + + + + + + + + +
[in]pxNetworkInterfaceThe interface to which it belongs.
[in]pxEndPointSpace for the new end-point. This memory is dedicated for the end-point and should not be freed or get any other purpose.
[in]pxIPAddressThe IP-address.
[in]pxNetPrefixThe prefix which shall be used for this end-point.
[in]uxPrefixLengthThe length of the above end-point.
[in]pxGatewayAddressThe IP-address of a device on the LAN which can serve as as a gateway to the Internet.
[in]pxDNSServerAddressThe IP-address of a DNS server.
[in]ucMACAddressThe MAC address of the end-point.
+
+
+ +
+
+ +

◆ FreeRTOS_FindEndPointOnNetMask_IPv6()

+ +
+
+ + + + + + + + +
NetworkEndPoint_t * FreeRTOS_FindEndPointOnNetMask_IPv6 (const IPv6_Address_t * pxIPv6Address)
+
+ +

Find an end-point that handles a given IPv6-address.

+
Parameters
+ + +
[in]pxIPv6AddressThe IP-address for which an end-point is looked-up.
+
+
+
Returns
An end-point that has the same network mask as the given IP-address.
+ +
+
+ +

◆ pxEasyFit()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NetworkEndPoint_t * pxEasyFit (const NetworkInterface_t * pxNetworkInterface,
const uint16_t usFrameType,
const IP_Address_t * pxIPAddressFrom,
const IP_Address_t * pxIPAddressTo,
const MACAddress_t * pxMACAddress 
)
+
+ +

Find an end-point that handles an incoming packet based on its type, source/destination & MAC address.

+
Parameters
+ + + + + + +
[in]pxNetworkInterfaceThe interface via which the packet was received.
[in]usFrameTypeFrame type of the packet.
[in]pxIPAddressFromSource IP address of the packet.
[in]pxIPAddressToDestination IP address of the packet.
[in]pxMACAddressDestination MAC address of the packet.
+
+
+
Returns
An end-point that handles the packet.
+ +
+
+ +

◆ FreeRTOS_MatchingEndpoint()

+ +
+
+ + + + + + + + + + + + + + + + + + +
NetworkEndPoint_t * FreeRTOS_MatchingEndpoint (const NetworkInterface_t * pxNetworkInterface,
const uint8_t * pucEthernetBuffer 
)
+
+ +

Find out the best matching end-point given an incoming Ethernet packet.

+
Parameters
+ + + +
[in]pxNetworkInterfaceThe interface on which the packet was received.
[in]pucEthernetBufferThe Ethernet packet that was just received.
+
+
+
Returns
The end-point that should handle the incoming Ethernet packet.
+ +
+
+ +

◆ FreeRTOS_FindGateWay()

+ +
+
+ + + + + + + + +
NetworkEndPoint_t * FreeRTOS_FindGateWay (BaseType_t xIPType)
+
+ +

Find an end-point that defines a gateway of a certain type ( IPv4 or IPv6 ).

+
Parameters
+ + +
[in]xIPTypeThe type of Gateway to look for ( ipTYPE_IPv4 or ipTYPE_IPv6 ).
+
+
+
Returns
The end-point that will lead to the gateway, or NULL when no gateway was found.
+ +
+
+ +

◆ FreeRTOS_FirstEndPoint_IPv6()

+ +
+
+ + + + + + + + +
NetworkEndPoint_t * FreeRTOS_FirstEndPoint_IPv6 (const NetworkInterface_t * pxInterface)
+
+ +

Find the first IPv6 end-point.

+
Parameters
+ + +
[in]pxInterfaceEither NULL ( don't care ), or a specific interface.
+
+
+
Returns
The end-point found, or NULL when there are no end-points at all.
+ +
+
+ +

◆ pxGetSocketEndpoint()

+ +
+
+ + + + + + + + +
NetworkEndPoint_t * pxGetSocketEndpoint (ConstSocket_t xSocket)
+
+ +

Get the end-point that is bound to a socket.

+
Parameters
+ + +
[in]xSocketThe socket of interest.
+
+
+
Returns
An end-point or NULL in case the socket is not bound to an end-point.
+ +
+
+ +

◆ vSetSocketEndpoint()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void vSetSocketEndpoint (Socket_t xSocket,
NetworkEndPoint_t * pxEndPoint 
)
+
+ +

Assign an end-point to a socket.

+
Parameters
+ + + +
[in]xSocketThe socket to which an end-point will be assigned.
[in]pxEndPointThe end-point to be assigned.
+
+
+ +
+
+ +

◆ xIPv6_GetIPType()

+ +
+
+ + + + + + + + +
IPv6_Type_t xIPv6_GetIPType (const IPv6_Address_t * pxAddress)
+
+ +

Returns the IP type of the given IPv6 address.

+
Parameters
+ + +
[in]pxAddressThe IPv6 address whose type needs to be returned.
+
+
+
Returns
The IP type of the given address.
+ +
+
+ +

◆ xCheckRequiresResolution()

+ +
+
+ + + + + + + + +
BaseType_t xCheckRequiresResolution (const NetworkBufferDescriptor_t * pxNetworkBuffer)
+
+ +

Check whether a packet needs resolution if it is on local subnet. If required send a request.

+
Parameters
+ + +
[in]pxNetworkBufferThe network buffer with the packet to be checked.
+
+
+
Returns
pdTRUE if the packet needs resolution, pdFALSE otherwise.
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___sockets_8c.html b/V4.3.1/_free_r_t_o_s___sockets_8c.html new file mode 100644 index 000000000..87d2728d2 --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___sockets_8c.html @@ -0,0 +1,3887 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_Sockets.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_Sockets.c File Reference
+
+
+ +

Implements the Sockets API based on Berkeley sockets for the FreeRTOS+TCP network stack. Sockets are used by the application processes to interact with the IP-task which in turn interacts with the hardware. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "queue.h"
+#include "semphr.h"
+#include "FreeRTOS_UDP_IP.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_Sockets.h"
+#include "FreeRTOS_IPv4_Sockets.h"
+#include "FreeRTOS_IPv6_Sockets.h"
+#include "FreeRTOS_IP_Private.h"
+#include "FreeRTOS_DNS.h"
+#include "NetworkBufferManagement.h"
+#include "FreeRTOS_Routing.h"
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

+#define socketSET_SOCKET_PORT(pxSocket, usPort)   listSET_LIST_ITEM_VALUE( ( &( ( pxSocket )->xBoundSocketListItem ) ), ( usPort ) )
 Set the port number for the socket in the xBoundSocketListItem.
 
+#define socketGET_SOCKET_PORT(pxSocket)   listGET_LIST_ITEM_VALUE( ( &( ( pxSocket )->xBoundSocketListItem ) ) )
 Get the port number for the socket in the xBoundSocketListItem.
 
+#define socketSOCKET_IS_BOUND(pxSocket)   ( listLIST_ITEM_CONTAINER( &( pxSocket )->xBoundSocketListItem ) != NULL )
 Test if a socket it bound which means it is either included in xBoundUDPSocketsList or xBoundTCPSocketsList.
 
#define socketAUTO_PORT_ALLOCATION_START_NUMBER   ( ( uint16_t ) 0x0400 )
 If FreeRTOS_sendto() is called on a socket that is not bound to a port number then, depending on the FreeRTOSIPConfig.h settings, it might be that a port number is automatically generated for the socket. Automatically generated port numbers will be between socketAUTO_PORT_ALLOCATION_START_NUMBER and 0xffff.
 
+#define socketAUTO_PORT_ALLOCATION_MAX_NUMBER   ( ( uint16_t ) 0xffff )
 Maximum value of port number which can be auto assigned.
 
+#define socketDONT_BLOCK   ( ( TickType_t ) 0 )
 A block time of 0 simply means "don't block".
 
+#define ipTCP_TIMER_PERIOD_MS   ( 1000U )
 TCP timer period in milliseconds.
 
#define sock20_PERCENT   20U
 
#define sock80_PERCENT   80U
 
#define sock100_PERCENT   100U
 
#define sockDIGIT_COUNT   ( 3U )
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

static uint16_t prvGetPrivatePortNumber (BaseType_t xProtocol)
 Find an available port number per https://tools.ietf.org/html/rfc6056.
 
static const ListItem_t * pxListFindListItemWithValue (const List_t *pxList, TickType_t xWantedItemValue)
 Find a list item associated with the wanted-item.
 
static BaseType_t prvValidSocket (const FreeRTOS_Socket_t *pxSocket, BaseType_t xProtocol, BaseType_t xIsBound)
 Check whether the socket is valid or not.
 
static BaseType_t prvSockopt_so_buffer (FreeRTOS_Socket_t *pxSocket, int32_t lOptionName, const void *pvOptionValue)
 Set the value of receive/send buffer after some preliminary checks.
 
static BaseType_t prvDetermineSocketSize (BaseType_t xDomain, BaseType_t xType, BaseType_t xProtocol, size_t *pxSocketSize)
 Determine the socket size for the given protocol.
 
static BaseType_t prvSocketBindAdd (FreeRTOS_Socket_t *pxSocket, const struct freertos_sockaddr *pxAddress, List_t *pxSocketList, BaseType_t xInternal)
 : Bind a socket to a port number.
 
static NetworkBufferDescriptor_t * prvRecvFromWaitForPacket (FreeRTOS_Socket_t const *pxSocket, BaseType_t xFlags, EventBits_t *pxEventBits)
 : called from FreeRTOS_recvfrom(). This function waits for an incoming UDP packet, or until a time-out occurs.
 
static int32_t prvSendUDPPacket (const FreeRTOS_Socket_t *pxSocket, NetworkBufferDescriptor_t *pxNetworkBuffer, size_t uxTotalDataLength, BaseType_t xFlags, const struct freertos_sockaddr *pxDestinationAddress, TickType_t xTicksToWait, size_t uxPayloadOffset)
 Forward a UDP packet to the IP-task, so it will be sent.
 
static FreeRTOS_Socket_t * prvAcceptWaitClient (FreeRTOS_Socket_t *pxParentSocket, struct freertos_sockaddr *pxAddress, socklen_t *pxAddressLength)
 Check if a new connection has come in for a socket in listen mode.
 
static StreamBuffer_t * prvTCPCreateStream (FreeRTOS_Socket_t *pxSocket, BaseType_t xIsInputStream)
 Create the stream buffer for the given socket.
 
static int32_t prvTCPSendCheck (FreeRTOS_Socket_t *pxSocket, size_t uxDataLength)
 Called from FreeRTOS_send(): some checks which will be done before sending a TCP packed.
 
static void prvTCPSetSocketCount (FreeRTOS_Socket_t const *pxSocketToDelete)
 When a child socket gets closed, make sure to update the child-count of the parent. When a listening parent socket is closed, make sure to close also all orphaned child-sockets.
 
static BaseType_t prvTCPConnectStart (FreeRTOS_Socket_t *pxSocket, struct freertos_sockaddr const *pxAddress)
 Called from FreeRTOS_connect(): make some checks and if allowed, send a message to the IP-task to start connecting to a remote socket.
 
static BaseType_t bMayConnect (FreeRTOS_Socket_t const *pxSocket)
 Check if it makes any sense to wait for a connect event.
 
static BaseType_t prvMakeSureSocketIsBound (FreeRTOS_Socket_t *pxSocket)
 Check if a socket is already bound to a 'random' port number, if not, try bind it to port 0.
 
static void prvFindSelectedSocket (SocketSelect_t *pxSocketSet)
 Send a message to the IP-task to have it check all sockets belonging to 'pxSocketSet'.
 
static BaseType_t prvRecvWait (const FreeRTOS_Socket_t *pxSocket, EventBits_t *pxEventBits, BaseType_t xFlags)
 This routine will wait for data to arrive in the stream buffer.
 
static BaseType_t prvRecvData (FreeRTOS_Socket_t *pxSocket, void *pvBuffer, size_t uxBufferLength, BaseType_t xFlags)
 Read the data from the stream buffer.
 
static BaseType_t prvTCPSendLoop (FreeRTOS_Socket_t *pxSocket, const void *pvBuffer, size_t uxDataLength, BaseType_t xFlags)
 This function tries to send TCP-data in a loop with a time-out.
 
static BaseType_t prvSetOptionTCPWindows (FreeRTOS_Socket_t *pxSocket, const void *pvOptionValue)
 Handle the socket option FREERTOS_SO_WIN_PROPERTIES.
 
static BaseType_t prvSetOptionLowHighWater (FreeRTOS_Socket_t *pxSocket, const void *pvOptionValue)
 Handle the socket option FREERTOS_SO_SET_LOW_HIGH_WATER.
 
static BaseType_t prvSetOptionSetFullSize (FreeRTOS_Socket_t *pxSocket, const void *pvOptionValue)
 Handle the socket option FREERTOS_SO_SET_FULL_SIZE.
 
static BaseType_t prvSetOptionStopRX (FreeRTOS_Socket_t *pxSocket, const void *pvOptionValue)
 Handle the socket option FREERTOS_SO_STOP_RX.
 
static void prvSetOptionTimeout (FreeRTOS_Socket_t *pxSocket, const void *pvOptionValue, BaseType_t xForSend)
 Handle the socket options FREERTOS_SO_RCVTIMEO and FREERTOS_SO_SNDTIMEO.
 
static BaseType_t prvSetOptionCloseAfterSend (FreeRTOS_Socket_t *pxSocket, const void *pvOptionValue)
 Handle the socket options FREERTOS_SO_CLOSE_AFTER_SEND.
 
static BaseType_t prvSetOptionReuseListenSocket (FreeRTOS_Socket_t *pxSocket, const void *pvOptionValue)
 Handle the socket options FREERTOS_SO_REUSE_LISTEN_SOCKET.
 
static void prvInitialiseTCPFields (FreeRTOS_Socket_t *pxSocket, size_t uxSocketSize)
 Called by FreeRTOS_socket(), it will initialise some essential TCP fields in the socket.
 
static int32_t prvRecvFrom_CopyPacket (uint8_t *pucEthernetBuffer, void *pvBuffer, size_t uxBufferLength, BaseType_t xFlags, int32_t lDataLength)
 Called by FreeRTOS_recvfrom(). it will copy the received data or just a pointer to the received data in case of zero-copy, to the buffer provided by the caller.
 
static int32_t prvSendTo_ActualSend (const FreeRTOS_Socket_t *pxSocket, const void *pvBuffer, size_t uxTotalDataLength, BaseType_t xFlags, const struct freertos_sockaddr *pxDestinationAddress, size_t uxPayloadOffset)
 Called by FreeRTOS_sendto(), it will actually send a UDP packet.
 
static void vTCPAddRxdata_Stored (FreeRTOS_Socket_t *pxSocket)
 Called by lTCPAddRxdata(), the received data has just been added to the RX-stream. When the space is dropped below a threshold, it may set the bit field 'bLowWater'. Also the socket's events bits for READ will be set.
 
+void vNetworkSocketsInit (void)
 Initialise the bound TCP/UDP socket lists.
 
Socket_t FreeRTOS_socket (BaseType_t xDomain, BaseType_t xType, BaseType_t xProtocol)
 allocate and initialise a socket.
 
SocketSet_t FreeRTOS_CreateSocketSet (void)
 Create a socket set.
 
void FreeRTOS_DeleteSocketSet (SocketSet_t xSocketSet)
 Delete a given socket set.
 
void FreeRTOS_FD_SET (Socket_t xSocket, SocketSet_t xSocketSet, EventBits_t xBitsToSet)
 Add a socket to a set.
 
void FreeRTOS_FD_CLR (Socket_t xSocket, SocketSet_t xSocketSet, EventBits_t xBitsToClear)
 Clear select bits for a socket. If the mask becomes 0, remove the socket from the set.
 
EventBits_t FreeRTOS_FD_ISSET (const ConstSocket_t xSocket, const ConstSocketSet_t xSocketSet)
 Test if a socket belongs to a socket-set and if so, which event bit(s) are set.
 
BaseType_t FreeRTOS_select (SocketSet_t xSocketSet, TickType_t xBlockTimeTicks)
 The select() statement: wait for an event to occur on any of the sockets included in a socket set and return its event bits when the event occurs.
 
int32_t FreeRTOS_recvfrom (const ConstSocket_t xSocket, void *pvBuffer, size_t uxBufferLength, BaseType_t xFlags, struct freertos_sockaddr *pxSourceAddress, socklen_t *pxSourceAddressLength)
 Receive data from a bound socket. In this library, the function can only be used with connection-less sockets (UDP). For TCP sockets, please use FreeRTOS_recv().
 
int32_t FreeRTOS_sendto (Socket_t xSocket, const void *pvBuffer, size_t uxTotalDataLength, BaseType_t xFlags, const struct freertos_sockaddr *pxDestinationAddress, socklen_t xDestinationAddressLength)
 Send data to a socket. The socket must have already been created by a successful call to FreeRTOS_socket(). It works for UDP-sockets only.
 
BaseType_t FreeRTOS_bind (Socket_t xSocket, struct freertos_sockaddr const *pxAddress, socklen_t xAddressLength)
 binds a socket to a local port number. If port 0 is provided, a system provided port number will be assigned. This function can be used for both UDP and TCP sockets. The actual binding will be performed by the IP-task to avoid mutual access to the bound-socket-lists (xBoundUDPSocketsList or xBoundTCPSocketsList).
 
BaseType_t vSocketBind (FreeRTOS_Socket_t *pxSocket, struct freertos_sockaddr *pxBindAddress, size_t uxAddressLength, BaseType_t xInternal)
 Internal version of bind() that should not be called directly. 'xInternal' is used for TCP sockets only: it allows to have several (connected) child sockets bound to the same server port.
 
BaseType_t FreeRTOS_closesocket (Socket_t xSocket)
 Close a socket and free the allocated space. In case of a TCP socket: the connection will not be closed automatically. Subsequent messages for the closed socket will be responded to with a RST. The IP-task will actually close the socket, after receiving a 'eSocketCloseEvent' message.
 
void * vSocketClose (FreeRTOS_Socket_t *pxSocket)
 This is the internal version of FreeRTOS_closesocket(). It will be called by the IPtask only to avoid problems with synchronicity.
 
BaseType_t FreeRTOS_setsockopt (Socket_t xSocket, int32_t lLevel, int32_t lOptionName, const void *pvOptionValue, size_t uxOptionLength)
 Set the socket options for the given socket.
 
FreeRTOS_Socket_t * pxUDPSocketLookup (UBaseType_t uxLocalPort)
 Find the UDP socket corresponding to the port number.
 
const char * FreeRTOS_inet_ntoa (uint32_t ulIPAddress, char *pcBuffer)
 Convert the 32-bit representation of the IP-address to the dotted decimal notation after some checks. A safe alternative is FreeRTOS_inet_ntop4().
 
BaseType_t FreeRTOS_inet_pton (BaseType_t xAddressFamily, const char *pcSource, void *pvDestination)
 Convert the dotted decimal format of the IP-address to the 32-bit representation.
 
const char * FreeRTOS_inet_ntop (BaseType_t xAddressFamily, const void *pvSource, char *pcDestination, socklen_t uxSize)
 Convert the 32-bit representation of the IP-address to the dotted decimal format based on the Address Family. (Only FREERTOS_AF_INET is allowed).
 
uint8_t ucASCIIToHex (char cChar)
 Convert an ASCII character to its corresponding hexadecimal value. Accepted characters are 0-9, a-f, and A-F.
 
void FreeRTOS_EUI48_ntop (const uint8_t *pucSource, char *pcTarget, char cTen, char cSeparator)
 This function converts a 48-bit MAC address to a human readable string.
 
BaseType_t FreeRTOS_EUI48_pton (const char *pcSource, uint8_t *pucTarget)
 This function converts a human readable string, representing an 48-bit MAC address, into a 6-byte address. Valid inputs are e.g. "62:48:5:83:A0:b2" and "0-12-34-fe-dc-ba".
 
uint32_t FreeRTOS_inet_addr (const char *pcIPAddress)
 Convert the IP address from "w.x.y.z" (dotted decimal) format to the 32-bit format.
 
size_t FreeRTOS_GetLocalAddress (ConstSocket_t xSocket, struct freertos_sockaddr *pxAddress)
 Function to get the local address and IP port of the given socket.
 
void vSocketWakeUpUser (FreeRTOS_Socket_t *pxSocket)
 Wake up the user of the given socket through event-groups.
 
BaseType_t FreeRTOS_connect (Socket_t xClientSocket, const struct freertos_sockaddr *pxAddress, socklen_t xAddressLength)
 Connect to a remote port.
 
Socket_t FreeRTOS_accept (Socket_t xServerSocket, struct freertos_sockaddr *pxAddress, socklen_t *pxAddressLength)
 Accept a connection on an listening socket.
 
BaseType_t FreeRTOS_recv (Socket_t xSocket, void *pvBuffer, size_t uxBufferLength, BaseType_t xFlags)
 Read incoming data from a TCP socket. Only after the last byte has been read, a close error might be returned.
 
uint8_t * FreeRTOS_get_tx_base (Socket_t xSocket)
 Get a direct pointer to the beginning of the circular transmit buffer.
 
uint8_t * FreeRTOS_get_tx_head (Socket_t xSocket, BaseType_t *pxLength)
 Get a direct pointer to the TX head of the circular transmit buffer.
 
BaseType_t FreeRTOS_send (Socket_t xSocket, const void *pvBuffer, size_t uxDataLength, BaseType_t xFlags)
 Send data using a TCP socket. It is not necessary to have the socket connected already. Outgoing data will be stored and delivered as soon as the socket gets connected.
 
BaseType_t FreeRTOS_listen (Socket_t xSocket, BaseType_t xBacklog)
 Request to put a socket in listen mode.
 
BaseType_t FreeRTOS_shutdown (Socket_t xSocket, BaseType_t xHow)
 Shutdown - This function will shut down the connection in both directions. However, it will first deliver all data queued for transmission, and also it will first wait to receive any missing packets from the peer.
 
TickType_t xTCPTimerCheck (BaseType_t xWillSleep)
 A TCP timer has expired, now check all TCP sockets for:
 
FreeRTOS_Socket_t * pxTCPSocketLookup (uint32_t ulLocalIP, UBaseType_t uxLocalPort, IPv46_Address_t xRemoteIP, UBaseType_t uxRemotePort)
 As multiple sockets may be bound to the same local port number looking up a socket is a little more complex: Both a local port, and a remote port and IP address are being used to find a match. For a socket in listening mode, the remote port and IP address are both 0.
 
const struct xSTREAM_BUFFER * FreeRTOS_get_rx_buf (ConstSocket_t xSocket)
 For the web server: borrow the circular Rx buffer for inspection. HTML driver wants to see if a sequence of 13/10/13/10 is available.
 
int32_t lTCPAddRxdata (FreeRTOS_Socket_t *pxSocket, size_t uxOffset, const uint8_t *pcData, uint32_t ulByteCount)
 Add data to the RxStream. When uxOffset > 0, data has come in out-of-order and will be put in front of the head so it can not be popped by the user.
 
BaseType_t FreeRTOS_GetRemoteAddress (ConstSocket_t xSocket, struct freertos_sockaddr *pxAddress)
 Function to get the remote IP-address and port number.
 
BaseType_t FreeRTOS_maywrite (ConstSocket_t xSocket)
 Check the number of bytes that may be added to txStream.
 
BaseType_t FreeRTOS_tx_space (ConstSocket_t xSocket)
 Get the number of bytes that can be written in the Tx buffer of the given socket.
 
BaseType_t FreeRTOS_tx_size (ConstSocket_t xSocket)
 Returns the number of bytes stored in the Tx buffer.
 
BaseType_t FreeRTOS_issocketconnected (ConstSocket_t xSocket)
 Is the socket connected.
 
BaseType_t FreeRTOS_mss (ConstSocket_t xSocket)
 Get the actual value of Maximum Segment Size ( MSS ) being used.
 
BaseType_t FreeRTOS_connstatus (ConstSocket_t xSocket)
 Get the connection status. The values correspond to the members of the enum 'eIPTCPState_t'.
 
BaseType_t FreeRTOS_rx_size (ConstSocket_t xSocket)
 Returns the number of bytes which can be read from the RX stream buffer.
 
BaseType_t xSocketValid (const ConstSocket_t xSocket)
 Check whether a given socket is valid or not. Validity is defined as the socket not being NULL and not being Invalid.
 
+void FreeRTOS_netstat (void)
 Get the net status. The IP-task will print a summary of all sockets and their connections.
 
BaseType_t xSocketSetSocketID (const Socket_t xSocket, void *pvSocketID)
 Set the value of the SocketID of a socket.
 
void * pvSocketGetSocketID (const ConstSocket_t xSocket)
 Retrieve the SocketID that is associated with a socket.
 
BaseType_t FreeRTOS_GetIPType (ConstSocket_t xSocket)
 Get the version of IP: either 'ipTYPE_IPv4' or 'ipTYPE_IPv6'.
 
static EventBits_t vSocketSelectTCP (FreeRTOS_Socket_t *pxSocket)
 This internal function will check if a given TCP socket has had any select event, either READ, WRITE, or EXCEPT.
 
void vSocketSelect (const SocketSelect_t *pxSocketSet)
 This internal non-blocking function will check all sockets that belong to a select set. The events bits of each socket will be updated, and it will check if an ongoing select() call must be interrupted because of an event has occurred.
 
+ + + + + + + +

+Variables

+List_t xBoundUDPSocketsList
 The list that contains mappings between sockets and port numbers. Accesses to this list must be protected by critical sections of some kind.
 
+List_t xBoundTCPSocketsList
 The list that contains mappings between sockets and port numbers. Accesses to this list must be protected by critical sections of some kind.
 
+

Detailed Description

+

Implements the Sockets API based on Berkeley sockets for the FreeRTOS+TCP network stack. Sockets are used by the application processes to interact with the IP-task which in turn interacts with the hardware.

+

Macro Definition Documentation

+ +

◆ socketAUTO_PORT_ALLOCATION_START_NUMBER

+ +
+
+ + + + +
#define socketAUTO_PORT_ALLOCATION_START_NUMBER   ( ( uint16_t ) 0x0400 )
+
+ +

If FreeRTOS_sendto() is called on a socket that is not bound to a port number then, depending on the FreeRTOSIPConfig.h settings, it might be that a port number is automatically generated for the socket. Automatically generated port numbers will be between socketAUTO_PORT_ALLOCATION_START_NUMBER and 0xffff.

+
Note
Per https://tools.ietf.org/html/rfc6056 "the dynamic ports consist of + the range 49152-65535. However, ephemeral port selection algorithms should + use the whole range 1024-65535" excluding those already in use (inbound or outbound).
+ +
+
+ +

◆ sock20_PERCENT

+ +
+
+ + + + +
#define sock20_PERCENT   20U
+
+

20% of the defined limit.

+ +
+
+ +

◆ sock80_PERCENT

+ +
+
+ + + + +
#define sock80_PERCENT   80U
+
+

80% of the defined limit.

+ +
+
+ +

◆ sock100_PERCENT

+ +
+
+ + + + +
#define sock100_PERCENT   100U
+
+

100% of the defined limit.

+ +
+
+ +

◆ sockDIGIT_COUNT

+ +
+
+ + + + +
#define sockDIGIT_COUNT   ( 3U )
+
+

Each nibble is expressed in at most 3 digits such as "192".

+ +
+
+

Function Documentation

+ +

◆ prvGetPrivatePortNumber()

+ +
+
+ + + + + +
+ + + + + + + + +
static uint16_t prvGetPrivatePortNumber (BaseType_t xProtocol)
+
+static
+
+ +

Find an available port number per https://tools.ietf.org/html/rfc6056.

+
Parameters
+ + +
[in]xProtocolFREERTOS_IPPROTO_TCP/FREERTOS_IPPROTO_UDP.
+
+
+
Returns
If an available protocol port is found then that port number is returned. Or else, 0 is returned.
+ +
+
+ +

◆ pxListFindListItemWithValue()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static const ListItem_t * pxListFindListItemWithValue (const List_t * pxList,
TickType_t xWantedItemValue 
)
+
+static
+
+ +

Find a list item associated with the wanted-item.

+
Parameters
+ + + +
[in]pxListThe list through which the search is to be conducted.
[in]xWantedItemValueThe wanted item whose association is to be found.
+
+
+
Returns
The list item holding the value being searched for. If nothing is found, then a NULL is returned.
+ +
+
+ +

◆ prvValidSocket()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static BaseType_t prvValidSocket (const FreeRTOS_Socket_t * pxSocket,
BaseType_t xProtocol,
BaseType_t xIsBound 
)
+
+static
+
+ +

Check whether the socket is valid or not.

+
Parameters
+ + + + +
[in]pxSocketThe socket being checked.
[in]xProtocolThe protocol for which the socket was created.
[in]xIsBoundpdTRUE when the socket should be bound, otherwise pdFALSE.
+
+
+
Returns
If the socket is valid, then pdPASS is returned or else, pdFAIL is returned.
+ +
+
+ +

◆ prvSockopt_so_buffer()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static BaseType_t prvSockopt_so_buffer (FreeRTOS_Socket_t * pxSocket,
int32_t lOptionName,
const void * pvOptionValue 
)
+
+static
+
+ +

Set the value of receive/send buffer after some preliminary checks.

+
Parameters
+ + + + +
[in]pxSocketThe socket whose options are being set.
[in]lOptionNameThe option name: either FREERTOS_SO_SNDBUF or FREERTOS_SO_SNDBUF.
[in]pvOptionValueThe value of the option being set.
+
+
+
Returns
If there is no error, then 0 is returned. Or a negative errno value is returned.
+ +
+
+ +

◆ prvDetermineSocketSize()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static BaseType_t prvDetermineSocketSize (BaseType_t xDomain,
BaseType_t xType,
BaseType_t xProtocol,
size_t * pxSocketSize 
)
+
+static
+
+ +

Determine the socket size for the given protocol.

+
Parameters
+ + + + + +
[in]xDomainThe domain for which the size of socket is being determined.
[in]xTypeIs this a datagram socket or a stream socket.
[in]xProtocolThe protocol being used.
[out]pxSocketSizePointer to a variable in which the size shall be returned if all checks pass.
+
+
+
Returns
pdPASS if socket size was determined and put in the parameter pxSocketSize correctly, else pdFAIL.
+ +
+
+ +

◆ prvSocketBindAdd()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static BaseType_t prvSocketBindAdd (FreeRTOS_Socket_t * pxSocket,
const struct freertos_sockaddr * pxAddress,
List_t * pxSocketList,
BaseType_t xInternal 
)
+
+static
+
+ +

: Bind a socket to a port number.

+
Parameters
+ + + + + +
[in]pxSocketThe socket to be bound.
[in]pxAddressThe socket will be bound to this address.
[in]pxSocketListwill either point to xBoundUDPSocketsList or xBoundTCPSocketsList.
[in]xInternalpdTRUE if this function is called 'internally', i.e. by the IP-task.
+
+
+ +
+
+ +

◆ prvRecvFromWaitForPacket()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static NetworkBufferDescriptor_t * prvRecvFromWaitForPacket (FreeRTOS_Socket_t const * pxSocket,
BaseType_t xFlags,
EventBits_t * pxEventBits 
)
+
+static
+
+ +

: called from FreeRTOS_recvfrom(). This function waits for an incoming UDP packet, or until a time-out occurs.

+
Parameters
+ + + + +
[in]pxSocketThe socket that receives UDP packets.
[in]xFlagsThe flags as passed to FreeRTOS_recvfrom().
[in,out]pxEventBitsThe last even received in this function, either eSOCKET_INTR or eSOCKET_RECEIVE.
+
+
+ +
+
+ +

◆ prvSendUDPPacket()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static int32_t prvSendUDPPacket (const FreeRTOS_Socket_t * pxSocket,
NetworkBufferDescriptor_t * pxNetworkBuffer,
size_t uxTotalDataLength,
BaseType_t xFlags,
const struct freertos_sockaddr * pxDestinationAddress,
TickType_t xTicksToWait,
size_t uxPayloadOffset 
)
+
+static
+
+ +

Forward a UDP packet to the IP-task, so it will be sent.

+
Parameters
+ + + + + + + + +
[in]pxSocketThe socket on which a packet is sent.
[in]pxNetworkBufferThe packet to be sent.
[in]uxTotalDataLengthThe total number of payload bytes in the packet.
[in]xFlagsThe flag 'FREERTOS_ZERO_COPY' will be checked.
[in]pxDestinationAddressThe address of the destination.
[in]xTicksToWaitNumber of ticks to wait, in case the IP-queue is full.
[in]uxPayloadOffsetThe number of bytes in the packet before the payload.
+
+
+
Returns
The number of bytes sent on success, otherwise zero.
+ +
+
+ +

◆ prvAcceptWaitClient()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static FreeRTOS_Socket_t * prvAcceptWaitClient (FreeRTOS_Socket_t * pxParentSocket,
struct freertos_sockaddr * pxAddress,
socklen_t * pxAddressLength 
)
+
+static
+
+ +

Check if a new connection has come in for a socket in listen mode.

+
Parameters
+ + + + +
[in]pxParentSocketThe parent socket, which is in listening mode.
[out]pxAddressThe address of the peer will be filled in 'pxAddress'.
[in]pxAddressLengthThe actual size of the space pointed to by 'pxAddress'.
+
+
+
Returns
A new connected socket or NULL.
+ +
+
+ +

◆ prvTCPCreateStream()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static StreamBuffer_t * prvTCPCreateStream (FreeRTOS_Socket_t * pxSocket,
BaseType_t xIsInputStream 
)
+
+static
+
+ +

Create the stream buffer for the given socket.

+
Parameters
+ + + +
[in]pxSocketthe socket to create the stream for.
[in]xIsInputStreamIs this input stream? pdTRUE/pdFALSE?
+
+
+
Returns
The stream buffer.
+ +
+
+ +

◆ prvTCPSendCheck()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static int32_t prvTCPSendCheck (FreeRTOS_Socket_t * pxSocket,
size_t uxDataLength 
)
+
+static
+
+ +

Called from FreeRTOS_send(): some checks which will be done before sending a TCP packed.

+
Parameters
+ + + +
[in]pxSocketThe socket owning the connection.
[in]uxDataLengthThe length of the data to be sent.
+
+
+
Returns
0: representing OK, else a negative error code will be returned.
+ +
+
+ +

◆ prvTCPSetSocketCount()

+ +
+
+ + + + + +
+ + + + + + + + +
static void prvTCPSetSocketCount (FreeRTOS_Socket_t const * pxSocketToDelete)
+
+static
+
+ +

When a child socket gets closed, make sure to update the child-count of the parent. When a listening parent socket is closed, make sure to close also all orphaned child-sockets.

+
Parameters
+ + +
[in]pxSocketToDeleteThe socket being closed.
+
+
+ +
+
+ +

◆ prvTCPConnectStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static BaseType_t prvTCPConnectStart (FreeRTOS_Socket_t * pxSocket,
struct freertos_sockaddr const * pxAddress 
)
+
+static
+
+ +

Called from FreeRTOS_connect(): make some checks and if allowed, send a message to the IP-task to start connecting to a remote socket.

+
Parameters
+ + + +
[in]pxSocketThe socket attempting to connect to a remote port.
[in]pxAddressThe address the socket is trying to connect to.
+
+
+
Returns
0 on successful checks or a negative error code.
+ +
+
+ +

◆ bMayConnect()

+ +
+
+ + + + + +
+ + + + + + + + +
static BaseType_t bMayConnect (FreeRTOS_Socket_t const * pxSocket)
+
+static
+
+ +

Check if it makes any sense to wait for a connect event.

+
Parameters
+ + +
[in]pxSocketThe socket trying to connect.
+
+
+
Returns
It may return: -EINPROGRESS, -EAGAIN, or 0 for OK.
+ +
+
+ +

◆ prvMakeSureSocketIsBound()

+ +
+
+ + + + + +
+ + + + + + + + +
static BaseType_t prvMakeSureSocketIsBound (FreeRTOS_Socket_t * pxSocket)
+
+static
+
+ +

Check if a socket is already bound to a 'random' port number, if not, try bind it to port 0.

+

Check if a socket is a valid UDP socket. In case it is not yet bound, bind it to port 0 ( random port ).

+
Parameters
+ + +
[in]pxSocketThe socket that must be bound to a port number.
+
+
+
Returns
Returns pdTRUE if the socket was already bound, or if the socket has been bound successfully.
+ +
+
+ +

◆ prvFindSelectedSocket()

+ +
+
+ + + + + +
+ + + + + + + + +
static void prvFindSelectedSocket (SocketSelect_t * pxSocketSet)
+
+static
+
+ +

Send a message to the IP-task to have it check all sockets belonging to 'pxSocketSet'.

+
Parameters
+ + +
[in]pxSocketSetThe socket set being asked to check.
+
+
+ +
+
+ +

◆ prvRecvWait()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static BaseType_t prvRecvWait (const FreeRTOS_Socket_t * pxSocket,
EventBits_t * pxEventBits,
BaseType_t xFlags 
)
+
+static
+
+ +

This routine will wait for data to arrive in the stream buffer.

+

After FreeRTOS_recv() has checked the validity of the parameters, this routine will wait for data to arrive in the stream buffer.

+
Parameters
+ + + + +
[in]pxSocketThe socket owning the connection.
[out]pxEventBitsA bit-mask of socket events will be set: eSOCKET_RECEIVE, eSOCKET_CLOSED, and or eSOCKET_INTR.
[in]xFlagsflags passed by the user, only 'FREERTOS_MSG_DONTWAIT' is checked in this function.
+
+
+ +
+
+ +

◆ prvRecvData()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static BaseType_t prvRecvData (FreeRTOS_Socket_t * pxSocket,
void * pvBuffer,
size_t uxBufferLength,
BaseType_t xFlags 
)
+
+static
+
+ +

Read the data from the stream buffer.

+

After all checks have been done in FreeRTOS_recv() read the data from the stream buffer.

+
Parameters
+ + + + + +
[in]pxSocketThe socket owning the connection.
[out]pvBufferThe buffer to store the incoming data in.
[in]uxBufferLengthThe length of the buffer so that the function does not do out of bound access.
[in]xFlagsThe flags for conveying preference. This routine will check for 'FREERTOS_ZERO_COPY and/or'.
+
+
+
Returns
The number of bytes actually received and stored in the pvBuffer.
+ +
+
+ +

◆ prvTCPSendLoop()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static BaseType_t prvTCPSendLoop (FreeRTOS_Socket_t * pxSocket,
const void * pvBuffer,
size_t uxDataLength,
BaseType_t xFlags 
)
+
+static
+
+ +

This function tries to send TCP-data in a loop with a time-out.

+

This internal function will try to send as many bytes as possible to a TCP-socket.

+
Parameters
+ + + + + +
[in]pxSocketThe socket owning the connection.
[in]pvBufferThe buffer containing the data to be sent.
[in]uxDataLengthThe number of bytes contained in the buffer.
[in]xFlagsOnly the flag 'FREERTOS_MSG_DONTWAIT' will be tested.
+
+
+
Returns
The number of bytes queued for transmission.
+ +
+
+ +

◆ prvSetOptionTCPWindows()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static BaseType_t prvSetOptionTCPWindows (FreeRTOS_Socket_t * pxSocket,
const void * pvOptionValue 
)
+
+static
+
+ +

Handle the socket option FREERTOS_SO_WIN_PROPERTIES.

+

Handle the socket option FREERTOS_SO_WIN_PROPERTIES, which sets the sizes of the TCP windows and the sizes of the stream buffers.

+
Parameters
+ + + +
[in]pxSocketThe socket whose options are being set.
[in]pvOptionValueThe pointer that is passed by the application.
+
+
+ +
+
+ +

◆ prvSetOptionLowHighWater()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static BaseType_t prvSetOptionLowHighWater (FreeRTOS_Socket_t * pxSocket,
const void * pvOptionValue 
)
+
+static
+
+ +

Handle the socket option FREERTOS_SO_SET_LOW_HIGH_WATER.

+

Handle the socket option FREERTOS_SO_SET_LOW_HIGH_WATER, which sets the low- and the high-water values for TCP reception. Useful when streaming music.

+
Parameters
+ + + +
[in]pxSocketThe socket whose options are being set.
[in]pvOptionValueThe pointer that is passed by the application.
+
+
+ +
+
+ +

◆ prvSetOptionSetFullSize()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static BaseType_t prvSetOptionSetFullSize (FreeRTOS_Socket_t * pxSocket,
const void * pvOptionValue 
)
+
+static
+
+ +

Handle the socket option FREERTOS_SO_SET_FULL_SIZE.

+

Handle the socket option FREERTOS_SO_SET_FULL_SIZE. When enabled, the IP-stack will only send packets when there are at least MSS bytes to send.

+
Parameters
+ + + +
[in]pxSocketThe socket whose options are being set.
[in]pvOptionValueThe option name like FREERTOS_SO_xxx_HANDLER.
+
+
+ +
+
+ +

◆ prvSetOptionStopRX()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static BaseType_t prvSetOptionStopRX (FreeRTOS_Socket_t * pxSocket,
const void * pvOptionValue 
)
+
+static
+
+ +

Handle the socket option FREERTOS_SO_STOP_RX.

+

Handle the socket option FREERTOS_SO_STOP_RX. Used in applications with streaming audio: tell the peer to stop or continue sending data.

+
Parameters
+ + + +
[in]pxSocketThe TCP socket used for the connection.
[in]pvOptionValueThe option name like FREERTOS_SO_xxx_HANDLER.
+
+
+ +
+
+ +

◆ prvSetOptionTimeout()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void prvSetOptionTimeout (FreeRTOS_Socket_t * pxSocket,
const void * pvOptionValue,
BaseType_t xForSend 
)
+
+static
+
+ +

Handle the socket options FREERTOS_SO_RCVTIMEO and FREERTOS_SO_SNDTIMEO.

+

Handle the socket options FREERTOS_SO_RCVTIMEO and FREERTOS_SO_SNDTIMEO. Used in applications with streaming audio: tell the peer to stop or continue sending data.

+
Parameters
+ + + + +
[in]pxSocketThe TCP socket used for the connection.
[in]pvOptionValueThe option name like FREERTOS_SO_xxx_HANDLER.
[in]xForSendwhen true, handle 'FREERTOS_SO_SNDTIMEO', otherwise handle the option FREERTOS_SO_RCVTIMEO.
+
+
+ +
+
+ +

◆ prvSetOptionCloseAfterSend()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static BaseType_t prvSetOptionCloseAfterSend (FreeRTOS_Socket_t * pxSocket,
const void * pvOptionValue 
)
+
+static
+
+ +

Handle the socket options FREERTOS_SO_CLOSE_AFTER_SEND.

+

Handle the socket options FREERTOS_SO_CLOSE_AFTER_SEND. As soon as the last byte has been transmitted, initiate a graceful closure of the TCP connection.

+
Parameters
+ + + +
[in]pxSocketThe TCP socket used for the connection.
[in]pvOptionValueA pointer to a binary value of size BaseType_t.
+
+
+ +
+
+ +

◆ prvSetOptionReuseListenSocket()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static BaseType_t prvSetOptionReuseListenSocket (FreeRTOS_Socket_t * pxSocket,
const void * pvOptionValue 
)
+
+static
+
+ +

Handle the socket options FREERTOS_SO_REUSE_LISTEN_SOCKET.

+

Handle the socket options FREERTOS_SO_REUSE_LISTEN_SOCKET. When set, a listening socket will turn itself into a child socket when it receives a connection.

+
Parameters
+ + + +
[in]pxSocketThe TCP socket used for the connection.
[in]pvOptionValueThe option name like FREERTOS_SO_xxx_HANDLER.
+
+
+ +
+
+ +

◆ prvInitialiseTCPFields()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void prvInitialiseTCPFields (FreeRTOS_Socket_t * pxSocket,
size_t uxSocketSize 
)
+
+static
+
+ +

Called by FreeRTOS_socket(), it will initialise some essential TCP fields in the socket.

+
Parameters
+ + + +
[in]pxSocketthe TCP socket to be initialised.
[in]uxSocketSizeThe calculated size of the socket, only used to gather memory usage statistics.
+
+
+ +
+
+ +

◆ prvRecvFrom_CopyPacket()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static int32_t prvRecvFrom_CopyPacket (uint8_t * pucEthernetBuffer,
void * pvBuffer,
size_t uxBufferLength,
BaseType_t xFlags,
int32_t lDataLength 
)
+
+static
+
+ +

Called by FreeRTOS_recvfrom(). it will copy the received data or just a pointer to the received data in case of zero-copy, to the buffer provided by the caller.

+
Parameters
+ + + + + + +
[in]pucEthernetBufferThe packet that was received.
[in]pvBufferThe user-supplied buffer.
[in]uxBufferLengthThe size of the user-supplied buffer.
[in]xFlagsOnly 'FREERTOS_ZERO_COPY' will be tested.
[in]lDataLengthThe number of bytes in the UDP payload.
+
+
+
Returns
The number of bytes copied to the use buffer.
+ +
+
+ +

◆ prvSendTo_ActualSend()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static int32_t prvSendTo_ActualSend (const FreeRTOS_Socket_t * pxSocket,
const void * pvBuffer,
size_t uxTotalDataLength,
BaseType_t xFlags,
const struct freertos_sockaddr * pxDestinationAddress,
size_t uxPayloadOffset 
)
+
+static
+
+ +

Called by FreeRTOS_sendto(), it will actually send a UDP packet.

+
Parameters
+ + + + + + + +
[in]pxSocketThe socket used for sending.
[in]pvBufferThe character buffer as provided by the caller.
[in]uxTotalDataLengthThe number of byte in the buffer.
[in]xFlagsThe flags that were passed to FreeRTOS_sendto() It will test for FREERTOS_MSG_DONTWAIT and for FREERTOS_ZERO_COPY.
[in]pxDestinationAddressThe IP-address to which the packet must be sent.
[in]uxPayloadOffsetThe calculated UDP payload offset, which depends on the IP type: IPv4 or IPv6.
+
+
+
Returns
The number of bytes stored in the socket for transmission.
+ +
+
+ +

◆ vTCPAddRxdata_Stored()

+ +
+
+ + + + + +
+ + + + + + + + +
static void vTCPAddRxdata_Stored (FreeRTOS_Socket_t * pxSocket)
+
+static
+
+ +

Called by lTCPAddRxdata(), the received data has just been added to the RX-stream. When the space is dropped below a threshold, it may set the bit field 'bLowWater'. Also the socket's events bits for READ will be set.

+
Parameters
+ + +
[in]pxSocketthe socket that has received new data.
+
+
+ +
+
+ +

◆ FreeRTOS_socket()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
Socket_t FreeRTOS_socket (BaseType_t xDomain,
BaseType_t xType,
BaseType_t xProtocol 
)
+
+ +

allocate and initialise a socket.

+
Parameters
+ + + + +
[in]xDomainThe domain in which the socket should be created.
[in]xTypeThe type of the socket.
[in]xProtocolThe protocol of the socket.
+
+
+
Returns
FREERTOS_INVALID_SOCKET if the allocation failed, or if there was a parameter error, otherwise a valid socket.
+ +
+
+ +

◆ FreeRTOS_CreateSocketSet()

+ +
+
+ + + + + + + + +
SocketSet_t FreeRTOS_CreateSocketSet (void )
+
+ +

Create a socket set.

+
Returns
The new socket set which was created, or NULL when allocation has failed.
+ +
+
+ +

◆ FreeRTOS_DeleteSocketSet()

+ +
+
+ + + + + + + + +
void FreeRTOS_DeleteSocketSet (SocketSet_t xSocketSet)
+
+ +

Delete a given socket set.

+
Parameters
+ + +
[in]xSocketSetThe socket set being deleted.
+
+
+ +
+
+ +

◆ FreeRTOS_FD_SET()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void FreeRTOS_FD_SET (Socket_t xSocket,
SocketSet_t xSocketSet,
EventBits_t xBitsToSet 
)
+
+ +

Add a socket to a set.

+
Parameters
+ + + + +
[in]xSocketThe socket being added.
[in]xSocketSetThe socket set being added to.
[in]xBitsToSetThe event bits to set, a combination of the values defined in 'eSelectEvent_t', for read, write, exception, etc.
+
+
+ +
+
+ +

◆ FreeRTOS_FD_CLR()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void FreeRTOS_FD_CLR (Socket_t xSocket,
SocketSet_t xSocketSet,
EventBits_t xBitsToClear 
)
+
+ +

Clear select bits for a socket. If the mask becomes 0, remove the socket from the set.

+
Parameters
+ + + + +
[in]xSocketThe socket whose select bits are being cleared.
[in]xSocketSetThe socket set of the socket.
[in]xBitsToClearThe bits to be cleared. Every '1' means that the corresponding bit will be cleared. See 'eSelectEvent_t' for the possible values.
+
+
+ +
+
+ +

◆ FreeRTOS_FD_ISSET()

+ +
+
+ + + + + + + + + + + + + + + + + + +
EventBits_t FreeRTOS_FD_ISSET (const ConstSocket_t xSocket,
const ConstSocketSet_t xSocketSet 
)
+
+ +

Test if a socket belongs to a socket-set and if so, which event bit(s) are set.

+
Parameters
+ + + +
[in]xSocketThe socket of interest.
[in]xSocketSetThe socket set to which the socket belongs.
+
+
+
Returns
If the socket belongs to the socket set: the event bits, otherwise zero.
+ +
+
+ +

◆ FreeRTOS_select()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BaseType_t FreeRTOS_select (SocketSet_t xSocketSet,
TickType_t xBlockTimeTicks 
)
+
+ +

The select() statement: wait for an event to occur on any of the sockets included in a socket set and return its event bits when the event occurs.

+
Parameters
+ + + +
[in]xSocketSetThe socket set including the sockets on which we are waiting for an event to occur.
[in]xBlockTimeTicksMaximum time ticks to wait for an event to occur. If the value is 'portMAX_DELAY' then the function will wait indefinitely for an event to occur.
+
+
+
Returns
The event bits (event flags) value for the socket set in which an event occurred. If any socket is signalled during the call, using FreeRTOS_SignalSocket() or FreeRTOS_SignalSocketFromISR(), then eSELECT_INTR is returned.
+ +
+
+ +

◆ FreeRTOS_recvfrom()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int32_t FreeRTOS_recvfrom (const ConstSocket_t xSocket,
void * pvBuffer,
size_t uxBufferLength,
BaseType_t xFlags,
struct freertos_sockaddr * pxSourceAddress,
socklen_t * pxSourceAddressLength 
)
+
+ +

Receive data from a bound socket. In this library, the function can only be used with connection-less sockets (UDP). For TCP sockets, please use FreeRTOS_recv().

+
Parameters
+ + + + + + + +
[in]xSocketThe socket to which the data is sent i.e. the listening socket.
[out]pvBufferThe buffer in which the data being received is to be stored.
[in]uxBufferLengthThe length of the buffer.
[in]xFlagsThe flags to indicate preferences while calling this function.
[out]pxSourceAddressThe source address from which the data is being sent.
[out]pxSourceAddressLengthThe length of the source address structure. This would always be a constant - 24 (in case of no error) as FreeRTOS+TCP makes the sizes of IPv4 and IPv6 structures equal (24-bytes) for compatibility.
+
+
+
Returns
The number of bytes received. Or else, an error code is returned. When it returns a negative value, the cause can be looked-up in 'FreeRTOS-Kernel/projdefs.h'.
+ +
+
+ +

◆ FreeRTOS_sendto()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int32_t FreeRTOS_sendto (Socket_t xSocket,
const void * pvBuffer,
size_t uxTotalDataLength,
BaseType_t xFlags,
const struct freertos_sockaddr * pxDestinationAddress,
socklen_t xDestinationAddressLength 
)
+
+ +

Send data to a socket. The socket must have already been created by a successful call to FreeRTOS_socket(). It works for UDP-sockets only.

+
Parameters
+ + + + + + + +
[in]xSocketThe socket being sent to.
[in]pvBufferPointer to the data being sent.
[in]uxTotalDataLengthLength (in bytes) of the data being sent.
[in]xFlagsFlags used to communicate preferences to the function. Possibly FREERTOS_MSG_DONTWAIT and/or FREERTOS_ZERO_COPY.
[in]pxDestinationAddressThe address to which the data is to be sent.
[in]xDestinationAddressLengthThis parameter is present to adhere to the Berkeley sockets standard. Else, it is not used.
+
+
+
Returns
When positive: the total number of bytes sent, when negative an error has occurred: it can be looked-up in 'FreeRTOS-Kernel/projdefs.h'.
+ +
+
+ +

◆ FreeRTOS_bind()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t FreeRTOS_bind (Socket_t xSocket,
struct freertos_sockaddr const * pxAddress,
socklen_t xAddressLength 
)
+
+ +

binds a socket to a local port number. If port 0 is provided, a system provided port number will be assigned. This function can be used for both UDP and TCP sockets. The actual binding will be performed by the IP-task to avoid mutual access to the bound-socket-lists (xBoundUDPSocketsList or xBoundTCPSocketsList).

+
Parameters
+ + + + +
[in]xSocketThe socket being bound.
[in]pxAddressThe address struct carrying the port number to which this socket is to be bound.
[in]xAddressLengthThis parameter is not used internally. The function signature is used to adhere to standard Berkeley sockets API.
+
+
+
Returns
The return value is 0 if the bind is successful. If some error occurred, then a negative value is returned.
+ +
+
+ +

◆ vSocketBind()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t vSocketBind (FreeRTOS_Socket_t * pxSocket,
struct freertos_sockaddr * pxBindAddress,
size_t uxAddressLength,
BaseType_t xInternal 
)
+
+ +

Internal version of bind() that should not be called directly. 'xInternal' is used for TCP sockets only: it allows to have several (connected) child sockets bound to the same server port.

+
Parameters
+ + + + + +
[in]pxSocketThe socket is to be bound.
[in]pxBindAddressThe port to which this socket should be bound.
[in]uxAddressLengthThe address length.
[in]xInternalpdTRUE is calling internally, else pdFALSE.
+
+
+
Returns
If the socket was bound to a port successfully, then a 0 is returned. Or else, an error code is returned.
+ +
+
+ +

◆ FreeRTOS_closesocket()

+ +
+
+ + + + + + + + +
BaseType_t FreeRTOS_closesocket (Socket_t xSocket)
+
+ +

Close a socket and free the allocated space. In case of a TCP socket: the connection will not be closed automatically. Subsequent messages for the closed socket will be responded to with a RST. The IP-task will actually close the socket, after receiving a 'eSocketCloseEvent' message.

+
Parameters
+ + +
[in]xSocketthe socket being closed.
+
+
+
Returns
There are three distinct values which can be returned: 0: If the xSocket is NULL/invalid. 1: If the socket was successfully closed (read the brief above). -1: If the socket was valid but could not be closed because the message could not be delivered to the IP-task. Try again later.
+ +
+
+ +

◆ vSocketClose()

+ +
+
+ + + + + + + + +
void * vSocketClose (FreeRTOS_Socket_t * pxSocket)
+
+ +

This is the internal version of FreeRTOS_closesocket(). It will be called by the IPtask only to avoid problems with synchronicity.

+
Parameters
+ + +
[in]pxSocketThe socket descriptor of the socket being closed.
+
+
+
Returns
Returns NULL, always.
+ +
+
+ +

◆ FreeRTOS_setsockopt()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t FreeRTOS_setsockopt (Socket_t xSocket,
int32_t lLevel,
int32_t lOptionName,
const void * pvOptionValue,
size_t uxOptionLength 
)
+
+ +

Set the socket options for the given socket.

+
Parameters
+ + + + + + +
[in]xSocketThe socket for which the options are to be set.
[in]lLevelNot used. Parameter is used to maintain the Berkeley sockets standard.
[in]lOptionNameThe name of the option to be set.
[in]pvOptionValueThe value of the option to be set.
[in]uxOptionLengthNot used. Parameter is used to maintain the Berkeley sockets standard.
+
+
+
Returns
If the option can be set with the given value, then 0 is returned. Else, an error code is returned.
+ +
+
+ +

◆ pxUDPSocketLookup()

+ +
+
+ + + + + + + + +
FreeRTOS_Socket_t * pxUDPSocketLookup (UBaseType_t uxLocalPort)
+
+ +

Find the UDP socket corresponding to the port number.

+
Parameters
+ + +
[in]uxLocalPortThe port whose corresponding bound UDP socket is to be found.
+
+
+
Returns
The socket owning the port if found or else NULL.
+ +
+
+ +

◆ FreeRTOS_inet_ntoa()

+ +
+
+ + + + + + + + + + + + + + + + + + +
const char * FreeRTOS_inet_ntoa (uint32_t ulIPAddress,
char * pcBuffer 
)
+
+ +

Convert the 32-bit representation of the IP-address to the dotted decimal notation after some checks. A safe alternative is FreeRTOS_inet_ntop4().

+
Parameters
+ + + +
[in]ulIPAddress32-bit representation of the IP-address.
[out]pcBufferThe buffer where the dotted decimal representation will be stored if all checks pass. The buffer must be at least 16 bytes long.
+
+
+
Returns
The pointer returned will be same as pcBuffer and will have the address stored in the location.
+ +
+
+ +

◆ FreeRTOS_inet_pton()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t FreeRTOS_inet_pton (BaseType_t xAddressFamily,
const char * pcSource,
void * pvDestination 
)
+
+ +

Convert the dotted decimal format of the IP-address to the 32-bit representation.

+
Parameters
+ + + + +
[in]xAddressFamilyThe Address family to which the IP-address belongs to. Only FREERTOS_AF_INET (IPv4) is supported.
[in]pcSourcePointer to the string holding the dotted decimal representation of the IP-address.
[out]pvDestinationThe pointer to the address struct/variable where the converted IP-address will be stored. The buffer must be 4 bytes long in case of a IPv4 address.
+
+
+
Returns
If all checks pass, then pdPASS is returned or else pdFAIL is returned.
+ +
+
+ +

◆ FreeRTOS_inet_ntop()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
const char * FreeRTOS_inet_ntop (BaseType_t xAddressFamily,
const void * pvSource,
char * pcDestination,
socklen_t uxSize 
)
+
+ +

Convert the 32-bit representation of the IP-address to the dotted decimal format based on the Address Family. (Only FREERTOS_AF_INET is allowed).

+
Parameters
+ + + + + +
[in]xAddressFamilyThe address family of the IP-address.
[in]pvSourcePointer to the 32-bit representation of IP-address.
[out]pcDestinationThe pointer to the character array where the dotted decimal address will be stored if every check does pass.
[in]uxSizeSize of the character array. This value makes sure that the code doesn't write beyond it's bounds.
+
+
+
Returns
If every check does pass, then the pointer to the pcDestination is returned holding the dotted decimal format of IP-address. Else, a NULL is returned.
+ +
+
+ +

◆ ucASCIIToHex()

+ +
+
+ + + + + + + + +
uint8_t ucASCIIToHex (char cChar)
+
+ +

Convert an ASCII character to its corresponding hexadecimal value. Accepted characters are 0-9, a-f, and A-F.

+
Parameters
+ + +
[in]cCharThe character to be converted.
+
+
+
Returns
The hexadecimal value, between 0 and 15. When the character is not valid, socketINVALID_HEX_CHAR will be returned.
+ +
+
+ +

◆ FreeRTOS_EUI48_ntop()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void FreeRTOS_EUI48_ntop (const uint8_t * pucSource,
char * pcTarget,
char cTen,
char cSeparator 
)
+
+ +

This function converts a 48-bit MAC address to a human readable string.

+
Parameters
+ + + + + +
[in]pucSourceA pointer to an array of 6 bytes.
[out]pcTargetA buffer that is 18 bytes long, it will contain the resulting string.
[in]cTenEither an 'A' or an 'a'. It determines whether the hex numbers will use capital or small letters.
[in]cSeparatorThe separator that should appear between the bytes, either ':' or '-'.
+
+
+ +
+
+ +

◆ FreeRTOS_EUI48_pton()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BaseType_t FreeRTOS_EUI48_pton (const char * pcSource,
uint8_t * pucTarget 
)
+
+ +

This function converts a human readable string, representing an 48-bit MAC address, into a 6-byte address. Valid inputs are e.g. "62:48:5:83:A0:b2" and "0-12-34-fe-dc-ba".

+
Parameters
+ + + +
[in]pcSourceThe null terminated string to be parsed.
[out]pucTargetA buffer that is 6 bytes long, it will contain the MAC address.
+
+
+
Returns
pdTRUE in case the string got parsed correctly, otherwise pdFALSE.
+ +
+
+ +

◆ FreeRTOS_inet_addr()

+ +
+
+ + + + + + + + +
uint32_t FreeRTOS_inet_addr (const char * pcIPAddress)
+
+ +

Convert the IP address from "w.x.y.z" (dotted decimal) format to the 32-bit format.

+
Parameters
+ + +
[in]pcIPAddressThe character string pointer holding the IP-address in the "W.X.Y.Z" (dotted decimal) format.
+
+
+
Returns
The 32-bit representation of IP(v4) address.
+ +
+
+ +

◆ FreeRTOS_GetLocalAddress()

+ +
+
+ + + + + + + + + + + + + + + + + + +
size_t FreeRTOS_GetLocalAddress (ConstSocket_t xSocket,
struct freertos_sockaddr * pxAddress 
)
+
+ +

Function to get the local address and IP port of the given socket.

+
Parameters
+ + + +
[in]xSocketSocket whose port is to be added to the pxAddress.
[out]pxAddressStructure in which the IP address and the port number is returned.
+
+
+
Returns
Size of the freertos_sockaddr structure.
+ +
+
+ +

◆ vSocketWakeUpUser()

+ +
+
+ + + + + + + + +
void vSocketWakeUpUser (FreeRTOS_Socket_t * pxSocket)
+
+ +

Wake up the user of the given socket through event-groups.

+
Parameters
+ + +
[in]pxSocketThe socket whose user is to be woken up.
+
+
+ +
+
+ +

◆ FreeRTOS_connect()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t FreeRTOS_connect (Socket_t xClientSocket,
const struct freertos_sockaddr * pxAddress,
socklen_t xAddressLength 
)
+
+ +

Connect to a remote port.

+
Parameters
+ + + + +
[in]xClientSocketThe socket initiating the connection.
[in]pxAddressThe address of the remote socket.
[in]xAddressLengthThis parameter is not used. It is kept in the function signature to adhere to the Berkeley sockets standard.
+
+
+
Returns
0 is returned on a successful connection, else a negative error code is returned.
+ +
+
+ +

◆ FreeRTOS_accept()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
Socket_t FreeRTOS_accept (Socket_t xServerSocket,
struct freertos_sockaddr * pxAddress,
socklen_t * pxAddressLength 
)
+
+ +

Accept a connection on an listening socket.

+
Parameters
+ + + + +
[in]xServerSocketThe socket in listening mode.
[out]pxAddressThe address of the machine trying to connect to this node is returned in this pointer.
[out]pxAddressLengthThe length of the address of the remote machine.
+
+
+
Returns
FreeRTOS_accept: can return a new connected socket if the server socket is in listen mode and receives a connection request. The new socket will be bound already to the same port number as the listening socket.
+ +
+
+ +

◆ FreeRTOS_recv()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t FreeRTOS_recv (Socket_t xSocket,
void * pvBuffer,
size_t uxBufferLength,
BaseType_t xFlags 
)
+
+ +

Read incoming data from a TCP socket. Only after the last byte has been read, a close error might be returned.

+
Parameters
+ + + + + +
[in]xSocketThe socket owning the connection.
[out]pvBufferThe buffer to store the incoming data in.
[in]uxBufferLengthThe length of the buffer so that the function does not do out of bound access.
[in]xFlagsThe flags for conveying preference. The values FREERTOS_MSG_DONTWAIT, FREERTOS_ZERO_COPY and/or FREERTOS_MSG_PEEK can be used.
+
+
+
Returns
The number of bytes actually received and stored in the pvBuffer.
+ +
+
+ +

◆ FreeRTOS_get_tx_base()

+ +
+
+ + + + + + + + +
uint8_t * FreeRTOS_get_tx_base (Socket_t xSocket)
+
+ +

Get a direct pointer to the beginning of the circular transmit buffer.

+
Parameters
+ + +
[in]xSocketThe socket owning the buffer.
+
+
+
Returns
Address the first byte in the circular transmit buffer if all checks pass. Or else, NULL is returned.
+ +
+
+ +

◆ FreeRTOS_get_tx_head()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint8_t * FreeRTOS_get_tx_head (Socket_t xSocket,
BaseType_t * pxLength 
)
+
+ +

Get a direct pointer to the TX head of the circular transmit buffer.

+
Parameters
+ + + +
[in]xSocketThe socket owning the buffer.
[in]pxLengthThis will contain the number of bytes that may be written.
+
+
+
Returns
Head of the circular transmit buffer if all checks pass. Or else, NULL is returned.
+ +
+
+ +

◆ FreeRTOS_send()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t FreeRTOS_send (Socket_t xSocket,
const void * pvBuffer,
size_t uxDataLength,
BaseType_t xFlags 
)
+
+ +

Send data using a TCP socket. It is not necessary to have the socket connected already. Outgoing data will be stored and delivered as soon as the socket gets connected.

+
Parameters
+ + + + + +
[in]xSocketThe socket owning the connection.
[in]pvBufferThe buffer containing the data. The value of this pointer may be NULL in case zero-copy transmissions are used. It is used in combination with 'FreeRTOS_get_tx_head()'.
[in]uxDataLengthThe length of the data to be added.
[in]xFlagsThis parameter is not used. (zero or FREERTOS_MSG_DONTWAIT).
+
+
+
Returns
The number of bytes actually sent. Zero when nothing could be sent or a negative error code in case an error occurred.
+ +
+
+ +

◆ FreeRTOS_listen()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BaseType_t FreeRTOS_listen (Socket_t xSocket,
BaseType_t xBacklog 
)
+
+ +

Request to put a socket in listen mode.

+
Parameters
+ + + +
[in]xSocketthe socket to be put in listening mode.
[in]xBacklogMaximum number of child sockets.
+
+
+
Returns
0 in case of success, or else a negative error code is returned.
+ +
+
+ +

◆ FreeRTOS_shutdown()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BaseType_t FreeRTOS_shutdown (Socket_t xSocket,
BaseType_t xHow 
)
+
+ +

Shutdown - This function will shut down the connection in both directions. However, it will first deliver all data queued for transmission, and also it will first wait to receive any missing packets from the peer.

+
Parameters
+ + + +
[in]xSocketThe socket owning the connection.
[in]xHowNot used. Just present to stick to Berkeley standard.
+
+
+
Returns
0 on successful shutdown or else a negative error code.
+ +
+
+ +

◆ xTCPTimerCheck()

+ +
+
+ + + + + + + + +
TickType_t xTCPTimerCheck (BaseType_t xWillSleep)
+
+ +

A TCP timer has expired, now check all TCP sockets for:

+
    +
  • Active connect
  • +
  • Send a delayed ACK
  • +
  • Send new data
  • +
  • Send a keep-alive packet
  • +
  • Check for timeout (in non-connected states only)
  • +
+
Parameters
+ + +
[in]xWillSleepWhether the calling task is going to sleep.
+
+
+
Returns
Minimum amount of time before the timer shall expire.
+ +
+
+ +

◆ pxTCPSocketLookup()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FreeRTOS_Socket_t * pxTCPSocketLookup (uint32_t ulLocalIP,
UBaseType_t uxLocalPort,
IPv46_Address_t xRemoteIP,
UBaseType_t uxRemotePort 
)
+
+ +

As multiple sockets may be bound to the same local port number looking up a socket is a little more complex: Both a local port, and a remote port and IP address are being used to find a match. For a socket in listening mode, the remote port and IP address are both 0.

+
Parameters
+ + + + + +
[in]ulLocalIPLocal IP address. Ignored for now.
[in]uxLocalPortLocal port number.
[in]xRemoteIPRemote (peer) IP address.
[in]uxRemotePortRemote (peer) port.
+
+
+
Returns
The socket which was found.
+ +
+
+ +

◆ FreeRTOS_get_rx_buf()

+ +
+
+ + + + + + + + +
const struct xSTREAM_BUFFER * FreeRTOS_get_rx_buf (ConstSocket_t xSocket)
+
+ +

For the web server: borrow the circular Rx buffer for inspection. HTML driver wants to see if a sequence of 13/10/13/10 is available.

+
Parameters
+ + +
[in]xSocketThe socket whose Rx stream is to be returned.
+
+
+
Returns
The Rx stream of the socket if all checks pass, else NULL.
+ +
+
+ +

◆ lTCPAddRxdata()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int32_t lTCPAddRxdata (FreeRTOS_Socket_t * pxSocket,
size_t uxOffset,
const uint8_t * pcData,
uint32_t ulByteCount 
)
+
+ +

Add data to the RxStream. When uxOffset > 0, data has come in out-of-order and will be put in front of the head so it can not be popped by the user.

+
Parameters
+ + + + + +
[in]pxSocketThe socket to whose RxStream data is to be added.
[in]uxOffsetOffset of the packet.
[in]pcDataThe data to be added to the RxStream.
[in]ulByteCountNumber of bytes in the data.
+
+
+
Returns
The number of bytes actually added to the RxStream. Or else, a negative error code is returned.
+ +
+
+ +

◆ FreeRTOS_GetRemoteAddress()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BaseType_t FreeRTOS_GetRemoteAddress (ConstSocket_t xSocket,
struct freertos_sockaddr * pxAddress 
)
+
+ +

Function to get the remote IP-address and port number.

+
Parameters
+ + + +
[in]xSocketSocket owning the connection.
[out]pxAddressThe address pointer to which the address is to be added.
+
+
+
Returns
The size of the address being returned. Or else a negative error code will be returned.
+ +
+
+ +

◆ FreeRTOS_maywrite()

+ +
+
+ + + + + + + + +
BaseType_t FreeRTOS_maywrite (ConstSocket_t xSocket)
+
+ +

Check the number of bytes that may be added to txStream.

+
Parameters
+ + +
[in]xSocketThe socket to be checked.
+
+
+
Returns
the number of bytes that may be added to txStream or else a negative error code.
+ +
+
+ +

◆ FreeRTOS_tx_space()

+ +
+
+ + + + + + + + +
BaseType_t FreeRTOS_tx_space (ConstSocket_t xSocket)
+
+ +

Get the number of bytes that can be written in the Tx buffer of the given socket.

+
Parameters
+ + +
[in]xSocketthe socket to be checked.
+
+
+
Returns
The bytes that can be written. Or else an error code.
+ +
+
+ +

◆ FreeRTOS_tx_size()

+ +
+
+ + + + + + + + +
BaseType_t FreeRTOS_tx_size (ConstSocket_t xSocket)
+
+ +

Returns the number of bytes stored in the Tx buffer.

+
Parameters
+ + +
[in]xSocketThe socket to be checked.
+
+
+
Returns
The number of bytes stored in the Tx buffer of the socket. Or an error code.
+ +
+
+ +

◆ FreeRTOS_issocketconnected()

+ +
+
+ + + + + + + + +
BaseType_t FreeRTOS_issocketconnected (ConstSocket_t xSocket)
+
+ +

Is the socket connected.

+
Parameters
+ + +
[in]xSocketThe socket being checked.
+
+
+
Returns
pdTRUE if TCP socket is connected.
+ +
+
+ +

◆ FreeRTOS_mss()

+ +
+
+ + + + + + + + +
BaseType_t FreeRTOS_mss (ConstSocket_t xSocket)
+
+ +

Get the actual value of Maximum Segment Size ( MSS ) being used.

+
Parameters
+ + +
[in]xSocketThe socket whose MSS is to be returned.
+
+
+
Returns
the actual size of MSS being used or an error code.
+ +
+
+ +

◆ FreeRTOS_connstatus()

+ +
+
+ + + + + + + + +
BaseType_t FreeRTOS_connstatus (ConstSocket_t xSocket)
+
+ +

Get the connection status. The values correspond to the members of the enum 'eIPTCPState_t'.

+
Parameters
+ + +
[in]xSocketSocket to get the connection status from.
+
+
+
Returns
The connection status or an error code.
+
Note
For internal use only.
+ +
+
+ +

◆ FreeRTOS_rx_size()

+ +
+
+ + + + + + + + +
BaseType_t FreeRTOS_rx_size (ConstSocket_t xSocket)
+
+ +

Returns the number of bytes which can be read from the RX stream buffer.

+
Parameters
+ + +
[in]xSocketthe socket to get the number of bytes from.
+
+
+
Returns
Returns the number of bytes which can be read. Or an error code is returned.
+ +
+
+ +

◆ xSocketValid()

+ +
+
+ + + + + + + + +
BaseType_t xSocketValid (const ConstSocket_t xSocket)
+
+ +

Check whether a given socket is valid or not. Validity is defined as the socket not being NULL and not being Invalid.

+
Parameters
+ + +
[in]xSocketThe socket to be checked.
+
+
+
Returns
pdTRUE if the socket is valid, else pdFALSE.
+ +
+
+ +

◆ xSocketSetSocketID()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BaseType_t xSocketSetSocketID (const Socket_t xSocket,
void * pvSocketID 
)
+
+ +

Set the value of the SocketID of a socket.

+
Parameters
+ + + +
[in]xSocketThe socket whose ID should be set.
[in]pvSocketIDThe new value for the SocketID.
+
+
+
Returns
Zero if the socket was valid, otherwise -EINVAL.
+ +
+
+ +

◆ pvSocketGetSocketID()

+ +
+
+ + + + + + + + +
void * pvSocketGetSocketID (const ConstSocket_t xSocket)
+
+ +

Retrieve the SocketID that is associated with a socket.

+
Parameters
+ + +
[in]xSocketThe socket whose ID should be returned.
+
+
+
Returns
The current value of pvSocketID, or NULL in case the socket pointer is not valid or when the ID was not yet set.
+ +
+
+ +

◆ FreeRTOS_GetIPType()

+ +
+
+ + + + + + + + +
BaseType_t FreeRTOS_GetIPType (ConstSocket_t xSocket)
+
+ +

Get the version of IP: either 'ipTYPE_IPv4' or 'ipTYPE_IPv6'.

+
Parameters
+ + +
[in]xSocketThe socket to be checked.
+
+
+
Returns
Either ipTYPE_IPv4 or ipTYPE_IPv6.
+ +
+
+ +

◆ vSocketSelectTCP()

+ +
+
+ + + + + +
+ + + + + + + + +
static EventBits_t vSocketSelectTCP (FreeRTOS_Socket_t * pxSocket)
+
+static
+
+ +

This internal function will check if a given TCP socket has had any select event, either READ, WRITE, or EXCEPT.

+
Parameters
+ + +
[in]pxSocketThe socket which needs to be checked.
+
+
+
Returns
An event mask of events that are active for this socket.
+ +
+
+ +

◆ vSocketSelect()

+ +
+
+ + + + + + + + +
void vSocketSelect (const SocketSelect_t * pxSocketSet)
+
+ +

This internal non-blocking function will check all sockets that belong to a select set. The events bits of each socket will be updated, and it will check if an ongoing select() call must be interrupted because of an event has occurred.

+
Parameters
+ + +
[in]pxSocketSetThe socket-set which is to be waited on for change.
+
+
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___stream___buffer_8c.html b/V4.3.1/_free_r_t_o_s___stream___buffer_8c.html new file mode 100644 index 000000000..63f81d371 --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___stream___buffer_8c.html @@ -0,0 +1,621 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_Stream_Buffer.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_Stream_Buffer.c File Reference
+
+
+ +

Provides the API for managing/creating the stream buffers in the FreeRTOS+TCP network stack. +More...

+
#include <stdint.h>
+#include <string.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "FreeRTOS_IP.h"
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

size_t uxStreamBufferSpace (const StreamBuffer_t *const pxBuffer, size_t uxLower, size_t uxUpper)
 Get the space between lower and upper value provided to the function.
 
size_t uxStreamBufferDistance (const StreamBuffer_t *const pxBuffer, size_t uxLower, size_t uxUpper)
 Get the distance between lower and upper value provided to the function.
 
size_t uxStreamBufferGetSpace (const StreamBuffer_t *const pxBuffer)
 Get the number of items which can be added to the buffer at the head before reaching the tail.
 
size_t uxStreamBufferFrontSpace (const StreamBuffer_t *const pxBuffer)
 Get the distance between the pointer in free space and the tail.
 
size_t uxStreamBufferGetSize (const StreamBuffer_t *const pxBuffer)
 Get the number of items which can be read from the tail before reaching the head.
 
size_t uxStreamBufferMidSpace (const StreamBuffer_t *const pxBuffer)
 Get the space between the mid pointer and the head in the stream buffer.
 
void vStreamBufferClear (StreamBuffer_t *const pxBuffer)
 Clear the stream buffer.
 
void vStreamBufferMoveMid (StreamBuffer_t *const pxBuffer, const size_t uxCount)
 Move the mid pointer forward by given byte count.
 
BaseType_t xStreamBufferLessThenEqual (const StreamBuffer_t *const pxBuffer, size_t uxLeft, size_t uxRight)
 Check whether the value in left is less than or equal to the value in right from the perspective of the circular stream buffer.
 
size_t uxStreamBufferGetPtr (StreamBuffer_t *const pxBuffer, uint8_t **const ppucData)
 Get the pointer to data and the amount of data which can be read in one go.
 
size_t uxStreamBufferAdd (StreamBuffer_t *const pxBuffer, size_t uxOffset, const uint8_t *const pucData, size_t uxByteCount)
 Adds data to a stream buffer.
 
size_t uxStreamBufferGet (StreamBuffer_t *const pxBuffer, size_t uxOffset, uint8_t *const pucData, size_t uxMaxCount, BaseType_t xPeek)
 Read bytes from stream buffer.
 
+

Detailed Description

+

Provides the API for managing/creating the stream buffers in the FreeRTOS+TCP network stack.

+

Function Documentation

+ +

◆ uxStreamBufferSpace()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
size_t uxStreamBufferSpace (const StreamBuffer_t *const pxBuffer,
size_t uxLower,
size_t uxUpper 
)
+
+ +

Get the space between lower and upper value provided to the function.

+
Parameters
+ + + + +
[in]pxBufferThe circular stream buffer.
[in]uxLowerThe lower value.
[in]uxUpperThe upper value.
+
+
+
Returns
The space between uxLower and uxUpper, which equals to the distance minus 1.
+ +
+
+ +

◆ uxStreamBufferDistance()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
size_t uxStreamBufferDistance (const StreamBuffer_t *const pxBuffer,
size_t uxLower,
size_t uxUpper 
)
+
+ +

Get the distance between lower and upper value provided to the function.

+
Parameters
+ + + + +
[in]pxBufferThe circular stream buffer.
[in]uxLowerThe lower value.
[in]uxUpperThe upper value.
+
+
+
Returns
The distance between uxLower and uxUpper.
+ +
+
+ +

◆ uxStreamBufferGetSpace()

+ +
+
+ + + + + + + + +
size_t uxStreamBufferGetSpace (const StreamBuffer_t *const pxBuffer)
+
+ +

Get the number of items which can be added to the buffer at the head before reaching the tail.

+
Parameters
+ + +
[in]pxBufferThe circular stream buffer.
+
+
+
Returns
The number of items which can still be added to uxHead before hitting on uxTail
+ +
+
+ +

◆ uxStreamBufferFrontSpace()

+ +
+
+ + + + + + + + +
size_t uxStreamBufferFrontSpace (const StreamBuffer_t *const pxBuffer)
+
+ +

Get the distance between the pointer in free space and the tail.

+
Parameters
+ + +
[in]pxBufferThe circular stream buffer.
+
+
+
Returns
Distance between uxFront and uxTail or the number of items which can still be added to uxFront, before hitting on uxTail.
+ +
+
+ +

◆ uxStreamBufferGetSize()

+ +
+
+ + + + + + + + +
size_t uxStreamBufferGetSize (const StreamBuffer_t *const pxBuffer)
+
+ +

Get the number of items which can be read from the tail before reaching the head.

+
Parameters
+ + +
[in]pxBufferThe circular stream buffer.
+
+
+
Returns
The number of items which can be read from the tail before reaching the head.
+ +
+
+ +

◆ uxStreamBufferMidSpace()

+ +
+
+ + + + + + + + +
size_t uxStreamBufferMidSpace (const StreamBuffer_t *const pxBuffer)
+
+ +

Get the space between the mid pointer and the head in the stream buffer.

+
Parameters
+ + +
[in]pxBufferThe circular stream buffer.
+
+
+
Returns
The space between the mid pointer and the head.
+ +
+
+ +

◆ vStreamBufferClear()

+ +
+
+ + + + + + + + +
void vStreamBufferClear (StreamBuffer_t *const pxBuffer)
+
+ +

Clear the stream buffer.

+
Parameters
+ + +
[in]pxBufferThe circular stream buffer.
+
+
+ +
+
+ +

◆ vStreamBufferMoveMid()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void vStreamBufferMoveMid (StreamBuffer_t *const pxBuffer,
const size_t uxCount 
)
+
+ +

Move the mid pointer forward by given byte count.

+
Parameters
+ + + +
[in]pxBufferThe circular stream buffer.
[in]uxCountThe byte count by which the mid pointer is to be moved.
+
+
+ +
+
+ +

◆ xStreamBufferLessThenEqual()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t xStreamBufferLessThenEqual (const StreamBuffer_t *const pxBuffer,
size_t uxLeft,
size_t uxRight 
)
+
+ +

Check whether the value in left is less than or equal to the value in right from the perspective of the circular stream buffer.

+
Parameters
+ + + + +
[in]pxBufferThe circular stream buffer.
[in]uxLeftThe left pointer in the stream buffer.
[in]uxRightThe right value pointer in the stream buffer.
+
+
+
Returns
pdTRUE if uxLeft <= uxRight, else pdFALSE.
+ +
+
+ +

◆ uxStreamBufferGetPtr()

+ +
+
+ + + + + + + + + + + + + + + + + + +
size_t uxStreamBufferGetPtr (StreamBuffer_t *const pxBuffer,
uint8_t **const ppucData 
)
+
+ +

Get the pointer to data and the amount of data which can be read in one go.

+
Parameters
+ + + +
[in]pxBufferThe circular stream buffer.
[out]ppucDataPointer to the data pointer which will point to the data which can be read.
+
+
+
Returns
The number of bytes which can be read in one go (which might be less than actual number of available bytes since this is a circular buffer and tail can loop back to the start of the buffer).
+ +
+
+ +

◆ uxStreamBufferAdd()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
size_t uxStreamBufferAdd (StreamBuffer_t *const pxBuffer,
size_t uxOffset,
const uint8_t *const pucData,
size_t uxByteCount 
)
+
+ +

Adds data to a stream buffer.

+
Parameters
+ + + + + +
[in,out]pxBufferThe buffer to which the bytes will be added.
[in]uxOffsetIf uxOffset > 0, data will be written at an offset from uxHead while uxHead will not be moved yet.
[in]pucDataA pointer to the data to be added. If 'pucData' equals NULL, the function is called to advance the 'Head' only.
[in]uxByteCountThe number of bytes to add.
+
+
+
Returns
The number of bytes added to the buffer.
+ +
+
+ +

◆ uxStreamBufferGet()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
size_t uxStreamBufferGet (StreamBuffer_t *const pxBuffer,
size_t uxOffset,
uint8_t *const pucData,
size_t uxMaxCount,
BaseType_t xPeek 
)
+
+ +

Read bytes from stream buffer.

+
Parameters
+ + + + + + +
[in]pxBufferThe buffer from which the bytes will be read.
[in]uxOffsetcan be used to read data located at a certain offset from 'lTail'.
[in,out]pucDataIf 'pucData' equals NULL, the function is called to advance 'lTail' only.
[in]uxMaxCountThe number of bytes to read.
[in]xPeekif 'xPeek' is pdTRUE, or if 'uxOffset' is non-zero, the 'lTail' pointer will not be advanced.
+
+
+
Returns
The count of the bytes read.
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___t_c_p___i_p_8c.html b/V4.3.1/_free_r_t_o_s___t_c_p___i_p_8c.html new file mode 100644 index 000000000..bf7c76382 --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___t_c_p___i_p_8c.html @@ -0,0 +1,473 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_TCP_IP.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_TCP_IP.c File Reference
+
+
+ +

Module which handles the TCP connections for FreeRTOS+TCP. It depends on FreeRTOS_TCP_WIN.c, which handles the TCP windowing schemes. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "queue.h"
+#include "semphr.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_Sockets.h"
+#include "FreeRTOS_IP_Private.h"
+#include "FreeRTOS_IP_Utils.h"
+#include "FreeRTOS_UDP_IP.h"
+#include "FreeRTOS_DHCP.h"
+#include "NetworkInterface.h"
+#include "NetworkBufferManagement.h"
+#include "FreeRTOS_TCP_Reception.h"
+#include "FreeRTOS_TCP_Transmission.h"
+#include "FreeRTOS_TCP_State_Handling.h"
+#include "FreeRTOS_TCP_Utils.h"
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

static IPv46_Address_t xGetSourceAddrFromBuffer (const uint8_t *const pucEthernetBuffer)
 IP frame agnostic helper to obtain the source IP Address from a buffer.
 
void vSocketCloseNextTime (FreeRTOS_Socket_t *pxSocket)
 Close the socket another time.
 
void vSocketListenNextTime (FreeRTOS_Socket_t *pxSocket)
 Postpone a call to FreeRTOS_listen() to avoid recursive calls.
 
BaseType_t xTCPSocketCheck (FreeRTOS_Socket_t *pxSocket)
 As soon as a TCP socket timer expires, this function will be called (from xTCPTimerCheck). It can send a delayed ACK or new data.
 
void prvTCPTouchSocket (struct xSOCKET *pxSocket)
 'Touch' the socket to keep it alive/updated.
 
static BaseType_t vTCPRemoveTCPChild (const FreeRTOS_Socket_t *pxChildSocket)
 
void vTCPStateChange (FreeRTOS_Socket_t *pxSocket, enum eTCP_STATE eTCPState)
 Changing to a new state. Centralised here to do specific actions such as resetting the alive timer, calling the user's OnConnect handler to notify that a socket has got (dis)connected, and setting bit to unblock a call to FreeRTOS_select().
 
TickType_t prvTCPNextTimeout (struct xSOCKET *pxSocket)
 Calculate after how much time this socket needs to be checked again.
 
BaseType_t xProcessReceivedTCPPacket (NetworkBufferDescriptor_t *pxDescriptor)
 Process the received TCP packet.
 
BaseType_t xTCPCheckNewClient (FreeRTOS_Socket_t *pxSocket)
 In the API accept(), the user asks is there is a new client? As API's can not walk through the xBoundTCPSocketsList the IP-task will do this.
 
+ + + + + + + +

+Variables

+static FreeRTOS_Socket_t * xSocketToClose = NULL
 When closing a socket an event is posted to the Network Event Queue. If the queue is full, then the event is not posted and the socket can be orphaned. To prevent this, the below variable is used to keep track of any socket which needs to be closed. This variable can be accessed by the IP task only. Thus, preventing any race condition.
 
+_static FreeRTOS_Socket_t * xSocketToListen = NULL
 When a connection is coming in on a reusable socket, and the SYN phase times out, the socket must be put back into eTCP_LISTEN mode, so it can accept a new connection again. This variable can be accessed by the IP task only. Thus, preventing any race condition.
 
+

Detailed Description

+

Module which handles the TCP connections for FreeRTOS+TCP. It depends on FreeRTOS_TCP_WIN.c, which handles the TCP windowing schemes.

+

Endianness: in this module all ports and IP addresses are stored in host byte-order, except fields in the IP-packets

+

Function Documentation

+ +

◆ xGetSourceAddrFromBuffer()

+ +
+
+ + + + + +
+ + + + + + + + +
static IPv46_Address_t xGetSourceAddrFromBuffer (const uint8_t *const pucEthernetBuffer)
+
+static
+
+ +

IP frame agnostic helper to obtain the source IP Address from a buffer.

+
Parameters
+ + +
[in]pucEthernetBufferThe Ethernet buffer from which the source address will be retrieved.
+
+
+
Returns
IPv46_Address_t struct containing the source IP address.
+ +
+
+ +

◆ vSocketCloseNextTime()

+ +
+
+ + + + + + + + +
void vSocketCloseNextTime (FreeRTOS_Socket_t * pxSocket)
+
+ +

Close the socket another time.

+
Parameters
+ + +
[in]pxSocketThe socket to be checked.
+
+
+ +
+
+ +

◆ vSocketListenNextTime()

+ +
+
+ + + + + + + + +
void vSocketListenNextTime (FreeRTOS_Socket_t * pxSocket)
+
+ +

Postpone a call to FreeRTOS_listen() to avoid recursive calls.

+
Parameters
+ + +
[in]pxSocketThe socket to be checked.
+
+
+ +
+
+ +

◆ xTCPSocketCheck()

+ +
+
+ + + + + + + + +
BaseType_t xTCPSocketCheck (FreeRTOS_Socket_t * pxSocket)
+
+ +

As soon as a TCP socket timer expires, this function will be called (from xTCPTimerCheck). It can send a delayed ACK or new data.

+
Parameters
+ + +
[in]pxSocketsocket to be checked.
+
+
+
Returns
0 on success, a negative error code on failure. A negative value will be returned in case the hang-protection has put the socket in a wait-close state.
+
Note
Sequence of calling (normally) : IP-Task: xTCPTimerCheck() // Check all sockets ( declared in FreeRTOS_Sockets.c ) xTCPSocketCheck() // Either send a delayed ACK or call prvTCPSendPacket() prvTCPSendPacket() // Either send a SYN or call prvTCPSendRepeated ( regular messages ) prvTCPSendRepeated() // Send at most 8 messages on a row prvTCPReturnPacket() // Prepare for returning xNetworkInterfaceOutput() // Sends data to the NIC ( declared in portable/NetworkInterface/xxx )
+ +
+
+ +

◆ prvTCPTouchSocket()

+ +
+
+ + + + + + + + +
void prvTCPTouchSocket (struct xSOCKET * pxSocket)
+
+ +

'Touch' the socket to keep it alive/updated.

+
Parameters
+ + +
[in]pxSocketThe socket to be updated.
+
+
+
Note
This is used for anti-hanging protection and TCP keep-alive messages. Called in two places: after receiving a packet and after a state change. The socket's alive timer may be reset.
+ +
+
+ +

◆ vTCPRemoveTCPChild()

+ +
+
+ + + + + +
+ + + + + + + + +
static BaseType_t vTCPRemoveTCPChild (const FreeRTOS_Socket_t * pxChildSocket)
+
+static
+
+

< for server socket: child, for child socket: parent

+ +
+
+ +

◆ vTCPStateChange()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void vTCPStateChange (FreeRTOS_Socket_t * pxSocket,
enum eTCP_STATE eTCPState 
)
+
+ +

Changing to a new state. Centralised here to do specific actions such as resetting the alive timer, calling the user's OnConnect handler to notify that a socket has got (dis)connected, and setting bit to unblock a call to FreeRTOS_select().

+
Parameters
+ + + +
[in]pxSocketThe socket whose state we are trying to change.
[in]eTCPStateThe state to which we want to change to.
+
+
+ +
+
+ +

◆ prvTCPNextTimeout()

+ +
+
+ + + + + + + + +
TickType_t prvTCPNextTimeout (struct xSOCKET * pxSocket)
+
+ +

Calculate after how much time this socket needs to be checked again.

+
Parameters
+ + +
[in]pxSocketThe socket to be checked.
+
+
+
Returns
The number of clock ticks before the timer expires.
+ +
+
+ +

◆ xProcessReceivedTCPPacket()

+ +
+
+ + + + + + + + +
BaseType_t xProcessReceivedTCPPacket (NetworkBufferDescriptor_t * pxDescriptor)
+
+ +

Process the received TCP packet.

+
Parameters
+ + +
[in]pxDescriptorThe descriptor in which the TCP packet is held.
+
+
+
Returns
If the processing of the packet was successful, then pdPASS is returned or else pdFAIL.
+
Note
FreeRTOS_TCP_IP has only 2 public functions, this is the second one: xProcessReceivedTCPPacket() prvTCPHandleState() prvTCPPrepareSend() prvTCPReturnPacket() xNetworkInterfaceOutput() // Sends data to the NIC prvTCPSendRepeated() prvTCPReturnPacket() // Prepare for returning xNetworkInterfaceOutput() // Sends data to the NIC
+ +
+
+ +

◆ xTCPCheckNewClient()

+ +
+
+ + + + + + + + +
BaseType_t xTCPCheckNewClient (FreeRTOS_Socket_t * pxSocket)
+
+ +

In the API accept(), the user asks is there is a new client? As API's can not walk through the xBoundTCPSocketsList the IP-task will do this.

+
Parameters
+ + +
[in]pxSocketThe socket for which the bound socket list will be iterated.
+
+
+
Returns
if there is a new client, then pdTRUE is returned or else, pdFALSE.
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___t_c_p___i_p___i_pv4_8c.html b/V4.3.1/_free_r_t_o_s___t_c_p___i_p___i_pv4_8c.html new file mode 100644 index 000000000..a15f5bd36 --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___t_c_p___i_p___i_pv4_8c.html @@ -0,0 +1,136 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_TCP_IP_IPv4.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
FreeRTOS_TCP_IP_IPv4.c File Reference
+
+
+ +

Module which handles the TCP connections for FreeRTOS+TCP. It depends on FreeRTOS_TCP_WIN.c, which handles the TCP windowing schemes. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "queue.h"
+#include "semphr.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_Sockets.h"
+#include "FreeRTOS_IP_Private.h"
+#include "FreeRTOS_UDP_IP.h"
+#include "FreeRTOS_DHCP.h"
+#include "NetworkInterface.h"
+#include "NetworkBufferManagement.h"
+#include "FreeRTOS_TCP_Reception.h"
+#include "FreeRTOS_TCP_Transmission.h"
+#include "FreeRTOS_TCP_State_Handling.h"
+#include "FreeRTOS_TCP_Utils.h"
+

Detailed Description

+

Module which handles the TCP connections for FreeRTOS+TCP. It depends on FreeRTOS_TCP_WIN.c, which handles the TCP windowing schemes.

+

Endianness: in this module all ports and IP addresses are stored in host byte-order, except fields in the IP-packets

+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___t_c_p___i_p___i_pv6_8c.html b/V4.3.1/_free_r_t_o_s___t_c_p___i_p___i_pv6_8c.html new file mode 100644 index 000000000..318851b9d --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___t_c_p___i_p___i_pv6_8c.html @@ -0,0 +1,136 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_TCP_IP_IPv6.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
FreeRTOS_TCP_IP_IPv6.c File Reference
+
+
+ +

Module which handles the TCP connections for FreeRTOS+TCP. It depends on FreeRTOS_TCP_WIN.c, which handles the TCP windowing schemes. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "queue.h"
+#include "semphr.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_Sockets.h"
+#include "FreeRTOS_IP_Private.h"
+#include "FreeRTOS_UDP_IP.h"
+#include "FreeRTOS_DHCP.h"
+#include "NetworkInterface.h"
+#include "NetworkBufferManagement.h"
+#include "FreeRTOS_TCP_Reception.h"
+#include "FreeRTOS_TCP_Transmission.h"
+#include "FreeRTOS_TCP_State_Handling.h"
+#include "FreeRTOS_TCP_Utils.h"
+

Detailed Description

+

Module which handles the TCP connections for FreeRTOS+TCP. It depends on FreeRTOS_TCP_WIN.c, which handles the TCP windowing schemes.

+

Endianness: in this module all ports and IP addresses are stored in host byte-order, except fields in the IP-packets

+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___t_c_p___reception_8c.html b/V4.3.1/_free_r_t_o_s___t_c_p___reception_8c.html new file mode 100644 index 000000000..82bef82f8 --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___t_c_p___reception_8c.html @@ -0,0 +1,397 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_TCP_Reception.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_TCP_Reception.c File Reference
+
+
+ +

Module which processes the packet received from a socket for FreeRTOS+TCP. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "queue.h"
+#include "semphr.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_Sockets.h"
+#include "FreeRTOS_IP_Private.h"
+#include "FreeRTOS_UDP_IP.h"
+#include "FreeRTOS_DHCP.h"
+#include "NetworkInterface.h"
+#include "NetworkBufferManagement.h"
+#include "FreeRTOS_TCP_Transmission.h"
+#include "FreeRTOS_TCP_Reception.h"
+
+ + + + + + + + + + + + + + + + +

+Functions

static int32_t prvSingleStepTCPHeaderOptions (const uint8_t *const pucPtr, size_t uxTotalLength, FreeRTOS_Socket_t *const pxSocket, BaseType_t xHasSYNFlag)
 Identify and deal with a single TCP header option, advancing the pointer to the header.
 
static void prvReadSackOption (const uint8_t *const pucPtr, size_t uxIndex, FreeRTOS_Socket_t *const pxSocket)
 Skip past TCP header options when doing Selective ACK, until there are no more options left.
 
BaseType_t prvCheckOptions (FreeRTOS_Socket_t *pxSocket, const NetworkBufferDescriptor_t *pxNetworkBuffer)
 Parse the TCP option(s) received, if present.
 
BaseType_t prvCheckRxData (const NetworkBufferDescriptor_t *pxNetworkBuffer, uint8_t **ppucRecvData)
 prvCheckRxData(): called from prvTCPHandleState(). The first thing that will be done is find the TCP payload data and check the length of this data.
 
BaseType_t prvStoreRxData (FreeRTOS_Socket_t *pxSocket, const uint8_t *pucRecvData, NetworkBufferDescriptor_t *pxNetworkBuffer, uint32_t ulReceiveLength)
 prvStoreRxData(): called from prvTCPHandleState(). The second thing is to do is check if the payload data may be accepted. If so, they will be added to the reception queue.
 
+

Detailed Description

+

Module which processes the packet received from a socket for FreeRTOS+TCP.

+

Endianness: in this module all ports and IP addresses are stored in host byte-order, except fields in the IP-packets

+

Function Documentation

+ +

◆ prvSingleStepTCPHeaderOptions()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static int32_t prvSingleStepTCPHeaderOptions (const uint8_t *const pucPtr,
size_t uxTotalLength,
FreeRTOS_Socket_t *const pxSocket,
BaseType_t xHasSYNFlag 
)
+
+static
+
+ +

Identify and deal with a single TCP header option, advancing the pointer to the header.

+
Parameters
+ + + + + +
[in]pucPtrPointer to the TCP packet options.
[in]uxTotalLengthLength of the TCP packet options.
[in]pxSocketSocket handling the connection.
[in]xHasSYNFlagWhether the header has SYN flag or not.
+
+
+
Returns
This function returns index of the next option if the current option is successfully processed and it is not the end of options whereafter the caller should continue to process more options. If the options have ended, this function will return a zero whereafter the caller should stop parsing options and continue further processing. If the current option has erroneous value, then the function returns a negative value wherein the calling function should not process this packet any further and drop it.
+ +
+
+ +

◆ prvReadSackOption()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void prvReadSackOption (const uint8_t *const pucPtr,
size_t uxIndex,
FreeRTOS_Socket_t *const pxSocket 
)
+
+static
+
+ +

Skip past TCP header options when doing Selective ACK, until there are no more options left.

+
Parameters
+ + + + +
[in]pucPtrPointer to the TCP packet options.
[in]uxIndexIndex of options in the TCP packet options.
[in]pxSocketSocket handling the TCP connection.
+
+
+ +
+
+ +

◆ prvCheckOptions()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BaseType_t prvCheckOptions (FreeRTOS_Socket_t * pxSocket,
const NetworkBufferDescriptor_t * pxNetworkBuffer 
)
+
+ +

Parse the TCP option(s) received, if present.

+
Parameters
+ + + +
[in]pxSocketThe socket handling the connection.
[in]pxNetworkBufferThe network buffer containing the TCP packet.
+
+
+
Returns
: If the options are well formed and processed successfully then pdPASS is returned; else a pdFAIL is returned.
+
Note
It has already been verified that: ((pxTCPHeader->ucTCPOffset & 0xf0) > 0x50), meaning that the TP header is longer than the usual 20 (5 x 4) bytes.
+ +
+
+ +

◆ prvCheckRxData()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BaseType_t prvCheckRxData (const NetworkBufferDescriptor_t * pxNetworkBuffer,
uint8_t ** ppucRecvData 
)
+
+ +

prvCheckRxData(): called from prvTCPHandleState(). The first thing that will be done is find the TCP payload data and check the length of this data.

+
Parameters
+ + + +
[in]pxNetworkBufferThe network buffer holding the received data.
[out]ppucRecvDataIt will point to first byte of the TCP payload.
+
+
+
Returns
Length of the received buffer.
+ +
+
+ +

◆ prvStoreRxData()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t prvStoreRxData (FreeRTOS_Socket_t * pxSocket,
const uint8_t * pucRecvData,
NetworkBufferDescriptor_t * pxNetworkBuffer,
uint32_t ulReceiveLength 
)
+
+ +

prvStoreRxData(): called from prvTCPHandleState(). The second thing is to do is check if the payload data may be accepted. If so, they will be added to the reception queue.

+
Parameters
+ + + + + +
[in]pxSocketThe socket owning the connection.
[in]pucRecvDataPointer to received data.
[in]pxNetworkBufferThe network buffer descriptor.
[in]ulReceiveLengthThe length of the received data.
+
+
+
Returns
0 on success, -1 on failure of storing data.
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___t_c_p___state___handling_8c.html b/V4.3.1/_free_r_t_o_s___t_c_p___state___handling_8c.html new file mode 100644 index 000000000..d96c6e63c --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___t_c_p___state___handling_8c.html @@ -0,0 +1,478 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_TCP_State_Handling.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_TCP_State_Handling.c File Reference
+
+
+ +

Module which handles the TCP protocol state transition for FreeRTOS+TCP. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "queue.h"
+#include "semphr.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_Sockets.h"
+#include "FreeRTOS_IP_Private.h"
+#include "FreeRTOS_UDP_IP.h"
+#include "FreeRTOS_DHCP.h"
+#include "NetworkInterface.h"
+#include "NetworkBufferManagement.h"
+#include "FreeRTOS_TCP_Reception.h"
+#include "FreeRTOS_TCP_Transmission.h"
+#include "FreeRTOS_TCP_State_Handling.h"
+#include "FreeRTOS_TCP_Utils.h"
+
+ + + + + + + + + + + + + + + + + + + + + + +

+Functions

static BaseType_t prvTCPHandleFin (FreeRTOS_Socket_t *pxSocket, const NetworkBufferDescriptor_t *pxNetworkBuffer)
 prvTCPHandleFin() will be called to handle connection closure. The closure starts when either a FIN has been received and accepted, or when the socket has sent a FIN flag to the peer. Before being called, it has been checked that both reception and transmission are complete.
 
static BaseType_t prvHandleSynReceived (FreeRTOS_Socket_t *pxSocket, const NetworkBufferDescriptor_t *pxNetworkBuffer, uint32_t ulReceiveLength, UBaseType_t uxOptionsLength)
 prvHandleSynReceived(): called from prvTCPHandleState(). Called from the states: eSYN_RECEIVED and eCONNECT_SYN. If the flags received are correct, the socket will move to eESTABLISHED.
 
static BaseType_t prvHandleEstablished (FreeRTOS_Socket_t *pxSocket, NetworkBufferDescriptor_t **ppxNetworkBuffer, uint32_t ulReceiveLength, UBaseType_t uxOptionsLength)
 prvHandleEstablished(): called from prvTCPHandleState() Called if the status is eESTABLISHED. Data reception has been handled earlier. Here the ACK's from peer will be checked, and if a FIN is received, the code will check if it may be accepted, i.e. if all expected data has been completely received.
 
BaseType_t prvTCPSocketIsActive (eIPTCPState_t eStatus)
 Check whether the socket is active or not.
 
BaseType_t prvTCPHandleState (FreeRTOS_Socket_t *pxSocket, NetworkBufferDescriptor_t **ppxNetworkBuffer)
 Check incoming packets for valid data and handle the state of the TCP connection and respond according to the situation.
 
FreeRTOS_Socket_t * prvHandleListen (FreeRTOS_Socket_t *pxSocket, NetworkBufferDescriptor_t *pxNetworkBuffer)
 Handle 'listen' event on the given socket.
 
BaseType_t prvTCPSocketCopy (FreeRTOS_Socket_t *pxNewSocket, FreeRTOS_Socket_t *pxSocket)
 Duplicates a socket after a listening socket receives a connection and bind the new socket to the same port as the listening socket. Also, let the new socket inherit all properties from the listening socket.
 
+

Detailed Description

+

Module which handles the TCP protocol state transition for FreeRTOS+TCP.

+

Endianness: in this module all ports and IP addresses are stored in host byte-order, except fields in the IP-packets

+

Function Documentation

+ +

◆ prvTCPHandleFin()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static BaseType_t prvTCPHandleFin (FreeRTOS_Socket_t * pxSocket,
const NetworkBufferDescriptor_t * pxNetworkBuffer 
)
+
+static
+
+ +

prvTCPHandleFin() will be called to handle connection closure. The closure starts when either a FIN has been received and accepted, or when the socket has sent a FIN flag to the peer. Before being called, it has been checked that both reception and transmission are complete.

+
Parameters
+ + + +
[in]pxSocketSocket owning the the connection.
[in]pxNetworkBufferThe network buffer carrying the TCP packet.
+
+
+
Returns
Length of the packet to be sent.
+ +
+
+ +

◆ prvHandleSynReceived()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static BaseType_t prvHandleSynReceived (FreeRTOS_Socket_t * pxSocket,
const NetworkBufferDescriptor_t * pxNetworkBuffer,
uint32_t ulReceiveLength,
UBaseType_t uxOptionsLength 
)
+
+static
+
+ +

prvHandleSynReceived(): called from prvTCPHandleState(). Called from the states: eSYN_RECEIVED and eCONNECT_SYN. If the flags received are correct, the socket will move to eESTABLISHED.

+
Parameters
+ + + + + +
[in]pxSocketThe socket handling the connection.
[in]pxNetworkBufferThe pointer to the network buffer carrying the packet.
[in]ulReceiveLengthLength in bytes of the data received.
[in]uxOptionsLengthLength of the TCP options in bytes.
+
+
+
Returns
Length of the data to be sent.
+ +
+
+ +

◆ prvHandleEstablished()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static BaseType_t prvHandleEstablished (FreeRTOS_Socket_t * pxSocket,
NetworkBufferDescriptor_t ** ppxNetworkBuffer,
uint32_t ulReceiveLength,
UBaseType_t uxOptionsLength 
)
+
+static
+
+ +

prvHandleEstablished(): called from prvTCPHandleState() Called if the status is eESTABLISHED. Data reception has been handled earlier. Here the ACK's from peer will be checked, and if a FIN is received, the code will check if it may be accepted, i.e. if all expected data has been completely received.

+
Parameters
+ + + + + +
[in]pxSocketThe socket owning the connection.
[in,out]ppxNetworkBufferPointer to pointer to the network buffer.
[in]ulReceiveLengthThe length of the received packet.
[in]uxOptionsLengthLength of TCP options.
+
+
+
Returns
The send length of the packet to be sent.
+ +
+
+ +

◆ prvTCPSocketIsActive()

+ +
+
+ + + + + + + + +
BaseType_t prvTCPSocketIsActive (eIPTCPState_t eStatus)
+
+ +

Check whether the socket is active or not.

+
Parameters
+ + +
[in]eStatusThe status of the socket.
+
+
+
Returns
pdTRUE if the socket must be checked. Non-active sockets are waiting for user action, either connect() or close().
+ +
+
+ +

◆ prvTCPHandleState()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BaseType_t prvTCPHandleState (FreeRTOS_Socket_t * pxSocket,
NetworkBufferDescriptor_t ** ppxNetworkBuffer 
)
+
+ +

Check incoming packets for valid data and handle the state of the TCP connection and respond according to the situation.

+
Parameters
+ + + +
[in]pxSocketThe socket whose connection state is being handled.
[in]ppxNetworkBufferThe network buffer descriptor holding the packet received from the peer.
+
+
+
Returns
If the data is correct and some packet was sent to the peer, then the number of bytes sent is returned, or else a negative value is returned indicating an error.
+
Note
prvTCPHandleState() is the most important function of this TCP stack We've tried to keep it (relatively short) by putting a lot of code in the static functions above:
 prvCheckRxData()
+ prvStoreRxData()
+ prvSetOptions()
+ prvHandleSynReceived()
+ prvHandleEstablished()
+ prvSendData()
+
As these functions are declared static, and they're called from one location only, most compilers will inline them, thus avoiding a call and return.
+ +
+
+ +

◆ prvHandleListen()

+ +
+
+ + + + + + + + + + + + + + + + + + +
FreeRTOS_Socket_t * prvHandleListen (FreeRTOS_Socket_t * pxSocket,
NetworkBufferDescriptor_t * pxNetworkBuffer 
)
+
+ +

Handle 'listen' event on the given socket.

+
Parameters
+ + + +
[in]pxSocketThe socket on which the listen occurred.
[in]pxNetworkBufferThe network buffer carrying the packet.
+
+
+
Returns
If a new socket/duplicate socket is created, then the pointer to that socket is returned or else, a NULL pointer is returned.
+ +
+
+ +

◆ prvTCPSocketCopy()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BaseType_t prvTCPSocketCopy (FreeRTOS_Socket_t * pxNewSocket,
FreeRTOS_Socket_t * pxSocket 
)
+
+ +

Duplicates a socket after a listening socket receives a connection and bind the new socket to the same port as the listening socket. Also, let the new socket inherit all properties from the listening socket.

+
Parameters
+ + + +
[in]pxNewSocketPointer to the new socket.
[in]pxSocketPointer to the socket being duplicated.
+
+
+
Returns
If all steps all successful, then pdTRUE is returned. Else, pdFALSE.
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___t_c_p___state___handling___i_pv4_8c.html b/V4.3.1/_free_r_t_o_s___t_c_p___state___handling___i_pv4_8c.html new file mode 100644 index 000000000..32b216290 --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___t_c_p___state___handling___i_pv4_8c.html @@ -0,0 +1,184 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_TCP_State_Handling_IPv4.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_TCP_State_Handling_IPv4.c File Reference
+
+
+ +

Module which handles the TCP protocol state transition for FreeRTOS+TCP. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "queue.h"
+#include "semphr.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_Sockets.h"
+#include "FreeRTOS_IP_Private.h"
+#include "FreeRTOS_UDP_IP.h"
+#include "FreeRTOS_DHCP.h"
+#include "NetworkInterface.h"
+#include "NetworkBufferManagement.h"
+#include "FreeRTOS_TCP_Reception.h"
+#include "FreeRTOS_TCP_Transmission.h"
+#include "FreeRTOS_TCP_State_Handling.h"
+#include "FreeRTOS_TCP_Utils.h"
+
+ + + + +

+Functions

FreeRTOS_Socket_t * prvHandleListen_IPV4 (FreeRTOS_Socket_t *pxSocket, NetworkBufferDescriptor_t *pxNetworkBuffer)
 Handle 'listen' event on the given socket.
 
+

Detailed Description

+

Module which handles the TCP protocol state transition for FreeRTOS+TCP.

+

Endianness: in this module all ports and IP addresses are stored in host byte-order, except fields in the IP-packets

+

Function Documentation

+ +

◆ prvHandleListen_IPV4()

+ +
+
+ + + + + + + + + + + + + + + + + + +
FreeRTOS_Socket_t * prvHandleListen_IPV4 (FreeRTOS_Socket_t * pxSocket,
NetworkBufferDescriptor_t * pxNetworkBuffer 
)
+
+ +

Handle 'listen' event on the given socket.

+
Parameters
+ + + +
[in]pxSocketThe socket on which the listen occurred.
[in]pxNetworkBufferThe network buffer carrying the packet.
+
+
+
Returns
If a new socket/duplicate socket is created, then the pointer to that socket is returned or else, a NULL pointer is returned.
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___t_c_p___state___handling___i_pv6_8c.html b/V4.3.1/_free_r_t_o_s___t_c_p___state___handling___i_pv6_8c.html new file mode 100644 index 000000000..962e19e2f --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___t_c_p___state___handling___i_pv6_8c.html @@ -0,0 +1,184 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_TCP_State_Handling_IPv6.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_TCP_State_Handling_IPv6.c File Reference
+
+
+ +

Module which handles the TCP protocol state transition for FreeRTOS+TCP. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "queue.h"
+#include "semphr.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_Sockets.h"
+#include "FreeRTOS_IP_Private.h"
+#include "FreeRTOS_UDP_IP.h"
+#include "FreeRTOS_DHCP.h"
+#include "NetworkInterface.h"
+#include "NetworkBufferManagement.h"
+#include "FreeRTOS_TCP_Reception.h"
+#include "FreeRTOS_TCP_Transmission.h"
+#include "FreeRTOS_TCP_State_Handling.h"
+#include "FreeRTOS_TCP_Utils.h"
+
+ + + + +

+Functions

FreeRTOS_Socket_t * prvHandleListen_IPV6 (FreeRTOS_Socket_t *pxSocket, NetworkBufferDescriptor_t *pxNetworkBuffer)
 Handle 'listen' event on the given socket.
 
+

Detailed Description

+

Module which handles the TCP protocol state transition for FreeRTOS+TCP.

+

Endianness: in this module all ports and IP addresses are stored in host byte-order, except fields in the IP-packets

+

Function Documentation

+ +

◆ prvHandleListen_IPV6()

+ +
+
+ + + + + + + + + + + + + + + + + + +
FreeRTOS_Socket_t * prvHandleListen_IPV6 (FreeRTOS_Socket_t * pxSocket,
NetworkBufferDescriptor_t * pxNetworkBuffer 
)
+
+ +

Handle 'listen' event on the given socket.

+
Parameters
+ + + +
[in]pxSocketThe socket on which the listen occurred.
[in]pxNetworkBufferThe network buffer carrying the packet.
+
+
+
Returns
If a new socket/duplicate socket is created, then the pointer to that socket is returned or else, a NULL pointer is returned.
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___t_c_p___transmission_8c.html b/V4.3.1/_free_r_t_o_s___t_c_p___transmission_8c.html new file mode 100644 index 000000000..16df613b0 --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___t_c_p___transmission_8c.html @@ -0,0 +1,934 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_TCP_Transmission.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_TCP_Transmission.c File Reference
+
+
+ +

Module which prepares the packet to be sent through a socket for FreeRTOS+TCP. It depends on FreeRTOS_TCP_WIN.c, which handles the TCP windowing schemes. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "queue.h"
+#include "semphr.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_Sockets.h"
+#include "FreeRTOS_IP_Private.h"
+#include "NetworkInterface.h"
+#include "NetworkBufferManagement.h"
+#include "FreeRTOSIPConfigDefaults.h"
+#include "FreeRTOS_TCP_IP.h"
+#include "FreeRTOS_TCP_Reception.h"
+#include "FreeRTOS_TCP_Transmission.h"
+#include "FreeRTOS_TCP_State_Handling.h"
+#include "FreeRTOS_TCP_Utils.h"
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

static BaseType_t prvTCPMakeSurePrepared (FreeRTOS_Socket_t *pxSocket)
 Check if the outgoing connection is already prepared, if not call prvTCPPrepareConnect() to continue the preparation.
 
static BaseType_t prvTCPPrepareConnect (FreeRTOS_Socket_t *pxSocket)
 Resolve the MAC-address of the peer and initialise the first SYN packet.
 
int32_t prvTCPSendPacket (FreeRTOS_Socket_t *pxSocket)
 prvTCPSendPacket() will be called when the socket time-out has been reached.
 
int32_t prvTCPSendRepeated (FreeRTOS_Socket_t *pxSocket, NetworkBufferDescriptor_t **ppxNetworkBuffer)
 prvTCPSendRepeated will try to send a series of messages, as long as there is data to be sent and as long as the transmit window isn't full.
 
void prvTCPReturnPacket (FreeRTOS_Socket_t *pxSocket, NetworkBufferDescriptor_t *pxDescriptor, uint32_t ulLen, BaseType_t xReleaseAfterSend)
 Return (or send) a packet to the peer. The data is stored in pxBuffer, which may either point to a real network buffer or to a TCP socket field called 'xTCP.xPacket'. A temporary xNetworkBuffer will be used to pass the data to the NIC.
 
void prvTCPReturn_CheckTCPWindow (FreeRTOS_Socket_t *pxSocket, const NetworkBufferDescriptor_t *pxNetworkBuffer, size_t uxIPHeaderSize)
 Called by prvTCPReturnPacket(), this function will set the the window size on this side: 'xTCPHeader.usWindow'.
 
void prvTCPReturn_SetSequenceNumber (FreeRTOS_Socket_t *pxSocket, const NetworkBufferDescriptor_t *pxNetworkBuffer, size_t uxIPHeaderSize, uint32_t ulLen)
 Called by prvTCPReturnPacket(), this function sets the sequence and ack numbers in the TCP-header.
 
BaseType_t prvTCPCreateWindow (FreeRTOS_Socket_t *pxSocket)
 Create the TCP window for the given socket.
 
static uint8_t prvWinScaleFactor (const FreeRTOS_Socket_t *pxSocket)
 Get the window scaling factor for the TCP connection.
 
UBaseType_t prvSetSynAckOptions (FreeRTOS_Socket_t *pxSocket, TCPHeader_t *pxTCPHeader)
 When opening a TCP connection, while SYN's are being sent, the parties may communicate what MSS (Maximum Segment Size) they intend to use, whether Selective ACK's ( SACK ) are supported, and the size of the reception window ( WSOPT ).
 
NetworkBufferDescriptor_t * prvTCPBufferResize (const FreeRTOS_Socket_t *pxSocket, NetworkBufferDescriptor_t *pxNetworkBuffer, int32_t lDataLen, UBaseType_t uxOptionsLength)
 Check if the size of a network buffer is big enough to hold the outgoing message. Allocate a new bigger network buffer when necessary.
 
void prvTCPReturn_SetEndPoint (const FreeRTOS_Socket_t *pxSocket, NetworkBufferDescriptor_t *pxNetworkBuffer, size_t uxIPHeaderSize)
 Called by prvTCPReturnPacket(), this function makes sure that the network buffer has 'pxEndPoint' set properly.
 
int32_t prvTCPPrepareSend (FreeRTOS_Socket_t *pxSocket, NetworkBufferDescriptor_t **ppxNetworkBuffer, UBaseType_t uxOptionsLength)
 Prepare an outgoing message, in case anything has to be sent.
 
void prvTCPAddTxData (FreeRTOS_Socket_t *pxSocket)
 The API FreeRTOS_send() adds data to the TX stream. Add this data to the windowing system to it can be transmitted.
 
UBaseType_t prvSetOptions (FreeRTOS_Socket_t *pxSocket, const NetworkBufferDescriptor_t *pxNetworkBuffer)
 Set the TCP options (if any) for the outgoing packet.
 
BaseType_t prvSendData (FreeRTOS_Socket_t *pxSocket, NetworkBufferDescriptor_t **ppxNetworkBuffer, uint32_t ulReceiveLength, BaseType_t xByteCount)
 Called from prvTCPHandleState(). There is data to be sent. If ipconfigUSE_TCP_WIN is defined, and if only an ACK must be sent, it will be checked if it would better be postponed for efficiency.
 
BaseType_t prvTCPSendSpecialPacketHelper (NetworkBufferDescriptor_t *pxNetworkBuffer, uint8_t ucTCPFlags)
 Common code for sending a TCP protocol control packet (i.e. no options, no payload, just flags).
 
BaseType_t prvTCPSendChallengeAck (NetworkBufferDescriptor_t *pxNetworkBuffer)
 A "challenge ACK" is as per https://tools.ietf.org/html/rfc5961#section-3.2, case #3. In summary, an RST was received with a sequence number that is unexpected but still within the window.
 
BaseType_t prvTCPSendReset (NetworkBufferDescriptor_t *pxNetworkBuffer)
 Send a RST (Reset) to peer in case the packet cannot be handled.
 
+

Detailed Description

+

Module which prepares the packet to be sent through a socket for FreeRTOS+TCP. It depends on FreeRTOS_TCP_WIN.c, which handles the TCP windowing schemes.

+

Endianness: in this module all ports and IP addresses are stored in host byte-order, except fields in the IP-packets

+

Function Documentation

+ +

◆ prvTCPMakeSurePrepared()

+ +
+
+ + + + + +
+ + + + + + + + +
static BaseType_t prvTCPMakeSurePrepared (FreeRTOS_Socket_t * pxSocket)
+
+static
+
+ +

Check if the outgoing connection is already prepared, if not call prvTCPPrepareConnect() to continue the preparation.

+
Parameters
+ + +
[in]pxSocketThe socket that wants to connect.
+
+
+
Returns
Returns pdTRUE if the connection is prepared, i.e. the MAC- address of the peer is already known.
+ +
+
+ +

◆ prvTCPPrepareConnect()

+ +
+
+ + + + + +
+ + + + + + + + +
static BaseType_t prvTCPPrepareConnect (FreeRTOS_Socket_t * pxSocket)
+
+static
+
+ +

Resolve the MAC-address of the peer and initialise the first SYN packet.

+
Parameters
+ + +
[in]pxSocketThe socket owning the TCP connection. The first packet shall be created in this socket.
+
+
+
Returns
pdTRUE: if the packet was successfully created and the first SYN can be sent. Else pdFALSE.
+
Note
Connecting sockets have a special state: eCONNECT_SYN. In this phase, the Ethernet address of the target will be found through address resolution. In case the target IP address is not within the netmask, the hardware address of the gateway will be used.
+ +
+
+ +

◆ prvTCPSendPacket()

+ +
+
+ + + + + + + + +
int32_t prvTCPSendPacket (FreeRTOS_Socket_t * pxSocket)
+
+ +

prvTCPSendPacket() will be called when the socket time-out has been reached.

+
Parameters
+ + +
[in]pxSocketThe socket owning the connection.
+
+
+
Returns
Number of bytes to be sent.
+
Note
It is only called by xTCPSocketCheck().
+ +
+
+ +

◆ prvTCPSendRepeated()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int32_t prvTCPSendRepeated (FreeRTOS_Socket_t * pxSocket,
NetworkBufferDescriptor_t ** ppxNetworkBuffer 
)
+
+ +

prvTCPSendRepeated will try to send a series of messages, as long as there is data to be sent and as long as the transmit window isn't full.

+
Parameters
+ + + +
[in]pxSocketThe socket owning the connection.
[in,out]ppxNetworkBufferPointer to pointer to the network buffer.
+
+
+
Returns
Total number of bytes sent.
+ +
+
+ +

◆ prvTCPReturnPacket()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void prvTCPReturnPacket (FreeRTOS_Socket_t * pxSocket,
NetworkBufferDescriptor_t * pxDescriptor,
uint32_t ulLen,
BaseType_t xReleaseAfterSend 
)
+
+ +

Return (or send) a packet to the peer. The data is stored in pxBuffer, which may either point to a real network buffer or to a TCP socket field called 'xTCP.xPacket'. A temporary xNetworkBuffer will be used to pass the data to the NIC.

+
Parameters
+ + + + + +
[in]pxSocketThe socket owning the connection.
[in]pxDescriptorThe network buffer descriptor carrying the packet.
[in]ulLenLength of the packet being sent.
[in]xReleaseAfterSendpdTRUE if the ownership of the descriptor is transferred to the network interface.
+
+
+ +
+
+ +

◆ prvTCPReturn_CheckTCPWindow()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void prvTCPReturn_CheckTCPWindow (FreeRTOS_Socket_t * pxSocket,
const NetworkBufferDescriptor_t * pxNetworkBuffer,
size_t uxIPHeaderSize 
)
+
+ +

Called by prvTCPReturnPacket(), this function will set the the window size on this side: 'xTCPHeader.usWindow'.

+
Parameters
+ + + + +
[in]pxSocketThe socket on which the packet is being sent.
[in]pxNetworkBufferThe network buffer carrying the outgoing message.
[in]uxIPHeaderSizeThe size of the IP-header, which depends on the IP-type.
+
+
+ +
+
+ +

◆ prvTCPReturn_SetSequenceNumber()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void prvTCPReturn_SetSequenceNumber (FreeRTOS_Socket_t * pxSocket,
const NetworkBufferDescriptor_t * pxNetworkBuffer,
size_t uxIPHeaderSize,
uint32_t ulLen 
)
+
+ +

Called by prvTCPReturnPacket(), this function sets the sequence and ack numbers in the TCP-header.

+
Parameters
+ + + + + +
[in]pxSocketThe socket on which the packet is being sent.
[in]pxNetworkBufferThe network buffer carrying the outgoing message.
[in]uxIPHeaderSizeThe size of the IP-header, which depends on the IP-type.
[in]ulLenThe size of the packet minus the size of the Ethernet header.
+
+
+ +
+
+ +

◆ prvTCPCreateWindow()

+ +
+
+ + + + + + + + +
BaseType_t prvTCPCreateWindow (FreeRTOS_Socket_t * pxSocket)
+
+ +

Create the TCP window for the given socket.

+
Parameters
+ + +
[in]pxSocketThe socket for which the window is being created.
+
+
+
Note
The SYN event is very important: the sequence numbers, which have a kind of random starting value, are being synchronized. The sliding window manager (in FreeRTOS_TCP_WIN.c) needs to know them, along with the Maximum Segment Size (MSS).
+ +
+
+ +

◆ prvWinScaleFactor()

+ +
+
+ + + + + +
+ + + + + + + + +
static uint8_t prvWinScaleFactor (const FreeRTOS_Socket_t * pxSocket)
+
+static
+
+ +

Get the window scaling factor for the TCP connection.

+
Parameters
+ + +
[in]pxSocketThe socket owning the TCP connection.
+
+
+
Returns
The scaling factor.
+ +
+
+ +

◆ prvSetSynAckOptions()

+ +
+
+ + + + + + + + + + + + + + + + + + +
UBaseType_t prvSetSynAckOptions (FreeRTOS_Socket_t * pxSocket,
TCPHeader_t * pxTCPHeader 
)
+
+ +

When opening a TCP connection, while SYN's are being sent, the parties may communicate what MSS (Maximum Segment Size) they intend to use, whether Selective ACK's ( SACK ) are supported, and the size of the reception window ( WSOPT ).

+
Parameters
+ + + +
[in]pxSocketThe socket being used for communication. It is used to set the MSS.
[in,out]pxTCPHeaderThe TCP packet header being used in the SYN transmission. The MSS and corresponding options shall be set in this header itself.
+
+
+
Returns
The option length after the TCP header was updated.
+
Note
MSS is the net size of the payload, an is always smaller than MTU.
+ +
+
+ +

◆ prvTCPBufferResize()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NetworkBufferDescriptor_t * prvTCPBufferResize (const FreeRTOS_Socket_t * pxSocket,
NetworkBufferDescriptor_t * pxNetworkBuffer,
int32_t lDataLen,
UBaseType_t uxOptionsLength 
)
+
+ +

Check if the size of a network buffer is big enough to hold the outgoing message. Allocate a new bigger network buffer when necessary.

+
Parameters
+ + + + + +
[in]pxSocketSocket whose buffer is being resized.
[in]pxNetworkBufferThe network buffer whose size is being increased.
[in]lDataLenLength of the data to be put in the buffer.
[in]uxOptionsLengthLength of options.
+
+
+
Returns
If the resizing is successful: The new buffer with the size being asked for with old data copied in it. Else, NULL.
+
Note
The old network buffer will be released if the resizing is successful and cannot be used any longer.
+ +
+
+ +

◆ prvTCPReturn_SetEndPoint()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void prvTCPReturn_SetEndPoint (const FreeRTOS_Socket_t * pxSocket,
NetworkBufferDescriptor_t * pxNetworkBuffer,
size_t uxIPHeaderSize 
)
+
+ +

Called by prvTCPReturnPacket(), this function makes sure that the network buffer has 'pxEndPoint' set properly.

+
Parameters
+ + + + +
[in]pxSocketThe socket on which the packet is being sent.
[in]pxNetworkBufferThe network buffer carrying the outgoing message.
[in]uxIPHeaderSizeThe size of the IP-header, which depends on the IP-type.
+
+
+ +
+
+ +

◆ prvTCPPrepareSend()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int32_t prvTCPPrepareSend (FreeRTOS_Socket_t * pxSocket,
NetworkBufferDescriptor_t ** ppxNetworkBuffer,
UBaseType_t uxOptionsLength 
)
+
+ +

Prepare an outgoing message, in case anything has to be sent.

+
Parameters
+ + + + +
[in]pxSocketThe socket owning the connection.
[in,out]ppxNetworkBufferPointer to the pointer to the network buffer.
[in]uxOptionsLengthThe length of the TCP options.
+
+
+
Returns
Length of the data to be sent if everything is correct. Else, -1 is returned in case of any error.
+ +
+
+ +

◆ prvTCPAddTxData()

+ +
+
+ + + + + + + + +
void prvTCPAddTxData (FreeRTOS_Socket_t * pxSocket)
+
+ +

The API FreeRTOS_send() adds data to the TX stream. Add this data to the windowing system to it can be transmitted.

+
Parameters
+ + +
[in]pxSocketThe socket owning the connection.
+
+
+ +
+
+ +

◆ prvSetOptions()

+ +
+
+ + + + + + + + + + + + + + + + + + +
UBaseType_t prvSetOptions (FreeRTOS_Socket_t * pxSocket,
const NetworkBufferDescriptor_t * pxNetworkBuffer 
)
+
+ +

Set the TCP options (if any) for the outgoing packet.

+
Parameters
+ + + +
[in]pxSocketThe socket owning the connection.
[in]pxNetworkBufferThe network buffer holding the packet.
+
+
+
Returns
Length of the TCP options after they are set.
+ +
+
+ +

◆ prvSendData()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t prvSendData (FreeRTOS_Socket_t * pxSocket,
NetworkBufferDescriptor_t ** ppxNetworkBuffer,
uint32_t ulReceiveLength,
BaseType_t xByteCount 
)
+
+ +

Called from prvTCPHandleState(). There is data to be sent. If ipconfigUSE_TCP_WIN is defined, and if only an ACK must be sent, it will be checked if it would better be postponed for efficiency.

+
Parameters
+ + + + + +
[in]pxSocketThe socket owning the TCP connection.
[in]ppxNetworkBufferPointer to pointer to the network buffer.
[in]ulReceiveLengthThe length of the received buffer.
[in]xByteCountLength of the data to be sent.
+
+
+
Returns
The number of bytes actually sent.
+ +
+
+ +

◆ prvTCPSendSpecialPacketHelper()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BaseType_t prvTCPSendSpecialPacketHelper (NetworkBufferDescriptor_t * pxNetworkBuffer,
uint8_t ucTCPFlags 
)
+
+ +

Common code for sending a TCP protocol control packet (i.e. no options, no payload, just flags).

+
Parameters
+ + + +
[in]pxNetworkBufferThe network buffer received from the peer.
[in]ucTCPFlagsThe flags to determine what kind of packet this is.
+
+
+
Returns
pdFAIL always indicating that the packet was not consumed.
+ +
+
+ +

◆ prvTCPSendChallengeAck()

+ +
+
+ + + + + + + + +
BaseType_t prvTCPSendChallengeAck (NetworkBufferDescriptor_t * pxNetworkBuffer)
+
+ +

A "challenge ACK" is as per https://tools.ietf.org/html/rfc5961#section-3.2, case #3. In summary, an RST was received with a sequence number that is unexpected but still within the window.

+
Parameters
+ + +
[in]pxNetworkBufferThe network buffer descriptor with the packet.
+
+
+
Returns
Returns the value back from prvTCPSendSpecialPacketHelper.
+ +
+
+ +

◆ prvTCPSendReset()

+ +
+
+ + + + + + + + +
BaseType_t prvTCPSendReset (NetworkBufferDescriptor_t * pxNetworkBuffer)
+
+ +

Send a RST (Reset) to peer in case the packet cannot be handled.

+
Parameters
+ + +
[in]pxNetworkBufferThe network buffer descriptor with the packet.
+
+
+
Returns
Returns the value back from prvTCPSendSpecialPacketHelper.
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___t_c_p___transmission___i_pv4_8c.html b/V4.3.1/_free_r_t_o_s___t_c_p___transmission___i_pv4_8c.html new file mode 100644 index 000000000..d0fde61dd --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___t_c_p___transmission___i_pv4_8c.html @@ -0,0 +1,270 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_TCP_Transmission_IPv4.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_TCP_Transmission_IPv4.c File Reference
+
+
+ +

Module which prepares the packet to be sent through a socket for FreeRTOS+TCP. It depends on FreeRTOS_TCP_WIN.c, which handles the TCP windowing schemes. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "queue.h"
+#include "semphr.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_Sockets.h"
+#include "FreeRTOS_IP_Private.h"
+#include "NetworkInterface.h"
+#include "NetworkBufferManagement.h"
+#include "FreeRTOS_ARP.h"
+#include "FreeRTOSIPConfigDefaults.h"
+#include "FreeRTOS_TCP_IP.h"
+#include "FreeRTOS_TCP_Reception.h"
+#include "FreeRTOS_TCP_Transmission.h"
+#include "FreeRTOS_TCP_State_Handling.h"
+#include "FreeRTOS_TCP_Utils.h"
+
+ + + + + + + + + + +

+Functions

void prvTCPReturnPacket_IPV4 (FreeRTOS_Socket_t *pxSocket, NetworkBufferDescriptor_t *pxDescriptor, uint32_t ulLen, BaseType_t xReleaseAfterSend)
 Return (or send) a packet to the peer. The data is stored in pxBuffer, which may either point to a real network buffer or to a TCP socket field called 'xTCP.xPacket'. A temporary xNetworkBuffer will be used to pass the data to the NIC.
 
BaseType_t prvTCPPrepareConnect_IPV4 (FreeRTOS_Socket_t *pxSocket)
 Let ARP look-up the MAC-address of the peer and initialise the first SYN packet.
 
BaseType_t prvTCPSendSpecialPktHelper_IPV4 (NetworkBufferDescriptor_t *pxNetworkBuffer, uint8_t ucTCPFlags)
 Common code for sending a TCP protocol control packet (i.e. no options, no payload, just flags).
 
+

Detailed Description

+

Module which prepares the packet to be sent through a socket for FreeRTOS+TCP. It depends on FreeRTOS_TCP_WIN.c, which handles the TCP windowing schemes.

+

Endianness: in this module all ports and IP addresses are stored in host byte-order, except fields in the IP-packets

+

Function Documentation

+ +

◆ prvTCPReturnPacket_IPV4()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void prvTCPReturnPacket_IPV4 (FreeRTOS_Socket_t * pxSocket,
NetworkBufferDescriptor_t * pxDescriptor,
uint32_t ulLen,
BaseType_t xReleaseAfterSend 
)
+
+ +

Return (or send) a packet to the peer. The data is stored in pxBuffer, which may either point to a real network buffer or to a TCP socket field called 'xTCP.xPacket'. A temporary xNetworkBuffer will be used to pass the data to the NIC.

+
Parameters
+ + + + + +
[in]pxSocketThe socket owning the connection.
[in]pxDescriptorThe network buffer descriptor carrying the packet.
[in]ulLenLength of the packet being sent.
[in]xReleaseAfterSendpdTRUE if the ownership of the descriptor is transferred to the network interface.
+
+
+ +
+
+ +

◆ prvTCPPrepareConnect_IPV4()

+ +
+
+ + + + + + + + +
BaseType_t prvTCPPrepareConnect_IPV4 (FreeRTOS_Socket_t * pxSocket)
+
+ +

Let ARP look-up the MAC-address of the peer and initialise the first SYN packet.

+
Parameters
+ + +
[in]pxSocketThe socket owning the TCP connection. The first packet shall be created in this socket.
+
+
+
Returns
pdTRUE: if the packet was successfully created and the first SYN can be sent. Else pdFALSE.
+
Note
Connecting sockets have a special state: eCONNECT_SYN. In this phase, the Ethernet address of the target will be found using ARP. In case the target IP address is not within the netmask, the hardware address of the gateway will be used.
+ +
+
+ +

◆ prvTCPSendSpecialPktHelper_IPV4()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BaseType_t prvTCPSendSpecialPktHelper_IPV4 (NetworkBufferDescriptor_t * pxNetworkBuffer,
uint8_t ucTCPFlags 
)
+
+ +

Common code for sending a TCP protocol control packet (i.e. no options, no payload, just flags).

+
Parameters
+ + + +
[in]pxNetworkBufferThe network buffer received from the peer.
[in]ucTCPFlagsThe flags to determine what kind of packet this is.
+
+
+
Returns
pdFAIL always indicating that the packet was not consumed.
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___t_c_p___transmission___i_pv6_8c.html b/V4.3.1/_free_r_t_o_s___t_c_p___transmission___i_pv6_8c.html new file mode 100644 index 000000000..dcc2ab9f2 --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___t_c_p___transmission___i_pv6_8c.html @@ -0,0 +1,270 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_TCP_Transmission_IPv6.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_TCP_Transmission_IPv6.c File Reference
+
+
+ +

Module which prepares the packet to be sent through a socket for FreeRTOS+TCP. It depends on FreeRTOS_TCP_WIN.c, which handles the TCP windowing schemes. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "queue.h"
+#include "semphr.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_Sockets.h"
+#include "FreeRTOS_IP_Private.h"
+#include "NetworkInterface.h"
+#include "NetworkBufferManagement.h"
+#include "FreeRTOSIPConfigDefaults.h"
+#include "FreeRTOS_ND.h"
+#include "FreeRTOS_TCP_IP.h"
+#include "FreeRTOS_TCP_Reception.h"
+#include "FreeRTOS_TCP_Transmission.h"
+#include "FreeRTOS_TCP_State_Handling.h"
+#include "FreeRTOS_TCP_Utils.h"
+
+ + + + + + + + + + +

+Functions

void prvTCPReturnPacket_IPV6 (FreeRTOS_Socket_t *pxSocket, NetworkBufferDescriptor_t *pxDescriptor, uint32_t ulLen, BaseType_t xReleaseAfterSend)
 Return (or send) a packet to the peer. The data is stored in pxBuffer, which may either point to a real network buffer or to a TCP socket field called 'xTCP.xPacket'. A temporary xNetworkBuffer will be used to pass the data to the NIC.
 
BaseType_t prvTCPPrepareConnect_IPV6 (FreeRTOS_Socket_t *pxSocket)
 Let ND look-up the MAC-address of the peer and initialise the first SYN packet.
 
BaseType_t prvTCPSendSpecialPktHelper_IPV6 (NetworkBufferDescriptor_t *pxNetworkBuffer, uint8_t ucTCPFlags)
 Common code for sending a TCP protocol control packet (i.e. no options, no payload, just flags).
 
+

Detailed Description

+

Module which prepares the packet to be sent through a socket for FreeRTOS+TCP. It depends on FreeRTOS_TCP_WIN.c, which handles the TCP windowing schemes.

+

Endianness: in this module all ports and IP addresses are stored in host byte-order, except fields in the IP-packets

+

Function Documentation

+ +

◆ prvTCPReturnPacket_IPV6()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void prvTCPReturnPacket_IPV6 (FreeRTOS_Socket_t * pxSocket,
NetworkBufferDescriptor_t * pxDescriptor,
uint32_t ulLen,
BaseType_t xReleaseAfterSend 
)
+
+ +

Return (or send) a packet to the peer. The data is stored in pxBuffer, which may either point to a real network buffer or to a TCP socket field called 'xTCP.xPacket'. A temporary xNetworkBuffer will be used to pass the data to the NIC.

+
Parameters
+ + + + + +
[in]pxSocketThe socket owning the connection.
[in]pxDescriptorThe network buffer descriptor carrying the packet.
[in]ulLenLength of the packet being sent.
[in]xReleaseAfterSendpdTRUE if the ownership of the descriptor is transferred to the network interface.
+
+
+ +
+
+ +

◆ prvTCPPrepareConnect_IPV6()

+ +
+
+ + + + + + + + +
BaseType_t prvTCPPrepareConnect_IPV6 (FreeRTOS_Socket_t * pxSocket)
+
+ +

Let ND look-up the MAC-address of the peer and initialise the first SYN packet.

+
Parameters
+ + +
[in]pxSocketThe socket owning the TCP connection. The first packet shall be created in this socket.
+
+
+
Returns
pdTRUE: if the packet was successfully created and the first SYN can be sent. Else pdFALSE.
+
Note
Connecting sockets have a special state: eCONNECT_SYN. In this phase, the Ethernet address of the target will be found using ND. In case the target IP address is not within the netmask, the hardware address of the gateway will be used.
+ +
+
+ +

◆ prvTCPSendSpecialPktHelper_IPV6()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BaseType_t prvTCPSendSpecialPktHelper_IPV6 (NetworkBufferDescriptor_t * pxNetworkBuffer,
uint8_t ucTCPFlags 
)
+
+ +

Common code for sending a TCP protocol control packet (i.e. no options, no payload, just flags).

+
Parameters
+ + + +
[in]pxNetworkBufferThe network buffer received from the peer.
[in]ucTCPFlagsThe flags to determine what kind of packet this is.
+
+
+
Returns
pdFAIL always indicating that the packet was not consumed.
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___t_c_p___utils_8c.html b/V4.3.1/_free_r_t_o_s___t_c_p___utils_8c.html new file mode 100644 index 000000000..8e07a79f5 --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___t_c_p___utils_8c.html @@ -0,0 +1,163 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_TCP_Utils.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_TCP_Utils.c File Reference
+
+
+ +

Module contains utility functions used by FreeRTOS+TCP module. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_IP_Private.h"
+#include "FreeRTOS_Routing.h"
+#include "FreeRTOS_TCP_Utils.h"
+
+ + + + +

+Functions

void prvSocketSetMSS (FreeRTOS_Socket_t *pxSocket)
 Set the MSS (Maximum segment size) associated with the given socket.
 
+

Detailed Description

+

Module contains utility functions used by FreeRTOS+TCP module.

+

Endianness: in this module all ports and IP addresses are stored in host byte-order, except fields in the IP-packets

+

Function Documentation

+ +

◆ prvSocketSetMSS()

+ +
+
+ + + + + + + + +
void prvSocketSetMSS (FreeRTOS_Socket_t * pxSocket)
+
+ +

Set the MSS (Maximum segment size) associated with the given socket.

+
Parameters
+ + +
[in]pxSocketThe socket whose MSS is to be set.
+
+
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___t_c_p___utils___i_pv4_8c.html b/V4.3.1/_free_r_t_o_s___t_c_p___utils___i_pv4_8c.html new file mode 100644 index 000000000..ebe95c83c --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___t_c_p___utils___i_pv4_8c.html @@ -0,0 +1,161 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_TCP_Utils_IPv4.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_TCP_Utils_IPv4.c File Reference
+
+
+ +

Module contains utility functions used by FreeRTOS+TCP module. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include "FreeRTOS.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_IP_Private.h"
+#include "FreeRTOS_TCP_Utils.h"
+
+ + + + +

+Functions

void prvSocketSetMSS_IPV4 (FreeRTOS_Socket_t *pxSocket)
 Set the MSS (Maximum segment size) associated with the given socket.
 
+

Detailed Description

+

Module contains utility functions used by FreeRTOS+TCP module.

+

Endianness: in this module all ports and IP addresses are stored in host byte-order, except fields in the IP-packets

+

Function Documentation

+ +

◆ prvSocketSetMSS_IPV4()

+ +
+
+ + + + + + + + +
void prvSocketSetMSS_IPV4 (FreeRTOS_Socket_t * pxSocket)
+
+ +

Set the MSS (Maximum segment size) associated with the given socket.

+
Parameters
+ + +
[in]pxSocketThe socket whose MSS is to be set.
+
+
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___t_c_p___utils___i_pv6_8c.html b/V4.3.1/_free_r_t_o_s___t_c_p___utils___i_pv6_8c.html new file mode 100644 index 000000000..917fa7974 --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___t_c_p___utils___i_pv6_8c.html @@ -0,0 +1,161 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_TCP_Utils_IPv6.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_TCP_Utils_IPv6.c File Reference
+
+
+ +

Module contains utility functions used by FreeRTOS+TCP module. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include "FreeRTOS.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_IP_Private.h"
+#include "FreeRTOS_TCP_Utils.h"
+
+ + + + +

+Functions

void prvSocketSetMSS_IPV6 (FreeRTOS_Socket_t *pxSocket)
 Set the MSS (Maximum segment size) associated with the given socket.
 
+

Detailed Description

+

Module contains utility functions used by FreeRTOS+TCP module.

+

Endianness: in this module all ports and IP addresses are stored in host byte-order, except fields in the IP-packets

+

Function Documentation

+ +

◆ prvSocketSetMSS_IPV6()

+ +
+
+ + + + + + + + +
void prvSocketSetMSS_IPV6 (FreeRTOS_Socket_t * pxSocket)
+
+ +

Set the MSS (Maximum segment size) associated with the given socket.

+
Parameters
+ + +
[in]pxSocketThe socket whose MSS is to be set.
+
+
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___t_c_p___w_i_n_8c.html b/V4.3.1/_free_r_t_o_s___t_c_p___w_i_n_8c.html new file mode 100644 index 000000000..2895bde5a --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___t_c_p___w_i_n_8c.html @@ -0,0 +1,1986 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_TCP_WIN.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_TCP_WIN.c File Reference
+
+
+ +

Module which handles the TCP windowing schemes for FreeRTOS+TCP. Many functions have two versions - one for FreeRTOS+TCP (full) and one for FreeRTOS+TCP (lite). +More...

+
#include <stdint.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_UDP_IP.h"
+#include "FreeRTOS_Sockets.h"
+#include "FreeRTOS_IP_Private.h"
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define winSRTT_INCREMENT_NEW   2
 
#define winSRTT_INCREMENT_CURRENT   6
 
#define winSRTT_DECREMENT_NEW   1
 
#define winSRTT_DECREMENT_CURRENT   7
 
#define winSRTT_CAP_mS   ( ipconfigTCP_SRTT_MINIMUM_VALUE_MS )
 
+#define xTCPWindowRxNew(pxWindow, ulSequenceNumber, lCount)   xTCPWindowNew( pxWindow, ulSequenceNumber, lCount, pdTRUE )
 Create a new Rx window.
 
+#define xTCPWindowTxNew(pxWindow, ulSequenceNumber, lCount)   xTCPWindowNew( pxWindow, ulSequenceNumber, lCount, pdFALSE )
 Create a new Tx window.
 
+#define OPTION_CODE_SINGLE_SACK   ( 0x0101050aU )
 The code to send a single Selective ACK (SACK): NOP (0x01), NOP (0x01), SACK (0x05), LEN (0x0a), followed by a lower and a higher sequence number, where LEN is 2 + 2*4 = 10 bytes.
 
+#define DUPLICATE_ACKS_BEFORE_FAST_RETRANSMIT   ( 3U )
 Normal retransmission: A packet will be retransmitted after a Retransmit Time-Out (RTO). Fast retransmission: When 3 packets with a higher sequence number have been acknowledged by the peer, it is very unlikely a current packet will ever arrive. It will be retransmitted far before the RTO.
 
+#define MAX_TRANSMIT_COUNT_USING_LARGE_WINDOW   ( 4U )
 If there have been several retransmissions (4), decrease the size of the transmission window to at most 2 times MSS.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

static void vListInsertGeneric (List_t *const pxList, ListItem_t *const pxNewListItem, MiniListItem_t *pxWhere)
 Insert a new list item into a list.
 
static BaseType_t prvCreateSectors (void)
 Creates a pool of 'ipconfigTCP_WIN_SEG_COUNT' sector buffers. Should be called once only.
 
static TCPSegment_t * xTCPWindowRxFind (const TCPWindow_t *pxWindow, uint32_t ulSequenceNumber)
 Find a segment with a given sequence number in the list of received segments.
 
static TCPSegment_t * xTCPWindowNew (TCPWindow_t *pxWindow, uint32_t ulSequenceNumber, int32_t lCount, BaseType_t xIsForRx)
 Allocate a new segment object, either for transmission or reception.
 
static TCPSegment_t * xTCPWindowGetHead (const List_t *pxList)
 Remove the head item of a list (generic function).
 
static TCPSegment_t * xTCPWindowPeekHead (const List_t *pxList)
 Return the head item of a list (generic function).
 
static void vTCPWindowFree (TCPSegment_t *pxSegment)
 Release a segment object, return it to the list of available segment holders.
 
static TCPSegment_t * xTCPWindowRxConfirm (const TCPWindow_t *pxWindow, uint32_t ulSequenceNumber, uint32_t ulLength)
 A expected segment has been received, see if there is overlap with earlier segments.
 
static int32_t lTCPIncrementTxPosition (int32_t lPosition, int32_t lMax, int32_t lCount)
 Increment the position in a circular buffer of size 'lMax'.
 
static BaseType_t prvTCPWindowTxHasSpace (TCPWindow_t const *pxWindow, uint32_t ulWindowSize)
 Find out if the peer is able to receive more data.
 
static uint32_t prvTCPWindowTxCheckAck (TCPWindow_t *pxWindow, uint32_t ulFirst, uint32_t ulLast)
 An acknowledgement or a selective ACK (SACK) was received. See if some outstanding data may be removed from the transmission queue(s). All TX segments for which ( ( ulSequenceNumber >= ulFirst ) && ( ulSequenceNumber < ulLast ) in a contiguous block. Note that the segments are stored in xTxSegments in a strict sequential order.
 
static uint32_t prvTCPWindowFastRetransmit (TCPWindow_t *pxWindow, uint32_t ulFirst)
 See if there are segments that need a fast retransmission.
 
static portINLINE BaseType_t xSequenceLessThanOrEqual (uint32_t a, uint32_t b)
 Check if a <= b.
 
BaseType_t xSequenceLessThan (uint32_t a, uint32_t b)
 Check if a < b.
 
BaseType_t xSequenceGreaterThan (uint32_t a, uint32_t b)
 Check if a > b.
 
static portINLINE BaseType_t xSequenceGreaterThanOrEqual (uint32_t a, uint32_t b)
 Test if a>=b. This function is required since the sequence numbers can roll over.
 
static portINLINE void vListInsertFifo (List_t *const pxList, ListItem_t *const pxNewListItem)
 Insert the given item in the list in FIFO manner.
 
static portINLINE void vTCPTimerSet (TCPTimer_t *pxTimer)
 Set the timer's "born" time.
 
static portINLINE uint32_t ulTimerGetAge (const TCPTimer_t *pxTimer)
 Get the timer age in milliseconds.
 
BaseType_t xTCPWindowRxEmpty (const TCPWindow_t *pxWindow)
 See if the peer has more packets for this node, before allowing to shut down the connection.
 
void vTCPWindowDestroy (TCPWindow_t const *pxWindow)
 Return all segment descriptor to the poll of descriptors, before deleting a socket.
 
BaseType_t xTCPWindowCreate (TCPWindow_t *pxWindow, uint32_t ulRxWindowLength, uint32_t ulTxWindowLength, uint32_t ulAckNumber, uint32_t ulSequenceNumber, uint32_t ulMSS)
 Create a window for TCP.
 
void vTCPWindowInit (TCPWindow_t *pxWindow, uint32_t ulAckNumber, uint32_t ulSequenceNumber, uint32_t ulMSS)
 Initialise a TCP window.
 
+void vTCPSegmentCleanup (void)
 Free the space occupied by the pool of segment descriptors, normally never used.
 
static void prvTCPWindowRx_ExpectedRX (TCPWindow_t *pxWindow, uint32_t ulLength)
 Data has been received with the correct ( expected ) sequence number. It can be added to the RX stream buffer.
 
static int32_t prvTCPWindowRx_UnexpectedRX (TCPWindow_t *pxWindow, uint32_t ulSequenceNumber, uint32_t ulLength)
 Data has been received with a non-expected sequence number. This function will check if the RX data can be accepted.
 
int32_t lTCPWindowRxCheck (TCPWindow_t *pxWindow, uint32_t ulSequenceNumber, uint32_t ulLength, uint32_t ulSpace, uint32_t *pulSkipCount)
 Check what to do with a new incoming packet: store or ignore.
 
static int32_t prvTCPWindowTxAdd_FrontSegment (TCPWindow_t *pxWindow, TCPSegment_t *pxSegment, int32_t lBytesLeft)
 Adding data to a segment that was already in the TX queue. It will be filled-up to a maximum of MSS ( maximum segment size ).
 
int32_t lTCPWindowTxAdd (TCPWindow_t *pxWindow, uint32_t ulLength, int32_t lPosition, int32_t lMax)
 Will add data to be transmitted to the front of the segment fifo.
 
BaseType_t xTCPWindowTxDone (const TCPWindow_t *pxWindow)
 Returns true if there are no more outstanding TX segments.
 
BaseType_t xTCPWindowTxHasData (TCPWindow_t const *pxWindow, uint32_t ulWindowSize, TickType_t *pulDelay)
 Returns true if there is TX data that can be sent right now.
 
static TCPSegment_t * pxTCPWindowTx_GetWaitQueue (const TCPWindow_t *pxWindow)
 Three type of queues are used for transmission: priority, waiting, and the normal TX queue of unsent data. Message in the waiting queue will be sent when their timer has expired.
 
static TCPSegment_t * pxTCPWindowTx_GetTXQueue (TCPWindow_t *pxWindow, uint32_t ulWindowSize)
 See if there is a transmission in the normal TX queue. It is the first time these data are being sent. After sending they will move the waiting queue.
 
uint32_t ulTCPWindowTxGet (TCPWindow_t *pxWindow, uint32_t ulWindowSize, int32_t *plPosition)
 Get data that can be transmitted right now. There are three types of outstanding segments: Priority queue, Waiting queue, Normal TX queue.
 
static void prvTCPWindowTxCheckAck_CalcSRTT (TCPWindow_t *pxWindow, const TCPSegment_t *pxSegment)
 Data has been sent, and an ACK has been received. Make an estimate of the round-trip time, and calculate the new timeout for transmissions. More explanation in a comment here below.
 
uint32_t ulTCPWindowTxAck (TCPWindow_t *pxWindow, uint32_t ulSequenceNumber)
 Receive a normal ACK.
 
uint32_t ulTCPWindowTxSack (TCPWindow_t *pxWindow, uint32_t ulFirst, uint32_t ulLast)
 Receive a SACK option.
 
+ + + + + + + + +

+Variables

static TCPSegment_t * xTCPSegments = NULL
 
_static List_t xSegmentList
 
+BaseType_t xTCPWindowLoggingLevel = 0
 Logging verbosity level.
 
+

Detailed Description

+

Module which handles the TCP windowing schemes for FreeRTOS+TCP. Many functions have two versions - one for FreeRTOS+TCP (full) and one for FreeRTOS+TCP (lite).

+

In this module all ports and IP addresses and sequence numbers are being stored in host byte-order.

+

Macro Definition Documentation

+ +

◆ winSRTT_INCREMENT_NEW

+ +
+
+ + + + +
#define winSRTT_INCREMENT_NEW   2
+
+

New increment for the smoothed RTT.

+ +
+
+ +

◆ winSRTT_INCREMENT_CURRENT

+ +
+
+ + + + +
#define winSRTT_INCREMENT_CURRENT   6
+
+

Current increment for the smoothed RTT.

+ +
+
+ +

◆ winSRTT_DECREMENT_NEW

+ +
+
+ + + + +
#define winSRTT_DECREMENT_NEW   1
+
+

New decrement for the smoothed RTT.

+ +
+
+ +

◆ winSRTT_DECREMENT_CURRENT

+ +
+
+ + + + +
#define winSRTT_DECREMENT_CURRENT   7
+
+

Current decrement for the smoothed RTT.

+ +
+
+ +

◆ winSRTT_CAP_mS

+ +
+
+ + + + +
#define winSRTT_CAP_mS   ( ipconfigTCP_SRTT_MINIMUM_VALUE_MS )
+
+

Cap in milliseconds.

+ +
+
+

Function Documentation

+ +

◆ vListInsertGeneric()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void vListInsertGeneric (List_t *const pxList,
ListItem_t *const pxNewListItem,
MiniListItem_t * pxWhere 
)
+
+static
+
+ +

Insert a new list item into a list.

+
Parameters
+ + + + +
[in]pxListThe list in which the item is to be inserted.
[in]pxNewListItemThe item to be inserted.
[in]pxWhereWhere should the item be inserted.
+
+
+ +
+
+ +

◆ prvCreateSectors()

+ +
+
+ + + + + +
+ + + + + + + + +
static BaseType_t prvCreateSectors (void )
+
+static
+
+ +

Creates a pool of 'ipconfigTCP_WIN_SEG_COUNT' sector buffers. Should be called once only.

+
Returns
When the allocation was successful: pdPASS, otherwise pdFAIL.
+ +
+
+ +

◆ xTCPWindowRxFind()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static TCPSegment_t * xTCPWindowRxFind (const TCPWindow_t * pxWindow,
uint32_t ulSequenceNumber 
)
+
+static
+
+ +

Find a segment with a given sequence number in the list of received segments.

+
Parameters
+ + + +
[in]pxWindowThe descriptor of the TCP sliding windows.
[in]ulSequenceNumberthe sequence number to look-up
+
+
+
Returns
The address of the segment descriptor found, or NULL when not found.
+ +
+
+ +

◆ xTCPWindowNew()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static TCPSegment_t * xTCPWindowNew (TCPWindow_t * pxWindow,
uint32_t ulSequenceNumber,
int32_t lCount,
BaseType_t xIsForRx 
)
+
+static
+
+ +

Allocate a new segment object, either for transmission or reception.

+
Parameters
+ + + + + +
[in]pxWindowThe descriptor of the TCP sliding windows.
[in]ulSequenceNumberThe sequence number.
[in]lCountThe number of bytes stored in this segment.
[in]xIsForRxTrue when this is a reception segment.
+
+
+
Returns
Allocate and initialise a segment descriptor, or NULL when none was available.
+ +
+
+ +

◆ xTCPWindowGetHead()

+ +
+
+ + + + + +
+ + + + + + + + +
static TCPSegment_t * xTCPWindowGetHead (const List_t * pxList)
+
+static
+
+ +

Remove the head item of a list (generic function).

+
Parameters
+ + +
[in]pxListThe list of segment descriptors.
+
+
+
Returns
The address of the segment descriptor, or NULL when not found.
+ +
+
+ +

◆ xTCPWindowPeekHead()

+ +
+
+ + + + + +
+ + + + + + + + +
static TCPSegment_t * xTCPWindowPeekHead (const List_t * pxList)
+
+static
+
+ +

Return the head item of a list (generic function).

+
Parameters
+ + +
[in]pxListThe list of segment descriptors.
+
+
+
Returns
The address of the segment descriptor, or NULL when the list is empty.
+ +
+
+ +

◆ vTCPWindowFree()

+ +
+
+ + + + + +
+ + + + + + + + +
static void vTCPWindowFree (TCPSegment_t * pxSegment)
+
+static
+
+ +

Release a segment object, return it to the list of available segment holders.

+
Parameters
+ + +
[in]pxSegmentThe segment descriptor that must be freed.
+
+
+ +
+
+ +

◆ xTCPWindowRxConfirm()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static TCPSegment_t * xTCPWindowRxConfirm (const TCPWindow_t * pxWindow,
uint32_t ulSequenceNumber,
uint32_t ulLength 
)
+
+static
+
+ +

A expected segment has been received, see if there is overlap with earlier segments.

+
Parameters
+ + + + +
[in]pxWindowThe descriptor of the TCP sliding windows.
[in]ulSequenceNumberThe sequence number of the segment that was received.
[in]ulLengthThe number of bytes that were received.
+
+
+
Returns
The first segment descriptor involved, or NULL when no matching descriptor was found.
+ +
+
+ +

◆ lTCPIncrementTxPosition()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int32_t lTCPIncrementTxPosition (int32_t lPosition,
int32_t lMax,
int32_t lCount 
)
+
+static
+
+ +

Increment the position in a circular buffer of size 'lMax'.

+
Parameters
+ + + + +
[in]lPositionThe current index in the buffer.
[in]lMaxThe total number of items in this buffer.
[in]lCountThe number of bytes that must be advanced.
+
+
+
Returns
The new incremented position, or "( lPosition + lCount ) % lMax".
+ +
+
+ +

◆ prvTCPWindowTxHasSpace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static BaseType_t prvTCPWindowTxHasSpace (TCPWindow_t const * pxWindow,
uint32_t ulWindowSize 
)
+
+static
+
+ +

Find out if the peer is able to receive more data.

+
Parameters
+ + + +
[in]pxWindowThe descriptor of the TCP sliding windows.
[in]ulWindowSizeThe number of bytes in this segment.
+
+
+
Returns
True if the peer has space in it window to receive more data.
+ +
+
+ +

◆ prvTCPWindowTxCheckAck()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static uint32_t prvTCPWindowTxCheckAck (TCPWindow_t * pxWindow,
uint32_t ulFirst,
uint32_t ulLast 
)
+
+static
+
+ +

An acknowledgement or a selective ACK (SACK) was received. See if some outstanding data may be removed from the transmission queue(s). All TX segments for which ( ( ulSequenceNumber >= ulFirst ) && ( ulSequenceNumber < ulLast ) in a contiguous block. Note that the segments are stored in xTxSegments in a strict sequential order.

+
Parameters
+ + + + +
[in]pxWindowThe TCP-window object of the current connection.
[in]ulFirstThe sequence number of the first byte that was acknowledged.
[in]ulLastThe sequence number of the last byte ( minus one ) that was acknowledged.
+
+
+
Returns
number of bytes that the tail of txStream may be advanced.
+ +
+
+ +

◆ prvTCPWindowFastRetransmit()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static uint32_t prvTCPWindowFastRetransmit (TCPWindow_t * pxWindow,
uint32_t ulFirst 
)
+
+static
+
+ +

See if there are segments that need a fast retransmission.

+
Parameters
+ + + +
[in]pxWindowThe descriptor of the TCP sliding windows.
[in]ulFirstThe sequence number of the first segment that must be checked.
+
+
+
Returns
The number of segments that need a fast retransmission.
+ +
+
+ +

◆ xSequenceLessThanOrEqual()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static portINLINE BaseType_t xSequenceLessThanOrEqual (uint32_t a,
uint32_t b 
)
+
+static
+
+ +

Check if a <= b.

+
Parameters
+ + + +
[in]aThe value on the left-hand side.
[in]bThe value on the right-hand side.
+
+
+
Returns
pdTRUE when "( b - a ) < 0x80000000". Else, pdFALSE.
+ +
+
+ +

◆ xSequenceLessThan()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BaseType_t xSequenceLessThan (uint32_t a,
uint32_t b 
)
+
+ +

Check if a < b.

+
Parameters
+ + + +
[in]aThe value on the left-hand side.
[in]bThe value on the right-hand side.
+
+
+
Returns
pdTRUE when "( b - ( a + 1 ) ) < 0x80000000", else pdFALSE.
+ +
+
+ +

◆ xSequenceGreaterThan()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BaseType_t xSequenceGreaterThan (uint32_t a,
uint32_t b 
)
+
+ +

Check if a > b.

+
Parameters
+ + + +
[in]aThe value on the left-hand side.
[in]bThe value on the right-hand side.
+
+
+
Returns
pdTRUE when "( a - b ) < 0x80000000", else pdFALSE.
+ +
+
+ +

◆ xSequenceGreaterThanOrEqual()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static portINLINE BaseType_t xSequenceGreaterThanOrEqual (uint32_t a,
uint32_t b 
)
+
+static
+
+ +

Test if a>=b. This function is required since the sequence numbers can roll over.

+
Parameters
+ + + +
[in]aThe first sequence number.
[in]bThe second sequence number.
+
+
+
Returns
pdTRUE if a>=b, else pdFALSE.
+ +
+
+ +

◆ vListInsertFifo()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static portINLINE void vListInsertFifo (List_t *const pxList,
ListItem_t *const pxNewListItem 
)
+
+static
+
+ +

Insert the given item in the list in FIFO manner.

+
Parameters
+ + + +
[in]pxListThe list in which the item is to inserted.
[in]pxNewListItemThe item to be inserted.
+
+
+ +
+
+ +

◆ vTCPTimerSet()

+ +
+
+ + + + + +
+ + + + + + + + +
static portINLINE void vTCPTimerSet (TCPTimer_t * pxTimer)
+
+static
+
+ +

Set the timer's "born" time.

+
Parameters
+ + +
[in]pxTimerThe TCP timer.
+
+
+ +
+
+ +

◆ ulTimerGetAge()

+ +
+
+ + + + + +
+ + + + + + + + +
static portINLINE uint32_t ulTimerGetAge (const TCPTimer_t * pxTimer)
+
+static
+
+ +

Get the timer age in milliseconds.

+
Parameters
+ + +
[in]pxTimerThe timer whose age is to be fetched.
+
+
+
Returns
The time in milliseconds since the timer was born.
+ +
+
+ +

◆ xTCPWindowRxEmpty()

+ +
+
+ + + + + + + + +
BaseType_t xTCPWindowRxEmpty (const TCPWindow_t * pxWindow)
+
+ +

See if the peer has more packets for this node, before allowing to shut down the connection.

+
Parameters
+ + +
[in]pxWindowThe descriptor of the TCP sliding windows.
+
+
+
Returns
pdTRUE if the connection can be closed. Else, pdFALSE.
+ +
+
+ +

◆ vTCPWindowDestroy()

+ +
+
+ + + + + + + + +
void vTCPWindowDestroy (TCPWindow_t const * pxWindow)
+
+ +

Return all segment descriptor to the poll of descriptors, before deleting a socket.

+
Parameters
+ + +
[in]pxWindowThe descriptor of the TCP sliding windows.
+
+
+ +
+
+ +

◆ xTCPWindowCreate()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t xTCPWindowCreate (TCPWindow_t * pxWindow,
uint32_t ulRxWindowLength,
uint32_t ulTxWindowLength,
uint32_t ulAckNumber,
uint32_t ulSequenceNumber,
uint32_t ulMSS 
)
+
+ +

Create a window for TCP.

+
Parameters
+ + + + + + + +
[in]pxWindowThe window to be created.
[in]ulRxWindowLengthThe length of the receive window.
[in]ulTxWindowLengthThe length of the transmit window.
[in]ulAckNumberThe first ACK number.
[in]ulSequenceNumberThe first sequence number.
[in]ulMSSThe MSS of the connection.
+
+
+ +
+
+ +

◆ vTCPWindowInit()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void vTCPWindowInit (TCPWindow_t * pxWindow,
uint32_t ulAckNumber,
uint32_t ulSequenceNumber,
uint32_t ulMSS 
)
+
+ +

Initialise a TCP window.

+
Parameters
+ + + + + +
[in]pxWindowThe window to be initialised.
[in]ulAckNumberThe number of the first ACK.
[in]ulSequenceNumberThe first sequence number.
[in]ulMSSThe MSS of the connection.
+
+
+ +
+
+ +

◆ prvTCPWindowRx_ExpectedRX()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void prvTCPWindowRx_ExpectedRX (TCPWindow_t * pxWindow,
uint32_t ulLength 
)
+
+static
+
+ +

Data has been received with the correct ( expected ) sequence number. It can be added to the RX stream buffer.

+
Parameters
+ + + +
[in]pxWindowThe TCP sliding window data of the socket.
[in]ulLengthThe number of bytes that can be added.
+
+
+ +
+
+ +

◆ prvTCPWindowRx_UnexpectedRX()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int32_t prvTCPWindowRx_UnexpectedRX (TCPWindow_t * pxWindow,
uint32_t ulSequenceNumber,
uint32_t ulLength 
)
+
+static
+
+ +

Data has been received with a non-expected sequence number. This function will check if the RX data can be accepted.

+
Parameters
+ + + + +
[in]pxWindowThe TCP sliding window data of the socket.
[in]ulSequenceNumberThe sequence number at which the data should be placed.
[in]ulLengthThe number of bytes that can be added.
+
+
+
Returns
Return -1 if the data must be refused, otherwise it returns the offset ( from the head ) at which the data can be placed.
+ +
+
+ +

◆ lTCPWindowRxCheck()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int32_t lTCPWindowRxCheck (TCPWindow_t * pxWindow,
uint32_t ulSequenceNumber,
uint32_t ulLength,
uint32_t ulSpace,
uint32_t * pulSkipCount 
)
+
+ +

Check what to do with a new incoming packet: store or ignore.

+
Parameters
+ + + + + + +
[in]pxWindowThe descriptor of the TCP sliding windows.
[in]ulSequenceNumberThe sequence number of the packet received.
[in]ulLengthThe number of bytes received.
[in]ulSpaceThe available space in the RX stream buffer.
[out]pulSkipCountthe number of bytes to skip in the receive buffer.
+
+
+
Returns
0 or positive value indicating the offset at which the packet is to be stored, -1 if the packet is to be ignored.
+ +
+
+ +

◆ prvTCPWindowTxAdd_FrontSegment()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int32_t prvTCPWindowTxAdd_FrontSegment (TCPWindow_t * pxWindow,
TCPSegment_t * pxSegment,
int32_t lBytesLeft 
)
+
+static
+
+ +

Adding data to a segment that was already in the TX queue. It will be filled-up to a maximum of MSS ( maximum segment size ).

+
Parameters
+ + + + +
[in]pxWindowThe descriptor of the TCP sliding windows.
[in]pxSegmentThe TX segment with the highest sequence number, i.e. the "front segment".
[in]lBytesLeftThe number of bytes that must be added.
+
+
+
Returns
lToWrite: the number of bytes added to the segment.
+ +
+
+ +

◆ lTCPWindowTxAdd()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int32_t lTCPWindowTxAdd (TCPWindow_t * pxWindow,
uint32_t ulLength,
int32_t lPosition,
int32_t lMax 
)
+
+ +

Will add data to be transmitted to the front of the segment fifo.

+
Parameters
+ + + + + +
[in]pxWindowThe descriptor of the TCP sliding windows.
[in]ulLengthThe number of bytes that will be sent.
[in]lPositionThe index in the TX stream buffer.
[in]lMaxThe size of the ( circular ) TX stream buffer.
+
+
+
Returns
The number of bytes added to the sliding window for transmission.
+ +
+
+ +

◆ xTCPWindowTxDone()

+ +
+
+ + + + + + + + +
BaseType_t xTCPWindowTxDone (const TCPWindow_t * pxWindow)
+
+ +

Returns true if there are no more outstanding TX segments.

+
Parameters
+ + +
[in]pxWindowThe descriptor of the TCP sliding windows.
+
+
+
Returns
pdTRUE if there are no more outstanding Tx segments, else pdFALSE.
+ +
+
+ +

◆ xTCPWindowTxHasData()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t xTCPWindowTxHasData (TCPWindow_t const * pxWindow,
uint32_t ulWindowSize,
TickType_t * pulDelay 
)
+
+ +

Returns true if there is TX data that can be sent right now.

+
Parameters
+ + + + +
[in]pxWindowThe descriptor of the TCP sliding windows.
[in]ulWindowSizeThe current size of the sliding RX window of the peer.
[out]pulDelayThe delay before the packet may be sent.
+
+
+
Returns
pdTRUE if there is Tx data that can be sent, else pdFALSE.
+ +
+
+ +

◆ pxTCPWindowTx_GetWaitQueue()

+ +
+
+ + + + + +
+ + + + + + + + +
static TCPSegment_t * pxTCPWindowTx_GetWaitQueue (const TCPWindow_t * pxWindow)
+
+static
+
+ +

Three type of queues are used for transmission: priority, waiting, and the normal TX queue of unsent data. Message in the waiting queue will be sent when their timer has expired.

+
Parameters
+ + +
[in]pxWindowThe descriptor of the TCP sliding windows.
+
+
+ +
+
+ +

◆ pxTCPWindowTx_GetTXQueue()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static TCPSegment_t * pxTCPWindowTx_GetTXQueue (TCPWindow_t * pxWindow,
uint32_t ulWindowSize 
)
+
+static
+
+ +

See if there is a transmission in the normal TX queue. It is the first time these data are being sent. After sending they will move the waiting queue.

+
Parameters
+ + + +
[in]pxWindowThe descriptor of the TCP sliding windows.
[in]ulWindowSizeThe available space that the peer has in his reception window.
+
+
+
Returns
Either a segment that has to be sent, or NULL.
+ +
+
+ +

◆ ulTCPWindowTxGet()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint32_t ulTCPWindowTxGet (TCPWindow_t * pxWindow,
uint32_t ulWindowSize,
int32_t * plPosition 
)
+
+ +

Get data that can be transmitted right now. There are three types of outstanding segments: Priority queue, Waiting queue, Normal TX queue.

+
Parameters
+ + + + +
[in]pxWindowThe descriptor of the TCP sliding windows.
[in]ulWindowSizeThe current size of the sliding RX window of the peer.
[out]plPositionThe index within the TX stream buffer of the first byte to be sent.
+
+
+
Returns
The amount of data in bytes that can be transmitted right now.
+ +
+
+ +

◆ prvTCPWindowTxCheckAck_CalcSRTT()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void prvTCPWindowTxCheckAck_CalcSRTT (TCPWindow_t * pxWindow,
const TCPSegment_t * pxSegment 
)
+
+static
+
+ +

Data has been sent, and an ACK has been received. Make an estimate of the round-trip time, and calculate the new timeout for transmissions. More explanation in a comment here below.

+
Parameters
+ + + +
[in]pxWindowThe descriptor of the TCP sliding windows.
[in]pxSegmentThe segment that was just acknowledged.
+
+
+ +
+
+ +

◆ ulTCPWindowTxAck()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint32_t ulTCPWindowTxAck (TCPWindow_t * pxWindow,
uint32_t ulSequenceNumber 
)
+
+ +

Receive a normal ACK.

+
Parameters
+ + + +
[in]pxWindowWindow in which a data is receive.
[in]ulSequenceNumberThe sequence number of the ACK.
+
+
+
Returns
The location where the packet should be added.
+ +
+
+ +

◆ ulTCPWindowTxSack()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint32_t ulTCPWindowTxSack (TCPWindow_t * pxWindow,
uint32_t ulFirst,
uint32_t ulLast 
)
+
+ +

Receive a SACK option.

+
Parameters
+ + + + +
[in]pxWindowWindow in which the data is received.
[in]ulFirstIndex of starting position of options.
[in]ulLastIndex of end position of the options.
+
+
+
Returns
returns the number of bytes which have been acked starting from the head position.
+ +
+
+

Variable Documentation

+ +

◆ xTCPSegments

+ +
+
+ + + + + +
+ + + + +
TCPSegment_t* xTCPSegments = NULL
+
+static
+
+

< TCP segment pool.

+ +
+
+ +

◆ xSegmentList

+ +
+
+ + + + +
_static List_t xSegmentList
+
+

< List of free TCP segments.

+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___tiny___t_c_p_8c.html b/V4.3.1/_free_r_t_o_s___tiny___t_c_p_8c.html new file mode 100644 index 000000000..db87f4c5e --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___tiny___t_c_p_8c.html @@ -0,0 +1,126 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_Tiny_TCP.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
FreeRTOS_Tiny_TCP.c File Reference
+
+
+ +

Module which handles TCP when windowing is disabled. +More...

+
#include <stdint.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_UDP_IP.h"
+#include "FreeRTOS_Sockets.h"
+#include "FreeRTOS_IP_Private.h"
+

Detailed Description

+

Module which handles TCP when windowing is disabled.

+

In this module all ports and IP addresses and sequence numbers are being stored in host byte-order.

+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___u_d_p___i_p_8c.html b/V4.3.1/_free_r_t_o_s___u_d_p___i_p_8c.html new file mode 100644 index 000000000..98771f2ab --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___u_d_p___i_p_8c.html @@ -0,0 +1,219 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_UDP_IP.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_UDP_IP.c File Reference
+
+
+ +

This file has the source code for the UDP-IP functionality of the FreeRTOS+TCP network stack. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "queue.h"
+#include "semphr.h"
+#include "event_groups.h"
+#include "list.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_Sockets.h"
+#include "FreeRTOS_IP_Private.h"
+#include "FreeRTOS_UDP_IP.h"
+#include "FreeRTOS_DNS.h"
+#include "FreeRTOS_DHCP.h"
+#include "FreeRTOS_IP_Utils.h"
+#include "NetworkInterface.h"
+#include "NetworkBufferManagement.h"
+
+ + + + + + + +

+Functions

void vProcessGeneratedUDPPacket (NetworkBufferDescriptor_t *const pxNetworkBuffer)
 Process the generated UDP packet and do other checks before sending the packet such as cache check and address resolution.
 
BaseType_t xProcessReceivedUDPPacket (NetworkBufferDescriptor_t *pxNetworkBuffer, uint16_t usPort, BaseType_t *pxIsWaitingForResolution)
 Process the received UDP packet.
 
+

Detailed Description

+

This file has the source code for the UDP-IP functionality of the FreeRTOS+TCP network stack.

+

Function Documentation

+ +

◆ vProcessGeneratedUDPPacket()

+ +
+
+ + + + + + + + +
void vProcessGeneratedUDPPacket (NetworkBufferDescriptor_t *const pxNetworkBuffer)
+
+ +

Process the generated UDP packet and do other checks before sending the packet such as cache check and address resolution.

+
Parameters
+ + +
[in]pxNetworkBufferThe network buffer carrying the packet.
+
+
+ +
+
+ +

◆ xProcessReceivedUDPPacket()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t xProcessReceivedUDPPacket (NetworkBufferDescriptor_t * pxNetworkBuffer,
uint16_t usPort,
BaseType_t * pxIsWaitingForResolution 
)
+
+ +

Process the received UDP packet.

+
Parameters
+ + + + +
[in]pxNetworkBufferThe network buffer carrying the UDP packet.
[in]usPortThe port number on which this packet was received.
[out]pxIsWaitingForResolutionIf the packet is awaiting resolution, this pointer will be set to pdTRUE. pdFALSE otherwise.
+
+
+
Returns
pdPASS in case the UDP packet could be processed. Else pdFAIL is returned.
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___u_d_p___i_pv4_8c.html b/V4.3.1/_free_r_t_o_s___u_d_p___i_pv4_8c.html new file mode 100644 index 000000000..eda0005f1 --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___u_d_p___i_pv4_8c.html @@ -0,0 +1,220 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_UDP_IPv4.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_UDP_IPv4.c File Reference
+
+
+ +

This file has the source code for the UDP-IP functionality of the FreeRTOS+TCP network stack. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "queue.h"
+#include "semphr.h"
+#include "event_groups.h"
+#include "list.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_Sockets.h"
+#include "FreeRTOS_IP_Private.h"
+#include "FreeRTOS_UDP_IP.h"
+#include "FreeRTOS_ARP.h"
+#include "FreeRTOS_DNS.h"
+#include "FreeRTOS_DHCP.h"
+#include "FreeRTOS_IP_Utils.h"
+#include "NetworkInterface.h"
+#include "NetworkBufferManagement.h"
+
+ + + + + + + +

+Functions

void vProcessGeneratedUDPPacket_IPv4 (NetworkBufferDescriptor_t *const pxNetworkBuffer)
 Process the generated UDP packet and do other checks before sending the packet such as ARP cache check and address resolution.
 
BaseType_t xProcessReceivedUDPPacket_IPv4 (NetworkBufferDescriptor_t *pxNetworkBuffer, uint16_t usPort, BaseType_t *pxIsWaitingForARPResolution)
 Process the received UDP packet.
 
+

Detailed Description

+

This file has the source code for the UDP-IP functionality of the FreeRTOS+TCP network stack.

+

Function Documentation

+ +

◆ vProcessGeneratedUDPPacket_IPv4()

+ +
+
+ + + + + + + + +
void vProcessGeneratedUDPPacket_IPv4 (NetworkBufferDescriptor_t *const pxNetworkBuffer)
+
+ +

Process the generated UDP packet and do other checks before sending the packet such as ARP cache check and address resolution.

+
Parameters
+ + +
[in]pxNetworkBufferThe network buffer carrying the packet.
+
+
+ +
+
+ +

◆ xProcessReceivedUDPPacket_IPv4()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t xProcessReceivedUDPPacket_IPv4 (NetworkBufferDescriptor_t * pxNetworkBuffer,
uint16_t usPort,
BaseType_t * pxIsWaitingForARPResolution 
)
+
+ +

Process the received UDP packet.

+
Parameters
+ + + + +
[in]pxNetworkBufferThe network buffer carrying the UDP packet.
[in]usPortThe port number on which this packet was received.
[out]pxIsWaitingForARPResolutionIf the packet is awaiting ARP resolution, this pointer will be set to pdTRUE. pdFALSE otherwise.
+
+
+
Returns
pdPASS in case the UDP packet could be processed. Else pdFAIL is returned.
+ +
+
+
+
+ + + + diff --git a/V4.3.1/_free_r_t_o_s___u_d_p___i_pv6_8c.html b/V4.3.1/_free_r_t_o_s___u_d_p___i_pv6_8c.html new file mode 100644 index 000000000..78d369768 --- /dev/null +++ b/V4.3.1/_free_r_t_o_s___u_d_p___i_pv6_8c.html @@ -0,0 +1,317 @@ + + + + + + + +FreeRTOS-Plus-TCP: FreeRTOS_UDP_IPv6.c File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FreeRTOS_UDP_IPv6.c File Reference
+
+
+ +

This file has the source code for the UDP-IP functionality of the FreeRTOS+TCP network stack. +More...

+
#include <stdint.h>
+#include <stdio.h>
+#include "FreeRTOS.h"
+#include "task.h"
+#include "queue.h"
+#include "semphr.h"
+#include "event_groups.h"
+#include "list.h"
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_Sockets.h"
+#include "FreeRTOS_IP_Private.h"
+#include "FreeRTOS_UDP_IP.h"
+#include "FreeRTOS_DNS.h"
+#include "FreeRTOS_DHCP.h"
+#include "FreeRTOS_ND.h"
+#include "FreeRTOS_IP_Utils.h"
+#include "NetworkInterface.h"
+#include "NetworkBufferManagement.h"
+
+ + + + + + + + + + + + + +

+Functions

static NetworkEndPoint_t * pxGetEndpoint (BaseType_t xIPType, BaseType_t xIsGlobal)
 Get the first end point of the type (IPv4/IPv6) from the list the list of end points.
 
static eResolutionLookupResult_t prvStartLookup (NetworkBufferDescriptor_t *const pxNetworkBuffer, BaseType_t *pxLostBuffer)
 This function is called in case the IP-address was not found, i.e. in the cache 'eResolutionCacheMiss' was returned. A Neighbour solicitation will be emitted.
 
void vProcessGeneratedUDPPacket_IPv6 (NetworkBufferDescriptor_t *const pxNetworkBuffer)
 Process the generated UDP packet and do other checks before sending the packet such as ND cache check and address resolution.
 
BaseType_t xProcessReceivedUDPPacket_IPv6 (NetworkBufferDescriptor_t *pxNetworkBuffer, uint16_t usPort, BaseType_t *pxIsWaitingForNDResolution)
 Process the received UDP packet.
 
+

Detailed Description

+

This file has the source code for the UDP-IP functionality of the FreeRTOS+TCP network stack.

+

Function Documentation

+ +

◆ pxGetEndpoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static NetworkEndPoint_t * pxGetEndpoint (BaseType_t xIPType,
BaseType_t xIsGlobal 
)
+
+static
+
+ +

Get the first end point of the type (IPv4/IPv6) from the list the list of end points.

+
Parameters
+ + + +
[in]xIPTypeIP type (ipTYPE_IPv6/ipTYPE_IPv4)
[in]xIsGlobalwhen pdTRUE, an endpoint with a global address must be returned. When pdFALSE, a local-link endpoint is returned. This only applies to IPv6 endpoints.
+
+
+
Returns
Pointer to the first end point of the given IP type from the list of end points.
+ +
+
+ +

◆ prvStartLookup()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static eResolutionLookupResult_t prvStartLookup (NetworkBufferDescriptor_t *const pxNetworkBuffer,
BaseType_t * pxLostBuffer 
)
+
+static
+
+ +

This function is called in case the IP-address was not found, i.e. in the cache 'eResolutionCacheMiss' was returned. A Neighbour solicitation will be emitted.

+
Parameters
+ + + +
[in]pxNetworkBufferThe network buffer carrying the UDP or ICMP packet.
[out]pxLostBufferThe pointee will be set to true in case the network packet got released ( the ownership was taken ).
+
+
+ +
+
+ +

◆ vProcessGeneratedUDPPacket_IPv6()

+ +
+
+ + + + + + + + +
void vProcessGeneratedUDPPacket_IPv6 (NetworkBufferDescriptor_t *const pxNetworkBuffer)
+
+ +

Process the generated UDP packet and do other checks before sending the packet such as ND cache check and address resolution.

+
Parameters
+ + +
[in]pxNetworkBufferThe network buffer carrying the packet.
+
+
+ +
+
+ +

◆ xProcessReceivedUDPPacket_IPv6()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
BaseType_t xProcessReceivedUDPPacket_IPv6 (NetworkBufferDescriptor_t * pxNetworkBuffer,
uint16_t usPort,
BaseType_t * pxIsWaitingForNDResolution 
)
+
+ +

Process the received UDP packet.

+
Parameters
+ + + + +
[in]pxNetworkBufferThe network buffer carrying the UDP packet.
[in]usPortThe port number on which this packet was received.
[out]pxIsWaitingForNDResolutionIf the packet is awaiting ND resolution, this pointer will be set to pdTRUE. pdFALSE otherwise.
+
+
+
Returns
pdPASS in case the UDP packet could be processed. Else pdFAIL is returned.
+ +
+
+
+
+ + + + diff --git a/V4.3.1/annotated.html b/V4.3.1/annotated.html new file mode 100644 index 000000000..a4249fc40 --- /dev/null +++ b/V4.3.1/annotated.html @@ -0,0 +1,121 @@ + + + + + + + +FreeRTOS-Plus-TCP: Data Structures + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Data Structures
+
+
+
Here are the data structures with brief descriptions:
+ + + + + + +
 CstructA DNS query consists of a header, as described in 'struct xDNSMessage' It is followed by 1 or more queries, each one consisting of a name and a tail, with two fields: type and class
 CuIntPtrUintptr_t is an unsigned integer type that is capable of storing a data pointer. Therefore it is safe to convert from a void pointer to a uintptr_t, using a union
 CxIPv6_CoupleA util struct to list the IPv6 IP types, prefix and type bit mask
 CxUnion32_t
 CxUnionPtr_t
+
+
+
+ + + + diff --git a/V4.3.1/bc_s.png b/V4.3.1/bc_s.png new file mode 100644 index 000000000..224b29aa9 Binary files /dev/null and b/V4.3.1/bc_s.png differ diff --git a/V4.3.1/bc_sd.png b/V4.3.1/bc_sd.png new file mode 100644 index 000000000..31ca888dc Binary files /dev/null and b/V4.3.1/bc_sd.png differ diff --git a/V4.3.1/bdwn.png b/V4.3.1/bdwn.png new file mode 100644 index 000000000..940a0b950 Binary files /dev/null and b/V4.3.1/bdwn.png differ diff --git a/V4.3.1/classes.html b/V4.3.1/classes.html new file mode 100644 index 000000000..33a9ba4f4 --- /dev/null +++ b/V4.3.1/classes.html @@ -0,0 +1,124 @@ + + + + + + + +FreeRTOS-Plus-TCP: Data Structure Index + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Data Structure Index
+
+
+
S | U | X
+ +
+
+ + + + diff --git a/V4.3.1/closed.png b/V4.3.1/closed.png new file mode 100644 index 000000000..98cc2c909 Binary files /dev/null and b/V4.3.1/closed.png differ diff --git a/V4.3.1/dir_b2f33c71d4aa5e7af42a1ca61ff5af1b.html b/V4.3.1/dir_b2f33c71d4aa5e7af42a1ca61ff5af1b.html new file mode 100644 index 000000000..1ceb951c4 --- /dev/null +++ b/V4.3.1/dir_b2f33c71d4aa5e7af42a1ca61ff5af1b.html @@ -0,0 +1,243 @@ + + + + + + + +FreeRTOS-Plus-TCP: source Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
source Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  FreeRTOS_ARP.c
 Implements the Address Resolution Protocol for the FreeRTOS+TCP network stack.
 
file  FreeRTOS_BitConfig.c
 Some functions that help when analysing a binary stream of information. It offers an alternative to using packet structs with unaligned data members.
 
file  FreeRTOS_DHCP.c
 Implements the Dynamic Host Configuration Protocol for the FreeRTOS+TCP network stack.
 
file  FreeRTOS_DHCPv6.c
 A DHCPv6 client.
 
file  FreeRTOS_DNS.c
 Implements the Domain Name System for the FreeRTOS+TCP network stack.
 
file  FreeRTOS_DNS_Cache.c
 File that handles the DNS caching option.
 
file  FreeRTOS_DNS_Callback.c
 File that handles the DNS Callback option.
 
file  FreeRTOS_DNS_Networking.c
 Implements the Domain Name System Networking for the FreeRTOS+TCP network stack.
 
file  FreeRTOS_DNS_Parser.c
 Implements the DNS message parser.
 
file  FreeRTOS_ICMP.c
 Implements the Internet Control Message Protocol for the FreeRTOS+TCP network stack.
 
file  FreeRTOS_IP.c
 Implements the basic functionality for the FreeRTOS+TCP network stack.
 
file  FreeRTOS_IP_Timers.c
 Implements the Internet Control Message Protocol for the FreeRTOS+TCP network stack.
 
file  FreeRTOS_IP_Utils.c
 Implements the basic functionality for the FreeRTOS+TCP network stack.
 
file  FreeRTOS_IPv4.c
 Implements the basic functionality for the FreeRTOS+TCP network stack.
 
file  FreeRTOS_IPv4_Sockets.c
 Implements the Sockets API based on Berkeley sockets for the FreeRTOS+TCP network stack. Sockets are used by the application processes to interact with the IP-task which in turn interacts with the hardware.
 
file  FreeRTOS_IPv4_Utils.c
 Implements the basic functionality for the FreeRTOS+TCP network stack functions for IPv4.
 
file  FreeRTOS_IPv6.c
 Implements the basic functionality for the FreeRTOS+TCP network stack.
 
file  FreeRTOS_IPv6_Sockets.c
 Implements the Sockets API based on Berkeley sockets for the FreeRTOS+TCP network stack. Sockets are used by the application processes to interact with the IP-task which in turn interacts with the hardware.
 
file  FreeRTOS_IPv6_Utils.c
 Implements the basic functionality for the FreeRTOS+TCP network stack functions for IPv6.
 
file  FreeRTOS_ND.c
 Implements a few functions that handle Neighbour Discovery and other ICMPv6 messages.
 
file  FreeRTOS_RA.c
 A client implementation of Router advertisement protocol.
 
file  FreeRTOS_Routing.c
 Implements endpoint interfaces functions and utilities.
 
file  FreeRTOS_Sockets.c
 Implements the Sockets API based on Berkeley sockets for the FreeRTOS+TCP network stack. Sockets are used by the application processes to interact with the IP-task which in turn interacts with the hardware.
 
file  FreeRTOS_Stream_Buffer.c
 Provides the API for managing/creating the stream buffers in the FreeRTOS+TCP network stack.
 
file  FreeRTOS_TCP_IP.c
 Module which handles the TCP connections for FreeRTOS+TCP. It depends on FreeRTOS_TCP_WIN.c, which handles the TCP windowing schemes.
 
file  FreeRTOS_TCP_IP_IPv4.c
 Module which handles the TCP connections for FreeRTOS+TCP. It depends on FreeRTOS_TCP_WIN.c, which handles the TCP windowing schemes.
 
file  FreeRTOS_TCP_IP_IPv6.c
 Module which handles the TCP connections for FreeRTOS+TCP. It depends on FreeRTOS_TCP_WIN.c, which handles the TCP windowing schemes.
 
file  FreeRTOS_TCP_Reception.c
 Module which processes the packet received from a socket for FreeRTOS+TCP.
 
file  FreeRTOS_TCP_State_Handling.c
 Module which handles the TCP protocol state transition for FreeRTOS+TCP.
 
file  FreeRTOS_TCP_State_Handling_IPv4.c
 Module which handles the TCP protocol state transition for FreeRTOS+TCP.
 
file  FreeRTOS_TCP_State_Handling_IPv6.c
 Module which handles the TCP protocol state transition for FreeRTOS+TCP.
 
file  FreeRTOS_TCP_Transmission.c
 Module which prepares the packet to be sent through a socket for FreeRTOS+TCP. It depends on FreeRTOS_TCP_WIN.c, which handles the TCP windowing schemes.
 
file  FreeRTOS_TCP_Transmission_IPv4.c
 Module which prepares the packet to be sent through a socket for FreeRTOS+TCP. It depends on FreeRTOS_TCP_WIN.c, which handles the TCP windowing schemes.
 
file  FreeRTOS_TCP_Transmission_IPv6.c
 Module which prepares the packet to be sent through a socket for FreeRTOS+TCP. It depends on FreeRTOS_TCP_WIN.c, which handles the TCP windowing schemes.
 
file  FreeRTOS_TCP_Utils.c
 Module contains utility functions used by FreeRTOS+TCP module.
 
file  FreeRTOS_TCP_Utils_IPv4.c
 Module contains utility functions used by FreeRTOS+TCP module.
 
file  FreeRTOS_TCP_Utils_IPv6.c
 Module contains utility functions used by FreeRTOS+TCP module.
 
file  FreeRTOS_TCP_WIN.c
 Module which handles the TCP windowing schemes for FreeRTOS+TCP. Many functions have two versions - one for FreeRTOS+TCP (full) and one for FreeRTOS+TCP (lite).
 
file  FreeRTOS_Tiny_TCP.c
 Module which handles TCP when windowing is disabled.
 
file  FreeRTOS_UDP_IP.c
 This file has the source code for the UDP-IP functionality of the FreeRTOS+TCP network stack.
 
file  FreeRTOS_UDP_IPv4.c
 This file has the source code for the UDP-IP functionality of the FreeRTOS+TCP network stack.
 
file  FreeRTOS_UDP_IPv6.c
 This file has the source code for the UDP-IP functionality of the FreeRTOS+TCP network stack.
 
+
+
+ + + + diff --git a/V4.3.1/doc.png b/V4.3.1/doc.png new file mode 100644 index 000000000..17edabff9 Binary files /dev/null and b/V4.3.1/doc.png differ diff --git a/V4.3.1/docd.png b/V4.3.1/docd.png new file mode 100644 index 000000000..d7c94fda9 Binary files /dev/null and b/V4.3.1/docd.png differ diff --git a/V4.3.1/doxygen.css b/V4.3.1/doxygen.css new file mode 100644 index 000000000..8fee6182e --- /dev/null +++ b/V4.3.1/doxygen.css @@ -0,0 +1,1989 @@ +/* The standard CSS for doxygen 1.9.6*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.png'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.png'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + diff --git a/V4.3.1/doxygen.svg b/V4.3.1/doxygen.svg new file mode 100644 index 000000000..d42dad52d --- /dev/null +++ b/V4.3.1/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/V4.3.1/dynsections.js b/V4.3.1/dynsections.js new file mode 100644 index 000000000..f579fbf3e --- /dev/null +++ b/V4.3.1/dynsections.js @@ -0,0 +1,123 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +FreeRTOS-Plus-TCP: Files + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Files
+
+
+
The following files are associated with this library.
+
[detail level 12]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  source
 FreeRTOS_ARP.cImplements the Address Resolution Protocol for the FreeRTOS+TCP network stack
 FreeRTOS_BitConfig.cSome functions that help when analysing a binary stream of information. It offers an alternative to using packet structs with unaligned data members
 FreeRTOS_DHCP.cImplements the Dynamic Host Configuration Protocol for the FreeRTOS+TCP network stack
 FreeRTOS_DHCPv6.cA DHCPv6 client
 FreeRTOS_DNS.cImplements the Domain Name System for the FreeRTOS+TCP network stack
 FreeRTOS_DNS_Cache.cFile that handles the DNS caching option
 FreeRTOS_DNS_Callback.cFile that handles the DNS Callback option
 FreeRTOS_DNS_Networking.cImplements the Domain Name System Networking for the FreeRTOS+TCP network stack
 FreeRTOS_DNS_Parser.cImplements the DNS message parser
 FreeRTOS_ICMP.cImplements the Internet Control Message Protocol for the FreeRTOS+TCP network stack
 FreeRTOS_IP.cImplements the basic functionality for the FreeRTOS+TCP network stack
 FreeRTOS_IP_Timers.cImplements the Internet Control Message Protocol for the FreeRTOS+TCP network stack
 FreeRTOS_IP_Utils.cImplements the basic functionality for the FreeRTOS+TCP network stack
 FreeRTOS_IPv4.cImplements the basic functionality for the FreeRTOS+TCP network stack
 FreeRTOS_IPv4_Sockets.cImplements the Sockets API based on Berkeley sockets for the FreeRTOS+TCP network stack. Sockets are used by the application processes to interact with the IP-task which in turn interacts with the hardware
 FreeRTOS_IPv4_Utils.cImplements the basic functionality for the FreeRTOS+TCP network stack functions for IPv4
 FreeRTOS_IPv6.cImplements the basic functionality for the FreeRTOS+TCP network stack
 FreeRTOS_IPv6_Sockets.cImplements the Sockets API based on Berkeley sockets for the FreeRTOS+TCP network stack. Sockets are used by the application processes to interact with the IP-task which in turn interacts with the hardware
 FreeRTOS_IPv6_Utils.cImplements the basic functionality for the FreeRTOS+TCP network stack functions for IPv6
 FreeRTOS_ND.cImplements a few functions that handle Neighbour Discovery and other ICMPv6 messages
 FreeRTOS_RA.cA client implementation of Router advertisement protocol
 FreeRTOS_Routing.cImplements endpoint interfaces functions and utilities
 FreeRTOS_Sockets.cImplements the Sockets API based on Berkeley sockets for the FreeRTOS+TCP network stack. Sockets are used by the application processes to interact with the IP-task which in turn interacts with the hardware
 FreeRTOS_Stream_Buffer.cProvides the API for managing/creating the stream buffers in the FreeRTOS+TCP network stack
 FreeRTOS_TCP_IP.cModule which handles the TCP connections for FreeRTOS+TCP. It depends on FreeRTOS_TCP_WIN.c, which handles the TCP windowing schemes
 FreeRTOS_TCP_IP_IPv4.cModule which handles the TCP connections for FreeRTOS+TCP. It depends on FreeRTOS_TCP_WIN.c, which handles the TCP windowing schemes
 FreeRTOS_TCP_IP_IPv6.cModule which handles the TCP connections for FreeRTOS+TCP. It depends on FreeRTOS_TCP_WIN.c, which handles the TCP windowing schemes
 FreeRTOS_TCP_Reception.cModule which processes the packet received from a socket for FreeRTOS+TCP
 FreeRTOS_TCP_State_Handling.cModule which handles the TCP protocol state transition for FreeRTOS+TCP
 FreeRTOS_TCP_State_Handling_IPv4.cModule which handles the TCP protocol state transition for FreeRTOS+TCP
 FreeRTOS_TCP_State_Handling_IPv6.cModule which handles the TCP protocol state transition for FreeRTOS+TCP
 FreeRTOS_TCP_Transmission.cModule which prepares the packet to be sent through a socket for FreeRTOS+TCP. It depends on FreeRTOS_TCP_WIN.c, which handles the TCP windowing schemes
 FreeRTOS_TCP_Transmission_IPv4.cModule which prepares the packet to be sent through a socket for FreeRTOS+TCP. It depends on FreeRTOS_TCP_WIN.c, which handles the TCP windowing schemes
 FreeRTOS_TCP_Transmission_IPv6.cModule which prepares the packet to be sent through a socket for FreeRTOS+TCP. It depends on FreeRTOS_TCP_WIN.c, which handles the TCP windowing schemes
 FreeRTOS_TCP_Utils.cModule contains utility functions used by FreeRTOS+TCP module
 FreeRTOS_TCP_Utils_IPv4.cModule contains utility functions used by FreeRTOS+TCP module
 FreeRTOS_TCP_Utils_IPv6.cModule contains utility functions used by FreeRTOS+TCP module
 FreeRTOS_TCP_WIN.cModule which handles the TCP windowing schemes for FreeRTOS+TCP. Many functions have two versions - one for FreeRTOS+TCP (full) and one for FreeRTOS+TCP (lite)
 FreeRTOS_Tiny_TCP.cModule which handles TCP when windowing is disabled
 FreeRTOS_UDP_IP.cThis file has the source code for the UDP-IP functionality of the FreeRTOS+TCP network stack
 FreeRTOS_UDP_IPv4.cThis file has the source code for the UDP-IP functionality of the FreeRTOS+TCP network stack
 FreeRTOS_UDP_IPv6.cThis file has the source code for the UDP-IP functionality of the FreeRTOS+TCP network stack
+
+
+
+ + + + diff --git a/V4.3.1/folderclosed.png b/V4.3.1/folderclosed.png new file mode 100644 index 000000000..bb8ab35ed Binary files /dev/null and b/V4.3.1/folderclosed.png differ diff --git a/V4.3.1/folderopen.png b/V4.3.1/folderopen.png new file mode 100644 index 000000000..d6c7f676a Binary files /dev/null and b/V4.3.1/folderopen.png differ diff --git a/V4.3.1/functions.html b/V4.3.1/functions.html new file mode 100644 index 000000000..31ea9be6b --- /dev/null +++ b/V4.3.1/functions.html @@ -0,0 +1,124 @@ + + + + + + + +FreeRTOS-Plus-TCP: Data Fields + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+
+
+ + + + diff --git a/V4.3.1/functions_vars.html b/V4.3.1/functions_vars.html new file mode 100644 index 000000000..53a7ffb9f --- /dev/null +++ b/V4.3.1/functions_vars.html @@ -0,0 +1,124 @@ + + + + + + + +FreeRTOS-Plus-TCP: Data Fields - Variables + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
+
+ + + + diff --git a/V4.3.1/globals.html b/V4.3.1/globals.html new file mode 100644 index 000000000..3b2d00bbc --- /dev/null +++ b/V4.3.1/globals.html @@ -0,0 +1,117 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- a -

+
+
+ + + + diff --git a/V4.3.1/globals_b.html b/V4.3.1/globals_b.html new file mode 100644 index 000000000..041be3556 --- /dev/null +++ b/V4.3.1/globals_b.html @@ -0,0 +1,114 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- b -

+
+
+ + + + diff --git a/V4.3.1/globals_c.html b/V4.3.1/globals_c.html new file mode 100644 index 000000000..40936662d --- /dev/null +++ b/V4.3.1/globals_c.html @@ -0,0 +1,114 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- c -

+
+
+ + + + diff --git a/V4.3.1/globals_d.html b/V4.3.1/globals_d.html new file mode 100644 index 000000000..57fcc0585 --- /dev/null +++ b/V4.3.1/globals_d.html @@ -0,0 +1,127 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- d -

+
+
+ + + + diff --git a/V4.3.1/globals_defs.html b/V4.3.1/globals_defs.html new file mode 100644 index 000000000..bd05d1615 --- /dev/null +++ b/V4.3.1/globals_defs.html @@ -0,0 +1,223 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- a -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- i -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- r -

+ + +

- s -

+ + +

- w -

+ + +

- x -

+
+
+ + + + diff --git a/V4.3.1/globals_e.html b/V4.3.1/globals_e.html new file mode 100644 index 000000000..d9ad3115f --- /dev/null +++ b/V4.3.1/globals_e.html @@ -0,0 +1,124 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- e -

+
+
+ + + + diff --git a/V4.3.1/globals_f.html b/V4.3.1/globals_f.html new file mode 100644 index 000000000..d3db6fbfd --- /dev/null +++ b/V4.3.1/globals_f.html @@ -0,0 +1,219 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- f -

+
+
+ + + + diff --git a/V4.3.1/globals_func.html b/V4.3.1/globals_func.html new file mode 100644 index 000000000..8c0d291f9 --- /dev/null +++ b/V4.3.1/globals_func.html @@ -0,0 +1,114 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- b -

+
+
+ + + + diff --git a/V4.3.1/globals_func_c.html b/V4.3.1/globals_func_c.html new file mode 100644 index 000000000..65fe1cf30 --- /dev/null +++ b/V4.3.1/globals_func_c.html @@ -0,0 +1,114 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- c -

+
+
+ + + + diff --git a/V4.3.1/globals_func_d.html b/V4.3.1/globals_func_d.html new file mode 100644 index 000000000..2a01d001b --- /dev/null +++ b/V4.3.1/globals_func_d.html @@ -0,0 +1,122 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- d -

+
+
+ + + + diff --git a/V4.3.1/globals_func_e.html b/V4.3.1/globals_func_e.html new file mode 100644 index 000000000..72d894223 --- /dev/null +++ b/V4.3.1/globals_func_e.html @@ -0,0 +1,121 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- e -

+
+
+ + + + diff --git a/V4.3.1/globals_func_f.html b/V4.3.1/globals_func_f.html new file mode 100644 index 000000000..eedf0d5fc --- /dev/null +++ b/V4.3.1/globals_func_f.html @@ -0,0 +1,216 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- f -

+
+
+ + + + diff --git a/V4.3.1/globals_func_l.html b/V4.3.1/globals_func_l.html new file mode 100644 index 000000000..bfc91a7a1 --- /dev/null +++ b/V4.3.1/globals_func_l.html @@ -0,0 +1,117 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- l -

+
+
+ + + + diff --git a/V4.3.1/globals_func_p.html b/V4.3.1/globals_func_p.html new file mode 100644 index 000000000..c641ce2f0 --- /dev/null +++ b/V4.3.1/globals_func_p.html @@ -0,0 +1,287 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- p -

+
+
+ + + + diff --git a/V4.3.1/globals_func_u.html b/V4.3.1/globals_func_u.html new file mode 100644 index 000000000..81b606c24 --- /dev/null +++ b/V4.3.1/globals_func_u.html @@ -0,0 +1,140 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- u -

+
+
+ + + + diff --git a/V4.3.1/globals_func_v.html b/V4.3.1/globals_func_v.html new file mode 100644 index 000000000..f93fbb803 --- /dev/null +++ b/V4.3.1/globals_func_v.html @@ -0,0 +1,187 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- v -

+
+
+ + + + diff --git a/V4.3.1/globals_func_x.html b/V4.3.1/globals_func_x.html new file mode 100644 index 000000000..1fc8546ed --- /dev/null +++ b/V4.3.1/globals_func_x.html @@ -0,0 +1,177 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- x -

+
+
+ + + + diff --git a/V4.3.1/globals_i.html b/V4.3.1/globals_i.html new file mode 100644 index 000000000..b36ec8d50 --- /dev/null +++ b/V4.3.1/globals_i.html @@ -0,0 +1,134 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- i -

+
+
+ + + + diff --git a/V4.3.1/globals_l.html b/V4.3.1/globals_l.html new file mode 100644 index 000000000..55e6305da --- /dev/null +++ b/V4.3.1/globals_l.html @@ -0,0 +1,117 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- l -

+
+
+ + + + diff --git a/V4.3.1/globals_m.html b/V4.3.1/globals_m.html new file mode 100644 index 000000000..f2e306923 --- /dev/null +++ b/V4.3.1/globals_m.html @@ -0,0 +1,114 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- m -

+
+
+ + + + diff --git a/V4.3.1/globals_n.html b/V4.3.1/globals_n.html new file mode 100644 index 000000000..ef409a86c --- /dev/null +++ b/V4.3.1/globals_n.html @@ -0,0 +1,118 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- n -

+
+
+ + + + diff --git a/V4.3.1/globals_o.html b/V4.3.1/globals_o.html new file mode 100644 index 000000000..6aa7263f7 --- /dev/null +++ b/V4.3.1/globals_o.html @@ -0,0 +1,114 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- o -

+
+
+ + + + diff --git a/V4.3.1/globals_p.html b/V4.3.1/globals_p.html new file mode 100644 index 000000000..0e244b761 --- /dev/null +++ b/V4.3.1/globals_p.html @@ -0,0 +1,291 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- p -

+
+
+ + + + diff --git a/V4.3.1/globals_r.html b/V4.3.1/globals_r.html new file mode 100644 index 000000000..c608c26dc --- /dev/null +++ b/V4.3.1/globals_r.html @@ -0,0 +1,121 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- r -

+
+
+ + + + diff --git a/V4.3.1/globals_s.html b/V4.3.1/globals_s.html new file mode 100644 index 000000000..1bf3894b5 --- /dev/null +++ b/V4.3.1/globals_s.html @@ -0,0 +1,124 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- s -

+
+
+ + + + diff --git a/V4.3.1/globals_u.html b/V4.3.1/globals_u.html new file mode 100644 index 000000000..7f20bdd13 --- /dev/null +++ b/V4.3.1/globals_u.html @@ -0,0 +1,142 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- u -

+
+
+ + + + diff --git a/V4.3.1/globals_v.html b/V4.3.1/globals_v.html new file mode 100644 index 000000000..018637432 --- /dev/null +++ b/V4.3.1/globals_v.html @@ -0,0 +1,187 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- v -

+
+
+ + + + diff --git a/V4.3.1/globals_vars.html b/V4.3.1/globals_vars.html new file mode 100644 index 000000000..6474068a9 --- /dev/null +++ b/V4.3.1/globals_vars.html @@ -0,0 +1,170 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- f -

+ + +

- i -

+ + +

- p -

+ + +

- u -

+ + +

- x -

+
+
+ + + + diff --git a/V4.3.1/globals_w.html b/V4.3.1/globals_w.html new file mode 100644 index 000000000..a5684c41e --- /dev/null +++ b/V4.3.1/globals_w.html @@ -0,0 +1,118 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- w -

+
+
+ + + + diff --git a/V4.3.1/globals_x.html b/V4.3.1/globals_x.html new file mode 100644 index 000000000..25ea196eb --- /dev/null +++ b/V4.3.1/globals_x.html @@ -0,0 +1,211 @@ + + + + + + + +FreeRTOS-Plus-TCP: Globals + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- x -

+
+
+ + + + diff --git a/V4.3.1/index.html b/V4.3.1/index.html new file mode 100644 index 000000000..01f013e32 --- /dev/null +++ b/V4.3.1/index.html @@ -0,0 +1,114 @@ + + + + + + + +FreeRTOS-Plus-TCP: Main Page + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
FreeRTOS-Plus-TCP Documentation
+
+ +
+ + + + diff --git a/V4.3.1/jquery.js b/V4.3.1/jquery.js new file mode 100644 index 000000000..1dffb65b5 --- /dev/null +++ b/V4.3.1/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/V4.3.1/nav_f.png b/V4.3.1/nav_f.png new file mode 100644 index 000000000..72a58a529 Binary files /dev/null and b/V4.3.1/nav_f.png differ diff --git a/V4.3.1/nav_fd.png b/V4.3.1/nav_fd.png new file mode 100644 index 000000000..032fbdd4c Binary files /dev/null and b/V4.3.1/nav_fd.png differ diff --git a/V4.3.1/nav_g.png b/V4.3.1/nav_g.png new file mode 100644 index 000000000..2093a237a Binary files /dev/null and b/V4.3.1/nav_g.png differ diff --git a/V4.3.1/nav_h.png b/V4.3.1/nav_h.png new file mode 100644 index 000000000..33389b101 Binary files /dev/null and b/V4.3.1/nav_h.png differ diff --git a/V4.3.1/nav_hd.png b/V4.3.1/nav_hd.png new file mode 100644 index 000000000..de80f18ad Binary files /dev/null and b/V4.3.1/nav_hd.png differ diff --git a/V4.3.1/navtree.css b/V4.3.1/navtree.css new file mode 100644 index 000000000..c8a7766a7 --- /dev/null +++ b/V4.3.1/navtree.css @@ -0,0 +1,150 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: var(--nav-text-active-color); + text-shadow: var(--nav-text-active-shadow); +} + +#nav-tree .selected .arrow { + color: var(--nav-arrow-selected-color); + text-shadow: none; +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; + outline:none; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px var(--font-family-nav); +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:var(--nav-text-active-color); +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: $width; + overflow : hidden; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background-image:var(--nav-splitbar-image); + background-size:100%; + background-repeat:repeat-y; + background-attachment: scroll; + cursor:ew-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-repeat:repeat-x; + background-color: var(--nav-background-color); + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/V4.3.1/navtree.js b/V4.3.1/navtree.js new file mode 100644 index 000000000..27983687a --- /dev/null +++ b/V4.3.1/navtree.js @@ -0,0 +1,549 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +var navTreeSubIndices = new Array(); +var arrowDown = '▼'; +var arrowRight = '►'; + +function getData(varName) +{ + var i = varName.lastIndexOf('/'); + var n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + var topOffset=5; + if (typeof page_layout!=='undefined' && page_layout==1) { + topOffset+=$('#top').outerHeight(); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + topOffset+=25; + } + $('#nav-sync').css('top',topOffset+'px'); + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +var loadTriggered = false; +var readyTriggered = false; +var loadObject,loadToRoot,loadUrl,loadRelPath; + +$(window).on('load',function(){ + if (readyTriggered) { // ready first + navTo(loadObject,loadToRoot,loadUrl,loadRelPath); + showRoot(); + } + loadTriggered=true; +}); + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + if (loadTriggered) { // load before ready + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + } else { // ready before load + loadObject = o; + loadToRoot = toroot; + loadUrl = hashUrl(); + loadRelPath = relpath; + readyTriggered=true; + } + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/0) { + newWidth=0; + } + else { + var width = readSetting('width'); + newWidth = (width>250 && width<$(window).width()) ? width : 250; + } + restoreWidth(newWidth); + var sidenavWidth = $(sidenav).outerWidth(); + writeSetting('width',sidenavWidth-barWidth); + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readSetting('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + if (once) { + $(".ui-resizable-handle").dblclick(collapseExpand); + once=0 + } + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/V4.3.1/search/all_0.js b/V4.3.1/search/all_0.js new file mode 100644 index 000000000..870097b3d --- /dev/null +++ b/V4.3.1/search/all_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['arpgratuitous_5farp_5fperiod_0',['arpGRATUITOUS_ARP_PERIOD',['../_free_r_t_o_s___a_r_p_8c.html#a7b4eb297ab0d35cfe95b1879495a3d7f',1,'FreeRTOS_ARP.c']]], + ['arpip_5fclash_5fmax_5fretries_1',['arpIP_CLASH_MAX_RETRIES',['../_free_r_t_o_s___a_r_p_8c.html#a6a6df3b8e26c0a0849fa35199c82f714',1,'FreeRTOS_ARP.c']]], + ['arpip_5fclash_5freset_5ftimeout_5fms_2',['arpIP_CLASH_RESET_TIMEOUT_MS',['../_free_r_t_o_s___a_r_p_8c.html#ad51f57e1abecd75f22c0d8eca8d87a4d',1,'FreeRTOS_ARP.c']]], + ['arpmax_5farp_5fage_5fbefore_5fnew_5farp_5frequest_3',['arpMAX_ARP_AGE_BEFORE_NEW_ARP_REQUEST',['../_free_r_t_o_s___a_r_p_8c.html#a22f53fd4d5218d841f6176b29603a955',1,'FreeRTOS_ARP.c']]] +]; diff --git a/V4.3.1/search/all_1.js b/V4.3.1/search/all_1.js new file mode 100644 index 000000000..ebdcad7d7 --- /dev/null +++ b/V4.3.1/search/all_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bmayconnect_0',['bMayConnect',['../_free_r_t_o_s___sockets_8c.html#ae8a5f1c37d0260304e2acb616ca18247',1,'FreeRTOS_Sockets.c']]] +]; diff --git a/V4.3.1/search/all_10.js b/V4.3.1/search/all_10.js new file mode 100644 index 000000000..689d2d251 --- /dev/null +++ b/V4.3.1/search/all_10.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['winsrtt_5fcap_5fms_0',['winSRTT_CAP_mS',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a88e05f703fda730dec8cde14f9a91ef4',1,'FreeRTOS_TCP_WIN.c']]], + ['winsrtt_5fdecrement_5fcurrent_1',['winSRTT_DECREMENT_CURRENT',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#aeb55e5f7a5fbf975104e669323d115a8',1,'FreeRTOS_TCP_WIN.c']]], + ['winsrtt_5fdecrement_5fnew_2',['winSRTT_DECREMENT_NEW',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#af1109c15055d77738365721c9181600e',1,'FreeRTOS_TCP_WIN.c']]], + ['winsrtt_5fincrement_5fcurrent_3',['winSRTT_INCREMENT_CURRENT',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#acc3b8daf4436eb0a75561cd808256b35',1,'FreeRTOS_TCP_WIN.c']]], + ['winsrtt_5fincrement_5fnew_4',['winSRTT_INCREMENT_NEW',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#ad55bd7a27c05e46e1f269973ed270c2a',1,'FreeRTOS_TCP_WIN.c']]] +]; diff --git a/V4.3.1/search/all_11.js b/V4.3.1/search/all_11.js new file mode 100644 index 000000000..d7fdb8262 --- /dev/null +++ b/V4.3.1/search/all_11.js @@ -0,0 +1,104 @@ +var searchData= +[ + ['xallnetworksup_0',['xAllNetworksUp',['../_free_r_t_o_s___i_p___timers_8c.html#a145508ed951914fd419de83c0ecd17f5',1,'FreeRTOS_IP_Timers.c']]], + ['xarpcache_1',['xARPCache',['../_free_r_t_o_s___a_r_p_8c.html#afdc43c741d35db756e9a4ca5cd064bf1',1,'FreeRTOS_ARP.c']]], + ['xarpwaitresolution_2',['xARPWaitResolution',['../_free_r_t_o_s___a_r_p_8c.html#a1b7afccbd744a2ee150ddf209c5582bf',1,'FreeRTOS_ARP.c']]], + ['xbadipv4loopback_3',['xBadIPv4Loopback',['../_free_r_t_o_s___i_pv4_8c.html#a97efcb68bb2ebca12b18fc2a10c70066',1,'FreeRTOS_IPv4.c']]], + ['xbadipv6loopback_4',['xBadIPv6Loopback',['../_free_r_t_o_s___i_pv6_8c.html#a5cb61fef389ea9ade1442f2a20834e41',1,'FreeRTOS_IPv6.c']]], + ['xbitconfig_5finit_5',['xBitConfig_init',['../_free_r_t_o_s___bit_config_8c.html#a30350365855750a6f712252431078c09',1,'FreeRTOS_BitConfig.c']]], + ['xbitconfig_5fread_5fuc_6',['xBitConfig_read_uc',['../_free_r_t_o_s___bit_config_8c.html#a1e6de262ed241d6d307f99bb0c6d77d7',1,'FreeRTOS_BitConfig.c']]], + ['xboundtcpsocketslist_7',['xBoundTCPSocketsList',['../_free_r_t_o_s___sockets_8c.html#ae02571e6608569169207562135f16785',1,'FreeRTOS_Sockets.c']]], + ['xboundudpsocketslist_8',['xBoundUDPSocketsList',['../_free_r_t_o_s___sockets_8c.html#a0bb39b9379d9271063dad16351b7d3ab',1,'FreeRTOS_Sockets.c']]], + ['xbroadcastmacaddress_9',['xBroadcastMACAddress',['../_free_r_t_o_s___i_p_8c.html#a4eda95e8d4e0340cd07f7fd0e9637ec4',1,'FreeRTOS_IP.c']]], + ['xcalculatesleeptime_10',['xCalculateSleepTime',['../_free_r_t_o_s___i_p___timers_8c.html#ae3c030241e75043b154047b8636fc6aa',1,'FreeRTOS_IP_Timers.c']]], + ['xcallbacklist_11',['xCallbackList',['../_free_r_t_o_s___d_n_s___callback_8c.html#a407c6353786ffeed66a0b5ffef3f46e3',1,'FreeRTOS_DNS_Callback.c']]], + ['xcheckrequiresarpresolution_12',['xCheckRequiresARPResolution',['../_free_r_t_o_s___a_r_p_8c.html#ae2a978aa66440ed327d71f7d4b2daa63',1,'FreeRTOS_ARP.c']]], + ['xcheckrequiresndresolution_13',['xCheckRequiresNDResolution',['../_free_r_t_o_s___n_d_8c.html#aee93f7217f8fa9344b85f606d5113d26',1,'FreeRTOS_ND.c']]], + ['xcheckrequiresresolution_14',['xCheckRequiresResolution',['../_free_r_t_o_s___routing_8c.html#adb7c63c2482b4e78154c0af8058b812d',1,'FreeRTOS_Routing.c']]], + ['xcompareipv6_5faddress_15',['xCompareIPv6_Address',['../_free_r_t_o_s___i_pv6_8c.html#a52e784fa0b40276c8b05be48cfdf3076',1,'FreeRTOS_IPv6.c']]], + ['xdhcpmessage_16',['xDHCPMessage',['../_free_r_t_o_s___d_h_c_pv6_8c.html#aaf760f114daaf0c574ef7ec34ab86bc5',1,'FreeRTOS_DHCPv6.c']]], + ['xdhcpsocketusercount_17',['xDHCPSocketUserCount',['../_free_r_t_o_s___d_h_c_p_8c.html#a9f990101051da79be361768d32844534',1,'FreeRTOS_DHCP.c']]], + ['xdhcpv4socket_18',['xDHCPv4Socket',['../_free_r_t_o_s___d_h_c_p_8c.html#a02d97912bdaf0a55e67f6953f6208ca9',1,'FreeRTOS_DHCP.c']]], + ['xdhcpv6process_5fpassreplytoendpoint_19',['xDHCPv6Process_PassReplyToEndPoint',['../_free_r_t_o_s___d_h_c_pv6_8c.html#ab529bd56442fbbc37c6a6e307f5ab789',1,'FreeRTOS_DHCPv6.c']]], + ['xdhcpv6processendpoint_5fhandleadvertise_20',['xDHCPv6ProcessEndPoint_HandleAdvertise',['../_free_r_t_o_s___d_h_c_pv6_8c.html#aeb603f29d66bc594fb372258f8b7082a',1,'FreeRTOS_DHCPv6.c']]], + ['xdhcpv6processendpoint_5fhandlestate_21',['xDHCPv6ProcessEndPoint_HandleState',['../_free_r_t_o_s___d_h_c_pv6_8c.html#ade946c97d145a3cdff24e8bfc972ed8b',1,'FreeRTOS_DHCPv6.c']]], + ['xdhcpv6socket_22',['xDHCPv6Socket',['../_free_r_t_o_s___d_h_c_pv6_8c.html#a56ffc371101e9c86420169b856699469',1,'FreeRTOS_DHCPv6.c']]], + ['xdhcpv6socketusercount_23',['xDHCPv6SocketUserCount',['../_free_r_t_o_s___d_h_c_pv6_8c.html#abb9b1b15ba43c64b0064cde8d723eb22',1,'FreeRTOS_DHCPv6.c']]], + ['xdns_5fip_5fpreference_24',['xDNS_IP_Preference',['../_free_r_t_o_s___d_n_s_8c.html#a66f44bf35c84240e99e18ea5db2938c2',1,'FreeRTOS_DNS.c']]], + ['xdnscache_25',['xDNSCache',['../_free_r_t_o_s___d_n_s___cache_8c.html#a5cd5fd30eaa0835f06deafd26e4ed488',1,'FreeRTOS_DNS_Cache.c']]], + ['xdnsdocallback_26',['xDNSDoCallback',['../_free_r_t_o_s___d_n_s___callback_8c.html#a6c34cf6a385cac4d9422794516b774de',1,'FreeRTOS_DNS_Callback.c']]], + ['xdnssetcallback_27',['xDNSSetCallBack',['../_free_r_t_o_s___d_n_s___callback_8c.html#ad994091b83d16f6d92feff34771ca1fe',1,'FreeRTOS_DNS_Callback.c']]], + ['xdnstimer_28',['xDNSTimer',['../_free_r_t_o_s___i_p___timers_8c.html#a457d35af454ec380c8e37f2c00ea8c49',1,'FreeRTOS_IP_Timers.c']]], + ['xgetextensionorder_29',['xGetExtensionOrder',['../_free_r_t_o_s___i_pv6_8c.html#a73ec0d92223b063dc858725829677a9a',1,'FreeRTOS_IPv6.c']]], + ['xgetipv6multicastgroupid_30',['xGetIPv6MulticastGroupID',['../_free_r_t_o_s___i_pv6_8c.html#a942cc79979690a211d38b0e560261cec',1,'FreeRTOS_IPv6.c']]], + ['xgetlinklocaladdress_31',['xGetLinkLocalAddress',['../_free_r_t_o_s___r_a_8c.html#a8dac32b62d1e658cbe51900394af13a0',1,'FreeRTOS_RA.c']]], + ['xgetsourceaddrfrombuffer_32',['xGetSourceAddrFromBuffer',['../_free_r_t_o_s___t_c_p___i_p_8c.html#a0f72e4a79a35a2d8e026e192ba26fabe',1,'FreeRTOS_TCP_IP.c']]], + ['xhandlewaitingfirstdiscover_33',['xHandleWaitingFirstDiscover',['../_free_r_t_o_s___d_h_c_p_8c.html#ab0e2a69f3c505b6404e2a3fbf7bbaf7c',1,'FreeRTOS_DHCP.c']]], + ['xhandlewaitingoffer_34',['xHandleWaitingOffer',['../_free_r_t_o_s___d_h_c_p_8c.html#ad4fec480c133134861fdbb043d9f852e',1,'FreeRTOS_DHCP.c']]], + ['xipisnetworktaskready_35',['xIPIsNetworkTaskReady',['../_free_r_t_o_s___i_p_8c.html#a52b2222c2b48904fb90674927a2c489d',1,'FreeRTOS_IP.c']]], + ['xiptaskhandle_36',['xIPTaskHandle',['../_free_r_t_o_s___i_p_8c.html#ac45764b03f1eb0385c0cd08bc62394d4',1,'FreeRTOS_IP.c']]], + ['xiptaskinitialised_37',['xIPTaskInitialised',['../_free_r_t_o_s___i_p_8c.html#a9fdfb0a695267908cfd8d1b792efaf13',1,'FreeRTOS_IP.c']]], + ['xipv6_5fcouple_38',['xIPv6_Couple',['../structx_i_pv6___couple.html',1,'']]], + ['xipv6_5fgetiptype_39',['xIPv6_GetIPType',['../_free_r_t_o_s___routing_8c.html#af2b57c7b5c3dee72385d710bd627c417',1,'FreeRTOS_Routing.c']]], + ['xiscallingfromiptask_40',['xIsCallingFromIPTask',['../_free_r_t_o_s___i_p___utils_8c.html#a9844166e6474d5f406df1c57aa4da98f',1,'FreeRTOS_IP_Utils.c']]], + ['xisdhcpsocket_41',['xIsDHCPSocket',['../_free_r_t_o_s___d_h_c_p_8c.html#a5d7c5d446042f01b22a2393df3763d16',1,'FreeRTOS_DHCP.c']]], + ['xisipinarpcache_42',['xIsIPInARPCache',['../_free_r_t_o_s___a_r_p_8c.html#afdc995bea37f826daf44d59f5bcd0fc7',1,'FreeRTOS_ARP.c']]], + ['xisipv4loopback_43',['xIsIPv4Loopback',['../_free_r_t_o_s___i_pv4_8c.html#a89208614b15adbf9707f9734e4a0fa4e',1,'FreeRTOS_IPv4.c']]], + ['xisipv4multicast_44',['xIsIPv4Multicast',['../_free_r_t_o_s___i_pv4_8c.html#a3c787bfa6502ecfd173ee8f6974e8628',1,'FreeRTOS_IPv4.c']]], + ['xisipv6allowedmulticast_45',['xIsIPv6AllowedMulticast',['../_free_r_t_o_s___i_pv6_8c.html#a64edb919e254a0ff420eac3b9a3dc9eb',1,'FreeRTOS_IPv6.c']]], + ['xisipv6loopback_46',['xIsIPv6Loopback',['../_free_r_t_o_s___i_pv6_8c.html#a8cff504a19dbd5a70f7f85bae964535a',1,'FreeRTOS_IPv6.c']]], + ['xisnetworkdowneventpending_47',['xIsNetworkDownEventPending',['../_free_r_t_o_s___i_p_8c.html#a5003fcfb9e9e61239ae11a79aa7ab151',1,'FreeRTOS_IP.c']]], + ['xlastgratuitousarptime_48',['xLastGratuitousARPTime',['../_free_r_t_o_s___a_r_p_8c.html#aa9c3721b546b6d8021730dbc1d49c263',1,'FreeRTOS_ARP.c']]], + ['xlastunsolicitedndtime_49',['xLastUnsolicitedNDTime',['../_free_r_t_o_s___n_d_8c.html#ac3a50d8c40491943345414deca35a4bd',1,'FreeRTOS_ND.c']]], + ['xllmnr_5fmacaddress_50',['xLLMNR_MacAddress',['../_free_r_t_o_s___d_n_s_8c.html#af63a177ae183fc7ce8275622fe811f88',1,'FreeRTOS_DNS.c']]], + ['xllmnr_5fmacaddressipv6_51',['xLLMNR_MacAddressIPv6',['../_free_r_t_o_s___d_n_s_8c.html#a82b9cdc1a1247aa85df23eabdc927539',1,'FreeRTOS_DNS.c']]], + ['xmdns_5fmacaddress_52',['xMDNS_MacAddress',['../_free_r_t_o_s___d_n_s_8c.html#a640abe8a906f6ed9637f697bc529afb9',1,'FreeRTOS_DNS.c']]], + ['xmdns_5fmacaddressipv6_53',['xMDNS_MacAddressIPv6',['../_free_r_t_o_s___d_n_s_8c.html#a40098d119b1bb80059a0b76d03f6a2a7',1,'FreeRTOS_DNS.c']]], + ['xndcache_54',['xNDCache',['../_free_r_t_o_s___n_d_8c.html#aa9fb3e05395dc33ee03721a3cd342cc8',1,'FreeRTOS_ND.c']]], + ['xnetworkdowneventpending_55',['xNetworkDownEventPending',['../_free_r_t_o_s___i_p_8c.html#a0113c3af0709b245d34e7dec5df16119',1,'FreeRTOS_IP.c']]], + ['xnetworkeventqueue_56',['xNetworkEventQueue',['../_free_r_t_o_s___i_p_8c.html#a7447ea310c26bfce949913de72f3d6f2',1,'FreeRTOS_IP.c']]], + ['xnetworktimer_57',['xNetworkTimer',['../_free_r_t_o_s___i_p___timers_8c.html#a62df22bd27c79e285d7e1e8b7f604557',1,'FreeRTOS_IP_Timers.c']]], + ['xprocesscheckoption_58',['xProcessCheckOption',['../_free_r_t_o_s___d_h_c_p_8c.html#a0349db49ee3328dc2cc2acbf744df176',1,'FreeRTOS_DHCP.c']]], + ['xprocessreceivedtcppacket_59',['xProcessReceivedTCPPacket',['../_free_r_t_o_s___t_c_p___i_p_8c.html#a3afd3312f86e44f4b4d95ab1e7bd34be',1,'FreeRTOS_TCP_IP.c']]], + ['xprocessreceivedudppacket_60',['xProcessReceivedUDPPacket',['../_free_r_t_o_s___u_d_p___i_p_8c.html#a0258ee76a1424cfeeb9871565b9c32bc',1,'FreeRTOS_UDP_IP.c']]], + ['xprocessreceivedudppacket_5fipv4_61',['xProcessReceivedUDPPacket_IPv4',['../_free_r_t_o_s___u_d_p___i_pv4_8c.html#ac283e8e5e1bee228e923a560490dcd5f',1,'FreeRTOS_UDP_IPv4.c']]], + ['xprocessreceivedudppacket_5fipv6_62',['xProcessReceivedUDPPacket_IPv6',['../_free_r_t_o_s___u_d_p___i_pv6_8c.html#a9e5829b11598f2890aa374a376e1224b',1,'FreeRTOS_UDP_IPv6.c']]], + ['xraprocess_5fhandleotherstates_63',['xRAProcess_HandleOtherStates',['../_free_r_t_o_s___r_a_8c.html#ac64548e4fbd3418bf5d9cdcd9b134eda',1,'FreeRTOS_RA.c']]], + ['xraprocess_5fhandlewaitstates_64',['xRAProcess_HandleWaitStates',['../_free_r_t_o_s___r_a_8c.html#a8a98258f973b8040f87951e0be01a703',1,'FreeRTOS_RA.c']]], + ['xrecv_5fupdate_5fipv4_65',['xRecv_Update_IPv4',['../_free_r_t_o_s___i_pv4___sockets_8c.html#ae03fc7a3883f1d9b43b3eb86345a775e',1,'FreeRTOS_IPv4_Sockets.c']]], + ['xrecv_5fupdate_5fipv6_66',['xRecv_Update_IPv6',['../_free_r_t_o_s___i_pv6___sockets_8c.html#aafa911615a4c97340852d98cc2ab824c',1,'FreeRTOS_IPv6_Sockets.c']]], + ['xsegmentlist_67',['xSegmentList',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#aa333a2014b23e19157a9a8ab2f6b7bc6',1,'FreeRTOS_TCP_WIN.c']]], + ['xsend_5fudp_5fupdate_5fipv4_68',['xSend_UDP_Update_IPv4',['../_free_r_t_o_s___i_pv4___sockets_8c.html#a671960d69809c644de9d7b88fb906cfb',1,'FreeRTOS_IPv4_Sockets.c']]], + ['xsend_5fudp_5fupdate_5fipv6_69',['xSend_UDP_Update_IPv6',['../_free_r_t_o_s___i_pv6___sockets_8c.html#a10e007d9ebad6b72991ab6687d5a814b',1,'FreeRTOS_IPv6_Sockets.c']]], + ['xsenddhcpevent_70',['xSendDHCPEvent',['../_free_r_t_o_s___i_p___utils_8c.html#a09f26729c0f4b452e573da22ddb22f74',1,'FreeRTOS_IP_Utils.c']]], + ['xsendeventstructtoiptask_71',['xSendEventStructToIPTask',['../_free_r_t_o_s___i_p_8c.html#a7190bc18fa344fe1fd79021a6db05f84',1,'FreeRTOS_IP.c']]], + ['xsendeventtoiptask_72',['xSendEventToIPTask',['../_free_r_t_o_s___i_p_8c.html#a64324b01a1fc85efdb7129316e8f7737',1,'FreeRTOS_IP.c']]], + ['xsequencegreaterthan_73',['xSequenceGreaterThan',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a4160649d2ac1cf177684b4fed25c615e',1,'FreeRTOS_TCP_WIN.c']]], + ['xsequencegreaterthanorequal_74',['xSequenceGreaterThanOrEqual',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#aff8c4167d89211fb1574ca667803c74c',1,'FreeRTOS_TCP_WIN.c']]], + ['xsequencelessthan_75',['xSequenceLessThan',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a747531f7546e6a0924a1a2b63cc32ea9',1,'FreeRTOS_TCP_WIN.c']]], + ['xsequencelessthanorequal_76',['xSequenceLessThanOrEqual',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#afb170f245b4ad4c30e552ac81e9c2519',1,'FreeRTOS_TCP_WIN.c']]], + ['xsocketsetsocketid_77',['xSocketSetSocketID',['../_free_r_t_o_s___sockets_8c.html#a90ba4446eecc818882e9f9ddc8cc7940',1,'FreeRTOS_Sockets.c']]], + ['xsockettoclose_78',['xSocketToClose',['../_free_r_t_o_s___t_c_p___i_p_8c.html#aaddf1f62d216822a9551f5dbce968c01',1,'FreeRTOS_TCP_IP.c']]], + ['xsockettolisten_79',['xSocketToListen',['../_free_r_t_o_s___t_c_p___i_p_8c.html#a37870f1d776a8d40cc804e12e3913a51',1,'FreeRTOS_TCP_IP.c']]], + ['xsocketvalid_80',['xSocketValid',['../_free_r_t_o_s___sockets_8c.html#ac7d3b9e3f9a2a974cd8382c8755e603f',1,'FreeRTOS_Sockets.c']]], + ['xstreambufferlessthenequal_81',['xStreamBufferLessThenEqual',['../_free_r_t_o_s___stream___buffer_8c.html#a4642a7e263b7c63100458560137a9acd',1,'FreeRTOS_Stream_Buffer.c']]], + ['xtcpchecknewclient_82',['xTCPCheckNewClient',['../_free_r_t_o_s___t_c_p___i_p_8c.html#abd9d9857511e8c986d7eb52849cfe73d',1,'FreeRTOS_TCP_IP.c']]], + ['xtcpsegments_83',['xTCPSegments',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#acf6414e1dbb7e9b0124eb236d573fde8',1,'FreeRTOS_TCP_WIN.c']]], + ['xtcpsocketcheck_84',['xTCPSocketCheck',['../_free_r_t_o_s___t_c_p___i_p_8c.html#a6f0ad2de00346e1017a692e4da7c3f0c',1,'FreeRTOS_TCP_IP.c']]], + ['xtcptimer_85',['xTCPTimer',['../_free_r_t_o_s___i_p___timers_8c.html#a173c03d7a816518ad4d362a7c61088f6',1,'FreeRTOS_IP_Timers.c']]], + ['xtcptimercheck_86',['xTCPTimerCheck',['../_free_r_t_o_s___sockets_8c.html#ad3802e1a3603f571bcb185f2afbd48de',1,'FreeRTOS_Sockets.c']]], + ['xtcpwindowcreate_87',['xTCPWindowCreate',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#add7f3c65a5d1fddd2929d5eeff82ba6e',1,'FreeRTOS_TCP_WIN.c']]], + ['xtcpwindowgethead_88',['xTCPWindowGetHead',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a64cc22b4a6a21004ee0c952e51ccf41b',1,'FreeRTOS_TCP_WIN.c']]], + ['xtcpwindowlogginglevel_89',['xTCPWindowLoggingLevel',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a560d80e721483cab1b44f93d193091f7',1,'FreeRTOS_TCP_WIN.c']]], + ['xtcpwindownew_90',['xTCPWindowNew',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a386665c510184cd30ae32626ac59725e',1,'FreeRTOS_TCP_WIN.c']]], + ['xtcpwindowpeekhead_91',['xTCPWindowPeekHead',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#ac065c8219a962706da4f2cd464f91215',1,'FreeRTOS_TCP_WIN.c']]], + ['xtcpwindowrxconfirm_92',['xTCPWindowRxConfirm',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a9a4e36ef6bea7d2a2671e0a0d15ae85d',1,'FreeRTOS_TCP_WIN.c']]], + ['xtcpwindowrxempty_93',['xTCPWindowRxEmpty',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a15f755746f17a8d2651bf3ba8002b76b',1,'FreeRTOS_TCP_WIN.c']]], + ['xtcpwindowrxfind_94',['xTCPWindowRxFind',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#af119bc1139e90f53f68a83870740e4e8',1,'FreeRTOS_TCP_WIN.c']]], + ['xtcpwindowrxnew_95',['xTCPWindowRxNew',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a6d6c19030ec6a51641664d45735a889d',1,'FreeRTOS_TCP_WIN.c']]], + ['xtcpwindowtxdone_96',['xTCPWindowTxDone',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#ab1bde32e6d419a46c0db6a3270dcc73d',1,'FreeRTOS_TCP_WIN.c']]], + ['xtcpwindowtxhasdata_97',['xTCPWindowTxHasData',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#adb593eadf315d3ac0972308edb628f47',1,'FreeRTOS_TCP_WIN.c']]], + ['xtcpwindowtxnew_98',['xTCPWindowTxNew',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a6ebac9742c5a0d2013d77ef6084ea5ef',1,'FreeRTOS_TCP_WIN.c']]], + ['xunion32_5ft_99',['xUnion32_t',['../unionx_union32__t.html',1,'']]], + ['xunionptr_5ft_100',['xUnionPtr_t',['../unionx_union_ptr__t.html',1,'']]] +]; diff --git a/V4.3.1/search/all_2.js b/V4.3.1/search/all_2.js new file mode 100644 index 000000000..934937502 --- /dev/null +++ b/V4.3.1/search/all_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['chextochar_0',['cHexToChar',['../_free_r_t_o_s___i_pv6___sockets_8c.html#a00809937bb943fb2a0293931064d83b2',1,'FreeRTOS_IPv6_Sockets.c']]] +]; diff --git a/V4.3.1/search/all_3.js b/V4.3.1/search/all_3.js new file mode 100644 index 000000000..00247cd4e --- /dev/null +++ b/V4.3.1/search/all_3.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['dhcpinitial_5fdhcp_5ftx_5fperiod_0',['dhcpINITIAL_DHCP_TX_PERIOD',['../_free_r_t_o_s___d_h_c_pv6_8c.html#ae21108aea9e8f67970c05f03ae882832',1,'FreeRTOS_DHCPv6.c']]], + ['dhcpinitial_5ftimer_5fperiod_1',['dhcpINITIAL_TIMER_PERIOD',['../_free_r_t_o_s___d_h_c_pv6_8c.html#a7e77d690aa573e19c016d4bab59a51b7',1,'FreeRTOS_DHCPv6.c']]], + ['dhcpmandatory_5foptions_2',['dhcpMANDATORY_OPTIONS',['../_free_r_t_o_s___d_h_c_pv6_8c.html#a11e66b5d2d5a1becacf5502eb0fa4240',1,'FreeRTOS_DHCPv6.c']]], + ['dhcpv6_5fsend_5fmax_5fbuffer_5fsize_3',['DHCPv6_SEND_MAX_BUFFER_SIZE',['../_free_r_t_o_s___d_h_c_pv6_8c.html#abe898c94cefa04d3148ea20c595c0b43',1,'FreeRTOS_DHCPv6.c']]], + ['dns_5fbindsocket_4',['DNS_BindSocket',['../_free_r_t_o_s___d_n_s___networking_8c.html#a998bd58d554c5c8ca8acb9583e9c6a77',1,'FreeRTOS_DNS_Networking.c']]], + ['dns_5fclosesocket_5',['DNS_CloseSocket',['../_free_r_t_o_s___d_n_s___networking_8c.html#ade7d8a2ebf3b318b01c68ceb0f6ec225',1,'FreeRTOS_DNS_Networking.c']]], + ['dns_5fcreatesocket_6',['DNS_CreateSocket',['../_free_r_t_o_s___d_n_s___networking_8c.html#aa2e0265014529ef9a417612308bf2b5d',1,'FreeRTOS_DNS_Networking.c']]], + ['dns_5fparsednsreply_7',['DNS_ParseDNSReply',['../_free_r_t_o_s___d_n_s___parser_8c.html#a4772916fb220403d0041d9cc90aedeb7',1,'FreeRTOS_DNS_Parser.c']]], + ['dns_5freadnamefield_8',['DNS_ReadNameField',['../_free_r_t_o_s___d_n_s___parser_8c.html#aaad49b6c58394f7da6a34c090b36c152',1,'FreeRTOS_DNS_Parser.c']]], + ['dns_5freadreply_9',['DNS_ReadReply',['../_free_r_t_o_s___d_n_s___networking_8c.html#a16c7cb7023cfa29b6aa5cfac6406ad78',1,'FreeRTOS_DNS_Networking.c']]], + ['dns_5fsendrequest_10',['DNS_SendRequest',['../_free_r_t_o_s___d_n_s___networking_8c.html#a89cfa1f2a25312a01483f36e50265eb0',1,'FreeRTOS_DNS_Networking.c']]], + ['dns_5fskipnamefield_11',['DNS_SkipNameField',['../_free_r_t_o_s___d_n_s___parser_8c.html#ab6e1d67b310ba4287a774feaab588ae6',1,'FreeRTOS_DNS_Parser.c']]], + ['dns_5ftreatnbns_12',['DNS_TreatNBNS',['../_free_r_t_o_s___d_n_s___parser_8c.html#a5de7ffa9cfbfa4dda2f23d5a75b32fd5',1,'FreeRTOS_DNS_Parser.c']]], + ['duplicate_5facks_5fbefore_5ffast_5fretransmit_13',['DUPLICATE_ACKS_BEFORE_FAST_RETRANSMIT',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a374732a2bcde8457d90a1e2ee2c665c3',1,'FreeRTOS_TCP_WIN.c']]] +]; diff --git a/V4.3.1/search/all_4.js b/V4.3.1/search/all_4.js new file mode 100644 index 000000000..18b51aab0 --- /dev/null +++ b/V4.3.1/search/all_4.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['earpgetcacheentry_0',['eARPGetCacheEntry',['../_free_r_t_o_s___a_r_p_8c.html#ad7474a8c9cdc730326fe3be44cb655b9',1,'FreeRTOS_ARP.c']]], + ['earpgetcacheentrygateway_1',['eARPGetCacheEntryGateWay',['../_free_r_t_o_s___a_r_p_8c.html#af0d6e799d689f501dde4dc9b3b6920cb',1,'FreeRTOS_ARP.c']]], + ['earpprocesspacket_2',['eARPProcessPacket',['../_free_r_t_o_s___a_r_p_8c.html#a9740f8ea6763013cfff8ba416c70184d',1,'FreeRTOS_ARP.c']]], + ['econsiderframeforprocessing_3',['eConsiderFrameForProcessing',['../_free_r_t_o_s___i_p_8c.html#ab15bee3df12f185ea7a1ba671121d19f',1,'FreeRTOS_IP.c']]], + ['egetdhcpstate_4',['eGetDHCPState',['../_free_r_t_o_s___i_p___utils_8c.html#a1184f91775b8f6b3191c117966059453',1,'FreeRTOS_IP_Utils.c']]], + ['egetdhcpv6state_5',['eGetDHCPv6State',['../_free_r_t_o_s___d_h_c_pv6_8c.html#adb98e23ffac182741acc7698ec9425f5',1,'FreeRTOS_DHCPv6.c']]], + ['ehandleipv6extensionheaders_6',['eHandleIPv6ExtensionHeaders',['../_free_r_t_o_s___i_pv6_8c.html#afaf4a6c865da5d5349769a28aa49c5cf',1,'FreeRTOS_IPv6.c']]], + ['endgetcacheentry_7',['eNDGetCacheEntry',['../_free_r_t_o_s___n_d_8c.html#ada16da39fabddf269d42da139af02e48',1,'FreeRTOS_ND.c']]], + ['ep_5fdhcpdata_8',['EP_DHCPData',['../_free_r_t_o_s___d_h_c_p_8c.html#adfb2f90932de3ba1166a8ae0e22cfa16',1,'EP_DHCPData(): FreeRTOS_DHCP.c'],['../_free_r_t_o_s___d_h_c_pv6_8c.html#adfb2f90932de3ba1166a8ae0e22cfa16',1,'EP_DHCPData(): FreeRTOS_DHCPv6.c']]], + ['ep_5fipv4_5fsettings_9',['EP_IPv4_SETTINGS',['../_free_r_t_o_s___d_h_c_p_8c.html#a7855dad00c2e1354eaafb18a0ec8d999',1,'FreeRTOS_DHCP.c']]], + ['ep_5fipv6_5fsettings_10',['EP_IPv6_SETTINGS',['../_free_r_t_o_s___d_h_c_pv6_8c.html#a0305b850746513b1a64e8bd3e6c9c918',1,'FreeRTOS_DHCPv6.c']]], + ['etype_11',['eType',['../structx_i_pv6___couple.html#a0ff3e94afcd4ac709ea05491e3e80163',1,'xIPv6_Couple']]] +]; diff --git a/V4.3.1/search/all_5.js b/V4.3.1/search/all_5.js new file mode 100644 index 000000000..7ac32bec2 --- /dev/null +++ b/V4.3.1/search/all_5.js @@ -0,0 +1,151 @@ +var searchData= +[ + ['freertos_5faccept_0',['FreeRTOS_accept',['../_free_r_t_o_s___sockets_8c.html#a1b0aabc4d95b9a61e531429839f50852',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fadd_5fint32_1',['FreeRTOS_add_int32',['../_free_r_t_o_s___i_p___utils_8c.html#a6602b34b70013ff9c74e93a69cddd129',1,'FreeRTOS_IP_Utils.c']]], + ['freertos_5faddendpoint_2',['FreeRTOS_AddEndPoint',['../_free_r_t_o_s___routing_8c.html#afbada2871d3f95785c45f7f128e5bd42',1,'FreeRTOS_Routing.c']]], + ['freertos_5faddnetworkinterface_3',['FreeRTOS_AddNetworkInterface',['../_free_r_t_o_s___routing_8c.html#a81bbf9cf4d7ee4697765182fac4c8b8a',1,'FreeRTOS_Routing.c']]], + ['freertos_5fallendpointsup_4',['FreeRTOS_AllEndPointsUp',['../_free_r_t_o_s___i_p_8c.html#a90707c0107e74aa9b9e281868ee6714b',1,'FreeRTOS_IP.c']]], + ['freertos_5farp_2ec_5',['FreeRTOS_ARP.c',['../_free_r_t_o_s___a_r_p_8c.html',1,'']]], + ['freertos_5fbind_6',['FreeRTOS_bind',['../_free_r_t_o_s___sockets_8c.html#a6fe933805d4f44b09b3b04a13ed28e72',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fbitconfig_2ec_7',['FreeRTOS_BitConfig.c',['../_free_r_t_o_s___bit_config_8c.html',1,'']]], + ['freertos_5fcleararp_8',['FreeRTOS_ClearARP',['../_free_r_t_o_s___a_r_p_8c.html#acdb26d6bbf0f442a076837c0427646ea',1,'FreeRTOS_ARP.c']]], + ['freertos_5fclearnd_9',['FreeRTOS_ClearND',['../_free_r_t_o_s___n_d_8c.html#ac49d985b1abab10a7829abe9a11e73bf',1,'FreeRTOS_ND.c']]], + ['freertos_5fclosesocket_10',['FreeRTOS_closesocket',['../_free_r_t_o_s___sockets_8c.html#abefb0186bf6e06816a6acd12432dae9b',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fconnect_11',['FreeRTOS_connect',['../_free_r_t_o_s___sockets_8c.html#a6231fb49e0a656c63d0ef82db2446587',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fconnstatus_12',['FreeRTOS_connstatus',['../_free_r_t_o_s___sockets_8c.html#a0a6df495a5df34259dd6ef400992a46f',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fcreateipv6address_13',['FreeRTOS_CreateIPv6Address',['../_free_r_t_o_s___n_d_8c.html#a937f6703e06d2e8534999073ebe2e5f4',1,'FreeRTOS_ND.c']]], + ['freertos_5fcreatesocketset_14',['FreeRTOS_CreateSocketSet',['../_free_r_t_o_s___sockets_8c.html#a6ffb7662be38da18db6ec8e87da4735e',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fdeletesocketset_15',['FreeRTOS_DeleteSocketSet',['../_free_r_t_o_s___sockets_8c.html#a427e342cb8d9c513d117ba772f427cca',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fdhcp_2ec_16',['FreeRTOS_DHCP.c',['../_free_r_t_o_s___d_h_c_p_8c.html',1,'']]], + ['freertos_5fdhcpv6_2ec_17',['FreeRTOS_DHCPv6.c',['../_free_r_t_o_s___d_h_c_pv6_8c.html',1,'']]], + ['freertos_5fdns_2ec_18',['FreeRTOS_DNS.c',['../_free_r_t_o_s___d_n_s_8c.html',1,'']]], + ['freertos_5fdns_5fcache_2ec_19',['FreeRTOS_DNS_Cache.c',['../_free_r_t_o_s___d_n_s___cache_8c.html',1,'']]], + ['freertos_5fdns_5fcallback_2ec_20',['FreeRTOS_DNS_Callback.c',['../_free_r_t_o_s___d_n_s___callback_8c.html',1,'']]], + ['freertos_5fdns_5fnetworking_2ec_21',['FreeRTOS_DNS_Networking.c',['../_free_r_t_o_s___d_n_s___networking_8c.html',1,'']]], + ['freertos_5fdns_5fparser_2ec_22',['FreeRTOS_DNS_Parser.c',['../_free_r_t_o_s___d_n_s___parser_8c.html',1,'']]], + ['freertos_5fdns_5fupdate_23',['FreeRTOS_dns_update',['../_free_r_t_o_s___d_n_s___cache_8c.html#ac3269ccb267e9629b67eca8cecb12872',1,'FreeRTOS_DNS_Cache.c']]], + ['freertos_5fdnsclear_24',['FreeRTOS_dnsclear',['../_free_r_t_o_s___d_n_s___cache_8c.html#aff91fa5dfb01ae9c1ad61cc24c28b03a',1,'FreeRTOS_DNS_Cache.c']]], + ['freertos_5fdnslookup_25',['FreeRTOS_dnslookup',['../_free_r_t_o_s___d_n_s___cache_8c.html#acbd93e10dc7a0ffe7319239242f434c1',1,'FreeRTOS_DNS_Cache.c']]], + ['freertos_5fdnslookup6_26',['FreeRTOS_dnslookup6',['../_free_r_t_o_s___d_n_s___cache_8c.html#aacf828ed96a24a7e527b42d95d78cf2b',1,'FreeRTOS_DNS_Cache.c']]], + ['freertos_5feui48_5fntop_27',['FreeRTOS_EUI48_ntop',['../_free_r_t_o_s___sockets_8c.html#a078ca5deaf06141eb65d09ba28c6b8ac',1,'FreeRTOS_Sockets.c']]], + ['freertos_5feui48_5fpton_28',['FreeRTOS_EUI48_pton',['../_free_r_t_o_s___sockets_8c.html#a4741626233348eae3ac3d7d9c7de73fb',1,'FreeRTOS_Sockets.c']]], + ['freertos_5ffd_5fclr_29',['FreeRTOS_FD_CLR',['../_free_r_t_o_s___sockets_8c.html#a7ecd213d4d45a6dbc0e900f52f2b4541',1,'FreeRTOS_Sockets.c']]], + ['freertos_5ffd_5fisset_30',['FreeRTOS_FD_ISSET',['../_free_r_t_o_s___sockets_8c.html#a8f05335fc45cca27dd28f122bb0f68bc',1,'FreeRTOS_Sockets.c']]], + ['freertos_5ffd_5fset_31',['FreeRTOS_FD_SET',['../_free_r_t_o_s___sockets_8c.html#accf33877d948d53b4b189ddc41718ccd',1,'FreeRTOS_Sockets.c']]], + ['freertos_5ffillendpoint_32',['FreeRTOS_FillEndPoint',['../_free_r_t_o_s___routing_8c.html#af38bb5dfda53f1c177542440af0f7f86',1,'FreeRTOS_Routing.c']]], + ['freertos_5ffillendpoint_5fipv6_33',['FreeRTOS_FillEndPoint_IPv6',['../_free_r_t_o_s___routing_8c.html#ab6acf67c575f06dff988820872d06826',1,'FreeRTOS_Routing.c']]], + ['freertos_5ffindendpointonip_5fipv4_34',['FreeRTOS_FindEndPointOnIP_IPv4',['../_free_r_t_o_s___routing_8c.html#a59b589bc0070110458bea271ff4f2264',1,'FreeRTOS_Routing.c']]], + ['freertos_5ffindendpointonip_5fipv6_35',['FreeRTOS_FindEndPointOnIP_IPv6',['../_free_r_t_o_s___routing_8c.html#a508a5d4ea82ad967ca7571cfaf4c1b39',1,'FreeRTOS_Routing.c']]], + ['freertos_5ffindendpointonmac_36',['FreeRTOS_FindEndPointOnMAC',['../_free_r_t_o_s___routing_8c.html#a78a4ff0bf3947174adeef9aeb91849a0',1,'FreeRTOS_Routing.c']]], + ['freertos_5ffindendpointonnetmask_37',['FreeRTOS_FindEndPointOnNetMask',['../_free_r_t_o_s___routing_8c.html#a689df0c702833d56c41ce1c0900ea4ef',1,'FreeRTOS_Routing.c']]], + ['freertos_5ffindendpointonnetmask_5fipv6_38',['FreeRTOS_FindEndPointOnNetMask_IPv6',['../_free_r_t_o_s___routing_8c.html#ad2abcc1c769f6ea4f327d56e25ce8f37',1,'FreeRTOS_Routing.c']]], + ['freertos_5ffindgateway_39',['FreeRTOS_FindGateWay',['../_free_r_t_o_s___routing_8c.html#ab730a43cabaed31c1e17428424c65bf9',1,'FreeRTOS_Routing.c']]], + ['freertos_5ffirstendpoint_40',['FreeRTOS_FirstEndPoint',['../_free_r_t_o_s___routing_8c.html#a396f9a43b4b67b35265e8858dd623170',1,'FreeRTOS_Routing.c']]], + ['freertos_5ffirstendpoint_5fipv6_41',['FreeRTOS_FirstEndPoint_IPv6',['../_free_r_t_o_s___routing_8c.html#ac31ceb3af342065f968e4a27b3092562',1,'FreeRTOS_Routing.c']]], + ['freertos_5ffirstnetworkinterface_42',['FreeRTOS_FirstNetworkInterface',['../_free_r_t_o_s___routing_8c.html#aadf8a1d32737cd39c4b3f33f589b547d',1,'FreeRTOS_Routing.c']]], + ['freertos_5ffreeaddrinfo_43',['FreeRTOS_freeaddrinfo',['../_free_r_t_o_s___d_n_s_8c.html#a87c5f7fe9d7591f3e8054e5d80225995',1,'FreeRTOS_DNS.c']]], + ['freertos_5fget_5frx_5fbuf_44',['FreeRTOS_get_rx_buf',['../_free_r_t_o_s___sockets_8c.html#a289ae5cbba5316a7d0b8b5054cb68cdd',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fget_5ftx_5fbase_45',['FreeRTOS_get_tx_base',['../_free_r_t_o_s___sockets_8c.html#ad706401fb4a809bf6db1faea232f8a8c',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fget_5ftx_5fhead_46',['FreeRTOS_get_tx_head',['../_free_r_t_o_s___sockets_8c.html#a186fa7be26d0a0aa9a07f9d7300def3a',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fgetaddrinfo_47',['FreeRTOS_getaddrinfo',['../_free_r_t_o_s___d_n_s_8c.html#a03d1e7b3400b84a3babd9a4ccadcff1e',1,'FreeRTOS_DNS.c']]], + ['freertos_5fgetaddrinfo_5fa_48',['FreeRTOS_getaddrinfo_a',['../_free_r_t_o_s___d_n_s_8c.html#ab23d695ac8334f39dfd49db9268502d2',1,'FreeRTOS_DNS.c']]], + ['freertos_5fgetendpointconfiguration_49',['FreeRTOS_GetEndPointConfiguration',['../_free_r_t_o_s___i_p_8c.html#ae111d09b3e41470ea4a7d1653838f928',1,'FreeRTOS_IP.c']]], + ['freertos_5fgethostbyname_50',['FreeRTOS_gethostbyname',['../_free_r_t_o_s___d_n_s_8c.html#a71b77cb5028f171304f1535f7406766f',1,'FreeRTOS_DNS.c']]], + ['freertos_5fgethostbyname_5fa_51',['FreeRTOS_gethostbyname_a',['../_free_r_t_o_s___d_n_s_8c.html#a585a2b637e9683132af556a2b3147ad0',1,'FreeRTOS_DNS.c']]], + ['freertos_5fgethostbyname_5fcancel_52',['FreeRTOS_gethostbyname_cancel',['../_free_r_t_o_s___d_n_s_8c.html#ad6746bbebd1cca52f8a6d4cafcc5bbcf',1,'FreeRTOS_DNS.c']]], + ['freertos_5fgetipaddress_53',['FreeRTOS_GetIPAddress',['../_free_r_t_o_s___i_p_8c.html#aeaf07062b415dab09f3e333134b97103',1,'FreeRTOS_IP.c']]], + ['freertos_5fgetiptaskhandle_54',['FreeRTOS_GetIPTaskHandle',['../_free_r_t_o_s___i_p_8c.html#a939faf1aee6574dc5babb05847f8fabe',1,'FreeRTOS_IP.c']]], + ['freertos_5fgetiptype_55',['FreeRTOS_GetIPType',['../_free_r_t_o_s___sockets_8c.html#a045412220c3586ce6c71534ed1d6fafc',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fgetlocaladdress_56',['FreeRTOS_GetLocalAddress',['../_free_r_t_o_s___sockets_8c.html#a5cfd261a29fa206a8664ab5171ad9570',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fgetremoteaddress_57',['FreeRTOS_GetRemoteAddress',['../_free_r_t_o_s___sockets_8c.html#a9e0d7303574cd99128cbdb79e54adc89',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fgetudppayloadbuffer_5fmulti_58',['FreeRTOS_GetUDPPayloadBuffer_Multi',['../_free_r_t_o_s___i_p_8c.html#aabe85ca4362965bf95336b6f3f47edb6',1,'FreeRTOS_IP.c']]], + ['freertos_5ficmp_2ec_59',['FreeRTOS_ICMP.c',['../_free_r_t_o_s___i_c_m_p_8c.html',1,'']]], + ['freertos_5fin6addr_5fany_60',['FreeRTOS_in6addr_any',['../_free_r_t_o_s___i_pv6_8c.html#af5dcde6f20d2463aadf1d3ccfcf22a53',1,'FreeRTOS_IPv6.c']]], + ['freertos_5fin6addr_5floopback_61',['FreeRTOS_in6addr_loopback',['../_free_r_t_o_s___i_pv6_8c.html#a673b54a9b71a414548e1f31477aa9465',1,'FreeRTOS_IPv6.c']]], + ['freertos_5finet_5faddr_62',['FreeRTOS_inet_addr',['../_free_r_t_o_s___sockets_8c.html#a17f785c94c2b8d0c80cf615a898c70b8',1,'FreeRTOS_Sockets.c']]], + ['freertos_5finet_5fntoa_63',['FreeRTOS_inet_ntoa',['../_free_r_t_o_s___sockets_8c.html#a9fa2ddd54f04e8314a9b357527c53f56',1,'FreeRTOS_Sockets.c']]], + ['freertos_5finet_5fntop_64',['FreeRTOS_inet_ntop',['../_free_r_t_o_s___sockets_8c.html#aac0f93b995b905805c8dc17bbd97ce04',1,'FreeRTOS_Sockets.c']]], + ['freertos_5finet_5fntop4_65',['FreeRTOS_inet_ntop4',['../_free_r_t_o_s___i_pv4___sockets_8c.html#a2a1d585f75b8fc47161cab0113b38174',1,'FreeRTOS_IPv4_Sockets.c']]], + ['freertos_5finet_5fntop6_66',['FreeRTOS_inet_ntop6',['../_free_r_t_o_s___i_pv6___sockets_8c.html#a294b8101170ae49e6f9c2d90f6bddc2c',1,'FreeRTOS_IPv6_Sockets.c']]], + ['freertos_5finet_5fpton_67',['FreeRTOS_inet_pton',['../_free_r_t_o_s___sockets_8c.html#a47ae572a3caf62d61b5aaeb462914516',1,'FreeRTOS_Sockets.c']]], + ['freertos_5finet_5fpton4_68',['FreeRTOS_inet_pton4',['../_free_r_t_o_s___i_pv4___sockets_8c.html#ae3306e04e9b856682503e39f856ec7ff',1,'FreeRTOS_IPv4_Sockets.c']]], + ['freertos_5finet_5fpton6_69',['FreeRTOS_inet_pton6',['../_free_r_t_o_s___i_pv6___sockets_8c.html#a15dd041b71b5af4260c8e8c0f7e470fd',1,'FreeRTOS_IPv6_Sockets.c']]], + ['freertos_5finterfaceendpointonnetmask_70',['FreeRTOS_InterfaceEndPointOnNetMask',['../_free_r_t_o_s___routing_8c.html#ad3d9515b9906234cc548213bfd0b9d5d',1,'FreeRTOS_Routing.c']]], + ['freertos_5finterfaceepinsamesubnet_5fipv6_71',['FreeRTOS_InterfaceEPInSameSubnet_IPv6',['../_free_r_t_o_s___routing_8c.html#aab2a61dd6038413b91fc6b20fe8946bc',1,'FreeRTOS_Routing.c']]], + ['freertos_5fip_2ec_72',['FreeRTOS_IP.c',['../_free_r_t_o_s___i_p_8c.html',1,'']]], + ['freertos_5fip_5ftimers_2ec_73',['FreeRTOS_IP_Timers.c',['../_free_r_t_o_s___i_p___timers_8c.html',1,'']]], + ['freertos_5fip_5futils_2ec_74',['FreeRTOS_IP_Utils.c',['../_free_r_t_o_s___i_p___utils_8c.html',1,'']]], + ['freertos_5fipinit_5fmulti_75',['FreeRTOS_IPInit_Multi',['../_free_r_t_o_s___i_p_8c.html#aa3d9398c0e80cf2b737b08a12f0863ea',1,'FreeRTOS_IP.c']]], + ['freertos_5fipv4_2ec_76',['FreeRTOS_IPv4.c',['../_free_r_t_o_s___i_pv4_8c.html',1,'']]], + ['freertos_5fipv4_5fsockets_2ec_77',['FreeRTOS_IPv4_Sockets.c',['../_free_r_t_o_s___i_pv4___sockets_8c.html',1,'']]], + ['freertos_5fipv4_5futils_2ec_78',['FreeRTOS_IPv4_Utils.c',['../_free_r_t_o_s___i_pv4___utils_8c.html',1,'']]], + ['freertos_5fipv6_2ec_79',['FreeRTOS_IPv6.c',['../_free_r_t_o_s___i_pv6_8c.html',1,'']]], + ['freertos_5fipv6_5fsockets_2ec_80',['FreeRTOS_IPv6_Sockets.c',['../_free_r_t_o_s___i_pv6___sockets_8c.html',1,'']]], + ['freertos_5fipv6_5futils_2ec_81',['FreeRTOS_IPv6_Utils.c',['../_free_r_t_o_s___i_pv6___utils_8c.html',1,'']]], + ['freertos_5fisendpointup_82',['FreeRTOS_IsEndPointUp',['../_free_r_t_o_s___i_p_8c.html#a0faba21f1b225a1cae745ca2b70468b8',1,'FreeRTOS_IP.c']]], + ['freertos_5fisnetworkup_83',['FreeRTOS_IsNetworkUp',['../_free_r_t_o_s___i_p_8c.html#ac1f02ee6cc4e8f633ed3ddbc3d01e943',1,'FreeRTOS_IP.c']]], + ['freertos_5fissocketconnected_84',['FreeRTOS_issocketconnected',['../_free_r_t_o_s___sockets_8c.html#ad8dffb3417a60b9c98108408052579ad',1,'FreeRTOS_Sockets.c']]], + ['freertos_5flisten_85',['FreeRTOS_listen',['../_free_r_t_o_s___sockets_8c.html#a1718a2539e0de40d95472ea59859be5c',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fmatchingendpoint_86',['FreeRTOS_MatchingEndpoint',['../_free_r_t_o_s___routing_8c.html#a419bbc70f6685d44bdb39f6e72483115',1,'FreeRTOS_Routing.c']]], + ['freertos_5fmax_5fint32_87',['FreeRTOS_max_int32',['../_free_r_t_o_s___i_p___utils_8c.html#a8e36f528b9268ef66b96bdb38442f257',1,'FreeRTOS_IP_Utils.c']]], + ['freertos_5fmax_5fsize_5ft_88',['FreeRTOS_max_size_t',['../_free_r_t_o_s___i_p___utils_8c.html#ac2a76418ec84ced5006a825ec8b865e3',1,'FreeRTOS_IP_Utils.c']]], + ['freertos_5fmax_5fuint32_89',['FreeRTOS_max_uint32',['../_free_r_t_o_s___i_p___utils_8c.html#a9116ad8c3051d8231bef15c56ec57791',1,'FreeRTOS_IP_Utils.c']]], + ['freertos_5fmaywrite_90',['FreeRTOS_maywrite',['../_free_r_t_o_s___sockets_8c.html#a50d7c4b5b3eeea34905a4f16b6f13965',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fmin_5fint32_91',['FreeRTOS_min_int32',['../_free_r_t_o_s___i_p___utils_8c.html#a4800536b39a0e736fbc91eeeb46ade00',1,'FreeRTOS_IP_Utils.c']]], + ['freertos_5fmin_5fsize_5ft_92',['FreeRTOS_min_size_t',['../_free_r_t_o_s___i_p___utils_8c.html#ad321c6de160a32ab0f4a53ba4b822be7',1,'FreeRTOS_IP_Utils.c']]], + ['freertos_5fmin_5fuint32_93',['FreeRTOS_min_uint32',['../_free_r_t_o_s___i_p___utils_8c.html#a2c7362b4fff227e86de3a660e4351546',1,'FreeRTOS_IP_Utils.c']]], + ['freertos_5fminimum_5ftcp_5foffset_94',['FREERTOS_MINIMUM_TCP_OFFSET',['../_free_r_t_o_s___i_p___utils_8c.html#a985670bd700f08464870fb9fd42459f9',1,'FreeRTOS_IP_Utils.c']]], + ['freertos_5fmss_95',['FreeRTOS_mss',['../_free_r_t_o_s___sockets_8c.html#a10a19083f6bdd12aa4e0a8e508454385',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fmultiply_5fint32_96',['FreeRTOS_multiply_int32',['../_free_r_t_o_s___i_p___utils_8c.html#a24b7108bfe7179005085663dda60d50f',1,'FreeRTOS_IP_Utils.c']]], + ['freertos_5fnd_2ec_97',['FreeRTOS_ND.c',['../_free_r_t_o_s___n_d_8c.html',1,'']]], + ['freertos_5fnetstat_98',['FreeRTOS_netstat',['../_free_r_t_o_s___sockets_8c.html#a48a287752bb66a04cb00ab0e427f4808',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fnetworkdown_99',['FreeRTOS_NetworkDown',['../_free_r_t_o_s___i_p_8c.html#a15303d18bd7cd0331141a70ed928c427',1,'FreeRTOS_IP.c']]], + ['freertos_5fnetworkdownfromisr_100',['FreeRTOS_NetworkDownFromISR',['../_free_r_t_o_s___i_p_8c.html#a69dd485e711cc48c34dfa972c6c79622',1,'FreeRTOS_IP.c']]], + ['freertos_5fnextendpoint_101',['FreeRTOS_NextEndPoint',['../_free_r_t_o_s___routing_8c.html#a5c4e5ff66ef8f6e896872f3cfcd919ad',1,'FreeRTOS_Routing.c']]], + ['freertos_5fnextnetworkinterface_102',['FreeRTOS_NextNetworkInterface',['../_free_r_t_o_s___routing_8c.html#a75853d38d4aab9a06e662625e4a457dc',1,'FreeRTOS_Routing.c']]], + ['freertos_5foutputadvertiseipv6_103',['FreeRTOS_OutputAdvertiseIPv6',['../_free_r_t_o_s___n_d_8c.html#a74b8b9d1be2cfa05a2fc0fe6c77c1269',1,'FreeRTOS_ND.c']]], + ['freertos_5foutputarprequest_104',['FreeRTOS_OutputARPRequest',['../_free_r_t_o_s___a_r_p_8c.html#a87ebc2f32c8cda6cdc24a265df2388c0',1,'FreeRTOS_ARP.c']]], + ['freertos_5foutputarprequest_5fmulti_105',['FreeRTOS_OutputARPRequest_Multi',['../_free_r_t_o_s___a_r_p_8c.html#a42bebad74f19ae5b2e14dcaca2b79c59',1,'FreeRTOS_ARP.c']]], + ['freertos_5fprocessdnscache_106',['FreeRTOS_ProcessDNSCache',['../_free_r_t_o_s___d_n_s___cache_8c.html#a814317700ab5936ae33b37c9f709b994',1,'FreeRTOS_DNS_Cache.c']]], + ['freertos_5fra_2ec_107',['FreeRTOS_RA.c',['../_free_r_t_o_s___r_a_8c.html',1,'']]], + ['freertos_5frecv_108',['FreeRTOS_recv',['../_free_r_t_o_s___sockets_8c.html#a44ab7ba5fddce925519c7ccc7b887033',1,'FreeRTOS_Sockets.c']]], + ['freertos_5frecvfrom_109',['FreeRTOS_recvfrom',['../_free_r_t_o_s___sockets_8c.html#a8c1bbfc998e514a7dfafe0d755b6baa9',1,'FreeRTOS_Sockets.c']]], + ['freertos_5freleasetcppayloadbuffer_110',['FreeRTOS_ReleaseTCPPayloadBuffer',['../_free_r_t_o_s___i_p_8c.html#addc06514ba67a0e6ba21fd172ba9f006',1,'FreeRTOS_IP.c']]], + ['freertos_5freleaseudppayloadbuffer_111',['FreeRTOS_ReleaseUDPPayloadBuffer',['../_free_r_t_o_s___i_p_8c.html#ab9acf473a4cda3f58dde4180091464ed',1,'FreeRTOS_IP.c']]], + ['freertos_5fround_5fdown_112',['FreeRTOS_round_down',['../_free_r_t_o_s___i_p___utils_8c.html#ab13b7eb688e635270861d515a0bdb792',1,'FreeRTOS_IP_Utils.c']]], + ['freertos_5fround_5fup_113',['FreeRTOS_round_up',['../_free_r_t_o_s___i_p___utils_8c.html#a34489473730372ede66a0edb2df9b9be',1,'FreeRTOS_IP_Utils.c']]], + ['freertos_5frouting_2ec_114',['FreeRTOS_Routing.c',['../_free_r_t_o_s___routing_8c.html',1,'']]], + ['freertos_5frx_5fsize_115',['FreeRTOS_rx_size',['../_free_r_t_o_s___sockets_8c.html#a6780a9d34f029526febb9b8a26f1b0c5',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fselect_116',['FreeRTOS_select',['../_free_r_t_o_s___sockets_8c.html#a659a570c1f1b5a11c17d816cb5541291',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fsend_117',['FreeRTOS_send',['../_free_r_t_o_s___sockets_8c.html#abfb04a35d27c55380be674ebd8204351',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fsendpingrequest_118',['FreeRTOS_SendPingRequest',['../_free_r_t_o_s___i_p_8c.html#a0b7b0a9903a5a06d10b689ba9676a0f4',1,'FreeRTOS_IP.c']]], + ['freertos_5fsendpingrequestipv6_119',['FreeRTOS_SendPingRequestIPv6',['../_free_r_t_o_s___n_d_8c.html#a627c34fe71a9c809369dae7e2b3b04db',1,'FreeRTOS_ND.c']]], + ['freertos_5fsendto_120',['FreeRTOS_sendto',['../_free_r_t_o_s___sockets_8c.html#a1493cacf34d993b8b87c41242d7fc6d1',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fsetdnsippreference_121',['FreeRTOS_SetDNSIPPreference',['../_free_r_t_o_s___d_n_s_8c.html#aa77247177eee55cde80f32bafe380ae7',1,'FreeRTOS_DNS.c']]], + ['freertos_5fsetendpointconfiguration_122',['FreeRTOS_SetEndPointConfiguration',['../_free_r_t_o_s___i_p_8c.html#a8fddb08178fabd71e2ef53bd24d23a25',1,'FreeRTOS_IP.c']]], + ['freertos_5fsetsockopt_123',['FreeRTOS_setsockopt',['../_free_r_t_o_s___sockets_8c.html#a7faeae52e5489bc7b5ee8ab9392630d5',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fshutdown_124',['FreeRTOS_shutdown',['../_free_r_t_o_s___sockets_8c.html#af3c0198b40cbd5c5e4bb4f173df4fff1',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fsocket_125',['FreeRTOS_socket',['../_free_r_t_o_s___sockets_8c.html#a0707f288bef6f9a6cafd3dc3c4cfab99',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fsockets_2ec_126',['FreeRTOS_Sockets.c',['../_free_r_t_o_s___sockets_8c.html',1,'']]], + ['freertos_5fstream_5fbuffer_2ec_127',['FreeRTOS_Stream_Buffer.c',['../_free_r_t_o_s___stream___buffer_8c.html',1,'']]], + ['freertos_5ftcp_5fip_2ec_128',['FreeRTOS_TCP_IP.c',['../_free_r_t_o_s___t_c_p___i_p_8c.html',1,'']]], + ['freertos_5ftcp_5fip_5fipv4_2ec_129',['FreeRTOS_TCP_IP_IPv4.c',['../_free_r_t_o_s___t_c_p___i_p___i_pv4_8c.html',1,'']]], + ['freertos_5ftcp_5fip_5fipv6_2ec_130',['FreeRTOS_TCP_IP_IPv6.c',['../_free_r_t_o_s___t_c_p___i_p___i_pv6_8c.html',1,'']]], + ['freertos_5ftcp_5freception_2ec_131',['FreeRTOS_TCP_Reception.c',['../_free_r_t_o_s___t_c_p___reception_8c.html',1,'']]], + ['freertos_5ftcp_5fstate_5fhandling_2ec_132',['FreeRTOS_TCP_State_Handling.c',['../_free_r_t_o_s___t_c_p___state___handling_8c.html',1,'']]], + ['freertos_5ftcp_5fstate_5fhandling_5fipv4_2ec_133',['FreeRTOS_TCP_State_Handling_IPv4.c',['../_free_r_t_o_s___t_c_p___state___handling___i_pv4_8c.html',1,'']]], + ['freertos_5ftcp_5fstate_5fhandling_5fipv6_2ec_134',['FreeRTOS_TCP_State_Handling_IPv6.c',['../_free_r_t_o_s___t_c_p___state___handling___i_pv6_8c.html',1,'']]], + ['freertos_5ftcp_5ftransmission_2ec_135',['FreeRTOS_TCP_Transmission.c',['../_free_r_t_o_s___t_c_p___transmission_8c.html',1,'']]], + ['freertos_5ftcp_5ftransmission_5fipv4_2ec_136',['FreeRTOS_TCP_Transmission_IPv4.c',['../_free_r_t_o_s___t_c_p___transmission___i_pv4_8c.html',1,'']]], + ['freertos_5ftcp_5ftransmission_5fipv6_2ec_137',['FreeRTOS_TCP_Transmission_IPv6.c',['../_free_r_t_o_s___t_c_p___transmission___i_pv6_8c.html',1,'']]], + ['freertos_5ftcp_5futils_2ec_138',['FreeRTOS_TCP_Utils.c',['../_free_r_t_o_s___t_c_p___utils_8c.html',1,'']]], + ['freertos_5ftcp_5futils_5fipv4_2ec_139',['FreeRTOS_TCP_Utils_IPv4.c',['../_free_r_t_o_s___t_c_p___utils___i_pv4_8c.html',1,'']]], + ['freertos_5ftcp_5futils_5fipv6_2ec_140',['FreeRTOS_TCP_Utils_IPv6.c',['../_free_r_t_o_s___t_c_p___utils___i_pv6_8c.html',1,'']]], + ['freertos_5ftcp_5fwin_2ec_141',['FreeRTOS_TCP_WIN.c',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html',1,'']]], + ['freertos_5ftiny_5ftcp_2ec_142',['FreeRTOS_Tiny_TCP.c',['../_free_r_t_o_s___tiny___t_c_p_8c.html',1,'']]], + ['freertos_5ftx_5fsize_143',['FreeRTOS_tx_size',['../_free_r_t_o_s___sockets_8c.html#af92a73b86b115ac2caeaf6d98d696723',1,'FreeRTOS_Sockets.c']]], + ['freertos_5ftx_5fspace_144',['FreeRTOS_tx_space',['../_free_r_t_o_s___sockets_8c.html#ab49ef118747de118579ce9ba6e2d3d10',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fudp_5fip_2ec_145',['FreeRTOS_UDP_IP.c',['../_free_r_t_o_s___u_d_p___i_p_8c.html',1,'']]], + ['freertos_5fudp_5fipv4_2ec_146',['FreeRTOS_UDP_IPv4.c',['../_free_r_t_o_s___u_d_p___i_pv4_8c.html',1,'']]], + ['freertos_5fudp_5fipv6_2ec_147',['FreeRTOS_UDP_IPv6.c',['../_free_r_t_o_s___u_d_p___i_pv6_8c.html',1,'']]] +]; diff --git a/V4.3.1/search/all_6.js b/V4.3.1/search/all_6.js new file mode 100644 index 000000000..884e4b6d8 --- /dev/null +++ b/V4.3.1/search/all_6.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['iparp_5fresolution_5fmax_5fdelay_0',['ipARP_RESOLUTION_MAX_DELAY',['../_free_r_t_o_s___i_p_8c.html#a4a746f4a37672bd67a9a942f3b2c8c2d',1,'FreeRTOS_IP.c']]], + ['iparp_5ftimer_5fperiod_5fms_1',['ipARP_TIMER_PERIOD_MS',['../_free_r_t_o_s___i_p_8c.html#a7e4e7fc3c3cb2528f45fbff05a95c278',1,'FreeRTOS_IP.c']]], + ['ipexpected_5farpheader_5ft_5fsize_2',['ipEXPECTED_ARPHeader_t_SIZE',['../_free_r_t_o_s___i_p___utils_8c.html#ac13c9f74e9fe374fa459f8df1864dc72',1,'FreeRTOS_IP_Utils.c']]], + ['ipexpected_5fethernetheader_5ft_5fsize_3',['ipEXPECTED_EthernetHeader_t_SIZE',['../_free_r_t_o_s___i_p___utils_8c.html#a8ef9c6533cd9f34111f6ff1e5843507d',1,'FreeRTOS_IP_Utils.c']]], + ['ipexpected_5ficmpheader_5ft_5fsize_4',['ipEXPECTED_ICMPHeader_t_SIZE',['../_free_r_t_o_s___i_p___utils_8c.html#a0dc89907d7a25a7f795f2abcd9eb6aa6',1,'FreeRTOS_IP_Utils.c']]], + ['ipexpected_5figmpheader_5ft_5fsize_5',['ipEXPECTED_IGMPHeader_t_SIZE',['../_free_r_t_o_s___i_p___utils_8c.html#a527470135bea5ef3d75f3c1206431584',1,'FreeRTOS_IP_Utils.c']]], + ['ipexpected_5fipheader_5ft_5fsize_6',['ipEXPECTED_IPHeader_t_SIZE',['../_free_r_t_o_s___i_p___utils_8c.html#a43457a3ba4fd6f16a4d33394af459536',1,'FreeRTOS_IP_Utils.c']]], + ['ipexpected_5ftcpheader_5ft_5fsize_7',['ipEXPECTED_TCPHeader_t_SIZE',['../_free_r_t_o_s___i_p___utils_8c.html#ada34cd2dcc842a6c43cd9c85acd0ebc2',1,'FreeRTOS_IP_Utils.c']]], + ['ipexpected_5fudpheader_5ft_5fsize_8',['ipEXPECTED_UDPHeader_t_SIZE',['../_free_r_t_o_s___i_p___utils_8c.html#a2cc551f421556711f0924201c04c9f82',1,'FreeRTOS_IP_Utils.c']]], + ['ipfirst_5fmulti_5fcast_5fipv4_9',['ipFIRST_MULTI_CAST_IPv4',['../_free_r_t_o_s___i_pv4_8c.html#a8d61855955d5d08f6933f84bc668d80f',1,'FreeRTOS_IPv4.c']]], + ['ipinitialisation_5fretry_5fdelay_10',['ipINITIALISATION_RETRY_DELAY',['../_free_r_t_o_s___i_p___utils_8c.html#af982816b81c2c41e4e50643993a23085',1,'ipINITIALISATION_RETRY_DELAY(): FreeRTOS_IP_Utils.c'],['../_free_r_t_o_s___i_p_8c.html#af982816b81c2c41e4e50643993a23085',1,'ipINITIALISATION_RETRY_DELAY(): FreeRTOS_IP.c']]], + ['ipis_5fethernet_5fframe_5ftype_5finvalid_11',['ipIS_ETHERNET_FRAME_TYPE_INVALID',['../_free_r_t_o_s___i_p_8c.html#a0f3d6d11f31e65c3da1391a9e0a96b74',1,'FreeRTOS_IP.c']]], + ['iplast_5fmulti_5fcast_5fipv4_12',['ipLAST_MULTI_CAST_IPv4',['../_free_r_t_o_s___i_pv4_8c.html#ac31c27794ca5338cda64cc9282dadfed',1,'FreeRTOS_IPv4.c']]], + ['ipllmnr_5fip_5faddr_5fipv6_13',['ipLLMNR_IP_ADDR_IPv6',['../_free_r_t_o_s___d_n_s_8c.html#a7fd3cd50dbeb75c98d82d6850019f1cf',1,'FreeRTOS_DNS.c']]], + ['ipnd_5fresolution_5fmax_5fdelay_14',['ipND_RESOLUTION_MAX_DELAY',['../_free_r_t_o_s___i_p_8c.html#af8fbbc3db1582f681efd0cc128b88eb0',1,'FreeRTOS_IP.c']]], + ['ipnd_5ftimer_5fperiod_5fms_15',['ipND_TIMER_PERIOD_MS',['../_free_r_t_o_s___i_p_8c.html#a4567f9f1d2bee1c04bd094ce98cf594f',1,'FreeRTOS_IP.c']]], + ['iptcp_5ftimer_5fperiod_5fms_16',['ipTCP_TIMER_PERIOD_MS',['../_free_r_t_o_s___i_p_8c.html#aef1630538f6d0701a36f878b67bbff8f',1,'ipTCP_TIMER_PERIOD_MS(): FreeRTOS_IP.c'],['../_free_r_t_o_s___sockets_8c.html#aef1630538f6d0701a36f878b67bbff8f',1,'ipTCP_TIMER_PERIOD_MS(): FreeRTOS_Sockets.c']]], + ['iptraceip_5ftask_5fstarting_17',['iptraceIP_TASK_STARTING',['../_free_r_t_o_s___i_p_8c.html#ac51b5f3c553cd23a5fd940017637737f',1,'FreeRTOS_IP.c']]], + ['ipv6mc_5fget_5fflags_5fvalue_18',['IPv6MC_GET_FLAGS_VALUE',['../_free_r_t_o_s___i_pv6_8c.html#a0db85f588cab0c9a710621a30396c83c',1,'FreeRTOS_IPv6.c']]], + ['ipv6mc_5fget_5fgroup_5fid_19',['IPv6MC_GET_GROUP_ID',['../_free_r_t_o_s___i_pv6_8c.html#a5d1d2ac831df739c05a9f518ea541c67',1,'FreeRTOS_IPv6.c']]], + ['ipv6mc_5fget_5fscope_5fvalue_20',['IPv6MC_GET_SCOPE_VALUE',['../_free_r_t_o_s___i_pv6_8c.html#ab9ee8420439291dd97a2af7c53caa575',1,'FreeRTOS_IPv6.c']]] +]; diff --git a/V4.3.1/search/all_7.js b/V4.3.1/search/all_7.js new file mode 100644 index 000000000..d8b602232 --- /dev/null +++ b/V4.3.1/search/all_7.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['ltcpaddrxdata_0',['lTCPAddRxdata',['../_free_r_t_o_s___sockets_8c.html#a712ce92b8518f62444aad31e0fb1d424',1,'FreeRTOS_Sockets.c']]], + ['ltcpincrementtxposition_1',['lTCPIncrementTxPosition',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#ade7b7293181555c6a62ea9bac03becde',1,'FreeRTOS_TCP_WIN.c']]], + ['ltcpwindowrxcheck_2',['lTCPWindowRxCheck',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a996ad8a7076c54bb722cf1531471ae9f',1,'FreeRTOS_TCP_WIN.c']]], + ['ltcpwindowtxadd_3',['lTCPWindowTxAdd',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a26ee21f292a5c75d9700f154fbec8ea8',1,'FreeRTOS_TCP_WIN.c']]] +]; diff --git a/V4.3.1/search/all_8.js b/V4.3.1/search/all_8.js new file mode 100644 index 000000000..1cfad9134 --- /dev/null +++ b/V4.3.1/search/all_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['max_5ftransmit_5fcount_5fusing_5flarge_5fwindow_0',['MAX_TRANSMIT_COUNT_USING_LARGE_WINDOW',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#aa04acc1274bb1e10366880ee23dcfb82',1,'FreeRTOS_TCP_WIN.c']]] +]; diff --git a/V4.3.1/search/all_9.js b/V4.3.1/search/all_9.js new file mode 100644 index 000000000..689896997 --- /dev/null +++ b/V4.3.1/search/all_9.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['nddont_5fblock_0',['ndDONT_BLOCK',['../_free_r_t_o_s___n_d_8c.html#a30a69421e255cecf44a800cb823783ea',1,'FreeRTOS_ND.c']]], + ['ndecho_5fdata_5ffill_5fbyte_1',['ndECHO_DATA_FILL_BYTE',['../_free_r_t_o_s___n_d_8c.html#a8522e644c704b38f741518d5c172afe0',1,'FreeRTOS_ND.c']]], + ['ndicmpv6_5fflag_5fsolicited_2',['ndICMPv6_FLAG_SOLICITED',['../_free_r_t_o_s___n_d_8c.html#ad17cb7fc17316079fcd13b6d49291062',1,'FreeRTOS_ND.c']]], + ['ndicmpv6_5fflag_5fupdate_3',['ndICMPv6_FLAG_UPDATE',['../_free_r_t_o_s___n_d_8c.html#a7093818bef360f0220c7160d60a2a24e',1,'FreeRTOS_ND.c']]], + ['ndmax_5fcache_5fage_5fbefore_5fnew_5fnd_5fsolicitation_4',['ndMAX_CACHE_AGE_BEFORE_NEW_ND_SOLICITATION',['../_free_r_t_o_s___n_d_8c.html#ae1576f967dffabbc598706bf06da1849',1,'FreeRTOS_ND.c']]] +]; diff --git a/V4.3.1/search/all_a.js b/V4.3.1/search/all_a.js new file mode 100644 index 000000000..c5c02a3a3 --- /dev/null +++ b/V4.3.1/search/all_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['option_5fcode_5fsingle_5fsack_0',['OPTION_CODE_SINGLE_SACK',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#adec136da43a296db8af25299ca738963',1,'FreeRTOS_TCP_WIN.c']]] +]; diff --git a/V4.3.1/search/all_b.js b/V4.3.1/search/all_b.js new file mode 100644 index 000000000..c133efc75 --- /dev/null +++ b/V4.3.1/search/all_b.js @@ -0,0 +1,182 @@ +var searchData= +[ + ['parsednsanswer_0',['parseDNSAnswer',['../_free_r_t_o_s___d_n_s___parser_8c.html#a304b39e800a157af0f7528a67c49275c',1,'FreeRTOS_DNS_Parser.c']]], + ['pclocal_5fall_5fnodes_5fmulticast_5fip_1',['pcLOCAL_ALL_NODES_MULTICAST_IP',['../_free_r_t_o_s___n_d_8c.html#aba34dbb3c2b407142501dc68ce6ac179',1,'FreeRTOS_ND.c']]], + ['pclocal_5fall_5fnodes_5fmulticast_5fmac_2',['pcLOCAL_ALL_NODES_MULTICAST_MAC',['../_free_r_t_o_s___n_d_8c.html#a490b897c1fbb6c82ff96dab6b9159698',1,'FreeRTOS_ND.c']]], + ['prepare_5fcachelookup_3',['Prepare_CacheLookup',['../_free_r_t_o_s___d_n_s___cache_8c.html#a2f8c3cb897d417bd429c13b97fe7fe44',1,'FreeRTOS_DNS_Cache.c']]], + ['preparereplydnsmessage_4',['prepareReplyDNSMessage',['../_free_r_t_o_s___d_n_s___parser_8c.html#a02585c8e23fcd7f4826dcdddeb93b07c',1,'FreeRTOS_DNS_Parser.c']]], + ['processicmppacket_5',['ProcessICMPPacket',['../_free_r_t_o_s___i_c_m_p_8c.html#a27d6a7b6e3efb00e558597b5c8f5b0c2',1,'FreeRTOS_ICMP.c']]], + ['prv_5finet_5fpton6_5fadd_5fnibble_6',['prv_inet_pton6_add_nibble',['../_free_r_t_o_s___i_pv6___sockets_8c.html#a11b544a8569ee1c4da17342b30ecf1a3',1,'FreeRTOS_IPv6_Sockets.c']]], + ['prv_5finet_5fpton6_5fset_5fzeros_7',['prv_inet_pton6_set_zeros',['../_free_r_t_o_s___i_pv6___sockets_8c.html#aaaf097aef7748874c88267f867518f62',1,'FreeRTOS_IPv6_Sockets.c']]], + ['prv_5fntop6_5fsearch_5fzeros_8',['prv_ntop6_search_zeros',['../_free_r_t_o_s___i_pv6___sockets_8c.html#a5d6f5268e731357abd6913ade4ea3f8c',1,'FreeRTOS_IPv6_Sockets.c']]], + ['prv_5fntop6_5fwrite_5fshort_9',['prv_ntop6_write_short',['../_free_r_t_o_s___i_pv6___sockets_8c.html#af949ffc76031a25b168fbd736c3d7ab4',1,'FreeRTOS_IPv6_Sockets.c']]], + ['prv_5fntop6_5fwrite_5fzeros_10',['prv_ntop6_write_zeros',['../_free_r_t_o_s___i_pv6___sockets_8c.html#a34e31c764d79624aa0d554d84463f345',1,'FreeRTOS_IPv6_Sockets.c']]], + ['prvacceptwaitclient_11',['prvAcceptWaitClient',['../_free_r_t_o_s___sockets_8c.html#a6bcec3c88c9bfe0a1ad7c8c88885a418',1,'FreeRTOS_Sockets.c']]], + ['prvallowippacketipv4_12',['prvAllowIPPacketIPv4',['../_free_r_t_o_s___i_pv4_8c.html#aef499c04b2f306a984f2c9b41743445d',1,'FreeRTOS_IPv4.c']]], + ['prvallowippacketipv6_13',['prvAllowIPPacketIPv6',['../_free_r_t_o_s___i_pv6_8c.html#a21f47d44d82997b75eb4b3fae7bccd14',1,'FreeRTOS_IPv6.c']]], + ['prvcachelookup_14',['prvCacheLookup',['../_free_r_t_o_s___a_r_p_8c.html#ac322f646992dc0ab71646682c73ff04b',1,'FreeRTOS_ARP.c']]], + ['prvcalldhcp_5fra_5fhandler_15',['prvCallDHCP_RA_Handler',['../_free_r_t_o_s___i_p_8c.html#a99f2d1ff9735bcab29e70c46affc21bc',1,'FreeRTOS_IP.c']]], + ['prvcheckip4headeroptions_16',['prvCheckIP4HeaderOptions',['../_free_r_t_o_s___i_pv4_8c.html#a528f5ba584afab6cc9df69222ee47647',1,'FreeRTOS_IPv4.c']]], + ['prvcheckoptions_17',['prvCheckOptions',['../_free_r_t_o_s___t_c_p___reception_8c.html#a1224fb3e9921e48932c5211dc3acf4b2',1,'FreeRTOS_TCP_Reception.c']]], + ['prvcheckrxdata_18',['prvCheckRxData',['../_free_r_t_o_s___t_c_p___reception_8c.html#a7717f08f62c80726946508abf3192c2c',1,'FreeRTOS_TCP_Reception.c']]], + ['prvchecksumicmpv6checks_19',['prvChecksumICMPv6Checks',['../_free_r_t_o_s___i_pv6___utils_8c.html#ad457bd089ee8ca81415d7258269a7499',1,'FreeRTOS_IPv6_Utils.c']]], + ['prvchecksumipv4checks_20',['prvChecksumIPv4Checks',['../_free_r_t_o_s___i_pv4___utils_8c.html#a769ea6ebe2eb010371d95aa361e03a95',1,'FreeRTOS_IPv4_Utils.c']]], + ['prvchecksumipv6checks_21',['prvChecksumIPv6Checks',['../_free_r_t_o_s___i_pv6___utils_8c.html#a402c22e904f15b201e8133cbc6695db3',1,'FreeRTOS_IPv6_Utils.c']]], + ['prvchecksumprotocolcalculate_22',['prvChecksumProtocolCalculate',['../_free_r_t_o_s___i_p___utils_8c.html#a9c3b73b3773e67b932ceae1bb819a7a0',1,'FreeRTOS_IP_Utils.c']]], + ['prvchecksumprotocolchecks_23',['prvChecksumProtocolChecks',['../_free_r_t_o_s___i_p___utils_8c.html#a8d439f96ef27eb4b4bb8e44597c7e49f',1,'FreeRTOS_IP_Utils.c']]], + ['prvchecksumprotocolmtucheck_24',['prvChecksumProtocolMTUCheck',['../_free_r_t_o_s___i_p___utils_8c.html#a4e2b3a98ddc895f238b4dff631fc4551',1,'FreeRTOS_IP_Utils.c']]], + ['prvchecksumprotocolsetchecksum_25',['prvChecksumProtocolSetChecksum',['../_free_r_t_o_s___i_p___utils_8c.html#a139d205a744822cca6f16f2e5aef1d40',1,'FreeRTOS_IP_Utils.c']]], + ['prvcheckwaitingbuffer_26',['prvCheckWaitingBuffer',['../_free_r_t_o_s___n_d_8c.html#afc2a6ecc454c9e097a7469f073400f5d',1,'FreeRTOS_ND.c']]], + ['prvclosedhcpsocket_27',['prvCloseDHCPSocket',['../_free_r_t_o_s___d_h_c_p_8c.html#a99005d3426c34cb0ce89bddcea733b6b',1,'FreeRTOS_DHCP.c']]], + ['prvclosedhcpv6socket_28',['prvCloseDHCPv6Socket',['../_free_r_t_o_s___d_h_c_pv6_8c.html#a512ea622e210b0e29d23bcff76251f3c',1,'FreeRTOS_DHCPv6.c']]], + ['prvcreatedhcpsocket_29',['prvCreateDHCPSocket',['../_free_r_t_o_s___d_h_c_p_8c.html#a95b0e85eb9f81c168788288e640d60d8',1,'FreeRTOS_DHCP.c']]], + ['prvcreatedhcpv6socket_30',['prvCreateDHCPv6Socket',['../_free_r_t_o_s___d_h_c_pv6_8c.html#a1d004771bd83c701abb8e9ff7d62a6fa',1,'FreeRTOS_DHCPv6.c']]], + ['prvcreatednsmessage_31',['prvCreateDNSMessage',['../_free_r_t_o_s___d_n_s_8c.html#a1bff86ae7d967cab8be4d8369279dd75',1,'FreeRTOS_DNS.c']]], + ['prvcreatepartdhcpmessage_32',['prvCreatePartDHCPMessage',['../_free_r_t_o_s___d_h_c_p_8c.html#a34a6843a4102f424c683e2a52325ceb6',1,'FreeRTOS_DHCP.c']]], + ['prvcreatesectors_33',['prvCreateSectors',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a4ce7e1d620e6b6384ef695bf959281d7',1,'FreeRTOS_TCP_WIN.c']]], + ['prvdeterminesocketsize_34',['prvDetermineSocketSize',['../_free_r_t_o_s___sockets_8c.html#a4ed71e4108c462911d2fa3229eec6df6',1,'FreeRTOS_Sockets.c']]], + ['prvdhcpv6_5fhandleoption_35',['prvDHCPv6_handleOption',['../_free_r_t_o_s___d_h_c_pv6_8c.html#a31cef0d480ce53ffb92d0c4ee9473778',1,'FreeRTOS_DHCPv6.c']]], + ['prvdhcpv6_5fhandlestatuscode_36',['prvDHCPv6_handleStatusCode',['../_free_r_t_o_s___d_h_c_pv6_8c.html#a58ecaa4592d2becee56df8d294e7ca33',1,'FreeRTOS_DHCPv6.c']]], + ['prvdhcpv6_5fsuboption_37',['prvDHCPv6_subOption',['../_free_r_t_o_s___d_h_c_pv6_8c.html#a5be4949d21b15caa4d92f928dd78abb7',1,'FreeRTOS_DHCPv6.c']]], + ['prvdhcpv6analyse_38',['prvDHCPv6Analyse',['../_free_r_t_o_s___d_h_c_pv6_8c.html#abc70a267733a82d23f6d50a0ac3fabdb',1,'FreeRTOS_DHCPv6.c']]], + ['prvdnsreply_39',['prvDNSReply',['../_free_r_t_o_s___d_n_s_8c.html#a61c4c2d5f3778e0994daed50802515eb',1,'FreeRTOS_DNS.c']]], + ['prvfillsockaddress_40',['prvFillSockAddress',['../_free_r_t_o_s___d_n_s_8c.html#ac912dabeefa1427f8ea2dae4ac390d9b',1,'FreeRTOS_DNS.c']]], + ['prvfindcacheentry_41',['prvFindCacheEntry',['../_free_r_t_o_s___a_r_p_8c.html#abddd085b5a86f104d453b4f82b92c1f1',1,'FreeRTOS_ARP.c']]], + ['prvfindentryindex_42',['prvFindEntryIndex',['../_free_r_t_o_s___d_n_s___cache_8c.html#aa5594603555bb562ecd763817fe61023',1,'FreeRTOS_DNS_Cache.c']]], + ['prvfindselectedsocket_43',['prvFindSelectedSocket',['../_free_r_t_o_s___sockets_8c.html#a69915c323634b32c5534bd1a17b79673',1,'FreeRTOS_Sockets.c']]], + ['prvforwardtxpacket_44',['prvForwardTxPacket',['../_free_r_t_o_s___i_p_8c.html#a4cc225ae2aa0e148caab841e3d67dbb0',1,'FreeRTOS_IP.c']]], + ['prvgetcacheipentry_45',['prvGetCacheIPEntry',['../_free_r_t_o_s___d_n_s___cache_8c.html#a5ac4e4faf4dbdf99c7ef9b5aba61cdba',1,'FreeRTOS_DNS_Cache.c']]], + ['prvgetchecksumfrompacket_46',['prvGetChecksumFromPacket',['../_free_r_t_o_s___i_p___utils_8c.html#aae4fbd92cbabc7b66042531f71591cab',1,'FreeRTOS_IP_Utils.c']]], + ['prvgethostbyname_47',['prvGetHostByName',['../_free_r_t_o_s___d_n_s_8c.html#aae00df5cb0d4351f877dd9c27cdca254',1,'FreeRTOS_DNS.c']]], + ['prvgethostbynameop_48',['prvGetHostByNameOp',['../_free_r_t_o_s___d_n_s_8c.html#a47a7649d02e497d1f35519a7ea533ec3',1,'FreeRTOS_DNS.c']]], + ['prvgethostbynameop_5fwithretry_49',['prvGetHostByNameOp_WithRetry',['../_free_r_t_o_s___d_n_s_8c.html#a44442f1111fa24e375378dceaa91fa22',1,'FreeRTOS_DNS.c']]], + ['prvgetpayloadbuffer_50',['prvGetPayloadBuffer',['../_free_r_t_o_s___d_n_s_8c.html#ab83fd4564829d4495ee1345bb7de6ee7',1,'FreeRTOS_DNS.c']]], + ['prvgetprivateportnumber_51',['prvGetPrivatePortNumber',['../_free_r_t_o_s___sockets_8c.html#a83a99d42729cdba57e78dd6c3c9e66e1',1,'FreeRTOS_Sockets.c']]], + ['prvhandleestablished_52',['prvHandleEstablished',['../_free_r_t_o_s___t_c_p___state___handling_8c.html#a321329a25c8f6de7856bec44678d6326',1,'FreeRTOS_TCP_State_Handling.c']]], + ['prvhandleethernetpacket_53',['prvHandleEthernetPacket',['../_free_r_t_o_s___i_p_8c.html#a9d5b9dd29ac8f3830bc4b1531b10228a',1,'FreeRTOS_IP.c']]], + ['prvhandlelisten_54',['prvHandleListen',['../_free_r_t_o_s___t_c_p___state___handling_8c.html#a8036de1fb5d65093adc7ceffdfea1e38',1,'FreeRTOS_TCP_State_Handling.c']]], + ['prvhandlelisten_5fipv4_55',['prvHandleListen_IPV4',['../_free_r_t_o_s___t_c_p___state___handling___i_pv4_8c.html#ac65150ab8106fa2c44cff0a47fa37d29',1,'FreeRTOS_TCP_State_Handling_IPv4.c']]], + ['prvhandlelisten_5fipv6_56',['prvHandleListen_IPV6',['../_free_r_t_o_s___t_c_p___state___handling___i_pv6_8c.html#a4d48639cba7100045aaa8dd5af9deffb',1,'FreeRTOS_TCP_State_Handling_IPv6.c']]], + ['prvhandlesynreceived_57',['prvHandleSynReceived',['../_free_r_t_o_s___t_c_p___state___handling_8c.html#a38bfd1b31c5ec1532040b5c728b52222',1,'FreeRTOS_TCP_State_Handling.c']]], + ['prvhandlewaitingeleasedaddress_58',['prvHandleWaitingeLeasedAddress',['../_free_r_t_o_s___d_h_c_p_8c.html#ab3a60d22692a9a3ba83958b6f2231eec',1,'FreeRTOS_DHCP.c']]], + ['prvincreasedns4index_59',['prvIncreaseDNS4Index',['../_free_r_t_o_s___d_n_s_8c.html#ad25ac051a64099fc2336de41526aee68',1,'FreeRTOS_DNS.c']]], + ['prvincreasedns6index_60',['prvIncreaseDNS6Index',['../_free_r_t_o_s___d_n_s_8c.html#a14e0f0cfa46b54efecf8089cf02c6701',1,'FreeRTOS_DNS.c']]], + ['prvinitialisedhcp_61',['prvInitialiseDHCP',['../_free_r_t_o_s___d_h_c_p_8c.html#a3ae932b479ce46d504c1a2fd065aa4b3',1,'FreeRTOS_DHCP.c']]], + ['prvinitialisedhcpv6_62',['prvInitialiseDHCPv6',['../_free_r_t_o_s___d_h_c_pv6_8c.html#a4f540bdd20f082cd8b75b19f262d6778',1,'FreeRTOS_DHCPv6.c']]], + ['prvinitialisetcpfields_63',['prvInitialiseTCPFields',['../_free_r_t_o_s___sockets_8c.html#acbf9d049905e0a91719a8c5e90c2391b',1,'FreeRTOS_Sockets.c']]], + ['prvinsertcacheentry_64',['prvInsertCacheEntry',['../_free_r_t_o_s___d_n_s___cache_8c.html#acdd5cc3cdd9fd7c80c1b00c22f6872fd',1,'FreeRTOS_DNS_Cache.c']]], + ['prviptask_65',['prvIPTask',['../_free_r_t_o_s___i_p_8c.html#a4a02bc45b29f74e5f48bd71bca5c1b61',1,'FreeRTOS_IP.c']]], + ['prviptask_5fcheckpendingevents_66',['prvIPTask_CheckPendingEvents',['../_free_r_t_o_s___i_p_8c.html#a89dd69e63b5dedbd950715dc2f782e54',1,'FreeRTOS_IP.c']]], + ['prviptask_5finitialise_67',['prvIPTask_Initialise',['../_free_r_t_o_s___i_p_8c.html#adf3f060de96e9fab30baaf4629748c87',1,'FreeRTOS_IP.c']]], + ['prviptimercheck_68',['prvIPTimerCheck',['../_free_r_t_o_s___i_p___timers_8c.html#ad2a2e3f4cbb0aee222276cfbae2b1590',1,'FreeRTOS_IP_Timers.c']]], + ['prviptimerreload_69',['prvIPTimerReload',['../_free_r_t_o_s___i_p___timers_8c.html#ae25d502fab7e4af29bc9b30dffc75ccf',1,'FreeRTOS_IP_Timers.c']]], + ['prviptimerstart_70',['prvIPTimerStart',['../_free_r_t_o_s___i_p___timers_8c.html#a6bbcca14e07b67e72962278309dd8d07',1,'FreeRTOS_IP_Timers.c']]], + ['prvisoptionlengthvalid_71',['prvIsOptionLengthValid',['../_free_r_t_o_s___d_h_c_pv6_8c.html#a9f9e5034128c358c55459a1a3449e4ea',1,'FreeRTOS_DHCPv6.c']]], + ['prvisvaliddhcpresponse_72',['prvIsValidDHCPResponse',['../_free_r_t_o_s___d_h_c_p_8c.html#afd01819d69ba0723f8e7e4d1323cfa46',1,'FreeRTOS_DHCP.c']]], + ['prvmacresolve_73',['prvMACResolve',['../_free_r_t_o_s___n_d_8c.html#a715747d4e7d10e9553fecde26dd35116',1,'FreeRTOS_ND.c']]], + ['prvmakesuresocketisbound_74',['prvMakeSureSocketIsBound',['../_free_r_t_o_s___sockets_8c.html#a3c30950fb7db5b68e0c4dcbbf838049b',1,'FreeRTOS_Sockets.c']]], + ['prvndcachelookup_75',['prvNDCacheLookup',['../_free_r_t_o_s___n_d_8c.html#a74b412decde4b6f0a0e077e52484c6fe',1,'FreeRTOS_ND.c']]], + ['prvpacketbuffer_5fto_5fnetworkbuffer_76',['prvPacketBuffer_to_NetworkBuffer',['../_free_r_t_o_s___i_p___utils_8c.html#afb009e3856db87301868748c1732f74d',1,'FreeRTOS_IP_Utils.c']]], + ['prvpreparelookup_77',['prvPrepareLookup',['../_free_r_t_o_s___d_n_s_8c.html#a6518b8b614c65029b30532e54d2052fc',1,'FreeRTOS_DNS.c']]], + ['prvprocessdhcpreplies_78',['prvProcessDHCPReplies',['../_free_r_t_o_s___d_h_c_p_8c.html#a5895b8785a72504d303bf90c16101e48',1,'FreeRTOS_DHCP.c']]], + ['prvprocessethernetpacket_79',['prvProcessEthernetPacket',['../_free_r_t_o_s___i_p_8c.html#abbd5bae218c03d5d539d8f2fa8148a87',1,'FreeRTOS_IP.c']]], + ['prvprocessicmpechoreply_80',['prvProcessICMPEchoReply',['../_free_r_t_o_s___i_c_m_p_8c.html#a32da36155e505f3243fcd7be1caf69d5',1,'FreeRTOS_ICMP.c']]], + ['prvprocessicmpechorequest_81',['prvProcessICMPEchoRequest',['../_free_r_t_o_s___i_c_m_p_8c.html#a50504a5bd6ca5c1c9fd77b160795cde7',1,'FreeRTOS_ICMP.c']]], + ['prvprocessicmpmessage_5fipv6_82',['prvProcessICMPMessage_IPv6',['../_free_r_t_o_s___n_d_8c.html#a22a9131182e83781ae248fb18c70fcd9',1,'FreeRTOS_ND.c']]], + ['prvprocessipeventsandtimers_83',['prvProcessIPEventsAndTimers',['../_free_r_t_o_s___i_p_8c.html#ac743ac4ccc77c6251f5901abc2c48267',1,'FreeRTOS_IP.c']]], + ['prvprocessippacket_84',['prvProcessIPPacket',['../_free_r_t_o_s___i_p_8c.html#ada7f0aa301b6d02b6b4e1ff991aa09d7',1,'FreeRTOS_IP.c']]], + ['prvprocessnetworkdownevent_85',['prvProcessNetworkDownEvent',['../_free_r_t_o_s___i_p___utils_8c.html#a9fceb7bed81db2c40bf5418ee888b262',1,'FreeRTOS_IP_Utils.c']]], + ['prvprocessudppacket_86',['prvProcessUDPPacket',['../_free_r_t_o_s___i_p_8c.html#a941a2039c0e5ab007dc585ee34ee07a3',1,'FreeRTOS_IP.c']]], + ['prvreaddnscache_87',['prvReadDNSCache',['../_free_r_t_o_s___d_n_s___cache_8c.html#a8102346f8707f5c472feeeeeae432c64',1,'FreeRTOS_DNS_Cache.c']]], + ['prvreadsackoption_88',['prvReadSackOption',['../_free_r_t_o_s___t_c_p___reception_8c.html#a4fcd8c12ef21afe4e11a89a31b74404b',1,'FreeRTOS_TCP_Reception.c']]], + ['prvrecvdata_89',['prvRecvData',['../_free_r_t_o_s___sockets_8c.html#a5af9048971743e96f7883cb4acfe84c6',1,'FreeRTOS_Sockets.c']]], + ['prvrecvfrom_5fcopypacket_90',['prvRecvFrom_CopyPacket',['../_free_r_t_o_s___sockets_8c.html#a968e60c476fdbd3f7eeaa7c50480c82f',1,'FreeRTOS_Sockets.c']]], + ['prvrecvfromwaitforpacket_91',['prvRecvFromWaitForPacket',['../_free_r_t_o_s___sockets_8c.html#aa1b36baae58aef58b9375eab39aee05a',1,'FreeRTOS_Sockets.c']]], + ['prvrecvwait_92',['prvRecvWait',['../_free_r_t_o_s___sockets_8c.html#a9a47721c702156a1c39d2720a4fe0ff6',1,'FreeRTOS_Sockets.c']]], + ['prvreturnicmp_5fipv6_93',['prvReturnICMP_IPv6',['../_free_r_t_o_s___n_d_8c.html#a9462f6e1f9c7d1bf8c5d69b1f298b9b5',1,'FreeRTOS_ND.c']]], + ['prvsendbuffer_94',['prvSendBuffer',['../_free_r_t_o_s___d_n_s_8c.html#ab33866cbc083796274436528d88b5e3b',1,'FreeRTOS_DNS.c']]], + ['prvsenddata_95',['prvSendData',['../_free_r_t_o_s___t_c_p___transmission_8c.html#a99b74fbac3fa3e96746fa265b62850fa',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvsenddhcpdiscover_96',['prvSendDHCPDiscover',['../_free_r_t_o_s___d_h_c_p_8c.html#ab94b9256542eb20bfe564d367c6479e2',1,'FreeRTOS_DHCP.c']]], + ['prvsenddhcpmessage_97',['prvSendDHCPMessage',['../_free_r_t_o_s___d_h_c_pv6_8c.html#aa00571049a21829c368dfe6c8d51dedb',1,'FreeRTOS_DHCPv6.c']]], + ['prvsenddhcprequest_98',['prvSendDHCPRequest',['../_free_r_t_o_s___d_h_c_p_8c.html#a8d8bac6f7c4233ab1e50c0e36ccb58bb',1,'FreeRTOS_DHCP.c']]], + ['prvsendto_5factualsend_99',['prvSendTo_ActualSend',['../_free_r_t_o_s___sockets_8c.html#aabcf8754bba9ed01cbbf0d90723c7e61',1,'FreeRTOS_Sockets.c']]], + ['prvsendudppacket_100',['prvSendUDPPacket',['../_free_r_t_o_s___sockets_8c.html#a8ffa669a1f194a3dbe1d5c07bc21633e',1,'FreeRTOS_Sockets.c']]], + ['prvsetchecksuminpacket_101',['prvSetChecksumInPacket',['../_free_r_t_o_s___i_p___utils_8c.html#a6029b5f8145e1d1f7a6682d97deb548c',1,'FreeRTOS_IP_Utils.c']]], + ['prvsetoptioncloseaftersend_102',['prvSetOptionCloseAfterSend',['../_free_r_t_o_s___sockets_8c.html#a439d14826ca9205df14d7c3b785e5a12',1,'FreeRTOS_Sockets.c']]], + ['prvsetoptionlowhighwater_103',['prvSetOptionLowHighWater',['../_free_r_t_o_s___sockets_8c.html#afbd323a0b3912d4dc2f58b8ac9efa4a2',1,'FreeRTOS_Sockets.c']]], + ['prvsetoptionreuselistensocket_104',['prvSetOptionReuseListenSocket',['../_free_r_t_o_s___sockets_8c.html#a2b41be08f398d5b8109d5a426ab45a2f',1,'FreeRTOS_Sockets.c']]], + ['prvsetoptions_105',['prvSetOptions',['../_free_r_t_o_s___t_c_p___transmission_8c.html#ab577a58c3cb609f3951777845581c06c',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvsetoptionsetfullsize_106',['prvSetOptionSetFullSize',['../_free_r_t_o_s___sockets_8c.html#aac19c7777a5cefe192dbd367a2aaf040',1,'FreeRTOS_Sockets.c']]], + ['prvsetoptionstoprx_107',['prvSetOptionStopRX',['../_free_r_t_o_s___sockets_8c.html#a79f327cc632083fa5add6e0216de812d',1,'FreeRTOS_Sockets.c']]], + ['prvsetoptiontcpwindows_108',['prvSetOptionTCPWindows',['../_free_r_t_o_s___sockets_8c.html#a6bb4ab97c34d949b5914ccfb386120b5',1,'FreeRTOS_Sockets.c']]], + ['prvsetoptiontimeout_109',['prvSetOptionTimeout',['../_free_r_t_o_s___sockets_8c.html#ad7a15db6b6f3f2b505f9ca93874ef4e8',1,'FreeRTOS_Sockets.c']]], + ['prvsetsynackoptions_110',['prvSetSynAckOptions',['../_free_r_t_o_s___t_c_p___transmission_8c.html#a0afda6d47aedbb3e2b57bf62cc7a96fc',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvsinglesteptcpheaderoptions_111',['prvSingleStepTCPHeaderOptions',['../_free_r_t_o_s___t_c_p___reception_8c.html#a87834ef749fe4fc672f0bc76575db2d3',1,'FreeRTOS_TCP_Reception.c']]], + ['prvsocketbindadd_112',['prvSocketBindAdd',['../_free_r_t_o_s___sockets_8c.html#a3d826bd199228a7b7411b0d73c3068c5',1,'FreeRTOS_Sockets.c']]], + ['prvsocketsetmss_113',['prvSocketSetMSS',['../_free_r_t_o_s___t_c_p___utils_8c.html#a1cfb008d1b7a0da95f9907b536af9f14',1,'FreeRTOS_TCP_Utils.c']]], + ['prvsocketsetmss_5fipv4_114',['prvSocketSetMSS_IPV4',['../_free_r_t_o_s___t_c_p___utils___i_pv4_8c.html#a5b889490485f8f333603b2d950ca17e6',1,'FreeRTOS_TCP_Utils_IPv4.c']]], + ['prvsocketsetmss_5fipv6_115',['prvSocketSetMSS_IPV6',['../_free_r_t_o_s___t_c_p___utils___i_pv6_8c.html#a2291c5b8672ffad2b3d3999c5c2f5690',1,'FreeRTOS_TCP_Utils_IPv6.c']]], + ['prvsockopt_5fso_5fbuffer_116',['prvSockopt_so_buffer',['../_free_r_t_o_s___sockets_8c.html#a43126375c017bf52614bff3f1702d1b1',1,'FreeRTOS_Sockets.c']]], + ['prvstartlookup_117',['prvStartLookup',['../_free_r_t_o_s___u_d_p___i_pv6_8c.html#a2c258ac270f8ee3e64deccf8ae6856b1',1,'FreeRTOS_UDP_IPv6.c']]], + ['prvstorerxdata_118',['prvStoreRxData',['../_free_r_t_o_s___t_c_p___reception_8c.html#a487796a6eddaa24e9ece51d661a8b34b',1,'FreeRTOS_TCP_Reception.c']]], + ['prvtcpaddtxdata_119',['prvTCPAddTxData',['../_free_r_t_o_s___t_c_p___transmission_8c.html#a5b9ad490c427652182bfe046f048f8ff',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcpbufferresize_120',['prvTCPBufferResize',['../_free_r_t_o_s___t_c_p___transmission_8c.html#aa090f2ad2506d8e3336fc6f63278feb5',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcpconnectstart_121',['prvTCPConnectStart',['../_free_r_t_o_s___sockets_8c.html#a5d910cb9c6b4f63d7f8a75cd1ed7fa62',1,'FreeRTOS_Sockets.c']]], + ['prvtcpcreatestream_122',['prvTCPCreateStream',['../_free_r_t_o_s___sockets_8c.html#a6fbe49f69aeaa10ff6d5d7d2cc82c71d',1,'FreeRTOS_Sockets.c']]], + ['prvtcpcreatewindow_123',['prvTCPCreateWindow',['../_free_r_t_o_s___t_c_p___transmission_8c.html#ab6e6f04f594cde189d5602323d95f3ed',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcphandlefin_124',['prvTCPHandleFin',['../_free_r_t_o_s___t_c_p___state___handling_8c.html#aed19306eb74e28863615dd7be8e2e1a7',1,'FreeRTOS_TCP_State_Handling.c']]], + ['prvtcphandlestate_125',['prvTCPHandleState',['../_free_r_t_o_s___t_c_p___state___handling_8c.html#ab9bdd210a90bd874dfbac809478edc93',1,'FreeRTOS_TCP_State_Handling.c']]], + ['prvtcpmakesureprepared_126',['prvTCPMakeSurePrepared',['../_free_r_t_o_s___t_c_p___transmission_8c.html#a3ea0dd4d630dc26f7eb5b2db32b4616b',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcpnexttimeout_127',['prvTCPNextTimeout',['../_free_r_t_o_s___t_c_p___i_p_8c.html#a74961b17b29f2fb0f4c8fa02222e6f96',1,'FreeRTOS_TCP_IP.c']]], + ['prvtcpprepareconnect_128',['prvTCPPrepareConnect',['../_free_r_t_o_s___t_c_p___transmission_8c.html#a259d393932637c52fd7e1eb22c10b3c6',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcpprepareconnect_5fipv4_129',['prvTCPPrepareConnect_IPV4',['../_free_r_t_o_s___t_c_p___transmission___i_pv4_8c.html#a1ec21137a6005e062b42da18187aabc7',1,'FreeRTOS_TCP_Transmission_IPv4.c']]], + ['prvtcpprepareconnect_5fipv6_130',['prvTCPPrepareConnect_IPV6',['../_free_r_t_o_s___t_c_p___transmission___i_pv6_8c.html#a550ee4284529cace9688b6859c47028e',1,'FreeRTOS_TCP_Transmission_IPv6.c']]], + ['prvtcppreparesend_131',['prvTCPPrepareSend',['../_free_r_t_o_s___t_c_p___transmission_8c.html#a4d4b994a274e87b07332b08353137ea5',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcpreturn_5fchecktcpwindow_132',['prvTCPReturn_CheckTCPWindow',['../_free_r_t_o_s___t_c_p___transmission_8c.html#acce20ac8db15356bd8a29f60ea781036',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcpreturn_5fsetendpoint_133',['prvTCPReturn_SetEndPoint',['../_free_r_t_o_s___t_c_p___transmission_8c.html#a4b27f066e7154969436da6382b624baa',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcpreturn_5fsetsequencenumber_134',['prvTCPReturn_SetSequenceNumber',['../_free_r_t_o_s___t_c_p___transmission_8c.html#a3ab78a8fa1dbfc0a793a5abf60ebc407',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcpreturnpacket_135',['prvTCPReturnPacket',['../_free_r_t_o_s___t_c_p___transmission_8c.html#a32cb0d2de80d881f555d3191973ccd69',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcpreturnpacket_5fipv4_136',['prvTCPReturnPacket_IPV4',['../_free_r_t_o_s___t_c_p___transmission___i_pv4_8c.html#a0bfe889893e2b82a09ea5c3e1b665e70',1,'FreeRTOS_TCP_Transmission_IPv4.c']]], + ['prvtcpreturnpacket_5fipv6_137',['prvTCPReturnPacket_IPV6',['../_free_r_t_o_s___t_c_p___transmission___i_pv6_8c.html#a80cdd0fd9ce235f33b2508791cfb4321',1,'FreeRTOS_TCP_Transmission_IPv6.c']]], + ['prvtcpsendchallengeack_138',['prvTCPSendChallengeAck',['../_free_r_t_o_s___t_c_p___transmission_8c.html#aa9067b98a7ea9cc43c47c37301b87e15',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcpsendcheck_139',['prvTCPSendCheck',['../_free_r_t_o_s___sockets_8c.html#ad719999c8bcbddf392affdeb6be2f554',1,'FreeRTOS_Sockets.c']]], + ['prvtcpsendloop_140',['prvTCPSendLoop',['../_free_r_t_o_s___sockets_8c.html#a5a888764ddebf603eab643dc1655fe54',1,'FreeRTOS_Sockets.c']]], + ['prvtcpsendpacket_141',['prvTCPSendPacket',['../_free_r_t_o_s___t_c_p___transmission_8c.html#a59dbafb65b4cae84ca1a1b38f9f099fc',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcpsendrepeated_142',['prvTCPSendRepeated',['../_free_r_t_o_s___t_c_p___transmission_8c.html#a2b21901fdf5e29d55fa151a2f0d05f10',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcpsendreset_143',['prvTCPSendReset',['../_free_r_t_o_s___t_c_p___transmission_8c.html#a8bec9dce69a957e333a0294f95d8d3ab',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcpsendspecialpackethelper_144',['prvTCPSendSpecialPacketHelper',['../_free_r_t_o_s___t_c_p___transmission_8c.html#a53ecf89c3a0fc87aa1e5781bf47f88d9',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcpsendspecialpkthelper_5fipv4_145',['prvTCPSendSpecialPktHelper_IPV4',['../_free_r_t_o_s___t_c_p___transmission___i_pv4_8c.html#ad9a7a44c7c8dd5ca463f9ac031f286fb',1,'FreeRTOS_TCP_Transmission_IPv4.c']]], + ['prvtcpsendspecialpkthelper_5fipv6_146',['prvTCPSendSpecialPktHelper_IPV6',['../_free_r_t_o_s___t_c_p___transmission___i_pv6_8c.html#a2a925b719c561bd0cacf5cec06ffcb7c',1,'FreeRTOS_TCP_Transmission_IPv6.c']]], + ['prvtcpsetsocketcount_147',['prvTCPSetSocketCount',['../_free_r_t_o_s___sockets_8c.html#a91064db1bf7a4b1f49922c8f9927c701',1,'FreeRTOS_Sockets.c']]], + ['prvtcpsocketcopy_148',['prvTCPSocketCopy',['../_free_r_t_o_s___t_c_p___state___handling_8c.html#abd1c671cd3f1b583d6211bfac1117879',1,'FreeRTOS_TCP_State_Handling.c']]], + ['prvtcpsocketisactive_149',['prvTCPSocketIsActive',['../_free_r_t_o_s___t_c_p___state___handling_8c.html#aafd1394d32f3af98d7926aad2039eb0a',1,'FreeRTOS_TCP_State_Handling.c']]], + ['prvtcptouchsocket_150',['prvTCPTouchSocket',['../_free_r_t_o_s___t_c_p___i_p_8c.html#a51ac6964f3af632cb82f7710ad2bc923',1,'FreeRTOS_TCP_IP.c']]], + ['prvtcpwindowfastretransmit_151',['prvTCPWindowFastRetransmit',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#ac472739d521ae909bade3efb8c1678d1',1,'FreeRTOS_TCP_WIN.c']]], + ['prvtcpwindowrx_5fexpectedrx_152',['prvTCPWindowRx_ExpectedRX',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a5b2f973302c6679c82282dff85d56194',1,'FreeRTOS_TCP_WIN.c']]], + ['prvtcpwindowrx_5funexpectedrx_153',['prvTCPWindowRx_UnexpectedRX',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a7817bd772d0e4c3b6b74735bc545e173',1,'FreeRTOS_TCP_WIN.c']]], + ['prvtcpwindowtxadd_5ffrontsegment_154',['prvTCPWindowTxAdd_FrontSegment',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a11f481e535cab78b441dce33e0284d18',1,'FreeRTOS_TCP_WIN.c']]], + ['prvtcpwindowtxcheckack_155',['prvTCPWindowTxCheckAck',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#ac97053985dc382025116f6a528ace15e',1,'FreeRTOS_TCP_WIN.c']]], + ['prvtcpwindowtxcheckack_5fcalcsrtt_156',['prvTCPWindowTxCheckAck_CalcSRTT',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#aaeabad7a3a395442aab37b86b7b1699d',1,'FreeRTOS_TCP_WIN.c']]], + ['prvtcpwindowtxhasspace_157',['prvTCPWindowTxHasSpace',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a633c1b1230a3c8c269c1af1a0fda8eb8',1,'FreeRTOS_TCP_WIN.c']]], + ['prvupdatecacheentry_158',['prvUpdateCacheEntry',['../_free_r_t_o_s___d_n_s___cache_8c.html#a4ec9234ed4ce9c9c645b600a8e5f62a9',1,'FreeRTOS_DNS_Cache.c']]], + ['prvvalidsocket_159',['prvValidSocket',['../_free_r_t_o_s___sockets_8c.html#a4328ec58511a541031cc6a60da027ab4',1,'FreeRTOS_Sockets.c']]], + ['prvwinscalefactor_160',['prvWinScaleFactor',['../_free_r_t_o_s___t_c_p___transmission_8c.html#aed3d321465a45d65a96c7762cd5a8612',1,'FreeRTOS_TCP_Transmission.c']]], + ['pucbitconfig_5fpeek_5flast_5findex_5fuc_161',['pucBitConfig_peek_last_index_uc',['../_free_r_t_o_s___bit_config_8c.html#a0a2be6de526e1d51f6bb3b303506046e',1,'FreeRTOS_BitConfig.c']]], + ['pvptr_162',['pvPtr',['../unionu_int_ptr.html#ad5791ac701fbbb370d268398d0619762',1,'uIntPtr']]], + ['pvsocketgetsocketid_163',['pvSocketGetSocketID',['../_free_r_t_o_s___sockets_8c.html#a6b7918fd359b3f0f5b6af0e233c831b0',1,'FreeRTOS_Sockets.c']]], + ['pxduplicatenetworkbufferwithdescriptor_164',['pxDuplicateNetworkBufferWithDescriptor',['../_free_r_t_o_s___i_p___utils_8c.html#ae2d3f7986eb4951bfe67a9fd5506f6f0',1,'FreeRTOS_IP_Utils.c']]], + ['pxeasyfit_165',['pxEasyFit',['../_free_r_t_o_s___routing_8c.html#a9b58bea49b0ffe6840b79028840cc8ef',1,'FreeRTOS_Routing.c']]], + ['pxfindlocalendpoint_166',['pxFindLocalEndpoint',['../_free_r_t_o_s___n_d_8c.html#a6297d8254ece5d6cfed45407695c13db',1,'FreeRTOS_ND.c']]], + ['pxgetendpoint_167',['pxGetEndpoint',['../_free_r_t_o_s___u_d_p___i_pv6_8c.html#a82489d1e5914a9d10ee673578d6b37b5',1,'FreeRTOS_UDP_IPv6.c']]], + ['pxgetsocketendpoint_168',['pxGetSocketEndpoint',['../_free_r_t_o_s___routing_8c.html#a57751b4766afd1d047cb15e63e1078d9',1,'FreeRTOS_Routing.c']]], + ['pxlistfindlistitemwithvalue_169',['pxListFindListItemWithValue',['../_free_r_t_o_s___sockets_8c.html#a0788754fab0379fd522b0ff849692fc4',1,'FreeRTOS_Sockets.c']]], + ['pxnetworkendpoints_170',['pxNetworkEndPoints',['../_free_r_t_o_s___routing_8c.html#a9e0e237074363992acb79a751205c716',1,'FreeRTOS_Routing.c']]], + ['pxnetworkinterfaces_171',['pxNetworkInterfaces',['../_free_r_t_o_s___routing_8c.html#a25ac7e4226a53d6f82785dacbd2576ad',1,'FreeRTOS_Routing.c']]], + ['pxnew_5faddrinfo_172',['pxNew_AddrInfo',['../_free_r_t_o_s___d_n_s_8c.html#a23c3f105cd946cc194c3f7e340868faf',1,'FreeRTOS_DNS.c']]], + ['pxtcpsocketlookup_173',['pxTCPSocketLookup',['../_free_r_t_o_s___sockets_8c.html#a42c75219e2e081ac86770124f07cfd36',1,'FreeRTOS_Sockets.c']]], + ['pxtcpsocketlookup_5fipv6_174',['pxTCPSocketLookup_IPv6',['../_free_r_t_o_s___i_pv6___sockets_8c.html#a939cc79a6128358461eb6893b42a5f40',1,'FreeRTOS_IPv6_Sockets.c']]], + ['pxtcpwindowtx_5fgettxqueue_175',['pxTCPWindowTx_GetTXQueue',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a909bd08b00a92736219230045de9f90c',1,'FreeRTOS_TCP_WIN.c']]], + ['pxtcpwindowtx_5fgetwaitqueue_176',['pxTCPWindowTx_GetWaitQueue',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a3f10516b034b040a345d3a6888d045b2',1,'FreeRTOS_TCP_WIN.c']]], + ['pxudppayloadbuffer_5fto_5fnetworkbuffer_177',['pxUDPPayloadBuffer_to_NetworkBuffer',['../_free_r_t_o_s___i_p___utils_8c.html#a6d4a72619efccc84678a0ff7f1468a73',1,'FreeRTOS_IP_Utils.c']]], + ['pxudpsocketlookup_178',['pxUDPSocketLookup',['../_free_r_t_o_s___sockets_8c.html#ac3bf0f1817a52cf72307092b6e5cdcbf',1,'FreeRTOS_Sockets.c']]] +]; diff --git a/V4.3.1/search/all_c.js b/V4.3.1/search/all_c.js new file mode 100644 index 000000000..f6238b050 --- /dev/null +++ b/V4.3.1/search/all_c.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['radefault_5fhop_5flimit_0',['raDEFAULT_HOP_LIMIT',['../_free_r_t_o_s___r_a_8c.html#ad3e8638ba23cd89dcef776cbde7f8be8',1,'FreeRTOS_RA.c']]], + ['radefault_5fversion_5ftraffic_5fclass_1',['raDEFAULT_VERSION_TRAFFIC_CLASS',['../_free_r_t_o_s___r_a_8c.html#a64f6e851b8ba36afc3c50f63f7c41ad4',1,'FreeRTOS_RA.c']]], + ['radont_5fblock_2',['raDONT_BLOCK',['../_free_r_t_o_s___r_a_8c.html#a177eafe875e5db43a464518a5a271b10',1,'FreeRTOS_RA.c']]], + ['rmatch_5fcount_3',['rMATCH_COUNT',['../_free_r_t_o_s___routing_8c.html#a3b872118875520c3c39bbf031807dacc',1,'FreeRTOS_Routing.c']]], + ['rmatch_5fip_5faddr_4',['rMATCH_IP_ADDR',['../_free_r_t_o_s___routing_8c.html#a557d11bb3248b5c9c8b1630986e84ee5',1,'FreeRTOS_Routing.c']]], + ['rmatch_5fip_5ftype_5',['rMATCH_IP_TYPE',['../_free_r_t_o_s___routing_8c.html#a9272cef99c4d69ae2db27b62d6bb9f1c',1,'FreeRTOS_Routing.c']]], + ['rmatch_5fipv6_5ftype_6',['rMATCH_IPv6_TYPE',['../_free_r_t_o_s___routing_8c.html#ae9932df0b0d50188d5f2149db58ee145',1,'FreeRTOS_Routing.c']]], + ['rmatch_5fmac_5faddr_7',['rMATCH_MAC_ADDR',['../_free_r_t_o_s___routing_8c.html#aefd90a93e3218a0fe39f3ede0c283d1b',1,'FreeRTOS_Routing.c']]] +]; diff --git a/V4.3.1/search/all_d.js b/V4.3.1/search/all_d.js new file mode 100644 index 000000000..991af0acf --- /dev/null +++ b/V4.3.1/search/all_d.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['sock100_5fpercent_0',['sock100_PERCENT',['../_free_r_t_o_s___sockets_8c.html#a67b2a67aa4db57cbda7a7150eb4f58f6',1,'FreeRTOS_Sockets.c']]], + ['sock20_5fpercent_1',['sock20_PERCENT',['../_free_r_t_o_s___sockets_8c.html#a68795ded8df36253a9ae4a48f728f863',1,'FreeRTOS_Sockets.c']]], + ['sock80_5fpercent_2',['sock80_PERCENT',['../_free_r_t_o_s___sockets_8c.html#a63599b39bbf9eea1e37fcbb06035027d',1,'FreeRTOS_Sockets.c']]], + ['sockdigit_5fcount_3',['sockDIGIT_COUNT',['../_free_r_t_o_s___sockets_8c.html#ad93067b1b641f4859cd5501786573802',1,'FreeRTOS_Sockets.c']]], + ['socketauto_5fport_5fallocation_5fmax_5fnumber_4',['socketAUTO_PORT_ALLOCATION_MAX_NUMBER',['../_free_r_t_o_s___sockets_8c.html#a3319ecf6f85a2b64a8d48396e0279e24',1,'FreeRTOS_Sockets.c']]], + ['socketauto_5fport_5fallocation_5fstart_5fnumber_5',['socketAUTO_PORT_ALLOCATION_START_NUMBER',['../_free_r_t_o_s___sockets_8c.html#a350b6e0f49c270cb5c13c6aeeae116af',1,'FreeRTOS_Sockets.c']]], + ['socketdont_5fblock_6',['socketDONT_BLOCK',['../_free_r_t_o_s___sockets_8c.html#a42f8714f024edfbb0a683d31d2ee7e60',1,'FreeRTOS_Sockets.c']]], + ['socketget_5fsocket_5fport_7',['socketGET_SOCKET_PORT',['../_free_r_t_o_s___sockets_8c.html#ab3a0b0023a907a0cff7dc53d226f80cd',1,'FreeRTOS_Sockets.c']]], + ['socketmax_5fip_5faddress_5foctets_8',['socketMAX_IP_ADDRESS_OCTETS',['../_free_r_t_o_s___i_pv4___sockets_8c.html#afc265c349a43891cb7ab972fd58630e9',1,'FreeRTOS_IPv4_Sockets.c']]], + ['socketset_5fsocket_5fport_9',['socketSET_SOCKET_PORT',['../_free_r_t_o_s___sockets_8c.html#a8fc4e3506e42e9eef4b51ffd91e665b3',1,'FreeRTOS_Sockets.c']]], + ['socketsocket_5fis_5fbound_10',['socketSOCKET_IS_BOUND',['../_free_r_t_o_s___sockets_8c.html#a2e01dee7309f496afde943fed947729c',1,'FreeRTOS_Sockets.c']]], + ['struct_11',['struct',['../structstruct.html',1,'']]] +]; diff --git a/V4.3.1/search/all_e.js b/V4.3.1/search/all_e.js new file mode 100644 index 000000000..4f286ca89 --- /dev/null +++ b/V4.3.1/search/all_e.js @@ -0,0 +1,44 @@ +var searchData= +[ + ['u16_0',['u16',['../unionx_union32__t.html#aee55b1d19ddd116df459c26eb3ad9e8d',1,'xUnion32_t']]], + ['u16ptr_1',['u16ptr',['../unionx_union_ptr__t.html#a9bd0991c4922785fbcf440f076bf13ec',1,'xUnionPtr_t']]], + ['u32_2',['u32',['../unionx_union32__t.html#aa0a5cf3c0b6f6cdb9d332b6714069341',1,'xUnion32_t']]], + ['u32ptr_3',['u32ptr',['../unionx_union_ptr__t.html#a5de948977f55c988ac641eb87dca3f5f',1,'xUnionPtr_t']]], + ['u8_4',['u8',['../unionx_union32__t.html#a00d29d3d1bbca95c64f014dcc5872b70',1,'xUnion32_t']]], + ['u8ptr_5',['u8ptr',['../unionx_union_ptr__t.html#acd10af48499a41ddaf709eed56669958',1,'xUnionPtr_t']]], + ['ucasciitohex_6',['ucASCIIToHex',['../_free_r_t_o_s___sockets_8c.html#a685a90117d647bdc48393c4c649c758e',1,'FreeRTOS_Sockets.c']]], + ['ucbitconfig_5fread_5f8_7',['ucBitConfig_read_8',['../_free_r_t_o_s___bit_config_8c.html#a0903cf96db1fac03a842bc47bf8de8f2',1,'FreeRTOS_BitConfig.c']]], + ['uintptr_8',['uIntPtr',['../unionu_int_ptr.html',1,'']]], + ['ulbitconfig_5fread_5f32_9',['ulBitConfig_read_32',['../_free_r_t_o_s___bit_config_8c.html#a23344d486c818bcb5d34e1f490195a15',1,'FreeRTOS_BitConfig.c']]], + ['ulchar2u32_10',['ulChar2u32',['../_free_r_t_o_s___i_p___utils_8c.html#ac672cbd6cb4f7131f7d69e3dc125f6c6',1,'FreeRTOS_IP_Utils.c']]], + ['uldnshandlepacket_11',['ulDNSHandlePacket',['../_free_r_t_o_s___d_n_s_8c.html#ae560e9af4e296059183eb6ddbe9458a1',1,'FreeRTOS_DNS.c']]], + ['ulnbnshandlepacket_12',['ulNBNSHandlePacket',['../_free_r_t_o_s___d_n_s_8c.html#a9da21a35903e781448c9d2bc89075beb',1,'FreeRTOS_DNS.c']]], + ['ultcpwindowtxack_13',['ulTCPWindowTxAck',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a4a87a9463c8daa90d88ebf25427f65af',1,'FreeRTOS_TCP_WIN.c']]], + ['ultcpwindowtxget_14',['ulTCPWindowTxGet',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a243b172dce331d908977afee9fceb09e',1,'FreeRTOS_TCP_WIN.c']]], + ['ultcpwindowtxsack_15',['ulTCPWindowTxSack',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a6b8d5c58d868eb5cb47ac185897bc6ab',1,'FreeRTOS_TCP_WIN.c']]], + ['ultimergetage_16',['ulTimerGetAge',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a183f7f0caa41207e80e13fc41c4fdec3',1,'FreeRTOS_TCP_WIN.c']]], + ['usbitconfig_5fread_5f16_17',['usBitConfig_read_16',['../_free_r_t_o_s___bit_config_8c.html#aa0e58c69716ec77da30380e8de3c94cc',1,'FreeRTOS_BitConfig.c']]], + ['uschar2u16_18',['usChar2u16',['../_free_r_t_o_s___i_p___utils_8c.html#af055f7ec0a669b54eb296f2e5f4eecb9',1,'FreeRTOS_IP_Utils.c']]], + ['usclass_19',['usClass',['../structstruct.html#adf285d61ed77b0940467158cdfaf8aa3',1,'struct']]], + ['usexpected_20',['usExpected',['../structx_i_pv6___couple.html#ae3cbda442463373c87fa18a2496c978b',1,'xIPv6_Couple']]], + ['usgeneratechecksum_21',['usGenerateChecksum',['../_free_r_t_o_s___i_p___utils_8c.html#a97162cfd5b071ccee8fec503879a3e43',1,'FreeRTOS_IP_Utils.c']]], + ['usgenerateprotocolchecksum_22',['usGenerateProtocolChecksum',['../_free_r_t_o_s___i_p___utils_8c.html#aee508999401118607a0d886a7d7d9a36',1,'FreeRTOS_IP_Utils.c']]], + ['usgetextensionheaderlength_23',['usGetExtensionHeaderLength',['../_free_r_t_o_s___i_pv6___utils_8c.html#a8d34793d4b80ccbb7e6001ccf026b497',1,'FreeRTOS_IPv6_Utils.c']]], + ['usmask_24',['usMask',['../structx_i_pv6___couple.html#af273f0aa6c14e549136031d809464fea',1,'xIPv6_Couple']]], + ['uspacketidentifier_25',['usPacketIdentifier',['../_free_r_t_o_s___i_p_8c.html#a292a9f76f680f80f60d785e0c7bb20f0',1,'FreeRTOS_IP.c']]], + ['ustype_26',['usType',['../structstruct.html#afa179e4aeb32555362ee66606d2324bd',1,'struct']]], + ['uxfreeentry_27',['uxFreeEntry',['../_free_r_t_o_s___d_n_s___cache_8c.html#ababe64b677b92f07e012fee6558e61ce',1,'FreeRTOS_DNS_Cache.c']]], + ['uxhexprintshort_28',['uxHexPrintShort',['../_free_r_t_o_s___i_pv6___sockets_8c.html#a9698baef39b76df6f98f46de8e07c9ed',1,'FreeRTOS_IPv6_Sockets.c']]], + ['uxipheadersizepacket_29',['uxIPHeaderSizePacket',['../_free_r_t_o_s___i_p_8c.html#a1c793b13fb2695dd07c305662e273a64',1,'FreeRTOS_IP.c']]], + ['uxipheadersizesocket_30',['uxIPHeaderSizeSocket',['../_free_r_t_o_s___i_p_8c.html#aa561be59ef3d1ccddb8c6380cd43baa7',1,'FreeRTOS_IP.c']]], + ['uxptr_31',['uxPtr',['../unionu_int_ptr.html#a0738605db9899fb16c7f7b8bead8a297',1,'uIntPtr']]], + ['uxstreambufferadd_32',['uxStreamBufferAdd',['../_free_r_t_o_s___stream___buffer_8c.html#af5c74e803e5fb43bb7882bf3187f5fcf',1,'FreeRTOS_Stream_Buffer.c']]], + ['uxstreambufferdistance_33',['uxStreamBufferDistance',['../_free_r_t_o_s___stream___buffer_8c.html#ab606ce4d28f3aa0c125af3aed803f510',1,'FreeRTOS_Stream_Buffer.c']]], + ['uxstreambufferfrontspace_34',['uxStreamBufferFrontSpace',['../_free_r_t_o_s___stream___buffer_8c.html#a8121b558e1e9fa812534efda57315944',1,'FreeRTOS_Stream_Buffer.c']]], + ['uxstreambufferget_35',['uxStreamBufferGet',['../_free_r_t_o_s___stream___buffer_8c.html#ae736faef526d29bd3dfe4d381fd4a891',1,'FreeRTOS_Stream_Buffer.c']]], + ['uxstreambuffergetptr_36',['uxStreamBufferGetPtr',['../_free_r_t_o_s___stream___buffer_8c.html#ab95204a861d7aa93466e6f61f00b8b5e',1,'FreeRTOS_Stream_Buffer.c']]], + ['uxstreambuffergetsize_37',['uxStreamBufferGetSize',['../_free_r_t_o_s___stream___buffer_8c.html#ad1eb22b89d0f8c854d0a0de3b1e7cac6',1,'FreeRTOS_Stream_Buffer.c']]], + ['uxstreambuffergetspace_38',['uxStreamBufferGetSpace',['../_free_r_t_o_s___stream___buffer_8c.html#a1cbee110aad308a7d7713e5cf8eebe3d',1,'FreeRTOS_Stream_Buffer.c']]], + ['uxstreambuffermidspace_39',['uxStreamBufferMidSpace',['../_free_r_t_o_s___stream___buffer_8c.html#acc4b614e32cf03ebf273e8fd513b4783',1,'FreeRTOS_Stream_Buffer.c']]], + ['uxstreambufferspace_40',['uxStreamBufferSpace',['../_free_r_t_o_s___stream___buffer_8c.html#a4a692781822e059c63decc2ef29b759b',1,'FreeRTOS_Stream_Buffer.c']]] +]; diff --git a/V4.3.1/search/all_f.js b/V4.3.1/search/all_f.js new file mode 100644 index 000000000..d8f67aa08 --- /dev/null +++ b/V4.3.1/search/all_f.js @@ -0,0 +1,77 @@ +var searchData= +[ + ['varpagecache_0',['vARPAgeCache',['../_free_r_t_o_s___a_r_p_8c.html#a3d3934dd27e4d024ab7a14ed0c80b3cc',1,'FreeRTOS_ARP.c']]], + ['varpgeneraterequestpacket_1',['vARPGenerateRequestPacket',['../_free_r_t_o_s___a_r_p_8c.html#a27861e019fb0f3c1d5579f6806f75b4c',1,'FreeRTOS_ARP.c']]], + ['varpprocesspacketreply_2',['vARPProcessPacketReply',['../_free_r_t_o_s___a_r_p_8c.html#a1b8a842ffc68a87ebd34c4f29de807d3',1,'FreeRTOS_ARP.c']]], + ['varpprocesspacketrequest_3',['vARPProcessPacketRequest',['../_free_r_t_o_s___a_r_p_8c.html#a06d6be4aeae648863fe666c92c62d420',1,'FreeRTOS_ARP.c']]], + ['varprefreshcacheentry_4',['vARPRefreshCacheEntry',['../_free_r_t_o_s___a_r_p_8c.html#afc0f48737ff3f80e204cbe24b0f807e0',1,'FreeRTOS_ARP.c']]], + ['varprefreshcacheentryage_5',['vARPRefreshCacheEntryAge',['../_free_r_t_o_s___a_r_p_8c.html#a858a966c87a449b18045ff5308f8f54f',1,'FreeRTOS_ARP.c']]], + ['varpsendgratuitous_6',['vARPSendGratuitous',['../_free_r_t_o_s___a_r_p_8c.html#aa96d87a3e4505229094bf3d81330c2f4',1,'FreeRTOS_ARP.c']]], + ['vbitconfig_5frelease_7',['vBitConfig_release',['../_free_r_t_o_s___bit_config_8c.html#aa9977d55a7cd242f1bae5f88cfbb3357',1,'FreeRTOS_BitConfig.c']]], + ['vbitconfig_5fwrite_5f16_8',['vBitConfig_write_16',['../_free_r_t_o_s___bit_config_8c.html#a5a7221bc4cdd27a0e96745ee52fb2358',1,'FreeRTOS_BitConfig.c']]], + ['vbitconfig_5fwrite_5f32_9',['vBitConfig_write_32',['../_free_r_t_o_s___bit_config_8c.html#a6dc6b9b15dc8c0899c89ab160c2c252f',1,'FreeRTOS_BitConfig.c']]], + ['vbitconfig_5fwrite_5f8_10',['vBitConfig_write_8',['../_free_r_t_o_s___bit_config_8c.html#a9d380df05b7702d7bee624160853baa1',1,'FreeRTOS_BitConfig.c']]], + ['vbitconfig_5fwrite_5fuc_11',['vBitConfig_write_uc',['../_free_r_t_o_s___bit_config_8c.html#a45f82519839280e1ae7cc1c9b3581ecc',1,'FreeRTOS_BitConfig.c']]], + ['vchecknetworktimers_12',['vCheckNetworkTimers',['../_free_r_t_o_s___i_p___timers_8c.html#a094e952c4bba35a03e8a37e401ff4b57',1,'FreeRTOS_IP_Timers.c']]], + ['vdhcp_5fratimerreload_13',['vDHCP_RATimerReload',['../_free_r_t_o_s___i_p___timers_8c.html#a42ca8342ff3e2727a4d1a8b6273f299f',1,'FreeRTOS_IP_Timers.c']]], + ['vdhcpprocess_14',['vDHCPProcess',['../_free_r_t_o_s___d_h_c_p_8c.html#add3cf34536127a3ffdb92f242390060c',1,'FreeRTOS_DHCP.c']]], + ['vdhcpprocessendpoint_15',['vDHCPProcessEndPoint',['../_free_r_t_o_s___d_h_c_p_8c.html#a6fcaea200a3cd7e9640374032a6ed1cd',1,'FreeRTOS_DHCP.c']]], + ['vdhcpstop_16',['vDHCPStop',['../_free_r_t_o_s___d_h_c_p_8c.html#a2122e72054875e3bfe94452c43d90e85',1,'FreeRTOS_DHCP.c']]], + ['vdhcpv6process_17',['vDHCPv6Process',['../_free_r_t_o_s___d_h_c_pv6_8c.html#a34ae49ff66a5de7cced4d19caaee57ec',1,'FreeRTOS_DHCPv6.c']]], + ['vdhcpv6processendpoint_18',['vDHCPv6ProcessEndPoint',['../_free_r_t_o_s___d_h_c_pv6_8c.html#aaada0e7b3d7a1ad210e2b4b99fcadc05',1,'FreeRTOS_DHCPv6.c']]], + ['vdhcpv6processendpoint_5fhandlereply_19',['vDHCPv6ProcessEndPoint_HandleReply',['../_free_r_t_o_s___d_h_c_pv6_8c.html#a162cef8b34cdb145c6f04eacd7c47d9d',1,'FreeRTOS_DHCPv6.c']]], + ['vdhcpv6stop_20',['vDHCPv6Stop',['../_free_r_t_o_s___d_h_c_pv6_8c.html#a6fe4f9c34d48f621c03a78ec5051eba7',1,'FreeRTOS_DHCPv6.c']]], + ['vdnscallbackinitialise_21',['vDNSCallbackInitialise',['../_free_r_t_o_s___d_n_s___callback_8c.html#a045787d12f1c57117eb3b6a1e70499a2',1,'FreeRTOS_DNS_Callback.c']]], + ['vdnscheckcallback_22',['vDNSCheckCallBack',['../_free_r_t_o_s___d_n_s___callback_8c.html#a492ba3e0cfc6bb68ca22ec7015909cdc',1,'FreeRTOS_DNS_Callback.c']]], + ['vdnsinitialise_23',['vDNSInitialise',['../_free_r_t_o_s___d_n_s_8c.html#ad8cd6ab9c87ad7e087c0ec09b118c9b7',1,'FreeRTOS_DNS.c']]], + ['vdnstimerreload_24',['vDNSTimerReload',['../_free_r_t_o_s___i_p___timers_8c.html#a935211aa53fac1562f9d9f6f6c9216b8',1,'FreeRTOS_IP_Timers.c']]], + ['vhandlewaitingacknowledge_25',['vHandleWaitingAcknowledge',['../_free_r_t_o_s___d_h_c_p_8c.html#a650dd014ad7c6f2129a387a0ae05ada8',1,'FreeRTOS_DHCP.c']]], + ['vipnetworkupcalls_26',['vIPNetworkUpCalls',['../_free_r_t_o_s___i_p_8c.html#a7f11e2247de87d191b677c4e029af2eb',1,'FreeRTOS_IP.c']]], + ['vipsetdhcp_5fratimerenablestate_27',['vIPSetDHCP_RATimerEnableState',['../_free_r_t_o_s___i_p___timers_8c.html#ac28ee1667378c9200e3a3c307333be5a',1,'FreeRTOS_IP_Timers.c']]], + ['vipsetdnstimerenablestate_28',['vIPSetDNSTimerEnableState',['../_free_r_t_o_s___i_p___timers_8c.html#a7fd438c527ffcfce00b972c96e5f7c63',1,'FreeRTOS_IP_Timers.c']]], + ['vipsettcptimerexpiredstate_29',['vIPSetTCPTimerExpiredState',['../_free_r_t_o_s___i_p___timers_8c.html#a09993c1ed00c08d7fa626fcb8e3f4cee',1,'FreeRTOS_IP_Timers.c']]], + ['vlistinsertfifo_30',['vListInsertFifo',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a868e38d1df123d9c14f49634cfe6a90a',1,'FreeRTOS_TCP_WIN.c']]], + ['vlistinsertgeneric_31',['vListInsertGeneric',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a3e4f1f4f8a58b903fbedd51e849de1eb',1,'FreeRTOS_TCP_WIN.c']]], + ['vmanagesolicitednodeaddress_32',['vManageSolicitedNodeAddress',['../_free_r_t_o_s___i_pv6___utils_8c.html#a314db95ced81a5fd4b18a52668e82aec',1,'FreeRTOS_IPv6_Utils.c']]], + ['vndagecache_33',['vNDAgeCache',['../_free_r_t_o_s___n_d_8c.html#a690e13619aae09f4a0319f7496c55397',1,'FreeRTOS_ND.c']]], + ['vndrefreshcacheentry_34',['vNDRefreshCacheEntry',['../_free_r_t_o_s___n_d_8c.html#a76f0c03919c7d846af63888edc90eff9',1,'FreeRTOS_ND.c']]], + ['vndsendneighboursolicitation_35',['vNDSendNeighbourSolicitation',['../_free_r_t_o_s___n_d_8c.html#a4119410fff19474ea4a09719cd02f6f5',1,'FreeRTOS_ND.c']]], + ['vndsendroutersolicitation_36',['vNDSendRouterSolicitation',['../_free_r_t_o_s___r_a_8c.html#a0cd38e09b6b7b38caa4addd1d23f4347',1,'FreeRTOS_RA.c']]], + ['vndsendunsolicited_37',['vNDSendUnsolicited',['../_free_r_t_o_s___n_d_8c.html#a9ea39836584bb43dbc942adb4fbd0415',1,'FreeRTOS_ND.c']]], + ['vnetworksocketsinit_38',['vNetworkSocketsInit',['../_free_r_t_o_s___sockets_8c.html#a4143378ec838cd340efd7f95b30444a5',1,'FreeRTOS_Sockets.c']]], + ['vnetworktimerreload_39',['vNetworkTimerReload',['../_free_r_t_o_s___i_p___timers_8c.html#a51ea6bb700b2ce45142aae1a5035d85e',1,'FreeRTOS_IP_Timers.c']]], + ['void_5fptr_5fto_5fuintptr_40',['void_ptr_to_uintptr',['../_free_r_t_o_s___i_p___utils_8c.html#a3a5273b63c9ff3e2d6bf9741bee6b8ff',1,'FreeRTOS_IP_Utils.c']]], + ['vprecheckconfigs_41',['vPreCheckConfigs',['../_free_r_t_o_s___i_p___utils_8c.html#a13b85ba0f6d16425960f9a9b5249dab9',1,'FreeRTOS_IP_Utils.c']]], + ['vprocessgeneratedudppacket_42',['vProcessGeneratedUDPPacket',['../_free_r_t_o_s___u_d_p___i_p_8c.html#a033394b01fa7d80e6393ea272a31814b',1,'FreeRTOS_UDP_IP.c']]], + ['vprocessgeneratedudppacket_5fipv4_43',['vProcessGeneratedUDPPacket_IPv4',['../_free_r_t_o_s___u_d_p___i_pv4_8c.html#a2a083b134f9bdd44c437c9bc7e015ed4',1,'FreeRTOS_UDP_IPv4.c']]], + ['vprocessgeneratedudppacket_5fipv6_44',['vProcessGeneratedUDPPacket_IPv6',['../_free_r_t_o_s___u_d_p___i_pv6_8c.html#a31771f6d53d974bd10447872625a5778',1,'FreeRTOS_UDP_IPv6.c']]], + ['vprocesshandleoption_45',['vProcessHandleOption',['../_free_r_t_o_s___d_h_c_p_8c.html#ada2a22c161135c46ee64a26fc2565a15',1,'FreeRTOS_DHCP.c']]], + ['vraprocess_46',['vRAProcess',['../_free_r_t_o_s___r_a_8c.html#a32b2a1fd2f8604edd74b9696e9a97add',1,'FreeRTOS_RA.c']]], + ['vraprocessinit_47',['vRAProcessInit',['../_free_r_t_o_s___r_a_8c.html#ac0ecf713a3988eb2c28eadffb0c97205',1,'FreeRTOS_RA.c']]], + ['vreceivena_48',['vReceiveNA',['../_free_r_t_o_s___r_a_8c.html#aa9a2610031cc65c6a6a6188a5ed89d3d',1,'FreeRTOS_RA.c']]], + ['vreceivera_49',['vReceiveRA',['../_free_r_t_o_s___r_a_8c.html#a3c29833623cc3e120baa63987266da71',1,'FreeRTOS_RA.c']]], + ['vreceivera_5freadreply_50',['vReceiveRA_ReadReply',['../_free_r_t_o_s___r_a_8c.html#afdb01473e646da32f850cac3ca1fc947',1,'FreeRTOS_RA.c']]], + ['vreturnethernetframe_51',['vReturnEthernetFrame',['../_free_r_t_o_s___i_p_8c.html#a5fb218e96c829c263a677428fe4d5d24',1,'FreeRTOS_IP.c']]], + ['vsetallnetworksup_52',['vSetAllNetworksUp',['../_free_r_t_o_s___i_p___timers_8c.html#a703074a1646782a66c0fb9de390da0fb',1,'FreeRTOS_IP_Timers.c']]], + ['vsetmulticastipv4macaddress_53',['vSetMultiCastIPv4MacAddress',['../_free_r_t_o_s___i_pv4___utils_8c.html#af110bcf8c7910fc9149a4a09895efcf4',1,'FreeRTOS_IPv4_Utils.c']]], + ['vsetmulticastipv6macaddress_54',['vSetMultiCastIPv6MacAddress',['../_free_r_t_o_s___i_pv6___utils_8c.html#af37ac08272bb160cd5bee3b5bdf581dc',1,'FreeRTOS_IPv6_Utils.c']]], + ['vsetsocketendpoint_55',['vSetSocketEndpoint',['../_free_r_t_o_s___routing_8c.html#af3a0d7e5a3be793bac33eeb084301449',1,'FreeRTOS_Routing.c']]], + ['vsocketbind_56',['vSocketBind',['../_free_r_t_o_s___sockets_8c.html#add35977107add8357366416d55c64e69',1,'FreeRTOS_Sockets.c']]], + ['vsocketclose_57',['vSocketClose',['../_free_r_t_o_s___sockets_8c.html#afef498fc07f15ceb8828c60decabfbb8',1,'FreeRTOS_Sockets.c']]], + ['vsocketclosenexttime_58',['vSocketCloseNextTime',['../_free_r_t_o_s___t_c_p___i_p_8c.html#a3663f3aa8c64835d9dc23c5209c78fc2',1,'FreeRTOS_TCP_IP.c']]], + ['vsocketlistennexttime_59',['vSocketListenNextTime',['../_free_r_t_o_s___t_c_p___i_p_8c.html#a2ea49984a2c87d90570ed0be8884a0f4',1,'FreeRTOS_TCP_IP.c']]], + ['vsocketselect_60',['vSocketSelect',['../_free_r_t_o_s___sockets_8c.html#a4e52838681336e8b2dcd41298072c764',1,'FreeRTOS_Sockets.c']]], + ['vsocketselecttcp_61',['vSocketSelectTCP',['../_free_r_t_o_s___sockets_8c.html#aa7e52b0ad7fe8b477b09cc4b1a421014',1,'FreeRTOS_Sockets.c']]], + ['vsocketwakeupuser_62',['vSocketWakeUpUser',['../_free_r_t_o_s___sockets_8c.html#a0387edebc3e7bcf7fcf038a01a098213',1,'FreeRTOS_Sockets.c']]], + ['vstreambufferclear_63',['vStreamBufferClear',['../_free_r_t_o_s___stream___buffer_8c.html#a0a7fb82f923be33b784916014fe61c2b',1,'FreeRTOS_Stream_Buffer.c']]], + ['vstreambuffermovemid_64',['vStreamBufferMoveMid',['../_free_r_t_o_s___stream___buffer_8c.html#a0e93a71fcb4ea1e64a3c29b5348e52ec',1,'FreeRTOS_Stream_Buffer.c']]], + ['vtcpaddrxdata_5fstored_65',['vTCPAddRxdata_Stored',['../_free_r_t_o_s___sockets_8c.html#a1ea5cc44cde712f237824b46a2df728e',1,'FreeRTOS_Sockets.c']]], + ['vtcpremovetcpchild_66',['vTCPRemoveTCPChild',['../_free_r_t_o_s___t_c_p___i_p_8c.html#ade1a9dab690a8da963401fc218e5b6f5',1,'FreeRTOS_TCP_IP.c']]], + ['vtcpsegmentcleanup_67',['vTCPSegmentCleanup',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a7dfa9050ace0b44f42ff29badf9a328b',1,'FreeRTOS_TCP_WIN.c']]], + ['vtcpstatechange_68',['vTCPStateChange',['../_free_r_t_o_s___t_c_p___i_p_8c.html#a97d34454b4f1d4b0a4f5e5b998fdf578',1,'FreeRTOS_TCP_IP.c']]], + ['vtcptimerreload_69',['vTCPTimerReload',['../_free_r_t_o_s___i_p___timers_8c.html#a150627ce753809b94f9250a732ae244a',1,'FreeRTOS_IP_Timers.c']]], + ['vtcptimerset_70',['vTCPTimerSet',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a583207662849bc5f15a8c7953eb9352b',1,'FreeRTOS_TCP_WIN.c']]], + ['vtcpwindowdestroy_71',['vTCPWindowDestroy',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a0e8c6e2df2e93c6925a5db3268e54360',1,'FreeRTOS_TCP_WIN.c']]], + ['vtcpwindowfree_72',['vTCPWindowFree',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a2eaaaa2cefae9b44094d0f069e2e486b',1,'FreeRTOS_TCP_WIN.c']]], + ['vtcpwindowinit_73',['vTCPWindowInit',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#acf48d309eda32d86dce923674e49b753',1,'FreeRTOS_TCP_WIN.c']]] +]; diff --git a/V4.3.1/search/classes_0.js b/V4.3.1/search/classes_0.js new file mode 100644 index 000000000..a9e262059 --- /dev/null +++ b/V4.3.1/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['struct_0',['struct',['../structstruct.html',1,'']]] +]; diff --git a/V4.3.1/search/classes_1.js b/V4.3.1/search/classes_1.js new file mode 100644 index 000000000..f94707b2a --- /dev/null +++ b/V4.3.1/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['uintptr_0',['uIntPtr',['../unionu_int_ptr.html',1,'']]] +]; diff --git a/V4.3.1/search/classes_2.js b/V4.3.1/search/classes_2.js new file mode 100644 index 000000000..82f5bed88 --- /dev/null +++ b/V4.3.1/search/classes_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['xipv6_5fcouple_0',['xIPv6_Couple',['../structx_i_pv6___couple.html',1,'']]], + ['xunion32_5ft_1',['xUnion32_t',['../unionx_union32__t.html',1,'']]], + ['xunionptr_5ft_2',['xUnionPtr_t',['../unionx_union_ptr__t.html',1,'']]] +]; diff --git a/V4.3.1/search/close.svg b/V4.3.1/search/close.svg new file mode 100644 index 000000000..a933eea1a --- /dev/null +++ b/V4.3.1/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/V4.3.1/search/defines_0.js b/V4.3.1/search/defines_0.js new file mode 100644 index 000000000..870097b3d --- /dev/null +++ b/V4.3.1/search/defines_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['arpgratuitous_5farp_5fperiod_0',['arpGRATUITOUS_ARP_PERIOD',['../_free_r_t_o_s___a_r_p_8c.html#a7b4eb297ab0d35cfe95b1879495a3d7f',1,'FreeRTOS_ARP.c']]], + ['arpip_5fclash_5fmax_5fretries_1',['arpIP_CLASH_MAX_RETRIES',['../_free_r_t_o_s___a_r_p_8c.html#a6a6df3b8e26c0a0849fa35199c82f714',1,'FreeRTOS_ARP.c']]], + ['arpip_5fclash_5freset_5ftimeout_5fms_2',['arpIP_CLASH_RESET_TIMEOUT_MS',['../_free_r_t_o_s___a_r_p_8c.html#ad51f57e1abecd75f22c0d8eca8d87a4d',1,'FreeRTOS_ARP.c']]], + ['arpmax_5farp_5fage_5fbefore_5fnew_5farp_5frequest_3',['arpMAX_ARP_AGE_BEFORE_NEW_ARP_REQUEST',['../_free_r_t_o_s___a_r_p_8c.html#a22f53fd4d5218d841f6176b29603a955',1,'FreeRTOS_ARP.c']]] +]; diff --git a/V4.3.1/search/defines_1.js b/V4.3.1/search/defines_1.js new file mode 100644 index 000000000..f67c0f150 --- /dev/null +++ b/V4.3.1/search/defines_1.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['dhcpinitial_5fdhcp_5ftx_5fperiod_0',['dhcpINITIAL_DHCP_TX_PERIOD',['../_free_r_t_o_s___d_h_c_pv6_8c.html#ae21108aea9e8f67970c05f03ae882832',1,'FreeRTOS_DHCPv6.c']]], + ['dhcpinitial_5ftimer_5fperiod_1',['dhcpINITIAL_TIMER_PERIOD',['../_free_r_t_o_s___d_h_c_pv6_8c.html#a7e77d690aa573e19c016d4bab59a51b7',1,'FreeRTOS_DHCPv6.c']]], + ['dhcpmandatory_5foptions_2',['dhcpMANDATORY_OPTIONS',['../_free_r_t_o_s___d_h_c_pv6_8c.html#a11e66b5d2d5a1becacf5502eb0fa4240',1,'FreeRTOS_DHCPv6.c']]], + ['dhcpv6_5fsend_5fmax_5fbuffer_5fsize_3',['DHCPv6_SEND_MAX_BUFFER_SIZE',['../_free_r_t_o_s___d_h_c_pv6_8c.html#abe898c94cefa04d3148ea20c595c0b43',1,'FreeRTOS_DHCPv6.c']]], + ['duplicate_5facks_5fbefore_5ffast_5fretransmit_4',['DUPLICATE_ACKS_BEFORE_FAST_RETRANSMIT',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a374732a2bcde8457d90a1e2ee2c665c3',1,'FreeRTOS_TCP_WIN.c']]] +]; diff --git a/V4.3.1/search/defines_2.js b/V4.3.1/search/defines_2.js new file mode 100644 index 000000000..933e3d4e1 --- /dev/null +++ b/V4.3.1/search/defines_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['ep_5fdhcpdata_0',['EP_DHCPData',['../_free_r_t_o_s___d_h_c_p_8c.html#adfb2f90932de3ba1166a8ae0e22cfa16',1,'EP_DHCPData(): FreeRTOS_DHCP.c'],['../_free_r_t_o_s___d_h_c_pv6_8c.html#adfb2f90932de3ba1166a8ae0e22cfa16',1,'EP_DHCPData(): FreeRTOS_DHCPv6.c']]], + ['ep_5fipv4_5fsettings_1',['EP_IPv4_SETTINGS',['../_free_r_t_o_s___d_h_c_p_8c.html#a7855dad00c2e1354eaafb18a0ec8d999',1,'FreeRTOS_DHCP.c']]], + ['ep_5fipv6_5fsettings_2',['EP_IPv6_SETTINGS',['../_free_r_t_o_s___d_h_c_pv6_8c.html#a0305b850746513b1a64e8bd3e6c9c918',1,'FreeRTOS_DHCPv6.c']]] +]; diff --git a/V4.3.1/search/defines_3.js b/V4.3.1/search/defines_3.js new file mode 100644 index 000000000..c7125d58f --- /dev/null +++ b/V4.3.1/search/defines_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['freertos_5fminimum_5ftcp_5foffset_0',['FREERTOS_MINIMUM_TCP_OFFSET',['../_free_r_t_o_s___i_p___utils_8c.html#a985670bd700f08464870fb9fd42459f9',1,'FreeRTOS_IP_Utils.c']]] +]; diff --git a/V4.3.1/search/defines_4.js b/V4.3.1/search/defines_4.js new file mode 100644 index 000000000..23532f5f7 --- /dev/null +++ b/V4.3.1/search/defines_4.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['iparp_5fresolution_5fmax_5fdelay_0',['ipARP_RESOLUTION_MAX_DELAY',['../_free_r_t_o_s___i_p_8c.html#a4a746f4a37672bd67a9a942f3b2c8c2d',1,'FreeRTOS_IP.c']]], + ['iparp_5ftimer_5fperiod_5fms_1',['ipARP_TIMER_PERIOD_MS',['../_free_r_t_o_s___i_p_8c.html#a7e4e7fc3c3cb2528f45fbff05a95c278',1,'FreeRTOS_IP.c']]], + ['ipexpected_5farpheader_5ft_5fsize_2',['ipEXPECTED_ARPHeader_t_SIZE',['../_free_r_t_o_s___i_p___utils_8c.html#ac13c9f74e9fe374fa459f8df1864dc72',1,'FreeRTOS_IP_Utils.c']]], + ['ipexpected_5fethernetheader_5ft_5fsize_3',['ipEXPECTED_EthernetHeader_t_SIZE',['../_free_r_t_o_s___i_p___utils_8c.html#a8ef9c6533cd9f34111f6ff1e5843507d',1,'FreeRTOS_IP_Utils.c']]], + ['ipexpected_5ficmpheader_5ft_5fsize_4',['ipEXPECTED_ICMPHeader_t_SIZE',['../_free_r_t_o_s___i_p___utils_8c.html#a0dc89907d7a25a7f795f2abcd9eb6aa6',1,'FreeRTOS_IP_Utils.c']]], + ['ipexpected_5figmpheader_5ft_5fsize_5',['ipEXPECTED_IGMPHeader_t_SIZE',['../_free_r_t_o_s___i_p___utils_8c.html#a527470135bea5ef3d75f3c1206431584',1,'FreeRTOS_IP_Utils.c']]], + ['ipexpected_5fipheader_5ft_5fsize_6',['ipEXPECTED_IPHeader_t_SIZE',['../_free_r_t_o_s___i_p___utils_8c.html#a43457a3ba4fd6f16a4d33394af459536',1,'FreeRTOS_IP_Utils.c']]], + ['ipexpected_5ftcpheader_5ft_5fsize_7',['ipEXPECTED_TCPHeader_t_SIZE',['../_free_r_t_o_s___i_p___utils_8c.html#ada34cd2dcc842a6c43cd9c85acd0ebc2',1,'FreeRTOS_IP_Utils.c']]], + ['ipexpected_5fudpheader_5ft_5fsize_8',['ipEXPECTED_UDPHeader_t_SIZE',['../_free_r_t_o_s___i_p___utils_8c.html#a2cc551f421556711f0924201c04c9f82',1,'FreeRTOS_IP_Utils.c']]], + ['ipfirst_5fmulti_5fcast_5fipv4_9',['ipFIRST_MULTI_CAST_IPv4',['../_free_r_t_o_s___i_pv4_8c.html#a8d61855955d5d08f6933f84bc668d80f',1,'FreeRTOS_IPv4.c']]], + ['ipinitialisation_5fretry_5fdelay_10',['ipINITIALISATION_RETRY_DELAY',['../_free_r_t_o_s___i_p___utils_8c.html#af982816b81c2c41e4e50643993a23085',1,'ipINITIALISATION_RETRY_DELAY(): FreeRTOS_IP_Utils.c'],['../_free_r_t_o_s___i_p_8c.html#af982816b81c2c41e4e50643993a23085',1,'ipINITIALISATION_RETRY_DELAY(): FreeRTOS_IP.c']]], + ['ipis_5fethernet_5fframe_5ftype_5finvalid_11',['ipIS_ETHERNET_FRAME_TYPE_INVALID',['../_free_r_t_o_s___i_p_8c.html#a0f3d6d11f31e65c3da1391a9e0a96b74',1,'FreeRTOS_IP.c']]], + ['iplast_5fmulti_5fcast_5fipv4_12',['ipLAST_MULTI_CAST_IPv4',['../_free_r_t_o_s___i_pv4_8c.html#ac31c27794ca5338cda64cc9282dadfed',1,'FreeRTOS_IPv4.c']]], + ['ipnd_5fresolution_5fmax_5fdelay_13',['ipND_RESOLUTION_MAX_DELAY',['../_free_r_t_o_s___i_p_8c.html#af8fbbc3db1582f681efd0cc128b88eb0',1,'FreeRTOS_IP.c']]], + ['ipnd_5ftimer_5fperiod_5fms_14',['ipND_TIMER_PERIOD_MS',['../_free_r_t_o_s___i_p_8c.html#a4567f9f1d2bee1c04bd094ce98cf594f',1,'FreeRTOS_IP.c']]], + ['iptcp_5ftimer_5fperiod_5fms_15',['ipTCP_TIMER_PERIOD_MS',['../_free_r_t_o_s___i_p_8c.html#aef1630538f6d0701a36f878b67bbff8f',1,'ipTCP_TIMER_PERIOD_MS(): FreeRTOS_IP.c'],['../_free_r_t_o_s___sockets_8c.html#aef1630538f6d0701a36f878b67bbff8f',1,'ipTCP_TIMER_PERIOD_MS(): FreeRTOS_Sockets.c']]], + ['iptraceip_5ftask_5fstarting_16',['iptraceIP_TASK_STARTING',['../_free_r_t_o_s___i_p_8c.html#ac51b5f3c553cd23a5fd940017637737f',1,'FreeRTOS_IP.c']]], + ['ipv6mc_5fget_5fflags_5fvalue_17',['IPv6MC_GET_FLAGS_VALUE',['../_free_r_t_o_s___i_pv6_8c.html#a0db85f588cab0c9a710621a30396c83c',1,'FreeRTOS_IPv6.c']]], + ['ipv6mc_5fget_5fgroup_5fid_18',['IPv6MC_GET_GROUP_ID',['../_free_r_t_o_s___i_pv6_8c.html#a5d1d2ac831df739c05a9f518ea541c67',1,'FreeRTOS_IPv6.c']]], + ['ipv6mc_5fget_5fscope_5fvalue_19',['IPv6MC_GET_SCOPE_VALUE',['../_free_r_t_o_s___i_pv6_8c.html#ab9ee8420439291dd97a2af7c53caa575',1,'FreeRTOS_IPv6.c']]] +]; diff --git a/V4.3.1/search/defines_5.js b/V4.3.1/search/defines_5.js new file mode 100644 index 000000000..1cfad9134 --- /dev/null +++ b/V4.3.1/search/defines_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['max_5ftransmit_5fcount_5fusing_5flarge_5fwindow_0',['MAX_TRANSMIT_COUNT_USING_LARGE_WINDOW',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#aa04acc1274bb1e10366880ee23dcfb82',1,'FreeRTOS_TCP_WIN.c']]] +]; diff --git a/V4.3.1/search/defines_6.js b/V4.3.1/search/defines_6.js new file mode 100644 index 000000000..689896997 --- /dev/null +++ b/V4.3.1/search/defines_6.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['nddont_5fblock_0',['ndDONT_BLOCK',['../_free_r_t_o_s___n_d_8c.html#a30a69421e255cecf44a800cb823783ea',1,'FreeRTOS_ND.c']]], + ['ndecho_5fdata_5ffill_5fbyte_1',['ndECHO_DATA_FILL_BYTE',['../_free_r_t_o_s___n_d_8c.html#a8522e644c704b38f741518d5c172afe0',1,'FreeRTOS_ND.c']]], + ['ndicmpv6_5fflag_5fsolicited_2',['ndICMPv6_FLAG_SOLICITED',['../_free_r_t_o_s___n_d_8c.html#ad17cb7fc17316079fcd13b6d49291062',1,'FreeRTOS_ND.c']]], + ['ndicmpv6_5fflag_5fupdate_3',['ndICMPv6_FLAG_UPDATE',['../_free_r_t_o_s___n_d_8c.html#a7093818bef360f0220c7160d60a2a24e',1,'FreeRTOS_ND.c']]], + ['ndmax_5fcache_5fage_5fbefore_5fnew_5fnd_5fsolicitation_4',['ndMAX_CACHE_AGE_BEFORE_NEW_ND_SOLICITATION',['../_free_r_t_o_s___n_d_8c.html#ae1576f967dffabbc598706bf06da1849',1,'FreeRTOS_ND.c']]] +]; diff --git a/V4.3.1/search/defines_7.js b/V4.3.1/search/defines_7.js new file mode 100644 index 000000000..c5c02a3a3 --- /dev/null +++ b/V4.3.1/search/defines_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['option_5fcode_5fsingle_5fsack_0',['OPTION_CODE_SINGLE_SACK',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#adec136da43a296db8af25299ca738963',1,'FreeRTOS_TCP_WIN.c']]] +]; diff --git a/V4.3.1/search/defines_8.js b/V4.3.1/search/defines_8.js new file mode 100644 index 000000000..f6238b050 --- /dev/null +++ b/V4.3.1/search/defines_8.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['radefault_5fhop_5flimit_0',['raDEFAULT_HOP_LIMIT',['../_free_r_t_o_s___r_a_8c.html#ad3e8638ba23cd89dcef776cbde7f8be8',1,'FreeRTOS_RA.c']]], + ['radefault_5fversion_5ftraffic_5fclass_1',['raDEFAULT_VERSION_TRAFFIC_CLASS',['../_free_r_t_o_s___r_a_8c.html#a64f6e851b8ba36afc3c50f63f7c41ad4',1,'FreeRTOS_RA.c']]], + ['radont_5fblock_2',['raDONT_BLOCK',['../_free_r_t_o_s___r_a_8c.html#a177eafe875e5db43a464518a5a271b10',1,'FreeRTOS_RA.c']]], + ['rmatch_5fcount_3',['rMATCH_COUNT',['../_free_r_t_o_s___routing_8c.html#a3b872118875520c3c39bbf031807dacc',1,'FreeRTOS_Routing.c']]], + ['rmatch_5fip_5faddr_4',['rMATCH_IP_ADDR',['../_free_r_t_o_s___routing_8c.html#a557d11bb3248b5c9c8b1630986e84ee5',1,'FreeRTOS_Routing.c']]], + ['rmatch_5fip_5ftype_5',['rMATCH_IP_TYPE',['../_free_r_t_o_s___routing_8c.html#a9272cef99c4d69ae2db27b62d6bb9f1c',1,'FreeRTOS_Routing.c']]], + ['rmatch_5fipv6_5ftype_6',['rMATCH_IPv6_TYPE',['../_free_r_t_o_s___routing_8c.html#ae9932df0b0d50188d5f2149db58ee145',1,'FreeRTOS_Routing.c']]], + ['rmatch_5fmac_5faddr_7',['rMATCH_MAC_ADDR',['../_free_r_t_o_s___routing_8c.html#aefd90a93e3218a0fe39f3ede0c283d1b',1,'FreeRTOS_Routing.c']]] +]; diff --git a/V4.3.1/search/defines_9.js b/V4.3.1/search/defines_9.js new file mode 100644 index 000000000..669253afa --- /dev/null +++ b/V4.3.1/search/defines_9.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['sock100_5fpercent_0',['sock100_PERCENT',['../_free_r_t_o_s___sockets_8c.html#a67b2a67aa4db57cbda7a7150eb4f58f6',1,'FreeRTOS_Sockets.c']]], + ['sock20_5fpercent_1',['sock20_PERCENT',['../_free_r_t_o_s___sockets_8c.html#a68795ded8df36253a9ae4a48f728f863',1,'FreeRTOS_Sockets.c']]], + ['sock80_5fpercent_2',['sock80_PERCENT',['../_free_r_t_o_s___sockets_8c.html#a63599b39bbf9eea1e37fcbb06035027d',1,'FreeRTOS_Sockets.c']]], + ['sockdigit_5fcount_3',['sockDIGIT_COUNT',['../_free_r_t_o_s___sockets_8c.html#ad93067b1b641f4859cd5501786573802',1,'FreeRTOS_Sockets.c']]], + ['socketauto_5fport_5fallocation_5fmax_5fnumber_4',['socketAUTO_PORT_ALLOCATION_MAX_NUMBER',['../_free_r_t_o_s___sockets_8c.html#a3319ecf6f85a2b64a8d48396e0279e24',1,'FreeRTOS_Sockets.c']]], + ['socketauto_5fport_5fallocation_5fstart_5fnumber_5',['socketAUTO_PORT_ALLOCATION_START_NUMBER',['../_free_r_t_o_s___sockets_8c.html#a350b6e0f49c270cb5c13c6aeeae116af',1,'FreeRTOS_Sockets.c']]], + ['socketdont_5fblock_6',['socketDONT_BLOCK',['../_free_r_t_o_s___sockets_8c.html#a42f8714f024edfbb0a683d31d2ee7e60',1,'FreeRTOS_Sockets.c']]], + ['socketget_5fsocket_5fport_7',['socketGET_SOCKET_PORT',['../_free_r_t_o_s___sockets_8c.html#ab3a0b0023a907a0cff7dc53d226f80cd',1,'FreeRTOS_Sockets.c']]], + ['socketmax_5fip_5faddress_5foctets_8',['socketMAX_IP_ADDRESS_OCTETS',['../_free_r_t_o_s___i_pv4___sockets_8c.html#afc265c349a43891cb7ab972fd58630e9',1,'FreeRTOS_IPv4_Sockets.c']]], + ['socketset_5fsocket_5fport_9',['socketSET_SOCKET_PORT',['../_free_r_t_o_s___sockets_8c.html#a8fc4e3506e42e9eef4b51ffd91e665b3',1,'FreeRTOS_Sockets.c']]], + ['socketsocket_5fis_5fbound_10',['socketSOCKET_IS_BOUND',['../_free_r_t_o_s___sockets_8c.html#a2e01dee7309f496afde943fed947729c',1,'FreeRTOS_Sockets.c']]] +]; diff --git a/V4.3.1/search/defines_a.js b/V4.3.1/search/defines_a.js new file mode 100644 index 000000000..689d2d251 --- /dev/null +++ b/V4.3.1/search/defines_a.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['winsrtt_5fcap_5fms_0',['winSRTT_CAP_mS',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a88e05f703fda730dec8cde14f9a91ef4',1,'FreeRTOS_TCP_WIN.c']]], + ['winsrtt_5fdecrement_5fcurrent_1',['winSRTT_DECREMENT_CURRENT',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#aeb55e5f7a5fbf975104e669323d115a8',1,'FreeRTOS_TCP_WIN.c']]], + ['winsrtt_5fdecrement_5fnew_2',['winSRTT_DECREMENT_NEW',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#af1109c15055d77738365721c9181600e',1,'FreeRTOS_TCP_WIN.c']]], + ['winsrtt_5fincrement_5fcurrent_3',['winSRTT_INCREMENT_CURRENT',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#acc3b8daf4436eb0a75561cd808256b35',1,'FreeRTOS_TCP_WIN.c']]], + ['winsrtt_5fincrement_5fnew_4',['winSRTT_INCREMENT_NEW',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#ad55bd7a27c05e46e1f269973ed270c2a',1,'FreeRTOS_TCP_WIN.c']]] +]; diff --git a/V4.3.1/search/defines_b.js b/V4.3.1/search/defines_b.js new file mode 100644 index 000000000..ea1ee066a --- /dev/null +++ b/V4.3.1/search/defines_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['xtcpwindowrxnew_0',['xTCPWindowRxNew',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a6d6c19030ec6a51641664d45735a889d',1,'FreeRTOS_TCP_WIN.c']]], + ['xtcpwindowtxnew_1',['xTCPWindowTxNew',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a6ebac9742c5a0d2013d77ef6084ea5ef',1,'FreeRTOS_TCP_WIN.c']]] +]; diff --git a/V4.3.1/search/files_0.js b/V4.3.1/search/files_0.js new file mode 100644 index 000000000..fc3974f93 --- /dev/null +++ b/V4.3.1/search/files_0.js @@ -0,0 +1,45 @@ +var searchData= +[ + ['freertos_5farp_2ec_0',['FreeRTOS_ARP.c',['../_free_r_t_o_s___a_r_p_8c.html',1,'']]], + ['freertos_5fbitconfig_2ec_1',['FreeRTOS_BitConfig.c',['../_free_r_t_o_s___bit_config_8c.html',1,'']]], + ['freertos_5fdhcp_2ec_2',['FreeRTOS_DHCP.c',['../_free_r_t_o_s___d_h_c_p_8c.html',1,'']]], + ['freertos_5fdhcpv6_2ec_3',['FreeRTOS_DHCPv6.c',['../_free_r_t_o_s___d_h_c_pv6_8c.html',1,'']]], + ['freertos_5fdns_2ec_4',['FreeRTOS_DNS.c',['../_free_r_t_o_s___d_n_s_8c.html',1,'']]], + ['freertos_5fdns_5fcache_2ec_5',['FreeRTOS_DNS_Cache.c',['../_free_r_t_o_s___d_n_s___cache_8c.html',1,'']]], + ['freertos_5fdns_5fcallback_2ec_6',['FreeRTOS_DNS_Callback.c',['../_free_r_t_o_s___d_n_s___callback_8c.html',1,'']]], + ['freertos_5fdns_5fnetworking_2ec_7',['FreeRTOS_DNS_Networking.c',['../_free_r_t_o_s___d_n_s___networking_8c.html',1,'']]], + ['freertos_5fdns_5fparser_2ec_8',['FreeRTOS_DNS_Parser.c',['../_free_r_t_o_s___d_n_s___parser_8c.html',1,'']]], + ['freertos_5ficmp_2ec_9',['FreeRTOS_ICMP.c',['../_free_r_t_o_s___i_c_m_p_8c.html',1,'']]], + ['freertos_5fip_2ec_10',['FreeRTOS_IP.c',['../_free_r_t_o_s___i_p_8c.html',1,'']]], + ['freertos_5fip_5ftimers_2ec_11',['FreeRTOS_IP_Timers.c',['../_free_r_t_o_s___i_p___timers_8c.html',1,'']]], + ['freertos_5fip_5futils_2ec_12',['FreeRTOS_IP_Utils.c',['../_free_r_t_o_s___i_p___utils_8c.html',1,'']]], + ['freertos_5fipv4_2ec_13',['FreeRTOS_IPv4.c',['../_free_r_t_o_s___i_pv4_8c.html',1,'']]], + ['freertos_5fipv4_5fsockets_2ec_14',['FreeRTOS_IPv4_Sockets.c',['../_free_r_t_o_s___i_pv4___sockets_8c.html',1,'']]], + ['freertos_5fipv4_5futils_2ec_15',['FreeRTOS_IPv4_Utils.c',['../_free_r_t_o_s___i_pv4___utils_8c.html',1,'']]], + ['freertos_5fipv6_2ec_16',['FreeRTOS_IPv6.c',['../_free_r_t_o_s___i_pv6_8c.html',1,'']]], + ['freertos_5fipv6_5fsockets_2ec_17',['FreeRTOS_IPv6_Sockets.c',['../_free_r_t_o_s___i_pv6___sockets_8c.html',1,'']]], + ['freertos_5fipv6_5futils_2ec_18',['FreeRTOS_IPv6_Utils.c',['../_free_r_t_o_s___i_pv6___utils_8c.html',1,'']]], + ['freertos_5fnd_2ec_19',['FreeRTOS_ND.c',['../_free_r_t_o_s___n_d_8c.html',1,'']]], + ['freertos_5fra_2ec_20',['FreeRTOS_RA.c',['../_free_r_t_o_s___r_a_8c.html',1,'']]], + ['freertos_5frouting_2ec_21',['FreeRTOS_Routing.c',['../_free_r_t_o_s___routing_8c.html',1,'']]], + ['freertos_5fsockets_2ec_22',['FreeRTOS_Sockets.c',['../_free_r_t_o_s___sockets_8c.html',1,'']]], + ['freertos_5fstream_5fbuffer_2ec_23',['FreeRTOS_Stream_Buffer.c',['../_free_r_t_o_s___stream___buffer_8c.html',1,'']]], + ['freertos_5ftcp_5fip_2ec_24',['FreeRTOS_TCP_IP.c',['../_free_r_t_o_s___t_c_p___i_p_8c.html',1,'']]], + ['freertos_5ftcp_5fip_5fipv4_2ec_25',['FreeRTOS_TCP_IP_IPv4.c',['../_free_r_t_o_s___t_c_p___i_p___i_pv4_8c.html',1,'']]], + ['freertos_5ftcp_5fip_5fipv6_2ec_26',['FreeRTOS_TCP_IP_IPv6.c',['../_free_r_t_o_s___t_c_p___i_p___i_pv6_8c.html',1,'']]], + ['freertos_5ftcp_5freception_2ec_27',['FreeRTOS_TCP_Reception.c',['../_free_r_t_o_s___t_c_p___reception_8c.html',1,'']]], + ['freertos_5ftcp_5fstate_5fhandling_2ec_28',['FreeRTOS_TCP_State_Handling.c',['../_free_r_t_o_s___t_c_p___state___handling_8c.html',1,'']]], + ['freertos_5ftcp_5fstate_5fhandling_5fipv4_2ec_29',['FreeRTOS_TCP_State_Handling_IPv4.c',['../_free_r_t_o_s___t_c_p___state___handling___i_pv4_8c.html',1,'']]], + ['freertos_5ftcp_5fstate_5fhandling_5fipv6_2ec_30',['FreeRTOS_TCP_State_Handling_IPv6.c',['../_free_r_t_o_s___t_c_p___state___handling___i_pv6_8c.html',1,'']]], + ['freertos_5ftcp_5ftransmission_2ec_31',['FreeRTOS_TCP_Transmission.c',['../_free_r_t_o_s___t_c_p___transmission_8c.html',1,'']]], + ['freertos_5ftcp_5ftransmission_5fipv4_2ec_32',['FreeRTOS_TCP_Transmission_IPv4.c',['../_free_r_t_o_s___t_c_p___transmission___i_pv4_8c.html',1,'']]], + ['freertos_5ftcp_5ftransmission_5fipv6_2ec_33',['FreeRTOS_TCP_Transmission_IPv6.c',['../_free_r_t_o_s___t_c_p___transmission___i_pv6_8c.html',1,'']]], + ['freertos_5ftcp_5futils_2ec_34',['FreeRTOS_TCP_Utils.c',['../_free_r_t_o_s___t_c_p___utils_8c.html',1,'']]], + ['freertos_5ftcp_5futils_5fipv4_2ec_35',['FreeRTOS_TCP_Utils_IPv4.c',['../_free_r_t_o_s___t_c_p___utils___i_pv4_8c.html',1,'']]], + ['freertos_5ftcp_5futils_5fipv6_2ec_36',['FreeRTOS_TCP_Utils_IPv6.c',['../_free_r_t_o_s___t_c_p___utils___i_pv6_8c.html',1,'']]], + ['freertos_5ftcp_5fwin_2ec_37',['FreeRTOS_TCP_WIN.c',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html',1,'']]], + ['freertos_5ftiny_5ftcp_2ec_38',['FreeRTOS_Tiny_TCP.c',['../_free_r_t_o_s___tiny___t_c_p_8c.html',1,'']]], + ['freertos_5fudp_5fip_2ec_39',['FreeRTOS_UDP_IP.c',['../_free_r_t_o_s___u_d_p___i_p_8c.html',1,'']]], + ['freertos_5fudp_5fipv4_2ec_40',['FreeRTOS_UDP_IPv4.c',['../_free_r_t_o_s___u_d_p___i_pv4_8c.html',1,'']]], + ['freertos_5fudp_5fipv6_2ec_41',['FreeRTOS_UDP_IPv6.c',['../_free_r_t_o_s___u_d_p___i_pv6_8c.html',1,'']]] +]; diff --git a/V4.3.1/search/functions_0.js b/V4.3.1/search/functions_0.js new file mode 100644 index 000000000..ebdcad7d7 --- /dev/null +++ b/V4.3.1/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bmayconnect_0',['bMayConnect',['../_free_r_t_o_s___sockets_8c.html#ae8a5f1c37d0260304e2acb616ca18247',1,'FreeRTOS_Sockets.c']]] +]; diff --git a/V4.3.1/search/functions_1.js b/V4.3.1/search/functions_1.js new file mode 100644 index 000000000..934937502 --- /dev/null +++ b/V4.3.1/search/functions_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['chextochar_0',['cHexToChar',['../_free_r_t_o_s___i_pv6___sockets_8c.html#a00809937bb943fb2a0293931064d83b2',1,'FreeRTOS_IPv6_Sockets.c']]] +]; diff --git a/V4.3.1/search/functions_2.js b/V4.3.1/search/functions_2.js new file mode 100644 index 000000000..ec13bfa3f --- /dev/null +++ b/V4.3.1/search/functions_2.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['dns_5fbindsocket_0',['DNS_BindSocket',['../_free_r_t_o_s___d_n_s___networking_8c.html#a998bd58d554c5c8ca8acb9583e9c6a77',1,'FreeRTOS_DNS_Networking.c']]], + ['dns_5fclosesocket_1',['DNS_CloseSocket',['../_free_r_t_o_s___d_n_s___networking_8c.html#ade7d8a2ebf3b318b01c68ceb0f6ec225',1,'FreeRTOS_DNS_Networking.c']]], + ['dns_5fcreatesocket_2',['DNS_CreateSocket',['../_free_r_t_o_s___d_n_s___networking_8c.html#aa2e0265014529ef9a417612308bf2b5d',1,'FreeRTOS_DNS_Networking.c']]], + ['dns_5fparsednsreply_3',['DNS_ParseDNSReply',['../_free_r_t_o_s___d_n_s___parser_8c.html#a4772916fb220403d0041d9cc90aedeb7',1,'FreeRTOS_DNS_Parser.c']]], + ['dns_5freadnamefield_4',['DNS_ReadNameField',['../_free_r_t_o_s___d_n_s___parser_8c.html#aaad49b6c58394f7da6a34c090b36c152',1,'FreeRTOS_DNS_Parser.c']]], + ['dns_5freadreply_5',['DNS_ReadReply',['../_free_r_t_o_s___d_n_s___networking_8c.html#a16c7cb7023cfa29b6aa5cfac6406ad78',1,'FreeRTOS_DNS_Networking.c']]], + ['dns_5fsendrequest_6',['DNS_SendRequest',['../_free_r_t_o_s___d_n_s___networking_8c.html#a89cfa1f2a25312a01483f36e50265eb0',1,'FreeRTOS_DNS_Networking.c']]], + ['dns_5fskipnamefield_7',['DNS_SkipNameField',['../_free_r_t_o_s___d_n_s___parser_8c.html#ab6e1d67b310ba4287a774feaab588ae6',1,'FreeRTOS_DNS_Parser.c']]], + ['dns_5ftreatnbns_8',['DNS_TreatNBNS',['../_free_r_t_o_s___d_n_s___parser_8c.html#a5de7ffa9cfbfa4dda2f23d5a75b32fd5',1,'FreeRTOS_DNS_Parser.c']]] +]; diff --git a/V4.3.1/search/functions_3.js b/V4.3.1/search/functions_3.js new file mode 100644 index 000000000..2c01ace63 --- /dev/null +++ b/V4.3.1/search/functions_3.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['earpgetcacheentry_0',['eARPGetCacheEntry',['../_free_r_t_o_s___a_r_p_8c.html#ad7474a8c9cdc730326fe3be44cb655b9',1,'FreeRTOS_ARP.c']]], + ['earpgetcacheentrygateway_1',['eARPGetCacheEntryGateWay',['../_free_r_t_o_s___a_r_p_8c.html#af0d6e799d689f501dde4dc9b3b6920cb',1,'FreeRTOS_ARP.c']]], + ['earpprocesspacket_2',['eARPProcessPacket',['../_free_r_t_o_s___a_r_p_8c.html#a9740f8ea6763013cfff8ba416c70184d',1,'FreeRTOS_ARP.c']]], + ['econsiderframeforprocessing_3',['eConsiderFrameForProcessing',['../_free_r_t_o_s___i_p_8c.html#ab15bee3df12f185ea7a1ba671121d19f',1,'FreeRTOS_IP.c']]], + ['egetdhcpstate_4',['eGetDHCPState',['../_free_r_t_o_s___i_p___utils_8c.html#a1184f91775b8f6b3191c117966059453',1,'FreeRTOS_IP_Utils.c']]], + ['egetdhcpv6state_5',['eGetDHCPv6State',['../_free_r_t_o_s___d_h_c_pv6_8c.html#adb98e23ffac182741acc7698ec9425f5',1,'FreeRTOS_DHCPv6.c']]], + ['ehandleipv6extensionheaders_6',['eHandleIPv6ExtensionHeaders',['../_free_r_t_o_s___i_pv6_8c.html#afaf4a6c865da5d5349769a28aa49c5cf',1,'FreeRTOS_IPv6.c']]], + ['endgetcacheentry_7',['eNDGetCacheEntry',['../_free_r_t_o_s___n_d_8c.html#ada16da39fabddf269d42da139af02e48',1,'FreeRTOS_ND.c']]] +]; diff --git a/V4.3.1/search/functions_4.js b/V4.3.1/search/functions_4.js new file mode 100644 index 000000000..fa4af7512 --- /dev/null +++ b/V4.3.1/search/functions_4.js @@ -0,0 +1,106 @@ +var searchData= +[ + ['freertos_5faccept_0',['FreeRTOS_accept',['../_free_r_t_o_s___sockets_8c.html#a1b0aabc4d95b9a61e531429839f50852',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fadd_5fint32_1',['FreeRTOS_add_int32',['../_free_r_t_o_s___i_p___utils_8c.html#a6602b34b70013ff9c74e93a69cddd129',1,'FreeRTOS_IP_Utils.c']]], + ['freertos_5faddendpoint_2',['FreeRTOS_AddEndPoint',['../_free_r_t_o_s___routing_8c.html#afbada2871d3f95785c45f7f128e5bd42',1,'FreeRTOS_Routing.c']]], + ['freertos_5faddnetworkinterface_3',['FreeRTOS_AddNetworkInterface',['../_free_r_t_o_s___routing_8c.html#a81bbf9cf4d7ee4697765182fac4c8b8a',1,'FreeRTOS_Routing.c']]], + ['freertos_5fallendpointsup_4',['FreeRTOS_AllEndPointsUp',['../_free_r_t_o_s___i_p_8c.html#a90707c0107e74aa9b9e281868ee6714b',1,'FreeRTOS_IP.c']]], + ['freertos_5fbind_5',['FreeRTOS_bind',['../_free_r_t_o_s___sockets_8c.html#a6fe933805d4f44b09b3b04a13ed28e72',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fcleararp_6',['FreeRTOS_ClearARP',['../_free_r_t_o_s___a_r_p_8c.html#acdb26d6bbf0f442a076837c0427646ea',1,'FreeRTOS_ARP.c']]], + ['freertos_5fclearnd_7',['FreeRTOS_ClearND',['../_free_r_t_o_s___n_d_8c.html#ac49d985b1abab10a7829abe9a11e73bf',1,'FreeRTOS_ND.c']]], + ['freertos_5fclosesocket_8',['FreeRTOS_closesocket',['../_free_r_t_o_s___sockets_8c.html#abefb0186bf6e06816a6acd12432dae9b',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fconnect_9',['FreeRTOS_connect',['../_free_r_t_o_s___sockets_8c.html#a6231fb49e0a656c63d0ef82db2446587',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fconnstatus_10',['FreeRTOS_connstatus',['../_free_r_t_o_s___sockets_8c.html#a0a6df495a5df34259dd6ef400992a46f',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fcreateipv6address_11',['FreeRTOS_CreateIPv6Address',['../_free_r_t_o_s___n_d_8c.html#a937f6703e06d2e8534999073ebe2e5f4',1,'FreeRTOS_ND.c']]], + ['freertos_5fcreatesocketset_12',['FreeRTOS_CreateSocketSet',['../_free_r_t_o_s___sockets_8c.html#a6ffb7662be38da18db6ec8e87da4735e',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fdeletesocketset_13',['FreeRTOS_DeleteSocketSet',['../_free_r_t_o_s___sockets_8c.html#a427e342cb8d9c513d117ba772f427cca',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fdns_5fupdate_14',['FreeRTOS_dns_update',['../_free_r_t_o_s___d_n_s___cache_8c.html#ac3269ccb267e9629b67eca8cecb12872',1,'FreeRTOS_DNS_Cache.c']]], + ['freertos_5fdnsclear_15',['FreeRTOS_dnsclear',['../_free_r_t_o_s___d_n_s___cache_8c.html#aff91fa5dfb01ae9c1ad61cc24c28b03a',1,'FreeRTOS_DNS_Cache.c']]], + ['freertos_5fdnslookup_16',['FreeRTOS_dnslookup',['../_free_r_t_o_s___d_n_s___cache_8c.html#acbd93e10dc7a0ffe7319239242f434c1',1,'FreeRTOS_DNS_Cache.c']]], + ['freertos_5fdnslookup6_17',['FreeRTOS_dnslookup6',['../_free_r_t_o_s___d_n_s___cache_8c.html#aacf828ed96a24a7e527b42d95d78cf2b',1,'FreeRTOS_DNS_Cache.c']]], + ['freertos_5feui48_5fntop_18',['FreeRTOS_EUI48_ntop',['../_free_r_t_o_s___sockets_8c.html#a078ca5deaf06141eb65d09ba28c6b8ac',1,'FreeRTOS_Sockets.c']]], + ['freertos_5feui48_5fpton_19',['FreeRTOS_EUI48_pton',['../_free_r_t_o_s___sockets_8c.html#a4741626233348eae3ac3d7d9c7de73fb',1,'FreeRTOS_Sockets.c']]], + ['freertos_5ffd_5fclr_20',['FreeRTOS_FD_CLR',['../_free_r_t_o_s___sockets_8c.html#a7ecd213d4d45a6dbc0e900f52f2b4541',1,'FreeRTOS_Sockets.c']]], + ['freertos_5ffd_5fisset_21',['FreeRTOS_FD_ISSET',['../_free_r_t_o_s___sockets_8c.html#a8f05335fc45cca27dd28f122bb0f68bc',1,'FreeRTOS_Sockets.c']]], + ['freertos_5ffd_5fset_22',['FreeRTOS_FD_SET',['../_free_r_t_o_s___sockets_8c.html#accf33877d948d53b4b189ddc41718ccd',1,'FreeRTOS_Sockets.c']]], + ['freertos_5ffillendpoint_23',['FreeRTOS_FillEndPoint',['../_free_r_t_o_s___routing_8c.html#af38bb5dfda53f1c177542440af0f7f86',1,'FreeRTOS_Routing.c']]], + ['freertos_5ffillendpoint_5fipv6_24',['FreeRTOS_FillEndPoint_IPv6',['../_free_r_t_o_s___routing_8c.html#ab6acf67c575f06dff988820872d06826',1,'FreeRTOS_Routing.c']]], + ['freertos_5ffindendpointonip_5fipv4_25',['FreeRTOS_FindEndPointOnIP_IPv4',['../_free_r_t_o_s___routing_8c.html#a59b589bc0070110458bea271ff4f2264',1,'FreeRTOS_Routing.c']]], + ['freertos_5ffindendpointonip_5fipv6_26',['FreeRTOS_FindEndPointOnIP_IPv6',['../_free_r_t_o_s___routing_8c.html#a508a5d4ea82ad967ca7571cfaf4c1b39',1,'FreeRTOS_Routing.c']]], + ['freertos_5ffindendpointonmac_27',['FreeRTOS_FindEndPointOnMAC',['../_free_r_t_o_s___routing_8c.html#a78a4ff0bf3947174adeef9aeb91849a0',1,'FreeRTOS_Routing.c']]], + ['freertos_5ffindendpointonnetmask_28',['FreeRTOS_FindEndPointOnNetMask',['../_free_r_t_o_s___routing_8c.html#a689df0c702833d56c41ce1c0900ea4ef',1,'FreeRTOS_Routing.c']]], + ['freertos_5ffindendpointonnetmask_5fipv6_29',['FreeRTOS_FindEndPointOnNetMask_IPv6',['../_free_r_t_o_s___routing_8c.html#ad2abcc1c769f6ea4f327d56e25ce8f37',1,'FreeRTOS_Routing.c']]], + ['freertos_5ffindgateway_30',['FreeRTOS_FindGateWay',['../_free_r_t_o_s___routing_8c.html#ab730a43cabaed31c1e17428424c65bf9',1,'FreeRTOS_Routing.c']]], + ['freertos_5ffirstendpoint_31',['FreeRTOS_FirstEndPoint',['../_free_r_t_o_s___routing_8c.html#a396f9a43b4b67b35265e8858dd623170',1,'FreeRTOS_Routing.c']]], + ['freertos_5ffirstendpoint_5fipv6_32',['FreeRTOS_FirstEndPoint_IPv6',['../_free_r_t_o_s___routing_8c.html#ac31ceb3af342065f968e4a27b3092562',1,'FreeRTOS_Routing.c']]], + ['freertos_5ffirstnetworkinterface_33',['FreeRTOS_FirstNetworkInterface',['../_free_r_t_o_s___routing_8c.html#aadf8a1d32737cd39c4b3f33f589b547d',1,'FreeRTOS_Routing.c']]], + ['freertos_5ffreeaddrinfo_34',['FreeRTOS_freeaddrinfo',['../_free_r_t_o_s___d_n_s_8c.html#a87c5f7fe9d7591f3e8054e5d80225995',1,'FreeRTOS_DNS.c']]], + ['freertos_5fget_5frx_5fbuf_35',['FreeRTOS_get_rx_buf',['../_free_r_t_o_s___sockets_8c.html#a289ae5cbba5316a7d0b8b5054cb68cdd',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fget_5ftx_5fbase_36',['FreeRTOS_get_tx_base',['../_free_r_t_o_s___sockets_8c.html#ad706401fb4a809bf6db1faea232f8a8c',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fget_5ftx_5fhead_37',['FreeRTOS_get_tx_head',['../_free_r_t_o_s___sockets_8c.html#a186fa7be26d0a0aa9a07f9d7300def3a',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fgetaddrinfo_38',['FreeRTOS_getaddrinfo',['../_free_r_t_o_s___d_n_s_8c.html#a03d1e7b3400b84a3babd9a4ccadcff1e',1,'FreeRTOS_DNS.c']]], + ['freertos_5fgetaddrinfo_5fa_39',['FreeRTOS_getaddrinfo_a',['../_free_r_t_o_s___d_n_s_8c.html#ab23d695ac8334f39dfd49db9268502d2',1,'FreeRTOS_DNS.c']]], + ['freertos_5fgetendpointconfiguration_40',['FreeRTOS_GetEndPointConfiguration',['../_free_r_t_o_s___i_p_8c.html#ae111d09b3e41470ea4a7d1653838f928',1,'FreeRTOS_IP.c']]], + ['freertos_5fgethostbyname_41',['FreeRTOS_gethostbyname',['../_free_r_t_o_s___d_n_s_8c.html#a71b77cb5028f171304f1535f7406766f',1,'FreeRTOS_DNS.c']]], + ['freertos_5fgethostbyname_5fa_42',['FreeRTOS_gethostbyname_a',['../_free_r_t_o_s___d_n_s_8c.html#a585a2b637e9683132af556a2b3147ad0',1,'FreeRTOS_DNS.c']]], + ['freertos_5fgethostbyname_5fcancel_43',['FreeRTOS_gethostbyname_cancel',['../_free_r_t_o_s___d_n_s_8c.html#ad6746bbebd1cca52f8a6d4cafcc5bbcf',1,'FreeRTOS_DNS.c']]], + ['freertos_5fgetipaddress_44',['FreeRTOS_GetIPAddress',['../_free_r_t_o_s___i_p_8c.html#aeaf07062b415dab09f3e333134b97103',1,'FreeRTOS_IP.c']]], + ['freertos_5fgetiptaskhandle_45',['FreeRTOS_GetIPTaskHandle',['../_free_r_t_o_s___i_p_8c.html#a939faf1aee6574dc5babb05847f8fabe',1,'FreeRTOS_IP.c']]], + ['freertos_5fgetiptype_46',['FreeRTOS_GetIPType',['../_free_r_t_o_s___sockets_8c.html#a045412220c3586ce6c71534ed1d6fafc',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fgetlocaladdress_47',['FreeRTOS_GetLocalAddress',['../_free_r_t_o_s___sockets_8c.html#a5cfd261a29fa206a8664ab5171ad9570',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fgetremoteaddress_48',['FreeRTOS_GetRemoteAddress',['../_free_r_t_o_s___sockets_8c.html#a9e0d7303574cd99128cbdb79e54adc89',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fgetudppayloadbuffer_5fmulti_49',['FreeRTOS_GetUDPPayloadBuffer_Multi',['../_free_r_t_o_s___i_p_8c.html#aabe85ca4362965bf95336b6f3f47edb6',1,'FreeRTOS_IP.c']]], + ['freertos_5finet_5faddr_50',['FreeRTOS_inet_addr',['../_free_r_t_o_s___sockets_8c.html#a17f785c94c2b8d0c80cf615a898c70b8',1,'FreeRTOS_Sockets.c']]], + ['freertos_5finet_5fntoa_51',['FreeRTOS_inet_ntoa',['../_free_r_t_o_s___sockets_8c.html#a9fa2ddd54f04e8314a9b357527c53f56',1,'FreeRTOS_Sockets.c']]], + ['freertos_5finet_5fntop_52',['FreeRTOS_inet_ntop',['../_free_r_t_o_s___sockets_8c.html#aac0f93b995b905805c8dc17bbd97ce04',1,'FreeRTOS_Sockets.c']]], + ['freertos_5finet_5fntop4_53',['FreeRTOS_inet_ntop4',['../_free_r_t_o_s___i_pv4___sockets_8c.html#a2a1d585f75b8fc47161cab0113b38174',1,'FreeRTOS_IPv4_Sockets.c']]], + ['freertos_5finet_5fntop6_54',['FreeRTOS_inet_ntop6',['../_free_r_t_o_s___i_pv6___sockets_8c.html#a294b8101170ae49e6f9c2d90f6bddc2c',1,'FreeRTOS_IPv6_Sockets.c']]], + ['freertos_5finet_5fpton_55',['FreeRTOS_inet_pton',['../_free_r_t_o_s___sockets_8c.html#a47ae572a3caf62d61b5aaeb462914516',1,'FreeRTOS_Sockets.c']]], + ['freertos_5finet_5fpton4_56',['FreeRTOS_inet_pton4',['../_free_r_t_o_s___i_pv4___sockets_8c.html#ae3306e04e9b856682503e39f856ec7ff',1,'FreeRTOS_IPv4_Sockets.c']]], + ['freertos_5finet_5fpton6_57',['FreeRTOS_inet_pton6',['../_free_r_t_o_s___i_pv6___sockets_8c.html#a15dd041b71b5af4260c8e8c0f7e470fd',1,'FreeRTOS_IPv6_Sockets.c']]], + ['freertos_5finterfaceendpointonnetmask_58',['FreeRTOS_InterfaceEndPointOnNetMask',['../_free_r_t_o_s___routing_8c.html#ad3d9515b9906234cc548213bfd0b9d5d',1,'FreeRTOS_Routing.c']]], + ['freertos_5finterfaceepinsamesubnet_5fipv6_59',['FreeRTOS_InterfaceEPInSameSubnet_IPv6',['../_free_r_t_o_s___routing_8c.html#aab2a61dd6038413b91fc6b20fe8946bc',1,'FreeRTOS_Routing.c']]], + ['freertos_5fipinit_5fmulti_60',['FreeRTOS_IPInit_Multi',['../_free_r_t_o_s___i_p_8c.html#aa3d9398c0e80cf2b737b08a12f0863ea',1,'FreeRTOS_IP.c']]], + ['freertos_5fisendpointup_61',['FreeRTOS_IsEndPointUp',['../_free_r_t_o_s___i_p_8c.html#a0faba21f1b225a1cae745ca2b70468b8',1,'FreeRTOS_IP.c']]], + ['freertos_5fisnetworkup_62',['FreeRTOS_IsNetworkUp',['../_free_r_t_o_s___i_p_8c.html#ac1f02ee6cc4e8f633ed3ddbc3d01e943',1,'FreeRTOS_IP.c']]], + ['freertos_5fissocketconnected_63',['FreeRTOS_issocketconnected',['../_free_r_t_o_s___sockets_8c.html#ad8dffb3417a60b9c98108408052579ad',1,'FreeRTOS_Sockets.c']]], + ['freertos_5flisten_64',['FreeRTOS_listen',['../_free_r_t_o_s___sockets_8c.html#a1718a2539e0de40d95472ea59859be5c',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fmatchingendpoint_65',['FreeRTOS_MatchingEndpoint',['../_free_r_t_o_s___routing_8c.html#a419bbc70f6685d44bdb39f6e72483115',1,'FreeRTOS_Routing.c']]], + ['freertos_5fmax_5fint32_66',['FreeRTOS_max_int32',['../_free_r_t_o_s___i_p___utils_8c.html#a8e36f528b9268ef66b96bdb38442f257',1,'FreeRTOS_IP_Utils.c']]], + ['freertos_5fmax_5fsize_5ft_67',['FreeRTOS_max_size_t',['../_free_r_t_o_s___i_p___utils_8c.html#ac2a76418ec84ced5006a825ec8b865e3',1,'FreeRTOS_IP_Utils.c']]], + ['freertos_5fmax_5fuint32_68',['FreeRTOS_max_uint32',['../_free_r_t_o_s___i_p___utils_8c.html#a9116ad8c3051d8231bef15c56ec57791',1,'FreeRTOS_IP_Utils.c']]], + ['freertos_5fmaywrite_69',['FreeRTOS_maywrite',['../_free_r_t_o_s___sockets_8c.html#a50d7c4b5b3eeea34905a4f16b6f13965',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fmin_5fint32_70',['FreeRTOS_min_int32',['../_free_r_t_o_s___i_p___utils_8c.html#a4800536b39a0e736fbc91eeeb46ade00',1,'FreeRTOS_IP_Utils.c']]], + ['freertos_5fmin_5fsize_5ft_71',['FreeRTOS_min_size_t',['../_free_r_t_o_s___i_p___utils_8c.html#ad321c6de160a32ab0f4a53ba4b822be7',1,'FreeRTOS_IP_Utils.c']]], + ['freertos_5fmin_5fuint32_72',['FreeRTOS_min_uint32',['../_free_r_t_o_s___i_p___utils_8c.html#a2c7362b4fff227e86de3a660e4351546',1,'FreeRTOS_IP_Utils.c']]], + ['freertos_5fmss_73',['FreeRTOS_mss',['../_free_r_t_o_s___sockets_8c.html#a10a19083f6bdd12aa4e0a8e508454385',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fmultiply_5fint32_74',['FreeRTOS_multiply_int32',['../_free_r_t_o_s___i_p___utils_8c.html#a24b7108bfe7179005085663dda60d50f',1,'FreeRTOS_IP_Utils.c']]], + ['freertos_5fnetstat_75',['FreeRTOS_netstat',['../_free_r_t_o_s___sockets_8c.html#a48a287752bb66a04cb00ab0e427f4808',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fnetworkdown_76',['FreeRTOS_NetworkDown',['../_free_r_t_o_s___i_p_8c.html#a15303d18bd7cd0331141a70ed928c427',1,'FreeRTOS_IP.c']]], + ['freertos_5fnetworkdownfromisr_77',['FreeRTOS_NetworkDownFromISR',['../_free_r_t_o_s___i_p_8c.html#a69dd485e711cc48c34dfa972c6c79622',1,'FreeRTOS_IP.c']]], + ['freertos_5fnextendpoint_78',['FreeRTOS_NextEndPoint',['../_free_r_t_o_s___routing_8c.html#a5c4e5ff66ef8f6e896872f3cfcd919ad',1,'FreeRTOS_Routing.c']]], + ['freertos_5fnextnetworkinterface_79',['FreeRTOS_NextNetworkInterface',['../_free_r_t_o_s___routing_8c.html#a75853d38d4aab9a06e662625e4a457dc',1,'FreeRTOS_Routing.c']]], + ['freertos_5foutputadvertiseipv6_80',['FreeRTOS_OutputAdvertiseIPv6',['../_free_r_t_o_s___n_d_8c.html#a74b8b9d1be2cfa05a2fc0fe6c77c1269',1,'FreeRTOS_ND.c']]], + ['freertos_5foutputarprequest_81',['FreeRTOS_OutputARPRequest',['../_free_r_t_o_s___a_r_p_8c.html#a87ebc2f32c8cda6cdc24a265df2388c0',1,'FreeRTOS_ARP.c']]], + ['freertos_5foutputarprequest_5fmulti_82',['FreeRTOS_OutputARPRequest_Multi',['../_free_r_t_o_s___a_r_p_8c.html#a42bebad74f19ae5b2e14dcaca2b79c59',1,'FreeRTOS_ARP.c']]], + ['freertos_5fprocessdnscache_83',['FreeRTOS_ProcessDNSCache',['../_free_r_t_o_s___d_n_s___cache_8c.html#a814317700ab5936ae33b37c9f709b994',1,'FreeRTOS_DNS_Cache.c']]], + ['freertos_5frecv_84',['FreeRTOS_recv',['../_free_r_t_o_s___sockets_8c.html#a44ab7ba5fddce925519c7ccc7b887033',1,'FreeRTOS_Sockets.c']]], + ['freertos_5frecvfrom_85',['FreeRTOS_recvfrom',['../_free_r_t_o_s___sockets_8c.html#a8c1bbfc998e514a7dfafe0d755b6baa9',1,'FreeRTOS_Sockets.c']]], + ['freertos_5freleasetcppayloadbuffer_86',['FreeRTOS_ReleaseTCPPayloadBuffer',['../_free_r_t_o_s___i_p_8c.html#addc06514ba67a0e6ba21fd172ba9f006',1,'FreeRTOS_IP.c']]], + ['freertos_5freleaseudppayloadbuffer_87',['FreeRTOS_ReleaseUDPPayloadBuffer',['../_free_r_t_o_s___i_p_8c.html#ab9acf473a4cda3f58dde4180091464ed',1,'FreeRTOS_IP.c']]], + ['freertos_5fround_5fdown_88',['FreeRTOS_round_down',['../_free_r_t_o_s___i_p___utils_8c.html#ab13b7eb688e635270861d515a0bdb792',1,'FreeRTOS_IP_Utils.c']]], + ['freertos_5fround_5fup_89',['FreeRTOS_round_up',['../_free_r_t_o_s___i_p___utils_8c.html#a34489473730372ede66a0edb2df9b9be',1,'FreeRTOS_IP_Utils.c']]], + ['freertos_5frx_5fsize_90',['FreeRTOS_rx_size',['../_free_r_t_o_s___sockets_8c.html#a6780a9d34f029526febb9b8a26f1b0c5',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fselect_91',['FreeRTOS_select',['../_free_r_t_o_s___sockets_8c.html#a659a570c1f1b5a11c17d816cb5541291',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fsend_92',['FreeRTOS_send',['../_free_r_t_o_s___sockets_8c.html#abfb04a35d27c55380be674ebd8204351',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fsendpingrequest_93',['FreeRTOS_SendPingRequest',['../_free_r_t_o_s___i_p_8c.html#a0b7b0a9903a5a06d10b689ba9676a0f4',1,'FreeRTOS_IP.c']]], + ['freertos_5fsendpingrequestipv6_94',['FreeRTOS_SendPingRequestIPv6',['../_free_r_t_o_s___n_d_8c.html#a627c34fe71a9c809369dae7e2b3b04db',1,'FreeRTOS_ND.c']]], + ['freertos_5fsendto_95',['FreeRTOS_sendto',['../_free_r_t_o_s___sockets_8c.html#a1493cacf34d993b8b87c41242d7fc6d1',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fsetdnsippreference_96',['FreeRTOS_SetDNSIPPreference',['../_free_r_t_o_s___d_n_s_8c.html#aa77247177eee55cde80f32bafe380ae7',1,'FreeRTOS_DNS.c']]], + ['freertos_5fsetendpointconfiguration_97',['FreeRTOS_SetEndPointConfiguration',['../_free_r_t_o_s___i_p_8c.html#a8fddb08178fabd71e2ef53bd24d23a25',1,'FreeRTOS_IP.c']]], + ['freertos_5fsetsockopt_98',['FreeRTOS_setsockopt',['../_free_r_t_o_s___sockets_8c.html#a7faeae52e5489bc7b5ee8ab9392630d5',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fshutdown_99',['FreeRTOS_shutdown',['../_free_r_t_o_s___sockets_8c.html#af3c0198b40cbd5c5e4bb4f173df4fff1',1,'FreeRTOS_Sockets.c']]], + ['freertos_5fsocket_100',['FreeRTOS_socket',['../_free_r_t_o_s___sockets_8c.html#a0707f288bef6f9a6cafd3dc3c4cfab99',1,'FreeRTOS_Sockets.c']]], + ['freertos_5ftx_5fsize_101',['FreeRTOS_tx_size',['../_free_r_t_o_s___sockets_8c.html#af92a73b86b115ac2caeaf6d98d696723',1,'FreeRTOS_Sockets.c']]], + ['freertos_5ftx_5fspace_102',['FreeRTOS_tx_space',['../_free_r_t_o_s___sockets_8c.html#ab49ef118747de118579ce9ba6e2d3d10',1,'FreeRTOS_Sockets.c']]] +]; diff --git a/V4.3.1/search/functions_5.js b/V4.3.1/search/functions_5.js new file mode 100644 index 000000000..d8b602232 --- /dev/null +++ b/V4.3.1/search/functions_5.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['ltcpaddrxdata_0',['lTCPAddRxdata',['../_free_r_t_o_s___sockets_8c.html#a712ce92b8518f62444aad31e0fb1d424',1,'FreeRTOS_Sockets.c']]], + ['ltcpincrementtxposition_1',['lTCPIncrementTxPosition',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#ade7b7293181555c6a62ea9bac03becde',1,'FreeRTOS_TCP_WIN.c']]], + ['ltcpwindowrxcheck_2',['lTCPWindowRxCheck',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a996ad8a7076c54bb722cf1531471ae9f',1,'FreeRTOS_TCP_WIN.c']]], + ['ltcpwindowtxadd_3',['lTCPWindowTxAdd',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a26ee21f292a5c75d9700f154fbec8ea8',1,'FreeRTOS_TCP_WIN.c']]] +]; diff --git a/V4.3.1/search/functions_6.js b/V4.3.1/search/functions_6.js new file mode 100644 index 000000000..fdb99c227 --- /dev/null +++ b/V4.3.1/search/functions_6.js @@ -0,0 +1,177 @@ +var searchData= +[ + ['parsednsanswer_0',['parseDNSAnswer',['../_free_r_t_o_s___d_n_s___parser_8c.html#a304b39e800a157af0f7528a67c49275c',1,'FreeRTOS_DNS_Parser.c']]], + ['prepare_5fcachelookup_1',['Prepare_CacheLookup',['../_free_r_t_o_s___d_n_s___cache_8c.html#a2f8c3cb897d417bd429c13b97fe7fe44',1,'FreeRTOS_DNS_Cache.c']]], + ['preparereplydnsmessage_2',['prepareReplyDNSMessage',['../_free_r_t_o_s___d_n_s___parser_8c.html#a02585c8e23fcd7f4826dcdddeb93b07c',1,'FreeRTOS_DNS_Parser.c']]], + ['processicmppacket_3',['ProcessICMPPacket',['../_free_r_t_o_s___i_c_m_p_8c.html#a27d6a7b6e3efb00e558597b5c8f5b0c2',1,'FreeRTOS_ICMP.c']]], + ['prv_5finet_5fpton6_5fadd_5fnibble_4',['prv_inet_pton6_add_nibble',['../_free_r_t_o_s___i_pv6___sockets_8c.html#a11b544a8569ee1c4da17342b30ecf1a3',1,'FreeRTOS_IPv6_Sockets.c']]], + ['prv_5finet_5fpton6_5fset_5fzeros_5',['prv_inet_pton6_set_zeros',['../_free_r_t_o_s___i_pv6___sockets_8c.html#aaaf097aef7748874c88267f867518f62',1,'FreeRTOS_IPv6_Sockets.c']]], + ['prv_5fntop6_5fsearch_5fzeros_6',['prv_ntop6_search_zeros',['../_free_r_t_o_s___i_pv6___sockets_8c.html#a5d6f5268e731357abd6913ade4ea3f8c',1,'FreeRTOS_IPv6_Sockets.c']]], + ['prv_5fntop6_5fwrite_5fshort_7',['prv_ntop6_write_short',['../_free_r_t_o_s___i_pv6___sockets_8c.html#af949ffc76031a25b168fbd736c3d7ab4',1,'FreeRTOS_IPv6_Sockets.c']]], + ['prv_5fntop6_5fwrite_5fzeros_8',['prv_ntop6_write_zeros',['../_free_r_t_o_s___i_pv6___sockets_8c.html#a34e31c764d79624aa0d554d84463f345',1,'FreeRTOS_IPv6_Sockets.c']]], + ['prvacceptwaitclient_9',['prvAcceptWaitClient',['../_free_r_t_o_s___sockets_8c.html#a6bcec3c88c9bfe0a1ad7c8c88885a418',1,'FreeRTOS_Sockets.c']]], + ['prvallowippacketipv4_10',['prvAllowIPPacketIPv4',['../_free_r_t_o_s___i_pv4_8c.html#aef499c04b2f306a984f2c9b41743445d',1,'FreeRTOS_IPv4.c']]], + ['prvallowippacketipv6_11',['prvAllowIPPacketIPv6',['../_free_r_t_o_s___i_pv6_8c.html#a21f47d44d82997b75eb4b3fae7bccd14',1,'FreeRTOS_IPv6.c']]], + ['prvcachelookup_12',['prvCacheLookup',['../_free_r_t_o_s___a_r_p_8c.html#ac322f646992dc0ab71646682c73ff04b',1,'FreeRTOS_ARP.c']]], + ['prvcalldhcp_5fra_5fhandler_13',['prvCallDHCP_RA_Handler',['../_free_r_t_o_s___i_p_8c.html#a99f2d1ff9735bcab29e70c46affc21bc',1,'FreeRTOS_IP.c']]], + ['prvcheckip4headeroptions_14',['prvCheckIP4HeaderOptions',['../_free_r_t_o_s___i_pv4_8c.html#a528f5ba584afab6cc9df69222ee47647',1,'FreeRTOS_IPv4.c']]], + ['prvcheckoptions_15',['prvCheckOptions',['../_free_r_t_o_s___t_c_p___reception_8c.html#a1224fb3e9921e48932c5211dc3acf4b2',1,'FreeRTOS_TCP_Reception.c']]], + ['prvcheckrxdata_16',['prvCheckRxData',['../_free_r_t_o_s___t_c_p___reception_8c.html#a7717f08f62c80726946508abf3192c2c',1,'FreeRTOS_TCP_Reception.c']]], + ['prvchecksumicmpv6checks_17',['prvChecksumICMPv6Checks',['../_free_r_t_o_s___i_pv6___utils_8c.html#ad457bd089ee8ca81415d7258269a7499',1,'FreeRTOS_IPv6_Utils.c']]], + ['prvchecksumipv4checks_18',['prvChecksumIPv4Checks',['../_free_r_t_o_s___i_pv4___utils_8c.html#a769ea6ebe2eb010371d95aa361e03a95',1,'FreeRTOS_IPv4_Utils.c']]], + ['prvchecksumipv6checks_19',['prvChecksumIPv6Checks',['../_free_r_t_o_s___i_pv6___utils_8c.html#a402c22e904f15b201e8133cbc6695db3',1,'FreeRTOS_IPv6_Utils.c']]], + ['prvchecksumprotocolcalculate_20',['prvChecksumProtocolCalculate',['../_free_r_t_o_s___i_p___utils_8c.html#a9c3b73b3773e67b932ceae1bb819a7a0',1,'FreeRTOS_IP_Utils.c']]], + ['prvchecksumprotocolchecks_21',['prvChecksumProtocolChecks',['../_free_r_t_o_s___i_p___utils_8c.html#a8d439f96ef27eb4b4bb8e44597c7e49f',1,'FreeRTOS_IP_Utils.c']]], + ['prvchecksumprotocolmtucheck_22',['prvChecksumProtocolMTUCheck',['../_free_r_t_o_s___i_p___utils_8c.html#a4e2b3a98ddc895f238b4dff631fc4551',1,'FreeRTOS_IP_Utils.c']]], + ['prvchecksumprotocolsetchecksum_23',['prvChecksumProtocolSetChecksum',['../_free_r_t_o_s___i_p___utils_8c.html#a139d205a744822cca6f16f2e5aef1d40',1,'FreeRTOS_IP_Utils.c']]], + ['prvcheckwaitingbuffer_24',['prvCheckWaitingBuffer',['../_free_r_t_o_s___n_d_8c.html#afc2a6ecc454c9e097a7469f073400f5d',1,'FreeRTOS_ND.c']]], + ['prvclosedhcpsocket_25',['prvCloseDHCPSocket',['../_free_r_t_o_s___d_h_c_p_8c.html#a99005d3426c34cb0ce89bddcea733b6b',1,'FreeRTOS_DHCP.c']]], + ['prvclosedhcpv6socket_26',['prvCloseDHCPv6Socket',['../_free_r_t_o_s___d_h_c_pv6_8c.html#a512ea622e210b0e29d23bcff76251f3c',1,'FreeRTOS_DHCPv6.c']]], + ['prvcreatedhcpsocket_27',['prvCreateDHCPSocket',['../_free_r_t_o_s___d_h_c_p_8c.html#a95b0e85eb9f81c168788288e640d60d8',1,'FreeRTOS_DHCP.c']]], + ['prvcreatedhcpv6socket_28',['prvCreateDHCPv6Socket',['../_free_r_t_o_s___d_h_c_pv6_8c.html#a1d004771bd83c701abb8e9ff7d62a6fa',1,'FreeRTOS_DHCPv6.c']]], + ['prvcreatednsmessage_29',['prvCreateDNSMessage',['../_free_r_t_o_s___d_n_s_8c.html#a1bff86ae7d967cab8be4d8369279dd75',1,'FreeRTOS_DNS.c']]], + ['prvcreatepartdhcpmessage_30',['prvCreatePartDHCPMessage',['../_free_r_t_o_s___d_h_c_p_8c.html#a34a6843a4102f424c683e2a52325ceb6',1,'FreeRTOS_DHCP.c']]], + ['prvcreatesectors_31',['prvCreateSectors',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a4ce7e1d620e6b6384ef695bf959281d7',1,'FreeRTOS_TCP_WIN.c']]], + ['prvdeterminesocketsize_32',['prvDetermineSocketSize',['../_free_r_t_o_s___sockets_8c.html#a4ed71e4108c462911d2fa3229eec6df6',1,'FreeRTOS_Sockets.c']]], + ['prvdhcpv6_5fhandleoption_33',['prvDHCPv6_handleOption',['../_free_r_t_o_s___d_h_c_pv6_8c.html#a31cef0d480ce53ffb92d0c4ee9473778',1,'FreeRTOS_DHCPv6.c']]], + ['prvdhcpv6_5fhandlestatuscode_34',['prvDHCPv6_handleStatusCode',['../_free_r_t_o_s___d_h_c_pv6_8c.html#a58ecaa4592d2becee56df8d294e7ca33',1,'FreeRTOS_DHCPv6.c']]], + ['prvdhcpv6_5fsuboption_35',['prvDHCPv6_subOption',['../_free_r_t_o_s___d_h_c_pv6_8c.html#a5be4949d21b15caa4d92f928dd78abb7',1,'FreeRTOS_DHCPv6.c']]], + ['prvdhcpv6analyse_36',['prvDHCPv6Analyse',['../_free_r_t_o_s___d_h_c_pv6_8c.html#abc70a267733a82d23f6d50a0ac3fabdb',1,'FreeRTOS_DHCPv6.c']]], + ['prvdnsreply_37',['prvDNSReply',['../_free_r_t_o_s___d_n_s_8c.html#a61c4c2d5f3778e0994daed50802515eb',1,'FreeRTOS_DNS.c']]], + ['prvfillsockaddress_38',['prvFillSockAddress',['../_free_r_t_o_s___d_n_s_8c.html#ac912dabeefa1427f8ea2dae4ac390d9b',1,'FreeRTOS_DNS.c']]], + ['prvfindcacheentry_39',['prvFindCacheEntry',['../_free_r_t_o_s___a_r_p_8c.html#abddd085b5a86f104d453b4f82b92c1f1',1,'FreeRTOS_ARP.c']]], + ['prvfindentryindex_40',['prvFindEntryIndex',['../_free_r_t_o_s___d_n_s___cache_8c.html#aa5594603555bb562ecd763817fe61023',1,'FreeRTOS_DNS_Cache.c']]], + ['prvfindselectedsocket_41',['prvFindSelectedSocket',['../_free_r_t_o_s___sockets_8c.html#a69915c323634b32c5534bd1a17b79673',1,'FreeRTOS_Sockets.c']]], + ['prvforwardtxpacket_42',['prvForwardTxPacket',['../_free_r_t_o_s___i_p_8c.html#a4cc225ae2aa0e148caab841e3d67dbb0',1,'FreeRTOS_IP.c']]], + ['prvgetcacheipentry_43',['prvGetCacheIPEntry',['../_free_r_t_o_s___d_n_s___cache_8c.html#a5ac4e4faf4dbdf99c7ef9b5aba61cdba',1,'FreeRTOS_DNS_Cache.c']]], + ['prvgetchecksumfrompacket_44',['prvGetChecksumFromPacket',['../_free_r_t_o_s___i_p___utils_8c.html#aae4fbd92cbabc7b66042531f71591cab',1,'FreeRTOS_IP_Utils.c']]], + ['prvgethostbyname_45',['prvGetHostByName',['../_free_r_t_o_s___d_n_s_8c.html#aae00df5cb0d4351f877dd9c27cdca254',1,'FreeRTOS_DNS.c']]], + ['prvgethostbynameop_46',['prvGetHostByNameOp',['../_free_r_t_o_s___d_n_s_8c.html#a47a7649d02e497d1f35519a7ea533ec3',1,'FreeRTOS_DNS.c']]], + ['prvgethostbynameop_5fwithretry_47',['prvGetHostByNameOp_WithRetry',['../_free_r_t_o_s___d_n_s_8c.html#a44442f1111fa24e375378dceaa91fa22',1,'FreeRTOS_DNS.c']]], + ['prvgetpayloadbuffer_48',['prvGetPayloadBuffer',['../_free_r_t_o_s___d_n_s_8c.html#ab83fd4564829d4495ee1345bb7de6ee7',1,'FreeRTOS_DNS.c']]], + ['prvgetprivateportnumber_49',['prvGetPrivatePortNumber',['../_free_r_t_o_s___sockets_8c.html#a83a99d42729cdba57e78dd6c3c9e66e1',1,'FreeRTOS_Sockets.c']]], + ['prvhandleestablished_50',['prvHandleEstablished',['../_free_r_t_o_s___t_c_p___state___handling_8c.html#a321329a25c8f6de7856bec44678d6326',1,'FreeRTOS_TCP_State_Handling.c']]], + ['prvhandleethernetpacket_51',['prvHandleEthernetPacket',['../_free_r_t_o_s___i_p_8c.html#a9d5b9dd29ac8f3830bc4b1531b10228a',1,'FreeRTOS_IP.c']]], + ['prvhandlelisten_52',['prvHandleListen',['../_free_r_t_o_s___t_c_p___state___handling_8c.html#a8036de1fb5d65093adc7ceffdfea1e38',1,'FreeRTOS_TCP_State_Handling.c']]], + ['prvhandlelisten_5fipv4_53',['prvHandleListen_IPV4',['../_free_r_t_o_s___t_c_p___state___handling___i_pv4_8c.html#ac65150ab8106fa2c44cff0a47fa37d29',1,'FreeRTOS_TCP_State_Handling_IPv4.c']]], + ['prvhandlelisten_5fipv6_54',['prvHandleListen_IPV6',['../_free_r_t_o_s___t_c_p___state___handling___i_pv6_8c.html#a4d48639cba7100045aaa8dd5af9deffb',1,'FreeRTOS_TCP_State_Handling_IPv6.c']]], + ['prvhandlesynreceived_55',['prvHandleSynReceived',['../_free_r_t_o_s___t_c_p___state___handling_8c.html#a38bfd1b31c5ec1532040b5c728b52222',1,'FreeRTOS_TCP_State_Handling.c']]], + ['prvhandlewaitingeleasedaddress_56',['prvHandleWaitingeLeasedAddress',['../_free_r_t_o_s___d_h_c_p_8c.html#ab3a60d22692a9a3ba83958b6f2231eec',1,'FreeRTOS_DHCP.c']]], + ['prvincreasedns4index_57',['prvIncreaseDNS4Index',['../_free_r_t_o_s___d_n_s_8c.html#ad25ac051a64099fc2336de41526aee68',1,'FreeRTOS_DNS.c']]], + ['prvincreasedns6index_58',['prvIncreaseDNS6Index',['../_free_r_t_o_s___d_n_s_8c.html#a14e0f0cfa46b54efecf8089cf02c6701',1,'FreeRTOS_DNS.c']]], + ['prvinitialisedhcp_59',['prvInitialiseDHCP',['../_free_r_t_o_s___d_h_c_p_8c.html#a3ae932b479ce46d504c1a2fd065aa4b3',1,'FreeRTOS_DHCP.c']]], + ['prvinitialisedhcpv6_60',['prvInitialiseDHCPv6',['../_free_r_t_o_s___d_h_c_pv6_8c.html#a4f540bdd20f082cd8b75b19f262d6778',1,'FreeRTOS_DHCPv6.c']]], + ['prvinitialisetcpfields_61',['prvInitialiseTCPFields',['../_free_r_t_o_s___sockets_8c.html#acbf9d049905e0a91719a8c5e90c2391b',1,'FreeRTOS_Sockets.c']]], + ['prvinsertcacheentry_62',['prvInsertCacheEntry',['../_free_r_t_o_s___d_n_s___cache_8c.html#acdd5cc3cdd9fd7c80c1b00c22f6872fd',1,'FreeRTOS_DNS_Cache.c']]], + ['prviptask_63',['prvIPTask',['../_free_r_t_o_s___i_p_8c.html#a4a02bc45b29f74e5f48bd71bca5c1b61',1,'FreeRTOS_IP.c']]], + ['prviptask_5fcheckpendingevents_64',['prvIPTask_CheckPendingEvents',['../_free_r_t_o_s___i_p_8c.html#a89dd69e63b5dedbd950715dc2f782e54',1,'FreeRTOS_IP.c']]], + ['prviptask_5finitialise_65',['prvIPTask_Initialise',['../_free_r_t_o_s___i_p_8c.html#adf3f060de96e9fab30baaf4629748c87',1,'FreeRTOS_IP.c']]], + ['prviptimercheck_66',['prvIPTimerCheck',['../_free_r_t_o_s___i_p___timers_8c.html#ad2a2e3f4cbb0aee222276cfbae2b1590',1,'FreeRTOS_IP_Timers.c']]], + ['prviptimerreload_67',['prvIPTimerReload',['../_free_r_t_o_s___i_p___timers_8c.html#ae25d502fab7e4af29bc9b30dffc75ccf',1,'FreeRTOS_IP_Timers.c']]], + ['prviptimerstart_68',['prvIPTimerStart',['../_free_r_t_o_s___i_p___timers_8c.html#a6bbcca14e07b67e72962278309dd8d07',1,'FreeRTOS_IP_Timers.c']]], + ['prvisoptionlengthvalid_69',['prvIsOptionLengthValid',['../_free_r_t_o_s___d_h_c_pv6_8c.html#a9f9e5034128c358c55459a1a3449e4ea',1,'FreeRTOS_DHCPv6.c']]], + ['prvisvaliddhcpresponse_70',['prvIsValidDHCPResponse',['../_free_r_t_o_s___d_h_c_p_8c.html#afd01819d69ba0723f8e7e4d1323cfa46',1,'FreeRTOS_DHCP.c']]], + ['prvmacresolve_71',['prvMACResolve',['../_free_r_t_o_s___n_d_8c.html#a715747d4e7d10e9553fecde26dd35116',1,'FreeRTOS_ND.c']]], + ['prvmakesuresocketisbound_72',['prvMakeSureSocketIsBound',['../_free_r_t_o_s___sockets_8c.html#a3c30950fb7db5b68e0c4dcbbf838049b',1,'FreeRTOS_Sockets.c']]], + ['prvndcachelookup_73',['prvNDCacheLookup',['../_free_r_t_o_s___n_d_8c.html#a74b412decde4b6f0a0e077e52484c6fe',1,'FreeRTOS_ND.c']]], + ['prvpacketbuffer_5fto_5fnetworkbuffer_74',['prvPacketBuffer_to_NetworkBuffer',['../_free_r_t_o_s___i_p___utils_8c.html#afb009e3856db87301868748c1732f74d',1,'FreeRTOS_IP_Utils.c']]], + ['prvpreparelookup_75',['prvPrepareLookup',['../_free_r_t_o_s___d_n_s_8c.html#a6518b8b614c65029b30532e54d2052fc',1,'FreeRTOS_DNS.c']]], + ['prvprocessdhcpreplies_76',['prvProcessDHCPReplies',['../_free_r_t_o_s___d_h_c_p_8c.html#a5895b8785a72504d303bf90c16101e48',1,'FreeRTOS_DHCP.c']]], + ['prvprocessethernetpacket_77',['prvProcessEthernetPacket',['../_free_r_t_o_s___i_p_8c.html#abbd5bae218c03d5d539d8f2fa8148a87',1,'FreeRTOS_IP.c']]], + ['prvprocessicmpechoreply_78',['prvProcessICMPEchoReply',['../_free_r_t_o_s___i_c_m_p_8c.html#a32da36155e505f3243fcd7be1caf69d5',1,'FreeRTOS_ICMP.c']]], + ['prvprocessicmpechorequest_79',['prvProcessICMPEchoRequest',['../_free_r_t_o_s___i_c_m_p_8c.html#a50504a5bd6ca5c1c9fd77b160795cde7',1,'FreeRTOS_ICMP.c']]], + ['prvprocessicmpmessage_5fipv6_80',['prvProcessICMPMessage_IPv6',['../_free_r_t_o_s___n_d_8c.html#a22a9131182e83781ae248fb18c70fcd9',1,'FreeRTOS_ND.c']]], + ['prvprocessipeventsandtimers_81',['prvProcessIPEventsAndTimers',['../_free_r_t_o_s___i_p_8c.html#ac743ac4ccc77c6251f5901abc2c48267',1,'FreeRTOS_IP.c']]], + ['prvprocessippacket_82',['prvProcessIPPacket',['../_free_r_t_o_s___i_p_8c.html#ada7f0aa301b6d02b6b4e1ff991aa09d7',1,'FreeRTOS_IP.c']]], + ['prvprocessnetworkdownevent_83',['prvProcessNetworkDownEvent',['../_free_r_t_o_s___i_p___utils_8c.html#a9fceb7bed81db2c40bf5418ee888b262',1,'FreeRTOS_IP_Utils.c']]], + ['prvprocessudppacket_84',['prvProcessUDPPacket',['../_free_r_t_o_s___i_p_8c.html#a941a2039c0e5ab007dc585ee34ee07a3',1,'FreeRTOS_IP.c']]], + ['prvreaddnscache_85',['prvReadDNSCache',['../_free_r_t_o_s___d_n_s___cache_8c.html#a8102346f8707f5c472feeeeeae432c64',1,'FreeRTOS_DNS_Cache.c']]], + ['prvreadsackoption_86',['prvReadSackOption',['../_free_r_t_o_s___t_c_p___reception_8c.html#a4fcd8c12ef21afe4e11a89a31b74404b',1,'FreeRTOS_TCP_Reception.c']]], + ['prvrecvdata_87',['prvRecvData',['../_free_r_t_o_s___sockets_8c.html#a5af9048971743e96f7883cb4acfe84c6',1,'FreeRTOS_Sockets.c']]], + ['prvrecvfrom_5fcopypacket_88',['prvRecvFrom_CopyPacket',['../_free_r_t_o_s___sockets_8c.html#a968e60c476fdbd3f7eeaa7c50480c82f',1,'FreeRTOS_Sockets.c']]], + ['prvrecvfromwaitforpacket_89',['prvRecvFromWaitForPacket',['../_free_r_t_o_s___sockets_8c.html#aa1b36baae58aef58b9375eab39aee05a',1,'FreeRTOS_Sockets.c']]], + ['prvrecvwait_90',['prvRecvWait',['../_free_r_t_o_s___sockets_8c.html#a9a47721c702156a1c39d2720a4fe0ff6',1,'FreeRTOS_Sockets.c']]], + ['prvreturnicmp_5fipv6_91',['prvReturnICMP_IPv6',['../_free_r_t_o_s___n_d_8c.html#a9462f6e1f9c7d1bf8c5d69b1f298b9b5',1,'FreeRTOS_ND.c']]], + ['prvsendbuffer_92',['prvSendBuffer',['../_free_r_t_o_s___d_n_s_8c.html#ab33866cbc083796274436528d88b5e3b',1,'FreeRTOS_DNS.c']]], + ['prvsenddata_93',['prvSendData',['../_free_r_t_o_s___t_c_p___transmission_8c.html#a99b74fbac3fa3e96746fa265b62850fa',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvsenddhcpdiscover_94',['prvSendDHCPDiscover',['../_free_r_t_o_s___d_h_c_p_8c.html#ab94b9256542eb20bfe564d367c6479e2',1,'FreeRTOS_DHCP.c']]], + ['prvsenddhcpmessage_95',['prvSendDHCPMessage',['../_free_r_t_o_s___d_h_c_pv6_8c.html#aa00571049a21829c368dfe6c8d51dedb',1,'FreeRTOS_DHCPv6.c']]], + ['prvsenddhcprequest_96',['prvSendDHCPRequest',['../_free_r_t_o_s___d_h_c_p_8c.html#a8d8bac6f7c4233ab1e50c0e36ccb58bb',1,'FreeRTOS_DHCP.c']]], + ['prvsendto_5factualsend_97',['prvSendTo_ActualSend',['../_free_r_t_o_s___sockets_8c.html#aabcf8754bba9ed01cbbf0d90723c7e61',1,'FreeRTOS_Sockets.c']]], + ['prvsendudppacket_98',['prvSendUDPPacket',['../_free_r_t_o_s___sockets_8c.html#a8ffa669a1f194a3dbe1d5c07bc21633e',1,'FreeRTOS_Sockets.c']]], + ['prvsetchecksuminpacket_99',['prvSetChecksumInPacket',['../_free_r_t_o_s___i_p___utils_8c.html#a6029b5f8145e1d1f7a6682d97deb548c',1,'FreeRTOS_IP_Utils.c']]], + ['prvsetoptioncloseaftersend_100',['prvSetOptionCloseAfterSend',['../_free_r_t_o_s___sockets_8c.html#a439d14826ca9205df14d7c3b785e5a12',1,'FreeRTOS_Sockets.c']]], + ['prvsetoptionlowhighwater_101',['prvSetOptionLowHighWater',['../_free_r_t_o_s___sockets_8c.html#afbd323a0b3912d4dc2f58b8ac9efa4a2',1,'FreeRTOS_Sockets.c']]], + ['prvsetoptionreuselistensocket_102',['prvSetOptionReuseListenSocket',['../_free_r_t_o_s___sockets_8c.html#a2b41be08f398d5b8109d5a426ab45a2f',1,'FreeRTOS_Sockets.c']]], + ['prvsetoptions_103',['prvSetOptions',['../_free_r_t_o_s___t_c_p___transmission_8c.html#ab577a58c3cb609f3951777845581c06c',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvsetoptionsetfullsize_104',['prvSetOptionSetFullSize',['../_free_r_t_o_s___sockets_8c.html#aac19c7777a5cefe192dbd367a2aaf040',1,'FreeRTOS_Sockets.c']]], + ['prvsetoptionstoprx_105',['prvSetOptionStopRX',['../_free_r_t_o_s___sockets_8c.html#a79f327cc632083fa5add6e0216de812d',1,'FreeRTOS_Sockets.c']]], + ['prvsetoptiontcpwindows_106',['prvSetOptionTCPWindows',['../_free_r_t_o_s___sockets_8c.html#a6bb4ab97c34d949b5914ccfb386120b5',1,'FreeRTOS_Sockets.c']]], + ['prvsetoptiontimeout_107',['prvSetOptionTimeout',['../_free_r_t_o_s___sockets_8c.html#ad7a15db6b6f3f2b505f9ca93874ef4e8',1,'FreeRTOS_Sockets.c']]], + ['prvsetsynackoptions_108',['prvSetSynAckOptions',['../_free_r_t_o_s___t_c_p___transmission_8c.html#a0afda6d47aedbb3e2b57bf62cc7a96fc',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvsinglesteptcpheaderoptions_109',['prvSingleStepTCPHeaderOptions',['../_free_r_t_o_s___t_c_p___reception_8c.html#a87834ef749fe4fc672f0bc76575db2d3',1,'FreeRTOS_TCP_Reception.c']]], + ['prvsocketbindadd_110',['prvSocketBindAdd',['../_free_r_t_o_s___sockets_8c.html#a3d826bd199228a7b7411b0d73c3068c5',1,'FreeRTOS_Sockets.c']]], + ['prvsocketsetmss_111',['prvSocketSetMSS',['../_free_r_t_o_s___t_c_p___utils_8c.html#a1cfb008d1b7a0da95f9907b536af9f14',1,'FreeRTOS_TCP_Utils.c']]], + ['prvsocketsetmss_5fipv4_112',['prvSocketSetMSS_IPV4',['../_free_r_t_o_s___t_c_p___utils___i_pv4_8c.html#a5b889490485f8f333603b2d950ca17e6',1,'FreeRTOS_TCP_Utils_IPv4.c']]], + ['prvsocketsetmss_5fipv6_113',['prvSocketSetMSS_IPV6',['../_free_r_t_o_s___t_c_p___utils___i_pv6_8c.html#a2291c5b8672ffad2b3d3999c5c2f5690',1,'FreeRTOS_TCP_Utils_IPv6.c']]], + ['prvsockopt_5fso_5fbuffer_114',['prvSockopt_so_buffer',['../_free_r_t_o_s___sockets_8c.html#a43126375c017bf52614bff3f1702d1b1',1,'FreeRTOS_Sockets.c']]], + ['prvstartlookup_115',['prvStartLookup',['../_free_r_t_o_s___u_d_p___i_pv6_8c.html#a2c258ac270f8ee3e64deccf8ae6856b1',1,'FreeRTOS_UDP_IPv6.c']]], + ['prvstorerxdata_116',['prvStoreRxData',['../_free_r_t_o_s___t_c_p___reception_8c.html#a487796a6eddaa24e9ece51d661a8b34b',1,'FreeRTOS_TCP_Reception.c']]], + ['prvtcpaddtxdata_117',['prvTCPAddTxData',['../_free_r_t_o_s___t_c_p___transmission_8c.html#a5b9ad490c427652182bfe046f048f8ff',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcpbufferresize_118',['prvTCPBufferResize',['../_free_r_t_o_s___t_c_p___transmission_8c.html#aa090f2ad2506d8e3336fc6f63278feb5',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcpconnectstart_119',['prvTCPConnectStart',['../_free_r_t_o_s___sockets_8c.html#a5d910cb9c6b4f63d7f8a75cd1ed7fa62',1,'FreeRTOS_Sockets.c']]], + ['prvtcpcreatestream_120',['prvTCPCreateStream',['../_free_r_t_o_s___sockets_8c.html#a6fbe49f69aeaa10ff6d5d7d2cc82c71d',1,'FreeRTOS_Sockets.c']]], + ['prvtcpcreatewindow_121',['prvTCPCreateWindow',['../_free_r_t_o_s___t_c_p___transmission_8c.html#ab6e6f04f594cde189d5602323d95f3ed',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcphandlefin_122',['prvTCPHandleFin',['../_free_r_t_o_s___t_c_p___state___handling_8c.html#aed19306eb74e28863615dd7be8e2e1a7',1,'FreeRTOS_TCP_State_Handling.c']]], + ['prvtcphandlestate_123',['prvTCPHandleState',['../_free_r_t_o_s___t_c_p___state___handling_8c.html#ab9bdd210a90bd874dfbac809478edc93',1,'FreeRTOS_TCP_State_Handling.c']]], + ['prvtcpmakesureprepared_124',['prvTCPMakeSurePrepared',['../_free_r_t_o_s___t_c_p___transmission_8c.html#a3ea0dd4d630dc26f7eb5b2db32b4616b',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcpnexttimeout_125',['prvTCPNextTimeout',['../_free_r_t_o_s___t_c_p___i_p_8c.html#a74961b17b29f2fb0f4c8fa02222e6f96',1,'FreeRTOS_TCP_IP.c']]], + ['prvtcpprepareconnect_126',['prvTCPPrepareConnect',['../_free_r_t_o_s___t_c_p___transmission_8c.html#a259d393932637c52fd7e1eb22c10b3c6',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcpprepareconnect_5fipv4_127',['prvTCPPrepareConnect_IPV4',['../_free_r_t_o_s___t_c_p___transmission___i_pv4_8c.html#a1ec21137a6005e062b42da18187aabc7',1,'FreeRTOS_TCP_Transmission_IPv4.c']]], + ['prvtcpprepareconnect_5fipv6_128',['prvTCPPrepareConnect_IPV6',['../_free_r_t_o_s___t_c_p___transmission___i_pv6_8c.html#a550ee4284529cace9688b6859c47028e',1,'FreeRTOS_TCP_Transmission_IPv6.c']]], + ['prvtcppreparesend_129',['prvTCPPrepareSend',['../_free_r_t_o_s___t_c_p___transmission_8c.html#a4d4b994a274e87b07332b08353137ea5',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcpreturn_5fchecktcpwindow_130',['prvTCPReturn_CheckTCPWindow',['../_free_r_t_o_s___t_c_p___transmission_8c.html#acce20ac8db15356bd8a29f60ea781036',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcpreturn_5fsetendpoint_131',['prvTCPReturn_SetEndPoint',['../_free_r_t_o_s___t_c_p___transmission_8c.html#a4b27f066e7154969436da6382b624baa',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcpreturn_5fsetsequencenumber_132',['prvTCPReturn_SetSequenceNumber',['../_free_r_t_o_s___t_c_p___transmission_8c.html#a3ab78a8fa1dbfc0a793a5abf60ebc407',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcpreturnpacket_133',['prvTCPReturnPacket',['../_free_r_t_o_s___t_c_p___transmission_8c.html#a32cb0d2de80d881f555d3191973ccd69',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcpreturnpacket_5fipv4_134',['prvTCPReturnPacket_IPV4',['../_free_r_t_o_s___t_c_p___transmission___i_pv4_8c.html#a0bfe889893e2b82a09ea5c3e1b665e70',1,'FreeRTOS_TCP_Transmission_IPv4.c']]], + ['prvtcpreturnpacket_5fipv6_135',['prvTCPReturnPacket_IPV6',['../_free_r_t_o_s___t_c_p___transmission___i_pv6_8c.html#a80cdd0fd9ce235f33b2508791cfb4321',1,'FreeRTOS_TCP_Transmission_IPv6.c']]], + ['prvtcpsendchallengeack_136',['prvTCPSendChallengeAck',['../_free_r_t_o_s___t_c_p___transmission_8c.html#aa9067b98a7ea9cc43c47c37301b87e15',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcpsendcheck_137',['prvTCPSendCheck',['../_free_r_t_o_s___sockets_8c.html#ad719999c8bcbddf392affdeb6be2f554',1,'FreeRTOS_Sockets.c']]], + ['prvtcpsendloop_138',['prvTCPSendLoop',['../_free_r_t_o_s___sockets_8c.html#a5a888764ddebf603eab643dc1655fe54',1,'FreeRTOS_Sockets.c']]], + ['prvtcpsendpacket_139',['prvTCPSendPacket',['../_free_r_t_o_s___t_c_p___transmission_8c.html#a59dbafb65b4cae84ca1a1b38f9f099fc',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcpsendrepeated_140',['prvTCPSendRepeated',['../_free_r_t_o_s___t_c_p___transmission_8c.html#a2b21901fdf5e29d55fa151a2f0d05f10',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcpsendreset_141',['prvTCPSendReset',['../_free_r_t_o_s___t_c_p___transmission_8c.html#a8bec9dce69a957e333a0294f95d8d3ab',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcpsendspecialpackethelper_142',['prvTCPSendSpecialPacketHelper',['../_free_r_t_o_s___t_c_p___transmission_8c.html#a53ecf89c3a0fc87aa1e5781bf47f88d9',1,'FreeRTOS_TCP_Transmission.c']]], + ['prvtcpsendspecialpkthelper_5fipv4_143',['prvTCPSendSpecialPktHelper_IPV4',['../_free_r_t_o_s___t_c_p___transmission___i_pv4_8c.html#ad9a7a44c7c8dd5ca463f9ac031f286fb',1,'FreeRTOS_TCP_Transmission_IPv4.c']]], + ['prvtcpsendspecialpkthelper_5fipv6_144',['prvTCPSendSpecialPktHelper_IPV6',['../_free_r_t_o_s___t_c_p___transmission___i_pv6_8c.html#a2a925b719c561bd0cacf5cec06ffcb7c',1,'FreeRTOS_TCP_Transmission_IPv6.c']]], + ['prvtcpsetsocketcount_145',['prvTCPSetSocketCount',['../_free_r_t_o_s___sockets_8c.html#a91064db1bf7a4b1f49922c8f9927c701',1,'FreeRTOS_Sockets.c']]], + ['prvtcpsocketcopy_146',['prvTCPSocketCopy',['../_free_r_t_o_s___t_c_p___state___handling_8c.html#abd1c671cd3f1b583d6211bfac1117879',1,'FreeRTOS_TCP_State_Handling.c']]], + ['prvtcpsocketisactive_147',['prvTCPSocketIsActive',['../_free_r_t_o_s___t_c_p___state___handling_8c.html#aafd1394d32f3af98d7926aad2039eb0a',1,'FreeRTOS_TCP_State_Handling.c']]], + ['prvtcptouchsocket_148',['prvTCPTouchSocket',['../_free_r_t_o_s___t_c_p___i_p_8c.html#a51ac6964f3af632cb82f7710ad2bc923',1,'FreeRTOS_TCP_IP.c']]], + ['prvtcpwindowfastretransmit_149',['prvTCPWindowFastRetransmit',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#ac472739d521ae909bade3efb8c1678d1',1,'FreeRTOS_TCP_WIN.c']]], + ['prvtcpwindowrx_5fexpectedrx_150',['prvTCPWindowRx_ExpectedRX',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a5b2f973302c6679c82282dff85d56194',1,'FreeRTOS_TCP_WIN.c']]], + ['prvtcpwindowrx_5funexpectedrx_151',['prvTCPWindowRx_UnexpectedRX',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a7817bd772d0e4c3b6b74735bc545e173',1,'FreeRTOS_TCP_WIN.c']]], + ['prvtcpwindowtxadd_5ffrontsegment_152',['prvTCPWindowTxAdd_FrontSegment',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a11f481e535cab78b441dce33e0284d18',1,'FreeRTOS_TCP_WIN.c']]], + ['prvtcpwindowtxcheckack_153',['prvTCPWindowTxCheckAck',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#ac97053985dc382025116f6a528ace15e',1,'FreeRTOS_TCP_WIN.c']]], + ['prvtcpwindowtxcheckack_5fcalcsrtt_154',['prvTCPWindowTxCheckAck_CalcSRTT',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#aaeabad7a3a395442aab37b86b7b1699d',1,'FreeRTOS_TCP_WIN.c']]], + ['prvtcpwindowtxhasspace_155',['prvTCPWindowTxHasSpace',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a633c1b1230a3c8c269c1af1a0fda8eb8',1,'FreeRTOS_TCP_WIN.c']]], + ['prvupdatecacheentry_156',['prvUpdateCacheEntry',['../_free_r_t_o_s___d_n_s___cache_8c.html#a4ec9234ed4ce9c9c645b600a8e5f62a9',1,'FreeRTOS_DNS_Cache.c']]], + ['prvvalidsocket_157',['prvValidSocket',['../_free_r_t_o_s___sockets_8c.html#a4328ec58511a541031cc6a60da027ab4',1,'FreeRTOS_Sockets.c']]], + ['prvwinscalefactor_158',['prvWinScaleFactor',['../_free_r_t_o_s___t_c_p___transmission_8c.html#aed3d321465a45d65a96c7762cd5a8612',1,'FreeRTOS_TCP_Transmission.c']]], + ['pucbitconfig_5fpeek_5flast_5findex_5fuc_159',['pucBitConfig_peek_last_index_uc',['../_free_r_t_o_s___bit_config_8c.html#a0a2be6de526e1d51f6bb3b303506046e',1,'FreeRTOS_BitConfig.c']]], + ['pvsocketgetsocketid_160',['pvSocketGetSocketID',['../_free_r_t_o_s___sockets_8c.html#a6b7918fd359b3f0f5b6af0e233c831b0',1,'FreeRTOS_Sockets.c']]], + ['pxduplicatenetworkbufferwithdescriptor_161',['pxDuplicateNetworkBufferWithDescriptor',['../_free_r_t_o_s___i_p___utils_8c.html#ae2d3f7986eb4951bfe67a9fd5506f6f0',1,'FreeRTOS_IP_Utils.c']]], + ['pxeasyfit_162',['pxEasyFit',['../_free_r_t_o_s___routing_8c.html#a9b58bea49b0ffe6840b79028840cc8ef',1,'FreeRTOS_Routing.c']]], + ['pxfindlocalendpoint_163',['pxFindLocalEndpoint',['../_free_r_t_o_s___n_d_8c.html#a6297d8254ece5d6cfed45407695c13db',1,'FreeRTOS_ND.c']]], + ['pxgetendpoint_164',['pxGetEndpoint',['../_free_r_t_o_s___u_d_p___i_pv6_8c.html#a82489d1e5914a9d10ee673578d6b37b5',1,'FreeRTOS_UDP_IPv6.c']]], + ['pxgetsocketendpoint_165',['pxGetSocketEndpoint',['../_free_r_t_o_s___routing_8c.html#a57751b4766afd1d047cb15e63e1078d9',1,'FreeRTOS_Routing.c']]], + ['pxlistfindlistitemwithvalue_166',['pxListFindListItemWithValue',['../_free_r_t_o_s___sockets_8c.html#a0788754fab0379fd522b0ff849692fc4',1,'FreeRTOS_Sockets.c']]], + ['pxnew_5faddrinfo_167',['pxNew_AddrInfo',['../_free_r_t_o_s___d_n_s_8c.html#a23c3f105cd946cc194c3f7e340868faf',1,'FreeRTOS_DNS.c']]], + ['pxtcpsocketlookup_168',['pxTCPSocketLookup',['../_free_r_t_o_s___sockets_8c.html#a42c75219e2e081ac86770124f07cfd36',1,'FreeRTOS_Sockets.c']]], + ['pxtcpsocketlookup_5fipv6_169',['pxTCPSocketLookup_IPv6',['../_free_r_t_o_s___i_pv6___sockets_8c.html#a939cc79a6128358461eb6893b42a5f40',1,'FreeRTOS_IPv6_Sockets.c']]], + ['pxtcpwindowtx_5fgettxqueue_170',['pxTCPWindowTx_GetTXQueue',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a909bd08b00a92736219230045de9f90c',1,'FreeRTOS_TCP_WIN.c']]], + ['pxtcpwindowtx_5fgetwaitqueue_171',['pxTCPWindowTx_GetWaitQueue',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a3f10516b034b040a345d3a6888d045b2',1,'FreeRTOS_TCP_WIN.c']]], + ['pxudppayloadbuffer_5fto_5fnetworkbuffer_172',['pxUDPPayloadBuffer_to_NetworkBuffer',['../_free_r_t_o_s___i_p___utils_8c.html#a6d4a72619efccc84678a0ff7f1468a73',1,'FreeRTOS_IP_Utils.c']]], + ['pxudpsocketlookup_173',['pxUDPSocketLookup',['../_free_r_t_o_s___sockets_8c.html#ac3bf0f1817a52cf72307092b6e5cdcbf',1,'FreeRTOS_Sockets.c']]] +]; diff --git a/V4.3.1/search/functions_7.js b/V4.3.1/search/functions_7.js new file mode 100644 index 000000000..c261de566 --- /dev/null +++ b/V4.3.1/search/functions_7.js @@ -0,0 +1,30 @@ +var searchData= +[ + ['ucasciitohex_0',['ucASCIIToHex',['../_free_r_t_o_s___sockets_8c.html#a685a90117d647bdc48393c4c649c758e',1,'FreeRTOS_Sockets.c']]], + ['ucbitconfig_5fread_5f8_1',['ucBitConfig_read_8',['../_free_r_t_o_s___bit_config_8c.html#a0903cf96db1fac03a842bc47bf8de8f2',1,'FreeRTOS_BitConfig.c']]], + ['ulbitconfig_5fread_5f32_2',['ulBitConfig_read_32',['../_free_r_t_o_s___bit_config_8c.html#a23344d486c818bcb5d34e1f490195a15',1,'FreeRTOS_BitConfig.c']]], + ['ulchar2u32_3',['ulChar2u32',['../_free_r_t_o_s___i_p___utils_8c.html#ac672cbd6cb4f7131f7d69e3dc125f6c6',1,'FreeRTOS_IP_Utils.c']]], + ['uldnshandlepacket_4',['ulDNSHandlePacket',['../_free_r_t_o_s___d_n_s_8c.html#ae560e9af4e296059183eb6ddbe9458a1',1,'FreeRTOS_DNS.c']]], + ['ulnbnshandlepacket_5',['ulNBNSHandlePacket',['../_free_r_t_o_s___d_n_s_8c.html#a9da21a35903e781448c9d2bc89075beb',1,'FreeRTOS_DNS.c']]], + ['ultcpwindowtxack_6',['ulTCPWindowTxAck',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a4a87a9463c8daa90d88ebf25427f65af',1,'FreeRTOS_TCP_WIN.c']]], + ['ultcpwindowtxget_7',['ulTCPWindowTxGet',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a243b172dce331d908977afee9fceb09e',1,'FreeRTOS_TCP_WIN.c']]], + ['ultcpwindowtxsack_8',['ulTCPWindowTxSack',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a6b8d5c58d868eb5cb47ac185897bc6ab',1,'FreeRTOS_TCP_WIN.c']]], + ['ultimergetage_9',['ulTimerGetAge',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a183f7f0caa41207e80e13fc41c4fdec3',1,'FreeRTOS_TCP_WIN.c']]], + ['usbitconfig_5fread_5f16_10',['usBitConfig_read_16',['../_free_r_t_o_s___bit_config_8c.html#aa0e58c69716ec77da30380e8de3c94cc',1,'FreeRTOS_BitConfig.c']]], + ['uschar2u16_11',['usChar2u16',['../_free_r_t_o_s___i_p___utils_8c.html#af055f7ec0a669b54eb296f2e5f4eecb9',1,'FreeRTOS_IP_Utils.c']]], + ['usgeneratechecksum_12',['usGenerateChecksum',['../_free_r_t_o_s___i_p___utils_8c.html#a97162cfd5b071ccee8fec503879a3e43',1,'FreeRTOS_IP_Utils.c']]], + ['usgenerateprotocolchecksum_13',['usGenerateProtocolChecksum',['../_free_r_t_o_s___i_p___utils_8c.html#aee508999401118607a0d886a7d7d9a36',1,'FreeRTOS_IP_Utils.c']]], + ['usgetextensionheaderlength_14',['usGetExtensionHeaderLength',['../_free_r_t_o_s___i_pv6___utils_8c.html#a8d34793d4b80ccbb7e6001ccf026b497',1,'FreeRTOS_IPv6_Utils.c']]], + ['uxhexprintshort_15',['uxHexPrintShort',['../_free_r_t_o_s___i_pv6___sockets_8c.html#a9698baef39b76df6f98f46de8e07c9ed',1,'FreeRTOS_IPv6_Sockets.c']]], + ['uxipheadersizepacket_16',['uxIPHeaderSizePacket',['../_free_r_t_o_s___i_p_8c.html#a1c793b13fb2695dd07c305662e273a64',1,'FreeRTOS_IP.c']]], + ['uxipheadersizesocket_17',['uxIPHeaderSizeSocket',['../_free_r_t_o_s___i_p_8c.html#aa561be59ef3d1ccddb8c6380cd43baa7',1,'FreeRTOS_IP.c']]], + ['uxstreambufferadd_18',['uxStreamBufferAdd',['../_free_r_t_o_s___stream___buffer_8c.html#af5c74e803e5fb43bb7882bf3187f5fcf',1,'FreeRTOS_Stream_Buffer.c']]], + ['uxstreambufferdistance_19',['uxStreamBufferDistance',['../_free_r_t_o_s___stream___buffer_8c.html#ab606ce4d28f3aa0c125af3aed803f510',1,'FreeRTOS_Stream_Buffer.c']]], + ['uxstreambufferfrontspace_20',['uxStreamBufferFrontSpace',['../_free_r_t_o_s___stream___buffer_8c.html#a8121b558e1e9fa812534efda57315944',1,'FreeRTOS_Stream_Buffer.c']]], + ['uxstreambufferget_21',['uxStreamBufferGet',['../_free_r_t_o_s___stream___buffer_8c.html#ae736faef526d29bd3dfe4d381fd4a891',1,'FreeRTOS_Stream_Buffer.c']]], + ['uxstreambuffergetptr_22',['uxStreamBufferGetPtr',['../_free_r_t_o_s___stream___buffer_8c.html#ab95204a861d7aa93466e6f61f00b8b5e',1,'FreeRTOS_Stream_Buffer.c']]], + ['uxstreambuffergetsize_23',['uxStreamBufferGetSize',['../_free_r_t_o_s___stream___buffer_8c.html#ad1eb22b89d0f8c854d0a0de3b1e7cac6',1,'FreeRTOS_Stream_Buffer.c']]], + ['uxstreambuffergetspace_24',['uxStreamBufferGetSpace',['../_free_r_t_o_s___stream___buffer_8c.html#a1cbee110aad308a7d7713e5cf8eebe3d',1,'FreeRTOS_Stream_Buffer.c']]], + ['uxstreambuffermidspace_25',['uxStreamBufferMidSpace',['../_free_r_t_o_s___stream___buffer_8c.html#acc4b614e32cf03ebf273e8fd513b4783',1,'FreeRTOS_Stream_Buffer.c']]], + ['uxstreambufferspace_26',['uxStreamBufferSpace',['../_free_r_t_o_s___stream___buffer_8c.html#a4a692781822e059c63decc2ef29b759b',1,'FreeRTOS_Stream_Buffer.c']]] +]; diff --git a/V4.3.1/search/functions_8.js b/V4.3.1/search/functions_8.js new file mode 100644 index 000000000..d8f67aa08 --- /dev/null +++ b/V4.3.1/search/functions_8.js @@ -0,0 +1,77 @@ +var searchData= +[ + ['varpagecache_0',['vARPAgeCache',['../_free_r_t_o_s___a_r_p_8c.html#a3d3934dd27e4d024ab7a14ed0c80b3cc',1,'FreeRTOS_ARP.c']]], + ['varpgeneraterequestpacket_1',['vARPGenerateRequestPacket',['../_free_r_t_o_s___a_r_p_8c.html#a27861e019fb0f3c1d5579f6806f75b4c',1,'FreeRTOS_ARP.c']]], + ['varpprocesspacketreply_2',['vARPProcessPacketReply',['../_free_r_t_o_s___a_r_p_8c.html#a1b8a842ffc68a87ebd34c4f29de807d3',1,'FreeRTOS_ARP.c']]], + ['varpprocesspacketrequest_3',['vARPProcessPacketRequest',['../_free_r_t_o_s___a_r_p_8c.html#a06d6be4aeae648863fe666c92c62d420',1,'FreeRTOS_ARP.c']]], + ['varprefreshcacheentry_4',['vARPRefreshCacheEntry',['../_free_r_t_o_s___a_r_p_8c.html#afc0f48737ff3f80e204cbe24b0f807e0',1,'FreeRTOS_ARP.c']]], + ['varprefreshcacheentryage_5',['vARPRefreshCacheEntryAge',['../_free_r_t_o_s___a_r_p_8c.html#a858a966c87a449b18045ff5308f8f54f',1,'FreeRTOS_ARP.c']]], + ['varpsendgratuitous_6',['vARPSendGratuitous',['../_free_r_t_o_s___a_r_p_8c.html#aa96d87a3e4505229094bf3d81330c2f4',1,'FreeRTOS_ARP.c']]], + ['vbitconfig_5frelease_7',['vBitConfig_release',['../_free_r_t_o_s___bit_config_8c.html#aa9977d55a7cd242f1bae5f88cfbb3357',1,'FreeRTOS_BitConfig.c']]], + ['vbitconfig_5fwrite_5f16_8',['vBitConfig_write_16',['../_free_r_t_o_s___bit_config_8c.html#a5a7221bc4cdd27a0e96745ee52fb2358',1,'FreeRTOS_BitConfig.c']]], + ['vbitconfig_5fwrite_5f32_9',['vBitConfig_write_32',['../_free_r_t_o_s___bit_config_8c.html#a6dc6b9b15dc8c0899c89ab160c2c252f',1,'FreeRTOS_BitConfig.c']]], + ['vbitconfig_5fwrite_5f8_10',['vBitConfig_write_8',['../_free_r_t_o_s___bit_config_8c.html#a9d380df05b7702d7bee624160853baa1',1,'FreeRTOS_BitConfig.c']]], + ['vbitconfig_5fwrite_5fuc_11',['vBitConfig_write_uc',['../_free_r_t_o_s___bit_config_8c.html#a45f82519839280e1ae7cc1c9b3581ecc',1,'FreeRTOS_BitConfig.c']]], + ['vchecknetworktimers_12',['vCheckNetworkTimers',['../_free_r_t_o_s___i_p___timers_8c.html#a094e952c4bba35a03e8a37e401ff4b57',1,'FreeRTOS_IP_Timers.c']]], + ['vdhcp_5fratimerreload_13',['vDHCP_RATimerReload',['../_free_r_t_o_s___i_p___timers_8c.html#a42ca8342ff3e2727a4d1a8b6273f299f',1,'FreeRTOS_IP_Timers.c']]], + ['vdhcpprocess_14',['vDHCPProcess',['../_free_r_t_o_s___d_h_c_p_8c.html#add3cf34536127a3ffdb92f242390060c',1,'FreeRTOS_DHCP.c']]], + ['vdhcpprocessendpoint_15',['vDHCPProcessEndPoint',['../_free_r_t_o_s___d_h_c_p_8c.html#a6fcaea200a3cd7e9640374032a6ed1cd',1,'FreeRTOS_DHCP.c']]], + ['vdhcpstop_16',['vDHCPStop',['../_free_r_t_o_s___d_h_c_p_8c.html#a2122e72054875e3bfe94452c43d90e85',1,'FreeRTOS_DHCP.c']]], + ['vdhcpv6process_17',['vDHCPv6Process',['../_free_r_t_o_s___d_h_c_pv6_8c.html#a34ae49ff66a5de7cced4d19caaee57ec',1,'FreeRTOS_DHCPv6.c']]], + ['vdhcpv6processendpoint_18',['vDHCPv6ProcessEndPoint',['../_free_r_t_o_s___d_h_c_pv6_8c.html#aaada0e7b3d7a1ad210e2b4b99fcadc05',1,'FreeRTOS_DHCPv6.c']]], + ['vdhcpv6processendpoint_5fhandlereply_19',['vDHCPv6ProcessEndPoint_HandleReply',['../_free_r_t_o_s___d_h_c_pv6_8c.html#a162cef8b34cdb145c6f04eacd7c47d9d',1,'FreeRTOS_DHCPv6.c']]], + ['vdhcpv6stop_20',['vDHCPv6Stop',['../_free_r_t_o_s___d_h_c_pv6_8c.html#a6fe4f9c34d48f621c03a78ec5051eba7',1,'FreeRTOS_DHCPv6.c']]], + ['vdnscallbackinitialise_21',['vDNSCallbackInitialise',['../_free_r_t_o_s___d_n_s___callback_8c.html#a045787d12f1c57117eb3b6a1e70499a2',1,'FreeRTOS_DNS_Callback.c']]], + ['vdnscheckcallback_22',['vDNSCheckCallBack',['../_free_r_t_o_s___d_n_s___callback_8c.html#a492ba3e0cfc6bb68ca22ec7015909cdc',1,'FreeRTOS_DNS_Callback.c']]], + ['vdnsinitialise_23',['vDNSInitialise',['../_free_r_t_o_s___d_n_s_8c.html#ad8cd6ab9c87ad7e087c0ec09b118c9b7',1,'FreeRTOS_DNS.c']]], + ['vdnstimerreload_24',['vDNSTimerReload',['../_free_r_t_o_s___i_p___timers_8c.html#a935211aa53fac1562f9d9f6f6c9216b8',1,'FreeRTOS_IP_Timers.c']]], + ['vhandlewaitingacknowledge_25',['vHandleWaitingAcknowledge',['../_free_r_t_o_s___d_h_c_p_8c.html#a650dd014ad7c6f2129a387a0ae05ada8',1,'FreeRTOS_DHCP.c']]], + ['vipnetworkupcalls_26',['vIPNetworkUpCalls',['../_free_r_t_o_s___i_p_8c.html#a7f11e2247de87d191b677c4e029af2eb',1,'FreeRTOS_IP.c']]], + ['vipsetdhcp_5fratimerenablestate_27',['vIPSetDHCP_RATimerEnableState',['../_free_r_t_o_s___i_p___timers_8c.html#ac28ee1667378c9200e3a3c307333be5a',1,'FreeRTOS_IP_Timers.c']]], + ['vipsetdnstimerenablestate_28',['vIPSetDNSTimerEnableState',['../_free_r_t_o_s___i_p___timers_8c.html#a7fd438c527ffcfce00b972c96e5f7c63',1,'FreeRTOS_IP_Timers.c']]], + ['vipsettcptimerexpiredstate_29',['vIPSetTCPTimerExpiredState',['../_free_r_t_o_s___i_p___timers_8c.html#a09993c1ed00c08d7fa626fcb8e3f4cee',1,'FreeRTOS_IP_Timers.c']]], + ['vlistinsertfifo_30',['vListInsertFifo',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a868e38d1df123d9c14f49634cfe6a90a',1,'FreeRTOS_TCP_WIN.c']]], + ['vlistinsertgeneric_31',['vListInsertGeneric',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a3e4f1f4f8a58b903fbedd51e849de1eb',1,'FreeRTOS_TCP_WIN.c']]], + ['vmanagesolicitednodeaddress_32',['vManageSolicitedNodeAddress',['../_free_r_t_o_s___i_pv6___utils_8c.html#a314db95ced81a5fd4b18a52668e82aec',1,'FreeRTOS_IPv6_Utils.c']]], + ['vndagecache_33',['vNDAgeCache',['../_free_r_t_o_s___n_d_8c.html#a690e13619aae09f4a0319f7496c55397',1,'FreeRTOS_ND.c']]], + ['vndrefreshcacheentry_34',['vNDRefreshCacheEntry',['../_free_r_t_o_s___n_d_8c.html#a76f0c03919c7d846af63888edc90eff9',1,'FreeRTOS_ND.c']]], + ['vndsendneighboursolicitation_35',['vNDSendNeighbourSolicitation',['../_free_r_t_o_s___n_d_8c.html#a4119410fff19474ea4a09719cd02f6f5',1,'FreeRTOS_ND.c']]], + ['vndsendroutersolicitation_36',['vNDSendRouterSolicitation',['../_free_r_t_o_s___r_a_8c.html#a0cd38e09b6b7b38caa4addd1d23f4347',1,'FreeRTOS_RA.c']]], + ['vndsendunsolicited_37',['vNDSendUnsolicited',['../_free_r_t_o_s___n_d_8c.html#a9ea39836584bb43dbc942adb4fbd0415',1,'FreeRTOS_ND.c']]], + ['vnetworksocketsinit_38',['vNetworkSocketsInit',['../_free_r_t_o_s___sockets_8c.html#a4143378ec838cd340efd7f95b30444a5',1,'FreeRTOS_Sockets.c']]], + ['vnetworktimerreload_39',['vNetworkTimerReload',['../_free_r_t_o_s___i_p___timers_8c.html#a51ea6bb700b2ce45142aae1a5035d85e',1,'FreeRTOS_IP_Timers.c']]], + ['void_5fptr_5fto_5fuintptr_40',['void_ptr_to_uintptr',['../_free_r_t_o_s___i_p___utils_8c.html#a3a5273b63c9ff3e2d6bf9741bee6b8ff',1,'FreeRTOS_IP_Utils.c']]], + ['vprecheckconfigs_41',['vPreCheckConfigs',['../_free_r_t_o_s___i_p___utils_8c.html#a13b85ba0f6d16425960f9a9b5249dab9',1,'FreeRTOS_IP_Utils.c']]], + ['vprocessgeneratedudppacket_42',['vProcessGeneratedUDPPacket',['../_free_r_t_o_s___u_d_p___i_p_8c.html#a033394b01fa7d80e6393ea272a31814b',1,'FreeRTOS_UDP_IP.c']]], + ['vprocessgeneratedudppacket_5fipv4_43',['vProcessGeneratedUDPPacket_IPv4',['../_free_r_t_o_s___u_d_p___i_pv4_8c.html#a2a083b134f9bdd44c437c9bc7e015ed4',1,'FreeRTOS_UDP_IPv4.c']]], + ['vprocessgeneratedudppacket_5fipv6_44',['vProcessGeneratedUDPPacket_IPv6',['../_free_r_t_o_s___u_d_p___i_pv6_8c.html#a31771f6d53d974bd10447872625a5778',1,'FreeRTOS_UDP_IPv6.c']]], + ['vprocesshandleoption_45',['vProcessHandleOption',['../_free_r_t_o_s___d_h_c_p_8c.html#ada2a22c161135c46ee64a26fc2565a15',1,'FreeRTOS_DHCP.c']]], + ['vraprocess_46',['vRAProcess',['../_free_r_t_o_s___r_a_8c.html#a32b2a1fd2f8604edd74b9696e9a97add',1,'FreeRTOS_RA.c']]], + ['vraprocessinit_47',['vRAProcessInit',['../_free_r_t_o_s___r_a_8c.html#ac0ecf713a3988eb2c28eadffb0c97205',1,'FreeRTOS_RA.c']]], + ['vreceivena_48',['vReceiveNA',['../_free_r_t_o_s___r_a_8c.html#aa9a2610031cc65c6a6a6188a5ed89d3d',1,'FreeRTOS_RA.c']]], + ['vreceivera_49',['vReceiveRA',['../_free_r_t_o_s___r_a_8c.html#a3c29833623cc3e120baa63987266da71',1,'FreeRTOS_RA.c']]], + ['vreceivera_5freadreply_50',['vReceiveRA_ReadReply',['../_free_r_t_o_s___r_a_8c.html#afdb01473e646da32f850cac3ca1fc947',1,'FreeRTOS_RA.c']]], + ['vreturnethernetframe_51',['vReturnEthernetFrame',['../_free_r_t_o_s___i_p_8c.html#a5fb218e96c829c263a677428fe4d5d24',1,'FreeRTOS_IP.c']]], + ['vsetallnetworksup_52',['vSetAllNetworksUp',['../_free_r_t_o_s___i_p___timers_8c.html#a703074a1646782a66c0fb9de390da0fb',1,'FreeRTOS_IP_Timers.c']]], + ['vsetmulticastipv4macaddress_53',['vSetMultiCastIPv4MacAddress',['../_free_r_t_o_s___i_pv4___utils_8c.html#af110bcf8c7910fc9149a4a09895efcf4',1,'FreeRTOS_IPv4_Utils.c']]], + ['vsetmulticastipv6macaddress_54',['vSetMultiCastIPv6MacAddress',['../_free_r_t_o_s___i_pv6___utils_8c.html#af37ac08272bb160cd5bee3b5bdf581dc',1,'FreeRTOS_IPv6_Utils.c']]], + ['vsetsocketendpoint_55',['vSetSocketEndpoint',['../_free_r_t_o_s___routing_8c.html#af3a0d7e5a3be793bac33eeb084301449',1,'FreeRTOS_Routing.c']]], + ['vsocketbind_56',['vSocketBind',['../_free_r_t_o_s___sockets_8c.html#add35977107add8357366416d55c64e69',1,'FreeRTOS_Sockets.c']]], + ['vsocketclose_57',['vSocketClose',['../_free_r_t_o_s___sockets_8c.html#afef498fc07f15ceb8828c60decabfbb8',1,'FreeRTOS_Sockets.c']]], + ['vsocketclosenexttime_58',['vSocketCloseNextTime',['../_free_r_t_o_s___t_c_p___i_p_8c.html#a3663f3aa8c64835d9dc23c5209c78fc2',1,'FreeRTOS_TCP_IP.c']]], + ['vsocketlistennexttime_59',['vSocketListenNextTime',['../_free_r_t_o_s___t_c_p___i_p_8c.html#a2ea49984a2c87d90570ed0be8884a0f4',1,'FreeRTOS_TCP_IP.c']]], + ['vsocketselect_60',['vSocketSelect',['../_free_r_t_o_s___sockets_8c.html#a4e52838681336e8b2dcd41298072c764',1,'FreeRTOS_Sockets.c']]], + ['vsocketselecttcp_61',['vSocketSelectTCP',['../_free_r_t_o_s___sockets_8c.html#aa7e52b0ad7fe8b477b09cc4b1a421014',1,'FreeRTOS_Sockets.c']]], + ['vsocketwakeupuser_62',['vSocketWakeUpUser',['../_free_r_t_o_s___sockets_8c.html#a0387edebc3e7bcf7fcf038a01a098213',1,'FreeRTOS_Sockets.c']]], + ['vstreambufferclear_63',['vStreamBufferClear',['../_free_r_t_o_s___stream___buffer_8c.html#a0a7fb82f923be33b784916014fe61c2b',1,'FreeRTOS_Stream_Buffer.c']]], + ['vstreambuffermovemid_64',['vStreamBufferMoveMid',['../_free_r_t_o_s___stream___buffer_8c.html#a0e93a71fcb4ea1e64a3c29b5348e52ec',1,'FreeRTOS_Stream_Buffer.c']]], + ['vtcpaddrxdata_5fstored_65',['vTCPAddRxdata_Stored',['../_free_r_t_o_s___sockets_8c.html#a1ea5cc44cde712f237824b46a2df728e',1,'FreeRTOS_Sockets.c']]], + ['vtcpremovetcpchild_66',['vTCPRemoveTCPChild',['../_free_r_t_o_s___t_c_p___i_p_8c.html#ade1a9dab690a8da963401fc218e5b6f5',1,'FreeRTOS_TCP_IP.c']]], + ['vtcpsegmentcleanup_67',['vTCPSegmentCleanup',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a7dfa9050ace0b44f42ff29badf9a328b',1,'FreeRTOS_TCP_WIN.c']]], + ['vtcpstatechange_68',['vTCPStateChange',['../_free_r_t_o_s___t_c_p___i_p_8c.html#a97d34454b4f1d4b0a4f5e5b998fdf578',1,'FreeRTOS_TCP_IP.c']]], + ['vtcptimerreload_69',['vTCPTimerReload',['../_free_r_t_o_s___i_p___timers_8c.html#a150627ce753809b94f9250a732ae244a',1,'FreeRTOS_IP_Timers.c']]], + ['vtcptimerset_70',['vTCPTimerSet',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a583207662849bc5f15a8c7953eb9352b',1,'FreeRTOS_TCP_WIN.c']]], + ['vtcpwindowdestroy_71',['vTCPWindowDestroy',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a0e8c6e2df2e93c6925a5db3268e54360',1,'FreeRTOS_TCP_WIN.c']]], + ['vtcpwindowfree_72',['vTCPWindowFree',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a2eaaaa2cefae9b44094d0f069e2e486b',1,'FreeRTOS_TCP_WIN.c']]], + ['vtcpwindowinit_73',['vTCPWindowInit',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#acf48d309eda32d86dce923674e49b753',1,'FreeRTOS_TCP_WIN.c']]] +]; diff --git a/V4.3.1/search/functions_9.js b/V4.3.1/search/functions_9.js new file mode 100644 index 000000000..1d3136a33 --- /dev/null +++ b/V4.3.1/search/functions_9.js @@ -0,0 +1,67 @@ +var searchData= +[ + ['xarpwaitresolution_0',['xARPWaitResolution',['../_free_r_t_o_s___a_r_p_8c.html#a1b7afccbd744a2ee150ddf209c5582bf',1,'FreeRTOS_ARP.c']]], + ['xbadipv4loopback_1',['xBadIPv4Loopback',['../_free_r_t_o_s___i_pv4_8c.html#a97efcb68bb2ebca12b18fc2a10c70066',1,'FreeRTOS_IPv4.c']]], + ['xbadipv6loopback_2',['xBadIPv6Loopback',['../_free_r_t_o_s___i_pv6_8c.html#a5cb61fef389ea9ade1442f2a20834e41',1,'FreeRTOS_IPv6.c']]], + ['xbitconfig_5finit_3',['xBitConfig_init',['../_free_r_t_o_s___bit_config_8c.html#a30350365855750a6f712252431078c09',1,'FreeRTOS_BitConfig.c']]], + ['xbitconfig_5fread_5fuc_4',['xBitConfig_read_uc',['../_free_r_t_o_s___bit_config_8c.html#a1e6de262ed241d6d307f99bb0c6d77d7',1,'FreeRTOS_BitConfig.c']]], + ['xcalculatesleeptime_5',['xCalculateSleepTime',['../_free_r_t_o_s___i_p___timers_8c.html#ae3c030241e75043b154047b8636fc6aa',1,'FreeRTOS_IP_Timers.c']]], + ['xcheckrequiresarpresolution_6',['xCheckRequiresARPResolution',['../_free_r_t_o_s___a_r_p_8c.html#ae2a978aa66440ed327d71f7d4b2daa63',1,'FreeRTOS_ARP.c']]], + ['xcheckrequiresndresolution_7',['xCheckRequiresNDResolution',['../_free_r_t_o_s___n_d_8c.html#aee93f7217f8fa9344b85f606d5113d26',1,'FreeRTOS_ND.c']]], + ['xcheckrequiresresolution_8',['xCheckRequiresResolution',['../_free_r_t_o_s___routing_8c.html#adb7c63c2482b4e78154c0af8058b812d',1,'FreeRTOS_Routing.c']]], + ['xcompareipv6_5faddress_9',['xCompareIPv6_Address',['../_free_r_t_o_s___i_pv6_8c.html#a52e784fa0b40276c8b05be48cfdf3076',1,'FreeRTOS_IPv6.c']]], + ['xdhcpv6process_5fpassreplytoendpoint_10',['xDHCPv6Process_PassReplyToEndPoint',['../_free_r_t_o_s___d_h_c_pv6_8c.html#ab529bd56442fbbc37c6a6e307f5ab789',1,'FreeRTOS_DHCPv6.c']]], + ['xdhcpv6processendpoint_5fhandleadvertise_11',['xDHCPv6ProcessEndPoint_HandleAdvertise',['../_free_r_t_o_s___d_h_c_pv6_8c.html#aeb603f29d66bc594fb372258f8b7082a',1,'FreeRTOS_DHCPv6.c']]], + ['xdhcpv6processendpoint_5fhandlestate_12',['xDHCPv6ProcessEndPoint_HandleState',['../_free_r_t_o_s___d_h_c_pv6_8c.html#ade946c97d145a3cdff24e8bfc972ed8b',1,'FreeRTOS_DHCPv6.c']]], + ['xdnsdocallback_13',['xDNSDoCallback',['../_free_r_t_o_s___d_n_s___callback_8c.html#a6c34cf6a385cac4d9422794516b774de',1,'FreeRTOS_DNS_Callback.c']]], + ['xdnssetcallback_14',['xDNSSetCallBack',['../_free_r_t_o_s___d_n_s___callback_8c.html#ad994091b83d16f6d92feff34771ca1fe',1,'FreeRTOS_DNS_Callback.c']]], + ['xgetextensionorder_15',['xGetExtensionOrder',['../_free_r_t_o_s___i_pv6_8c.html#a73ec0d92223b063dc858725829677a9a',1,'FreeRTOS_IPv6.c']]], + ['xgetipv6multicastgroupid_16',['xGetIPv6MulticastGroupID',['../_free_r_t_o_s___i_pv6_8c.html#a942cc79979690a211d38b0e560261cec',1,'FreeRTOS_IPv6.c']]], + ['xgetlinklocaladdress_17',['xGetLinkLocalAddress',['../_free_r_t_o_s___r_a_8c.html#a8dac32b62d1e658cbe51900394af13a0',1,'FreeRTOS_RA.c']]], + ['xgetsourceaddrfrombuffer_18',['xGetSourceAddrFromBuffer',['../_free_r_t_o_s___t_c_p___i_p_8c.html#a0f72e4a79a35a2d8e026e192ba26fabe',1,'FreeRTOS_TCP_IP.c']]], + ['xhandlewaitingfirstdiscover_19',['xHandleWaitingFirstDiscover',['../_free_r_t_o_s___d_h_c_p_8c.html#ab0e2a69f3c505b6404e2a3fbf7bbaf7c',1,'FreeRTOS_DHCP.c']]], + ['xhandlewaitingoffer_20',['xHandleWaitingOffer',['../_free_r_t_o_s___d_h_c_p_8c.html#ad4fec480c133134861fdbb043d9f852e',1,'FreeRTOS_DHCP.c']]], + ['xipisnetworktaskready_21',['xIPIsNetworkTaskReady',['../_free_r_t_o_s___i_p_8c.html#a52b2222c2b48904fb90674927a2c489d',1,'FreeRTOS_IP.c']]], + ['xipv6_5fgetiptype_22',['xIPv6_GetIPType',['../_free_r_t_o_s___routing_8c.html#af2b57c7b5c3dee72385d710bd627c417',1,'FreeRTOS_Routing.c']]], + ['xiscallingfromiptask_23',['xIsCallingFromIPTask',['../_free_r_t_o_s___i_p___utils_8c.html#a9844166e6474d5f406df1c57aa4da98f',1,'FreeRTOS_IP_Utils.c']]], + ['xisdhcpsocket_24',['xIsDHCPSocket',['../_free_r_t_o_s___d_h_c_p_8c.html#a5d7c5d446042f01b22a2393df3763d16',1,'FreeRTOS_DHCP.c']]], + ['xisipinarpcache_25',['xIsIPInARPCache',['../_free_r_t_o_s___a_r_p_8c.html#afdc995bea37f826daf44d59f5bcd0fc7',1,'FreeRTOS_ARP.c']]], + ['xisipv4loopback_26',['xIsIPv4Loopback',['../_free_r_t_o_s___i_pv4_8c.html#a89208614b15adbf9707f9734e4a0fa4e',1,'FreeRTOS_IPv4.c']]], + ['xisipv4multicast_27',['xIsIPv4Multicast',['../_free_r_t_o_s___i_pv4_8c.html#a3c787bfa6502ecfd173ee8f6974e8628',1,'FreeRTOS_IPv4.c']]], + ['xisipv6allowedmulticast_28',['xIsIPv6AllowedMulticast',['../_free_r_t_o_s___i_pv6_8c.html#a64edb919e254a0ff420eac3b9a3dc9eb',1,'FreeRTOS_IPv6.c']]], + ['xisipv6loopback_29',['xIsIPv6Loopback',['../_free_r_t_o_s___i_pv6_8c.html#a8cff504a19dbd5a70f7f85bae964535a',1,'FreeRTOS_IPv6.c']]], + ['xisnetworkdowneventpending_30',['xIsNetworkDownEventPending',['../_free_r_t_o_s___i_p_8c.html#a5003fcfb9e9e61239ae11a79aa7ab151',1,'FreeRTOS_IP.c']]], + ['xprocesscheckoption_31',['xProcessCheckOption',['../_free_r_t_o_s___d_h_c_p_8c.html#a0349db49ee3328dc2cc2acbf744df176',1,'FreeRTOS_DHCP.c']]], + ['xprocessreceivedtcppacket_32',['xProcessReceivedTCPPacket',['../_free_r_t_o_s___t_c_p___i_p_8c.html#a3afd3312f86e44f4b4d95ab1e7bd34be',1,'FreeRTOS_TCP_IP.c']]], + ['xprocessreceivedudppacket_33',['xProcessReceivedUDPPacket',['../_free_r_t_o_s___u_d_p___i_p_8c.html#a0258ee76a1424cfeeb9871565b9c32bc',1,'FreeRTOS_UDP_IP.c']]], + ['xprocessreceivedudppacket_5fipv4_34',['xProcessReceivedUDPPacket_IPv4',['../_free_r_t_o_s___u_d_p___i_pv4_8c.html#ac283e8e5e1bee228e923a560490dcd5f',1,'FreeRTOS_UDP_IPv4.c']]], + ['xprocessreceivedudppacket_5fipv6_35',['xProcessReceivedUDPPacket_IPv6',['../_free_r_t_o_s___u_d_p___i_pv6_8c.html#a9e5829b11598f2890aa374a376e1224b',1,'FreeRTOS_UDP_IPv6.c']]], + ['xraprocess_5fhandleotherstates_36',['xRAProcess_HandleOtherStates',['../_free_r_t_o_s___r_a_8c.html#ac64548e4fbd3418bf5d9cdcd9b134eda',1,'FreeRTOS_RA.c']]], + ['xraprocess_5fhandlewaitstates_37',['xRAProcess_HandleWaitStates',['../_free_r_t_o_s___r_a_8c.html#a8a98258f973b8040f87951e0be01a703',1,'FreeRTOS_RA.c']]], + ['xrecv_5fupdate_5fipv4_38',['xRecv_Update_IPv4',['../_free_r_t_o_s___i_pv4___sockets_8c.html#ae03fc7a3883f1d9b43b3eb86345a775e',1,'FreeRTOS_IPv4_Sockets.c']]], + ['xrecv_5fupdate_5fipv6_39',['xRecv_Update_IPv6',['../_free_r_t_o_s___i_pv6___sockets_8c.html#aafa911615a4c97340852d98cc2ab824c',1,'FreeRTOS_IPv6_Sockets.c']]], + ['xsend_5fudp_5fupdate_5fipv4_40',['xSend_UDP_Update_IPv4',['../_free_r_t_o_s___i_pv4___sockets_8c.html#a671960d69809c644de9d7b88fb906cfb',1,'FreeRTOS_IPv4_Sockets.c']]], + ['xsend_5fudp_5fupdate_5fipv6_41',['xSend_UDP_Update_IPv6',['../_free_r_t_o_s___i_pv6___sockets_8c.html#a10e007d9ebad6b72991ab6687d5a814b',1,'FreeRTOS_IPv6_Sockets.c']]], + ['xsenddhcpevent_42',['xSendDHCPEvent',['../_free_r_t_o_s___i_p___utils_8c.html#a09f26729c0f4b452e573da22ddb22f74',1,'FreeRTOS_IP_Utils.c']]], + ['xsendeventstructtoiptask_43',['xSendEventStructToIPTask',['../_free_r_t_o_s___i_p_8c.html#a7190bc18fa344fe1fd79021a6db05f84',1,'FreeRTOS_IP.c']]], + ['xsendeventtoiptask_44',['xSendEventToIPTask',['../_free_r_t_o_s___i_p_8c.html#a64324b01a1fc85efdb7129316e8f7737',1,'FreeRTOS_IP.c']]], + ['xsequencegreaterthan_45',['xSequenceGreaterThan',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a4160649d2ac1cf177684b4fed25c615e',1,'FreeRTOS_TCP_WIN.c']]], + ['xsequencegreaterthanorequal_46',['xSequenceGreaterThanOrEqual',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#aff8c4167d89211fb1574ca667803c74c',1,'FreeRTOS_TCP_WIN.c']]], + ['xsequencelessthan_47',['xSequenceLessThan',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a747531f7546e6a0924a1a2b63cc32ea9',1,'FreeRTOS_TCP_WIN.c']]], + ['xsequencelessthanorequal_48',['xSequenceLessThanOrEqual',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#afb170f245b4ad4c30e552ac81e9c2519',1,'FreeRTOS_TCP_WIN.c']]], + ['xsocketsetsocketid_49',['xSocketSetSocketID',['../_free_r_t_o_s___sockets_8c.html#a90ba4446eecc818882e9f9ddc8cc7940',1,'FreeRTOS_Sockets.c']]], + ['xsocketvalid_50',['xSocketValid',['../_free_r_t_o_s___sockets_8c.html#ac7d3b9e3f9a2a974cd8382c8755e603f',1,'FreeRTOS_Sockets.c']]], + ['xstreambufferlessthenequal_51',['xStreamBufferLessThenEqual',['../_free_r_t_o_s___stream___buffer_8c.html#a4642a7e263b7c63100458560137a9acd',1,'FreeRTOS_Stream_Buffer.c']]], + ['xtcpchecknewclient_52',['xTCPCheckNewClient',['../_free_r_t_o_s___t_c_p___i_p_8c.html#abd9d9857511e8c986d7eb52849cfe73d',1,'FreeRTOS_TCP_IP.c']]], + ['xtcpsocketcheck_53',['xTCPSocketCheck',['../_free_r_t_o_s___t_c_p___i_p_8c.html#a6f0ad2de00346e1017a692e4da7c3f0c',1,'FreeRTOS_TCP_IP.c']]], + ['xtcptimercheck_54',['xTCPTimerCheck',['../_free_r_t_o_s___sockets_8c.html#ad3802e1a3603f571bcb185f2afbd48de',1,'FreeRTOS_Sockets.c']]], + ['xtcpwindowcreate_55',['xTCPWindowCreate',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#add7f3c65a5d1fddd2929d5eeff82ba6e',1,'FreeRTOS_TCP_WIN.c']]], + ['xtcpwindowgethead_56',['xTCPWindowGetHead',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a64cc22b4a6a21004ee0c952e51ccf41b',1,'FreeRTOS_TCP_WIN.c']]], + ['xtcpwindownew_57',['xTCPWindowNew',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a386665c510184cd30ae32626ac59725e',1,'FreeRTOS_TCP_WIN.c']]], + ['xtcpwindowpeekhead_58',['xTCPWindowPeekHead',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#ac065c8219a962706da4f2cd464f91215',1,'FreeRTOS_TCP_WIN.c']]], + ['xtcpwindowrxconfirm_59',['xTCPWindowRxConfirm',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a9a4e36ef6bea7d2a2671e0a0d15ae85d',1,'FreeRTOS_TCP_WIN.c']]], + ['xtcpwindowrxempty_60',['xTCPWindowRxEmpty',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#a15f755746f17a8d2651bf3ba8002b76b',1,'FreeRTOS_TCP_WIN.c']]], + ['xtcpwindowrxfind_61',['xTCPWindowRxFind',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#af119bc1139e90f53f68a83870740e4e8',1,'FreeRTOS_TCP_WIN.c']]], + ['xtcpwindowtxdone_62',['xTCPWindowTxDone',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#ab1bde32e6d419a46c0db6a3270dcc73d',1,'FreeRTOS_TCP_WIN.c']]], + ['xtcpwindowtxhasdata_63',['xTCPWindowTxHasData',['../_free_r_t_o_s___t_c_p___w_i_n_8c.html#adb593eadf315d3ac0972308edb628f47',1,'FreeRTOS_TCP_WIN.c']]] +]; diff --git a/V4.3.1/search/mag.svg b/V4.3.1/search/mag.svg new file mode 100644 index 000000000..9f46b301e --- /dev/null +++ b/V4.3.1/search/mag.svg @@ -0,0 +1,37 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/V4.3.1/search/mag_d.svg b/V4.3.1/search/mag_d.svg new file mode 100644 index 000000000..b9a814c78 --- /dev/null +++ b/V4.3.1/search/mag_d.svg @@ -0,0 +1,37 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/V4.3.1/search/mag_sel.svg b/V4.3.1/search/mag_sel.svg new file mode 100644 index 000000000..03626f64a --- /dev/null +++ b/V4.3.1/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/V4.3.1/search/mag_seld.svg b/V4.3.1/search/mag_seld.svg new file mode 100644 index 000000000..6e720dcc9 --- /dev/null +++ b/V4.3.1/search/mag_seld.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/V4.3.1/search/search.css b/V4.3.1/search/search.css new file mode 100644 index 000000000..a53214fcd --- /dev/null +++ b/V4.3.1/search/search.css @@ -0,0 +1,286 @@ +/*---------------- Search Box */ + +#MSearchBox { + position: absolute; + right: 5px; +} +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/V4.3.1/search/search.js b/V4.3.1/search/search.js new file mode 100644 index 000000000..e103a2621 --- /dev/null +++ b/V4.3.1/search/search.js @@ -0,0 +1,816 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + searchResults.Search(searchValue); + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e + + + + + + +FreeRTOS-Plus-TCP: struct Struct Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
struct Struct Reference
+
+
+ +

A DNS query consists of a header, as described in 'struct xDNSMessage' It is followed by 1 or more queries, each one consisting of a name and a tail, with two fields: type and class. + More...

+ + + + + + +

+Data Fields

uint16_t usType
 
uint16_t usClass
 
+

Detailed Description

+

A DNS query consists of a header, as described in 'struct xDNSMessage' It is followed by 1 or more queries, each one consisting of a name and a tail, with two fields: type and class.

+

Field Documentation

+ +

◆ usType

+ +
+
+ + + + +
uint16_t struct::usType
+
+

Type of DNS message.

+ +
+
+ +

◆ usClass

+ +
+
+ + + + +
uint16_t struct::usClass
+
+

Class of DNS message.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/V4.3.1/structx_i_pv6___couple.html b/V4.3.1/structx_i_pv6___couple.html new file mode 100644 index 000000000..c6b6abfdb --- /dev/null +++ b/V4.3.1/structx_i_pv6___couple.html @@ -0,0 +1,179 @@ + + + + + + + +FreeRTOS-Plus-TCP: xIPv6_Couple Struct Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xIPv6_Couple Struct Reference
+
+
+ +

A util struct to list the IPv6 IP types, prefix and type bit mask. + More...

+ + + + + + + + +

+Data Fields

IPv6_Type_t eType
 
uint16_t usMask
 
uint16_t usExpected
 
+

Detailed Description

+

A util struct to list the IPv6 IP types, prefix and type bit mask.

+

Field Documentation

+ +

◆ eType

+ +
+
+ + + + +
IPv6_Type_t xIPv6_Couple::eType
+
+

IPv6 IP type enum

+ +
+
+ +

◆ usMask

+ +
+
+ + + + +
uint16_t xIPv6_Couple::usMask
+
+

IPv6 IP type bit mask

+ +
+
+ +

◆ usExpected

+ +
+
+ + + + +
uint16_t xIPv6_Couple::usExpected
+
+

IPv6 IP type prefix

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/V4.3.1/style.css b/V4.3.1/style.css new file mode 100644 index 000000000..99d7ab71f --- /dev/null +++ b/V4.3.1/style.css @@ -0,0 +1,132 @@ +/* + * Stylesheet for Doxygen HTML output. + * + * This file defines styles for custom elements in the header/footer and + * overrides some of the default Doxygen styles. + * + * Styles in this file do not affect the treeview sidebar. + */ + +/* Set the margins to place a small amount of whitespace on the left and right + * side of the page. */ +div.contents { + margin-left:4em; + margin-right:4em; +} + +/* Justify text in paragraphs. */ +p { + text-align: justify; +} + +/* Style of section headings. */ +h1 { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 160%; + font-weight: normal; + padding-bottom: 4px; + padding-top: 8px; +} + +/* Style of subsection headings. */ +h2:not(.memtitle):not(.groupheader) { + font-size: 125%; + margin-bottom: 0px; + margin-top: 16px; + padding: 0px; +} + +/* Style of paragraphs immediately after subsection headings. */ +h2 + p { + margin: 0px; + padding: 0px; +} + +/* Style of subsection headings. */ +h3 { + font-size: 100%; + margin-bottom: 0px; + margin-left: 2em; + margin-right: 2em; +} + +/* Style of paragraphs immediately after subsubsection headings. */ +h3 + p { + margin-top: 0px; + margin-left: 2em; + margin-right: 2em; +} + +/* Style of the prefix "AWS IoT Device SDK C" that appears in the header. */ +#csdkprefix { + color: #757575; +} + +/* Style of the "Return to main page" link that appears in the header. */ +#returntomain { + padding: 0.5em; +} + +/* Style of the dividers on Configuration Settings pages. */ +div.configpagedivider { + margin-left: 0px !important; + margin-right: 0px !important; + margin-top: 20px !important; +} + +/* Style of configuration setting names. */ +dl.section.user ~ h1 { + border-bottom: none; + color: #000000; + font-family: monospace, fixed; + font-size: 16px; + margin-bottom: 0px; + margin-left: 2em; + margin-top: 1.5em; +} + +/* Style of paragraphs on a configuration settings page. */ +dl.section.user ~ * { + margin-bottom: 10px; + margin-left: 4em; + margin-right: 4em; + margin-top: 0px; +} + +/* Hide the configuration setting marker. */ +dl.section.user { + display: none; +} + +/* Overrides for code fragments and lines. */ +div.fragment { + background: #ffffff; + border: none; + padding: 5px; +} + +div.line { + color: #3a3a3a; +} + +/* Overrides for code syntax highlighting colors. */ +span.comment { + color: #008000; +} + +span.keyword, span.keywordtype, span.keywordflow { + color: #0000ff; +} + +span.preprocessor { + color: #50015a; +} + +span.stringliteral, span.charliteral { + color: #800c0c; +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #496194; +} diff --git a/V4.3.1/sync_off.png b/V4.3.1/sync_off.png new file mode 100644 index 000000000..3b443fc62 Binary files /dev/null and b/V4.3.1/sync_off.png differ diff --git a/V4.3.1/sync_on.png b/V4.3.1/sync_on.png new file mode 100644 index 000000000..e08320fb6 Binary files /dev/null and b/V4.3.1/sync_on.png differ diff --git a/V4.3.1/tab_a.png b/V4.3.1/tab_a.png new file mode 100644 index 000000000..3b725c41c Binary files /dev/null and b/V4.3.1/tab_a.png differ diff --git a/V4.3.1/tab_ad.png b/V4.3.1/tab_ad.png new file mode 100644 index 000000000..e34850acf Binary files /dev/null and b/V4.3.1/tab_ad.png differ diff --git a/V4.3.1/tab_b.png b/V4.3.1/tab_b.png new file mode 100644 index 000000000..e2b4a8638 Binary files /dev/null and b/V4.3.1/tab_b.png differ diff --git a/V4.3.1/tab_bd.png b/V4.3.1/tab_bd.png new file mode 100644 index 000000000..91c252498 Binary files /dev/null and b/V4.3.1/tab_bd.png differ diff --git a/V4.3.1/tab_h.png b/V4.3.1/tab_h.png new file mode 100644 index 000000000..fd5cb7054 Binary files /dev/null and b/V4.3.1/tab_h.png differ diff --git a/V4.3.1/tab_hd.png b/V4.3.1/tab_hd.png new file mode 100644 index 000000000..2489273d4 Binary files /dev/null and b/V4.3.1/tab_hd.png differ diff --git a/V4.3.1/tab_s.png b/V4.3.1/tab_s.png new file mode 100644 index 000000000..ab478c95b Binary files /dev/null and b/V4.3.1/tab_s.png differ diff --git a/V4.3.1/tab_sd.png b/V4.3.1/tab_sd.png new file mode 100644 index 000000000..757a565ce Binary files /dev/null and b/V4.3.1/tab_sd.png differ diff --git a/V4.3.1/tabs.css b/V4.3.1/tabs.css new file mode 100644 index 000000000..71c8a4704 --- /dev/null +++ b/V4.3.1/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file diff --git a/V4.3.1/unionu_int_ptr.html b/V4.3.1/unionu_int_ptr.html new file mode 100644 index 000000000..5faa6a9e9 --- /dev/null +++ b/V4.3.1/unionu_int_ptr.html @@ -0,0 +1,162 @@ + + + + + + + +FreeRTOS-Plus-TCP: uIntPtr Union Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
uIntPtr Union Reference
+
+
+ +

uintptr_t is an unsigned integer type that is capable of storing a data pointer. Therefore it is safe to convert from a void pointer to a uintptr_t, using a union. + More...

+ + + + + + +

+Data Fields

uintptr_t uxPtr
 
const void * pvPtr
 
+

Detailed Description

+

uintptr_t is an unsigned integer type that is capable of storing a data pointer. Therefore it is safe to convert from a void pointer to a uintptr_t, using a union.

+

Field Documentation

+ +

◆ uxPtr

+ +
+
+ + + + +
uintptr_t uIntPtr::uxPtr
+
+

THe numeric value.

+ +
+
+ +

◆ pvPtr

+ +
+
+ + + + +
const void* uIntPtr::pvPtr
+
+

THe void pointer.

+ +
+
+
The documentation for this union was generated from the following file: +
+
+ + + + diff --git a/V4.3.1/unionx_union32__t.html b/V4.3.1/unionx_union32__t.html new file mode 100644 index 000000000..969583ba4 --- /dev/null +++ b/V4.3.1/unionx_union32__t.html @@ -0,0 +1,176 @@ + + + + + + + +FreeRTOS-Plus-TCP: xUnion32_t Union Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xUnion32_t Union Reference
+
+
+ + + + + + + + +

+Data Fields

uint32_t u32
 
uint16_t u16 [2]
 
uint8_t u8 [4]
 
+

Detailed Description

+

Used in checksum calculation.

+

Field Documentation

+ +

◆ u32

+ +
+
+ + + + +
uint32_t xUnion32_t::u32
+
+

The 32-bit member of the union.

+ +
+
+ +

◆ u16

+ +
+
+ + + + +
uint16_t xUnion32_t::u16[2]
+
+

The array of 2 16-bit members of the union.

+ +
+
+ +

◆ u8

+ +
+
+ + + + +
uint8_t xUnion32_t::u8[4]
+
+

The array of 4 8-bit members of the union.

+ +
+
+
The documentation for this union was generated from the following file: +
+
+ + + + diff --git a/V4.3.1/unionx_union_ptr__t.html b/V4.3.1/unionx_union_ptr__t.html new file mode 100644 index 000000000..34d9d831c --- /dev/null +++ b/V4.3.1/unionx_union_ptr__t.html @@ -0,0 +1,176 @@ + + + + + + + +FreeRTOS-Plus-TCP: xUnionPtr_t Union Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
FreeRTOS-Plus-TCP V4.3.0 +
+
FreeRTOS TCP/IP library
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xUnionPtr_t Union Reference
+
+
+ + + + + + + + +

+Data Fields

const uint32_t * u32ptr
 
const uint16_t * u16ptr
 
const uint8_t * u8ptr
 
+

Detailed Description

+

Used in checksum calculation.

+

Field Documentation

+ +

◆ u32ptr

+ +
+
+ + + + +
const uint32_t* xUnionPtr_t::u32ptr
+
+

The pointer member to a 32-bit variable.

+ +
+
+ +

◆ u16ptr

+ +
+
+ + + + +
const uint16_t* xUnionPtr_t::u16ptr
+
+

The pointer member to a 16-bit variable.

+ +
+
+ +

◆ u8ptr

+ +
+
+ + + + +
const uint8_t* xUnionPtr_t::u8ptr
+
+

The pointer member to an 8-bit variable.

+ +
+
+
The documentation for this union was generated from the following file: +
+
+ + + + diff --git a/_data/doc_config.json b/_data/doc_config.json index 1990e61ab..fbd0e1866 100644 --- a/_data/doc_config.json +++ b/_data/doc_config.json @@ -1,6 +1,7 @@ { "name": "FreeRTOS-Plus-TCP", "releases": [ + "V4.3.1", "V4.3.0", "V4.2.2", "V4.2.1",