00001
00059 #define _EXPORT_CCL_
00060
00061 #include "CigiHatReqV2.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 CigiHatReqV2::CigiHatReqV2()
00090 {
00091
00092 PacketID = CIGI_HAT_REQ_PACKET_ID_V2;
00093 PacketSize = CIGI_HAT_REQ_PACKET_SIZE_V2;
00094 Version = 2;
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 CigiHatReqV2::~CigiHatReqV2()
00113 {
00114
00115 }
00116
00117
00118
00119
00120
00121
00122
00123
00124 int CigiHatReqV2::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 *CDta.l++ = 0;
00145
00146 CIGI_SCOPY8(CDta.d++, &Data->AltOrZoff);
00147 CIGI_SCOPY8(CDta.d++, &Data->LatOrXoff);
00148 CIGI_SCOPY8(CDta.d++, &Data->LonOrYoff);
00149
00150 memcpy(Buff,tBuf,CIGI_HAT_REQ_PACKET_SIZE_V2);
00151
00152 return(PacketSize);
00153
00154 }
00155
00156
00157
00158
00159 int CigiHatReqV2::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_V2);
00168
00169 CDta.d = DBuf;
00170
00171 CDta.c += 2;
00172
00173 CIGI_SCOPY2(&HatHotID, CDta.s++);
00174
00175 CDta.l++;
00176
00177 CIGI_SCOPY8(&AltOrZoff, CDta.d++);
00178 CIGI_SCOPY8(&LatOrXoff, CDta.d++);
00179 CIGI_SCOPY8(&LonOrYoff, CDta.d++);
00180
00181
00182 SrcCoordSys = Geodetic;
00183 IsValidV1or2 = true;
00184
00185 UpdatePeriod = 0;
00186
00187 return(PacketSize);
00188
00189 }
00190
00191
00192
00193
00194
00195 int CigiHatReqV2::GetCnvt(CigiVersionID &CnvtVersion,
00196 CigiCnvtInfoType::Type &CnvtInfo)
00197 {
00198 CnvtInfo.ProcID = CigiProcessType::ProcStd;
00199
00200 switch(CnvtVersion.CigiMajorVersion)
00201 {
00202 case 1:
00203 CnvtInfo.CnvtPacketID = CIGI_HAT_REQ_PACKET_ID_V1;
00204 break;
00205 case 2:
00206 CnvtInfo.CnvtPacketID = CIGI_HAT_REQ_PACKET_ID_V2;
00207 break;
00208 default:
00209
00210 CnvtInfo.CnvtPacketID = CIGI_HAT_HOT_REQ_PACKET_ID_V3;
00211 break;
00212 }
00213
00214 return(CIGI_SUCCESS);
00215 }
00216
00217
00218
00219
00220
00221
00222
00223