Implements and integrates SolenoidFactory
This commit is contained in:
@@ -56,7 +56,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 src/utility/Colors.h src/output/factories/SoundFactory.cpp src/output/factories/SoundFactory.h src/output/factories/ItemFactory.cpp src/output/factories/ItemFactory.h src/output/factories/FlipperFactory.cpp src/output/factories/FlipperFactory.h src/output/factories/LampFactory.cpp src/output/factories/LampFactory.h src/output/factories/DisplayFactory.cpp src/output/factories/DisplayFactory.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 src/output/factories/SoundFactory.cpp src/output/factories/SoundFactory.h src/output/factories/ItemFactory.cpp src/output/factories/ItemFactory.h src/output/factories/FlipperFactory.cpp src/output/factories/FlipperFactory.h src/output/factories/LampFactory.cpp src/output/factories/LampFactory.h src/output/factories/DisplayFactory.cpp src/output/factories/DisplayFactory.h src/output/factories/SolenoidFactory.cpp src/output/factories/SolenoidFactory.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,6 +5,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 <output/factories/FlipperFactory.h>
|
||||||
|
#include <output/factories/SolenoidFactory.h>
|
||||||
#include "OutputDriverFactory.h"
|
#include "OutputDriverFactory.h"
|
||||||
|
|
||||||
#include "utility/LoggerFactory.h"
|
#include "utility/LoggerFactory.h"
|
||||||
@@ -38,6 +39,7 @@ std::shared_ptr<OutputDriver> get_OutputDriver(const std::string & solenoid_conf
|
|||||||
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 flippers = get_items<FlipperFactory, detail::DriverBoardPinController>(solenoid_config_path, driver_board_pin_controller);
|
auto flippers = get_items<FlipperFactory, detail::DriverBoardPinController>(solenoid_config_path, driver_board_pin_controller);
|
||||||
|
auto solenoids = get_items<SolenoidFactory, detail::DriverBoardPinController>(solenoid_config_path, driver_board_pin_controller);
|
||||||
auto lamps = get_items<LampFactory, detail::DriverBoardPinController>(lamp_config_path, driver_board_pin_controller);
|
auto lamps = get_items<LampFactory, detail::DriverBoardPinController>(lamp_config_path, driver_board_pin_controller);
|
||||||
|
|
||||||
auto sound_board_pin_controller = create_SoundBoardPinController();
|
auto sound_board_pin_controller = create_SoundBoardPinController();
|
||||||
@@ -138,7 +140,7 @@ std::map<std::string, std::shared_ptr<items::Item>> get_items(const std::string
|
|||||||
config_stream >> config_json;
|
config_stream >> config_json;
|
||||||
|
|
||||||
FactoryType factory{config_json, std::static_pointer_cast<ControllerType>(pin_controller)};
|
FactoryType factory{config_json, std::static_pointer_cast<ControllerType>(pin_controller)};
|
||||||
|
|
||||||
std::map<std::string, std::shared_ptr<items::Item>> map;
|
std::map<std::string, std::shared_ptr<items::Item>> map;
|
||||||
try{
|
try{
|
||||||
map = factory.getItemMap();
|
map = factory.getItemMap();
|
||||||
|
|||||||
@@ -17,9 +17,9 @@ namespace output
|
|||||||
|
|
||||||
class DisplayFactory : ItemFactory
|
class DisplayFactory : ItemFactory
|
||||||
{
|
{
|
||||||
public:
|
|
||||||
explicit DisplayFactory(nlohmann::json & object, std::shared_ptr<DisplayBoardPinController> pin_controller);
|
explicit DisplayFactory(nlohmann::json & object, std::shared_ptr<DisplayBoardPinController> pin_controller);
|
||||||
std::map<std::string, std::shared_ptr<items::Item>> getItemMap() override;
|
std::map<std::string, std::shared_ptr<items::Item>> getItemMap() override;
|
||||||
|
public:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -22,11 +22,11 @@ std::map<std::string, std::shared_ptr<items::Item>> FlipperFactory::getItemMap()
|
|||||||
{
|
{
|
||||||
auto flippers = this->object.at(config_path::flipper_path);
|
auto flippers = this->object.at(config_path::flipper_path);
|
||||||
std::map<std::string, std::shared_ptr<items::Item>> flipper_map;
|
std::map<std::string, std::shared_ptr<items::Item>> flipper_map;
|
||||||
for (auto lamp : flippers)
|
for (auto flipper : flippers)
|
||||||
{
|
{
|
||||||
auto name = lamp.at(config_path::item_name).get<std::string>();
|
auto name = flipper.at(config_path::item_name).get<std::string>();
|
||||||
auto address = lamp.at(config_path::item_address).get<uint8_t >();
|
auto address = flipper.at(config_path::item_address).get<uint8_t >();
|
||||||
auto extender = lamp.at(config_path::item_extender).get<std::string>();
|
auto extender = flipper.at(config_path::item_extender).get<std::string>();
|
||||||
auto pin_base = this->get_extender_pin_base(extender);
|
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);
|
auto flipper_item = std::make_shared<items::detail::Flipper>(std::static_pointer_cast<DriverBoardPinController>(this->pin_controller), address, pin_base, name);
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ namespace config_path
|
|||||||
const char sound_path[] = "sounds";
|
const char sound_path[] = "sounds";
|
||||||
|
|
||||||
const char flipper_path[] = "flippers";
|
const char flipper_path[] = "flippers";
|
||||||
|
|
||||||
|
const char solenoid_path[] = "solenoids";
|
||||||
}
|
}
|
||||||
|
|
||||||
class ItemFactory
|
class ItemFactory
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
#ifndef FLIPPR_DRIVER_LAMPFACTORY_H
|
#ifndef FLIPPR_DRIVER_LAMPFACTORY_H
|
||||||
#define FLIPPR_DRIVER_LAMPFACTORY_H
|
#define FLIPPR_DRIVER_LAMPFACTORY_H
|
||||||
|
|
||||||
#include <output/DriverBoardPinController.h>
|
#include "output/DriverBoardPinController.h"
|
||||||
#include "ItemFactory.h"
|
#include "ItemFactory.h"
|
||||||
|
|
||||||
namespace flippR_driver
|
namespace flippR_driver
|
||||||
|
|||||||
50
FlippR-Driver/src/output/factories/SolenoidFactory.cpp
Normal file
50
FlippR-Driver/src/output/factories/SolenoidFactory.cpp
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
/*
|
||||||
|
* SolenoidFactory.cpp
|
||||||
|
*
|
||||||
|
* Created on: January 6, 2020
|
||||||
|
* Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "output/items/detail/Solenoid.h"
|
||||||
|
#include "SolenoidFactory.h"
|
||||||
|
|
||||||
|
namespace flippR_driver
|
||||||
|
{
|
||||||
|
namespace output
|
||||||
|
{
|
||||||
|
|
||||||
|
SolenoidFactory::SolenoidFactory(nlohmann::json &object, std::shared_ptr<DriverBoardPinController> pin_controller) :
|
||||||
|
ItemFactory{object, pin_controller}
|
||||||
|
{
|
||||||
|
if (object.find(config_path::deactivation_time) != object.end())
|
||||||
|
{
|
||||||
|
this->deactivation_time = object.at(config_path::deactivation_time).get<uint8_t>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
std::map<std::string, std::shared_ptr<items::Item>> SolenoidFactory::getItemMap()
|
||||||
|
{
|
||||||
|
auto solenoids = this->object.at(config_path::solenoid_path);
|
||||||
|
std::map<std::string, std::shared_ptr<items::Item>> solenoid_map;
|
||||||
|
|
||||||
|
for (auto solenoid : solenoids)
|
||||||
|
{
|
||||||
|
auto name = solenoid.at(config_path::item_name).get<std::string>();
|
||||||
|
auto address = solenoid.at(config_path::item_address).get<uint8_t >();
|
||||||
|
auto extender = solenoid.at(config_path::item_extender).get<std::string>();
|
||||||
|
auto pin_base = this->get_extender_pin_base(extender);
|
||||||
|
std::chrono::milliseconds deactivation_time_chrono{this->deactivation_time};
|
||||||
|
|
||||||
|
if (solenoid.find(config_path::deactivation_time) != solenoid.end())
|
||||||
|
{
|
||||||
|
deactivation_time_chrono = std::chrono::milliseconds{solenoid.at(config_path::deactivation_time).get<uint8_t>()};
|
||||||
|
}
|
||||||
|
|
||||||
|
auto solenoid_item = std::make_shared<items::detail::Solenoid>(std::static_pointer_cast<DriverBoardPinController>(this->pin_controller), address, pin_base, name, deactivation_time_chrono);
|
||||||
|
solenoid_map.emplace(name, solenoid_item);
|
||||||
|
}
|
||||||
|
return solenoid_map;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
33
FlippR-Driver/src/output/factories/SolenoidFactory.h
Normal file
33
FlippR-Driver/src/output/factories/SolenoidFactory.h
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* SolenoidFactory.h
|
||||||
|
*
|
||||||
|
* Created on: January 6, 2020
|
||||||
|
* Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef FLIPPR_DRIVER_SOLENOIDFACTORY_H
|
||||||
|
#define FLIPPR_DRIVER_SOLENOIDFACTORY_H
|
||||||
|
|
||||||
|
#include "output/DriverBoardPinController.h"
|
||||||
|
#include "ItemFactory.h"
|
||||||
|
|
||||||
|
namespace flippR_driver
|
||||||
|
{
|
||||||
|
namespace output
|
||||||
|
{
|
||||||
|
|
||||||
|
class SolenoidFactory : public ItemFactory
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit SolenoidFactory(nlohmann::json &object, std::shared_ptr<DriverBoardPinController> pin_controller);
|
||||||
|
|
||||||
|
std::map<std::string, std::shared_ptr<items::Item>> getItemMap() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
uint8_t deactivation_time;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif //FLIPPR_DRIVER_SOLENOIDFACTORY_H
|
||||||
@@ -21,7 +21,7 @@ namespace detail
|
|||||||
Solenoid::Solenoid(std::shared_ptr<DriverBoardPinController> pin_controller, const uint8_t & address, const uint8_t & pin_base, const std::string & name, const std::chrono::milliseconds & deactivation_time)
|
Solenoid::Solenoid(std::shared_ptr<DriverBoardPinController> pin_controller, const uint8_t & address, const uint8_t & pin_base, const std::string & name, const std::chrono::milliseconds & deactivation_time)
|
||||||
: detail::Item(std::move(name)), DriverBoardItem(pin_controller, address, pin_base), pin_controller(pin_controller), deactivation_time(deactivation_time)
|
: detail::Item(std::move(name)), DriverBoardItem(pin_controller, address, pin_base), pin_controller(pin_controller), deactivation_time(deactivation_time)
|
||||||
{
|
{
|
||||||
//CLOG(INFO, OUTPUT_LOGGER) << "Created solenoid " << name << " with address " << address;
|
CLOG(INFO, OUTPUT_LOGGER) << "Created solenoid " << name << " with address " << address << " and deactivation-time: " << deactivation_time.count();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Solenoid::triggerTask()
|
void Solenoid::triggerTask()
|
||||||
|
|||||||
Reference in New Issue
Block a user