Watchdog avec date/time et reporting fonctionnel.

This commit is contained in:
jfmartel 2024-03-09 11:54:03 -05:00
parent 1f3a7dd270
commit ff6ae02ed5
19 changed files with 372 additions and 118 deletions

Binary file not shown.

View File

@ -9594,3 +9594,122 @@ Démarrage du logiciel Otarcik CAN le 2024-03-05 à 16:27:35
2024-03-05 16:27:35 Démarrage du Watchdog CAN... 2024-03-05 16:27:35 Démarrage du Watchdog CAN...
2024-03-05 16:27:35 Watchdog CAN initialisé pour le module sur le channel 1 2024-03-05 16:27:35 Watchdog CAN initialisé pour le module sur le channel 1
2024-03-05 16:27:35 Dispositif [MasterCAN] initialisé avec succès! 2024-03-05 16:27:35 Dispositif [MasterCAN] initialisé avec succès!
********************************************************************
Démarrage du logiciel Otarcik CAN le 2024-03-09 à 11:18:08
********************************************************************
2024-03-09 11:18:08 Librairie Axiomtek chargée avec succès
2024-03-09 11:18:08 Watchdog CPU arrêté
2024-03-09 11:18:08 Chargement de la configuration système...
2024-03-09 11:18:08 Configuration système chargée avec succès!
2024-03-09 11:18:08 Initialisation du dispositif [MasterCAN]
2024-03-09 11:18:08 Démarrage d'un module CAN...
2024-03-09 11:18:08 Module PCAN trouvé à l'adresse 1 avec le handle 0x51
2024-03-09 11:18:08 Initialisation d'un module PCAN. Handle:0x51, Baudrate:28
2024-03-09 11:18:08 Module PCAN USB initialisé avec succès
2024-03-09 11:18:08 Chargement de la base de données D:/Main/Dev/YULTek/Otarcik_CAN/PCtelemetrie20240118.dbc
2024-03-09 11:18:08 Base de données chargée avec succès. Flags: 0x0
2024-03-09 11:18:08 Dispositif [MasterCAN] initialisé avec succès!
********************************************************************
Démarrage du logiciel Otarcik CAN le 2024-03-09 à 11:21:09
********************************************************************
2024-03-09 11:21:09 Librairie Axiomtek chargée avec succès
2024-03-09 11:21:09 Watchdog CPU arrêté
2024-03-09 11:21:09 Chargement de la configuration système...
2024-03-09 11:21:09 Configuration système chargée avec succès!
2024-03-09 11:21:09 Initialisation du dispositif [MasterCAN]
2024-03-09 11:21:09 Démarrage d'un module CAN...
2024-03-09 11:21:09 Module PCAN trouvé à l'adresse 1 avec le handle 0x51
2024-03-09 11:21:09 Initialisation d'un module PCAN. Handle:0x51, Baudrate:28
2024-03-09 11:21:09 Module PCAN USB initialisé avec succès
2024-03-09 11:21:09 Chargement de la base de données D:/Main/Dev/YULTek/Otarcik_CAN/PCtelemetrie20240118.dbc
2024-03-09 11:21:09 Base de données chargée avec succès. Flags: 0x0
2024-03-09 11:21:09 Dispositif [MasterCAN] initialisé avec succès!
********************************************************************
Démarrage du logiciel Otarcik CAN le 2024-03-09 à 11:34:27
********************************************************************
2024-03-09 11:34:27 Librairie Axiomtek chargée avec succès
2024-03-09 11:34:27 Watchdog CPU arrêté
2024-03-09 11:34:27 Chargement de la configuration système...
2024-03-09 11:34:27 Configuration système chargée avec succès!
2024-03-09 11:34:27 Initialisation du dispositif [MasterCAN]
2024-03-09 11:34:27 Démarrage d'un module CAN...
2024-03-09 11:34:27 Module PCAN trouvé à l'adresse 1 avec le handle 0x51
2024-03-09 11:34:27 Initialisation d'un module PCAN. Handle:0x51, Baudrate:28
2024-03-09 11:34:27 Module PCAN USB initialisé avec succès
2024-03-09 11:34:27 Chargement de la base de données D:/Main/Dev/YULTek/Otarcik_CAN/PCtelemetrie20240118.dbc
2024-03-09 11:34:27 Base de données chargée avec succès. Flags: 0x0
2024-03-09 11:34:27 Dispositif [MasterCAN] initialisé avec succès!
********************************************************************
Démarrage du logiciel Otarcik CAN le 2024-03-09 à 11:44:35
********************************************************************
2024-03-09 11:44:35 Librairie Axiomtek chargée avec succès
2024-03-09 11:44:35 Watchdog CPU arrêté
2024-03-09 11:44:35 Chargement de la configuration système...
2024-03-09 11:44:35 Configuration système chargée avec succès!
2024-03-09 11:44:35 Initialisation du dispositif [MasterCAN]
2024-03-09 11:44:35 Démarrage d'un module CAN...
2024-03-09 11:44:35 Module PCAN trouvé à l'adresse 1 avec le handle 0x51
2024-03-09 11:44:35 Initialisation d'un module PCAN. Handle:0x51, Baudrate:28
2024-03-09 11:44:35 Module PCAN USB initialisé avec succès
2024-03-09 11:44:35 Chargement de la base de données D:/Main/Dev/YULTek/Otarcik_CAN/PCtelemetrie20240118.dbc
2024-03-09 11:44:35 Base de données chargée avec succès. Flags: 0x0
2024-03-09 11:44:35 Dispositif [MasterCAN] initialisé avec succès!
********************************************************************
Démarrage du logiciel Otarcik CAN le 2024-03-09 à 11:45:34
********************************************************************
2024-03-09 11:45:34 Librairie Axiomtek chargée avec succès
2024-03-09 11:45:34 Watchdog CPU arrêté
2024-03-09 11:45:34 Chargement de la configuration système...
2024-03-09 11:45:34 Configuration système chargée avec succès!
2024-03-09 11:45:34 Initialisation du dispositif [MasterCAN]
2024-03-09 11:45:34 Démarrage d'un module CAN...
2024-03-09 11:45:34 Module PCAN trouvé à l'adresse 1 avec le handle 0x51
2024-03-09 11:45:34 Initialisation d'un module PCAN. Handle:0x51, Baudrate:28
2024-03-09 11:45:34 Module PCAN USB initialisé avec succès
2024-03-09 11:45:34 Chargement de la base de données D:/Main/Dev/YULTek/Otarcik_CAN/PCtelemetrie20240118.dbc
2024-03-09 11:45:34 Base de données chargée avec succès. Flags: 0x0
2024-03-09 11:45:34 Dispositif [MasterCAN] initialisé avec succès!
********************************************************************
Démarrage du logiciel Otarcik CAN le 2024-03-09 à 11:47:24
********************************************************************
2024-03-09 11:47:24 Librairie Axiomtek chargée avec succès
2024-03-09 11:47:24 Watchdog CPU arrêté
2024-03-09 11:47:24 Chargement de la configuration système...
2024-03-09 11:47:24 Configuration système chargée avec succès!
2024-03-09 11:47:24 Initialisation du dispositif [MasterCAN]
2024-03-09 11:47:24 Démarrage d'un module CAN...
2024-03-09 11:47:24 Module PCAN trouvé à l'adresse 1 avec le handle 0x51
2024-03-09 11:47:24 Initialisation d'un module PCAN. Handle:0x51, Baudrate:28
2024-03-09 11:47:24 Module PCAN USB initialisé avec succès
2024-03-09 11:47:24 Chargement de la base de données D:/Main/Dev/YULTek/Otarcik_CAN/PCtelemetrie20240118.dbc
2024-03-09 11:47:24 Base de données chargée avec succès. Flags: 0x0
2024-03-09 11:47:24 Dispositif [MasterCAN] initialisé avec succès!
********************************************************************
Démarrage du logiciel Otarcik CAN le 2024-03-09 à 11:53:09
********************************************************************
2024-03-09 11:53:09 Librairie Axiomtek chargée avec succès
2024-03-09 11:53:09 Watchdog CPU arrêté
2024-03-09 11:53:09 Chargement de la configuration système...
2024-03-09 11:53:09 Configuration système chargée avec succès!
2024-03-09 11:53:09 Initialisation du dispositif [MasterCAN]
2024-03-09 11:53:09 Démarrage d'un module CAN...
2024-03-09 11:53:09 Module PCAN trouvé à l'adresse 1 avec le handle 0x51
2024-03-09 11:53:09 Initialisation d'un module PCAN. Handle:0x51, Baudrate:28
2024-03-09 11:53:09 Module PCAN USB initialisé avec succès
2024-03-09 11:53:09 Chargement de la base de données D:/Main/Dev/YULTek/Otarcik_CAN/PCtelemetrie20240118.dbc
2024-03-09 11:53:09 Base de données chargée avec succès. Flags: 0x0
2024-03-09 11:53:09 Dispositif [MasterCAN] initialisé avec succès!

View File

@ -123,8 +123,16 @@
[START_SIGNALS] batt1_high_cell_t,8,1,0,I,127,-128,1,0.000000,1.000000,°C, [START_SIGNALS] batt1_high_cell_t,8,1,0,I,127,-128,1,0.000000,1.000000,°C,
[END_MSG] [END_MSG]
[START_MSG] PC_dateTime,768,8,1,1,S [START_MSG] PC_dateTime,768,8,9,1,S
[START_SIGNALS] internetSeemsDead,1,5,0,B,1,0,1,0.000000,1.000000,, [START_SIGNALS] internetSeemsDead,1,5,0,B,1,0,1,0.000000,1.000000,,
[START_SIGNALS] MQTTSeemsDead,1,5,1,B,1,0,1,0.000000,1.000000,,
[START_SIGNALS] LANDevice1SeemsDead,1,5,2,B,1,0,1,0.000000,1.000000,,
[START_SIGNALS] LANDevice2SeemsDead,1,5,3,B,1,0,1,0.000000,1.000000,,
[START_SIGNALS] LANDevice3SeemsDead,1,5,4,B,1,0,1,0.000000,1.000000,,
[START_SIGNALS] LANDevice4SeemsDead,1,5,5,B,1,0,1,0.000000,1.000000,,
[START_SIGNALS] LANDevice5SeemsDead,1,5,6,B,1,0,1,0.000000,1.000000,,
[START_SIGNALS] PC_Time,16,3,0,U,65535,0,1,0.000000,0.000100,,
[START_SIGNALS] PC_Date,16,1,0,U,65535,0,1,0.000000,1.000000,d,
[END_MSG] [END_MSG]
[START_MSG] WDT_state,512,8,0,1,S [START_MSG] WDT_state,512,8,0,1,S

View File

@ -93,17 +93,6 @@ int CCANDevice::Init()
return RET_GENERAL_ERROR; return RET_GENERAL_ERROR;
} }
if(mDeviceConfigInfo.mDeviceWatchdogActivated == true)
{
if(mCANWatchdog.Init(mCANDriverIF,mDeviceHandle,mDeviceConfigInfo.mWatchdogPeriod,mDeviceConfigInfo.mWatchdogCANMsgID) != RET_OK)
{
CGeneralMessagesLogDispatcher::instance()->AddLogMessage("Impossible d'initialiser un watchdog CAN","CCANDevice",true,1,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
}
mCANWatchdog.StartWDT();
QString Log = QString("Watchdog CAN initialisé pour le module sur le channel %1").arg(mDeviceConfigInfo.mCANDeviceID);
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(Log,"CCANDevice",true,1,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_SUCCESS_STATUS);
}
mIsCANInitialized = true; mIsCANInitialized = true;
@ -120,6 +109,25 @@ int CCANDevice::Init()
return RET_OK; return RET_OK;
} }
int CCANDevice::StartWatchdog(CDeviceDetectionConfig *DeviceMonitorConfig)
{
if(mDeviceConfigInfo.mDeviceWatchdogActivated == true)
{
if(mCANWatchdog.Init(mCANDriverIF,mDeviceHandle,mDeviceConfigInfo.mWatchdogPeriod,DeviceMonitorConfig) != RET_OK)
{
CGeneralMessagesLogDispatcher::instance()->AddLogMessage("Impossible d'initialiser un watchdog CAN","CCANDevice",true,1,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
}
else
{
mCANWatchdog.StartWDT();
QString Log = QString("Watchdog CAN initialisé pour le module sur le channel %1").arg(mDeviceConfigInfo.mCANDeviceID);
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(Log,"CCANDevice",true,1,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_SUCCESS_STATUS);
}
}
}
int CCANDevice::Init(QString DatabaseFileName, TPCANHandle CANDeviceID, TPCANBaudrate CANDeviceBaudRate, QString DevDescription, QString DeviceName, unsigned int DevicePollPeriod) int CCANDevice::Init(QString DatabaseFileName, TPCANHandle CANDeviceID, TPCANBaudrate CANDeviceBaudRate, QString DevDescription, QString DeviceName, unsigned int DevicePollPeriod)
{ {
mDeviceConfigInfo.mCANDeviceID = CANDeviceID; mDeviceConfigInfo.mCANDeviceID = CANDeviceID;

View File

@ -13,10 +13,11 @@
#include "CANDataLogger.h" #include "CANDataLogger.h"
#include "MQTTMessage.h" #include "MQTTMessage.h"
#include "CANWatchdog.h" #include "CANWatchdog.h"
//#include "MQTTClientWrapper.h"
class CMQTTClientWrapper; class CMQTTClientWrapper;
class COtarcikCan; class COtarcikCan;
class CDeviceDetectionConfig;
class CCANDevice : public QObject class CCANDevice : public QObject
{ {
@ -28,6 +29,7 @@ public:
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();
int StartWatchdog(CDeviceDetectionConfig *DeviceMonitorConfig);
QList<CCANMessage*> *GetCANMessagesList(){return &mMessageList;} QList<CCANMessage*> *GetCANMessagesList(){return &mMessageList;}
public: public:

View File

@ -23,6 +23,7 @@ public:
unsigned int mWatchdogPeriod; unsigned int mWatchdogPeriod;
CCANDeviceConfig &operator=(const CCANDeviceConfig &source); CCANDeviceConfig &operator=(const CCANDeviceConfig &source);
}; };
QDataStream &operator<<(QDataStream &out, const CCANDeviceConfig &source); QDataStream &operator<<(QDataStream &out, const CCANDeviceConfig &source);

View File

@ -4,21 +4,29 @@
#include <QDate> #include <QDate>
#include <QTime> #include <QTime>
#include <QFloat16> #include <QFloat16>
#include "MQTTClientWrapper.h"
#include "InternetMonitor.h"
#include "LANDevicesPresenceMonitor.h"
#include "DeviceDetectionConfig.h"
CCANWatchdog::CCANWatchdog() CCANWatchdog::CCANWatchdog()
{ {
mCANDriverIF = new CPCANInterface; //mCANDriverIF = new CPCANInterface;
mIsCANInitialized = false; mIsCANInitialized = false;
mWatchdogTimer = new QTimer; mWatchdogTimer = new QTimer;
mWatchdogTimer->setSingleShot(false); mWatchdogTimer->setSingleShot(false);
mCANDriverIF = 0; mCANDriverIF = 0;
mWDTInitialized = false; mWDTInitialized = false;
// mMQTTPresenceMonitor = 0;
// mLANDevicesMonitor = 0;
// mInternetMonitor = 0;
mDevicesMonitorConfig = 0;
connect(mWatchdogTimer,&QTimer::timeout,this,&CCANWatchdog::WatchdogTimeoutTimerExpired); connect(mWatchdogTimer,&QTimer::timeout,this,&CCANWatchdog::WatchdogTimeoutTimerExpired);
} }
int CCANWatchdog::Init(CPCANInterface *CANDriverIF, TPCANHandle CANDeviceHandle, unsigned int WDTPeriod, unsigned int CANMsgID) int CCANWatchdog::Init(CPCANInterface *CANDriverIF, TPCANHandle CANDeviceHandle, unsigned int WDTPeriod, CDeviceDetectionConfig *DevicesMonitorConfig)
{ {
if(WDTPeriod < 200) if(WDTPeriod < 200)
{ {
@ -27,6 +35,7 @@ int CCANWatchdog::Init(CPCANInterface *CANDriverIF, TPCANHandle CANDeviceHandle,
return RET_GENERAL_ERROR; return RET_GENERAL_ERROR;
} }
mDevicesMonitorConfig = DevicesMonitorConfig;
mCANDeviceHandle = CANDeviceHandle; mCANDeviceHandle = CANDeviceHandle;
mWDTPeriod = WDTPeriod; mWDTPeriod = WDTPeriod;
mCANDriverIF = CANDriverIF; mCANDriverIF = CANDriverIF;
@ -35,7 +44,7 @@ int CCANWatchdog::Init(CPCANInterface *CANDriverIF, TPCANHandle CANDeviceHandle,
mWatchdogTimer->setInterval(mWDTPeriod); mWatchdogTimer->setInterval(mWDTPeriod);
mWatchdogTimer->setSingleShot(false); mWatchdogTimer->setSingleShot(false);
mWDTCANMsg.mCANMsgID = CANMsgID; mWDTCANMsg.mCANMsgID = DevicesMonitorConfig->mReportingCANMsgID;
mWDTCANMsg.mCANMsgLength = 8; mWDTCANMsg.mCANMsgLength = 8;
mWDTCANMsg.mCANMsgData.clear(); mWDTCANMsg.mCANMsgData.clear();
mWDTCANMsg.mCANMsgData.append(8,(char)0x00); mWDTCANMsg.mCANMsgData.append(8,(char)0x00);
@ -65,7 +74,30 @@ void CCANWatchdog::WatchdogTimeoutTimerExpired()
// BigData |= 0x100000000; // BigData |= 0x100000000;
BigData = GetCANDateTimeBuffer(); BigData = GetCANDateTimeBuffer();
if(mDevicesMonitorConfig != 0)
{
if(mDevicesMonitorConfig->mInternetMonitor != 0)
{
BigData |= mDevicesMonitorConfig->mInternetMonitor->GetCANInternetStatusMask();
}
}
if(mDevicesMonitorConfig != 0)
{
if(mDevicesMonitorConfig->mMQTTPresenceMonitor != 0)
{
BigData |= mDevicesMonitorConfig->mMQTTPresenceMonitor->GetMQTTServerPresenceCANMask();
}
}
if(mDevicesMonitorConfig != 0)
{
if(mDevicesMonitorConfig->mLANDevicesMonitor != 0)
{
BigData |= mDevicesMonitorConfig->mLANDevicesMonitor->GetDevicesPresenceCANMask();
}
}
mWDTCANMsg.mCANMsgID = mDevicesMonitorConfig->mReportingCANMsgID;
mWDTCANMsg.SetRawData(BigData,CCANSignal::CAN_SIGNAL_ENCODING_INTEL); mWDTCANMsg.SetRawData(BigData,CCANSignal::CAN_SIGNAL_ENCODING_INTEL);
mCANDriverIF->SendCANMessage(mCANDeviceHandle,mWDTCANMsg); mCANDriverIF->SendCANMessage(mCANDeviceHandle,mWDTCANMsg);
@ -93,6 +125,11 @@ quint64 CCANWatchdog::GetCANDateTimeBuffer()
return OutputBuffer; return OutputBuffer;
} }
int CCANWatchdog::SetDevicesDetectionConfig(CDeviceDetectionConfig *DeviceMonitoringConfig)
{
mDevicesMonitorConfig = DeviceMonitoringConfig;
}
int CCANWatchdog::StartWDT() int CCANWatchdog::StartWDT()
{ {
if(mWDTInitialized == false) if(mWDTInitialized == false)

View File

@ -11,6 +11,11 @@
//Parker controller. This controller uses this update as a watchdog signal, but the register contains //Parker controller. This controller uses this update as a watchdog signal, but the register contains
//some useful data for the Parker controller as well. //some useful data for the Parker controller as well.
class CMQTTClientWrapper;
class CLANDevicesPresenceMonitor;
class CInternetMonitor;
class CDeviceDetectionConfig;
class CCANWatchdog: public QObject class CCANWatchdog: public QObject
{ {
Q_OBJECT Q_OBJECT
@ -18,11 +23,12 @@ class CCANWatchdog: public QObject
public: public:
CCANWatchdog(); CCANWatchdog();
int Init(CPCANInterface *CANDriverIF, TPCANHandle CANDeviceHandle, unsigned int WDTPeriod,unsigned int CANMsgID); int Init(CPCANInterface *CANDriverIF, TPCANHandle CANDeviceHandle, unsigned int WDTPeriod, CDeviceDetectionConfig *DevicesMonitorConfig);
int StartWDT(); int StartWDT();
int StopWDT(); int StopWDT();
bool IsInitialized(){return mWDTInitialized;} bool IsInitialized(){return mWDTInitialized;}
quint64 GetCANDateTimeBuffer(); quint64 GetCANDateTimeBuffer();
int SetDevicesDetectionConfig(CDeviceDetectionConfig *DeviceMonitoringConfig);
CPCANInterface *mCANDriverIF; CPCANInterface *mCANDriverIF;
unsigned int mWDTPeriod; unsigned int mWDTPeriod;
@ -30,10 +36,17 @@ public:
bool mWDTInitialized; bool mWDTInitialized;
CCANMessage mWDTCANMsg; CCANMessage mWDTCANMsg;
private: private:
bool mIsCANInitialized; bool mIsCANInitialized;
TPCANHandle mCANDeviceHandle; TPCANHandle mCANDeviceHandle;
// CMQTTClientWrapper *mMQTTPresenceMonitor;
// CLANDevicesPresenceMonitor *mLANDevicesMonitor;
// CInternetMonitor *mInternetMonitor;
CDeviceDetectionConfig *mDevicesMonitorConfig;
public slots: public slots:
void WatchdogTimeoutTimerExpired(); void WatchdogTimeoutTimerExpired();

View File

@ -25,6 +25,7 @@ CMQTTClientWrapper::CMQTTClientWrapper()
mProgramPtr = 0; mProgramPtr = 0;
mCPUInterface = 0; mCPUInterface = 0;
mMQTTPresenceCANBit = 0;
mMessagesQueueMode = MQTT_DROP_MSG_MODE; mMessagesQueueMode = MQTT_DROP_MSG_MODE;
mDisconnectionIsVoluntary = false; mDisconnectionIsVoluntary = false;
mIsClientConnecting = false; mIsClientConnecting = false;
@ -51,6 +52,12 @@ int CMQTTClientWrapper::SetMQTTParams(CCloudParams *Params)
int CMQTTClientWrapper::SetCPUInterface(CComputerBoardInterface *CPUIF) int CMQTTClientWrapper::SetCPUInterface(CComputerBoardInterface *CPUIF)
{ {
mCPUInterface = CPUIF; mCPUInterface = CPUIF;
return RET_OK;
}
int CMQTTClientWrapper::SetMQTTServerPresenceCANBit(quint64 CANBit)
{
mMQTTPresenceCANBit = CANBit;
} }
int CMQTTClientWrapper::StartMQTTClient() int CMQTTClientWrapper::StartMQTTClient()
@ -120,6 +127,19 @@ int CMQTTClientWrapper::NewMQTTMessages(QList<CMQTTMessage> MessagesList)
return RET_OK; return RET_OK;
} }
quint64 CMQTTClientWrapper::GetMQTTServerPresenceCANMask()
{
if(mMQTTClient.state() == QMqttClient::Connected)
{
return 0;
}
quint64 Mask = 1;
Mask <<= mMQTTPresenceCANBit;
return Mask;
}
void CMQTTClientWrapper::StateChanged() void CMQTTClientWrapper::StateChanged()
{ {
switch(mMQTTClient.state()) switch(mMQTTClient.state())

View File

@ -30,6 +30,7 @@ public:
~CMQTTClientWrapper(); ~CMQTTClientWrapper();
int SetMQTTParams(CCloudParams *Params); int SetMQTTParams(CCloudParams *Params);
int SetCPUInterface(CComputerBoardInterface *CPUIF); int SetCPUInterface(CComputerBoardInterface *CPUIF);
int SetMQTTServerPresenceCANBit(quint64 CANBit);
int ConnectToBroker(); int ConnectToBroker();
int NewMQTTMessages(QList<CMQTTMessage> MessagesList); int NewMQTTMessages(QList<CMQTTMessage> MessagesList);
int DisconnectFromBroker(); int DisconnectFromBroker();
@ -37,6 +38,7 @@ public:
int SetCANDevicesList(QList<CCANDevice*> *List); int SetCANDevicesList(QList<CCANDevice*> *List);
int StartMQTTClient(); int StartMQTTClient();
int StopMQTTClient(); int StopMQTTClient();
quint64 GetMQTTServerPresenceCANMask();
@ -56,6 +58,7 @@ private:
CComputerBoardInterface *mCPUInterface; CComputerBoardInterface *mCPUInterface;
int SendNextQueueMessage(); int SendNextQueueMessage();
quint64 mMQTTPresenceCANBit;
int UpdateGUIBufferingStatus(); int UpdateGUIBufferingStatus();

View File

@ -10,6 +10,10 @@ CDeviceDetectionConfig::CDeviceDetectionConfig()
mLANDeviceDetectConfigList.append(CLANDevicePresenceConfig()); mLANDeviceDetectConfigList.append(CLANDevicePresenceConfig());
} }
mReportingCANMsgID = 300; mReportingCANMsgID = 300;
mMQTTPresenceMonitor = 0;
mLANDevicesMonitor = 0;
mInternetMonitor = 0;
} }
QList<CLANDevicePresenceConfig> *CDeviceDetectionConfig::GetLANDevicesConfigList() QList<CLANDevicePresenceConfig> *CDeviceDetectionConfig::GetLANDevicesConfigList()
@ -35,6 +39,16 @@ QDataStream &operator>>(QDataStream &in, CDeviceDetectionConfig &dest)
return in; return in;
} }
int CDeviceDetectionConfig::SetCANPresenceMonitors(CMQTTClientWrapper *MQTTPresenceMonitor, CLANDevicesPresenceMonitor *LANDevicesMonitor, CInternetMonitor *InternetMonitor)
{
mMQTTPresenceMonitor = MQTTPresenceMonitor;
mLANDevicesMonitor = LANDevicesMonitor;
mInternetMonitor = InternetMonitor;
return RET_OK;
}
QDataStream &operator<<(QDataStream &out, const CDeviceDetectionConfig &source) QDataStream &operator<<(QDataStream &out, const CDeviceDetectionConfig &source)
{ {
out << source.mInternetDetectionCANStatusBit out << source.mInternetDetectionCANStatusBit

View File

@ -4,6 +4,11 @@
#include "LANDevicePresenceConfig.h" #include "LANDevicePresenceConfig.h"
#include <QDataStream> #include <QDataStream>
class CMQTTClientWrapper;
class CLANDevicesPresenceMonitor;
class CInternetMonitor;
class CDeviceDetectionConfig class CDeviceDetectionConfig
{ {
public: public:
@ -16,6 +21,11 @@ public:
quint64 mMQTTDetectionCANStatusBit; quint64 mMQTTDetectionCANStatusBit;
QList<CLANDevicePresenceConfig> mLANDeviceDetectConfigList; QList<CLANDevicePresenceConfig> mLANDeviceDetectConfigList;
CMQTTClientWrapper *mMQTTPresenceMonitor;
CLANDevicesPresenceMonitor *mLANDevicesMonitor;
CInternetMonitor *mInternetMonitor;
int SetCANPresenceMonitors(CMQTTClientWrapper* MQTTPresenceMonitor, CLANDevicesPresenceMonitor *LANDevicesMonitor, CInternetMonitor *InternetMonitor);
CDeviceDetectionConfig &operator=(const CDeviceDetectionConfig &source); CDeviceDetectionConfig &operator=(const CDeviceDetectionConfig &source);
}; };

View File

@ -60,7 +60,7 @@
<x>270</x> <x>270</x>
<y>100</y> <y>100</y>
<width>321</width> <width>321</width>
<height>461</height> <height>431</height>
</rect> </rect>
</property> </property>
<property name="title"> <property name="title">
@ -119,7 +119,7 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>210</x> <x>210</x>
<y>420</y> <y>390</y>
<width>80</width> <width>80</width>
<height>22</height> <height>22</height>
</rect> </rect>
@ -216,7 +216,7 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>20</x> <x>20</x>
<y>420</y> <y>390</y>
<width>80</width> <width>80</width>
<height>22</height> <height>22</height>
</rect> </rect>
@ -309,67 +309,6 @@
<string>Période rafraîchissement (ms):</string> <string>Période rafraîchissement (ms):</string>
</property> </property>
</widget> </widget>
<widget class="QLabel" name="mWatchdogMsgIDLbl">
<property name="geometry">
<rect>
<x>10</x>
<y>380</y>
<width>111</width>
<height>16</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>CAN Msg ID (HEX):</string>
</property>
</widget>
<widget class="QLabel" name="mWatchdogMsgIDPrefixLbl">
<property name="geometry">
<rect>
<x>110</x>
<y>380</y>
<width>30</width>
<height>20</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>0x</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
<widget class="QSpinBox" name="mWatchdogMsgIDSpinBx">
<property name="geometry">
<rect>
<x>140</x>
<y>380</y>
<width>91</width>
<height>20</height>
</rect>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>2048</number>
</property>
<property name="value">
<number>1</number>
</property>
<property name="displayIntegerBase">
<number>16</number>
</property>
</widget>
</widget> </widget>
<widget class="QGroupBox" name="mDatabaseGroupBox"> <widget class="QGroupBox" name="mDatabaseGroupBox">
<property name="geometry"> <property name="geometry">
@ -551,6 +490,67 @@
</rect> </rect>
</property> </property>
</widget> </widget>
<widget class="QLabel" name="mWatchdogMsgIDPrefixLbl">
<property name="geometry">
<rect>
<x>370</x>
<y>610</y>
<width>30</width>
<height>20</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>0x</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
<widget class="QSpinBox" name="mWatchdogMsgIDSpinBx">
<property name="geometry">
<rect>
<x>400</x>
<y>610</y>
<width>91</width>
<height>20</height>
</rect>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>2048</number>
</property>
<property name="value">
<number>1</number>
</property>
<property name="displayIntegerBase">
<number>16</number>
</property>
</widget>
<widget class="QLabel" name="mWatchdogMsgIDLbl">
<property name="geometry">
<rect>
<x>270</x>
<y>610</y>
<width>111</width>
<height>16</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>CAN Msg ID (HEX):</string>
</property>
</widget>
</widget> </widget>
<resources/> <resources/>
<connections/> <connections/>

View File

@ -45,6 +45,13 @@ int CInternetMonitor::Start(quint64 CANReportingBit)
return RET_OK; return RET_OK;
} }
int CInternetMonitor::UpdateCANReportingBit(quint64 CANBit)
{
mCANReportingMask = 1;
mCANReportingMask <<= CANBit;
return RET_OK;
}
int CInternetMonitor::CheckInternet() int CInternetMonitor::CheckInternet()
{ {
if(mConnectionTimer->isActive()) //are we waiting for a reply?? if(mConnectionTimer->isActive()) //are we waiting for a reply??

View File

@ -15,6 +15,7 @@ public:
explicit CInternetMonitor(QObject *parent = 0); explicit CInternetMonitor(QObject *parent = 0);
~CInternetMonitor(); ~CInternetMonitor();
int Start(quint64 CANReportingBit); int Start(quint64 CANReportingBit);
int UpdateCANReportingBit(quint64 CANBit);
bool IsInternetActive(); bool IsInternetActive();
quint64 GetCANInternetStatusMask(); quint64 GetCANInternetStatusMask();

View File

@ -44,16 +44,18 @@ int CLANDeviceMonitor::PingDevice()
CLANDeviceMonitor::~CLANDeviceMonitor() CLANDeviceMonitor::~CLANDeviceMonitor()
{ {
if(mDevMonitorTimer != 0)
{
mDevMonitorTimer->stop();
delete mDevMonitorTimer;
}
if(mPingProcess != 0) if(mPingProcess != 0)
{ {
mPingProcess->terminate(); mPingProcess->terminate();
delete mPingProcess; delete mPingProcess;
} }
if(mDevMonitorTimer != 0)
{
mDevMonitorTimer->stop();
mDevMonitorTimer = 0;
delete mDevMonitorTimer;
}
} }
@ -94,6 +96,7 @@ void CLANDeviceMonitor::PingProcessFinished(int exitCode, QProcess::ExitStatus e
} }
GetDeviceCANStatusMask(); GetDeviceCANStatusMask();
if(mDevMonitorTimer != 0)
mDevMonitorTimer->start(LAN_DEVICE_MONITOR_PRESENCE_CHECK_TIMEOUT); mDevMonitorTimer->start(LAN_DEVICE_MONITOR_PRESENCE_CHECK_TIMEOUT);
} }

View File

@ -83,6 +83,7 @@ int COtarcikCan::Start()
mCANBusMQTTClient.SetMQTTParams(&mCloudLoggingParams); mCANBusMQTTClient.SetMQTTParams(&mCloudLoggingParams);
mCANBusMQTTClient.SetCANDevicesList(&mCANDevicesList); mCANBusMQTTClient.SetCANDevicesList(&mCANDevicesList);
mCANBusMQTTClient.SetCPUInterface(&mCPUInterface); mCANBusMQTTClient.SetCPUInterface(&mCPUInterface);
mCANBusMQTTClient.SetMQTTServerPresenceCANBit(mSystemConfig.GetDeviceDetectionConfig()->mMQTTDetectionCANStatusBit);
mGeneralSystemParams = *mSystemConfig.GetGeneralSystemSettings(); mGeneralSystemParams = *mSystemConfig.GetGeneralSystemSettings();
mMainWindow.mDataLoggingSettingsPage->SetGeneralSettingsParams(&mGeneralSystemParams); mMainWindow.mDataLoggingSettingsPage->SetGeneralSettingsParams(&mGeneralSystemParams);
@ -95,9 +96,14 @@ int COtarcikCan::Start()
mDeviceDetectionConfigParams = *mSystemConfig.GetDeviceDetectionConfig(); mDeviceDetectionConfigParams = *mSystemConfig.GetDeviceDetectionConfig();
mMainWindow.mDataLoggingSettingsPage->SetDeviceConfigSettings(mSystemConfig.GetDeviceDetectionConfig()); mMainWindow.mDataLoggingSettingsPage->SetDeviceConfigSettings(mSystemConfig.GetDeviceDetectionConfig());
mInternetMonitor.Start(mSystemConfig.GetDeviceDetectionConfig()->mInternetDetectionCANStatusBit);
mLANDevicesPresenceMonitor.Start(mSystemConfig.GetDeviceDetectionConfig()->GetLANDevicesConfigList()); mLANDevicesPresenceMonitor.Start(mSystemConfig.GetDeviceDetectionConfig()->GetLANDevicesConfigList());
mSystemConfig.mDeviceDetectionParams.SetCANPresenceMonitors(&mCANBusMQTTClient,&mLANDevicesPresenceMonitor,&mInternetMonitor);
for(int i = 0; i < mCANDevicesList.size(); i++)
{
mCANDevicesList.at(i)->StartWatchdog(mSystemConfig.GetDeviceDetectionConfig());
}
// mMainWindow.mCANWatchdogSettingsPage->SetCANWatchdogConfig(mSystemConfig.GetCANWatchdogConfig()); // mMainWindow.mCANWatchdogSettingsPage->SetCANWatchdogConfig(mSystemConfig.GetCANWatchdogConfig());
// mGPTimer->setSingleShot(false); // mGPTimer->setSingleShot(false);
@ -261,6 +267,8 @@ int COtarcikCan::SaveDeviceDetectionSettingsRequest(CDeviceDetectionConfig *Devi
mSystemConfig.SaveConfig(); mSystemConfig.SaveConfig();
mLANDevicesPresenceMonitor.Stop(); mLANDevicesPresenceMonitor.Stop();
mLANDevicesPresenceMonitor.Start(DeviceDetectconfig->GetLANDevicesConfigList()); mLANDevicesPresenceMonitor.Start(DeviceDetectconfig->GetLANDevicesConfigList());
mInternetMonitor.UpdateCANReportingBit(DeviceDetectconfig->mInternetDetectionCANStatusBit);
mCANBusMQTTClient.SetMQTTServerPresenceCANBit(DeviceDetectconfig->mMQTTDetectionCANStatusBit);
return RET_OK; return RET_OK;
} }
@ -315,5 +323,5 @@ void COtarcikCan::QuitApplicationRequest()
mCPUInterface.StopCPUWatchdog(); mCPUInterface.StopCPUWatchdog();
mCPUInterface.DeInit(); mCPUInterface.DeInit();
QCoreApplication::quit(); QCoreApplication::exit(69);
} }

Binary file not shown.

View File

@ -49,9 +49,6 @@ public:
QCheckBox *mCANDeviceWatchdogActivateChkBx; QCheckBox *mCANDeviceWatchdogActivateChkBx;
QSpinBox *mWatchdogPollPeriodSpinBx; QSpinBox *mWatchdogPollPeriodSpinBx;
QLabel *mRefreshRateLbl_2; QLabel *mRefreshRateLbl_2;
QLabel *mWatchdogMsgIDLbl;
QLabel *mWatchdogMsgIDPrefixLbl;
QSpinBox *mWatchdogMsgIDSpinBx;
QGroupBox *mDatabaseGroupBox; QGroupBox *mDatabaseGroupBox;
QLabel *mDBMessageNameLbl; QLabel *mDBMessageNameLbl;
QLabel *mDBMessageIDLbl; QLabel *mDBMessageIDLbl;
@ -64,6 +61,9 @@ public:
QPushButton *mAddDeviceBtn; QPushButton *mAddDeviceBtn;
QPushButton *mDeleteDeviceBtn; QPushButton *mDeleteDeviceBtn;
QComboBox *mCANIDComboBx; QComboBox *mCANIDComboBx;
QLabel *mWatchdogMsgIDPrefixLbl;
QSpinBox *mWatchdogMsgIDSpinBx;
QLabel *mWatchdogMsgIDLbl;
void setupUi(QWidget *CCANbusSettingsPage) void setupUi(QWidget *CCANbusSettingsPage)
{ {
@ -84,7 +84,7 @@ public:
label_2->setGeometry(QRect(52, 100, 81, 16)); label_2->setGeometry(QRect(52, 100, 81, 16));
mDeviceParamsGroupBox = new QGroupBox(CCANbusSettingsPage); mDeviceParamsGroupBox = new QGroupBox(CCANbusSettingsPage);
mDeviceParamsGroupBox->setObjectName(QString::fromUtf8("mDeviceParamsGroupBox")); mDeviceParamsGroupBox->setObjectName(QString::fromUtf8("mDeviceParamsGroupBox"));
mDeviceParamsGroupBox->setGeometry(QRect(270, 100, 321, 461)); mDeviceParamsGroupBox->setGeometry(QRect(270, 100, 321, 431));
mCANIDLbl = new QLabel(mDeviceParamsGroupBox); mCANIDLbl = new QLabel(mDeviceParamsGroupBox);
mCANIDLbl->setObjectName(QString::fromUtf8("mCANIDLbl")); mCANIDLbl->setObjectName(QString::fromUtf8("mCANIDLbl"));
mCANIDLbl->setGeometry(QRect(10, 66, 121, 16)); mCANIDLbl->setGeometry(QRect(10, 66, 121, 16));
@ -101,7 +101,7 @@ public:
mCANBaudrateComboBx->setGeometry(QRect(100, 90, 131, 21)); mCANBaudrateComboBx->setGeometry(QRect(100, 90, 131, 21));
mModifyDevParamsBtn = new QPushButton(mDeviceParamsGroupBox); mModifyDevParamsBtn = new QPushButton(mDeviceParamsGroupBox);
mModifyDevParamsBtn->setObjectName(QString::fromUtf8("mModifyDevParamsBtn")); mModifyDevParamsBtn->setObjectName(QString::fromUtf8("mModifyDevParamsBtn"));
mModifyDevParamsBtn->setGeometry(QRect(210, 420, 80, 22)); mModifyDevParamsBtn->setGeometry(QRect(210, 390, 80, 22));
mDeviceDescriptionTxtEdit = new QTextEdit(mDeviceParamsGroupBox); mDeviceDescriptionTxtEdit = new QTextEdit(mDeviceParamsGroupBox);
mDeviceDescriptionTxtEdit->setObjectName(QString::fromUtf8("mDeviceDescriptionTxtEdit")); mDeviceDescriptionTxtEdit->setObjectName(QString::fromUtf8("mDeviceDescriptionTxtEdit"));
mDeviceDescriptionTxtEdit->setGeometry(QRect(10, 210, 291, 101)); mDeviceDescriptionTxtEdit->setGeometry(QRect(10, 210, 291, 101));
@ -128,7 +128,7 @@ public:
mDevicePollPeriodSpinBx->setGeometry(QRect(200, 180, 91, 22)); mDevicePollPeriodSpinBx->setGeometry(QRect(200, 180, 91, 22));
mCancelModifyParamsBtn = new QPushButton(mDeviceParamsGroupBox); mCancelModifyParamsBtn = new QPushButton(mDeviceParamsGroupBox);
mCancelModifyParamsBtn->setObjectName(QString::fromUtf8("mCancelModifyParamsBtn")); mCancelModifyParamsBtn->setObjectName(QString::fromUtf8("mCancelModifyParamsBtn"));
mCancelModifyParamsBtn->setGeometry(QRect(20, 420, 80, 22)); mCancelModifyParamsBtn->setGeometry(QRect(20, 390, 80, 22));
mDeviceNameEditBx = new QPlainTextEdit(mDeviceParamsGroupBox); mDeviceNameEditBx = new QPlainTextEdit(mDeviceParamsGroupBox);
mDeviceNameEditBx->setObjectName(QString::fromUtf8("mDeviceNameEditBx")); mDeviceNameEditBx->setObjectName(QString::fromUtf8("mDeviceNameEditBx"));
mDeviceNameEditBx->setGeometry(QRect(13, 23, 281, 31)); mDeviceNameEditBx->setGeometry(QRect(13, 23, 281, 31));
@ -152,22 +152,6 @@ public:
mRefreshRateLbl_2->setObjectName(QString::fromUtf8("mRefreshRateLbl_2")); mRefreshRateLbl_2->setObjectName(QString::fromUtf8("mRefreshRateLbl_2"));
mRefreshRateLbl_2->setGeometry(QRect(10, 350, 181, 16)); mRefreshRateLbl_2->setGeometry(QRect(10, 350, 181, 16));
mRefreshRateLbl_2->setFont(font1); mRefreshRateLbl_2->setFont(font1);
mWatchdogMsgIDLbl = new QLabel(mDeviceParamsGroupBox);
mWatchdogMsgIDLbl->setObjectName(QString::fromUtf8("mWatchdogMsgIDLbl"));
mWatchdogMsgIDLbl->setGeometry(QRect(10, 380, 111, 16));
mWatchdogMsgIDLbl->setFont(font1);
mWatchdogMsgIDPrefixLbl = new QLabel(mDeviceParamsGroupBox);
mWatchdogMsgIDPrefixLbl->setObjectName(QString::fromUtf8("mWatchdogMsgIDPrefixLbl"));
mWatchdogMsgIDPrefixLbl->setGeometry(QRect(110, 380, 30, 20));
mWatchdogMsgIDPrefixLbl->setFont(font1);
mWatchdogMsgIDPrefixLbl->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
mWatchdogMsgIDSpinBx = new QSpinBox(mDeviceParamsGroupBox);
mWatchdogMsgIDSpinBx->setObjectName(QString::fromUtf8("mWatchdogMsgIDSpinBx"));
mWatchdogMsgIDSpinBx->setGeometry(QRect(140, 380, 91, 20));
mWatchdogMsgIDSpinBx->setMinimum(1);
mWatchdogMsgIDSpinBx->setMaximum(2048);
mWatchdogMsgIDSpinBx->setValue(1);
mWatchdogMsgIDSpinBx->setDisplayIntegerBase(16);
mDatabaseGroupBox = new QGroupBox(CCANbusSettingsPage); mDatabaseGroupBox = new QGroupBox(CCANbusSettingsPage);
mDatabaseGroupBox->setObjectName(QString::fromUtf8("mDatabaseGroupBox")); mDatabaseGroupBox->setObjectName(QString::fromUtf8("mDatabaseGroupBox"));
mDatabaseGroupBox->setGeometry(QRect(620, 100, 711, 491)); mDatabaseGroupBox->setGeometry(QRect(620, 100, 711, 491));
@ -213,6 +197,22 @@ public:
mCANIDComboBx->setObjectName(QString::fromUtf8("mCANIDComboBx")); mCANIDComboBx->setObjectName(QString::fromUtf8("mCANIDComboBx"));
mCANIDComboBx->setEnabled(true); mCANIDComboBx->setEnabled(true);
mCANIDComboBx->setGeometry(QRect(790, 20, 131, 20)); mCANIDComboBx->setGeometry(QRect(790, 20, 131, 20));
mWatchdogMsgIDPrefixLbl = new QLabel(CCANbusSettingsPage);
mWatchdogMsgIDPrefixLbl->setObjectName(QString::fromUtf8("mWatchdogMsgIDPrefixLbl"));
mWatchdogMsgIDPrefixLbl->setGeometry(QRect(370, 610, 30, 20));
mWatchdogMsgIDPrefixLbl->setFont(font1);
mWatchdogMsgIDPrefixLbl->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
mWatchdogMsgIDSpinBx = new QSpinBox(CCANbusSettingsPage);
mWatchdogMsgIDSpinBx->setObjectName(QString::fromUtf8("mWatchdogMsgIDSpinBx"));
mWatchdogMsgIDSpinBx->setGeometry(QRect(400, 610, 91, 20));
mWatchdogMsgIDSpinBx->setMinimum(1);
mWatchdogMsgIDSpinBx->setMaximum(2048);
mWatchdogMsgIDSpinBx->setValue(1);
mWatchdogMsgIDSpinBx->setDisplayIntegerBase(16);
mWatchdogMsgIDLbl = new QLabel(CCANbusSettingsPage);
mWatchdogMsgIDLbl->setObjectName(QString::fromUtf8("mWatchdogMsgIDLbl"));
mWatchdogMsgIDLbl->setGeometry(QRect(270, 610, 111, 16));
mWatchdogMsgIDLbl->setFont(font1);
retranslateUi(CCANbusSettingsPage); retranslateUi(CCANbusSettingsPage);
@ -235,8 +235,6 @@ public:
mCancelModifyParamsBtn->setText(QCoreApplication::translate("CCANbusSettingsPage", "Annuler", nullptr)); mCancelModifyParamsBtn->setText(QCoreApplication::translate("CCANbusSettingsPage", "Annuler", nullptr));
mCANDeviceWatchdogActivateChkBx->setText(QCoreApplication::translate("CCANbusSettingsPage", "Activer Watchdog", nullptr)); mCANDeviceWatchdogActivateChkBx->setText(QCoreApplication::translate("CCANbusSettingsPage", "Activer Watchdog", nullptr));
mRefreshRateLbl_2->setText(QCoreApplication::translate("CCANbusSettingsPage", "P\303\251riode rafra\303\256chissement (ms):", nullptr)); mRefreshRateLbl_2->setText(QCoreApplication::translate("CCANbusSettingsPage", "P\303\251riode rafra\303\256chissement (ms):", nullptr));
mWatchdogMsgIDLbl->setText(QCoreApplication::translate("CCANbusSettingsPage", "CAN Msg ID (HEX):", nullptr));
mWatchdogMsgIDPrefixLbl->setText(QCoreApplication::translate("CCANbusSettingsPage", "0x", nullptr));
mDatabaseGroupBox->setTitle(QCoreApplication::translate("CCANbusSettingsPage", "Database", nullptr)); mDatabaseGroupBox->setTitle(QCoreApplication::translate("CCANbusSettingsPage", "Database", nullptr));
mDBMessageNameLbl->setText(QCoreApplication::translate("CCANbusSettingsPage", "Message Name: ", nullptr)); mDBMessageNameLbl->setText(QCoreApplication::translate("CCANbusSettingsPage", "Message Name: ", nullptr));
mDBMessageIDLbl->setText(QCoreApplication::translate("CCANbusSettingsPage", "Message ID: ", nullptr)); mDBMessageIDLbl->setText(QCoreApplication::translate("CCANbusSettingsPage", "Message ID: ", nullptr));
@ -246,6 +244,8 @@ public:
mDBMessageCommentLbl->setText(QCoreApplication::translate("CCANbusSettingsPage", "Number of signals: ", nullptr)); mDBMessageCommentLbl->setText(QCoreApplication::translate("CCANbusSettingsPage", "Number of signals: ", nullptr));
mAddDeviceBtn->setText(QCoreApplication::translate("CCANbusSettingsPage", "Ajouter", nullptr)); mAddDeviceBtn->setText(QCoreApplication::translate("CCANbusSettingsPage", "Ajouter", nullptr));
mDeleteDeviceBtn->setText(QCoreApplication::translate("CCANbusSettingsPage", "Supprimer", nullptr)); mDeleteDeviceBtn->setText(QCoreApplication::translate("CCANbusSettingsPage", "Supprimer", nullptr));
mWatchdogMsgIDPrefixLbl->setText(QCoreApplication::translate("CCANbusSettingsPage", "0x", nullptr));
mWatchdogMsgIDLbl->setText(QCoreApplication::translate("CCANbusSettingsPage", "CAN Msg ID (HEX):", nullptr));
} // retranslateUi } // retranslateUi
}; };