From 04b95840e106182266f71a549b85bcfff083deb1 Mon Sep 17 00:00:00 2001 From: chen <15335560115@163.com> Date: 星期五, 23 五月 2025 18:07:48 +0800 Subject: [PATCH] 成功测试完毕新的蓝牙和MK的传输协议,并实现读写功能 --- keil/include/components/internet/inc/Socket.h | 355 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 355 insertions(+), 0 deletions(-) diff --git a/keil/include/components/internet/inc/Socket.h b/keil/include/components/internet/inc/Socket.h new file mode 100644 index 0000000..88edc10 --- /dev/null +++ b/keil/include/components/internet/inc/Socket.h @@ -0,0 +1,355 @@ +#ifndef FML_SOCKET_H_ +#define FML_SOCKET_H_ + +#include "HIDO_TypeDef.h" +#include "HIDO_VLQueue.h" + +#define SOCKET_NUM 3 + +typedef enum +{ + SOCKET_TYPE_NONE = 0, + SOCKET_TYPE_TCP, + SOCKET_TYPE_UDP, +} E_SocketType; + +typedef enum +{ + SOCKET_STATE_IDLE = 0, + SOCKET_STATE_CLOSED, + SOCKET_STATE_CREATED, + SOCKET_STATE_CONNECT, + SOCKET_STATE_CLOSE_BEFORE_CONNECT, + SOCKET_STATE_CLOSE, + SOCKET_STATE_CONNECTED, + SOCKET_STATE_CONNECT_FAILED, +} E_SocketState; + +typedef enum +{ + SOCKET_EVENT_CONNECT_FAILED, + SOCKET_EVENT_CONNECTED, + SOCKET_EVENT_CLOSED, + SOCKET_EVENT_RECV_DATA, +} E_SocketEvent; + +typedef HIDO_VOID (*FN_SocketEventProc)(HIDO_INT32, E_SocketEvent, HIDO_VOID *); + +/******************************************************************************* + * Function Name : Socket_HaveRecvData + * Description : 通知Socket有数据需要接收 + * Input : _i32Sock Socket描述符 + * Output : None + * Return : HIDO_OK 成功, HIDO_ERR 失败 + * Author : www.hido-studio.com + * Modified Date: : 2018年5月17日 + *******************************************************************************/ +HIDO_INT32 Socket_HaveRecvData(HIDO_INT32 _i32SockID); + +/******************************************************************************* + * Function Name : Socket_NoRecvData + * Description : 通知Socket没有数据需要接收 + * Input : _i32Sock Socket描述符 + * Output : None + * Return : HIDO_OK 成功, HIDO_ERR 失败 + * Author : www.hido-studio.com + * Modified Date: : 2018年5月17日 + *******************************************************************************/ +HIDO_INT32 Socket_NoRecvData(HIDO_INT32 _i32SockID); + +/******************************************************************************* + * Function Name : Socket_HasRecvData + * Description : 获取Socket是否有数据需要接收 + * Input : _i32Sock Socket描述符 + * Output : None + * Return : HIDO_TRUE 有数据需要接收, HIDO_FALSE 没有数据需要接收 + * Author : www.hido-studio.com + * Modified Date: : 2018年5月17日 + *******************************************************************************/ +HIDO_BOOL Socket_HasRecvData(HIDO_INT32 _i32SockID); + +/******************************************************************************* + * Function Name : Socket_GetSocketRecvQueue + * Description : 获取Socket接收队列 + * Input : _i32Sock Socket描述符 + * Output : None + * Return : Socket接收队列 + * Author : www.hido-studio.com + * Modified Date: : 2018年5月17日 + *******************************************************************************/ +HIDO_VLQStruct *Socket_GetSocketRecvQueue(HIDO_INT32 _i32SockID); + +/******************************************************************************* + * Function Name : Socket_GetSocketSendQueue + * Description : 获取Socket发送队列 + * Input : _i32Sock Socket描述符 + * Output : None + * Return : Socket发送队列 + * Author : www.hido-studio.com + * Modified Date: : 2018年5月17日 + *******************************************************************************/ +HIDO_VLQStruct *Socket_GetSocketSendQueue(HIDO_INT32 _i32SockID); + +/******************************************************************************* + * Function Name : Socket_GetType + * Description : 获取Socke类型 + * Input : _i32Sock Socket描述符 + * Output : None + * Return : Socke类型 + * Author : www.hido-studio.com + * Modified Date: : 2018年5月17日 + *******************************************************************************/ +E_SocketType Socket_GetType(HIDO_INT32 _i32SockID); + +/******************************************************************************* + * Function Name : Socket_GetSocketState + * Description : 获取Socke内部状态 + * Input : _i32Sock Socket描述符 + * Output : None + * Return : Socke内部状态 + * Author : www.hido-studio.com + * Modified Date: : 2018年5月17日 + *******************************************************************************/ +E_SocketState Socket_GetSocketState(HIDO_INT32 _i32SockID); + +/******************************************************************************* + * Function Name : Socket_SetSocketState + * Description : 设置Socke内部状态 + * Input : _i32Sock Socket描述符 + * : _eState Socke内部状态 + * Output : None + * Return : HIDO_OK 成功, HIDO_ERR 失败 + * Author : www.hido-studio.com + * Modified Date: : 2018年5月17日 + *******************************************************************************/ +HIDO_INT32 Socket_SetSocketState(HIDO_INT32 _i32SockID, E_SocketState _eState); + +/******************************************************************************* + * Function Name : Socket_GetRemoteAddr + * Description : 获取Socket远程地址 + * Input : _i32Sock Socket描述符 + * Output : None + * Return : 远程地址 + * Author : www.hido-studio.com + * Modified Date: : 2018年5月17日 + *******************************************************************************/ +HIDO_CHAR *Socket_GetRemoteAddr(HIDO_INT32 _i32SockID); + +/******************************************************************************* + * Function Name : Socket_GetRemotePort + * Description : 获取Socket远程端口 + * Input : _i32Sock Socket描述符 + * Output : None + * Return : 远程端口 + * Author : www.hido-studio.com + * Modified Date: : 2018年5月17日 + *******************************************************************************/ +HIDO_UINT16 Socket_GetRemotePort(HIDO_INT32 _i32SockID); + +/******************************************************************************* + * Function Name : Socket_RecvAll + * Description : 全部Socket需要接收数据的通知 + * Input : None + * Output : None + * Return : HIDO_OK 成功, HIDO_ERR 失败 + * Author : www.hido-studio.com + * Modified Date: : 2018年5月17日 + *******************************************************************************/ +HIDO_INT32 Socket_RecvAll(void); + +/******************************************************************************* + * Function Name : Socket_ClosedAll + * Description : 全部Socket被断开的通知 + * Input : None + * Output : None + * Return : HIDO_OK 成功, HIDO_ERR 失败 + * Author : www.hido-studio.com + * Modified Date: : 2018年5月17日 + *******************************************************************************/ +HIDO_INT32 Socket_ClosedAll(void); + +/******************************************************************************* + * Function Name : Socket_OnConnectFailed + * Description : Socket连接失败时的内部通知 + * Input : _i32Sock Socket描述符 + * Output : None + * Return : HIDO_OK 成功, HIDO_ERR 失败 + * Author : www.hido-studio.com + * Modified Date: : 2018年5月17日 + *******************************************************************************/ +HIDO_INT32 Socket_OnConnectFailed(HIDO_INT32 _i32SockID); + +/******************************************************************************* + * Function Name : Socket_OnConnected + * Description : Socket连接成功时的内部通知 + * Input : _i32Sock Socket描述符 + * Output : None + * Return : HIDO_OK 成功, HIDO_ERR 失败 + * Author : www.hido-studio.com + * Modified Date: : 2018年5月17日 + *******************************************************************************/ +HIDO_INT32 Socket_OnConnected(HIDO_INT32 _i32SockID); + +/******************************************************************************* + * Function Name : Socket_OnClosed + * Description : Socket被关闭时的内部通知 + * Input : _i32Sock Socket描述符 + * Output : None + * Return : HIDO_OK 成功, HIDO_ERR 失败 + * Author : www.hido-studio.com + * Modified Date: : 2018年5月17日 + *******************************************************************************/ +HIDO_INT32 Socket_OnClosed(HIDO_INT32 _i32SockID); + +/******************************************************************************* + * Function Name : Socket_RecvData + * Description : Socket收到数据时的内部处理 + * Input : _i32Sock Socket描述符 + * : _pu8Data 收到的数据 + * : _u32Len 收到的数据长度 + * Output : None + * Return : HIDO_OK 成功, HIDO_ERR 失败 + * Author : www.hido-studio.com + * Modified Date: : 2018年5月17日 + *******************************************************************************/ +HIDO_INT32 Socket_RecvData(HIDO_INT32 _i32SockID, HIDO_UINT8 *_pu8Data, HIDO_UINT32 _u32Len); + +/******************************************************************************* + * Function Name : Socket_OnRecv + * Description : Socket收到数据时的内部通知 + * Input : _i32Sock Socket描述符 + * Output : None + * Return : HIDO_OK 成功, HIDO_ERR 失败 + * Author : www.hido-studio.com + * Modified Date: : 2018年5月17日 + *******************************************************************************/ +HIDO_INT32 Socket_OnRecv(HIDO_INT32 _i32SockID); + +/******************************************************************************* + * Function Name : Socket_Create + * Description : Socket创建 + * Input : _eSocketType Socket类型 + * : _fnEventProc Socket事件处理函数 + * : _pArg 参数 + * Output : _pi32SockID Socket描述符 + * Return : HIDO_OK 成功, HIDO_ERR 失败 + * Author : www.hido-studio.com + * Modified Date: : 2018年5月17日 + *******************************************************************************/ +HIDO_INT32 Socket_Create(HIDO_INT32 *_pi32SockID, E_SocketType _eSocketType, FN_SocketEventProc _fnEventProc, HIDO_VOID *_pArg); + +/******************************************************************************* + * Function Name : Socket_Connect + * Description : Socket连接 + * Input : _i32Sock Socket描述符 + * : _pcRemoteAddr 目标地址 + * : _u16RemotePort 目标端口 + * Output : None + * Return : HIDO_OK 成功, HIDO_ERR 失败 + * Author : www.hido-studio.com + * Modified Date: : 2018年5月17日 + *******************************************************************************/ +HIDO_INT32 Socket_Connect(HIDO_INT32 _i32SockID, HIDO_CHAR *_pcRemoteAddr, HIDO_UINT16 _u16RemotePort); + +/******************************************************************************* + * Function Name : Socket_Close + * Description : 关闭一个Socket + * Input : _i32Sock Socket描述符 + * Output : None + * Return : HIDO_OK 成功, HIDO_ERR 失败 + * Author : www.hido-studio.com + * Modified Date: : 2018年5月17日 + *******************************************************************************/ +HIDO_INT32 Socket_Close(HIDO_INT32 _i32SockID); + +/******************************************************************************* + * Function Name : Socket_Destroy + * Description : 销毁一个Socket + * Input : _i32Sock Socket描述符 + * Output : None + * Return : HIDO_OK 成功, HIDO_ERR 失败 + * Author : www.hido-studio.com + * Modified Date: : 2018年5月17日 + *******************************************************************************/ +HIDO_INT32 Socket_Destroy(HIDO_INT32 _i32SockID); + +/******************************************************************************* + * Function Name : Socket_IsSendQueueEmpty + * Description : 判断发送队列是否为空 + * Input : _i32Sock Socket描述符 + * Output : None + * Return : HIDO_TRUE 发送队列为空, HIDO_FALSE 发送队列不为空 + * Author : www.hido-studio.com + * Modified Date: : 2018年5月17日 + *******************************************************************************/ +HIDO_BOOL Socket_IsSendQueueEmpty(HIDO_INT32 _i32SockID); + +/******************************************************************************* + * Function Name : Socket_Send + * Description : Socket发送数据 + * Input : _i32Sock Socket描述符 + * : _pu8Data 发送的数据 + * : _u32DataLen 发送的数据长度 + * Output : None + * Return : HIDO_OK 成功, HIDO_ERR 失败 + * Author : www.hido-studio.com + * Modified Date: : 2018年5月17日 + *******************************************************************************/ +HIDO_INT32 Socket_Send(HIDO_INT32 _i32SockID, HIDO_UINT8 *_pu8Data, HIDO_UINT32 _u32DataLen); + +/******************************************************************************* + * Function Name : Socket_IsClosed + * Description : 检查Socket是否已断开 + * Input : _i32Sock Socket描述符 + * Output : _pbResult 断开状态 HIDO_TRUE 已断开 HIDO_FALSE 未断开 + * Return : HIDO_OK 成功, HIDO_ERR 失败 + * Author : www.hido-studio.com + * Modified Date: : 2018年5月17日 + *******************************************************************************/ +HIDO_INT32 Socket_IsClosed(HIDO_INT32 _i32SockID, HIDO_BOOL *_pbResult); + +/******************************************************************************* + * Function Name : Socket_IsConnected + * Description : 检查Socket是否已连接 + * Input : _i32Sock Socket描述符 + * Output : _pbResult 连接状态 HIDO_TRUE 已连接 HIDO_FALSE 未连接 + * Return : HIDO_OK 成功, HIDO_ERR 失败 + * Author : www.hido-studio.com + * Modified Date: : 2018年5月17日 + *******************************************************************************/ +HIDO_INT32 Socket_IsConnected(HIDO_INT32 _i32SockID, HIDO_BOOL *_pbResult); + +/******************************************************************************* + * Function Name : Socket_UseHeartbeat + *******************************************************************************/ +HIDO_BOOL Socket_UseHeartbeat(HIDO_INT32 _i32SockID); + +/******************************************************************************* + * Function Name : Socket_HeartbeatConfig + *******************************************************************************/ +HIDO_INT32 Socket_HeartbeatConfig(HIDO_INT32 _i32SockID, HIDO_UINT8 *_pu8Data, HIDO_UINT32 _u32Len, HIDO_UINT32 _u32HeartbeatFreq); + +/******************************************************************************* + * Function Name : Socket_GetHeartbeatFreq + *******************************************************************************/ +HIDO_UINT32 Socket_GetHeartbeatFreq(HIDO_INT32 _i32SockID); + +/******************************************************************************* + * Function Name : Socket_GetHeartbeatFreq + *******************************************************************************/ +HIDO_CHAR *Socket_GetHeartbeatData(HIDO_INT32 _i32SockID); + +/******************************************************************************* + * Function Name : Socket_Recv + * Description : 从Socket接收队列中读取数据 + * Input : _i32Sock Socket描述符 + * : _u32RecvBuffSize 读取数据的缓存地址 + * Output : _pu8RecvBuff 读取数据的缓存 + * : _pu32RecvLen 数据长度 + * Return : HIDO_OK 成功, HIDO_ERR 失败 + * Author : www.hido-studio.com + * Modified Date: : 2018年5月17日 + *******************************************************************************/ +HIDO_INT32 Socket_Recv(HIDO_INT32 _i32SockID, HIDO_UINT8 *_pu8RecvBuff, HIDO_UINT32 _u32RecvBuffSize, HIDO_UINT32 *_pu32RecvLen); + +#endif /* FML_GPRS_SOCKET_SOCKET_H_ */ -- Gitblit v1.9.3