00001
00059 #define _EXPORT_CCL_
00060
00061 #include "CigiHatRespV2.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 CigiHatRespV2::CigiHatRespV2()
00091 {
00092
00093 PacketID = CIGI_HAT_RESP_PACKET_ID_V2;
00094 PacketSize = CIGI_HAT_RESP_PACKET_SIZE_V2;
00095 Version = 2;
00096 MinorVersion = 0;
00097
00098 HatHotID = 0;
00099 Valid = false;
00100 ReqType = HAT;
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 CigiHatRespV2::~CigiHatRespV2()
00116 {
00117
00118 }
00119
00120
00121
00122
00123
00124
00125
00126
00127 int CigiHatRespV2::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 tHat;
00145
00146 if(Data->Valid && Data->VldHat)
00147 {
00148 *CDta.c++ = 0x80;
00149 *CDta.c++ = 0;
00150 *CDta.s++ = 0;
00151 tHat = Data->Hat;
00152 }
00153 else
00154 {
00155 *CDta.l++ = 0;
00156 tHat = 0.0;
00157 }
00158
00159 *CDta.l++ = 0;
00160
00161 CIGI_SCOPY4(CDta.l++, &Data->Material);
00162 CIGI_SCOPY8(CDta.d++, &tHat);
00163
00164
00165 memcpy(Buff,tBuf,CIGI_HAT_RESP_PACKET_SIZE_V2);
00166
00167 return(PacketSize);
00168
00169 }
00170
00171
00172
00173
00174 int CigiHatRespV2::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec)
00175 {
00176 double DBuf[6];
00177
00178 Cigi_uint8 *tBuf = (Cigi_uint8 *)DBuf;
00179
00180 PackPointer CDta;
00181
00182 memcpy(tBuf,Buff,CIGI_HAT_RESP_PACKET_SIZE_V2);
00183
00184 CDta.d = DBuf;
00185
00186 CDta.c += 2;
00187
00188 CIGI_SCOPY2(&HatHotID, CDta.s++);
00189
00190 Valid = (*CDta.l++ != 0);
00191
00192 CDta.l++;
00193
00194 CIGI_SCOPY4(&Material, CDta.l++);
00195 CIGI_SCOPY8(&Hat, CDta.d++);
00196
00197 Hot = 0.0;
00198 VldHat = Valid;
00199 VldHot = false;
00200
00201 HostFrame = 0;
00202
00203 return(PacketSize);
00204
00205 }
00206
00207
00208
00209
00210
00211 int CigiHatRespV2::GetCnvt(CigiVersionID &CnvtVersion,
00212 CigiCnvtInfoType::Type &CnvtInfo)
00213 {
00214 CnvtInfo.ProcID = CigiProcessType::ProcStd;
00215
00216
00217 CnvtInfo.CnvtPacketID = CIGI_HAT_HOT_RESP_PACKET_ID_V3;
00218
00219 return(CIGI_SUCCESS);
00220 }
00221
00222
00223
00224
00225
00226
00227
00228