X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fnet%2Ftcp_socket.h;fp=bertos%2Fnet%2Ftcp_socket.h;h=a5eef82525224add2b206cd9c2ad520360beafb2;hb=1a8a2b9b57118be3f52d1261ebefac3875e67bcf;hp=74ca1074e8209c0c8cde5270da83540fb676b077;hpb=088cc866a57a0402f6ba3f232fcf8f59c79626d1;p=bertos.git diff --git a/bertos/net/tcp_socket.h b/bertos/net/tcp_socket.h index 74ca1074..a5eef825 100644 --- a/bertos/net/tcp_socket.h +++ b/bertos/net/tcp_socket.h @@ -46,10 +46,12 @@ #include #include +typedef void (*tcphandler_t)(KFile *fd); + typedef struct TcpSocket { KFile fd; ///< KFile context. - struct netconn *sock; ///< Current sockect connection pointer. + 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. @@ -58,6 +60,9 @@ typedef struct TcpSocket 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,4 +75,7 @@ INLINE TcpSocket *TCPSOCKET_CAST(KFile *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 */