Main Page | Modules | Data Structures | File List | Data Fields | Globals | Examples

The Contiki/uIP interface


Detailed Description

TCP/IP support in Contiki is implemented using the uIP TCP/IP stack. For sending and receiving data, Contiki uses the functions provided by the uIP module, but Contiki adds a set of functions for connection management. The connection management functions make sure that the uIP TCP/IP connections are connected to the correct process.

Contiki also includes an optional protosocket library that provides an API similar to the BSD socket API.

See also:
The uIP TCP/IP stack

Protosockets library


Files

file  tcpip.h
 Header for the Contiki/uIP interface.


Defines

#define udp_bind(conn, port)   uip_udp_bind(conn, port)
 Bind a UDP connection to a local port.


Functions

void tcp_markconn (struct uip_conn *conn, void *appstate)
 Mark a TCP connection with the current process.

void tcp_listen (u16_t port)
 Open a TCP port.

void tcp_unlisten (u16_t port)
 Close a listening TCP port.

uip_conntcp_connect (u16_t *ripaddr, u16_t port, void *appstate)
 Open a TCP connection to the specified IP address and port.

uip_udp_connudp_new (u16_t *ripaddr, u16_t port, void *appstate)
 Create a new UDP connection.

uip_udp_connudp_broadcast_new (u16_t port, void *appstate)
 Create a new UDP broadcast connection.

void tcpip_poll_tcp (struct uip_conn *conn)
 Cause a specified TCP connection to be polled.

void tcpip_poll_udp (struct uip_udp_conn *conn)
 Cause a specified UDP connection to be polled.


Variables

process_event_t tcpip_event
 The uIP event.


Define Documentation

#define udp_bind conn,
port   )     uip_udp_bind(conn, port)
 

Bind a UDP connection to a local port.

This function binds a UDP conncetion to a specified local port.

When a connction is created with udp_new(), it gets a local port number assigned automatically. If the application needs to bind the connection to a specified local port, this function should be used.

Note:
The port number must be provided in network byte order so a conversion with HTONS() usually is necessary.
Example
EK_EVENTHANDLER(eventhandler, ev, data) { u16_t addr[2]; if(ev == EK_EVENT_INIT) { uip_ipaddr(addr, 255,255,255,255); conn = udp_new(addr, HTONS(PORT), NULL); if(conn != NULL) { udp_bind(conn, HTONS(PORT)); } } }

Parameters:
conn A pointer to the UDP connection that is to be bound.
port The port number in network byte order to which to bind the connection.


Function Documentation

struct uip_conn* tcp_connect u16_t *  ripaddr,
u16_t  port,
void *  appstate
 

Open a TCP connection to the specified IP address and port.

This function opens a TCP connection to the specified port at the host specified with an IP address. Additionally, an opaque pointer can be attached to the connection. This pointer will be sent together with uIP events to the process.

Note:
The port number must be provided in network byte order so a conversion with HTONS() usually is necessary.

This function will only create the connection. The connection is not opened directly. uIP will try to open the connection the next time the uIP stack is scheduled by Contiki.

Example:
static struct uip_conn *conn; EK_EVENTHANDLER(eventhandler, ev, data) { u16_t addr[2]; if(ev == EK_EVENT_INIT) { uip_ipaddr(addr, 192,168,1,1); conn = tcp_connect(addr, HTONS(80), NULL); } }

Parameters:
ripaddr Pointer to the IP address of the remote host.
port Port number in network byte order.
appstate Pointer to application defined data.
Returns:
A pointer to the newly created connection, or NULL if memory could not be allocated for the connection.

void tcp_listen u16_t  port  ) 
 

Open a TCP port.

This function opens a TCP port for listening. When a TCP connection request occurs for the port, the process will be sent a tcpip_event with the new connection request.

Note:
Port numbers must always be given in network byte order. The functions HTONS() and htons() can be used to convert port numbers from host byte order to network byte order.
Example
static void init_ports(void) { tcp_listen(HTONS(80)); tcp_listen(HTONS(81)); }

Parameters:
port The port number in network byte order.

void tcp_markconn struct uip_conn conn,
void *  appstate
 

Mark a TCP connection with the current process.

This function ties a TCP connection with the current process. Each TCP connection must be tied to a process in order for the process to be able to receive and send data. Additionally, this function can add a pointer with connection state to the connection.

Parameters:
conn A pointer to the TCP connection.
appstate An opaque pointer that will be passed to the process whenever an event occurs on the connection.

void tcp_unlisten u16_t  port  ) 
 

Close a listening TCP port.

This function closes a listening TCP port.

Note:
Port numbers must always be given in network byte order. The functions HTONS() and htons() can be used to convert port numbers from host byte order to network byte order.
Example
static void close_ports(void) { tcp_unlisten(HTONS(80)); tcp_unlisten(HTONS(81)); }

Parameters:
port The port number in network byte order.

void tcpip_poll_tcp struct uip_conn conn  ) 
 

Cause a specified TCP connection to be polled.

This function causes uIP to poll the specified TCP connection. The function is used when the application has data that is to be sent immediately and do not wish to wait for the periodic uIP polling mechanism.

Parameters:
conn A pointer to the TCP connection that should be polled.

void tcpip_poll_udp struct uip_udp_conn conn  ) 
 

Cause a specified UDP connection to be polled.

This function causes uIP to poll the specified UDP connection. The function is used when the application has data that is to be sent immediately and do not wish to wait for the periodic uIP polling mechanism.

Parameters:
conn A pointer to the UDP connection that should be polled.
Examples:
example-program.c.

struct uip_udp_conn* udp_broadcast_new u16_t  port,
void *  appstate
 

Create a new UDP broadcast connection.

This function creates a new (link-local) broadcast UDP connection to a specified port.

Parameters:
port Port number in network byte order.
appstate Pointer to application defined data.
Returns:
A pointer to the newly created connection, or NULL if memory could not be allocated for the connection.
Examples:
example-program.c.

struct uip_udp_conn* udp_new u16_t *  ripaddr,
u16_t  port,
void *  appstate
 

Create a new UDP connection.

This function creates a new UDP connection with the specified remote endpoint.

Note:
The port number must be provided in network byte order so a conversion with HTONS() usually is necessary.
See also:
udp_bind()
Parameters:
ripaddr Pointer to the IP address of the remote host.
port Port number in network byte order.
appstate Pointer to application defined data.
Returns:
A pointer to the newly created connection, or NULL if memory could not be allocated for the connection.


Variable Documentation

process_event_t tcpip_event
 

The uIP event.

This event is posted to a process whenever a uIP event has occured.


Generated on Wed Jul 6 01:19:06 2005 for Contiki/ESB by doxygen 1.3.6