From 54b4a57f4c84ee6b6c2bb4ee349e8e1acce76bd3 Mon Sep 17 00:00:00 2001 From: Reinder Feenstra Date: Thu, 7 Apr 2022 23:30:08 +0200 Subject: [PATCH] ecos: STOP/GO button now affects world power/run --- .../src/hardware/interface/ecosinterface.cpp | 13 +++++++++++- .../hardware/protocol/ecos/object/ecos.cpp | 21 ++++++++++++++++++- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/server/src/hardware/interface/ecosinterface.cpp b/server/src/hardware/interface/ecosinterface.cpp index 173e11e5..c643f80e 100644 --- a/server/src/hardware/interface/ecosinterface.cpp +++ b/server/src/hardware/interface/ecosinterface.cpp @@ -191,7 +191,18 @@ bool ECoSInterface::setOnline(bool& value, bool simulation) { status.setValueInternal(InterfaceStatus::Online); }); - + m_kernel->setOnEmergencyStop( + [this]() + { + if(contains(m_world.state.value(), WorldState::PowerOn | WorldState::Run)) + m_world.powerOff(); + }); + m_kernel->setOnGo( + [this]() + { + if(!contains(m_world.state.value(), WorldState::Run)) + m_world.run(); + }); m_kernel->setDecoderController(this); m_kernel->setInputController(this); m_kernel->setOutputController(this); diff --git a/server/src/hardware/protocol/ecos/object/ecos.cpp b/server/src/hardware/protocol/ecos/object/ecos.cpp index 09dbd214..f4caaed8 100644 --- a/server/src/hardware/protocol/ecos/object/ecos.cpp +++ b/server/src/hardware/protocol/ecos/object/ecos.cpp @@ -113,7 +113,26 @@ void ECoS::stop() void ECoS::update(std::string_view option, std::string_view value) { - if(option == Option::applicationVersion) + if(option == Option::status) + { + if(value == "STOP") + { + if(m_go != TriState::False) + { + m_go = TriState::False; + m_kernel.ecosGoChanged(m_go); + } + } + else if(value == "GO") + { + if(m_go != TriState::True) + { + m_go = TriState::True; + m_kernel.ecosGoChanged(m_go); + } + } + } + else if(option == Option::applicationVersion) { Version::fromChars(value, m_applicationVersion); }