diff --git a/FlippR-Driver/cli/networking/flippR_driver_networking b/FlippR-Driver/cli/networking/flippR_driver_networking index 215d3c0..9ff0543 100755 Binary files a/FlippR-Driver/cli/networking/flippR_driver_networking and b/FlippR-Driver/cli/networking/flippR_driver_networking differ diff --git a/FlippR-Driver/cli/networking/server_config.json b/FlippR-Driver/cli/networking/server_config.json new file mode 100644 index 0000000..efe81b5 --- /dev/null +++ b/FlippR-Driver/cli/networking/server_config.json @@ -0,0 +1,9 @@ +{ + "input-config" :"../../contrib/json_example/input/Input_Pin_Config.json", + "matrix-config" :"../../contrib/json_example/input/Input_Matrix_Config.json", + "lamp-config" :"../../contrib/json_example/output/Lamp_Config.json", + "solenoid-config" :"../../contrib/json_example/output/Solenoid_Config.json", + "sound-config" :"../../contrib/json_example/output/Sound_Config.json", + "display-config" :"../../contrib/json_example/output/Display_Config.json", + "lamp-config" :"../../contrib/json_example/output/Lamp_Config.json" +} diff --git a/FlippR-Driver/contrib/json_example/output/Sound_Config.json b/FlippR-Driver/contrib/json_example/output/Sound_Config.json index 0955a3d..67b236c 100644 --- a/FlippR-Driver/contrib/json_example/output/Sound_Config.json +++ b/FlippR-Driver/contrib/json_example/output/Sound_Config.json @@ -344,6 +344,6 @@ "address" : "76", "description" : "speech 1: \"you're good! but i'm still the champ!\"", "extender" : "extender_0" - }, + } ] } diff --git a/FlippR-Driver/networking/FlippRServer.cpp b/FlippR-Driver/networking/FlippRServer.cpp index fc1916e..8f176d1 100644 --- a/FlippR-Driver/networking/FlippRServer.cpp +++ b/FlippR-Driver/networking/FlippRServer.cpp @@ -128,10 +128,10 @@ void FlippRServer::initialize_output_driver() exit(EXIT_FAILURE); } - this->output_driver = flippR_driver::get_OutputDriver(lamp_config_stream, - solenoid_config_stream, - sound_config_stream, - display_config_stream); + this->output_driver = flippR_driver::get_OutputDriver(solenoid_config_stream, + lamp_config_stream, + sound_config_stream, + display_config_stream); } void FlippRServer::initialize_input_driver() @@ -155,10 +155,20 @@ void FlippRServer::initialize_input_driver() int FlippRServer::main(const std::vector& args) { - if(!help_requested) - { - waitForTerminationRequest(); - } + if(help_requested) + return Application::EXIT_OK; + + std::unique_ptr output_server(this->build_output_server()); + output_server->start(); + + std::unique_ptr input_server(this->build_input_server()); + + logger().information("Server running!"); + + waitForTerminationRequest(); + this->output_driver->deactivate_all_lamps(); + this->output_driver->deactivate_displays(); + output_server->stop(); return Application::EXIT_OK; } diff --git a/FlippR-Driver/src/DriverFactory.cpp b/FlippR-Driver/src/DriverFactory.cpp index 291e3ec..80fe739 100644 --- a/FlippR-Driver/src/DriverFactory.cpp +++ b/FlippR-Driver/src/DriverFactory.cpp @@ -4,6 +4,8 @@ #include "DriverFactory.h" +#include "utility/LoggerFactory.h" + #include "input/InputDriverFactory.h" #include "output/OutputDriverFactory.h" diff --git a/FlippR-Driver/src/PinController.cpp b/FlippR-Driver/src/PinController.cpp index 69b1dd9..fe1146a 100644 --- a/FlippR-Driver/src/PinController.cpp +++ b/FlippR-Driver/src/PinController.cpp @@ -8,12 +8,12 @@ #include "PinController.h" #include "utility/config.h" - +#define NOT_PI #ifndef NOT_PI #include "wiringPi/wiringPi.h" #include "wiringPi/mcp23017.h" #endif - + #ifdef NOT_PI #include "utility/wiringPiTesting.hpp" #endif diff --git a/FlippR-Driver/src/output/OutputDriverFactory.cpp b/FlippR-Driver/src/output/OutputDriverFactory.cpp index 89d4354..cb72de6 100644 --- a/FlippR-Driver/src/output/OutputDriverFactory.cpp +++ b/FlippR-Driver/src/output/OutputDriverFactory.cpp @@ -314,7 +314,6 @@ json get_element(const std::string & name, json & object, const std::string & fi try { sub_object = object.at(name); - return sub_object; } catch(json::exception &e) { @@ -322,21 +321,23 @@ json get_element(const std::string & name, json & object, const std::string & fi exit(EXIT_FAILURE); } + return sub_object; } template type get_value(const std::string & name, json & object, const std::string & file_name) { + type element; try { - type element = object.at(name).get(); - return element; + element = object.at(name).get(); } catch(json::exception &e) { CLOG(ERROR, OUTPUT_LOGGER) << "File " << file_name << " seems to be corrupted at " << name << ": " << e.what(); exit(EXIT_FAILURE); } + return element; } }