Commanders
Arduino buttons/bus library
Commanders.hpp
1 //-------------------------------------------------------------------
2 #ifndef __Commanders_HPP__
3 #define __Commanders_HPP__
4 //-------------------------------------------------------------------
5 
6 #include <Commanders.h>
7 
8 typedef void(*CommandersEventHandlerFunction)(unsigned long inId, COMMANDERS_EVENT_TYPE inEvent, int inData);
9 
23 {
24 private:
25  static COMMANDERS_EVENT_TYPE lastEventType;
26  static int lastEventData;
27  static uint8_t lastConfigAddress;
28  static unsigned long StartStatusLed;
29  static CommandersEventHandlerFunction EventHandler;
30 
31 public:
33  static GPIO_pin_t StatusLedPin;
35  static unsigned int BlinkDelay;
36 
41  static inline void begin(int inStatusLedPin = -1, unsigned int inBlinkDelay = 1000)
42  {
43 #ifdef COMMANDERS_DEBUG_MODE
44  Serial.println(F(""));
45  Serial.println(F("Commanders V1.61.0"));
46  Serial.println(F("Created by Thierry Paris."));
47  Serial.println(F("(c) Locoduino 2016-2018"));
48  Serial.println(F(""));
49 
50  Serial.println(F("*** Setup Commanders started."));
51 #endif
52  if (inStatusLedPin != -1)
53  {
54  StatusLedPin = Arduino_to_GPIO_pin(inStatusLedPin);
55  pinMode2f(StatusLedPin, OUTPUT);
56  BlinkDelay = inBlinkDelay;
57  }
58  }
59 
65  static inline void begin(CommandersEventHandlerFunction func, int inStatusLedPin = -1, unsigned int inBlinkDelay = 1000)
66  {
67  Commanders::EventHandler = func;
68  begin(inStatusLedPin, inBlinkDelay);
69  }
70 
75  static unsigned long loop();
76 
80  static inline COMMANDERS_EVENT_TYPE GetLastEventType() { return lastEventType; }
84  static inline int GetLastEventData() { return lastEventData; }
89  static inline void SetLastEventType(COMMANDERS_EVENT_TYPE inEvent) { lastEventType = inEvent; lastEventData = 0; }
93  static inline void SetLastEventData(int inData) { lastEventData = inData; }
98  static inline uint8_t GetLastConfigAddress() { return lastConfigAddress; }
100  static void StatusBlink();
107  static unsigned long RaiseEvent(unsigned long inId, COMMANDERS_EVENT_TYPE inEvent = COMMANDERS_EVENT_MOVEPOSITIONID, int inData = 0);
108 #if defined(COMMANDERS_DEBUG_MODE) || defined(COMMANDERS_PRINT_COMMANDERS)
109 
112  static void printEventMoveType(COMMANDERS_MOVE_TYPE inMoveType);
116  static void printEventData(COMMANDERS_EVENT_TYPE inEventType, int inEventData);
120  static void printEventType(COMMANDERS_EVENT_TYPE inEventType, bool inDataFollow);
124  static void printEvent(unsigned long inId, COMMANDERS_EVENT_TYPE inEventType, int inEventData);
126  #define COMMANDERS_PRINT_EVENT(id, type, data) Commanders::printEvent(id, type, data);
127 #else
128  #define COMMANDERS_PRINT_EVENT(id, type, data)
129 #endif
130 };
131 
132 #endif
static void printEvent(unsigned long inId, COMMANDERS_EVENT_TYPE inEventType, int inEventData)
COMMANDERS_MOVE_TYPE
Definition: Events.h:8
static unsigned long RaiseEvent(unsigned long inId, COMMANDERS_EVENT_TYPE inEvent = COMMANDERS_EVENT_MOVEPOSITIONID, int inData = 0)
Definition: Commanders.cpp:27
static void StatusBlink()
Definition: Commanders.cpp:18
static uint8_t GetLastConfigAddress()
Definition: Commanders.hpp:98
static void SetLastEventData(int inData)
Definition: Commanders.hpp:93
static void printEventType(COMMANDERS_EVENT_TYPE inEventType, bool inDataFollow)
static void SetLastEventType(COMMANDERS_EVENT_TYPE inEvent)
Definition: Commanders.hpp:89
static int GetLastEventData()
Definition: Commanders.hpp:84
static void printEventData(COMMANDERS_EVENT_TYPE inEventType, int inEventData)
static COMMANDERS_EVENT_TYPE GetLastEventType()
Definition: Commanders.hpp:80
static void printEventMoveType(COMMANDERS_MOVE_TYPE inMoveType)
static unsigned long loop()
Definition: Commanders.cpp:124
static void begin(CommandersEventHandlerFunction func, int inStatusLedPin = -1, unsigned int inBlinkDelay = 1000)
Definition: Commanders.hpp:65
static void begin(int inStatusLedPin = -1, unsigned int inBlinkDelay = 1000)
Definition: Commanders.hpp:41
static unsigned int BlinkDelay
Definition: Commanders.hpp:35
static GPIO_pin_t StatusLedPin
Definition: Commanders.hpp:33
COMMANDERS_EVENT_TYPE
Definition: Events.h:25