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; m_advertisingTimeout = advertisingTimeout;
} }
void Core::addGPioButton(int buttonGpio) void Core::addGPioButton(int buttonGpio, bool activeLow)
{ {
GpioButton *button = new GpioButton(buttonGpio, this); GpioButton *button = new GpioButton(buttonGpio, this);
button->setActiveLow(activeLow);
button->setLongPressedTimeout(2000); button->setLongPressedTimeout(2000);
connect(button, &GpioButton::longPressed, this, &Core::startService); connect(button, &GpioButton::longPressed, this, &Core::startService);
m_buttons.append(button); m_buttons.append(button);

View File

@ -73,7 +73,7 @@ public:
int advertisingTimeout() const; int advertisingTimeout() const;
void setAdvertisingTimeout(int advertisingTimeout); void setAdvertisingTimeout(int advertisingTimeout);
void addGPioButton(int buttonGpio); void addGPioButton(int buttonGpio, bool activeLow = false);
void enableDBusInterface(QDBusConnection::BusType busType); void enableDBusInterface(QDBusConnection::BusType busType);
void run(); void run();

View File

@ -93,6 +93,7 @@ int main(int argc, char *argv[])
Core::Mode mode = Core::ModeOffline; Core::Mode mode = Core::ModeOffline;
int timeout = 60; int timeout = 60;
int buttonGpio = -1; int buttonGpio = -1;
bool buttonActiveLow = false;
QString advertiseName = "BT-WiFi"; QString advertiseName = "BT-WiFi";
bool forceFullName = false; bool forceFullName = false;
QString platformName = "nymea"; QString platformName = "nymea";
@ -189,6 +190,9 @@ int main(int argc, char *argv[])
if (settings.contains("ButtonGpio")) { if (settings.contains("ButtonGpio")) {
buttonGpio = settings.value("ButtonGpio", -1).toInt(&gpioValueOk); buttonGpio = settings.value("ButtonGpio", -1).toInt(&gpioValueOk);
} }
if (settings.contains("ButtonActiveLow")) {
buttonActiveLow = settings.value("ButtonActiveLow", false).toBool();
}
if (settings.contains("Timeout")) { if (settings.contains("Timeout")) {
timeout = settings.value("Timeout").toInt(&timeoutValueOk); timeout = settings.value("Timeout").toInt(&timeoutValueOk);
} }
@ -274,7 +278,7 @@ int main(int argc, char *argv[])
qCDebug(dcApplication()) << "Mode:" << mode; qCDebug(dcApplication()) << "Mode:" << mode;
qCDebug(dcApplication()) << "Timeout:" << timeout; qCDebug(dcApplication()) << "Timeout:" << timeout;
if (mode == Core::ModeButton && buttonGpio > 0) { 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") { if (!dbusBusType.isEmpty() && dbusBusType != "none") {
qCDebug(dcApplication()) << "DBus interface:" << dbusBusType; qCDebug(dcApplication()) << "DBus interface:" << dbusBusType;
@ -286,7 +290,7 @@ int main(int argc, char *argv[])
core.setAdvertisingTimeout(timeout); core.setAdvertisingTimeout(timeout);
core.setAdvertiseName(advertiseName, forceFullName); core.setAdvertiseName(advertiseName, forceFullName);
core.setPlatformName(platformName); core.setPlatformName(platformName);
core.addGPioButton(buttonGpio); core.addGPioButton(buttonGpio, buttonActiveLow);
if (dbusBusType == "system") { if (dbusBusType == "system") {
core.enableDBusInterface(QDBusConnection::SystemBus); core.enableDBusInterface(QDBusConnection::SystemBus);
} else if (dbusBusType == "session") { } else if (dbusBusType == "session") {