Line data Source code
1 : /** \file pico_channel.hpp
2 : * \brief The MagAO-X logger pico_channel 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_pico_channel_hpp
11 : #define logger_types_pico_channel_hpp
12 :
13 : #include "generated/pico_channel_generated.h"
14 : #include "flatbuffer_log.hpp"
15 :
16 : namespace MagAOX
17 : {
18 : namespace logger
19 : {
20 :
21 :
22 : /// Picomotor Channel Setup
23 : /** \ingroup logger_types
24 : */
25 : struct pico_channel : public flatbuffer_log
26 : {
27 : //The event code
28 : static const flatlogs::eventCodeT eventCode = eventCodes::PICO_CHANNEL;
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( const std::string & name,
37 : uint8_t channel
38 : )
39 1 : {
40 1 : auto _name = builder.CreateString(name);
41 :
42 1 : auto gs = CreatePico_channel_fb(builder, _name, channel);
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 VerifyPico_channel_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 = GetPico_channel_fb(msgBuffer);
65 :
66 :
67 0 : std::string s = "Pico Motor: ";
68 :
69 0 : if(rgs->name())
70 : {
71 0 : s += rgs->name()->c_str();
72 : }
73 :
74 0 : s += " ch: ";
75 0 : s += std::to_string(rgs->channel());
76 :
77 0 : return s;
78 0 : }
79 :
80 : /// Get an empty logMetaDetail because meta data doesn't make sense for this log
81 : /**
82 : * \returns an empty logMetaDetail
83 : */
84 1 : static logMetaDetail getAccessor( const std::string & member /**< [in] the name of the member */ )
85 : {
86 : static_cast<void>(member);
87 :
88 1 : std::cerr << "meta data doesn't make sense for pico_channel.\n";
89 1 : return logMetaDetail();
90 : }
91 : };
92 :
93 : } //namespace logger
94 : } //namespace MagAOX
95 :
96 : #endif //logger_types_pico_channel_hpp
|