Ajout polling du statut du board

This commit is contained in:
2024-02-22 16:11:48 -05:00
parent 098863edb9
commit da2dd28f1c
25 changed files with 1100 additions and 140 deletions
+2 -2
View File
@@ -45,9 +45,9 @@ int CCANWatchdog::Init(CPCANInterface *CANDriverIF, TPCANHandle CANDeviceHandle,
void CCANWatchdog::WatchdogTimeoutTimerExpired()
{
char data = mWDTCANMsg.mCANMsgData[0];
char data = mWDTCANMsg.mCANMsgData[7];
data ^= (char)0x01;
mWDTCANMsg.mCANMsgData[0] = data;
mWDTCANMsg.mCANMsgData[7] = data;
mCANDriverIF->SendCANMessage(mCANDeviceHandle,mWDTCANMsg);
qDebug("Sending 0x%X to CAN",data);
//QString LogMsg = QString("Écriture du watchdog. CAN ID %1 Payload: 0x%2 0x%3 0x%4 0x%5 0x%6 0x%7 0x%8 0x%9").arg(mWDTCANMsg.mCANMsgID,0,16).arg(mWDTCANMsg.mCANMsgData.at(7),0,16).arg(mWDTCANMsg.mCANMsgData.at(6),0,16).arg(mWDTCANMsg.mCANMsgData.at(5),0,16).arg(mWDTCANMsg.mCANMsgData.at(4),0,16).arg(mWDTCANMsg.mCANMsgData.at(3),0,16).arg(mWDTCANMsg.mCANMsgData.at(2),0,16).arg(mWDTCANMsg.mCANMsgData.at(1),0,16).arg(mWDTCANMsg.mCANMsgData[0],0,16);
@@ -96,7 +96,7 @@ int CCANDatabase::BuildMessageList(QList<CCANMessage *> *MsgListPtr, QString Own
CCANMessage *NewMsg = new CCANMessage;
char msg_name[100];
// char msg_qname[200];
char msg_comment[200];
char msg_comment[400];
int dlc = 0;
unsigned int id = 0;
@@ -2,6 +2,7 @@
#include "OtarcikCan.h"
#include "CANDevice.h"
#include "defines.h"
#include "ComputerBoardInterface.h"
CMQTTClientWrapper::CMQTTClientWrapper()
{
@@ -23,6 +24,7 @@ CMQTTClientWrapper::CMQTTClientWrapper()
mMQTTQueueFlushTimer->stop();
mProgramPtr = 0;
mCPUInterface = 0;
mMessagesQueueMode = MQTT_DROP_MSG_MODE;
mDisconnectionIsVoluntary = false;
mIsClientConnecting = false;
@@ -46,6 +48,11 @@ int CMQTTClientWrapper::SetMQTTParams(CCloudParams *Params)
return RET_OK;
}
int CMQTTClientWrapper::SetCPUInterface(CComputerBoardInterface *CPUIF)
{
mCPUInterface = CPUIF;
}
int CMQTTClientWrapper::StartMQTTClient()
{
mMQTTRefreshTimer->start(mMQTTParams.mMQTTTransmitTimeout);
@@ -214,6 +221,11 @@ void CMQTTClientWrapper::MQTTSendTimerExpired()
{
CCANDevice *Device = mCANDevicesList->at(j);
QList<CMQTTMessage> *MessagesList = Device->GetMQTTMessagesList();
if(mCPUInterface)
{
CComputerBoardState tmp =mCPUInterface->GetComputerBoardState();
}
if(MessagesList != 0)
{
for(int i = 0; i < MessagesList->size(); i++)
@@ -231,6 +243,11 @@ void CMQTTClientWrapper::MQTTSendTimerExpired()
{
CCANDevice *Device = mCANDevicesList->at(j);
QList<CMQTTMessage> *MessagesList = Device->GetMQTTMessagesList();
if(mCPUInterface)
{
CComputerBoardState tmp =mCPUInterface->GetComputerBoardState();
}
if(MessagesList != 0)
{
for(int i = 0; i < MessagesList->size(); i++)
@@ -10,8 +10,10 @@
#include <QList>
class COtarcikCan;
class CCANDevice;
class CComputerBoardInterface;
class CMQTTClientWrapper : public QObject
{
@@ -27,6 +29,7 @@ public:
CMQTTClientWrapper();
~CMQTTClientWrapper();
int SetMQTTParams(CCloudParams *Params);
int SetCPUInterface(CComputerBoardInterface *CPUIF);
int ConnectToBroker();
int NewMQTTMessages(QList<CMQTTMessage> MessagesList);
int DisconnectFromBroker();
@@ -50,6 +53,7 @@ private:
QList<CMQTTMessage*> mMQTTMessagesQueue;
bool mIsClientConnecting;
QString mCircularBufferStatusText, mBufferingModeText, mUploadTimeText;
CComputerBoardInterface *mCPUInterface;
int SendNextQueueMessage();
@@ -4,6 +4,7 @@
#include "GeneralMessagesLogDispatcher.h"
#include "CPUWatchdogConfig.h"
CComputerBoardInterface::CComputerBoardInterface()
{
mWatchdogTimeout = CPU_DEFAULT_WATCHDOG_TIMEOUT;
@@ -119,4 +120,39 @@ int CComputerBoardInterface::SetWatchdogSettings(CCPUWatchdogConfig *Settings)
{
mWatchdogEnabled = Settings->mWatchdogEnabled;
mWatchdogTimeout = Settings->mWatchdogTimeout;
return RET_OK;
}
CComputerBoardState CComputerBoardInterface::GetComputerBoardState()
{
CComputerBoardState CPUState;
float tmp;
AxGetCPUTemp(&CPUState.mSystemTemperature);
// qDebug("CPUState.mSystemTemperature %f",CPUState.mSystemTemperature);
AxGetSYSTemp(&CPUState.mSystemTemperature);
// qDebug("CPUState.mSystemTemperature %f",CPUState.mSystemTemperature);
// AxGetGMCHTemp(&tmp);
// qDebug("AxGetGMCHTemp %f",tmp);
AxGetCPUVcore(&CPUState.mCPUVcore);
// qDebug("CPUState.mCPUVcore %f",CPUState.mCPUVcore);
// AxGetNBVTT(&tmp);
// qDebug("NBVTT %f",tmp);
AxGet3V(&CPUState.mSystem3V3);
// qDebug("CPUState.mSystem3V3 %f",CPUState.mSystem3V3);
AxGet5V(&CPUState.mSystem5V);
// qDebug("CPUState.mSystem5V %f",CPUState.mSystem5V);
// AxGet12V(&tmp);
// qDebug("AxGet12V %f",tmp);
// AxGetNeg5V(&tmp);
// qDebug("AxGetNeg5V %f",tmp);
// AxGetNeg12V(&tmp);
// qDebug("AxGetNeg12V %f",tmp);
// AxGetVbat(&tmp);
// qDebug("AxGetVbat %f",tmp);
return CPUState;
}
@@ -1,6 +1,7 @@
#ifndef COMPUTERBOARDINTERFACE_H
#define COMPUTERBOARDINTERFACE_H
#include "minwindef.h"
#include "ComputerBoardState.h"
#define CPU_DEFAULT_WATCHDOG_TIMEOUT 600 //10 minutes.
#define CPU_LIBRARY_NAME "dtSBC87853x64"
@@ -16,6 +17,7 @@ public:
int StartCPUWatchdog(/*int TimeoutInSeconds = CPU_DEFAULT_WATCHDOG_TIMEOUT*/); //Timeout in seconds
int StopCPUWatchdog();
int KickCPUWatchdog();
CComputerBoardState GetComputerBoardState();
int SetWatchdogSettings(CCPUWatchdogConfig *Settings);
@@ -0,0 +1,9 @@
#include "ComputerBoardState.h"
CComputerBoardState::CComputerBoardState()
{
mSystemTemperature = 0.0;
mCPUVcore = 0.0;
mSystem3V3 = 0.0;
mSystem5V = 0.0;
}
+16
View File
@@ -0,0 +1,16 @@
#ifndef COMPUTERBOARDSTATE_H
#define COMPUTERBOARDSTATE_H
class CComputerBoardState
{
public:
CComputerBoardState();
float mSystemTemperature;
float mCPUVcore;
float mSystem3V3;
float mSystem5V;
};
#endif // COMPUTERBOARDSTATE_H
@@ -19,8 +19,8 @@ CCANbusSettingsPage::CCANbusSettingsPage(QWidget *parent) :
mCurModifiedDevConfig = 0;
mDeviceChangeModeEnabled = false;
ui->mDBSignalDetailsTable->setColumnCount(10);
ui->mDBSignalDetailsTable->setHorizontalHeaderLabels(QStringList() << "Signal" << "Bit No" << "Length" << "Type" << "Max Val" << "Min Val" << "Offset" << "Scale factor" << "Unit" << "Byte order");
ui->mDBSignalDetailsTable->setColumnCount(11);
ui->mDBSignalDetailsTable->setHorizontalHeaderLabels(QStringList() << "Signal" << "Bit No" << "Length" << "Type" << "Max Val" << "Min Val" << "Offset" << "Scale factor" << "Unit" << "Byte order" << "Comment");
ui->mDevicePollPeriodSpinBx->setRange(200,60000);
@@ -336,9 +336,12 @@ int CCANbusSettingsPage::UpdateMessageInformation()
}
}
ui->mDBSignalDetailsTable->setItem(Sig,9,NewItem);
//Comment
NewItem = new QTableWidgetItem(Signal.mSignalComment);
ui->mDBSignalDetailsTable->setItem(Sig,10,NewItem);
}
ui->mDBSignalDetailsTable->resizeColumnsToContents();
}
+24 -17
View File
@@ -19,13 +19,20 @@ CGeneralStatusPage::CGeneralStatusPage(QWidget *parent) :
ui->mCANModuleStatusTableWdgt->setColumnCount(3);
ui->mCANModuleStatusTableWdgt->setHorizontalHeaderLabels(QStringList() << "Nom" << "Statut" << "Buffer");
ui->mPuckCANConStatLbl->setVisible(false);
ui->mPuckCANLbl->setVisible(false);
mCPUStateUpdtTimer = new QTimer;
mCPUStateUpdtTimer->setSingleShot(false);
mCPUStateUpdtTimer->setInterval(5000);
connect(mCPUStateUpdtTimer,&QTimer::timeout,this,&CGeneralStatusPage::UpdateBoardStatusTimerExpired);
mCPUStateUpdtTimer->start();
mCPUInterface = 0;
}
CGeneralStatusPage::~CGeneralStatusPage()
{
delete ui;
delete mCPUStateUpdtTimer;
}
int CGeneralStatusPage::SetGeneralMsgText(QStringList Txt)
@@ -129,20 +136,7 @@ int CGeneralStatusPage::SetMQTTConnectionStatus(bool Connected)
int CGeneralStatusPage::SetCANConnectionStatus(bool Connected)
{
if(Connected)
{
ui->mPuckCANConStatLbl->setText("CONNECTÉE");
QPalette pal = QPalette(ui->mPuckCANConStatLbl->palette());
pal.setColor(QPalette::WindowText,QColor(Qt::darkGreen));
ui->mPuckCANConStatLbl->setPalette(pal);
}
else
{
ui->mPuckCANConStatLbl->setText("DÉCONNECTÉE");
QPalette pal = QPalette(ui->mPuckCANConStatLbl->palette());
pal.setColor(QPalette::WindowText,QColor(Qt::red));
ui->mPuckCANConStatLbl->setPalette(pal);
}
return RET_OK;
}
@@ -158,7 +152,7 @@ int CGeneralStatusPage::UpdateMQTTBufferingStatus(QString Mode, QString FIFOSize
{
ui->mBufferingMode->setText(Mode);
ui->mBufferSizeValue->setText(FIFOSize);
ui->mBufferTimeRemaining->setText(RemainingTime);
// ui->mBufferTimeRemaining->setText(RemainingTime);
return RET_OK;
}
@@ -211,6 +205,14 @@ void CGeneralStatusPage::QuitAppBtnPressed()
mProgramPtr->QuitApplicationRequest();
}
int CGeneralStatusPage::UpdateBoardStatus(CComputerBoardState CPUState)
{
QString BoardState = QString("System Temp: %1C\nCPU VCore: %2V\nSystem 3.3V: %3V\nSystem 5V: %4V").arg(CPUState.mSystemTemperature).arg(CPUState.mCPUVcore).arg(CPUState.mSystem3V3).arg(CPUState.mSystem5V);
ui->mSystemStateLbl->setText(BoardState);
return RET_OK;
}
void CGeneralStatusPage::InternetStatusChanged(bool InternetConnected)
{
if(InternetConnected == true)
@@ -228,3 +230,8 @@ void CGeneralStatusPage::InternetStatusChanged(bool InternetConnected)
ui->mInternetPresentStatLbl->setPalette(pal);
}
}
void CGeneralStatusPage::UpdateBoardStatusTimerExpired()
{
UpdateBoardStatus(mCPUInterface->GetComputerBoardState());
}
@@ -3,6 +3,8 @@
#include <QWidget>
#include "defines.h"
#include "ComputerBoardInterface.h"
#include <QTimer>
namespace Ui {
@@ -27,6 +29,9 @@ public:
};
COtarcikCan *mProgramPtr;
QTimer *mCPUStateUpdtTimer;
CComputerBoardInterface *mCPUInterface;
explicit CGeneralStatusPage(QWidget *parent = 0);
~CGeneralStatusPage();
@@ -39,6 +44,7 @@ public:
int UpdateCANModuleStatus(QString ModuleName, QString ModuleStatus, QString Buffer);
int ClearCANModuleStatusTable();
int UpdateMQTTBufferingStatus(QString Mode, QString FIFOSize, QString RemainingTime);
int UpdateBoardStatus(CComputerBoardState CPUState);
private:
@@ -52,6 +58,7 @@ public slots:
void ClearGenMsgAreaBtnPressed();
void QuitAppBtnPressed();
void InternetStatusChanged(bool InternetConnected);
void UpdateBoardStatusTimerExpired();
};
+30 -70
View File
@@ -47,29 +47,11 @@
<string>Nettoyer</string>
</property>
</widget>
<widget class="QLabel" name="mPuckCANLbl">
<property name="geometry">
<rect>
<x>1220</x>
<y>210</y>
<width>81</width>
<height>16</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>Puck CAN:</string>
</property>
</widget>
<widget class="QLabel" name="mClientMQTTLbl">
<property name="geometry">
<rect>
<x>1200</x>
<y>240</y>
<y>210</y>
<width>101</width>
<height>16</height>
</rect>
@@ -83,31 +65,11 @@
<string>Client MQTT:</string>
</property>
</widget>
<widget class="QLabel" name="mPuckCANConStatLbl">
<property name="geometry">
<rect>
<x>1300</x>
<y>210</y>
<width>121</width>
<height>16</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Déconnectée</string>
</property>
</widget>
<widget class="QLabel" name="mClientMQTTConnStatLbl">
<property name="geometry">
<rect>
<x>1300</x>
<y>240</y>
<y>210</y>
<width>121</width>
<height>16</height>
</rect>
@@ -170,7 +132,7 @@
<property name="geometry">
<rect>
<x>1230</x>
<y>270</y>
<y>240</y>
<width>61</width>
<height>16</height>
</rect>
@@ -188,7 +150,7 @@
<property name="geometry">
<rect>
<x>1300</x>
<y>270</y>
<y>240</y>
<width>121</width>
<height>16</height>
</rect>
@@ -207,10 +169,10 @@
<widget class="QGroupBox" name="MQTTBufferingGrpBx">
<property name="geometry">
<rect>
<x>1210</x>
<y>320</y>
<width>391</width>
<height>141</height>
<x>1460</x>
<y>190</y>
<width>251</width>
<height>91</height>
</rect>
</property>
<property name="title">
@@ -252,24 +214,6 @@
<string>Taille buffer circulaire:</string>
</property>
</widget>
<widget class="QLabel" name="mBufferTimeRemainingLbl">
<property name="geometry">
<rect>
<x>50</x>
<y>90</y>
<width>91</width>
<height>21</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Durée restante:</string>
</property>
</widget>
<widget class="QLabel" name="mBufferingMode">
<property name="geometry">
<rect>
@@ -306,13 +250,26 @@
<string>0/5000</string>
</property>
</widget>
<widget class="QLabel" name="mBufferTimeRemaining">
</widget>
<widget class="QGroupBox" name="groupBox">
<property name="geometry">
<rect>
<x>1210</x>
<y>290</y>
<width>301</width>
<height>161</height>
</rect>
</property>
<property name="title">
<string>État du système</string>
</property>
<widget class="QLabel" name="mSystemStateLbl">
<property name="geometry">
<rect>
<x>150</x>
<y>90</y>
<width>91</width>
<height>21</height>
<x>10</x>
<y>20</y>
<width>281</width>
<height>131</height>
</rect>
</property>
<property name="font">
@@ -321,7 +278,10 @@
</font>
</property>
<property name="text">
<string>xxx minutes</string>
<string>Système:</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
</widget>
</widget>
+4
View File
@@ -53,6 +53,7 @@ int COtarcikCan::Start()
mMainWindow.mCANbusSettingsPage->mProgramPtr = this;
mMainWindow.mDataLoggingSettingsPage->mProgramHandle = this;
mMainWindow.mGeneralStatusPage->mProgramPtr = this;
mMainWindow.mGeneralStatusPage->mCPUInterface = &mCPUInterface;
// mMainWindow.mCANWatchdogSettingsPage->mProgramHandle = this;
mMainWindow.show();
@@ -80,6 +81,7 @@ int COtarcikCan::Start()
mMainWindow.mDataLoggingSettingsPage->SetCloudParams(&mCloudLoggingParams);
mCANBusMQTTClient.SetMQTTParams(&mCloudLoggingParams);
mCANBusMQTTClient.SetCANDevicesList(&mCANDevicesList);
mCANBusMQTTClient.SetCPUInterface(&mCPUInterface);
mGeneralSystemParams = *mSystemConfig.GetGeneralSystemSettings();
mMainWindow.mDataLoggingSettingsPage->SetGeneralSettingsParams(&mGeneralSystemParams);
@@ -97,6 +99,8 @@ int COtarcikCan::Start()
mCPUInterface.StartCPUWatchdog();
mWatchdogTimer->start();
mMainWindow.mGeneralStatusPage->UpdateBoardStatusTimerExpired();
}
else
{