LCOV - code coverage report
Current view: top level - libMagAOX/logger/types - telem_cooler.hpp (source / functions) Coverage Total Hit
Test: MagAOX Lines: 39.3 % 28 11
Test Date: 2026-01-03 21:03:39 Functions: 75.0 % 4 3

            Line data    Source code
       1              : /** \file telem_cooler.hpp
       2              :   * \brief The MagAO-X logger telem_cooler 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_cooler_hpp
      11              : #define logger_types_telem_cooler_hpp
      12              : 
      13              : #include "generated/telem_cooler_generated.h"
      14              : #include "flatbuffer_log.hpp"
      15              : 
      16              : #include <cmath>
      17              : 
      18              : namespace MagAOX
      19              : {
      20              : namespace logger
      21              : {
      22              : 
      23              : 
      24              : /// Log entry recording the build-time git state.
      25              : /** \ingroup logger_types
      26              :   */
      27              : struct telem_cooler : public flatbuffer_log
      28              : {
      29              :    ///The event code
      30              :    static const flatlogs::eventCodeT eventCode = eventCodes::TELEM_COOLER;
      31              : 
      32              :    ///The default level
      33              :    static const flatlogs::logPrioT defaultLevel = flatlogs::logPrio::LOG_TELEM;
      34              : 
      35              :    static timespec lastRecord; ///< The time of the last time this log was recorded.  Used by the telemetry system.
      36              : 
      37              :    enum member{ em_liquidTemp, em_flowRate, em_pumpLevel, em_pumpSpeed, em_fanLevel, em_fanSpeed };
      38              : 
      39              :    ///The type of the input message
      40              :    struct messageT : public fbMessage
      41              :    {
      42              :       ///Construct from components
      43            1 :       messageT( const float & liqTemp,    ///<[in] liquid temperature
      44              :                 const float & flowRate,   ///<[in] flow rate
      45              :                 const uint8_t & pumpLvl,  ///<[in] pump level
      46              :                 const uint16_t & pumpSpd, ///<[in] pump speed
      47              :                 const uint8_t & fanLvl,   ///<[in] fan level
      48              :                 const uint16_t & fanSpd   ///<[in] fan speed
      49              :               )
      50            1 :       {
      51            1 :          auto fp = CreateTelem_cooler_fb(builder, liqTemp, flowRate, pumpLvl, pumpSpd, fanLvl, fanSpd);
      52            1 :          builder.Finish(fp);
      53            1 :       }
      54              : 
      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_cooler_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_cooler_fb(msgBuffer);
      74              : 
      75            0 :       std::string msg = "[cooler] ";
      76              : 
      77            0 :       msg += "temp: ";
      78            0 :       msg += std::to_string(fbs->liquidTemp()) + " C ";
      79              : 
      80            0 :       msg += "flow: ";
      81            0 :       msg += std::to_string(fbs->flowRate()) + " L/min ";
      82              : 
      83            0 :       msg += "pump lvl: ";
      84            0 :       msg += std::to_string(fbs->pumpLevel()) + " ";
      85              : 
      86            0 :       msg += "spd: ";
      87            0 :       msg += std::to_string(fbs->pumpSpeed()) + " RPM ";
      88              : 
      89            0 :       msg += "fan lvl: ";
      90            0 :       msg += std::to_string(fbs->fanLevel()) + " ";
      91              : 
      92            0 :       msg += "speed: ";
      93            0 :       msg += std::to_string(fbs->fanSpeed()) + " RPM ";
      94              : 
      95            0 :       return msg;
      96              : 
      97            0 :    }
      98              : 
      99              :    static double getDouble( flatlogs::bufferPtrT & buffer,
     100              :                             member m
     101              :                           )
     102              :    {
     103              :       switch(m)
     104              :       {
     105              :          case em_liquidTemp:
     106              :             return GetTelem_cooler_fb(flatlogs::logHeader::messageBuffer(buffer))->liquidTemp();
     107              :          case em_flowRate:
     108              :             return GetTelem_cooler_fb(flatlogs::logHeader::messageBuffer(buffer))->flowRate();
     109              :          case em_pumpLevel:
     110              :             return GetTelem_cooler_fb(flatlogs::logHeader::messageBuffer(buffer))->pumpLevel();
     111              :          case em_pumpSpeed:
     112              :             return GetTelem_cooler_fb(flatlogs::logHeader::messageBuffer(buffer))->pumpSpeed();
     113              :          case em_fanLevel:
     114              :             return GetTelem_cooler_fb(flatlogs::logHeader::messageBuffer(buffer))->fanLevel();
     115              :          case em_fanSpeed:
     116              :             return GetTelem_cooler_fb(flatlogs::logHeader::messageBuffer(buffer))->fanSpeed();
     117              :          default:
     118              :             return nan("");
     119              :       }
     120              :    }
     121              : 
     122              :    /// Get the logMetaDetail for a member by name
     123              :    /**
     124              :      * \returns the a logMetaDetail filled in with the appropriate details
     125              :      * \returns an empty logMetaDetail if member not recognized
     126              :      */
     127            1 :    static logMetaDetail getAccessor( const std::string & member /**< [in] the name of the member */ )
     128              :    {
     129              :       static_cast<void>(member);
     130            1 :       std::cerr << "Meta data accessor not implemented in telem_usage\n";
     131            1 :       return logMetaDetail();
     132              :   }
     133              : 
     134              : }; //telem_cooler
     135              : 
     136              : 
     137              : 
     138              : } //namespace logger
     139              : } //namespace MagAOX
     140              : 
     141              : #endif //logger_types_telem_cooler_hpp
     142              : 
        

Generated by: LCOV version 2.0-1