Go to the documentation of this file.00001
00026 #ifndef PROXIMITY_H
00027 #define PROXIMITY_H
00028
00029 #include <QDBusArgument>
00030
00031 #include <datatypes/unsigned.h>
00032 #include <datatypes/orientationdata.h>
00033
00037 class Proximity : public Unsigned
00038 {
00039 Q_OBJECT
00040
00041 Q_PROPERTY(int reflectance READ reflectance)
00042 Q_PROPERTY(int withinProximity READ withinProximity)
00043
00044 public:
00045
00049 Proximity() {}
00050
00056 Proximity(const ProximityData& data) :
00057 Unsigned(TimedUnsigned(data.timestamp_, data.withinProximity_)),
00058 data_(data.timestamp_, data.value_, data.withinProximity_)
00059 {}
00060
00066 Proximity(const Proximity& data) :
00067 Unsigned(data.UnsignedData()), data_(data.proximityData().timestamp_, data.proximityData().value_, data.proximityData().withinProximity_)
00068 {}
00069
00074 const ProximityData& proximityData() const { return data_; }
00075
00081 bool withinProximity() const { return data_.withinProximity_; }
00082
00088 int reflectance() const { return data_.value_; }
00089
00095 Proximity& operator=(const Proximity& origin)
00096 {
00097 data_ = origin.proximityData();
00098 return *this;
00099 }
00100
00107 bool operator==(const Proximity& right) const
00108 {
00109 ProximityData rdata = right.proximityData();
00110 return (data_.value_ == rdata.value_ &&
00111 data_.withinProximity_ == rdata.withinProximity_ &&
00112 data_.timestamp_ == rdata.timestamp_);
00113 }
00114
00115 private:
00116 ProximityData data_;
00118 friend const QDBusArgument &operator>>(const QDBusArgument &argument, Proximity& data);
00119 };
00120
00121 Q_DECLARE_METATYPE( Proximity )
00122
00123
00130 inline QDBusArgument &operator<<(QDBusArgument &argument, const Proximity &data)
00131 {
00132 argument.beginStructure();
00133 argument << data.proximityData().timestamp_ << data.proximityData().value_ << data.proximityData().withinProximity_;
00134 argument.endStructure();
00135 return argument;
00136 }
00137
00145 inline const QDBusArgument &operator>>(const QDBusArgument &argument, Proximity &data)
00146 {
00147 argument.beginStructure();
00148 argument >> data.data_.timestamp_ >> data.data_.value_ >> data.data_.withinProximity_;
00149 argument.endStructure();
00150 return argument;
00151 }
00152
00153 #endif // PROXIMITY_H