Commanders
Arduino buttons/bus library
Commander.cpp
1 /*************************************************************
2 project: <Commanders>
3 author: <Thierry PARIS>
4 description: <Base Commander>
5 *************************************************************/
6 
7 #include <Commanders.h>
8 
9 Commander *Commander::pFirstCommander = 0;
10 
11 #ifdef COMMANDERS_DEBUG_MODE
12 #define CHECK(val, text) CheckIndex(val, F(text))
13 #else
14 #define CHECK(val, text)
15 #endif
16 
17 void Commander::AddCommander(Commander *inCommander)
18 {
19  if (Commander::pFirstCommander == NULL)
20  {
21  Commander::pFirstCommander = inCommander;
22  return;
23  }
24 
25  Commander *pCurr = Commander::pFirstCommander;
26 
27  while (pCurr->pNextCommander != NULL)
28  pCurr = pCurr->pNextCommander;
29 
30  pCurr->pNextCommander = inCommander;
31 }
32 
34 {
35  Commander *pCurr = Commander::pFirstCommander;
36 
37  while (pCurr != NULL)
38  {
39  pCurr->beforeFirstLoop();
40  pCurr = pCurr->pNextCommander;
41  }
42 }
43 
45 {
46  Commander *pCurr = Commander::pFirstCommander;
47 
48  while (pCurr != NULL)
49  {
50  pCurr->PriorityLoop();
51  pCurr = pCurr->pNextCommander;
52  }
53 }
54 
55 unsigned long Commander::loops()
56 {
57  Commander *pCurr = Commander::pFirstCommander;
58 
59  while (pCurr != NULL)
60  {
62  unsigned long ret = pCurr->loop();
63  if (ret != UNDEFINED_ID)
64  return ret;
65  pCurr = pCurr->pNextCommander;
66  }
67 
68  return UNDEFINED_ID;
69 }
70 
71 #ifdef COMMANDERS_PRINT_COMMANDERS
72 void Commander::printCommanders()
73 {
74  Serial.println(F("********* Commanders List"));
75  Commander *pCurr = Commander::pFirstCommander;
76 
77  while (pCurr != NULL)
78  {
79  pCurr->printCommander();
80  pCurr = pCurr->pNextCommander;
81  }
82  Serial.println(F("********* End of List"));
83 }
84 #endif
#define UNDEFINED_ID
Definition: Events.h:38
virtual unsigned long loop()
Definition: Commander.hpp:50
static unsigned long loops()
Definition: Commander.cpp:55
virtual void PriorityLoop()
Definition: Commander.hpp:43
static void CommanderPriorityLoops()
Definition: Commander.cpp:44
virtual void beforeFirstLoop()
Definition: Commander.hpp:46
static void BeforeFirstLoops()
Definition: Commander.cpp:33