diff --git a/src/Instrumentation/encoder.cxx b/src/Instrumentation/encoder.cxx deleted file mode 100644 index fa603f72f..000000000 --- a/src/Instrumentation/encoder.cxx +++ /dev/null @@ -1,112 +0,0 @@ -// encoder.cxx -- class to impliment an altitude encoder -// -// Written by Roy Vegard Ovesen, started September 2004. -// -// Copyright (C) 2004 Roy Vegard Ovesen - rvovesen@tiscali.no -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License as -// published by the Free Software Foundation; either version 2 of the -// License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include "encoder.hxx" - - -// Altitude based on pressure difference from sea level. -// pressure difference inHG, altitude ft -static double altitude_data[][2] = { - { -8.41, -8858.27 }, - { 0.00, 0.00 }, - { 3.05, 2952.76 }, - { 5.86, 5905.51 }, - { 8.41, 8858.27 }, - { 10.74, 11811.02 }, - { 12.87, 14763.78 }, - { 14.78, 17716.54 }, - { 16.55, 20669.29 }, - { 18.13, 23622.05 }, - { 19.62, 26574.80 }, - { 20.82, 29527.56 }, - { 21.96, 32480.31 }, - { 23.01, 35433.07 }, - { 23.91, 38385.83 }, - { 24.71, 41338.58 }, - { 25.40, 44291.34 }, - { 26.00, 47244.09 }, - { 26.51, 50196.85 }, - { 26.96, 53149.61 }, - { 27.35, 56102.36 }, - { 27.68, 59055.12 }, - { 27.98, 62007.87 }, - { 29.62, 100000.00 }, // just to fill it in - { -1, -1 } -}; - -int round (double value, int nearest=1) -{ - return ((int) (value/nearest + 0.5)) * nearest; -} - - -Encoder::Encoder(SGPropertyNode *node) - : - _name(node->getStringValue("name", "encoder")), - _num(node->getIntValue("number", 0)), - _static_pressure(node->getStringValue("static-pressure", "/systems/static/pressure-inhg")), - altitudeTable(new SGInterpTable) -{ - int i; - for ( i = 0; altitude_data[i][0] != -1; i++ ) - altitudeTable->addEntry(altitude_data[i][0], altitude_data[i][1]); -} - - -Encoder::~Encoder() -{ - delete altitudeTable; -} - - -void Encoder::init() -{ - string branch; - branch = "/instrumentation/" + _name; - - SGPropertyNode *node = fgGetNode(branch.c_str(), _num, true ); - // Inputs - staticPressureNode = fgGetNode(_static_pressure.c_str(), true); - busPowerNode = fgGetNode("/systems/electrical/outputs/encoder", true); - serviceableNode = node->getChild("serviceable", 0, true); - // Outputs - pressureAltitudeNode = node->getChild("pressure-alt-ft", 0, true); - modeCAltitudeNode = node->getChild("mode-c-alt-ft", 0, true); -} - - -void Encoder::update(double dt) -{ - if (serviceableNode->getBoolValue()) - { - double staticPressure = staticPressureNode->getDoubleValue(); - double pressureAltitude = - altitudeTable->interpolate(29.92 - staticPressure); - int pressureAlt = round(pressureAltitude, 10); - int modeCAltitude = round(pressureAltitude, 100); - - pressureAltitudeNode->setIntValue(pressureAlt); - modeCAltitudeNode->setIntValue(modeCAltitude); - } -} diff --git a/src/Instrumentation/encoder.hxx b/src/Instrumentation/encoder.hxx deleted file mode 100644 index 755ebcdea..000000000 --- a/src/Instrumentation/encoder.hxx +++ /dev/null @@ -1,61 +0,0 @@ -// encoder.hxx -- class to impliment an altitude encoder -// -// Written by Roy Vegard Ovesen, started September 2004. -// -// Copyright (C) 2004 Roy Vegard Ovesen - rvovesen@tiscali.no -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License as -// published by the Free Software Foundation; either version 2 of the -// License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -#ifndef ENCODER_HXX -#define ENCODER_HXX 1 - -#ifndef __cplusplus -# error This library requires C++ -#endif - -#include
- -#include -#include - - -class Encoder : public SGSubsystem -{ -public: - Encoder(SGPropertyNode *node); - ~Encoder(); - - void init (); - void update (double dt); - -private: - // Inputs - SGPropertyNode_ptr staticPressureNode; - SGPropertyNode_ptr busPowerNode; - SGPropertyNode_ptr serviceableNode; - - // Outputs - SGPropertyNode_ptr pressureAltitudeNode; - SGPropertyNode_ptr modeCAltitudeNode; - - // Internal - string _name; - int _num; - string _static_pressure; - - SGInterpTable* altitudeTable; -}; - -#endif // ENCODER_HXX