HLCC Documentation 2.2.0
Loading...
Searching...
No Matches
dataAcquisitionFits.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_DATAACQUISITIONFITS_HPP
14#define HLCC_TELIF_TELIF_DATAACQUISITIONFITS_HPP
15
16#include <string>
17#include <vector>
18#include <list>
19#include <chrono>
20#include <memory>
21#include <mutex>
22
24#include "telif/logger.hpp"
25
26
27namespace hlcc::telif {
28
35struct FitsData {
36
41 enum DaqStage {
42 DAQ_STAGE_START, // Parameter acquisition should happen with the Start command
43 DAQ_STAGE_END // Parameter acquisition should happen with the Stop command
44 };
45
49 enum ParamType {
50 P_LOGICAL, // Parameter reports a Logical
51 P_INTEGER, // Parameter reports a Integer
52 P_DOUBLE, // Parameter reports a double
53 P_STRING, // Parameter reports a string
54 };
55
56 std::string m_param_type; // Parameter type to be reported in the FITS Keyword
57 std::string m_param_name; // Parameter name to be reported in the FITS Keyword
58 ParamType m_value_type; // Parameter value type to be reported in the FITS Keywords
59 std::string m_value_format; // Paramener value format
60
61 std::string m_oldb_uri; // Oldb URI to reach the value to be reported
62 DaqStage m_daq_stage; // Stage in which the current acquisition should happen
63};
64
65
79public:
80
85 AQ_NOT_STARTED, // Not yet acquired
86 AQ_SUCCEDDED, // Already acquired succesfully
87 AQ_FAILED // Tried to acquire but failed
88 };
89
94 struct FitsValues {
95 bool m_logical = false;
97 double m_double;
98 std::string m_string;
99 };
100
104 FitsItemGeneric(OldbInterface& moldbif, const FitsData& mfitsdata);
105
119 template<typename T>
120 std::string StringFormat( const std::string& format, T arg );
121
127 bool ClearAcquisition();
128
135 virtual bool DoAcquisition(FitsData::DaqStage daq_stage);
136
143 bool GetJsonString(std::string &str_json);
144
145protected:
151 OldbInterface& GetOldbInterface() { return m_oldb_interface; }
152
158 const FitsData GetFitsData() { return m_fits_data; }
159
165 FitsValues GetFitsValues() { return m_fits_values; }
166
172 void SetFitsValues(const FitsValues& p_fits_values) { m_fits_values = p_fits_values; }
173
179 AcquisitionStage GetAcquisitionStage() { return m_acquisition_stage; }
180
186 void SetAcquisitionStage(AcquisitionStage p_acquisition_stage) { m_acquisition_stage =
187 p_acquisition_stage; }
188
189
190private:
191 OldbInterface& m_oldb_interface; // Oldb interface
192 const FitsData m_fits_data; // The parameter description data
193 FitsValues m_fits_values; // The container for the acquisition values
194 AcquisitionStage m_acquisition_stage; // The current paramenter acquisition stage
195};
196
197
202public:
203 FitsItemRadToDeg(OldbInterface& moldbif, const FitsData& mfitsdata);
204
205 bool DoAcquisition(FitsData::DaqStage daq_stage) override;
206};
207
208
213public:
214 FitsItemTelAlt(OldbInterface& moldbif, const FitsData& mfitsdata);
215
216 bool DoAcquisition(FitsData::DaqStage daq_stage) override;
217};
218
219
224public:
225 FitsItemTelAz(OldbInterface& moldbif, const FitsData& mfitsdata);
226
227 bool DoAcquisition(FitsData::DaqStage daq_stage) override;
228};
229
230
235public:
236 FitsItemTelEpoch(OldbInterface& moldbif, const FitsData& mfitsdata);
237
238 bool DoAcquisition(FitsData::DaqStage daq_stage) override;
239};
240
241
246public:
247 FitsItemTelEpochsystem(OldbInterface& moldbif, const FitsData& mfitsdata);
248
249 bool DoAcquisition(FitsData::DaqStage daq_stage) override;
250};
251
252
257public:
258 FitsItemTelTargRa(OldbInterface& moldbif, const FitsData& mfitsdata);
259
260 bool DoAcquisition(FitsData::DaqStage daq_stage) override;
261};
262
263
268public:
269 FitsItemTelTargDec(OldbInterface& moldbif, const FitsData& mfitsdata);
270
271 bool DoAcquisition(FitsData::DaqStage daq_stage) override;
272};
273
274
281public:
285 explicit FitsKeywords(OldbInterface& moldbif);
286
292 bool ClearAcquisition();
293
301 bool DoAcquisition(FitsData::DaqStage daq_stage);
302
310 bool GetJsonString(std::string &str_json);
311
312private:
313 std::list<std::unique_ptr<FitsItemGeneric>> m_fits_keywords_list;
314
315};
316
317} // namespace hlcc::telif
318
319#endif // HLCC_TELIF_TELIF_DATAACQUISITIONFITS_HPP
Default logger name.
OldbInterface class header file.
Definition dataAcquisitionFits.hpp:78
FitsValues GetFitsValues()
Definition dataAcquisitionFits.hpp:165
AcquisitionStage
Definition dataAcquisitionFits.hpp:84
@ AQ_SUCCEDDED
Definition dataAcquisitionFits.hpp:86
@ AQ_FAILED
Definition dataAcquisitionFits.hpp:87
@ AQ_NOT_STARTED
Definition dataAcquisitionFits.hpp:85
const FitsData GetFitsData()
Definition dataAcquisitionFits.hpp:158
OldbInterface & GetOldbInterface()
Definition dataAcquisitionFits.hpp:151
void SetAcquisitionStage(AcquisitionStage p_acquisition_stage)
Definition dataAcquisitionFits.hpp:186
AcquisitionStage GetAcquisitionStage()
Definition dataAcquisitionFits.hpp:179
bool ClearAcquisition()
Definition dataAcquisitionFits.cpp:83
bool GetJsonString(std::string &str_json)
Definition dataAcquisitionFits.cpp:152
std::string StringFormat(const std::string &format, T arg)
virtual bool DoAcquisition(FitsData::DaqStage daq_stage)
Definition dataAcquisitionFits.cpp:96
FitsItemGeneric(OldbInterface &moldbif, const FitsData &mfitsdata)
Definition dataAcquisitionFits.cpp:30
void SetFitsValues(const FitsValues &p_fits_values)
Definition dataAcquisitionFits.hpp:172
Definition dataAcquisitionFits.hpp:201
FitsItemRadToDeg(OldbInterface &moldbif, const FitsData &mfitsdata)
Definition dataAcquisitionFits.cpp:280
bool DoAcquisition(FitsData::DaqStage daq_stage) override
Definition dataAcquisitionFits.cpp:283
Definition dataAcquisitionFits.hpp:212
bool DoAcquisition(FitsData::DaqStage daq_stage) override
Definition dataAcquisitionFits.cpp:311
FitsItemTelAlt(OldbInterface &moldbif, const FitsData &mfitsdata)
Definition dataAcquisitionFits.cpp:308
Definition dataAcquisitionFits.hpp:223
bool DoAcquisition(FitsData::DaqStage daq_stage) override
Definition dataAcquisitionFits.cpp:345
FitsItemTelAz(OldbInterface &moldbif, const FitsData &mfitsdata)
Definition dataAcquisitionFits.cpp:342
Definition dataAcquisitionFits.hpp:234
bool DoAcquisition(FitsData::DaqStage daq_stage) override
Definition dataAcquisitionFits.cpp:378
FitsItemTelEpoch(OldbInterface &moldbif, const FitsData &mfitsdata)
Definition dataAcquisitionFits.cpp:375
Definition dataAcquisitionFits.hpp:245
bool DoAcquisition(FitsData::DaqStage daq_stage) override
Definition dataAcquisitionFits.cpp:416
FitsItemTelEpochsystem(OldbInterface &moldbif, const FitsData &mfitsdata)
Definition dataAcquisitionFits.cpp:413
Definition dataAcquisitionFits.hpp:267
bool DoAcquisition(FitsData::DaqStage daq_stage) override
Definition dataAcquisitionFits.cpp:496
FitsItemTelTargDec(OldbInterface &moldbif, const FitsData &mfitsdata)
Definition dataAcquisitionFits.cpp:493
Definition dataAcquisitionFits.hpp:256
bool DoAcquisition(FitsData::DaqStage daq_stage) override
Definition dataAcquisitionFits.cpp:454
FitsItemTelTargRa(OldbInterface &moldbif, const FitsData &mfitsdata)
Definition dataAcquisitionFits.cpp:451
Definition dataAcquisitionFits.hpp:280
FitsKeywords(OldbInterface &moldbif)
Definition dataAcquisitionFits.cpp:534
bool ClearAcquisition()
Definition dataAcquisitionFits.cpp:637
bool DoAcquisition(FitsData::DaqStage daq_stage)
Definition dataAcquisitionFits.cpp:648
bool GetJsonString(std::string &str_json)
Definition dataAcquisitionFits.cpp:669
Definition oldbInterface.hpp:47
Definition configTest.cpp:22
Definition dataAcquisitionFits.hpp:35
ParamType
Definition dataAcquisitionFits.hpp:49
@ P_DOUBLE
Definition dataAcquisitionFits.hpp:52
@ P_LOGICAL
Definition dataAcquisitionFits.hpp:50
@ P_INTEGER
Definition dataAcquisitionFits.hpp:51
@ P_STRING
Definition dataAcquisitionFits.hpp:53
std::string m_param_type
Definition dataAcquisitionFits.hpp:56
std::string m_oldb_uri
Definition dataAcquisitionFits.hpp:61
DaqStage m_daq_stage
Definition dataAcquisitionFits.hpp:62
DaqStage
Definition dataAcquisitionFits.hpp:41
@ DAQ_STAGE_END
Definition dataAcquisitionFits.hpp:43
@ DAQ_STAGE_START
Definition dataAcquisitionFits.hpp:42
std::string m_value_format
Definition dataAcquisitionFits.hpp:59
std::string m_param_name
Definition dataAcquisitionFits.hpp:57
ParamType m_value_type
Definition dataAcquisitionFits.hpp:58
Definition dataAcquisitionFits.hpp:94
std::string m_string
Definition dataAcquisitionFits.hpp:98
int m_integer
Definition dataAcquisitionFits.hpp:96
bool m_logical
Definition dataAcquisitionFits.hpp:95
double m_double
Definition dataAcquisitionFits.hpp:97