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 }; 49 50 NLOHMANN_JSON_SERIALIZE_ENUM(Protocol, { 51 {Protocol::Invalid, "Invalid"}, 52 {Protocol::PCIe, "PCIe"}, 53 {Protocol::AHCI, "AHCI"}, 54 {Protocol::UHCI, "UHCI"}, 55 {Protocol::SAS, "SAS"}, 56 {Protocol::SATA, "SATA"}, 57 {Protocol::USB, "USB"}, 58 {Protocol::NVMe, "NVMe"}, 59 {Protocol::FC, "FC"}, 60 {Protocol::iSCSI, "iSCSI"}, 61 {Protocol::FCoE, "FCoE"}, 62 {Protocol::FCP, "FCP"}, 63 {Protocol::FICON, "FICON"}, 64 {Protocol::NVMeOverFabrics, "NVMeOverFabrics"}, 65 {Protocol::SMB, "SMB"}, 66 {Protocol::NFSv3, "NFSv3"}, 67 {Protocol::NFSv4, "NFSv4"}, 68 {Protocol::HTTP, "HTTP"}, 69 {Protocol::HTTPS, "HTTPS"}, 70 {Protocol::FTP, "FTP"}, 71 {Protocol::SFTP, "SFTP"}, 72 {Protocol::iWARP, "iWARP"}, 73 {Protocol::RoCE, "RoCE"}, 74 {Protocol::RoCEv2, "RoCEv2"}, 75 {Protocol::I2C, "I2C"}, 76 {Protocol::TCP, "TCP"}, 77 {Protocol::UDP, "UDP"}, 78 {Protocol::TFTP, "TFTP"}, 79 {Protocol::GenZ, "GenZ"}, 80 {Protocol::MultiProtocol, "MultiProtocol"}, 81 {Protocol::InfiniBand, "InfiniBand"}, 82 {Protocol::Ethernet, "Ethernet"}, 83 {Protocol::NVLink, "NVLink"}, 84 {Protocol::OEM, "OEM"}, 85 {Protocol::DisplayPort, "DisplayPort"}, 86 {Protocol::HDMI, "HDMI"}, 87 {Protocol::VGA, "VGA"}, 88 {Protocol::DVI, "DVI"}, 89 {Protocol::CXL, "CXL"}, 90 }); 91 92 } 93 // clang-format on 94