CigiWaveCtrlV3 Class Reference

#include <CigiWaveCtrlV3.h>

Inheritance diagram for CigiWaveCtrlV3:

CigiBaseWaveCtrl CigiBasePacket List of all members.

Public Member Functions

 CigiWaveCtrlV3 ()
virtual ~CigiWaveCtrlV3 ()
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 58 of file CigiWaveCtrlV3.h.


Constructor & Destructor Documentation

CigiWaveCtrlV3::CigiWaveCtrlV3 (  ) 

General Constructor

Definition at line 67 of file CigiWaveCtrlV3.cpp.

References CigiBaseWaveCtrl::Breaker, CIGI_WAVE_CTRL_PACKET_ID_V3, CIGI_WAVE_CTRL_PACKET_SIZE_V3, CigiBaseWaveCtrl::Direction, CigiBaseWaveCtrl::EntityRgnID, CigiBaseWaveCtrl::Global, CigiBaseWaveCtrl::Leading, CigiBasePacket::MinorVersion, CigiBasePacket::PacketID, CigiBasePacket::PacketSize, CigiBaseWaveCtrl::Period, CigiBaseWaveCtrl::PhaseOff, CigiBaseWaveCtrl::Plunging, CigiBaseWaveCtrl::Scope, CigiBasePacket::Version, CigiBaseWaveCtrl::WaveEn, CigiBaseWaveCtrl::WaveHt, CigiBaseWaveCtrl::WaveID, and CigiBaseWaveCtrl::WaveLen.

00068 {
00069 
00070    PacketID = CIGI_WAVE_CTRL_PACKET_ID_V3;
00071    PacketSize = CIGI_WAVE_CTRL_PACKET_SIZE_V3;
00072    Version = 3;
00073    MinorVersion = 0;
00074 
00075    EntityRgnID = 0;
00076    WaveID = 0;
00077    WaveEn = false;
00078    Scope = Global;
00079    Breaker = Plunging;
00080    WaveHt = 0.0;
00081    WaveLen = 0.0;
00082    Period = 0.0;
00083    Direction = 0.0;
00084    PhaseOff = 0.0;
00085    Leading = 0.0;
00086 
00087 }

CigiWaveCtrlV3::~CigiWaveCtrlV3 (  )  [virtual]

General Destructor

Definition at line 92 of file CigiWaveCtrlV3.cpp.

00093 {
00094 
00095 }


Member Function Documentation

int CigiWaveCtrlV3::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 CigiBaseWaveCtrl.

Definition at line 104 of file CigiWaveCtrlV3.cpp.

References CigiBaseWaveCtrl::Breaker, PackPointerUnion::c, CigiBaseWaveCtrl::Direction, CigiBaseWaveCtrl::EntityRgnID, PackPointerUnion::f, CigiBaseWaveCtrl::Leading, CigiBasePacket::PacketID, CigiBasePacket::PacketSize, CigiBaseWaveCtrl::Period, CigiBaseWaveCtrl::PhaseOff, PackPointerUnion::s, CigiBaseWaveCtrl::Scope, CigiBaseWaveCtrl::WaveEn, CigiBaseWaveCtrl::WaveHt, CigiBaseWaveCtrl::WaveID, and CigiBaseWaveCtrl::WaveLen.

00105 {
00106    PackPointer CDta;
00107 
00108    CigiBaseWaveCtrl * Data = ( CigiBaseWaveCtrl *)Base;
00109 
00110    CDta.c = Buff;
00111 
00112    *CDta.c++ = PacketID;
00113    *CDta.c++ = PacketSize;
00114 
00115    *CDta.s++ = Data->EntityRgnID;
00116    *CDta.c++ = Data->WaveID;
00117 
00118    Cigi_uint8 HDta = (Data->WaveEn) ? 0x01 : 0;
00119    HDta |= (Data->Scope<< 1) & 0x06;
00120    HDta |= (Data->Breaker << 3) & 0x18;
00121    *CDta.c++ = HDta;
00122 
00123    *CDta.s++ = 0;
00124 
00125    *CDta.f++ = Data->WaveHt;
00126    *CDta.f++ = Data->WaveLen;
00127    *CDta.f++ = Data->Period;
00128    *CDta.f++ = Data->Direction;
00129    *CDta.f++ = Data->PhaseOff;
00130    *CDta.f++ = Data->Leading;
00131 
00132    return(PacketSize);
00133 
00134 }

int CigiWaveCtrlV3::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 CigiBaseWaveCtrl.

Definition at line 139 of file CigiWaveCtrlV3.cpp.

References CigiBaseWaveCtrl::Breaker, PackPointerUnion::c, CigiSwap2(), CigiSwap4(), CigiBaseWaveCtrl::Direction, CigiBaseWaveCtrl::EntityRgnID, PackPointerUnion::f, CigiBaseWaveCtrl::Leading, CigiBasePacket::PacketSize, CigiBaseWaveCtrl::Period, CigiBaseWaveCtrl::PhaseOff, PackPointerUnion::s, CigiBaseWaveCtrl::Scope, CigiBaseWaveCtrl::WaveEn, CigiBaseWaveCtrl::WaveHt, CigiBaseWaveCtrl::WaveID, and CigiBaseWaveCtrl::WaveLen.

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       EntityRgnID = *CDta.s++;
00150       WaveID = *CDta.c++;
00151 
00152       Cigi_uint8 HDta = *CDta.c++;
00153       WaveEn = ((HDta & 0x01) != 0);
00154       Scope = (ScopeGrp)((HDta >> 1) & 0x03);
00155       Breaker = (BreakerGrp)((HDta >> 3) & 0x03);
00156 
00157       CDta.s++;
00158 
00159       WaveHt = *CDta.f++;
00160       WaveLen = *CDta.f++;
00161       Period = *CDta.f++;
00162       Direction = *CDta.f++;
00163       PhaseOff = *CDta.f++;
00164       Leading = *CDta.f++;
00165    }
00166    else
00167    {
00168       CigiSwap2(&EntityRgnID, CDta.s++);
00169       WaveID = *CDta.c++;
00170 
00171       Cigi_uint8 HDta = *CDta.c++;
00172       WaveEn = ((HDta & 0x01) != 0);
00173       Scope = (ScopeGrp)((HDta >> 1) & 0x03);
00174       Breaker = (BreakerGrp)((HDta >> 3) & 0x03);
00175 
00176       CDta.s++;
00177 
00178       CigiSwap4(&WaveHt, CDta.f++);
00179       CigiSwap4(&WaveLen, CDta.f++);
00180       CigiSwap4(&Period, CDta.f++);
00181       CigiSwap4(&Direction, CDta.f++);
00182       CigiSwap4(&PhaseOff, CDta.f++);
00183       CigiSwap4(&Leading, CDta.f++);
00184    }
00185 
00186    return(PacketSize);
00187 
00188 }


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