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 
14 #ifdef ARDUINO_ARCH_ESP32
15 #define ANALOG_LIMIT 4095
16 #else
17 #define ANALOG_LIMIT 1023
18 #endif
19 
29 class Commander
30 {
31  private:
32  Commander *pNextCommander;
33  static Commander *pFirstCommander;
34 
35  public:
37  inline Commander() { pNextCommander = 0; AddCommander(this); }
38 
43  inline virtual void PriorityLoop() { }
46  inline virtual void beforeFirstLoop() { }
50  inline virtual unsigned long loop() { return UNDEFINED_ID; }
51 
53  static void CommanderPriorityLoops();
55  static void BeforeFirstLoops();
58  static unsigned long loops();
59 
60  private:
62  static void AddCommander(Commander *inCommander);
63 
64  public:
65 #ifdef COMMANDERS_PRINT_COMMANDERS
66 
69  static void printCommanders();
73  virtual void printCommander() {}
74 #endif
75 };
76 
77 #ifdef COMMANDERS_PRINT_COMMANDERS
78 
79 #define PRINT_COMMANDERS() Commander::printCommanders();
80 #else
81 #define PRINT_COMMANDERS()
82 #endif
83 
84 //-------------------------------------------------------------------
85 #endif
static unsigned long loops()
Definition: Commander.cpp:55
static void BeforeFirstLoops()
Definition: Commander.cpp:33
#define UNDEFINED_ID
Definition: Events.h:38
virtual unsigned long loop()
Definition: Commander.hpp:50
static void CommanderPriorityLoops()
Definition: Commander.cpp:44
virtual void beforeFirstLoop()
Definition: Commander.hpp:46
virtual void PriorityLoop()
Definition: Commander.hpp:43
Events which can be thrown.