Implements and integrates FlipperFactory
This commit is contained in:
@@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
#include <output/factories/LampFactory.h>
|
#include <output/factories/LampFactory.h>
|
||||||
#include <output/factories/SoundFactory.h>
|
#include <output/factories/SoundFactory.h>
|
||||||
|
#include <output/factories/FlipperFactory.h>
|
||||||
#include "OutputDriverFactory.h"
|
#include "OutputDriverFactory.h"
|
||||||
|
|
||||||
#include "utility/LoggerFactory.h"
|
#include "utility/LoggerFactory.h"
|
||||||
@@ -49,8 +50,16 @@ std::shared_ptr<OutputDriver> get_OutputDriver(std::istream& solenoid_config,
|
|||||||
auto output_pin_mutex = std::make_shared<std::mutex>();
|
auto output_pin_mutex = std::make_shared<std::mutex>();
|
||||||
std::shared_ptr<DriverBoardPinController> driver_board_pin_controller(new detail::DriverBoardPinController(output_pin_mutex));
|
std::shared_ptr<DriverBoardPinController> driver_board_pin_controller(new detail::DriverBoardPinController(output_pin_mutex));
|
||||||
|
|
||||||
/* auto solenoids = create_solenoids(driver_board_pin_controller);
|
FlipperFactory flipper_factory{config::solenoids, driver_board_pin_controller};
|
||||||
auto flippers = create_flippers(driver_board_pin_controller);*/
|
try
|
||||||
|
{
|
||||||
|
auto flippers = flipper_factory.getItemMap();
|
||||||
|
}
|
||||||
|
catch(json::exception &e)
|
||||||
|
{
|
||||||
|
CLOG(INFO, OUTPUT_LOGGER) << "File " << "solenoid_config.json" << " seems to be corrupted: " << ": " << e.what();
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
LampFactory lamp_factory(config::lamps, driver_board_pin_controller);
|
LampFactory lamp_factory(config::lamps, driver_board_pin_controller);
|
||||||
try
|
try
|
||||||
@@ -58,14 +67,24 @@ std::shared_ptr<OutputDriver> get_OutputDriver(std::istream& solenoid_config,
|
|||||||
auto lamps = lamp_factory.getItemMap();
|
auto lamps = lamp_factory.getItemMap();
|
||||||
}
|
}
|
||||||
catch(json::exception &e)
|
catch(json::exception &e)
|
||||||
|
{
|
||||||
|
CLOG(INFO, OUTPUT_LOGGER) << "File " << "lamp_config.json" << " seems to be corrupted: " << ": " << e.what();
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
auto sound_board_pin_controller = create_SoundBoardPinController();
|
||||||
|
SoundFactory sound_factory{config::sounds, sound_board_pin_controller};
|
||||||
|
try
|
||||||
|
{
|
||||||
|
auto sounds = sound_factory.getItemMap();
|
||||||
|
}
|
||||||
|
catch(json::exception &e)
|
||||||
{
|
{
|
||||||
CLOG(INFO, OUTPUT_LOGGER) << "File " << "sound_config.json" << " seems to be corrupted: " << ": " << e.what();
|
CLOG(INFO, OUTPUT_LOGGER) << "File " << "sound_config.json" << " seems to be corrupted: " << ": " << e.what();
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto sound_board_pin_controller = create_SoundBoardPinController();
|
|
||||||
SoundFactory sound_factory{config::sounds, sound_board_pin_controller};
|
|
||||||
auto sounds = sound_factory.getItemMap();
|
|
||||||
|
|
||||||
/*std::unique_ptr<DisplayBoardPinController> display_board_pin_controller(new detail::DisplayBoardPinController(parse_pins_display_board(display_config)));
|
/*std::unique_ptr<DisplayBoardPinController> display_board_pin_controller(new detail::DisplayBoardPinController(parse_pins_display_board(display_config)));
|
||||||
auto displays = create_displays();
|
auto displays = create_displays();
|
||||||
|
|||||||
@@ -24,8 +24,11 @@ namespace config_path
|
|||||||
const char item_address[] = "address";
|
const char item_address[] = "address";
|
||||||
const char item_extender[] = "extender";
|
const char item_extender[] = "extender";
|
||||||
const char item_identifier[] = "id";
|
const char item_identifier[] = "id";
|
||||||
|
|
||||||
const char deactivation_time[] = "deactivation_time_milliseconds";
|
const char deactivation_time[] = "deactivation_time_milliseconds";
|
||||||
const char sound_path[] = "sounds";
|
const char sound_path[] = "sounds";
|
||||||
|
|
||||||
|
const char flipper_path[] = "flippers";
|
||||||
}
|
}
|
||||||
|
|
||||||
class Factory
|
class Factory
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <output/DriverBoardPinController.h>
|
#include <output/DriverBoardPinController.h>
|
||||||
|
#include <output/items/detail/Flipper.h>
|
||||||
#include "FlipperFactory.h"
|
#include "FlipperFactory.h"
|
||||||
|
|
||||||
namespace flippR_driver
|
namespace flippR_driver
|
||||||
@@ -15,13 +16,23 @@ namespace output
|
|||||||
|
|
||||||
FlipperFactory::FlipperFactory(nlohmann::json &object, std::shared_ptr<DriverBoardPinController> pin_controller) :
|
FlipperFactory::FlipperFactory(nlohmann::json &object, std::shared_ptr<DriverBoardPinController> pin_controller) :
|
||||||
Factory{object, pin_controller}
|
Factory{object, pin_controller}
|
||||||
{
|
{}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
std::map<std::string, std::shared_ptr<items::Item>> FlipperFactory::getItemMap()
|
std::map<std::string, std::shared_ptr<items::Item>> FlipperFactory::getItemMap()
|
||||||
{
|
{
|
||||||
return std::map<std::string, std::shared_ptr<items::Item>>();
|
auto flippers = this->object.at(config_path::flipper_path);
|
||||||
|
std::map<std::string, std::shared_ptr<items::Item>> flipper_map;
|
||||||
|
for (auto lamp : flippers)
|
||||||
|
{
|
||||||
|
auto name = lamp.at(config_path::item_name).get<std::string>();
|
||||||
|
auto address = lamp.at(config_path::item_address).get<uint8_t >();
|
||||||
|
auto extender = lamp.at(config_path::item_extender).get<std::string>();
|
||||||
|
auto pin_base = this->get_extender_pin_base(extender);
|
||||||
|
|
||||||
|
auto flipper_item = std::make_shared<items::detail::Flipper>(std::static_pointer_cast<DriverBoardPinController>(this->pin_controller), address, pin_base, name);
|
||||||
|
flipper_map.emplace(name, flipper_item);
|
||||||
|
}
|
||||||
|
return flipper_map;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace detail
|
|||||||
Flipper::Flipper(std::shared_ptr<DriverBoardPinController> pin_controller, const uint8_t & address, const uint8_t & pin_base, const std::string & name) :
|
Flipper::Flipper(std::shared_ptr<DriverBoardPinController> pin_controller, const uint8_t & address, const uint8_t & pin_base, const std::string & name) :
|
||||||
Item(std::move(name)), DriverBoardItem(pin_controller, address, pin_base), pin_controller(std::move(pin_controller))
|
Item(std::move(name)), DriverBoardItem(pin_controller, address, pin_base), pin_controller(std::move(pin_controller))
|
||||||
{
|
{
|
||||||
//CLOG(INFO , OUTPUT_LOGGER) << "Created flipper \"" << name << "\" with pin-base " << int(pin_base) << " and address " << int(address);
|
CLOG(INFO , OUTPUT_LOGGER) << "Created flipper \"" << name << "\" with pin-base " << int(pin_base) << " and address " << int(address);
|
||||||
}
|
}
|
||||||
|
|
||||||
Flipper::~Flipper()
|
Flipper::~Flipper()
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace detail
|
|||||||
Sound::Sound(std::shared_ptr<SoundBoardPinController> pin_controller, const uint8_t & address, const uint8_t & pin_base, const std::string & name, const std::chrono::milliseconds & deactivation_time, const u_int id)
|
Sound::Sound(std::shared_ptr<SoundBoardPinController> pin_controller, const uint8_t & address, const uint8_t & pin_base, const std::string & name, const std::chrono::milliseconds & deactivation_time, const u_int id)
|
||||||
: detail::Item(std::move(name)), DriverBoardItem(pin_controller, address, pin_base), pin_controller(std::move(pin_controller)), deactivation_time(deactivation_time), id(id)
|
: detail::Item(std::move(name)), DriverBoardItem(pin_controller, address, pin_base), pin_controller(std::move(pin_controller)), deactivation_time(deactivation_time), id(id)
|
||||||
{
|
{
|
||||||
CLOG(INFO , OUTPUT_LOGGER) << "Created sound " << id << " \"" << name << "\" with pin-base " << int(pin_base) << " and address " << int(address) << ". Deactivation time is: " << deactivation_time.count();
|
//CLOG(INFO , OUTPUT_LOGGER) << "Created sound " << id << " \"" << name << "\" with pin-base " << int(pin_base) << " and address " << int(address) << ". Deactivation time is: " << deactivation_time.count();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Sound::play()
|
void Sound::play()
|
||||||
|
|||||||
Reference in New Issue
Block a user