#include <CigiEnvRgnCtrlV3.h>
Inheritance diagram for CigiEnvRgnCtrlV3:
Public Member Functions | |
CigiEnvRgnCtrlV3 () | |
virtual | ~CigiEnvRgnCtrlV3 () |
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 CigiEnvRgnCtrlV3.h.
CigiEnvRgnCtrlV3::CigiEnvRgnCtrlV3 | ( | ) |
General Constructor
Definition at line 67 of file CigiEnvRgnCtrlV3.cpp.
References CigiBaseEnvRgnCtrl::Aerosol, CIGI_ENV_RGN_CTRL_PACKET_ID_V3, CIGI_ENV_RGN_CTRL_PACKET_SIZE_V3, CigiBaseEnvRgnCtrl::CornerRadius, CigiBaseEnvRgnCtrl::Inactive, CigiBaseEnvRgnCtrl::Lat, CigiBaseEnvRgnCtrl::Lon, CigiBaseEnvRgnCtrl::MaritimeSurface, CigiBasePacket::MinorVersion, CigiBasePacket::PacketID, CigiBasePacket::PacketSize, CigiBaseEnvRgnCtrl::RegionID, CigiBaseEnvRgnCtrl::RgnState, CigiBaseEnvRgnCtrl::Rotation, CigiBaseEnvRgnCtrl::TerrestrialSurface, CigiBaseEnvRgnCtrl::Transition, CigiBaseEnvRgnCtrl::UseLast, CigiBasePacket::Version, CigiBaseEnvRgnCtrl::WeatherProp, CigiBaseEnvRgnCtrl::XSize, and CigiBaseEnvRgnCtrl::YSize.
00068 { 00069 00070 PacketID = CIGI_ENV_RGN_CTRL_PACKET_ID_V3; 00071 PacketSize = CIGI_ENV_RGN_CTRL_PACKET_SIZE_V3; 00072 Version = 3; 00073 MinorVersion = 0; 00074 00075 RegionID = 0; 00076 RgnState = Inactive; 00077 WeatherProp = UseLast; 00078 Aerosol = UseLast; 00079 MaritimeSurface = UseLast; 00080 TerrestrialSurface = UseLast; 00081 Lat = 0.0; 00082 Lon = 0.0; 00083 XSize = 0.0; 00084 YSize = 0.0; 00085 CornerRadius = 0.0; 00086 Rotation = 0.0; 00087 Transition = 0.0; 00088 00089 }
CigiEnvRgnCtrlV3::~CigiEnvRgnCtrlV3 | ( | ) | [virtual] |
int CigiEnvRgnCtrlV3::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 CigiBaseEnvRgnCtrl.
Definition at line 106 of file CigiEnvRgnCtrlV3.cpp.
References CigiBaseEnvRgnCtrl::Aerosol, PackPointerUnion::c, CigiBaseEnvRgnCtrl::CornerRadius, PackPointerUnion::d, PackPointerUnion::f, PackPointerUnion::l, CigiBaseEnvRgnCtrl::Lat, CigiBaseEnvRgnCtrl::Lon, CigiBaseEnvRgnCtrl::MaritimeSurface, CigiBasePacket::PacketID, CigiBasePacket::PacketSize, CigiBaseEnvRgnCtrl::RegionID, CigiBaseEnvRgnCtrl::RgnState, CigiBaseEnvRgnCtrl::Rotation, PackPointerUnion::s, CigiBaseEnvRgnCtrl::TerrestrialSurface, CigiBaseEnvRgnCtrl::Transition, CigiBaseEnvRgnCtrl::WeatherProp, CigiBaseEnvRgnCtrl::XSize, and CigiBaseEnvRgnCtrl::YSize.
00107 { 00108 PackPointer CDta; 00109 00110 CigiBaseEnvRgnCtrl * Data = ( CigiBaseEnvRgnCtrl *)Base; 00111 00112 CDta.c = Buff; 00113 00114 *CDta.c++ = PacketID; 00115 *CDta.c++ = PacketSize; 00116 00117 *CDta.s++ = Data->RegionID; 00118 00119 Cigi_uint8 MDta = Data->RgnState & 0x03; 00120 MDta |= (Data->WeatherProp << 2) & 0x04; 00121 MDta |= (Data->Aerosol << 3) & 0x08; 00122 MDta |= (Data->MaritimeSurface << 4) & 0x10; 00123 MDta |= (Data->TerrestrialSurface << 5) & 0x20; 00124 *CDta.c++ = MDta; 00125 00126 *CDta.c++ = 0; 00127 *CDta.s++ = 0; 00128 00129 *CDta.d++ = Data->Lat; 00130 *CDta.d++ = Data->Lon; 00131 *CDta.f++ = Data->XSize; 00132 *CDta.f++ = Data->YSize; 00133 *CDta.f++ = Data->CornerRadius; 00134 *CDta.f++ = Data->Rotation; 00135 *CDta.f++ = Data->Transition; 00136 *CDta.l++ = 0; 00137 00138 return(PacketSize); 00139 00140 }
int CigiEnvRgnCtrlV3::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 CigiBaseEnvRgnCtrl.
Definition at line 145 of file CigiEnvRgnCtrlV3.cpp.
References CigiBaseEnvRgnCtrl::Aerosol, PackPointerUnion::c, CigiSwap2(), CigiSwap4(), CigiSwap8(), CigiBaseEnvRgnCtrl::CornerRadius, PackPointerUnion::d, PackPointerUnion::f, CigiBaseEnvRgnCtrl::Lat, CigiBaseEnvRgnCtrl::Lon, CigiBaseEnvRgnCtrl::MaritimeSurface, CigiBasePacket::PacketSize, CigiBaseEnvRgnCtrl::RegionID, CigiBaseEnvRgnCtrl::RgnState, CigiBaseEnvRgnCtrl::Rotation, PackPointerUnion::s, CigiBaseEnvRgnCtrl::TerrestrialSurface, CigiBaseEnvRgnCtrl::Transition, CigiBaseEnvRgnCtrl::WeatherProp, CigiBaseEnvRgnCtrl::XSize, and CigiBaseEnvRgnCtrl::YSize.
00146 { 00147 PackPointer CDta; 00148 00149 CDta.c = Buff; 00150 00151 CDta.c += 2; // Step over packet id and size 00152 00153 if(!Swap) 00154 { 00155 RegionID = *CDta.s++; 00156 00157 Cigi_uint8 HDta = *CDta.c++; 00158 RgnState = (RgnStateGrp)(HDta & 0x03); 00159 WeatherProp = (MergeCtrlGrp)((HDta >> 2) & 0x01); 00160 Aerosol = (MergeCtrlGrp)((HDta >> 3) & 0x01); 00161 MaritimeSurface = (MergeCtrlGrp)((HDta >> 4) & 0x01); 00162 TerrestrialSurface = (MergeCtrlGrp)((HDta >> 5) & 0x01); 00163 00164 CDta.c += 3; 00165 00166 Lat = *CDta.d++; 00167 Lon = *CDta.d++; 00168 XSize = *CDta.f++; 00169 YSize = *CDta.f++; 00170 CornerRadius = *CDta.f++; 00171 Rotation = *CDta.f++; 00172 Transition = *CDta.f++; 00173 } 00174 else 00175 { 00176 CigiSwap2(&RegionID, CDta.s++); 00177 00178 Cigi_uint8 HDta = *CDta.c++; 00179 RgnState = (RgnStateGrp)(HDta & 0x03); 00180 WeatherProp = (MergeCtrlGrp)((HDta >> 2) & 0x01); 00181 Aerosol = (MergeCtrlGrp)((HDta >> 3) & 0x01); 00182 MaritimeSurface = (MergeCtrlGrp)((HDta >> 4) & 0x01); 00183 TerrestrialSurface = (MergeCtrlGrp)((HDta >> 5) & 0x01); 00184 00185 CDta.c += 3; 00186 00187 CigiSwap8(&Lat, CDta.d++); 00188 CigiSwap8(&Lon, CDta.d++); 00189 CigiSwap4(&XSize, CDta.f++); 00190 CigiSwap4(&YSize, CDta.f++); 00191 CigiSwap4(&CornerRadius, CDta.f++); 00192 CigiSwap4(&Rotation, CDta.f++); 00193 CigiSwap4(&Transition, CDta.f++); 00194 } 00195 00196 return(PacketSize); 00197 00198 }