1 #pragma once 2 #include <nlohmann/json.hpp> 3 4 namespace memory 5 { 6 // clang-format off 7 8 enum class MemoryType{ 9 Invalid, 10 DRAM, 11 NVDIMM_N, 12 NVDIMM_F, 13 NVDIMM_P, 14 IntelOptane, 15 }; 16 17 enum class MemoryDeviceType{ 18 Invalid, 19 DDR, 20 DDR2, 21 DDR3, 22 DDR4, 23 DDR4_SDRAM, 24 DDR4E_SDRAM, 25 LPDDR4_SDRAM, 26 DDR3_SDRAM, 27 LPDDR3_SDRAM, 28 DDR2_SDRAM, 29 DDR2_SDRAM_FB_DIMM, 30 DDR2_SDRAM_FB_DIMM_PROBE, 31 DDR_SGRAM, 32 DDR_SDRAM, 33 ROM, 34 SDRAM, 35 EDO, 36 FastPageMode, 37 PipelinedNibble, 38 Logical, 39 HBM, 40 HBM2, 41 HBM3, 42 GDDR, 43 GDDR2, 44 GDDR3, 45 GDDR4, 46 GDDR5, 47 GDDR5X, 48 GDDR6, 49 DDR5, 50 OEM, 51 }; 52 53 enum class BaseModuleType{ 54 Invalid, 55 RDIMM, 56 UDIMM, 57 SO_DIMM, 58 LRDIMM, 59 Mini_RDIMM, 60 Mini_UDIMM, 61 SO_RDIMM_72b, 62 SO_UDIMM_72b, 63 SO_DIMM_16b, 64 SO_DIMM_32b, 65 Die, 66 }; 67 68 enum class MemoryMedia{ 69 Invalid, 70 DRAM, 71 NAND, 72 Intel3DXPoint, 73 Proprietary, 74 }; 75 76 enum class SecurityStates{ 77 Invalid, 78 Enabled, 79 Disabled, 80 Unlocked, 81 Locked, 82 Frozen, 83 Passphraselimit, 84 }; 85 86 enum class ErrorCorrection{ 87 Invalid, 88 NoECC, 89 SingleBitECC, 90 MultiBitECC, 91 AddressParity, 92 }; 93 94 enum class MemoryClassification{ 95 Invalid, 96 Volatile, 97 ByteAccessiblePersistent, 98 Block, 99 }; 100 101 enum class OperatingMemoryModes{ 102 Invalid, 103 Volatile, 104 PMEM, 105 Block, 106 }; 107 108 NLOHMANN_JSON_SERIALIZE_ENUM(MemoryType, { 109 {MemoryType::Invalid, "Invalid"}, 110 {MemoryType::DRAM, "DRAM"}, 111 {MemoryType::NVDIMM_N, "NVDIMM_N"}, 112 {MemoryType::NVDIMM_F, "NVDIMM_F"}, 113 {MemoryType::NVDIMM_P, "NVDIMM_P"}, 114 {MemoryType::IntelOptane, "IntelOptane"}, 115 }); 116 117 NLOHMANN_JSON_SERIALIZE_ENUM(MemoryDeviceType, { 118 {MemoryDeviceType::Invalid, "Invalid"}, 119 {MemoryDeviceType::DDR, "DDR"}, 120 {MemoryDeviceType::DDR2, "DDR2"}, 121 {MemoryDeviceType::DDR3, "DDR3"}, 122 {MemoryDeviceType::DDR4, "DDR4"}, 123 {MemoryDeviceType::DDR4_SDRAM, "DDR4_SDRAM"}, 124 {MemoryDeviceType::DDR4E_SDRAM, "DDR4E_SDRAM"}, 125 {MemoryDeviceType::LPDDR4_SDRAM, "LPDDR4_SDRAM"}, 126 {MemoryDeviceType::DDR3_SDRAM, "DDR3_SDRAM"}, 127 {MemoryDeviceType::LPDDR3_SDRAM, "LPDDR3_SDRAM"}, 128 {MemoryDeviceType::DDR2_SDRAM, "DDR2_SDRAM"}, 129 {MemoryDeviceType::DDR2_SDRAM_FB_DIMM, "DDR2_SDRAM_FB_DIMM"}, 130 {MemoryDeviceType::DDR2_SDRAM_FB_DIMM_PROBE, "DDR2_SDRAM_FB_DIMM_PROBE"}, 131 {MemoryDeviceType::DDR_SGRAM, "DDR_SGRAM"}, 132 {MemoryDeviceType::DDR_SDRAM, "DDR_SDRAM"}, 133 {MemoryDeviceType::ROM, "ROM"}, 134 {MemoryDeviceType::SDRAM, "SDRAM"}, 135 {MemoryDeviceType::EDO, "EDO"}, 136 {MemoryDeviceType::FastPageMode, "FastPageMode"}, 137 {MemoryDeviceType::PipelinedNibble, "PipelinedNibble"}, 138 {MemoryDeviceType::Logical, "Logical"}, 139 {MemoryDeviceType::HBM, "HBM"}, 140 {MemoryDeviceType::HBM2, "HBM2"}, 141 {MemoryDeviceType::HBM3, "HBM3"}, 142 {MemoryDeviceType::GDDR, "GDDR"}, 143 {MemoryDeviceType::GDDR2, "GDDR2"}, 144 {MemoryDeviceType::GDDR3, "GDDR3"}, 145 {MemoryDeviceType::GDDR4, "GDDR4"}, 146 {MemoryDeviceType::GDDR5, "GDDR5"}, 147 {MemoryDeviceType::GDDR5X, "GDDR5X"}, 148 {MemoryDeviceType::GDDR6, "GDDR6"}, 149 {MemoryDeviceType::DDR5, "DDR5"}, 150 {MemoryDeviceType::OEM, "OEM"}, 151 }); 152 153 NLOHMANN_JSON_SERIALIZE_ENUM(BaseModuleType, { 154 {BaseModuleType::Invalid, "Invalid"}, 155 {BaseModuleType::RDIMM, "RDIMM"}, 156 {BaseModuleType::UDIMM, "UDIMM"}, 157 {BaseModuleType::SO_DIMM, "SO_DIMM"}, 158 {BaseModuleType::LRDIMM, "LRDIMM"}, 159 {BaseModuleType::Mini_RDIMM, "Mini_RDIMM"}, 160 {BaseModuleType::Mini_UDIMM, "Mini_UDIMM"}, 161 {BaseModuleType::SO_RDIMM_72b, "SO_RDIMM_72b"}, 162 {BaseModuleType::SO_UDIMM_72b, "SO_UDIMM_72b"}, 163 {BaseModuleType::SO_DIMM_16b, "SO_DIMM_16b"}, 164 {BaseModuleType::SO_DIMM_32b, "SO_DIMM_32b"}, 165 {BaseModuleType::Die, "Die"}, 166 }); 167 168 NLOHMANN_JSON_SERIALIZE_ENUM(MemoryMedia, { 169 {MemoryMedia::Invalid, "Invalid"}, 170 {MemoryMedia::DRAM, "DRAM"}, 171 {MemoryMedia::NAND, "NAND"}, 172 {MemoryMedia::Intel3DXPoint, "Intel3DXPoint"}, 173 {MemoryMedia::Proprietary, "Proprietary"}, 174 }); 175 176 NLOHMANN_JSON_SERIALIZE_ENUM(SecurityStates, { 177 {SecurityStates::Invalid, "Invalid"}, 178 {SecurityStates::Enabled, "Enabled"}, 179 {SecurityStates::Disabled, "Disabled"}, 180 {SecurityStates::Unlocked, "Unlocked"}, 181 {SecurityStates::Locked, "Locked"}, 182 {SecurityStates::Frozen, "Frozen"}, 183 {SecurityStates::Passphraselimit, "Passphraselimit"}, 184 }); 185 186 NLOHMANN_JSON_SERIALIZE_ENUM(ErrorCorrection, { 187 {ErrorCorrection::Invalid, "Invalid"}, 188 {ErrorCorrection::NoECC, "NoECC"}, 189 {ErrorCorrection::SingleBitECC, "SingleBitECC"}, 190 {ErrorCorrection::MultiBitECC, "MultiBitECC"}, 191 {ErrorCorrection::AddressParity, "AddressParity"}, 192 }); 193 194 NLOHMANN_JSON_SERIALIZE_ENUM(MemoryClassification, { 195 {MemoryClassification::Invalid, "Invalid"}, 196 {MemoryClassification::Volatile, "Volatile"}, 197 {MemoryClassification::ByteAccessiblePersistent, "ByteAccessiblePersistent"}, 198 {MemoryClassification::Block, "Block"}, 199 }); 200 201 NLOHMANN_JSON_SERIALIZE_ENUM(OperatingMemoryModes, { 202 {OperatingMemoryModes::Invalid, "Invalid"}, 203 {OperatingMemoryModes::Volatile, "Volatile"}, 204 {OperatingMemoryModes::PMEM, "PMEM"}, 205 {OperatingMemoryModes::Block, "Block"}, 206 }); 207 208 } 209 // clang-format on 210