Commanders
Arduino buttons/bus library
Commander.hpp
1 //-------------------------------------------------------------------
2 #ifndef __commander_HPP__
3 #define __commander_HPP__
4 //-------------------------------------------------------------------
5 
6 #include <Commanders.h>
7 #include "DIO2.h"
8 #include "Events.h"
9 
10 #define COMMANDERSCONFIG(address, value) ( ((int)address<<8) | value )
11 #define COMMANDERSCONFIGADDRESS(data) highByte((int)data)
12 #define COMMANDERSCONFIGVALUE(data) lowByte((int)data)
13 
23 class Commander
24 {
25  private:
26  Commander *pNextCommander;
27  static Commander *pFirstCommander;
28 
29  public:
31  inline Commander() { pNextCommander = 0; AddCommander(this); }
32 
37  inline virtual void PriorityLoop() { }
40  inline virtual void beforeFirstLoop() { }
44  inline virtual unsigned long loop() { return UNDEFINED_ID; }
45 
47  static void CommanderPriorityLoops();
49  static void BeforeFirstLoops();
52  static unsigned long loops();
53 
54  private:
56  static void AddCommander(Commander *inCommander);
57 
58  public:
59 #ifdef COMMANDERS_PRINT_COMMANDERS
60 
63  static void printCommanders();
67  virtual void printCommander() {}
68 #endif
69 };
70 
71 #ifdef COMMANDERS_PRINT_COMMANDERS
72 
73 #define PRINT_COMMANDERS() Commander::printCommanders();
74 #else
75 #define PRINT_COMMANDERS()
76 #endif
77 
78 //-------------------------------------------------------------------
79 #endif
static unsigned long loops()
Definition: Commander.cpp:55
#define UNDEFINED_ID
Definition: Events.h:38
virtual unsigned long loop()
Definition: Commander.hpp:44
static void CommanderPriorityLoops()
Definition: Commander.cpp:44
virtual void beforeFirstLoop()
Definition: Commander.hpp:40
virtual void PriorityLoop()
Definition: Commander.hpp:37
static void BeforeFirstLoops()
Definition: Commander.cpp:33
Events which can be thrown.