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