Line data Source code
1 : /** \file telem_tcsi_labmode.hpp
2 : * \brief The MagAO-X logger type for tcsInterface lab-mode telemetry.
3 : * \author Jared R. Males (jaredmales@gmail.com)
4 : *
5 : * \ingroup logger_types_files
6 : *
7 : */
8 : #ifndef logger_types_telem_tcsi_labmode_hpp
9 : #define logger_types_telem_tcsi_labmode_hpp
10 :
11 : #include "generated/telem_tcsi_labmode_generated.h"
12 : #include "flatbuffer_log.hpp"
13 :
14 : namespace MagAOX
15 : {
16 : namespace logger
17 : {
18 :
19 : /// tcsInterface lab-mode telemetry.
20 : /** \ingroup logger_types
21 : */
22 : struct telem_tcsi_labmode : public flatbuffer_log
23 : {
24 : /// The event code
25 : static const flatlogs::eventCodeT eventCode = eventCodes::TELEM_TCSI_LABMODE;
26 :
27 : /// The default level
28 : static const flatlogs::logPrioT defaultLevel = flatlogs::logPrio::LOG_TELEM;
29 :
30 : static timespec lastRecord; ///< The time of the last time this log was recorded. Used by the telemetry system.
31 :
32 : /// The type of the input message
33 : struct messageT : public fbMessage
34 : {
35 : /// Construct from components.
36 1 : messageT( const bool &labMode ///< [in] whether tcsInterface is in lab mode
37 : )
38 1 : {
39 1 : auto fp = CreateTelem_tcsi_labmode_fb( builder, labMode );
40 1 : builder.Finish( fp );
41 1 : }
42 : };
43 :
44 1 : static bool verify( flatlogs::bufferPtrT &logBuff, ///< [in] Buffer containing the flatbuffer serialized message.
45 : flatlogs::msgLenT len ///< [in] length of msgBuffer.
46 : )
47 : {
48 1 : auto verifier = flatbuffers::Verifier( static_cast<uint8_t *>( flatlogs::logHeader::messageBuffer( logBuff ) ),
49 1 : static_cast<size_t>( len ) );
50 2 : return VerifyTelem_tcsi_labmode_fbBuffer( verifier );
51 : }
52 :
53 : /// Format the message for human consumption.
54 0 : static std::string msgString( void *msgBuffer, /**< [in] Buffer containing the flatbuffer serialized message.*/
55 : flatlogs::msgLenT len /**< [in] [unused] length of msgBuffer.*/
56 : )
57 : {
58 : static_cast<void>( len );
59 :
60 0 : auto fbs = GetTelem_tcsi_labmode_fb( msgBuffer );
61 :
62 0 : std::string msg = "[tcsi_labmode] ";
63 0 : msg += "labMode: ";
64 0 : msg += std::to_string( fbs->labMode() );
65 :
66 0 : return msg;
67 0 : }
68 :
69 : /// Access the lab-mode state.
70 0 : static bool labMode( void *msgBuffer /**< [in] Buffer containing the flatbuffer serialized message.*/ )
71 : {
72 0 : auto fbs = GetTelem_tcsi_labmode_fb( msgBuffer );
73 0 : return fbs->labMode();
74 : }
75 :
76 : /// Get the logMetaDetail for a member by name.
77 : /**
78 : * \returns the a logMetaDetail filled in with the appropriate details
79 : * \returns an empty logMetaDetail if member not recognized
80 : */
81 0 : static logMetaDetail getAccessor( const std::string &member /**< [in] the name of the member */ )
82 : {
83 0 : if( member == "labMode" )
84 : {
85 : return logMetaDetail( { "LABMODE",
86 : logMeta::valTypes::Bool,
87 : logMeta::metaTypes::State,
88 0 : reinterpret_cast<void *>( &labMode ) } );
89 : }
90 : else
91 : {
92 0 : std::cerr << "No member " << member << " in telem_tcsi_labmode\n";
93 0 : return logMetaDetail();
94 : }
95 : }
96 : };
97 :
98 : } // namespace logger
99 : } // namespace MagAOX
100 :
101 : #endif // logger_types_telem_tcsi_labmode_hpp
|