00001
00061 #define _EXPORT_CCL_
00062
00063 #include "CigiLosSegReqV1.h"
00064 #include "CigiSwapping.h"
00065 #include "CigiExceptions.h"
00066
00067 #include <memory.h>
00068
00069
00070 #ifdef CIGI_LITTLE_ENDIAN
00071 #define CIGI_SCOPY2 CigiSwap2
00072 #define CIGI_SCOPY4 CigiSwap4
00073 #define CIGI_SCOPY8 CigiSwap8
00074 #else
00075 #define CIGI_SCOPY2 CigiCopy2
00076 #define CIGI_SCOPY4 CigiCopy4
00077 #define CIGI_SCOPY8 CigiCopy8
00078 #endif
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091 CigiLosSegReqV1::CigiLosSegReqV1()
00092 {
00093
00094 PacketID = CIGI_LOS_SEG_REQ_PACKET_ID_V1;
00095 PacketSize = CIGI_LOS_SEG_REQ_PACKET_SIZE_V1;
00096 Version = 1;
00097 MinorVersion = 0;
00098
00099 LosID = 0;
00100 ReqType = Extended;
00101 SrcCoordSys = Geodetic;
00102 DstCoordSys = Geodetic;
00103 ResponseCoordSys = Geodetic;
00104 AlphaThresh = 0;
00105 EntityID = 0;
00106 SrcXLat = 0.0;
00107 SrcYLon = 0.0;
00108 SrcZAlt = 0.0;
00109 DstXLat = 0.0;
00110 DstYLon = 0.0;
00111 DstZAlt = 0.0;
00112 Mask = 0;
00113 DestEntityIDValid = false;
00114 UpdatePeriod = 0;
00115 DestEntityID = 0;
00116 ValidV1or2 = true;
00117
00118 }
00119
00120
00121
00122
00123 CigiLosSegReqV1::~CigiLosSegReqV1()
00124 {
00125
00126 }
00127
00128
00129
00130
00131
00132
00133
00134
00135 int CigiLosSegReqV1::Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const
00136 {
00137 double DBuf[6];
00138
00139 Cigi_uint8 *tBuf = (Cigi_uint8 *)DBuf;
00140
00141 PackPointer CDta;
00142
00143
00144 CigiBaseLosSegReq * Data = ( CigiBaseLosSegReq *)Base;
00145
00146
00147
00148 if(!Data->ValidV1or2)
00149 return(0);
00150
00151 CDta.d = DBuf;
00152
00153 *CDta.c++ = PacketID;
00154 *CDta.c++ = PacketSize;
00155
00156 CIGI_SCOPY2(CDta.s++, &Data->LosID);
00157 float talt = (float)Data->SrcZAlt;
00158 CIGI_SCOPY4(CDta.f++, &talt);
00159 CIGI_SCOPY8(CDta.d++, &Data->SrcXLat);
00160 CIGI_SCOPY8(CDta.d++, &Data->SrcYLon);
00161 *CDta.l++ = 0;
00162 talt = (float)Data->DstZAlt;
00163 CIGI_SCOPY4(CDta.f++, &talt);
00164 CIGI_SCOPY8(CDta.d++, &Data->DstXLat);
00165 CIGI_SCOPY8(CDta.d++, &Data->DstYLon);
00166
00167 memcpy(Buff,tBuf,CIGI_LOS_SEG_REQ_PACKET_SIZE_V1);
00168
00169 return(PacketSize);
00170
00171 }
00172
00173
00174
00175
00176 int CigiLosSegReqV1::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec)
00177 {
00178 double DBuf[6];
00179
00180 Cigi_uint8 *tBuf = (Cigi_uint8 *)DBuf;
00181
00182 PackPointer CDta;
00183
00184 float talt;
00185
00186 memcpy(tBuf,Buff,CIGI_LOS_SEG_REQ_PACKET_SIZE_V1);
00187
00188 CDta.d = DBuf;
00189
00190 CDta.c += 2;
00191
00192 CIGI_SCOPY2(&LosID, CDta.s++);
00193
00194 CIGI_SCOPY4(&talt, CDta.f++);
00195 SrcZAlt = (double)talt;
00196
00197 CIGI_SCOPY8(&SrcXLat, CDta.d++);
00198 CIGI_SCOPY8(&SrcYLon, CDta.d++);
00199
00200 CDta.c += 4;
00201
00202 CIGI_SCOPY4(&talt, CDta.f++);
00203 DstZAlt = (double)talt;
00204
00205 CIGI_SCOPY8(&DstXLat, CDta.d++);
00206 CIGI_SCOPY8(&DstYLon, CDta.d++);
00207
00208
00209 DestEntityIDValid = false;
00210 UpdatePeriod = 0;
00211 DestEntityID = 0;
00212
00213 ValidV1or2 = true;
00214
00215 return(PacketSize);
00216
00217 }
00218
00219
00220
00221
00222
00223
00224
00225