YULTek/Otarcik_CAN/Sources/CloudLogging/MQTTClientWrapper.h

60 lines
1.3 KiB
C++

#ifndef MQTTCLIENTWRAPPER_H
#define MQTTCLIENTWRAPPER_H
#include "defines.h"
#include <QtMqtt/QtMqtt>
#include <QMqttClient>
#include "CloudParams.h"
#include "MQTTMessage.h"
#include <QList>
class COtarcikCan;
class CCANDevice;
class CMQTTClientWrapper : public QObject
{
Q_OBJECT
public:
typedef enum
{
MQTT_DROP_MSG_MODE,
MQTT_TRANSMIT_MSG_MODE,
MQTT_QUEUE_MSG_MODE
}eMQTTMsgQueuingMode;
CMQTTClientWrapper();
~CMQTTClientWrapper();
int SetMQTTParams(CCloudParams *Params);
int ConnectToBroker();
int NewMQTTMessages(QList<CMQTTMessage> MessagesList);
int DisconnectFromBroker();
int SendMQTTTestMessage();
int SetCANDevicesList(QList<CCANDevice*> *List);
COtarcikCan *mProgramPtr;
// QString mMQTTClientID;
QTimer *mMQTTRefreshTimer;
QTimer *mMQTTReconnectTimer;
QTimer *mMQTTQueueFlushTimer;
eMQTTMsgQueuingMode mMessagesQueueMode;
bool mDisconnectionIsVoluntary;
private:
QMqttClient mMQTTClient;
CCloudParams mMQTTParams;
QList<CCANDevice*> *mCANDevicesList;
QList<CMQTTMessage*> mMQTTMessagesQueue;
public slots:
void StateChanged();
void MQTTSendTimerExpired();
void MQTTReconnectTimerExpired();
void MQTTQueueFlushTimerExipred();
};
#endif // MQTTCLIENTWRAPPER_H