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