HLCC Documentation 2.2.0
Loading...
Searching...
No Matches
activityDoControl.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_ACTIVITYDOCONTROL_HPP
14#define HLCC_TRKSIM_ACTIVITYDOCONTROL_HPP
15
16#include <string>
17
18#include <ptk/angles.hpp>
19#include <ptk/posastro.hpp>
20#include <taiclock/taiClock.hpp>
21#include <rad/configurableActivity.hpp>
22#include <rad/activity.hpp>
23#include <rad/smAdapter.hpp>
24#include "Ccsinsif.hpp"
25#include <Msif.hpp>
26
27#include "trksim/logger.hpp"
28
29
30
31namespace hlcc::trksim {
32
33class DataContext;
34
35
39class ActivityDoControl : public rad::ConfigurableActivity {
40public:
41 ActivityDoControl(const std::string& id,
43 virtual ~ActivityDoControl();
44
45 void Run() override;
46
51 void Initialize() override;
52
59 void Configure(const std::vector<std::string>& keys) override;
60
63
64private:
65 const log4cplus::Logger m_logger;
66 DataContext& m_data_context;
67
71 static const inline int PERIOD_MILLIS = 50;
72
76 ptk::MeanApparentConverter m_mean_apparent_conv;
77
84 const ptk::Radians m_alt_speed_radians_per_millis;
85
90 const ptk::Radians m_az_speed_radians_per_millis;
91
99 ptk::EquatorialPosition MeanToApparent(
100 const::msif::PresetArgs& preset_data, ptk::EquatorialPosition target_ra_dec_mean,
101 taiclock::TaiClock::time_point target_time);
102
108 void AssertAltAzLimits(const ptk::HorizonPositionEso& pos);
109
114 ptk::HorizonPositionEsoTimestamped GetClosestAz(
115 const ptk::HorizonPositionEsoTimestamped& pos, const ptk::HorizonPositionEso& pos_reference) const;
116
120 ptk::HorizonPositionEsoTimestamped GetCircumpolarAz(const ptk::HorizonPositionEsoTimestamped& pos) const;
121
130 ptk::Radians GetNewPos(ptk::Radians current_pos, ptk::Radians target_pos,
131 ptk::Radians speed_radians_per_millis, std::chrono::milliseconds timestep) const;
132
137 void HandleUserError(std::string msg);
138
151 void CheckRefreshExternalAsync(taiclock::TaiClock::time_point time_loop);
152
156 taiclock::TaiClock::time_point m_last_refresh_external;
157};
158
159}// namespace hlcc::trksim
160
161#endif // HLCC_TRKSIM_ACTIVITYDOCONTROL_HPP
Definition activityDoControl.hpp:39
void Run() override
Definition activityDoControl.cpp:37
ActivityDoControl(const std::string &id, DataContext &data)
Definition activityDoControl.cpp:24
void Initialize() override
Definition activityDoControl.cpp:491
virtual ~ActivityDoControl()
Definition activityDoControl.cpp:34
void Configure(const std::vector< std::string > &keys) override
Definition activityDoControl.cpp:495
ActivityDoControl & operator=(const ActivityDoControl &)=delete
Disable copy constructor.
ActivityDoControl(const ActivityDoControl &)=delete
Definition dataContext.hpp:52
Definition actionMgr.cpp:35
ccsinsdetifllnetio::PointingKernelPositions data
Definition pkp_llnetio_subscriber.cpp:33
Default logger name.