1 #pragma once 2 3 #include "pid/zone_interface.hpp" 4 5 #include <boost/asio/steady_timer.hpp> 6 7 namespace pid_control 8 { 9 10 /** 11 * Main pid control loop for a given zone. 12 * This function calls itself indefinitely in an async loop to calculate 13 * fan outputs based on thermal inputs. 14 * 15 * @param[in] zone - ptr to the ZoneInterface implementation for this loop. 16 * @param[in] timer - boost timer used for async callback. 17 * @param[in] isCanceling - bool ptr to indicate whether pidControlLoop is being 18 * canceled. 19 * @param[in] first - boolean to denote if initialization needs to be run. 20 * @param[in] cycleCnt - loop timer counter. 21 */ 22 void pidControlLoop(std::shared_ptr<ZoneInterface> zone, 23 std::shared_ptr<boost::asio::steady_timer> timer, 24 const bool* isCanceling, bool first = true, 25 uint64_t cycleCnt = 0); 26 27 } // namespace pid_control 28