frequency.hpp
Go to the documentation of this file.
00001 
00004 /*****************************************************************************
00005 ** Ifdefs
00006 *****************************************************************************/
00007 
00008 #ifndef ecl_time_TIME_FREQUENCY_DIAGNOSTICS_HPP_
00009 #define ecl_time_TIME_FREQUENCY_DIAGNOSTICS_HPP_
00010 
00011 /*****************************************************************************
00012 ** Includes
00013 *****************************************************************************/
00014 
00015 #include "timestamp.hpp"
00016 
00017 /*****************************************************************************
00018 ** Namespaces
00019 *****************************************************************************/
00020 
00021 namespace ecl {
00022 
00023 /*****************************************************************************
00024 ** Interfaces
00025 *****************************************************************************/
00031 struct FrequencyDiagnostics {
00032 
00033   FrequencyDiagnostics()
00034   : has_connection(false)
00035   , hz(-1.0)
00036   , std_dev(-1.0)
00037   , minimum_interval(-1.0)
00038   , maximum_interval(-1.0)
00039   , last_incoming()
00040   {}
00041 
00042   bool has_connection;
00043   float hz;
00044   float std_dev;
00045   float minimum_interval;
00046   float maximum_interval;
00047   float last_incoming;
00048 
00049 };
00050 
00083 class FrequencyMonitor {
00084 public:
00091   FrequencyMonitor(
00092       const float& window_period = 2.0,
00093       const bool& use_realtime_clock=false
00094       );
00100   void update();
00107   const FrequencyDiagnostics& analyse();
00108 
00113   const FrequencyDiagnostics& diagnostics() const { return current_diagnostics; };
00114 
00115 protected:
00116   FrequencyDiagnostics current_diagnostics;
00117   unsigned int incoming_counter;
00118   ecl::TimeStamp last_anyalsed;
00119   ecl::TimeStamp period;
00120   ecl::TimeStamp minimum_interval;
00121   ecl::TimeStamp maximum_interval;
00122   bool use_realtime_clock;
00123   ecl::TimeStamp last_incoming;
00124 };
00125 
00126 /*****************************************************************************
00127 ** Trailers
00128 *****************************************************************************/
00129 
00130 } // namespace ecl
00131 
00132 #endif /* ecl_time_TIME_FREQUENCY_DIAGNOSTICS_HPP_ */


ecl_time
Author(s): Daniel Stonier
autogenerated on Mon Jul 3 2017 02:21:18