LCOV - code coverage report
Current view: top level - libMagAOX/logger/types - telem_telenv.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_telenv.hpp
       2              :   * \brief The MagAO-X logger telem_telenv 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_telenv_hpp
      11              : #define logger_types_telem_telenv_hpp
      12              : 
      13              : #include "generated/telem_telenv_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_telenv : public flatbuffer_log
      26              : {
      27              :    ///The event code
      28              :    static const flatlogs::eventCodeT eventCode = eventCodes::TELEM_TELENV;
      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 double & tempout,     ///< [in]
      40              :                 const double & pressure,    ///< [in]
      41              :                 const double & humidity,    ///< [in]
      42              :                 const double & wind,        ///< [in]
      43              :                 const double & winddir,     ///< [in]
      44              :                 const double & temptruss,   ///< [in]
      45              :                 const double & tempcell,    ///< [in]
      46              :                 const double & tempseccell, ///< [in]
      47              :                 const double & tempamb,     ///< [in]
      48              :                 const double & dewpoint     ///< [in]
      49              :               )
      50            1 :       {
      51            1 :          auto fp = CreateTelem_telenv_fb(builder, tempout, pressure,  humidity, wind,winddir,temptruss,tempcell,tempseccell,tempamb, dewpoint);
      52            1 :          builder.Finish(fp);
      53            1 :       }
      54              : 
      55              :    };
      56              : 
      57            1 :    static bool verify( flatlogs::bufferPtrT & logBuff,  ///< [in] Buffer containing the flatbuffer serialized message.
      58              :                        flatlogs::msgLenT len            ///< [in] length of msgBuffer.
      59              :                      )
      60              :    {
      61            1 :       auto verifier = flatbuffers::Verifier( static_cast<uint8_t*>(flatlogs::logHeader::messageBuffer(logBuff)), static_cast<size_t>(len));
      62            2 :       return VerifyTelem_telenv_fbBuffer(verifier);
      63              :    }
      64              : 
      65              :    ///Get the message formatte for human consumption.
      66            0 :    static std::string msgString( void * msgBuffer,  /**< [in] Buffer containing the flatbuffer serialized message.*/
      67              :                                  flatlogs::msgLenT len  /**< [in] [unused] length of msgBuffer.*/
      68              :                                )
      69              :    {
      70              :       static_cast<void>(len);
      71              : 
      72            0 :       auto fbs = GetTelem_telenv_fb(msgBuffer);
      73              : 
      74            0 :       std::string msg = "[telenv] ";
      75              : 
      76            0 :       msg += "tempout: ";
      77            0 :       msg += std::to_string(fbs->tempout()) + " ";
      78              : 
      79            0 :       msg += "press: ";
      80            0 :       msg += std::to_string(fbs->pressure()) + " ";
      81              : 
      82            0 :       msg += "humidity: ";
      83            0 :       msg += std::to_string(fbs->humidity()) + " ";
      84              : 
      85            0 :       msg += "wind: ";
      86            0 :       msg += std::to_string(fbs->wind()) + " ";
      87              : 
      88            0 :       msg += "winddir: ";
      89            0 :       msg += std::to_string(fbs->winddir()) + " ";
      90              : 
      91            0 :       msg += "temptruss: ";
      92            0 :       msg += std::to_string(fbs->temptruss()) + " ";
      93              : 
      94            0 :       msg += "tempcell: ";
      95            0 :       msg += std::to_string(fbs->tempcell()) + " ";
      96              : 
      97            0 :       msg += "tempseccell: ";
      98            0 :       msg += std::to_string(fbs->tempseccell()) + " ";
      99              : 
     100            0 :       msg += "tempamb: ";
     101            0 :       msg += std::to_string(fbs->tempamb()) + " ";
     102              : 
     103            0 :       msg += "dewpoint: ";
     104            0 :       msg += std::to_string(fbs->dewpoint()) + " ";
     105              : 
     106              : 
     107            0 :       return msg;
     108              : 
     109            0 :    }
     110              : 
     111            0 :    static double tempout( void * msgBuffer  /**< [in] Buffer containing the flatbuffer serialized message.*/ )
     112              :    {
     113            0 :       auto fbs = GetTelem_telenv_fb(msgBuffer);
     114            0 :       return fbs->tempout();
     115              :    }
     116              : 
     117            0 :    static double pressure( void * msgBuffer  /**< [in] Buffer containing the flatbuffer serialized message.*/ )
     118              :    {
     119            0 :       auto fbs = GetTelem_telenv_fb(msgBuffer);
     120            0 :       return fbs->pressure();
     121              :    }
     122              : 
     123            0 :    static double humidity( void * msgBuffer  /**< [in] Buffer containing the flatbuffer serialized message.*/ )
     124              :    {
     125            0 :       auto fbs = GetTelem_telenv_fb(msgBuffer);
     126            0 :       return fbs->humidity();
     127              :    }
     128              : 
     129            0 :    static double wind( void * msgBuffer  /**< [in] Buffer containing the flatbuffer serialized message.*/ )
     130              :    {
     131            0 :       auto fbs = GetTelem_telenv_fb(msgBuffer);
     132            0 :       return fbs->wind();
     133              :    }
     134              : 
     135            0 :    static double winddir( void * msgBuffer  /**< [in] Buffer containing the flatbuffer serialized message.*/ )
     136              :    {
     137            0 :       auto fbs = GetTelem_telenv_fb(msgBuffer);
     138            0 :       return fbs->winddir();
     139              :    }
     140              : 
     141            0 :    static double temptruss( void * msgBuffer  /**< [in] Buffer containing the flatbuffer serialized message.*/ )
     142              :    {
     143            0 :       auto fbs = GetTelem_telenv_fb(msgBuffer);
     144            0 :       return fbs->temptruss();
     145              :    }
     146              : 
     147            0 :    static double tempcell( void * msgBuffer  /**< [in] Buffer containing the flatbuffer serialized message.*/ )
     148              :    {
     149            0 :       auto fbs = GetTelem_telenv_fb(msgBuffer);
     150            0 :       return fbs->tempcell();
     151              :    }
     152              : 
     153            0 :    static double tempseccell( void * msgBuffer  /**< [in] Buffer containing the flatbuffer serialized message.*/ )
     154              :    {
     155            0 :       auto fbs = GetTelem_telenv_fb(msgBuffer);
     156            0 :       return fbs->tempseccell();
     157              :    }
     158              : 
     159            0 :    static double tempamb( void * msgBuffer  /**< [in] Buffer containing the flatbuffer serialized message.*/ )
     160              :    {
     161            0 :       auto fbs = GetTelem_telenv_fb(msgBuffer);
     162            0 :       return fbs->tempamb();
     163              :    }
     164              : 
     165            0 :    static double dewpoint( void * msgBuffer  /**< [in] Buffer containing the flatbuffer serialized message.*/ )
     166              :    {
     167            0 :       auto fbs = GetTelem_telenv_fb(msgBuffer);
     168            0 :       return fbs->dewpoint();
     169              :    }
     170              : 
     171              :    /// Get the logMetaDetail for a member by name
     172              :    /**
     173              :      * \returns the a logMetaDetail filled in with the appropriate details
     174              :      * \returns an empty logMetaDetail if member not recognized
     175              :      */
     176            1 :    static logMetaDetail getAccessor( const std::string & member /**< [in] the name of the member */ )
     177              :    {
     178            1 :       if(     member == "tempout") return logMetaDetail({"OUTSIDE TEMP", "outside temperature [C]", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&tempout), false});
     179            1 :       else if( member == "pressure") return logMetaDetail({"PRESSURE", "ambient pressure", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&pressure), false});
     180            1 :       else if( member == "humidity") return logMetaDetail({"HUMIDITY", "relative humidity", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&humidity), false});
     181            1 :       else if( member == "wind") return logMetaDetail({"WIND SPEED", "wind speed", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&wind), false});
     182            1 :       else if( member == "winddir") return logMetaDetail({"WIND DIR", "wind direction", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&winddir), false});
     183            1 :       else if( member == "temptruss") return logMetaDetail({"TRUSS TEMP", "truss temperature [C]", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&temptruss), false});
     184            1 :       else if( member == "tempcell") return logMetaDetail({"CELL TEMP", "cell temperature [C]", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&tempcell), false});
     185            1 :       else if( member == "tempseccell") return logMetaDetail({"SEC CELL TEMP", "secondary cell temperature [C]", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&tempseccell), false});
     186            1 :       else if( member == "tempamb") return logMetaDetail({"AMBIENT TEMP", "ambient temperature [C]", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&tempamb), false});
     187            1 :       else if( member == "dewpoint") return logMetaDetail({"DEWPOINT", "dew point [C]", logMeta::valTypes::Double, logMeta::metaTypes::State, reinterpret_cast<void*>(&dewpoint), false});
     188              :       else
     189              :       {
     190            1 :          std::cerr << "No member " << member << " in telem_telenv\n";
     191            1 :          return logMetaDetail();
     192              :       }
     193              :     }
     194              : }; //telem_telenv
     195              : 
     196              : 
     197              : } //namespace logger
     198              : } //namespace MagAOX
     199              : 
     200              : #endif //logger_types_telem_telenv_hpp
     201              : 
        

Generated by: LCOV version 2.0-1