LCOV - code coverage report
Current view: top level - libMagAOX/logger/types - telem_tcsi_labmode.hpp (source / functions) Coverage Total Hit
Test: MagAOX Lines: 37.5 % 24 9
Test Date: 2026-04-15 19:34:29 Functions: 40.0 % 5 2

            Line data    Source code
       1              : /** \file telem_tcsi_labmode.hpp
       2              :  * \brief The MagAO-X logger type for tcsInterface lab-mode telemetry.
       3              :  * \author Jared R. Males (jaredmales@gmail.com)
       4              :  *
       5              :  * \ingroup logger_types_files
       6              :  *
       7              :  */
       8              : #ifndef logger_types_telem_tcsi_labmode_hpp
       9              : #define logger_types_telem_tcsi_labmode_hpp
      10              : 
      11              : #include "generated/telem_tcsi_labmode_generated.h"
      12              : #include "flatbuffer_log.hpp"
      13              : 
      14              : namespace MagAOX
      15              : {
      16              : namespace logger
      17              : {
      18              : 
      19              : /// tcsInterface lab-mode telemetry.
      20              : /** \ingroup logger_types
      21              :  */
      22              : struct telem_tcsi_labmode : public flatbuffer_log
      23              : {
      24              :     /// The event code
      25              :     static const flatlogs::eventCodeT eventCode = eventCodes::TELEM_TCSI_LABMODE;
      26              : 
      27              :     /// The default level
      28              :     static const flatlogs::logPrioT defaultLevel = flatlogs::logPrio::LOG_TELEM;
      29              : 
      30              :     static timespec lastRecord; ///< The time of the last time this log was recorded. Used by the telemetry system.
      31              : 
      32              :     /// The type of the input message
      33              :     struct messageT : public fbMessage
      34              :     {
      35              :         /// Construct from components.
      36            1 :         messageT( const bool &labMode ///< [in] whether tcsInterface is in lab mode
      37              :         )
      38            1 :         {
      39            1 :             auto fp = CreateTelem_tcsi_labmode_fb( builder, labMode );
      40            1 :             builder.Finish( fp );
      41            1 :         }
      42              :     };
      43              : 
      44            1 :     static bool verify( flatlogs::bufferPtrT &logBuff, ///< [in] Buffer containing the flatbuffer serialized message.
      45              :                         flatlogs::msgLenT     len      ///< [in] length of msgBuffer.
      46              :     )
      47              :     {
      48            1 :         auto verifier = flatbuffers::Verifier( static_cast<uint8_t *>( flatlogs::logHeader::messageBuffer( logBuff ) ),
      49            1 :                                                static_cast<size_t>( len ) );
      50            2 :         return VerifyTelem_tcsi_labmode_fbBuffer( verifier );
      51              :     }
      52              : 
      53              :     /// Format the message for human consumption.
      54            0 :     static std::string msgString( void *msgBuffer,      /**< [in] Buffer containing the flatbuffer serialized message.*/
      55              :                                   flatlogs::msgLenT len /**< [in] [unused] length of msgBuffer.*/
      56              :     )
      57              :     {
      58              :         static_cast<void>( len );
      59              : 
      60            0 :         auto fbs = GetTelem_tcsi_labmode_fb( msgBuffer );
      61              : 
      62            0 :         std::string msg = "[tcsi_labmode] ";
      63            0 :         msg += "labMode: ";
      64            0 :         msg += std::to_string( fbs->labMode() );
      65              : 
      66            0 :         return msg;
      67            0 :     }
      68              : 
      69              :     /// Access the lab-mode state.
      70            0 :     static bool labMode( void *msgBuffer /**< [in] Buffer containing the flatbuffer serialized message.*/ )
      71              :     {
      72            0 :         auto fbs = GetTelem_tcsi_labmode_fb( msgBuffer );
      73            0 :         return fbs->labMode();
      74              :     }
      75              : 
      76              :     /// Get the logMetaDetail for a member by name.
      77              :     /**
      78              :      * \returns the a logMetaDetail filled in with the appropriate details
      79              :      * \returns an empty logMetaDetail if member not recognized
      80              :      */
      81            0 :     static logMetaDetail getAccessor( const std::string &member /**< [in] the name of the member */ )
      82              :     {
      83            0 :         if( member == "labMode" )
      84              :         {
      85              :             return logMetaDetail( { "LABMODE",
      86              :                                     logMeta::valTypes::Bool,
      87              :                                     logMeta::metaTypes::State,
      88            0 :                                     reinterpret_cast<void *>( &labMode ) } );
      89              :         }
      90              :         else
      91              :         {
      92            0 :             std::cerr << "No member " << member << " in telem_tcsi_labmode\n";
      93            0 :             return logMetaDetail();
      94              :         }
      95              :     }
      96              : };
      97              : 
      98              : } // namespace logger
      99              : } // namespace MagAOX
     100              : 
     101              : #endif // logger_types_telem_tcsi_labmode_hpp
        

Generated by: LCOV version 2.0-1