#include "TempInput.h" #include "globals.h" #include "defines.h" #include "Logs.h" TempInput::TempInput(uint8_t index) : m_address{0} , m_index(index) , m_lastSensorRequestMs(0) , m_hasReadSensor(false) { } void TempInput::begin() { setValue(TEMP_T_INVALID); g_dallasTemperature.getAddress(m_address, m_index); } void TempInput::loop() { const auto& currentMs = millis(); if (currentMs - m_lastSensorRequestMs >= SENSORS_CHECK_INTERVAL) { LOG(5, "TempInput: requesting value"); m_lastSensorRequestMs = currentMs; m_hasReadSensor = false; g_dallasTemperature.requestTemperaturesByAddress(m_address); } if (currentMs - m_lastSensorRequestMs >= SENSORS_REQUEST_DELAY && !m_hasReadSensor) { LOG(5, "TempInput: reading value"); m_hasReadSensor = true; auto raw = g_dallasTemperature.getTempC(m_address); temp_t temp = TEMP_T_INVALID; if (raw != DEVICE_DISCONNECTED_C) { temp = (temp_t) (raw * 10); } setValue(temp); } else { setValue(m_lastValue); } }