sensorfw
datatypes/compass.h
Go to the documentation of this file.
00001 
00027 #ifndef COMPASS_H
00028 #define COMPASS_H
00029 
00030 #include <QDBusArgument>
00031 
00032 #include <datatypes/orientationdata.h>
00033 
00037 class Compass : public QObject
00038 {
00039 public:
00040     Q_OBJECT
00041 
00042     Q_PROPERTY(int degrees READ degrees)
00043     Q_PROPERTY(int level READ level)
00044 
00045 public:
00046 
00050     Compass() {}
00051 
00058     Compass(const CompassData& data, bool declinationCorrection = true);
00059 
00065     Compass(const Compass& data);
00066 
00073     Compass(const Compass& data, bool declinationCorrection);
00074 
00079     const CompassData& data() const { return data_; }
00080 
00085     int degrees() const { return data_.degrees_; }
00086 
00091     int level() const { return data_.level_; }
00092 
00098     Compass& operator=(const Compass& origin)
00099     {
00100         data_ = origin.data();
00101         return *this;
00102     }
00103 
00110     bool operator==(const Compass& right) const
00111     {
00112         CompassData rdata = right.data();
00113         return (data_.degrees_ == rdata.degrees_ &&
00114                 data_.level_ == rdata.level_ &&
00115                 data_.timestamp_ == rdata.timestamp_);
00116     }
00117 
00118 private:
00119     CompassData data_;
00120 
00121     friend const QDBusArgument &operator>>(const QDBusArgument &argument, Compass& data);
00122 };
00123 
00124 Q_DECLARE_METATYPE( Compass )
00125 
00126 
00133 inline QDBusArgument &operator<<(QDBusArgument &argument, const Compass &data)
00134 {
00135     argument.beginStructure();
00136     argument << data.data().timestamp_ << data.data().degrees_ << data.data().rawDegrees_ << data.data().correctedDegrees_ << data.data().level_;
00137     argument.endStructure();
00138     return argument;
00139 }
00140 
00148 inline const QDBusArgument &operator>>(const QDBusArgument &argument, Compass &data)
00149 {
00150     argument.beginStructure();
00151     argument >> data.data_.timestamp_ >> data.data_.degrees_ >> data.data_.rawDegrees_ >> data.data_.correctedDegrees_ >> data.data_.level_;
00152     argument.endStructure();
00153     return argument;
00154 }
00155 
00156 #endif // COMPASS_H