Line data Source code
1 : /** \file telem_telenv.hpp
2 : * \brief The MagAO-X logger telem_telenv 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_telenv_hpp
11 : #define logger_types_telem_telenv_hpp
12 :
13 : #include "generated/telem_telenv_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_telenv : public flatbuffer_log
26 : {
27 : ///The event code
28 : static const flatlogs::eventCodeT eventCode = eventCodes::TELEM_TELENV;
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 double & tempout, ///< [in]
40 : const double & pressure, ///< [in]
41 : const double & humidity, ///< [in]
42 : const double & wind, ///< [in]
43 : const double & winddir, ///< [in]
44 : const double & temptruss, ///< [in]
45 : const double & tempcell, ///< [in]
46 : const double & tempseccell, ///< [in]
47 : const double & tempamb, ///< [in]
48 : const double & dewpoint ///< [in]
49 : )
50 1 : {
51 1 : auto fp = CreateTelem_telenv_fb(builder, tempout, pressure, humidity, wind,winddir,temptruss,tempcell,tempseccell,tempamb, dewpoint);
52 1 : builder.Finish(fp);
53 1 : }
54 :
55 : };
56 :
57 1 : static bool verify( flatlogs::bufferPtrT & logBuff, ///< [in] Buffer containing the flatbuffer serialized message.
58 : flatlogs::msgLenT len ///< [in] length of msgBuffer.
59 : )
60 : {
61 1 : auto verifier = flatbuffers::Verifier( static_cast<uint8_t*>(flatlogs::logHeader::messageBuffer(logBuff)), static_cast<size_t>(len));
62 2 : return VerifyTelem_telenv_fbBuffer(verifier);
63 : }
64 :
65 : ///Get the message formatte for human consumption.
66 0 : static std::string msgString( void * msgBuffer, /**< [in] Buffer containing the flatbuffer serialized message.*/
67 : flatlogs::msgLenT len /**< [in] [unused] length of msgBuffer.*/
68 : )
69 : {
70 : static_cast<void>(len);
71 :
72 0 : auto fbs = GetTelem_telenv_fb(msgBuffer);
73 :
74 0 : std::string msg = "[telenv] ";
75 :
76 0 : msg += "tempout: ";
77 0 : msg += std::to_string(fbs->tempout()) + " ";
78 :
79 0 : msg += "press: ";
80 0 : msg += std::to_string(fbs->pressure()) + " ";
81 :
82 0 : msg += "humidity: ";
83 0 : msg += std::to_string(fbs->humidity()) + " ";
84 :
85 0 : msg += "wind: ";
86 0 : msg += std::to_string(fbs->wind()) + " ";
87 :
88 0 : msg += "winddir: ";
89 0 : msg += std::to_string(fbs->winddir()) + " ";
90 :
91 0 : msg += "temptruss: ";
92 0 : msg += std::to_string(fbs->temptruss()) + " ";
93 :
94 0 : msg += "tempcell: ";
95 0 : msg += std::to_string(fbs->tempcell()) + " ";
96 :
97 0 : msg += "tempseccell: ";
98 0 : msg += std::to_string(fbs->tempseccell()) + " ";
99 :
100 0 : msg += "tempamb: ";
101 0 : msg += std::to_string(fbs->tempamb()) + " ";
102 :
103 0 : msg += "dewpoint: ";
104 0 : msg += std::to_string(fbs->dewpoint()) + " ";
105 :
106 :
107 0 : return msg;
108 :
109 0 : }
110 :
111 0 : static double tempout( void * msgBuffer /**< [in] Buffer containing the flatbuffer serialized message.*/ )
112 : {
113 0 : auto fbs = GetTelem_telenv_fb(msgBuffer);
114 0 : return fbs->tempout();
115 : }
116 :
117 0 : static double pressure( void * msgBuffer /**< [in] Buffer containing the flatbuffer serialized message.*/ )
118 : {
119 0 : auto fbs = GetTelem_telenv_fb(msgBuffer);
120 0 : return fbs->pressure();
121 : }
122 :
123 0 : static double humidity( void * msgBuffer /**< [in] Buffer containing the flatbuffer serialized message.*/ )
124 : {
125 0 : auto fbs = GetTelem_telenv_fb(msgBuffer);
126 0 : return fbs->humidity();
127 : }
128 :
129 0 : static double wind( void * msgBuffer /**< [in] Buffer containing the flatbuffer serialized message.*/ )
130 : {
131 0 : auto fbs = GetTelem_telenv_fb(msgBuffer);
132 0 : return fbs->wind();
133 : }
134 :
135 0 : static double winddir( void * msgBuffer /**< [in] Buffer containing the flatbuffer serialized message.*/ )
136 : {
137 0 : auto fbs = GetTelem_telenv_fb(msgBuffer);
138 0 : return fbs->winddir();
139 : }
140 :
141 0 : static double temptruss( void * msgBuffer /**< [in] Buffer containing the flatbuffer serialized message.*/ )
142 : {
143 0 : auto fbs = GetTelem_telenv_fb(msgBuffer);
144 0 : return fbs->temptruss();
145 : }
146 :
147 0 : static double tempcell( void * msgBuffer /**< [in] Buffer containing the flatbuffer serialized message.*/ )
148 : {
149 0 : auto fbs = GetTelem_telenv_fb(msgBuffer);
150 0 : return fbs->tempcell();
151 : }
152 :
153 0 : static double tempseccell( void * msgBuffer /**< [in] Buffer containing the flatbuffer serialized message.*/ )
154 : {
155 0 : auto fbs = GetTelem_telenv_fb(msgBuffer);
156 0 : return fbs->tempseccell();
157 : }
158 :
159 0 : static double tempamb( void * msgBuffer /**< [in] Buffer containing the flatbuffer serialized message.*/ )
160 : {
161 0 : auto fbs = GetTelem_telenv_fb(msgBuffer);
162 0 : return fbs->tempamb();
163 : }
164 :
165 0 : static double dewpoint( void * msgBuffer /**< [in] Buffer containing the flatbuffer serialized message.*/ )
166 : {
167 0 : auto fbs = GetTelem_telenv_fb(msgBuffer);
168 0 : return fbs->dewpoint();
169 : }
170 :
171 : /// Get the logMetaDetail for a member by name
172 : /**
173 : * \returns the a logMetaDetail filled in with the appropriate details
174 : * \returns an empty logMetaDetail if member not recognized
175 : */
176 1 : static logMetaDetail getAccessor( const std::string & member /**< [in] the name of the member */ )
177 : {
178 1 : if( member == "tempout") return logMetaDetail({"OUTSIDE TEMP", "outside temperature [C]", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&tempout), false});
179 1 : else if( member == "pressure") return logMetaDetail({"PRESSURE", "ambient pressure", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&pressure), false});
180 1 : else if( member == "humidity") return logMetaDetail({"HUMIDITY", "relative humidity", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&humidity), false});
181 1 : else if( member == "wind") return logMetaDetail({"WIND SPEED", "wind speed", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&wind), false});
182 1 : else if( member == "winddir") return logMetaDetail({"WIND DIR", "wind direction", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&winddir), false});
183 1 : else if( member == "temptruss") return logMetaDetail({"TRUSS TEMP", "truss temperature [C]", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&temptruss), false});
184 1 : else if( member == "tempcell") return logMetaDetail({"CELL TEMP", "cell temperature [C]", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&tempcell), false});
185 1 : else if( member == "tempseccell") return logMetaDetail({"SEC CELL TEMP", "secondary cell temperature [C]", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&tempseccell), false});
186 1 : else if( member == "tempamb") return logMetaDetail({"AMBIENT TEMP", "ambient temperature [C]", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&tempamb), false});
187 1 : else if( member == "dewpoint") return logMetaDetail({"DEWPOINT", "dew point [C]", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&dewpoint), false});
188 : else
189 : {
190 1 : std::cerr << "No member " << member << " in telem_telenv\n";
191 1 : return logMetaDetail();
192 : }
193 : }
194 : }; //telem_telenv
195 :
196 :
197 : } //namespace logger
198 : } //namespace MagAOX
199 :
200 : #endif //logger_types_telem_telenv_hpp
201 :
|