]> git.sur5r.net Git - freertos/blob - Demo/lwIP_Demo_Rowley_ARM7/lwip-1.1.0/src/include/lwip/api.h
Start to re-arrange files to include FreeRTOS+ in main download.
[freertos] / Demo / lwIP_Demo_Rowley_ARM7 / lwip-1.1.0 / src / include / lwip / api.h
1 /*\r
2  * Copyright (c) 2001-2004 Swedish Institute of Computer Science.\r
3  * All rights reserved. \r
4  * \r
5  * Redistribution and use in source and binary forms, with or without modification, \r
6  * are permitted provided that the following conditions are met:\r
7  *\r
8  * 1. Redistributions of source code must retain the above copyright notice,\r
9  *    this list of conditions and the following disclaimer.\r
10  * 2. Redistributions in binary form must reproduce the above copyright notice,\r
11  *    this list of conditions and the following disclaimer in the documentation\r
12  *    and/or other materials provided with the distribution.\r
13  * 3. The name of the author may not be used to endorse or promote products\r
14  *    derived from this software without specific prior written permission. \r
15  *\r
16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED \r
17  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF \r
18  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT \r
19  * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, \r
20  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT \r
21  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS \r
22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN \r
23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING \r
24  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY \r
25  * OF SUCH DAMAGE.\r
26  *\r
27  * This file is part of the lwIP TCP/IP stack.\r
28  * \r
29  * Author: Adam Dunkels <adam@sics.se>\r
30  *\r
31  */\r
32 #ifndef __LWIP_API_H__\r
33 #define __LWIP_API_H__\r
34 \r
35 #include "lwip/opt.h"\r
36 #include "lwip/pbuf.h"\r
37 #include "lwip/sys.h"\r
38 \r
39 #include "lwip/ip.h"\r
40 \r
41 #include "lwip/raw.h"\r
42 #include "lwip/udp.h"\r
43 #include "lwip/tcp.h"\r
44 \r
45 #include "lwip/err.h"\r
46 \r
47 #define NETCONN_NOCOPY 0x00\r
48 #define NETCONN_COPY   0x01\r
49 \r
50 enum netconn_type {\r
51   NETCONN_TCP,\r
52   NETCONN_UDP,\r
53   NETCONN_UDPLITE,\r
54   NETCONN_UDPNOCHKSUM,\r
55   NETCONN_RAW\r
56 };\r
57 \r
58 enum netconn_state {\r
59   NETCONN_NONE,\r
60   NETCONN_WRITE,\r
61   NETCONN_ACCEPT,\r
62   NETCONN_RECV,\r
63   NETCONN_CONNECT,\r
64   NETCONN_CLOSE\r
65 };\r
66 \r
67 enum netconn_evt {\r
68   NETCONN_EVT_RCVPLUS,\r
69   NETCONN_EVT_RCVMINUS,\r
70   NETCONN_EVT_SENDPLUS,\r
71   NETCONN_EVT_SENDMINUS\r
72 };\r
73 \r
74 struct netbuf {\r
75   struct pbuf *p, *ptr;\r
76   struct ip_addr *fromaddr;\r
77   u16_t fromport;\r
78   err_t err;\r
79 };\r
80 \r
81 struct netconn {\r
82   enum netconn_type type;\r
83   enum netconn_state state;\r
84   union {\r
85     struct tcp_pcb *tcp;\r
86     struct udp_pcb *udp;\r
87     struct raw_pcb *raw;\r
88   } pcb;\r
89   err_t err;\r
90   sys_mbox_t mbox;\r
91   sys_mbox_t recvmbox;\r
92   sys_mbox_t acceptmbox;\r
93   sys_sem_t sem;\r
94   int socket;\r
95   u16_t recv_avail;\r
96   void (* callback)(struct netconn *, enum netconn_evt, u16_t len);\r
97 };\r
98 \r
99 /* Network buffer functions: */\r
100 struct netbuf *   netbuf_new      (void);\r
101 void              netbuf_delete   (struct netbuf *buf);\r
102 void *            netbuf_alloc    (struct netbuf *buf, u16_t size);\r
103 void              netbuf_free     (struct netbuf *buf);\r
104 void              netbuf_ref      (struct netbuf *buf,\r
105            void *dataptr, u16_t size);\r
106 void              netbuf_chain    (struct netbuf *head,\r
107            struct netbuf *tail);\r
108 \r
109 u16_t             netbuf_len      (struct netbuf *buf);\r
110 err_t             netbuf_data     (struct netbuf *buf,\r
111            void **dataptr, u16_t *len);\r
112 s8_t              netbuf_next     (struct netbuf *buf);\r
113 void              netbuf_first    (struct netbuf *buf);\r
114 \r
115 void              netbuf_copy     (struct netbuf *buf,\r
116            void *dataptr, u16_t len);\r
117 void              netbuf_copy_partial(struct netbuf *buf, void *dataptr, \r
118               u16_t len, u16_t offset);\r
119 struct ip_addr *  netbuf_fromaddr (struct netbuf *buf);\r
120 u16_t             netbuf_fromport (struct netbuf *buf);\r
121 \r
122 /* Network connection functions: */\r
123 struct netconn *  netconn_new     (enum netconn_type type);\r
124 struct\r
125 netconn *netconn_new_with_callback(enum netconn_type t,\r
126                                    void (*callback)(struct netconn *, enum netconn_evt, u16_t len));\r
127 struct\r
128 netconn *netconn_new_with_proto_and_callback(enum netconn_type t, u16_t proto,\r
129                                    void (*callback)(struct netconn *, enum netconn_evt, u16_t len));\r
130 err_t             netconn_delete  (struct netconn *conn);\r
131 enum netconn_type netconn_type    (struct netconn *conn);\r
132 err_t             netconn_peer    (struct netconn *conn,\r
133            struct ip_addr *addr,\r
134            u16_t *port);\r
135 err_t             netconn_addr    (struct netconn *conn,\r
136            struct ip_addr **addr,\r
137            u16_t *port);\r
138 err_t             netconn_bind    (struct netconn *conn,\r
139            struct ip_addr *addr,\r
140            u16_t port);\r
141 err_t             netconn_connect (struct netconn *conn,\r
142            struct ip_addr *addr,\r
143            u16_t port);\r
144 err_t             netconn_disconnect (struct netconn *conn);\r
145 err_t             netconn_listen  (struct netconn *conn);\r
146 struct netconn *  netconn_accept  (struct netconn *conn);\r
147 struct netbuf *   netconn_recv    (struct netconn *conn);\r
148 err_t             netconn_send    (struct netconn *conn,\r
149            struct netbuf *buf);\r
150 err_t             netconn_write   (struct netconn *conn,\r
151            void *dataptr, u16_t size,\r
152            u8_t copy);\r
153 err_t             netconn_close   (struct netconn *conn);\r
154 \r
155 err_t             netconn_err     (struct netconn *conn);\r
156 \r
157 #endif /* __LWIP_API_H__ */\r
158 \r
159 \r