00001
00052 #define _EXPORT_CCL_
00053
00054 #include "CigiWeatherCondRespV3.h"
00055 #include "CigiSwapping.h"
00056 #include "CigiExceptions.h"
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067 CigiWeatherCondRespV3::CigiWeatherCondRespV3()
00068 {
00069
00070 PacketID = CIGI_WEATHER_COND_RESP_PACKET_ID_V3;
00071 PacketSize = CIGI_WEATHER_COND_RESP_PACKET_SIZE_V3;
00072 Version = 3;
00073 MinorVersion = 0;
00074
00075 RequestID = 0;
00076 Humidity = 0;
00077 AirTemp = 0.0;
00078 Visibility = 0.0;
00079 HorizWindSp = 0.0;
00080 VertWindSp = 0.0;
00081 WindDir = 0.0;
00082 BaroPress = 0.0;
00083
00084 }
00085
00086
00087
00088
00089 CigiWeatherCondRespV3::~CigiWeatherCondRespV3()
00090 {
00091
00092 }
00093
00094
00095
00096
00097
00098
00099
00100
00101 int CigiWeatherCondRespV3::Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const
00102 {
00103 PackPointer CDta;
00104
00105 CigiBaseWeatherCondResp * Data = ( CigiBaseWeatherCondResp *)Base;
00106
00107 CDta.c = Buff;
00108
00109 *CDta.c++ = PacketID;
00110 *CDta.c++ = PacketSize;
00111
00112 *CDta.c++ = Data->RequestID;
00113 *CDta.c++ = Data->Humidity;
00114 *CDta.f++ = Data->AirTemp;
00115 *CDta.f++ = Data->Visibility;
00116 *CDta.f++ = Data->HorizWindSp;
00117 *CDta.f++ = Data->VertWindSp;
00118 *CDta.f++ = Data->WindDir;
00119 *CDta.f++ = Data->BaroPress;
00120
00121 *CDta.l++ = 0;
00122
00123 return(PacketSize);
00124
00125 }
00126
00127
00128
00129
00130 int CigiWeatherCondRespV3::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec)
00131 {
00132 PackPointer CDta;
00133
00134 CDta.c = Buff;
00135
00136 CDta.c += 2;
00137
00138 RequestID = *CDta.c++;
00139 Humidity = *CDta.c++;
00140
00141 if(!Swap)
00142 {
00143 AirTemp = *CDta.f++;
00144 Visibility = *CDta.f++;
00145 HorizWindSp = *CDta.f++;
00146 VertWindSp = *CDta.f++;
00147 WindDir = *CDta.f++;
00148 BaroPress = *CDta.f++;
00149 }
00150 else
00151 {
00152 CigiSwap4(&AirTemp, CDta.f++);
00153 CigiSwap4(&Visibility, CDta.f++);
00154 CigiSwap4(&HorizWindSp, CDta.f++);
00155 CigiSwap4(&VertWindSp, CDta.f++);
00156 CigiSwap4(&WindDir, CDta.f++);
00157 CigiSwap4(&BaroPress, CDta.f++);
00158 }
00159
00160 return(PacketSize);
00161
00162 }
00163
00164
00165
00166
00167
00168
00169
00170