9 #ifndef NO_BUTTONSCOMMANDER 10 #ifndef NO_BUTTONSCOMMANDERSWITCH 14 this->debounceDelay = 50;
15 this->lastSelectedPin = DP_INVALID;
20 if (inpIdPin->
Pin != DP_INVALID)
22 pinMode2f(inpIdPin->
Pin, INPUT_PULLUP);
28 #ifdef COMMANDERS_DEBUG_MODE 29 if (this->EventPins.
pFirst == NULL)
30 Serial.println(F(
"This switch button have no ID defined : begin() must be called AFTER AddEvent !"));
36 beginItem(pCurr->
Obj);
50 if (inPin == pCurr->
Obj->
Pin)
56 return pCurr->
Obj->
Id;
68 pIdpin->
Pin = Arduino_to_GPIO_pin(inPin);
70 pIdpin->
Event = inEvent;
71 pIdpin->
Data = inData;
74 this->EventPins.
AddItem(pIdpin);
80 byte *inpLastPinState,
unsigned long *inpLastDebounceTime,
bool inSendEvent)
84 if (inPin != DP_INVALID)
87 int pinState = digitalRead2f(inPin);
94 if (pinState != *inpLastPinState)
97 #ifdef COMMANDERS_DEBUG_MODE 98 Serial.print(F(
"Pin "));
99 Serial.print(GPIO_to_Arduino_pin(inPin));
100 Serial.print(pinState == HIGH ? F(
" high") : F(
" low"));
101 Serial.println(F(
" debounced !"));
103 *inpLastPinState = pinState;
104 *inpLastDebounceTime = millis();
108 if (*inpLastDebounceTime > 0 && (millis() - *inpLastDebounceTime) > inDebounceDelay)
128 *inpLastDebounceTime = 0;
133 *inpLastPinState = pinState;
142 while (pCurr != NULL)
144 if (pCurr->
Obj->
Pin != DP_INVALID)
147 int pinState = digitalRead2f(pCurr->
Obj->
Pin);
151 this->lastSelectedPin = pCurr->
Obj->
Pin;
156 pCurr = pCurr->
pNext;
162 if (this->EventPins.
pFirst == NULL)
164 #ifdef COMMANDERS_DEBUG_MODE 165 if (this->debounceDelay != UINT32_MAX)
167 Serial.println(F(
"This switch button have no ID defined : call AddEvent() and begin() !"));
169 this->debounceDelay = UINT32_MAX;
181 this->lastSelectedPin = pCurr->
Pin;
190 #ifdef COMMANDERS_PRINT_COMMANDERS 191 void ButtonsCommanderSwitch::printCommander()
193 Serial.println(F(
" Switch"));
196 while (pCurr != NULL)
198 Serial.print(F(
" Event - Pin: "));
199 Serial.print(GPIO_to_Arduino_pin(pCurr->
Obj->
Pin));
200 Serial.print(F(
" / Id: "));
201 Serial.print(pCurr->
Obj->
Id);
202 Serial.print(F(
" / Event type: "));
205 Serial.print(F(
" / Debounce delay: "));
206 Serial.print(this->debounceDelay);
207 Serial.println(F(
""));
209 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)
COMMANDERS_EVENT_TYPE Event
CMDRSCHAINEDLISTITEM * pNext
unsigned long LastDebounceTime
CMDRSCHAINEDLISTITEM< T > * pFirst
static void printEventData(COMMANDERS_EVENT_TYPE inEventType, int inEventData)