#include <CigiPositionRespV3.h>
Inheritance diagram for CigiPositionRespV3:
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) |
Definition at line 57 of file CigiPositionRespV3.h.
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] |
int CigiPositionRespV3::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 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
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 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 }