1 // SPDX-License-Identifier: Apache-2.0 2 // SPDX-FileCopyrightText: Copyright OpenBMC Authors 3 #pragma once 4 #include <nlohmann/json.hpp> 5 6 namespace virtual_media 7 { 8 // clang-format off 9 10 enum class MediaType{ 11 Invalid, 12 CD, 13 Floppy, 14 USBStick, 15 DVD, 16 }; 17 18 enum class ConnectedVia{ 19 Invalid, 20 NotConnected, 21 URI, 22 Applet, 23 Oem, 24 }; 25 26 enum class TransferProtocolType{ 27 Invalid, 28 CIFS, 29 FTP, 30 SFTP, 31 HTTP, 32 HTTPS, 33 NFS, 34 SCP, 35 TFTP, 36 OEM, 37 }; 38 39 enum class TransferMethod{ 40 Invalid, 41 Stream, 42 Upload, 43 }; 44 45 enum class EjectPolicy{ 46 Invalid, 47 OnPowerOff, 48 Session, 49 Timed, 50 AfterUse, 51 Persistent, 52 }; 53 54 NLOHMANN_JSON_SERIALIZE_ENUM(MediaType, { 55 {MediaType::Invalid, "Invalid"}, 56 {MediaType::CD, "CD"}, 57 {MediaType::Floppy, "Floppy"}, 58 {MediaType::USBStick, "USBStick"}, 59 {MediaType::DVD, "DVD"}, 60 }); 61 62 NLOHMANN_JSON_SERIALIZE_ENUM(ConnectedVia, { 63 {ConnectedVia::Invalid, "Invalid"}, 64 {ConnectedVia::NotConnected, "NotConnected"}, 65 {ConnectedVia::URI, "URI"}, 66 {ConnectedVia::Applet, "Applet"}, 67 {ConnectedVia::Oem, "Oem"}, 68 }); 69 70 NLOHMANN_JSON_SERIALIZE_ENUM(TransferProtocolType, { 71 {TransferProtocolType::Invalid, "Invalid"}, 72 {TransferProtocolType::CIFS, "CIFS"}, 73 {TransferProtocolType::FTP, "FTP"}, 74 {TransferProtocolType::SFTP, "SFTP"}, 75 {TransferProtocolType::HTTP, "HTTP"}, 76 {TransferProtocolType::HTTPS, "HTTPS"}, 77 {TransferProtocolType::NFS, "NFS"}, 78 {TransferProtocolType::SCP, "SCP"}, 79 {TransferProtocolType::TFTP, "TFTP"}, 80 {TransferProtocolType::OEM, "OEM"}, 81 }); 82 83 NLOHMANN_JSON_SERIALIZE_ENUM(TransferMethod, { 84 {TransferMethod::Invalid, "Invalid"}, 85 {TransferMethod::Stream, "Stream"}, 86 {TransferMethod::Upload, "Upload"}, 87 }); 88 89 NLOHMANN_JSON_SERIALIZE_ENUM(EjectPolicy, { 90 {EjectPolicy::Invalid, "Invalid"}, 91 {EjectPolicy::OnPowerOff, "OnPowerOff"}, 92 {EjectPolicy::Session, "Session"}, 93 {EjectPolicy::Timed, "Timed"}, 94 {EjectPolicy::AfterUse, "AfterUse"}, 95 {EjectPolicy::Persistent, "Persistent"}, 96 }); 97 98 } 99 // clang-format on 100