HLCC Documentation 2.2.0
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::MoveRaw>();
33 m_sm.RegisterDefaultRequestRejectHandler<GpCtrEvents::StartControlling>();
34 m_sm.RegisterDefaultRequestRejectHandler<GpCtrEvents::StopControlling>();
35 m_sm.RegisterDefaultRequestRejectHandler<GpCtrEvents::AssignFixTrajectory>();
36 m_sm.RegisterDefaultRequestRejectHandler<GpCtrEvents::AssignSkyTrajectory>();
37 m_sm.RegisterDefaultRequestRejectHandler<GpCtrEvents::StopFollowingTrajectory>();
38 m_sm.RegisterDefaultRequestRejectHandler<GpCtrEvents::SetTarget>();
39 m_sm.RegisterDefaultRequestRejectHandler<GpCtrEvents::SetHierarchy>();
40 }
41
42 virtual ~GpCmdsImpl() {
43 RAD_TRACE(GetLogger());
44 }
45
46 elt::mal::future<std::string> ForwardCommand(const std::shared_ptr<::pfsif::GpForwardCommand>& command) override {
47 RAD_TRACE(GetLogger());
48 LOG4CPLUS_INFO(GetLogger(), "Received ForwardCommand with: command_id " << command->getCommand_id()
49 << ", command " << command->getArgs());
50 auto ev = std::make_shared<GpCtrEvents::ForwardCommand>(command->clone());
51 m_sm.PostEvent(ev);
52
53 return ev->GetPayload().GetReplyFuture();
54 }
55
56 elt::mal::future<std::string> MoveGPTo(const std::shared_ptr<::pfsif::GpXY>& args) override {
57 RAD_TRACE(GetLogger());
58 LOG4CPLUS_INFO(GetLogger(), "Received MoveGPTo with: id " << args->getId() << ", X "
59 << args->getX() << ", Y " << args->getY());
60 auto ev = std::make_shared<GpCtrEvents::MoveGPTo>(args->clone());
61 m_sm.PostEvent(ev);
62
63 return ev->GetPayload().GetReplyFuture();
64 }
65
66 elt::mal::future<std::string> MoveGpToNamedPos(const std::shared_ptr<::pfsif::GpNamedPos>& args) override {
67 RAD_TRACE(GetLogger());
68 LOG4CPLUS_INFO(GetLogger(), "Received MoveGpToNamedPos with: id " << args->getId()
69 << ", Name " << args->getName());
70
71 auto ev = std::make_shared<GpCtrEvents::MoveGpToNamedPos>(args->clone());
72 m_sm.PostEvent(ev);
73
74 return ev->GetPayload().GetReplyFuture();
75 }
76
77 elt::mal::future<std::string> MoveRaw(const std::shared_ptr<::pfsif::GpRaw>& args) override {
78 RAD_TRACE(GetLogger());
79 LOG4CPLUS_INFO(GetLogger(), "Received MoveRaw with: id " << args->getId() << ", Az "
80 << args->getAz() << ", Pom " << args->getPom() << ", Sar "
81 << args->getSar() <<", Trom " << args->getTrom());
82
83 auto ev = std::make_shared<GpCtrEvents::MoveRaw>(args->clone());
84 m_sm.PostEvent(ev);
85
86 return ev->GetPayload().GetReplyFuture();
87 }
88
89 elt::mal::future<std::string> StartControlling() override {
90 RAD_TRACE(GetLogger());
91 LOG4CPLUS_INFO(GetLogger(), "Received StartControlling");
92 auto ev = std::make_shared<GpCtrEvents::StartControlling>();
93 m_sm.PostEvent(ev);
94
95 return ev->GetPayload().GetReplyFuture();
96 }
97
98 elt::mal::future<std::string> StopControlling() override {
99 RAD_TRACE(GetLogger());
100 LOG4CPLUS_INFO(GetLogger(), "Received StopControlling");
101
102 auto ev = std::make_shared<GpCtrEvents::StopControlling>();
103 m_sm.PostEvent(ev);
104
105 return ev->GetPayload().GetReplyFuture();
106 }
107
108 elt::mal::future<std::string> AssignFixTrajectory(const std::shared_ptr<::pfsif::GpXY>& args) override {
109 RAD_TRACE(GetLogger());
110 LOG4CPLUS_INFO(GetLogger(), "Received AssignFixTrajectory with: id " << args->getId()
111 << ", X " << args->getX() << ", Y " << args->getY());
112 auto ev = std::make_shared<GpCtrEvents::AssignFixTrajectory>(args->clone());
113 m_sm.PostEvent(ev);
114
115 return ev->GetPayload().GetReplyFuture();
116 }
117
118 elt::mal::future<std::string> AssignSkyTrajectory(const std::shared_ptr<::pfsif::GuideStarArgs>& args) override {
119 RAD_TRACE(GetLogger());
120 LOG4CPLUS_INFO(GetLogger(), "Received AssignSkyTrajectory with: id " << args->getId() << ", Ra "
121 << args->getRa() << ", Dec " << args->getDec() << ", Epoch "
122 << args->getEpoch() << ", Band " << args->getBand() << ", Rshift "
123 << args->getRshift() << ", Radvel " << args->getRadvel()
124 << ", Magnitude " << args->getMagnitude() << ", Parallax "
125 << args->getParallax() << ", Proper_motion_ra " << args->getProper_motion_ra()
126 << ", Proper_motion_dec " << args->getProper_motion_dec());
127
128 auto ev = std::make_shared<GpCtrEvents::AssignSkyTrajectory>(args->clone());
129 m_sm.PostEvent(ev);
130
131 return ev->GetPayload().GetReplyFuture();
132 }
133
134 elt::mal::future<std::string> StopFollowingTrajectory(::pfsif::GuideProbeId args) override {
135 RAD_TRACE(GetLogger());
136 LOG4CPLUS_INFO(GetLogger(), "Received StopFollowingTrajectory with: Guide Probe Id " << args);
137
138 auto ev = std::make_shared<GpCtrEvents::StopFollowingTrajectory>(args);
139 m_sm.PostEvent(ev);
140
141 return ev->GetPayload().GetReplyFuture();
142 }
143
144 elt::mal::future<std::string> SetTarget(const std::shared_ptr<::pfsif::TargetArgs>& args) override {
145 RAD_TRACE(GetLogger());
146 LOG4CPLUS_INFO(GetLogger(), "Received SetTarget with: Ra " << args->getRa() << ", Dec "
147 << args->getDec() << ", Epoch " << args->getEpoch()
148 << ", Rshift" << args->getRshift() << ", Radvel " << args->getRadvel()
149 << ", Parallax " << args->getParallax()
150 << ", Proper_motion_ra " << args->getProper_motion_ra()
151 << ", Proper_motion_dec " << args->getProper_motion_dec()
152 << ", Velocity_offset_ra " << args->getVelocity_offset_ra()
153 << ", Velocity_offset_dec " << args->getVelocity_offset_dec());
154
155 auto ev = std::make_shared<GpCtrEvents::SetTarget>(args->clone());
156 m_sm.PostEvent(ev);
157
158 return ev->GetPayload().GetReplyFuture();
159 }
160
161 elt::mal::future<std::string> SetHierarchy(const std::shared_ptr<::pfsif::GpHierarchyArgs>& args) override {
162 RAD_TRACE(GetLogger());
163 LOG4CPLUS_INFO(GetLogger(), "Received SetHierarchy with: A " << args->getA() << ", B "
164 << args->getB() << ", C " << args->getC());
165
166 auto ev = std::make_shared<GpCtrEvents::SetHierarchy>(args->clone());
167 m_sm.PostEvent(ev);
168
169 return ev->GetPayload().GetReplyFuture();
170 }
171
172
173 elt::mal::future<std::string> SetPointingOrigin(const std::shared_ptr<::pfsif::XY>& args) override {
174 RAD_TRACE(GetLogger());
175
176 LOG4CPLUS_INFO(GetLogger(), "Received SetPointingOrigin with: X " << args->getX() << ", Y "
177 << args->getY());
178
179 auto ev = std::make_shared<GpCtrEvents::SetPointingOrigin>(args->clone());
180 m_sm.PostEvent(ev);
181
182 return ev->GetPayload().GetReplyFuture();
183 }
184
185
186private:
187 rad::SMAdapter& m_sm;
188};
189
190
191} // namespace hlcc::pfssimhlcc
192
193#endif // pfssimhlcc_GP_CMDS_IMPL_HPP
Definition gpCmdsImpl.hpp:25
elt::mal::future< std::string > SetTarget(const std::shared_ptr<::pfsif::TargetArgs > &args) override
Definition gpCmdsImpl.hpp:144
elt::mal::future< std::string > StopControlling() override
Definition gpCmdsImpl.hpp:98
elt::mal::future< std::string > MoveGPTo(const std::shared_ptr<::pfsif::GpXY > &args) override
Definition gpCmdsImpl.hpp:56
elt::mal::future< std::string > AssignFixTrajectory(const std::shared_ptr<::pfsif::GpXY > &args) override
Definition gpCmdsImpl.hpp:108
elt::mal::future< std::string > StartControlling() override
Definition gpCmdsImpl.hpp:89
elt::mal::future< std::string > MoveRaw(const std::shared_ptr<::pfsif::GpRaw > &args) override
Definition gpCmdsImpl.hpp:77
elt::mal::future< std::string > SetPointingOrigin(const std::shared_ptr<::pfsif::XY > &args) override
Definition gpCmdsImpl.hpp:173
elt::mal::future< std::string > MoveGpToNamedPos(const std::shared_ptr<::pfsif::GpNamedPos > &args) override
Definition gpCmdsImpl.hpp:66
virtual ~GpCmdsImpl()
Definition gpCmdsImpl.hpp:42
elt::mal::future< std::string > SetHierarchy(const std::shared_ptr<::pfsif::GpHierarchyArgs > &args) override
Definition gpCmdsImpl.hpp:161
elt::mal::future< std::string > StopFollowingTrajectory(::pfsif::GuideProbeId args) override
Definition gpCmdsImpl.hpp:134
elt::mal::future< std::string > AssignSkyTrajectory(const std::shared_ptr<::pfsif::GuideStarArgs > &args) override
Definition gpCmdsImpl.hpp:118
GpCmdsImpl(rad::SMAdapter &sm)
Definition gpCmdsImpl.hpp:27
elt::mal::future< std::string > ForwardCommand(const std::shared_ptr<::pfsif::GpForwardCommand > &command) override
Definition gpCmdsImpl.hpp:46
Definition actionMgr.cpp:34
log4cplus::Logger & GetLogger()
Definition logger.cpp:21
Default logger name.