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