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 }; 170 171 NLOHMANN_JSON_SERIALIZE_ENUM(PortType, { 172 {PortType::Invalid, "Invalid"}, 173 {PortType::UpstreamPort, "UpstreamPort"}, 174 {PortType::DownstreamPort, "DownstreamPort"}, 175 {PortType::InterswitchPort, "InterswitchPort"}, 176 {PortType::ManagementPort, "ManagementPort"}, 177 {PortType::BidirectionalPort, "BidirectionalPort"}, 178 {PortType::UnconfiguredPort, "UnconfiguredPort"}, 179 }); 180 181 NLOHMANN_JSON_SERIALIZE_ENUM(PortMedium, { 182 {PortMedium::Invalid, "Invalid"}, 183 {PortMedium::Electrical, "Electrical"}, 184 {PortMedium::Optical, "Optical"}, 185 }); 186 187 NLOHMANN_JSON_SERIALIZE_ENUM(LinkState, { 188 {LinkState::Invalid, "Invalid"}, 189 {LinkState::Enabled, "Enabled"}, 190 {LinkState::Disabled, "Disabled"}, 191 }); 192 193 NLOHMANN_JSON_SERIALIZE_ENUM(LinkStatus, { 194 {LinkStatus::Invalid, "Invalid"}, 195 {LinkStatus::LinkUp, "LinkUp"}, 196 {LinkStatus::Starting, "Starting"}, 197 {LinkStatus::Training, "Training"}, 198 {LinkStatus::LinkDown, "LinkDown"}, 199 {LinkStatus::NoLink, "NoLink"}, 200 }); 201 202 NLOHMANN_JSON_SERIALIZE_ENUM(LinkNetworkTechnology, { 203 {LinkNetworkTechnology::Invalid, "Invalid"}, 204 {LinkNetworkTechnology::Ethernet, "Ethernet"}, 205 {LinkNetworkTechnology::InfiniBand, "InfiniBand"}, 206 {LinkNetworkTechnology::FibreChannel, "FibreChannel"}, 207 {LinkNetworkTechnology::GenZ, "GenZ"}, 208 {LinkNetworkTechnology::PCIe, "PCIe"}, 209 }); 210 211 NLOHMANN_JSON_SERIALIZE_ENUM(PortConnectionType, { 212 {PortConnectionType::Invalid, "Invalid"}, 213 {PortConnectionType::NotConnected, "NotConnected"}, 214 {PortConnectionType::NPort, "NPort"}, 215 {PortConnectionType::PointToPoint, "PointToPoint"}, 216 {PortConnectionType::PrivateLoop, "PrivateLoop"}, 217 {PortConnectionType::PublicLoop, "PublicLoop"}, 218 {PortConnectionType::Generic, "Generic"}, 219 {PortConnectionType::ExtenderFabric, "ExtenderFabric"}, 220 {PortConnectionType::FPort, "FPort"}, 221 {PortConnectionType::EPort, "EPort"}, 222 {PortConnectionType::TEPort, "TEPort"}, 223 {PortConnectionType::NPPort, "NPPort"}, 224 {PortConnectionType::GPort, "GPort"}, 225 {PortConnectionType::NLPort, "NLPort"}, 226 {PortConnectionType::FLPort, "FLPort"}, 227 {PortConnectionType::EXPort, "EXPort"}, 228 {PortConnectionType::UPort, "UPort"}, 229 {PortConnectionType::DPort, "DPort"}, 230 }); 231 232 NLOHMANN_JSON_SERIALIZE_ENUM(SupportedEthernetCapabilities, { 233 {SupportedEthernetCapabilities::Invalid, "Invalid"}, 234 {SupportedEthernetCapabilities::WakeOnLAN, "WakeOnLAN"}, 235 {SupportedEthernetCapabilities::EEE, "EEE"}, 236 }); 237 238 NLOHMANN_JSON_SERIALIZE_ENUM(FlowControl, { 239 {FlowControl::Invalid, "Invalid"}, 240 {FlowControl::None, "None"}, 241 {FlowControl::TX, "TX"}, 242 {FlowControl::RX, "RX"}, 243 {FlowControl::TX_RX, "TX_RX"}, 244 }); 245 246 NLOHMANN_JSON_SERIALIZE_ENUM(IEEE802IdSubtype, { 247 {IEEE802IdSubtype::Invalid, "Invalid"}, 248 {IEEE802IdSubtype::ChassisComp, "ChassisComp"}, 249 {IEEE802IdSubtype::IfAlias, "IfAlias"}, 250 {IEEE802IdSubtype::PortComp, "PortComp"}, 251 {IEEE802IdSubtype::MacAddr, "MacAddr"}, 252 {IEEE802IdSubtype::NetworkAddr, "NetworkAddr"}, 253 {IEEE802IdSubtype::IfName, "IfName"}, 254 {IEEE802IdSubtype::AgentId, "AgentId"}, 255 {IEEE802IdSubtype::LocalAssign, "LocalAssign"}, 256 {IEEE802IdSubtype::NotTransmitted, "NotTransmitted"}, 257 }); 258 259 NLOHMANN_JSON_SERIALIZE_ENUM(SFPType, { 260 {SFPType::Invalid, "Invalid"}, 261 {SFPType::SFP, "SFP"}, 262 {SFPType::SFPPlus, "SFPPlus"}, 263 {SFPType::SFP28, "SFP28"}, 264 {SFPType::cSFP, "cSFP"}, 265 {SFPType::SFPDD, "SFPDD"}, 266 {SFPType::QSFP, "QSFP"}, 267 {SFPType::QSFPPlus, "QSFPPlus"}, 268 {SFPType::QSFP14, "QSFP14"}, 269 {SFPType::QSFP28, "QSFP28"}, 270 {SFPType::QSFP56, "QSFP56"}, 271 {SFPType::MiniSASHD, "MiniSASHD"}, 272 {SFPType::QSFPDD, "QSFPDD"}, 273 {SFPType::OSFP, "OSFP"}, 274 }); 275 276 NLOHMANN_JSON_SERIALIZE_ENUM(MediumType, { 277 {MediumType::Invalid, "Invalid"}, 278 {MediumType::Copper, "Copper"}, 279 {MediumType::FiberOptic, "FiberOptic"}, 280 }); 281 282 NLOHMANN_JSON_SERIALIZE_ENUM(FiberConnectionType, { 283 {FiberConnectionType::Invalid, "Invalid"}, 284 {FiberConnectionType::SingleMode, "SingleMode"}, 285 {FiberConnectionType::MultiMode, "MultiMode"}, 286 }); 287 288 NLOHMANN_JSON_SERIALIZE_ENUM(LLDPSystemCapabilities, { 289 {LLDPSystemCapabilities::Invalid, "Invalid"}, 290 {LLDPSystemCapabilities::None, "None"}, 291 {LLDPSystemCapabilities::Bridge, "Bridge"}, 292 {LLDPSystemCapabilities::DOCSISCableDevice, "DOCSISCableDevice"}, 293 {LLDPSystemCapabilities::Other, "Other"}, 294 {LLDPSystemCapabilities::Repeater, "Repeater"}, 295 {LLDPSystemCapabilities::Router, "Router"}, 296 {LLDPSystemCapabilities::Station, "Station"}, 297 {LLDPSystemCapabilities::Telephone, "Telephone"}, 298 {LLDPSystemCapabilities::WLANAccessPoint, "WLANAccessPoint"}, 299 }); 300 301 NLOHMANN_JSON_SERIALIZE_ENUM(CurrentPortConfigurationState, { 302 {CurrentPortConfigurationState::Invalid, "Invalid"}, 303 {CurrentPortConfigurationState::Disabled, "Disabled"}, 304 {CurrentPortConfigurationState::BindInProgress, "BindInProgress"}, 305 {CurrentPortConfigurationState::UnbindInProgress, "UnbindInProgress"}, 306 {CurrentPortConfigurationState::DSP, "DSP"}, 307 {CurrentPortConfigurationState::USP, "USP"}, 308 {CurrentPortConfigurationState::Reserved, "Reserved"}, 309 {CurrentPortConfigurationState::FabricLink, "FabricLink"}, 310 }); 311 312 NLOHMANN_JSON_SERIALIZE_ENUM(ConnectedDeviceMode, { 313 {ConnectedDeviceMode::Invalid, "Invalid"}, 314 {ConnectedDeviceMode::Disconnected, "Disconnected"}, 315 {ConnectedDeviceMode::RCD, "RCD"}, 316 {ConnectedDeviceMode::CXL68BFlitAndVH, "CXL68BFlitAndVH"}, 317 {ConnectedDeviceMode::Standard256BFlit, "Standard256BFlit"}, 318 {ConnectedDeviceMode::CXLLatencyOptimized256BFlit, "CXLLatencyOptimized256BFlit"}, 319 {ConnectedDeviceMode::PBR, "PBR"}, 320 }); 321 322 NLOHMANN_JSON_SERIALIZE_ENUM(ConnectedDeviceType, { 323 {ConnectedDeviceType::Invalid, "Invalid"}, 324 {ConnectedDeviceType::None, "None"}, 325 {ConnectedDeviceType::PCIeDevice, "PCIeDevice"}, 326 {ConnectedDeviceType::Type1, "Type1"}, 327 {ConnectedDeviceType::Type2, "Type2"}, 328 {ConnectedDeviceType::Type3SLD, "Type3SLD"}, 329 {ConnectedDeviceType::Type3MLD, "Type3MLD"}, 330 }); 331 332 } 333 // clang-format on 334