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