1 #include "ledlayout.hpp" 2 3 #include <set> 4 #include <string> 5 #include <unordered_map> 6 7 static const std::unordered_map<std::string, 8 std::set<phosphor::led::Layout::LedAction>> 9 singleLedOn = { 10 {"/xyz/openbmc_project/ledmanager/groups/SingleLed", 11 { 12 {"One", phosphor::led::Layout::Action::On, 0, 0, 13 phosphor::led::Layout::Action::Blink}, 14 }}, 15 }; 16 17 static const std::unordered_map<std::string, 18 std::set<phosphor::led::Layout::LedAction>> 19 singleLedBlink = { 20 {"/xyz/openbmc_project/ledmanager/groups/SingleLed", 21 { 22 {"One", phosphor::led::Layout::Action::Blink, 0, 0, 23 phosphor::led::Layout::Action::Blink}, 24 }}, 25 }; 26 27 static const std::unordered_map<std::string, 28 std::set<phosphor::led::Layout::LedAction>> 29 singleLedBlinkOverrideOn = { 30 {"/xyz/openbmc_project/ledmanager/groups/SingleLed", 31 { 32 {"One", phosphor::led::Layout::Action::Blink, 0, 0, 33 phosphor::led::Layout::Action::On}, 34 }}, 35 }; 36 37 static const std::unordered_map<std::string, 38 std::set<phosphor::led::Layout::LedAction>> 39 multipleLedsOn = { 40 {"/xyz/openbmc_project/ledmanager/groups/MultipleLeds", 41 { 42 {"One", phosphor::led::Layout::Action::On, 0, 0, 43 phosphor::led::Layout::Action::On}, 44 {"Two", phosphor::led::Layout::Action::On, 0, 0, 45 phosphor::led::Layout::Action::On}, 46 {"Three", phosphor::led::Layout::Action::On, 0, 0, 47 phosphor::led::Layout::Action::On}, 48 }}, 49 }; 50 51 static const std::unordered_map<std::string, 52 std::set<phosphor::led::Layout::LedAction>> 53 multipleLedsBlink = { 54 {"/xyz/openbmc_project/ledmanager/groups/MultipleLeds", 55 { 56 {"One", phosphor::led::Layout::Action::Blink, 0, 0, 57 phosphor::led::Layout::Action::Blink}, 58 {"Two", phosphor::led::Layout::Action::Blink, 0, 0, 59 phosphor::led::Layout::Action::Blink}, 60 {"Three", phosphor::led::Layout::Action::Blink, 0, 0, 61 phosphor::led::Layout::Action::Blink}, 62 }}, 63 }; 64 65 static const std::unordered_map<std::string, 66 std::set<phosphor::led::Layout::LedAction>> 67 multipleLedsOnAndBlink = { 68 {"/xyz/openbmc_project/ledmanager/groups/MultipleLedsMix", 69 { 70 {"One", phosphor::led::Layout::Action::Blink, 0, 0, 71 phosphor::led::Layout::Action::Blink}, 72 {"Two", phosphor::led::Layout::Action::On, 0, 0, 73 phosphor::led::Layout::Action::Blink}, 74 {"Three", phosphor::led::Layout::Action::Blink, 0, 0, 75 phosphor::led::Layout::Action::On}, 76 {"Four", phosphor::led::Layout::Action::On, 0, 0, 77 phosphor::led::Layout::Action::Blink}, 78 {"Five", phosphor::led::Layout::Action::On, 0, 0, 79 phosphor::led::Layout::Action::Blink}, 80 }}, 81 }; 82 83 static const std::unordered_map<std::string, 84 std::set<phosphor::led::Layout::LedAction>> 85 twoGroupsWithDistinctLEDsOn = { 86 {"/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet", 87 { 88 {"One", phosphor::led::Layout::Action::On, 0, 0, 89 phosphor::led::Layout::Action::Blink}, 90 {"Two", phosphor::led::Layout::Action::On, 0, 0, 91 phosphor::led::Layout::Action::On}, 92 {"Three", phosphor::led::Layout::Action::On, 0, 0, 93 phosphor::led::Layout::Action::Blink}, 94 }}, 95 {"/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet", 96 { 97 {"Four", phosphor::led::Layout::Action::On, 0, 0, 98 phosphor::led::Layout::Action::Blink}, 99 {"Five", phosphor::led::Layout::Action::On, 0, 0, 100 phosphor::led::Layout::Action::Blink}, 101 {"Six", phosphor::led::Layout::Action::On, 0, 0, 102 phosphor::led::Layout::Action::On}, 103 }}, 104 }; 105 106 static const std::unordered_map<std::string, 107 std::set<phosphor::led::Layout::LedAction>> 108 twoGroupsWithOneComonLEDOn = { 109 {"/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet", 110 { 111 {"One", phosphor::led::Layout::Action::On, 0, 0, 112 phosphor::led::Layout::Action::On}, 113 {"Two", phosphor::led::Layout::Action::On, 0, 0, 114 phosphor::led::Layout::Action::On}, 115 {"Three", phosphor::led::Layout::Action::On, 0, 0, 116 phosphor::led::Layout::Action::On}, 117 }}, 118 {"/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet", 119 { 120 {"Four", phosphor::led::Layout::Action::On, 0, 0, 121 phosphor::led::Layout::Action::On}, 122 {"Three", phosphor::led::Layout::Action::On, 0, 0, 123 phosphor::led::Layout::Action::On}, 124 {"Six", phosphor::led::Layout::Action::On, 0, 0, 125 phosphor::led::Layout::Action::On}, 126 }}, 127 }; 128 129 static const std::unordered_map<std::string, 130 std::set<phosphor::led::Layout::LedAction>> 131 twoGroupsWithOneComonLEDOnOneLEDBlinkPriority = { 132 {"/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet", 133 { 134 {"One", phosphor::led::Layout::Action::On, 0, 0, 135 phosphor::led::Layout::Action::On}, 136 {"Two", phosphor::led::Layout::Action::On, 0, 0, 137 phosphor::led::Layout::Action::On}, 138 {"Three", phosphor::led::Layout::Action::Blink, 0, 0, 139 phosphor::led::Layout::Action::Blink}, 140 }}, 141 {"/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet", 142 { 143 {"Four", phosphor::led::Layout::Action::On, 0, 0, 144 phosphor::led::Layout::Action::On}, 145 {"Three", phosphor::led::Layout::Action::On, 0, 0, 146 phosphor::led::Layout::Action::Blink}, 147 {"Six", phosphor::led::Layout::Action::On, 0, 0, 148 phosphor::led::Layout::Action::On}, 149 }}, 150 }; 151 152 static const std::unordered_map<std::string, 153 std::set<phosphor::led::Layout::LedAction>> 154 twoGroupsWithOneComonLEDOnPriority = { 155 {"/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet", 156 { 157 {"One", phosphor::led::Layout::Action::On, 0, 0, 158 phosphor::led::Layout::Action::On}, 159 {"Two", phosphor::led::Layout::Action::On, 0, 0, 160 phosphor::led::Layout::Action::On}, 161 {"Three", phosphor::led::Layout::Action::Blink, 0, 0, 162 phosphor::led::Layout::Action::On}, 163 }}, 164 {"/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet", 165 { 166 {"Four", phosphor::led::Layout::Action::On, 0, 0, 167 phosphor::led::Layout::Action::On}, 168 {"Three", phosphor::led::Layout::Action::On, 0, 0, 169 phosphor::led::Layout::Action::On}, 170 {"Six", phosphor::led::Layout::Action::On, 0, 0, 171 phosphor::led::Layout::Action::On}, 172 }}, 173 }; 174 175 static const std::unordered_map<std::string, 176 std::set<phosphor::led::Layout::LedAction>> 177 twoGroupsWithMultiplComonLEDOn = { 178 {"/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet", 179 { 180 {"One", phosphor::led::Layout::Action::On, 0, 0, 181 phosphor::led::Layout::Action::On}, 182 {"Two", phosphor::led::Layout::Action::On, 0, 0, 183 phosphor::led::Layout::Action::On}, 184 {"Three", phosphor::led::Layout::Action::On, 0, 0, 185 phosphor::led::Layout::Action::On}, 186 }}, 187 {"/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet", 188 { 189 {"Two", phosphor::led::Layout::Action::On, 0, 0, 190 phosphor::led::Layout::Action::On}, 191 {"Six", phosphor::led::Layout::Action::On, 0, 0, 192 phosphor::led::Layout::Action::On}, 193 {"Three", phosphor::led::Layout::Action::On, 0, 0, 194 phosphor::led::Layout::Action::On}, 195 {"Seven", phosphor::led::Layout::Action::On, 0, 0, 196 phosphor::led::Layout::Action::On}, 197 }}, 198 }; 199 200 static const std::unordered_map<std::string, 201 std::set<phosphor::led::Layout::LedAction>> 202 twoGroupsWithMultipleComonLEDInDifferentState = { 203 {"/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet", 204 { 205 {"One", phosphor::led::Layout::Action::On, 0, 0, 206 phosphor::led::Layout::Action::On}, 207 {"Two", phosphor::led::Layout::Action::Blink, 0, 0, 208 phosphor::led::Layout::Action::On}, 209 {"Three", phosphor::led::Layout::Action::Blink, 0, 0, 210 phosphor::led::Layout::Action::On}, 211 {"Four", phosphor::led::Layout::Action::On, 0, 0, 212 phosphor::led::Layout::Action::On}, 213 }}, 214 {"/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet", 215 { 216 {"Two", phosphor::led::Layout::Action::On, 0, 0, 217 phosphor::led::Layout::Action::On}, 218 {"Three", phosphor::led::Layout::Action::Blink, 0, 0, 219 phosphor::led::Layout::Action::On}, 220 {"Five", phosphor::led::Layout::Action::On, 0, 0, 221 phosphor::led::Layout::Action::On}, 222 {"Six", phosphor::led::Layout::Action::On, 0, 0, 223 phosphor::led::Layout::Action::On}, 224 }}, 225 }; 226 227 static const std::unordered_map<std::string, 228 std::set<phosphor::led::Layout::LedAction>> 229 twoGroupsWithMultipleComonLEDInDifferentStateDiffPriority = { 230 {"/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet", 231 { 232 {"One", phosphor::led::Layout::Action::On, 0, 0, 233 phosphor::led::Layout::Action::On}, 234 {"Two", phosphor::led::Layout::Action::Blink, 0, 0, 235 phosphor::led::Layout::Action::On}, 236 {"Three", phosphor::led::Layout::Action::On, 0, 0, 237 phosphor::led::Layout::Action::Blink}, 238 {"Four", phosphor::led::Layout::Action::On, 0, 0, 239 phosphor::led::Layout::Action::On}, 240 {"Ten", phosphor::led::Layout::Action::Blink, 0, 0, 241 phosphor::led::Layout::Action::Blink}, 242 }}, 243 {"/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet", 244 { 245 {"Two", phosphor::led::Layout::Action::On, 0, 0, 246 phosphor::led::Layout::Action::On}, 247 {"Three", phosphor::led::Layout::Action::On, 0, 0, 248 phosphor::led::Layout::Action::Blink}, 249 {"Five", phosphor::led::Layout::Action::On, 0, 0, 250 phosphor::led::Layout::Action::On}, 251 {"Six", phosphor::led::Layout::Action::On, 0, 0, 252 phosphor::led::Layout::Action::On}, 253 {"Ten", phosphor::led::Layout::Action::On, 0, 0, 254 phosphor::led::Layout::Action::Blink}, 255 }}, 256 }; 257