X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fnet%2Ftcp_socket.h;h=a5eef82525224add2b206cd9c2ad520360beafb2;hb=39e200e1f43474a96888f97e2271728c9605ccbe;hp=095321ee43ad8c122003ce77eba0520a466f7014;hpb=121f4d98bd4d74629809697ab66001ebcbac76ce;p=bertos.git diff --git a/bertos/net/tcp_socket.h b/bertos/net/tcp_socket.h index 095321ee..a5eef825 100644 --- a/bertos/net/tcp_socket.h +++ b/bertos/net/tcp_socket.h @@ -46,20 +46,23 @@ #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 void (*tcphandler_t)(KFile *fd); typedef struct TcpSocket { - KFile fd; - struct netconn *sock; - struct ip_addr *local_addr; - struct ip_addr *remote_addr; - uint16_t port; - uint16_t error; + KFile fd; ///< KFile context. + struct netconn *sock; ///< Current socket connection. + struct netbuf *rx_buf_conn; ///< Current received buffer from socket. + size_t remaning_data_len; ///< Number of bytes to read from the received buffer. + + struct ip_addr *local_addr; ///< Device Ip. + struct ip_addr *remote_addr; ///< Ip address which we want to connect. + uint16_t port; ///< Number port to connect. + + int error; ///< Error status. + + struct netconn *server_sock; ///< Server sockect connection. + tcphandler_t handler; ///< TCP handler when are in server mode. } TcpSocket; #define KFT_TCPSOCKET MAKE_ID('T', 'S', 'C', 'K') @@ -70,7 +73,9 @@ INLINE TcpSocket *TCPSOCKET_CAST(KFile *fd) return (TcpSocket *)fd; } - void tcpsocket_init(TcpSocket *socket, struct ip_addr *local_addr, struct ip_addr *remote_addr, uint16_t port); +void tcpsocket_serverPoll(KFile *fd); +void tcpsocket_serverInit(TcpSocket *socket, struct ip_addr *local_addr, struct ip_addr *remote_addr, uint16_t port, tcphandler_t handler); + #endif /* NET_TCP_SOCKET_H */