Merge PR #55: Make push button active high/low configurable

This commit is contained in:
Jenkins nymea 2022-03-10 12:34:17 +01:00
commit 43fd436161
3 changed files with 9 additions and 4 deletions

View File

@ -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);

View File

@ -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();

View File

@ -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") {