Merge branch 'master' of https://github.com/swinginbird/flippr-code
This commit is contained in:
@@ -75,7 +75,7 @@ file(GLOB_RECURSE SOURCES src/*.cpp)
|
|||||||
if(BUILD_SHARED_LIB)
|
if(BUILD_SHARED_LIB)
|
||||||
add_library(${PROJECT_NAME} SHARED ${SOURCES})
|
add_library(${PROJECT_NAME} SHARED ${SOURCES})
|
||||||
else()
|
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)
|
endif(BUILD_SHARED_LIB)
|
||||||
|
|
||||||
target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/src)
|
target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/src)
|
||||||
|
|||||||
@@ -5,12 +5,36 @@
|
|||||||
#include "OutputInterpreter.h"
|
#include "OutputInterpreter.h"
|
||||||
|
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
OutputInterpreter::OutputInterpreter(std::string output_pin_config_file, std::string output_lamp_config_file,
|
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_solenoid_config_file, std::string output_sound_config_file,
|
||||||
std::string output_display_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);
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
@@ -13,12 +13,12 @@
|
|||||||
|
|
||||||
namespace flippR_driver
|
namespace flippR_driver
|
||||||
{
|
{
|
||||||
std::shared_ptr<input::InputDriver> get_InputDriver(const std::istream& input_config_stream, const std::istream& matrix_config_stream);
|
std::shared_ptr<input::InputDriver> get_InputDriver(std::istream& input_config_stream, std::istream& matrix_config_stream);
|
||||||
std::shared_ptr<output::OutputDriver> get_OutputDriver(const std::istream &output_pin_config,
|
std::shared_ptr<output::OutputDriver> get_OutputDriver(std::istream& output_pin_config,
|
||||||
const std::istream &lamp_config,
|
std::istream& lamp_config,
|
||||||
const std::istream &solenoid_config,
|
std::istream& solenoid_config,
|
||||||
const std::istream &sound_config,
|
std::istream& sound_config,
|
||||||
const std::istream &display_config);
|
std::istream& display_config);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif //flippR_driver_DRIVERFACTORY_H
|
#endif //flippR_driver_DRIVERFACTORY_H
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
#include "output/OutputRequestHandlerFactory.h"
|
#include "output/OutputRequestHandlerFactory.h"
|
||||||
#include "input/InputSocketHandlerFactory.h"
|
#include "input/InputSocketHandlerFactory.h"
|
||||||
#include "DriverFactory.h"
|
#include "DriverFactory.h"
|
||||||
|
#include "utility/Colors.h"
|
||||||
|
|
||||||
#include <Poco/Net/SocketAddress.h>
|
#include <Poco/Net/SocketAddress.h>
|
||||||
#include <Poco/Net/ServerSocket.h>
|
#include <Poco/Net/ServerSocket.h>
|
||||||
@@ -18,6 +19,8 @@
|
|||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
{
|
{
|
||||||
|
std::cout << FGRN("Starting FlippR-Server ... ") << std::endl;
|
||||||
|
|
||||||
flippR_driver::networking::FlippRServer app;
|
flippR_driver::networking::FlippRServer app;
|
||||||
return app.run(argc, argv);
|
return app.run(argc, argv);
|
||||||
}
|
}
|
||||||
@@ -50,22 +53,28 @@ void FlippRServer::parse_server_config_file()
|
|||||||
{
|
{
|
||||||
std::ifstream config;
|
std::ifstream config;
|
||||||
|
|
||||||
|
Parser parser;
|
||||||
|
Object::Ptr json;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
config.open("server_config.json");
|
config.open("server_config.json");
|
||||||
|
json = parser.parse(config).extract<Object::Ptr>();
|
||||||
}
|
}
|
||||||
catch(const std::exception e)
|
catch(const std::exception e)
|
||||||
{
|
{
|
||||||
logger().information("No config file specified.");
|
logger().information(FCYN("server_config.json not specified!"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Parser parser;
|
|
||||||
Object::Ptr json = parser.parse(config).extract<Object::Ptr>();
|
logger().information(FCYN("Parsing server_config.json..."));
|
||||||
|
|
||||||
for(auto &config_json : json->getNames())
|
for(auto &config_json : json->getNames())
|
||||||
{
|
{
|
||||||
handle_config_file(config_json, json->get(config_json));
|
handle_config_file(config_json, json->get(config_json));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
config.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -106,7 +115,6 @@ void FlippRServer::initialize_output_driver()
|
|||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
//todo linking errors
|
|
||||||
this->output_driver = flippR_driver::get_OutputDriver(output_pin_config_stream,
|
this->output_driver = flippR_driver::get_OutputDriver(output_pin_config_stream,
|
||||||
lamp_config_stream,
|
lamp_config_stream,
|
||||||
solenoid_config_stream,
|
solenoid_config_stream,
|
||||||
@@ -130,8 +138,6 @@ void FlippRServer::initialize_input_driver()
|
|||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//todo linking errors
|
|
||||||
this->input_driver = flippR_driver::get_InputDriver(input_config_stream, matrix_config_stream);
|
this->input_driver = flippR_driver::get_InputDriver(input_config_stream, matrix_config_stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,11 +14,11 @@ namespace flippR_driver
|
|||||||
return input::InputDriverFactory::get_InputDriver(input_config_stream, matrix_config_stream);
|
return input::InputDriverFactory::get_InputDriver(input_config_stream, matrix_config_stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<output::OutputDriver> get_OutputDriver(std::istream &output_pin_config,
|
std::shared_ptr<output::OutputDriver> get_OutputDriver(std::istream& output_pin_config,
|
||||||
std::istream &lamp_config,
|
std::istream& lamp_config,
|
||||||
std::istream &solenoid_config,
|
std::istream& solenoid_config,
|
||||||
std::istream &sound_config,
|
std::istream& sound_config,
|
||||||
std::istream &display_config)
|
std::istream& display_config)
|
||||||
{
|
{
|
||||||
return output::OutputDriverFactory::get_OutputDriver(output_pin_config, lamp_config, solenoid_config, sound_config, display_config);
|
return output::OutputDriverFactory::get_OutputDriver(output_pin_config, lamp_config, solenoid_config, sound_config, display_config);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,11 +2,12 @@
|
|||||||
// Created by rhetenor on 04.10.18.
|
// Created by rhetenor on 04.10.18.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#include "OutputDriverFactory.h"
|
||||||
|
|
||||||
|
|
||||||
#include <boost/range/algorithm/copy.hpp>
|
#include <boost/range/algorithm/copy.hpp>
|
||||||
#include <boost/range/adaptor/map.hpp>
|
#include <boost/range/adaptor/map.hpp>
|
||||||
|
|
||||||
#include "OutputDriverFactory.h"
|
|
||||||
|
|
||||||
#include "utility/LoggerFactory.h"
|
#include "utility/LoggerFactory.h"
|
||||||
|
|
||||||
#include "output/detail/OutputDriver.h"
|
#include "output/detail/OutputDriver.h"
|
||||||
@@ -28,12 +29,14 @@ namespace output
|
|||||||
namespace OutputDriverFactory
|
namespace OutputDriverFactory
|
||||||
{
|
{
|
||||||
|
|
||||||
namespace
|
|
||||||
{
|
|
||||||
|
|
||||||
using namespace nlohmann;
|
using namespace nlohmann;
|
||||||
|
|
||||||
std::shared_ptr<OutputDriver> 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<OutputDriver> 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();
|
utility::LoggerFactory::CreateOutputLogger();
|
||||||
|
|
||||||
@@ -422,4 +425,3 @@ std::map<uint8_t, std::shared_ptr<items::Display>> map_displays(const std::vecto
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
@@ -23,32 +23,34 @@ namespace output
|
|||||||
{
|
{
|
||||||
namespace OutputDriverFactory
|
namespace OutputDriverFactory
|
||||||
{
|
{
|
||||||
std::shared_ptr<OutputDriver> 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<OutputDriver> 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<std::string, std::shared_ptr<items::Solenoid>> create_solenoids(std::istream &solenoid_config, std::shared_ptr<DriverBoardPinController> &pin_controller);
|
|
||||||
std::shared_ptr<items::detail::Solenoid> create_solenoid(nlohmann::json &solenoid_json, std::shared_ptr<DriverBoardPinController> &pin_controller, std::chrono::milliseconds &deactivation_time);
|
|
||||||
|
|
||||||
std::map<std::string, std::shared_ptr<items::Lamp>> create_lamps(std::istream &lamp_config, std::shared_ptr<DriverBoardPinController> &pin_controller);
|
std::map<std::string, std::shared_ptr<items::Solenoid>> create_solenoids(std::istream &solenoid_config, std::shared_ptr<DriverBoardPinController> &pin_controller);
|
||||||
std::shared_ptr<items::detail::Lamp> create_lamp(nlohmann::json &lamp_json, std::shared_ptr<DriverBoardPinController> &pin_controller);
|
std::shared_ptr<items::detail::Solenoid> create_solenoid(nlohmann::json &solenoid_json, std::shared_ptr<DriverBoardPinController> &pin_controller, std::chrono::milliseconds &deactivation_time);
|
||||||
|
|
||||||
std::map<std::string, std::shared_ptr<items::Flipper>> create_flippers(std::istream &solenoid_config, std::shared_ptr<DriverBoardPinController> &pin_controller);
|
std::map<std::string, std::shared_ptr<items::Lamp>> create_lamps(std::istream &lamp_config, std::shared_ptr<DriverBoardPinController> &pin_controller);
|
||||||
std::shared_ptr<items::detail::Flipper> create_flipper(nlohmann::json &flipper_json, std::shared_ptr<DriverBoardPinController> &pin_controller);
|
std::shared_ptr<items::detail::Lamp> create_lamp(nlohmann::json &lamp_json, std::shared_ptr<DriverBoardPinController> &pin_controller);
|
||||||
|
|
||||||
std::map<std::string, std::shared_ptr<items::Sound>> create_sounds(std::istream &sound_config, std::shared_ptr<SoundBoardPinController> &pin_controller);
|
std::map<std::string, std::shared_ptr<items::Flipper>> create_flippers(std::istream &solenoid_config, std::shared_ptr<DriverBoardPinController> &pin_controller);
|
||||||
std::shared_ptr<items::detail::Sound> create_sound(nlohmann::json &sound_json, std::shared_ptr<SoundBoardPinController> &pin_controller, std::chrono::milliseconds &deactivation_time);
|
std::shared_ptr<items::detail::Flipper> create_flipper(nlohmann::json &flipper_json, std::shared_ptr<DriverBoardPinController> &pin_controller);
|
||||||
|
|
||||||
std::chrono::milliseconds get_deactivation_time(nlohmann::json &json);
|
std::map<std::string, std::shared_ptr<items::Sound>> create_sounds(std::istream &sound_config, std::shared_ptr<SoundBoardPinController> &pin_controller);
|
||||||
|
std::shared_ptr<items::detail::Sound> create_sound(nlohmann::json &sound_json, std::shared_ptr<SoundBoardPinController> &pin_controller, std::chrono::milliseconds &deactivation_time);
|
||||||
|
|
||||||
std::vector<std::shared_ptr<items::OutputDisplay>> create_displays(std::istream &display_config);
|
std::chrono::milliseconds get_deactivation_time(nlohmann::json &json);
|
||||||
std::map<uint8_t, std::shared_ptr<items::Display>> map_displays(const std::vector<std::shared_ptr<items::OutputDisplay>> &displays);
|
|
||||||
std::shared_ptr<items::OutputDisplay> create_display(nlohmann::json &display_json);
|
|
||||||
|
|
||||||
std::map<std::string, uint8_t> parse_pins_driver_board(nlohmann::json &driver_board_config);
|
std::vector<std::shared_ptr<items::OutputDisplay>> create_displays(std::istream &display_config);
|
||||||
std::map<std::string, uint8_t> parse_pins_sound_board(nlohmann::json &sound_board_config);
|
std::map<uint8_t, std::shared_ptr<items::Display>> map_displays(const std::vector<std::shared_ptr<items::OutputDisplay>> &displays);
|
||||||
std::map<std::string, uint8_t> parse_pins_display_board(nlohmann::json &display_board_config);
|
std::shared_ptr<items::OutputDisplay> create_display(nlohmann::json &display_json);
|
||||||
}
|
|
||||||
|
std::map<std::string, uint8_t> parse_pins_driver_board(nlohmann::json &driver_board_config);
|
||||||
|
std::map<std::string, uint8_t> parse_pins_sound_board(nlohmann::json &sound_board_config);
|
||||||
|
std::map<std::string, uint8_t> parse_pins_display_board(nlohmann::json &display_board_config);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -70,6 +70,11 @@ std::string Display::get_content() const
|
|||||||
return this->content;
|
return this->content;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint8_t Display::get_address() const
|
||||||
|
{
|
||||||
|
return this->address;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
29
FlippR-Driver/src/utility/Colors.h
Normal file
29
FlippR-Driver/src/utility/Colors.h
Normal file
@@ -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_ */
|
||||||
Reference in New Issue
Block a user