]> git.mxchange.org Git - flightgear.git/blobdiff - src/Network/pve.cxx
Changes to support optional screen snap shot httpd server.
[flightgear.git] / src / Network / pve.cxx
index 2caa940601d5f770a99c3559ba3da9feeb4fd319..d162f348e1ec0f4ecb5b6c3c7e4fc7be8444dab5 100644 (file)
 // $Id$
 
 
-#include <Debug/logstream.hxx>
+#include <stdio.h>             // sprintf()
+
+#include <simgear/constants.h>
+#include <simgear/debug/logstream.hxx>
+#include <simgear/io/iochannel.hxx>
+
 #include <FDM/flight.hxx>
-#include <Math/fg_geodesy.hxx>
-#include <Time/fg_time.hxx>
 
-#include "iochannel.hxx"
 #include "pve.hxx"
 
 
@@ -38,13 +40,22 @@ FGPVE::~FGPVE() {
 }
 
 
-// generate Garmin message
+// "PVE" (ProVision Entertainment) output format (for some sort of
+// motion platform)
+//
+// Outputs a 5-byte data packet defined as follows:
+//
+// First bite:  ASCII character "P" ( 0x50 or 80 decimal )
+// Second byte:  "roll" value (1-255) 1 being 0* and 255 being 359*
+// Third byte:  "pitch" value (1-255) 1 being 0* and 255 being 359*
+// Fourth byte:  "heave" value (or vertical acceleration?)
+
 bool FGPVE::gen_message() {
     // cout << "generating pve message" << endl;
     FGInterface *f = cur_fdm_state;
 
     // get roll and pitch, convert to degrees
-    double roll_deg = f->get_Phi() * RAD_TO_DEG;
+    double roll_deg = f->get_Phi() * SGD_RADIANS_TO_DEGREES;
     while ( roll_deg <= -180.0 ) {
        roll_deg += 360.0;
     }
@@ -52,7 +63,7 @@ bool FGPVE::gen_message() {
        roll_deg -= 360.0;
     }
 
-    double pitch_deg = f->get_Theta() * RAD_TO_DEG;
+    double pitch_deg = f->get_Theta() * SGD_RADIANS_TO_DEGREES;
     while ( pitch_deg <= -180.0 ) {
        pitch_deg += 360.0;
     }
@@ -83,7 +94,7 @@ bool FGPVE::gen_message() {
     // printf( "p [ %u %u ]  [ %u %u ]  [ %u %u ]\n", 
     //         roll_b1, roll_b2, pitch_b1, pitch_b2, heave_b1, heave_b2 );
 
-    FG_LOG( FG_IO, FG_INFO, "roll=" << roll << " pitch=" << pitch <<
+    SG_LOG( SG_IO, SG_INFO, "roll=" << roll << " pitch=" << pitch <<
            " heave=" << heave );
 
     return true;
@@ -92,7 +103,7 @@ bool FGPVE::gen_message() {
 
 // parse RUL message
 bool FGPVE::parse_message() {
-    FG_LOG( FG_IO, FG_ALERT, "PVE input not supported" );
+    SG_LOG( SG_IO, SG_ALERT, "PVE input not supported" );
 
     return false;
 }
@@ -100,16 +111,16 @@ bool FGPVE::parse_message() {
 
 // process work for this port
 bool FGPVE::process() {
-    FGIOChannel *io = get_io_channel();
+    SGIOChannel *io = get_io_channel();
 
-    if ( get_direction() == out ) {
+    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() == in ) {
-       FG_LOG( FG_IO, FG_ALERT, "in direction not supported for RUL." );
+    } else if ( get_direction() == SG_IO_IN ) {
+       SG_LOG( SG_IO, SG_ALERT, "in direction not supported for RUL." );
        return false;
     }