implement pull-up and -down

This commit is contained in:
technyon
2023-06-04 13:17:42 +02:00
parent 56bd07629f
commit f839d42c83
3 changed files with 13 additions and 5 deletions

View File

@@ -75,7 +75,10 @@ void Gpio::init()
case PinRole::GeneralOutput: case PinRole::GeneralOutput:
pinMode(entry.pin, OUTPUT); pinMode(entry.pin, OUTPUT);
break; 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); Gpio2Go::configurePin(entry.pin, PinMode::InputPullup, InterruptMode::Change, 300);
break; break;
default: default:
@@ -198,7 +201,9 @@ String Gpio::getRoleDescription(PinRole role) const
return "Output: High when RTO or CM active"; return "Output: High when RTO or CM active";
case PinRole::GeneralOutput: case PinRole::GeneralOutput:
return "General output"; return "General output";
case PinRole::GeneralInput: case PinRole::GeneralInputPullDown:
return "General input (Pull-down)";
case PinRole::GeneralInputPullUp:
return "General input (Pull-up)"; return "General input (Pull-up)";
default: default:
return "Unknown"; return "Unknown";

6
Gpio.h
View File

@@ -21,7 +21,8 @@ enum class PinRole
OutputHighCmActive, OutputHighCmActive,
OutputHighRtoOrCmActive, OutputHighRtoOrCmActive,
GeneralOutput, GeneralOutput,
GeneralInput GeneralInputPullDown,
GeneralInputPullUp
}; };
enum class GpioAction enum class GpioAction
@@ -86,7 +87,8 @@ private:
PinRole::OutputHighRtoActive, PinRole::OutputHighRtoActive,
PinRole::OutputHighCmActive, PinRole::OutputHighCmActive,
PinRole::OutputHighRtoOrCmActive, PinRole::OutputHighRtoOrCmActive,
PinRole::GeneralInput, PinRole::GeneralInputPullDown,
PinRole::GeneralInputPullUp,
PinRole::GeneralOutput PinRole::GeneralOutput
}; };

View File

@@ -224,7 +224,8 @@ void Network::initialize()
{ {
switch (pinEntry.role) switch (pinEntry.role)
{ {
case PinRole::GeneralInput: case PinRole::GeneralInputPullDown:
case PinRole::GeneralInputPullUp:
if(rebGpio) if(rebGpio)
{ {
buildMqttPath(gpioPath, {mqtt_topic_gpio_prefix, (mqtt_topic_gpio_pin + std::to_string(pinEntry.pin)).c_str(), mqtt_topic_gpio_role}); buildMqttPath(gpioPath, {mqtt_topic_gpio_prefix, (mqtt_topic_gpio_pin + std::to_string(pinEntry.pin)).c_str(), mqtt_topic_gpio_role});