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