diff --git a/FlippR-Driver/Matrix_Config.json b/FlippR-Driver/Matrix_Config.json new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/FlippR-Driver/Matrix_Config.json @@ -0,0 +1 @@ + diff --git a/FlippR-Driver/src/input/EventNotifier.cpp b/FlippR-Driver/src/input/EventNotifier.cpp index 8c1e1fe..f2839df 100644 --- a/FlippR-Driver/src/input/EventNotifier.cpp +++ b/FlippR-Driver/src/input/EventNotifier.cpp @@ -5,6 +5,10 @@ * Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert, Rafael Vinci, Dr. Franca Rupprecht */ +#include + +#include "../utilities/config.h" + #include "EventNotifier.h" namespace Input @@ -50,8 +54,13 @@ void EventNotifier::notify() std::lock_guard event_handler_guard(event_handler_mutex); for(auto handler : event_handler) { - // todo timeout! - handler->handle(event); + boost::thread handler_caller(handler, &EventHandler::handle, event); + + if(!handler_caller.timed_join(boost::posix_time::milliseconds(HANDLER_TIMEOUT))) + { + CLOG(WARNING, INPUT_LOGGER) << "Handler " << typeid(handler).name() << " didn't finish in " + << HANDLER_TIMEOUT << " milliseconds. Aborting Execution!"; + } } } } diff --git a/FlippR-Driver/src/input/EventNotifier.h b/FlippR-Driver/src/input/EventNotifier.h index bdbca2e..4b7d448 100644 --- a/FlippR-Driver/src/input/EventNotifier.h +++ b/FlippR-Driver/src/input/EventNotifier.h @@ -16,6 +16,8 @@ #include "Event.hpp" #include "EventHandler.hpp" +#define HANDLER_TIMEOUT 2000 + namespace Input { diff --git a/FlippR-Driver/src/utilities/InputGPIOInterface.h b/FlippR-Driver/src/utilities/InputGPIOInterface.h index 1650d3e..9231675 100644 --- a/FlippR-Driver/src/utilities/InputGPIOInterface.h +++ b/FlippR-Driver/src/utilities/InputGPIOInterface.h @@ -12,7 +12,7 @@ #include -#define MATRIX_SIZE 8 +#define INPUT_MATRIX_SIZE 8 class InputGPIOInterface : GPIOInterface { diff --git a/FlippR-Driver/src/utilities/config.h b/FlippR-Driver/src/utilities/config.h index 4979a97..5782999 100644 --- a/FlippR-Driver/src/utilities/config.h +++ b/FlippR-Driver/src/utilities/config.h @@ -5,4 +5,8 @@ * Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert, Rafael Vinci, Dr. Franca Rupprecht */ +#include "../lib/easylogging/easylogging++.h" + #define INPUT_LOGGER "input_logger" + +#define INPUT_MATRIX_SIZE 8