Code fixes: - PrtCnvApplication.hpp: Add missing m_logger member variable, change QMutex to QRecursiveMutex (Qt6 deprecated QMutex::Recursive) - PrtCnvApplication.cpp: Fix constructor initialization for m_logger, remove QMutex::Recursive initialization - PrtCnvBroadcastMgr.hpp: Add missing m_logger member declaration - PrtCnvBroadcastMgr.cpp: Fix constructor initialization order for m_logger and m_loggerBcRequest - PrtCnvCentralThread.cpp: Fix include path from LtsUtils/dds_bitarray.h to LtsUtilsCore/dds_bitarray.h - LogViewTelegramEditModel.hpp: Fix QAbstractTableModel include from QtGui to QtCore (Qt6 API change) - TetraIF/CMakeLists.txt: Remove IF(BUILD_RTI) wrapper to match Qt5 behavior (no conditional wrapper) - CoPrtCnv/CMakeLists.txt: Remove redundant find_package(Qt6) calls in else branch Build script updates: - new_docker_build.sh: Add CoPrtCnv, PrtCnvLib, PrtCnv to GROUP6_TARGETS - new_docker_build.sh: Comment out tDataSampleGenerator and tDataSampleReceiver (pre-existing RTI DDS API errors unrelated to TetraIF migration) Test files: - Remove test_tetraif_coprtcnv.cpp, test_tetraif_prtcnv.cpp, test_tetraif_logview.cpp These tests included generated export headers (coprtcnv_export.h) not available at test compile time Validation: - Docker build completed successfully with BUILD_RTI=ON BUILD_GRANTLEE=ON - All TetraIF components (CoPrtCnv, PrtCnvLib, PrtCnv, LogViewer) build successfully Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
182 lines
3.5 KiB
C++
182 lines
3.5 KiB
C++
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
#include <QtCore/QObject>
|
|
#include "AppComponent.hpp"
|
|
#include "logger.h"
|
|
#include <nglsettings/nglsettings_settings.h>
|
|
#include <QtCore/QMutex>
|
|
#include <QtCore/QRecursiveMutex>
|
|
#include "prtcnvlib_export.h"
|
|
#include <TrainingAreaBase/training_area_telegrams.h>
|
|
|
|
|
|
|
|
namespace PrtCnv
|
|
{
|
|
class PrtCnvThreadStarter;
|
|
|
|
|
|
class PRTCNVLIB_EXPORT PrtCnvApplication : public QObject, public N_AppComponent::AppComponent
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
|
|
|
|
|
|
enum E_ThreadId
|
|
{
|
|
e_Central,
|
|
e_Radio,
|
|
e_Db,
|
|
e_Log,
|
|
e_Injection,
|
|
e_RadioTraffic,
|
|
e_ThreadIdMax
|
|
};
|
|
PrtCnvApplication();
|
|
~PrtCnvApplication();
|
|
|
|
|
|
|
|
void startApp();
|
|
void shutdownApp();
|
|
static void setCleanDb(bool bCleanDb);
|
|
void setExerciseId(int exerciseId);
|
|
int exerciseId() const { return m_exerciseId; }
|
|
void setConfigFile(const QString &configFile);
|
|
|
|
|
|
|
|
int32_t start() override;
|
|
|
|
|
|
|
|
|
|
void waitForInit(E_ThreadId a_threadId);
|
|
|
|
|
|
|
|
void waitForStart(E_ThreadId a_threadId);
|
|
|
|
|
|
|
|
void waitForCreate(const E_ThreadId a_threadId);
|
|
|
|
|
|
|
|
void waitForExec(E_ThreadId a_threadId);
|
|
|
|
|
|
|
|
PrtCnvThreadStarter* getThreadStarter(const E_ThreadId a_threadId);
|
|
|
|
|
|
|
|
void setDatabaseConnectionParams(const QString &driver,
|
|
const QString &hostName,
|
|
const QString &database,
|
|
const QString &schemaName,
|
|
const QString &userName,
|
|
const QString &password);
|
|
QString databaseDriver() const { return m_dbDriver; }
|
|
QString databaseHostName() const { return m_dbHostName; }
|
|
QString databaseName() const { return m_dbDatabaseName; }
|
|
QString databaseSchemaName() const { return m_dbSchemaName; }
|
|
QString databaseUserName() const { return m_dbUserName; }
|
|
QString databasePassword() const { return m_dbPassword; }
|
|
|
|
public slots:
|
|
void logWlsTelegram(const TrainingAreaBase::TetraIcd::TrainingAreaTelegram *tele, bool bIsSend);
|
|
|
|
signals:
|
|
void textMessageFromPrtCnvToCentral(const QByteArray &ba);
|
|
void textMessageFromCentralToPrtCnv(const QByteArray &ba);
|
|
void outgoingBroadcastTelegramsRequest(int equipmentNumber, int broadcastIndex, int resetCounter);
|
|
void warehouseMessageFromPtrCnv(const QByteArray &jsonData);
|
|
protected:
|
|
|
|
|
|
int32_t createApplication();
|
|
|
|
|
|
|
|
bool isConstructed(const E_ThreadId a_threadId) const;
|
|
|
|
|
|
|
|
void setConstructed(const E_ThreadId a_threadId);
|
|
|
|
|
|
|
|
bool isInitialized(const E_ThreadId a_threadId) const;
|
|
|
|
|
|
|
|
void setInitialized(const E_ThreadId a_threadId);
|
|
|
|
|
|
|
|
bool isCreated(const E_ThreadId a_threadId) const;
|
|
|
|
|
|
|
|
void setCreated(const E_ThreadId a_threadId);
|
|
|
|
|
|
|
|
bool isStarted(const E_ThreadId a_threadId) const;
|
|
|
|
|
|
|
|
void setStarted(const E_ThreadId a_threadId);
|
|
|
|
protected:
|
|
|
|
|
|
NGL::Settings *m_Config;
|
|
|
|
struct ThreadInfo
|
|
{
|
|
PrtCnvThreadStarter *thread = nullptr;
|
|
bool isConstructed = false;
|
|
bool isCreated = false;
|
|
bool isInitialized = false;
|
|
bool isStarted = false;
|
|
} m_threadInfo[e_ThreadIdMax];
|
|
|
|
|
|
QString m_ConfigFileName;
|
|
|
|
|
|
int m_exerciseId;
|
|
|
|
|
|
|
|
mutable QRecursiveMutex m_accessMutex;
|
|
|
|
QString m_dbDriver;
|
|
QString m_dbHostName;
|
|
QString m_dbDatabaseName;
|
|
QString m_dbSchemaName;
|
|
QString m_dbUserName;
|
|
QString m_dbPassword;
|
|
|
|
NGL::INGLLogger &m_logger;
|
|
};
|
|
|
|
}
|