@@ -99,6 +99,12 @@ void Wippersnapper_DigitalGPIO::initDigitalPin(
99
99
if (pull == wippersnapper_pin_v1_ConfigurePinRequest_Pull_PULL_UP) {
100
100
WS_DEBUG_PRINTLN (" with internal pull-up enabled" );
101
101
pinMode (pinName, INPUT_PULLUP);
102
+ #ifdef INPUT_PULLDOWN
103
+ } else if (pull ==
104
+ wippersnapper_pin_v1_ConfigurePinRequest_Pull_PULL_DOWN) {
105
+ WS_DEBUG_PRINTLN (" with internal pull-down enabled" );
106
+ pinMode (pinName, INPUT_PULLDOWN);
107
+ #endif
102
108
} else {
103
109
pinMode (pinName, INPUT);
104
110
WS_DEBUG_PRINT (" \n " );
@@ -125,6 +131,11 @@ void Wippersnapper_DigitalGPIO::initDigitalPin(
125
131
_digital_input_pins[i].pinName = pinName;
126
132
_digital_input_pins[i].period = periodMs;
127
133
_digital_input_pins[i].prvPeriod = curTime - periodMs;
134
+ if (pull == wippersnapper_pin_v1_ConfigurePinRequest_Pull_PULL_UP) {
135
+ _digital_input_pins[i].prvPinVal = HIGH;
136
+ } else {
137
+ _digital_input_pins[i].prvPinVal = LOW;
138
+ }
128
139
break ;
129
140
}
130
141
}
@@ -311,8 +322,7 @@ void Wippersnapper_DigitalGPIO::processDigitalInputs() {
311
322
}
312
323
// only send on-change, but we don't know initial state of feed
313
324
// (prvPinVal at boot)
314
- if (_digital_input_pins[i].prvPeriod <= 0 ||
315
- pinVal != _digital_input_pins[i].prvPinVal ) {
325
+ if (pinVal != _digital_input_pins[i].prvPinVal ) {
316
326
WS_DEBUG_PRINT (" Executing state-based event on D" );
317
327
WS_DEBUG_PRINTLN (_digital_input_pins[i].pinName );
318
328
0 commit comments