Line data Source code
1 : /** \file telem_telcat.hpp
2 : * \brief The MagAO-X logger telem_telcat 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_telcat_hpp
11 : #define logger_types_telem_telcat_hpp
12 :
13 : #include "generated/telem_telcat_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_telcat : public flatbuffer_log
26 : {
27 : ///The event code
28 : static const flatlogs::eventCodeT eventCode = eventCodes::TELEM_TELCAT;
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 1 : messageT( const std::string & catObj, ///< [in] Catalog object name
40 : const std::string & catRm, ///< [in] Catalog rotator mode
41 : const double & catRa, ///< [in] Catalog right ascension [degrees]
42 : const double & catDec, ///< [in] Catalog declination [degrees]
43 : const double & catEp, ///< [in] Catalog epoch
44 : const double & catRo ///< [in] Catalog rotator offset
45 : )
46 1 : {
47 1 : auto _catObj = builder.CreateString(catObj);
48 1 : auto _catRm = builder.CreateString(catRm);
49 1 : auto fp = CreateTelem_telcat_fb(builder, _catObj, _catRm, catRa, catDec, catEp, catRo);
50 1 : builder.Finish(fp);
51 1 : }
52 :
53 : };
54 :
55 1 : static bool verify( flatlogs::bufferPtrT & logBuff, ///< [in] Buffer containing the flatbuffer serialized message.
56 : flatlogs::msgLenT len ///< [in] length of msgBuffer.
57 : )
58 : {
59 1 : auto verifier = flatbuffers::Verifier( static_cast<uint8_t*>(flatlogs::logHeader::messageBuffer(logBuff)), static_cast<size_t>(len));
60 2 : return VerifyTelem_telcat_fbBuffer(verifier);
61 : }
62 :
63 : ///Get the message formatte for human consumption.
64 0 : static std::string msgString( void * msgBuffer, /**< [in] Buffer containing the flatbuffer serialized message.*/
65 : flatlogs::msgLenT len /**< [in] [unused] length of msgBuffer.*/
66 : )
67 : {
68 : static_cast<void>(len);
69 :
70 0 : auto fbs = GetTelem_telcat_fb(msgBuffer);
71 :
72 0 : std::string msg = "[telcat] ";
73 :
74 0 : if(fbs->catObj() != nullptr)
75 : {
76 0 : msg += "obj: ";
77 0 : msg += fbs->catObj()->c_str() ;
78 0 : msg += " ";
79 : }
80 :
81 0 : msg += "ra: ";
82 0 : msg += std::to_string(fbs->catRa()) + " ";
83 :
84 0 : msg += "dec: ";
85 0 : msg += std::to_string(fbs->catDec()) + " ";
86 :
87 0 : msg += "ep: ";
88 0 : msg += std::to_string(fbs->catEp()) + " ";
89 :
90 0 : if(fbs->catRm() != nullptr)
91 : {
92 0 : msg += "rm: ";
93 0 : msg += fbs->catRm()->c_str() ;
94 0 : msg += " ";
95 : }
96 :
97 0 : msg += "ro: ";
98 0 : msg += std::to_string(fbs->catRo()) + " ";
99 :
100 :
101 :
102 0 : return msg;
103 :
104 0 : }
105 :
106 0 : static std::string catObj(void * msgBuffer)
107 : {
108 0 : auto fbs = GetTelem_telcat_fb(msgBuffer);
109 0 : if(fbs->catObj() != nullptr)
110 : {
111 0 : return std::string(fbs->catObj()->c_str());
112 : }
113 : else
114 : {
115 0 : return std::string("");
116 : }
117 : }
118 :
119 0 : static std::string catRm(void * msgBuffer)
120 : {
121 0 : auto fbs = GetTelem_telcat_fb(msgBuffer);
122 0 : if(fbs->catRm() != nullptr)
123 : {
124 0 : return std::string(fbs->catRm()->c_str());
125 : }
126 : else
127 : {
128 0 : return std::string("");
129 : }
130 : }
131 :
132 0 : static double catRA(void * msgBuffer)
133 : {
134 0 : auto fbs = GetTelem_telcat_fb(msgBuffer);
135 0 : return fbs->catRa();
136 : }
137 :
138 0 : static double catDec(void * msgBuffer)
139 : {
140 0 : auto fbs = GetTelem_telcat_fb(msgBuffer);
141 0 : return fbs->catDec();
142 : }
143 :
144 0 : static double catEp(void * msgBuffer)
145 : {
146 0 : auto fbs = GetTelem_telcat_fb(msgBuffer);
147 0 : return fbs->catEp();
148 : }
149 :
150 0 : static double catRo(void * msgBuffer)
151 : {
152 0 : auto fbs = GetTelem_telcat_fb(msgBuffer);
153 0 : return fbs->catRo();
154 : }
155 :
156 : /// Get the logMetaDetail for a member by name
157 : /**
158 : * \returns the a logMetaDetail filled in with the appropriate details
159 : * \returns an empty logMetaDetail if member not recognized
160 : */
161 1 : static logMetaDetail getAccessor( const std::string & member /**< [in] the name of the member */ )
162 : {
163 1 : if( member == "catObj") return logMetaDetail({"OBJECT", logMeta::valTypes::String, logMeta::metaTypes::State, reinterpret_cast<void*>(&catObj), false});
164 1 : else if(member == "catRm") return logMetaDetail({"CATRM", logMeta::valTypes::String, logMeta::metaTypes::State, reinterpret_cast<void*>(&catRm), false});
165 1 : else if(member == "catRA") return logMetaDetail({"CATRA", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&catRA), false});
166 1 : else if(member == "catDec") return logMetaDetail({"CATDEC", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&catDec), false});
167 1 : else if(member == "catEp") return logMetaDetail({"CATEP", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&catEp), false});
168 1 : else if(member == "catRo") return logMetaDetail({"CATRO", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&catRo), false});
169 : else
170 : {
171 1 : std::cerr << "No member " << member << " in telem_telcat\n";
172 1 : return logMetaDetail();
173 : }
174 : }
175 :
176 : }; //telem_telcat
177 :
178 :
179 :
180 : } //namespace logger
181 : } //namespace MagAOX
182 :
183 : #endif //logger_types_telem_telcat_hpp
184 :
|