1853c0dc5SEd Tanous #pragma once
2853c0dc5SEd Tanous #include <nlohmann/json.hpp>
3853c0dc5SEd Tanous 
4853c0dc5SEd Tanous namespace outlet
5853c0dc5SEd Tanous {
6853c0dc5SEd Tanous // clang-format off
7853c0dc5SEd Tanous 
8*f263e09cSEd Tanous enum class PowerState{
9*f263e09cSEd Tanous     Invalid,
10*f263e09cSEd Tanous     On,
11*f263e09cSEd Tanous     Off,
12*f263e09cSEd Tanous     PowerCycle,
13*f263e09cSEd Tanous };
14*f263e09cSEd Tanous 
15853c0dc5SEd Tanous enum class ReceptacleType{
16853c0dc5SEd Tanous     Invalid,
17853c0dc5SEd Tanous     NEMA_5_15R,
18853c0dc5SEd Tanous     NEMA_5_20R,
19853c0dc5SEd Tanous     NEMA_L5_20R,
20853c0dc5SEd Tanous     NEMA_L5_30R,
21853c0dc5SEd Tanous     NEMA_L6_20R,
22853c0dc5SEd Tanous     NEMA_L6_30R,
23853c0dc5SEd Tanous     IEC_60320_C13,
24853c0dc5SEd Tanous     IEC_60320_C19,
25853c0dc5SEd Tanous     CEE_7_Type_E,
26853c0dc5SEd Tanous     CEE_7_Type_F,
27853c0dc5SEd Tanous     SEV_1011_TYPE_12,
28853c0dc5SEd Tanous     SEV_1011_TYPE_23,
29853c0dc5SEd Tanous     BS_1363_Type_G,
30853c0dc5SEd Tanous     BusConnection,
31853c0dc5SEd Tanous };
32853c0dc5SEd Tanous 
33853c0dc5SEd Tanous enum class VoltageType{
34853c0dc5SEd Tanous     Invalid,
35853c0dc5SEd Tanous     AC,
36853c0dc5SEd Tanous     DC,
37853c0dc5SEd Tanous };
38853c0dc5SEd Tanous 
39*f263e09cSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(PowerState, {
40*f263e09cSEd Tanous     {PowerState::Invalid, "Invalid"},
41*f263e09cSEd Tanous     {PowerState::On, "On"},
42*f263e09cSEd Tanous     {PowerState::Off, "Off"},
43*f263e09cSEd Tanous     {PowerState::PowerCycle, "PowerCycle"},
44*f263e09cSEd Tanous });
45*f263e09cSEd Tanous 
46853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(ReceptacleType, {
47853c0dc5SEd Tanous     {ReceptacleType::Invalid, "Invalid"},
48853c0dc5SEd Tanous     {ReceptacleType::NEMA_5_15R, "NEMA_5_15R"},
49853c0dc5SEd Tanous     {ReceptacleType::NEMA_5_20R, "NEMA_5_20R"},
50853c0dc5SEd Tanous     {ReceptacleType::NEMA_L5_20R, "NEMA_L5_20R"},
51853c0dc5SEd Tanous     {ReceptacleType::NEMA_L5_30R, "NEMA_L5_30R"},
52853c0dc5SEd Tanous     {ReceptacleType::NEMA_L6_20R, "NEMA_L6_20R"},
53853c0dc5SEd Tanous     {ReceptacleType::NEMA_L6_30R, "NEMA_L6_30R"},
54853c0dc5SEd Tanous     {ReceptacleType::IEC_60320_C13, "IEC_60320_C13"},
55853c0dc5SEd Tanous     {ReceptacleType::IEC_60320_C19, "IEC_60320_C19"},
56853c0dc5SEd Tanous     {ReceptacleType::CEE_7_Type_E, "CEE_7_Type_E"},
57853c0dc5SEd Tanous     {ReceptacleType::CEE_7_Type_F, "CEE_7_Type_F"},
58853c0dc5SEd Tanous     {ReceptacleType::SEV_1011_TYPE_12, "SEV_1011_TYPE_12"},
59853c0dc5SEd Tanous     {ReceptacleType::SEV_1011_TYPE_23, "SEV_1011_TYPE_23"},
60853c0dc5SEd Tanous     {ReceptacleType::BS_1363_Type_G, "BS_1363_Type_G"},
61853c0dc5SEd Tanous     {ReceptacleType::BusConnection, "BusConnection"},
62853c0dc5SEd Tanous });
63853c0dc5SEd Tanous 
64853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(VoltageType, {
65853c0dc5SEd Tanous     {VoltageType::Invalid, "Invalid"},
66853c0dc5SEd Tanous     {VoltageType::AC, "AC"},
67853c0dc5SEd Tanous     {VoltageType::DC, "DC"},
68853c0dc5SEd Tanous });
69853c0dc5SEd Tanous 
70853c0dc5SEd Tanous }
71853c0dc5SEd Tanous // clang-format on
72