Rewrite from scratch a TCP/IP stack for mbed. So far the following parts are usable: Drivers: - EMAC driver (from CMSIS 2.0) Protocols: - Ethernet protocol - ARP over ethernet for IPv4 - IPv4 over Ethernet - ICMPv4 over IPv4 - UDPv4 over IPv4 APIs: - Sockets for UDPv4 The structure of this stack is designed to be very modular. Each protocol can register one or more protocol to handle its payload, and in each protocol, an API can be hooked (like Sockets for example). This is an early release.

Committer:
Benoit
Date:
Sun Jun 26 09:56:31 2011 +0000
Revision:
7:8e12f7357b9f
Parent:
5:3cd83fcb1467
Added IPv4 global broadcast address to processed frames inside IPv4 layer.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Benoit 4:cb3dc3361be5 1 /* @cond */
Benoit 0:19f5f51584de 2 /***********************************************************************//**
Benoit 0:19f5f51584de 3 * @file lpc_types.h
Benoit 0:19f5f51584de 4 * @brief Contains the NXP ABL typedefs for C standard types.
Benoit 0:19f5f51584de 5 * It is intended to be used in ISO C conforming development
Benoit 0:19f5f51584de 6 * environments and checks for this insofar as it is possible
Benoit 0:19f5f51584de 7 * to do so.
Benoit 0:19f5f51584de 8 * @version 1.0
Benoit 0:19f5f51584de 9 * @date 27 Jul. 2008
Benoit 0:19f5f51584de 10 * @author wellsk
Benoit 0:19f5f51584de 11 **************************************************************************
Benoit 0:19f5f51584de 12 * Software that is described herein is for illustrative purposes only
Benoit 0:19f5f51584de 13 * which provides customers with programming information regarding the
Benoit 0:19f5f51584de 14 * products. This software is supplied "AS IS" without any warranties.
Benoit 0:19f5f51584de 15 * NXP Semiconductors assumes no responsibility or liability for the
Benoit 0:19f5f51584de 16 * use of the software, conveys no license or title under any patent,
Benoit 0:19f5f51584de 17 * copyright, or mask work right to the product. NXP Semiconductors
Benoit 0:19f5f51584de 18 * reserves the right to make changes in the software without
Benoit 0:19f5f51584de 19 * notification. NXP Semiconductors also make no representation or
Benoit 0:19f5f51584de 20 * warranty that such application will be suitable for the specified
Benoit 0:19f5f51584de 21 * use without further testing or modification.
Benoit 0:19f5f51584de 22 **************************************************************************/
Benoit 0:19f5f51584de 23
Benoit 0:19f5f51584de 24 /* Type group ----------------------------------------------------------- */
Benoit 0:19f5f51584de 25 /** @defgroup LPC_Types LPC_Types
Benoit 0:19f5f51584de 26 * @ingroup LPC1700CMSIS_FwLib_Drivers
Benoit 0:19f5f51584de 27 * @{
Benoit 0:19f5f51584de 28 */
Benoit 0:19f5f51584de 29
Benoit 0:19f5f51584de 30 #ifndef LPC_TYPES_H
Benoit 0:19f5f51584de 31 #define LPC_TYPES_H
Benoit 0:19f5f51584de 32
Benoit 0:19f5f51584de 33 /* Includes ------------------------------------------------------------------- */
Benoit 0:19f5f51584de 34 #include <stdint.h>
Benoit 0:19f5f51584de 35
Benoit 0:19f5f51584de 36
Benoit 0:19f5f51584de 37 /* Public Types --------------------------------------------------------------- */
Benoit 0:19f5f51584de 38 /** @defgroup LPC_Types_Public_Types LPC_Types Public Types
Benoit 0:19f5f51584de 39 * @{
Benoit 0:19f5f51584de 40 */
Benoit 0:19f5f51584de 41
Benoit 0:19f5f51584de 42 /**
Benoit 0:19f5f51584de 43 * @brief Boolean Type definition
Benoit 0:19f5f51584de 44 */
Benoit 0:19f5f51584de 45 //typedef enum {FALSE = 0, TRUE = !FALSE} Bool;
Benoit 0:19f5f51584de 46 #define Bool bool
Benoit 0:19f5f51584de 47 #define FALSE false
Benoit 0:19f5f51584de 48 #define TRUE true
Benoit 0:19f5f51584de 49
Benoit 0:19f5f51584de 50 /**
Benoit 0:19f5f51584de 51 * @brief Flag Status and Interrupt Flag Status type definition
Benoit 0:19f5f51584de 52 */
Benoit 0:19f5f51584de 53 typedef enum {RESET = 0, SET = !RESET} FlagStatus, IntStatus, SetState;
Benoit 0:19f5f51584de 54 #define PARAM_SETSTATE(State) ((State==RESET) || (State==SET))
Benoit 0:19f5f51584de 55
Benoit 0:19f5f51584de 56 /**
Benoit 0:19f5f51584de 57 * @brief Functional State Definition
Benoit 0:19f5f51584de 58 */
Benoit 0:19f5f51584de 59 typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;
Benoit 0:19f5f51584de 60 #define PARAM_FUNCTIONALSTATE(State) ((State==DISABLE) || (State==ENABLE))
Benoit 0:19f5f51584de 61
Benoit 0:19f5f51584de 62 /**
Benoit 0:19f5f51584de 63 * @ Status type definition
Benoit 0:19f5f51584de 64 */
Benoit 0:19f5f51584de 65 typedef enum {ERROR = 0, SUCCESS = !ERROR} Status;
Benoit 0:19f5f51584de 66
Benoit 0:19f5f51584de 67
Benoit 0:19f5f51584de 68 /**
Benoit 0:19f5f51584de 69 * Read/Write transfer type mode (Block or non-block)
Benoit 0:19f5f51584de 70 */
Benoit 0:19f5f51584de 71 typedef enum
Benoit 0:19f5f51584de 72 {
Benoit 0:19f5f51584de 73 NONE_BLOCKING = 0, /**< None Blocking type */
Benoit 0:19f5f51584de 74 BLOCKING, /**< Blocking type */
Benoit 0:19f5f51584de 75 } TRANSFER_BLOCK_Type;
Benoit 0:19f5f51584de 76
Benoit 0:19f5f51584de 77
Benoit 0:19f5f51584de 78 /** Pointer to Function returning Void (any number of parameters) */
Benoit 0:19f5f51584de 79 typedef void (*PFV)();
Benoit 0:19f5f51584de 80
Benoit 0:19f5f51584de 81 /** Pointer to Function returning int32_t (any number of parameters) */
Benoit 0:19f5f51584de 82 typedef int32_t(*PFI)();
Benoit 0:19f5f51584de 83
Benoit 0:19f5f51584de 84 /**
Benoit 0:19f5f51584de 85 * @}
Benoit 0:19f5f51584de 86 */
Benoit 0:19f5f51584de 87
Benoit 0:19f5f51584de 88
Benoit 0:19f5f51584de 89 /* Public Macros -------------------------------------------------------------- */
Benoit 0:19f5f51584de 90 /** @defgroup LPC_Types_Public_Macros LPC_Types Public Macros
Benoit 0:19f5f51584de 91 * @{
Benoit 0:19f5f51584de 92 */
Benoit 0:19f5f51584de 93
Benoit 0:19f5f51584de 94 /* _BIT(n) sets the bit at position "n"
Benoit 0:19f5f51584de 95 * _BIT(n) is intended to be used in "OR" and "AND" expressions:
Benoit 0:19f5f51584de 96 * e.g., "(_BIT(3) | _BIT(7))".
Benoit 0:19f5f51584de 97 */
Benoit 0:19f5f51584de 98 #undef _BIT
Benoit 0:19f5f51584de 99 /* Set bit macro */
Benoit 0:19f5f51584de 100 #define _BIT(n) (1<<n)
Benoit 0:19f5f51584de 101
Benoit 0:19f5f51584de 102 /* _SBF(f,v) sets the bit field starting at position "f" to value "v".
Benoit 0:19f5f51584de 103 * _SBF(f,v) is intended to be used in "OR" and "AND" expressions:
Benoit 0:19f5f51584de 104 * e.g., "((_SBF(5,7) | _SBF(12,0xF)) & 0xFFFF)"
Benoit 0:19f5f51584de 105 */
Benoit 0:19f5f51584de 106 #undef _SBF
Benoit 0:19f5f51584de 107 /* Set bit field macro */
Benoit 0:19f5f51584de 108 #define _SBF(f,v) (v<<f)
Benoit 0:19f5f51584de 109
Benoit 0:19f5f51584de 110 /* _BITMASK constructs a symbol with 'field_width' least significant
Benoit 0:19f5f51584de 111 * bits set.
Benoit 0:19f5f51584de 112 * e.g., _BITMASK(5) constructs '0x1F', _BITMASK(16) == 0xFFFF
Benoit 0:19f5f51584de 113 * The symbol is intended to be used to limit the bit field width
Benoit 0:19f5f51584de 114 * thusly:
Benoit 0:19f5f51584de 115 * <a_register> = (any_expression) & _BITMASK(x), where 0 < x <= 32.
Benoit 0:19f5f51584de 116 * If "any_expression" results in a value that is larger than can be
Benoit 0:19f5f51584de 117 * contained in 'x' bits, the bits above 'x - 1' are masked off. When
Benoit 0:19f5f51584de 118 * used with the _SBF example above, the example would be written:
Benoit 0:19f5f51584de 119 * a_reg = ((_SBF(5,7) | _SBF(12,0xF)) & _BITMASK(16))
Benoit 0:19f5f51584de 120 * This ensures that the value written to a_reg is no wider than
Benoit 0:19f5f51584de 121 * 16 bits, and makes the code easier to read and understand.
Benoit 0:19f5f51584de 122 */
Benoit 0:19f5f51584de 123 #undef _BITMASK
Benoit 0:19f5f51584de 124 /* Bitmask creation macro */
Benoit 0:19f5f51584de 125 #define _BITMASK(field_width) ( _BIT(field_width) - 1)
Benoit 0:19f5f51584de 126
Benoit 0:19f5f51584de 127 /* NULL pointer */
Benoit 0:19f5f51584de 128 #ifndef NULL
Benoit 0:19f5f51584de 129 #define NULL ((void*) 0)
Benoit 0:19f5f51584de 130 #endif
Benoit 0:19f5f51584de 131
Benoit 0:19f5f51584de 132 /* Number of elements in an array */
Benoit 0:19f5f51584de 133 #define NELEMENTS(array) (sizeof (array) / sizeof (array[0]))
Benoit 0:19f5f51584de 134
Benoit 0:19f5f51584de 135 /* Static data/function define */
Benoit 0:19f5f51584de 136 #define STATIC static
Benoit 0:19f5f51584de 137 /* External data/function define */
Benoit 0:19f5f51584de 138 #define EXTERN extern
Benoit 0:19f5f51584de 139
Benoit 0:19f5f51584de 140 #define MAX(a, b) (((a) > (b)) ? (a) : (b))
Benoit 0:19f5f51584de 141 #define MIN(a, b) (((a) < (b)) ? (a) : (b))
Benoit 0:19f5f51584de 142
Benoit 0:19f5f51584de 143 /**
Benoit 0:19f5f51584de 144 * @}
Benoit 0:19f5f51584de 145 */
Benoit 0:19f5f51584de 146
Benoit 0:19f5f51584de 147
Benoit 0:19f5f51584de 148 /* Old Type Definition compatibility ------------------------------------------ */
Benoit 0:19f5f51584de 149 /** @addtogroup LPC_Types_Public_Types LPC_Types Public Types
Benoit 0:19f5f51584de 150 * @{
Benoit 0:19f5f51584de 151 */
Benoit 0:19f5f51584de 152
Benoit 0:19f5f51584de 153 /** SMA type for character type */
Benoit 0:19f5f51584de 154 typedef char CHAR;
Benoit 0:19f5f51584de 155
Benoit 0:19f5f51584de 156 /** SMA type for 8 bit unsigned value */
Benoit 0:19f5f51584de 157 typedef uint8_t UNS_8;
Benoit 0:19f5f51584de 158
Benoit 0:19f5f51584de 159 /** SMA type for 8 bit signed value */
Benoit 0:19f5f51584de 160 typedef int8_t INT_8;
Benoit 0:19f5f51584de 161
Benoit 0:19f5f51584de 162 /** SMA type for 16 bit unsigned value */
Benoit 0:19f5f51584de 163 typedef uint16_t UNS_16;
Benoit 0:19f5f51584de 164
Benoit 0:19f5f51584de 165 /** SMA type for 16 bit signed value */
Benoit 0:19f5f51584de 166 typedef int16_t INT_16;
Benoit 0:19f5f51584de 167
Benoit 0:19f5f51584de 168 /** SMA type for 32 bit unsigned value */
Benoit 0:19f5f51584de 169 typedef uint32_t UNS_32;
Benoit 0:19f5f51584de 170
Benoit 0:19f5f51584de 171 /** SMA type for 32 bit signed value */
Benoit 0:19f5f51584de 172 typedef int32_t INT_32;
Benoit 0:19f5f51584de 173
Benoit 0:19f5f51584de 174 /** SMA type for 64 bit signed value */
Benoit 0:19f5f51584de 175 typedef int64_t INT_64;
Benoit 0:19f5f51584de 176
Benoit 0:19f5f51584de 177 /** SMA type for 64 bit unsigned value */
Benoit 0:19f5f51584de 178 typedef uint64_t UNS_64;
Benoit 0:19f5f51584de 179
Benoit 0:19f5f51584de 180 /** 32 bit boolean type */
Benoit 0:19f5f51584de 181 typedef Bool BOOL_32;
Benoit 0:19f5f51584de 182
Benoit 0:19f5f51584de 183 /** 16 bit boolean type */
Benoit 0:19f5f51584de 184 typedef Bool BOOL_16;
Benoit 0:19f5f51584de 185
Benoit 0:19f5f51584de 186 /** 8 bit boolean type */
Benoit 0:19f5f51584de 187 typedef Bool BOOL_8;
Benoit 0:19f5f51584de 188
Benoit 0:19f5f51584de 189 /**
Benoit 0:19f5f51584de 190 * @}
Benoit 0:19f5f51584de 191 */
Benoit 0:19f5f51584de 192
Benoit 0:19f5f51584de 193
Benoit 0:19f5f51584de 194 #endif /* LPC_TYPES_H */
Benoit 0:19f5f51584de 195
Benoit 0:19f5f51584de 196 /**
Benoit 0:19f5f51584de 197 * @}
Benoit 0:19f5f51584de 198 */
Benoit 0:19f5f51584de 199
Benoit 0:19f5f51584de 200 /* --------------------------------- End Of File ------------------------------ */
Benoit 5:3cd83fcb1467 201 /* @endcond */