A class to call a function at the main function at regular intervals (using Ticker class)

Dependents:   GPS_0002 optWingforHAPS_Eigen hexaTest_Eigen

Committer:
cocorlow
Date:
Thu Jan 21 15:45:43 2021 +0000
Revision:
0:d9fd30e1ebe4
LoopTicker

Who changed what in which revision?

UserRevisionLine numberNew 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 }