sensorfw
|
00001 00028 #ifndef MAGNETICFIELDDATA_H 00029 #define MAGNETICFIELDDATA_H 00030 00031 #include <QDBusArgument> 00032 #include <datatypes/orientationdata.h> 00033 00037 class MagneticField : public QObject 00038 { 00039 public: 00040 Q_OBJECT; 00041 00042 public: 00043 00047 MagneticField() : QObject() {} 00048 00054 MagneticField(const CalibratedMagneticFieldData& calibratedData) : QObject() { 00055 data_.timestamp_ = calibratedData.timestamp_; 00056 data_.level_ = calibratedData.level_; 00057 data_.x_ = calibratedData.x_; 00058 data_.y_ = calibratedData.y_; 00059 data_.z_ = calibratedData.z_; 00060 data_.rx_ = calibratedData.rx_; 00061 data_.ry_ = calibratedData.ry_; 00062 data_.rz_ = calibratedData.rz_; 00063 } 00064 00070 MagneticField(const MagneticField& data) : QObject() { 00071 data_.timestamp_ = data.data_.timestamp_; 00072 data_.level_ = data.data_.level_; 00073 data_.x_ = data.data_.x_; 00074 data_.y_ = data.data_.y_; 00075 data_.z_ = data.data_.z_; 00076 data_.rx_ = data.data_.rx_; 00077 data_.ry_ = data.data_.ry_; 00078 data_.rz_ = data.data_.rz_; 00079 } 00080 00086 const CalibratedMagneticFieldData& data() const { return data_; } 00087 00093 MagneticField& operator=(const MagneticField& origin) 00094 { 00095 data_.timestamp_ = origin.data_.timestamp_; 00096 data_.level_ = origin.data_.level_; 00097 data_.x_ = origin.data_.x_; 00098 data_.y_ = origin.data_.y_; 00099 data_.z_ = origin.data_.z_; 00100 data_.rx_ = origin.data_.rx_; 00101 data_.ry_ = origin.data_.ry_; 00102 data_.rz_ = origin.data_.rz_; 00103 00104 return *this; 00105 } 00106 00113 bool operator==(const MagneticField& right) const 00114 { 00115 CalibratedMagneticFieldData rdata = right.data(); 00116 return (data_.x_ == rdata.x_ && 00117 data_.y_ == rdata.y_ && 00118 data_.z_ == rdata.z_ && 00119 data_.rx_ == rdata.rx_ && 00120 data_.ry_ == rdata.ry_ && 00121 data_.rz_ == rdata.rz_ && 00122 data_.level_ == rdata.level_ && 00123 data_.timestamp_ == rdata.timestamp_); 00124 } 00125 00130 int x() const { return data_.x_; } 00131 00136 int y() const { return data_.y_; } 00137 00142 int z() const { return data_.z_; } 00143 00148 int rx() const { return data_.rx_; } 00149 00154 int ry() const { return data_.ry_; } 00155 00160 int rz() const { return data_.rz_; } 00161 00166 int level() const { return data_.level_; } 00167 00172 const quint64& timestamp() const { return data_.timestamp_; } 00173 00174 private: 00175 CalibratedMagneticFieldData data_; 00177 friend const QDBusArgument &operator>>(const QDBusArgument &argument, MagneticField& data); 00178 }; 00179 00180 Q_DECLARE_METATYPE( MagneticField ) 00181 00182 00189 inline QDBusArgument &operator<<(QDBusArgument &argument, const MagneticField &data) 00190 { 00191 argument.beginStructure(); 00192 argument << data.data().timestamp_ << data.data().level_; 00193 argument << data.data().x_ << data.data().y_ << data.data().z_; 00194 argument << data.data().rx_ << data.data().ry_ << data.data().rz_; 00195 argument.endStructure(); 00196 return argument; 00197 } 00198 00206 inline const QDBusArgument &operator>>(const QDBusArgument &argument, MagneticField &data) 00207 { 00208 argument.beginStructure(); 00209 argument >> data.data_.timestamp_ >> data.data_.level_; 00210 argument >> data.data_.x_ >> data.data_.y_ >> data.data_.z_; 00211 argument >> data.data_.rx_ >> data.data_.ry_ >> data.data_.rz_; 00212 argument.endStructure(); 00213 return argument; 00214 } 00215 00216 #endif // MAGNETICFIELDDATA_H