Timer dispather

Committer:
Waldek
Date:
Wed Jun 04 10:02:31 2014 +0000
Revision:
0:4d91c430ba00
Working version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Waldek 0:4d91c430ba00 1 #pragma once
Waldek 0:4d91c430ba00 2 #include "mbed.h"
Waldek 0:4d91c430ba00 3
Waldek 0:4d91c430ba00 4 /*-------------------------------------------------------------
Waldek 0:4d91c430ba00 5
Waldek 0:4d91c430ba00 6 (c) W.D. 2014
Waldek 0:4d91c430ba00 7
Waldek 0:4d91c430ba00 8 -------------------------------------------------------------*/
Waldek 0:4d91c430ba00 9
Waldek 0:4d91c430ba00 10 /* ------ sample usage------
Waldek 0:4d91c430ba00 11 #include "TimerSubscriber.h"
Waldek 0:4d91c430ba00 12
Waldek 0:4d91c430ba00 13 TimerSubscriber timer_user(10, 10000); // 10 in table, 10ms period
Waldek 0:4d91c430ba00 14
Waldek 0:4d91c430ba00 15 class TimerUsing : TimerDependent
Waldek 0:4d91c430ba00 16 {
Waldek 0:4d91c430ba00 17 public:
Waldek 0:4d91c430ba00 18 TimerUsing();
Waldek 0:4d91c430ba00 19 {
Waldek 0:4d91c430ba00 20 timer_user.Subscribe (this, 10);
Waldek 0:4d91c430ba00 21 };
Waldek 0:4d91c430ba00 22 virtual ~TimerUsing()
Waldek 0:4d91c430ba00 23 {
Waldek 0:4d91c430ba00 24 timer_user.UnSubscribe(this);
Waldek 0:4d91c430ba00 25 };
Waldek 0:4d91c430ba00 26 virtual void TimerEvent(void)
Waldek 0:4d91c430ba00 27 {
Waldek 0:4d91c430ba00 28 };
Waldek 0:4d91c430ba00 29 }
Waldek 0:4d91c430ba00 30
Waldek 0:4d91c430ba00 31 };
Waldek 0:4d91c430ba00 32
Waldek 0:4d91c430ba00 33 TimerUsing TimerUsingClass;
Waldek 0:4d91c430ba00 34
Waldek 0:4d91c430ba00 35 main ()
Waldek 0:4d91c430ba00 36 {
Waldek 0:4d91c430ba00 37 }
Waldek 0:4d91c430ba00 38
Waldek 0:4d91c430ba00 39 */
Waldek 0:4d91c430ba00 40 class TimerDependent
Waldek 0:4d91c430ba00 41 {
Waldek 0:4d91c430ba00 42 public:
Waldek 0:4d91c430ba00 43 TimerDependent();
Waldek 0:4d91c430ba00 44 virtual ~TimerDependent();
Waldek 0:4d91c430ba00 45
Waldek 0:4d91c430ba00 46 virtual void TimerEvent (void) = NULL;
Waldek 0:4d91c430ba00 47 };
Waldek 0:4d91c430ba00 48
Waldek 0:4d91c430ba00 49 class TimerSubscriber
Waldek 0:4d91c430ba00 50 {
Waldek 0:4d91c430ba00 51 public:
Waldek 0:4d91c430ba00 52 TimerSubscriber(const unsigned int inTableSize=10, const unsigned int inTickerPeriod=10000);
Waldek 0:4d91c430ba00 53 ~TimerSubscriber();
Waldek 0:4d91c430ba00 54 inline unsigned int counter_rd(void) {return TickerCounter;};
Waldek 0:4d91c430ba00 55 inline unsigned int TickerPeriod_rd(void) {return TickerPeriod;};
Waldek 0:4d91c430ba00 56 bool Subscribe(class TimerDependent *adres, const unsigned int inDivider=1);
Waldek 0:4d91c430ba00 57 bool UnSubscribe(const class TimerDependent *adres);
Waldek 0:4d91c430ba00 58 private:
Waldek 0:4d91c430ba00 59 static struct TimerEntry
Waldek 0:4d91c430ba00 60 {
Waldek 0:4d91c430ba00 61 class TimerDependent *CallBack;
Waldek 0:4d91c430ba00 62 unsigned int Divider;
Waldek 0:4d91c430ba00 63 unsigned int Counter;
Waldek 0:4d91c430ba00 64 } *TimerTable;
Waldek 0:4d91c430ba00 65 static void OnTimer(void);
Waldek 0:4d91c430ba00 66 static unsigned int TableSize;
Waldek 0:4d91c430ba00 67 unsigned int TickerPeriod;
Waldek 0:4d91c430ba00 68 static unsigned int TickerCounter;
Waldek 0:4d91c430ba00 69 };