A class to call a function at the main function at regular intervals (using Ticker class)
Dependents: GPS_0002 optWingforHAPS_Eigen hexaTest_Eigen
LoopTicker.cpp@0:d9fd30e1ebe4, 2021-01-21 (annotated)
- Committer:
- cocorlow
- Date:
- Thu Jan 21 15:45:43 2021 +0000
- Revision:
- 0:d9fd30e1ebe4
LoopTicker
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
cocorlow | 0:d9fd30e1ebe4 | 1 | #include "mbed.h" |
cocorlow | 0:d9fd30e1ebe4 | 2 | #include "LoopTicker.hpp" |
cocorlow | 0:d9fd30e1ebe4 | 3 | |
cocorlow | 0:d9fd30e1ebe4 | 4 | LoopTicker::LoopTicker() |
cocorlow | 0:d9fd30e1ebe4 | 5 | { |
cocorlow | 0:d9fd30e1ebe4 | 6 | fptr = NULL; |
cocorlow | 0:d9fd30e1ebe4 | 7 | time = 0.0f; |
cocorlow | 0:d9fd30e1ebe4 | 8 | updated = false; |
cocorlow | 0:d9fd30e1ebe4 | 9 | } |
cocorlow | 0:d9fd30e1ebe4 | 10 | |
cocorlow | 0:d9fd30e1ebe4 | 11 | void LoopTicker::attach(void (*fptr_)(), float time_) |
cocorlow | 0:d9fd30e1ebe4 | 12 | { |
cocorlow | 0:d9fd30e1ebe4 | 13 | fptr = fptr_; |
cocorlow | 0:d9fd30e1ebe4 | 14 | time = time_; |
cocorlow | 0:d9fd30e1ebe4 | 15 | ticker_.attach(this, &LoopTicker::interrupt, time); |
cocorlow | 0:d9fd30e1ebe4 | 16 | } |
cocorlow | 0:d9fd30e1ebe4 | 17 | |
cocorlow | 0:d9fd30e1ebe4 | 18 | void LoopTicker::detach() |
cocorlow | 0:d9fd30e1ebe4 | 19 | { |
cocorlow | 0:d9fd30e1ebe4 | 20 | fptr = NULL; |
cocorlow | 0:d9fd30e1ebe4 | 21 | time = 0.0f; |
cocorlow | 0:d9fd30e1ebe4 | 22 | updated = false; |
cocorlow | 0:d9fd30e1ebe4 | 23 | ticker_.detach(); |
cocorlow | 0:d9fd30e1ebe4 | 24 | } |
cocorlow | 0:d9fd30e1ebe4 | 25 | |
cocorlow | 0:d9fd30e1ebe4 | 26 | void LoopTicker::loop() |
cocorlow | 0:d9fd30e1ebe4 | 27 | { |
cocorlow | 0:d9fd30e1ebe4 | 28 | if (updated) |
cocorlow | 0:d9fd30e1ebe4 | 29 | { |
cocorlow | 0:d9fd30e1ebe4 | 30 | fptr(); |
cocorlow | 0:d9fd30e1ebe4 | 31 | updated = false; |
cocorlow | 0:d9fd30e1ebe4 | 32 | } |
cocorlow | 0:d9fd30e1ebe4 | 33 | } |
cocorlow | 0:d9fd30e1ebe4 | 34 | |
cocorlow | 0:d9fd30e1ebe4 | 35 | void LoopTicker::interrupt() |
cocorlow | 0:d9fd30e1ebe4 | 36 | { |
cocorlow | 0:d9fd30e1ebe4 | 37 | updated = true; |
cocorlow | 0:d9fd30e1ebe4 | 38 | } |