123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- /*
- * Copyright (c) Huawei Technologies Co., Ltd. 2019-2021. All rights reserved.
- * Description: 系统适配层网络Socket接口(需设备厂商实现)
- */
- #ifndef HILINK_OPEN_SOCKET_ADAPTER_H
- #define HILINK_OPEN_SOCKET_ADAPTER_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- #define MAX_IP_LEN 40
- /* udp读取数据参数结构体 */
- typedef struct {
- int fd; /* UDP通讯套接字 */
- unsigned char *buf; /* 存放数据的缓冲 */
- unsigned short len; /* 要读取的长度 */
- char *remoteIp; /* 远端ip */
- unsigned short remoteIpLen; /* 远端ip长度 */
- unsigned short *remotePort; /* 远端端口 */
- } UdpRecvParam;
- /*
- * 获取远端主机名
- * 参数hostName 远端主机名称, url
- * 参数ipList 存放远端主机IP地址列表的数组
- * 参数num 存放远端主机IP地址列表的数组的大小
- * 返回0 成功, 其他 失败
- * 注意Contiki OS下该接口为异步获取, 失败后需再次获取
- */
- int HILINK_GetHostByName(const char *hostName, char ipList[][MAX_IP_LEN], int num);
- /*
- * 创建UDP通讯套接字
- * 参数localPort UDP通信端口号
- * 返回值: 返回值小于0 创建失败, 大于等于0 UDP套接字fd
- */
- int HILINK_CreateUdp(unsigned short localPort);
- /*
- * 关闭UDP通讯套接字
- * 输入参数int fd UDP通讯套接字
- */
- void HILINK_RemoveUdp(int fd);
- /*
- * 用于UDP发送数据
- * 参数fd UDP通讯套接字
- * 参数buf 发送的数据
- * 参数len 数据长度
- * 参数remoteIp 目的IP
- * 参数remotePort 目的端口
- * 返回值小于0 发送失败, 大于等于0 实际发送的字节数
- */
- int HILINK_SendUdp(int fd, const unsigned char *buf, unsigned short len, const char *remoteIp,
- unsigned short remotePort);
- /*
- * UDP读取数据
- * 参数udpRecvParam udp读取数据参数结构体
- */
- int HILINK_RecvUdp(UdpRecvParam *udpRecvParam);
- /*
- * 建立TCP连接
- * 参数dst 目的IP
- * 参数port 目的端口
- * 返回值小于0 连接失败, 大于等于0 TCP套接字
- */
- int HILINK_ConnectTcp(const char *dst, unsigned short port);
- /*
- * TCP连接状态获取
- * 参数fd TCP套接字
- * 返回0 连接正常; 非0 连接失败, 具体参见 hilink_socket_error_t定义
- */
- int HILINK_GetTcpState(int fd);
- /*
- * 断开TCP连接
- * 参数fd TCP套接字
- * 输入参数 int fd TCP 套接字
- */
- void HILINK_DisconnectTcp(int fd);
- /*
- * TCP发送数据
- * 参数fd TCP通讯套接字
- * 参数buf 发送的数据
- * 参数len 数据长度
- * 返回值小于0 发送失败, 大于等于0 实际发送的字节数
- */
- int HILINK_SendTcp(int fd, const unsigned char *buf, unsigned short len);
- /*
- * 用于TCP读取数据
- * 参数fd TCP通讯套接字
- * 参数buf 存放数据的缓冲
- * 参数len 要读取的长度
- * 返回值小于0 读取失败, 大于等于0 实际读取的字节数
- */
- int HILINK_RecvTcp(int fd, unsigned char *buf, unsigned short len);
- /*
- * 短整形主机字节序转网络字节序
- * 参数hs 主机字节序
- * 返回网络字节序数字
- */
- unsigned short HILINK_Htons(unsigned short hs);
- /*
- * 短整形网络字节序转主机字节序
- * 参数ns 网络字节序
- * 返回主机字节序数字
- */
- unsigned short HILINK_Ntohs(unsigned short ns);
- /*
- * 获取TCP发送缓冲区剩余缓冲长度
- * 参数fd TCP通讯套接字
- * 参数taskType 0表示多任务系统,m2m运行于独立的task中;1表示单任务系统,m2m和其他任务运行在同个task中
- * 参数bufLeft 发送缓冲区剩余缓冲长度
- * 参数dataMax 数据payload的最大长度
- * 返回0表示成功,返回其他表示失败
- */
- int HILINK_GetLeftTcpSendbuf(int fd, int *taskType, unsigned int *bufLeft, unsigned int *dataMax);
- /*
- * 移除多余信道
- * 参数fd UDP通讯套接字
- * 返回0表示成功,返回其他表示失败
- */
- int HILINK_DeleteMultiGroupUdp(int fd);
- /*
- * 获取网络操作失败时的错误码errno
- * 参数fd
- */
- int HILINK_GetNetWorkError(int fd);
- /*
- * 获取socket状态
- * 参数fd TCP套接字
- * 参数flag TCP状态,包括1可读状态;2可写状态;4异常状态
- * 参数usec 状态检测等待时间,即此函数需要在该时间限制内返回,单位微秒
- * 返回0表示成功,返回其他表示失败
- */
- int HILINK_GetSocketState(int fd, unsigned int flag, unsigned int usec);
- #ifdef __cplusplus
- }
- #endif
- #endif
|