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