fixed some compiler warnings
added equality checks to sensor-data classes more robust sensor reader [fixed some issues] added support for gps added support for compass added sensor-data-writer added test-cases minor changes
This commit is contained in:
56
sensors/imu/CompassData.h
Normal file
56
sensors/imu/CompassData.h
Normal file
@@ -0,0 +1,56 @@
|
||||
#ifndef COMPASSDATA_H
|
||||
#define COMPASSDATA_H
|
||||
|
||||
|
||||
#include <cmath>
|
||||
#include <sstream>
|
||||
|
||||
|
||||
/** data received from a compass sensor */
|
||||
struct CompassData {
|
||||
|
||||
/** azimuth angle. NAN if not available */
|
||||
float azimuth = NAN;
|
||||
|
||||
/** describes the sensor's quality */
|
||||
float quality01 = 0;
|
||||
|
||||
|
||||
/** empty ctor */
|
||||
CompassData() : azimuth(NAN) {;}
|
||||
|
||||
/** data ctor */
|
||||
CompassData(const float azimuth) : azimuth(azimuth), quality01(0) {;}
|
||||
|
||||
/** data ctor */
|
||||
CompassData(const float azimuth, const float quality01) : azimuth(azimuth), quality01(quality01) {;}
|
||||
|
||||
/** get an instance describing invalid data */
|
||||
static CompassData INVALID() {
|
||||
return CompassData(NAN);
|
||||
}
|
||||
|
||||
/** convert to string */
|
||||
std::string asString() const {
|
||||
std::stringstream ss;
|
||||
ss << "(" << azimuth << ")";
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
/** is the compass data valid? [compass present] */
|
||||
bool isValid() const {
|
||||
return azimuth == azimuth;
|
||||
}
|
||||
|
||||
bool operator == (const CompassData& o) const {
|
||||
return EQ_OR_NAN(azimuth, o.azimuth) &&
|
||||
EQ_OR_NAN(quality01, o.quality01);
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
static inline bool EQ_OR_NAN(const float a, const float b) {return (a==b) || ( (a!=a) && (b!=b) );}
|
||||
|
||||
};
|
||||
|
||||
#endif // COMPASSDATA_H
|
||||
Reference in New Issue
Block a user