diff --git a/FlippR-Driver/src/input/InputDriverFactory.cpp b/FlippR-Driver/src/input/InputDriverFactory.cpp index 6faee93..b761c31 100644 --- a/FlippR-Driver/src/input/InputDriverFactory.cpp +++ b/FlippR-Driver/src/input/InputDriverFactory.cpp @@ -22,54 +22,53 @@ namespace FlippR_Driver { namespace Input { +std::shared_ptr InputDriverFactory::get_InputDriver(std::istream &input_config_stream, std::istream &matrix_config_stream) +{ + LoggerFactory::CreateInputLogger(); - std::shared_ptr - InputDriverFactory::get_InputDriver(std::istream &input_config_stream, std::istream &matrix_config_stream) - { - LoggerFactory::CreateInputLogger(); + IBlockingQueue *event_queue = new BlockingQueue; - IBlockingQueue *event_queue = new BlockingQueue; + json matrix_config; + matrix_config_stream >> matrix_config; - json matrix_config; - matrix_config_stream >> matrix_config; + std::map> address_event_map; + std::map> name_event_map; + create_input_events(matrix_config, address_event_map, name_event_map); - std::map> address_event_map; - std::map> name_event_map; - create_input_events(matrix_config, address_event_map, name_event_map); + std::shared_ptr event_notifier(new EventNotifier(event_queue)); + std::unique_ptr input_gpio_interface(new InputGPIOInterface(input_config_stream)); + std::unique_ptr detector( + new Detector(std::move(input_gpio_interface), address_event_map, event_notifier)); - std::shared_ptr event_notifier(new EventNotifier(event_queue)); - std::unique_ptr input_gpio_interface(new InputGPIOInterface(input_config_stream)); - std::unique_ptr detector( - new Detector(std::move(input_gpio_interface), address_event_map, event_notifier)); - - return std::shared_ptr(new InputDriver(event_notifier, std::move(detector), name_event_map)); - } + return std::shared_ptr(new InputDriver(event_notifier, std::move(detector), name_event_map)); +} - void - InputDriverFactory::create_input_events(json matrix_config, std::map>& address_event_map, +void InputDriverFactory::create_input_events(json matrix_config, std::map>& address_event_map, std::map>& name_event_map) +{ + auto& event_array = matrix_config.at("input_matrix"); + for (auto &json_event : event_array) { - auto& event_array = matrix_config.at("input_matrix"); - for (auto &json_event : event_array) + + try { + std::string name = json_event.at("name"); + char address = json_event.at("address").get(); + int priority = json_event.at("priority").get(); - try - { - std::string name = json_event.at("name"); - char address = json_event.at("address").get(); - int priority = json_event.at("priority").get(); + std::shared_ptr event_ptr(new Event(address, priority, name)); - std::shared_ptr event_ptr(new Event(address, priority, name)); - - address_event_map.emplace(address, event_ptr); - name_event_map.emplace(name, event_ptr); - } - catch (json::exception &e) { - CLOG(ERROR, INPUT_LOGGER) << "Matrix config-file corrupted: " << e.what(); - exit(EXIT_FAILURE); - } + address_event_map.emplace(address, event_ptr); + name_event_map.emplace(name, event_ptr); + } + catch (json::exception &e) + { + CLOG(ERROR, INPUT_LOGGER) << "Matrix config-file corrupted: " << e.what(); + exit(EXIT_FAILURE); } } } + +} } \ No newline at end of file