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