Statusword.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 // std
4 #include <chrono>
5 #include <mutex>
6 #include <vector>
7 
8 // rokubimini
9 // #include "rokubimini/mode/ModeEnum.hpp"
11 
12 namespace rokubimini
13 {
21 {
22 public:
29  struct DataBits
30  {
31  uint32_t errorAdcSaturated_ : 1;
32  uint32_t errorAccSaturated_ : 1;
33  uint32_t errorGyroSaturated_ : 1;
34  uint32_t errorAdcOutOfSync_ : 1;
37  uint32_t fatalSupplyVoltage_ : 1;
38  uint32_t reserved1_ : 1;
39 
40  uint32_t reserved2_ : 8;
41 
42  uint32_t unused_ : 16;
43  };
44 
51  union Data
52  {
60 
67  uint32_t all_ = 0;
68 
75  Data() = default;
76 
85  explicit Data(const uint32_t data);
86 
95  bool operator==(const Data& other);
96 
105  bool operator!=(const Data& other);
106  };
107 
108 protected:
109  using TimePoint = std::chrono::system_clock::time_point;
110  using Duration = std::chrono::duration<double>;
111 
118  mutable std::recursive_mutex mutex_;
119 
127 
135 
136 public:
143  Statusword() = default;
144 
153  Statusword(const Statusword& statusword);
154 
162  explicit Statusword(const uint32_t data);
163  virtual ~Statusword() = default;
164 
174  Statusword& operator=(const Statusword& statusword);
175 
184  bool isEmpty() const;
185 
193  double getAge() const;
194 
202  TimePoint getStamp() const;
203 
211  void setData(const uint32_t data);
212 
220  uint32_t getData() const;
221 
222  // fsm::StateEnum getStateEnum() const;
223  // void setStateEnum(const fsm::StateEnum stateEnum);
224 
237  void getMessages(std::vector<std::string>& infos, std::vector<std::string>& warnings,
238  std::vector<std::string>& errors, std::vector<std::string>& fatals) const;
239 
254  void getMessagesDiff(Statusword& previousStatusword, std::vector<std::string>& infos,
255  std::vector<std::string>& warnings, std::vector<std::string>& errors,
256  std::vector<std::string>& fatals) const;
257 
265  bool hasErrorAdcSaturated() const;
266 
274  bool hasErrorAccSaturated() const;
275 
283  bool hasErrorGyroSaturated() const;
284 
292  bool hasErrorAdcOutOfSync() const;
293 
301  bool hasErrorSensingRangeExceeded() const;
302 
310  bool hasWarningOvertemperature() const;
311 
319  bool hasFatalSupplyVoltage() const;
320 };
321 
330 std::ostream& operator<<(std::ostream& os, const Statusword& statusword);
331 
332 } // namespace rokubimini
rokubimini::Statusword::DataBits::errorAdcSaturated_
uint32_t errorAdcSaturated_
Definition: Statusword.hpp:31
rokubimini::Statusword::DataBits::errorAdcOutOfSync_
uint32_t errorAdcOutOfSync_
Definition: Statusword.hpp:34
rokubimini::Statusword::getData
uint32_t getData() const
Gets the data variable.
Definition: Statusword.cpp:63
rokubimini::Statusword::Data
Data associated with a Status Word.
Definition: Statusword.hpp:51
rokubimini::Statusword::Data::operator!=
bool operator!=(const Data &other)
Checks if two Data are not equal.
Definition: Statusword.cpp:15
rokubimini::Statusword::hasErrorAccSaturated
bool hasErrorAccSaturated() const
Checks if the statusword has error ACC saturated.
Definition: Statusword.cpp:162
rokubimini::Statusword::Data::operator==
bool operator==(const Data &other)
Checks if two Data are equal.
Definition: Statusword.cpp:10
rokubimini::Statusword::DataBits::reserved1_
uint32_t reserved1_
Definition: Statusword.hpp:38
rokubimini::Statusword::DataBits::errorGyroSaturated_
uint32_t errorGyroSaturated_
Definition: Statusword.hpp:33
rokubimini::Statusword::stamp_
TimePoint stamp_
Timestamp associated with the Data.
Definition: Statusword.hpp:126
rokubimini::Statusword::DataBits::warningOvertemperature_
uint32_t warningOvertemperature_
Definition: Statusword.hpp:36
rokubimini::Statusword::getAge
double getAge() const
Gets the age variable.
Definition: Statusword.cpp:43
rokubimini::Statusword::hasErrorSensingRangeExceeded
bool hasErrorSensingRangeExceeded() const
Checks if the statusword has error sensing range exceeded.
Definition: Statusword.cpp:180
rokubimini::Statusword::setData
void setData(const uint32_t data)
Sets the data variable.
Definition: Statusword.cpp:56
rokubimini::Statusword::Data::Data
Data()=default
Default constructor.
rokubimini::Statusword::isEmpty
bool isEmpty() const
Checks whether the statusword is empty.
Definition: Statusword.cpp:37
rokubimini::operator<<
std::ostream & operator<<(std::ostream &os, const Statusword &statusword)
Outputs the statusword data to an output stream.
Definition: Statusword.cpp:198
rokubimini::Statusword::operator=
Statusword & operator=(const Statusword &statusword)
Assignment operator.
Definition: Statusword.cpp:29
rokubimini::Statusword::getMessagesDiff
void getMessagesDiff(Statusword &previousStatusword, std::vector< std::string > &infos, std::vector< std::string > &warnings, std::vector< std::string > &errors, std::vector< std::string > &fatals) const
Gets the different messages form the previous statusword.
Definition: Statusword.cpp:89
rokubimini::Statusword::hasFatalSupplyVoltage
bool hasFatalSupplyVoltage() const
Checks if the statusword has fatal supply voltage.
Definition: Statusword.cpp:192
rokubimini::Statusword::DataBits::fatalSupplyVoltage_
uint32_t fatalSupplyVoltage_
Definition: Statusword.hpp:37
rokubimini::Statusword::Data::all_
uint32_t all_
All the bits in a "raw" uint32_t format.
Definition: Statusword.hpp:67
StateEnum.hpp
rokubimini
Tests Configuration.
Definition: ForceTorqueCalibration.hpp:5
rokubimini::Statusword::DataBits::reserved2_
uint32_t reserved2_
Definition: Statusword.hpp:40
rokubimini::Statusword::DataBits::unused_
uint32_t unused_
Definition: Statusword.hpp:42
rokubimini::Statusword::getStamp
TimePoint getStamp() const
Gets the stamp variable.
Definition: Statusword.cpp:50
rokubimini::Statusword::TimePoint
std::chrono::system_clock::time_point TimePoint
Definition: Statusword.hpp:109
rokubimini::Statusword::hasErrorAdcSaturated
bool hasErrorAdcSaturated() const
Checks if the statusword has error ADC saturated.
Definition: Statusword.cpp:156
rokubimini::Statusword::data_
Data data_
The data variable.
Definition: Statusword.hpp:134
rokubimini::Statusword::Duration
std::chrono::duration< double > Duration
Definition: Statusword.hpp:110
rokubimini::Statusword::~Statusword
virtual ~Statusword()=default
rokubimini::Statusword::Statusword
Statusword()=default
Default constructor.
rokubimini::Statusword::Data::bits_
DataBits bits_
The bits of the data.
Definition: Statusword.hpp:59
rokubimini::Statusword::mutex_
std::recursive_mutex mutex_
Mutex enabling synchronization.
Definition: Statusword.hpp:118
rokubimini::Statusword::DataBits::errorAccSaturated_
uint32_t errorAccSaturated_
Definition: Statusword.hpp:32
rokubimini::Statusword::hasErrorGyroSaturated
bool hasErrorGyroSaturated() const
Checks if the statusword has error gyro saturated.
Definition: Statusword.cpp:168
rokubimini::Statusword::DataBits::errorSensingRangeExceeded_
uint32_t errorSensingRangeExceeded_
Definition: Statusword.hpp:35
rokubimini::Statusword::DataBits
Bits representing errors.
Definition: Statusword.hpp:29
rokubimini::Statusword::hasErrorAdcOutOfSync
bool hasErrorAdcOutOfSync() const
Checks if the statusword has error ADC out-of-sync.
Definition: Statusword.cpp:174
rokubimini::Statusword
Class representing the different states the communication or the sensors can be in.
Definition: Statusword.hpp:20
rokubimini::Statusword::getMessages
void getMessages(std::vector< std::string > &infos, std::vector< std::string > &warnings, std::vector< std::string > &errors, std::vector< std::string > &fatals) const
Gets all the messages relevant to statuswords.
Definition: Statusword.cpp:82
rokubimini::Statusword::hasWarningOvertemperature
bool hasWarningOvertemperature() const
Checks if the statusword has warning over temperature.
Definition: Statusword.cpp:186


rokubimini
Author(s):
autogenerated on Sat Apr 15 2023 02:53:52