]> git.mxchange.org Git - flightgear.git/commitdiff
add min/max freq to the frequencyformatter
authorTorsten Dreyer <torsten@t3r.de>
Fri, 14 Mar 2014 14:19:23 +0000 (15:19 +0100)
committerTorsten Dreyer <torsten@t3r.de>
Fri, 14 Mar 2014 14:19:23 +0000 (15:19 +0100)
src/Instrumentation/commradio.cxx
src/Instrumentation/frequencyformatter.hxx
src/Instrumentation/newnavradio.cxx

index de9c9f035e8f3f286a4f248d1934b1628041bb30..341488671ae102021db4d315d7b65c8730865654 100644 (file)
@@ -81,6 +81,7 @@ double SimpleDistanceSquareSignalQualityComputer::computeSignalQuality( double d
 class OnExitHandler {
   public:
     virtual void onExit() = 0;
+    virtual ~OnExitHandler() {}
 };
 
 class OnExit {
@@ -113,6 +114,7 @@ class OutputProperties : public OnExitHandler {
       _PO_trackDistance_m( rootNode->getNode("track-distance-m",true) ),
       _PO_heightAboveStation_ft( rootNode->getNode("height-above-station-ft",true) )
       {}
+    virtual ~OutputProperties() {}
 
 protected:
     SGPropertyNode_ptr _rootNode;
@@ -282,9 +284,9 @@ CommRadioImpl::CommRadioImpl( SGPropertyNode_ptr node ) :
     _num( node->getIntValue("number",0)),
     _metarBridge( new MetarBridge() ),
     _useFrequencyFormatter( _rootNode->getNode("frequencies/selected-mhz",true), 
-                            _rootNode->getNode("frequencies/selected-mhz-fmt",true), 0.025 ),
+                            _rootNode->getNode("frequencies/selected-mhz-fmt",true), 0.025, 118.0, 136.0 ),
     _stbyFrequencyFormatter( _rootNode->getNode("frequencies/standby-mhz",true), 
-                            _rootNode->getNode("frequencies/standby-mhz-fmt",true), 0.025 ),
+                            _rootNode->getNode("frequencies/standby-mhz-fmt",true), 0.025, 118.0, 136.0 ),
     _signalQualityComputer( new SimpleDistanceSquareSignalQualityComputer(10*SG_NM_TO_METER) ),
 
     _stationTTL(0.0),
index d231eb0a18f3fa1b8ad6782154e67d2af8aa694a..f36c785049d0499de9ea7b3359f3a5823a2e783c 100644 (file)
@@ -5,10 +5,12 @@
 
 class FrequencyFormatter : public SGPropertyChangeListener {
 public:
-  FrequencyFormatter( SGPropertyNode_ptr freqNode, SGPropertyNode_ptr fmtFreqNode, double channelSpacing ) :
+  FrequencyFormatter( SGPropertyNode_ptr freqNode, SGPropertyNode_ptr fmtFreqNode, double channelSpacing, double min, double max ) :
     _freqNode( freqNode ),
     _fmtFreqNode( fmtFreqNode ),
-    _channelSpacing(channelSpacing)
+    _channelSpacing(channelSpacing),
+    _min(min),
+    _max(max)
   {
     _freqNode->addChangeListener( this );
     valueChanged(_freqNode);
@@ -34,13 +36,18 @@ public:
   {
     double d = SGMiscd::roundToInt(_freqNode->getDoubleValue() / _channelSpacing) * _channelSpacing;
     // strip last digit, do not round
-    return ((int)(d*100))/100.0;
+    double f = ((int)(d*100))/100.0;
+    if( f < _min ) return _min;
+    if( f >= _max ) return _max;
+    return f;
   }
 
 private:
   SGPropertyNode_ptr _freqNode;
   SGPropertyNode_ptr _fmtFreqNode;
   double _channelSpacing;
+  double _min;
+  double _max;
 };
 
 
index 0c97a7c6d2507907616a864ede5c275c8e99cec9..a932a0e2adebf89a436f618d46814db9d4351851 100644 (file)
@@ -843,8 +843,8 @@ NavRadioImpl::NavRadioImpl( SGPropertyNode_ptr node ) :
   _name(node->getStringValue("name", "nav")),
   _num(node->getIntValue("number", 0)),
   _rootNode(fgGetNode( std::string("/instrumentation/") + _name, _num, true)),
-  _useFrequencyFormatter( _rootNode->getNode("frequencies/selected-mhz",true), _rootNode->getNode("frequencies/selected-mhz-fmt",true), 0.05 ),
-  _stbyFrequencyFormatter( _rootNode->getNode("frequencies/standby-mhz",true), _rootNode->getNode("frequencies/standby-mhz-fmt",true), 0.05 ),
+  _useFrequencyFormatter( _rootNode->getNode("frequencies/selected-mhz",true), _rootNode->getNode("frequencies/selected-mhz-fmt",true), 0.05, 108.0, 118.0 ),
+  _stbyFrequencyFormatter( _rootNode->getNode("frequencies/standby-mhz",true), _rootNode->getNode("frequencies/standby-mhz-fmt",true), 0.05, 108.0, 118.0 ),
   _navIndicator(_rootNode),
   _stationTTL(0.0),
   _frequency(-1.0),