From 88270082c465371437136f2dd9ca70f11d9160b2 Mon Sep 17 00:00:00 2001 From: Johannes Wendel Date: Tue, 18 Jun 2019 14:54:09 +0200 Subject: [PATCH 1/2] now compiling --- FlippR-Driver/cli/OutputInterpreter.cpp | 30 ++++++++++++-- FlippR-Driver/include/DriverFactory.h | 12 +++--- FlippR-Driver/src/DriverFactory.cpp | 10 ++--- .../src/output/OutputDriverFactory.cpp | 14 ++++--- .../src/output/OutputDriverFactory.h | 40 ++++++++++--------- .../src/output/items/detail/Display.cpp | 5 +++ 6 files changed, 72 insertions(+), 39 deletions(-) diff --git a/FlippR-Driver/cli/OutputInterpreter.cpp b/FlippR-Driver/cli/OutputInterpreter.cpp index 46a0c4a..cc20edf 100644 --- a/FlippR-Driver/cli/OutputInterpreter.cpp +++ b/FlippR-Driver/cli/OutputInterpreter.cpp @@ -5,12 +5,36 @@ #include "OutputInterpreter.h" #include +#include using namespace std; OutputInterpreter::OutputInterpreter(std::string output_pin_config_file, std::string output_lamp_config_file, std::string output_solenoid_config_file, std::string output_sound_config_file, std::string output_display_config_file) - : output_driver(flippR_driver::get_OutputDriver(ifstream(output_pin_config_file), ifstream(output_lamp_config_file), - ifstream(output_solenoid_config_file), ifstream(output_sound_config_file), ifstream(output_display_config_file))) -{} +{ + std::ifstream output_pin_config_stream; + std::ifstream lamp_config_stream; + std::ifstream solenoid_config_stream; + std::ifstream sound_config_stream; + std::ifstream display_config_stream; + + try + { + output_pin_config_stream.open(output_pin_config_file); + lamp_config_stream.open(output_lamp_config_file); + solenoid_config_stream.open(output_solenoid_config_file); + sound_config_stream.open(output_sound_config_file); + display_config_stream.open(output_display_config_file); + } + catch(const std::exception& e) + { + cerr << e.what(); + exit(EXIT_FAILURE); + } + output_driver = flippR_driver::get_OutputDriver(output_pin_config_stream, lamp_config_stream, + solenoid_config_stream, + sound_config_stream, + display_config_stream); + +} diff --git a/FlippR-Driver/include/DriverFactory.h b/FlippR-Driver/include/DriverFactory.h index 1a898f5..bf05658 100644 --- a/FlippR-Driver/include/DriverFactory.h +++ b/FlippR-Driver/include/DriverFactory.h @@ -13,12 +13,12 @@ namespace flippR_driver { - std::shared_ptr get_InputDriver(const std::istream& input_config_stream, const std::istream& matrix_config_stream); - std::shared_ptr get_OutputDriver(const std::istream &output_pin_config, - const std::istream &lamp_config, - const std::istream &solenoid_config, - const std::istream &sound_config, - const std::istream &display_config); + std::shared_ptr get_InputDriver(std::istream& input_config_stream, std::istream& matrix_config_stream); + std::shared_ptr get_OutputDriver(std::istream& output_pin_config, + std::istream& lamp_config, + std::istream& solenoid_config, + std::istream& sound_config, + std::istream& display_config); } #endif //flippR_driver_DRIVERFACTORY_H diff --git a/FlippR-Driver/src/DriverFactory.cpp b/FlippR-Driver/src/DriverFactory.cpp index 418250d..aaa107c 100644 --- a/FlippR-Driver/src/DriverFactory.cpp +++ b/FlippR-Driver/src/DriverFactory.cpp @@ -14,11 +14,11 @@ namespace flippR_driver return input::InputDriverFactory::get_InputDriver(input_config_stream, matrix_config_stream); } - std::shared_ptr get_OutputDriver(std::istream &output_pin_config, - std::istream &lamp_config, - std::istream &solenoid_config, - std::istream &sound_config, - std::istream &display_config) + std::shared_ptr get_OutputDriver(std::istream& output_pin_config, + std::istream& lamp_config, + std::istream& solenoid_config, + std::istream& sound_config, + std::istream& display_config) { return output::OutputDriverFactory::get_OutputDriver(output_pin_config, lamp_config, solenoid_config, sound_config, display_config); } diff --git a/FlippR-Driver/src/output/OutputDriverFactory.cpp b/FlippR-Driver/src/output/OutputDriverFactory.cpp index a759969..cefe693 100644 --- a/FlippR-Driver/src/output/OutputDriverFactory.cpp +++ b/FlippR-Driver/src/output/OutputDriverFactory.cpp @@ -2,11 +2,12 @@ // Created by rhetenor on 04.10.18. // +#include "OutputDriverFactory.h" + + #include #include -#include "OutputDriverFactory.h" - #include "utility/LoggerFactory.h" #include "output/detail/OutputDriver.h" @@ -28,12 +29,14 @@ namespace output namespace OutputDriverFactory { -namespace -{ using namespace nlohmann; -std::shared_ptr get_OutputDriver(std::istream &output_pin_config, std::istream &solenoid_config, std::istream &lamp_config, std::istream &sound_config, std::istream &display_config) +std::shared_ptr get_OutputDriver(std::istream& output_pin_config, + std::istream& solenoid_config, + std::istream& lamp_config, + std::istream& sound_config, + std::istream& display_config) { utility::LoggerFactory::CreateOutputLogger(); @@ -419,7 +422,6 @@ std::map> map_displays(const std::vecto return display_map; } -} } } } \ No newline at end of file diff --git a/FlippR-Driver/src/output/OutputDriverFactory.h b/FlippR-Driver/src/output/OutputDriverFactory.h index 4e8272f..34842dc 100644 --- a/FlippR-Driver/src/output/OutputDriverFactory.h +++ b/FlippR-Driver/src/output/OutputDriverFactory.h @@ -23,32 +23,34 @@ namespace output { namespace OutputDriverFactory { - std::shared_ptr get_OutputDriver(std::istream &output_pin_config, std::istream &solenoid_config, std::istream &lamp_config, std::istream &sound_config, std::istream &display_config); + std::shared_ptr get_OutputDriver(std::istream& output_pin_config, + std::istream& solenoid_config, + std::istream& lamp_config, + std::istream& sound_config, + std::istream& display_config); - namespace - { - std::map> create_solenoids(std::istream &solenoid_config, std::shared_ptr &pin_controller); - std::shared_ptr create_solenoid(nlohmann::json &solenoid_json, std::shared_ptr &pin_controller, std::chrono::milliseconds &deactivation_time); - std::map> create_lamps(std::istream &lamp_config, std::shared_ptr &pin_controller); - std::shared_ptr create_lamp(nlohmann::json &lamp_json, std::shared_ptr &pin_controller); + std::map> create_solenoids(std::istream &solenoid_config, std::shared_ptr &pin_controller); + std::shared_ptr create_solenoid(nlohmann::json &solenoid_json, std::shared_ptr &pin_controller, std::chrono::milliseconds &deactivation_time); - std::map> create_flippers(std::istream &solenoid_config, std::shared_ptr &pin_controller); - std::shared_ptr create_flipper(nlohmann::json &flipper_json, std::shared_ptr &pin_controller); + std::map> create_lamps(std::istream &lamp_config, std::shared_ptr &pin_controller); + std::shared_ptr create_lamp(nlohmann::json &lamp_json, std::shared_ptr &pin_controller); - std::map> create_sounds(std::istream &sound_config, std::shared_ptr &pin_controller); - std::shared_ptr create_sound(nlohmann::json &sound_json, std::shared_ptr &pin_controller, std::chrono::milliseconds &deactivation_time); + std::map> create_flippers(std::istream &solenoid_config, std::shared_ptr &pin_controller); + std::shared_ptr create_flipper(nlohmann::json &flipper_json, std::shared_ptr &pin_controller); - std::chrono::milliseconds get_deactivation_time(nlohmann::json &json); + std::map> create_sounds(std::istream &sound_config, std::shared_ptr &pin_controller); + std::shared_ptr create_sound(nlohmann::json &sound_json, std::shared_ptr &pin_controller, std::chrono::milliseconds &deactivation_time); - std::vector> create_displays(std::istream &display_config); - std::map> map_displays(const std::vector> &displays); - std::shared_ptr create_display(nlohmann::json &display_json); + std::chrono::milliseconds get_deactivation_time(nlohmann::json &json); - std::map parse_pins_driver_board(nlohmann::json &driver_board_config); - std::map parse_pins_sound_board(nlohmann::json &sound_board_config); - std::map parse_pins_display_board(nlohmann::json &display_board_config); - } + std::vector> create_displays(std::istream &display_config); + std::map> map_displays(const std::vector> &displays); + std::shared_ptr create_display(nlohmann::json &display_json); + + std::map parse_pins_driver_board(nlohmann::json &driver_board_config); + std::map parse_pins_sound_board(nlohmann::json &sound_board_config); + std::map parse_pins_display_board(nlohmann::json &display_board_config); } } } diff --git a/FlippR-Driver/src/output/items/detail/Display.cpp b/FlippR-Driver/src/output/items/detail/Display.cpp index 43e59c9..09c1a11 100644 --- a/FlippR-Driver/src/output/items/detail/Display.cpp +++ b/FlippR-Driver/src/output/items/detail/Display.cpp @@ -70,6 +70,11 @@ std::string Display::get_content() const return this->content; } +uint8_t Display::get_address() const +{ + return this->address; +} + } } } From e42851522794dc1852e8f91eb125f02a62512aac Mon Sep 17 00:00:00 2001 From: Johannes Wendel Date: Tue, 18 Jun 2019 15:16:44 +0200 Subject: [PATCH 2/2] some adaptions --- FlippR-Driver/CMakeLists.txt | 2 +- FlippR-Driver/networking/FlippRServer.cpp | 18 +++++++++----- FlippR-Driver/src/utility/Colors.h | 29 +++++++++++++++++++++++ 3 files changed, 42 insertions(+), 7 deletions(-) create mode 100644 FlippR-Driver/src/utility/Colors.h diff --git a/FlippR-Driver/CMakeLists.txt b/FlippR-Driver/CMakeLists.txt index a297a7c..9608a45 100644 --- a/FlippR-Driver/CMakeLists.txt +++ b/FlippR-Driver/CMakeLists.txt @@ -75,7 +75,7 @@ file(GLOB_RECURSE SOURCES src/*.cpp) if(BUILD_SHARED_LIB) add_library(${PROJECT_NAME} SHARED ${SOURCES}) else() - add_library(${PROJECT_NAME} STATIC ${SOURCES} cli/OutputInterpreter.cpp cli/OutputInterpreter.h src/output/items/detail/DriverBoardItem.cpp src/output/items/detail/DriverBoardItem.h include/DriverFactory.h) + add_library(${PROJECT_NAME} STATIC ${SOURCES} cli/OutputInterpreter.cpp cli/OutputInterpreter.h src/output/items/detail/DriverBoardItem.cpp src/output/items/detail/DriverBoardItem.h include/DriverFactory.h src/utility/Colors.h) endif(BUILD_SHARED_LIB) target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/src) diff --git a/FlippR-Driver/networking/FlippRServer.cpp b/FlippR-Driver/networking/FlippRServer.cpp index 761e972..592fe63 100644 --- a/FlippR-Driver/networking/FlippRServer.cpp +++ b/FlippR-Driver/networking/FlippRServer.cpp @@ -6,6 +6,7 @@ #include "output/OutputRequestHandlerFactory.h" #include "input/InputSocketHandlerFactory.h" #include "DriverFactory.h" +#include "utility/Colors.h" #include #include @@ -18,6 +19,8 @@ int main(int argc, char** argv) { + std::cout << FGRN("Starting FlippR-Server ... ") << std::endl; + flippR_driver::networking::FlippRServer app; return app.run(argc, argv); } @@ -50,22 +53,28 @@ void FlippRServer::parse_server_config_file() { std::ifstream config; + Parser parser; + Object::Ptr json; + try { config.open("server_config.json"); + json = parser.parse(config).extract(); } catch(const std::exception e) { - logger().information("No config file specified."); + logger().information(FCYN("server_config.json not specified!")); return; } - Parser parser; - Object::Ptr json = parser.parse(config).extract(); + + logger().information(FCYN("Parsing server_config.json...")); for(auto &config_json : json->getNames()) { handle_config_file(config_json, json->get(config_json)); } + + config.close(); } /** @@ -106,7 +115,6 @@ void FlippRServer::initialize_output_driver() exit(EXIT_FAILURE); } - //todo linking errors this->output_driver = flippR_driver::get_OutputDriver(output_pin_config_stream, lamp_config_stream, solenoid_config_stream, @@ -130,8 +138,6 @@ void FlippRServer::initialize_input_driver() exit(EXIT_FAILURE); } - - //todo linking errors this->input_driver = flippR_driver::get_InputDriver(input_config_stream, matrix_config_stream); } diff --git a/FlippR-Driver/src/utility/Colors.h b/FlippR-Driver/src/utility/Colors.h new file mode 100644 index 0000000..845a9bd --- /dev/null +++ b/FlippR-Driver/src/utility/Colors.h @@ -0,0 +1,29 @@ +// +// Created by johannes on 18.06.19. +// + +#ifndef _COLORS_ +#define _COLORS_ + +/* FOREGROUND */ +#define RST "\x1B[0m" +#define KRED "\x1B[31m" +#define KGRN "\x1B[32m" +#define KYEL "\x1B[33m" +#define KBLU "\x1B[34m" +#define KMAG "\x1B[35m" +#define KCYN "\x1B[36m" +#define KWHT "\x1B[37m" + +#define FRED(x) KRED x RST +#define FGRN(x) KGRN x RST +#define FYEL(x) KYEL x RST +#define FBLU(x) KBLU x RST +#define FMAG(x) KMAG x RST +#define FCYN(x) KCYN x RST +#define FWHT(x) KWHT x RST + +#define BOLD(x) "\x1B[1m" x RST +#define UNDL(x) "\x1B[4m" x RST + +#endif /* _COLORS_ */ \ No newline at end of file