HLCC Documentation 3.0.0
Loading...
Searching...
No Matches
oldbInterface.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_TRKSIM_OLDBINTERFACE_HPP
14#define HLCC_TRKSIM_OLDBINTERFACE_HPP
15
16#include <string>
17#include <vector>
18#include <memory> // shared_ptr
19#include <optional>
20
21#include "Msif.hpp"
22
24#include <boost/asio/thread_pool.hpp>
25#include <taiclock/taiClock.hpp>
26#include <ptk/posastro.hpp>
27#include <rad/oldbInterface.hpp>
28#include <rad/cii/oldbAdapter.hpp>
29#include "Ccsinsif.hpp"
30#include "Ccsinsdetif.hpp"
32
33#include "trksim/monitoring.hpp"
34
35
36namespace hlcc::trksim {
37
38/*
39 * Monitor OLDB Attributes.
40 */
41const std::string KEY_MON_TARG_CIRS_RA = "ms/lsv/trackctr/mon/ra"; // CIRS
42const std::string KEY_MON_TARG_CIRS_DEC = "ms/lsv/trackctr/mon/dec";
43const std::string KEY_MON_TARG_ALT = "ms/lsv/trackest/mon/estimate/sv/track/target_alt";
44const std::string KEY_MON_TARG_AZ = "ms/lsv/trackest/mon/estimate/sv/track/target_az";
45const std::string KEY_MON_CURR_ALT = "ms/lsv/trackest/mon/estimate/sv/track/current_alt";
46const std::string KEY_MON_CURR_AZ = "ms/lsv/trackest/mon/estimate/sv/track/current_az";
47const std::string KEY_MON_STATE_APP = "mon/state"; // HLCC application style: combines application and estimation
48const std::string KEY_MON_STATE_TRACK = "ms/lsv/trackest/mon/estimate/sv/track/state"; // MS LSV style: Tracking state separate, from estimator
49const std::string KEY_MON_TRS_HKS_DATA_OK = "mon/trs/hks_data_ok";
50const std::string KEY_MON_TRS_HKS_DATA_DUT1 = "mon/trs/hks_dut1";
51const std::string KEY_MON_TRS_HKS_DATA_XP = "mon/trs/hks_xp";
52const std::string KEY_MON_TRS_HKS_DATA_YP = "mon/trs/hks_yp";
53
54
55class Config;
56
57struct OldbData{
58 /* TODO: make the following fields private with getters. */
59
60
61 std::shared_ptr<::ccscommonif::RaDec> target_ra_dec_cirs; // CIRS
62 std::shared_ptr<::hlcc::oldbmux::ObservablePublisher<::ccscommonif::RaDec>> target_ra_dec_cirs_publisher;
63
64 std::shared_ptr<::ccscommonif::AltAz> target_alt_az;
65 std::shared_ptr<::hlcc::oldbmux::ObservablePublisher<::ccscommonif::AltAz>> target_alt_az_publisher;
66
67 std::shared_ptr<::ccscommonif::AltAz> current_alt_az;
68 std::shared_ptr<::hlcc::oldbmux::ObservablePublisher<::ccscommonif::AltAz>> current_alt_az_publisher;
69
70// std::shared_ptr<::ccsinsif::TrackingData> tracking_data;
71// std::shared_ptr<::hlcc::oldbmux::ObservablePublisher<::ccsinsif::TrackingData>> tracking_data_publisher;
72//
73// std::shared_ptr<::ccsinsif::TrackingDataExtended> tracking_data_extended;
74// std::shared_ptr<::hlcc::oldbmux::ObservablePublisher<::ccsinsif::TrackingDataExtended>> tracking_data_extended_publisher;
75
76 // Removed mudpi send of pk positions(ETCS-1027)
77
78 std::shared_ptr<::stdif::Status> status_app;
79 std::shared_ptr<::hlcc::oldbmux::ObservablePublisher<::stdif::Status>> status_app_publisher;
80
81 // Port oldb->dds
82 std::shared_ptr<::msif::TrackTarget> track_target;
83 std::shared_ptr<::hlcc::oldbmux::ObservablePublisher<::msif::TrackTarget>> track_target_publisher;
84
85 std::shared_ptr<::msif::TrackSv> track_sv;
86 std::shared_ptr<::hlcc::oldbmux::ObservablePublisher<::msif::TrackSv>> track_sv_publisher;
87
88 std::shared_ptr<::hlcc::oldbmux::CiiOldbDataPointAsync<double>> heartbeat_subscriber;
89
90};
91
95class OldbInterface : public rad::OldbInterface {
96 public:
103 OldbInterface(const std::string& prefix = "");
104
108 virtual ~OldbInterface();
109
114 void Init(::hlcc::trksim::Config& config);
115
119 void PublishTargets(ElapsedTimeStats& stats);
120
124 void PublishCurrentPositions(ElapsedTimeStats& stats, const bool& radec_validity, taiclock::TaiClock::time_point timestamp);
125
130 //void PublishCurrentTime(ElapsedTimeStats& stats);
131
136 ptk::HorizonPositionEsoTimestamped GetCurrentObservedAltAz();
137
143
150 void SetControlState(const std::string& value,
151 const taiclock::TaiClock::time_point& timestamp,
152 ElapsedTimeStats& stats);
153
157 void SetTrackingState(const std::string& value,
158 const taiclock::TaiClock::time_point& timestamp,
159 ElapsedTimeStats& stats);
160
161 void SetConfig(const rad::Config& cfg); // solves hidden virtual function
162
163 void SetControlState(const std::string& value); // solves hidden virtual function
164
171 void SetTrsHksDataState(bool hks_data_ok);
172
178 void WriteTrsHksData(ptk::Dut1 dut1, ptk::Arcsecs xp, ptk::Arcsecs yp);
179
186 std::optional<ptk::Dut1> ReadTrsHksDut1();
187
194 std::optional<ptk::Arcsecs> ReadTrsHksPolar(std::string oldb_key);
195
196
197 void UpdateHeartbeat();
198 OldbInterface(const OldbInterface&) = delete;
201
202 private:
206 std::tuple<std::optional<double>, std::optional<std::chrono::system_clock::time_point>>
207 ReadTrsHksParamInternal(std::string oldb_key);
208
218 boost::asio::thread_pool m_async_exec {5};
219
225 log4cplus::Logger m_logger_oldb_async;
226
227 OldbData m_oldb_data;
228};
229
230} // namespace hlcc::trksim
231
232#endif // HLCC_TRKSIM_OLDBINTERFACE_HPP
Definition config.hpp:254
Definition monitoring.hpp:31
void PublishTargets(ElapsedTimeStats &stats)
Definition oldbInterface.cpp:391
OldbInterface(const std::string &prefix="")
Definition oldbInterface.cpp:40
OldbData & GetOldbData()
Disable assignment operator.
Definition oldbInterface.cpp:636
ptk::HorizonPositionEsoTimestamped GetCurrentObservedAltAz()
Definition oldbInterface.cpp:601
void Init(::hlcc::trksim::Config &config)
Definition oldbInterface.cpp:66
void SetTrackingState(const std::string &value, const taiclock::TaiClock::time_point &timestamp, ElapsedTimeStats &stats)
Definition oldbInterface.cpp:493
void SetTrsHksDataState(bool hks_data_ok)
Definition oldbInterface.cpp:512
OldbInterface & operator=(const OldbInterface &)=delete
Disable copy constructor.
void SetConfig(hlcc::trksim::Config &cfg)
Definition oldbInterface.cpp:451
void WriteTrsHksData(ptk::Dut1 dut1, ptk::Arcsecs xp, ptk::Arcsecs yp)
Definition oldbInterface.cpp:520
void PublishCurrentPositions(ElapsedTimeStats &stats, const bool &radec_validity, taiclock::TaiClock::time_point timestamp)
Definition oldbInterface.cpp:410
std::optional< ptk::Dut1 > ReadTrsHksDut1()
Definition oldbInterface.cpp:565
virtual ~OldbInterface()
Definition oldbInterface.cpp:49
void SetControlState(const std::string &value, const taiclock::TaiClock::time_point &timestamp, ElapsedTimeStats &stats)
Definition oldbInterface.cpp:481
std::optional< ptk::Arcsecs > ReadTrsHksPolar(std::string oldb_key)
Definition oldbInterface.cpp:586
OldbInterface(const OldbInterface &)=delete
void UpdateHeartbeat()
Definition oldbInterface.cpp:505
Definition actionMgr.cpp:35
const std::string KEY_MON_CURR_ALT
Definition oldbInterface.hpp:45
const std::string KEY_MON_TARG_CIRS_RA
Definition oldbInterface.hpp:41
const std::string KEY_MON_CURR_AZ
Definition oldbInterface.hpp:46
const std::string KEY_MON_TARG_CIRS_DEC
Definition oldbInterface.hpp:42
const std::string KEY_MON_STATE_TRACK
Definition oldbInterface.hpp:48
const std::string KEY_MON_TARG_AZ
Definition oldbInterface.hpp:44
const std::string KEY_MON_TRS_HKS_DATA_YP
Definition oldbInterface.hpp:52
const std::string KEY_MON_TRS_HKS_DATA_OK
Definition oldbInterface.hpp:49
const std::string KEY_MON_TRS_HKS_DATA_DUT1
Definition oldbInterface.hpp:50
const std::string KEY_MON_TARG_ALT
Definition oldbInterface.hpp:43
const std::string KEY_MON_TRS_HKS_DATA_XP
Definition oldbInterface.hpp:51
const std::string KEY_MON_STATE_APP
Definition oldbInterface.hpp:47
Definition oldbInterface.hpp:57
std::shared_ptr<::hlcc::oldbmux::ObservablePublisher<::ccscommonif::RaDec > > target_ra_dec_cirs_publisher
Definition oldbInterface.hpp:62
std::shared_ptr<::hlcc::oldbmux::ObservablePublisher<::ccscommonif::AltAz > > target_alt_az_publisher
Definition oldbInterface.hpp:65
std::shared_ptr<::ccscommonif::AltAz > target_alt_az
Definition oldbInterface.hpp:64
std::shared_ptr<::stdif::Status > status_app
Definition oldbInterface.hpp:78
std::shared_ptr<::hlcc::oldbmux::CiiOldbDataPointAsync< double > > heartbeat_subscriber
Definition oldbInterface.hpp:88
std::shared_ptr<::hlcc::oldbmux::ObservablePublisher<::ccscommonif::AltAz > > current_alt_az_publisher
Definition oldbInterface.hpp:68
std::shared_ptr<::hlcc::oldbmux::ObservablePublisher<::stdif::Status > > status_app_publisher
Definition oldbInterface.hpp:79
std::shared_ptr<::msif::TrackTarget > track_target
Definition oldbInterface.hpp:82
std::shared_ptr<::hlcc::oldbmux::ObservablePublisher<::msif::TrackTarget > > track_target_publisher
Definition oldbInterface.hpp:83
std::shared_ptr<::msif::TrackSv > track_sv
Definition oldbInterface.hpp:85
std::shared_ptr<::ccscommonif::AltAz > current_alt_az
Definition oldbInterface.hpp:67
std::shared_ptr<::hlcc::oldbmux::ObservablePublisher<::msif::TrackSv > > track_sv_publisher
Definition oldbInterface.hpp:86
std::shared_ptr<::ccscommonif::RaDec > target_ra_dec_cirs
Definition oldbInterface.hpp:61
Performance and other monitoring.