deactivate solenoids on creation 2b safe
This commit is contained in:
@@ -17,12 +17,12 @@ namespace output
|
||||
{
|
||||
namespace items
|
||||
{
|
||||
// todo get name? parent calss output_item?
|
||||
class Solenoid : public virtual Item
|
||||
{
|
||||
public:
|
||||
virtual ~Solenoid() = default;
|
||||
|
||||
virtual void deactivate() = 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 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);
|
||||
|
||||
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)
|
||||
{
|
||||
CLOG(DEBUG, OUTPUT_LOGGER) << "Created solenoid " << name << " with address " << int{address} << " and deactivation-time: " << deactivation_time.count();
|
||||
this->trigger();
|
||||
}
|
||||
|
||||
void Solenoid::triggerTask()
|
||||
@@ -34,6 +33,10 @@ void Solenoid::triggerTask()
|
||||
this->pin_controller->deactivate(*this);
|
||||
}
|
||||
|
||||
void Solenoid::deactivate() {
|
||||
this->pin_controller->deactivate(*this);
|
||||
}
|
||||
|
||||
void Solenoid::trigger()
|
||||
{
|
||||
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() override = default;
|
||||
|
||||
void deactivate() override;
|
||||
void trigger() override;
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user