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

            Line data    Source code
       1              : /** \file telem_teldata.hpp
       2              :   * \brief The MagAO-X logger telem_teldata 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_teldata_hpp
      11              : #define logger_types_telem_teldata_hpp
      12              : 
      13              : #include "generated/telem_teldata_generated.h"
      14              : #include "flatbuffer_log.hpp"
      15              : #include "../logMeta.hpp"
      16              : 
      17              : namespace MagAOX
      18              : {
      19              : namespace logger
      20              : {
      21              : 
      22              : 
      23              : /// Log entry recording the build-time git state.
      24              : /** \ingroup logger_types
      25              :   */
      26              : struct telem_teldata : public flatbuffer_log
      27              : {
      28              :    ///The event code
      29              :    static const flatlogs::eventCodeT eventCode = eventCodes::TELEM_TELDATA;
      30              : 
      31              :    ///The default level
      32              :    static const flatlogs::logPrioT defaultLevel = flatlogs::logPrio::LOG_TELEM;
      33              : 
      34              :    static timespec lastRecord; ///< The time of the last time this log was recorded.  Used by the telemetry system.
      35              : 
      36              :    ///The type of the input message
      37              :    struct messageT : public fbMessage
      38              :    {
      39              :       ///Construct from components
      40            1 :       messageT( const int & roi,          ///<[in] rotator of interest
      41              :                 const int & tracking,     ///<[in] tracking state
      42              :                 const int & guiding,      ///<[in] guiding state
      43              :                 const int & slewing,      ///<[in] slewing state
      44              :                 const int & guiderMoving, ///<[in] guider moving state
      45              :                 const double & az,        ///<[in] azimuth
      46              :                 const double & zd,        ///<[in] zenith distance
      47              :                 const double & pa,        ///<[in] parallactic angle
      48              :                 const double & domeAz,    ///<[in] dome azimuth
      49              :                 const int & domeStat      ///<[in] dome status
      50              :               )
      51            1 :       {
      52            1 :          auto fp = CreateTelem_teldata_fb(builder, roi, tracking, guiding, slewing, guiderMoving, az, zd, pa, domeAz, domeStat);
      53            1 :          builder.Finish(fp);
      54            1 :       }
      55              : 
      56              :    };
      57              : 
      58            1 :    static bool verify( flatlogs::bufferPtrT & logBuff,  ///< [in] Buffer containing the flatbuffer serialized message.
      59              :                        flatlogs::msgLenT len            ///< [in] length of msgBuffer.
      60              :                      )
      61              :    {
      62            1 :       auto verifier = flatbuffers::Verifier( static_cast<uint8_t*>(flatlogs::logHeader::messageBuffer(logBuff)), static_cast<size_t>(len));
      63            2 :       return VerifyTelem_teldata_fbBuffer(verifier);
      64              :    }
      65              : 
      66              :    ///Get the message formatte for human consumption.
      67            0 :    static std::string msgString( void * msgBuffer,  /**< [in] Buffer containing the flatbuffer serialized message.*/
      68              :                                  flatlogs::msgLenT len  /**< [in] [unused] length of msgBuffer.*/
      69              :                                )
      70              :    {
      71              :       static_cast<void>(len);
      72              : 
      73            0 :       auto fbs = GetTelem_teldata_fb(msgBuffer);
      74              : 
      75            0 :       std::string msg = "[teldata] ";
      76              : 
      77            0 :       msg += "roi: ";
      78            0 :       msg += std::to_string(fbs->roi()) + " ";
      79              : 
      80            0 :       msg += "tr: ";
      81            0 :       msg += std::to_string(fbs->tracking()) + " ";
      82              : 
      83            0 :       msg += "gd: ";
      84            0 :       msg += std::to_string(fbs->guiding()) + " ";
      85              : 
      86            0 :       msg += "sl: ";
      87            0 :       msg += std::to_string(fbs->slewing()) + " ";
      88              : 
      89            0 :       msg += "gm: ";
      90            0 :       msg += std::to_string(fbs->guiderMoving()) + " ";
      91              : 
      92            0 :       msg += "az: ";
      93            0 :       msg += std::to_string(fbs->az()) + " ";
      94              : 
      95            0 :       msg += "zd: ";
      96            0 :       msg += std::to_string(fbs->zd()) + " ";
      97              : 
      98            0 :       msg += "pa: ";
      99            0 :       msg += std::to_string(fbs->pa()) + " ";
     100              : 
     101            0 :       msg += "da: ";
     102            0 :       msg += std::to_string(fbs->domeAz()) + " ";
     103              : 
     104            0 :       msg += "ds: ";
     105            0 :       msg += std::to_string(fbs->domeStat());
     106              : 
     107            0 :       return msg;
     108              : 
     109            0 :    }
     110              : 
     111            0 :    static int roi( void * msgBuffer )
     112              :    {
     113            0 :        auto fbs = GetTelem_teldata_fb(msgBuffer);
     114            0 :        return fbs->roi();
     115              :    }
     116              : 
     117            0 :    static int tracking( void * msgBuffer )
     118              :    {
     119            0 :        auto fbs = GetTelem_teldata_fb(msgBuffer);
     120            0 :        return fbs->tracking();
     121              :    }
     122              : 
     123            0 :    static int guiding( void * msgBuffer )
     124              :    {
     125            0 :        auto fbs = GetTelem_teldata_fb(msgBuffer);
     126            0 :        return fbs->guiding();
     127              :    }
     128              : 
     129            0 :    static int slewing( void * msgBuffer )
     130              :    {
     131            0 :        auto fbs = GetTelem_teldata_fb(msgBuffer);
     132            0 :        return fbs->slewing();
     133              :    }
     134              : 
     135            0 :    static int guiderMoving( void * msgBuffer )
     136              :    {
     137            0 :        auto fbs = GetTelem_teldata_fb(msgBuffer);
     138            0 :        return fbs->guiderMoving();
     139              :    }
     140              : 
     141            0 :    static double az( void * msgBuffer )
     142              :    {
     143            0 :        auto fbs = GetTelem_teldata_fb(msgBuffer);
     144            0 :        return fbs->az();
     145              :    }
     146              : 
     147            0 :    static double zd( void * msgBuffer )
     148              :    {
     149            0 :        auto fbs = GetTelem_teldata_fb(msgBuffer);
     150            0 :        return fbs->zd();
     151              :    }
     152              : 
     153            0 :    static double pa( void * msgBuffer )
     154              :    {
     155            0 :        auto fbs = GetTelem_teldata_fb(msgBuffer);
     156            0 :        return fbs->pa();
     157              :    }
     158              : 
     159            0 :    static double domeAz( void * msgBuffer )
     160              :    {
     161            0 :        auto fbs = GetTelem_teldata_fb(msgBuffer);
     162            0 :        return fbs->domeAz();
     163              :    }
     164              : 
     165            0 :    static int domeStat( void * msgBuffer )
     166              :    {
     167            0 :        auto fbs = GetTelem_teldata_fb(msgBuffer);
     168            0 :        return fbs->domeStat();
     169              :    }
     170              : 
     171              :    /// Get the logMetaDetail for a member by name
     172              :    /**
     173              :      * \returns the function pointer cast to void*
     174              :      * \returns -1 for an unknown member
     175              :      */
     176            1 :    static logMetaDetail getAccessor( const std::string & member /**< [in] the name of the member */ )
     177              :    {
     178            1 :       if(     member == "roi") return logMetaDetail({"ROI", logMeta::valTypes::Int, logMeta::metaTypes::State, reinterpret_cast<void*>(&roi)});
     179            1 :       else if(member == "tracking") return logMetaDetail({"TRACKING", logMeta::valTypes::Int, logMeta::metaTypes::State, reinterpret_cast<void*>(&tracking)});
     180            1 :       else if(member == "guiding") return logMetaDetail({"GUIDING", logMeta::valTypes::Int, logMeta::metaTypes::State, reinterpret_cast<void*>(&guiding)});
     181            1 :       else if(member == "slewing") return logMetaDetail({"SLEWING", logMeta::valTypes::Int, logMeta::metaTypes::State, reinterpret_cast<void*>(&slewing)});
     182            1 :       else if(member == "guiderMoving") return logMetaDetail({"GUIDER MOVING", logMeta::valTypes::Int, logMeta::metaTypes::State, reinterpret_cast<void*>(&guiderMoving)});
     183            1 :       else if(member == "az") return logMetaDetail({"AZ", logMeta::valTypes::Double, logMeta::metaTypes::Continuous, reinterpret_cast<void*>(&az), false});
     184            1 :       else if(member == "zd") return logMetaDetail({"ZD", logMeta::valTypes::Double, logMeta::metaTypes::Continuous, reinterpret_cast<void*>(&zd), false});
     185            1 :       else if(member == "pa") return logMetaDetail({"PARANG", logMeta::valTypes::Double, logMeta::metaTypes::Continuous, reinterpret_cast<void*>(&pa), false});
     186            1 :       else if(member == "domeAz") return logMetaDetail({"DOME AZ", logMeta::valTypes::Double, logMeta::metaTypes::Continuous, reinterpret_cast<void*>(&domeAz)});
     187            1 :       else if(member == "domeStat") return logMetaDetail({"DOME STATUS", logMeta::valTypes::Int, logMeta::metaTypes::State, reinterpret_cast<void*>(&domeStat)});
     188              :       else
     189              :       {
     190            1 :          std::cerr << "No member " << member << " in telem_teldata\n";
     191            1 :          return logMetaDetail();
     192              :       }
     193              :    }
     194              : 
     195              : }; //telem_teldata
     196              : 
     197              : 
     198              : 
     199              : } //namespace logger
     200              : } //namespace MagAOX
     201              : 
     202              : #endif //logger_types_telem_teldata_hpp
     203              : 
        

Generated by: LCOV version 2.0-1