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_VELOCITY_COMMAND__H 00041 #define __JAUS_MOBILITY_SET_VELOCITY_COMMAND__H 00042 00043 #include "jaus/core/message.h" 00044 #include "jaus/mobility/mobilitycodes.h" 00045 00046 namespace JAUS 00047 { 00055 class JAUS_MOBILITY_DLL SetVelocityCommand : public Message 00056 { 00057 public: 00065 class JAUS_MOBILITY_DLL PresenceVector : public JAUS::PresenceVector 00066 { 00067 public: 00068 const static Byte VelocityX = 0x01; 00069 const static Byte VelocityY = 0x02; 00070 const static Byte VelocityZ = 0x04; 00071 const static Byte RollRate = 0x08; 00072 const static Byte PitchRate = 0x10; 00073 const static Byte YawRate = 0x20; 00074 }; 00081 class JAUS_MOBILITY_DLL Limits : public JAUS::Limits 00082 { 00083 public: 00084 const static double MinVelocity; 00085 const static double MaxVelocity; 00086 const static double MinRotationalRate; 00087 const static double MaxRotationalRate; 00088 }; 00089 00090 // Command types when issuing commands. 00091 enum Command 00092 { 00093 SetCurrentCommand = 0, 00094 SetMaximumAllowedValues, 00095 SetMinimumAllowedValues, 00096 SetDefaultCommand 00097 }; 00098 SetVelocityCommand(const Address& dest = Address(), const Address& src = Address()); 00099 SetVelocityCommand(const SetVelocityCommand& message); 00100 ~SetVelocityCommand(); 00101 inline Byte SetCommandType(const Command type) { return mCommandType = type; } 00102 bool SetVelocityX(const double value); 00103 bool SetVelocityY(const double value); 00104 bool SetVelocityZ(const double value); 00105 bool SetRollRate(const double value); 00106 bool SetPitchRate(const double value); 00107 bool SetYawRate(const double value); 00108 inline Byte GetCommandType() const { return mCommandType; } 00109 inline double GetVelocityX() const { return mVelocityX; } 00110 inline double GetVelocityY() const { return mVelocityY; } 00111 inline double GetVelocityZ() const { return mVelocityZ; } 00112 inline double GetRollRate() const { return mRollRate; } 00113 inline double GetPitchRate() const { return mPitchRate; } 00114 inline double GetYawRate() const { return mYawRate; } 00115 virtual bool IsCommand() const { return true; } 00116 virtual int WriteMessageBody(Packet& packet) const; 00117 virtual int ReadMessageBody(const Packet& packet); 00118 virtual Message* Clone() const { return new SetVelocityCommand(*this); } 00119 virtual UInt GetPresenceVector() const { return mPresenceVector; } 00120 virtual UInt GetPresenceVectorSize() const { return BYTE_SIZE; } 00121 virtual UInt GetPresenceVectorMask() const { return 0x3F; } 00122 virtual UShort GetMessageCodeOfResponse() const { return 0; } 00123 virtual std::string GetMessageName() const { return "Set Velocity Command"; } 00124 virtual void ClearMessageBody(); 00125 virtual bool IsLargeDataSet(const unsigned int maxPayloadSize = 1437) const { return false; } 00126 virtual int RunTestCase() const; 00127 SetVelocityCommand& operator=(const SetVelocityCommand& message); 00128 protected: 00129 Byte mPresenceVector; 00130 Command mCommandType; 00131 double mVelocityX; 00132 double mVelocityY; 00133 double mVelocityZ; 00134 double mRollRate; 00135 double mPitchRate; 00136 double mYawRate; 00137 }; 00138 } 00139 00140 #endif 00141 /* End of File */