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