#include "BoilerTankService.h" #include "DigitalOutput.h" #include "TempInput.h" BoilerTankService::BoilerTankService(BoilerTankState* mBoilerTank) : m_boilerTank(mBoilerTank) { } void BoilerTankService::loop() { if (m_boilerTank->mode == BoilerTankState::Auto) { if (!m_boilerTank->relay->isEnabled() && m_boilerTank->input->getValue() != TEMP_T_INVALID && m_boilerTank->setting != TEMP_T_INVALID && m_boilerTank->input->getValue() <= m_boilerTank->setting - m_boilerTank->tempTrigger) { m_boilerTank->relay->setEnabled(true); } else if (m_boilerTank->relay->isEnabled() && ( m_boilerTank->input->getValue() == TEMP_T_INVALID || m_boilerTank->setting == TEMP_T_INVALID || m_boilerTank->input->getValue() >= m_boilerTank->setting) ) { m_boilerTank->relay->setEnabled(false); } } else if (m_boilerTank->mode == BoilerTankState::On) { if (!m_boilerTank->relay->isEnabled()) { m_boilerTank->relay->setEnabled(true); } } else if (m_boilerTank->mode == BoilerTankState::Off) { if (m_boilerTank->relay->isEnabled()) { m_boilerTank->relay->setEnabled(false); } } }