Accessories
Arduino for motors and lights library.
AccessoriesEventStack.cpp
1 #ifdef VISUALSTUDIO
2 #include "string.h"
3 #endif
4 
5 #include "AccessoriesEventStack.hpp"
6 
8 
9 void AccessoriesEventStack::FreeEvent(byte inEvent)
10 {
11  id[inEvent] = UNDEFINED_ID;
12  type[inEvent] = ACCESSORIES_EVENT_NONE;
13  data[inEvent] = 0;
14 }
15 
16 void AccessoriesEventStack::PushEvent(unsigned long inId, ACCESSORIES_EVENT_TYPE inType, int inData)
17 {
18  for (int i =0; i < ACCESSSORIES_EVENT_MAXNUMBER; i++)
19  if (this->id[i] == UNDEFINED_ID)
20  {
21  this->id[i] = inId;
22  this->type[i] = inType;
23  this->data[i] = inData;
24  return;
25  }
26 
27 #ifdef COMMANDERS_DEBUG_MODE
28  Serial.println(F("Error : an event has been lost ! Stack is full !"));
29 #endif
30 }
31 
33 {
34  for (int i = 0; i < ACCESSSORIES_EVENT_MAXNUMBER; i++)
35  if (this->id[i] == UNDEFINED_ID)
36  return i;
37 
38  return 255;
39 }
40 
41 void AccessoriesEventStack::GetEvent(unsigned long *inpId, ACCESSORIES_EVENT_TYPE *inpType, int *inpData)
42 {
43  if (this->id[0] == UNDEFINED_ID)
44  return;
45 
46  *inpId = this->id[0];
47  *inpType = this->type[0];
48  *inpData = this->data[0];
49 
50  memmove(this->id, this->id + 1, sizeof(unsigned long));
51  memmove(this->type, this->type + 1, sizeof(ACCESSORIES_EVENT_TYPE));
52  memmove(this->data, this->data + 1, sizeof(int));
53 
54  this->id[ACCESSSORIES_EVENT_MAXNUMBER - 1] = UNDEFINED_ID;
55 }
void PushEvent(unsigned long inId, ACCESSORIES_EVENT_TYPE inType, int inData)
void GetEvent(unsigned long *inpId, ACCESSORIES_EVENT_TYPE *inpType, int *inpData)
static AccessoriesEventStack EventsStack