UniSet 2.32.1
Trigger.h
1/*
2 * Copyright (c) 2015 Pavel Vainerman.
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License as
6 * published by the Free Software Foundation, version 2.1.
7 *
8 * This program is distributed in the hope that it will be useful, but
9 * WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 * Lesser General Lesser Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16// --------------------------------------------------------------------------
21//--------------------------------------------------------------------------
22#ifndef UNITRIGGER_H_
23#define UNITRIGGER_H_
24//--------------------------------------------------------------------------
25namespace uniset
26{
27 // header only
28
30 class Trigger
31 {
32 public:
33 Trigger(bool initial = false) noexcept
34 {
35 oldstate = initial;
36 }
37
39 bool hi(bool state) noexcept
40 {
41 if (oldstate != state)
42 {
43 oldstate = state;
44
45 if (state)
46 return true;
47 }
48
49 return false;
50 }
52 bool low(bool state) noexcept
53 {
54 if (oldstate != state)
55 {
56 oldstate = state;
57
58 if (!state)
59 return true;
60 }
61
62 return false;
63 }
65 bool change(bool state) noexcept
66 {
67 if (oldstate != state)
68 {
69 oldstate = state;
70 return true;
71 }
72
73 return false;
74 }
75
76 inline bool get() const noexcept
77 {
78 return oldstate;
79 }
80
81 private:
82 bool oldstate;
83 };
84 // -------------------------------------------------------------------------
85} // end of uniset namespace
86// --------------------------------------------------------------------------
87#endif
88// --------------------------------------------------------------------------
Definition Trigger.h:31
bool low(bool state) noexcept
Definition Trigger.h:52
bool change(bool state) noexcept
Definition Trigger.h:65
bool hi(bool state) noexcept
Definition Trigger.h:39
Definition Calibration.h:27