:orphan:

###########################################################
AN02044: Using XMOS TCP/IP Library for UDP-based Networking
###########################################################

:vendor: XMOS
:version: 2.0.0
:scope: Example
:description: Simple TCP/IP UDP networking example
:category: Networking
:keywords: Ethernet
:hardware: XK-ETH-316-DUAL

*******
Summary
*******

This application note demonstrates the use of XMOS TCP/IP stack on
an XMOS multicore micro controller to communicate on an ethernet-based network.

The code associated with this application note provides an example of
using the XMOS TCP/IP ``lib_xtcp`` Library and the ethernet board support
component to provide a communication framework. It demonstrates how to
send and receive text messages on the XMOS device in the
network using the UDP stack using ``lib_xtcp``. The library features
low memory footprint but provides a complete stack of various
protocols.

Ethernet connectivity is an essential part of the explosion of connected 
devices known collectively as the Internet of Things (IoT). XMOS technology is
perfectly suited to these applications - offering future proof and reliable 
ethernet connectivity whilst offering the flexibility to interface to a huge 
variety of "Things".

The code associated with this application note provides an example of using
the TCP/IP and Ethernet Libraries to provide a UDP loopback using a Reduced
Media Independent Interface (RMII) and MAC interface supporting 100 Mbps.

Note: This application note requires an application to be run on the
host machine to test the communication with the XMOS device.

********
Features
********

* UDP connection handling
* Common API to TCP/IP stack, LwIP
* DHCP, IP4LL, ICMP, IGMP, TCP and UDP
* Low level, event based interface for efficient memory usage
* Supports IPv4 only, not IPv6

************
Known issues
************

* None

**************
Required tools
**************

* XMOS XTC Tools: 15.3.1

*********************************
Required libraries (dependencies)
*********************************

* `lib_board_support <https://www.xmos.com/libraries/lib_board_support>`_
* `lib_ethernet <https://www.xmos.com/libraries/lib_ethernet>`_
* `lib_i2c <https://www.xmos.com/libraries/lib_i2c>`_
* `lib_locks <https://www.xmos.com/libraries/lib_locks>`_
* `lib_logging <http://www.xmos.com/libraries/lib_logging>`_
* `lib_random <https://www.xmos.com/libraries/lib_random>`_
* `lib_sw_pll <https://www.xmos.com/libraries/lib_sw_pll>`_
* `lib_xassert <https://www.xmos.com/libraries/lib_xassert>`_
* `lib_xtcp <https://www.xmos.com/libraries/lib_xtcp>`_

*************************
Related application notes
*************************

* `AN00120: 100Mbps RMII ethernet application note <https://www.xmos.com/file/an00120>`_
* `AN00199: XMOS Gigabit Ethernet application note (XK_EVK_XE216) <https://www.xmos.com/file/an00199-xmos-gigabit-ethernet-application-note>`_
* `AN00121: Using XMOS TCP/IP Library for UDP-based Networking on XCORE-200 application note <https://www.xmos.com/file/an00121>`_
