Line data Source code
1 : /** \file outlet_channel_state.hpp
2 : * \brief The MagAO-X logger outlet_channel_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_channel_state_hpp
11 : #define logger_types_outlet_channel_state_hpp
12 :
13 : #include "generated/outlet_channel_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_channel_state : public flatbuffer_log
26 : {
27 : //The event code
28 : static const flatlogs::eventCodeT eventCode = eventCodes::OUTLET_CHANNEL_STATE;
29 :
30 : //The default level
31 : static const flatlogs::logPrioT defaultLevel = flatlogs::logPrio::LOG_NOTICE;
32 :
33 : ///The type of the message
34 : struct messageT : public fbMessage
35 : {
36 1 : messageT( const std::string & channel,
37 : uint8_t state
38 : )
39 1 : {
40 1 : auto _channel = builder.CreateString(channel);
41 :
42 1 : auto gs = CreateOutlet_channel_state_fb(builder, _channel, state);
43 1 : builder.Finish(gs);
44 :
45 1 : }
46 : };
47 :
48 1 : static bool verify( flatlogs::bufferPtrT & logBuff, ///< [in] Buffer containing the flatbuffer serialized message.
49 : flatlogs::msgLenT len ///< [in] length of msgBuffer.
50 : )
51 : {
52 1 : auto verifier = flatbuffers::Verifier( static_cast<uint8_t*>(flatlogs::logHeader::messageBuffer(logBuff)), static_cast<size_t>(len));
53 2 : return VerifyOutlet_channel_state_fbBuffer(verifier);
54 : }
55 :
56 : /// Format the message for text output, including translation of state codes to text form.
57 : /**
58 : * \returns the message formatted as "State changed from UNINITIALIZED to INITIALIZED"
59 : */
60 0 : static std::string msgString(void * msgBuffer, flatlogs::msgLenT len)
61 : {
62 : static_cast<void>(len);
63 :
64 0 : auto rgs = GetOutlet_channel_state_fb(msgBuffer);
65 :
66 0 : std::stringstream s;
67 0 : s << "Channel: ";
68 :
69 0 : if(rgs->channel() != nullptr) s << rgs->channel()->c_str() << " ";
70 0 : else s << "????" << " ";
71 :
72 0 : if(rgs->state()==2)
73 : {
74 0 : s << "ON";
75 : }
76 0 : else if(rgs->state()==1)
77 : {
78 0 : s << "INT";
79 : }
80 0 : else if(rgs->state()==0)
81 : {
82 0 : s << "OFF";
83 : }
84 0 : else s << "UNK";
85 :
86 0 : return s.str();
87 0 : }
88 :
89 : /// Get an empty logMetaDetail because meta data doesn't make sense for this log
90 : /**
91 : * \returns an empty logMetaDetail
92 : */
93 1 : static logMetaDetail getAccessor( const std::string & member /**< [in] the name of the member */ )
94 : {
95 : static_cast<void>(member);
96 :
97 1 : std::cerr << "meta data doesn't make sense for outlet_channel_state.\n";
98 1 : return logMetaDetail();
99 : }
100 : };
101 :
102 : } //namespace logger
103 : } //namespace MagAOX
104 :
105 : #endif //logger_types_outlet_channel_state_hpp
|