Big Mouth Billy Bass automation library
Diff: action.hpp
- Revision:
- 4:f009306756b3
- Parent:
- 2:eaba75af0f0d
- Child:
- 6:ea8136eb6976
--- a/action.hpp Tue Jun 18 13:11:07 2013 +0000 +++ b/action.hpp Tue Jun 18 14:10:34 2013 +0000 @@ -15,12 +15,17 @@ DigitalOut *_out = 0, char const *_outName = 0) : actionTime(_time), desiredState(_state) - , output(_out), outputName(_outName) { + , output(_out) { } bool operator < (Action const &other) const { return actionTime < other.actionTime; } + + // return <0 if *p1 is before *p2 + static int compare(const void* p1, const void* p2) { + return static_cast<Action const *>(p1)->actionTime - static_cast<Action const *>(p2)->actionTime; + } bool isValid() const { return actionTime >= 0.0 && output != 0; @@ -29,18 +34,22 @@ void act() { output->write(desiredState ? 1 : 0); } - + bool actIfPast(float _now) { if (_now >= actionTime) { act(); return true; } else return false; } + void set(float _time, int _state, DigitalOut* _out) { + actionTime = _time; + desiredState = _state; + output = _out; + } float actionTime; - bool desiredState; + int desiredState; DigitalOut *output; - char const *outputName; }; #endif