#ifndef _MQTT_H_ #define _MQTT_H_ #include "HIDO_TypeDef.h" #include "HIDO_VLQueue.h" #define MQTT_NUM 1 typedef enum { MQTT_STATE_IDLE = 0, MQTT_STATE_CLOSED, MQTT_STATE_CREATED, MQTT_STATE_CONNECT, MQTT_STATE_CLOSE_BEFORE_CONNECT, MQTT_STATE_CLOSE, MQTT_STATE_CONNECTED, MQTT_STATE_CONNECT_FAILED, } E_MQTTState; typedef enum { MQTT_EVENT_CONNECT_FAILED, MQTT_EVENT_CONNECTED, MQTT_EVENT_CLOSED, MQTT_EVENT_RECV_DATA, MQTT_EVENT_DATA_PUBLISHED, } E_MQTTEvent; struct SubscribeTopic; typedef struct SubscribeTopic ST_SubscribeTopic; struct SubscribeTopic { ST_SubscribeTopic *m_pstNext; HIDO_CHAR m_acTopic[64]; HIDO_UINT32 m_u32QOS; }; typedef struct { HIDO_UINT8 m_u8Version; HIDO_UINT8 m_u8PdpCid; HIDO_UINT8 m_u8CleanSession; HIDO_UINT8 m_u8Reserve; HIDO_UINT32 m_u32PktTimeout; HIDO_UINT32 m_u32RetryTimes; HIDO_UINT32 m_u32KeepAlive; HIDO_CHAR m_acClientID[64]; HIDO_CHAR m_acUsername[64]; HIDO_CHAR m_acPassword[64]; HIDO_CHAR m_acRemoteAddr[42]; HIDO_UINT16 m_u16RemotePort; } ST_MQTTConfig; typedef struct { HIDO_CHAR m_acTopic[64]; HIDO_UINT32 m_u32DataLen; HIDO_UINT32 m_u32QOS; HIDO_UINT32 m_u32Retain; HIDO_UINT8 m_au8Data[4]; } ST_MQTTMessage; typedef HIDO_VOID (*FN_MQTTEventProc)(HIDO_INT32, E_MQTTEvent, HIDO_VOID *); HIDO_INT32 MQTT_HaveRecvData(HIDO_INT32 _i32SockID); HIDO_INT32 MQTT_NoRecvData(HIDO_INT32 _i32SockID); HIDO_BOOL MQTT_HasRecvData(HIDO_INT32 _i32SockID); HIDO_VLQStruct *MQTT_GetRecvQueue(HIDO_INT32 _i32SockID); HIDO_VLQStruct *MQTT_GetSendQueue(HIDO_INT32 _i32SockID); E_MQTTState MQTT_GetMQTTState(HIDO_INT32 _i32SockID); HIDO_INT32 MQTT_SetMQTTState(HIDO_INT32 _i32SockID, E_MQTTState _eState); HIDO_UINT8 MQTT_GetVersion(HIDO_INT32 _i32ClientID); HIDO_UINT8 MQTT_GetPdpCid(HIDO_INT32 _i32ClientID); HIDO_UINT32 MQTT_GetPktTimeout(HIDO_INT32 _i32ClientID); HIDO_UINT32 MQTT_GetRetryTimes(HIDO_INT32 _i32ClientID); HIDO_UINT32 MQTT_GetCleanSession(HIDO_INT32 _i32ClientID); HIDO_UINT32 MQTT_GetKeepAlive(HIDO_INT32 _i32ClientID); HIDO_CHAR *MQTT_GetClientID(HIDO_INT32 _i32ClientID); HIDO_CHAR *MQTT_GetUsername(HIDO_INT32 _i32ClientID); HIDO_CHAR *MQTT_GetmPassword(HIDO_INT32 _i32ClientID); HIDO_CHAR *MQTT_GetRemoteAddr(HIDO_INT32 _i32SockID); HIDO_UINT16 MQTT_GetRemotePort(HIDO_INT32 _i32SockID); HIDO_INT32 MQTT_RecvAll(void); HIDO_INT32 MQTT_ClosedAll(void); HIDO_INT32 MQTT_OnConnectFailed(HIDO_INT32 _i32SockID); HIDO_INT32 MQTT_OnConnected(HIDO_INT32 _i32SockID); HIDO_INT32 MQTT_OnClosed(HIDO_INT32 _i32SockID); HIDO_INT32 MQTT_OnRecv(HIDO_INT32 _i32SockID); HIDO_INT32 MQTT_OnSend(HIDO_INT32 _i32ClientID); HIDO_INT32 MQTT_Create(HIDO_INT32 *_pi32SockID, FN_MQTTEventProc _fnEventProc, HIDO_VOID *_pArg); HIDO_INT32 MQTT_Subscribe(HIDO_INT32 _i32ClientID, HIDO_CHAR *_pcTopic, HIDO_UINT32 _u32QOS); ST_SubscribeTopic *MQTT_GetSubscribeTopicList(HIDO_INT32 _i32ClientID); HIDO_UINT16 MQTT_GetMsgID(HIDO_INT32 _i32ClientID); HIDO_INT32 MQTT_SetMsgID(HIDO_INT32 _i32ClientID, HIDO_UINT16 _u16MsgID); HIDO_INT32 MQTT_Config(HIDO_INT32 _i32ClientID, ST_MQTTConfig *_pstConfig); HIDO_INT32 MQTT_Connect(HIDO_INT32 _i32SockID); HIDO_INT32 MQTT_Close(HIDO_INT32 _i32SockID); HIDO_INT32 MQTT_Publish(HIDO_INT32 _i32ClientID, HIDO_CHAR *_pcTopic, HIDO_UINT8 *_pu8Data, HIDO_UINT32 _u32DataLen, HIDO_UINT32 _u32QOS); HIDO_INT32 MQTT_Recv(HIDO_INT32 _i32ClientID, HIDO_CHAR *_pcTopic, HIDO_UINT8 *_pu8RecvBuff, HIDO_UINT32 _u32RecvBuffSize, HIDO_UINT32 *_u32RecvLen); HIDO_INT32 MQTT_Init(HIDO_VOID); #endif /* _MQTT_H_ */