00001
00055 #if !defined(_CIGI_BASE_LOS_VECT_REQ_INCLUDED_)
00056 #define _CIGI_BASE_LOS_VECT_REQ_INCLUDED_
00057
00058 #include "CigiBasePacket.h"
00059
00060
00061
00062
00063
00064 #define CIGI_LOS_VECT_REQ_PACKET_ID_V1 43
00065 #define CIGI_LOS_VECT_REQ_PACKET_SIZE_V1 40
00066
00067 #define CIGI_LOS_VECT_REQ_PACKET_ID_V2 43
00068 #define CIGI_LOS_VECT_REQ_PACKET_SIZE_V2 48
00069
00070 #define CIGI_LOS_VECT_REQ_PACKET_ID_V3 26
00071 #define CIGI_LOS_VECT_REQ_PACKET_SIZE_V3 56
00072
00073 #define CIGI_LOS_VECT_REQ_PACKET_ID_V3_2 26
00074 #define CIGI_LOS_VECT_REQ_PACKET_SIZE_V3_2 56
00075
00076
00077 class CigiLosVectReqV1;
00078 class CigiLosVectReqV2;
00079 class CigiLosVectReqV3;
00080 class CigiLosVectReqV3_2;
00081
00082
00083 class CIGI_SPEC CigiBaseLosVectReq : public CigiBasePacket
00084 {
00085
00086 friend class CigiLosVectReqV1;
00087 friend class CigiLosVectReqV2;
00088 friend class CigiLosVectReqV3;
00089 friend class CigiLosVectReqV3_2;
00090
00091 public:
00092
00093
00096 enum ReqTypeGrp
00097 {
00098 Basic=0,
00099 Extended=1
00100 };
00101
00102
00105 enum CoordSysGrp
00106 {
00107 Geodetic=0,
00108 Entity=1
00109 };
00110
00111
00112
00113
00114
00115
00116
00119 CigiBaseLosVectReq();
00120
00121
00124 virtual ~CigiBaseLosVectReq();
00125
00126
00127
00128
00129
00140 virtual int Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const=0;
00141
00142
00152 virtual int Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec) =0;
00153
00154
00166 virtual int GetCnvt(CigiVersionID &CnvtVersion,
00167 CigiCnvtInfoType::Type &CnvtInfo);
00168
00169
00170
00171
00172
00173
00174
00175
00182 int SetLosID(const Cigi_uint16 LosIDIn, bool bndchk=true)
00183 {
00184 LosID = LosIDIn;
00185 return(CIGI_SUCCESS);
00186 }
00187
00188
00191 Cigi_uint16 GetLosID(void) const { return(LosID); }
00192
00193
00194
00195
00196
00203 int SetVectEl(const float VectElIn, bool bndchk=true);
00204
00205
00208 float GetVectEl(void) const { return(VectEl); }
00209
00210
00211
00212
00213
00220 int SetMaxRange(const float MaxRangeIn, bool bndchk=true)
00221 {
00222 MaxRange = MaxRangeIn;
00223 return(CIGI_SUCCESS);
00224 }
00225
00226
00229 float GetMaxRange(void) const { return(MaxRange); }
00230
00231
00232
00233
00234
00241 int SetSrcLat(const double SrcLatIn, bool bndchk=true);
00242
00243
00246 double GetSrcLat(void) const { return(SrcXLat); }
00247
00248
00249
00250
00251
00258 int SetSrcLon(const double SrcLonIn, bool bndchk=true);
00259
00260
00263 double GetSrcLon(void) const { return(SrcYLon); }
00264
00265
00266
00267
00268
00275 int SetSrcAlt(const double SrcAltIn, bool bndchk=true)
00276 {
00277 SrcZAlt = SrcAltIn;
00278 return(CIGI_SUCCESS);
00279 }
00280
00281
00284 double GetSrcAlt(void) const { return(SrcZAlt); }
00285
00286
00287
00288 protected:
00289
00290
00291
00292
00296 Cigi_uint16 LosID;
00297
00298
00304 ReqTypeGrp ReqType;
00305
00306
00312 CoordSysGrp SrcCoordSys;
00313
00314
00320 CoordSysGrp ResponseCoordSys;
00321
00322
00326 Cigi_uint8 AlphaThresh;
00327
00328
00332 Cigi_uint16 EntityID;
00333
00334
00338 float VectAz;
00339
00340
00344 float VectEl;
00345
00346
00351 float MinRange;
00352
00353
00357 float MaxRange;
00358
00359
00366 double SrcXLat;
00367
00368
00375 double SrcYLon;
00376
00377
00384 double SrcZAlt;
00385
00386
00391 Cigi_uint32 Mask;
00392
00393
00398 Cigi_uint8 UpdatePeriod;
00399
00400
00404 bool ValidV1or2;
00405
00406 };
00407
00408 #endif // #if !defined(_CIGI_BASE_LOS_VECT_REQ_INCLUDED_)