diff --git a/Sources/Chalet/ChaletGui.cpp b/Sources/Chalet/ChaletGui.cpp index 3a61f13..af4286f 100644 --- a/Sources/Chalet/ChaletGui.cpp +++ b/Sources/Chalet/ChaletGui.cpp @@ -1,8 +1,10 @@ #include "ChaletGui.h" #include "ui_ChaletGui.h" #include "CChalet.h" +#include "LoraModuleInterface.h" #include #include +#include "LoraModuleInterfaceData.h" CChaletGui::CChaletGui(QWidget *parent) : QWidget(parent), @@ -277,6 +279,23 @@ int CChaletGui::UpdateChaletStatus(CChaletMainStatus Status) return RET_OK; } +int CChaletGui::UpdateLoraModuleStatus(CLoraModuleInterfaceStatus Status) +{ + if(ui->mLoraModuleCommActivityLbl->isEnabled()) + { + ui->mLoraModuleCommActivityLbl->setEnabled(false); + } + else + { + ui->mLoraModuleCommActivityLbl->setEnabled(true); + } + + QString ModuleStatusTxt = QString("Ambient RSSI: %1 [%3dBm]\nLast Rx RSSI: %2 [%4dBm]").arg(Status.mModuleAmbientRSSI).arg(Status.mModuleLastRxRSSI).arg(-1*(255-Status.mModuleAmbientRSSI)).arg(-1*(255-Status.mModuleLastRxRSSI)); + ui->mLoraIFModuleStatus->setText(ModuleStatusTxt); + + return RET_OK; +} + int CChaletGui::UpdateChaletLogPlot(QByteArray *Log) { int NbRecords; diff --git a/Sources/Chalet/ChaletGui.h b/Sources/Chalet/ChaletGui.h index 4a7cd87..bb74cf1 100644 --- a/Sources/Chalet/ChaletGui.h +++ b/Sources/Chalet/ChaletGui.h @@ -7,6 +7,9 @@ #include class CChalet; +class CLoraModuleInterface; +class CLoraModuleInterfaceStatus; + namespace Ui { class CChaletGui; @@ -21,9 +24,11 @@ public: ~CChaletGui(); CChalet *mProgramHandle; + CLoraModuleInterface *mLoraModuleIFProgramHandle; QCustomPlot *mBatteryPlotWidget; int UpdateChaletStatus(CChaletMainStatus Status); + int UpdateLoraModuleStatus(CLoraModuleInterfaceStatus Status); int UpdateChaletLogPlot(QByteArray* Log); int ChaletCommActivity(); QTimer *mGetWifiParamsButtonColorTimer, *mGetFimwVersionButtonColorTimer; diff --git a/Sources/Chalet/ChaletGui.ui b/Sources/Chalet/ChaletGui.ui index c511ef1..54018d4 100644 --- a/Sources/Chalet/ChaletGui.ui +++ b/Sources/Chalet/ChaletGui.ui @@ -691,13 +691,13 @@ Chalet --> Master: ?? Lora module Interface - + 10 20 - 131 - 61 + 231 + 141 @@ -757,6 +757,19 @@ Module state: ?? Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + 390 + 80 + 47 + 16 + + + + Activity!!! + + groupBox_2 groupBox diff --git a/Sources/LoRaModuleInterface/LoraModuleIFMasterCtrlInterface.cpp b/Sources/LoRaModuleInterface/LoraModuleIFMasterCtrlInterface.cpp new file mode 100644 index 0000000..9a4c3bf --- /dev/null +++ b/Sources/LoRaModuleInterface/LoraModuleIFMasterCtrlInterface.cpp @@ -0,0 +1,68 @@ +#include "LoraModuleIFMasterCtrlInterface.h" +#include "LoraModuleInterface.h" +#include "LoraModuleInterfaceData.h" + +CLoraModuleIFMasterCtrlInterface::CLoraModuleIFMasterCtrlInterface(CLoraModuleInterface *ProgramHandle) +{ + mMyDeviceID = ID_LORA_INTERFACE_INTERFACE; + mNetworkPort = 2182; + mMasterCtrlIPAddress = "127.0.0.1"; + mNetworkCommSocket = 0; + mDeviceAddress = 1; + + mProgramHandle = ProgramHandle; +} + +int CLoraModuleIFMasterCtrlInterface::DeviceFrameReceived(int TargetDeviceID, int TargetDeviceAddress, int SenderID, int SenderAddress, int MessageID, int DataSize, QByteArray Data) +{ + Q_UNUSED(DataSize) + Q_UNUSED(SenderID) + Q_UNUSED(SenderAddress) + + + if(TargetDeviceID == mMyDeviceID && (TargetDeviceAddress == BROADCAST_VALUE || TargetDeviceAddress == mDeviceAddress)) + { + switch(MessageID) + { + case LORA_MODULE_IF_INTERFACE_ACK: + { + qDebug("Chalet Interface ACK received"); + break; + } + case LORA_MODULE_IF_INTERFACE_GENERAL_STATUS_RESPONSE: + { +// qDebug("Rx Lora Module IF status"); + CLoraModuleInterfaceStatus Status; + QDataStream Strm(Data); + Strm >> Status; + mProgramHandle->NewLoraModuleStatusData(Status); + break; + } + case LORA_MODULE_IF_INTERFACE_GENERAL_STATUS_REQUEST: + default: + { + qDebug("CLoraModuleIFMasterCtrlInterface: invalid command received"); + break; + } + + } + } + + + return RET_OK; + +} + +int CLoraModuleIFMasterCtrlInterface::DeviceConnectedToMaster(bool Connected) +{ + if(Connected) + { + qDebug("LoraModuleIF Interface connected to Master."); + mProgramHandle->ConnectedToMaster(Connected); + + } + else + return RET_ERROR; + + return RET_OK; +} diff --git a/Sources/LoRaModuleInterface/LoraModuleIFMasterCtrlInterface.h b/Sources/LoRaModuleInterface/LoraModuleIFMasterCtrlInterface.h new file mode 100644 index 0000000..54b1986 --- /dev/null +++ b/Sources/LoRaModuleInterface/LoraModuleIFMasterCtrlInterface.h @@ -0,0 +1,19 @@ +#ifndef LORAMODULEIFMASTERCTRLINTERFACE_H +#define LORAMODULEIFMASTERCTRLINTERFACE_H + +#include "MasterCtrlInterface.h" +class CLoraModuleInterface; + +class CLoraModuleIFMasterCtrlInterface: public CMasterCtrlInterface +{ +public: + CLoraModuleIFMasterCtrlInterface(CLoraModuleInterface *ProgramHandle); + + int DeviceFrameReceived(int TargetDeviceID, int TargetDeviceAddress, int SenderID, int SenderAddress, int MessageID, int DataSize, QByteArray Data); + int DeviceConnectedToMaster(bool Connected = true); + +private: + CLoraModuleInterface *mProgramHandle; +}; + +#endif // LORAMODULEIFMASTERCTRLINTERFACE_H diff --git a/Sources/LoRaModuleInterface/LoraModuleInterface.cpp b/Sources/LoRaModuleInterface/LoraModuleInterface.cpp new file mode 100644 index 0000000..338c24b --- /dev/null +++ b/Sources/LoRaModuleInterface/LoraModuleInterface.cpp @@ -0,0 +1,44 @@ +#include "LoraModuleInterface.h" +#include "LoraModuleIFMasterCtrlInterface.h" + +CLoraModuleInterface::CLoraModuleInterface(CChaletGui *ChaletGuiPtr) +{ + mChaletGui = ChaletGuiPtr; + mChaletGui->mLoraModuleIFProgramHandle = this; + mNetworkInterface = new CLoraModuleIFMasterCtrlInterface(this); + + + mLoraModulePollTimer = new QTimer(); + mLoraModulePollTimer->setInterval(1000); + mLoraModulePollTimer->setSingleShot(false); + connect(mLoraModulePollTimer,&QTimer::timeout,this,&CLoraModuleInterface::LoraModulePollTimerExpired); +} + +int CLoraModuleInterface::ConnectedToMaster(bool connected) +{ + if(connected) + { + mLoraModulePollTimer->start(); + } + else + { + mLoraModulePollTimer->stop(); + } + return RET_OK; +} + +int CLoraModuleInterface::Start() +{ + mNetworkInterface->ConnectToMasterCtrl(); + return RET_OK; +} + +void CLoraModuleInterface::LoraModulePollTimerExpired() +{ + mNetworkInterface->SendMasterCtrlCommand(LORA_MODULE_IF_INTERFACE_GENERAL_STATUS_REQUEST,QByteArray()); +} + +int CLoraModuleInterface::NewLoraModuleStatusData(CLoraModuleInterfaceStatus Data) +{ + mChaletGui->UpdateLoraModuleStatus(Data); +} diff --git a/Sources/LoRaModuleInterface/LoraModuleInterface.h b/Sources/LoRaModuleInterface/LoraModuleInterface.h new file mode 100644 index 0000000..c0ba25c --- /dev/null +++ b/Sources/LoRaModuleInterface/LoraModuleInterface.h @@ -0,0 +1,29 @@ +#ifndef LORAMODULEINTERFACE_H +#define LORAMODULEINTERFACE_H + +#include "ChaletGui.h" +#include +#include "LoraModuleInterfaceData.h" + + +class CLoraModuleIFMasterCtrlInterface; + +class CLoraModuleInterface : public QObject +{ + Q_OBJECT +public: + CLoraModuleInterface(CChaletGui *ChaletGuiPtr); + int Start(); + + int ConnectedToMaster(bool connected); + int NewLoraModuleStatusData(CLoraModuleInterfaceStatus Data); + + CLoraModuleIFMasterCtrlInterface *mNetworkInterface; + CChaletGui *mChaletGui; + QTimer *mLoraModulePollTimer; + +public slots: + void LoraModulePollTimerExpired(); +}; + +#endif // LORAMODULEINTERFACE_H diff --git a/Sources/LoRaModuleInterface/LoraModuleInterfaceData.cpp b/Sources/LoRaModuleInterface/LoraModuleInterfaceData.cpp new file mode 100644 index 0000000..d09b071 --- /dev/null +++ b/Sources/LoRaModuleInterface/LoraModuleInterfaceData.cpp @@ -0,0 +1,73 @@ +#include "LoraModuleInterfaceData.h" + +CLoraModuleInterfaceStatus::CLoraModuleInterfaceStatus() +{ + +} + +CLoraModuleInterfaceStatus& CLoraModuleInterfaceStatus::operator = (const CLoraModuleInterfaceStatus &rhs) +{ + if(this == &rhs) + return *this; + + mModuleModel = rhs.mModuleModel; + mModuleInternalAddress = rhs.mModuleInternalAddress; + mModuleUARTParity = rhs.mModuleUARTParity; + mModuleUARTRate = rhs.mModuleUARTRate; + mModuleAirRate = rhs.mModuleAirRate; + mModuleSubPacket = rhs.mModuleSubPacket; + mModuleRSSIEnabled = rhs.mModuleRSSIEnabled; + mModuleTxPower = rhs.mModuleTxPower; + mModuleInternalChannel = rhs.mModuleInternalChannel; + mModuleRSSIByteEnabled = rhs.mModuleRSSIByteEnabled; + mModuleTxMethod = rhs.mModuleTxMethod; + mModuleLBTEnabled = rhs.mModuleLBTEnabled; + mModuleWORCycle = rhs.mModuleWORCycle; + mModuleAmbientRSSI = rhs.mModuleAmbientRSSI; + mModuleLastRxRSSI = rhs.mModuleLastRxRSSI; + + return *this; +} + +QDataStream &operator<<(QDataStream &out, const CLoraModuleInterfaceStatus &source) +{ + out << source.mModuleModel + << source.mModuleInternalAddress + << source.mModuleUARTParity + << source.mModuleUARTRate + << source.mModuleAirRate + << source.mModuleSubPacket + << source.mModuleRSSIEnabled + << source.mModuleTxPower + << source.mModuleInternalChannel + << source.mModuleRSSIByteEnabled + << source.mModuleTxMethod + << source.mModuleLBTEnabled + << source.mModuleWORCycle + << source.mModuleAmbientRSSI + << source.mModuleLastRxRSSI; + + return out; +} + +QDataStream &operator>>(QDataStream &in, CLoraModuleInterfaceStatus &dest) +{ + in >> dest.mModuleModel + >> dest.mModuleInternalAddress + >> dest.mModuleUARTParity + >> dest.mModuleUARTRate + >> dest.mModuleAirRate + >> dest.mModuleSubPacket + >> dest.mModuleRSSIEnabled + >> dest.mModuleTxPower + >> dest.mModuleInternalChannel + >> dest.mModuleRSSIByteEnabled + >> dest.mModuleTxMethod + >> dest.mModuleLBTEnabled + >> dest.mModuleWORCycle + >> dest.mModuleAmbientRSSI + >> dest.mModuleLastRxRSSI; + + + return in; +} diff --git a/Sources/LoRaModuleInterface/LoraModuleInterfaceData.h b/Sources/LoRaModuleInterface/LoraModuleInterfaceData.h new file mode 100644 index 0000000..4770036 --- /dev/null +++ b/Sources/LoRaModuleInterface/LoraModuleInterfaceData.h @@ -0,0 +1,105 @@ +#ifndef LORAMODULEINTERFACEDATA_H +#define LORAMODULEINTERFACEDATA_H + +#include +#include + +class CLoraModuleInterfaceStatus +{ +public: + + enum eE220UartRates + { + E220_UART_1200 = 0, + E220_UART_2400, + E220_UART_4800, + E220_UART_9600, + E220_UART_19200, + E220_UART_38400, + E220_UART_57600, + E220_UART_115200 + + }; + + + enum eE220ParityBit + { + E220_UART_8N1=0, + E220_UART_8O1, + E220_UART_8E1, + E220_UART_8N1_bis + }; + + + enum e220AirDataRates + { + E220_AIR_RATE_24K = 0, + E220_AIR_RATE_24K_1, + E220_AIR_RATE_24K_2, + E220_AIR_RATE_48K, + E220_AIR_RATE_96K, + E220_AIR_RATE_192K, + E220_AIR_RATE_384K, + E220_AIR_RATE_625K + }; + + + enum e220PacketSizes + { + E220_PACKET_200, + E220_PACKET_128, + E220_PACKET_64, + E220_PACKET_32 + }; + + + enum e220TransmitPower + { + E220_TX_PWR_30, + E220_TX_PWR_27, + E220_TX_PWR_24, + E220_TX_PWR_21 + }; + + + enum e220WORCycles + { + E220_WOR_500MS, + E220_WOR_1000MS, + E220_WOR_1500MS, + E220_WOR_2000MS, + E220_WOR_2500MS, + E220_WOR_3000MS, + E220_WOR_3500MS, + E220_WOR_4000MS + }; + + + + CLoraModuleInterfaceStatus(); + + quint8 mModuleModel; + quint16 mModuleInternalAddress; + quint8 mModuleUARTParity; + quint8 mModuleUARTRate; + quint8 mModuleAirRate; + quint8 mModuleSubPacket; + quint8 mModuleRSSIEnabled; + quint8 mModuleTxPower; + quint8 mModuleInternalChannel; + quint8 mModuleRSSIByteEnabled; + quint8 mModuleTxMethod; + quint8 mModuleLBTEnabled; + quint8 mModuleWORCycle; + + quint8 mModuleAmbientRSSI; + quint8 mModuleLastRxRSSI; + + CLoraModuleInterfaceStatus& operator=(const CLoraModuleInterfaceStatus &rhs); + +}; + +QDataStream &operator<<(QDataStream &out, const CLoraModuleInterfaceStatus &source); +QDataStream &operator>>(QDataStream &in, CLoraModuleInterfaceStatus &dest); + +#endif // LORAMODULEINTERFACEDATA_H diff --git a/Sources/MasterCtrlInterface.cpp b/Sources/MasterCtrlInterface.cpp index e3fc5f5..d937560 100644 --- a/Sources/MasterCtrlInterface.cpp +++ b/Sources/MasterCtrlInterface.cpp @@ -62,7 +62,7 @@ int CMasterCtrlInterface::NewFrameReceived(int TargetDeviceID, int TargetDeviceA } case ETH_NETWK_CONNECTION_REFUSED: { - qDebug("MasterCtrl connection refused"); + qDebug("MasterCtrl connection refused for device ID: %d, address: %d",TargetDeviceID,TargetDeviceAddress); mNetworkCommSocket->close(); delete mNetworkCommSocket; mNetworkCommSocket = 0; diff --git a/Sources/ProtocolDefs.h b/Sources/ProtocolDefs.h index 32109b5..2c56b17 100644 --- a/Sources/ProtocolDefs.h +++ b/Sources/ProtocolDefs.h @@ -61,9 +61,12 @@ enum DEVICES_IDS ID_CHALET_INTERFACE, ID_CHALET_DEVICE, ID_ISPINDEL_INTERFACE, + ID_LORA_INTERFACE_DEVICE, + ID_LORA_INTERFACE_INTERFACE, ID_NB_DEVICE_ID }; + // Commands definitions enum MASTER_CMD @@ -288,6 +291,7 @@ enum CHALET_INTERFACE_CMDS CHALET_INTERFACE_GET_WIFI_STATUS_RESPONSE, + MAX_CHALET_INTERFACE_CMD }; @@ -314,8 +318,10 @@ enum CHALET_CMDS CHALET_REBOOT_CPU_RESPONSE, CHALET_GET_STORED_WIFI_SETTINGS_REQUEST, //14 CHALET_GET_STORED_WIFI_SETTINGS_RESPONSE, - CHALET_SET_STORED_WIFI_SETTINGS_REQUEST, + CHALET_SET_STORED_WIFI_SETTINGS_REQUEST, // CHALET_SET_STORED_WIFI_SETTINGS_RESPONSE, + CHALET_GET_FIRMWARE_VERSION_REQUEST, + CHALET_GET_FIRMWARE_VERSION_RESPONSE, CHALET_CLEAR_COMMS_STATISTICS_REQUEST, CHALET_CLEAR_COMMS_STATISTICS_RESPONSE, @@ -388,4 +394,14 @@ enum LORA_INTERFACE_CMDS MAX_LORA_IF_CMD }; +enum LORA_MODULE_IF_INTERFACE_CMDS +{ + LORA_MODULE_IF_INTERFACE_ACK = 1, + LORA_MODULE_IF_INTERFACE_GENERAL_STATUS_REQUEST, + LORA_MODULE_IF_INTERFACE_GENERAL_STATUS_RESPONSE, + + + MAX_LORA_MODULE_IF_INTERFACE_CMD +}; + #endif diff --git a/Sources/SystemGui.cpp b/Sources/SystemGui.cpp index c6a897c..49ebadf 100644 --- a/Sources/SystemGui.cpp +++ b/Sources/SystemGui.cpp @@ -11,11 +11,14 @@ CSystemGui::CSystemGui(QObject *parent) : QObject(parent) mChalet = new CChalet(mGui->mChaletGui); mPICUploader = new CPICUploader(mGui->mPICUploaderGui); mIspindel = new CIspindel(mGui->mIspindelGui); + mLoraModuleIF = new CLoraModuleInterface(mGui->mChaletGui); mSysTrayMgr = new CSystemTrayManager(); mSysTrayMgr->mProgramHandle=this; mSMSClient->mTrayIconMgr = mSysTrayMgr; + + } CSystemGui::~CSystemGui() @@ -28,6 +31,7 @@ CSystemGui::~CSystemGui() delete mChalet; delete mPICUploader; delete mIspindel; + delete mLoraModuleIF; } @@ -40,6 +44,7 @@ void CSystemGui::Start() mChalet->Start(); mPICUploader->Start(); mIspindel->Start(); + mLoraModuleIF->Start(); } diff --git a/Sources/SystemGui.h b/Sources/SystemGui.h index 49427c8..e7c2390 100644 --- a/Sources/SystemGui.h +++ b/Sources/SystemGui.h @@ -12,6 +12,7 @@ #include "CChalet.h" #include "PICUploader.h" #include "Ispindel.h" +#include "LoraModuleInterface.h" class CSystemGui : public QObject @@ -39,6 +40,7 @@ private: CChalet *mChalet; CPICUploader *mPICUploader; CIspindel *mIspindel; + CLoraModuleInterface *mLoraModuleIF; signals: diff --git a/SystemGui.pro b/SystemGui.pro index 8ab0a59..b5e825f 100644 --- a/SystemGui.pro +++ b/SystemGui.pro @@ -30,6 +30,7 @@ INCLUDEPATH += Sources\ Sources/Tower\ Sources/PICUploader\ Sources/Ispindel \ + Sources/LoRaModuleInterface SOURCES += \ Sources/Chalet/CChalet.cpp \ @@ -76,7 +77,10 @@ SOURCES += \ Sources/Ispindel/IspindelGUI.cpp \ Sources/Ispindel/Ispindel.cpp \ Sources/Ispindel/IspindelInterface.cpp \ - Sources/Ispindel/IspindelData.cpp + Sources/Ispindel/IspindelData.cpp \ + Sources/LoRaModuleInterface/LoraModuleInterface.cpp \ + Sources/LoRaModuleInterface/LoraModuleIFMasterCtrlInterface.cpp \ + Sources/LoRaModuleInterface/LoraModuleInterfaceData.cpp HEADERS += Sources/AbstractNetworkInterface.h \ Sources/Chalet/CChalet.h \ @@ -124,7 +128,10 @@ HEADERS += Sources/AbstractNetworkInterface.h \ Sources/Ispindel/IspindelGUI.h \ Sources/Ispindel/Ispindel.h \ Sources/Ispindel/IspindelInterface.h \ - Sources/Ispindel/IspindelData.h + Sources/Ispindel/IspindelData.h \ + Sources/LoRaModuleInterface/LoraModuleInterface.h \ + Sources/LoRaModuleInterface/LoraModuleIFMasterCtrlInterface.h \ + Sources/LoRaModuleInterface/LoraModuleInterfaceData.h FORMS += \ SMSGui.ui \ diff --git a/ui_ChaletGui.h b/ui_ChaletGui.h index c061f0d..26ff60a 100644 --- a/ui_ChaletGui.h +++ b/ui_ChaletGui.h @@ -73,11 +73,12 @@ public: QPushButton *mGetWifiStatusBtn; QLabel *mModuleIPAddressLbl; QGroupBox *mLoraIFGroupBox; - QLabel *mLoraIFModuleType; + QLabel *mLoraIFModuleStatus; QSpinBox *mLoraChannelSpinBox; QSpinBox *mLoraAddressSpinBox; QLabel *label_3; QLabel *label_4; + QLabel *mLoraModuleCommActivityLbl; void setupUi(QWidget *CChaletGui) { @@ -252,9 +253,9 @@ public: mLoraIFGroupBox = new QGroupBox(CChaletGui); mLoraIFGroupBox->setObjectName(QString::fromUtf8("mLoraIFGroupBox")); mLoraIFGroupBox->setGeometry(QRect(890, 20, 541, 201)); - mLoraIFModuleType = new QLabel(mLoraIFGroupBox); - mLoraIFModuleType->setObjectName(QString::fromUtf8("mLoraIFModuleType")); - mLoraIFModuleType->setGeometry(QRect(10, 20, 131, 61)); + mLoraIFModuleStatus = new QLabel(mLoraIFGroupBox); + mLoraIFModuleStatus->setObjectName(QString::fromUtf8("mLoraIFModuleStatus")); + mLoraIFModuleStatus->setGeometry(QRect(10, 20, 231, 141)); mLoraChannelSpinBox = new QSpinBox(mLoraIFGroupBox); mLoraChannelSpinBox->setObjectName(QString::fromUtf8("mLoraChannelSpinBox")); mLoraChannelSpinBox->setGeometry(QRect(470, 30, 51, 22)); @@ -269,6 +270,9 @@ public: label_4->setObjectName(QString::fromUtf8("label_4")); label_4->setGeometry(QRect(380, 51, 81, 20)); label_4->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); + mLoraModuleCommActivityLbl = new QLabel(mLoraIFGroupBox); + mLoraModuleCommActivityLbl->setObjectName(QString::fromUtf8("mLoraModuleCommActivityLbl")); + mLoraModuleCommActivityLbl->setGeometry(QRect(390, 80, 47, 16)); groupBox_2->raise(); groupBox->raise(); MainPageLabel->raise(); @@ -361,10 +365,11 @@ public: mGetWifiStatusBtn->setText(QCoreApplication::translate("CChaletGui", "GET", nullptr)); mModuleIPAddressLbl->setText(QCoreApplication::translate("CChaletGui", "Module IP Address:", nullptr)); mLoraIFGroupBox->setTitle(QCoreApplication::translate("CChaletGui", "Lora module Interface", nullptr)); - mLoraIFModuleType->setText(QCoreApplication::translate("CChaletGui", "Module Type: ???\n" + mLoraIFModuleStatus->setText(QCoreApplication::translate("CChaletGui", "Module Type: ???\n" "Module state: ??", nullptr)); label_3->setText(QCoreApplication::translate("CChaletGui", "Module Channel", nullptr)); label_4->setText(QCoreApplication::translate("CChaletGui", "Module Address", nullptr)); + mLoraModuleCommActivityLbl->setText(QCoreApplication::translate("CChaletGui", "Activity!!!", nullptr)); } // retranslateUi };