1 // SPDX-License-Identifier: Apache-2.0 2 // SPDX-FileCopyrightText: Copyright OpenBMC Authors 3 #pragma once 4 #include <nlohmann/json.hpp> 5 6 namespace protocol 7 { 8 // clang-format off 9 10 enum class Protocol{ 11 Invalid, 12 PCIe, 13 AHCI, 14 UHCI, 15 SAS, 16 SATA, 17 USB, 18 NVMe, 19 FC, 20 iSCSI, 21 FCoE, 22 FCP, 23 FICON, 24 NVMeOverFabrics, 25 SMB, 26 NFSv3, 27 NFSv4, 28 HTTP, 29 HTTPS, 30 FTP, 31 SFTP, 32 iWARP, 33 RoCE, 34 RoCEv2, 35 I2C, 36 TCP, 37 UDP, 38 TFTP, 39 GenZ, 40 MultiProtocol, 41 InfiniBand, 42 Ethernet, 43 NVLink, 44 OEM, 45 DisplayPort, 46 HDMI, 47 VGA, 48 DVI, 49 CXL, 50 UPI, 51 QPI, 52 eMMC, 53 }; 54 55 NLOHMANN_JSON_SERIALIZE_ENUM(Protocol, { 56 {Protocol::Invalid, "Invalid"}, 57 {Protocol::PCIe, "PCIe"}, 58 {Protocol::AHCI, "AHCI"}, 59 {Protocol::UHCI, "UHCI"}, 60 {Protocol::SAS, "SAS"}, 61 {Protocol::SATA, "SATA"}, 62 {Protocol::USB, "USB"}, 63 {Protocol::NVMe, "NVMe"}, 64 {Protocol::FC, "FC"}, 65 {Protocol::iSCSI, "iSCSI"}, 66 {Protocol::FCoE, "FCoE"}, 67 {Protocol::FCP, "FCP"}, 68 {Protocol::FICON, "FICON"}, 69 {Protocol::NVMeOverFabrics, "NVMeOverFabrics"}, 70 {Protocol::SMB, "SMB"}, 71 {Protocol::NFSv3, "NFSv3"}, 72 {Protocol::NFSv4, "NFSv4"}, 73 {Protocol::HTTP, "HTTP"}, 74 {Protocol::HTTPS, "HTTPS"}, 75 {Protocol::FTP, "FTP"}, 76 {Protocol::SFTP, "SFTP"}, 77 {Protocol::iWARP, "iWARP"}, 78 {Protocol::RoCE, "RoCE"}, 79 {Protocol::RoCEv2, "RoCEv2"}, 80 {Protocol::I2C, "I2C"}, 81 {Protocol::TCP, "TCP"}, 82 {Protocol::UDP, "UDP"}, 83 {Protocol::TFTP, "TFTP"}, 84 {Protocol::GenZ, "GenZ"}, 85 {Protocol::MultiProtocol, "MultiProtocol"}, 86 {Protocol::InfiniBand, "InfiniBand"}, 87 {Protocol::Ethernet, "Ethernet"}, 88 {Protocol::NVLink, "NVLink"}, 89 {Protocol::OEM, "OEM"}, 90 {Protocol::DisplayPort, "DisplayPort"}, 91 {Protocol::HDMI, "HDMI"}, 92 {Protocol::VGA, "VGA"}, 93 {Protocol::DVI, "DVI"}, 94 {Protocol::CXL, "CXL"}, 95 {Protocol::UPI, "UPI"}, 96 {Protocol::QPI, "QPI"}, 97 {Protocol::eMMC, "eMMC"}, 98 }); 99 100 } 101 // clang-format on 102