CigiTrajectoryDefV3.cpp

Go to the documentation of this file.
00001 
00052 #include <math.h>
00053 
00054 #define _EXPORT_CCL_
00055 
00056 #include "CigiTrajectoryDefV3.h"
00057 #include "CigiSwapping.h"
00058 #include "CigiExceptions.h"
00059 
00060 
00061 // ====================================================================
00062 // Construction/Destruction
00063 // ====================================================================
00064 
00065 
00066 // ================================================
00067 // CigiTrajectoryDefV3
00068 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00069 CigiTrajectoryDefV3::CigiTrajectoryDefV3()
00070 {
00071 
00072    PacketID = CIGI_TRAJECTORY_DEF_PACKET_ID_V3;
00073    PacketSize = CIGI_TRAJECTORY_DEF_PACKET_SIZE_V3;
00074    Version = 3;
00075    MinorVersion = 0;
00076 
00077    EntityID = 0;
00078    Accel = 0.0;
00079    RetardationRate = 0.0;
00080    TermVel = 0.0;
00081    Xoff = 0.0;
00082    Yoff = 0.0;
00083    Zoff = 0.0;
00084    AccelX = 0.0f;
00085    AccelY = 0.0f;
00086    AccelZ = 0.0f;
00087 
00088 }
00089 
00090 // ================================================
00091 // ~CigiTrajectoryDefV3
00092 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00093 CigiTrajectoryDefV3::~CigiTrajectoryDefV3()
00094 {
00095 
00096 }
00097 
00098 // ====================================================================
00099 // Pack and Unpack
00100 // ====================================================================
00101 
00102 // ================================================
00103 // Pack
00104 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00105 int CigiTrajectoryDefV3::Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const
00106 {
00107    PackPointer CDta;
00108 
00109    CigiBaseTrajectoryDef * Data = ( CigiBaseTrajectoryDef *)Base;
00110 
00111    CDta.c = Buff;
00112 
00113    *CDta.c++ = PacketID;
00114    *CDta.c++ = PacketSize;
00115 
00116    *CDta.s++ = Data->EntityID;
00117    *CDta.f++ = Data->AccelX;
00118    *CDta.f++ = Data->AccelY;
00119    *CDta.f++ = Data->AccelZ;
00120    *CDta.f++ = Data->RetardationRate;
00121    *CDta.f++ = Data->TermVel;
00122 
00123    return(PacketSize);
00124 
00125 }
00126 
00127 // ================================================
00128 // Unpack
00129 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00130 int CigiTrajectoryDefV3::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec)
00131 {
00132    PackPointer CDta;
00133 
00134    CDta.c = Buff;
00135 
00136    CDta.c += 2;  // Step over packet id and size
00137 
00138    if(!Swap)
00139    {
00140       EntityID = *CDta.s++;
00141       AccelX = *CDta.f++;
00142       AccelY = *CDta.f++;
00143       AccelZ = *CDta.f++;
00144       RetardationRate = *CDta.f++;
00145       TermVel = *CDta.f++;
00146    }
00147    else
00148    {
00149       CigiSwap2(&EntityID, CDta.s++);
00150       CigiSwap4(&AccelX, CDta.f++);
00151       CigiSwap4(&AccelY, CDta.f++);
00152       CigiSwap4(&AccelZ, CDta.f++);
00153       CigiSwap4(&RetardationRate, CDta.f++);
00154       CigiSwap4(&TermVel, CDta.f++);
00155    }
00156 
00157    Accel = (float)sqrt((double)((AccelX*AccelX) + (AccelY*AccelY) + (AccelZ*AccelZ)));
00158 
00159    Xoff = 0.0;
00160    Yoff = 0.0;
00161    Zoff = 0.0;
00162 
00163    return(PacketSize);
00164 
00165 }
00166 
00167 
00168 
00169 // ====================================================================
00170 // Accessors
00171 // ====================================================================
00172 
00173 
00174 // ================================================
00175 // AccelX
00176 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00177 int CigiTrajectoryDefV3::SetAccelX(const float AccelIn, bool bndchk)
00178 {
00179    AccelX = AccelIn;
00180    Accel = (float)sqrt((double)((AccelX*AccelX) + (AccelY*AccelY) + (AccelZ*AccelZ)));
00181 
00182    return(CIGI_SUCCESS);
00183 }
00184 
00185 
00186 // ================================================
00187 // AccelY
00188 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00189 int CigiTrajectoryDefV3::SetAccelY(const float AccelIn, bool bndchk)
00190 {
00191    AccelY = AccelIn;
00192    Accel = (float)sqrt((double)((AccelX*AccelX) + (AccelY*AccelY) + (AccelZ*AccelZ)));
00193 
00194    return(CIGI_SUCCESS);
00195 }
00196 
00197 
00198 // ================================================
00199 // AccelZ
00200 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00201 int CigiTrajectoryDefV3::SetAccelZ(const float AccelIn, bool bndchk)
00202 {
00203    AccelZ = AccelIn;
00204    Accel = (float)sqrt((double)((AccelX*AccelX) + (AccelY*AccelY) + (AccelZ*AccelZ)));
00205 
00206    return(CIGI_SUCCESS);
00207 }

Generated on Wed Apr 29 08:59:59 2009 for CCL by  doxygen 1.4.7