LCOV - code coverage report
Current view: top level - libMagAOX/logger/types - telem_temps.hpp (source / functions) Coverage Total Hit
Test: MagAOX Lines: 43.8 % 32 14
Test Date: 2026-01-03 21:03:39 Functions: 60.0 % 5 3

            Line data    Source code
       1              : /** \file telem_temps.hpp
       2              :  * \brief The MagAO-X logger telem_temps 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_telem_temps_hpp
      11              : #define logger_types_telem_temps_hpp
      12              : 
      13              : #include "generated/telem_temps_generated.h"
      14              : #include "flatbuffer_log.hpp"
      15              : 
      16              : namespace MagAOX
      17              : {
      18              : namespace logger
      19              : {
      20              : 
      21              : /// Log entry recording electronics rack temperature
      22              : /** \ingroup logger_types
      23              :  */
      24              : struct telem_temps : public flatbuffer_log
      25              : {
      26              :     /// The event code
      27              :     static const flatlogs::eventCodeT eventCode = eventCodes::TELEM_TEMPS;
      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 std::vector<float> &temps ///<[in] vector of temperatures
      39              :         )
      40            1 :         {
      41            1 :             auto _temps = builder.CreateVector( temps );
      42            1 :             auto fp     = CreateTelem_temps_fb( builder, _temps );
      43              : 
      44            1 :             builder.Finish( fp );
      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 ) ),
      53            1 :                                                static_cast<size_t>( len ) );
      54            2 :         return VerifyTelem_temps_fbBuffer( verifier );
      55              :     }
      56              : 
      57              :     /// Get the message formatted for human consumption.
      58            0 :     static std::string msgString( void *msgBuffer,      /**< [in] Buffer containing the flatbuffer serialized message.*/
      59              :                                   flatlogs::msgLenT len /**< [in] [unused] length of msgBuffer.*/
      60              :     )
      61              :     {
      62              :         static_cast<void>( len );
      63              : 
      64            0 :         auto fbs = GetTelem_temps_fb( msgBuffer );
      65              : 
      66            0 :         std::string msg = "[temps] ";
      67              : 
      68            0 :         if( fbs->temps() )
      69              :         {
      70            0 :             for( size_t i = 0; i < fbs->temps()->size(); ++i )
      71              :             {
      72            0 :                 msg += " ";
      73            0 :                 msg += std::to_string( fbs->temps()->Get( i ) );
      74              :             }
      75              :         }
      76              : 
      77            0 :         return msg;
      78            0 :     }
      79              : 
      80            0 :     static std::vector<float> temps( void *msgBuffer /**< [in] Buffer containing the flatbuffer serialized message.*/ )
      81              :     {
      82            0 :         std::vector<float> p;
      83              : 
      84            0 :         auto fbs = GetTelem_temps_fb( msgBuffer );
      85              : 
      86            0 :         if( fbs->temps() != nullptr )
      87              :         {
      88            0 :             for( auto it = fbs->temps()->begin(); it != fbs->temps()->end(); ++it )
      89              :             {
      90            0 :                 p.push_back( *it );
      91              :             }
      92              :         }
      93            0 :         return p;
      94            0 :     }
      95              : 
      96              :     /// Get the logMetaDetail for a member by name
      97              :     /**
      98              :      * \returns the a logMetaDetail filled in with the appropriate details
      99              :      * \returns an empty logMetaDetail if member not recognized
     100              :      */
     101            1 :     static logMetaDetail getAccessor( const std::string &member /**< [in] the name of the member */ )
     102              :     {
     103            1 :         if( member == "temps" )
     104              :             return logMetaDetail( { "TEMPS",
     105              :                                     "temperatures",
     106              :                                     logMeta::valTypes::Vector_Float,
     107              :                                     logMeta::metaTypes::State,
     108              :                                     reinterpret_cast<void *>( &temps ),
     109            0 :                                     false } );
     110              :         else
     111              :         {
     112            1 :             std::cerr << "No member " << member << " in telem_temps\n";
     113            1 :             return logMetaDetail();
     114              :         }
     115              :     }
     116              : 
     117              : }; // telem_temps
     118              : 
     119              : } // namespace logger
     120              : } // namespace MagAOX
     121              : 
     122              : #endif // logger_types_telem_temps_hpp
        

Generated by: LCOV version 2.0-1