LCOV - code coverage report
Current view: top level - libMagAOX/logger/types - outlet_channel_state.hpp (source / functions) Coverage Total Hit
Test: MagAOX Lines: 44.4 % 27 12
Test Date: 2026-01-03 21:03:39 Functions: 75.0 % 4 3

            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
        

Generated by: LCOV version 2.0-1