YULTek/Otarcik_CAN/Sources/CloudLogging/MQTTClientWrapper.h

77 lines
1.8 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 CComputerBoardInterface;
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 SetCPUInterface(CComputerBoardInterface *CPUIF);
int SetMQTTServerPresenceCANBit(quint64 CANBit);
int ConnectToBroker();
int NewMQTTMessages(QList<CMQTTMessage> MessagesList);
int DisconnectFromBroker();
int SendMQTTTestMessage();
int SetCANDevicesList(QList<CCANDevice*> *List);
int StartMQTTClient();
int StopMQTTClient();
quint64 GetMQTTServerPresenceCANMask();
COtarcikCan *mProgramPtr;
private:
QTimer *mMQTTRefreshTimer;
QTimer *mMQTTReconnectTimer;
QTimer *mMQTTQueueFlushTimer;
eMQTTMsgQueuingMode mMessagesQueueMode;
bool mDisconnectionIsVoluntary;
QMqttClient mMQTTClient;
CCloudParams mMQTTParams;
QList<CCANDevice*> *mCANDevicesList;
QList<CMQTTMessage*> mMQTTMessagesQueue;
bool mIsClientConnecting;
QString mCircularBufferStatusText, mBufferingModeText, mUploadTimeText;
CComputerBoardInterface *mCPUInterface;
int SendNextQueueMessage();
quint64 mMQTTPresenceCANBit;
int UpdateGUIBufferingStatus();
public slots:
void StateChanged();
void MQTTSendTimerExpired();
void MQTTReconnectTimerExpired();
void MQTTQueueFlushTimerExipred();
void MQTTClientError(QMqttClient::ClientError error);
void MQTTMessageSent(qint32 MsgID);
};
#endif // MQTTCLIENTWRAPPER_H