// // Created by rhetenor on 04.10.18. // #include "OutputDriverFactory.h" namespace flippR_driver { namespace output { namespace OutputDriverFactory { namespace { using namespace nlohmann; std::shared_ptr createOutputGPIOInterface(std::istream &output_gpio_config) { json output_config; output_gpio_config >> output_config; return std::make_shared( parse_pins_driver_board(output_config.at("driver_board")), parse_pins_sound(output_config.at("sound_board")), parse_pins_sound(output_config.at("display_board")) ); } std::map parse_pins_driver_board(json &driver_board_config) { std::map pins_driver_board; pins_driver_board["i2c_address"] = driver_board_config.at("i2c_address").get(); pins_driver_board["pin_base"] = driver_board_config.at("pin_base").get(); pins_driver_board["data"] = driver_board_config.at("data").get(); pins_driver_board["CL"] = driver_board_config.at("CL").get(); json pin_select = driver_board_config.at("pin-select"); pins_driver_board["pin-select-A"] = pin_select.at("A").get(); pins_driver_board["pin-select-B"] = pin_select.at("B").get(); pins_driver_board["pin-select-C"] = pin_select.at("C").get(); json latch_select = driver_board_config.at("latch-select"); pins_driver_board["mux1"] = latch_select.at("mux1").get(); pins_driver_board["mux2"] = latch_select.at("mux2").get(); pins_driver_board["latch-select-A"] = latch_select.at("A").get(); pins_driver_board["latch-select-B"] = latch_select.at("B").get(); pins_driver_board["latch-select-C"] = latch_select.at("C").get(); return pins_driver_board; } std::map parse_pins_sound(json &sound_board_config) { std::map pins_sound; pins_sound["i2c_address"] = sound_board_config.at("i2c_address").get(); pins_sound["pin_base"] = sound_board_config.at("pin_base").get(); pins_sound["fire"] = sound_board_config.at("fire").get(); json sound_address = sound_board_config.at("sound_address"); pins_sound["A"] = sound_address.at("A").get(); pins_sound["B"] = sound_address.at("B").get(); pins_sound["C"] = sound_address.at("C").get(); pins_sound["D"] = sound_address.at("D").get(); pins_sound["E"] = sound_address.at("E").get(); pins_sound["F"] = sound_address.at("F").get(); pins_sound["G"] = sound_address.at("G").get(); return pins_sound; } std::map parse_pins_display(json &display_board_config) { return std::map(); } } } } }