still not done with refactoring but enough for today

This commit is contained in:
Jonas Zeunert
2018-12-14 02:56:29 +01:00
parent 8e12b3f3fa
commit ff3376b9d7
12 changed files with 38 additions and 29 deletions

View File

@@ -54,7 +54,7 @@ std::shared_ptr<OutputDriver> get_OutputDriver(std::istream &output_pin_config,
boost::copy(displays | boost::adaptors::map_values, std::back_inserter(displays_vec)); boost::copy(displays | boost::adaptors::map_values, std::back_inserter(displays_vec));
std::unique_ptr<DisplayController> display_controller(new impl::DisplayController(displays_vec, std::move(display_board_pin_controller))); std::unique_ptr<DisplayController> display_controller(new impl::DisplayController(displays_vec, std::move(display_board_pin_controller)));
return std::make_shared<OutputDriver>(display_controller, solenoids, lamps, sounds, displays); return std::make_shared<impl::OutputDriver>(std::move(display_controller), solenoids, lamps, sounds, displays);
} }
std::map<std::string, uint8_t> parse_pins_driver_board(json &driver_board_config) std::map<std::string, uint8_t> parse_pins_driver_board(json &driver_board_config)
@@ -114,7 +114,7 @@ std::map<std::string, uint8_t> parse_pins_sound_board(json &sound_board_config)
return pins_sound; return pins_sound;
} }
std::map<std::string, uint8_t> parse_pins_display(json &display_board_config) std::map<std::string, uint8_t> parse_pins_display_board(json &display_board_config)
{ {
std::map<std::string, uint8_t> pins_display; std::map<std::string, uint8_t> pins_display;
try try
@@ -131,7 +131,7 @@ std::map<std::string, uint8_t> parse_pins_display(json &display_board_config)
return pins_display; return pins_display;
} }
std::map<std::string, std::shared_ptr<items::ISolenoid>> create_solenoids(std::istream &solenoid_config, std::shared_ptr<OutputPinController> output_gpio_interface) std::map<std::string, std::shared_ptr<items::ISolenoid>> create_solenoids(std::istream &solenoid_config, std::shared_ptr<DriverBoardPinController> &output_gpio_interface)
{ {
std::map<std::string, std::shared_ptr<items::ISolenoid>> solenoids; std::map<std::string, std::shared_ptr<items::ISolenoid>> solenoids;
@@ -148,7 +148,7 @@ std::map<std::string, std::shared_ptr<items::ISolenoid>> create_solenoids(std::i
return solenoids; return solenoids;
} }
std::map<std::string, std::shared_ptr<items::ILamp>> create_lamps(std::istream &lamp_config, std::shared_ptr<OutputPinController> output_gpio_interface) std::map<std::string, std::shared_ptr<items::ILamp>> create_lamps(std::istream &lamp_config, std::shared_ptr<DriverBoardPinController> &output_gpio_interface)
{ {
std::map<std::string, std::shared_ptr<items::ILamp>> lamps; std::map<std::string, std::shared_ptr<items::ILamp>> lamps;
@@ -164,7 +164,7 @@ std::map<std::string, std::shared_ptr<items::ILamp>> create_lamps(std::istream &
return lamps; return lamps;
} }
std::map<std::string, std::shared_ptr<items::ISound>> create_sounds(std::istream &sound_config, std::shared_ptr<OutputPinController> output_gpio_interface) std::map<std::string, std::shared_ptr<items::ISound>> create_sounds(std::istream &sound_config, std::shared_ptr<SoundBoardPinController> &output_gpio_interface)
{ {
std::map<std::string, std::shared_ptr<items::ISound>> sounds; std::map<std::string, std::shared_ptr<items::ISound>> sounds;
@@ -196,7 +196,7 @@ std::chrono::milliseconds get_deactivation_time(nlohmann::json &json)
} }
} }
std::shared_ptr<items::Solenoid> create_solenoid(nlohmann::json &solenoid_json, std::shared_ptr<DriverBoardPinController> &pin_controller, std::chrono::milliseconds deactivation_time) std::shared_ptr<items::Solenoid> create_solenoid(nlohmann::json &solenoid_json, std::shared_ptr<DriverBoardPinController> &pin_controller, std::chrono::milliseconds &deactivation_time)
{ {
try try
{ {
@@ -232,7 +232,7 @@ std::shared_ptr<items::Lamp> create_lamp(nlohmann::json &lamp_json, std::shared_
} }
} }
std::shared_ptr<items::Sound> create_sound(nlohmann::json &sound_json, std::shared_ptr<SoundBoardPinController> &pin_controller, std::chrono::milliseconds deactivation_time) std::shared_ptr<items::Sound> create_sound(nlohmann::json &sound_json, std::shared_ptr<SoundBoardPinController> &pin_controller, std::chrono::milliseconds &deactivation_time)
{ {
try try
{ {
@@ -247,6 +247,12 @@ std::shared_ptr<items::Sound> create_sound(nlohmann::json &sound_json, std::shar
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
} }
std::map<char, std::shared_ptr<items::IDisplay>> create_displays(std::istream &display_config)
{
std::map<char, std::shared_ptr<items::IDisplay>> displays;
return displays;
}
} }
} }

View File

@@ -26,13 +26,13 @@ namespace OutputDriverFactory
namespace namespace
{ {
std::map<std::string, std::shared_ptr<items::ISolenoid>> create_solenoids(std::istream &solenoid_config, std::shared_ptr<DriverBoardPinController> &pin_controller); std::map<std::string, std::shared_ptr<items::ISolenoid>> create_solenoids(std::istream &solenoid_config, std::shared_ptr<DriverBoardPinController> &pin_controller);
std::shared_ptr<items::Solenoid> create_solenoid(nlohmann::json &solenoid_json, std::shared_ptr<DriverBoardPinController> pin_controller, std::chrono::milliseconds deactivation_time); std::shared_ptr<items::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::ILamp>> create_lamps(std::istream &lamp_config, std::shared_ptr<DriverBoardPinController> &pin_controller); std::map<std::string, std::shared_ptr<items::ILamp>> create_lamps(std::istream &lamp_config, std::shared_ptr<DriverBoardPinController> &pin_controller);
std::shared_ptr<items::Lamp> create_lamp(nlohmann::json &lamp_json, std::shared_ptr<DriverBoardPinController> pin_controller); std::shared_ptr<items::Lamp> create_lamp(nlohmann::json &lamp_json, std::shared_ptr<DriverBoardPinController> &pin_controller);
std::map<std::string, std::shared_ptr<items::ISound>> create_sounds(std::istream &sound_config, std::shared_ptr<SoundBoardPinController> &pin_controller); std::map<std::string, std::shared_ptr<items::ISound>> create_sounds(std::istream &sound_config, std::shared_ptr<SoundBoardPinController> &pin_controller);
std::shared_ptr<items::Sound> create_sound(nlohmann::json &sound_json, std::shared_ptr<SoundBoardPinController> pin_controller, std::chrono::milliseconds deactivation_time); std::shared_ptr<items::Sound> create_sound(nlohmann::json &sound_json, std::shared_ptr<SoundBoardPinController> &pin_controller, std::chrono::milliseconds &deactivation_time);
std::chrono::milliseconds get_deactivation_time(nlohmann::json &json); std::chrono::milliseconds get_deactivation_time(nlohmann::json &json);

View File

@@ -36,7 +36,7 @@ void SoundBoardPinController::deactivate(const items::Sound &sound)
} }
void SoundBoardPinController::write_sound_address(const uint8_t address) void SoundBoardPinController::write_sound_address(const uint8_t address) const
{ {
write_pin(pins_sound.at("A"), address & 0b0000001u); write_pin(pins_sound.at("A"), address & 0b0000001u);
write_pin(pins_sound.at("B"), address & 0b0000010u); write_pin(pins_sound.at("B"), address & 0b0000010u);
@@ -47,12 +47,12 @@ void SoundBoardPinController::write_sound_address(const uint8_t address)
write_pin(pins_sound.at("G"), address & 0b1000000u); write_pin(pins_sound.at("G"), address & 0b1000000u);
} }
void SoundBoardPinController::fire_sound(const bool fire) void SoundBoardPinController::fire_sound(const bool fire) const
{ {
PinController::write_pin(pins_sound.at("fire"), fire); PinController::write_pin(pins_sound.at("fire"), fire);
} }
void SoundBoardPinController::write_pin(const uint8_t pin, const bool value) void SoundBoardPinController::write_pin(const uint8_t pin, const bool value) const
{ {
PinController::write_pin(pins_sound.at("pin_base") + pin, value); PinController::write_pin(pins_sound.at("pin_base") + pin, value);
} }

View File

@@ -29,10 +29,10 @@ public:
void deactivate(const items::Sound &sound) override; void deactivate(const items::Sound &sound) override;
private: private:
void write_sound_address(const uint8_t address); void write_sound_address(const uint8_t address) const;
void fire_sound(const bool fire); void fire_sound(const bool fire) const;
void write_pin(const uint8_t pin, const bool value); void write_pin(const uint8_t pin, const bool value) const;
private: private:
std::shared_ptr<std::mutex> output_item_mutex; std::shared_ptr<std::mutex> output_item_mutex;

View File

@@ -23,8 +23,8 @@ class IItem
public: public:
virtual ~IItem() = default; virtual ~IItem() = default;
virtual uint8_t get_address() = 0; virtual uint8_t get_address() const = 0;
virtual std::string get_name() = 0; virtual std::string get_name() const = 0;
}; };
} }

View File

@@ -16,12 +16,12 @@ Item::Item(uint8_t address, std::string name) :
address(address), name(std::move(name)) address(address), name(std::move(name))
{} {}
uint8_t Item::get_address() uint8_t Item::get_address() const
{ {
return this->address; return this->address;
} }
std::string Item::get_name() std::string Item::get_name() const
{ {
return this->name; return this->name;
} }

View File

@@ -27,8 +27,8 @@ public:
Item(uint8_t address, std::string name); Item(uint8_t address, std::string name);
~Item() override = default; ~Item() override = default;
uint8_t get_address() override; uint8_t get_address() const override;
std::string get_name() override; std::string get_name() const override;
protected: protected:
const uint8_t address; const uint8_t address;

View File

@@ -21,12 +21,12 @@ DriverBoardItem(std::move(pin_controller), address, std::move(name)), activated(
void Lamp::activate() void Lamp::activate()
{ {
pin_controller->activate(this); pin_controller->activate(*this);
} }
void Lamp::deactivate() void Lamp::deactivate()
{ {
pin_controller->deactivate(this); pin_controller->deactivate(*this);
} }
} }

View File

@@ -22,11 +22,11 @@ Solenoid::Solenoid(std::shared_ptr<DriverBoardPinController> pin_controller, uin
void Solenoid::triggerTask() void Solenoid::triggerTask()
{ {
pin_controller->activate(this); pin_controller->activate(*this);
std::this_thread::sleep_for(deactivation_time); std::this_thread::sleep_for(deactivation_time);
pin_controller->deactivate(this); pin_controller->deactivate(*this);
} }
void Solenoid::trigger() void Solenoid::trigger()

View File

@@ -27,11 +27,11 @@ void Sound::play()
void Sound::playTask() void Sound::playTask()
{ {
pin_controller->activate(this); pin_controller->activate(*this);
std::this_thread::sleep_for(deactivation_time); std::this_thread::sleep_for(deactivation_time);
pin_controller->deactivate(this); pin_controller->deactivate(*this);
} }
} }

View File

@@ -10,11 +10,12 @@
#include "input/EventHandler.h" #include "input/EventHandler.h"
#include <string> #include <string>
namespace flippR_driver namespace flippR_driver
{ {
namespace utility namespace utility
{ {
class InputSocketHandler : public SocketHandler, public EventHandler class InputSocketHandler : public SocketHandler, public input::EventHandler
{ {
public: public:
explicit InputSocketHandler(boost::asio::io_service &service, std::string socket_file = "/var/run/user/" + std::to_string(getuid()) explicit InputSocketHandler(boost::asio::io_service &service, std::string socket_file = "/var/run/user/" + std::to_string(getuid())

View File

@@ -5,6 +5,8 @@
#ifndef FLIPPR_DRIVER_OUTPUTSOCKETHANDLER_H #ifndef FLIPPR_DRIVER_OUTPUTSOCKETHANDLER_H
#define FLIPPR_DRIVER_OUTPUTSOCKETHANDLER_H #define FLIPPR_DRIVER_OUTPUTSOCKETHANDLER_H
#include "SocketHandler.h"
namespace flippR_driver namespace flippR_driver
{ {
namespace utility namespace utility