181 lines
3.4 KiB
C++
181 lines
3.4 KiB
C++
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
#include <QObject>
|
|
#include "AppComponent.hpp"
|
|
#include "logger.h"
|
|
#include <nglsettings/nglsettings_settings.h>
|
|
#include <QtCore/QMutex>
|
|
#include <PrtCnv/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 QMutex m_accessMutex;
|
|
|
|
QString m_dbDriver;
|
|
QString m_dbHostName;
|
|
QString m_dbDatabaseName;
|
|
QString m_dbSchemaName;
|
|
QString m_dbUserName;
|
|
QString m_dbPassword;
|
|
|
|
NGL::INGLLogger &m_logger;
|
|
};
|
|
|
|
}
|