10#ifndef __TAL_NETWORK_H__
11#define __TAL_NETWORK_H__
13#include "tuya_cloud_types.h"
19extern const TUYA_IP_ADDR_T ty_ip_addr_any;
20extern const TUYA_IP_ADDR_T ty_ip_addr_broadcast;
21extern const TUYA_IP_ADDR_T ty_ip_addr_loopback;
22extern const TUYA_IP_ADDR_T ty_ip6_addr_any;
25#define TY_IPADDR_LOOPBACK ty_ip_addr_loopback
27#define TY_IPADDR_ANY ty_ip_addr_any
29#define TY_IPADDR_BROADCAST ty_ip_addr_broadcast
31#define TY_IP6_ADDR_ANY ty_ip6_addr_any
92#define TAL_FD_SET(n,p) tal_net_fd_set(n, p)
94#define TAL_FD_CLR(n, p) tal_net_fd_clear(n, p)
96#define TAL_FD_ISSET(n,p) tal_net_fd_isset(n,p)
98#define TAL_FD_ZERO(p) tal_net_fd_zero(p)
113INT_T
tal_net_select(CONST INT_T maxfd, TUYA_FD_SET_T *readfds, TUYA_FD_SET_T *writefds,
114 TUYA_FD_SET_T *errorfds, CONST UINT_T ms_timeout);
194TUYA_ERRNO
tal_net_connect(CONST INT_T fd, CONST TUYA_IP_ADDR_T addr, CONST UINT16_T port);
220TUYA_ERRNO
tal_net_bind(CONST INT_T fd, CONST TUYA_IP_ADDR_T addr, CONST UINT16_T port);
245TUYA_ERRNO
tal_net_send(CONST INT_T fd, CONST VOID_T *buf, CONST UINT_T nbytes);
261 CONST TUYA_IP_ADDR_T addr, CONST UINT16_T port);
287TUYA_ERRNO
tal_net_recv(CONST INT_T fd, VOID_T *buf, CONST UINT_T nbytes);
317 TUYA_IP_ADDR_T *addr, UINT16_T *port);
403OPERATE_RET
tal_net_set_keepalive(INT_T fd, CONST BOOL_T alive, CONST UINT_T idle, CONST UINT_T intr, CONST UINT_T cnt);
453OPERATE_RET
tal_net_setsockopt(CONST INT_T fd, CONST TUYA_OPT_LEVEL level, CONST TUYA_OPT_NAME optname, CONST VOID_T *optval, CONST INT_T optlen);
468OPERATE_RET
tal_net_getsockopt(CONST INT_T fd, CONST TUYA_OPT_LEVEL level, CONST TUYA_OPT_NAME optname, VOID_T *optval, INT_T *optlen);
INT_T tal_net_socket_create_v6(IN CONST TUYA_PROTOCOL_TYPE_E type)
Create a IPv6 tcp/udp socket
OPERATE_RET tal_net_fd_zero(TUYA_FD_SET_T *fds)
Clear all file descriptor in set
TUYA_ERRNO tal_net_send(CONST INT_T fd, CONST VOID_T *buf, CONST UINT_T nbytes)
Send data to network
OPERATE_RET tal_net_set_block(CONST INT_T fd, CONST BOOL_T block)
Set block flag for file descriptors
INT_T tal_net_accept(CONST INT_T fd, TUYA_IP_ADDR_T *addr, UINT16_T *port)
Accept the coming socket connection of the server fd
OPERATE_RET tal_net_setsockopt(CONST INT_T fd, CONST TUYA_OPT_LEVEL level, CONST TUYA_OPT_NAME optname, CONST VOID_T *optval, CONST INT_T optlen)
Set socket options
TUYA_ERRNO tal_net_send_to(CONST INT_T fd, CONST VOID_T *buf, CONST UINT_T nbytes, CONST TUYA_IP_ADDR_T addr, CONST UINT16_T port)
Send data to specified server
TUYA_ERRNO tal_net_connect(CONST INT_T fd, CONST TUYA_IP_ADDR_T addr, CONST UINT16_T port)
Connect to network
TUYA_ERRNO tal_net_bind(CONST INT_T fd, CONST TUYA_IP_ADDR_T addr, CONST UINT16_T port)
Bind to network
TUYA_ERRNO tal_net_recvfrom(CONST INT_T fd, VOID_T *buf, CONST UINT_T nbytes, TUYA_IP_ADDR_T *addr, UINT16_T *port)
Receive data from specified server
OPERATE_RET tal_net_disable_nagle(CONST INT_T fd)
Disable nagle option of socket fd
OPERATE_RET tal_net_get_socket_ip(INT_T fd, TUYA_IP_ADDR_T *addr)
Get ip address by socket fd
TUYA_ERRNO tal_net_recv(CONST INT_T fd, VOID_T *buf, CONST UINT_T nbytes)
Receive data from network
INT_T tal_net_socket_create(CONST TUYA_PROTOCOL_TYPE_E type)
Create a tcp/udp socket
TUYA_IP_ADDR_T tal_net_str2addr(CONST CHAR_T *ip_str)
Change ip string to address
OPERATE_RET tal_net_fd_isset(INT_T fd, TUYA_FD_SET_T *fds)
Check file descriptor is in set
OPERATE_RET tal_net_set_broadcast(CONST INT_T fd)
Enable broadcast option of socket fd
CHAR_T * tal_net_addr2str(TUYA_IP_ADDR_T ipaddr)
Change ip address to string
OPERATE_RET tal_net_set_reuse(CONST INT_T fd)
Enable reuse option of socket fd
TUYA_ERRNO tal_net_get_errno(VOID)
Get error code of network
OPERATE_RET tal_net_set_timeout(CONST INT_T fd, CONST INT_T ms_timeout, CONST TUYA_TRANS_TYPE_E type)
Set timeout option of socket fd
OPERATE_RET tal_net_getsockopt(CONST INT_T fd, CONST TUYA_OPT_LEVEL level, CONST TUYA_OPT_NAME optname, VOID_T *optval, INT_T *optlen)
Get socket options
OPERATE_RET tal_net_set_keepalive(INT_T fd, CONST BOOL_T alive, CONST UINT_T idle, CONST UINT_T intr, CONST UINT_T cnt)
Set keepalive option of socket fd to monitor the connection
TUYA_ERRNO tal_net_connect_raw(CONST INT_T fd, VOID_T *p_socket, CONST INT_T len)
Connect to network with raw data
INT_T tal_net_get_nonblock(CONST INT_T fd)
Get no block file descriptors
INT_T tal_net_recv_nd_size(CONST INT_T fd, VOID_T *buf, CONST UINT_T buf_size, CONST UINT_T nd_size)
Receive data from network with need size
OPERATE_RET tal_net_sethostname(CONST CHAR_T *hostname)
Set the system hostname
OPERATE_RET tal_net_gethostbyname(IN CONST CHAR_T *domain, IN CONST DNS_MODE_E mode, OUT TUYA_IP_ADDR_T *addr)
Get address information by domain
TUYA_ERRNO tal_net_close(CONST INT_T fd)
Close file descriptors
INT_T tal_net_select(CONST INT_T maxfd, TUYA_FD_SET_T *readfds, TUYA_FD_SET_T *writefds, TUYA_FD_SET_T *errorfds, CONST UINT_T ms_timeout)
Get available file descriptors
OPERATE_RET tal_net_set_bufsize(CONST INT_T fd, CONST INT_T buf_size, CONST TUYA_TRANS_TYPE_E type)
Set buffer_size option of socket fd
OPERATE_RET tal_net_fd_clear(INT_T fd, TUYA_FD_SET_T *fds)
Clear file descriptor from set
OPERATE_RET tal_net_fd_set(INT_T fd, TUYA_FD_SET_T *fds)
Add file descriptor to set
OPERATE_RET tal_net_add_membership(CONST INT_T fd, TUYA_IP_ADDR_T src_addr, TUYA_IP_ADDR_T group_addr)
add member ship
TUYA_ERRNO tal_net_listen(CONST INT_T fd, CONST INT_T backlog)
Listen to network