LCOV - code coverage report
Current view: top level - libMagAOX/logger/types - telem_telcat.hpp (source / functions) Coverage Total Hit
Test: MagAOX Lines: 30.6 % 62 19
Test Date: 2026-01-03 21:03:39 Functions: 30.0 % 10 3

            Line data    Source code
       1              : /** \file telem_telcat.hpp
       2              :   * \brief The MagAO-X logger telem_telcat 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_telcat_hpp
      11              : #define logger_types_telem_telcat_hpp
      12              : 
      13              : #include "generated/telem_telcat_generated.h"
      14              : #include "flatbuffer_log.hpp"
      15              : 
      16              : namespace MagAOX
      17              : {
      18              : namespace logger
      19              : {
      20              : 
      21              : 
      22              : /// Log entry recording the build-time git state.
      23              : /** \ingroup logger_types
      24              :   */
      25              : struct telem_telcat : public flatbuffer_log
      26              : {
      27              :    ///The event code
      28              :    static const flatlogs::eventCodeT eventCode = eventCodes::TELEM_TELCAT;
      29              : 
      30              :    ///The default level
      31              :    static const flatlogs::logPrioT defaultLevel = flatlogs::logPrio::LOG_TELEM;
      32              : 
      33              :    static timespec lastRecord; ///< The time 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 std::string & catObj, ///< [in] Catalog object name
      40              :                 const std::string & catRm,  ///< [in] Catalog rotator mode
      41              :                 const double & catRa,       ///< [in] Catalog right ascension [degrees]
      42              :                 const double & catDec,      ///< [in] Catalog declination [degrees]
      43              :                 const double & catEp,       ///< [in] Catalog epoch
      44              :                 const double & catRo        ///< [in] Catalog rotator offset
      45              :               )
      46            1 :       {
      47            1 :          auto _catObj = builder.CreateString(catObj);
      48            1 :          auto _catRm = builder.CreateString(catRm);
      49            1 :          auto fp = CreateTelem_telcat_fb(builder, _catObj, _catRm, catRa, catDec, catEp, catRo);
      50            1 :          builder.Finish(fp);
      51            1 :       }
      52              : 
      53              :    };
      54              : 
      55            1 :    static bool verify( flatlogs::bufferPtrT & logBuff,  ///< [in] Buffer containing the flatbuffer serialized message.
      56              :                        flatlogs::msgLenT len            ///< [in] length of msgBuffer.
      57              :                      )
      58              :    {
      59            1 :       auto verifier = flatbuffers::Verifier( static_cast<uint8_t*>(flatlogs::logHeader::messageBuffer(logBuff)), static_cast<size_t>(len));
      60            2 :       return VerifyTelem_telcat_fbBuffer(verifier);
      61              :    }
      62              : 
      63              :    ///Get the message formatte for human consumption.
      64            0 :    static std::string msgString( void * msgBuffer,  /**< [in] Buffer containing the flatbuffer serialized message.*/
      65              :                                  flatlogs::msgLenT len  /**< [in] [unused] length of msgBuffer.*/
      66              :                                )
      67              :    {
      68              :       static_cast<void>(len);
      69              : 
      70            0 :       auto fbs = GetTelem_telcat_fb(msgBuffer);
      71              : 
      72            0 :       std::string msg = "[telcat] ";
      73              : 
      74            0 :       if(fbs->catObj() != nullptr)
      75              :       {
      76            0 :          msg += "obj: ";
      77            0 :          msg += fbs->catObj()->c_str() ;
      78            0 :          msg += " ";
      79              :       }
      80              : 
      81            0 :       msg += "ra: ";
      82            0 :       msg += std::to_string(fbs->catRa()) + " ";
      83              : 
      84            0 :       msg += "dec: ";
      85            0 :       msg += std::to_string(fbs->catDec()) + " ";
      86              : 
      87            0 :       msg += "ep: ";
      88            0 :       msg += std::to_string(fbs->catEp()) + " ";
      89              : 
      90            0 :       if(fbs->catRm() != nullptr)
      91              :       {
      92            0 :          msg += "rm: ";
      93            0 :          msg += fbs->catRm()->c_str() ;
      94            0 :          msg += " ";
      95              :       }
      96              : 
      97            0 :       msg += "ro: ";
      98            0 :       msg += std::to_string(fbs->catRo()) + " ";
      99              : 
     100              : 
     101              : 
     102            0 :       return msg;
     103              : 
     104            0 :    }
     105              : 
     106            0 :    static std::string catObj(void * msgBuffer)
     107              :    {
     108            0 :       auto fbs = GetTelem_telcat_fb(msgBuffer);
     109            0 :       if(fbs->catObj() != nullptr)
     110              :       {
     111            0 :          return std::string(fbs->catObj()->c_str());
     112              :       }
     113              :       else
     114              :       {
     115            0 :          return std::string("");
     116              :       }
     117              :    }
     118              : 
     119            0 :    static std::string catRm(void * msgBuffer)
     120              :    {
     121            0 :       auto fbs = GetTelem_telcat_fb(msgBuffer);
     122            0 :       if(fbs->catRm() != nullptr)
     123              :       {
     124            0 :          return std::string(fbs->catRm()->c_str());
     125              :       }
     126              :       else
     127              :       {
     128            0 :          return std::string("");
     129              :       }
     130              :    }
     131              : 
     132            0 :    static double catRA(void * msgBuffer)
     133              :    {
     134            0 :       auto fbs = GetTelem_telcat_fb(msgBuffer);
     135            0 :       return fbs->catRa();
     136              :    }
     137              : 
     138            0 :    static double catDec(void * msgBuffer)
     139              :    {
     140            0 :       auto fbs = GetTelem_telcat_fb(msgBuffer);
     141            0 :       return fbs->catDec();
     142              :    }
     143              : 
     144            0 :    static double catEp(void * msgBuffer)
     145              :    {
     146            0 :       auto fbs = GetTelem_telcat_fb(msgBuffer);
     147            0 :       return fbs->catEp();
     148              :    }
     149              : 
     150            0 :    static double catRo(void * msgBuffer)
     151              :    {
     152            0 :       auto fbs = GetTelem_telcat_fb(msgBuffer);
     153            0 :       return fbs->catRo();
     154              :    }
     155              : 
     156              :    /// Get the logMetaDetail for a member by name
     157              :    /**
     158              :      * \returns the a logMetaDetail filled in with the appropriate details
     159              :      * \returns an empty logMetaDetail if member not recognized
     160              :      */
     161            1 :    static logMetaDetail getAccessor( const std::string & member /**< [in] the name of the member */ )
     162              :    {
     163            1 :       if(     member == "catObj") return logMetaDetail({"OBJECT", logMeta::valTypes::String, logMeta::metaTypes::State, reinterpret_cast<void*>(&catObj), false});
     164            1 :       else if(member == "catRm")  return logMetaDetail({"CATRM", logMeta::valTypes::String, logMeta::metaTypes::State, reinterpret_cast<void*>(&catRm), false});
     165            1 :       else if(member == "catRA")  return logMetaDetail({"CATRA", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&catRA), false});
     166            1 :       else if(member == "catDec") return logMetaDetail({"CATDEC", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&catDec), false});
     167            1 :       else if(member == "catEp")  return logMetaDetail({"CATEP", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&catEp), false});
     168            1 :       else if(member == "catRo")  return logMetaDetail({"CATRO", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&catRo), false});
     169              :       else
     170              :       {
     171            1 :          std::cerr << "No member " << member << " in telem_telcat\n";
     172            1 :          return logMetaDetail();
     173              :       }
     174              :    }
     175              : 
     176              : }; //telem_telcat
     177              : 
     178              : 
     179              : 
     180              : } //namespace logger
     181              : } //namespace MagAOX
     182              : 
     183              : #endif //logger_types_telem_telcat_hpp
     184              : 
        

Generated by: LCOV version 2.0-1