CigiWaveCtrlV3.cpp

Go to the documentation of this file.
00001 
00052 #define _EXPORT_CCL_
00053 
00054 #include "CigiWaveCtrlV3.h"
00055 #include "CigiSwapping.h"
00056 #include "CigiExceptions.h"
00057 
00058 
00059 // ====================================================================
00060 // Construction/Destruction
00061 // ====================================================================
00062 
00063 
00064 // ================================================
00065 // CigiWaveCtrlV3
00066 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00067 CigiWaveCtrlV3::CigiWaveCtrlV3()
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 }
00088 
00089 // ================================================
00090 // ~CigiWaveCtrlV3
00091 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00092 CigiWaveCtrlV3::~CigiWaveCtrlV3()
00093 {
00094 
00095 }
00096 
00097 // ====================================================================
00098 // Pack and Unpack
00099 // ====================================================================
00100 
00101 // ================================================
00102 // Pack
00103 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00104 int CigiWaveCtrlV3::Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const
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 }
00135 
00136 // ================================================
00137 // Unpack
00138 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00139 int CigiWaveCtrlV3::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec)
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 }
00189 
00190 
00191 
00192 // ====================================================================
00193 // Accessors
00194 // ====================================================================
00195 
00196 

Generated on Wed Apr 29 08:59:59 2009 for CCL by  doxygen 1.4.7