Initial commit

This commit is contained in:
torsten committed 2026-08-13 18:33:10 +02:00
commit b7d90b9afe
16245 files changed
+3396666

No files matched your search

+148
View File
@@ -0,0 +1,148 @@
#
# $Id$
# $HeadURL$
# $Author$
#
INCLUDE(MacroRTIDDSGen)
INCLUDE(MacroCodeGenIdl)
SET(xml_FILE xxx_service.xml)
#
# --- Library svcXxxCommon --------------------------------------------------------------------------------
#
SET(SRCS_common
xxx_export.h
logger.cpp
logger.h
)
# Generate xxx_enums.idl / xxx.idl
CODEGEN_IDL_SVC(SRCS_common ${xml_FILE})
# Generate *.cpp/*.hpp from idl
RTIDDSGEN(SRCS_common xxx_enums.idl)
RTIDDSGEN(SRCS_common xxx.idl)
# Generate xxx_dt[s,c]_types.h, xxx_ft[s,c]_types.h
CODEGEN_TOPIC_TYPEDEFS(SRCS_common ${xml_FILE})
# Generate xxx_[d|f]tc.h
CODEGEN_CLIENT_TOPICS_IFC(SRCS_common ${xml_FILE})
NGL_ADD_LIBRARY(AAR SV WS svcXxxCommon SHARED ${SRCS_common})
NGL_TARGET_INCLUDE_DIRECTORIES(svcXxxCommon
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/../
${CMAKE_CURRENT_BINARY_DIR}/../
)
NGL_TARGET_LINK_LIBRARIES(svcXxxCommon
PRIVATE
RTI::nddscpp2
PUBLIC
Qt5::Core
ddscore
NGLLogger
)
NGL_INSTALL_TARGET(svcXxxCommon)
#
# --- Library svcXxxClient --------------------------------------------------------------------------------
#
SET(SRCS_client
xxx_export.h
)
# generate xxx_[d|f]tc.h, xxx_[d|f]tc_impl.[cpp|h]
CODEGEN_CLIENT_TOPICS_IMPL(SRCS_client ${xml_FILE})
NGL_ADD_LIBRARY(AAR SV WS svcXxxClient SHARED ${SRCS_client})
NGL_TARGET_INCLUDE_DIRECTORIES(svcXxxClient
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/../
${CMAKE_CURRENT_BINARY_DIR}/../
)
NGL_TARGET_LINK_LIBRARIES(svcXxxClient
PRIVATE
RTI::nddscpp2
ddsconnector
PUBLIC
svcXxxCommon
ddsftc
)
NGL_INSTALL_TARGET(svcXxxClient)
#
# --- Library svcXxxServer --------------------------------------------------------------------------------
#
SET(SRCS_server
xxx_export.h
)
# generate xxx_[d|f]ts.h, xxx_[d|f]ts_impl.[cpp|h]
CODEGEN_SERVER_TOPICS(SRCS_server ${xml_FILE})
# Generate xxx_db_impl.cpp/.h, xxx_db.h
CODEGEN_DATABASE(SRCS_server ${xml_FILE})
NGL_ADD_LIBRARY(AAR SV svcXxxServer SHARED ${SRCS_server})
NGL_TARGET_INCLUDE_DIRECTORIES(svcXxxServer
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/../
${CMAKE_CURRENT_BINARY_DIR}/../
)
NGL_TARGET_LINK_LIBRARIES(svcXxxServer
PRIVATE
RTI::nddscpp2
ddsconnector
ddsfts
ngldb
PUBLIC
svcXxxCommon
)
NGL_INSTALL_TARGET(svcXxxServer)
#
# --- Topic Type Plugin --------------------------------------------------------------
#
CREATE_TOPIC_TYPE_PLUGIN(${xml_FILE})
#
# --- Executable svcXxxXxxXxx (sXXX) -------------------------------------------------
#
SET(SRCS_exe
main.cpp
main_handler.cpp
main_handler.h
dds_handler.cpp
dds_handler.h
settings.cpp
settings.h
${xml_FILE}
)
# Generate xxx.sql, xxx.xml
CODEGEN_SQL(SRCS_exe ${xml_FILE})
NGL_ADD_SVC_ICON(SRCS_exe)
NGL_ADD_EXECUTABLE(AAR SV svcXxxXxxXxx ${SRCS_exe})
NGL_TARGET_LINK_LIBRARIES(svcXxxXxxXxx
Qt5::Core
svcXxxCommon
svcXxxServer
svcCorePacemaker
ddsconnector
nglsettings
ProjectConfig
LtsCommandLineParser
NGLLogger
nglcoreapplication
ngltools
)
NGL_INSTALL_TARGET(svcXxxXxxXxx)
NGL_INSTALL(AAR SV FILES log4cxx_xxx.props DESTINATION bin)
NGL_ADD_TARGET_LINK(svcXxxXxxXxx sXXX)
# Uncomment if necessary
#ADD_SUBDIRECTORY(UnitTests)
#ADD_SUBDIRECTORY(ModuleTests)
+61
View File
@@ -0,0 +1,61 @@
/**
* DdsHandler for DDS
* $Id$
* $HeadURL$
* $Author$
* Created by Hanna E. Rathje, SLSE, 2015-09-02
*/
#include "dds_handler.h"
#include "xxx_dts.h"
#include "xxx_fts.h"
#include <DDS/DTS/generic_dts_impl.h>
#include <DDS/Core/pacemaker.h>
namespace XxxXxxXxx
{
DdsHandler::DdsHandler(int domainId, int exerciseId)
: m_ddsConnector(std::make_shared<DDSConnector::DdsConnector>(domainId, IDL::PartitionType::FIXME, exerciseId))
, m_logger(getLogger("DdsHandler"))
{
DEBUG_LOG(m_logger) << "DdsHandler(" << domainId << ") for partition: " << m_ddsConnector->getDefaultPartition();
}
DdsHandler::~DdsHandler()
{}
bool DdsHandler::init(const QStringList &qosFileList)
{
if(!m_ddsConnector->init(qosFileList))
{
ERROR_LOG(m_logger) << "Error initializing dds connections - aborting";
return false;
}
// default initialize Publisher and Subscriber
m_ddsConnector->initPublisherSubscriber();
// Pacemaker
m_dtsCurrentRunningState.reset(m_ddsConnector->createDTS<DTS::CurrentRunningStateImpl>());
assert(m_dtsCurrentRunningState.get());
m_pacemaker = std::make_shared<Core::Pacemaker>(m_dtsCurrentRunningState);
m_ddsDts = XxxXxxXxx::Interface::Dts::create(m_ddsConnector);
m_ddsFts = XxxXxxXxx::Interface::Fts::create(m_ddsConnector);
bool bRet = m_ddsDts->enableAll();
INFO_LOG(m_logger) << "Dts initialised";
bRet &= m_ddsFts->enableAll();
INFO_LOG(m_logger) << "Fts initialised";
// TODO: call at the end of main_handler init:
//m_ddsHandler->pacemaker()->setNewState(Core::RunningState::Running);
return bRet;
}
} // Namespace PDM
+57
View File
@@ -0,0 +1,57 @@
/**
* DdsHandler for DDS
* $Id$
* $HeadURL$
* $Author$
* Created by Hanna E. Rathje, SLSE, 2015-09-02
*/
#pragma once
#include <DDS/DDSConnector/dds_connector.h>
#include <DDS/Core/core_dts_types.h>
#include <XxxXxxXxx/xxx_dts.h>
#include <XxxXxxXxx/xxx_fts.h>
#include "logger.h"
namespace Core
{
class Pacemaker;
}
namespace XxxXxxXxx
{
class DdsHandler final
{
public:
DdsHandler(int domainId, int exerciseId);
~DdsHandler();
bool init(const QStringList &qosFileList = QStringList());
std::shared_ptr<Core::Pacemaker> pacemaker() const
{
return m_pacemaker;
}
std::shared_ptr<XxxXxxXxx::Interface::Dts> dts() const
{
return m_ddsDts;
}
std::shared_ptr<XxxXxxXxx::Interface::Fts> fts() const
{
return m_ddsFts;
}
private:
std::shared_ptr<DDSConnector::DdsConnector> m_ddsConnector;
std::shared_ptr<DTS::CurrentRunningState> m_dtsCurrentRunningState;
std::shared_ptr<Core::Pacemaker> m_pacemaker;
std::shared_ptr<XxxXxxXxx::Interface::Dts> m_ddsDts;
std::shared_ptr<XxxXxxXxx::Interface::Fts> m_ddsFts;
NGL::INGLLogger &m_logger;
};
} // namespace XxxXxxXxx
+80
View File
@@ -0,0 +1,80 @@
log4j.reset=true
log4j.rootLogger=WARN, file
# Service: XxxXxxXxx
###########################################################
#log4j.logger.XXX=DEBUG
#log4j.logger.XXX.main=DEBUG
#log4j.logger.XXX.DdsHandler=DEBUG
#log4j.logger.XXX.MainHandler=DEBUG
#
# Lts::RollingFileAppender
log4j.appender.file=Lts::RollingFileAppender
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=9
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d %-5p %c |#| %m (%.50F:%L) %n
# Appnd_Console
###########################################################
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern= %d %p %c %c{1} - %m (%-.30F:%L) %n
# Appnd_Syslog
###########################################################
log4j.appender.syslog=org.apache.log4j.SyslogAppender
log4j.appender.syslog.Threshold=ERROR
log4j.appender.syslog.SysLogHost=localhost
log4j.appender.syslog.Facility=LOCAL7
log4j.appender.syslog.layout=org.apache.log4j.PatternLayout
log4j.appender.syslog.layout.ConversionPattern= %-4r %-5p %c %x - %m
log4j.appender.syslog.LevelRangeFilter.AcceptOnMatch=true
log4j.appender.syslog.LevelRangeFilter.LevelMin=INFO
log4j.appender.syslog.LevelRangeFilter.LevelMax=FATAL
###########################################################
###########################################################
###########################################################
# 1) Available Levels in LOG4CXX Version 0.10.0:
# TRACE,
# DEBUG,
# INFO,
# WARN,
# ERROR
# FATAL
#
# d = date/time
# p = priority (Level)
# c = category/channel
# m = message
# F = file
# L = line
# n = platform dependent line separator character or characters.
# ....
#
# Examples for console:
# a)
# %d %p %c #%m# (%.50F:%L)%n
# date/time
# priority
# category/channel
# #message#
# (Maximal 50Character des Filename von rechts:Line)
# line separator
#
# b)
# %d (%.15F:%L) %-5p %c |#| %m%n
# date/time
# (Maximal 15Character des Filename von rechts:Line)
# priority, Right pad with spaces if the priority name is less than 5 characters long.
# category/channel
# message
# line separator
#
# Examples for files:
+37
View File
@@ -0,0 +1,37 @@
/**
* @RDE_HEADER@
* Building Config - logging facility
* $Id$
* $HeadURL$
* $Author$
*/
#include "logger.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
namespace XxxXxxXxx
{
LOGGER_T getLogger(const char *name)
{
static const char ns[] = "XXX.";
std::string loggerName;
const size_t len = strlen(name);
loggerName.reserve(sizeof(ns) + len);
loggerName.append(ns, sizeof(ns) - 1);
loggerName.append(name, len);
try
{
return NGL::NGLLoggerBootstrap::getNGLRootLogger().
getNGLLogger(loggerName);
}
catch (const std::exception &ex)
{
fprintf(stderr, "Error retrieving logger: %s", ex.what());
abort();
}
}
} // namespace XxxXxxXxx
+23
View File
@@ -0,0 +1,23 @@
/**
* @RDE_HEADER@
* Logging for XxxXxxXxx
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include <NGLLogger/INGLLogger.h>
#include "xxx_export.h"
namespace XxxXxxXxx
{
using LOGGER_T = NGL::INGLLogger &;
XXX_COMMON_EXPORT LOGGER_T getLogger(const char *name);
inline LOGGER_T getLogger(const QString &loggerName)
{
return getLogger(loggerName.toUtf8().constData());
}
} // namespace XxxXxxXxx
+42
View File
@@ -0,0 +1,42 @@
/**
* @RDE_HEADER@
* main for XxxXxxXxx
* $Id$
* $HeadURL$
* $Author$
*/
#include <nglapplication/nglcoreapplication.h>
#include <LtsCommandLineParser/LtsCommandLineParser.h>
#include "main_handler.h"
#include "logger.h"
#include "settings.h"
int main(int argc, char **argv)
{
NGLCoreApplication app(argc, argv);
LtsCommandLineParser::LtsCommandLineParser options;
if (!options.init())
return -1;
app.createLogger("XXX", options.exerciseId());
XxxXxxXxx::Settings::setIniFile(options.iniFile());
int iRet = -3;
{
std::unique_ptr<XxxXxxXxx::MainHandler> mainHandler(new XxxXxxXxx::MainHandler);
if (!mainHandler->init(options.domainId(), options.exerciseId()))
return iRet;
STARTUP_LOG(app.baseLogger());
iRet = app.exec();
SHUTDOWN_LOG(app.baseLogger());
}
return iRet;
}
+61
View File
@@ -0,0 +1,61 @@
/**
* MainHandler for AssetManagement
* $Id$
* $HeadURL$
* $Author$
*/
#include "main_handler.h"
#include <DDS/DDSConnector/dds_connector.h>
#include <ngldb/db_service_handler.h>
namespace XxxXxxXxx
{
MainHandler::MainHandler(QObject *parent)
: QObject(parent)
, m_ddsHandler(nullptr)
, m_dbHandler(nullptr)
, m_logger(getLogger("MainHandler"))
{}
MainHandler::~MainHandler()
{
m_ddsHandler = nullptr;
m_dbHandler = nullptr;
}
bool MainHandler::init(int domainId)
{
// initialize database
m_dbHandler = std::make_shared<DbHandler>();
if (!m_dbHandler->init(0, Settings::settings(), m_logger))
{
ERROR_LOG(m_logger) << "Initialisation dbHandler failed.";
return false;
}
DEBUG_LOG(m_logger) << "Initialisation dbHandler succesful.";
// initialize DDS
m_ddsHandler = std::make_shared<DdsHandler>(domainId);
if (!m_ddsHandler->init())
{
ERROR_LOG(m_logger) << "Initialisation ddsHandler failed.";
return false;
}
DEBUG_LOG(m_logger) << "Initialisation ddsHandler succesful.";
// TODO
return true;
}
std::shared_ptr<DatabaseInterface> MainHandler::db() const
{
return m_dbHandler->db();
}
} // namespace XxxXxxXxx
+42
View File
@@ -0,0 +1,42 @@
/**
* MainHandler for AereaEffectSimulation
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include <QObject>
#include <memory>
#include "dds_handler.h"
#include "xxx_db.h"
#include "logger.h"
namespace NGLDB
{
template <typename DB> class DbServiceHandler;
}
namespace XxxXxxXxx
{
using DbHandler = NGLDB::DbServiceHandler<DatabaseInterface>;
class MainHandler : public QObject
{
Q_OBJECT
public:
explicit MainHandler(QObject *parent = nullptr);
~MainHandler();
bool init(int domainId);
std::shared_ptr<DdsHandler> dds() const { return m_ddsHandler; }
std::shared_ptr<DatabaseInterface> db() const;
private:
std::shared_ptr<DdsHandler> m_ddsHandler;
std::shared_ptr<DbHandler> m_dbHandler;
NGL::INGLLogger &m_logger;
};
} // namespace XxxXxxXxx
+42
View File
@@ -0,0 +1,42 @@
/**
* Settings for XxxXxxXxx
* $Id$
* $HeadURL$
* $Author$
*/
#include "settings.h"
#include <QtCore/QSettings>
#include <nglsettings/nglsettings_settings.h>
#include <ngltools/ngltools_filesystem.h>
namespace XxxXxxXxx
{
class NGLSettingsClass : public NGL::Settings
{
public:
NGLSettingsClass()
: NGL::Settings(s_iniFile.isEmpty() ? NGL::findProjectConfigFile() : s_iniFile)
{}
static void setIniFile(const QString &fn)
{
s_iniFile = fn;
}
static QString s_iniFile;
};
QString NGLSettingsClass::s_iniFile;
Q_GLOBAL_STATIC(NGLSettingsClass, s)
//-----------------------------------------------------------------------------
NGL::Settings *Settings::settings()
{
return s();
}
//-----------------------------------------------------------------------------
void Settings::setIniFile(const QString &ini)
{
NGLSettingsClass::setIniFile(ini);
}
} // namespace XxxXxxXxx
+24
View File
@@ -0,0 +1,24 @@
/**
* Settings for XxxXxxXxx
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include <QString>
namespace NGL
{
class Settings;
}
namespace XxxXxxXxx
{
namespace Settings
{
NGL::Settings *settings();
void setIniFile(const QString &ini);
}
} // namespace XxxXxxXxx
+52
View File
@@ -0,0 +1,52 @@
/**
* Export definitions
* $Id$
* $HeadURL$
* $Author$
* Created by Hanna E. Rathje, SLSE, 2015-08-04
*/
#pragma once
#include <QtCore/qglobal.h>
#ifndef XXX_COMMON_EXPORT
# ifdef BUILD_STATIC_LIBRARIES
# define XXX_COMMON_EXPORT
# else
# if defined(MAKE_SVCXXXCOMMON_LIB)
# define XXX_COMMON_EXPORT Q_DECL_EXPORT
# ifndef WIN32
# ifdef NDDSUSERDllExport
# undef NDDSUSERDllExport
# endif
# define NDDSUSERDllExport Q_DECL_EXPORT
# endif
# else
# define XXX_COMMON_EXPORT Q_DECL_IMPORT
# endif
# endif
#endif
#ifndef XXX_CLIENT_EXPORT
# ifdef BUILD_STATIC_LIBRARIES
# define XXX_CLIENT_EXPORT
# else
# if defined(MAKE_SVCXXXCLIENT_LIB)
# define XXX_CLIENT_EXPORT Q_DECL_EXPORT
# else
# define XXX_CLIENT_EXPORT Q_DECL_IMPORT
# endif
# endif
#endif
#ifndef XXX_SERVER_EXPORT
# ifdef BUILD_STATIC_LIBRARIES
# define XXX_SERVER_EXPORT
# else
# if defined(MAKE_SVCXXXSERVER_LIB)
# define XXX_SERVER_EXPORT Q_DECL_EXPORT
# else
# define XXX_SERVER_EXPORT Q_DECL_IMPORT
# endif
# endif
#endif
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<service namespace="XxxXxxXxx" procNames="XxxXxxXxx" abbreviation="XXX">
<!-- Will be generated by EnterpriseArchitect javascript
Copy from EA to this directory
-->
</service>