#include "CANDataLogger.h" #include "defines.h" CCANDataLogger::CCANDataLogger(): mTopicDeviceString("") { mMQTTCLient = 0; } int CCANDataLogger::LogNewData(const QList *MsgList) { //MQTT //For each message in the list, we create a CCANMessage //First, clear the current list mMQTTMsgList.clear(); //qDebug("\n\n\n"); for(int i = 0; i < MsgList->size(); i++) { if(MsgList->at(i)->mPendingData == true) { CCANMessage *Msg = MsgList->at(i); QString MsgPayload = "{"; QString MsgTopic = mTopicDeviceString; MsgTopic.append(Msg->mCANMsgName); // MsgTopic.append("/"); //For each signal with new data, insert an entry in the JSon payload string for(int signal = 0; signal < Msg->mSignalsList.size(); signal++) { QString SignalData; CCANSignal *Signal = Msg->mSignalsList.at(signal); if(Signal->mValueType == CCANSignal::CAN_SIGNAL_TYPE_UNSIGNED_INT) { SignalData = QString("\"%1\":%2").arg(Signal->mSignalName).arg((quint64)Signal->mPhysicalValue); } else if(Signal->mValueType == CCANSignal::CAN_SIGNAL_TYPE_SIGNED_INT) { SignalData = QString("\"%1\":%2").arg(Signal->mSignalName).arg((qint64)Signal->mPhysicalValue); } else if(Signal->mValueType == CCANSignal::CAN_SIGNAL_TYPE_32_BIT_FLOAT || Signal->mValueType == CCANSignal::CAN_SIGNAL_TYPE_64_BIT_DOUBLE) { SignalData = QString("\"%1\":%2").arg(Signal->mSignalName).arg(Signal->mPhysicalValue,0,'f',1); } MsgPayload.append(SignalData); if(signal < Msg->mSignalsList.size()-1) { MsgPayload.append(","); } } MsgPayload.append("}"); // qDebug("%s",qPrintable(MsgPayload)); CMQTTMessage NewMessage(MsgTopic, MsgPayload); mMQTTMsgList.append(NewMessage); } //if(MsgList->at(i)->mPendingData == true) } if(mMQTTCLient != 0) { mMQTTCLient->NewMQTTMessages(mMQTTMsgList); } return RET_OK; } int CCANDataLogger::SetMQTTTopicDevice(QString DeviceString) { mTopicDeviceString = DeviceString; return RET_OK; } int CCANDataLogger::SetMQTTClient(CMQTTClientWrapper *MQTTClient) { mMQTTCLient = MQTTClient; }