00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 #ifndef __LWIP_API_H__
00040 #define __LWIP_API_H__
00041
00042 #include "lwip/opt.h"
00043 #include "lwip/pbuf.h"
00044 #include "lwip/sys.h"
00045
00046 #include "lwip/ip.h"
00047
00048 #include "lwip/udp.h"
00049 #include "lwip/tcp.h"
00050
00051 #include "lwip/err.h"
00052
00053 #define NETCONN_NOCOPY 0x00
00054 #define NETCONN_COPY 0x01
00055
00056 enum netconn_type {
00057 NETCONN_TCP,
00058 NETCONN_UDP,
00059 NETCONN_UDPLITE,
00060 NETCONN_UDPNOCHKSUM
00061 };
00062
00063 enum netconn_state {
00064 NETCONN_NONE,
00065 NETCONN_WRITE,
00066 NETCONN_ACCEPT,
00067 NETCONN_RECV,
00068 NETCONN_CONNECT,
00069 NETCONN_CLOSE
00070 };
00071
00072 enum netconn_evt {
00073 NETCONN_EVT_RCVPLUS,
00074 NETCONN_EVT_RCVMINUS,
00075 NETCONN_EVT_SENDPLUS,
00076 NETCONN_EVT_SENDMINUS
00077 };
00078
00079 struct netbuf {
00080 struct pbuf *p, *ptr;
00081 struct ip_addr *fromaddr;
00082 u16_t fromport;
00083 err_t err;
00084 };
00085
00086 struct netconn {
00087 enum netconn_type type;
00088 enum netconn_state state;
00089 union {
00090 struct tcp_pcb *tcp;
00091 struct udp_pcb *udp;
00092 } pcb;
00093 err_t err;
00094 sys_mbox_t mbox;
00095 sys_mbox_t recvmbox;
00096 sys_mbox_t acceptmbox;
00097 sys_sem_t sem;
00098 int socket;
00099 u16_t recv_avail;
00100 void (* callback)(struct netconn *, enum netconn_evt, u16_t len);
00101 };
00102
00103
00104 struct netbuf * netbuf_new (void);
00105 void netbuf_delete (struct netbuf *buf);
00106 void * netbuf_alloc (struct netbuf *buf, u16_t size);
00107 void netbuf_free (struct netbuf *buf);
00108 void netbuf_ref (struct netbuf *buf,
00109 void *dataptr, u16_t size);
00110 void netbuf_chain (struct netbuf *head,
00111 struct netbuf *tail);
00112
00113 u16_t netbuf_len (struct netbuf *buf);
00114 err_t netbuf_data (struct netbuf *buf,
00115 void **dataptr, u16_t *len);
00116 s8_t netbuf_next (struct netbuf *buf);
00117 void netbuf_first (struct netbuf *buf);
00118
00119 void netbuf_copy (struct netbuf *buf,
00120 void *dataptr, u16_t len);
00121 void netbuf_copy_partial(struct netbuf *buf, void *dataptr,
00122 u16_t len, u16_t offset);
00123 struct ip_addr * netbuf_fromaddr (struct netbuf *buf);
00124 u16_t netbuf_fromport (struct netbuf *buf);
00125
00126
00127 struct netconn * netconn_new (enum netconn_type type);
00128 struct
00129 netconn *netconn_new_with_callback(enum netconn_type t,
00130 void (*callback)(struct netconn *, enum netconn_evt, u16_t len));
00131 err_t netconn_delete (struct netconn *conn);
00132 enum netconn_type netconn_type (struct netconn *conn);
00133 err_t netconn_peer (struct netconn *conn,
00134 struct ip_addr *addr,
00135 u16_t *port);
00136 err_t netconn_addr (struct netconn *conn,
00137 struct ip_addr **addr,
00138 u16_t *port);
00139 err_t netconn_bind (struct netconn *conn,
00140 struct ip_addr *addr,
00141 u16_t port);
00142 err_t netconn_connect (struct netconn *conn,
00143 struct ip_addr *addr,
00144 u16_t port);
00145 err_t netconn_disconnect (struct netconn *conn);
00146 err_t netconn_listen (struct netconn *conn);
00147 struct netconn * netconn_accept (struct netconn *conn);
00148 struct netbuf * netconn_recv (struct netconn *conn);
00149 err_t netconn_send (struct netconn *conn,
00150 struct netbuf *buf);
00151 err_t netconn_write (struct netconn *conn,
00152 void *dataptr, u16_t size,
00153 u8_t copy);
00154 err_t netconn_close (struct netconn *conn);
00155
00156 err_t netconn_err (struct netconn *conn);
00157
00158 #endif
00159
00160