HLCC Documentation 2.2.0
Loading...
Searching...
No Matches
config.hpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2020-2025 European Southern Observatory (ESO)
2//
3// SPDX-License-Identifier: LGPL-3.0-only
4
13#ifndef HLCC_LSVSIM_CONFIG_HPP
14#define HLCC_LSVSIM_CONFIG_HPP
15
16#include <rad/config.hpp>
17#include "lsvsim/logger.hpp"
18
19namespace hlcc::lsvsim {
20/*
21 * Struct representing a state variable description
22 * with the state variable name and associated
23 * state variable type script to be used.
24 */
26 std::string sv_name;
27 std::string sv_type;
28};
29
30}// namespace hlcc::lsvsim
31
32namespace elt::configng {
33
34// Implementation of converter between hlcc::lsvsim::SvDescription and CiiConfigInstanceNode hierarchy
35// Decode method: Extract node values into hlcc::lsvsim::SvDescription
36// Encode method: construct nodes from values of hlcc::lsvsim::SvDescription
37template<>
38struct CiiConfigValueConverter<hlcc::lsvsim::SvDescription, CiiConfigInstanceNode> {
39 static bool Decode(const CiiConfigInstanceNode& node, hlcc::lsvsim::SvDescription &target) {
40 if (node.GetKind() != CiiConfigNodeKind::MAP || node.GetDataTypeName() != "SvDescription") {
41 std::cerr << "Conversion to SvDescription not possible" << std::endl;
42 return false;
43 }
44 target.sv_name = node["sv_name"].As<std::string>();
45 target.sv_type = node["sv_type"].As<std::string>();
46 return true;
47 }
48
49 static bool Encode(CiiConfigInstanceNode &node, const hlcc::lsvsim::SvDescription &source) {
50 if (node.GetKind() != elt::configng::CiiConfigNodeKind::MAP) {
51 return false;
52 }
53 node.Set("sv_name", elt::configng::CiiConfigInstanceNode::From(source.sv_name));
54 node.Set("sv_type", elt::configng::CiiConfigInstanceNode::From(source.sv_type));
55 return true;
56 }
57};
58
59} // namespace elt::configng
60
61namespace hlcc::lsvsim {
62
63const std::string KEY_CONFIG_PUB_DDS_PROFILE = "cfg/pub/dds/profile";
64const std::string KEY_CONFIG_PUB_DDS_NIC = "cfg/pub/dds/nic";
65const std::string KEY_CONFIG_PUB_DDS_FILE = "cfg/pub/dds/file";
66const std::string KEY_CONFIG_PUB_DDS_DOMAIN_ID_HLCC = "cfg/pub/dds/domain_id_hlcc";
67const std::string KEY_CONFIG_PUB_DDS_DOMAIN_ID_CCS_INS = "cfg/pub/dds/domain_id_ccs_ins";
68const std::string KEY_CONFIG_PUB_DDS_DOMAIN_ID_GENERAL = "cfg/pub/dds/domain_id_general";
69const std::string KEY_CONFIG_SIM_ACTIVITY_PERIOD_MS = "cfg/sim_activity_period_ms";
70const std::string KEY_CONFIG_SV_LIST = "cfg/sv_list";
71const std::string KEY_CONFIG_SV_SPECIFIC_CONFIG = "cfg/sv_specific_config";
72const std::string HEARTBEAT("mon/heartbeat");
73
74
81
88
89const std::string CONFIG_DEFAULT_VERSION = std::string(VERSION);
90const std::string CONFIG_DEFAULT_MODNAME = "hlccLsvsim";
91const std::string CONFIG_DEFAULT_PROCNAME = "lsvsim";
92const std::string CONFIG_DEFAULT_FILENAME = "config/lsvsim/config.yaml";
93const std::string CONFIG_DEFAULT_SCXML_FILENAME = "config/lsvsim/sm_radapp_default.xml";
94const std::string CONFIG_DEFAULT_SCXML_APPEND = "config/lsvsim/sm.xml";
95const std::string CONFIG_DEFAULT_LOG_LEVEL = "INFO";
96const std::string CONFIG_DEFAULT_LOG_PROPERTIES = "config/lsvsim/log.properties";
97const std::string CONFIG_DEFAULT_REQ_ENDPOINT = "zpb.rr://127.0.0.1:11008/";
98const std::string CONFIG_DEFAULT_OLDB_URI_PREFIX = "cii.oldb:///elt/tel";
100const int CONFIG_DEFAULT_OLDB_ASYNC_PERIOD = 0; // ms; we currently do not use RAD async OLDB writes, but still configure all standard attributes.
102
103const std::string CONFIG_DEFAULT_PUB_DDS_PROFILE = ""; // default: use ccs default profile
104const std::string CONFIG_DEFAULT_PUB_DDS_NIC = "";
105const std::string CONFIG_DEFAULT_PUB_DDS_FILE = "";
110const std::vector<SvDescription> CONFIG_DEFAULT_SV_LIST = {};
112
113/*
114 * Struct packing all configuration parameters
115 */
117 std::string modname;
118 std::string procname;
119 std::string filename;
120 std::string sm_scxml;
121 std::string sm_append;
122 std::string log_level;
123 std::string log_properties;
124 std::string req_endpoint;
125 std::string oldb_uri_prefix;
128 std::vector<SvDescription> sv_list;
131 std::string pub_dds_profile;
132 std::string pub_dds_nic;
133 std::string pub_dds_file;
137};
138
143class Config : public rad::Config {
144 public:
152 Config();
153
157 virtual ~Config();
158
165
166 Config(const Config&) = delete;
167 Config& operator=(const Config&) = delete;
168};
169
170} // namespace hlcc::lsvsim
171
172#endif // HLCC_LSVSIM_CONFIG_HPP
Definition config.hpp:143
Config & operator=(const Config &)=delete
Disable copy constructor.
virtual ~Config()
Definition config.cpp:97
Config(const Config &)=delete
ConfigPack GetConfigPack()
Definition config.cpp:48
Config()
Definition config.cpp:19
Default logger name.
Definition guideStarHelper.cpp:19
Definition actionMgr.cpp:30
const std::string CONFIG_DEFAULT_REQ_ENDPOINT
Definition config.hpp:97
const std::string KEY_CONFIG_PUB_DDS_NIC
Definition config.hpp:64
const std::string CONFIG_DEFAULT_SCXML_FILENAME
Definition config.hpp:93
const std::string CONFIG_DEFAULT_FILENAME
Definition config.hpp:92
const std::string KEY_CONFIG_SV_SPECIFIC_CONFIG
Definition config.hpp:71
const std::vector< std::string > OLDB_CFG_KEYS_STRING
Definition config.hpp:75
const std::string CONFIG_DEFAULT_VERSION
Definition config.hpp:89
const std::string KEY_CONFIG_PUB_DDS_DOMAIN_ID_HLCC
Definition config.hpp:66
const std::string CONFIG_DEFAULT_PUB_DDS_FILE
Definition config.hpp:105
const std::string CONFIG_DEFAULT_PROCNAME
Definition config.hpp:91
const std::string CONFIG_DEFAULT_PUB_DDS_PROFILE
Definition config.hpp:103
const std::string CONFIG_DEFAULT_SV_SPECIFIC_CONFIG
Definition config.hpp:111
const std::string KEY_CONFIG_PUB_DDS_DOMAIN_ID_CCS_INS
Definition config.hpp:67
const bool CONFIG_DEFAULT_TRS_HEALTH_ENABLED
Definition config.hpp:101
const uint32_t CONFIG_DEFAULT_PUB_DDS_DOMAIN_ID_HLCC
Definition config.hpp:106
const std::string CONFIG_DEFAULT_LOG_PROPERTIES
Definition config.hpp:96
const std::string KEY_CONFIG_PUB_DDS_FILE
Definition config.hpp:65
const std::string KEY_CONFIG_PUB_DDS_PROFILE
Definition config.hpp:63
const std::string CONFIG_DEFAULT_LOG_LEVEL
Definition config.hpp:95
const uint32_t CONFIG_DEFAULT_SIM_ACTIVITY_PERIOD_MS
Definition config.hpp:109
const int CONFIG_DEFAULT_OLDB_ASYNC_PERIOD
Definition config.hpp:100
const std::vector< std::string > OLDB_CFG_KEYS_UINT32
Definition config.hpp:82
const std::string CONFIG_DEFAULT_MODNAME
Definition config.hpp:90
const std::string CONFIG_DEFAULT_OLDB_URI_PREFIX
Definition config.hpp:98
const std::string KEY_CONFIG_SV_LIST
Definition config.hpp:70
const std::string KEY_CONFIG_PUB_DDS_DOMAIN_ID_GENERAL
Definition config.hpp:68
const std::string CONFIG_DEFAULT_PUB_DDS_NIC
Definition config.hpp:104
const std::vector< SvDescription > CONFIG_DEFAULT_SV_LIST
Definition config.hpp:110
const std::string HEARTBEAT("mon/heartbeat")
const std::string KEY_CONFIG_SIM_ACTIVITY_PERIOD_MS
Definition config.hpp:69
const uint32_t CONFIG_DEFAULT_PUB_DDS_DOMAIN_ID_CCS_INS
Definition config.hpp:107
const int CONFIG_DEFAULT_OLDB_CONN_TIMEOUT
Definition config.hpp:99
const std::string CONFIG_DEFAULT_SCXML_APPEND
Definition config.hpp:94
const uint32_t CONFIG_DEFAULT_PUB_DDS_DOMAIN_ID_GENERAL
Definition config.hpp:108
Definition ccsinsoldb.hpp:10
static bool Encode(CiiConfigInstanceNode &node, const hlcc::lsvsim::SvDescription &source)
Definition config.hpp:49
static bool Decode(const CiiConfigInstanceNode &node, hlcc::lsvsim::SvDescription &target)
Definition config.hpp:39
Definition config.hpp:116
std::uint32_t pub_dds_domain_id_hlcc
Definition config.hpp:134
uint32_t sim_activity_period_ms
Definition config.hpp:129
std::string pub_dds_profile
Definition config.hpp:131
std::string filename
Definition config.hpp:119
std::uint32_t pub_dds_domain_id_ccs_ins
Definition config.hpp:135
std::vector< SvDescription > sv_list
Definition config.hpp:128
std::string log_properties
Definition config.hpp:123
std::uint32_t pub_dds_domain_id_general
Definition config.hpp:136
std::string pub_dds_nic
Definition config.hpp:132
std::string sm_append
Definition config.hpp:121
std::string req_endpoint
Definition config.hpp:124
std::string log_level
Definition config.hpp:122
std::string sm_scxml
Definition config.hpp:120
std::string sv_specific_config
Definition config.hpp:130
std::string oldb_uri_prefix
Definition config.hpp:125
int conn_timeout
Definition config.hpp:126
std::string modname
Definition config.hpp:117
std::string procname
Definition config.hpp:118
std::string pub_dds_file
Definition config.hpp:133
int oldb_async_period
Definition config.hpp:127
Definition config.hpp:25
std::string sv_type
Definition config.hpp:27
std::string sv_name
Definition config.hpp:26