1 // SPDX-License-Identifier: Apache-2.0 2 // SPDX-FileCopyrightText: Copyright OpenBMC Authors 3 #pragma once 4 #include <nlohmann/json.hpp> 5 6 namespace endpoint 7 { 8 // clang-format off 9 10 enum class EntityType{ 11 Invalid, 12 StorageInitiator, 13 RootComplex, 14 NetworkController, 15 Drive, 16 StorageExpander, 17 DisplayController, 18 Bridge, 19 Processor, 20 Volume, 21 AccelerationFunction, 22 MediaController, 23 MemoryChunk, 24 Switch, 25 FabricBridge, 26 Manager, 27 StorageSubsystem, 28 Memory, 29 CXLDevice, 30 }; 31 32 enum class EntityRole{ 33 Invalid, 34 Initiator, 35 Target, 36 Both, 37 }; 38 39 NLOHMANN_JSON_SERIALIZE_ENUM(EntityType, { 40 {EntityType::Invalid, "Invalid"}, 41 {EntityType::StorageInitiator, "StorageInitiator"}, 42 {EntityType::RootComplex, "RootComplex"}, 43 {EntityType::NetworkController, "NetworkController"}, 44 {EntityType::Drive, "Drive"}, 45 {EntityType::StorageExpander, "StorageExpander"}, 46 {EntityType::DisplayController, "DisplayController"}, 47 {EntityType::Bridge, "Bridge"}, 48 {EntityType::Processor, "Processor"}, 49 {EntityType::Volume, "Volume"}, 50 {EntityType::AccelerationFunction, "AccelerationFunction"}, 51 {EntityType::MediaController, "MediaController"}, 52 {EntityType::MemoryChunk, "MemoryChunk"}, 53 {EntityType::Switch, "Switch"}, 54 {EntityType::FabricBridge, "FabricBridge"}, 55 {EntityType::Manager, "Manager"}, 56 {EntityType::StorageSubsystem, "StorageSubsystem"}, 57 {EntityType::Memory, "Memory"}, 58 {EntityType::CXLDevice, "CXLDevice"}, 59 }); 60 61 NLOHMANN_JSON_SERIALIZE_ENUM(EntityRole, { 62 {EntityRole::Invalid, "Invalid"}, 63 {EntityRole::Initiator, "Initiator"}, 64 {EntityRole::Target, "Target"}, 65 {EntityRole::Both, "Both"}, 66 }); 67 68 } 69 // clang-format on 70