00001
00059 #define _EXPORT_CCL_
00060
00061 #include "CigiHatReqV1.h"
00062 #include "CigiSwapping.h"
00063 #include "CigiExceptions.h"
00064
00065 #include <memory.h>
00066
00067
00068 #ifdef CIGI_LITTLE_ENDIAN
00069 #define CIGI_SCOPY2 CigiSwap2
00070 #define CIGI_SCOPY4 CigiSwap4
00071 #define CIGI_SCOPY8 CigiSwap8
00072 #else
00073 #define CIGI_SCOPY2 CigiCopy2
00074 #define CIGI_SCOPY4 CigiCopy4
00075 #define CIGI_SCOPY8 CigiCopy8
00076 #endif
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089 CigiHatReqV1::CigiHatReqV1()
00090 {
00091
00092 PacketID = CIGI_HAT_REQ_PACKET_ID_V1;
00093 PacketSize = CIGI_HAT_REQ_PACKET_SIZE_V1;
00094 Version = 1;
00095 MinorVersion = 0;
00096
00097 HatHotID = 0;
00098 ReqType = HAT;
00099 SrcCoordSys = Geodetic;
00100 UpdatePeriod = 0;
00101 EntityID = 0;
00102 LatOrXoff = 0.0;
00103 LonOrYoff = 0.0;
00104 AltOrZoff = 0.0;
00105 IsValidV1or2 = true;
00106
00107 }
00108
00109
00110
00111
00112 CigiHatReqV1::~CigiHatReqV1()
00113 {
00114
00115 }
00116
00117
00118
00119
00120
00121
00122
00123
00124 int CigiHatReqV1::Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const
00125 {
00126 double DBuf[6];
00127
00128 Cigi_uint8 *tBuf = (Cigi_uint8 *)DBuf;
00129
00130 PackPointer CDta;
00131
00132 CigiBaseHatHotReq * Data = ( CigiBaseHatHotReq *)Base;
00133
00134 if(!Data->IsValidV1or2)
00135 return(0);
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 talt = (float)Data->AltOrZoff;
00145 CIGI_SCOPY4(CDta.f++, &talt);
00146
00147 CIGI_SCOPY8(CDta.d++, &Data->LatOrXoff);
00148 CIGI_SCOPY8(CDta.d++, &Data->LonOrYoff);
00149
00150 memcpy(Buff,tBuf,CIGI_HAT_REQ_PACKET_SIZE_V1);
00151
00152 return(PacketSize);
00153
00154 }
00155
00156
00157
00158
00159 int CigiHatReqV1::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec)
00160 {
00161 double DBuf[6];
00162
00163 Cigi_uint8 *tBuf = (Cigi_uint8 *)DBuf;
00164
00165 PackPointer CDta;
00166
00167 memcpy(tBuf,Buff,CIGI_HAT_REQ_PACKET_SIZE_V1);
00168
00169 CDta.d = DBuf;
00170
00171 CDta.c += 2;
00172
00173 CIGI_SCOPY2(&HatHotID, CDta.s++);
00174
00175 float talt;
00176 CIGI_SCOPY4(&talt, CDta.f++);
00177 AltOrZoff = (double)talt;
00178
00179 CIGI_SCOPY8(&LatOrXoff, CDta.d++);
00180 CIGI_SCOPY8(&LonOrYoff, CDta.d++);
00181
00182
00183 SrcCoordSys = Geodetic;
00184 IsValidV1or2 = true;
00185
00186 UpdatePeriod = 0;
00187
00188 return(PacketSize);
00189
00190 }
00191
00192
00193
00194
00195
00196 int CigiHatReqV1::GetCnvt(CigiVersionID &CnvtVersion,
00197 CigiCnvtInfoType::Type &CnvtInfo)
00198 {
00199 CnvtInfo.ProcID = CigiProcessType::ProcStd;
00200
00201 switch(CnvtVersion.CigiMajorVersion)
00202 {
00203 case 1:
00204 CnvtInfo.CnvtPacketID = CIGI_HAT_REQ_PACKET_ID_V1;
00205 break;
00206 case 2:
00207 CnvtInfo.CnvtPacketID = CIGI_HAT_REQ_PACKET_ID_V2;
00208 break;
00209 default:
00210
00211 CnvtInfo.CnvtPacketID = CIGI_HAT_HOT_REQ_PACKET_ID_V3;
00212 break;
00213 }
00214
00215 return(CIGI_SUCCESS);
00216 }
00217
00218
00219
00220
00221
00222
00223
00224