API
 
Loading...
Searching...
No Matches
telem_adctrack.hpp
Go to the documentation of this file.
1/** \file telem_adctrack.hpp
2 * \brief The MagAO-X logger telem_adctrack log type.
3 * \author Jared R. Males (jaredmales@gmail.com)
4 *
5 * \ingroup logger_types_files
6 *
7 */
8#ifndef logger_types_telem_adctrack_hpp
9#define logger_types_telem_adctrack_hpp
10
12#include "flatbuffer_log.hpp"
13
14namespace MagAOX
15{
16namespace logger
17{
18
19/// Log entry recording ADC tracker operator-adjustable state.
20/** \ingroup logger_types
21 */
23{
24 /// The event code
26
27 /// The default level
29
30 static timespec
31 lastRecord; ///< The timestamp of the last time this log was recorded. Used by the telemetry system.
32
33 /// The type of the input message
34 struct messageT : public fbMessage
35 {
36 /// Construct from components
37 messageT( const bool &tracking, /**< [in] whether ADC tracking is enabled */
38 const float &delta_angle, /**< [in] the shared ADC delta angle */
39 const float &adc1_delta, /**< [in] the ADC 1-specific delta angle */
40 const float &adc2_delta, /**< [in] the ADC 2-specific delta angle */
41 const float &min_zd /**< [in] the minimum tracked zenith distance */
42 )
43 {
45 builder.Finish( fp );
46 }
47 };
48
49 static bool verify( flatlogs::bufferPtrT &logBuff, ///< [in] Buffer containing the flatbuffer serialized message.
50 flatlogs::msgLenT len ///< [in] length of msgBuffer.
51 )
52 {
53 auto verifier = flatbuffers::Verifier( static_cast<uint8_t *>( flatlogs::logHeader::messageBuffer( logBuff ) ),
54 static_cast<size_t>( len ) );
55 return VerifyTelem_adctrack_fbBuffer( verifier );
56 }
57
58 /// Get the message formatted for human consumption.
59 static std::string msgString( void *msgBuffer, /**< [in] Buffer containing the flatbuffer serialized message.*/
60 flatlogs::msgLenT len /**< [in] [unused] length of msgBuffer.*/
61 )
62 {
63 static_cast<void>( len );
64
65 auto fbs = GetTelem_adctrack_fb( msgBuffer );
66
67 std::string msg = "[adctrack] ";
68
69 msg += "tracking: ";
70 msg += fbs->tracking() ? "On " : "Off ";
71
72 msg += "delta_angle: ";
73 msg += std::to_string( fbs->delta_angle() ) + " ";
74
75 msg += "adc1_delta: ";
76 msg += std::to_string( fbs->adc1_delta() ) + " ";
77
78 msg += "adc2_delta: ";
79 msg += std::to_string( fbs->adc2_delta() ) + " ";
80
81 msg += "min_zd: ";
82 msg += std::to_string( fbs->min_zd() ) + " ";
83
84 return msg;
85 }
86
87 static bool tracking( void *msgBuffer )
88 {
89 auto fbs = GetTelem_adctrack_fb( msgBuffer );
90 return fbs->tracking();
91 }
92
93 static float delta_angle( void *msgBuffer )
94 {
95 auto fbs = GetTelem_adctrack_fb( msgBuffer );
96 return fbs->delta_angle();
97 }
98
99 static float adc1_delta( void *msgBuffer )
100 {
101 auto fbs = GetTelem_adctrack_fb( msgBuffer );
102 return fbs->adc1_delta();
103 }
104
105 static float adc2_delta( void *msgBuffer )
106 {
107 auto fbs = GetTelem_adctrack_fb( msgBuffer );
108 return fbs->adc2_delta();
109 }
110
111 static float min_zd( void *msgBuffer )
112 {
113 auto fbs = GetTelem_adctrack_fb( msgBuffer );
114 return fbs->min_zd();
115 }
116
117 /// Get the logMetaDetail for a member by name
118 /**
119 * \returns the a logMetaDetail filled in with the appropriate details
120 * \returns an empty logMetaDetail if member not recognized
121 */
122 static logMetaDetail getAccessor( const std::string &member /**< [in] the name of the member */ )
123 {
124 if( member == "tracking" )
125 {
126 return logMetaDetail( { "TRACKING",
129 reinterpret_cast<void *>( &tracking ) } );
130 }
131 else if( member == "delta_angle" )
132 {
133 return logMetaDetail( { "DELTA ANGLE",
136 reinterpret_cast<void *>( &delta_angle ) } );
137 }
138 else if( member == "adc1_delta" )
139 {
140 return logMetaDetail( { "ADC1 DELTA",
143 reinterpret_cast<void *>( &adc1_delta ) } );
144 }
145 else if( member == "adc2_delta" )
146 {
147 return logMetaDetail( { "ADC2 DELTA",
150 reinterpret_cast<void *>( &adc2_delta ) } );
151 }
152 else if( member == "min_zd" )
153 {
154 return logMetaDetail( { "MIN ZD",
157 reinterpret_cast<void *>( &min_zd ) } );
158 }
159 else
160 {
161 std::cerr << "No member " << member << " in telem_adctrack\n";
162 return logMetaDetail();
163 }
164 }
165
166}; // telem_adctrack
167
168} // namespace logger
169} // namespace MagAOX
170
171#endif // logger_types_telem_adctrack_hpp
The MagAO-X logger flatbuffer log base type.
uint16_t eventCodeT
The type of an event code (16-bit unsigned int).
Definition logDefs.hpp:40
msgLen2T msgLenT
The type used to refer to the message length, regardless of length.
Definition logDefs.hpp:69
int8_t logPrioT
The type of the log priority code.
Definition logDefs.hpp:21
static void * messageBuffer(bufferPtrT &logBuffer)
Get the message buffer address.
std::shared_ptr< char > bufferPtrT
The log entry buffer smart pointer.
Definition logHeader.hpp:58
static constexpr flatlogs::eventCodeT TELEM_ADCTRACK
Definition logCodes.hpp:73
const MagAOX::logger::Telem_adctrack_fb * GetTelem_adctrack_fb(const void *buf)
bool VerifyTelem_adctrack_fbBuffer(::flatbuffers::Verifier &verifier)
inline ::flatbuffers::Offset< Telem_adctrack_fb > CreateTelem_adctrack_fb(::flatbuffers::FlatBufferBuilder &_fbb, bool tracking=false, float delta_angle=0.0f, float adc1_delta=0.0f, float adc2_delta=0.0f, float min_zd=0.0f)
Definition dm.hpp:19
static constexpr logPrioT LOG_TELEM
A telemetry recording.
Message type for resolving log messages with a f.b. builder.
flatbuffers::FlatBufferBuilder builder
Base class for logs consisting of a flatbuffer message.
The type of the input message.
messageT(const bool &tracking, const float &delta_angle, const float &adc1_delta, const float &adc2_delta, const float &min_zd)
Construct from components.
Log entry recording ADC tracker operator-adjustable state.
static float min_zd(void *msgBuffer)
static std::string msgString(void *msgBuffer, flatlogs::msgLenT len)
Get the message formatted for human consumption.
static float delta_angle(void *msgBuffer)
static bool tracking(void *msgBuffer)
static timespec lastRecord
The timestamp of the last time this log was recorded. Used by the telemetry system.
static const flatlogs::eventCodeT eventCode
The event code.
static float adc1_delta(void *msgBuffer)
static float adc2_delta(void *msgBuffer)
static const flatlogs::logPrioT defaultLevel
The default level.
static logMetaDetail getAccessor(const std::string &member)
Get the logMetaDetail for a member by name.
static bool verify(flatlogs::bufferPtrT &logBuff, flatlogs::msgLenT len)