From 8219989c4e746242758b04c66b66ab9524df6d39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xose=20P=C3=A9rez?= Date: Thu, 28 Dec 2017 11:54:28 +0100 Subject: [PATCH] Changed gpio lock mask method --- code/espurna/gpio.ino | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/code/espurna/gpio.ino b/code/espurna/gpio.ino index b9bfae8b..c65e95b6 100644 --- a/code/espurna/gpio.ino +++ b/code/espurna/gpio.ino @@ -6,7 +6,7 @@ Copyright (C) 2017 by Xose PĂ©rez */ -bool _gpio_locked[16] = {false}; +unsigned int _gpio_locked = 0; bool gpioValid(unsigned char gpio) { if (0 <= gpio && gpio <= 5) return true; @@ -16,8 +16,9 @@ bool gpioValid(unsigned char gpio) { bool gpioGetLock(unsigned char gpio) { if (gpioValid(gpio)) { - if (!_gpio_locked[gpio]) { - _gpio_locked[gpio] = true; + unsigned int mask = 1 << gpio; + if ((_gpio_locked & mask) == 0) { + _gpio_locked |= mask; DEBUG_MSG_P(PSTR("[GPIO] GPIO%d locked\n"), gpio); return true; } @@ -28,7 +29,8 @@ bool gpioGetLock(unsigned char gpio) { bool gpioReleaseLock(unsigned char gpio) { if (gpioValid(gpio)) { - _gpio_locked[gpio] = false; + unsigned int mask = 1 << gpio; + _gpio_locked &= ~mask; DEBUG_MSG_P(PSTR("[GPIO] GPIO%d lock released\n"), gpio); return true; }