00001 
00055 #if !defined(_CIGI_BASE_SENSOR_CTRL_INCLUDED_)
00056 #define _CIGI_BASE_SENSOR_CTRL_INCLUDED_
00057 
00058 #include "CigiBasePacket.h"
00059 
00060 
00061 
00062 
00063 
00064 
00065 #define CIGI_SENSOR_CTRL_PACKET_ID_V1 9
00066 #define CIGI_SENSOR_CTRL_PACKET_SIZE_V1 24
00067 
00068 #define CIGI_SENSOR_CTRL_PACKET_ID_V2 9
00069 #define CIGI_SENSOR_CTRL_PACKET_SIZE_V2 24
00070 
00071 #define CIGI_SENSOR_CTRL_PACKET_ID_V3 17
00072 #define CIGI_SENSOR_CTRL_PACKET_SIZE_V3 24
00073 
00074 
00075 class CigiSensorCtrlV1;
00076 class CigiSensorCtrlV2;
00077 class CigiSensorCtrlV3;
00078 
00079 
00080 class CIGI_SPEC CigiBaseSensorCtrl : public CigiBasePacket
00081 {
00082 
00083 friend class CigiSensorCtrlV1;
00084 friend class CigiSensorCtrlV2;
00085 friend class CigiSensorCtrlV3;
00086 
00087 public:
00088 
00089    
00092    enum PolarityGrp
00093    {
00094       WhiteHot=0,
00095       BlackHot=1
00096    };
00097 
00098    
00101    enum TrackModeGrp
00102    {
00103       TrackOff=0,
00104       ForceCorrelate=1,
00105       Scene=2,
00106       Target=3,
00107       Ship=4,
00108       TMDefA=5,
00109       TMDefB=6,
00110       TMDefC=7
00111    };
00112 
00113    
00116    enum TrackPolarityGrp
00117    {
00118       TrackWhite=0,
00119       TrackBlack=1
00120    };
00121 
00122    
00125    enum ResponseTypeGrp
00126    {
00127       GatePos=0,
00128       GateAndTargetPos=1
00129    };
00130 
00131 
00132 
00133 
00134    
00135 
00136    
00139    CigiBaseSensorCtrl();
00140 
00141    
00144    virtual ~CigiBaseSensorCtrl();
00145 
00146 
00147    
00148 
00149    
00160    virtual int Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const=0;
00161 
00162    
00172    virtual int Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec) =0;
00173 
00174    
00186         virtual int GetCnvt(CigiVersionID &CnvtVersion,
00187                        CigiCnvtInfoType::Type &CnvtInfo);
00188 
00189 
00190 
00191    
00192 
00193    
00194 
00195    
00203    int SetSensorID(const Cigi_uint8 SensorIDIn, bool bndchk=true)
00204    {
00205       SensorID = SensorIDIn;
00206       return(CIGI_SUCCESS);
00207    }
00208 
00209    
00212    Cigi_uint8 GetSensorID(void) const { return(SensorID); }
00213 
00214 
00215    
00216 
00217    
00224    int SetSensorOn(const bool SensorOnIn, bool bndchk=true)
00225    {
00226       SensorOn = SensorOnIn;
00227       return(CIGI_SUCCESS);
00228    }
00229 
00230    
00233    bool GetSensorOn(void) const { return(SensorOn); }
00234 
00235 
00236    
00237 
00238    
00248    int SetPolarity(const PolarityGrp PolarityIn, bool bndchk=true);
00249 
00250    
00253    PolarityGrp GetPolarity(void) const { return(Polarity); }
00254 
00255 
00256    
00257 
00258    
00266    int SetLineDropEn(const bool LineDropEnIn, bool bndchk=true)
00267    {
00268       LineDropEn = LineDropEnIn;
00269       return(CIGI_SUCCESS);
00270    }
00271 
00272    
00275    bool GetLineDropEn(void) const { return(LineDropEn); }
00276 
00277 
00278    
00279 
00280    
00293    int SetTrackMode(const TrackModeGrp TrackModeIn, bool bndchk=true);
00294 
00295    
00298    TrackModeGrp GetTrackMode(void) const { return(TrackMode); }
00299 
00300 
00301    
00302 
00303    
00311    int SetAutoGainEn(const bool AutoGainEnIn, bool bndchk=true)
00312    {
00313       AutoGainEn = AutoGainEnIn;
00314       return(CIGI_SUCCESS);
00315    }
00316 
00317    
00320    bool GetAutoGainEn(void) const { return(AutoGainEn); }
00321 
00322 
00323    
00324 
00325    
00335    int SetTrackPolarity(const TrackPolarityGrp TrackPolarityIn, bool bndchk=true);
00336 
00337    
00340    TrackPolarityGrp GetTrackPolarity(void) const { return(TrackPolarity); }
00341 
00342 
00343    
00344 
00345    
00352    int SetLevel(const float LevelIn, bool bndchk=true);
00353 
00354    
00357    float GetLevel(void) const { return(Level); }
00358 
00359 
00360    
00361 
00362    
00370    int SetACCoupling(const float ACCouplingIn, bool bndchk=true);
00371 
00372    
00375    float GetACCoupling(void) const { return(ACCoupling); }
00376 
00377 
00378    
00379 
00380    
00388    int SetNoise(const float NoiseIn, bool bndchk=true);
00389 
00390    
00393    float GetNoise(void) const { return(Noise); }
00394 
00395 
00396 
00397 protected:
00398 
00399    
00400 
00401    
00405    Cigi_uint16 ViewID;
00406 
00407    
00411    Cigi_uint8 SensorID;
00412 
00413    
00417    bool SensorOn;
00418 
00419    
00426    PolarityGrp Polarity;
00427 
00428    
00433    bool LineDropEn;
00434 
00435    
00444    TrackModeGrp TrackMode;
00445 
00446    
00451    bool AutoGainEn;
00452 
00453    
00459    TrackPolarityGrp TrackPolarity;
00460 
00461    
00468    ResponseTypeGrp ResponseType;
00469 
00470    
00477    float Gain;
00478 
00479    
00484    float Level;
00485 
00486    
00491    float ACCoupling;
00492 
00493    
00498    float Noise;
00499 
00500 
00501 };
00502 
00503 #endif // #if !defined(_CIGI_BASE_SENSOR_CTRL_INCLUDED_)