/[H8]/trunk/PIC/TCP-IP stack/Tcp.h
ViewVC logotype

Contents of /trunk/PIC/TCP-IP stack/Tcp.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 54 - (show annotations) (download)
Fri Apr 27 08:42:17 2007 UTC (17 years, 1 month ago) by hedin
File MIME type: text/plain
File size: 12617 byte(s)
Added basic project
1 /*********************************************************************
2 *
3 * TCP Module Defs for Microchip TCP/IP Stack
4 *
5 *********************************************************************
6 * FileName: TCP.h
7 * Dependencies: StackTsk.h
8 * Processor: PIC18
9 * Complier: MCC18 v1.00.50 or higher
10 * HITECH PICC-18 V8.10PL1 or higher
11 * Company: Microchip Technology, Inc.
12 *
13 * Software License Agreement
14 *
15 * The software supplied herewith by Microchip Technology Incorporated
16 * (the “Company”) for its PICmicro® Microcontroller is intended and
17 * supplied to you, the Company’s customer, for use solely and
18 * exclusively on Microchip PICmicro Microcontroller products. The
19 * software is owned by the Company and/or its supplier, and is
20 * protected under applicable copyright laws. All rights are reserved.
21 * Any use in violation of the foregoing restrictions may subject the
22 * user to criminal sanctions under applicable laws, as well as to
23 * civil liability for the breach of the terms and conditions of this
24 * license.
25 *
26 * THIS SOFTWARE IS PROVIDED IN AN “AS IS” CONDITION. NO WARRANTIES,
27 * WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED
28 * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
29 * PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT,
30 * IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR
31 * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
32 *
33 * Author Date Comment
34 *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
35 * Nilesh Rajbharti 5/8/01 Original (Rev 1.0)
36 * Nilesh Rajbharti 5/22/02 Rev 2.0 (See version.log for detail)
37 ********************************************************************/
38
39 #ifndef TCP_H
40 #define TCP_H
41
42 #include "stacktsk.h"
43 #include "tick.h"
44
45 typedef BYTE TCP_SOCKET;
46 typedef WORD TCP_PORT;
47
48
49 /*
50 * Maximum number of times a connection be retried before
51 * closing it down.
52 */
53 #define MAX_RETRY_COUNTS (3)
54
55 #define INVALID_SOCKET (0xfe)
56 #define UNKNOWN_SOCKET (0xff)
57
58 #define REMOTE_HOST(s) (TCB[s].remote)
59
60 /*
61 * TCP States as defined by rfc793
62 */
63 typedef enum _TCP_STATE
64 {
65 TCP_CLOSED,
66 TCP_LISTEN,
67 TCP_SYN_RCVD,
68 TCP_SYN_SENT,
69 TCP_EST,
70 TCP_FIN_WAIT_1,
71 TCP_CLOSING,
72 TCP_TIMED_WAIT,
73 TCP_SEND_RST,
74 TCP_DATA_READY,
75 TCP_LAST_ACK,
76 TCP_CLOSE,
77 TCP_INVALID
78 } TCP_STATE;
79
80 /*
81 * Socket info.
82 * Union is used to create anonymous structure members.
83 */
84 typedef struct _SOCKET_INFO
85 {
86 TCP_STATE smState;
87
88 NODE_INFO remote;
89 TCP_PORT localPort;
90 TCP_PORT remotePort;
91
92 BUFFER TxBuffer;
93 WORD TxCount;
94 WORD RxCount;
95
96 DWORD SND_SEQ;
97 DWORD SND_ACK;
98
99 BYTE RetryCount;
100 TICK startTick;
101 TICK TimeOut;
102
103 struct
104 {
105 unsigned int bServer : 1;
106 unsigned int bIsPutReady : 1;
107 unsigned int bFirstRead : 1;
108 unsigned int bIsGetReady : 1;
109 unsigned int bIsTxInProgress : 1;
110 } Flags;
111
112 } SOCKET_INFO;
113
114
115 #if !defined(THIS_IS_TCP)
116 /*
117 * These are all sockets supported by this TCP.
118 */
119 extern SOCKET_INFO TCB[MAX_SOCKETS];
120 #endif
121
122
123
124 /*********************************************************************
125 * Function: void TCPInit(void)
126 *
127 * PreCondition: None
128 *
129 * Input: None
130 *
131 * Output: TCP is initialized.
132 *
133 * Side Effects: None
134 *
135 * Overview: Initialize all socket info.
136 *
137 * Note: This function is called only one during lifetime
138 * of the application.
139 ********************************************************************/
140 void TCPInit(void);
141
142
143
144 /*********************************************************************
145 * Function: TCP_SOCKET TCPListen(TCP_PORT port)
146 *
147 * PreCondition: TCPInit() is already called.
148 *
149 * Input: port - A TCP port to be opened.
150 *
151 * Output: Given port is opened and returned on success
152 * INVALID_SOCKET if no more sockets left.
153 *
154 * Side Effects: None
155 *
156 * Overview: None
157 *
158 * Note: None
159 ********************************************************************/
160 TCP_SOCKET TCPListen(TCP_PORT port);
161
162
163
164 /*********************************************************************
165 * Function: TCP_SOCKET TCPConnect(NODE_INFO* remote,
166 * TCP_PORT remotePort)
167 *
168 * PreCondition: TCPInit() is already called.
169 *
170 * Input: remote - Remote node address info
171 * remotePort - remote port to be connected.
172 *
173 * Output: A new socket is created, connection request is
174 * sent and socket handle is returned.
175 *
176 * Side Effects: None
177 *
178 * Overview: None
179 *
180 * Note: By default this function is not included in
181 * source. You must define STACK_CLIENT_MODE to
182 * be able to use this function.
183 ********************************************************************/
184 TCP_SOCKET TCPConnect(NODE_INFO *remote, TCP_PORT port);
185
186
187 /*********************************************************************
188 * Function: BOOL TCPIsConnected(TCP_SOCKET s)
189 *
190 * PreCondition: TCPInit() is already called.
191 *
192 * Input: s - Socket to be checked for connection.
193 *
194 * Output: TRUE if given socket is connected
195 * FALSE if given socket is not connected.
196 *
197 * Side Effects: None
198 *
199 * Overview: None
200 *
201 * Note: A socket is said to be connected if it is not
202 * in LISTEN and CLOSED mode. Socket may be in
203 * SYN_RCVD or FIN_WAIT_1 and may contain socket
204 * data.
205 ********************************************************************/
206 BOOL TCPIsConnected(TCP_SOCKET s);
207
208
209 /*********************************************************************
210 * Function: void TCPDisconnect(TCP_SOCKET s)
211 *
212 * PreCondition: TCPInit() is already called AND
213 * TCPIsPutReady(s) == TRUE
214 *
215 * Input: s - Socket to be disconnected.
216 *
217 * Output: A disconnect request is sent for given socket.
218 *
219 * Side Effects: None
220 *
221 * Overview: None
222 *
223 * Note: None
224 ********************************************************************/
225 void TCPDisconnect(TCP_SOCKET s);
226
227
228 /*********************************************************************
229 * Function: BOOL TCPIsPutReady(TCP_SOCKET s)
230 *
231 * PreCondition: TCPInit() is already called.
232 *
233 * Input: s - socket to test
234 *
235 * Output: TRUE if socket 's' is free to transmit
236 * FALSE if socket 's' is not free to transmit.
237 *
238 * Side Effects: None
239 *
240 * Overview: None
241 *
242 * Note: Each socket maintains only transmit buffer.
243 * Hence until a data packet is acknowledeged by
244 * remote node, socket will not be ready for
245 * next transmission.
246 * All control transmission such as Connect,
247 * Disconnect do not consume/reserve any transmit
248 * buffer.
249 ********************************************************************/
250 BOOL TCPIsPutReady(TCP_SOCKET s);
251
252
253 /*********************************************************************
254 * Function: BOOL TCPPut(TCP_SOCKET s, BYTE byte)
255 *
256 * PreCondition: TCPIsPutReady() == TRUE
257 *
258 * Input: s - socket to use
259 * byte - a data byte to send
260 *
261 * Output: TRUE if given byte was put in transmit buffer
262 * FALSE if transmit buffer is full.
263 *
264 * Side Effects: None
265 *
266 * Overview: None
267 *
268 * Note: None
269 ********************************************************************/
270 BOOL TCPPut(TCP_SOCKET socket, BYTE byte);
271
272
273 /*********************************************************************
274 * Function: BOOL TCPFlush(TCP_SOCKET s)
275 *
276 * PreCondition: TCPInit() is already called.
277 *
278 * Input: s - Socket whose data is to be transmitted.
279 *
280 * Output: All and any data associated with this socket
281 * is marked as ready for transmission.
282 *
283 * Side Effects: None
284 *
285 * Overview: None
286 *
287 * Note: None
288 ********************************************************************/
289 BOOL TCPFlush(TCP_SOCKET socket);
290
291 /*********************************************************************
292 * Function: BOOL TCPIsGetReady(TCP_SOCKET s)
293 *
294 * PreCondition: TCPInit() is already called.
295 *
296 * Input: s - socket to test
297 *
298 * Output: TRUE if socket 's' contains any data.
299 * FALSE if socket 's' does not contain any data.
300 *
301 * Side Effects: None
302 *
303 * Overview: None
304 *
305 * Note: None
306 ********************************************************************/
307 BOOL TCPIsGetReady(TCP_SOCKET s);
308
309
310 /*********************************************************************
311 * Function: BOOL TCPGet(TCP_SOCKET s, BYTE *byte)
312 *
313 * PreCondition: TCPInit() is already called AND
314 * TCPIsGetReady(s) == TRUE
315 *
316 * Input: s - socket
317 * byte - Pointer to a byte.
318 *
319 * Output: TRUE if a byte was read.
320 * FALSE if byte was not read.
321 *
322 * Side Effects: None
323 *
324 * Overview: None
325 *
326 * Note: None
327 ********************************************************************/
328 BOOL TCPGet(TCP_SOCKET socket, BYTE *byte);
329
330
331 /*********************************************************************
332 * Function: WORD TCPGetArray(TCP_SOCKET s, BYTE *buffer,
333 * WORD count)
334 *
335 * PreCondition: TCPInit() is already called AND
336 * TCPIsGetReady(s) == TRUE
337 *
338 * Input: s - socket
339 * buffer - Buffer to hold received data.
340 * count - Buffer length
341 *
342 * Output: Number of bytes loaded into buffer.
343 *
344 * Side Effects: None
345 *
346 * Overview: None
347 *
348 * Note: None
349 ********************************************************************/
350 WORD TCPGetArray(TCP_SOCKET s, BYTE *buffer, WORD count);
351
352
353 /*********************************************************************
354 * Function: BOOL TCPDiscard(TCP_SOCKET s)
355 *
356 * PreCondition: TCPInit() is already called.
357 *
358 * Input: s - socket
359 *
360 * Output: TRUE if socket received data was discarded
361 * FALSE if socket received data was already
362 * discarded.
363 *
364 * Side Effects: None
365 *
366 * Overview: None
367 *
368 * Note: None
369 ********************************************************************/
370 BOOL TCPDiscard(TCP_SOCKET socket);
371
372 /*********************************************************************
373 * Function: BOOL TCPProcess(NODE_INFO* remote,
374 * WORD len)
375 *
376 * PreCondition: TCPInit() is already called AND
377 * TCP segment is ready in MAC buffer
378 *
379 * Input: remote - Remote node info
380 * len - Total length of TCP semgent.
381 *
382 * Output: TRUE if this function has completed its task
383 * FALSE otherwise
384 *
385 * Side Effects: None
386 *
387 * Overview: None
388 *
389 * Note: None
390 ********************************************************************/
391 BOOL TCPProcess(NODE_INFO *remote, WORD len);
392
393
394 /*********************************************************************
395 * Function: void TCPTick(void)
396 *
397 * PreCondition: TCPInit() is already called.
398 *
399 * Input: None
400 *
401 * Output: Each socket FSM is executed for any timeout
402 * situation.
403 *
404 * Side Effects: None
405 *
406 * Overview: None
407 *
408 * Note: None
409 ********************************************************************/
410 void TCPTick(void);
411
412
413 #endif

  ViewVC Help
Powered by ViewVC 1.1.20