00001
00062 #define _EXPORT_CCL_
00063
00064 #include "CigiHotReqV2.h"
00065 #include "CigiSwapping.h"
00066 #include "CigiExceptions.h"
00067
00068 #include <memory.h>
00069
00070
00071 #ifdef CIGI_LITTLE_ENDIAN
00072 #define CIGI_SCOPY2 CigiSwap2
00073 #define CIGI_SCOPY4 CigiSwap4
00074 #define CIGI_SCOPY8 CigiSwap8
00075 #else
00076 #define CIGI_SCOPY2 CigiCopy2
00077 #define CIGI_SCOPY4 CigiCopy4
00078 #define CIGI_SCOPY8 CigiCopy8
00079 #endif
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092 CigiHotReqV2::CigiHotReqV2()
00093 {
00094
00095 PacketID = CIGI_HOT_REQ_PACKET_ID_V2;
00096 PacketSize = CIGI_HOT_REQ_PACKET_SIZE_V2;
00097 Version = 2;
00098 MinorVersion = 0;
00099
00100 HatHotID = 0;
00101 ReqType = HOT;
00102 SrcCoordSys = Geodetic;
00103 UpdatePeriod = 0;
00104 EntityID = 0;
00105 LatOrXoff = 0.0;
00106 LonOrYoff = 0.0;
00107 AltOrZoff = 0.0;
00108 IsValidV1or2 = true;
00109
00110 }
00111
00112
00113
00114
00115 CigiHotReqV2::~CigiHotReqV2()
00116 {
00117
00118 }
00119
00120
00121
00122
00123
00124
00125
00126
00127 int CigiHotReqV2::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 CigiBaseHatHotReq * Data = ( CigiBaseHatHotReq *)Base;
00136
00137 if(!Data->IsValidV1or2)
00138 return(0);
00139
00140 CDta.d = DBuf;
00141
00142 *CDta.c++ = PacketID;
00143 *CDta.c++ = PacketSize;
00144
00145 CIGI_SCOPY2(CDta.s++, &Data->HatHotID);
00146
00147 *CDta.l++ = 0;
00148
00149 CIGI_SCOPY8(CDta.d++, &Data->LatOrXoff);
00150 CIGI_SCOPY8(CDta.d++, &Data->LonOrYoff);
00151
00152 memcpy(Buff,tBuf,CIGI_HOT_REQ_PACKET_SIZE_V2);
00153
00154 return(PacketSize);
00155
00156 }
00157
00158
00159
00160
00161 int CigiHotReqV2::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec)
00162 {
00163 double DBuf[6];
00164
00165 Cigi_uint8 *tBuf = (Cigi_uint8 *)DBuf;
00166
00167 PackPointer CDta;
00168
00169 memcpy(tBuf,Buff,CIGI_HOT_REQ_PACKET_SIZE_V2);
00170
00171 CDta.d = DBuf;
00172
00173 CDta.c += 2;
00174
00175 CIGI_SCOPY2(&HatHotID, CDta.s++);
00176
00177 CDta.l++;
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 CigiHotReqV2::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_HOT_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