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