RaftLib  0.3a
C++ Stream Processing Template Library
resolution.hpp
1 
20 #ifndef _RESOLUTION_HPP_
21 #define _RESOLUTION_HPP_ 1
22 #include <cstdint>
23 
24 #include "ringbufferbase.tcc"
25 #include "ringbuffertypes.hpp"
26 #include "Clock.hpp"
27 
28 #ifndef NUMFRAMES
29 #define NUMFRAMES 5
30 #endif
31 
32 #ifndef CONVERGENCE
33 #define CONVERGENCE .005
34 #endif
35 
36 extern Clock *system_clock;
37 
39 {
40 public:
42  virtual ~frame_resolution() = default;
43 
54  static void setBlockedStatus( frame_resolution &frame,
55  Direction dir,
56  const bool blocked = false );
57 
64  static bool wasBlocked( frame_resolution &frame );
65 
74  static bool updateResolution( frame_resolution &frame,
75  sclock_t previous_loop_start,
76  bool &blocked );
84  static bool acceptEntry( frame_resolution &frame,
85  sclock_t realized_frame_time );
86 
87 
88  static void waitForInterval( frame_resolution &frame );
89 
90  sclock_t getFrameWidth();
91 
92 
93  sclock_t curr_frame_width;
94 private:
96  std::int32_t curr_frame_index;
97  struct
98  {
99  double upper;
100  double lower;
101  }range;
102  std::uint16_t frame_success;
103  std::uint16_t frame_failure;
104  std::uint16_t blocked_count;
105  std::uint16_t frame_count;
106 };
107 #endif /* END _RESOLUTION_HPP_ */
Definition: Clock.hpp:31
frame_resolution()
Definition: resolution.cpp:28
static bool updateResolution(frame_resolution &frame, sclock_t previous_loop_start, bool &blocked)
Definition: resolution.cpp:50
static bool acceptEntry(frame_resolution &frame, sclock_t realized_frame_time)
Definition: resolution.cpp:104
Definition: resolution.hpp:38
static bool wasBlocked(frame_resolution &frame)
static void setBlockedStatus(frame_resolution &frame, Direction dir, const bool blocked=false)