1 #pragma once
2 #include <nlohmann/json.hpp>
3 
4 namespace port
5 {
6 // clang-format off
7 
8 enum class PortType{
9     Invalid,
10     UpstreamPort,
11     DownstreamPort,
12     InterswitchPort,
13     ManagementPort,
14     BidirectionalPort,
15     UnconfiguredPort,
16 };
17 
18 enum class PortMedium{
19     Invalid,
20     Electrical,
21     Optical,
22 };
23 
24 enum class LinkState{
25     Invalid,
26     Enabled,
27     Disabled,
28 };
29 
30 enum class LinkStatus{
31     Invalid,
32     LinkUp,
33     Starting,
34     Training,
35     LinkDown,
36     NoLink,
37 };
38 
39 enum class LinkNetworkTechnology{
40     Invalid,
41     Ethernet,
42     InfiniBand,
43     FibreChannel,
44     GenZ,
45     PCIe,
46 };
47 
48 enum class PortConnectionType{
49     Invalid,
50     NotConnected,
51     NPort,
52     PointToPoint,
53     PrivateLoop,
54     PublicLoop,
55     Generic,
56     ExtenderFabric,
57     FPort,
58     EPort,
59     TEPort,
60     NPPort,
61     GPort,
62     NLPort,
63     FLPort,
64     EXPort,
65     UPort,
66     DPort,
67 };
68 
69 enum class SupportedEthernetCapabilities{
70     Invalid,
71     WakeOnLAN,
72     EEE,
73 };
74 
75 enum class FlowControl{
76     Invalid,
77     None,
78     TX,
79     RX,
80     TX_RX,
81 };
82 
83 enum class IEEE802IdSubtype{
84     Invalid,
85     ChassisComp,
86     IfAlias,
87     PortComp,
88     MacAddr,
89     NetworkAddr,
90     IfName,
91     AgentId,
92     LocalAssign,
93     NotTransmitted,
94 };
95 
96 enum class SFPType{
97     Invalid,
98     SFP,
99     SFPPlus,
100     SFP28,
101     cSFP,
102     SFPDD,
103     QSFP,
104     QSFPPlus,
105     QSFP14,
106     QSFP28,
107     QSFP56,
108     MiniSASHD,
109 };
110 
111 enum class MediumType{
112     Invalid,
113     Copper,
114     FiberOptic,
115 };
116 
117 enum class FiberConnectionType{
118     Invalid,
119     SingleMode,
120     MultiMode,
121 };
122 
123 enum class LLDPSystemCapabilities{
124     Invalid,
125     None,
126     Bridge,
127     DOCSISCableDevice,
128     Other,
129     Repeater,
130     Router,
131     Station,
132     Telephone,
133     WLANAccessPoint,
134 };
135 
136 enum class CurrentPortConfigurationState{
137     Invalid,
138     Disabled,
139     BindInProgress,
140     UnbindInProgress,
141     DSP,
142     USP,
143     Reserved,
144 };
145 
146 enum class ConnectedDeviceMode{
147     Invalid,
148     Disconnected,
149     RCD,
150     CXL68BFlitAndVH,
151     Standard256BFlit,
152     CXLLatencyOptimized256BFlit,
153     PBR,
154 };
155 
156 enum class ConnectedDeviceType{
157     Invalid,
158     None,
159     PCIeDevice,
160     Type1,
161     Type2,
162     Type3SLD,
163     Type3MLD,
164 };
165 
166 NLOHMANN_JSON_SERIALIZE_ENUM(PortType, {
167     {PortType::Invalid, "Invalid"},
168     {PortType::UpstreamPort, "UpstreamPort"},
169     {PortType::DownstreamPort, "DownstreamPort"},
170     {PortType::InterswitchPort, "InterswitchPort"},
171     {PortType::ManagementPort, "ManagementPort"},
172     {PortType::BidirectionalPort, "BidirectionalPort"},
173     {PortType::UnconfiguredPort, "UnconfiguredPort"},
174 });
175 
176 NLOHMANN_JSON_SERIALIZE_ENUM(PortMedium, {
177     {PortMedium::Invalid, "Invalid"},
178     {PortMedium::Electrical, "Electrical"},
179     {PortMedium::Optical, "Optical"},
180 });
181 
182 NLOHMANN_JSON_SERIALIZE_ENUM(LinkState, {
183     {LinkState::Invalid, "Invalid"},
184     {LinkState::Enabled, "Enabled"},
185     {LinkState::Disabled, "Disabled"},
186 });
187 
188 NLOHMANN_JSON_SERIALIZE_ENUM(LinkStatus, {
189     {LinkStatus::Invalid, "Invalid"},
190     {LinkStatus::LinkUp, "LinkUp"},
191     {LinkStatus::Starting, "Starting"},
192     {LinkStatus::Training, "Training"},
193     {LinkStatus::LinkDown, "LinkDown"},
194     {LinkStatus::NoLink, "NoLink"},
195 });
196 
197 NLOHMANN_JSON_SERIALIZE_ENUM(LinkNetworkTechnology, {
198     {LinkNetworkTechnology::Invalid, "Invalid"},
199     {LinkNetworkTechnology::Ethernet, "Ethernet"},
200     {LinkNetworkTechnology::InfiniBand, "InfiniBand"},
201     {LinkNetworkTechnology::FibreChannel, "FibreChannel"},
202     {LinkNetworkTechnology::GenZ, "GenZ"},
203     {LinkNetworkTechnology::PCIe, "PCIe"},
204 });
205 
206 NLOHMANN_JSON_SERIALIZE_ENUM(PortConnectionType, {
207     {PortConnectionType::Invalid, "Invalid"},
208     {PortConnectionType::NotConnected, "NotConnected"},
209     {PortConnectionType::NPort, "NPort"},
210     {PortConnectionType::PointToPoint, "PointToPoint"},
211     {PortConnectionType::PrivateLoop, "PrivateLoop"},
212     {PortConnectionType::PublicLoop, "PublicLoop"},
213     {PortConnectionType::Generic, "Generic"},
214     {PortConnectionType::ExtenderFabric, "ExtenderFabric"},
215     {PortConnectionType::FPort, "FPort"},
216     {PortConnectionType::EPort, "EPort"},
217     {PortConnectionType::TEPort, "TEPort"},
218     {PortConnectionType::NPPort, "NPPort"},
219     {PortConnectionType::GPort, "GPort"},
220     {PortConnectionType::NLPort, "NLPort"},
221     {PortConnectionType::FLPort, "FLPort"},
222     {PortConnectionType::EXPort, "EXPort"},
223     {PortConnectionType::UPort, "UPort"},
224     {PortConnectionType::DPort, "DPort"},
225 });
226 
227 NLOHMANN_JSON_SERIALIZE_ENUM(SupportedEthernetCapabilities, {
228     {SupportedEthernetCapabilities::Invalid, "Invalid"},
229     {SupportedEthernetCapabilities::WakeOnLAN, "WakeOnLAN"},
230     {SupportedEthernetCapabilities::EEE, "EEE"},
231 });
232 
233 NLOHMANN_JSON_SERIALIZE_ENUM(FlowControl, {
234     {FlowControl::Invalid, "Invalid"},
235     {FlowControl::None, "None"},
236     {FlowControl::TX, "TX"},
237     {FlowControl::RX, "RX"},
238     {FlowControl::TX_RX, "TX_RX"},
239 });
240 
241 NLOHMANN_JSON_SERIALIZE_ENUM(IEEE802IdSubtype, {
242     {IEEE802IdSubtype::Invalid, "Invalid"},
243     {IEEE802IdSubtype::ChassisComp, "ChassisComp"},
244     {IEEE802IdSubtype::IfAlias, "IfAlias"},
245     {IEEE802IdSubtype::PortComp, "PortComp"},
246     {IEEE802IdSubtype::MacAddr, "MacAddr"},
247     {IEEE802IdSubtype::NetworkAddr, "NetworkAddr"},
248     {IEEE802IdSubtype::IfName, "IfName"},
249     {IEEE802IdSubtype::AgentId, "AgentId"},
250     {IEEE802IdSubtype::LocalAssign, "LocalAssign"},
251     {IEEE802IdSubtype::NotTransmitted, "NotTransmitted"},
252 });
253 
254 NLOHMANN_JSON_SERIALIZE_ENUM(SFPType, {
255     {SFPType::Invalid, "Invalid"},
256     {SFPType::SFP, "SFP"},
257     {SFPType::SFPPlus, "SFPPlus"},
258     {SFPType::SFP28, "SFP28"},
259     {SFPType::cSFP, "cSFP"},
260     {SFPType::SFPDD, "SFPDD"},
261     {SFPType::QSFP, "QSFP"},
262     {SFPType::QSFPPlus, "QSFPPlus"},
263     {SFPType::QSFP14, "QSFP14"},
264     {SFPType::QSFP28, "QSFP28"},
265     {SFPType::QSFP56, "QSFP56"},
266     {SFPType::MiniSASHD, "MiniSASHD"},
267 });
268 
269 NLOHMANN_JSON_SERIALIZE_ENUM(MediumType, {
270     {MediumType::Invalid, "Invalid"},
271     {MediumType::Copper, "Copper"},
272     {MediumType::FiberOptic, "FiberOptic"},
273 });
274 
275 NLOHMANN_JSON_SERIALIZE_ENUM(FiberConnectionType, {
276     {FiberConnectionType::Invalid, "Invalid"},
277     {FiberConnectionType::SingleMode, "SingleMode"},
278     {FiberConnectionType::MultiMode, "MultiMode"},
279 });
280 
281 NLOHMANN_JSON_SERIALIZE_ENUM(LLDPSystemCapabilities, {
282     {LLDPSystemCapabilities::Invalid, "Invalid"},
283     {LLDPSystemCapabilities::None, "None"},
284     {LLDPSystemCapabilities::Bridge, "Bridge"},
285     {LLDPSystemCapabilities::DOCSISCableDevice, "DOCSISCableDevice"},
286     {LLDPSystemCapabilities::Other, "Other"},
287     {LLDPSystemCapabilities::Repeater, "Repeater"},
288     {LLDPSystemCapabilities::Router, "Router"},
289     {LLDPSystemCapabilities::Station, "Station"},
290     {LLDPSystemCapabilities::Telephone, "Telephone"},
291     {LLDPSystemCapabilities::WLANAccessPoint, "WLANAccessPoint"},
292 });
293 
294 NLOHMANN_JSON_SERIALIZE_ENUM(CurrentPortConfigurationState, {
295     {CurrentPortConfigurationState::Invalid, "Invalid"},
296     {CurrentPortConfigurationState::Disabled, "Disabled"},
297     {CurrentPortConfigurationState::BindInProgress, "BindInProgress"},
298     {CurrentPortConfigurationState::UnbindInProgress, "UnbindInProgress"},
299     {CurrentPortConfigurationState::DSP, "DSP"},
300     {CurrentPortConfigurationState::USP, "USP"},
301     {CurrentPortConfigurationState::Reserved, "Reserved"},
302 });
303 
304 NLOHMANN_JSON_SERIALIZE_ENUM(ConnectedDeviceMode, {
305     {ConnectedDeviceMode::Invalid, "Invalid"},
306     {ConnectedDeviceMode::Disconnected, "Disconnected"},
307     {ConnectedDeviceMode::RCD, "RCD"},
308     {ConnectedDeviceMode::CXL68BFlitAndVH, "CXL68BFlitAndVH"},
309     {ConnectedDeviceMode::Standard256BFlit, "Standard256BFlit"},
310     {ConnectedDeviceMode::CXLLatencyOptimized256BFlit, "CXLLatencyOptimized256BFlit"},
311     {ConnectedDeviceMode::PBR, "PBR"},
312 });
313 
314 NLOHMANN_JSON_SERIALIZE_ENUM(ConnectedDeviceType, {
315     {ConnectedDeviceType::Invalid, "Invalid"},
316     {ConnectedDeviceType::None, "None"},
317     {ConnectedDeviceType::PCIeDevice, "PCIeDevice"},
318     {ConnectedDeviceType::Type1, "Type1"},
319     {ConnectedDeviceType::Type2, "Type2"},
320     {ConnectedDeviceType::Type3SLD, "Type3SLD"},
321     {ConnectedDeviceType::Type3MLD, "Type3MLD"},
322 });
323 
324 }
325 // clang-format on
326