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_TELIF_TELIF_OLDBINTERFACE_HPP
14#define HLCC_TELIF_TELIF_OLDBINTERFACE_HPP
15
16
17#include <string>
18#include <vector>
19#include <memory> // shared_ptr
21#include <rad/oldbInterface.hpp>
22#include <rad/cii/oldbAdapter.hpp>
23#include <rad/exceptions.hpp>
24#include "Ccsinsif.hpp"
25#include "Ccsinsifextref.hpp"
26#include "Ccsinsifstroke.hpp"
27#include "Ccsinsifao.hpp"
28#include "Stdif.hpp"
29#include "Telifif.hpp"
30#include "Trexif.hpp"
31#include "telif/config.hpp"
33
34
35namespace hlcc::telif {
36
37
38struct TrexData{
39
40 std::shared_ptr<::elt::mal::ps::Subscriber<::trexif::TrexPerformanceTel>> trex_perf_subscriber;
41 std::shared_ptr<::elt::mal::ps::Subscriber<::trexif::TrexStatusTel>> trex_status_subscriber;
42};
43
47class OldbInterface : public rad::OldbInterface {
48 public:
54 OldbInterface(const std::string& prefix="");
55
59 virtual ~OldbInterface();
60
61
66 void Init(::hlcc::telif::Config& config);
67
72 void PublishObservingWavelength(double wavelength);
73
78 void PublishSetVelocityOffset(const std::shared_ptr<::ccsinsif::VelocityOffset>& velocity_offset_args);
79
82
84 bool GetTracking();
85
87 bool GetTargetValidity();
88
90 std::string GetEltpkState();
91
93 std::string GetCommandSource();
94
98 void PublishCommandSource(const std::string&);
99
105 double GetSiteLatitude();
106
112 double GetSiteLongitude();
113
119 double GetSiteElevation();
120
122 void PublishExtrefInsRef();
123
125 void PublishStrokeRous(const std::shared_ptr<::ccsinsif::rous::Maneuver>&);
126
128 void PublishAoMirrorHealth(const std::shared_ptr<::ccsinsif::ao::Health>&);
129
131 void PublishCcsInfo();
132
133 inline std::shared_ptr<::ccsinsif::insref::Offsets> GetInsrefOffset() { return insref_offsets; }
134 inline std::shared_ptr<::ccsinsif::CcsInfo> GetCcsInfoEntity() { return ccs_info; }
135
136 void SetConfig(const hlcc::telif::Config& cfg);
137
139 std::string GetControlState();
140
142 void SetControlState(const std::string& status) override; // , int64_t timestamp
143 // void SetRaDec(const double ra, const double dec);
144 void SetConfig(const rad::Config& cfg); // solves hidden virtual function
145
150 void PublishPresetSequenceMode(const telifif::SequenceMode& sequence_mode);
151
157 telifif::SequenceMode ReadPresetSequenceMode();
158
163 void PublishPresetSequence(const std::string &sequence);
164
170 std::string ReadPresetSequence();
171
176 void PublishUpdateTargetSequenceMode(const telifif::SequenceMode& sequence_mode);
177
183 telifif::SequenceMode ReadUpdateTargetSequenceMode();
184
189 void PublishUpdateTargetSequence(const std::string &sequence);
190
196 std::string ReadUpdateTargetSequence();
202 std::string ReadUpdateTargetSequenceStatus();
203
208 void PublishUpdateTargetSequenceStatus(const std::string &sequence);
209
214 void PublishOffsetSequenceMode(const telifif::SequenceMode& sequence_mode);
215
221 telifif::SequenceMode ReadOffsetSequenceMode();
222
227 void PublishOffsetSequence(const std::string &sequence);
228
234 std::string ReadOffsetSequence();
235
239 void PublishMessageOffsetSequence(uint16_t id, std::string message);
240
244 std::vector<std::shared_ptr<telifif::SeqMessage>> ReadMessageOffsetSequence();
245
249 std::string WriteGuideProbeToOldb(std::shared_ptr<pfsif::GuideStarArgs> gp_args);
250
255
259 std::vector<std::string> GetGsToGpMap();
260
264 void SetGsToGpMap(const std::vector<std::string>& gs_gp_map);
265
266 void UpdateHeartbeat();
267 void PublishPerfEstimate(std::vector<double> perf_data);
268
269 void SetOperatorAllowsHandover(bool operator_allows_handover);
270
271 OldbInterface(const OldbInterface&) = delete;
273
274 private:
275 std::shared_ptr<::hlcc::oldbmux::ObservablePublisher<::ccsinsif::insref::Offsets>> insref_offsets_publisher;
276 std::shared_ptr<::hlcc::oldbmux::ObservablePublisher<::ccsinsif::rous::Maneuver>> rous_maneuver_publisher;
277 std::shared_ptr<::hlcc::oldbmux::ObservablePublisher<::ccsinsif::ao::Health>> ao_health_publisher;
278 std::shared_ptr<::hlcc::oldbmux::ObservablePublisher<::ccsinsif::CcsInfo>> ccs_info_publisher;
279
280 std::shared_ptr<::ccsinsif::insref::Offsets> insref_offsets;
281 std::shared_ptr<::ccsinsif::CcsInfo> ccs_info;
282
283 std::shared_ptr<::stdif::Status> status_data;
284 std::shared_ptr<::hlcc::oldbmux::ObservablePublisher<::stdif::Status>> status_data_publisher;
285 std::shared_ptr<::ccsinsif::CommandSource> cmd_source_data;
286 std::shared_ptr<::hlcc::oldbmux::ObservablePublisher<::ccsinsif::CommandSource>> cmd_src_data_publisher;
287
288 std::unique_ptr<::elt::mal::ps::Publisher<::telifif::SeqMessage>> offset_sequence_msg_publisher;
289 std::unique_ptr<::elt::mal::ps::Subscriber<::telifif::SeqMessage>> offset_sequence_msg_subscriber;
290
291 std::shared_ptr<::hlcc::oldbmux::CiiOldbDataPointAsync<std::vector<double>>> perf_estimate_subscriber;
292
293 std::shared_ptr<::hlcc::oldbmux::CiiOldbDataPointAsync<double>> heartbeat_subscriber;
294 std::shared_ptr<::hlcc::oldbmux::CiiOldbDataPointAsync<bool>> handover_subscriber;
295
296 TrexData m_trex_data;
297
298 std::mutex m_mutex;
299
309 boost::asio::thread_pool m_async_exec {5};
310
316 log4cplus::Logger m_logger_oldb_async;
317};
318
319} // namespace hlcc::telif
320
321#endif // HLCC_TELIF_TELIF_OLDBINTERFACE_HPP
Config class header file.
Definition config.hpp:245
double GetSiteLongitude()
Definition oldbInterface.cpp:650
void SetControlState(const std::string &status) override
Definition oldbInterface.cpp:601
telifif::SequenceMode ReadUpdateTargetSequenceMode()
Definition oldbInterface.cpp:809
void PublishObservingWavelength(double wavelength)
Definition oldbInterface.cpp:415
bool GetReadyForHandover()
Definition oldbInterface.cpp:441
std::shared_ptr<::ccsinsif::CcsInfo > GetCcsInfoEntity()
Definition oldbInterface.hpp:134
telifif::SequenceMode ReadPresetSequenceMode()
Definition oldbInterface.cpp:739
void PublishOffsetSequence(const std::string &sequence)
std::string GetControlState()
Definition oldbInterface.cpp:590
OldbInterface(const OldbInterface &)=delete
double GetSiteLatitude()
Definition oldbInterface.cpp:630
void SetConfig(const hlcc::telif::Config &cfg)
Definition oldbInterface.cpp:499
std::string ReadPresetSequence()
Definition oldbInterface.cpp:772
OldbInterface & operator=(const OldbInterface &)=delete
Disable copy constructor.
void Init(::hlcc::telif::Config &config)
Definition oldbInterface.cpp:79
std::string GetCommandSource()
Definition oldbInterface.cpp:608
std::shared_ptr<::ccsinsif::insref::Offsets > GetInsrefOffset()
Definition oldbInterface.hpp:133
OldbInterface(const std::string &prefix="")
Definition oldbInterface.cpp:62
double GetSiteElevation()
Definition oldbInterface.cpp:670
telifif::SequenceMode ReadOffsetSequenceMode()
virtual ~OldbInterface()
Definition oldbInterface.cpp:72
bool GetTracking()
Definition oldbInterface.cpp:473
std::string GetEltpkState()
Definition oldbInterface.cpp:486
std::vector< std::shared_ptr< telifif::SeqMessage > > ReadMessageOffsetSequence()
Definition oldbInterface.cpp:900
std::string WriteGuideProbeToOldb(std::shared_ptr< pfsif::GuideStarArgs > gp_args)
Definition oldbInterface.cpp:908
void PublishStrokeRous(const std::shared_ptr<::ccsinsif::rous::Maneuver > &)
Definition oldbInterface.cpp:697
bool GetTargetValidity()
Definition oldbInterface.cpp:455
void PublishOffsetSequenceMode(const telifif::SequenceMode &sequence_mode)
void PublishPerfEstimate(std::vector< double > perf_data)
Definition oldbInterface.cpp:411
void UpdateHeartbeat()
Definition oldbInterface.cpp:882
void PublishExtrefInsRef()
Definition oldbInterface.cpp:690
std::vector< std::string > GetGsToGpMap()
Definition oldbInterface.cpp:1006
std::string ReadUpdateTargetSequenceStatus()
Definition oldbInterface.cpp:865
void PublishPresetSequence(const std::string &sequence)
Definition oldbInterface.cpp:764
TrexData GetTrexData()
Definition oldbInterface.cpp:405
std::string ReadUpdateTargetSequence()
Definition oldbInterface.cpp:842
void PublishUpdateTargetSequence(const std::string &sequence)
Definition oldbInterface.cpp:834
void SetOperatorAllowsHandover(bool operator_allows_handover)
Definition oldbInterface.cpp:1036
void PublishMessageOffsetSequence(uint16_t id, std::string message)
Definition oldbInterface.cpp:889
void PublishCcsInfo()
Definition oldbInterface.cpp:711
void PublishAoMirrorHealth(const std::shared_ptr<::ccsinsif::ao::Health > &)
Definition oldbInterface.cpp:704
void SetGsToGpMap(const std::vector< std::string > &gs_gp_map)
Definition oldbInterface.cpp:1026
void PublishUpdateTargetSequenceStatus(const std::string &sequence)
Definition oldbInterface.cpp:857
void PublishSetVelocityOffset(const std::shared_ptr<::ccsinsif::VelocityOffset > &velocity_offset_args)
Definition oldbInterface.cpp:427
void PublishUpdateTargetSequenceMode(const telifif::SequenceMode &sequence_mode)
Definition oldbInterface.cpp:788
void PublishCommandSource(const std::string &)
Definition oldbInterface.cpp:622
std::string ReadOffsetSequence()
void PublishPresetSequenceMode(const telifif::SequenceMode &sequence_mode)
Definition oldbInterface.cpp:718
Definition configTest.cpp:22
Definition oldbInterface.hpp:38
std::shared_ptr<::elt::mal::ps::Subscriber<::trexif::TrexStatusTel > > trex_status_subscriber
Definition oldbInterface.hpp:41
std::shared_ptr<::elt::mal::ps::Subscriber<::trexif::TrexPerformanceTel > > trex_perf_subscriber
Definition oldbInterface.hpp:40