CFrequencyCounter.h
Go to the documentation of this file.
1 //==============================================================================
2 /*
3  Software License Agreement (BSD License)
4  Copyright (c) 2003-2016, CHAI3D.
5  (www.chai3d.org)
6 
7  All rights reserved.
8 
9  Redistribution and use in source and binary forms, with or without
10  modification, are permitted provided that the following conditions
11  are met:
12 
13  * Redistributions of source code must retain the above copyright
14  notice, this list of conditions and the following disclaimer.
15 
16  * Redistributions in binary form must reproduce the above
17  copyright notice, this list of conditions and the following
18  disclaimer in the documentation and/or other materials provided
19  with the distribution.
20 
21  * Neither the name of CHAI3D nor the names of its contributors may
22  be used to endorse or promote products derived from this software
23  without specific prior written permission.
24 
25  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
28  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
29  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
30  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
31  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
32  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
33  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
35  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36  POSSIBILITY OF SUCH DAMAGE.
37 
38  \author <http://www.chai3d.org>
39  \author Francois Conti
40  \version 3.2.0 $Rev: 2098 $
41 */
42 //==============================================================================
43 
44 //------------------------------------------------------------------------------
45 #ifndef CFrequencyCounterH
46 #define CFrequencyCounterH
47 //------------------------------------------------------------------------------
48 #include "timers/CPrecisionClock.h"
49 //------------------------------------------------------------------------------
50 
51 //------------------------------------------------------------------------------
52 namespace chai3d {
53 //------------------------------------------------------------------------------
54 
55 //==============================================================================
63 //==============================================================================
64 
65 //==============================================================================
83 //==============================================================================
84 
86 {
87  //--------------------------------------------------------------------------
88  // CONSTRUCTOR & DESTRUCTOR:
89  //--------------------------------------------------------------------------
90 
91 public:
92 
94  cFrequencyCounter(const double a_timePeriod = 1.0);
95 
97  virtual ~cFrequencyCounter() {}
98 
99 
100  //--------------------------------------------------------------------------
101  // PUBLIC METHODS:
102  //--------------------------------------------------------------------------
103 
104 public:
105 
107  void reset();
108 
110  void setTimePeriod(const double& a_timePeriod);
111 
113  inline double getTimePeriod() const { return (m_clock.getTimeoutPeriodSeconds()); }
114 
116  inline double getFrequency() { signal(0); return (m_frequency); }
117 
119  double signal(const unsigned int a_numEvents = 1);
120 
121 
122  //--------------------------------------------------------------------------
123  // PROTECTED MEMBERS:
124  //--------------------------------------------------------------------------
125 
126 protected:
127 
130 
132  double m_frequency;
133 
135  unsigned int m_counter;
136 };
137 
138 //------------------------------------------------------------------------------
139 } // namespace chai3d
140 //------------------------------------------------------------------------------
141 
142 //------------------------------------------------------------------------------
143 #endif
144 //------------------------------------------------------------------------------
cFrequencyCounter(const double a_timePeriod=1.0)
Constructor of cFrequencyCounter.
Definition: CFrequencyCounter.cpp:59
Implements a high precision clock.
double getFrequency()
This method returns the most recent estimated frequency value in Hertz.
Definition: CFrequencyCounter.h:116
unsigned int m_counter
Event counter.
Definition: CFrequencyCounter.h:135
virtual ~cFrequencyCounter()
Destructor of cFrequencyCounter.
Definition: CFrequencyCounter.h:97
This class implements a high precision clock.
Definition: CPrecisionClock.h:85
double m_frequency
Estimated frequency value in Hertz.
Definition: CFrequencyCounter.h:132
void setTimePeriod(const double &a_timePeriod)
This method sets the time period in seconds.
Definition: CFrequencyCounter.cpp:138
This class implements a frequency counter.
Definition: CFrequencyCounter.h:85
void reset()
This method resets the frequency counter to zero.
Definition: CFrequencyCounter.cpp:85
double signal(const unsigned int a_numEvents=1)
This method signals the frequency counter of a one or more events.
Definition: CFrequencyCounter.cpp:107
double getTimeoutPeriodSeconds() const
This method reads the programmed timeout period is seconds.
Definition: CPrecisionClock.h:125
cPrecisionClock m_clock
High precision clock.
Definition: CFrequencyCounter.h:129
Definition: CAudioBuffer.cpp:56
double getTimePeriod() const
This method returns the time period in seconds.
Definition: CFrequencyCounter.h:113