Commanders
Arduino buttons/bus library
EventStack.cpp
1 #include "EventStack.hpp"
2 
4 
5 void EventStack::FreeEvent(byte inEvent)
6 {
7  id[inEvent] = UNDEFINED_ID;
8  type[inEvent] = COMMANDERS_EVENT_NONE;
9  data[inEvent] = 0;
10 }
11 
12 void EventStack::PushEvent(unsigned long inId, COMMANDERS_EVENT_TYPE inType, int inData)
13 {
14  for (int i =0; i < EVENT_MAXNUMBER; i++)
15  if (this->id[i] == UNDEFINED_ID)
16  {
17  this->id[i] = inId;
18  this->type[i] = inType;
19  this->data[i] = inData;
20  return;
21  }
22 
23 #ifdef COMMANDERS_DEBUG_MODE
24  Serial.println(F("Error : an event has been lost ! Stack is full !"));
25 #endif
26 }
27 
29 {
30  for (int i = 0; i < EVENT_MAXNUMBER; i++)
31  if (this->id[i] != UNDEFINED_ID)
32  return i;
33 
34  return 255;
35 }
36 
37 void EventStack::GetEvent(byte inEvent, unsigned long *inpId, COMMANDERS_EVENT_TYPE *inpType, int *inpData)
38 {
39  *inpId = this->id[inEvent];
40  *inpType = this->type[inEvent];
41  *inpData = this->data[inEvent];
42  this->FreeEvent(inEvent);
43 }
void GetEvent(byte inIndex, unsigned long *inpId, COMMANDERS_EVENT_TYPE *inpType, int *inpData)
Definition: EventStack.cpp:37
byte GetPendingEventIndex()
Definition: EventStack.cpp:28
COMMANDERS_EVENT_TYPE
Definition: Events.h:25
void PushEvent(unsigned long inId, COMMANDERS_EVENT_TYPE inType, int inData)
Definition: EventStack.cpp:12
#define UNDEFINED_ID
Definition: Events.h:38
static EventStack EventsStack
Definition: EventStack.hpp:36