00001 
00055 #if !defined(_CIGI_BASE_SENSOR_RESP_INCLUDED_)
00056 #define _CIGI_BASE_SENSOR_RESP_INCLUDED_
00057 
00058 #include "CigiBasePacket.h"
00059 
00060 
00061 
00062 
00063 
00064 #define CIGI_SENSOR_RESP_PACKET_ID_V1 105
00065 #define CIGI_SENSOR_RESP_PACKET_SIZE_V1 12
00066 
00067 #define CIGI_SENSOR_RESP_PACKET_ID_V2 105
00068 #define CIGI_SENSOR_RESP_PACKET_SIZE_V2 12
00069 
00070 #define CIGI_SENSOR_RESP_PACKET_ID_V3 106
00071 #define CIGI_SENSOR_RESP_PACKET_SIZE_V3 24
00072 
00073 #define CIGI_SENSOR_XRESP_PACKET_ID_V3 107
00074 #define CIGI_SENSOR_XRESP_PACKET_SIZE_V3 48
00075 
00076 
00077 class CigiSensorRespV1;
00078 class CigiSensorRespV2;
00079 class CigiSensorRespV3;
00080 class CigiSensorXRespV3;
00081 
00082 
00083 class CIGI_SPEC CigiBaseSensorResp : public CigiBasePacket
00084 {
00085 
00086 friend class CigiSensorRespV1;
00087 friend class CigiSensorRespV2;
00088 friend class CigiSensorRespV3;
00089 friend class CigiSensorXRespV3;
00090 
00091 public:
00092 
00093    
00096    enum SensorStatGrp
00097    {
00098       Searching=0,
00099       Tracking=1,
00100       NearBrakeLock=2,
00101       BrakeLock=3
00102    };
00103 
00104 
00105 
00106 
00107    
00108 
00109    
00112    CigiBaseSensorResp();
00113 
00114    
00117    virtual ~CigiBaseSensorResp();
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 SetSensorID(const Cigi_uint8 SensorIDIn, bool bndchk=true)
00176    {
00177       SensorID = SensorIDIn;
00178       return(CIGI_SUCCESS);
00179    }
00180 
00181    
00184    Cigi_uint8 GetSensorID(void) const { return(SensorID); }
00185 
00186 
00187    
00188 
00189    
00200    int SetSensorStat(const SensorStatGrp SensorStatIn, bool bndchk=true);
00201 
00202    
00205    SensorStatGrp GetSensorStat(void) const { return(SensorStat); }
00206 
00207 
00208    
00209 
00210    
00217    int SetGateSzX(const Cigi_uint16 GateSzXIn, bool bndchk=true)
00218    {
00219       GateSzX = GateSzXIn;
00220       return(CIGI_SUCCESS);
00221    }
00222 
00223    
00226    Cigi_uint16 GetGateSzX(void) const { return(GateSzX); }
00227 
00228 
00229    
00230 
00231    
00238    int SetGateSzY(const Cigi_uint16 GateSzYIn, bool bndchk=true)
00239    {
00240       GateSzY = GateSzYIn;
00241       return(CIGI_SUCCESS);
00242    }
00243 
00244    
00247    Cigi_uint16 GetGateSzY(void) const { return(GateSzY); }
00248 
00249 
00250    
00251 
00252    
00259    int SetGateXoff(const float GateXoffIn, bool bndchk=true);
00260 
00261    
00264    float GetGateXoff(void) const { return(GateXoff); }
00265 
00266 
00267    
00268 
00269    
00276    int SetGateYoff(const float GateYoffIn, bool bndchk=true);
00277 
00278    
00281    float GetGateYoff(void) const { return(GateYoff); }
00282 
00283 
00284 
00285 protected:
00286 
00287    
00288 
00289    
00293    Cigi_uint16 ViewID;
00294 
00295    
00299    Cigi_uint8 SensorID;
00300 
00301    
00310    SensorStatGrp SensorStat;
00311 
00312    
00316    bool EntityTgt;
00317 
00318    
00322    Cigi_uint16 EntityID;
00323 
00324    
00329    Cigi_uint16 GateSzX;
00330 
00331    
00336    Cigi_uint16 GateSzY;
00337 
00338    
00344    float GateXoff;
00345 
00346    
00352    float GateYoff;
00353 
00354    
00358    Cigi_uint32 FrameCntr;
00359 
00360    
00364    double TrackPntLat;
00365 
00366    
00370    double TrackPntLon;
00371 
00372    
00376    double TrackPntAlt;
00377 
00378 
00379 };
00380 
00381 #endif // #if !defined(_CIGI_BASE_SENSOR_RESP_INCLUDED_)