00001
00071 #if !defined(_CIGI_BASE_LOS_SEG_REQ_INCLUDED_)
00072 #define _CIGI_BASE_LOS_SEG_REQ_INCLUDED_
00073
00074 #include "CigiBasePacket.h"
00075
00076
00077
00078
00079
00080 #define CIGI_LOS_SEG_REQ_PACKET_ID_V1 42
00081 #define CIGI_LOS_SEG_REQ_PACKET_SIZE_V1 48
00082
00083 #define CIGI_LOS_SEG_REQ_PACKET_ID_V2 42
00084 #define CIGI_LOS_SEG_REQ_PACKET_SIZE_V2 56
00085
00086 #define CIGI_LOS_SEG_REQ_PACKET_ID_V3 25
00087 #define CIGI_LOS_SEG_REQ_PACKET_SIZE_V3 64
00088
00089 #define CIGI_LOS_SEG_REQ_PACKET_ID_V3_2 25
00090 #define CIGI_LOS_SEG_REQ_PACKET_SIZE_V3_2 64
00091
00092
00093 class CigiLosSegReqV1;
00094 class CigiLosSegReqV2;
00095 class CigiLosSegReqV3;
00096 class CigiLosSegReqV3_2;
00097
00098
00099 class CIGI_SPEC CigiBaseLosSegReq : public CigiBasePacket
00100 {
00101
00102 friend class CigiLosSegReqV1;
00103 friend class CigiLosSegReqV2;
00104 friend class CigiLosSegReqV3;
00105 friend class CigiLosSegReqV3_2;
00106
00107 public:
00108
00109
00112 enum ReqTypeGrp
00113 {
00114 Basic=0,
00115 Extended=1
00116 };
00117
00118
00121 enum CoordSysGrp
00122 {
00123 Geodetic=0,
00124 Entity=1
00125 };
00126
00127
00128
00129
00130
00131
00132
00135 CigiBaseLosSegReq();
00136
00137
00140 virtual ~CigiBaseLosSegReq();
00141
00142
00143
00144
00145
00156 virtual int Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const=0;
00157
00158
00168 virtual int Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec) =0;
00169
00170
00182 virtual int GetCnvt(CigiVersionID &CnvtVersion,
00183 CigiCnvtInfoType::Type &CnvtInfo);
00184
00185
00186
00187
00188
00189
00190
00191
00198 int SetLosID(const Cigi_uint16 LosIDIn, bool bndchk=true)
00199 {
00200 LosID = LosIDIn;
00201 return(CIGI_SUCCESS);
00202 }
00203
00204
00207 Cigi_uint16 GetLosID(void) const { return(LosID); }
00208
00209
00210
00211
00212
00219 int SetSrcLat(const double SrcLatIn, bool bndchk=true);
00220
00221
00224 double GetSrcLat(void) const { return(SrcXLat); }
00225
00226
00227
00228
00229
00236 int SetSrcLon(const double SrcLonIn, bool bndchk=true);
00237
00238
00241 double GetSrcLon(void) const { return(SrcYLon); }
00242
00243
00244
00245
00246
00253 int SetSrcAlt(const double SrcAltIn, bool bndchk=true)
00254 {
00255 SrcZAlt = SrcAltIn;
00256 return(CIGI_SUCCESS);
00257 }
00258
00259
00262 double GetSrcAlt(void) const { return(SrcZAlt); }
00263
00264
00265
00266
00267
00274 int SetDstLat(const double DstLatIn, bool bndchk=true);
00275
00276
00279 double GetDstLat(void) const { return(DstXLat); }
00280
00281
00282
00283
00284
00291 int SetDstLon(const double DstLonIn, bool bndchk=true);
00292
00293
00296 double GetDstLon(void) const { return(DstYLon); }
00297
00298
00299
00300
00301
00308 int SetDstAlt(const double DstAltIn, bool bndchk=true)
00309 {
00310 DstZAlt = DstAltIn;
00311 return(CIGI_SUCCESS);
00312 }
00313
00314
00317 double GetDstAlt(void) const { return(DstZAlt); }
00318
00319
00320
00321
00322
00326 bool IsValidV1or2(void) const { return(ValidV1or2); }
00327
00328
00329
00330 protected:
00331
00332
00333
00334
00338 Cigi_uint16 LosID;
00339
00340
00348 ReqTypeGrp ReqType;
00349
00350
00358 CoordSysGrp SrcCoordSys;
00359
00360
00368 CoordSysGrp DstCoordSys;
00369
00370
00378 CoordSysGrp ResponseCoordSys;
00379
00380
00384 bool DestEntityIDValid;
00385
00386
00391 Cigi_uint8 AlphaThresh;
00392
00393
00398 Cigi_uint16 EntityID;
00399
00400
00406 double SrcXLat;
00407
00408
00414 double SrcYLon;
00415
00416
00422 double SrcZAlt;
00423
00424
00430 double DstXLat;
00431
00432
00438 double DstYLon;
00439
00440
00446 double DstZAlt;
00447
00448
00452 Cigi_uint32 Mask;
00453
00454
00459 Cigi_uint8 UpdatePeriod;
00460
00461
00466 Cigi_uint16 DestEntityID;
00467
00468
00473 bool ValidV1or2;
00474
00475
00476 };
00477
00478 #endif // #if !defined(_CIGI_BASE_LOS_SEG_REQ_INCLUDED_)