CigiPositionReqV3.cpp

Go to the documentation of this file.
00001 
00052 #define _EXPORT_CCL_
00053 
00054 #include "CigiPositionReqV3.h"
00055 #include "CigiSwapping.h"
00056 #include "CigiExceptions.h"
00057 
00058 
00059 // ====================================================================
00060 // Construction/Destruction
00061 // ====================================================================
00062 
00063 
00064 // ================================================
00065 // CigiPositionReqV3
00066 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00067 CigiPositionReqV3::CigiPositionReqV3()
00068 {
00069 
00070    PacketID = CIGI_POSITION_REQ_PACKET_ID_V3;
00071    PacketSize = CIGI_POSITION_REQ_PACKET_SIZE_V3;
00072    Version = 3;
00073    MinorVersion = 0;
00074 
00075    ObjectID = 0;
00076    ArtPartID = 0;
00077    UpdateMode = OneShot;
00078    ObjectClass = Entity;
00079    CoordSys = Geodetic;
00080 
00081 }
00082 
00083 // ================================================
00084 // ~CigiPositionReqV3
00085 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00086 CigiPositionReqV3::~CigiPositionReqV3()
00087 {
00088 
00089 }
00090 
00091 // ====================================================================
00092 // Pack and Unpack
00093 // ====================================================================
00094 
00095 // ================================================
00096 // Pack
00097 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00098 int CigiPositionReqV3::Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const
00099 {
00100    PackPointer CDta;
00101 
00102    CigiBasePositionReq * Data = ( CigiBasePositionReq *)Base;
00103 
00104    CDta.c = Buff;
00105 
00106    *CDta.c++ = PacketID;
00107    *CDta.c++ = PacketSize;
00108 
00109    *CDta.s++ = Data->ObjectID;
00110    *CDta.c++ = Data->ArtPartID;
00111 
00112    Cigi_uint8 HDta = Data->UpdateMode & 0x01;
00113    HDta |= (Data->ObjectClass << 1) & 0x0e;
00114    HDta |= (Data->CoordSys << 4) & 0x30;
00115    *CDta.c++ = HDta;
00116 
00117    *CDta.s++ = 0;
00118 
00119    return(PacketSize);
00120 
00121 }
00122 
00123 // ================================================
00124 // Unpack
00125 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00126 int CigiPositionReqV3::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec)
00127 {
00128    PackPointer CDta;
00129 
00130    CDta.c = Buff;
00131 
00132    CDta.c += 2;  // Step over packet id and size
00133 
00134    if(!Swap)
00135       ObjectID = *CDta.s++;
00136    else
00137       CigiSwap2(&ObjectID, CDta.s++);
00138 
00139    ArtPartID = *CDta.c++;
00140 
00141    Cigi_uint8 HDta = *CDta.c++;
00142    UpdateMode = (UpdateModeGrp)(HDta & 0x01);
00143    ObjectClass = (ObjectClassGrp)((HDta >> 1) & 0x07);
00144    CoordSys = (CoordSysGrp)((HDta >> 4) & 0x03);
00145 
00146 
00147    return(PacketSize);
00148 
00149 }
00150 
00151 
00152 
00153 // ====================================================================
00154 // Accessors
00155 // ====================================================================
00156 
00157 

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