Igor Skochinsky
/
EasyWebCR
code_red's port of EasyWeb server for LPC1768, made to compile with mbed's online compiler.
tcpip.h@0:12b53511e212, 2010-01-29 (annotated)
- Committer:
- igorsk
- Date:
- Fri Jan 29 21:46:31 2010 +0000
- Revision:
- 0:12b53511e212
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
igorsk | 0:12b53511e212 | 1 | /****************************************************************** |
igorsk | 0:12b53511e212 | 2 | ***** ***** |
igorsk | 0:12b53511e212 | 3 | ***** Name: tcpip.h ***** |
igorsk | 0:12b53511e212 | 4 | ***** Ver.: 1.0 ***** |
igorsk | 0:12b53511e212 | 5 | ***** Date: 07/05/2001 ***** |
igorsk | 0:12b53511e212 | 6 | ***** Auth: Andreas Dannenberg ***** |
igorsk | 0:12b53511e212 | 7 | ***** HTWK Leipzig ***** |
igorsk | 0:12b53511e212 | 8 | ***** university of applied sciences ***** |
igorsk | 0:12b53511e212 | 9 | ***** Germany ***** |
igorsk | 0:12b53511e212 | 10 | ***** Func: header-file for tcpip.c ***** |
igorsk | 0:12b53511e212 | 11 | ***** ***** |
igorsk | 0:12b53511e212 | 12 | ******************************************************************/ |
igorsk | 0:12b53511e212 | 13 | |
igorsk | 0:12b53511e212 | 14 | // Modifications by Code Red Technologies for NXP LPC1776 |
igorsk | 0:12b53511e212 | 15 | |
igorsk | 0:12b53511e212 | 16 | #ifndef __TCPIP_H |
igorsk | 0:12b53511e212 | 17 | #define __TCPIP_H |
igorsk | 0:12b53511e212 | 18 | |
igorsk | 0:12b53511e212 | 19 | // easyWEB-stack definitions |
igorsk | 0:12b53511e212 | 20 | // Code Red - replaced original address by 192.168.0.200 |
igorsk | 0:12b53511e212 | 21 | #define MYIP_1 192 // our internet protocol (IP) address |
igorsk | 0:12b53511e212 | 22 | #define MYIP_2 168 |
igorsk | 0:12b53511e212 | 23 | #define MYIP_3 0 |
igorsk | 0:12b53511e212 | 24 | #define MYIP_4 200 |
igorsk | 0:12b53511e212 | 25 | //#define MYIP_4 30 |
igorsk | 0:12b53511e212 | 26 | |
igorsk | 0:12b53511e212 | 27 | #define SUBMASK_1 255 // subnet mask |
igorsk | 0:12b53511e212 | 28 | #define SUBMASK_2 255 |
igorsk | 0:12b53511e212 | 29 | #define SUBMASK_3 255 |
igorsk | 0:12b53511e212 | 30 | #define SUBMASK_4 0 |
igorsk | 0:12b53511e212 | 31 | |
igorsk | 0:12b53511e212 | 32 | #define GWIP_1 192 // standard gateway (used if remote |
igorsk | 0:12b53511e212 | 33 | #define GWIP_2 168 // IP is no part of our subnet) |
igorsk | 0:12b53511e212 | 34 | #define GWIP_3 2 |
igorsk | 0:12b53511e212 | 35 | #define GWIP_4 154 |
igorsk | 0:12b53511e212 | 36 | |
igorsk | 0:12b53511e212 | 37 | #define RETRY_TIMEOUT 8 // wait max. 8 x 262ms for an ACK (about 2 sec.) |
igorsk | 0:12b53511e212 | 38 | #define FIN_TIMEOUT 2 // max. time to wait for an ACK of a FIN |
igorsk | 0:12b53511e212 | 39 | // before closing TCP state-machine (about 0.5 s) |
igorsk | 0:12b53511e212 | 40 | #define MAX_RETRYS 4 // nr. of resendings before reset conn. |
igorsk | 0:12b53511e212 | 41 | // total nr. of transmissions = MAX_RETRYS + 1 |
igorsk | 0:12b53511e212 | 42 | |
igorsk | 0:12b53511e212 | 43 | #define MAX_TCP_TX_DATA_SIZE 512 // max. outgoing TCP data size (even!) |
igorsk | 0:12b53511e212 | 44 | #define MAX_TCP_RX_DATA_SIZE 256 // max. incoming TCP data size (even!) |
igorsk | 0:12b53511e212 | 45 | // (increasing the buffer-size dramatically |
igorsk | 0:12b53511e212 | 46 | // increases the transfer-speed!) |
igorsk | 0:12b53511e212 | 47 | |
igorsk | 0:12b53511e212 | 48 | #define MAX_ETH_TX_DATA_SIZE 60 // 2nd buffer, used for ARP, ICMP, TCP (even!) |
igorsk | 0:12b53511e212 | 49 | // enough to echo 32 byte via ICMP |
igorsk | 0:12b53511e212 | 50 | |
igorsk | 0:12b53511e212 | 51 | #define DEFAULT_TTL 64 // Time To Live sent with packets |
igorsk | 0:12b53511e212 | 52 | |
igorsk | 0:12b53511e212 | 53 | // Ethernet network layer definitions |
igorsk | 0:12b53511e212 | 54 | #define ETH_DA_OFS 0 // Destination MAC address (48 Bit) |
igorsk | 0:12b53511e212 | 55 | #define ETH_SA_OFS 6 // Source MAC address (48 Bit) |
igorsk | 0:12b53511e212 | 56 | #define ETH_TYPE_OFS 12 // Type field (16 Bit) |
igorsk | 0:12b53511e212 | 57 | #define ETH_DATA_OFS 14 // Frame Data |
igorsk | 0:12b53511e212 | 58 | #define ETH_HEADER_SIZE 14 |
igorsk | 0:12b53511e212 | 59 | |
igorsk | 0:12b53511e212 | 60 | #define FRAME_ARP 0x0806 // frame types (stored in Type/Length field) |
igorsk | 0:12b53511e212 | 61 | #define FRAME_IP 0x0800 |
igorsk | 0:12b53511e212 | 62 | |
igorsk | 0:12b53511e212 | 63 | // IPv4 layer definitions |
igorsk | 0:12b53511e212 | 64 | #define IP_VER_IHL_TOS_OFS ETH_DATA_OFS + 0 // Version, Header Length, Type of Service |
igorsk | 0:12b53511e212 | 65 | #define IP_TOTAL_LENGTH_OFS ETH_DATA_OFS + 2 // IP Frame's Total Length |
igorsk | 0:12b53511e212 | 66 | #define IP_IDENT_OFS ETH_DATA_OFS + 4 // Identifying Value |
igorsk | 0:12b53511e212 | 67 | #define IP_FLAGS_FRAG_OFS ETH_DATA_OFS + 6 // Flags and Fragment Offset |
igorsk | 0:12b53511e212 | 68 | #define IP_TTL_PROT_OFS ETH_DATA_OFS + 8 // Frame's Time to Live, Protocol |
igorsk | 0:12b53511e212 | 69 | #define IP_HEAD_CHKSUM_OFS ETH_DATA_OFS + 10 // IP Frame's Header Checksum |
igorsk | 0:12b53511e212 | 70 | #define IP_SOURCE_OFS ETH_DATA_OFS + 12 // Source Address (32 Bit) |
igorsk | 0:12b53511e212 | 71 | #define IP_DESTINATION_OFS ETH_DATA_OFS + 16 // Destination Address (32 Bit) |
igorsk | 0:12b53511e212 | 72 | #define IP_DATA_OFS ETH_DATA_OFS + 20 // Frame Data (if no options) |
igorsk | 0:12b53511e212 | 73 | #define IP_HEADER_SIZE 20 // w/o options |
igorsk | 0:12b53511e212 | 74 | |
igorsk | 0:12b53511e212 | 75 | #define IP_VER_IHL 0x4500 // IPv4, Header Length = 5x32 bit |
igorsk | 0:12b53511e212 | 76 | #define IP_TOS_D 0x0010 // TOS low delay |
igorsk | 0:12b53511e212 | 77 | #define IP_TOS_T 0x0008 // TOS high throughput |
igorsk | 0:12b53511e212 | 78 | #define IP_TOS_R 0x0004 // TOS high reliability |
igorsk | 0:12b53511e212 | 79 | |
igorsk | 0:12b53511e212 | 80 | #define IP_FLAG_DONTFRAG 0x4000 // don't fragment IP frame |
igorsk | 0:12b53511e212 | 81 | #define IP_FLAG_MOREFRAG 0x2000 // more fragments available |
igorsk | 0:12b53511e212 | 82 | #define IP_FRAGOFS_MASK 0x1FFF // indicates where this fragment belongs |
igorsk | 0:12b53511e212 | 83 | |
igorsk | 0:12b53511e212 | 84 | #define PROT_ICMP 1 // Internet Control Message Protocol |
igorsk | 0:12b53511e212 | 85 | #define PROT_TCP 6 // Transmission Control Protocol |
igorsk | 0:12b53511e212 | 86 | #define PROT_UDP 17 // User Datagram Protocol |
igorsk | 0:12b53511e212 | 87 | |
igorsk | 0:12b53511e212 | 88 | // ARP definitions |
igorsk | 0:12b53511e212 | 89 | #define ARP_HARDW_OFS ETH_DATA_OFS + 0 // Hardware address type |
igorsk | 0:12b53511e212 | 90 | #define ARP_PROT_OFS ETH_DATA_OFS + 2 // Protocol |
igorsk | 0:12b53511e212 | 91 | #define ARP_HLEN_PLEN_OFS ETH_DATA_OFS + 4 // byte length of each hardw. / prot. address |
igorsk | 0:12b53511e212 | 92 | #define ARP_OPCODE_OFS ETH_DATA_OFS + 6 // Opcode |
igorsk | 0:12b53511e212 | 93 | #define ARP_SENDER_HA_OFS ETH_DATA_OFS + 8 // Hardw. address of sender of this packet |
igorsk | 0:12b53511e212 | 94 | #define ARP_SENDER_IP_OFS ETH_DATA_OFS + 14 // IP address of sender |
igorsk | 0:12b53511e212 | 95 | #define ARP_TARGET_HA_OFS ETH_DATA_OFS + 18 // Hardw. address of target of this packet |
igorsk | 0:12b53511e212 | 96 | #define ARP_TARGET_IP_OFS ETH_DATA_OFS + 24 // IP address of target |
igorsk | 0:12b53511e212 | 97 | #define ARP_FRAME_SIZE 28 |
igorsk | 0:12b53511e212 | 98 | |
igorsk | 0:12b53511e212 | 99 | #define HARDW_ETH10 1 // hardware-type 10Mbps Ethernet |
igorsk | 0:12b53511e212 | 100 | #define IP_HLEN_PLEN 0x0604 // MAC = 6 byte long, IP = 4 byte long |
igorsk | 0:12b53511e212 | 101 | #define OP_ARP_REQUEST 1 // operations for ARP-frames |
igorsk | 0:12b53511e212 | 102 | #define OP_ARP_ANSWER 2 |
igorsk | 0:12b53511e212 | 103 | |
igorsk | 0:12b53511e212 | 104 | // ICMP definitions |
igorsk | 0:12b53511e212 | 105 | #define ICMP_TYPE_CODE_OFS IP_DATA_OFS + 0 // type of message |
igorsk | 0:12b53511e212 | 106 | #define ICMP_CHKSUM_OFS IP_DATA_OFS + 2 // checksum of ICMP-message (16 bit) |
igorsk | 0:12b53511e212 | 107 | #define ICMP_DATA_OFS IP_DATA_OFS + 4 |
igorsk | 0:12b53511e212 | 108 | #define ICMP_HEADER_SIZE 4 |
igorsk | 0:12b53511e212 | 109 | |
igorsk | 0:12b53511e212 | 110 | #define ICMP_ECHO 8 // message is an echo request |
igorsk | 0:12b53511e212 | 111 | #define ICMP_ECHO_REPLY 0 // message is an echo reply |
igorsk | 0:12b53511e212 | 112 | |
igorsk | 0:12b53511e212 | 113 | // TCP layer definitions |
igorsk | 0:12b53511e212 | 114 | #define TCP_SRCPORT_OFS IP_DATA_OFS + 0 // Source Port (16 bit) |
igorsk | 0:12b53511e212 | 115 | #define TCP_DESTPORT_OFS IP_DATA_OFS + 2 // Destination Port (16 bit) |
igorsk | 0:12b53511e212 | 116 | #define TCP_SEQNR_OFS IP_DATA_OFS + 4 // Sequence Number (32 bit) |
igorsk | 0:12b53511e212 | 117 | #define TCP_ACKNR_OFS IP_DATA_OFS + 8 // Acknowledge Number (32 bit) |
igorsk | 0:12b53511e212 | 118 | #define TCP_DATA_CODE_OFS IP_DATA_OFS + 12 // Data Offset and Control Bits (16 bit) |
igorsk | 0:12b53511e212 | 119 | #define TCP_WINDOW_OFS IP_DATA_OFS + 14 // Window Size (16 bit) |
igorsk | 0:12b53511e212 | 120 | #define TCP_CHKSUM_OFS IP_DATA_OFS + 16 // Checksum Field (16 bit) |
igorsk | 0:12b53511e212 | 121 | #define TCP_URGENT_OFS IP_DATA_OFS + 18 // Urgent Pointer (16 bit) |
igorsk | 0:12b53511e212 | 122 | #define TCP_DATA_OFS IP_DATA_OFS + 20 // Frame Data (if no options) |
igorsk | 0:12b53511e212 | 123 | #define TCP_HEADER_SIZE 20 // size w/o options |
igorsk | 0:12b53511e212 | 124 | |
igorsk | 0:12b53511e212 | 125 | #define DATA_OFS_MASK 0xF000 // number of 32 bit words in the TCP Header |
igorsk | 0:12b53511e212 | 126 | |
igorsk | 0:12b53511e212 | 127 | #define TCP_CODE_FIN 0x0001 |
igorsk | 0:12b53511e212 | 128 | #define TCP_CODE_SYN 0x0002 |
igorsk | 0:12b53511e212 | 129 | #define TCP_CODE_RST 0x0004 |
igorsk | 0:12b53511e212 | 130 | #define TCP_CODE_PSH 0x0008 |
igorsk | 0:12b53511e212 | 131 | #define TCP_CODE_ACK 0x0010 |
igorsk | 0:12b53511e212 | 132 | #define TCP_CODE_URG 0x0020 |
igorsk | 0:12b53511e212 | 133 | |
igorsk | 0:12b53511e212 | 134 | #define TCP_OPT_MSS 0x0204 // Type 2, Option Length 4 (Max. Segment Size) |
igorsk | 0:12b53511e212 | 135 | #define TCP_OPT_MSS_SIZE 4 |
igorsk | 0:12b53511e212 | 136 | |
igorsk | 0:12b53511e212 | 137 | // define some TCP standard-ports, useful for testing... |
igorsk | 0:12b53511e212 | 138 | #define TCP_PORT_ECHO 7 // echo |
igorsk | 0:12b53511e212 | 139 | #define TCP_PORT_DISCARD 9 // discard |
igorsk | 0:12b53511e212 | 140 | #define TCP_PORT_DAYTIME 13 // daytime |
igorsk | 0:12b53511e212 | 141 | #define TCP_PORT_QOTD 17 // quote of the day |
igorsk | 0:12b53511e212 | 142 | #define TCP_PORT_CHARGEN 19 // character generator |
igorsk | 0:12b53511e212 | 143 | #define TCP_PORT_HTTP 80 // word wide web HTTP |
igorsk | 0:12b53511e212 | 144 | |
igorsk | 0:12b53511e212 | 145 | // macros |
igorsk | 0:12b53511e212 | 146 | #define SWAPB(Word) ((unsigned short)((Word) << 8) | ((Word) >> 8)) |
igorsk | 0:12b53511e212 | 147 | // convert little <-> big endian |
igorsk | 0:12b53511e212 | 148 | |
igorsk | 0:12b53511e212 | 149 | // typedefs |
igorsk | 0:12b53511e212 | 150 | typedef enum { // states of the TCP-state machine |
igorsk | 0:12b53511e212 | 151 | CLOSED, // according to RFC793 |
igorsk | 0:12b53511e212 | 152 | LISTENING, |
igorsk | 0:12b53511e212 | 153 | SYN_SENT, |
igorsk | 0:12b53511e212 | 154 | SYN_RECD, |
igorsk | 0:12b53511e212 | 155 | ESTABLISHED, |
igorsk | 0:12b53511e212 | 156 | FIN_WAIT_1, |
igorsk | 0:12b53511e212 | 157 | FIN_WAIT_2, |
igorsk | 0:12b53511e212 | 158 | CLOSE_WAIT, |
igorsk | 0:12b53511e212 | 159 | CLOSING, |
igorsk | 0:12b53511e212 | 160 | LAST_ACK, |
igorsk | 0:12b53511e212 | 161 | TIME_WAIT |
igorsk | 0:12b53511e212 | 162 | } TTCPStateMachine; |
igorsk | 0:12b53511e212 | 163 | |
igorsk | 0:12b53511e212 | 164 | typedef enum { // type of last frame sent. used |
igorsk | 0:12b53511e212 | 165 | ARP_REQUEST, // for retransmissions |
igorsk | 0:12b53511e212 | 166 | TCP_SYN_FRAME, |
igorsk | 0:12b53511e212 | 167 | TCP_SYN_ACK_FRAME, |
igorsk | 0:12b53511e212 | 168 | TCP_FIN_FRAME, |
igorsk | 0:12b53511e212 | 169 | TCP_DATA_FRAME |
igorsk | 0:12b53511e212 | 170 | } TLastFrameSent; |
igorsk | 0:12b53511e212 | 171 | |
igorsk | 0:12b53511e212 | 172 | // constants |
igorsk | 0:12b53511e212 | 173 | |
igorsk | 0:12b53511e212 | 174 | // Code Red |
igorsk | 0:12b53511e212 | 175 | // ifdef added as due to change to including .h files rather than .c files. |
igorsk | 0:12b53511e212 | 176 | // The use of ifdef reduces the coding changes that would otherwise be required, |
igorsk | 0:12b53511e212 | 177 | // depending upon which file is including this one. |
igorsk | 0:12b53511e212 | 178 | // the next 3 buffers must be word-aligned! |
igorsk | 0:12b53511e212 | 179 | // (here the 'RecdIPFrameLength' above does that) |
igorsk | 0:12b53511e212 | 180 | |
igorsk | 0:12b53511e212 | 181 | extern unsigned short _TxFrame1[(ETH_HEADER_SIZE + IP_HEADER_SIZE + TCP_HEADER_SIZE + MAX_TCP_TX_DATA_SIZE)/2]; |
igorsk | 0:12b53511e212 | 182 | extern unsigned short _TxFrame2[(ETH_HEADER_SIZE + MAX_ETH_TX_DATA_SIZE)/2]; |
igorsk | 0:12b53511e212 | 183 | extern unsigned short _RxTCPBuffer[MAX_TCP_RX_DATA_SIZE/2]; // space for incoming TCP-data |
igorsk | 0:12b53511e212 | 184 | #define TxFrame1 ((unsigned char *)_TxFrame1) |
igorsk | 0:12b53511e212 | 185 | #define TxFrame2 ((unsigned char *)_TxFrame2) |
igorsk | 0:12b53511e212 | 186 | #define RxTCPBuffer ((unsigned char *)_RxTCPBuffer) |
igorsk | 0:12b53511e212 | 187 | |
igorsk | 0:12b53511e212 | 188 | // |
igorsk | 0:12b53511e212 | 189 | // prototypes |
igorsk | 0:12b53511e212 | 190 | void DoNetworkStuff(void); |
igorsk | 0:12b53511e212 | 191 | |
igorsk | 0:12b53511e212 | 192 | // Handlers for incoming frames |
igorsk | 0:12b53511e212 | 193 | void ProcessEthBroadcastFrame(void); |
igorsk | 0:12b53511e212 | 194 | void ProcessEthIAFrame(void); |
igorsk | 0:12b53511e212 | 195 | void ProcessICMPFrame(void); |
igorsk | 0:12b53511e212 | 196 | void ProcessTCPFrame(void); |
igorsk | 0:12b53511e212 | 197 | |
igorsk | 0:12b53511e212 | 198 | // fill TX-buffers |
igorsk | 0:12b53511e212 | 199 | void PrepareARP_REQUEST(void); |
igorsk | 0:12b53511e212 | 200 | void PrepareARP_ANSWER(void); |
igorsk | 0:12b53511e212 | 201 | void PrepareICMP_ECHO_REPLY(void); |
igorsk | 0:12b53511e212 | 202 | void PrepareTCP_FRAME(unsigned short TCPCode); |
igorsk | 0:12b53511e212 | 203 | void PrepareTCP_DATA_FRAME(void); |
igorsk | 0:12b53511e212 | 204 | |
igorsk | 0:12b53511e212 | 205 | // general help functions |
igorsk | 0:12b53511e212 | 206 | void SendFrame1(void); |
igorsk | 0:12b53511e212 | 207 | void SendFrame2(void); |
igorsk | 0:12b53511e212 | 208 | void TCPStartRetryTimer(void); |
igorsk | 0:12b53511e212 | 209 | void TCPStartTimeWaitTimer(void); |
igorsk | 0:12b53511e212 | 210 | void TCPRestartTimer(void); |
igorsk | 0:12b53511e212 | 211 | void TCPStopTimer(void); |
igorsk | 0:12b53511e212 | 212 | void TCPHandleRetransmission(void); |
igorsk | 0:12b53511e212 | 213 | void TCPHandleTimeout(void); |
igorsk | 0:12b53511e212 | 214 | unsigned short CalcChecksum(void *Start, unsigned short Count, unsigned char IsTCP); |
igorsk | 0:12b53511e212 | 215 | |
igorsk | 0:12b53511e212 | 216 | // functions to work with big-endian numbers |
igorsk | 0:12b53511e212 | 217 | unsigned short SwapBytes(unsigned short Data); |
igorsk | 0:12b53511e212 | 218 | void WriteWBE(unsigned char *Add, unsigned short Data); |
igorsk | 0:12b53511e212 | 219 | void WriteDWBE(unsigned char *Add, unsigned long Data); |
igorsk | 0:12b53511e212 | 220 | |
igorsk | 0:12b53511e212 | 221 | // easyWEB-API functions |
igorsk | 0:12b53511e212 | 222 | void TCPLowLevelInit(void); // setup timer, LAN-controller, flags... |
igorsk | 0:12b53511e212 | 223 | void TCPPassiveOpen(void); // listen for a connection |
igorsk | 0:12b53511e212 | 224 | void TCPActiveOpen(void); // open connection |
igorsk | 0:12b53511e212 | 225 | void TCPClose(void); // close connection |
igorsk | 0:12b53511e212 | 226 | void TCPReleaseRxBuffer(void); // indicate to discard rec'd packet |
igorsk | 0:12b53511e212 | 227 | void TCPTransmitTxBuffer(void); // initiate transfer after TxBuffer is filled |
igorsk | 0:12b53511e212 | 228 | // Code Red - added declaration for Timer0 ISR |
igorsk | 0:12b53511e212 | 229 | void TCPClockHandler(void); |
igorsk | 0:12b53511e212 | 230 | |
igorsk | 0:12b53511e212 | 231 | // easyWEB-API global vars and flags |
igorsk | 0:12b53511e212 | 232 | extern unsigned short TCPRxDataCount; // nr. of bytes rec'd |
igorsk | 0:12b53511e212 | 233 | extern unsigned short TCPTxDataCount; // nr. of bytes to send |
igorsk | 0:12b53511e212 | 234 | |
igorsk | 0:12b53511e212 | 235 | extern unsigned short TCPLocalPort; // TCP ports |
igorsk | 0:12b53511e212 | 236 | extern unsigned short TCPRemotePort; |
igorsk | 0:12b53511e212 | 237 | |
igorsk | 0:12b53511e212 | 238 | extern unsigned short RemoteMAC[3]; // MAC and IP of current TCP-session |
igorsk | 0:12b53511e212 | 239 | extern unsigned short RemoteIP[2]; |
igorsk | 0:12b53511e212 | 240 | |
igorsk | 0:12b53511e212 | 241 | extern unsigned char SocketStatus; |
igorsk | 0:12b53511e212 | 242 | #define SOCK_ACTIVE 0x01 // state machine NOT closed |
igorsk | 0:12b53511e212 | 243 | #define SOCK_CONNECTED 0x02 // user may send & receive data |
igorsk | 0:12b53511e212 | 244 | #define SOCK_DATA_AVAILABLE 0x04 // new data available |
igorsk | 0:12b53511e212 | 245 | #define SOCK_TX_BUF_RELEASED 0x08 // user may fill buffer |
igorsk | 0:12b53511e212 | 246 | |
igorsk | 0:12b53511e212 | 247 | #define SOCK_ERROR_MASK 0xF0 // bit-mask to check for errors |
igorsk | 0:12b53511e212 | 248 | #define SOCK_ERR_OK 0x00 // no error |
igorsk | 0:12b53511e212 | 249 | #define SOCK_ERR_ARP_TIMEOUT 0x10 // timeout waiting for an ARP-REPLY |
igorsk | 0:12b53511e212 | 250 | #define SOCK_ERR_TCP_TIMEOUT 0x20 // timeout waiting for an ACK |
igorsk | 0:12b53511e212 | 251 | #define SOCK_ERR_CONN_RESET 0x30 // connection was reset by the other TCP |
igorsk | 0:12b53511e212 | 252 | #define SOCK_ERR_REMOTE 0x40 // remote TCP caused fatal error |
igorsk | 0:12b53511e212 | 253 | #define SOCK_ERR_ETHERNET 0x50 // network interface error (timeout) |
igorsk | 0:12b53511e212 | 254 | |
igorsk | 0:12b53511e212 | 255 | // easyWEB-API buffer-pointers |
igorsk | 0:12b53511e212 | 256 | #define TCP_TX_BUF ((unsigned char *)TxFrame1 + ETH_HEADER_SIZE + IP_HEADER_SIZE + TCP_HEADER_SIZE) |
igorsk | 0:12b53511e212 | 257 | #define TCP_RX_BUF ((unsigned char *)RxTCPBuffer) |
igorsk | 0:12b53511e212 | 258 | |
igorsk | 0:12b53511e212 | 259 | #endif |
igorsk | 0:12b53511e212 | 260 |