LCOV - code coverage report
Current view: top level - libMagAOX/logger/types - telem_zaber.hpp (source / functions) Coverage Total Hit
Test: MagAOX Lines: 41.2 % 34 14
Test Date: 2026-01-03 21:03:39 Functions: 42.9 % 7 3

            Line data    Source code
       1              : /** \file telem_zaber.hpp
       2              :   * \brief The MagAO-X logger telem_zaber 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_zaber_hpp
      11              : #define logger_types_telem_zaber_hpp
      12              : 
      13              : #include "generated/telem_zaber_generated.h"
      14              : #include "flatbuffer_log.hpp"
      15              : 
      16              : namespace MagAOX
      17              : {
      18              : namespace logger
      19              : {
      20              : 
      21              : 
      22              : /// Log entry recording zaber stage specific status.
      23              : /** \ingroup logger_types
      24              :   */
      25              : struct telem_zaber : public flatbuffer_log
      26              : {
      27              :    ///The event code
      28              :    static const flatlogs::eventCodeT eventCode = eventCodes::TELEM_ZABER;
      29              : 
      30              :    ///The default level
      31              :    static const flatlogs::logPrioT defaultLevel = flatlogs::logPrio::LOG_TELEM;
      32              : 
      33              :    static timespec lastRecord; ///< The timestamp of the last time this log was recorded.  Used by the telemetry system.
      34              : 
      35              :    ///The type of the input message
      36              :    struct messageT : public fbMessage
      37              :    {
      38              :       ///Construct from components
      39            1 :       messageT( const float & pos,     ///<[in] stage position in mm
      40              :                 const float & rawPos,  ///<[in] stage raw position, in counts
      41              :                 const float & temp     ///<[in] stage temperature
      42              :               )
      43            1 :       {
      44            1 :          auto fp = CreateTelem_zaber_fb(builder, pos, rawPos, temp);
      45            1 :          builder.Finish(fp);
      46            1 :       }
      47              : 
      48              :    };
      49              : 
      50              : 
      51            1 :    static bool verify( flatlogs::bufferPtrT & logBuff,  ///< [in] Buffer containing the flatbuffer serialized message.
      52              :                        flatlogs::msgLenT len            ///< [in] length of msgBuffer.
      53              :                      )
      54              :    {
      55            1 :       auto verifier = flatbuffers::Verifier( static_cast<uint8_t*>(flatlogs::logHeader::messageBuffer(logBuff)), static_cast<size_t>(len));
      56            2 :       return VerifyTelem_zaber_fbBuffer(verifier);
      57              :    }
      58              : 
      59              :    ///Get the message formatte for human consumption.
      60            0 :    static std::string msgString( void * msgBuffer,  /**< [in] Buffer containing the flatbuffer serialized message.*/
      61              :                                  flatlogs::msgLenT len  /**< [in] [unused] length of msgBuffer.*/
      62              :                                )
      63              :    {
      64              :       static_cast<void>(len);
      65              : 
      66            0 :       auto fbs = GetTelem_zaber_fb(msgBuffer);
      67              : 
      68            0 :       std::string msg = "[zaber] ";
      69              : 
      70            0 :       msg += "pos: ";
      71            0 :       msg += std::to_string(fbs->pos()) + " ";
      72              : 
      73            0 :       msg += "rawPos: ";
      74            0 :       msg += std::to_string(fbs->rawPos()) + " ";
      75              : 
      76            0 :       msg += "temp: ";
      77            0 :       msg += std::to_string(fbs->temp());
      78              : 
      79            0 :       return msg;
      80              : 
      81            0 :    }
      82              : 
      83            0 :    static float pos( void * msgBuffer )
      84              :    {
      85            0 :       auto fbs = GetTelem_zaber_fb(msgBuffer);
      86            0 :       return fbs->pos();
      87              :    }
      88              : 
      89            0 :    static float rawPos( void * msgBuffer )
      90              :    {
      91            0 :       auto fbs = GetTelem_zaber_fb(msgBuffer);
      92            0 :       return fbs->rawPos();
      93              :    }
      94              : 
      95            0 :    static float temp( void * msgBuffer )
      96              :    {
      97            0 :       auto fbs = GetTelem_zaber_fb(msgBuffer);
      98            0 :       return fbs->temp();
      99              :    }
     100              : 
     101              :    /// Get the logMetaDetail for a member by name
     102              :    /**
     103              :      * \returns the a logMetaDetail filled in with the appropriate details
     104              :      * \returns an empty logMetaDetail if member not recognized
     105              :      */
     106            1 :    static logMetaDetail getAccessor( const std::string & member /**< [in] the name of the member */ )
     107              :    {
     108            1 :       if(     member == "pos") return logMetaDetail({"POS", logMeta::valTypes::Float, logMeta::metaTypes::Continuous, reinterpret_cast<void*>(&pos)});
     109            1 :       else if(member == "rawPos") return logMetaDetail({"COUNTS", logMeta::valTypes::Float, logMeta::metaTypes::Continuous, reinterpret_cast<void*>(&rawPos)});
     110            1 :       else if(member == "temp") return logMetaDetail({"TEMP", logMeta::valTypes::Float, logMeta::metaTypes::Continuous, reinterpret_cast<void*>(&temp)});
     111              :       else
     112              :       {
     113            1 :          std::cerr << "No member " << member << " in telem_zaber\n";
     114            1 :          return logMetaDetail();
     115              :       }
     116              :    }
     117              : 
     118              : }; //telem_zaber
     119              : 
     120              : 
     121              : 
     122              : } //namespace logger
     123              : } //namespace MagAOX
     124              : 
     125              : #endif //logger_types_telem_zaber_hpp
     126              : 
        

Generated by: LCOV version 2.0-1