CigiPositionRespV3 Class Reference

#include <CigiPositionRespV3.h>

Inheritance diagram for CigiPositionRespV3:

CigiBasePositionResp CigiBasePacket List of all members.

Public Member Functions

 CigiPositionRespV3 ()
virtual ~CigiPositionRespV3 ()
virtual int Pack (CigiBasePacket *Base, Cigi_uint8 *Buff, void *Spec) const
virtual int Unpack (Cigi_uint8 *Buff, bool Swap, void *Spec)

Detailed Description

Definition at line 57 of file CigiPositionRespV3.h.


Constructor & Destructor Documentation

CigiPositionRespV3::CigiPositionRespV3 (  ) 

General Constructor

Definition at line 67 of file CigiPositionRespV3.cpp.

References CigiBasePositionResp::AltOrZoff, CigiBasePositionResp::ArtPartID, CIGI_POSITION_RESP_PACKET_ID_V3, CIGI_POSITION_RESP_PACKET_SIZE_V3, CigiBasePositionResp::CoordSys, CigiBasePositionResp::Entity, CigiBasePositionResp::Geodetic, CigiBasePositionResp::LatOrXoff, CigiBasePositionResp::LonOrYoff, CigiBasePacket::MinorVersion, CigiBasePositionResp::ObjectClass, CigiBasePositionResp::ObjectID, CigiBasePacket::PacketID, CigiBasePacket::PacketSize, CigiBasePositionResp::Pitch, CigiBasePositionResp::Roll, CigiBasePacket::Version, and CigiBasePositionResp::Yaw.

00068 {
00069 
00070    PacketID = CIGI_POSITION_RESP_PACKET_ID_V3;
00071    PacketSize = CIGI_POSITION_RESP_PACKET_SIZE_V3;
00072    Version = 3;
00073    MinorVersion = 0;
00074 
00075    ObjectID = 0;
00076    ArtPartID = 0;
00077    ObjectClass = Entity;
00078    CoordSys = Geodetic;
00079    LatOrXoff = 0.0;
00080    LonOrYoff = 0.0;
00081    AltOrZoff = 0.0;
00082    Roll = 0.0;
00083    Pitch = 0.0;
00084    Yaw = 0.0;
00085 
00086 }

CigiPositionRespV3::~CigiPositionRespV3 (  )  [virtual]

General Destructor

Definition at line 91 of file CigiPositionRespV3.cpp.

00092 {
00093 
00094 }


Member Function Documentation

int CigiPositionRespV3::Pack ( CigiBasePacket Base,
Cigi_uint8 Buff,
void *  Spec 
) const [virtual]

The virtual Pack function for CIGI 3

Parameters:
Base - A pointer to the instance of the packet to be packed. (Downcast to CigiBasePacket)
Buff - A pointer to the current pack point.
Spec - A pointer to special data - This is not used in this class.
Returns:
This returns CIGI_SUCCESS or an error code defined in CigiErrorCodes.h

Implements CigiBasePositionResp.

Definition at line 103 of file CigiPositionRespV3.cpp.

References CigiBasePositionResp::AltOrZoff, CigiBasePositionResp::ArtPartID, PackPointerUnion::c, CigiBasePositionResp::CoordSys, PackPointerUnion::d, PackPointerUnion::f, PackPointerUnion::l, CigiBasePositionResp::LatOrXoff, CigiBasePositionResp::LonOrYoff, CigiBasePositionResp::ObjectClass, CigiBasePositionResp::ObjectID, CigiBasePacket::PacketID, CigiBasePacket::PacketSize, CigiBasePositionResp::Pitch, CigiBasePositionResp::Roll, PackPointerUnion::s, and CigiBasePositionResp::Yaw.

00104 {
00105    PackPointer CDta;
00106 
00107    CigiBasePositionResp * Data = ( CigiBasePositionResp *)Base;
00108 
00109    CDta.c = Buff;
00110 
00111    *CDta.c++ = PacketID;
00112    *CDta.c++ = PacketSize;
00113 
00114    *CDta.s++ = Data->ObjectID;
00115    *CDta.c++ = Data->ArtPartID;
00116 
00117    Cigi_uint8 HDta = Data->ObjectClass & 0x07;
00118    HDta |= (Data->CoordSys << 3) & 0x18;
00119    *CDta.c++ = HDta;
00120 
00121    *CDta.s++ = 0;
00122 
00123    *CDta.d++ = Data->LatOrXoff;
00124    *CDta.d++ = Data->LonOrYoff;
00125    *CDta.d++ = Data->AltOrZoff;
00126    *CDta.f++ = Data->Roll;
00127    *CDta.f++ = Data->Pitch;
00128    *CDta.f++ = Data->Yaw;
00129 
00130    *CDta.l++ = 0;
00131 
00132    return(PacketSize);
00133 
00134 }

int CigiPositionRespV3::Unpack ( Cigi_uint8 Buff,
bool  Swap,
void *  Spec 
) [virtual]

The virtual Unpack function for CIGI 3

Parameters:
Buff - A pointer to the current pack point.
Swap - N/A for V1 & V2
Spec - A pointer to special data - This is not used in this class.
Returns:
This returns CIGI_SUCCESS or an error code defined in CigiErrorCodes.h

Implements CigiBasePositionResp.

Definition at line 139 of file CigiPositionRespV3.cpp.

References CigiBasePositionResp::AltOrZoff, CigiBasePositionResp::ArtPartID, PackPointerUnion::c, CigiSwap2(), CigiSwap4(), CigiSwap8(), CigiBasePositionResp::CoordSys, PackPointerUnion::d, PackPointerUnion::f, CigiBasePositionResp::LatOrXoff, CigiBasePositionResp::LonOrYoff, CigiBasePositionResp::ObjectClass, CigiBasePositionResp::ObjectID, CigiBasePacket::PacketSize, CigiBasePositionResp::Pitch, CigiBasePositionResp::Roll, PackPointerUnion::s, and CigiBasePositionResp::Yaw.

00140 {
00141    PackPointer CDta;
00142 
00143    CDta.c = Buff;
00144 
00145    CDta.c += 2;  // Step over packet id and size
00146 
00147    if(!Swap)
00148    {
00149       ObjectID = *CDta.s++;
00150       ArtPartID = *CDta.c++;
00151 
00152       Cigi_uint8 HDta = *CDta.c++;
00153       ObjectClass = (ObjectClassGrp)(HDta & 0x07);
00154       CoordSys = (CoordSysGrp)((HDta >> 3) & 0x03);
00155 
00156       CDta.s++;
00157 
00158       LatOrXoff = *CDta.d++;
00159       LonOrYoff = *CDta.d++;
00160       AltOrZoff = *CDta.d++;
00161       Roll = *CDta.f++;
00162       Pitch = *CDta.f++;
00163       Yaw = *CDta.f++;
00164    }
00165    else
00166    {
00167       CigiSwap2(&ObjectID, CDta.s++);
00168       ArtPartID = *CDta.c++;
00169 
00170       Cigi_uint8 HDta = *CDta.c++;
00171       ObjectClass = (ObjectClassGrp)(HDta & 0x07);
00172       CoordSys = (CoordSysGrp)((HDta >> 3) & 0x03);
00173 
00174       CDta.s++;
00175 
00176       CigiSwap8(&LatOrXoff, CDta.d++);
00177       CigiSwap8(&LonOrYoff, CDta.d++);
00178       CigiSwap8(&AltOrZoff, CDta.d++);
00179       CigiSwap4(&Roll, CDta.f++);
00180       CigiSwap4(&Pitch, CDta.f++);
00181       CigiSwap4(&Yaw, CDta.f++);
00182    }
00183 
00184    return(PacketSize);
00185 
00186 }


The documentation for this class was generated from the following files:
Generated on Wed Apr 29 09:00:10 2009 for CCL by  doxygen 1.4.7