Corrections et développement. V1.01
This commit is contained in:
parent
428cec7c29
commit
abc91f1932
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -54,7 +54,8 @@ SOURCES += Sources/main.cpp \
|
|||||||
Sources/CloudLogging/MQTTClientWrapper.cpp \
|
Sources/CloudLogging/MQTTClientWrapper.cpp \
|
||||||
Sources/Gui/CCANWatchdogSettingsPage.cpp \
|
Sources/Gui/CCANWatchdogSettingsPage.cpp \
|
||||||
Sources/CANBus/CANWatchdogConfig.cpp \
|
Sources/CANBus/CANWatchdogConfig.cpp \
|
||||||
Sources/CANBus/CANWatchdog.cpp
|
Sources/CANBus/CANWatchdog.cpp \
|
||||||
|
Sources/GeneralSystemParams.cpp
|
||||||
|
|
||||||
HEADERS += Sources/MainWindow.h \
|
HEADERS += Sources/MainWindow.h \
|
||||||
Sources/PCANInterface.h \
|
Sources/PCANInterface.h \
|
||||||
@ -80,7 +81,8 @@ HEADERS += Sources/MainWindow.h \
|
|||||||
Sources/CloudLogging/MQTTClientWrapper.h \
|
Sources/CloudLogging/MQTTClientWrapper.h \
|
||||||
Sources/Gui/CCANWatchdogSettingsPage.h \
|
Sources/Gui/CCANWatchdogSettingsPage.h \
|
||||||
Sources/CANBus/CANWatchdogConfig.h \
|
Sources/CANBus/CANWatchdogConfig.h \
|
||||||
Sources/CANBus/CANWatchdog.h
|
Sources/CANBus/CANWatchdog.h \
|
||||||
|
Sources/GeneralSystemParams.h
|
||||||
|
|
||||||
FORMS += Sources/Gui/MainWindow.ui \
|
FORMS += Sources/Gui/MainWindow.ui \
|
||||||
Sources/Gui/GeneralStatusPage.ui \
|
Sources/Gui/GeneralStatusPage.ui \
|
||||||
|
|||||||
@ -49,14 +49,14 @@ int CCANAnalyzer::Init(quint8 CANDeviceChannel, TPCANBaudrate CANDeviceBaudrate,
|
|||||||
if(mCANDriverIF->GetDeviceHandle(mCANDeviceChannel,mCANDeviceHandle) != RET_OK)
|
if(mCANDriverIF->GetDeviceHandle(mCANDeviceChannel,mCANDeviceHandle) != RET_OK)
|
||||||
{
|
{
|
||||||
QString Log = QString("Impossible de trouver le module CAN sur le channel %1").arg(mCANDeviceChannel);
|
QString Log = QString("Impossible de trouver le module CAN sur le channel %1").arg(mCANDeviceChannel);
|
||||||
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(Log,true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(Log,true,1,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
||||||
mIsCANInitialized = false;
|
mIsCANInitialized = false;
|
||||||
return RET_GENERAL_ERROR;
|
return RET_GENERAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mCANDriverIF->Init(mCANDeviceHandle,CANDeviceBaudrate) != RET_OK)
|
if(mCANDriverIF->Init(mCANDeviceHandle,CANDeviceBaudrate) != RET_OK)
|
||||||
{
|
{
|
||||||
CGeneralMessagesLogDispatcher::instance()->AddLogMessage("Impossible d'initialiser le matériel CAN",true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
CGeneralMessagesLogDispatcher::instance()->AddLogMessage("Impossible d'initialiser le matériel CAN",true,1,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
||||||
mIsCANInitialized = false;
|
mIsCANInitialized = false;
|
||||||
return RET_GENERAL_ERROR;
|
return RET_GENERAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -19,7 +19,7 @@ CCANDevice::CCANDevice(QObject *parent)
|
|||||||
// mDevicePollPeriod = 0;
|
// mDevicePollPeriod = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
CCANDevice::CCANDevice(CCANDeviceConfig &SysConfig, CMQTTClientWrapper *MQTTClient)
|
CCANDevice::CCANDevice(CCANDeviceConfig &SysConfig, CMQTTClientWrapper *MQTTClient, QString DeviceTopicPrefix)
|
||||||
{
|
{
|
||||||
mMessageList.clear();
|
mMessageList.clear();
|
||||||
mMessagesListLoaded = false;
|
mMessagesListLoaded = false;
|
||||||
@ -28,6 +28,7 @@ CCANDevice::CCANDevice(CCANDeviceConfig &SysConfig, CMQTTClientWrapper *MQTTClie
|
|||||||
|
|
||||||
mDeviceConfigInfo = SysConfig;
|
mDeviceConfigInfo = SysConfig;
|
||||||
mCANMQTTClient = MQTTClient;
|
mCANMQTTClient = MQTTClient;
|
||||||
|
mDeviceTopicPrefix = DeviceTopicPrefix;
|
||||||
|
|
||||||
// mCANDeviceID = SysConfig.mCANDeviceID;
|
// mCANDeviceID = SysConfig.mCANDeviceID;
|
||||||
// mCANDeviceBaudrate = SysConfig.mCANDeviceBaudrate;
|
// mCANDeviceBaudrate = SysConfig.mCANDeviceBaudrate;
|
||||||
@ -60,7 +61,7 @@ int CCANDevice::Init()
|
|||||||
if(mCANDatabase.BuildMessageList(&mMessageList,mDeviceConfigInfo.mDeviceName) == RET_OK)
|
if(mCANDatabase.BuildMessageList(&mMessageList,mDeviceConfigInfo.mDeviceName) == RET_OK)
|
||||||
{
|
{
|
||||||
mMessagesListLoaded = true;
|
mMessagesListLoaded = true;
|
||||||
mProgramPtr->InitCANViewer(&mMessageList,mDeviceConfigInfo.mDeviceName);
|
mProgramPtr->InitCANViewer(&mMessageList,this);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -70,18 +71,22 @@ int CCANDevice::Init()
|
|||||||
|
|
||||||
if(mCANAnalyzer.Init(mDeviceConfigInfo.mCANDeviceID,mDeviceConfigInfo.mCANDeviceBaudrate,&mMessageList,mDeviceConfigInfo.mDevicePollPeriod) != RET_OK)
|
if(mCANAnalyzer.Init(mDeviceConfigInfo.mCANDeviceID,mDeviceConfigInfo.mCANDeviceBaudrate,&mMessageList,mDeviceConfigInfo.mDevicePollPeriod) != RET_OK)
|
||||||
{
|
{
|
||||||
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Le dispositif [%1] n'a pas pu s'initialiser").arg(mDeviceConfigInfo.mDeviceName),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Le dispositif [%1] n'a pas pu s'initialiser").arg(mDeviceConfigInfo.mDeviceName),true,1,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
||||||
mProgramPtr->SetCANConnectionStatusRequest(false);
|
mProgramPtr->SetCANConnectionStatusRequest(false);
|
||||||
mProgramPtr->UpdateCANModuleStatusRequest(mDeviceConfigInfo.mDeviceName,"Déconnecté","NOUPDATE");
|
mProgramPtr->UpdateCANModuleStatusRequest(mDeviceConfigInfo.mDeviceName,"Déconnecté","NOUPDATE");
|
||||||
return RET_GENERAL_ERROR;
|
return RET_GENERAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef USE_TOPIC_PREFIX
|
||||||
|
mCANDataLogger.SetMQTTTopicDevice(QString("%2CANBus/%1/").arg(mDeviceConfigInfo.mDeviceName).arg(mDeviceTopicPrefix));
|
||||||
|
#else
|
||||||
mCANDataLogger.SetMQTTTopicDevice(QString("CANBus/%1/").arg(mDeviceConfigInfo.mDeviceName));
|
mCANDataLogger.SetMQTTTopicDevice(QString("CANBus/%1/").arg(mDeviceConfigInfo.mDeviceName));
|
||||||
|
#endif
|
||||||
mCANDataLogger.SetMQTTClient(mCANMQTTClient);
|
mCANDataLogger.SetMQTTClient(mCANMQTTClient);
|
||||||
mProgramPtr->SetCANConnectionStatusRequest(true);
|
mProgramPtr->SetCANConnectionStatusRequest(true);
|
||||||
mProgramPtr->UpdateCANModuleStatusRequest(mDeviceConfigInfo.mDeviceName,"Connecté","NOUPDATE");
|
mProgramPtr->UpdateCANModuleStatusRequest(mDeviceConfigInfo.mDeviceName,"Connecté","NOUPDATE");
|
||||||
|
|
||||||
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Dispositif [%1] initialisé avec succès!").arg(mDeviceConfigInfo.mDeviceName),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_SUCCESS_STATUS);
|
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Dispositif [%1] initialisé avec succès!").arg(mDeviceConfigInfo.mDeviceName),1,true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_SUCCESS_STATUS);
|
||||||
return RET_OK;
|
return RET_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -22,11 +22,12 @@ class CCANDevice : public QObject
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit CCANDevice(QObject *parent = 0);
|
explicit CCANDevice(QObject *parent = 0);
|
||||||
CCANDevice(CCANDeviceConfig &SysConfig, CMQTTClientWrapper* MQTTClient = 0);
|
CCANDevice(CCANDeviceConfig &SysConfig, CMQTTClientWrapper* MQTTClient = 0, QString DeviceTopicPrefix="");
|
||||||
~CCANDevice();
|
~CCANDevice();
|
||||||
|
|
||||||
int Init(QString DatabaseFileName, TPCANHandle CANDeviceID, TPCANBaudrate CANDeviceBaudRate, QString DevDescription, QString DeviceName, unsigned int DevicePollPeriod);
|
int Init(QString DatabaseFileName, TPCANHandle CANDeviceID, TPCANBaudrate CANDeviceBaudRate, QString DevDescription, QString DeviceName, unsigned int DevicePollPeriod);
|
||||||
int Init();
|
int Init();
|
||||||
|
QList<CCANMessage*> *GetCANMessagesList(){return &mMessageList;}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CCANDeviceConfig mDeviceConfigInfo;
|
CCANDeviceConfig mDeviceConfigInfo;
|
||||||
@ -37,6 +38,7 @@ public:
|
|||||||
CCANDatabase mCANDatabase; //The device's database loaded from dbc file
|
CCANDatabase mCANDatabase; //The device's database loaded from dbc file
|
||||||
CCANDataLogger mCANDataLogger;
|
CCANDataLogger mCANDataLogger;
|
||||||
CMQTTClientWrapper *mCANMQTTClient;
|
CMQTTClientWrapper *mCANMQTTClient;
|
||||||
|
QString mDeviceTopicPrefix;
|
||||||
|
|
||||||
QList<CCANMessage*> mMessageList;
|
QList<CCANMessage*> mMessageList;
|
||||||
QList<CMQTTMessage> *GetMQTTMessagesList();
|
QList<CMQTTMessage> *GetMQTTMessagesList();
|
||||||
|
|||||||
@ -29,14 +29,14 @@ int CCANWatchdog::Init(quint8 CANDeviceID, WORD CANDeviceBaudrate, unsigned int
|
|||||||
if(mCANDriverIF->GetDeviceHandle(mCANDeviceID,mCANDeviceHandle) != RET_OK)
|
if(mCANDriverIF->GetDeviceHandle(mCANDeviceID,mCANDeviceHandle) != RET_OK)
|
||||||
{
|
{
|
||||||
QString Log = QString("Impossible de trouver le module CAN Watchdog sur le channel %1").arg(mCANDeviceID);
|
QString Log = QString("Impossible de trouver le module CAN Watchdog sur le channel %1").arg(mCANDeviceID);
|
||||||
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(Log,true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(Log,true,1,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
||||||
mIsCANInitialized = false;
|
mIsCANInitialized = false;
|
||||||
return RET_GENERAL_ERROR;
|
return RET_GENERAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mCANDriverIF->Init(mCANDeviceHandle,mCANDeviceBaudrate) != RET_OK)
|
if(mCANDriverIF->Init(mCANDeviceHandle,mCANDeviceBaudrate) != RET_OK)
|
||||||
{
|
{
|
||||||
CGeneralMessagesLogDispatcher::instance()->AddLogMessage("Impossible d'initialiser la puck CAN du Watchdog",true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
CGeneralMessagesLogDispatcher::instance()->AddLogMessage("Impossible d'initialiser la puck CAN du Watchdog",true,1,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
||||||
mIsCANInitialized = false;
|
mIsCANInitialized = false;
|
||||||
return RET_GENERAL_ERROR;
|
return RET_GENERAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,7 +33,7 @@ int CCANDatabase::LoadDatabaseFile(QString Filename)
|
|||||||
status = kvaDbOpen(&mDatabaseDriverHandle);
|
status = kvaDbOpen(&mDatabaseDriverHandle);
|
||||||
if (status != kvaDbOK)
|
if (status != kvaDbOK)
|
||||||
{
|
{
|
||||||
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Impossible d'initialiser la base de données (création du handle impossble"),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Impossible d'initialiser la base de données (création du handle impossble"),true,1,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
||||||
qDebug("Could not create a database handle: %d\n", status);
|
qDebug("Could not create a database handle: %d\n", status);
|
||||||
return RET_GENERAL_ERROR;
|
return RET_GENERAL_ERROR;
|
||||||
}
|
}
|
||||||
@ -44,7 +44,7 @@ int CCANDatabase::LoadDatabaseFile(QString Filename)
|
|||||||
status = kvaDbReadFile(mDatabaseDriverHandle, Filename.toLocal8Bit().data());
|
status = kvaDbReadFile(mDatabaseDriverHandle, Filename.toLocal8Bit().data());
|
||||||
if (status != kvaDbOK)
|
if (status != kvaDbOK)
|
||||||
{
|
{
|
||||||
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Erreur de base de données: impossible de charger le fichier %1").arg(Filename),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Erreur de base de données: impossible de charger le fichier %1").arg(Filename),true,1,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
||||||
qDebug("Could not load '%s': %d\n", Filename.toLocal8Bit().data(), status);
|
qDebug("Could not load '%s': %d\n", Filename.toLocal8Bit().data(), status);
|
||||||
return RET_GENERAL_ERROR;
|
return RET_GENERAL_ERROR;
|
||||||
}
|
}
|
||||||
@ -52,11 +52,11 @@ int CCANDatabase::LoadDatabaseFile(QString Filename)
|
|||||||
status = kvaDbGetFlags(mDatabaseDriverHandle, &flags);
|
status = kvaDbGetFlags(mDatabaseDriverHandle, &flags);
|
||||||
if (status != kvaDbOK)
|
if (status != kvaDbOK)
|
||||||
{
|
{
|
||||||
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Erreur de base de données: impossible de charger les flags"),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Erreur de base de données: impossible de charger les flags"),true,1,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
||||||
qDebug("kvaDbGetFlags failed: %d\n", status);
|
qDebug("kvaDbGetFlags failed: %d\n", status);
|
||||||
return RET_GENERAL_ERROR;
|
return RET_GENERAL_ERROR;
|
||||||
}
|
}
|
||||||
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Base de données chargée avec succès. Flags: 0x%1").arg(flags),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_SUCCESS_STATUS);
|
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Base de données chargée avec succès. Flags: 0x%1").arg(flags),true,1,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_SUCCESS_STATUS);
|
||||||
qDebug(" Database: flags=0x%x\n", flags);
|
qDebug(" Database: flags=0x%x\n", flags);
|
||||||
|
|
||||||
mDatabaseFileLoaded = true;
|
mDatabaseFileLoaded = true;
|
||||||
@ -85,7 +85,7 @@ int CCANDatabase::BuildMessageList(QList<CCANMessage *> *MsgListPtr, QString Own
|
|||||||
status = kvaDbGetFirstMsg (mDatabaseDriverHandle, &mh);
|
status = kvaDbGetFirstMsg (mDatabaseDriverHandle, &mh);
|
||||||
if (status != kvaDbOK)
|
if (status != kvaDbOK)
|
||||||
{
|
{
|
||||||
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Erreur de base de données: impossible de charger le premier message"),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Erreur de base de données: impossible de charger le premier message"),true,1,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
||||||
qDebug ("kvaDbGetFirstMsg failed: %d\n", status);
|
qDebug ("kvaDbGetFirstMsg failed: %d\n", status);
|
||||||
return RET_GENERAL_ERROR;
|
return RET_GENERAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,7 +13,8 @@ QDataStream &operator>>(QDataStream &in, CCloudParams &dest)
|
|||||||
>> dest.mMQTTBrokerPort
|
>> dest.mMQTTBrokerPort
|
||||||
>> dest.mMQTTBrokerUserName
|
>> dest.mMQTTBrokerUserName
|
||||||
>> dest.mMQTTTopicPrefix
|
>> dest.mMQTTTopicPrefix
|
||||||
>> dest.mMQTTTransmitTimeout;
|
>> dest.mMQTTTransmitTimeout
|
||||||
|
>> dest.mMQTTClientID;
|
||||||
|
|
||||||
return in;
|
return in;
|
||||||
}
|
}
|
||||||
@ -24,7 +25,8 @@ QDataStream &operator<<(QDataStream &out, const CCloudParams &source)
|
|||||||
<< source.mMQTTBrokerPort
|
<< source.mMQTTBrokerPort
|
||||||
<< source.mMQTTBrokerUserName
|
<< source.mMQTTBrokerUserName
|
||||||
<< source.mMQTTTopicPrefix
|
<< source.mMQTTTopicPrefix
|
||||||
<< source.mMQTTTransmitTimeout;
|
<< source.mMQTTTransmitTimeout
|
||||||
|
<< source.mMQTTClientID;
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -41,6 +43,7 @@ CCloudParams& CCloudParams::operator=(const CCloudParams &source)
|
|||||||
this->mMQTTBrokerUserName = source.mMQTTBrokerUserName;
|
this->mMQTTBrokerUserName = source.mMQTTBrokerUserName;
|
||||||
this->mMQTTTopicPrefix = source.mMQTTTopicPrefix;
|
this->mMQTTTopicPrefix = source.mMQTTTopicPrefix;
|
||||||
this->mMQTTTransmitTimeout = source.mMQTTTransmitTimeout;
|
this->mMQTTTransmitTimeout = source.mMQTTTransmitTimeout;
|
||||||
|
this->mMQTTClientID = source.mMQTTClientID;
|
||||||
|
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,6 +13,7 @@ public:
|
|||||||
QString mMQTTTopicPrefix;
|
QString mMQTTTopicPrefix;
|
||||||
quint32 mMQTTBrokerPort;
|
quint32 mMQTTBrokerPort;
|
||||||
quint32 mMQTTTransmitTimeout;
|
quint32 mMQTTTransmitTimeout;
|
||||||
|
QString mMQTTClientID;
|
||||||
|
|
||||||
CCloudParams &operator=(const CCloudParams &source);
|
CCloudParams &operator=(const CCloudParams &source);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -23,7 +23,7 @@ CMQTTClientWrapper::~CMQTTClientWrapper()
|
|||||||
int CMQTTClientWrapper::SetMQTTParams(CCloudParams *Params)
|
int CMQTTClientWrapper::SetMQTTParams(CCloudParams *Params)
|
||||||
{
|
{
|
||||||
mMQTTParams = *Params;
|
mMQTTParams = *Params;
|
||||||
mMQTTClientID = "Otarcik_Station_Ville_Emard";
|
// mMQTTClientID = "Otarcik_Station_Ville_Emard";
|
||||||
|
|
||||||
return RET_OK;
|
return RET_OK;
|
||||||
}
|
}
|
||||||
@ -32,7 +32,7 @@ int CMQTTClientWrapper::ConnectToBroker()
|
|||||||
{
|
{
|
||||||
//Setup the client before connecting.
|
//Setup the client before connecting.
|
||||||
mMQTTClient.setAutoKeepAlive(true);
|
mMQTTClient.setAutoKeepAlive(true);
|
||||||
mMQTTClient.setClientId(mMQTTClientID);
|
mMQTTClient.setClientId(mMQTTParams.mMQTTClientID);
|
||||||
mMQTTClient.setHostname(mMQTTParams.mMQTTBrokerHostName);
|
mMQTTClient.setHostname(mMQTTParams.mMQTTBrokerHostName);
|
||||||
mMQTTClient.setPort(mMQTTParams.mMQTTBrokerPort);
|
mMQTTClient.setPort(mMQTTParams.mMQTTBrokerPort);
|
||||||
mMQTTClient.setPassword(mMQTTParams.mMQTTBrokerPassword);
|
mMQTTClient.setPassword(mMQTTParams.mMQTTBrokerPassword);
|
||||||
@ -143,7 +143,7 @@ void CMQTTClientWrapper::MQTTSendTimerExpired()
|
|||||||
qint32 res = mMQTTClient.publish(MessagesList->at(i).mMessageTopic,MessagesList->at(i).mMessagePayload.toLocal8Bit(),0,true);
|
qint32 res = mMQTTClient.publish(MessagesList->at(i).mMessageTopic,MessagesList->at(i).mMessagePayload.toLocal8Bit(),0,true);
|
||||||
qDebug("%s : %s",qPrintable(MessagesList->at(i).mMessageTopic), qPrintable(MessagesList->at(i).mMessagePayload));
|
qDebug("%s : %s",qPrintable(MessagesList->at(i).mMessageTopic), qPrintable(MessagesList->at(i).mMessagePayload));
|
||||||
QString LogMsg = QString("Envoi d'un message MQTT. Topic: %1 Payload: %2").arg(MessagesList->at(i).mMessageTopic).arg(MessagesList->at(i).mMessagePayload);
|
QString LogMsg = QString("Envoi d'un message MQTT. Topic: %1 Payload: %2").arg(MessagesList->at(i).mMessageTopic).arg(MessagesList->at(i).mMessagePayload);
|
||||||
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(LogMsg,false);
|
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(LogMsg,true,3);
|
||||||
|
|
||||||
}
|
}
|
||||||
qDebug("Sent %d MQTT messages",MessagesList->size());
|
qDebug("Sent %d MQTT messages",MessagesList->size());
|
||||||
|
|||||||
@ -27,7 +27,7 @@ public:
|
|||||||
int SetCANDevicesList(QList<CCANDevice*> *List);
|
int SetCANDevicesList(QList<CCANDevice*> *List);
|
||||||
|
|
||||||
COtarcikCan *mProgramPtr;
|
COtarcikCan *mProgramPtr;
|
||||||
QString mMQTTClientID;
|
// QString mMQTTClientID;
|
||||||
QTimer *mMQTTRefreshTimer;
|
QTimer *mMQTTRefreshTimer;
|
||||||
QTimer *mMQTTReconnectTimer;
|
QTimer *mMQTTReconnectTimer;
|
||||||
|
|
||||||
|
|||||||
@ -59,10 +59,14 @@ int CGeneralMessagesLogDispatcher::Init()
|
|||||||
mSystemLogFile->write(QString("Démarrage du logiciel Otarcik CAN le %1 à %2\n").arg(QDateTime::currentDateTime().date().toString("yyyy-MM-dd")).arg(QDateTime::currentDateTime().time().toString("hh:mm:ss")).toUtf8());
|
mSystemLogFile->write(QString("Démarrage du logiciel Otarcik CAN le %1 à %2\n").arg(QDateTime::currentDateTime().date().toString("yyyy-MM-dd")).arg(QDateTime::currentDateTime().time().toString("hh:mm:ss")).toUtf8());
|
||||||
mSystemLogFile->write(QString("********************************************************************\n").toUtf8());
|
mSystemLogFile->write(QString("********************************************************************\n").toUtf8());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mLogFileVerbosity = 3;
|
||||||
|
mGuiLogVerbosity = 3;
|
||||||
|
|
||||||
return RET_OK;
|
return RET_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CGeneralMessagesLogDispatcher::AddLogMessage(QString LogLine, bool AddToGUILogPanel, eGenMsgTextErrorStatus TxtErrStatus)
|
int CGeneralMessagesLogDispatcher::AddLogMessage(QString LogLine, bool AddToGUILogPanel, int MsgVerbosity, eGenMsgTextErrorStatus TxtErrStatus)
|
||||||
{
|
{
|
||||||
//TODO: Add text to log file...
|
//TODO: Add text to log file...
|
||||||
|
|
||||||
@ -86,31 +90,37 @@ int CGeneralMessagesLogDispatcher::AddLogMessage(QString LogLine, bool AddToGUIL
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
mSystemLogFile->write(LogLine.toUtf8());
|
if(MsgVerbosity <= mLogFileVerbosity)
|
||||||
|
|
||||||
if(AddToGUILogPanel == true)
|
|
||||||
{
|
{
|
||||||
if(TxtErrStatus == GEN_MSG_TXT_ERROR_STATUS)
|
mSystemLogFile->write(LogLine.toUtf8());
|
||||||
{
|
}
|
||||||
LogLine.prepend("%E");
|
|
||||||
}
|
|
||||||
else if(TxtErrStatus == GEN_MSG_TXT_WARNING_STATUS)
|
|
||||||
{
|
|
||||||
LogLine.prepend("%W");
|
|
||||||
}
|
|
||||||
else if(TxtErrStatus == GEN_MSG_TXT_SUCCESS_STATUS)
|
|
||||||
{
|
|
||||||
LogLine.prepend("%S");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(mGeneralStatusPageHandle != 0)
|
if(MsgVerbosity <= mGuiLogVerbosity)
|
||||||
|
{
|
||||||
|
if(AddToGUILogPanel == true)
|
||||||
{
|
{
|
||||||
mGeneralStatusPageHandle->AddGeneralMsgBoxLineEntry(LogLine);
|
if(TxtErrStatus == GEN_MSG_TXT_ERROR_STATUS)
|
||||||
}
|
{
|
||||||
else
|
LogLine.prepend("%E");
|
||||||
{
|
}
|
||||||
qDebug("Someone forgot to assing their pointers in CGeneralMessagesLogDispatch::AddLogMessage!! This needs to be fixed");
|
else if(TxtErrStatus == GEN_MSG_TXT_WARNING_STATUS)
|
||||||
return RET_GENERAL_ERROR;
|
{
|
||||||
|
LogLine.prepend("%W");
|
||||||
|
}
|
||||||
|
else if(TxtErrStatus == GEN_MSG_TXT_SUCCESS_STATUS)
|
||||||
|
{
|
||||||
|
LogLine.prepend("%S");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(mGeneralStatusPageHandle != 0)
|
||||||
|
{
|
||||||
|
mGeneralStatusPageHandle->AddGeneralMsgBoxLineEntry(LogLine);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
qDebug("Someone forgot to assing their pointers in CGeneralMessagesLogDispatch::AddLogMessage!! This needs to be fixed");
|
||||||
|
return RET_GENERAL_ERROR;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -135,3 +145,10 @@ int CGeneralMessagesLogDispatcher::BindGuiPageHandle(CGeneralStatusPage *Handle)
|
|||||||
return RET_OK;
|
return RET_OK;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int CGeneralMessagesLogDispatcher::SetLogVerbosities(int LogFileVerbosity, int GuiLogVerbosity)
|
||||||
|
{
|
||||||
|
mGuiLogVerbosity = GuiLogVerbosity;
|
||||||
|
mLogFileVerbosity = LogFileVerbosity;
|
||||||
|
return RET_OK;
|
||||||
|
}
|
||||||
|
|||||||
@ -30,14 +30,17 @@ public:
|
|||||||
CGeneralMessagesLogDispatcher();
|
CGeneralMessagesLogDispatcher();
|
||||||
~CGeneralMessagesLogDispatcher();
|
~CGeneralMessagesLogDispatcher();
|
||||||
|
|
||||||
int AddLogMessage(QString LogLine, bool AddToGUILogPanel = true, eGenMsgTextErrorStatus TxtErrStatus = GEN_MSG_TXT_NO_ERROR_STATUS);
|
int AddLogMessage(QString LogLine, bool AddToGUILogPanel = true, int MsgVerbosity = 1, eGenMsgTextErrorStatus TxtErrStatus = GEN_MSG_TXT_NO_ERROR_STATUS);
|
||||||
CGeneralStatusPage *mGeneralStatusPageHandle;
|
CGeneralStatusPage *mGeneralStatusPageHandle;
|
||||||
int BindGuiPageHandle(CGeneralStatusPage *Handle);
|
int BindGuiPageHandle(CGeneralStatusPage *Handle);
|
||||||
int Init();
|
int Init();
|
||||||
|
int SetLogVerbosities(int LogFileVerbosity, int GuiLogVerbosity);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QStringList mGeneralMsgGUILog;
|
QStringList mGeneralMsgGUILog;
|
||||||
QFile *mSystemLogFile;
|
QFile *mSystemLogFile;
|
||||||
|
int mLogFileVerbosity;
|
||||||
|
int mGuiLogVerbosity;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
36
Otarcik_CAN/Sources/GeneralSystemParams.cpp
Normal file
36
Otarcik_CAN/Sources/GeneralSystemParams.cpp
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#include "GeneralSystemParams.h"
|
||||||
|
|
||||||
|
CGeneralSystemParams::CGeneralSystemParams()
|
||||||
|
{
|
||||||
|
mLocalLogVerbosity = 1;
|
||||||
|
mLogFileVerbosity = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDataStream &operator>>(QDataStream &in, CGeneralSystemParams &dest)
|
||||||
|
{
|
||||||
|
in >> dest.mLocalLogVerbosity
|
||||||
|
>> dest.mLogFileVerbosity;
|
||||||
|
|
||||||
|
|
||||||
|
return in;
|
||||||
|
}
|
||||||
|
QDataStream &operator<<(QDataStream &out, const CGeneralSystemParams &source)
|
||||||
|
{
|
||||||
|
out << source.mLocalLogVerbosity
|
||||||
|
<< source.mLogFileVerbosity;
|
||||||
|
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
CGeneralSystemParams& CGeneralSystemParams::operator=(const CGeneralSystemParams &source)
|
||||||
|
{
|
||||||
|
if(&source == this)
|
||||||
|
{
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
this->mLocalLogVerbosity = source.mLocalLogVerbosity;
|
||||||
|
this->mLogFileVerbosity = source.mLogFileVerbosity;
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
21
Otarcik_CAN/Sources/GeneralSystemParams.h
Normal file
21
Otarcik_CAN/Sources/GeneralSystemParams.h
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#ifndef GENERALSYSTEMPARAMS_H
|
||||||
|
#define GENERALSYSTEMPARAMS_H
|
||||||
|
|
||||||
|
#include <QDataStream>
|
||||||
|
|
||||||
|
class CGeneralSystemParams
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CGeneralSystemParams();
|
||||||
|
|
||||||
|
int mLocalLogVerbosity;
|
||||||
|
int mLogFileVerbosity;
|
||||||
|
|
||||||
|
CGeneralSystemParams &operator=(const CGeneralSystemParams &source);
|
||||||
|
};
|
||||||
|
|
||||||
|
QDataStream &operator<<(QDataStream &out, const CGeneralSystemParams &source);
|
||||||
|
QDataStream &operator>>(QDataStream &in, CGeneralSystemParams &dest);
|
||||||
|
|
||||||
|
|
||||||
|
#endif // GENERALSYSTEMPARAMS_H
|
||||||
@ -1,6 +1,9 @@
|
|||||||
#include "CANViewerPage.h"
|
#include "CANViewerPage.h"
|
||||||
#include "ui_CANViewerPage.h"
|
#include "ui_CANViewerPage.h"
|
||||||
#include "defines.h"
|
#include "defines.h"
|
||||||
|
#include "CANDevice.h"
|
||||||
|
#include "MQTTMessage.h"
|
||||||
|
#include <QClipboard>
|
||||||
|
|
||||||
CCANViewerPage::CCANViewerPage(QWidget *parent) :
|
CCANViewerPage::CCANViewerPage(QWidget *parent) :
|
||||||
QWidget(parent),
|
QWidget(parent),
|
||||||
@ -21,10 +24,8 @@ CCANViewerPage::CCANViewerPage(QWidget *parent) :
|
|||||||
ui->mCANSignalTableWidget->setColumnCount(4);
|
ui->mCANSignalTableWidget->setColumnCount(4);
|
||||||
ui->mCANSignalTableWidget->setHorizontalHeaderLabels(QStringList() << "Nom du signal" << "Val. physique" << "Val. brute" << "Unités");
|
ui->mCANSignalTableWidget->setHorizontalHeaderLabels(QStringList() << "Nom du signal" << "Val. physique" << "Val. brute" << "Unités");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
connect(ui->mCANDataTableWidget,&QTableWidget::itemSelectionChanged,this,&CCANViewerPage::MessageSelectionChanged);
|
connect(ui->mCANDataTableWidget,&QTableWidget::itemSelectionChanged,this,&CCANViewerPage::MessageSelectionChanged);
|
||||||
|
connect(ui->mCopyJSonToClipboardBtn,&QPushButton::pressed,this,&CCANViewerPage::CopyJSONToClipboardButtonPressed);
|
||||||
}
|
}
|
||||||
|
|
||||||
CCANViewerPage::~CCANViewerPage()
|
CCANViewerPage::~CCANViewerPage()
|
||||||
@ -32,60 +33,54 @@ CCANViewerPage::~CCANViewerPage()
|
|||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CCANViewerPage::InitCANTable(QList<CCANMessage *> *MsgList, QString DeviceName)
|
int CCANViewerPage::InitCANTable(QList<CCANDevice *> *CANDevicesList)
|
||||||
{
|
{
|
||||||
if(MsgList == 0)
|
//if(MsgList == 0)
|
||||||
|
if(CANDevicesList == 0)
|
||||||
{
|
{
|
||||||
return RET_GENERAL_ERROR;
|
return RET_GENERAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
mMsgList.append(MsgList);
|
ResetPage();
|
||||||
|
|
||||||
int row = ui->mCANDataTableWidget->rowCount();
|
mCANDevicesList = CANDevicesList;
|
||||||
ui->mCANDataTableWidget->setRowCount(MsgList->size() + row);
|
|
||||||
for(int Msg = 0; Msg < MsgList->size(); Msg++)
|
for(int Dev = 0; Dev < mCANDevicesList->size(); Dev++)
|
||||||
{
|
{
|
||||||
QTableWidgetItem *NewItem;
|
QList<CCANMessage *> *MsgList = mCANDevicesList->at(Dev)->GetCANMessagesList();
|
||||||
|
|
||||||
NewItem = new QTableWidgetItem(DeviceName);
|
int row = ui->mCANDataTableWidget->rowCount();
|
||||||
ui->mCANDataTableWidget->setItem(row,0,NewItem);
|
ui->mCANDataTableWidget->setRowCount(MsgList->size() + row);
|
||||||
|
for(int Msg = 0; Msg < MsgList->size(); Msg++)
|
||||||
|
{
|
||||||
|
QTableWidgetItem *NewItem;
|
||||||
|
|
||||||
//Set Msg name
|
NewItem = new QTableWidgetItem(mCANDevicesList->at(Dev)->mDeviceConfigInfo.mDeviceName);
|
||||||
NewItem = new QTableWidgetItem(QString("%1").arg(MsgList->at(Msg)->mCANMsgName));
|
ui->mCANDataTableWidget->setItem(row,0,NewItem);
|
||||||
ui->mCANDataTableWidget->setItem(row,1,NewItem);
|
|
||||||
|
|
||||||
//Set message ID value
|
//Set Msg name
|
||||||
NewItem = new QTableWidgetItem(QString("0x%1").arg(MsgList->at(Msg)->mCANMsgID,0,16));
|
NewItem = new QTableWidgetItem(QString("%1").arg(MsgList->at(Msg)->mCANMsgName));
|
||||||
ui->mCANDataTableWidget->setItem(row,2,NewItem);
|
ui->mCANDataTableWidget->setItem(row,1,NewItem);
|
||||||
NewItem->setData(Qt::UserRole,MsgList->at(Msg)->mCANMsgID); //Set message ID as reference to easily find the row when updating...
|
|
||||||
|
|
||||||
//Set message type value
|
//Set message ID value
|
||||||
NewItem = new QTableWidgetItem(QString("0x%1").arg(MsgList->at(Msg)->mCANMsgType,0,16));
|
NewItem = new QTableWidgetItem(QString("0x%1").arg(MsgList->at(Msg)->mCANMsgID,0,16));
|
||||||
ui->mCANDataTableWidget->setItem(row,3,NewItem);
|
ui->mCANDataTableWidget->setItem(row,2,NewItem);
|
||||||
|
NewItem->setData(Qt::UserRole,MsgList->at(Msg)->mCANMsgID); //Set message ID as reference to easily find the row when updating...
|
||||||
|
|
||||||
//Set message length value
|
//Set message type value
|
||||||
NewItem = new QTableWidgetItem(QString(" "));
|
NewItem = new QTableWidgetItem(QString("0x%1").arg(MsgList->at(Msg)->mCANMsgType,0,16));
|
||||||
ui->mCANDataTableWidget->setItem(row,4,NewItem);
|
ui->mCANDataTableWidget->setItem(row,3,NewItem);
|
||||||
|
|
||||||
NewItem = new QTableWidgetItem(QString(" "));
|
//Set message length value
|
||||||
ui->mCANDataTableWidget->setItem(row,5,NewItem);
|
NewItem = new QTableWidgetItem(QString(" "));
|
||||||
|
ui->mCANDataTableWidget->setItem(row,4,NewItem);
|
||||||
|
|
||||||
row++;
|
NewItem = new QTableWidgetItem(QString(" "));
|
||||||
|
ui->mCANDataTableWidget->setItem(row,5,NewItem);
|
||||||
|
|
||||||
|
row++;
|
||||||
|
}
|
||||||
// //Set data value
|
|
||||||
// QString Data;
|
|
||||||
// for(unsigned int i = 0; i < MsgList->at(Msg)->mCANMsgLength; i++)
|
|
||||||
// {
|
|
||||||
// unsigned char DataByte = MsgList->at(Msg)->mCANMsgData.at(i);
|
|
||||||
// Data.append(QString("%1 ").arg(DataByte,2,16,QLatin1Char('0')));
|
|
||||||
// }
|
|
||||||
// NewItem = new QTableWidgetItem(Data);
|
|
||||||
// ui->mCANDataTableWidget->setItem(Msg,5,NewItem);
|
|
||||||
}
|
}
|
||||||
// ui->mCANSignalTableWidget->setCurrentItem(ui->mCANDataTableWidget->item(0,0));
|
|
||||||
// MessageSelectionChanged();
|
|
||||||
|
|
||||||
return RET_OK;
|
return RET_OK;
|
||||||
}
|
}
|
||||||
@ -124,75 +119,94 @@ int CCANViewerPage::UpdateCANTable(QList<CCANMessage *> *MsgList)
|
|||||||
|
|
||||||
void CCANViewerPage::MessageSelectionChanged()
|
void CCANViewerPage::MessageSelectionChanged()
|
||||||
{
|
{
|
||||||
// if(mMsgList == 0)
|
if(mCANDevicesList->isEmpty())
|
||||||
// {
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
|
|
||||||
if(mMsgList.isEmpty())
|
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ui->mCANSignalTableWidget->clearContents();
|
ui->mCANSignalTableWidget->clearContents();
|
||||||
|
|
||||||
//Find message based on current table selection
|
//Find message based on current table selection
|
||||||
int row = ui->mCANDataTableWidget->currentRow();
|
int row = ui->mCANDataTableWidget->currentRow();
|
||||||
if(row == -1)
|
if(row == -1)
|
||||||
return;
|
return;
|
||||||
for(int MsgList = 0; MsgList < mMsgList.size(); MsgList++)
|
|
||||||
|
for(int Dev = 0; Dev < mCANDevicesList->size(); Dev++)
|
||||||
{
|
{
|
||||||
for (int msg = 0; msg < mMsgList.at(MsgList)->size(); msg++)
|
QString DeviceName = ui->mCANDataTableWidget->item(row,0)->text();
|
||||||
|
if(mCANDevicesList->at(Dev)->mDeviceConfigInfo.mDeviceName == DeviceName) //Find the device corresponding to the selected line
|
||||||
{
|
{
|
||||||
unsigned int ID = ui->mCANDataTableWidget->item(row,2)->data(Qt::UserRole).toUInt();
|
QList<CCANMessage *> *MsgList = mCANDevicesList->at(Dev)->GetCANMessagesList();
|
||||||
QString Device = ui->mCANDataTableWidget->item(row,0)->text();
|
for (int msg = 0; msg < MsgList->size(); msg++)
|
||||||
if(Device == mMsgList.at(MsgList)->at(msg)->mOwnerDeviceName &&
|
|
||||||
ID == mMsgList.at(MsgList)->at(msg)->mCANMsgID)
|
|
||||||
{
|
{
|
||||||
CCANMessage *Msg = mMsgList.at(MsgList)->at(msg);
|
unsigned int ID = ui->mCANDataTableWidget->item(row,2)->data(Qt::UserRole).toUInt();
|
||||||
ui->mCANSignalTableWidget->clearContents();
|
|
||||||
ui->mCANSignalTableWidget->setRowCount(Msg->mSignalsList.size());
|
|
||||||
|
|
||||||
for(int signal = 0; signal < Msg->mSignalsList.size(); signal++)
|
if(ID == MsgList->at(msg)->mCANMsgID) //Find the message in the list corresponding to the selected line
|
||||||
{
|
{
|
||||||
//Signal name
|
CCANMessage *Msg = MsgList->at(msg);
|
||||||
QTableWidgetItem *NewItem = new QTableWidgetItem(Msg->mSignalsList.at(signal).mSignalName);
|
ui->mCANSignalTableWidget->clearContents();
|
||||||
ui->mCANSignalTableWidget->setItem(signal,0,NewItem);
|
ui->mCANSignalTableWidget->setRowCount(Msg->mSignalsList.size());
|
||||||
|
|
||||||
//Phys value
|
for(int signal = 0; signal < Msg->mSignalsList.size(); signal++)
|
||||||
|
{
|
||||||
|
//Signal name
|
||||||
|
QTableWidgetItem *NewItem = new QTableWidgetItem(Msg->mSignalsList.at(signal).mSignalName);
|
||||||
|
ui->mCANSignalTableWidget->setItem(signal,0,NewItem);
|
||||||
|
|
||||||
//JFM 2023-06-13 changé pour forcer toujours à float
|
//Phys value
|
||||||
NewItem = new QTableWidgetItem(QString("%1").arg(Msg->mSignalsList.at(signal).mPhysicalValue,0,'f',1));
|
#ifdef FORCE_FLOAT_REPRESENTATION
|
||||||
|
//JFM 2023-06-13 changé pour forcer toujours à float
|
||||||
|
NewItem = new QTableWidgetItem(QString("%1").arg(Msg->mSignalsList.at(signal).mPhysicalValue,0,'f',1));
|
||||||
|
#else
|
||||||
|
if(Msg->mSignalsList.at(signal).mValueType == CCANSignal::CAN_SIGNAL_TYPE_UNSIGNED_INT)
|
||||||
|
{
|
||||||
|
NewItem = new QTableWidgetItem(QString("%1").arg((quint64)Msg->mSignalsList.at(signal).mPhysicalValue));
|
||||||
|
}
|
||||||
|
else if(Msg->mSignalsList.at(signal).mValueType == CCANSignal::CAN_SIGNAL_TYPE_SIGNED_INT)
|
||||||
|
{
|
||||||
|
|
||||||
/*
|
NewItem = new QTableWidgetItem(QString("%1").arg((qint64)Msg->mSignalsList.at(signal).mPhysicalValue));
|
||||||
if(Msg->mSignalsList.at(signal).mValueType == CCANSignal::CAN_SIGNAL_TYPE_UNSIGNED_INT)
|
}
|
||||||
{
|
else if(Msg->mSignalsList.at(signal).mValueType == CCANSignal::CAN_SIGNAL_TYPE_32_BIT_FLOAT ||
|
||||||
NewItem = new QTableWidgetItem(QString("%1").arg((quint64)Msg->mSignalsList.at(signal).mPhysicalValue));
|
Msg->mSignalsList.at(signal).mValueType == CCANSignal::CAN_SIGNAL_TYPE_64_BIT_DOUBLE)
|
||||||
}
|
{
|
||||||
else if(Msg->mSignalsList.at(signal).mValueType == CCANSignal::CAN_SIGNAL_TYPE_SIGNED_INT)
|
NewItem = new QTableWidgetItem(QString("%1").arg(Msg->mSignalsList.at(signal).mPhysicalValue,0,'f',1));
|
||||||
{
|
}
|
||||||
|
#endif
|
||||||
|
ui->mCANSignalTableWidget->setItem(signal,1,NewItem);
|
||||||
|
|
||||||
NewItem = new QTableWidgetItem(QString("%1").arg((qint64)Msg->mSignalsList.at(signal).mPhysicalValue));
|
//Raw value
|
||||||
}
|
NewItem = new QTableWidgetItem(QString("0x%1").arg(Msg->mSignalsList.at(signal).mRawValue,0,16));
|
||||||
else if(Msg->mSignalsList.at(signal).mValueType == CCANSignal::CAN_SIGNAL_TYPE_32_BIT_FLOAT ||
|
ui->mCANSignalTableWidget->setItem(signal,2,NewItem);
|
||||||
Msg->mSignalsList.at(signal).mValueType == CCANSignal::CAN_SIGNAL_TYPE_64_BIT_DOUBLE)
|
|
||||||
{
|
|
||||||
NewItem = new QTableWidgetItem(QString("%1").arg(Msg->mSignalsList.at(signal).mPhysicalValue,0,'f',1));
|
|
||||||
}*/
|
|
||||||
ui->mCANSignalTableWidget->setItem(signal,1,NewItem);
|
|
||||||
|
|
||||||
//Raw value
|
//Units
|
||||||
NewItem = new QTableWidgetItem(QString("0x%1").arg(Msg->mSignalsList.at(signal).mRawValue,0,16));
|
NewItem = new QTableWidgetItem(Msg->mSignalsList.at(signal).mSignalUnit);
|
||||||
ui->mCANSignalTableWidget->setItem(signal,2,NewItem);
|
ui->mCANSignalTableWidget->setItem(signal,3,NewItem);
|
||||||
|
|
||||||
//Units
|
}
|
||||||
NewItem = new QTableWidgetItem(Msg->mSignalsList.at(signal).mSignalUnit);
|
|
||||||
ui->mCANSignalTableWidget->setItem(signal,3,NewItem);
|
|
||||||
|
|
||||||
|
ui->mJSonSignalViewTxtEdit->clear();
|
||||||
|
CMQTTMessage MQTTMsg = mCANDevicesList->at(Dev)->mCANDataLogger.GetMQTTMessage(Msg,true);
|
||||||
|
QString MQTTMsgDisplay = QString("Topic: %1\n\nPayload:\n%2").arg(MQTTMsg.mMessageTopic).arg(MQTTMsg.mMessagePayload);
|
||||||
|
ui->mJSonSignalViewTxtEdit->insertPlainText(MQTTMsgDisplay);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int CCANViewerPage::ResetPage()
|
||||||
|
{
|
||||||
|
ui->mCANDataTableWidget->clearContents();
|
||||||
|
ui->mCANDataTableWidget->setRowCount(0);
|
||||||
|
ui->mCANSignalTableWidget->clearContents();
|
||||||
|
ui->mCANSignalTableWidget->setRowCount(0);
|
||||||
|
|
||||||
|
return RET_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CCANViewerPage::UpdateSignalsTable()
|
int CCANViewerPage::UpdateSignalsTable()
|
||||||
@ -245,3 +259,10 @@ int CCANViewerPage::UpdateSignalsTable()
|
|||||||
|
|
||||||
return RET_OK;
|
return RET_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CCANViewerPage::CopyJSONToClipboardButtonPressed()
|
||||||
|
{
|
||||||
|
// QApplication::clipboard()->setText(ui->mJSonSignalViewTxtEdit->);
|
||||||
|
ui->mJSonSignalViewTxtEdit->selectAll();
|
||||||
|
ui->mJSonSignalViewTxtEdit->copy();
|
||||||
|
}
|
||||||
|
|||||||
@ -5,10 +5,20 @@
|
|||||||
#include "CANMessage.h"
|
#include "CANMessage.h"
|
||||||
#include <QList>
|
#include <QList>
|
||||||
|
|
||||||
|
class CCANDevice;
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class CCANViewerPage;
|
class CCANViewerPage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class CCANViewerInfoStructure
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
QList<CCANMessage *> *mMsgList;
|
||||||
|
CCANDevice *mCANDevice;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
class CCANViewerPage : public QWidget
|
class CCANViewerPage : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@ -19,17 +29,21 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
int UpdateCANTable(QList<CCANMessage*> *MsgList);
|
int UpdateCANTable(QList<CCANMessage*> *MsgList);
|
||||||
int InitCANTable(QList<CCANMessage*> *MsgList, QString DeviceName);
|
int InitCANTable(QList<CCANDevice*> *CANDevicesList);
|
||||||
int UpdateSignalsTable();
|
int UpdateSignalsTable();
|
||||||
|
int ResetPage();
|
||||||
|
|
||||||
|
QList<CCANViewerInfoStructure> mCANDataStructureList;
|
||||||
QList<QList<CCANMessage *>*> mMsgList;
|
QList<CCANDevice*> *mCANDevicesList;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void MessageSelectionChanged();
|
void MessageSelectionChanged();
|
||||||
|
void CopyJSONToClipboardButtonPressed();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::CCANViewerPage *ui;
|
Ui::CCANViewerPage *ui;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif // CANVIEWERPAGE_H
|
#endif // CANVIEWERPAGE_H
|
||||||
|
|||||||
@ -18,11 +18,15 @@ CLoggingSettingsPage::CLoggingSettingsPage(QWidget *parent) :
|
|||||||
ui->mCloudMQTTTopicPrefixEdit->setEnabled(false);
|
ui->mCloudMQTTTopicPrefixEdit->setEnabled(false);
|
||||||
ui->mCloudMQTTUserNameEdit->setEnabled(false);
|
ui->mCloudMQTTUserNameEdit->setEnabled(false);
|
||||||
ui->mCloudMQTTRefreshRateSpinBx->setEnabled(false);
|
ui->mCloudMQTTRefreshRateSpinBx->setEnabled(false);
|
||||||
|
ui->mCloudMQTTClientID->setEnabled(false);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
connect(ui->mCancelBtn,&QPushButton::clicked,this,&CLoggingSettingsPage::CancelBtnPressed);
|
connect(ui->mCancelBtn,&QPushButton::clicked,this,&CLoggingSettingsPage::CancelBtnPressed);
|
||||||
connect(ui->mChangeParamsBtn,&QPushButton::clicked,this,&CLoggingSettingsPage::ModifyParamsBtnPressed);
|
connect(ui->mChangeParamsBtn,&QPushButton::clicked,this,&CLoggingSettingsPage::ModifyParamsBtnPressed);
|
||||||
|
connect(ui->mLogZoneVerbositySpinBx,QOverload<int>::of(&QSpinBox::valueChanged),this,&CLoggingSettingsPage::VerbosityParamsChanged);
|
||||||
|
connect(ui->mLogFileVerbositySpinBx,QOverload<int>::of(&QSpinBox::valueChanged),this,&CLoggingSettingsPage::VerbosityParamsChanged);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CLoggingSettingsPage::~CLoggingSettingsPage()
|
CLoggingSettingsPage::~CLoggingSettingsPage()
|
||||||
@ -39,7 +43,21 @@ int CLoggingSettingsPage::SetCloudParams(const CCloudParams *CloudParams)
|
|||||||
|
|
||||||
mCloudParams = *CloudParams;
|
mCloudParams = *CloudParams;
|
||||||
|
|
||||||
UpdateConfigPage();
|
UpdateCloudConfig();
|
||||||
|
return RET_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
int CLoggingSettingsPage::SetGeneralSettingsParams(const CGeneralSystemParams *GeneralParams)
|
||||||
|
{
|
||||||
|
if(GeneralParams == 0)
|
||||||
|
{
|
||||||
|
return RET_GENERAL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
mGeneralSystemParams = *GeneralParams;
|
||||||
|
|
||||||
|
UpdateGeneralParams();
|
||||||
|
|
||||||
return RET_OK;
|
return RET_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,6 +73,7 @@ void CLoggingSettingsPage::ModifyParamsBtnPressed()
|
|||||||
ui->mCloudMQTTTopicPrefixEdit->setEnabled(true);
|
ui->mCloudMQTTTopicPrefixEdit->setEnabled(true);
|
||||||
ui->mCloudMQTTUserNameEdit->setEnabled(true);
|
ui->mCloudMQTTUserNameEdit->setEnabled(true);
|
||||||
ui->mCloudMQTTRefreshRateSpinBx->setEnabled(true);
|
ui->mCloudMQTTRefreshRateSpinBx->setEnabled(true);
|
||||||
|
ui->mCloudMQTTClientID->setEnabled(true);
|
||||||
ui->mChangeParamsBtn->setText("Appliquer");
|
ui->mChangeParamsBtn->setText("Appliquer");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -68,14 +87,21 @@ void CLoggingSettingsPage::ModifyParamsBtnPressed()
|
|||||||
ui->mCloudMQTTTopicPrefixEdit->setEnabled(false);
|
ui->mCloudMQTTTopicPrefixEdit->setEnabled(false);
|
||||||
ui->mCloudMQTTUserNameEdit->setEnabled(false);
|
ui->mCloudMQTTUserNameEdit->setEnabled(false);
|
||||||
ui->mCloudMQTTRefreshRateSpinBx->setEnabled(false);
|
ui->mCloudMQTTRefreshRateSpinBx->setEnabled(false);
|
||||||
|
ui->mCloudMQTTClientID->setEnabled(false);
|
||||||
|
|
||||||
|
|
||||||
mCloudParams.mMQTTBrokerHostName = ui->mCloudMQTTHostNameEdit->text();
|
mCloudParams.mMQTTBrokerHostName = ui->mCloudMQTTHostNameEdit->text();
|
||||||
mCloudParams.mMQTTBrokerPassword = ui->mCloudMQTTPasswordEdit->text();
|
mCloudParams.mMQTTBrokerPassword = ui->mCloudMQTTPasswordEdit->text();
|
||||||
mCloudParams.mMQTTBrokerPort = (quint32)ui->mCloudMQTTPortSpinBx->value();
|
mCloudParams.mMQTTBrokerPort = (quint32)ui->mCloudMQTTPortSpinBx->value();
|
||||||
mCloudParams.mMQTTTopicPrefix = ui->mCloudMQTTTopicPrefixEdit->text();
|
mCloudParams.mMQTTTopicPrefix = ui->mCloudMQTTTopicPrefixEdit->text();
|
||||||
|
if(mCloudParams.mMQTTTopicPrefix.endsWith("/") == false)
|
||||||
|
{
|
||||||
|
mCloudParams.mMQTTTopicPrefix.append("/");
|
||||||
|
ui->mCloudMQTTTopicPrefixEdit->setText(mCloudParams.mMQTTTopicPrefix);
|
||||||
|
}
|
||||||
mCloudParams.mMQTTBrokerUserName = ui->mCloudMQTTUserNameEdit->text();
|
mCloudParams.mMQTTBrokerUserName = ui->mCloudMQTTUserNameEdit->text();
|
||||||
mCloudParams.mMQTTTransmitTimeout = (quint32)ui->mCloudMQTTRefreshRateSpinBx->value();
|
mCloudParams.mMQTTTransmitTimeout = (quint32)ui->mCloudMQTTRefreshRateSpinBx->value();
|
||||||
|
mCloudParams.mMQTTClientID = ui->mCloudMQTTClientID->text();
|
||||||
|
|
||||||
mProgramHandle->SaveCloudLoggingConfigRequest(&mCloudParams);
|
mProgramHandle->SaveCloudLoggingConfigRequest(&mCloudParams);
|
||||||
|
|
||||||
@ -92,11 +118,12 @@ void CLoggingSettingsPage::CancelBtnPressed()
|
|||||||
ui->mCloudMQTTTopicPrefixEdit->setEnabled(false);
|
ui->mCloudMQTTTopicPrefixEdit->setEnabled(false);
|
||||||
ui->mCloudMQTTUserNameEdit->setEnabled(false);
|
ui->mCloudMQTTUserNameEdit->setEnabled(false);
|
||||||
ui->mCloudMQTTRefreshRateSpinBx->setEnabled(false);
|
ui->mCloudMQTTRefreshRateSpinBx->setEnabled(false);
|
||||||
|
ui->mCloudMQTTClientID->setEnabled(false);
|
||||||
|
|
||||||
UpdateConfigPage();
|
UpdateCloudConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
int CLoggingSettingsPage::UpdateConfigPage()
|
int CLoggingSettingsPage::UpdateCloudConfig()
|
||||||
{
|
{
|
||||||
ui->mCloudMQTTHostNameEdit->setText(mCloudParams.mMQTTBrokerHostName);
|
ui->mCloudMQTTHostNameEdit->setText(mCloudParams.mMQTTBrokerHostName);
|
||||||
ui->mCloudMQTTPasswordEdit->setText(mCloudParams.mMQTTBrokerPassword);
|
ui->mCloudMQTTPasswordEdit->setText(mCloudParams.mMQTTBrokerPassword);
|
||||||
@ -104,6 +131,34 @@ int CLoggingSettingsPage::UpdateConfigPage()
|
|||||||
ui->mCloudMQTTTopicPrefixEdit->setText(mCloudParams.mMQTTTopicPrefix);
|
ui->mCloudMQTTTopicPrefixEdit->setText(mCloudParams.mMQTTTopicPrefix);
|
||||||
ui->mCloudMQTTUserNameEdit->setText(mCloudParams.mMQTTBrokerUserName);
|
ui->mCloudMQTTUserNameEdit->setText(mCloudParams.mMQTTBrokerUserName);
|
||||||
ui->mCloudMQTTRefreshRateSpinBx->setValue(mCloudParams.mMQTTTransmitTimeout);
|
ui->mCloudMQTTRefreshRateSpinBx->setValue(mCloudParams.mMQTTTransmitTimeout);
|
||||||
|
ui->mCloudMQTTClientID->setText(mCloudParams.mMQTTClientID);
|
||||||
|
|
||||||
return RET_OK;
|
return RET_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int CLoggingSettingsPage::UpdateGeneralParams()
|
||||||
|
{
|
||||||
|
disconnect(ui->mLogZoneVerbositySpinBx,QOverload<int>::of(&QSpinBox::valueChanged),this,&CLoggingSettingsPage::VerbosityParamsChanged);
|
||||||
|
disconnect(ui->mLogFileVerbositySpinBx,QOverload<int>::of(&QSpinBox::valueChanged),this,&CLoggingSettingsPage::VerbosityParamsChanged);
|
||||||
|
|
||||||
|
ui->mLogFileVerbositySpinBx->setValue(mGeneralSystemParams.mLogFileVerbosity);
|
||||||
|
ui->mLogZoneVerbositySpinBx->setValue(mGeneralSystemParams.mLocalLogVerbosity);
|
||||||
|
|
||||||
|
connect(ui->mLogZoneVerbositySpinBx,QOverload<int>::of(&QSpinBox::valueChanged),this,&CLoggingSettingsPage::VerbosityParamsChanged);
|
||||||
|
connect(ui->mLogFileVerbositySpinBx,QOverload<int>::of(&QSpinBox::valueChanged),this,&CLoggingSettingsPage::VerbosityParamsChanged);
|
||||||
|
|
||||||
|
return RET_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CLoggingSettingsPage::VerbosityParamsChanged(int value)
|
||||||
|
{
|
||||||
|
Q_UNUSED(value)
|
||||||
|
|
||||||
|
mGeneralSystemParams.mLocalLogVerbosity = ui->mLogZoneVerbositySpinBx->value();
|
||||||
|
mGeneralSystemParams.mLogFileVerbosity = ui->mLogFileVerbositySpinBx->value();
|
||||||
|
|
||||||
|
mProgramHandle->SaveGeneralParametersSettingsRequest(&mGeneralSystemParams);
|
||||||
|
|
||||||
|
qDebug("LogZone: %i, LogFile %i",mGeneralSystemParams.mLocalLogVerbosity,mGeneralSystemParams.mLogFileVerbosity);
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
#include "CloudParams.h"
|
#include "CloudParams.h"
|
||||||
|
#include "GeneralSystemParams.h"
|
||||||
|
|
||||||
|
|
||||||
class COtarcikCan;
|
class COtarcikCan;
|
||||||
@ -20,24 +21,28 @@ public:
|
|||||||
~CLoggingSettingsPage();
|
~CLoggingSettingsPage();
|
||||||
|
|
||||||
int SetCloudParams(const CCloudParams *CloudParams);
|
int SetCloudParams(const CCloudParams *CloudParams);
|
||||||
|
int SetGeneralSettingsParams(const CGeneralSystemParams *GeneralParams);
|
||||||
|
|
||||||
|
|
||||||
COtarcikCan *mProgramHandle;
|
COtarcikCan *mProgramHandle;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int UpdateConfigPage();
|
int UpdateCloudConfig();
|
||||||
|
int UpdateGeneralParams();
|
||||||
|
|
||||||
|
|
||||||
Ui::CLoggingSettingsPage *ui;
|
Ui::CLoggingSettingsPage *ui;
|
||||||
|
|
||||||
bool EditMode;
|
bool EditMode;
|
||||||
CCloudParams mCloudParams;
|
CCloudParams mCloudParams;
|
||||||
|
CGeneralSystemParams mGeneralSystemParams;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void ModifyParamsBtnPressed();
|
void ModifyParamsBtnPressed();
|
||||||
void CancelBtnPressed();
|
void CancelBtnPressed();
|
||||||
|
void VerbosityParamsChanged(int value);
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@ -204,7 +204,7 @@
|
|||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QLabel" name="mCloudMQTTClientID">
|
<widget class="QLabel" name="mCloudMQTTClientIDLbl">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>10</x>
|
<x>10</x>
|
||||||
@ -225,7 +225,7 @@
|
|||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QLineEdit" name="mCloudMQTTTopicPrefixEdit_2">
|
<widget class="QLineEdit" name="mCloudMQTTClientID">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>90</x>
|
<x>90</x>
|
||||||
@ -279,8 +279,8 @@
|
|||||||
<widget class="QLabel" name="mGeneralLogParamsLbl">
|
<widget class="QLabel" name="mGeneralLogParamsLbl">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>740</x>
|
<x>590</x>
|
||||||
<y>40</y>
|
<y>30</y>
|
||||||
<width>181</width>
|
<width>181</width>
|
||||||
<height>31</height>
|
<height>31</height>
|
||||||
</rect>
|
</rect>
|
||||||
@ -294,19 +294,6 @@
|
|||||||
<string>Paramètres généraux</string>
|
<string>Paramètres généraux</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QCheckBox" name="mSaveLocalLogFileChkBx">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>740</x>
|
|
||||||
<y>80</y>
|
|
||||||
<width>261</width>
|
|
||||||
<height>20</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Sauvegarder fichier log local</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QPushButton" name="mChangeParamsBtn">
|
<widget class="QPushButton" name="mChangeParamsBtn">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
@ -333,6 +320,111 @@
|
|||||||
<string>Annuler</string>
|
<string>Annuler</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
|
<widget class="QGroupBox" name="groupBox_2">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>590</x>
|
||||||
|
<y>90</y>
|
||||||
|
<width>351</width>
|
||||||
|
<height>121</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>Logging (3 = très détaillé)</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QSpinBox" name="mLogFileVerbositySpinBx">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>170</x>
|
||||||
|
<y>30</y>
|
||||||
|
<width>51</width>
|
||||||
|
<height>22</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>3</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QSpinBox" name="mLogZoneVerbositySpinBx">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>220</x>
|
||||||
|
<y>70</y>
|
||||||
|
<width>43</width>
|
||||||
|
<height>22</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>3</number>
|
||||||
|
</property>
|
||||||
|
<property name="singleStep">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>30</y>
|
||||||
|
<width>161</width>
|
||||||
|
<height>21</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>11</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Verbosité du fichier log</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>70</y>
|
||||||
|
<width>211</width>
|
||||||
|
<height>21</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>11</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Verbosité de la page de statut</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="label_3">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>230</x>
|
||||||
|
<y>30</y>
|
||||||
|
<width>81</width>
|
||||||
|
<height>20</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>10</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>0 = désactivé</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
|
|||||||
@ -22,6 +22,7 @@ CMainWindow::CMainWindow(QWidget *parent) :
|
|||||||
ui(new Ui::CMainWindow)
|
ui(new Ui::CMainWindow)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
QMainWindow::statusBar()->showMessage("V1.00");
|
||||||
|
|
||||||
mGeneralStatusPage = new CGeneralStatusPage(this);
|
mGeneralStatusPage = new CGeneralStatusPage(this);
|
||||||
mMainWindowWidget = new QTabWidget(this);
|
mMainWindowWidget = new QTabWidget(this);
|
||||||
|
|||||||
@ -54,8 +54,9 @@ int COtarcikCan::Start()
|
|||||||
|
|
||||||
CGeneralMessagesLogDispatcher::instance()->BindGuiPageHandle(mMainWindow.mGeneralStatusPage);
|
CGeneralMessagesLogDispatcher::instance()->BindGuiPageHandle(mMainWindow.mGeneralStatusPage);
|
||||||
CGeneralMessagesLogDispatcher::instance()->Init();
|
CGeneralMessagesLogDispatcher::instance()->Init();
|
||||||
|
// CGeneralMessagesLogDispatcher::instance()->Init();
|
||||||
|
|
||||||
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Démarrage du logiciel OtarcikCAN"));
|
// CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Démarrage du logiciel OtarcikCAN"));
|
||||||
|
|
||||||
if(mSystemConfig.LoadConfig() == RET_OK)
|
if(mSystemConfig.LoadConfig() == RET_OK)
|
||||||
{
|
{
|
||||||
@ -66,50 +67,41 @@ int COtarcikCan::Start()
|
|||||||
PopulateCANDevicesList(CANDeviceConfigList);
|
PopulateCANDevicesList(CANDeviceConfigList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
mMainWindow.mCANbusSettingsPage->SetDevicesList(&mCANDevicesList);
|
mMainWindow.mCANbusSettingsPage->SetDevicesList(&mCANDevicesList);
|
||||||
|
mMainWindow.mCANViewerPage->InitCANTable(&mCANDevicesList);
|
||||||
|
|
||||||
mCloudLoggingParams = *mSystemConfig.GetCloudParams();
|
mCloudLoggingParams = *mSystemConfig.GetCloudParams();
|
||||||
mMainWindow.mDataLoggingSettingsPage->SetCloudParams(&mCloudLoggingParams);
|
mMainWindow.mDataLoggingSettingsPage->SetCloudParams(&mCloudLoggingParams);
|
||||||
|
|
||||||
mCANBusMQTTClient.SetMQTTParams(&mCloudLoggingParams);
|
mCANBusMQTTClient.SetMQTTParams(&mCloudLoggingParams);
|
||||||
mCANBusMQTTClient.ConnectToBroker();
|
|
||||||
mCANBusMQTTClient.SetCANDevicesList(&mCANDevicesList);
|
mCANBusMQTTClient.SetCANDevicesList(&mCANDevicesList);
|
||||||
|
|
||||||
|
mGeneralSystemParams = *mSystemConfig.GetGeneralSystemSettings();
|
||||||
|
mMainWindow.mDataLoggingSettingsPage->SetGeneralSettingsParams(&mGeneralSystemParams);
|
||||||
|
CGeneralMessagesLogDispatcher::instance()->SetLogVerbosities(mGeneralSystemParams.mLogFileVerbosity,mGeneralSystemParams.mLocalLogVerbosity);
|
||||||
|
|
||||||
mMainWindow.mCANWatchdogSettingsPage->SetCANWatchdogConfig(mSystemConfig.GetCANWatchdogConfig());
|
mMainWindow.mCANWatchdogSettingsPage->SetCANWatchdogConfig(mSystemConfig.GetCANWatchdogConfig());
|
||||||
|
|
||||||
mGPTimer->setSingleShot(false);
|
// mGPTimer->setSingleShot(false);
|
||||||
mGPTimer->start(5000);
|
// mGPTimer->start(5000);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
// CCANDevice *NewCANDevice = new CCANDevice();
|
|
||||||
// mCANDevicesList.append(NewCANDevice);
|
|
||||||
// NewCANDevice->mProgramPtr = this;
|
|
||||||
|
|
||||||
// NewCANDevice->Init("IVT-S_all-variations_12082020.dbc",PCAN_USBBUS1,PCAN_BAUD_500K,"Puck CAN USB branchée sur le module Parker qui contrôle la patente", "Module Parker",1000);
|
|
||||||
// SaveSystemConfigRequest();
|
|
||||||
|
|
||||||
|
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Démarrage du logiciel OtarcikCAN"));
|
||||||
|
|
||||||
|
mCANBusMQTTClient.ConnectToBroker();
|
||||||
mMainWindow.mCANbusSettingsPage->SetDevicesList(&mCANDevicesList);
|
mMainWindow.mCANbusSettingsPage->SetDevicesList(&mCANDevicesList);
|
||||||
|
|
||||||
// NewCANDevice = new CCANDevice();
|
|
||||||
// mCANDevicesList.append(NewCANDevice);
|
|
||||||
// NewCANDevice->mProgramPtr = this;
|
|
||||||
|
|
||||||
// NewCANDevice->Init("mazda_3_2019.dbc",PCAN_USBBUS3,PCAN_BAUD_800K,"Puck CAN USB branchée sur une autre patente", "Module Cossin",200);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int COtarcikCan::UpdateCANViewerDataRequest(QList<CCANMessage *> *MsgList, QString DeviceName)
|
int COtarcikCan::UpdateCANViewerDataRequest(QList<CCANMessage *> *MsgList)
|
||||||
{
|
{
|
||||||
return mMainWindow.mCANViewerPage->UpdateCANTable(MsgList);
|
return mMainWindow.mCANViewerPage->UpdateCANTable(MsgList);
|
||||||
}
|
|
||||||
|
|
||||||
int COtarcikCan::InitCANViewer(QList<CCANMessage *> *MsgList, QString DeviceName)
|
|
||||||
{
|
|
||||||
return mMainWindow.mCANViewerPage->InitCANTable(MsgList, DeviceName);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -132,8 +124,11 @@ int COtarcikCan::SaveCANDevicesConfigRequest(QList<CCANDeviceConfig *> *DevicesC
|
|||||||
{
|
{
|
||||||
//Config saving is successful. To apply changes we need to reload the devices.
|
//Config saving is successful. To apply changes we need to reload the devices.
|
||||||
//The easiest way is to delete everything and reload.
|
//The easiest way is to delete everything and reload.
|
||||||
|
mMainWindow.mGeneralStatusPage->ClearCANModuleStatusTable();
|
||||||
PopulateCANDevicesList(DevicesConfigList);
|
PopulateCANDevicesList(DevicesConfigList);
|
||||||
mMainWindow.mCANbusSettingsPage->SetDevicesList(&mCANDevicesList);
|
mMainWindow.mCANbusSettingsPage->SetDevicesList(&mCANDevicesList);
|
||||||
|
mMainWindow.mCANViewerPage->InitCANTable(&mCANDevicesList);
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -158,12 +153,14 @@ int COtarcikCan::PopulateCANDevicesList(QList<CCANDeviceConfig *> *CANDeviceConf
|
|||||||
|
|
||||||
for(int i = 0; i < CANDeviceConfigList->size(); i++)
|
for(int i = 0; i < CANDeviceConfigList->size(); i++)
|
||||||
{
|
{
|
||||||
CCANDevice *NewDevice = new CCANDevice(*CANDeviceConfigList->at(i),&mCANBusMQTTClient);
|
CCANDevice *NewDevice = new CCANDevice(*CANDeviceConfigList->at(i),&mCANBusMQTTClient,mSystemConfig.mCloudLoggingParams.mMQTTTopicPrefix);
|
||||||
NewDevice->mProgramPtr = this;
|
NewDevice->mProgramPtr = this;
|
||||||
NewDevice->Init();
|
NewDevice->Init();
|
||||||
mCANDevicesList.append(NewDevice);
|
mCANDevicesList.append(NewDevice);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return RET_OK;
|
return RET_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,6 +189,23 @@ int COtarcikCan::SaveCloudLoggingConfigRequest(CCloudParams *CloudParams)
|
|||||||
return RET_OK;
|
return RET_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int COtarcikCan::SaveGeneralParametersSettingsRequest(CGeneralSystemParams *GeneralParams)
|
||||||
|
{
|
||||||
|
mGeneralSystemParams = *GeneralParams;
|
||||||
|
mSystemConfig.SetGeneralSystemParams(&mGeneralSystemParams);
|
||||||
|
if(mSystemConfig.SaveConfig() == RET_OK)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return RET_GENERAL_ERROR;
|
||||||
|
}
|
||||||
|
CGeneralMessagesLogDispatcher::instance()->SetLogVerbosities(mGeneralSystemParams.mLogFileVerbosity,mGeneralSystemParams.mLocalLogVerbosity);
|
||||||
|
|
||||||
|
return RET_OK;
|
||||||
|
}
|
||||||
|
|
||||||
void COtarcikCan::GPTimerExpired()
|
void COtarcikCan::GPTimerExpired()
|
||||||
{
|
{
|
||||||
// mCANBusMQTTClient.SendMQTTTestMessage();
|
// mCANBusMQTTClient.SendMQTTTestMessage();
|
||||||
|
|||||||
@ -25,12 +25,13 @@ public:
|
|||||||
int Start();
|
int Start();
|
||||||
|
|
||||||
|
|
||||||
int InitCANViewer(QList<CCANMessage *> *MsgList, QString DeviceName);
|
int InitCANViewer(QList<CCANMessage *> *MsgList, CCANDevice *Device);
|
||||||
int UpdateCANViewerDataRequest(QList<CCANMessage *> *MsgList, QString DeviceName);
|
int UpdateCANViewerDataRequest(QList<CCANMessage *> *MsgList, QString DeviceName);
|
||||||
|
|
||||||
|
|
||||||
int SaveCANDevicesConfigRequest(QList<CCANDeviceConfig*> *DevicesConfigList);
|
int SaveCANDevicesConfigRequest(QList<CCANDeviceConfig*> *DevicesConfigList);
|
||||||
int SaveCloudLoggingConfigRequest(CCloudParams *CloudParams);
|
int SaveCloudLoggingConfigRequest(CCloudParams *CloudParams);
|
||||||
|
int SaveGeneralParametersSettingsRequest(CGeneralSystemParams *GeneralParams);
|
||||||
|
|
||||||
int SetCANConnectionStatusRequest(bool Connected);
|
int SetCANConnectionStatusRequest(bool Connected);
|
||||||
int SetMQTTConnectionSatusRequest(bool Connected);
|
int SetMQTTConnectionSatusRequest(bool Connected);
|
||||||
@ -41,6 +42,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
QList<CCANDevice*> mCANDevicesList;
|
QList<CCANDevice*> mCANDevicesList;
|
||||||
CCloudParams mCloudLoggingParams;
|
CCloudParams mCloudLoggingParams;
|
||||||
|
CGeneralSystemParams mGeneralSystemParams;
|
||||||
|
|
||||||
int PopulateCANDevicesList(QList<CCANDeviceConfig*> *DevicesConfigsList);
|
int PopulateCANDevicesList(QList<CCANDeviceConfig*> *DevicesConfigsList);
|
||||||
|
|
||||||
|
|||||||
@ -60,7 +60,7 @@ int CPCANInterface::Init(TPCANHandle CANDeviceHandle, TPCANBaudrate CANBaudRate)
|
|||||||
char strMsg[256];
|
char strMsg[256];
|
||||||
CAN_GetErrorText(Result, 0, strMsg);
|
CAN_GetErrorText(Result, 0, strMsg);
|
||||||
qDebug("%s",strMsg);
|
qDebug("%s",strMsg);
|
||||||
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Impossible d'initialiser un module USB PCAN. Erreur:%1").arg(strMsg),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Impossible d'initialiser un module USB PCAN. Erreur:%1").arg(strMsg),true,1,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
||||||
CANInterfaceOpened = false;
|
CANInterfaceOpened = false;
|
||||||
return RET_GENERAL_ERROR;
|
return RET_GENERAL_ERROR;
|
||||||
}
|
}
|
||||||
@ -81,7 +81,7 @@ int CPCANInterface::DeInit()
|
|||||||
{
|
{
|
||||||
char strMsg[256];
|
char strMsg[256];
|
||||||
CAN_GetErrorText(Result, 0, strMsg);
|
CAN_GetErrorText(Result, 0, strMsg);
|
||||||
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Impossible de déinitialiser un module USB PCAN.. Error:%1").arg(strMsg),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Impossible de déinitialiser un module USB PCAN.. Error:%1").arg(strMsg),true,1,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,8 +1,7 @@
|
|||||||
#include "SystemConfig.h"
|
#include "SystemConfig.h"
|
||||||
#include "GeneralMessagesLogDispatcher.h"
|
#include "GeneralMessagesLogDispatcher.h"
|
||||||
|
|
||||||
CSystemConfig::CSystemConfig() :
|
CSystemConfig::CSystemConfig()
|
||||||
mSaveLocalLogFile(false)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -31,13 +30,13 @@ int CSystemConfig::LoadConfig()
|
|||||||
if(ConfigFile->open(QIODevice::ReadOnly | QIODevice::Unbuffered) == false)
|
if(ConfigFile->open(QIODevice::ReadOnly | QIODevice::Unbuffered) == false)
|
||||||
{
|
{
|
||||||
qDebug("CSystemConfig: Failed to open config file in config loading");
|
qDebug("CSystemConfig: Failed to open config file in config loading");
|
||||||
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Échec de sauvegarde de la config système. Impossible d'ouvrir le fichier /Config/Station.cfg"),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Échec de sauvegarde de la config système. Impossible d'ouvrir le fichier /Config/Station.cfg"),true,1,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
||||||
return RET_GENERAL_ERROR;
|
return RET_GENERAL_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Échec de sauvegarde de la config système. Pointeur vers QFile invalide !!!"),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Échec de sauvegarde de la config système. Pointeur vers QFile invalide !!!"),true,1,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
||||||
qDebug("CSystemConfig: Invalid QFile pointer in config loading...");
|
qDebug("CSystemConfig: Invalid QFile pointer in config loading...");
|
||||||
return RET_GENERAL_ERROR;
|
return RET_GENERAL_ERROR;
|
||||||
}
|
}
|
||||||
@ -71,17 +70,18 @@ int CSystemConfig::LoadConfig()
|
|||||||
*InputStream >> mCloudLoggingParams;
|
*InputStream >> mCloudLoggingParams;
|
||||||
|
|
||||||
//Load general program settings
|
//Load general program settings
|
||||||
*InputStream >> mSaveLocalLogFile;
|
*InputStream >> mGeneralSystemParams;
|
||||||
|
|
||||||
//Load CAN Watchdog parameters
|
//Load CAN Watchdog parameters
|
||||||
*InputStream >> mCANWatchdogParams;
|
*InputStream >> mCANWatchdogParams;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ConfigFile->close();
|
ConfigFile->close();
|
||||||
delete ConfigFile;
|
delete ConfigFile;
|
||||||
delete InputStream;
|
delete InputStream;
|
||||||
|
|
||||||
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Configuration système chargée avec succès!"),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_SUCCESS_STATUS);
|
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Configuration système chargée avec succès!"),true,1,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_SUCCESS_STATUS);
|
||||||
return RET_OK;
|
return RET_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -94,13 +94,13 @@ int CSystemConfig::SaveConfig()
|
|||||||
{
|
{
|
||||||
if(ConfigFile->open(QIODevice::WriteOnly | QIODevice::Unbuffered) == false)
|
if(ConfigFile->open(QIODevice::WriteOnly | QIODevice::Unbuffered) == false)
|
||||||
{
|
{
|
||||||
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Échec de sauvegarde de la config système. Impossible d'ouvrir le fichier /Config/Station.cfg"),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Échec de sauvegarde de la config système. Impossible d'ouvrir le fichier /Config/Station.cfg"),true,1,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
||||||
return RET_GENERAL_ERROR;
|
return RET_GENERAL_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Échec de sauvegarde de la config système. Pointeur vers QFile invalide !!!"),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Échec de sauvegarde de la config système. Pointeur vers QFile invalide !!!"),true,1,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
||||||
return RET_GENERAL_ERROR;
|
return RET_GENERAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,7 +125,7 @@ int CSystemConfig::SaveConfig()
|
|||||||
*OutputStream << mCloudLoggingParams;
|
*OutputStream << mCloudLoggingParams;
|
||||||
|
|
||||||
//Save the general system parameters
|
//Save the general system parameters
|
||||||
*OutputStream << mSaveLocalLogFile;
|
*OutputStream << mGeneralSystemParams;
|
||||||
|
|
||||||
//Save the CAN Watchdog params
|
//Save the CAN Watchdog params
|
||||||
*OutputStream << mCANWatchdogParams;
|
*OutputStream << mCANWatchdogParams;
|
||||||
@ -136,7 +136,7 @@ int CSystemConfig::SaveConfig()
|
|||||||
delete ConfigFile;
|
delete ConfigFile;
|
||||||
delete OutputStream;
|
delete OutputStream;
|
||||||
|
|
||||||
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Configuration système sauvegardée avec succès."),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_SUCCESS_STATUS);
|
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Configuration système sauvegardée avec succès."),true,3,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_SUCCESS_STATUS);
|
||||||
|
|
||||||
return RET_OK;
|
return RET_OK;
|
||||||
}
|
}
|
||||||
@ -177,6 +177,12 @@ CCANWatchdogConfig *CSystemConfig::GetCANWatchdogConfig()
|
|||||||
return &mCANWatchdogParams;
|
return &mCANWatchdogParams;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CGeneralSystemParams *CSystemConfig::GetGeneralSystemSettings()
|
||||||
|
{
|
||||||
|
return &mGeneralSystemParams;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int CSystemConfig::SetCANWatchdogConfig(CCANWatchdogConfig *Config)
|
int CSystemConfig::SetCANWatchdogConfig(CCANWatchdogConfig *Config)
|
||||||
{
|
{
|
||||||
if(Config == 0)
|
if(Config == 0)
|
||||||
@ -193,3 +199,12 @@ int CSystemConfig::SetCloudParams(CCloudParams *CloudParams)
|
|||||||
mCloudLoggingParams = *CloudParams;
|
mCloudLoggingParams = *CloudParams;
|
||||||
return RET_OK;
|
return RET_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int CSystemConfig::SetGeneralSystemParams(CGeneralSystemParams *GeneralParams)
|
||||||
|
{
|
||||||
|
if(GeneralParams == 0)
|
||||||
|
return RET_GENERAL_ERROR;
|
||||||
|
|
||||||
|
mGeneralSystemParams = *GeneralParams;
|
||||||
|
return RET_OK;
|
||||||
|
}
|
||||||
|
|||||||
@ -8,6 +8,7 @@
|
|||||||
#include "CANDeviceConfig.h"
|
#include "CANDeviceConfig.h"
|
||||||
#include "CloudParams.h"
|
#include "CloudParams.h"
|
||||||
#include "CANWatchdogConfig.h"
|
#include "CANWatchdogConfig.h"
|
||||||
|
#include "GeneralSystemParams.h"
|
||||||
|
|
||||||
#define OTARCIK_CURRENT_CONFIG_FILE_VERSION 0x01
|
#define OTARCIK_CURRENT_CONFIG_FILE_VERSION 0x01
|
||||||
#define OTARCIK_CONFIG_FILE_MAGIC_NBR 0xDEADBEEF
|
#define OTARCIK_CONFIG_FILE_MAGIC_NBR 0xDEADBEEF
|
||||||
@ -28,6 +29,8 @@ public:
|
|||||||
|
|
||||||
CCloudParams *GetCloudParams();
|
CCloudParams *GetCloudParams();
|
||||||
int SetCloudParams(CCloudParams *CloudParams);
|
int SetCloudParams(CCloudParams *CloudParams);
|
||||||
|
CGeneralSystemParams *GetGeneralSystemSettings();
|
||||||
|
int SetGeneralSystemParams(CGeneralSystemParams *GeneralParams);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -39,13 +42,15 @@ public:
|
|||||||
CCloudParams mCloudLoggingParams;
|
CCloudParams mCloudLoggingParams;
|
||||||
|
|
||||||
//Misc general system settings
|
//Misc general system settings
|
||||||
bool mSaveLocalLogFile;
|
CGeneralSystemParams mGeneralSystemParams;
|
||||||
|
|
||||||
//CAN Module watchdog settings
|
//CAN Module watchdog settings
|
||||||
CCANWatchdogConfig mCANWatchdogParams;
|
CCANWatchdogConfig mCANWatchdogParams;
|
||||||
CCANWatchdogConfig *GetCANWatchdogConfig();
|
CCANWatchdogConfig *GetCANWatchdogConfig();
|
||||||
int SetCANWatchdogConfig(CCANWatchdogConfig *Config);
|
int SetCANWatchdogConfig(CCANWatchdogConfig *Config);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -5,6 +5,9 @@
|
|||||||
|
|
||||||
#define GENERAL_MESSAGES_MAX_LOG_LINES 5000 //The number of lines of general status log we keep in the general status window (avoids fucking up because you know.... RAM)
|
#define GENERAL_MESSAGES_MAX_LOG_LINES 5000 //The number of lines of general status log we keep in the general status window (avoids fucking up because you know.... RAM)
|
||||||
#define MQTT_CLIENT_RECONNECT_TIMEOUT 5000 //Time in ms between reconnect attemps to MQTT broker when connection is lost
|
#define MQTT_CLIENT_RECONNECT_TIMEOUT 5000 //Time in ms between reconnect attemps to MQTT broker when connection is lost
|
||||||
|
|
||||||
|
//#define USE_TOPIC_PREFIX
|
||||||
|
|
||||||
enum eOtarcikGeneralReturns
|
enum eOtarcikGeneralReturns
|
||||||
{
|
{
|
||||||
RET_OK = 0,
|
RET_OK = 0,
|
||||||
|
|||||||
Binary file not shown.
@ -21,6 +21,7 @@ debug/MQTTClientWrapper.o
|
|||||||
debug/CCANWatchdogSettingsPage.o
|
debug/CCANWatchdogSettingsPage.o
|
||||||
debug/CANWatchdogConfig.o
|
debug/CANWatchdogConfig.o
|
||||||
debug/CANWatchdog.o
|
debug/CANWatchdog.o
|
||||||
|
debug/GeneralSystemParams.o
|
||||||
debug/moc_MainWindow.o
|
debug/moc_MainWindow.o
|
||||||
debug/moc_PCANInterface.o
|
debug/moc_PCANInterface.o
|
||||||
debug/moc_OtarcikCan.o
|
debug/moc_OtarcikCan.o
|
||||||
|
|||||||
@ -21,6 +21,7 @@ release/MQTTClientWrapper.o
|
|||||||
release/CCANWatchdogSettingsPage.o
|
release/CCANWatchdogSettingsPage.o
|
||||||
release/CANWatchdogConfig.o
|
release/CANWatchdogConfig.o
|
||||||
release/CANWatchdog.o
|
release/CANWatchdog.o
|
||||||
|
release/GeneralSystemParams.o
|
||||||
release/moc_MainWindow.o
|
release/moc_MainWindow.o
|
||||||
release/moc_PCANInterface.o
|
release/moc_PCANInterface.o
|
||||||
release/moc_OtarcikCan.o
|
release/moc_OtarcikCan.o
|
||||||
|
|||||||
Binary file not shown.
@ -11,7 +11,6 @@
|
|||||||
|
|
||||||
#include <QtCore/QVariant>
|
#include <QtCore/QVariant>
|
||||||
#include <QtWidgets/QApplication>
|
#include <QtWidgets/QApplication>
|
||||||
#include <QtWidgets/QCheckBox>
|
|
||||||
#include <QtWidgets/QGroupBox>
|
#include <QtWidgets/QGroupBox>
|
||||||
#include <QtWidgets/QLabel>
|
#include <QtWidgets/QLabel>
|
||||||
#include <QtWidgets/QLineEdit>
|
#include <QtWidgets/QLineEdit>
|
||||||
@ -36,14 +35,19 @@ public:
|
|||||||
QLineEdit *mCloudMQTTPasswordEdit;
|
QLineEdit *mCloudMQTTPasswordEdit;
|
||||||
QLabel *mCloudMQTTTopicPrefixLbl;
|
QLabel *mCloudMQTTTopicPrefixLbl;
|
||||||
QLineEdit *mCloudMQTTTopicPrefixEdit;
|
QLineEdit *mCloudMQTTTopicPrefixEdit;
|
||||||
QLabel *mCloudMQTTClientID;
|
QLabel *mCloudMQTTClientIDLbl;
|
||||||
QLineEdit *mCloudMQTTTopicPrefixEdit_2;
|
QLineEdit *mCloudMQTTClientID;
|
||||||
QLabel *mCloudMQTTRefreshRateLbl;
|
QLabel *mCloudMQTTRefreshRateLbl;
|
||||||
QSpinBox *mCloudMQTTRefreshRateSpinBx;
|
QSpinBox *mCloudMQTTRefreshRateSpinBx;
|
||||||
QLabel *mGeneralLogParamsLbl;
|
QLabel *mGeneralLogParamsLbl;
|
||||||
QCheckBox *mSaveLocalLogFileChkBx;
|
|
||||||
QPushButton *mChangeParamsBtn;
|
QPushButton *mChangeParamsBtn;
|
||||||
QPushButton *mCancelBtn;
|
QPushButton *mCancelBtn;
|
||||||
|
QGroupBox *groupBox_2;
|
||||||
|
QSpinBox *mLogFileVerbositySpinBx;
|
||||||
|
QSpinBox *mLogZoneVerbositySpinBx;
|
||||||
|
QLabel *label;
|
||||||
|
QLabel *label_2;
|
||||||
|
QLabel *label_3;
|
||||||
|
|
||||||
void setupUi(QWidget *CLoggingSettingsPage)
|
void setupUi(QWidget *CLoggingSettingsPage)
|
||||||
{
|
{
|
||||||
@ -103,14 +107,14 @@ public:
|
|||||||
mCloudMQTTTopicPrefixEdit = new QLineEdit(groupBox);
|
mCloudMQTTTopicPrefixEdit = new QLineEdit(groupBox);
|
||||||
mCloudMQTTTopicPrefixEdit->setObjectName(QString::fromUtf8("mCloudMQTTTopicPrefixEdit"));
|
mCloudMQTTTopicPrefixEdit->setObjectName(QString::fromUtf8("mCloudMQTTTopicPrefixEdit"));
|
||||||
mCloudMQTTTopicPrefixEdit->setGeometry(QRect(90, 160, 321, 20));
|
mCloudMQTTTopicPrefixEdit->setGeometry(QRect(90, 160, 321, 20));
|
||||||
mCloudMQTTClientID = new QLabel(groupBox);
|
mCloudMQTTClientIDLbl = new QLabel(groupBox);
|
||||||
|
mCloudMQTTClientIDLbl->setObjectName(QString::fromUtf8("mCloudMQTTClientIDLbl"));
|
||||||
|
mCloudMQTTClientIDLbl->setGeometry(QRect(10, 190, 71, 20));
|
||||||
|
mCloudMQTTClientIDLbl->setFont(font1);
|
||||||
|
mCloudMQTTClientIDLbl->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
|
||||||
|
mCloudMQTTClientID = new QLineEdit(groupBox);
|
||||||
mCloudMQTTClientID->setObjectName(QString::fromUtf8("mCloudMQTTClientID"));
|
mCloudMQTTClientID->setObjectName(QString::fromUtf8("mCloudMQTTClientID"));
|
||||||
mCloudMQTTClientID->setGeometry(QRect(10, 190, 71, 20));
|
mCloudMQTTClientID->setGeometry(QRect(90, 190, 321, 20));
|
||||||
mCloudMQTTClientID->setFont(font1);
|
|
||||||
mCloudMQTTClientID->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
|
|
||||||
mCloudMQTTTopicPrefixEdit_2 = new QLineEdit(groupBox);
|
|
||||||
mCloudMQTTTopicPrefixEdit_2->setObjectName(QString::fromUtf8("mCloudMQTTTopicPrefixEdit_2"));
|
|
||||||
mCloudMQTTTopicPrefixEdit_2->setGeometry(QRect(90, 190, 321, 20));
|
|
||||||
mCloudMQTTRefreshRateLbl = new QLabel(groupBox);
|
mCloudMQTTRefreshRateLbl = new QLabel(groupBox);
|
||||||
mCloudMQTTRefreshRateLbl->setObjectName(QString::fromUtf8("mCloudMQTTRefreshRateLbl"));
|
mCloudMQTTRefreshRateLbl->setObjectName(QString::fromUtf8("mCloudMQTTRefreshRateLbl"));
|
||||||
mCloudMQTTRefreshRateLbl->setGeometry(QRect(10, 220, 181, 20));
|
mCloudMQTTRefreshRateLbl->setGeometry(QRect(10, 220, 181, 20));
|
||||||
@ -124,17 +128,43 @@ public:
|
|||||||
mCloudMQTTRefreshRateSpinBx->setSingleStep(1);
|
mCloudMQTTRefreshRateSpinBx->setSingleStep(1);
|
||||||
mGeneralLogParamsLbl = new QLabel(CLoggingSettingsPage);
|
mGeneralLogParamsLbl = new QLabel(CLoggingSettingsPage);
|
||||||
mGeneralLogParamsLbl->setObjectName(QString::fromUtf8("mGeneralLogParamsLbl"));
|
mGeneralLogParamsLbl->setObjectName(QString::fromUtf8("mGeneralLogParamsLbl"));
|
||||||
mGeneralLogParamsLbl->setGeometry(QRect(740, 40, 181, 31));
|
mGeneralLogParamsLbl->setGeometry(QRect(590, 30, 181, 31));
|
||||||
mGeneralLogParamsLbl->setFont(font);
|
mGeneralLogParamsLbl->setFont(font);
|
||||||
mSaveLocalLogFileChkBx = new QCheckBox(CLoggingSettingsPage);
|
|
||||||
mSaveLocalLogFileChkBx->setObjectName(QString::fromUtf8("mSaveLocalLogFileChkBx"));
|
|
||||||
mSaveLocalLogFileChkBx->setGeometry(QRect(740, 80, 261, 20));
|
|
||||||
mChangeParamsBtn = new QPushButton(CLoggingSettingsPage);
|
mChangeParamsBtn = new QPushButton(CLoggingSettingsPage);
|
||||||
mChangeParamsBtn->setObjectName(QString::fromUtf8("mChangeParamsBtn"));
|
mChangeParamsBtn->setObjectName(QString::fromUtf8("mChangeParamsBtn"));
|
||||||
mChangeParamsBtn->setGeometry(QRect(370, 340, 80, 22));
|
mChangeParamsBtn->setGeometry(QRect(370, 340, 80, 22));
|
||||||
mCancelBtn = new QPushButton(CLoggingSettingsPage);
|
mCancelBtn = new QPushButton(CLoggingSettingsPage);
|
||||||
mCancelBtn->setObjectName(QString::fromUtf8("mCancelBtn"));
|
mCancelBtn->setObjectName(QString::fromUtf8("mCancelBtn"));
|
||||||
mCancelBtn->setGeometry(QRect(260, 340, 80, 22));
|
mCancelBtn->setGeometry(QRect(260, 340, 80, 22));
|
||||||
|
groupBox_2 = new QGroupBox(CLoggingSettingsPage);
|
||||||
|
groupBox_2->setObjectName(QString::fromUtf8("groupBox_2"));
|
||||||
|
groupBox_2->setGeometry(QRect(590, 90, 351, 121));
|
||||||
|
mLogFileVerbositySpinBx = new QSpinBox(groupBox_2);
|
||||||
|
mLogFileVerbositySpinBx->setObjectName(QString::fromUtf8("mLogFileVerbositySpinBx"));
|
||||||
|
mLogFileVerbositySpinBx->setGeometry(QRect(170, 30, 51, 22));
|
||||||
|
mLogFileVerbositySpinBx->setMinimum(0);
|
||||||
|
mLogFileVerbositySpinBx->setMaximum(3);
|
||||||
|
mLogZoneVerbositySpinBx = new QSpinBox(groupBox_2);
|
||||||
|
mLogZoneVerbositySpinBx->setObjectName(QString::fromUtf8("mLogZoneVerbositySpinBx"));
|
||||||
|
mLogZoneVerbositySpinBx->setGeometry(QRect(220, 70, 43, 22));
|
||||||
|
mLogZoneVerbositySpinBx->setMinimum(1);
|
||||||
|
mLogZoneVerbositySpinBx->setMaximum(3);
|
||||||
|
mLogZoneVerbositySpinBx->setSingleStep(1);
|
||||||
|
mLogZoneVerbositySpinBx->setValue(1);
|
||||||
|
label = new QLabel(groupBox_2);
|
||||||
|
label->setObjectName(QString::fromUtf8("label"));
|
||||||
|
label->setGeometry(QRect(10, 30, 161, 21));
|
||||||
|
QFont font2;
|
||||||
|
font2.setPointSize(11);
|
||||||
|
label->setFont(font2);
|
||||||
|
label_2 = new QLabel(groupBox_2);
|
||||||
|
label_2->setObjectName(QString::fromUtf8("label_2"));
|
||||||
|
label_2->setGeometry(QRect(10, 70, 211, 21));
|
||||||
|
label_2->setFont(font2);
|
||||||
|
label_3 = new QLabel(groupBox_2);
|
||||||
|
label_3->setObjectName(QString::fromUtf8("label_3"));
|
||||||
|
label_3->setGeometry(QRect(230, 30, 81, 20));
|
||||||
|
label_3->setFont(font1);
|
||||||
|
|
||||||
retranslateUi(CLoggingSettingsPage);
|
retranslateUi(CLoggingSettingsPage);
|
||||||
|
|
||||||
@ -151,12 +181,15 @@ public:
|
|||||||
mCloudMQTTUsernameLbl->setText(QCoreApplication::translate("CLoggingSettingsPage", "Username", nullptr));
|
mCloudMQTTUsernameLbl->setText(QCoreApplication::translate("CLoggingSettingsPage", "Username", nullptr));
|
||||||
mCloudMQTTPasswordLbl->setText(QCoreApplication::translate("CLoggingSettingsPage", "Password", nullptr));
|
mCloudMQTTPasswordLbl->setText(QCoreApplication::translate("CLoggingSettingsPage", "Password", nullptr));
|
||||||
mCloudMQTTTopicPrefixLbl->setText(QCoreApplication::translate("CLoggingSettingsPage", "Topic Prefix", nullptr));
|
mCloudMQTTTopicPrefixLbl->setText(QCoreApplication::translate("CLoggingSettingsPage", "Topic Prefix", nullptr));
|
||||||
mCloudMQTTClientID->setText(QCoreApplication::translate("CLoggingSettingsPage", "Client ID", nullptr));
|
mCloudMQTTClientIDLbl->setText(QCoreApplication::translate("CLoggingSettingsPage", "Client ID", nullptr));
|
||||||
mCloudMQTTRefreshRateLbl->setText(QCoreApplication::translate("CLoggingSettingsPage", "Taux de rafraichissement (ms):", nullptr));
|
mCloudMQTTRefreshRateLbl->setText(QCoreApplication::translate("CLoggingSettingsPage", "Taux de rafraichissement (ms):", nullptr));
|
||||||
mGeneralLogParamsLbl->setText(QCoreApplication::translate("CLoggingSettingsPage", "Param\303\250tres g\303\251n\303\251raux", nullptr));
|
mGeneralLogParamsLbl->setText(QCoreApplication::translate("CLoggingSettingsPage", "Param\303\250tres g\303\251n\303\251raux", nullptr));
|
||||||
mSaveLocalLogFileChkBx->setText(QCoreApplication::translate("CLoggingSettingsPage", "Sauvegarder fichier log local", nullptr));
|
|
||||||
mChangeParamsBtn->setText(QCoreApplication::translate("CLoggingSettingsPage", "Modifier", nullptr));
|
mChangeParamsBtn->setText(QCoreApplication::translate("CLoggingSettingsPage", "Modifier", nullptr));
|
||||||
mCancelBtn->setText(QCoreApplication::translate("CLoggingSettingsPage", "Annuler", nullptr));
|
mCancelBtn->setText(QCoreApplication::translate("CLoggingSettingsPage", "Annuler", nullptr));
|
||||||
|
groupBox_2->setTitle(QCoreApplication::translate("CLoggingSettingsPage", "Logging (3 = tr\303\250s d\303\251taill\303\251)", nullptr));
|
||||||
|
label->setText(QCoreApplication::translate("CLoggingSettingsPage", "Verbosit\303\251 du fichier log", nullptr));
|
||||||
|
label_2->setText(QCoreApplication::translate("CLoggingSettingsPage", "Verbosit\303\251 de la page de statut", nullptr));
|
||||||
|
label_3->setText(QCoreApplication::translate("CLoggingSettingsPage", "0 = d\303\251sactiv\303\251", nullptr));
|
||||||
} // retranslateUi
|
} // retranslateUi
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
5
PWD.txt
5
PWD.txt
@ -5,4 +5,7 @@ Router Ubiquiti: user:yultek pwd:Evinrude30
|
|||||||
Windows PC Axiomtek: user yultek pwd:Otarcik!
|
Windows PC Axiomtek: user yultek pwd:Otarcik!
|
||||||
Pet name: otarcik
|
Pet name: otarcik
|
||||||
City born: Chambly
|
City born: Chambly
|
||||||
childhood nickname : otarcik
|
childhood nickname : otarcik
|
||||||
|
EMQX
|
||||||
|
Login: YULTekDev pwd: PaceST25!
|
||||||
|
Login: JFMDev pwd:PaceST25!
|
||||||
3
TODO.txt
3
TODO.txt
@ -5,7 +5,7 @@ x Ajouter la taille du quue du module CAN dans l'onglet statut
|
|||||||
- Ajouter timeout de comm avec la puck CAN
|
- Ajouter timeout de comm avec la puck CAN
|
||||||
- Corriger le bug de sélection du data quand il y a plus qu'une puck
|
- Corriger le bug de sélection du data quand il y a plus qu'une puck
|
||||||
x Implémenter une liste de messages MQTT non envoyés pour ne pas perdre de messages provenant du CAN
|
x Implémenter une liste de messages MQTT non envoyés pour ne pas perdre de messages provenant du CAN
|
||||||
- Ajouter la gestion du Client ID MQTT
|
x Ajouter la gestion du Client ID MQTT
|
||||||
- Implémenter le watchdog CAN
|
- Implémenter le watchdog CAN
|
||||||
- Valider pourquoi le MQTT ne se connecte pas au reboot
|
- Valider pourquoi le MQTT ne se connecte pas au reboot
|
||||||
x Valider pourquoi le MQTT ne se reconnecte pas après une déconnexion
|
x Valider pourquoi le MQTT ne se reconnecte pas après une déconnexion
|
||||||
@ -14,3 +14,4 @@ x Valider pourquoi le MQTT ne se reconnecte pas après une déconnexion
|
|||||||
- Ajouter un affichage des payloads JSON
|
- Ajouter un affichage des payloads JSON
|
||||||
- Contrôler le niveau de log
|
- Contrôler le niveau de log
|
||||||
- Assurer de ne pas avoir à redémarrer le soft quand on change un paramètre CAN (CAN data repopulate)
|
- Assurer de ne pas avoir à redémarrer le soft quand on change un paramètre CAN (CAN data repopulate)
|
||||||
|
- Implémenter le CAN Watchdog
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user