LCOV - code coverage report
Current view: top level - libMagAOX/logger/types - telem_flowrpm.hpp (source / functions) Coverage Total Hit
Test: MagAOX Lines: 25.7 % 35 9
Test Date: 2026-04-15 19:34:29 Functions: 28.6 % 7 2

            Line data    Source code
       1              : /** \file telem_flowrpm.hpp
       2              :  * \brief The MagAO-X logger telem_flowrpm log type.
       3              :  * \author Jared R. Males (jaredmales@gmail.com)
       4              :  *
       5              :  * \ingroup logger_types_files
       6              :  */
       7              : 
       8              : #ifndef logger_types_telem_flowrpm_hpp
       9              : #define logger_types_telem_flowrpm_hpp
      10              : 
      11              : #include "generated/telem_flowrpm_generated.h"
      12              : #include "flatbuffer_log.hpp"
      13              : 
      14              : namespace MagAOX
      15              : {
      16              : namespace logger
      17              : {
      18              : 
      19              : /// Log entry recording the displayed flow value and source age.
      20              : /** \ingroup logger_types
      21              :  */
      22              : struct telem_flowrpm : public flatbuffer_log
      23              : {
      24              :     /// The event code.
      25              :     static const flatlogs::eventCodeT eventCode = eventCodes::TELEM_FLOWRPM;
      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            5 :         messageT( const double flowRate, /**< [in] displayed flow rate in LPM */
      37              :                   const double age,      /**< [in] displayed age in seconds */
      38              :                   const bool   valid     /**< [in] whether the displayed value is valid */
      39              :         )
      40            5 :         {
      41            5 :             auto fp = CreateTelem_flowrpm_fb( builder, flowRate, age, valid );
      42            5 :             builder.Finish( fp );
      43            5 :         }
      44              :     };
      45              : 
      46            1 :     static bool verify( flatlogs::bufferPtrT &logBuff, ///< [in] Buffer containing the flatbuffer serialized message.
      47              :                         flatlogs::msgLenT     len      ///< [in] length of msgBuffer.
      48              :     )
      49              :     {
      50            1 :         auto verifier = flatbuffers::Verifier( static_cast<uint8_t *>( flatlogs::logHeader::messageBuffer( logBuff ) ),
      51            1 :                                                static_cast<size_t>( len ) );
      52            2 :         return VerifyTelem_flowrpm_fbBuffer( verifier );
      53              :     }
      54              : 
      55              :     /// Get the message formatted for human consumption.
      56            0 :     static std::string msgString( void *msgBuffer, /**< [in] Buffer containing the flatbuffer serialized message. */
      57              :                                   flatlogs::msgLenT len /**< [in] [unused] length of msgBuffer. */
      58              :     )
      59              :     {
      60              :         static_cast<void>( len );
      61              : 
      62            0 :         auto        fbs = GetTelem_flowrpm_fb( msgBuffer );
      63            0 :         std::string msg = "[flowrpm] ";
      64              : 
      65            0 :         msg += "flow: ";
      66            0 :         msg += std::to_string( fbs->flowRate() );
      67            0 :         msg += " LPM age: ";
      68            0 :         msg += std::to_string( fbs->age() );
      69            0 :         msg += " s valid: ";
      70            0 :         msg += ( fbs->valid() ? "true" : "false" );
      71              : 
      72            0 :         return msg;
      73            0 :     }
      74              : 
      75              :     /// Recover the flow rate from a serialized message.
      76            0 :     static double flowRate( void *msgBuffer )
      77              :     {
      78            0 :         return GetTelem_flowrpm_fb( msgBuffer )->flowRate();
      79              :     }
      80              : 
      81              :     /// Recover the age from a serialized message.
      82            0 :     static double age( void *msgBuffer )
      83              :     {
      84            0 :         return GetTelem_flowrpm_fb( msgBuffer )->age();
      85              :     }
      86              : 
      87              :     /// Recover the validity flag from a serialized message.
      88            0 :     static bool valid( void *msgBuffer )
      89              :     {
      90            0 :         return GetTelem_flowrpm_fb( msgBuffer )->valid();
      91              :     }
      92              : 
      93              :     /// Get the logMetaDetail for a member by name.
      94            0 :     static logMetaDetail getAccessor( const std::string &member /**< [in] the name of the member */ )
      95              :     {
      96            0 :         if( member == "flowRate" )
      97              :         {
      98              :             return logMetaDetail( { "FLOW RATE",
      99              :                                     "LPM",
     100              :                                     logMeta::valTypes::Double,
     101              :                                     logMeta::metaTypes::Continuous,
     102              :                                     reinterpret_cast<void *>( &flowRate ),
     103            0 :                                     true } );
     104              :         }
     105            0 :         else if( member == "age" )
     106              :         {
     107              :             return logMetaDetail( { "FLOW AGE",
     108              :                                     "s",
     109              :                                     logMeta::valTypes::Double,
     110              :                                     logMeta::metaTypes::Continuous,
     111              :                                     reinterpret_cast<void *>( &age ),
     112            0 :                                     true } );
     113              :         }
     114            0 :         else if( member == "valid" )
     115              :         {
     116              :             return logMetaDetail( { "FLOW VALID",
     117              :                                     "",
     118              :                                     logMeta::valTypes::Bool,
     119              :                                     logMeta::metaTypes::State,
     120              :                                     reinterpret_cast<void *>( &valid ),
     121            0 :                                     true } );
     122              :         }
     123              :         else
     124              :         {
     125            0 :             std::cerr << "No member " << member << " in telem_flowrpm\n";
     126            0 :             return logMetaDetail();
     127              :         }
     128              :     }
     129              : };
     130              : 
     131              : } // namespace logger
     132              : } // namespace MagAOX
     133              : 
     134              : #endif // logger_types_telem_flowrpm_hpp
        

Generated by: LCOV version 2.0-1