From 15353b9045732e84e717f1d1c22a626e48db935f Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Wed, 2 Mar 2022 11:46:51 +0100 Subject: [PATCH] Make push button active high/low configurable --- nymea-networkmanager/core.cpp | 3 ++- nymea-networkmanager/core.h | 2 +- nymea-networkmanager/main.cpp | 8 ++++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/nymea-networkmanager/core.cpp b/nymea-networkmanager/core.cpp index 0b11c65..98274ad 100644 --- a/nymea-networkmanager/core.cpp +++ b/nymea-networkmanager/core.cpp @@ -91,9 +91,10 @@ void Core::setAdvertisingTimeout(int advertisingTimeout) m_advertisingTimeout = advertisingTimeout; } -void Core::addGPioButton(int buttonGpio) +void Core::addGPioButton(int buttonGpio, bool activeLow) { GpioButton *button = new GpioButton(buttonGpio, this); + button->setActiveLow(activeLow); button->setLongPressedTimeout(2000); connect(button, &GpioButton::longPressed, this, &Core::startService); m_buttons.append(button); diff --git a/nymea-networkmanager/core.h b/nymea-networkmanager/core.h index a446542..94dc05c 100644 --- a/nymea-networkmanager/core.h +++ b/nymea-networkmanager/core.h @@ -73,7 +73,7 @@ public: int advertisingTimeout() const; void setAdvertisingTimeout(int advertisingTimeout); - void addGPioButton(int buttonGpio); + void addGPioButton(int buttonGpio, bool activeLow = false); void enableDBusInterface(QDBusConnection::BusType busType); void run(); diff --git a/nymea-networkmanager/main.cpp b/nymea-networkmanager/main.cpp index 56babf8..5ff573d 100644 --- a/nymea-networkmanager/main.cpp +++ b/nymea-networkmanager/main.cpp @@ -93,6 +93,7 @@ int main(int argc, char *argv[]) Core::Mode mode = Core::ModeOffline; int timeout = 60; int buttonGpio = -1; + bool buttonActiveLow = false; QString advertiseName = "BT-WiFi"; bool forceFullName = false; QString platformName = "nymea"; @@ -189,6 +190,9 @@ int main(int argc, char *argv[]) if (settings.contains("ButtonGpio")) { buttonGpio = settings.value("ButtonGpio", -1).toInt(&gpioValueOk); } + if (settings.contains("ButtonActiveLow")) { + buttonActiveLow = settings.value("ButtonActiveLow", false).toBool(); + } if (settings.contains("Timeout")) { timeout = settings.value("Timeout").toInt(&timeoutValueOk); } @@ -274,7 +278,7 @@ int main(int argc, char *argv[]) qCDebug(dcApplication()) << "Mode:" << mode; qCDebug(dcApplication()) << "Timeout:" << timeout; if (mode == Core::ModeButton && buttonGpio > 0) { - qCDebug(dcApplication()) << "Button GPIO:" << buttonGpio; + qCDebug(dcApplication()) << QString("Button GPIO: %1 (Active %2)").arg(buttonGpio).arg(buttonActiveLow ? "low" : "high"); } if (!dbusBusType.isEmpty() && dbusBusType != "none") { qCDebug(dcApplication()) << "DBus interface:" << dbusBusType; @@ -286,7 +290,7 @@ int main(int argc, char *argv[]) core.setAdvertisingTimeout(timeout); core.setAdvertiseName(advertiseName, forceFullName); core.setPlatformName(platformName); - core.addGPioButton(buttonGpio); + core.addGPioButton(buttonGpio, buttonActiveLow); if (dbusBusType == "system") { core.enableDBusInterface(QDBusConnection::SystemBus); } else if (dbusBusType == "session") {