Timer dispather
TimerSubscriber.h@0:4d91c430ba00, 2014-06-04 (annotated)
- Committer:
- Waldek
- Date:
- Wed Jun 04 10:02:31 2014 +0000
- Revision:
- 0:4d91c430ba00
Working version
Who changed what in which revision?
User | Revision | Line number | New 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 | }; |