#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_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_ */
|