/* * InputFactory.h * * Created on: Apr 5, 2018 * Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert, Rafael Vinci, Dr. Franca Rupprecht */ #ifndef INPUTFACTORY_H_ #define INPUTFACTORY_H_ #include #include "Detector.h" #include "../utilities/InputGPIOInterface.h" #include "InputEventNotifier.h" #include "../lib/json/json.hpp" using namespace nlohmann; namespace Input { class InputFactory { public: static std::shared_ptr get_detector(std::string& input_config_path, std::string& matrix_config_path) { // todo this in gpiointerface std::ifstream input_config_stream(input_config_path); json input_config; input_config << input_config_stream; std::ifstream matrix_config_stream(input_config_path); json matrix_config; matrix_config << matrix_config_stream; auto input_gpio_interface = new InputGPIOInterface(); auto input_notifier = new InputEventNotifier(); std::map input_events = create_input_events(matrix_config); return std::shared_ptr(new Detector(input_gpio_interface, input_events, input_notifier)); } private: static std::map create_input_events(json matrix_config) { std::map input_events; for(auto& key : matrix_config) { InputEvent event(matrix_config[key], key); input_events.emplace(key, event); } return input_events; } }; } #endif /* INPUTFACTORY_H_ */