diff --git a/include/digio.h b/include/digio.h index 38e4d9d..61fdb80 100644 --- a/include/digio.h +++ b/include/digio.h @@ -61,14 +61,7 @@ class DigIo * @param[in] io pin index * @return pin value */ - bool Get() - { - if(_invert) - { - return !(gpio_get(_port, _pin) > 0); - } - return gpio_get(_port, _pin) > 0; - } + bool Get() { return (gpio_get(_port, _pin) > 0) ^ _invert; } /** * Set pin high diff --git a/src/digio.cpp b/src/digio.cpp index d4f1623..3af5ebb 100644 --- a/src/digio.cpp +++ b/src/digio.cpp @@ -43,24 +43,24 @@ void DigIo::Configure(uint32_t port, uint16_t pin, PinMode::PinMode pinMode) case PinMode::INPUT_PD: /* use defaults */ break; - case PinMode::INPUT_PD_INV: - /* use defaults */ - _invert = 1; - break; + case PinMode::INPUT_PD_INV: + /* use defaults */ + _invert = 1; + break; case PinMode::INPUT_PU: val = DIG_IO_ON; break; - case PinMode::INPUT_PU_INV: - val = DIG_IO_ON; - _invert = 1; - break; + case PinMode::INPUT_PU_INV: + val = DIG_IO_ON; + _invert = 1; + break; case PinMode::INPUT_FLT: cnf = GPIO_CNF_INPUT_FLOAT; break; - case PinMode::INPUT_FLT_INV: - cnf = GPIO_CNF_INPUT_FLOAT; - _invert = 1; - break; + case PinMode::INPUT_FLT_INV: + cnf = GPIO_CNF_INPUT_FLOAT; + _invert = 1; + break; case PinMode::INPUT_AIN: cnf = GPIO_CNF_INPUT_ANALOG; break;