140e9b92eSEd Tanous // SPDX-License-Identifier: Apache-2.0 240e9b92eSEd Tanous // SPDX-FileCopyrightText: Copyright OpenBMC Authors 3853c0dc5SEd Tanous #pragma once 4853c0dc5SEd Tanous #include <nlohmann/json.hpp> 5853c0dc5SEd Tanous 6853c0dc5SEd Tanous namespace serial_interface 7853c0dc5SEd Tanous { 8853c0dc5SEd Tanous // clang-format off 9853c0dc5SEd Tanous 10853c0dc5SEd Tanous enum class SignalType{ 11853c0dc5SEd Tanous Invalid, 12853c0dc5SEd Tanous Rs232, 13853c0dc5SEd Tanous Rs485, 14853c0dc5SEd Tanous }; 15853c0dc5SEd Tanous 16d1a3caa4SChandramohan Harkude enum class BitRate{ 17d1a3caa4SChandramohan Harkude Invalid, 18d1a3caa4SChandramohan Harkude BitRate1200, 19d1a3caa4SChandramohan Harkude BitRate2400, 20d1a3caa4SChandramohan Harkude BitRate4800, 21d1a3caa4SChandramohan Harkude BitRate9600, 22d1a3caa4SChandramohan Harkude BitRate19200, 23d1a3caa4SChandramohan Harkude BitRate38400, 24d1a3caa4SChandramohan Harkude BitRate57600, 25d1a3caa4SChandramohan Harkude BitRate115200, 26d1a3caa4SChandramohan Harkude BitRate230400, 27d1a3caa4SChandramohan Harkude }; 28d1a3caa4SChandramohan Harkude 29853c0dc5SEd Tanous enum class Parity{ 30853c0dc5SEd Tanous Invalid, 31853c0dc5SEd Tanous None, 32853c0dc5SEd Tanous Even, 33853c0dc5SEd Tanous Odd, 34853c0dc5SEd Tanous Mark, 35853c0dc5SEd Tanous Space, 36853c0dc5SEd Tanous }; 37853c0dc5SEd Tanous 38d1a3caa4SChandramohan Harkude enum class DataBits{ 39d1a3caa4SChandramohan Harkude Invalid, 40d1a3caa4SChandramohan Harkude DataBits5, 41d1a3caa4SChandramohan Harkude DataBits6, 42d1a3caa4SChandramohan Harkude DataBits7, 43d1a3caa4SChandramohan Harkude DataBits8, 44d1a3caa4SChandramohan Harkude }; 45d1a3caa4SChandramohan Harkude 46d1a3caa4SChandramohan Harkude enum class StopBits{ 47d1a3caa4SChandramohan Harkude Invalid, 48d1a3caa4SChandramohan Harkude StopBits1, 49d1a3caa4SChandramohan Harkude StopBits2, 50d1a3caa4SChandramohan Harkude }; 51d1a3caa4SChandramohan Harkude 52853c0dc5SEd Tanous enum class FlowControl{ 53853c0dc5SEd Tanous Invalid, 54853c0dc5SEd Tanous None, 55853c0dc5SEd Tanous Software, 56853c0dc5SEd Tanous Hardware, 57853c0dc5SEd Tanous }; 58853c0dc5SEd Tanous 59853c0dc5SEd Tanous enum class PinOut{ 60853c0dc5SEd Tanous Invalid, 61853c0dc5SEd Tanous Cisco, 62853c0dc5SEd Tanous Cyclades, 63853c0dc5SEd Tanous Digi, 64*c6d7a45dSGunnar Mills Modbus2Wire, 65*c6d7a45dSGunnar Mills Modbus4Wire, 66*c6d7a45dSGunnar Mills ModbusRs232, 67853c0dc5SEd Tanous }; 68853c0dc5SEd Tanous 69d1a3caa4SChandramohan Harkude enum class ConnectorType{ 70d1a3caa4SChandramohan Harkude Invalid, 71d1a3caa4SChandramohan Harkude RJ45, 72d1a3caa4SChandramohan Harkude RJ11, 73d1a3caa4SChandramohan Harkude DB9Female, 74d1a3caa4SChandramohan Harkude DB9Male, 75d1a3caa4SChandramohan Harkude DB25Female, 76d1a3caa4SChandramohan Harkude DB25Male, 77d1a3caa4SChandramohan Harkude USB, 78d1a3caa4SChandramohan Harkude mUSB, 79d1a3caa4SChandramohan Harkude uUSB, 80d1a3caa4SChandramohan Harkude }; 81d1a3caa4SChandramohan Harkude 82*c6d7a45dSGunnar Mills enum class Role{ 83*c6d7a45dSGunnar Mills Invalid, 84*c6d7a45dSGunnar Mills Client, 85*c6d7a45dSGunnar Mills Server, 86*c6d7a45dSGunnar Mills }; 87*c6d7a45dSGunnar Mills 88853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(SignalType, { 89853c0dc5SEd Tanous {SignalType::Invalid, "Invalid"}, 90853c0dc5SEd Tanous {SignalType::Rs232, "Rs232"}, 91853c0dc5SEd Tanous {SignalType::Rs485, "Rs485"}, 92853c0dc5SEd Tanous }); 93853c0dc5SEd Tanous 94d1a3caa4SChandramohan Harkude NLOHMANN_JSON_SERIALIZE_ENUM(BitRate, { 95d1a3caa4SChandramohan Harkude {BitRate::Invalid, "Invalid"}, 96d1a3caa4SChandramohan Harkude {BitRate::BitRate1200, "1200"}, 97d1a3caa4SChandramohan Harkude {BitRate::BitRate2400, "2400"}, 98d1a3caa4SChandramohan Harkude {BitRate::BitRate4800, "4800"}, 99d1a3caa4SChandramohan Harkude {BitRate::BitRate9600, "9600"}, 100d1a3caa4SChandramohan Harkude {BitRate::BitRate19200, "19200"}, 101d1a3caa4SChandramohan Harkude {BitRate::BitRate38400, "38400"}, 102d1a3caa4SChandramohan Harkude {BitRate::BitRate57600, "57600"}, 103d1a3caa4SChandramohan Harkude {BitRate::BitRate115200, "115200"}, 104d1a3caa4SChandramohan Harkude {BitRate::BitRate230400, "230400"}, 105d1a3caa4SChandramohan Harkude }); 106d1a3caa4SChandramohan Harkude 107853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(Parity, { 108853c0dc5SEd Tanous {Parity::Invalid, "Invalid"}, 109853c0dc5SEd Tanous {Parity::None, "None"}, 110853c0dc5SEd Tanous {Parity::Even, "Even"}, 111853c0dc5SEd Tanous {Parity::Odd, "Odd"}, 112853c0dc5SEd Tanous {Parity::Mark, "Mark"}, 113853c0dc5SEd Tanous {Parity::Space, "Space"}, 114853c0dc5SEd Tanous }); 115853c0dc5SEd Tanous 116d1a3caa4SChandramohan Harkude NLOHMANN_JSON_SERIALIZE_ENUM(DataBits, { 117d1a3caa4SChandramohan Harkude {DataBits::Invalid, "Invalid"}, 118d1a3caa4SChandramohan Harkude {DataBits::DataBits5, "5"}, 119d1a3caa4SChandramohan Harkude {DataBits::DataBits6, "6"}, 120d1a3caa4SChandramohan Harkude {DataBits::DataBits7, "7"}, 121d1a3caa4SChandramohan Harkude {DataBits::DataBits8, "8"}, 122d1a3caa4SChandramohan Harkude }); 123d1a3caa4SChandramohan Harkude 124d1a3caa4SChandramohan Harkude NLOHMANN_JSON_SERIALIZE_ENUM(StopBits, { 125d1a3caa4SChandramohan Harkude {StopBits::Invalid, "Invalid"}, 126d1a3caa4SChandramohan Harkude {StopBits::StopBits1, "1"}, 127d1a3caa4SChandramohan Harkude {StopBits::StopBits2, "2"}, 128d1a3caa4SChandramohan Harkude }); 129d1a3caa4SChandramohan Harkude 130853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(FlowControl, { 131853c0dc5SEd Tanous {FlowControl::Invalid, "Invalid"}, 132853c0dc5SEd Tanous {FlowControl::None, "None"}, 133853c0dc5SEd Tanous {FlowControl::Software, "Software"}, 134853c0dc5SEd Tanous {FlowControl::Hardware, "Hardware"}, 135853c0dc5SEd Tanous }); 136853c0dc5SEd Tanous 137853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(PinOut, { 138853c0dc5SEd Tanous {PinOut::Invalid, "Invalid"}, 139853c0dc5SEd Tanous {PinOut::Cisco, "Cisco"}, 140853c0dc5SEd Tanous {PinOut::Cyclades, "Cyclades"}, 141853c0dc5SEd Tanous {PinOut::Digi, "Digi"}, 142*c6d7a45dSGunnar Mills {PinOut::Modbus2Wire, "Modbus2Wire"}, 143*c6d7a45dSGunnar Mills {PinOut::Modbus4Wire, "Modbus4Wire"}, 144*c6d7a45dSGunnar Mills {PinOut::ModbusRs232, "ModbusRs232"}, 145853c0dc5SEd Tanous }); 146853c0dc5SEd Tanous 147d1a3caa4SChandramohan Harkude NLOHMANN_JSON_SERIALIZE_ENUM(ConnectorType, { 148d1a3caa4SChandramohan Harkude {ConnectorType::Invalid, "Invalid"}, 149d1a3caa4SChandramohan Harkude {ConnectorType::RJ45, "RJ45"}, 150d1a3caa4SChandramohan Harkude {ConnectorType::RJ11, "RJ11"}, 151d1a3caa4SChandramohan Harkude {ConnectorType::DB9Female, "DB9 Female"}, 152d1a3caa4SChandramohan Harkude {ConnectorType::DB9Male, "DB9 Male"}, 153d1a3caa4SChandramohan Harkude {ConnectorType::DB25Female, "DB25 Female"}, 154d1a3caa4SChandramohan Harkude {ConnectorType::DB25Male, "DB25 Male"}, 155d1a3caa4SChandramohan Harkude {ConnectorType::USB, "USB"}, 156d1a3caa4SChandramohan Harkude {ConnectorType::mUSB, "mUSB"}, 157d1a3caa4SChandramohan Harkude {ConnectorType::uUSB, "uUSB"}, 158d1a3caa4SChandramohan Harkude }); 159d1a3caa4SChandramohan Harkude 160*c6d7a45dSGunnar Mills NLOHMANN_JSON_SERIALIZE_ENUM(Role, { 161*c6d7a45dSGunnar Mills {Role::Invalid, "Invalid"}, 162*c6d7a45dSGunnar Mills {Role::Client, "Client"}, 163*c6d7a45dSGunnar Mills {Role::Server, "Server"}, 164*c6d7a45dSGunnar Mills }); 165*c6d7a45dSGunnar Mills 166853c0dc5SEd Tanous } 167853c0dc5SEd Tanous // clang-format on 168