HLCC Documentation 3.0.1
Loading...
Searching...
No Matches
gpCmdsImpl.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 pfssimhlcc_GP_CMDS_IMPL_HPP
14#define pfssimhlcc_GP_CMDS_IMPL_HPP
15
16#include <pfssimhlcc/gpCtrEvents.rad.hpp>
17
18#include <pfssimhlcc/logger.hpp>
19
20#include <rad/exceptions.hpp>
21#include <rad/smAdapter.hpp>
22
23namespace hlcc::pfssimhlcc {
24
25class GpCmdsImpl : public pfsif::AsyncGpCmds {
26public:
27 explicit GpCmdsImpl(rad::SMAdapter& sm) : m_sm(sm) {
28 RAD_TRACE(GetLogger());
29
30 m_sm.RegisterDefaultRequestRejectHandler<GpCtrEvents::MoveGPTo>();
31 m_sm.RegisterDefaultRequestRejectHandler<GpCtrEvents::MoveGpToNamedPos>();
32 m_sm.RegisterDefaultRequestRejectHandler<GpCtrEvents::Park>();
33 m_sm.RegisterDefaultRequestRejectHandler<GpCtrEvents::StartControlling>();
34 m_sm.RegisterDefaultRequestRejectHandler<GpCtrEvents::MoveRaw>();
35 m_sm.RegisterDefaultRequestRejectHandler<GpCtrEvents::StartControlling>();
36 m_sm.RegisterDefaultRequestRejectHandler<GpCtrEvents::StopControlling>();
37 m_sm.RegisterDefaultRequestRejectHandler<GpCtrEvents::AssignFixTrajectory>();
38 m_sm.RegisterDefaultRequestRejectHandler<GpCtrEvents::AssignSkyTrajectory>();
39 m_sm.RegisterDefaultRequestRejectHandler<GpCtrEvents::StopFollowingTrajectory>();
40 m_sm.RegisterDefaultRequestRejectHandler<GpCtrEvents::SetTarget>();
41 m_sm.RegisterDefaultRequestRejectHandler<GpCtrEvents::UpdateTarget>();
42 m_sm.RegisterDefaultRequestRejectHandler<GpCtrEvents::SetHierarchy>();
43 }
44
45 virtual ~GpCmdsImpl() {
46 RAD_TRACE(GetLogger());
47 }
48
49 elt::mal::future<std::string> ForwardCommand(const ::pfsif::GpForwardedCommandId command) override {
50 RAD_TRACE(GetLogger());
51 LOG4CPLUS_INFO(GetLogger(), "Received ForwardCommand with: command_id " << command);
52 auto ev = std::make_shared<GpCtrEvents::ForwardCommand>(command);
53 m_sm.PostEvent(ev);
54
55 return ev->GetPayload().GetReplyFuture();
56 }
57
58 elt::mal::future<std::string> MoveGpTo(const std::shared_ptr<::pfsif::GpXY>& args) override {
59 RAD_TRACE(GetLogger());
60 LOG4CPLUS_INFO(GetLogger(), "Received MoveGPTo with: id " << args->getId() << ", X "
61 << args->getX() << ", Y " << args->getY());
62 auto ev = std::make_shared<GpCtrEvents::MoveGPTo>(args->clone());
63 m_sm.PostEvent(ev);
64
65 return ev->GetPayload().GetReplyFuture();
66 }
67
68 elt::mal::future<std::string> MoveGpToNamedPos(const std::shared_ptr<::pfsif::GpNamedPos>& args) override {
69 RAD_TRACE(GetLogger());
70 LOG4CPLUS_INFO(GetLogger(), "Received MoveGpToNamedPos with: id " << args->getId()
71 << ", Name " << args->getName());
72
73 auto ev = std::make_shared<GpCtrEvents::MoveGpToNamedPos>(args->clone());
74 m_sm.PostEvent(ev);
75
76 return ev->GetPayload().GetReplyFuture();
77 }
78
79 elt::mal::future<std::string> MoveRaw(const std::shared_ptr<::pfsif::GpRaw>& args) override {
80 RAD_TRACE(GetLogger());
81 LOG4CPLUS_INFO(GetLogger(), "Received MoveRaw with: id " << args->getId() << ", Az "
82 << args->getAz() << ", Pom " << args->getPom() << ", Sar "
83 << args->getSar() <<", Trom " << args->getTrom());
84
85 auto ev = std::make_shared<GpCtrEvents::MoveRaw>(args->clone());
86 m_sm.PostEvent(ev);
87
88 return ev->GetPayload().GetReplyFuture();
89 }
90
91 elt::mal::future<std::string> Park(const ::pfsif::GuideProbeId args) override {
92 RAD_TRACE(GetLogger());
93 LOG4CPLUS_INFO(GetLogger(), "Receiver Park with: id " << args);
94
95 auto ev = std::make_shared<GpCtrEvents::Park>(args);
96 m_sm.PostEvent(ev);
97
98 return ev->GetPayload().GetReplyFuture();
99 }
100
101 elt::mal::future<std::string> StartControlling() override {
102 RAD_TRACE(GetLogger());
103 LOG4CPLUS_INFO(GetLogger(), "Received StartControlling");
104 auto ev = std::make_shared<GpCtrEvents::StartControlling>();
105 m_sm.PostEvent(ev);
106
107 return ev->GetPayload().GetReplyFuture();
108 }
109
110 elt::mal::future<std::string> StopControlling() override {
111 RAD_TRACE(GetLogger());
112 LOG4CPLUS_INFO(GetLogger(), "Received StopControlling");
113
114 auto ev = std::make_shared<GpCtrEvents::StopControlling>();
115 m_sm.PostEvent(ev);
116
117 return ev->GetPayload().GetReplyFuture();
118 }
119
120 elt::mal::future<std::string> AssignFixTrajectory(const std::shared_ptr<::pfsif::GpXY>& args) override {
121 RAD_TRACE(GetLogger());
122 LOG4CPLUS_INFO(GetLogger(), "Received AssignFixTrajectory with: id " << args->getId()
123 << ", X " << args->getX() << ", Y " << args->getY());
124 auto ev = std::make_shared<GpCtrEvents::AssignFixTrajectory>(args->clone());
125 m_sm.PostEvent(ev);
126
127 return ev->GetPayload().GetReplyFuture();
128 }
129
130 elt::mal::future<std::string> AssignSkyTrajectory(const std::shared_ptr<::pfsif::GuideStarArgs>& args) override {
131 RAD_TRACE(GetLogger());
132 LOG4CPLUS_INFO(GetLogger(), "Received AssignSkyTrajectory with: id " << args->getId() << ", Ra "
133 << args->getGuideStar()->getRa() << ", Dec " << args->getGuideStar()->getDec() << ", Epoch "
134 << args->getGuideStar()->getEpoch() << ", Band " << args->getGuideStar()->getBand() << ", Rshift "
135 << args->getGuideStar()->getRshift() << ", Radvel " << args->getGuideStar()->getRadvel()
136 << ", Magnitude " << args->getGuideStar()->getMagnitude() << ", Parallax "
137 << args->getGuideStar()->getParallax() << ", Proper_motion_ra " << args->getGuideStar()->getProper_motion_ra()
138 << ", Proper_motion_dec " << args->getGuideStar()->getProper_motion_dec());
139
140 auto ev = std::make_shared<GpCtrEvents::AssignSkyTrajectory>(args->clone());
141 m_sm.PostEvent(ev);
142
143 return ev->GetPayload().GetReplyFuture();
144 }
145
146 elt::mal::future<std::string> AssignUserTrajectory(const std::shared_ptr<::pfsif::GpStartTime>& args) override {
147 RAD_TRACE(GetLogger());
148
149 auto ev = std::make_shared<GpCtrEvents::AssignUserTrajectory>(args->clone());
150 m_sm.PostEvent(ev);
151
152 return ev->GetPayload().GetReplyFuture();
153 }
154
155 elt::mal::future<std::string> StopFollowingTrajectory(::pfsif::GuideProbeId args) override {
156 RAD_TRACE(GetLogger());
157 LOG4CPLUS_INFO(GetLogger(), "Received StopFollowingTrajectory with: Guide Probe Id " << args);
158
159 auto ev = std::make_shared<GpCtrEvents::StopFollowingTrajectory>(args);
160 m_sm.PostEvent(ev);
161
162 return ev->GetPayload().GetReplyFuture();
163 }
164
165 elt::mal::future<std::string> SetTarget(const std::shared_ptr<::ccscommonif::TargetData>& args) override {
166 RAD_TRACE(GetLogger());
167 LOG4CPLUS_INFO(GetLogger(), "Received SetTarget with: Ra " << args->getRa() << ", Dec "
168 << args->getDec() << ", Epoch " << args->getEpoch()
169 << ", Rshift" << args->getRshift() << ", Radvel " << args->getRadvel()
170 << ", Parallax " << args->getParallax()
171 << ", Proper_motion_ra " << args->getProper_motion_ra()
172 << ", Proper_motion_dec " << args->getProper_motion_dec()
173 << ", Velocity_offset_ra " << args->getVelocity_offset_ra()
174 << ", Velocity_offset_dec " << args->getVelocity_offset_dec()
175 << ", Wavelength " << args->getWavelength());
176
177 auto ev = std::make_shared<GpCtrEvents::SetTarget>(args->clone());
178 m_sm.PostEvent(ev);
179
180 return ev->GetPayload().GetReplyFuture();
181 }
182
183 elt::mal::future<std::string> UpdateTarget(const std::shared_ptr<::ccscommonif::TargetData>& args) override {
184 RAD_TRACE(GetLogger());
185 LOG4CPLUS_INFO(GetLogger(), "Received UpdateTarget with: Ra " << args->getRa() << ", Dec "
186 << args->getDec() << ", Epoch " << args->getEpoch()
187 << ", Rshift" << args->getRshift() << ", Radvel " << args->getRadvel()
188 << ", Parallax " << args->getParallax()
189 << ", Proper_motion_ra " << args->getProper_motion_ra()
190 << ", Proper_motion_dec " << args->getProper_motion_dec()
191 << ", Velocity_offset_ra " << args->getVelocity_offset_ra()
192 << ", Velocity_offset_dec " << args->getVelocity_offset_dec()
193 << ", Wavelength " << args->getWavelength());
194
195 auto ev = std::make_shared<GpCtrEvents::UpdateTarget>(args->clone());
196 m_sm.PostEvent(ev);
197
198 return ev->GetPayload().GetReplyFuture();
199 }
200
201 elt::mal::future<std::string> SetHierarchy(const std::shared_ptr<::pfsif::GpHierarchyArgs>& args) override {
202 RAD_TRACE(GetLogger());
203 LOG4CPLUS_INFO(GetLogger(), "Received SetHierarchy with: A " << args->getA() << ", B "
204 << args->getB() << ", C " << args->getC());
205
206 auto ev = std::make_shared<GpCtrEvents::SetHierarchy>(args->clone());
207 m_sm.PostEvent(ev);
208
209 return ev->GetPayload().GetReplyFuture();
210 }
211
212
213 elt::mal::future<std::string> SetPointingOrigin(const std::shared_ptr<::pfsif::XY>& args) override {
214 RAD_TRACE(GetLogger());
215
216 LOG4CPLUS_INFO(GetLogger(), "Received SetPointingOrigin with: X " << args->getX() << ", Y "
217 << args->getY());
218
219 auto ev = std::make_shared<GpCtrEvents::SetPointingOrigin>(args->clone());
220 m_sm.PostEvent(ev);
221
222 return ev->GetPayload().GetReplyFuture();
223 }
224
225
226private:
227 rad::SMAdapter& m_sm;
228};
229
230
231} // namespace hlcc::pfssimhlcc
232
233#endif // pfssimhlcc_GP_CMDS_IMPL_HPP
elt::mal::future< std::string > StopControlling() override
Definition gpCmdsImpl.hpp:110
elt::mal::future< std::string > UpdateTarget(const std::shared_ptr<::ccscommonif::TargetData > &args) override
Definition gpCmdsImpl.hpp:183
elt::mal::future< std::string > SetTarget(const std::shared_ptr<::ccscommonif::TargetData > &args) override
Definition gpCmdsImpl.hpp:165
elt::mal::future< std::string > AssignFixTrajectory(const std::shared_ptr<::pfsif::GpXY > &args) override
Definition gpCmdsImpl.hpp:120
elt::mal::future< std::string > StartControlling() override
Definition gpCmdsImpl.hpp:101
elt::mal::future< std::string > ForwardCommand(const ::pfsif::GpForwardedCommandId command) override
Definition gpCmdsImpl.hpp:49
elt::mal::future< std::string > MoveRaw(const std::shared_ptr<::pfsif::GpRaw > &args) override
Definition gpCmdsImpl.hpp:79
elt::mal::future< std::string > SetPointingOrigin(const std::shared_ptr<::pfsif::XY > &args) override
Definition gpCmdsImpl.hpp:213
elt::mal::future< std::string > MoveGpToNamedPos(const std::shared_ptr<::pfsif::GpNamedPos > &args) override
Definition gpCmdsImpl.hpp:68
virtual ~GpCmdsImpl()
Definition gpCmdsImpl.hpp:45
elt::mal::future< std::string > SetHierarchy(const std::shared_ptr<::pfsif::GpHierarchyArgs > &args) override
Definition gpCmdsImpl.hpp:201
elt::mal::future< std::string > Park(const ::pfsif::GuideProbeId args) override
Definition gpCmdsImpl.hpp:91
elt::mal::future< std::string > StopFollowingTrajectory(::pfsif::GuideProbeId args) override
Definition gpCmdsImpl.hpp:155
elt::mal::future< std::string > AssignSkyTrajectory(const std::shared_ptr<::pfsif::GuideStarArgs > &args) override
Definition gpCmdsImpl.hpp:130
GpCmdsImpl(rad::SMAdapter &sm)
Definition gpCmdsImpl.hpp:27
elt::mal::future< std::string > MoveGpTo(const std::shared_ptr<::pfsif::GpXY > &args) override
Definition gpCmdsImpl.hpp:58
elt::mal::future< std::string > AssignUserTrajectory(const std::shared_ptr<::pfsif::GpStartTime > &args) override
Definition gpCmdsImpl.hpp:146
Definition actionMgr.cpp:34
log4cplus::Logger & GetLogger()
Definition logger.cpp:21
Default logger name.