deactivate solenoids on creation 2b safe
This commit is contained in:
@@ -17,12 +17,12 @@ namespace output
|
|||||||
{
|
{
|
||||||
namespace items
|
namespace items
|
||||||
{
|
{
|
||||||
// todo get name? parent calss output_item?
|
|
||||||
class Solenoid : public virtual Item
|
class Solenoid : public virtual Item
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual ~Solenoid() = default;
|
virtual ~Solenoid() = default;
|
||||||
|
|
||||||
|
virtual void deactivate() = 0;
|
||||||
virtual void trigger() = 0;
|
virtual void trigger() = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -39,6 +39,10 @@ std::shared_ptr<OutputDriver> get_OutputDriver(const std::string & solenoid_conf
|
|||||||
|
|
||||||
auto flippers = get_items<FlipperFactory, detail::DriverBoardPinController, items::Flipper>(solenoid_config_path, driver_board_pin_controller);
|
auto flippers = get_items<FlipperFactory, detail::DriverBoardPinController, items::Flipper>(solenoid_config_path, driver_board_pin_controller);
|
||||||
auto solenoids = get_items<SolenoidFactory, detail::DriverBoardPinController, items::Solenoid>(solenoid_config_path, driver_board_pin_controller);
|
auto solenoids = get_items<SolenoidFactory, detail::DriverBoardPinController, items::Solenoid>(solenoid_config_path, driver_board_pin_controller);
|
||||||
|
for(auto solenoid : solenoids) {
|
||||||
|
solenoid.second->deactivate();
|
||||||
|
}
|
||||||
|
|
||||||
auto lamps = get_items<LampFactory, detail::DriverBoardPinController, items::Lamp>(lamp_config_path, driver_board_pin_controller);
|
auto lamps = get_items<LampFactory, detail::DriverBoardPinController, items::Lamp>(lamp_config_path, driver_board_pin_controller);
|
||||||
|
|
||||||
driver_board_pin_controller->clear();
|
driver_board_pin_controller->clear();
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ Solenoid::Solenoid(std::shared_ptr<DriverBoardPinController> pin_controller, con
|
|||||||
: detail::Item(std::move(name)), DriverBoardItem(pin_controller, address), pin_controller(pin_controller), deactivation_time(deactivation_time)
|
: detail::Item(std::move(name)), DriverBoardItem(pin_controller, address), pin_controller(pin_controller), deactivation_time(deactivation_time)
|
||||||
{
|
{
|
||||||
CLOG(DEBUG, OUTPUT_LOGGER) << "Created solenoid " << name << " with address " << int{address} << " and deactivation-time: " << deactivation_time.count();
|
CLOG(DEBUG, OUTPUT_LOGGER) << "Created solenoid " << name << " with address " << int{address} << " and deactivation-time: " << deactivation_time.count();
|
||||||
this->trigger();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Solenoid::triggerTask()
|
void Solenoid::triggerTask()
|
||||||
@@ -34,6 +33,10 @@ void Solenoid::triggerTask()
|
|||||||
this->pin_controller->deactivate(*this);
|
this->pin_controller->deactivate(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Solenoid::deactivate() {
|
||||||
|
this->pin_controller->deactivate(*this);
|
||||||
|
}
|
||||||
|
|
||||||
void Solenoid::trigger()
|
void Solenoid::trigger()
|
||||||
{
|
{
|
||||||
CLOG(DEBUG, OUTPUT_LOGGER) << "Trigger Solenoid " << name << " for " << deactivation_time.count() << "ms";
|
CLOG(DEBUG, OUTPUT_LOGGER) << "Trigger Solenoid " << name << " for " << deactivation_time.count() << "ms";
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ public:
|
|||||||
Solenoid(std::shared_ptr<DriverBoardPinController> pin_controller, const uint8_t & address, const std::string & name, const std::chrono::milliseconds & deactivation_time);
|
Solenoid(std::shared_ptr<DriverBoardPinController> pin_controller, const uint8_t & address, const std::string & name, const std::chrono::milliseconds & deactivation_time);
|
||||||
~Solenoid() override = default;
|
~Solenoid() override = default;
|
||||||
|
|
||||||
|
void deactivate() override;
|
||||||
void trigger() override;
|
void trigger() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
Reference in New Issue
Block a user