diff --git a/Gpio.cpp b/Gpio.cpp index 4d8fcba..9af20a3 100644 --- a/Gpio.cpp +++ b/Gpio.cpp @@ -75,7 +75,10 @@ void Gpio::init() case PinRole::GeneralOutput: pinMode(entry.pin, OUTPUT); break; - case PinRole::GeneralInput: + case PinRole::GeneralInputPullDown: + Gpio2Go::configurePin(entry.pin, PinMode::InputPullDown, InterruptMode::Change, 300); + break; + case PinRole::GeneralInputPullUp: Gpio2Go::configurePin(entry.pin, PinMode::InputPullup, InterruptMode::Change, 300); break; default: @@ -198,7 +201,9 @@ String Gpio::getRoleDescription(PinRole role) const return "Output: High when RTO or CM active"; case PinRole::GeneralOutput: return "General output"; - case PinRole::GeneralInput: + case PinRole::GeneralInputPullDown: + return "General input (Pull-down)"; + case PinRole::GeneralInputPullUp: return "General input (Pull-up)"; default: return "Unknown"; diff --git a/Gpio.h b/Gpio.h index af9d7ae..a770a2c 100644 --- a/Gpio.h +++ b/Gpio.h @@ -21,7 +21,8 @@ enum class PinRole OutputHighCmActive, OutputHighRtoOrCmActive, GeneralOutput, - GeneralInput + GeneralInputPullDown, + GeneralInputPullUp }; enum class GpioAction @@ -86,7 +87,8 @@ private: PinRole::OutputHighRtoActive, PinRole::OutputHighCmActive, PinRole::OutputHighRtoOrCmActive, - PinRole::GeneralInput, + PinRole::GeneralInputPullDown, + PinRole::GeneralInputPullUp, PinRole::GeneralOutput }; diff --git a/Network.cpp b/Network.cpp index e1901a3..85598d1 100644 --- a/Network.cpp +++ b/Network.cpp @@ -224,7 +224,8 @@ void Network::initialize() { switch (pinEntry.role) { - case PinRole::GeneralInput: + case PinRole::GeneralInputPullDown: + case PinRole::GeneralInputPullUp: if(rebGpio) { buildMqttPath(gpioPath, {mqtt_topic_gpio_prefix, (mqtt_topic_gpio_pin + std::to_string(pinEntry.pin)).c_str(), mqtt_topic_gpio_role});