Line data Source code
1 : /** \file telem_telsee.hpp
2 : * \brief The MagAO-X logger telem_telsee log type.
3 : * \author Jared R. Males (jaredmales@gmail.com)
4 : *
5 : * \ingroup logger_types_files
6 : *
7 : * History:
8 : * - 2018-09-06 created by JRM
9 : */
10 : #ifndef logger_types_telem_telsee_hpp
11 : #define logger_types_telem_telsee_hpp
12 :
13 : #include "generated/telem_telsee_generated.h"
14 : #include "flatbuffer_log.hpp"
15 :
16 : namespace MagAOX
17 : {
18 : namespace logger
19 : {
20 :
21 :
22 : /// Log entry recording the build-time git state.
23 : /** \ingroup logger_types
24 : */
25 : struct telem_telsee : public flatbuffer_log
26 : {
27 : ///The event code
28 : static const flatlogs::eventCodeT eventCode = eventCodes::TELEM_TELSEE;
29 :
30 : ///The default level
31 : static const flatlogs::logPrioT defaultLevel = flatlogs::logPrio::LOG_TELEM;
32 :
33 : static timespec lastRecord; ///< The time of the last time this log was recorded. Used by the telemetry system.
34 :
35 : ///The type of the input message
36 : struct messageT : public fbMessage
37 : {
38 : ///Construct from components
39 0 : messageT( const int & dimm_time, ///< [in]
40 : const double & dimm_fwhm_corr, ///< [in]
41 : const int & mag1_time, ///< [in]
42 : const double & mag1_fwhm_corr, ///< [in]
43 : const int & mag2_time, ///< [in]
44 : const double & mag2_fwhm_corr ///< [in]
45 : )
46 0 : {
47 0 : auto fp = CreateTelem_telsee_fb(builder, dimm_time, dimm_fwhm_corr, mag1_time, mag1_fwhm_corr, mag2_time, mag2_fwhm_corr);
48 0 : builder.Finish(fp);
49 0 : }
50 :
51 : };
52 :
53 0 : static bool verify( flatlogs::bufferPtrT & logBuff, ///< [in] Buffer containing the flatbuffer serialized message.
54 : flatlogs::msgLenT len ///< [in] length of msgBuffer.
55 : )
56 : {
57 0 : auto verifier = flatbuffers::Verifier( static_cast<uint8_t*>(flatlogs::logHeader::messageBuffer(logBuff)), static_cast<size_t>(len));
58 0 : return VerifyTelem_telsee_fbBuffer(verifier);
59 : }
60 :
61 : ///Get the message formatte for human consumption.
62 0 : static std::string msgString( void * msgBuffer, /**< [in] Buffer containing the flatbuffer serialized message.*/
63 : flatlogs::msgLenT len /**< [in] [unused] length of msgBuffer.*/
64 : )
65 : {
66 : static_cast<void>(len);
67 :
68 0 : auto fbs = GetTelem_telsee_fb(msgBuffer);
69 :
70 0 : std::string msg = "[telsee] ";
71 :
72 0 : msg += "dimm[ ";
73 :
74 0 : msg += "t: ";
75 0 : msg += std::to_string(fbs->dimm_time()) + " ";
76 :
77 0 : msg += "fw-cor: ";
78 0 : msg += std::to_string(fbs->dimm_fwhm_corr()) + "] ";
79 :
80 0 : msg += "mag1[ ";
81 :
82 0 : msg += "t: ";
83 0 : msg += std::to_string(fbs->mag1_time()) + " ";
84 :
85 0 : msg += "fw-cor: ";
86 0 : msg += std::to_string(fbs->mag1_fwhm_corr()) + "] ";
87 :
88 :
89 0 : msg += "mag2[ ";
90 :
91 0 : msg += "t: ";
92 0 : msg += std::to_string(fbs->mag2_time()) + " ";
93 :
94 0 : msg += "fw-cor: ";
95 0 : msg += std::to_string(fbs->mag2_fwhm_corr()) + "] ";
96 0 : return msg;
97 :
98 0 : }
99 :
100 0 : static int dimm_time( void * msgBuffer /**< [in] Buffer containing the flatbuffer serialized message.*/ )
101 : {
102 0 : auto fbs = GetTelem_telsee_fb(msgBuffer);
103 0 : return fbs->dimm_time();
104 : }
105 :
106 0 : static double dimm_fwhm_corr( void * msgBuffer /**< [in] Buffer containing the flatbuffer serialized message.*/ )
107 : {
108 0 : auto fbs = GetTelem_telsee_fb(msgBuffer);
109 0 : return fbs->dimm_fwhm_corr();
110 : }
111 :
112 0 : static int mag1_time( void * msgBuffer /**< [in] Buffer containing the flatbuffer serialized message.*/ )
113 : {
114 0 : auto fbs = GetTelem_telsee_fb(msgBuffer);
115 0 : return fbs->mag1_time();
116 : }
117 :
118 0 : static double mag1_fwhm_corr( void * msgBuffer /**< [in] Buffer containing the flatbuffer serialized message.*/ )
119 : {
120 0 : auto fbs = GetTelem_telsee_fb(msgBuffer);
121 0 : return fbs->mag1_fwhm_corr();
122 : }
123 :
124 0 : static int mag2_time( void * msgBuffer /**< [in] Buffer containing the flatbuffer serialized message.*/ )
125 : {
126 0 : auto fbs = GetTelem_telsee_fb(msgBuffer);
127 0 : return fbs->mag2_time();
128 : }
129 :
130 0 : static double mag2_fwhm_corr( void * msgBuffer /**< [in] Buffer containing the flatbuffer serialized message.*/ )
131 : {
132 0 : auto fbs = GetTelem_telsee_fb(msgBuffer);
133 0 : return fbs->mag2_fwhm_corr();
134 : }
135 :
136 : /// Get the logMetaDetail for a member by name
137 : /**
138 : * \returns the a logMetaDetail filled in with the appropriate details
139 : * \returns an empty logMetaDetail if member not recognized
140 : */
141 1 : static logMetaDetail getAccessor( const std::string & member /**< [in] the name of the member */ )
142 : {
143 1 : if( member == "dimm_time") return logMetaDetail({"DIMM TIME", "DIMM meas. time [sec since midnight]", logMeta::valTypes::Int, logMeta::metaTypes::State, reinterpret_cast<void*>(&dimm_time), false});
144 1 : else if( member == "dimm_fwhm_corr") return logMetaDetail({"DIMM FWHM CORR", "DIMM FWHM corrected to zenith", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&dimm_fwhm_corr), false});
145 1 : else if( member == "mag1_time") return logMetaDetail({"MAG1 TIME", "Baade meas. time [sec since midnight]", logMeta::valTypes::Int, logMeta::metaTypes::State, reinterpret_cast<void*>(&mag1_time), false});
146 1 : else if( member == "mag1_fwhm_corr") return logMetaDetail({"MAG1 FWHM CORR", "Baade FWHM corrected to zenith", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&mag1_fwhm_corr), false});
147 1 : else if( member == "mag2_time") return logMetaDetail({"MAG2 TIME", "Clay meas. time [sec since midnight]", logMeta::valTypes::Int, logMeta::metaTypes::State, reinterpret_cast<void*>(&mag2_time), false});
148 1 : else if( member == "mag2_fwhm_corr") return logMetaDetail({"MAG2 FWHM CORR", "Clay FWHM corrected to zenith", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&mag2_fwhm_corr), false});
149 : else
150 : {
151 1 : std::cerr << "No member " << member << " in telem_saving\n";
152 1 : return logMetaDetail();
153 : }
154 : }
155 :
156 : }; //telem_telsee
157 :
158 :
159 :
160 : } //namespace logger
161 : } //namespace MagAOX
162 :
163 : #endif //logger_types_telem_telsee_hpp
164 :
|