Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 #ifndef RMP_FAULT_H
00040 #define RMP_FAULT_H
00041
00042 #include <cstdint>
00043 #include <string>
00044 #include <vector>
00045 #include <memory>
00046
00047 #include <RmpUserDefinedFeedbackType.h>
00048
00049 namespace segway
00050 {
00051 static const uint32_t NO_FAULT = 0x00000000;
00052
00053 typedef std::vector<std::string> FaultStatusDescription;
00054
00059 enum FaultGroup
00060 {
00061 TRANSIENT = 0,
00062 CRITICAL,
00063 COMM,
00064 SENSORS,
00065 BSA,
00066 MCU,
00067 ARCHITECTURE,
00068 INTERNAL
00069 };
00070
00071 class RmpFault;
00072
00077 class FaultPacking
00078 {
00079 friend class RmpFault;
00080
00081 public:
00086 FaultPacking(const FaultPacking& rOther)
00087 : m_Shift(rOther.m_Shift)
00088 , m_Mask(rOther.m_Mask)
00089 , m_Group(rOther.m_Group)
00090 {}
00091
00096 FaultPacking& operator=(const FaultPacking& rOther)
00097 {
00098 m_Shift = rOther.m_Shift;
00099 m_Mask = rOther.m_Mask;
00100 m_Group = rOther.m_Group;
00101 }
00102
00107 const uint32_t& GetShift() const;
00108
00113 const uint32_t& GetMask() const;
00114
00119 const FaultGroup& GetGroup() const;
00120
00121 private:
00128 FaultPacking(uint32_t shift, uint32_t mask, FaultGroup group)
00129 : m_Shift(shift)
00130 , m_Mask(mask)
00131 , m_Group(group)
00132 {}
00133
00137 FaultPacking()
00138 {}
00139
00143 uint32_t m_Shift;
00144
00148 uint32_t m_Mask;
00149
00153 FaultGroup m_Group;
00154 };
00155
00156 typedef std::vector<FaultPacking> FaultPackingList;
00157 typedef std::vector<UserDefinedFeedbackType> FeedbackTypeList;
00158 typedef std::vector<std::string> FaultDecodeList;
00159
00164 class RmpFault
00165 {
00166 public:
00171 static const FeedbackTypeList& GetFaultFeedbackEntryList();
00172
00178 static const FaultPackingList& GetFaultPackingList(UserDefinedFeedbackType feedbackType);
00179
00185 static const FaultDecodeList& GetFaultDecodeList(FaultGroup faultGroup);
00186
00187 private:
00196 RmpFault();
00197
00201 RmpFault(const RmpFault&);
00202
00206 RmpFault& operator=(const RmpFault&);
00207
00211 ~RmpFault();
00212
00216 struct Impl;
00217 std::unique_ptr<Impl> m_pImpl;
00218 };
00219
00220 }
00221
00222 #endif // RMP_FAULT_H