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