00001
00059 #define _EXPORT_CCL_
00060
00061 #include "CigiHotRespV2.h"
00062 #include "CigiBaseHatHotReq.h"
00063 #include "CigiSwapping.h"
00064 #include "CigiExceptions.h"
00065
00066 #include <memory.h>
00067
00068
00069 #ifdef CIGI_LITTLE_ENDIAN
00070 #define CIGI_SCOPY2 CigiSwap2
00071 #define CIGI_SCOPY4 CigiSwap4
00072 #define CIGI_SCOPY8 CigiSwap8
00073 #else
00074 #define CIGI_SCOPY2 CigiCopy2
00075 #define CIGI_SCOPY4 CigiCopy4
00076 #define CIGI_SCOPY8 CigiCopy8
00077 #endif
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090 CigiHotRespV2::CigiHotRespV2()
00091 {
00092
00093 PacketID = CIGI_HOT_RESP_PACKET_ID_V2;
00094 PacketSize = CIGI_HOT_RESP_PACKET_SIZE_V2;
00095 Version = 2;
00096 MinorVersion = 0;
00097
00098 HatHotID = 0;
00099 Valid = false;
00100 ReqType = HOT;
00101 HostFrame = 0;
00102 Hat = 0.0;
00103 Hot = 0.0;
00104 Material = 0;
00105 NormAz = 0.0;
00106 NormEl = 0.0;
00107 VldHat = false;
00108 VldHot = false;
00109
00110 }
00111
00112
00113
00114
00115 CigiHotRespV2::~CigiHotRespV2()
00116 {
00117
00118 }
00119
00120
00121
00122
00123
00124
00125
00126
00127 int CigiHotRespV2::Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const
00128 {
00129 double DBuf[6];
00130
00131 Cigi_uint8 *tBuf = (Cigi_uint8 *)DBuf;
00132
00133 PackPointer CDta;
00134
00135 CigiBaseHatHotResp * Data = ( CigiBaseHatHotResp *)Base;
00136
00137 CDta.d = DBuf;
00138
00139 *CDta.c++ = PacketID;
00140 *CDta.c++ = PacketSize;
00141
00142 CIGI_SCOPY2(CDta.s++, &Data->HatHotID);
00143
00144 double tHot;
00145
00146 if(Data->Valid && Data->VldHot)
00147 {
00148 *CDta.c++ = 0x80;
00149 *CDta.c++ = 0;
00150 *CDta.s++ = 0;
00151 tHot = Data->Hot;
00152 }
00153 else
00154 {
00155 *CDta.l++ = 0;
00156 tHot = 0.0;
00157 }
00158
00159 *CDta.l++ = 0;
00160
00161 CIGI_SCOPY4(CDta.l++, &Data->Material);
00162 CIGI_SCOPY8(CDta.d++, &tHot);
00163
00164 memcpy(Buff,tBuf,CIGI_HOT_RESP_PACKET_SIZE_V2);
00165
00166 return(PacketSize);
00167
00168 }
00169
00170
00171
00172
00173 int CigiHotRespV2::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec)
00174 {
00175 double DBuf[6];
00176
00177 Cigi_uint8 *tBuf = (Cigi_uint8 *)DBuf;
00178
00179 PackPointer CDta;
00180
00181 memcpy(tBuf,Buff,CIGI_HOT_RESP_PACKET_SIZE_V2);
00182
00183 CDta.d = DBuf;
00184
00185 CDta.c += 2;
00186
00187 CIGI_SCOPY2(&HatHotID, CDta.s++);
00188
00189 Valid = (*CDta.l++ != 0);
00190
00191 CDta.l++;
00192
00193 CIGI_SCOPY4(&Material, CDta.l++);
00194 CIGI_SCOPY8(&Hot, CDta.d++);
00195
00196 Hat = 0.0;
00197
00198 VldHat = Valid;
00199 VldHot = false;
00200
00201 HostFrame = 0;
00202
00203 return(PacketSize);
00204
00205 }
00206
00207
00208
00209
00210
00211 int CigiHotRespV2::GetCnvt(CigiVersionID &CnvtVersion,
00212 CigiCnvtInfoType::Type &CnvtInfo)
00213 {
00214 CnvtInfo.ProcID = CigiProcessType::ProcStd;
00215
00216 switch(CnvtVersion.CigiMajorVersion)
00217 {
00218 case 1:
00219
00220
00221
00222 CnvtInfo.CnvtPacketID = CIGI_HAT_RESP_PACKET_ID_V1;
00223 break;
00224 case 2:
00225 CnvtInfo.CnvtPacketID = CIGI_HOT_RESP_PACKET_ID_V2;
00226 break;
00227 default:
00228
00229 CnvtInfo.CnvtPacketID = CIGI_HAT_HOT_RESP_PACKET_ID_V3;
00230 break;
00231 }
00232
00233 return(CIGI_SUCCESS);
00234 }
00235
00236
00237
00238
00239
00240
00241
00242