X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FNetwork%2Fray.cxx;h=b85831087d68c83e8998b0483de4dd71506fb89f;hb=ae50c054a9007b98f1a8dafe6d589d0b4cab8873;hp=ece2b67fc0559f34be147988775d9409edeb5be7;hpb=17f3d48e03c889e0e10dfc7ea4123caa230ee55a;p=flightgear.git diff --git a/src/Network/ray.cxx b/src/Network/ray.cxx index ece2b67fc..b85831087 100644 --- a/src/Network/ray.cxx +++ b/src/Network/ray.cxx @@ -16,16 +16,19 @@ // // 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., 675 Mass Ave, Cambridge, MA 02139, USA. +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // // $Id$ +#ifdef HAVE_CONFIG_H +# include +#endif #include #include #include -#include +#include #include "ray.hxx" @@ -63,7 +66,8 @@ FGRAY::~FGRAY() { bool FGRAY::gen_message() { // cout << "generating RayWoodworth message" << endl; - FGInterface *f = cur_fdm_state; + FlightProperties f; + int axis, subaxis; const double fullscale[6] = { -0.5, -0.5, -0.5, /* radians */ -0.3, -0.3, -0.15 /* meters */ }; @@ -73,7 +77,7 @@ bool FGRAY::gen_message() { /* get basic information about gravity */ double grav_acc = -9.81; - double vert_acc = f->get_A_Z_pilot() * 0.3; + double vert_acc = f.get_A_Z_pilot() * 0.3; if ( -3.0 < vert_acc ) vert_acc = -3.0; @@ -86,13 +90,13 @@ bool FGRAY::gen_message() { /* Retrieve the desired components */ switch ( axis ) { - case 0: ang_pos = f->get_Phi(); - lin_acc = f->get_A_Y_pilot() * 0.3; + case 0: ang_pos = f.get_Phi(); + lin_acc = f.get_A_Y_pilot() * 0.3; break; - case 1: ang_pos = f->get_Theta(); - lin_acc = f->get_A_X_pilot() * 0.3; + case 1: ang_pos = f.get_Theta(); + lin_acc = f.get_A_X_pilot() * 0.3; break; - case 2: ang_pos = f->get_Psi(); + case 2: ang_pos = f.get_Psi(); lin_acc = grav_acc - vert_acc; break; default: @@ -104,11 +108,11 @@ bool FGRAY::gen_message() { /* Make sure the angles are reasonable onscale */ /* We use an asymmetric mapping so that the chair behaves reasonably when upside down. Otherwise it oscillates. */ - while ( ang_pos < -2*SGD_PI/3 ) { - ang_pos += 2 * SGD_PI; + while ( ang_pos < -SGD_2PI/3 ) { + ang_pos += SGD_2PI; } - while ( ang_pos > 4*SGD_PI/3 ) { - ang_pos -= 2 * SGD_PI; + while ( ang_pos > 2*SGD_2PI/3 ) { + ang_pos -= SGD_2PI; } /* Tell interested parties what the situation is */ @@ -134,8 +138,8 @@ bool FGRAY::gen_message() { if ( fabs ( ang_pos - chair_heading ) > SGD_PI ) { /* Need to swing chair by 360 degrees */ if ( ang_pos < chair_heading ) - chair_heading -= 2 * SGD_PI; - else chair_heading += 2 * SGD_PI; + chair_heading -= SGD_2PI; + else chair_heading += SGD_2PI; } /* Remove the chair heading from the true heading */ ang_pos -= chair_heading; @@ -144,7 +148,7 @@ bool FGRAY::gen_message() { can just about represent 30 degrees full scale. */ chair_heading += ang_pos * dt * 0.2; /* If they turn fast, at 90 deg error subtract 30 deg */ - if ( fabs(ang_pos) > SGD_PI / 2 ) + if ( fabs(ang_pos) > SGD_PI_2 ) chair_heading += ang_pos / 3; } else @@ -178,8 +182,8 @@ bool FGRAY::gen_message() { /* Scale to the hardware's full scale range */ propose /= fullscale [ subaxis ]; /* Use a sine shaped washout on all axes */ - if ( propose < -SGD_PI / 2 ) *dac = 0x0000; else - if ( propose > SGD_PI / 2 ) *dac = 0xFFFF; else + if ( propose < -SGD_PI_2 ) *dac = 0x0000; else + if ( propose > SGD_PI_2 ) *dac = 0xFFFF; else *dac = (unsigned short) ( 32767 * ( 1.0 + sin ( propose ) ) ); } @@ -196,7 +200,7 @@ bool FGRAY::gen_message() { // parse RUL message bool FGRAY::parse_message() { - FG_LOG( FG_IO, FG_ALERT, "RAY input not supported" ); + SG_LOG( SG_IO, SG_ALERT, "RAY input not supported" ); return false; } @@ -209,11 +213,11 @@ bool FGRAY::process() { if ( get_direction() == SG_IO_OUT ) { gen_message(); if ( ! io->write( buf, length ) ) { - FG_LOG( FG_IO, FG_ALERT, "Error writing data." ); + SG_LOG( SG_IO, SG_ALERT, "Error writing data." ); return false; } } else if ( get_direction() == SG_IO_IN ) { - FG_LOG( FG_IO, FG_ALERT, "in direction not supported for RAY." ); + SG_LOG( SG_IO, SG_ALERT, "in direction not supported for RAY." ); return false; }