diff --git a/src/HomeSpan.cpp b/src/HomeSpan.cpp index 67343b3..0e021e9 100644 --- a/src/HomeSpan.cpp +++ b/src/HomeSpan.cpp @@ -1963,7 +1963,7 @@ SpanRange::SpanRange(int min, int max, int step){ // SpanButton // /////////////////////////////// -SpanButton::SpanButton(int pin, uint16_t longTime, uint16_t singleTime, uint16_t doubleTime, Button buttonType) : PushButton(pin, buttonType){ +SpanButton::SpanButton(int pin, uint16_t longTime, uint16_t singleTime, uint16_t doubleTime, pressTest_t pressed) : PushButton(pin, pressed){ if(homeSpan.Accessories.empty() || homeSpan.Accessories.back()->Services.empty()){ Serial.printf("\nFATAL ERROR! Can't create new SpanButton(%d,%u,%u,%u) without a defined Service ***\n",pin,longTime,singleTime,doubleTime); diff --git a/src/HomeSpan.h b/src/HomeSpan.h index 6f05a30..ad1628a 100644 --- a/src/HomeSpan.h +++ b/src/HomeSpan.h @@ -711,9 +711,8 @@ class SpanButton : PushButton { LONG=2 }; - SpanButton(int pin, uint16_t longTime=2000, uint16_t singleTime=5, uint16_t doubleTime=200, Button buttonType=Button::GROUNDED); - SpanButton(int pin, Button buttonType, uint16_t longTime=2000, uint16_t singleTime=5, uint16_t doubleTime=200) : SpanButton(pin,longTime,singleTime,doubleTime,buttonType){}; - SpanButton(int pin, boolean (*pressed)(int pin), uint16_t longTime=2000, uint16_t singleTime=5, uint16_t doubleTime=200) : SpanButton(pin,longTime,singleTime,doubleTime,Button::CUSTOM){this->pressed=pressed;}; + SpanButton(int pin, uint16_t longTime=2000, uint16_t singleTime=5, uint16_t doubleTime=200, pressTest_t pressed=GROUNDED); + SpanButton(int pin, pressTest_t pressed=GROUNDED, uint16_t longTime=2000, uint16_t singleTime=5, uint16_t doubleTime=200) : SpanButton(pin,longTime,singleTime,doubleTime,pressed){}; }; diff --git a/src/Utils.cpp b/src/Utils.cpp index 625aea9..f75dbca 100644 --- a/src/Utils.cpp +++ b/src/Utils.cpp @@ -85,40 +85,22 @@ String Utils::mask(char *c, int n){ // PushButton // //////////////////////////////// -PushButton::PushButton(int pin, Button buttonType){ +PushButton::PushButton(int pin, pressTest_t pressed){ this->pin=pin; + this->pressed=pressed; status=0; doubleCheck=false; - switch(buttonType){ - - case Button::GROUNDED: - pinMode(pin, INPUT_PULLUP); - pressed=groundedButton; - break; - - case Button::POWERED: - pinMode(pin, INPUT_PULLDOWN); - pressed=poweredButton; - break; - - case Button::TOUCH: - pressed=touchButton; - break; - - }; + if(pressed==GROUNDED) + pinMode(pin, INPUT_PULLUP); + else if(pressed==POWERED) + pinMode(pin, INPUT_PULLDOWN); } ////////////////////////////////////// -PushButton::PushButton(int pin, boolean (*pressed)(int pin)) : PushButton(pin, Button::CUSTOM){ - this->pressed=pressed; -} - -////////////////////////////////////// - boolean PushButton::triggered(uint16_t singleTime, uint16_t longTime, uint16_t doubleTime){ unsigned long cTime=millis(); diff --git a/src/Utils.h b/src/Utils.h index 5f84f51..fbcdda3 100644 --- a/src/Utils.h +++ b/src/Utils.h @@ -37,13 +37,6 @@ String mask(char *c, int n); // simply utility that creates a String fr } -enum class Button { - GROUNDED, - POWERED, - TOUCH, - CUSTOM -}; - ///////////////////////////////////////////////// // Creates a temporary buffer that is freed after // going out of scope @@ -88,15 +81,13 @@ class PushButton{ int pressType; static uint16_t touchThreshold; - - static boolean groundedButton(int pin){return(!digitalRead(pin));} - static boolean poweredButton(int pin){return(digitalRead(pin));} - static boolean touchButton(int pin){return(touchRead(pin)