109334bbeSPatrick Venture #pragma once 209334bbeSPatrick Venture 309334bbeSPatrick Venture #include <cstdint> 409334bbeSPatrick Venture #include <string> 509334bbeSPatrick Venture 609334bbeSPatrick Venture namespace pid_control 709334bbeSPatrick Venture { 809334bbeSPatrick Venture namespace ipmi 909334bbeSPatrick Venture { 1009334bbeSPatrick Venture 1109334bbeSPatrick Venture // Implement this interface to control a zone's mode or read back its status. 1209334bbeSPatrick Venture class ZoneControlInterface 1309334bbeSPatrick Venture { 1409334bbeSPatrick Venture public: 15*ad971e1bSPatrick Venture virtual ~ZoneControlInterface() = default; 16*ad971e1bSPatrick Venture 1709334bbeSPatrick Venture // Reads the fan control property (either manual or failsafe) and returns an 1809334bbeSPatrick Venture // IPMI code based on success or failure of this. 1909334bbeSPatrick Venture virtual uint8_t getFanCtrlProperty(uint8_t zoneId, bool* value, 2009334bbeSPatrick Venture const std::string& property) = 0; 2109334bbeSPatrick Venture 2209334bbeSPatrick Venture // Sets the fan control property (only manual mode is settable presently) 2309334bbeSPatrick Venture // and returns an IPMI code based on success or failure of this. 2409334bbeSPatrick Venture virtual uint8_t setFanCtrlProperty(uint8_t zoneId, bool value, 2509334bbeSPatrick Venture const std::string& property) = 0; 2609334bbeSPatrick Venture }; 2709334bbeSPatrick Venture 2809334bbeSPatrick Venture } // namespace ipmi 2909334bbeSPatrick Venture } // namespace pid_control 30