1 #pragma once 2 3 #include <string> 4 5 namespace analyzer 6 { 7 8 namespace callout 9 { 10 11 /** @brief All callouts will have a priority indicating when to issue the 12 * required service action. */ 13 class Priority 14 { 15 public: 16 /** Serivce is mandatory. */ 17 static const Priority HIGH; 18 19 /** Serivce medium priority callouts one at a time, in order, until the 20 * issue is resolved. */ 21 static const Priority MED; 22 23 /** Same as MED, except replace all A's as a group. */ 24 static const Priority MED_A; 25 26 /** Same as MED, except replace all A's as a group. */ 27 static const Priority MED_B; 28 29 /** Same as MED, except replace all A's as a group. */ 30 static const Priority MED_C; 31 32 /** If servicing all high and medium priority callouts did not resolve 33 * the issue, service low priority callouts one at a time, in order, 34 * until the issue is resolved. */ 35 static const Priority LOW; 36 37 private: 38 /** 39 * @brief Constructor from components. 40 * 41 * At the moment, the priority values for the callout list user data 42 * section are different from the priority values hard-coded in the 43 * registry. Therefore, two different values must be stored. 44 * 45 * @param i_registry The string representation of a priority used in 46 * registry callouts. 47 * @param i_userData The string representation of a priority used in user 48 * data callouts. 49 */ 50 Priority(const std::string& i_registry, const std::string& i_userData) : 51 iv_registry(i_registry), iv_userData(i_userData) 52 {} 53 54 private: 55 /** The string representation of a priority used in registry callouts. */ 56 const std::string iv_registry; 57 58 /** The string representation of a priority used in user data callouts. */ 59 const std::string iv_userData; 60 61 public: 62 /** iv_registry accessor */ 63 const std::string& getRegistryString() const 64 { 65 return iv_registry; 66 } 67 68 /** iv_userData accessor */ 69 const std::string& getUserDataString() const 70 { 71 return iv_userData; 72 } 73 }; 74 75 // clang-format off 76 inline const Priority Priority::HIGH {"high", "H"}; 77 inline const Priority Priority::MED {"medium", "M"}; 78 inline const Priority Priority::MED_A{"medium_group_A","A"}; 79 inline const Priority Priority::MED_B{"medium_group_B","B"}; 80 inline const Priority Priority::MED_C{"medium_group_C","C"}; 81 inline const Priority Priority::LOW {"low", "L"}; 82 // clang-format on 83 84 /** @brief Container class for procedure callout service actions. */ 85 class Procedure 86 { 87 public: 88 /** Contact next level support. */ 89 static const Procedure NEXTLVL; 90 91 private: 92 /** 93 * @brief Constructor from components. 94 * @param i_string The string representation of the procedure used for 95 * callouts. 96 */ 97 explicit Procedure(const std::string& i_string) : iv_string(i_string) {} 98 99 private: 100 /** The string representation of the procedure used for callouts. */ 101 const std::string iv_string; 102 103 public: 104 /** iv_string accessor */ 105 std::string getString() const 106 { 107 return iv_string; 108 } 109 }; 110 111 inline const Procedure Procedure::NEXTLVL{"NEXTLVL"}; 112 113 /** @brief Container class for clock callout service actions. */ 114 class ClockType 115 { 116 public: 117 /** Oscillator reference clock 0. */ 118 static const ClockType OSC_REF_CLOCK_0; 119 120 /** Oscillator reference clock 1. */ 121 static const ClockType OSC_REF_CLOCK_1; 122 123 private: 124 /** 125 * @brief Constructor from components. 126 * @param i_string The string representation of the procedure used for 127 * callouts. 128 */ 129 explicit ClockType(const std::string& i_string) : iv_string(i_string) {} 130 131 private: 132 /** The string representation of the procedure used for callouts. */ 133 const std::string iv_string; 134 135 public: 136 /** iv_string accessor */ 137 std::string getString() const 138 { 139 return iv_string; 140 } 141 }; 142 143 inline const ClockType ClockType::OSC_REF_CLOCK_0{"OSC_REF_CLOCK_0"}; 144 inline const ClockType ClockType::OSC_REF_CLOCK_1{"OSC_REF_CLOCK_1"}; 145 146 } // namespace callout 147 148 } // namespace analyzer 149