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