diff --git a/FlippR-Driver/src/input/Detector.cpp b/FlippR-Driver/src/input/Detector.cpp index cf401fc..210de01 100644 --- a/FlippR-Driver/src/input/Detector.cpp +++ b/FlippR-Driver/src/input/Detector.cpp @@ -37,8 +37,8 @@ void Detector::detect() { while(this->is_running) { - char address; - if(this->check_inputs(address)) + std::vector detected_addresses = check_inputs(); + for(auto& address : detected_addresses) { try { @@ -55,18 +55,18 @@ void Detector::detect() } } -bool Detector::check_inputs(char& address) +std::vector Detector::check_inputs() { + std::vector detected_addresses; for(char pin = 0; pin < (INPUT_MATRIX_SIZE * INPUT_MATRIX_SIZE); pin++) { if(input_gpio_interface->read_data(pin)) { CLOG(TRACE, INPUT_LOGGER) << "Pin " << std::to_string(pin) << " is triggered."; - address = pin; - return true; + detected_addresses.push_back(pin); } } - return false; + return detected_addresses; } } diff --git a/FlippR-Driver/src/input/Detector.h b/FlippR-Driver/src/input/Detector.h index f2b77b8..87638e9 100644 --- a/FlippR-Driver/src/input/Detector.h +++ b/FlippR-Driver/src/input/Detector.h @@ -16,6 +16,7 @@ #include +#include #include #include "utilities/IInputGPIOInterface.h" @@ -38,7 +39,7 @@ public: private: void detect(); - bool check_inputs(char& address); + std::vector check_inputs(); private: std::unique_ptr input_gpio_interface;