blob: 5d9ff5fef4ae3c7f1e67585fcd3be6d46c71df32 [file] [log] [blame]
Alexander Hansen638d1482024-08-21 17:39:57 +02001#include "grouplayout.hpp"
2#include "ledlayout.hpp"
3
4#include <phosphor-logging/lg2.hpp>
5#include <sdbusplus/bus.hpp>
6
7namespace phosphor
8{
9namespace led
10{
11namespace error
12{
13enum 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
32class 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
65void validateConfigV1(const phosphor::led::GroupMap& ledMap);
66
67} // namespace led
68} // namespace phosphor