1*638d1487SAlexander Hansen #include "grouplayout.hpp" 2*638d1487SAlexander Hansen #include "ledlayout.hpp" 3*638d1487SAlexander Hansen 4*638d1487SAlexander Hansen #include <phosphor-logging/lg2.hpp> 5*638d1487SAlexander Hansen #include <sdbusplus/bus.hpp> 6*638d1487SAlexander Hansen 7*638d1487SAlexander Hansen namespace phosphor 8*638d1487SAlexander Hansen { 9*638d1487SAlexander Hansen namespace led 10*638d1487SAlexander Hansen { 11*638d1487SAlexander Hansen namespace error 12*638d1487SAlexander Hansen { 13*638d1487SAlexander Hansen enum ConfigValidationError 14*638d1487SAlexander Hansen { 15*638d1487SAlexander Hansen // An LED has different priorities assigned to it in different groups 16*638d1487SAlexander Hansen LedPriorityMismatch, 17*638d1487SAlexander Hansen 18*638d1487SAlexander Hansen // LED priority was needed but not assigned 19*638d1487SAlexander Hansen MissingLedPriority, 20*638d1487SAlexander Hansen 21*638d1487SAlexander Hansen // Mixup of the 2 configuration options 22*638d1487SAlexander Hansen MixedLedAndGroupPriority, 23*638d1487SAlexander Hansen 24*638d1487SAlexander Hansen // An invalid group priority was assigned 25*638d1487SAlexander Hansen InvalidGroupPriority, 26*638d1487SAlexander Hansen 27*638d1487SAlexander Hansen // Group priorities were not unique 28*638d1487SAlexander Hansen DuplicateGroupPriority, 29*638d1487SAlexander Hansen }; 30*638d1487SAlexander Hansen } 31*638d1487SAlexander Hansen 32*638d1487SAlexander Hansen class ConfigValidationException : std::runtime_error 33*638d1487SAlexander Hansen { 34*638d1487SAlexander Hansen public: 35*638d1487SAlexander Hansen error::ConfigValidationError reason; 36*638d1487SAlexander Hansen 37*638d1487SAlexander Hansen ConfigValidationException(const error::ConfigValidationError& err, 38*638d1487SAlexander Hansen const std::string& msg) : 39*638d1487SAlexander Hansen std::runtime_error(msg), reason(err) 40*638d1487SAlexander Hansen { 41*638d1487SAlexander Hansen lg2::error(msg.c_str()); 42*638d1487SAlexander Hansen } 43*638d1487SAlexander Hansen 44*638d1487SAlexander Hansen ConfigValidationException(const error::ConfigValidationError& err, 45*638d1487SAlexander Hansen const std::string& groupName, 46*638d1487SAlexander Hansen const std::string& msg) : 47*638d1487SAlexander Hansen std::runtime_error(msg), reason(err) 48*638d1487SAlexander Hansen { 49*638d1487SAlexander Hansen lg2::error("Configuration Validation Error in Group {GROUP}: {MSG}", 50*638d1487SAlexander Hansen "GROUP", groupName, "MSG", msg.c_str()); 51*638d1487SAlexander Hansen } 52*638d1487SAlexander Hansen 53*638d1487SAlexander Hansen ConfigValidationException(const error::ConfigValidationError& err, 54*638d1487SAlexander Hansen const std::string& groupName, 55*638d1487SAlexander Hansen const std::string& ledName, 56*638d1487SAlexander Hansen const std::string& msg) : 57*638d1487SAlexander Hansen std::runtime_error(msg), reason(err) 58*638d1487SAlexander Hansen { 59*638d1487SAlexander Hansen lg2::error( 60*638d1487SAlexander Hansen "Configuration Validation Error in Group {GROUP}, Led {LED}: {MSG}", 61*638d1487SAlexander Hansen "GROUP", groupName, "LED", ledName, "MSG", msg.c_str()); 62*638d1487SAlexander Hansen } 63*638d1487SAlexander Hansen }; 64*638d1487SAlexander Hansen 65*638d1487SAlexander Hansen void validateConfigV1(const phosphor::led::GroupMap& ledMap); 66*638d1487SAlexander Hansen 67*638d1487SAlexander Hansen } // namespace led 68*638d1487SAlexander Hansen } // namespace phosphor 69