?lang_form? ?lang_select? ?lang_submit? ?lang_endform?
{HEADER END}
{FILE START}

library

?curdirlinks? - Rev 6

?prevdifflink? - Blame - ?getfile?

/*! \file netstack.h \brief Network Stack. */
//*****************************************************************************
//
// File Name    : 'netstack.h'
// Title                : Network Stack
// Author               : Pascal Stang
// Created              : 6/28/2005
// Revised              : 9/20/2005
// Version              : 0.3
// Target MCU   : Atmel AVR series
// Editor Tabs  : 4
//
///     \ingroup network
///     \defgroup netstack Network Stack (netstack.c)
///     \code #include "net/netstack.h" \endcode
///     \par Description
///             This library co-ordinates the various pieces of a typical IP network
///             stack into one unit.  Included are handling for ARP, ICMP, and IP
///             packets.  UDP and TCP packets are processed and passed to the user.
///
///             This is an example of how to use the various network libraries, and
///             is meant to be useful out-of-the-box for most users.  However, some
///             users may find it restrictive and write their own handlers instead.
///             This stack implementation is by no means the only way to use the various
///             network libraries.
///
///     \note This is NOT a full-blown TCP/IP stack.  It merely handles lower
///             level stack functions so that UDP and TCP packets can be sent
///             and received easily.  End-to-end TCP functionality may be added
///             in a future version.  Until then, I can recommend using other embedded
///             TCP/IP stacks like Adam Dunkel's uIP.
//
//      This code is distributed under the GNU Public License
//              which can be found at http://www.gnu.org/licenses/gpl.txt
//*****************************************************************************
//@{

#ifndef NETSTACK_H
#define NETSTACK_H

#include "net.h"
#include "arp.h"
#include "icmp.h"
#include "ip.h"
#include "nic.h"

//#define NETSTACK_DEBUG

/// NET_BUFFERSIZE is the common receive/process/transmit buffer.
/// - You may override the default NET_BUFFERSIZE by defining an alternate value in global.h.
/// - Network packets larger than NET_BUFFERSIZE will not be accepted.
#ifndef NETSTACK_BUFFERSIZE
#define NETSTACK_BUFFERSIZE             (576+ETH_HEADER_LEN)
#endif

/// netstackInit prepares the network interface for use and should be called
/// once at the beginning of the user program.
/// \note Use ipSetAddress() to change network parameters in mid-run.
void netstackInit(uint32_t ipaddress, uint32_t netmask, uint32_t gatewayip);

/// netstackGetBuffer returns a pointer to the common receive/process/transmit buffer.
u08* netstackGetBuffer(void);

/// netstackService should be called in the main loop of the user program.
/// The function will process one received network packet per call.
/// The return value is the length of the packet processed, or zero if no
/// packet was processed.
int netstackService(void);

/// netstackIPProcess handles distribution of IP received packets.
///
void netstackIPProcess(unsigned int len, ip_hdr* packet);

/// This weakly-defined function is the default handler for incoming UDP/IP packets.
/// Users should define this same function in user code (same name and arguments) to
/// override this default handler and get access to the received packets.
void netstackUDPIPProcess(unsigned int len, udpip_hdr* packet) __attribute__ ((weak));

/// This weakly-defined function is the default handler for incoming TCP/IP packets.
/// Users should define this same function in user code (same name and arguments) to
/// override this default handler and get access to the received packets.
void netstackTCPIPProcess(unsigned int len, tcpip_hdr* packet) __attribute__ ((weak));

#endif
//@}
{FILE END}
{FOOTER START}

Powered by WebSVN v2.8.3