00001 
00055 #if !defined(_CIGI_BASE_POSITION_RESP_INCLUDED_)
00056 #define _CIGI_BASE_POSITION_RESP_INCLUDED_
00057 
00058 #include "CigiBasePacket.h"
00059 
00060 
00061 
00062 
00063 
00064 #define CIGI_POSITION_RESP_PACKET_ID_V3 108
00065 #define CIGI_POSITION_RESP_PACKET_SIZE_V3 48
00066 
00067 
00068 class CigiPositionRespV1;
00069 class CigiPositionRespV2;
00070 class CigiPositionRespV3;
00071 
00072 
00073 class CIGI_SPEC CigiBasePositionResp : public CigiBasePacket
00074 {
00075 
00076 friend class CigiPositionRespV1;
00077 friend class CigiPositionRespV2;
00078 friend class CigiPositionRespV3;
00079 
00080 public:
00081 
00082    
00085    enum ObjectClassGrp
00086    {
00087       Entity=0,
00088       ArtPart=1,
00089       View=2,
00090       ViewGrp=3,
00091       MotionTracker=4
00092    };
00093 
00094    
00097    enum CoordSysGrp
00098    {
00099       Geodetic=0,
00100       ParentEntity=1,
00101       Submodel=2
00102    };
00103 
00104 
00105 
00106 
00107    
00108 
00109    
00112    CigiBasePositionResp();
00113 
00114    
00117    virtual ~CigiBasePositionResp();
00118 
00119 
00120    
00121 
00122    
00133    virtual int Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const=0;
00134 
00135    
00145    virtual int Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec) =0;
00146 
00147    
00159         virtual int GetCnvt(CigiVersionID &CnvtVersion,
00160                        CigiCnvtInfoType::Type &CnvtInfo);
00161 
00162 
00163 
00164    
00165 
00166    
00167 
00168    
00175    int SetObjectID(const Cigi_uint16 ObjectIDIn, bool bndchk=true)
00176    {
00177       ObjectID = ObjectIDIn;
00178       return(CIGI_SUCCESS);
00179    }
00180 
00181    
00184    Cigi_uint16 GetObjectID(void) const { return(ObjectID); }
00185 
00186 
00187    
00188 
00189    
00196    int SetArtPartID(const Cigi_uint8 ArtPartIDIn, bool bndchk=true)
00197    {
00198       ArtPartID = ArtPartIDIn;
00199       return(CIGI_SUCCESS);
00200    }
00201 
00202    
00205    Cigi_uint8 GetArtPartID(void) const { return(ArtPartID); }
00206 
00207 
00208    
00209 
00210    
00222    int SetObjectClass(const ObjectClassGrp ObjectClassIn, bool bndchk=true);
00223 
00224    
00227    ObjectClassGrp GetObjectClass(void) const { return(ObjectClass); }
00228 
00229 
00230    
00231 
00232    
00243    int SetCoordSys(const CoordSysGrp CoordSysIn, bool bndchk=true);
00244 
00245    
00248    CoordSysGrp GetCoordSys(void) const { return(CoordSys); }
00249 
00250 
00251    
00252 
00253    
00260    int SetLatOrXoff(const double LatOrXoffIn, bool bndchk=true)
00261    {
00262       LatOrXoff = LatOrXoffIn;
00263       return(CIGI_SUCCESS);
00264    }
00265 
00266    
00269    double GetLatOrXoff(void) const { return(LatOrXoff); }
00270 
00271 
00272    
00273 
00274    
00281    int SetLonOrYoff(const double LonOrYoffIn, bool bndchk=true)
00282    {
00283       LonOrYoff = LonOrYoffIn;
00284       return(CIGI_SUCCESS);
00285    }
00286 
00287    
00290    double GetLonOrYoff(void) const { return(LonOrYoff); }
00291 
00292 
00293    
00294 
00295    
00302    int SetAltOrZoff(const double AltOrZoffIn, bool bndchk=true)
00303    {
00304       AltOrZoff = AltOrZoffIn;
00305       return(CIGI_SUCCESS);
00306    }
00307 
00308    
00311    double GetAltOrZoff(void) const { return(AltOrZoff); }
00312 
00313 
00314    
00315 
00316    
00323    int SetRoll(const float RollIn, bool bndchk=true);
00324 
00325    
00328    float GetRoll(void) const { return(Roll); }
00329 
00330 
00331    
00332 
00333    
00340    int SetPitch(const float PitchIn, bool bndchk=true);
00341 
00342    
00345    float GetPitch(void) const { return(Pitch); }
00346 
00347 
00348    
00349 
00350    
00357    int SetYaw(const float YawIn, bool bndchk=true);
00358 
00359    
00362    float GetYaw(void) const { return(Yaw); }
00363 
00364 
00365 
00366 protected:
00367 
00368    
00369 
00370    
00374    Cigi_uint16 ObjectID;
00375 
00376    
00380    Cigi_uint8 ArtPartID;
00381 
00382    
00392    ObjectClassGrp ObjectClass;
00393 
00394    
00402    CoordSysGrp CoordSys;
00403 
00404    
00408    double LatOrXoff;
00409 
00410    
00414    double LonOrYoff;
00415 
00416    
00420    double AltOrZoff;
00421 
00422    
00425    float Roll;
00426 
00427    
00430    float Pitch;
00431 
00432    
00435    float Yaw;
00436 
00437 
00438 };
00439 
00440 #endif // #if !defined(_CIGI_BASE_POSITION_RESP_INCLUDED_)