WXK
2025-03-21 4c16cf5693d5df801fe4b54c52d945db2aa55b0e
keil/include/components/internet/src/Socket.c
@@ -19,7 +19,7 @@
 *******************************************************************************/
/* SOICKET相关 */
#define SOCKET_SEND_QUEUE_BUF_SIZE                    (512)
#define SOCKET_RECV_QUEUE_BUF_SIZE                    (512)
#define SOCKET_RECV_QUEUE_BUF_SIZE                    (2000)
#define SOCKET_SEND_QUEUE_MEMBER_CNT                  16
#define SOCKET_RECV_QUEUE_MEMBER_CNT                  16
@@ -46,6 +46,10 @@
    HIDO_UINT8 l_au8SendQueueBuf[SOCKET_SEND_QUEUE_BUF_SIZE];
    HIDO_UINT8 l_au8RecvQueueBuf[SOCKET_RECV_QUEUE_BUF_SIZE];
    HIDO_BOOL m_bUseHeartbeat;
    HIDO_UINT32 m_u32HeartbeatFreq;
    HIDO_CHAR m_acHeartbeatData[128];
}ST_SocketData;
/*******************************************************************************
@@ -378,6 +382,7 @@
    pstSocketData->m_eState = SOCKET_STATE_CONNECTED;
    /* 重置队列 */
#if 0
    HIDO_VLQInit(&pstSocketData->m_stSendQueue, pstSocketData->l_au8SendQueueBuf,
            SOCKET_SEND_QUEUE_BUF_SIZE, SOCKET_SEND_QUEUE_MEMBER_CNT);
    if(SOCKET_TYPE_TCP == pstSocketData->m_eType)
@@ -390,7 +395,8 @@
        HIDO_VLQInit(&pstSocketData->m_stRecvQueue, pstSocketData->l_au8RecvQueueBuf,
                SOCKET_RECV_QUEUE_BUF_SIZE, SOCKET_RECV_QUEUE_MEMBER_CNT);
    }
#endif
    /* 通知上层 */
    if(pstSocketData->m_fnEventProc != HIDO_NULL)
    {
@@ -762,6 +768,70 @@
}
/*******************************************************************************
 * Function Name     : Socket_UseHeartbeat
 *******************************************************************************/
HIDO_BOOL Socket_UseHeartbeat(HIDO_INT32 _i32SockID)
{
    ST_SocketData *pstSocketData = &l_astSocketData[_i32SockID];
    if(_i32SockID < 0 || _i32SockID >= SOCKET_NUM)
    {
        return HIDO_FALSE;
    }
    return pstSocketData->m_bUseHeartbeat;
}
/*******************************************************************************
 * Function Name     : Socket_SetHeartbeatData
 *******************************************************************************/
HIDO_INT32 Socket_HeartbeatConfig(HIDO_INT32 _i32SockID, HIDO_UINT8 *_pu8Data, HIDO_UINT32 _u32Len, HIDO_UINT32 _u32HeartbeatFreq)
{
    ST_SocketData *pstSocketData = &l_astSocketData[_i32SockID];
    if(_i32SockID < 0 || _i32SockID >= SOCKET_NUM)
    {
        return HIDO_ERR;
    }
    pstSocketData->m_bUseHeartbeat = HIDO_TRUE;
    pstSocketData->m_u32HeartbeatFreq = _u32HeartbeatFreq;
    HIDO_UtilByteArrayToHexString(_pu8Data, _u32Len, pstSocketData->m_acHeartbeatData, sizeof(pstSocketData->m_acHeartbeatData), HIDO_FALSE);
    return HIDO_OK;
}
/*******************************************************************************
 * Function Name     : Socket_GetHeartbeatFreq
 *******************************************************************************/
HIDO_UINT32 Socket_GetHeartbeatFreq(HIDO_INT32 _i32SockID)
{
    ST_SocketData *pstSocketData = &l_astSocketData[_i32SockID];
    if(_i32SockID < 0 || _i32SockID >= SOCKET_NUM)
    {
        return 300;
    }
    return pstSocketData->m_u32HeartbeatFreq;
}
/*******************************************************************************
 * Function Name     : Socket_GetHeartbeatFreq
 *******************************************************************************/
HIDO_CHAR *Socket_GetHeartbeatData(HIDO_INT32 _i32SockID)
{
    ST_SocketData *pstSocketData = &l_astSocketData[_i32SockID];
    if(_i32SockID < 0 || _i32SockID >= SOCKET_NUM)
    {
        return 300;
    }
    return pstSocketData->m_acHeartbeatData;
}
/*******************************************************************************
 * Function Name     : Socket_Recv
 * Description       : 从Socket接收队列中读取数据
 * Input             : _i32Sock Socket描述符