]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/WizNET_DEMO_TERN_186/include/SOCKET.H
Add FreeRTOS-Plus directory.
[freertos] / FreeRTOS / Demo / WizNET_DEMO_TERN_186 / include / SOCKET.H
1 /*\r
2 ********************************************************************************\r
3 * TERN, Inc.\r
4 * (c) Copyright 2005, http://www.tern.com\r
5 *\r
6 * - Derived based on development version provided by Wiznet.\r
7 *\r
8 * Filename : socket.h\r
9 * Programmer(s):\r
10 * Created : 2002/06/20\r
11 * Modified :\r
12 *  2002/09/27 : - Renaming\r
13 *                              INT_STATUS --> INT_REG\r
14 *                              STATUS(i) --> INT_STATUS(i)\r
15 *                              C_STATUS(i) --> SOCK_STATUS(i)\r
16 *  2003/11/06 : Ported for use with TERN controller.  Note all byte access is at even addresses\r
17 *  2005/10/8  : Modified constants for easier initialization.\r
18 *\r
19 * Description : Header file of W3100A for TERN embedded controller\r
20 ********************************************************************************\r
21 */\r
22 #ifndef __SOCKET_H__\r
23 #define __SOCKET_H__\r
24 \r
25 #include "types.h"\r
26 #include "i2chip_hw.h"\r
27 #include <dos.h>\r
28 \r
29 /*******************************************************************/\r
30 #define MAX_SOCK_NUM    4                                       // Concurrent maxmium number of socket\r
31 \r
32 #define I2CHIP_C0_CR       0x00\r
33 #define I2CHIP_C1_CR       0x01\r
34 #define I2CHIP_C2_CR       0x02\r
35 #define I2CHIP_C3_CR       0x03\r
36 #define I2CHIP_C0_ISR      0x04\r
37 #define I2CHIP_C1_ISR      0x05\r
38 #define I2CHIP_C2_ISR      0x06\r
39 #define I2CHIP_C3_ISR      0x07\r
40 #define I2CHIP_IR          0x08\r
41 #define I2CHIP_IMR         0x09\r
42 \r
43 #define I2CHIP_IDM_OR           0x0C\r
44 #define I2CHIP_IDM_AR0     0x0D\r
45 #define I2CHIP_IDM_AR1     0x0E\r
46 #define I2CHIP_IDM_DR      0x0F\r
47 #define I2CHIP_C0_RW_PR    0x10\r
48 #define I2CHIP_C0_RR_PR    0x14\r
49 #define I2CHIP_C0_TA_PR    0x18\r
50 #define I2CHIP_C1_RW_PR    0x1C\r
51 #define I2CHIP_C1_RR_PR    0x20\r
52 #define I2CHIP_C1_TA_PR    0x24\r
53 #define I2CHIP_C2_RW_PR    0x28\r
54 #define I2CHIP_C2_RR_PR    0x2C\r
55 #define I2CHIP_C2_TA_PR    0x30\r
56 #define I2CHIP_C3_RW_PR    0x34\r
57 #define I2CHIP_C3_RR_PR    0x38\r
58 #define I2CHIP_C3_TA_PR    0x3C\r
59 #define I2CHIP_C0_TW_PR    0x40\r
60 #define I2CHIP_C0_TR_PR    0x44\r
61 #define I2CHIP_C1_TW_PR    0x4C\r
62 #define I2CHIP_C1_TR_PR    0x50\r
63 #define I2CHIP_C2_TW_PR    0x58\r
64 #define I2CHIP_C2_TR_PR    0x5C\r
65 #define I2CHIP_C3_TW_PR    0x64\r
66 #define I2CHIP_C3_TR_PR    0x68\r
67 #define I2CHIP_GAR         0x80\r
68 #define I2CHIP_SMR         0x84\r
69 #define I2CHIP_SHAR             0x88\r
70 #define I2CHIP_SIPR        0x8E\r
71 #define I2CHIP_IRTR        0x92\r
72 #define I2CHIP_RCR         0x94\r
73 #define I2CHIP_RMSR        0x95\r
74 #define I2CHIP_TMSR        0x96\r
75 #define I2CHIP_C0_SSR      0xA0\r
76 #define I2CHIP_C0_SOPR     0xA1\r
77 #define I2CHIP_C0_DIR      0xA8\r
78 #define I2CHIP_CO_DPR      0xAC\r
79 #define I2CHIP_C0_SPR      0xAE\r
80 #define I2CHIP_C0_IPR      0xB0\r
81 #define I2CHIP_C0_TOSR     0xB1\r
82 #define I2CHIP_C0_MSSR     0xB2\r
83 \r
84 #define I2CHIP_C1_SSR      0xB8\r
85 #define I2CHIP_C1_SOPR     0xB9\r
86 #define I2CHIP_C1_DIR      0xC0\r
87 #define I2CHIP_C1_DPR      0xC4\r
88 #define I2CHIP_C1_SPR      0xC6\r
89 #define I2CHIP_C1_IPR      0xC8\r
90 #define I2CHIP_C1_TOSR     0xC9\r
91 #define I2CHIP_C1_MSSR     0xCA\r
92 \r
93 #define I2CHIP_C2_SSR      0xD0\r
94 #define I2CHIP_C2_SOPR     0xD1\r
95 #define I2CHIP_C2_DIR      0xD8\r
96 #define I2CHIP_C2_DPR      0xDC\r
97 #define I2CHIP_C2_SPR      0xDE\r
98 #define I2CHIP_C2_IPR      0xE0\r
99 #define I2CHIP_C2_TOSR     0xE1\r
100 #define I2CHIP_C2_MSSR     0xE2\r
101 \r
102 #define I2CHIP_C3_SSR      0xE8\r
103 #define I2CHIP_C3_SOPR     0xE9\r
104 #define I2CHIP_C3_DIR      0xF0\r
105 #define I2CHIP_C3_DPR      0xF4\r
106 #define I2CHIP_C3_SPR      0xF6\r
107 #define I2CHIP_C3_IPR      0xF8\r
108 #define I2CHIP_C3_TOSR     0xF9\r
109 #define I2CHIP_C3_MSSR     0xFA\r
110 \r
111 #define MAX_SEGMENT_SIZE        1460                    // Maximum TCP transmission packet size\r
112 #define MAX_BUF_SIZE1           0\r
113 \r
114 \r
115 /* SOCKET OPTION(Settting OPT_PROTOCOL REG.) */\r
116 #define SOCKOPT_BROADCAST       0x80            // Transmission, Reception of broadcasting data\r
117 #define SOCKOPT_NDTIMEOUT       0x40            // Setting timeout\r
118 #define SOCKOPT_NDACK           0x20            // Setting No Delayed Ack(TCP)\r
119 #define SOCKOPT_SWS                     0x10            // Setting Silly Window Syndrome(TCP)\r
120 \r
121 /* OPTION(Setting OPT_PROTOCOL REG.) for MAC LAYER RAW MODE */\r
122 #define MACLOPT_RXERR           0x80            // Setting reception of error packet\r
123 #define MACLOPT_BROADCAST       0x40            // Setting reception of broadcast packet\r
124 #define MACLOPT_PROMISC         0x20            // Setting reception of promiscuous packet\r
125 \r
126 /* Distinguish TCP / UDP / IP RAW / MAC RAW (Setting OPT_PROTOCOL REG.) */\r
127 #define SOCK_CLOSEDM    0x00                    // unused socket\r
128 #define SOCK_STREAM             0x01                    // TCP\r
129 #define SOCK_DGRAM              0x02                    // UDP\r
130 #define SOCK_IPL_RAW    0x03                    // IP LAYER RAW SOCK\r
131 #define SOCK_MACL_RAW   0x04                    // MAC LAYER RAW SOCK\r
132 \r
133 /* Setting IP PROTOCOL */\r
134 #define IPPROTO_IP              0               // dummy for IP\r
135 #define IPPROTO_ICMP            1               // control message protocol\r
136 #define IPPROTO_IGMP            2               // internet group management protocol\r
137 #define IPPROTO_GGP             3               // gateway^2 (deprecated)\r
138 #define IPPROTO_TCP             6               // tcp\r
139 #define IPPROTO_PUP             12              // pup\r
140 #define IPPROTO_UDP             17              // user datagram protocol\r
141 #define IPPROTO_IDP             22              // xns idp\r
142 #define IPPROTO_ND              77              // UNOFFICIAL net disk proto\r
143 #define IPPROTO_RAW             255             // raw IP packet\r
144 \r
145 /* Select parameter to use */\r
146 #define SEL_CONTROL     0                       //Confirm socket status\r
147 #define SEL_SEND                1                       // Confirm Tx free buffer size\r
148 #define SEL_RECV                2                       // Confirm Rx data size\r
149 \r
150 /* Command variables */\r
151 #define CSYS_INIT               0x01       // To set up network information(mac address, gateway address,\r
152                               // subnet mask, source ip)\r
153 #define CSOCK_INIT      0x02            // To initialize socket\r
154 #define CCONNECT                0x04            // To establish connection as tcp client mode\r
155 #define CLISTEN         0x08            // To wait for connection request as tcp server mode\r
156 #define CCLOSE                  0x10            // To terminate connection\r
157 #define CSEND                   0x20            // To send data\r
158 #define CRECV                   0x40            // To receive data\r
159 #define CSW_RESET               0x80            // To do software reset\r
160 \r
161 #define CSET_MEMORY_TEST   0x80     // To set the memory test bit\r
162 #define CRESET_MEMORY_TEST 0x00     // To clear the memory test bit\r
163 \r
164 /* Status Variables */\r
165 #define SSYS_INIT_OK            0x01    // Completion of CSYS_INIT command\r
166 #define SSOCK_INIT_OK   0x02    // Completion of CSOCK_INIT command\r
167 #define SESTABLISHED            0x04    // Completion of connection setup\r
168 #define SCLOSED                 0x08    // Completion of CCLOSED command\r
169 #define SSEND_OK                   0x20 // Completion of sending data\r
170 #define SRECV_OK                   0x40 // Completion of receiving data\r
171 \r
172 /* Socket Status Vabiables */\r
173 #define SOCK_CLOSED                0x00    // Status of connection closed\r
174 #define SOCK_ARP                      0x01              // Status of ARP\r
175 #define SOCK_LISTEN                0x02         // Status of waiting for TCP connection setup\r
176 #define SOCK_SYNSENT               0x03         // Status of setting up TCP connection\r
177 #define SOCK_SYNSENT_ACK        0x04            // Status of setting up TCP connection\r
178 #define SOCK_SYNRECV               0x05         // Status of setting up TCP connection\r
179 #define SOCK_ESTABLISHED        0x06            // Status of TCP connection established\r
180 #define SOCK_CLOSE_WAIT         0x07            // Status of closing TCP connection\r
181 #define SOCK_LAST_ACK           0x08            // Status of closing TCP connection\r
182 #define SOCK_FIN_WAIT1          0x09            // Status of closing TCP connection\r
183 #define SOCK_FIN_WAIT2          0x0A            // Status of closing TCP connection\r
184 #define SOCK_CLOSING               0x0B         // Status of closing TCP connection\r
185 #define SOCK_TIME_WAIT          0x0C            // Status of closing TCP connection\r
186 #define SOCK_RESET                 0x0D         // Status of closing TCP connection\r
187 #define SOCK_INIT                     0x0E              // Status of socket initialization\r
188 #define SOCK_UDP                      0x0F              // Status of UDP\r
189 #define SOCK_RAW                      0x10              // Status of IP RAW\r
190 \r
191 /* TERN Behavior Parameters */\r
192 #define TERN_TDMA_THRES    10000      // Use DMA for transmits if data > thres bytes.\r
193 #define TERN_RDMA_THRES    10000      // Use DMA for receives if data > thres bytes.\r
194                                       // High thres value effectively disables DMA\r
195                                       \r
196 void far interrupt in4_isr_i2chip(void);\r
197 \r
198 //void ISR_ESTABLISHED(SOCKET s);\r
199 //void ISR_CLOSED(SOCKET s);\r
200 //void ISR_RX(SOCKET s);\r
201 \r
202 void initW3100A(void);\r
203 void sysinit(u_char sbufsize, u_char rbufsize);\r
204 void setsubmask(u_char * addr);\r
205 void setgateway(u_char * addr);\r
206 void setMACAddr(u_char * addr);\r
207 void setIP(u_char * addr);\r
208 \r
209 char socket(SOCKET s, u_char protocol, u_int port, u_char flag);\r
210 \r
211 void setIPprotocol(SOCKET s, u_char ipprotocol);\r
212 \r
213 void setINTMask(u_char mask);\r
214 void settimeout(u_char * val);\r
215 void setTOS(SOCKET s, u_char tos);\r
216 \r
217 void GetDestAddr(SOCKET s, u_char* addr);\r
218 \r
219 //void setbroadcast(SOCKET s);\r
220 \r
221 char connect(SOCKET s, u_char far * addr, u_int port);\r
222 char NBconnect(SOCKET s, u_char far * addr, u_int port);\r
223 \r
224 //char listen(SOCKET s, u_char far * addr, u_int far * port);\r
225 char NBlisten(SOCKET s);\r
226 \r
227 void initseqnum(SOCKET s);\r
228 \r
229 int send(SOCKET s, u_char far * buf, u_int len);\r
230 int send_in(SOCKET s, u_char far * buf, u_int len);\r
231 int recv(SOCKET s, u_char far * buf, u_int len);\r
232 \r
233 u_int sendto(SOCKET , u_char far * buf, u_int, u_char * addr, u_int);\r
234 u_int sendto_in(SOCKET , u_char far *, u_int);\r
235 u_int recvfrom(SOCKET , u_char far * buf, u_int, u_char * addr, u_int *);\r
236 \r
237 u_int read_data(SOCKET s, u_int src_offset, u_char far * dst, u_int len);\r
238 u_int write_data(SOCKET s, u_char far * src, u_int dst_offset, u_int len);\r
239 \r
240 void close(SOCKET s);\r
241 char reset_sock(SOCKET s);\r
242 \r
243 u_int select(SOCKET s, u_char func);\r
244 void recv_clear(SOCKET s);\r
245 u_char tx_empty(SOCKET s);\r
246 \r
247 #endif  // __SOCKET_H__\r