00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018 00019 00020 00021 00022 00023 00024 00025 00026 00027 00028 00029 00030 00031 00032 00033 00034 00035 00036 00037 00038 00039 00040 #ifndef __JAUS_MOBILITY_REPORT_ACCELERATION_STATE__H 00041 #define __JAUS_MOBILITY_REPORT_ACCELERATION_STATE__H 00042 00043 #include "jaus/core/message.h" 00044 #include "jaus/mobility/mobilitycodes.h" 00045 00046 namespace JAUS 00047 { 00055 class JAUS_MOBILITY_DLL ReportAccelerationState : public Message 00056 { 00057 public: 00065 class JAUS_MOBILITY_DLL PresenceVector : public JAUS::PresenceVector 00066 { 00067 public: 00068 const static UShort AccelerationX = 0x0001; 00069 const static UShort AccelerationY = 0x0002; 00070 const static UShort AccelerationZ = 0x0004; 00071 const static UShort AccelerationRMS = 0x0008; 00072 const static UShort RollAcceleration = 0x0010; 00073 const static UShort PitchAcceleration = 0x0020; 00074 const static UShort YawAcceleration = 0x0040; 00075 const static UShort RotationalAccelerationRMS = 0x0080; 00076 const static UShort TimeStamp = 0x0100; 00077 }; 00084 class JAUS_MOBILITY_DLL Limits : public JAUS::Limits 00085 { 00086 public: 00087 const static double MinLinearAcceleration; 00088 const static double MaxLinearAcceleration; 00089 const static double MinAccelerationRMS; 00090 const static double MaxAccelerationRMS; 00091 const static double MinRotationalAcceleration; 00092 const static double MaxRotationalAcceleration; 00093 const static double MinRotationalAccelerationRMS; 00094 const static double MaxRotationalAccelerationRMS; 00095 }; 00096 ReportAccelerationState(const Address& dest = Address(), const Address& src = Address()); 00097 ReportAccelerationState(const ReportAccelerationState& message); 00098 ~ReportAccelerationState(); 00099 bool SetAccelerationX(const double value); 00100 bool SetAccelerationY(const double value); 00101 bool SetAccelerationZ(const double value); 00102 bool SetAccelerationRMS(const double value); 00103 bool SetRollAcceleration(const double radians); 00104 bool SetPitchAcceleration(const double value); 00105 bool SetYawAcceleration(const double value); 00106 bool SetRotationalAccelerationRMS(const double value); 00107 bool SetTimeStamp(const Time& time); 00108 inline double GetAccelerationX() const { return mAccelerationX; } 00109 inline double GetAccelerationY() const { return mAccelerationY; } 00110 inline double GetAccelerationZ() const { return mAccelerationZ; } 00111 inline double GetAccelerationRMS() const { return mAccelerationRMS; } 00112 inline double GetRollAcceleration() const { return mRollAcceleration; } 00113 inline double GetPitchAcceleration() const { return mPitchAcceleration; } 00114 inline double GetYawAcceleration() const { return mYawAcceleration; } 00115 inline double GetRotationalAccelerationRMS() const { return mRotationalAccelerationRMS; } 00116 inline Time GetTimeStamp() const { return mTimeStamp; } 00117 virtual bool IsCommand() const { return false; } 00118 virtual int WriteMessageBody(Packet& packet) const; 00119 virtual int ReadMessageBody(const Packet& packet); 00120 virtual Message* Clone() const { return new ReportAccelerationState(*this); } 00121 virtual UInt GetPresenceVector() const { return mPresenceVector; } 00122 virtual UInt GetPresenceVectorSize() const { return USHORT_SIZE; } 00123 virtual UInt GetPresenceVectorMask() const { return 0x01FF; } 00124 virtual UShort GetMessageCodeOfResponse() const { return 0; } 00125 virtual std::string GetMessageName() const { return "Report Acceleration State"; } 00126 virtual void ClearMessageBody(); 00127 virtual bool IsLargeDataSet(const unsigned int maxPayloadSize = 1437) const { return false; } 00128 virtual int RunTestCase() const; 00129 virtual void PrintMessageBody() const; 00130 ReportAccelerationState& operator=(const ReportAccelerationState& message); 00131 protected: 00132 UShort mPresenceVector; 00133 double mAccelerationX; 00134 double mAccelerationY; 00135 double mAccelerationZ; 00136 double mAccelerationRMS; 00137 double mRollAcceleration; 00138 double mPitchAcceleration; 00139 double mYawAcceleration; 00140 double mRotationalAccelerationRMS; 00141 Time mTimeStamp; 00142 00143 }; 00144 } 00145 00146 #endif 00147 /* End of File */