TuyaOS
tal_network.h
浏览该文件的文档.
1
10#ifndef __TAL_NETWORK_H__
11#define __TAL_NETWORK_H__
12
13#include "tuya_cloud_types.h"
14#include <errno.h>
15
16#ifdef __cplusplus
17 extern "C" {
18#endif
19
20typedef int UNW_ERRNO_T;
21#define UNW_SUCCESS 0
22#define UNW_FAIL -1
23#define UNW_EINTR -2
24#define UNW_EBADF -3
25#define UNW_EAGAIN -4
26#define UNW_ENOMEM -28
27#define UNW_EFAULT -5
28#define UNW_EBUSY -6
29#define UNW_EINVAL -7
30#define UNW_ENFILE -8
31#define UNW_EMFILE -9
32#define UNW_ENOSPC -10
33#define UNW_EPIPE -11
34#define UNW_EWOULDBLOCK -12
35#define UNW_ENOTSOCK -13
36#define UNW_ENOPROTOOPT -14
37#define UNW_EADDRINUSE -15
38#define UNW_EADDRNOTAVAIL -16
39#define UNW_ENETDOWN -17
40#define UNW_ENETUNREACH -18
41#define UNW_ENETRESET -19
42#define UNW_ECONNRESET -20
43#define UNW_ENOBUFS -21
44#define UNW_EISCONN -22
45#define UNW_ENOTCONN -23
46#define UNW_ETIMEDOUT -24
47#define UNW_ECONNREFUSED -25
48#define UNW_EHOSTDOWN -26
49#define UNW_EHOSTUNREACH -27
50#define UNW_EMSGSIZE -29
51
52
53/* tuya sdk definition of 127.0.0.1 */
54#define TY_IPADDR_LOOPBACK ((UINT32_T)0x7f000001UL)
55/* tuya sdk definition of 0.0.0.0 */
56#define TY_IPADDR_ANY ((UINT32_T)0x00000000UL)
57/* tuya sdk definition of 255.255.255.255 */
58#define TY_IPADDR_BROADCAST ((UINT32_T)0xffffffffUL)
59
69TUYA_ERRNO tal_net_get_errno(VOID);
70
81OPERATE_RET tal_net_fd_set(INT_T fd, TUYA_FD_SET_T* fds);
82
93OPERATE_RET tal_net_fd_clear(INT_T fd, TUYA_FD_SET_T* fds);
94
105OPERATE_RET tal_net_fd_isset(INT_T fd, TUYA_FD_SET_T* fds);
106
116OPERATE_RET tal_net_fd_zero(TUYA_FD_SET_T* fds);
117
118//Add file descriptor to set
119#define TAL_FD_SET(n,p) tal_net_fd_set(n, p)
120//Clear file descriptor from set
121#define TAL_FD_CLR(n, p) tal_net_fd_clear(n, p)
122//Check file descriptor is in set
123#define TAL_FD_ISSET(n,p) tal_net_fd_isset(n,p)
124//Clear all descriptor in set
125#define TAL_FD_ZERO(p) tal_net_fd_zero(p)
126
140INT_T tal_net_select(CONST INT_T maxfd, TUYA_FD_SET_T *readfds, TUYA_FD_SET_T *writefds,
141 TUYA_FD_SET_T *errorfds, CONST UINT_T ms_timeout);
142
152INT_T tal_net_get_nonblock(CONST INT_T fd);
153
164OPERATE_RET tal_net_set_block(CONST INT_T fd, CONST BOOL_T block);
165
175TUYA_ERRNO tal_net_close(CONST INT_T fd);
176
186INT_T tal_net_socket_create(CONST TUYA_PROTOCOL_TYPE_E type);
187
199TUYA_ERRNO tal_net_connect(CONST INT_T fd, CONST TUYA_IP_ADDR_T addr, CONST UINT16_T port);
200
212TUYA_ERRNO tal_net_connect_raw(CONST INT_T fd, VOID_T *p_socket, CONST INT_T len);
213
225TUYA_ERRNO tal_net_bind(CONST INT_T fd, CONST TUYA_IP_ADDR_T addr, CONST UINT16_T port);
226
237TUYA_ERRNO tal_net_listen(CONST INT_T fd, CONST INT_T backlog);
238
250TUYA_ERRNO tal_net_send(CONST INT_T fd, CONST VOID_T *buf, CONST UINT_T nbytes);
251
265TUYA_ERRNO tal_net_send_to(CONST INT_T fd, CONST VOID_T *buf, CONST UINT_T nbytes,
266 CONST TUYA_IP_ADDR_T addr, CONST UINT16_T port);
267
279INT_T tal_net_accept(CONST INT_T fd, TUYA_IP_ADDR_T *addr, UINT16_T *port);
280
292TUYA_ERRNO tal_net_recv(CONST INT_T fd, VOID_T *buf, CONST UINT_T nbytes);
293
306INT_T tal_net_recv_nd_size(CONST INT_T fd, VOID_T *buf, CONST UINT_T buf_size, CONST UINT_T nd_size);
307
321TUYA_ERRNO tal_net_recvfrom(CONST INT_T fd, VOID_T *buf, CONST UINT_T nbytes,
322 TUYA_IP_ADDR_T *addr, UINT16_T *port);
323
335OPERATE_RET tal_net_set_timeout(CONST INT_T fd, CONST INT_T ms_timeout, CONST TUYA_TRANS_TYPE_E type);
336
348OPERATE_RET tal_net_set_bufsize(CONST INT_T fd, CONST INT_T buf_size, CONST TUYA_TRANS_TYPE_E type);
349
359OPERATE_RET tal_net_set_reuse(CONST INT_T fd);
360
370OPERATE_RET tal_net_disable_nagle(CONST INT_T fd);
371
381OPERATE_RET tal_net_set_broadcast(CONST INT_T fd);
382
393OPERATE_RET tal_net_gethostbyname(CONST CHAR_T *domain, TUYA_IP_ADDR_T *addr);
394
408OPERATE_RET tal_net_set_keepalive(INT_T fd, CONST BOOL_T alive, CONST UINT_T idle, CONST UINT_T intr, CONST UINT_T cnt);
409
420OPERATE_RET tal_net_get_socket_ip(INT_T fd, TUYA_IP_ADDR_T *addr);
421
422
432TUYA_IP_ADDR_T tal_net_str2addr(CONST CHAR_T *ip_str);
433
443CHAR_T* tal_net_addr2str(TUYA_IP_ADDR_T ipaddr);
444
458OPERATE_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);
459
473OPERATE_RET tal_net_getsockopt(CONST INT_T fd, CONST TUYA_OPT_LEVEL level, CONST TUYA_OPT_NAME optname, VOID_T *optval, INT_T *optlen);
474
475#ifdef __cplusplus
476}
477#endif
478
479#endif // __TAL_NETWORK_H__
480
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
OPERATE_RET tal_net_gethostbyname(CONST CHAR_T *domain, TUYA_IP_ADDR_T *addr)
Get address information by domain
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
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
TUYA_ERRNO tal_net_listen(CONST INT_T fd, CONST INT_T backlog)
Listen to network