1 // SPDX-License-Identifier: Apache-2.0 2 // SPDX-FileCopyrightText: Copyright OpenBMC Authors 3 #pragma once 4 #include <nlohmann/json.hpp> 5 6 namespace serial_interface 7 { 8 // clang-format off 9 10 enum class SignalType{ 11 Invalid, 12 Rs232, 13 Rs485, 14 }; 15 16 enum class BitRate{ 17 Invalid, 18 BitRate1200, 19 BitRate2400, 20 BitRate4800, 21 BitRate9600, 22 BitRate19200, 23 BitRate38400, 24 BitRate57600, 25 BitRate115200, 26 BitRate230400, 27 }; 28 29 enum class Parity{ 30 Invalid, 31 None, 32 Even, 33 Odd, 34 Mark, 35 Space, 36 }; 37 38 enum class DataBits{ 39 Invalid, 40 DataBits5, 41 DataBits6, 42 DataBits7, 43 DataBits8, 44 }; 45 46 enum class StopBits{ 47 Invalid, 48 StopBits1, 49 StopBits2, 50 }; 51 52 enum class FlowControl{ 53 Invalid, 54 None, 55 Software, 56 Hardware, 57 }; 58 59 enum class PinOut{ 60 Invalid, 61 Cisco, 62 Cyclades, 63 Digi, 64 Modbus2Wire, 65 Modbus4Wire, 66 ModbusRs232, 67 }; 68 69 enum class ConnectorType{ 70 Invalid, 71 RJ45, 72 RJ11, 73 DB9Female, 74 DB9Male, 75 DB25Female, 76 DB25Male, 77 USB, 78 mUSB, 79 uUSB, 80 }; 81 82 enum class Role{ 83 Invalid, 84 Client, 85 Server, 86 }; 87 88 NLOHMANN_JSON_SERIALIZE_ENUM(SignalType, { 89 {SignalType::Invalid, "Invalid"}, 90 {SignalType::Rs232, "Rs232"}, 91 {SignalType::Rs485, "Rs485"}, 92 }); 93 94 NLOHMANN_JSON_SERIALIZE_ENUM(BitRate, { 95 {BitRate::Invalid, "Invalid"}, 96 {BitRate::BitRate1200, "1200"}, 97 {BitRate::BitRate2400, "2400"}, 98 {BitRate::BitRate4800, "4800"}, 99 {BitRate::BitRate9600, "9600"}, 100 {BitRate::BitRate19200, "19200"}, 101 {BitRate::BitRate38400, "38400"}, 102 {BitRate::BitRate57600, "57600"}, 103 {BitRate::BitRate115200, "115200"}, 104 {BitRate::BitRate230400, "230400"}, 105 }); 106 107 NLOHMANN_JSON_SERIALIZE_ENUM(Parity, { 108 {Parity::Invalid, "Invalid"}, 109 {Parity::None, "None"}, 110 {Parity::Even, "Even"}, 111 {Parity::Odd, "Odd"}, 112 {Parity::Mark, "Mark"}, 113 {Parity::Space, "Space"}, 114 }); 115 116 NLOHMANN_JSON_SERIALIZE_ENUM(DataBits, { 117 {DataBits::Invalid, "Invalid"}, 118 {DataBits::DataBits5, "5"}, 119 {DataBits::DataBits6, "6"}, 120 {DataBits::DataBits7, "7"}, 121 {DataBits::DataBits8, "8"}, 122 }); 123 124 NLOHMANN_JSON_SERIALIZE_ENUM(StopBits, { 125 {StopBits::Invalid, "Invalid"}, 126 {StopBits::StopBits1, "1"}, 127 {StopBits::StopBits2, "2"}, 128 }); 129 130 NLOHMANN_JSON_SERIALIZE_ENUM(FlowControl, { 131 {FlowControl::Invalid, "Invalid"}, 132 {FlowControl::None, "None"}, 133 {FlowControl::Software, "Software"}, 134 {FlowControl::Hardware, "Hardware"}, 135 }); 136 137 NLOHMANN_JSON_SERIALIZE_ENUM(PinOut, { 138 {PinOut::Invalid, "Invalid"}, 139 {PinOut::Cisco, "Cisco"}, 140 {PinOut::Cyclades, "Cyclades"}, 141 {PinOut::Digi, "Digi"}, 142 {PinOut::Modbus2Wire, "Modbus2Wire"}, 143 {PinOut::Modbus4Wire, "Modbus4Wire"}, 144 {PinOut::ModbusRs232, "ModbusRs232"}, 145 }); 146 147 NLOHMANN_JSON_SERIALIZE_ENUM(ConnectorType, { 148 {ConnectorType::Invalid, "Invalid"}, 149 {ConnectorType::RJ45, "RJ45"}, 150 {ConnectorType::RJ11, "RJ11"}, 151 {ConnectorType::DB9Female, "DB9 Female"}, 152 {ConnectorType::DB9Male, "DB9 Male"}, 153 {ConnectorType::DB25Female, "DB25 Female"}, 154 {ConnectorType::DB25Male, "DB25 Male"}, 155 {ConnectorType::USB, "USB"}, 156 {ConnectorType::mUSB, "mUSB"}, 157 {ConnectorType::uUSB, "uUSB"}, 158 }); 159 160 NLOHMANN_JSON_SERIALIZE_ENUM(Role, { 161 {Role::Invalid, "Invalid"}, 162 {Role::Client, "Client"}, 163 {Role::Server, "Server"}, 164 }); 165 166 } 167 // clang-format on 168