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