CigiTerrestrialSurfaceCtrlV3.cpp

Go to the documentation of this file.
00001 
00052 #define _EXPORT_CCL_
00053 
00054 #include "CigiTerrestrialSurfaceCtrlV3.h"
00055 #include "CigiSwapping.h"
00056 #include "CigiExceptions.h"
00057 
00058 
00059 // ====================================================================
00060 // Construction/Destruction
00061 // ====================================================================
00062 
00063 
00064 // ================================================
00065 // CigiTerrestrialSurfaceCtrlV3
00066 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00067 CigiTerrestrialSurfaceCtrlV3::CigiTerrestrialSurfaceCtrlV3()
00068 {
00069 
00070    PacketID = CIGI_TERRESTRIAL_SURFACE_CTRL_PACKET_ID_V3;
00071    PacketSize = CIGI_TERRESTRIAL_SURFACE_CTRL_PACKET_SIZE_V3;
00072    Version = 3;
00073    MinorVersion = 0;
00074 
00075    EntityRgnID = 0;
00076    SurfaceCondID = 0;
00077    SurfaceCondEn = false;
00078    Scope = Global;
00079    Severity = 0;
00080    Coverage = 0;
00081 
00082 }
00083 
00084 // ================================================
00085 // ~CigiTerrestrialSurfaceCtrlV3
00086 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00087 CigiTerrestrialSurfaceCtrlV3::~CigiTerrestrialSurfaceCtrlV3()
00088 {
00089 
00090 }
00091 
00092 // ====================================================================
00093 // Pack and Unpack
00094 // ====================================================================
00095 
00096 // ================================================
00097 // Pack
00098 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00099 int CigiTerrestrialSurfaceCtrlV3::Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const
00100 {
00101    PackPointer CDta;
00102 
00103    CigiBaseTerrestrialSurfaceCtrl * Data = ( CigiBaseTerrestrialSurfaceCtrl *)Base;
00104 
00105    CDta.c = Buff;
00106 
00107    *CDta.c++ = PacketID;
00108    *CDta.c++ = PacketSize;
00109 
00110    *CDta.s++ = Data->EntityRgnID;
00111    *CDta.s++ = Data->SurfaceCondID;
00112 
00113    Cigi_uint8 HDta = (Data->SurfaceCondEn) ? 0x01 : 0;
00114    HDta |= (Data->Scope << 1) & 0x06;
00115    HDta |= (Data->Severity << 3) & 0xf8;
00116    *CDta.c++ = HDta;
00117 
00118    *CDta.c++ = Data->Coverage;
00119 
00120    return(PacketSize);
00121 
00122 }
00123 
00124 // ================================================
00125 // Unpack
00126 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00127 int CigiTerrestrialSurfaceCtrlV3::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec)
00128 {
00129    PackPointer CDta;
00130 
00131    CDta.c = Buff;
00132 
00133    CDta.c += 2;  // Step over packet id and size
00134 
00135    if(!Swap)
00136    {
00137       EntityRgnID = *CDta.s++;
00138       SurfaceCondID = *CDta.s++;
00139 
00140       Cigi_uint8 HDta = *CDta.c++;
00141       SurfaceCondEn = ((HDta & 0x01) != 0);
00142       Scope = (ScopeGrp)((HDta >> 1) & 0x03);
00143       Severity = (HDta >> 3) & 0x1f;
00144 
00145       Coverage = *CDta.c++;
00146    }
00147    else
00148    {
00149       CigiSwap2(&EntityRgnID, CDta.s++);
00150       CigiSwap2(&SurfaceCondID, CDta.s++);
00151 
00152       Cigi_uint8 HDta = *CDta.c++;
00153       SurfaceCondEn = ((HDta & 0x01) != 0);
00154       Scope = (ScopeGrp)((HDta >> 1) & 0x03);
00155       Severity = (HDta >> 3) & 0x1f;
00156 
00157       Coverage = *CDta.c++;
00158    }
00159 
00160    return(PacketSize);
00161 
00162 }
00163 
00164 
00165 
00166 // ====================================================================
00167 // Accessors
00168 // ====================================================================
00169 
00170 

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