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_SET_LOCAL_VECTOR__H 00041 #define __JAUS_MOBILITY_SET_LOCAL_VECTOR__H 00042 00043 #include "jaus/core/message.h" 00044 #include "jaus/mobility/mobilitycodes.h" 00045 00046 namespace JAUS 00047 { 00059 class JAUS_MOBILITY_DLL SetLocalVector : public Message 00060 { 00061 public: 00069 class JAUS_MOBILITY_DLL PresenceVector : public JAUS::PresenceVector 00070 { 00071 public: 00072 const static Byte Speed = 0x01; 00073 const static Byte Z = 0x02; 00074 const static Byte Heading = 0x04; 00075 const static Byte Roll = 0x08; 00076 const static Byte Pitch = 0x10; 00077 }; 00084 class JAUS_MOBILITY_DLL Limits : public JAUS::Limits 00085 { 00086 public: 00087 const static double MinSpeed; 00088 const static double MaxSpeed; 00089 const static double MinElevation; 00090 const static double MaxElevation; 00091 const static double MinAngle; 00092 const static double MaxAngle; 00093 }; 00094 SetLocalVector(const Address& dest = Address(), const Address& src = Address()); 00095 SetLocalVector(const SetLocalVector& message); 00096 ~SetLocalVector(); 00097 bool SetSpeed(const double value); 00098 bool SetZ(const double value); 00099 bool SetHeading(const double radians); 00100 bool SetRoll(const double radians); 00101 bool SetPitch(const double radians); 00102 inline double GetSpeed() const { return mSpeed; } 00103 inline double GetZ() const { return mZ; } 00104 inline double GetHeading() const { return mHeading; } 00105 inline double GetRoll() const { return mRoll; } 00106 inline double GetPitch() const { return mPitch; } 00107 virtual bool IsCommand() const { return true; } 00108 virtual int WriteMessageBody(Packet& packet) const; 00109 virtual int ReadMessageBody(const Packet& packet); 00110 virtual Message* Clone() const { return new SetLocalVector(*this); } 00111 virtual UInt GetPresenceVector() const { return mPresenceVector; } 00112 virtual UInt GetPresenceVectorSize() const { return BYTE_SIZE; } 00113 virtual UInt GetPresenceVectorMask() const { return 0x1F; } 00114 virtual UShort GetMessageCodeOfResponse() const { return 0; } 00115 virtual std::string GetMessageName() const { return "Set Local Vector"; } 00116 virtual void ClearMessageBody(); 00117 virtual bool IsLargeDataSet(const unsigned int maxPayloadSize = 1437) const { return false; } 00118 virtual int RunTestCase() const; 00119 SetLocalVector& operator=(const SetLocalVector& message); 00120 protected: 00121 Byte mPresenceVector; 00122 double mSpeed; 00123 double mZ; 00124 double mHeading; 00125 double mRoll; 00126 double mPitch; 00127 00128 }; 00129 } 00130 00131 #endif 00132 /* End of File */