Line data Source code
1 : /** \file outlet_state.hpp
2 : * \brief The MagAO-X logger outlet_state log type.
3 : * \author Jared R. Males (jaredmales@gmail.com)
4 : *
5 : * \ingroup logger_types_files
6 : *
7 : * History:
8 : * - 2018-08-18 created by JRM
9 : */
10 : #ifndef logger_types_outlet_state_hpp
11 : #define logger_types_outlet_state_hpp
12 :
13 : #include "generated/outlet_state_generated.h"
14 : #include "flatbuffer_log.hpp"
15 :
16 : namespace MagAOX
17 : {
18 : namespace logger
19 : {
20 :
21 :
22 : ///Application State Change
23 : /** \ingroup logger_types
24 : */
25 : struct outlet_state : public flatbuffer_log
26 : {
27 : //The event code
28 : static const flatlogs::eventCodeT eventCode = eventCodes::OUTLET_STATE;
29 :
30 : //The default level
31 : static const flatlogs::logPrioT defaultLevel = flatlogs::logPrio::LOG_INFO;
32 :
33 : ///The type of the message
34 : struct messageT : public fbMessage
35 : {
36 1 : messageT( uint8_t outlet,
37 : uint8_t state
38 : )
39 1 : {
40 1 : auto gs = CreateOutlet_state_fb(builder, outlet, state);
41 1 : builder.Finish(gs);
42 :
43 1 : }
44 : };
45 :
46 1 : static bool verify( flatlogs::bufferPtrT & logBuff, ///< [in] Buffer containing the flatbuffer serialized message.
47 : flatlogs::msgLenT len ///< [in] length of msgBuffer.
48 : )
49 : {
50 1 : auto verifier = flatbuffers::Verifier( static_cast<uint8_t*>(flatlogs::logHeader::messageBuffer(logBuff)), static_cast<size_t>(len));
51 2 : return VerifyOutlet_state_fbBuffer(verifier);
52 : }
53 :
54 : /// Format the message for text output, including translation of state codes to text form.
55 : /**
56 : * \returns the message formatted as "State changed from UNINITIALIZED to INITIALIZED"
57 : */
58 0 : static std::string msgString(void * msgBuffer, flatlogs::msgLenT len)
59 : {
60 : static_cast<void>(len);
61 :
62 0 : auto rgs = GetOutlet_state_fb(msgBuffer);
63 :
64 0 : std::stringstream s;
65 0 : s << "Outlet: " << (int) rgs->outlet() << " ";
66 :
67 0 : if(rgs->state()==2)
68 : {
69 0 : s << "ON";
70 : }
71 0 : else if(rgs->state()==1)
72 : {
73 0 : s << "INT";
74 : }
75 0 : else if(rgs->state()==0)
76 : {
77 0 : s << "OFF";
78 : }
79 0 : else s << "UNK";
80 :
81 0 : return s.str();
82 0 : }
83 :
84 : /// Get an empty logMetaDetail because meta data doesn't make sense for this log
85 : /**
86 : * \returns an empty logMetaDetail
87 : */
88 1 : static logMetaDetail getAccessor( const std::string & member /**< [in] the name of the member */ )
89 : {
90 : static_cast<void>(member);
91 :
92 1 : std::cerr << "meta data doesn't make sense for outlet_state.\n";
93 1 : return logMetaDetail();
94 : }
95 : };
96 :
97 : } //namespace logger
98 : } //namespace MagAOX
99 :
100 : #endif //logger_types_outlet_state_hpp
|