HLCC Documentation 3.0.0
Loading...
Searching...
No Matches
dataContext.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_DATACONTEXT_HPP
14#define HLCC_TELIF_TELIF_DATACONTEXT_HPP
15
16#include <ptk/posastro.hpp>
17#include <rad/smAdapter.hpp>
18#include <rad/dataContext.hpp>
19
20#include "Ccsinsifextref.hpp"
21#include "Ccsinsifstroke.hpp"
22#include "Ccsinsifao.hpp"
23#include <Ccsinsif.hpp>
24
26
27#include <Eltpkif.hpp>
28#include "Telifif.hpp"
29
30#include "telif/config.hpp"
33#include "telif/rousData.hpp"
35
36
37namespace hlcc::telif {
38
43class DataContext : public rad::DataContext {
44 public:
49
53 virtual ~DataContext();
54
58 void ReloadConfig() override;
59
63 Config& GetConfig() override;
64
68 void UpdateDb() override;
69
74
75 //void GetTargetRaDec(double& ra, double& dec);
76 //void SetTargetRaDec(const double ra, const double dec);
77
81 ptk::PositionOnEarth GetSitePosition();
82
88
94
99 void SetObservingWavelength(double wavelength);
100
105 void SetVelocityOffset(const std::shared_ptr<::ccsinsif::VelocityOffset>& velocity_offset_args);
106
107 /* Set ref_aberration and publish entity */
108 void SetRefrenceAberration(const elt::mal::shared_vector<const double>& ref_aberration);
109
110 /* Set ref_focus and publish entity */
111 void SetRefrenceFocus(const double& ref_focus);
112
113 /*
114 * Publishes the instrument reference offsets to PubSub and Oldb
115 */
116 void PublishExtrefInsRef();
117
121 void SetStrokeRous(const std::shared_ptr<::ccsinsif::rous::Maneuver>& x);
122
126 void SetAoMirrorHealth(const std::shared_ptr<::ccsinsif::ao::Health>& x);
127
131 bool GetReadyForHandover();
132
136 bool GetTracking();
137
142 std::string GetTelifState();
143
148 std::string GetEltpkState();
149
153 std::string GetCommandSource();
154
158 void SetCommandSource(const std::string&);
159
164
169
174
186 void ReadyForHandoverEstimation(rad::SMAdapter& sm_adapter, bool force_update = false);
187
198 void TrackingEstimation(rad::SMAdapter& sm_adapter, bool force_update = false);
199
203 std::shared_ptr<elt::mal::Mal> GetEntityFactory();
204
208 std::shared_ptr<elt::mal::Mal> GetEntityFactoryDeterm();
209
213 std::shared_ptr<elt::mal::Mal> GetReplyFactory();
214
218 void SetUpdateTargetSequenceMode(const telifif::SequenceMode& seq_mode);
219
223 telifif::SequenceMode GetUpdateTargetSequenceMode();
224
228 void SetUpdateTargetSequence(const std::string &sequence);
229
233 std::string GetUpdateTargetSequence();
234
238 void SetPresetSequenceMode(const telifif::SequenceMode& seq_mode);
239
243 telifif::SequenceMode GetPresetSequenceMode();
244
248 void SetPresetSequence(const std::string &sequence);
249
253 std::string GetPresetSequence();
254
259
263 void AddOffsetHandlerArgs(std::shared_ptr<::ccsinsif::OffsetSkyArgs> offset_sky_args);
264
268 std::vector<std::shared_ptr<::ccsinsif::OffsetSkyArgs>> GetOffsetHandlerArgs();
269
274
275 // 2025-07: ETCS-1916 ops-logs for received commands and state-changes
284 void RecordOpsLog (const std::string &name, const std::string &value);
285
286 DataContext(const DataContext&) = delete;
288
289 private:
290 Config m_config;
291 OldbInterface m_oldb_interface;
292// double m_ra;
293// double m_dec;
294
295 mutable std::mutex m_mutex;
296
301
302 elt::mal::future<void> eltpk_connection_future; // Futute for the pksim connection
303
304 // Data Acquisitons
305 DataAcquisitionList m_daq_list;
306
307 // Mal entity references
308 std::shared_ptr<elt::mal::Mal> m_entity_factory; // Mal used for pub-sub
309 std::shared_ptr<elt::mal::Mal> m_reply_factory; // Mal used for req-rep
310 std::shared_ptr<elt::mal::Mal> m_entity_factory_determ; // Mal used for determ-pub-sub
311 std::shared_ptr<::trexif::TrexStatusTel> trex_status;
312 std::shared_ptr<::trexif::TrexPerformanceTel> trex_perf;
313 // Rous operation data
314 RousData m_rous_data;
315
316 // Command source
317 std::string m_command_source;
318
319 // Ready for handover estimation
320 bool m_previous_ready_for_handover;
321
322 bool m_previous_tracking;
323 // SkyOffset handler
324 OffsetHandler m_offset_handler;
325 // Vestor of OffsetSkyArgs
326 std::vector<std::shared_ptr<::ccsinsif::OffsetSkyArgs>> m_offset_handler_args;
327};
328
329} // namespace hlcc::telif
330
331#endif // HLCC_TELIF_TELIF_DATACONTEXT_HPP
AmbientData class header file.
Config class header file.
OldbInterface class header file.
Definition ambientData.hpp:48
Definition config.hpp:245
Definition dataAcquisition.hpp:160
void SetRefrenceFocus(const double &ref_focus)
Definition dataContext.cpp:133
bool GetTracking()
Definition dataContext.cpp:194
std::string GetPresetSequence()
Definition dataContext.cpp:382
std::string GetEltpkState()
Definition dataContext.cpp:222
DataContext()
Definition dataContext.cpp:31
DataContext(const DataContext &)=delete
void SetAoMirrorHealth(const std::shared_ptr<::ccsinsif::ao::Health > &x)
Definition dataContext.cpp:167
virtual ~DataContext()
Definition dataContext.cpp:48
void SetPresetSequence(const std::string &sequence)
Definition dataContext.cpp:375
void SetVelocityOffset(const std::shared_ptr<::ccsinsif::VelocityOffset > &velocity_offset_args)
Definition dataContext.cpp:124
std::string GetUpdateTargetSequence()
Definition dataContext.cpp:354
void SetRefrenceAberration(const elt::mal::shared_vector< const double > &ref_aberration)
Definition dataContext.cpp:143
DataContext & operator=(const DataContext &)=delete
Disable copy constructor.
void PublishCommandSource()
Definition dataContext.cpp:243
void ReloadConfig() override
Definition dataContext.cpp:52
bool GetReadyForHandover()
Definition dataContext.cpp:174
OldbInterface & GetOldbInterface() override
Definition dataContext.cpp:83
std::vector< std::shared_ptr<::ccsinsif::OffsetSkyArgs > > GetOffsetHandlerArgs()
Definition dataContext.cpp:400
void SetUpdateTargetSequence(const std::string &sequence)
Definition dataContext.cpp:347
std::string GetCommandSource()
Definition dataContext.cpp:230
std::string GetTelifState()
Definition dataContext.cpp:214
std::shared_ptr< elt::mal::Mal > GetEntityFactoryDeterm()
Definition dataContext.cpp:323
OffsetHandler & GetOffsetHandler()
Definition dataContext.cpp:389
telifif::SequenceMode GetPresetSequenceMode()
Definition dataContext.cpp:368
void SetStrokeRous(const std::shared_ptr<::ccsinsif::rous::Maneuver > &x)
Definition dataContext.cpp:160
std::shared_ptr< elt::mal::Mal > GetReplyFactory()
Definition dataContext.cpp:328
void ReadyForHandoverEstimation(rad::SMAdapter &sm_adapter, bool force_update=false)
Definition dataContext.cpp:261
ptk::PositionOnEarth GetSitePosition()
Definition dataContext.cpp:91
RousData & GetRousData()
Definition dataContext.cpp:256
telifif::SequenceMode GetUpdateTargetSequenceMode()
Definition dataContext.cpp:340
void RecordOpsLog(const std::string &name, const std::string &value)
Definition dataContext.cpp:472
void AddOffsetHandlerArgs(std::shared_ptr<::ccsinsif::OffsetSkyArgs > offset_sky_args)
Definition dataContext.cpp:393
DataAcquisitionList & GetDataAcquisitionList()
Definition dataContext.cpp:251
void PublishExtrefInsRef()
Definition dataContext.cpp:153
void SetUpdateTargetSequenceMode(const telifif::SequenceMode &seq_mode)
Definition dataContext.cpp:333
void SetPresetSequenceMode(const telifif::SequenceMode &seq_mode)
Definition dataContext.cpp:361
void GetAndPublishTrexPerfData()
Definition dataContext.cpp:409
hlcc::ambientdataclient::AmbientData & GetAmbientData()
Definition dataContext.cpp:107
void SetCommandSource(const std::string &)
Definition dataContext.cpp:236
void SetObservingWavelength(double wavelength)
Definition dataContext.cpp:114
std::shared_ptr< elt::mal::Mal > GetEntityFactory()
Definition dataContext.cpp:318
Config & GetConfig() override
Definition dataContext.cpp:56
void UpdateDb() override
Definition dataContext.cpp:61
void TrackingEstimation(rad::SMAdapter &sm_adapter, bool force_update=false)
Definition dataContext.cpp:289
Definition offsetHandler.hpp:36
Definition oldbInterface.hpp:47
Definition rousData.hpp:35
DataAcquisition class header file.
Definition configTest.cpp:22
OffsetHandler class header file.
DataContext class header file.