#include <lwip/netif.h>
#include <lwip/ip_addr.h>
-#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')
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 */