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