LCOV - code coverage report
Current view: top level - libMagAOX/logger/types - telem_loopgain.hpp (source / functions) Coverage Total Hit
Test: MagAOX Lines: 35.6 % 45 16
Test Date: 2026-01-03 21:03:39 Functions: 37.5 % 8 3

            Line data    Source code
       1              : /** \file telem_loopgain.hpp
       2              :  * \brief The MagAO-X logger telem_loopgain log type.
       3              :  * \author Jared R. Males (jaredmales@gmail.com)
       4              :  *
       5              :  * \ingroup logger_types_files
       6              :  *
       7              :  * History:
       8              :  * - 2022-11-28 created by JRM
       9              :  */
      10              : #ifndef logger_types_telem_loopgain_hpp
      11              : #define logger_types_telem_loopgain_hpp
      12              : 
      13              : #include "generated/telem_loopgain_generated.h"
      14              : #include "flatbuffer_log.hpp"
      15              : 
      16              : namespace MagAOX
      17              : {
      18              : namespace logger
      19              : {
      20              : 
      21              : /// Log entry recording the build-time git state.
      22              : /** \ingroup logger_types
      23              :  */
      24              : struct telem_loopgain : public flatbuffer_log
      25              : {
      26              :     /// The event code
      27              :     static const flatlogs::eventCodeT eventCode = eventCodes::TELEM_LOOPGAIN;
      28              : 
      29              :     /// The default level
      30              :     static const flatlogs::logPrioT defaultLevel = flatlogs::logPrio::LOG_TELEM;
      31              : 
      32              :     static timespec lastRecord; ///< The time of the last time this log was recorded.  Used by the telemetry system.
      33              : 
      34              :     /// The type of the input message
      35              :     struct messageT : public fbMessage
      36              :     {
      37              :         /// Construct from components
      38            1 :         messageT( const uint8_t &state,    ///< [in]
      39              :                   const float   &gain,     ///< [in]
      40              :                   const float   &multcoef, ///< [in]
      41              :                   const float   &limit     ///< [in]
      42              :         )
      43            1 :         {
      44            1 :             auto fp = CreateTelem_loopgain_fb( builder, state, gain, multcoef, limit );
      45            1 :             builder.Finish( fp );
      46            1 :         }
      47              :     };
      48              : 
      49            1 :     static bool verify( flatlogs::bufferPtrT &logBuff, ///< [in] Buffer containing the flatbuffer serialized message.
      50              :                         flatlogs::msgLenT     len      ///< [in] length of msgBuffer.
      51              :     )
      52              :     {
      53            1 :         auto verifier = flatbuffers::Verifier( static_cast<uint8_t *>( flatlogs::logHeader::messageBuffer( logBuff ) ),
      54            1 :                                                static_cast<size_t>( len ) );
      55            2 :         return VerifyTelem_loopgain_fbBuffer( verifier );
      56              :     }
      57              : 
      58              :     /// Get the message formatte for human consumption.
      59            0 :     static std::string msgString( void *msgBuffer,      /**< [in] Buffer containing the flatbuffer serialized message.*/
      60              :                                   flatlogs::msgLenT len /**< [in] [unused] length of msgBuffer.*/
      61              :     )
      62              :     {
      63              :         static_cast<void>( len );
      64              : 
      65            0 :         auto fbs = GetTelem_loopgain_fb( msgBuffer );
      66              : 
      67            0 :         std::string msg = "[loopgain] ";
      68              : 
      69            0 :         msg += "state: ";
      70            0 :         msg += std::to_string( fbs->state() ) + " ";
      71              : 
      72            0 :         msg += "gain: ";
      73            0 :         msg += std::to_string( fbs->gain() ) + " ";
      74              : 
      75            0 :         msg += "multcoef: ";
      76            0 :         msg += std::to_string( fbs->multcoef() ) + " ";
      77              : 
      78            0 :         msg += "limit: ";
      79            0 :         msg += std::to_string( fbs->limit() );
      80              : 
      81            0 :         return msg;
      82            0 :     }
      83              : 
      84            0 :     static uint8_t state( void *msgBuffer )
      85              :     {
      86            0 :         auto fbs = GetTelem_loopgain_fb( msgBuffer );
      87            0 :         return fbs->state();
      88              :     }
      89              : 
      90            0 :     static float gain( void *msgBuffer )
      91              :     {
      92            0 :         auto fbs = GetTelem_loopgain_fb( msgBuffer );
      93            0 :         return fbs->gain();
      94              :     }
      95              : 
      96            0 :     static float multcoef( void *msgBuffer )
      97              :     {
      98            0 :         auto fbs = GetTelem_loopgain_fb( msgBuffer );
      99            0 :         return fbs->multcoef();
     100              :     }
     101              : 
     102            0 :     static float limit( void *msgBuffer )
     103              :     {
     104            0 :         auto fbs = GetTelem_loopgain_fb( msgBuffer );
     105            0 :         return fbs->limit();
     106              :     }
     107              : 
     108              :     /// Get the logMetaDetail for a member by name
     109              :     /**
     110              :      * \returns the a logMetaDetail filled in with the appropriate details
     111              :      * \returns an empty logMetaDetail if member not recognized
     112              :      */
     113            1 :     static logMetaDetail getAccessor( const std::string &member /**< [in] the name of the member */ )
     114              :     {
     115            1 :         if( member == "state" )
     116              :             return logMetaDetail( { "LOOP STATE",
     117              :                                     logMeta::valTypes::Int,
     118              :                                     logMeta::metaTypes::State,
     119            0 :                                     reinterpret_cast<void *>( &state ) } );
     120            1 :         else if( member == "gain" )
     121              :             return logMetaDetail( { "LOOP GAIN",
     122              :                                     logMeta::valTypes::Float,
     123              :                                     logMeta::metaTypes::State,
     124            0 :                                     reinterpret_cast<void *>( &gain ) } );
     125            1 :         else if( member == "multcoef" )
     126              :             return logMetaDetail( { "LOOP MULTCOEF",
     127              :                                     logMeta::valTypes::Float,
     128              :                                     logMeta::metaTypes::State,
     129            0 :                                     reinterpret_cast<void *>( &multcoef ) } );
     130            1 :         else if( member == "limit" )
     131              :             return logMetaDetail( { "LOOP LIMIT",
     132              :                                     logMeta::valTypes::Float,
     133              :                                     logMeta::metaTypes::State,
     134            0 :                                     reinterpret_cast<void *>( &limit ) } );
     135              :         else
     136              :         {
     137            1 :             std::cerr << "No member " << member << " in telem_loopgain\n";
     138            1 :             return logMetaDetail();
     139              :         }
     140              :     }
     141              : 
     142              : }; // telem_loopgain
     143              : 
     144              : } // namespace logger
     145              : } // namespace MagAOX
     146              : 
     147              : #endif // logger_types_telem_loopgain_hpp
        

Generated by: LCOV version 2.0-1