Data Sheet

© Copyright 2013 WIZnet Co.,Ltd. All rights reserved.
58
iEthernet
W5200
/* update header_addr*/
header_addr += upper_size;
/* copy left_size bytes of gSn_RX_BASE to header_address */
left_size = header_size – upper_size;
memcpy(gSn_RX_BASE, header, left_size);
/* update src_mask */
src_mask = left_size;
}
else
{
/* copy header_size bytes of get_start_address to header_address */
memcpy(src_ptr, header, header_size);
/* update src_mask */
src_mask += header_size;
}
/* update src_ptr */
src_ptr = gSn_RX_BASE + src_mask;
/* save remote peer information & received data size */
peer_ip = header[0 to 3];
peer_port = header[4 to 5];
get_size = header[6 to 7];
/* if overflow SOCKET RX memory */
if ( (src_mask + get_size) > (gSn_RX_MASK + 1) )
{
/* copy upper_size bytes of src_ptr to destination_address */
upper_size = (gSn_RX_MASK + 1) – src_mask;
memcpy(src_ptr, destination_addr, upper_size);
/* update destination_addr*/
destination_addr += upper_size;
/* copy left_size bytes of gSn_RX_BASE to destination_address */
left_size = get_size – upper_size;
memcpy(gSn_RX_BASE, destination_addr, left_size);
}
else
{
/* copy len bytes of src_ptr to destination_address */
memcpy(src_ptr, destination_addr, get_size);