8 #ifndef NO_BUTTONSCOMMANDER 9 #ifndef NO_BUTTONSCOMMANDERSWITCH 13 this->debounceDelay = 50;
14 this->lastSelectedPin = DP_INVALID;
19 if (inpIdPin->
Pin != DP_INVALID)
21 pinMode2f(inpIdPin->
Pin, INPUT_PULLUP);
27 #ifdef COMMANDERS_DEBUG_MODE 28 if (this->EventPins.
pFirst == NULL)
29 Serial.println(F(
"This switch button have no ID defined : begin() must be called AFTER AddEvent !"));
35 beginItem(pCurr->
Obj);
49 if (inPin == pCurr->
Obj->
Pin)
55 return pCurr->
Obj->
Id;
67 pIdpin->
Pin = Arduino_to_GPIO_pin(inPin);
69 pIdpin->
Event = inEvent;
70 pIdpin->
Data = inData;
73 this->EventPins.
AddItem(pIdpin);
79 byte *inpLastPinState,
unsigned long *inpLastDebounceTime,
bool inSendEvent)
83 if (inPin != DP_INVALID)
86 int pinState = digitalRead2f(inPin);
93 if (pinState != *inpLastPinState)
96 *inpLastPinState = pinState;
97 *inpLastDebounceTime = millis();
101 if (*inpLastDebounceTime > 0 && (millis() - *inpLastDebounceTime) > inDebounceDelay)
121 *inpLastDebounceTime = 0;
126 *inpLastPinState = pinState;
135 while (pCurr != NULL)
137 if (pCurr->
Obj->
Pin != DP_INVALID)
140 int pinState = digitalRead2f(pCurr->
Obj->
Pin);
144 this->lastSelectedPin = pCurr->
Obj->
Pin;
149 pCurr = pCurr->
pNext;
155 #ifdef COMMANDERS_DEBUG_MODE 156 if (this->EventPins.
pFirst == NULL)
157 Serial.println(F(
"This switch button have no ID defined : call AddEvent() and begin() !"));
166 this->lastSelectedPin = pCurr->
Pin;
175 #ifdef COMMANDERS_PRINT_COMMANDERS 176 void ButtonsCommanderSwitch::printCommander()
178 Serial.println(F(
" Switch"));
181 while (pCurr != NULL)
183 Serial.print(F(
" Event - Pin: "));
184 Serial.print(GPIO_to_Arduino_pin(pCurr->
Obj->
Pin));
185 Serial.print(F(
" / Id: "));
186 Serial.print(pCurr->
Obj->
Id);
187 Serial.print(F(
" / Event type: "));
190 Serial.println(F(
""));
192 pCurr = pCurr->
pNext;
static void printEventType(COMMANDERS_EVENT_TYPE inEventType, bool inDataFollow)
CMDRSCHAINEDLISTITEM< T > * pCurrentItem
static unsigned long RaiseEvent(unsigned long inId, COMMANDERS_EVENT_TYPE inEvent = COMMANDERS_EVENT_MOVEPOSITIONID, int inData = 0)
static void printEventData(COMMANDERS_EVENT_TYPE inEventType, int inEventData)
CMDRSCHAINEDLISTITEM * pNext
unsigned long LastDebounceTime
CMDRSCHAINEDLISTITEM< T > * pFirst
COMMANDERS_EVENT_TYPE Event