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