1 #include <libpldm/entity.h>
2 #include <libpldm/oem/ibm/entity.h>
3 #include <libpldm/oem/ibm/state_set.h>
4 
5 #include <cstdint>
6 #include <map>
7 #include <string>
8 
9 /** @brief PLDM OEM IBM Code Update possible state set values
10  */
11 enum pldm_oem_ibm_cu_state_set_values
12 {
13     OEM_IBM_STATE_SET_CU_START = 1,
14     OEM_IBM_STATE_SET_CU_END = 2,
15     OEM_IBM_STATE_SET_CU_FAIL = 3,
16     OEM_IBM_STATE_SET_CU_ABORT = 4,
17     OEM_IBM_STATE_SET_CU_ACCEPT = 5,
18     OEM_IBM_STATE_SET_CU_REJECT = 6,
19 };
20 
21 /** @brief PLDM OEM IBM Verification possible state set values
22  */
23 enum pldm_oem_ibm_verification_state_set_values
24 {
25     OEM_IBM_STATE_SET_VERFICATION_VALID = 0,
26     OEM_IBM_STATE_SET_VERFICATION_ENTITLEMENT_FAIL = 1,
27     OEM_IBM_STATE_SET_VERFICATION_BANNED_PLATFORM_FAIL = 2,
28     OEM_IBM_STATE_SET_VERFICATION_MIN_MIF_FAIL = 4,
29 };
30 
31 /** @brief PLDM OEM IBM system power state possible state set values
32  */
33 enum pldm_oem_ibm_sys_power_state_set_values
34 {
35     OEM_IBM_STATE_SET_SYS_PWR_STATE_RECYCLE_HARD = 1,
36 };
37 
38 /** @brief PLDM OEM IBM boot state possible state set values
39  */
40 enum pldm_oem_ibm_boot_state_set_values
41 {
42     OEM_IBM_STATE_SET_BOOT_STATE_P_SIDE = 1,
43     OEM_IBM_STATE_SET_BOOT_STATE_T_SIDE = 2,
44 };
45 
46 /** @brief Map for PLDM OEM IBM Entity Types
47  */
48 extern const std::map<uint8_t, std::string> OemIBMEntityType{
49     {PLDM_OEM_IBM_ENTITY_FIRMWARE_UPDATE, "OEM IBM Firmware Update"},
50     {PLDM_OEM_IBM_ENTITY_TPM, "OEM IBM Trusted Platform Module"}};
51 
52 /** @brief Map for PLDM OEM IBM State Sets
53  */
54 extern const std::map<uint16_t, std::string> OemIBMstateSet{
55     {PLDM_OEM_IBM_FIRMWARE_UPDATE_STATE, "OEM IBM Firmware Update State"},
56     {PLDM_OEM_IBM_BOOT_STATE, "OEM IBM Boot State"},
57     {PLDM_OEM_IBM_VERIFICATION_STATE, "OEM IBM Verification State"},
58     {PLDM_OEM_IBM_SYSTEM_POWER_STATE, "OEM IBM System Power State"}};
59 
60 /** @brief Map for PLDM OEM IBM firmware update possible state values
61  */
62 extern const std::map<uint8_t, std::string> SetOemIBMFWUpdateStateValues{
63     {OEM_IBM_STATE_SET_CU_START, "Start"},
64     {OEM_IBM_STATE_SET_CU_END, "End"},
65     {OEM_IBM_STATE_SET_CU_FAIL, "Fail"},
66     {OEM_IBM_STATE_SET_CU_ABORT, "Abort"},
67     {OEM_IBM_STATE_SET_CU_ACCEPT, "Accept"},
68     {OEM_IBM_STATE_SET_CU_REJECT, "Reject"}};
69 
70 /** @brief Map for PLDM OEM IBM verification state possible state values
71  */
72 extern const std::map<uint8_t, std::string> SetOemIBMVerStateValues{
73     {OEM_IBM_STATE_SET_VERFICATION_VALID, "Valid"},
74     {OEM_IBM_STATE_SET_VERFICATION_ENTITLEMENT_FAIL, "Entitlement Fail"},
75     {OEM_IBM_STATE_SET_VERFICATION_BANNED_PLATFORM_FAIL,
76      "Banned Platform Fail"},
77     {OEM_IBM_STATE_SET_VERFICATION_MIN_MIF_FAIL, "Minimum MIF Fail"}};
78 
79 /** @brief Map for PLDM OEM IBM systerm power state possible state values
80  */
81 extern const std::map<uint8_t, std::string> SetOemIBMSysPowerStatesValues{
82     {OEM_IBM_STATE_SET_SYS_PWR_STATE_RECYCLE_HARD, "Power Cycle Hard"}};
83 
84 /** @brief Map for PLDM OEM IBM boot state possible state values
85  */
86 extern const std::map<uint8_t, std::string> SetOemIBMBootStateValues{
87     {OEM_IBM_STATE_SET_BOOT_STATE_P_SIDE, "P Side"},
88     {OEM_IBM_STATE_SET_BOOT_STATE_T_SIDE, "T side"}};
89 
90 /** @brief Map for populating PLDM OEM IBM state sets with possible state values
91  */
92 extern const std::map<uint16_t, const std::map<uint8_t, std::string>>
93     populateOemIBMStateMaps{
94         {PLDM_OEM_IBM_VERIFICATION_STATE, SetOemIBMVerStateValues},
95         {PLDM_OEM_IBM_SYSTEM_POWER_STATE, SetOemIBMSysPowerStatesValues},
96         {PLDM_OEM_IBM_BOOT_STATE, SetOemIBMBootStateValues},
97         {PLDM_OEM_IBM_FIRMWARE_UPDATE_STATE, SetOemIBMFWUpdateStateValues},
98     };
99