00001 00052 #define _EXPORT_CCL_ 00053 00054 #include "CigiEarthModelDefV3.h" 00055 #include "CigiSwapping.h" 00056 #include "CigiExceptions.h" 00057 00058 00059 // ==================================================================== 00060 // Construction/Destruction 00061 // ==================================================================== 00062 00063 00064 // ================================================ 00065 // CigiEarthModelDefV3 00066 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv 00067 CigiEarthModelDefV3::CigiEarthModelDefV3() 00068 { 00069 00070 PacketID = CIGI_EARTH_MODEL_DEF_PACKET_ID_V3; 00071 PacketSize = CIGI_EARTH_MODEL_DEF_PACKET_SIZE_V3; 00072 Version = 3; 00073 MinorVersion = 0; 00074 00075 CustomERMEn = false; 00076 EquatorialRadius = 0.0; 00077 Flattening = 0.0; 00078 00079 } 00080 00081 // ================================================ 00082 // ~CigiEarthModelDefV3 00083 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv 00084 CigiEarthModelDefV3::~CigiEarthModelDefV3() 00085 { 00086 00087 } 00088 00089 // ==================================================================== 00090 // Pack and Unpack 00091 // ==================================================================== 00092 00093 // ================================================ 00094 // Pack 00095 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv 00096 int CigiEarthModelDefV3::Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const 00097 { 00098 PackPointer CDta; 00099 00100 CigiBaseEarthModelDef * Data = ( CigiBaseEarthModelDef *)Base; 00101 00102 CDta.c = Buff; 00103 00104 *CDta.c++ = PacketID; 00105 *CDta.c++ = PacketSize; 00106 00107 *CDta.c++ = (Data->CustomERMEn) ? 0x01 : 0; 00108 00109 *CDta.c++ = 0; 00110 *CDta.l++ = 0; 00111 00112 *CDta.d++ = Data->EquatorialRadius; 00113 *CDta.d++ = Data->Flattening; 00114 00115 return(PacketSize); 00116 00117 } 00118 00119 // ================================================ 00120 // Unpack 00121 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv 00122 int CigiEarthModelDefV3::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec) 00123 { 00124 PackPointer CDta; 00125 00126 CDta.c = Buff; 00127 00128 CDta.c += 2; // Step over packet id and size 00129 00130 CustomERMEn = ((*CDta.c++ & 0x01) != 0); 00131 00132 CDta.c += 5; 00133 00134 if(!Swap) 00135 { 00136 EquatorialRadius = *CDta.d++; 00137 Flattening = *CDta.d++; 00138 } 00139 else 00140 { 00141 CigiSwap8(&EquatorialRadius, CDta.d++); 00142 CigiSwap8(&Flattening, CDta.d++); 00143 } 00144 00145 return(PacketSize); 00146 00147 } 00148 00149 00150 00151 // ==================================================================== 00152 // Accessors 00153 // ==================================================================== 00154 00155