CigiEnvRgnCtrlV3 Class Reference

#include <CigiEnvRgnCtrlV3.h>

Inheritance diagram for CigiEnvRgnCtrlV3:

CigiBaseEnvRgnCtrl CigiBasePacket List of all members.

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)

Detailed Description

Definition at line 57 of file CigiEnvRgnCtrlV3.h.


Constructor & Destructor Documentation

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]

General Destructor

Definition at line 94 of file CigiEnvRgnCtrlV3.cpp.

00095 {
00096 
00097 }


Member Function Documentation

int CigiEnvRgnCtrlV3::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 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

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 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 }


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