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 12 11:23:03 2011 +0000
Revision:
0:19f5f51584de
Child:
4:cb3dc3361be5
Initial release (alpha quality)

Who changed what in which revision?

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