1 #pragma once
2 
3 #include <stdint.h>
4 
5 #include <cstddef>
6 
7 // IPMI commands for Chassis net functions.
8 enum ipmi_netfn_chassis_cmds
9 {
10     IPMI_CMD_GET_CHASSIS_CAP = 0x00,
11     // Chassis Status
12     IPMI_CMD_CHASSIS_STATUS = 0x01,
13     // Chassis Control
14     IPMI_CMD_CHASSIS_CONTROL = 0x02,
15     IPMI_CMD_CHASSIS_IDENTIFY = 0x04,
16     IPMI_CMD_SET_CHASSIS_CAP = 0x05,
17     // Get capability bits
18     IPMI_CMD_SET_SYS_BOOT_OPTIONS = 0x08,
19     IPMI_CMD_GET_SYS_BOOT_OPTIONS = 0x09,
20     IPMI_CMD_GET_POH_COUNTER = 0x0F,
21 };
22 
23 // Command specific completion codes
24 enum ipmi_chassis_return_codes
25 {
26     IPMI_OK = 0x0,
27     IPMI_CC_PARM_NOT_SUPPORTED = 0x80,
28     IPMI_CC_FAIL_SET_IN_PROGRESS = 0x81,
29 };
30 
31 // Generic completion codes,
32 // see IPMI doc section 5.2
33 enum ipmi_generic_return_codes
34 {
35     IPMI_OUT_OF_SPACE = 0xC4,
36 };
37 
38 // Various Chassis operations under a single command.
39 enum ipmi_chassis_control_cmds : uint8_t
40 {
41     CMD_POWER_OFF = 0x00,
42     CMD_POWER_ON = 0x01,
43     CMD_POWER_CYCLE = 0x02,
44     CMD_HARD_RESET = 0x03,
45     CMD_PULSE_DIAGNOSTIC_INTR = 0x04,
46     CMD_SOFT_OFF_VIA_OVER_TEMP = 0x05,
47 };
48 enum class BootOptionParameter : size_t
49 {
50     setInProgress = 0x0,
51     bootFlagValidClr = 0x3,
52     bootInfo = 0x4,
53     bootFlags = 0x5,
54     opalNetworkSettings = 0x61
55 };
56 
57 enum class BootOptionResponseSize : size_t
58 {
59     setInProgress = 3,
60     bootFlags = 5,
61     opalNetworkSettings = 50
62 };
63 
64 enum class ChassisIDState : uint8_t
65 {
66     off = 0x0,
67     temporaryOn = 0x1,
68     indefiniteOn = 0x2,
69     reserved = 0x3
70 };
71