ems/ems_c/driver/drv_tcp_server.h

74 lines
2.9 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*****************************************************************************
* @copyright 2024-2024, . POWER SUPPLY CO., LTD.
* @file drv_tcp_server.h
* @brief 驱动文件
* @author Gary
* @date 2024/10/19
* @remark 初修订
*****************************************************************************/
#ifndef DRV_TCP_SERVER_H_
#define DRV_TCP_SERVER_H_
#include <stdint.h>
#include <fcntl.h>
#include <sys/epoll.h>
#include <sys/select.h>
#include <arpa/inet.h>
#include "drv_comm.h"
#define MAX_SERVER_IP_LEN 32 // 服务器ip地址最大长度
// 连接服务端的客户端结构体
typedef struct
{
int fd;
struct sockaddr_in client;
} tcp_client_t;
// tcp server驱动结构体
typedef struct
{
int epoll_fd; // epoll fd
int socket_fd; // socket fd
uint8_t netId; // NET口对应序号
char ip[MAX_SERVER_IP_LEN]; // ip地址
conn_status_e status; // 连接状态 0离线 1在线
uint32_t port; // 端口号
uint8_t isListen; // 是否已监听: 0否, 1是
tcp_client_t* clients; // 连接服务端的客户端指针
int nClient; // 连接服务端的客户端数量
uint16_t timeout; // 超时时间(milisecond)
uint16_t count; // 超时次数
uint32_t send_len; // 发送报文的长度
uint32_t recv_len; // 接收报文的长度
uint8_t send_buf[MAX_TCP_LEN]; // 发送报文缓存
uint8_t recv_buf[MAX_TCP_LEN]; // 接收报文缓存
} tcp_server_lib_t;
/*****************************************************************************
* @brief 打开tcp驱动
* @param[in] p_tcp: tcp驱动结构体指针
* @return 0-成功 1-失败
*****************************************************************************/
int drvTcpServerOpen(tcp_server_lib_t* p_tcp);
/*****************************************************************************
* @brief 关闭tcp驱动
* @param[in] p_tcp: tcp驱动结构体指针
* @return 0-成功 1-失败
*****************************************************************************/
int drvTcpServerClose(tcp_server_lib_t* p_tcp);
/*****************************************************************************
* @brief tcp驱动发送
* @param[in] p_tcp: tcp驱动结构体指针
* @return 0-成功 1-失败
*****************************************************************************/
ssize_t drvTcpServerSend(tcp_server_lib_t* p_tcp);
/*****************************************************************************
* @brief tcp驱动接收
* @param[in] p_tcp: tcp驱动结构体指针
* @return 0-成功 1-失败
*****************************************************************************/
ssize_t drvTcpServerRecv(tcp_server_lib_t* p_tcp);
#endif