diff --git a/FlippR-Driver/cli/CMakeLists.txt b/FlippR-Driver/cli/CMakeLists.txt index 11e680b..0611739 100644 --- a/FlippR-Driver/cli/CMakeLists.txt +++ b/FlippR-Driver/cli/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.6.2) project(FlippR_Driver_CLI) set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/${OUTPUT_PATH}/cli) -add_executable(${PROJECT_NAME} main.cpp) +add_executable(${PROJECT_NAME} main.cpp PrintHandler.cpp) target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/include) target_link_libraries(${PROJECT_NAME} PRIVATE FlippR-Driver) diff --git a/FlippR-Driver/cli/PrintHandler.cpp b/FlippR-Driver/cli/PrintHandler.cpp new file mode 100644 index 0000000..fc8e102 --- /dev/null +++ b/FlippR-Driver/cli/PrintHandler.cpp @@ -0,0 +1,11 @@ +// +// Created by rhetenor on 13.09.18. +// + +#include "PrintHandler.h" +#include + +void PrintHandler::handle(FlippR_Driver::Input::Event &event) +{ + std::cout << "Event " << event.name << " (" << event.address << ") occured!"; +} \ No newline at end of file diff --git a/FlippR-Driver/cli/PrintHandler.h b/FlippR-Driver/cli/PrintHandler.h new file mode 100644 index 0000000..ff9d759 --- /dev/null +++ b/FlippR-Driver/cli/PrintHandler.h @@ -0,0 +1,17 @@ +// +// Created by rhetenor on 13.09.18. +// + +#ifndef FLIPPR_DRIVER_PRINTHANDLER_H +#define FLIPPR_DRIVER_PRINTHANDLER_H + +#include "IEventHandler.h" + +class PrintHandler : public IEventHandler +{ +public: + virtual void handle(FlippR_Driver::Input::Event& event); +}; + + +#endif //FLIPPR_DRIVER_PRINTHANDLER_H diff --git a/FlippR-Driver/cli/main.cpp b/FlippR-Driver/cli/main.cpp index 0e2e8d8..82b8acf 100644 --- a/FlippR-Driver/cli/main.cpp +++ b/FlippR-Driver/cli/main.cpp @@ -4,18 +4,30 @@ #include #include #include +#include #include "DriverFactory.h" #include "IInputDriver.h" +#include "PrintHandler.h" + using namespace FlippR_Driver; +void siginthandler(int param) +{ + printf("Caught SIGINT... aborting!\n"); + exit(1); +} + int main (int argc, char *argv[]) { if(argc != 3) { std::cout << "Usage: " << argv[0] << " "; } + + signal(SIGINT, siginthandler); + std::string input_config_file = argv[1]; std::string matrix_config_file = argv[2]; @@ -29,9 +41,16 @@ int main (int argc, char *argv[]) catch(const std::exception& e) { std::cout << e.what(); - exit(1); + exit(2); } std::shared_ptr driver = FlippR_Driver::get_InputDriver(input_config, matrix_config); + PrintHandler* print_handler = new PrintHandler(); + + driver->register_event_handler(print_handler); + + while(1); + + return 0; } diff --git a/FlippR-Driver/include/Event.h b/FlippR-Driver/include/Event.h index b2f4959..cea1296 100644 --- a/FlippR-Driver/include/Event.h +++ b/FlippR-Driver/include/Event.h @@ -26,12 +26,11 @@ public: return left.priority < right.priority; } -private: - char address; public: - int priority; std::string name; + char address; + int priority; }; bool operator==(const Event& left, const Event& right);