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