X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fnet%2Ftcp_socket.h;fp=bertos%2Fnet%2Ftcp_socket.h;h=095321ee43ad8c122003ce77eba0520a466f7014;hb=121f4d98bd4d74629809697ab66001ebcbac76ce;hp=0000000000000000000000000000000000000000;hpb=fb5863ca8d0db3ff2e84721f7c902b031157ebb0;p=bertos.git diff --git a/bertos/net/tcp_socket.h b/bertos/net/tcp_socket.h new file mode 100644 index 00000000..095321ee --- /dev/null +++ b/bertos/net/tcp_socket.h @@ -0,0 +1,76 @@ +/** + * \file + * + * + * \brief TCP sockect with kfile interface. + * + * \author Luca Ottaviano + * \author Daniele Basile + */ + +#ifndef NET_TCP_SOCKET_H +#define NET_TCP_SOCKET_H + +#include + +#include + +#include +#include + +#define ERR_TCP_NOTCONN BV(0); +#define ERR_CONN_RESET BV(1); +#define ERR_CONN_CLOSE BV(2); +#define ERR_RECV_DATA BV(3); + + +typedef struct TcpSocket +{ + KFile fd; + struct netconn *sock; + struct ip_addr *local_addr; + struct ip_addr *remote_addr; + uint16_t port; + uint16_t error; +} TcpSocket; + +#define KFT_TCPSOCKET MAKE_ID('T', 'S', 'C', 'K') + +INLINE TcpSocket *TCPSOCKET_CAST(KFile *fd) +{ + ASSERT(fd->_type == KFT_TCPSOCKET); + return (TcpSocket *)fd; +} + + +void tcpsocket_init(TcpSocket *socket, struct ip_addr *local_addr, struct ip_addr *remote_addr, uint16_t port); + +#endif /* NET_TCP_SOCKET_H */