Formula Student Autonomous Systems
The code for the main driverless system
Loading...
Searching...
No Matches
deadTime.hpp
Go to the documentation of this file.
1#ifndef PACSIMDEADTIME_HPP
2#define PACSIMDEADTIME_HPP
3
4#include <mutex>
5#include <queue>
6
7template <typename T> class DeadTime
8{
9public:
10 DeadTime(double deadtime) { this->deadTime = deadtime; }
11
12 DeadTime(const DeadTime& in)
13 {
14 std::lock_guard<std::mutex> l(_mutex);
15 this->deadTime = in.deadTime;
17 this->times = in.times;
18 }
19
21 {
22 std::lock_guard<std::mutex> l(_mutex);
23 this->deadTime = in.deadTime;
25 this->times = in.times;
26 return *this;
27 }
28
29 void updateDeadTime(double time) { this->deadTime = time; }
30
32 {
33 std::lock_guard<std::mutex> l(_mutex);
34 T elem = this->deadTimeQueue.front();
35 this->deadTimeQueue.pop();
36 this->times.pop();
37 return elem;
38 }
39
40 bool availableDeadTime(double time)
41 {
42 bool ret = false;
43 std::lock_guard<std::mutex> l(_mutex);
44 if (this->deadTimeQueue.size() >= 1)
45 {
46 T elem = this->deadTimeQueue.front();
47 if (time >= (this->times.front() + this->deadTime))
48 {
49 ret = true;
50 }
51 }
52 return ret;
53 }
54
55 void addVal(T val, double currTime)
56 {
57 std::lock_guard<std::mutex> l(_mutex);
58 this->deadTimeQueue.push(val);
59 this->times.push(currTime);
60 }
61
62private:
63 std::mutex _mutex;
64 double deadTime;
65 std::queue<T> deadTimeQueue;
66 std::queue<double> times;
67};
68
69#endif /* PACSIMDEADTIME_HPP */
std::queue< T > deadTimeQueue
Definition deadTime.hpp:65
double deadTime
Definition deadTime.hpp:64
std::mutex _mutex
Definition deadTime.hpp:63
DeadTime(const DeadTime &in)
Definition deadTime.hpp:12
DeadTime(double deadtime)
Definition deadTime.hpp:10
std::queue< double > times
Definition deadTime.hpp:66
bool availableDeadTime(double time)
Definition deadTime.hpp:40
DeadTime & operator=(const DeadTime &in)
Definition deadTime.hpp:20
void addVal(T val, double currTime)
Definition deadTime.hpp:55
T getOldest()
Definition deadTime.hpp:31
void updateDeadTime(double time)
Definition deadTime.hpp:29