#include <CigiPositionReqV3.h>
Inheritance diagram for CigiPositionReqV3:
Public Member Functions | |
CigiPositionReqV3 () | |
virtual | ~CigiPositionReqV3 () |
virtual int | Pack (CigiBasePacket *Base, Cigi_uint8 *Buff, void *Spec) const |
virtual int | Unpack (Cigi_uint8 *Buff, bool Swap, void *Spec) |
Definition at line 57 of file CigiPositionReqV3.h.
CigiPositionReqV3::CigiPositionReqV3 | ( | ) |
General Constructor
Definition at line 67 of file CigiPositionReqV3.cpp.
References CigiBasePositionReq::ArtPartID, CIGI_POSITION_REQ_PACKET_ID_V3, CIGI_POSITION_REQ_PACKET_SIZE_V3, CigiBasePositionReq::CoordSys, CigiBasePositionReq::Entity, CigiBasePositionReq::Geodetic, CigiBasePacket::MinorVersion, CigiBasePositionReq::ObjectClass, CigiBasePositionReq::ObjectID, CigiBasePositionReq::OneShot, CigiBasePacket::PacketID, CigiBasePacket::PacketSize, CigiBasePositionReq::UpdateMode, and CigiBasePacket::Version.
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 }
CigiPositionReqV3::~CigiPositionReqV3 | ( | ) | [virtual] |
int CigiPositionReqV3::Pack | ( | CigiBasePacket * | Base, | |
Cigi_uint8 * | Buff, | |||
void * | Spec | |||
) | const [virtual] |
The virtual Pack function for CIGI 3
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. |
Implements CigiBasePositionReq.
Definition at line 98 of file CigiPositionReqV3.cpp.
References CigiBasePositionReq::ArtPartID, PackPointerUnion::c, CigiBasePositionReq::CoordSys, CigiBasePositionReq::ObjectClass, CigiBasePositionReq::ObjectID, CigiBasePacket::PacketID, CigiBasePacket::PacketSize, PackPointerUnion::s, and CigiBasePositionReq::UpdateMode.
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 }
int CigiPositionReqV3::Unpack | ( | Cigi_uint8 * | Buff, | |
bool | Swap, | |||
void * | Spec | |||
) | [virtual] |
The virtual Unpack function for CIGI 3
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. |
Implements CigiBasePositionReq.
Definition at line 126 of file CigiPositionReqV3.cpp.
References CigiBasePositionReq::ArtPartID, PackPointerUnion::c, CigiSwap2(), CigiBasePositionReq::CoordSys, CigiBasePositionReq::ObjectClass, CigiBasePositionReq::ObjectID, CigiBasePacket::PacketSize, PackPointerUnion::s, and CigiBasePositionReq::UpdateMode.
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 }