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