1 #pragma once 2 3 #include <cstdint> 4 #include <string> 5 6 namespace pid_control 7 { 8 namespace ipmi 9 { 10 11 // Implement this interface to control a zone's mode or read back its status. 12 class ZoneControlInterface 13 { 14 public: 15 virtual ~ZoneControlInterface() = default; 16 17 // Reads the fan control property (either manual or failsafe) and returns an 18 // IPMI code based on success or failure of this. 19 virtual uint8_t getFanCtrlProperty(uint8_t zoneId, bool* value, 20 const std::string& property) = 0; 21 22 // Sets the fan control property (only manual mode is settable presently) 23 // and returns an IPMI code based on success or failure of this. 24 virtual uint8_t setFanCtrlProperty(uint8_t zoneId, bool value, 25 const std::string& property) = 0; 26 }; 27 28 } // namespace ipmi 29 } // namespace pid_control 30