Line data Source code
1 : /** \file ttmmod_params.hpp
2 : * \brief The MagAO-X logger ttmmod_params log type.
3 : * \author Jared R. Males (jaredmales@gmail.com)
4 : *
5 : * \ingroup logger_types_files
6 : *
7 : * History:
8 : * - 2018-09-06 created by JRM
9 : */
10 : #ifndef logger_types_ttmmod_params_hpp
11 : #define logger_types_ttmmod_params_hpp
12 :
13 : #include "generated/ttmmod_params_generated.h"
14 : #include "flatbuffer_log.hpp"
15 :
16 : namespace MagAOX
17 : {
18 : namespace logger
19 : {
20 :
21 :
22 : /// Log entry recording the modulator state
23 : /** \ingroup logger_types
24 : */
25 : struct ttmmod_params : public flatbuffer_log
26 : {
27 : ///The event code
28 : static const flatlogs::eventCodeT eventCode = eventCodes::TTMMOD_PARAMS;
29 :
30 : ///The default level
31 : static const flatlogs::logPrioT defaultLevel = flatlogs::logPrio::LOG_INFO;
32 :
33 :
34 : ///The type of the input message
35 : struct messageT : public fbMessage
36 : {
37 : ///Construct from components
38 1 : messageT( const uint8_t & modState,
39 : const double & modFreq,
40 : const double & modRad,
41 : const double & offset1,
42 : const double & offset2
43 : )
44 1 : {
45 1 : auto fp = CreateTtmmod_params_fb(builder, modState, modFreq, modRad, offset1, offset2);
46 1 : builder.Finish(fp);
47 :
48 1 : }
49 :
50 : };
51 :
52 1 : static bool verify( flatlogs::bufferPtrT & logBuff, ///< [in] Buffer containing the flatbuffer serialized message.
53 : flatlogs::msgLenT len ///< [in] length of msgBuffer.
54 : )
55 : {
56 1 : auto verifier = flatbuffers::Verifier( static_cast<uint8_t*>(flatlogs::logHeader::messageBuffer(logBuff)), static_cast<size_t>(len));
57 2 : return VerifyTtmmod_params_fbBuffer(verifier);
58 : }
59 :
60 : ///Get the message formatte for human consumption.
61 0 : static std::string msgString( void * msgBuffer, /**< [in] Buffer containing the flatbuffer serialized message.*/
62 : flatlogs::msgLenT len /**< [in] [unused] length of msgBuffer.*/
63 : )
64 : {
65 : static_cast<void>(len);
66 :
67 0 : auto fbs = GetTtmmod_params_fb(msgBuffer);
68 :
69 :
70 0 : std::string msg = "UNK";
71 :
72 0 : if(fbs->modState() == 0) msg = "OFF";
73 0 : if(fbs->modState() == 1) msg = "REST";
74 0 : if(fbs->modState() == 2) msg = "INT";
75 0 : if(fbs->modState() == 3) msg = "SET";
76 0 : if(fbs->modState() == 4)
77 : {
78 0 : msg = "MOD";
79 :
80 0 : msg += " Freq: ";
81 0 : msg += std::to_string(fbs->modFreq()) + " Hz";
82 :
83 0 : msg += " Rad: ";
84 0 : msg += std::to_string(fbs->modRad()) + " lam/D";
85 : }
86 :
87 0 : return msg;
88 :
89 0 : }
90 :
91 0 : static std::string modState(void * msgBuffer /**< [in] Buffer containing the flatbuffer serialized message.*/)
92 : {
93 0 : auto fbs = GetTtmmod_params_fb(msgBuffer);
94 :
95 0 : std::string msg = "UNK";
96 :
97 0 : if(fbs->modState() == 0) msg = "OFF";
98 0 : if(fbs->modState() == 1) msg = "REST";
99 0 : if(fbs->modState() == 2) msg = "INT";
100 0 : if(fbs->modState() == 3) msg = "SET";
101 0 : if(fbs->modState() == 4)
102 : {
103 0 : msg = "MOD";
104 : }
105 :
106 0 : return msg;
107 0 : }
108 :
109 0 : static double modFreq(void * msgBuffer /**< [in] Buffer containing the flatbuffer serialized message.*/)
110 : {
111 0 : auto fbs = GetTtmmod_params_fb(msgBuffer);
112 0 : return fbs->modFreq();
113 : }
114 :
115 0 : static double modRad(void * msgBuffer /**< [in] Buffer containing the flatbuffer serialized message.*/)
116 : {
117 0 : auto fbs = GetTtmmod_params_fb(msgBuffer);
118 0 : return fbs->modRad();
119 : }
120 :
121 0 : static double offset1(void * msgBuffer /**< [in] Buffer containing the flatbuffer serialized message.*/)
122 : {
123 0 : auto fbs = GetTtmmod_params_fb(msgBuffer);
124 0 : return fbs->offset1();
125 : }
126 :
127 : static double offset2(void * msgBuffer /**< [in] Buffer containing the flatbuffer serialized message.*/)
128 : {
129 : auto fbs = GetTtmmod_params_fb(msgBuffer);
130 : return fbs->offset2();
131 : }
132 :
133 : /// Get the logMetaDetail for a member by name
134 : /**
135 : * \returns the a logMetaDetail filled in with the appropriate details
136 : * \returns an empty logMetaDetail if member not recognized
137 : */
138 1 : static logMetaDetail getAccessor( const std::string & member /**< [in] the name of the member */ )
139 : {
140 1 : if( member == "modState") return logMetaDetail({"MOD STATE", "modulator state", logMeta::valTypes::String, logMeta::metaTypes::State, reinterpret_cast<void*>(&modState), false});
141 1 : else if(member == "modFreq") return logMetaDetail({"MOD FREQ", "modulator frequency [Hz]", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&modFreq), false});
142 1 : else if(member == "modRad") return logMetaDetail({"MOD RAD", "modulator radius [lam/D]", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&modRad), false});
143 1 : else if(member == "offset1") return logMetaDetail({"MOD OFFSET1", "modulator axis1 offset [V]", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&offset1), false});
144 1 : else if(member == "offset2") return logMetaDetail({"MOD OFFSET2", "modulator axis2 offset [V]", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&offset1), false});
145 : else
146 : {
147 1 : std::cerr << "No member " << member << " in ttmmod_params\n";
148 1 : return logMetaDetail();
149 : }
150 : }
151 :
152 : }; //ttmmod_params
153 :
154 :
155 : } //namespace logger
156 : } //namespace MagAOX
157 :
158 : #endif //logger_types_ttmmod_params_hpp
|