VR-Vantage 3.1 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ciSensor.h
Go to the documentation of this file.
1 
2 // Copyright JRM Enterprises, Inc. 2004 - 2012
3 // All rights reserved.
4 //
5 // This code is the intellectual property of JRM Enterprises, Inc.
6 // It may not be used or released as source or compiled binary form
7 // without the prior written consent of JRM Enterprises, Inc.
8 //
9 // Original Author: Nikolai Fedoroff
10 // Date: Oct 2004
11 //
12 
13 #if !defined(_ciSensor_h_)
14 #define _ciSensor_h_
15 #include "ciApi.h"
16 
17 #include "clXML.h"
18 #include <stdio.h>
19 #include <memory.h>
20 #include <malloc.h>
21 #include <string.h>
22 #include <assert.h>
23 #include <iostream>
24 #include <fstream>
25 #include "ciOptics.h"
26 #include "ciElectronics.h"
27 #include "ciDetector.h"
28 #include "ciSenSim.h"
29 #include "clXMLNode.h"
30 
36 {
37 public: // enumerations
38 
40  {
41  DEFAULT = 0,
42  IR = 1,
43  NVG = 2,
44  RADAR = 3,
45  SONAR = 4,
46  COMM = 5
47  };
48 
49 public: // methods
50 
52  // save
61  bool archive(std::ofstream &outf);
62 
64  // serialize
72  int serialize(char *filepath);
73 
74  //
75  // loadXML
76  //
77  // \par Description:
78  // Loads attributes from an XML node
79  //
80  // \param clXMLNode* childNode
81  // \return bool
82  //
83  bool loadXML(clXMLNode* childNode);
84 
85  //
86  // parseXML
87  //
88  // \par Description:
89  // Parses an XML document for specific tags
90  //
91  // \param clXML xmlDocument
92  // \return bool
93  //
94  bool parseXML(clXML& xmlDocument);
95 
97  //loadXMLNode
104  bool loadXMLNode(std::string tag, char *nodeString);
105 
107  //loadXMLNode
114  bool loadXMLNode(std::string tag, bool *nodeBool);
116  //loadXMLNode
123  bool loadXMLNode(std::string tag, int *nodeBool);
125  //loadXMLNode
132  bool loadXMLNode(std::string tag, double *nodeBool);
133 
134  //
135  // saveXML
136  //
137  // \par Description:
138  // Saves XML nodes to an XML document
139  //
140  // \param clXML* xmlDocument
141  //
142  void saveXML(clXML* xmlDocument);
143  void saveXML(clXML* xmlDocument, int sensorIndex, int SigSimActive, int SenSimActive);
144 
146  //serializeCheck
152  int serializeCheck(char *filepath);
153 
155  // add
164  virtual bool add(ciSensor sensor);
165 
167  // insert
178  virtual bool insert(ciSensor sensor, int idx = -1);
179 
181  // remove
190  virtual bool remove(int idx);
191 
193  // getName
201  char *getName(int idx = 0);
202 
204  // setName
213  void setName(const char *name, int idx = 0);
214 
216  // getType
224  int getType(int idx = 0);
225 
226 
228  // getSensorType
236  SensorType getSensorType(int idx = 0);
237 
239  // setType
248  void setType(int type, int idx = 0);
249 
250 
252  // setSensorType
260  void setSensorType(SensorType type, int idx = 0);
261 
263  // setBandInfo
274  void setBandInfo(double lowerBandLim, double upperBandLim, int nBands, int idx = 0);
275 
277  // setBandInfo
288  void setBandInfo(double lowerBandLim, double upperBandLim, double dx, int idx = 0);
289 
291  // getBandInfo
302  void getBandInfo(double &lowerBandLim, double &upperBandLim, int &nBands, int idx = 0);
303 
305  // getBandInfo
316  void getBandInfo(double &lowerBandLim, double &upperBandLim, double &dx, int idx = 0);
317 
319  // setFOVDegrees
329  void setFOVDegrees(double horz, double vert, int idx = 0);
330 
332  // getFOVDegrees
342  void getFOVDegrees(double &horz, double &vert, int idx = 0);
343 
345  // setFOVPixels
355  void setFOVPixels(int horz, int vert, int idx = 0);
356 
358  // getFOVPixels
368  void getFOVPixels(int &horz, int &vert, int idx = 0);
369 
371  //setDetectorScaleFactor
378  void setDetectorScaleFactor(double horizontalScaleFactor, double verticalScaleFactor, int idx = 0);
379 
381  //getDetectorScaleFactor
388  void getDetectorScaleFactor(double &horizontalScaleFactor, double &verticalScaleFactor, int idx = 0);
389 
391  //setScreenOffset
399  void setScreenOffset(int horizontalScreenOffset, int verticalScreenOffset, int idx = 0);
400 
402  //getScreenOffset
410  void getScreenOffset(int &horizontalScreenOffset, int &verticalScreenOffset, int idx = 0);
411 
413  // setTemperatureLimits
423  void setTemperatureLimits(double tMax, double tMin, int idx = 0);
424 
426  // getTemperatureLimits
436  void getTemperatureLimits(double &tMax, double &tMin, int idx = 0);
437 
439  // setMaxLightLevel
448  void setMaxLightLevel(double maxLightLevel, int idx = 0);
449 
451  // getMaxLightLevel
459  double getMaxLightLevel(int idx = 0);
460 
462  // setSaturationRatio
471  void setSaturationRatio(double satRatio, int idx = 0);
472 
474  // getSaturationRatio
482  double getSaturationRatio(int idx = 0);
483 
485  // getQEResponseFile
493  char *getQEResponseFile(int idx = 0);
494 
496  // setQEResponseFile
505  void setQEResponseFile(char *filename, int idx = 0);
506 
508  // getTrackfile
516  char *getTrackfile(int idx = 0);
517 
519  // setTrackfile
528  void setTrackfile(char *filename, int idx = 0);
529 
531  // setIndex
538  void setIndex(int index) {m_sensorList[0].index = index;}
539 
541  // getIndex
548  int getIndex() {return m_sensorList[0].index;}
549 
551  // getNumSensors
558  int getNumSensors() {return m_nSensors;}
560  //setNumSensors
565  void setNumSensors(int nSensors) {m_nSensors = nSensors;}
567  //setAutomaticRadience
573  void setAutomaticRadiance(bool flag, int idx = 0);
575  //setAutomaticRadience
581  bool getAutomaticRadiance(int idx = 0);
583  //setDopplerSpatialEffects
589  void setDopplerSpatialEffects(bool flag, int idx = 0);
590 
592  //getDopplerSpatialEffects
598  bool getDopplerSpatialEffects(int idx = 0);
599 
601  //setDopplerBeamSharpening
607  void setDopplerBeamSharpening(bool flag, int idx = 0);
609  //getDopplerBeamSharpening
615  bool getDopplerBeamSharpening(int idx = 0);
616 
618  // setGain
627  void setGain(double gain, int idx = 0);
628 
630  // getGain
638  double getGain(int idx = 0);
639 
641  // setLevel
650  void setLevel(double level, int idx = 0);
651 
653  // getLevel
661  double getLevel(int idx = 0);
662 
664  // setPemitterW
673  void setPemitterW(double PemitterW, int idx = 0);
674 
676  // getPemitterW
684  double getPemitterW(int idx = 0);
685 
687  // setTransmitterGain
696  void setTransmitterGain(double AntGain, int idx = 0);
697 
699  // getTransmitterGain
707  double getTransmitterGain(int idx = 0);
708 
710  // setReceiverGain
719  void setReceiverGain(double AntGain, int idx = 0);
720 
722  // getReceiverGain
730  double getReceiverGain(int idx = 0);
731 
733  // setGainPattern
742  void setGainPattern(int pattern, int idx = 0);
743 
745  // getGainPattern
753  int getGainPattern(int idx);
754 
755 
757  // setFCemitterHz
766  void setFCemitterHz(double FCemitterHz, int idx = 0);
767 
769  // getFCemitterHz
777  double getFCemitterHz(int idx = 0);
778 
780  // setBWemitterHz
789  void setBWemitterHz(double BWemitterHz, int idx = 0);
790 
792  // getBWemitterHz
800  double getBWemitterHz(int idx = 0);
801 
803  // setChannelResolutionHz
812  void setChannelResolutionHz(double ChannelResolutionHz, int idx = 0);
813 
815  // getChannelResolutionHz
823  double getChannelResolutionHz(int idx = 0);
824 
826  // setPulseWidth
835  void setPulseWidth(double PulseWidth, int idx = 0);
836 
838  // getPulseWidth
846  double getPulseWidth(int idx = 0);
847 
849  // setPRF
858  void setPRF(double PRF, int idx = 0);
859 
861  // getPRF
869  double getPRF(int idx = 0);
870 
872  // setNFPRF
881  void setNFPRF(double PRF, int idx = 0);
882 
884  // getNFPRF
892  double getNFPRF(int idx = 0);
893 
895  // setTPolAngle
904  void setTPolAngle(double PolAngle, int idx = 0);
905 
907  // getTPolAngle
915  double getTPolAngle(int idx = 0);
916 
918  // setRPolAngle
927  void setRPolAngle(double PolAngle, int idx = 0);
928 
930  // getRPolAngle
938  double getRPolAngle(int idx = 0);
939 
941  // setSysTempK
950  void setSysTempK(double degK, int idx = 0);
951 
953  // getSysTempK
961  double getSysTempK(int idx);
962 
964  // setBeamWidth
973  void setBeamWidth(double rad, int idx = 0);
974 
976  // getBeamWidth
984  double getBeamWidth(int idx = 0);
985 
987  // setRangeCompensation
996  void setRangeCompensation(bool rangeCompensation, int idx = 0);
997 
999  // getRangeCompensation
1007  bool getRangeCompensation(int idx = 0) const;
1008 
1010  //
1011  void setFRDAngularVelocity(double Yradpersec, double Pradpersec, double Rradpersec, int idx = 0);
1012 
1014  //
1015  void getFRDAngularVelocity(double &Yradpersec, double &Pradpersec, double &Rradpersec, int idx = 0);
1016 
1018  //
1019  void setSpotfile(char *filename, int idx = 0);
1020 
1022  //
1023  char *getSpotfile(int idx);
1024 
1025 
1027  // setTAprops
1040  void setTAprops(double ThreshDetect, double ThreshClassify, double ThreshRecognize, double ThreshIdentify, double PersistenceTime, int idx = 0);
1041 
1043  // getTAprops
1056  void getTAprops(double &ThreshDetect, double &ThreshClassify, double &ThreshRecognize, double &ThreshIdentify, double &PersistenceTime, int idx = 0);
1057 
1059  // setDopplerThreshold
1068  void setDopplerThreshold(double threshold, int idx = 0);
1069 
1071  // getDopplerThreshold
1079  double getDopplerThreshold(int idx = 0);
1080 
1082  // setDopplerThresholdMin
1091  void setDopplerThresholdMin(double threshold, int idx = 0);
1092 
1094  // getDopplerThresholdMin
1102  double getDopplerThresholdMin(int idx = 0);
1103 
1105  // setDopplerThresholdMax
1114  void setDopplerThresholdMax(double threshold, int idx = 0);
1115 
1117  // getDopplerThresholdMax
1125  double getDopplerThresholdMax(int idx = 0);
1126 
1128  // setClutterReductionMode
1137  void setClutterReductionMode(int CRMode, int idx = 0);
1138 
1140  // getClutterReductionMode
1148  int getClutterReductionMode(int idx = 0);
1149 
1151  // setClutterReductionFactor
1160  void setClutterReductionFactor(double CRFactor, int idx = 0);
1161 
1163  // getClutterReductionFactor
1171  double getClutterReductionFactor(int idx = 0);
1172 
1174  // setUseTrackfile
1183  void setUseTrackfile(bool useTrackfile, int idx = 0);
1184 
1186  // getUseTrackfile
1194  bool getUseTrackfile(int idx = 0);
1195 
1197  // setWorldPosition
1205  void setWorldPosition(double x, double y, double z, int i = 0);
1206 
1208  // getWorldPosition
1216  void getWorldPosition(double& x, double& y, double& z, int i = 0);
1217 
1219  // setGeodeticPosition
1230  void setGeodeticPosition(double latitude, double longitude, double altitude, int idx = 0);
1231 
1233  // getGeodeticPosition
1244  void getGeodeticPosition(double &latitude, double &longitude, double &altitude, int idx = 0);
1245 
1247  // setNEDOrientation
1258  void setNEDOrientation(double heading, double pitch, double roll, int idx = 0);
1259 
1261  // getNEDOrientation
1272  void getNEDOrientation(double &heading, double &pitch, double &roll, int idx = 0);
1273 
1275  // setNEDLinearVelocity
1286  void setNEDLinearVelocity(double n, double e, double d, int idx = 0);
1287 
1289  // getNEDLinearVelocity
1300  void getNEDLinearVelocity(double &n, double &e, double &d, int idx = 0);
1301 
1303  // SetActive
1312  void SetActive(bool isActive, int idx = 0);
1313 
1315  // GetActive
1323  bool GetActive(int idx = 0);
1324 
1326  //setRGBColor
1331  void setRGBColor(int color, int idx = 0) { m_sensorList[idx].m_sensorRGBColor = color; }
1333  //getRGBColor
1338  int getRGBColor(int idx = 0) { return m_sensorList[idx].m_sensorRGBColor; }
1340  //setReprojection
1346  void setReprojection(bool flag, int idx = 0);
1348  //getReprojection
1354  bool getReprojection(int idx = 0);
1355 
1356 
1357  void setBoresightROI(double x, double y, double width, double height, int idx = 0);
1358  void getBoresightROI(double &x, double &y, double &width, double &height, int idx = 0);
1359  void setIntegrationPathlength(double length, int idx = 0);
1360  void getIntegrationPathlength(double &length, int idx = 0);
1361  void setShadowOrientationDown(bool flag, int idx = 0);
1362  bool getShadowOrientationDown(int idx = 0);
1363  void setIntegrationTime(double time, int idx = 0);
1364  void getIntegrationTime(double &time, int idx = 0);
1365 
1366  void setIntensityModulationGain(double imodGain, int idx = 0);
1367  double getIntensityModulationGain(int idx = 0);
1368 
1370  //setMtiRadarReturn
1376  void setMtiRadarReturn(bool flag, int idx = 0);
1378  //getMtiRadarReturn
1384  bool getMtiRadarReturn(int idx = 0);
1385 
1387  //setDisplayType
1393  void setDisplayType(int displayType, int idx = 0);
1394 
1396  //getDisplayType
1402  int getDisplayType(int idx = 0);
1403 
1405  // setRadianceScaleEnable
1413  void setRadianceScaleEnable( bool enable, int idx = 0 )
1414  {
1415  m_sensorList[idx].applyRadianceScale = enable;
1416  }
1417 
1419  // getRadianceScaleEnable
1427  bool getRadianceScaleEnable(int idx = 0) const
1428  {
1429  return m_sensorList[idx].applyRadianceScale;
1430  }
1431 
1433  // getPPIMaxDownRangeResolution
1441  int getPPIMaxDownRangeResolution(int idx = 0) const
1442  {
1443  return m_sensorList[idx].m_ppiMaxDownRangeResolution;
1444  }
1445 
1447  // setPPIMaxDownRangeResolution
1455  void setPPIMaxDownRangeResolution( int samples, int idx = 0 )
1456  {
1457  m_sensorList[idx].m_ppiMaxDownRangeResolution = samples;
1458  }
1459 
1461  // getPPIMaxCrossRangeResolution
1469  int getPPIMaxCrossRangeResolution(int idx = 0) const
1470  {
1471  return m_sensorList[idx].m_ppiMaxCrossRangeResolution;
1472  }
1473 
1475  // setPPIMaxCrossRangeResolution
1483  void setPPIMaxCrossRangeResolution( int samples, int idx = 0 )
1484  {
1485  m_sensorList[idx].m_ppiMaxCrossRangeResolution = samples;
1486  }
1487 
1489  // getMinWedgeExtent
1496  double getMinWedgeExtent(int idx = 0) { return m_sensorList[idx].minWedgeExtent; }
1497 
1499  // setMinWedgeExtent
1507  void setMinWedgeExtent( double angle, int idx = 0 )
1508  {
1509  if( angle >= -360.0 && angle < m_sensorList[idx].maxWedgeExtent && angle < 360.0 )
1510  m_sensorList[idx].minWedgeExtent = angle;
1511  }
1512 
1514  // getMaxWedgeExtent
1521  double getMaxWedgeExtent(int idx = 0) { return m_sensorList[idx].maxWedgeExtent; }
1522 
1524  // setMaxWedgeExtent
1532  void setMaxWedgeExtent( double angle, int idx = 0 )
1533  {
1534  if( angle > -360.0 && angle > m_sensorList[idx].minWedgeExtent && angle <= 360.0 )
1535  m_sensorList[idx].maxWedgeExtent = angle;
1536  }
1537 
1538 
1539 
1541  // getDisplayRange
1549  double getDisplayRange(int idx = 0){ return m_sensorList[idx].displayRange; }
1550 
1552  // setDisplayRange
1560  void setDisplayRange( double range, int idx = 0 ){ if( range > 0.0 ) m_sensorList[idx].displayRange = range; }
1561 
1562 
1564  // getMaxRadarRangeScale
1572  double getMaxRadarRangeScale(int idx = 0) const;
1573 
1575  // setMaxRadarRangeScale
1583  void setMaxRadarRangeScale( double rangeScale, int idx = 0 );
1584 
1585  bool getBacksweepState( int idx = 0 ){ return m_sensorList[idx].enableBacksweep; }
1586 
1587  void enableBacksweep( bool backsweep, int idx = 0 ){ m_sensorList[idx].enableBacksweep = backsweep; }
1588 
1589  bool getOtwViewState(int idx = 0){ return m_sensorList[idx].showOtwView ;}
1590 
1591  void showOtwView( bool show, int idx = 0 ){ m_sensorList[idx].showOtwView = show; }
1592 
1593  void setPPIDisplayOffsetScale(int offsetX, int offsetY, double scaleX, double scaleY, int idx = 0);
1594  void getPPIDisplayOffsetScale(int &offsetX, int &offsetY, double &scaleX, double &scaleY, int idx = 0);
1595  void setPPIRadarReturnColor(double red, double green, double blue, int idx = 0);
1596  void getPPIRadarReturnColor(double &red, double &green, double &blue, int idx = 0);
1597  void setPPISARTRadarColor(double red, double green, double blue, int idx = 0);
1598  void getPPISARTRadarColor(double &red, double &green, double &blue, int idx = 0);
1599  void setPPITurbulenceRadarColor(double red, double green, double blue, int idx = 0);
1600  void getPPITurbulenceRadarColor(double &red, double &green, double &blue, int idx = 0);
1601 
1602  void setPPIRangeRingRenderEnable( bool renderEnable, int idx = 0 )
1603  {
1604  m_sensorList[idx].m_rangeRingRenderEnable = renderEnable;
1605  }
1606  bool getPPIRangeRingRenderEnable( int idx = 0 ) const
1607  {
1608  return m_sensorList[idx].m_rangeRingRenderEnable;
1609  }
1610 
1611  void setPPIRadarArmSweepRenderEnable( bool renderEnable, int idx = 0 )
1612  {
1613  m_sensorList[idx].m_radarArmSweepRenderEnable = renderEnable;
1614  }
1615  bool getPPIRadarArmSweepRenderEnable( int idx = 0 ) const
1616  {
1617  return m_sensorList[idx].m_radarArmSweepRenderEnable;
1618  }
1619 
1620  void setPPIRadarCursorEnable( bool renderEnable, int idx = 0 )
1621  {
1622  m_sensorList[idx].m_PPIradarCursorEnable = renderEnable;
1623  }
1624  bool getPPIRadarCursorEnable( int idx = 0 ) const
1625  {
1626  return m_sensorList[idx].m_PPIradarCursorEnable;
1627  }
1628 
1629  void setPPILineWidth( double lineWidth, int idx = 0 )
1630  {
1631  m_sensorList[idx].m_lineWidth = lineWidth;
1632  }
1633  double getPPILineWidth( int idx = 0 ) const
1634  {
1635  return m_sensorList[idx].m_lineWidth;
1636  }
1637 
1639  // getDBSangleExtent
1647  double getDBSangleExtent(int idx = 0){ return m_sensorList[idx].DBSangleExtent; }
1648 
1650  // setDBSangleExtent
1658  void setDBSangleExtent( double angle, int idx = 0 ){ if( angle > 0.0 ) m_sensorList[idx].DBSangleExtent = angle; }
1659 
1661  // getActiveSectorWidth
1669  double getActiveSectorWidth(int idx = 0){ return m_sensorList[idx].m_activeSectorWidth; }
1670 
1672  // setActiveSectorWidth
1680  void setActiveSectorWidth( double angle, int idx = 0 ){ if( angle > 0.0 ) m_sensorList[idx].m_activeSectorWidth = angle; }
1681 
1682  void setDBScenter(double centerX, double centerY, int idx = 0);
1683  void getDBScenter(double &centerX, double &centerY, int idx = 0);
1684 
1686  // getGMTIMode
1694  int getGMTIMode(int idx = 0) const
1695  {
1696  return m_sensorList[idx].m_gmtiMode;
1697  }
1698 
1700  // setGMTIMode
1708  void setGMTIMode( int mode, int idx = 0 )
1709  {
1710  m_sensorList[idx].m_gmtiMode = mode;
1711  }
1712 
1714  // getGMTITrackFilterMode
1722  int getGMTITrackFilterMode(int idx = 0) const
1723  {
1724  return m_sensorList[idx].m_gmtiTrackFilterMode;
1725  }
1726 
1728  // setGMTITrackFilterMode
1736  void setGMTITrackFilterMode( int mode, int idx = 0 )
1737  {
1738  m_sensorList[idx].m_gmtiTrackFilterMode = mode;
1739  }
1740 
1742  // getGMTITrackFilterID
1750  int getGMTITrackFilterID(int idx = 0) const
1751  {
1752  return m_sensorList[idx].m_gmtiTrackFilterID;
1753  }
1754 
1756  // setGMTITrackFilterID
1764  void setGMTITrackFilterID( int id, int idx = 0 )
1765  {
1766  m_sensorList[idx].m_gmtiTrackFilterID = id;
1767  }
1768 
1770  // getScaleMTItargetIndicators
1778  void getScaleMTItargetIndicators(double &x, double &y, int idx = 0) const
1779  {
1780  x = m_sensorList[idx].m_mtiScaleX;
1781  y = m_sensorList[idx].m_mtiScaleY;
1782  }
1783 
1785  // setScaleMTItargetIndicators
1793  void setScaleMTItargetIndicators( double x, double y, int idx = 0 )
1794  {
1795  m_sensorList[idx].m_mtiScaleX = x;
1796  m_sensorList[idx].m_mtiScaleY = y;
1797  }
1798 
1800  // getAirToAirMode
1808  int getAirToAirMode(int idx = 0) const
1809  {
1810  return m_sensorList[idx].m_airToAirMode;
1811  }
1812 
1814  // setAirToAirMode
1822  void setAirToAirMode( int mode, int idx = 0 )
1823  {
1824  m_sensorList[idx].m_airToAirMode = mode;
1825  }
1826 
1828  // getMaxMTItargets
1836  int getMaxMTItargets(int idx = 0) const
1837  {
1838  return m_sensorList[idx].m_maxMTItargets;
1839  }
1840 
1842  // setMaxMTItargets
1850  void setMaxMTItargets( int maxTargets, int idx = 0 )
1851  {
1852  m_sensorList[idx].m_maxMTItargets = maxTargets;
1853  }
1854 
1856  // getMaxAirToAirVelocity
1864  double getMaxAirToAirVelocity(int idx = 0) const
1865  {
1866  return m_sensorList[idx].m_maxA2Avelocity;
1867  }
1868 
1870  // setMaxAirToAirVelocity
1878  void setMaxAirToAirVelocity( double maxVelocity, int idx = 0 )
1879  {
1880  m_sensorList[idx].m_maxA2Avelocity = maxVelocity;
1881  }
1882 
1884  // getCagedModeHeadingPitch
1892  void getCagedModeHeadingPitch(double &heading, double &pitch, int idx = 0) const
1893  {
1894  heading = m_sensorList[idx].m_cagedModeHeading;
1895  pitch = m_sensorList[idx].m_cagedModePitch;
1896  }
1897 
1899  // setCagedModeHeadingPitch
1908  void setCagedModeHeadingPitch( double heading, double pitch, int idx = 0 )
1909  {
1910  m_sensorList[idx].m_cagedModeHeading = heading;
1911  m_sensorList[idx].m_cagedModePitch = pitch;
1912  }
1913 
1915  // getTransponderReceiverFrequency
1923  double getTransponderReceiverFrequency(int idx = 0) const
1924  {
1925  return m_sensorList[idx].m_transponderReceiverFrequency;
1926  }
1927 
1929  // setTransponderReceiverFrequency
1937  void setTransponderReceiverFrequency( double frequency, int idx = 0 )
1938  {
1939  m_sensorList[idx].m_transponderReceiverFrequency = frequency;
1940  }
1941 
1943  // getTrackLifeTime
1951  double getTrackLifeTime(int idx = 0) const
1952  {
1953  return m_sensorList[idx].m_trackLifeTime;
1954  }
1955 
1957  // setTrackLifeTime
1965  void setTrackLifeTime( double lifetime, int idx = 0 )
1966  {
1967  m_sensorList[idx].m_trackLifeTime = lifetime;
1968  }
1969 
1971  //getRadarColorMapFileName
1979  char* getRadarColorMapFileName(int idx = 0) const
1980  {
1981  return m_sensorList[idx].m_radarColorMapFileName;
1982  }
1983 
1985  //setRadarColorMapFileName
1993  void setRadarColorMapFileName(const char* filepath, int idx = 0);
1994 
1996  // getMaxMTIhistory
2004  int getMaxMTIhistory(int idx = 0) const
2005  {
2006  return m_sensorList[idx].m_maxMTIhistory;
2007  }
2008 
2010  // setMaxMTIhistory
2018  void setMaxMTIhistory( int history, int idx = 0 )
2019  {
2020  m_sensorList[idx].m_maxMTIhistory = history;
2021  }
2022 
2024  //setSensorOptics
2030  void setSensorOptics(ciOptics optics, int idx = 0);
2032  //getSensorOptics
2038  ciOptics &getSensorOptics(int idx = 0);
2040  //setSensorElectronics
2046  void setSensorElectronics(ciElectronics electronics, int idx = 0);
2048  //getSensorElectronics
2054  ciElectronics &getSensorElectronics(int idx = 0);
2056  //setSensorDetector
2062  void setSensorDetector(ciDetector detector, int idx = 0);
2064  //getSensorDetector
2070  ciDetector &getSensorDetector(int idx = 0);
2072  //setSensorSenSim
2078  void setSensorSenSim(ciSenSim senSim, int idx = 0);
2080  //getSensorSenSim
2086  ciSenSim &getSensorSenSim(int idx = 0);
2087 
2088 
2090  // operator =
2098  ciSensor operator = (ciSensor &obj);
2099 
2101  // operator []
2108  ciSensor & operator [] (int idx);
2109 
2110  //public: // methods
2111 
2113  // ciSensor
2118  ciSensor();
2119 
2121  // ciSensor
2128  ciSensor(ciSensor &obj);
2129 
2131  // ~ciSensor
2136  virtual ~ciSensor();
2137 
2138 protected: // variables
2139 
2141  // structSensorData
2169 public:
2171  {
2172  int index;
2173  char name[128];
2174  int type;
2177  double dx;
2178  int nBands;
2179  double hFOVDeg;
2180  double vFOVDeg;
2186  double satRatio; // [unitless 1->infty] S/N Ratio at saturation for radar.
2188  char trackFilepath[512];
2189  double worldX;
2190  double worldY;
2191  double worldZ;
2192  double latitude;
2193  double longitude;
2194  double altitude;
2195  double heading;
2196  double pitch;
2197  double roll;
2198  double velN;
2199  double velE;
2200  double velD;
2201  bool isActive;
2209  char QEResponseFile[512];
2210  double PemitterW; // [W] Power of active sensor antenna
2211  double TGain; // [unitless] Directional transmitter antenna Gain
2212  double RGain; // [unitless] Directional receiver antenna Gain
2213  int GainPattern; // [0=Unity, 1=Lobe, 2=Rect] Gain Pattern of the antenna
2214  double FCemitterHz; // [Hz] Center frequency of emitter
2215  double BWemitterHz; // [Hz] Bandwidth of emitter
2216  double ChannelResolutionHz; // [Hz] Receiver Channel resolution
2217  double PulseWidth; // [s] Pulse width in seconds
2218  double PRF; // [Hz] Pulse repetition frequency (foveal)
2219  double NFPRF; // [Hz] Pulse repetition frequency (nonfoveal)
2220  double TpolAngle; // [deg] Transmittter Polarization Angle {H=0, V=90, U=45}
2221  double RpolAngle; // [deg] Receiver Polarization Angle {H=0, V=90, U=45}
2222  double SysTempK; // [degK] Radar System Temperature
2223  double BeamWidth; // [rad] Beam or spot width
2224  bool RangeCompensation; // [unitless] Flag for controlling range compensation
2225  double velY; // [rad/s] FRD Yaw (horizontal) sensor rotation frequency
2226  double velP; // [rad/s] FRD Pitch (vertical) sensor rotation frequency
2227  double velR; // [rad/s] FRD Roll (helica) sensor rotation frequency
2228  char spotFilepath[512];
2229  double ThreshDetect; // [unitless 0-1] Detection probability
2230  double ThreshClassify; // [unitless 0-1] Classification probability
2231  double ThreshRecognize; // [unitless 0-1] Recognition probability
2232  double ThreshIdentify; // [unitless 0-1] Identification probability
2233  double DopplerThreshold; // [unitless] Doppler threshold
2234  double DopplerThresholdMin; // [unitless] Minimum doppler threshold
2235  double DopplerThresholdMax; // [unitless] Maximum doppler threshold (replaces dopplerThreshold)
2236  double PersistenceTime; // [s] TA status persistence time
2237  double Gain; // [unitless 0-1] Gain
2238  double Level; // [unitless 0-1] Level
2240  double boresightRoiX;
2252 
2254 
2255  //ppi mode display params
2280  double m_lineWidth;
2285  double DBScenterX;
2286  double DBScenterY;
2293  double m_mtiScaleX;
2294  double m_mtiScaleY;
2300  char m_radarColorMapFileName[768];
2301 
2307  //ciDisplay display;
2308  } *m_sensorList;
2313 private: // variables
2314 
2315 };
2316 
2317 #endif // _ciSensor_h_


Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)