Cleaning out old code ...
This commit is contained in:
parent
1f66606440
commit
24caa82715
5 changed files with 25 additions and 369 deletions
|
@ -23,21 +23,9 @@
|
|||
|
||||
#include <Include/compiler.h>
|
||||
|
||||
// #ifdef FG_HAVE_STD_INCLUDES
|
||||
// # include <cmath>
|
||||
// # include <cstdlib> // atoi()
|
||||
// #else
|
||||
// # include <math.h>
|
||||
// # include <stdlib.h> // atoi()
|
||||
// #endif
|
||||
|
||||
#include STL_STRING
|
||||
// #include STL_IOSTREAM
|
||||
// #include <vector>
|
||||
|
||||
#include <Debug/logstream.hxx>
|
||||
// #include <Aircraft/aircraft.hxx>
|
||||
// #include <Include/fg_constants.h>
|
||||
#include <Include/fg_types.hxx>
|
||||
#include <Main/options.hxx>
|
||||
|
||||
|
@ -51,7 +39,6 @@
|
|||
#include <Network/pve.hxx>
|
||||
#include <Network/rul.hxx>
|
||||
|
||||
// #include <Time/fg_time.hxx>
|
||||
#include <Time/timestamp.hxx>
|
||||
|
||||
FG_USING_STD(string);
|
||||
|
@ -193,190 +180,6 @@ void fgIOInit() {
|
|||
}
|
||||
|
||||
|
||||
static void send_fgfs_out( FGIOChannel *p ) {
|
||||
}
|
||||
|
||||
static void read_fgfs_in( FGIOChannel *p ) {
|
||||
}
|
||||
|
||||
|
||||
// "RUL" output format (for some sort of motion platform)
|
||||
//
|
||||
// The Baud rate is 2400 , one start bit, eight data bits, 1 stop bit,
|
||||
// no parity.
|
||||
//
|
||||
// For position it requires a 3-byte data packet defined as follows:
|
||||
//
|
||||
// First bite: ascII character "P" ( 0x50 or 80 decimal )
|
||||
// Second byte X pos. (1-255) 1 being 0* and 255 being 359*
|
||||
// Third byte Y pos.( 1-255) 1 being 0* and 255 359*
|
||||
//
|
||||
// So sending 80 127 127 to the two axis motors will position on 180*
|
||||
// The RS- 232 port is a nine pin connector and the only pins used are
|
||||
// 3&5.
|
||||
|
||||
static void send_rul_out( FGIOChannel *p ) {
|
||||
#if 0
|
||||
char rul[256];
|
||||
|
||||
FGInterface *f;
|
||||
FGTime *t;
|
||||
|
||||
f = current_aircraft.fdm_state;
|
||||
t = FGTime::cur_time_params;
|
||||
|
||||
// run as often as possibleonce per second
|
||||
|
||||
// this runs once per second
|
||||
// if ( p->last_time == t->get_cur_time() ) {
|
||||
// return;
|
||||
// }
|
||||
// p->last_time = t->get_cur_time();
|
||||
// if ( t->get_cur_time() % 2 != 0 ) {
|
||||
// return;
|
||||
// }
|
||||
|
||||
// get roll and pitch, convert to degrees
|
||||
double roll_deg = f->get_Phi() * RAD_TO_DEG;
|
||||
while ( roll_deg < -180.0 ) {
|
||||
roll_deg += 360.0;
|
||||
}
|
||||
while ( roll_deg > 180.0 ) {
|
||||
roll_deg -= 360.0;
|
||||
}
|
||||
|
||||
double pitch_deg = f->get_Theta() * RAD_TO_DEG;
|
||||
while ( pitch_deg < -180.0 ) {
|
||||
pitch_deg += 360.0;
|
||||
}
|
||||
while ( pitch_deg > 180.0 ) {
|
||||
pitch_deg -= 360.0;
|
||||
}
|
||||
|
||||
// scale roll and pitch to output format (1 - 255)
|
||||
// straight && level == (128, 128)
|
||||
|
||||
int roll = (int)( (roll_deg+180.0) * 255.0 / 360.0) + 1;
|
||||
int pitch = (int)( (pitch_deg+180.0) * 255.0 / 360.0) + 1;
|
||||
|
||||
sprintf( rul, "p%c%c\n", roll, pitch);
|
||||
|
||||
FG_LOG( FG_IO, FG_INFO, "p " << roll << " " << pitch );
|
||||
|
||||
string rul_sentence = rul;
|
||||
p->port.write_port(rul_sentence);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
// "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?)
|
||||
//
|
||||
// So sending 80 127 127 to the two axis motors will position on 180*
|
||||
// The RS- 232 port is a nine pin connector and the only pins used are
|
||||
// 3&5.
|
||||
|
||||
static void send_pve_out( FGIOChannel *p ) {
|
||||
#if 0
|
||||
char pve[256];
|
||||
|
||||
FGInterface *f;
|
||||
FGTime *t;
|
||||
|
||||
|
||||
f = current_aircraft.fdm_state;
|
||||
t = FGTime::cur_time_params;
|
||||
|
||||
// run as often as possibleonce per second
|
||||
|
||||
// this runs once per second
|
||||
// if ( p->last_time == t->get_cur_time() ) {
|
||||
// return;
|
||||
// }
|
||||
// p->last_time = t->get_cur_time();
|
||||
// if ( t->get_cur_time() % 2 != 0 ) {
|
||||
// return;
|
||||
// }
|
||||
|
||||
// get roll and pitch, convert to degrees
|
||||
double roll_deg = f->get_Phi() * RAD_TO_DEG;
|
||||
while ( roll_deg <= -180.0 ) {
|
||||
roll_deg += 360.0;
|
||||
}
|
||||
while ( roll_deg > 180.0 ) {
|
||||
roll_deg -= 360.0;
|
||||
}
|
||||
|
||||
double pitch_deg = f->get_Theta() * RAD_TO_DEG;
|
||||
while ( pitch_deg <= -180.0 ) {
|
||||
pitch_deg += 360.0;
|
||||
}
|
||||
while ( pitch_deg > 180.0 ) {
|
||||
pitch_deg -= 360.0;
|
||||
}
|
||||
|
||||
short int heave = (int)(f->get_W_body() * 128.0);
|
||||
|
||||
// scale roll and pitch to output format (1 - 255)
|
||||
// straight && level == (128, 128)
|
||||
|
||||
short int roll = (int)(roll_deg * 32768 / 180.0);
|
||||
short int pitch = (int)(pitch_deg * 32768 / 180.0);
|
||||
|
||||
unsigned char roll_b1, roll_b2, pitch_b1, pitch_b2, heave_b1, heave_b2;
|
||||
roll_b1 = roll >> 8;
|
||||
roll_b2 = roll & 0x00ff;
|
||||
pitch_b1 = pitch >> 8;
|
||||
pitch_b2 = pitch & 0x00ff;
|
||||
heave_b1 = heave >> 8;
|
||||
heave_b2 = heave & 0x00ff;
|
||||
|
||||
sprintf( pve, "p%c%c%c%c%c%c\n",
|
||||
roll_b1, roll_b2, pitch_b1, pitch_b2, heave_b1, heave_b2 );
|
||||
|
||||
// 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 <<
|
||||
" heave=" << heave );
|
||||
|
||||
string pve_sentence = pve;
|
||||
p->port.write_port(pve_sentence);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
// one more level of indirection ...
|
||||
static void process_port( FGIOChannel *p ) {
|
||||
#if 0
|
||||
if ( p->kind == fgIOCHANNEL::FG_SERIAL_NMEA_OUT ) {
|
||||
send_nmea_out(p);
|
||||
} else if ( p->kind == fgIOCHANNEL::FG_SERIAL_NMEA_IN ) {
|
||||
read_nmea_in(p);
|
||||
} else if ( p->kind == fgIOCHANNEL::FG_SERIAL_GARMIN_OUT ) {
|
||||
send_garmin_out(p);
|
||||
} else if ( p->kind == fgIOCHANNEL::FG_SERIAL_GARMIN_IN ) {
|
||||
read_garmin_in(p);
|
||||
} else if ( p->kind == fgIOCHANNEL::FG_SERIAL_FGFS_OUT ) {
|
||||
send_fgfs_out(p);
|
||||
} else if ( p->kind == fgIOCHANNEL::FG_SERIAL_FGFS_IN ) {
|
||||
read_fgfs_in(p);
|
||||
} else if ( p->kind == fgIOCHANNEL::FG_SERIAL_RUL_OUT ) {
|
||||
send_rul_out(p);
|
||||
} else if ( p->kind == fgIOCHANNEL::FG_SERIAL_PVE_OUT ) {
|
||||
send_pve_out(p);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
// process any serial port work
|
||||
void fgIOProcess() {
|
||||
FGProtocol *p;
|
||||
|
|
|
@ -27,14 +27,6 @@
|
|||
|
||||
#include "Include/compiler.h"
|
||||
|
||||
// #include <string>
|
||||
|
||||
// #ifdef FG_HAVE_STD_INCLUDES
|
||||
// # include <ctime>
|
||||
// #else
|
||||
// # include <time.h>
|
||||
// #endif
|
||||
|
||||
#include <Network/iochannel.hxx>
|
||||
|
||||
|
||||
|
|
|
@ -23,14 +23,6 @@
|
|||
|
||||
#include <Include/compiler.h>
|
||||
|
||||
// #ifdef FG_HAVE_STD_INCLUDES
|
||||
// # include <cmath>
|
||||
// # include <cstdlib> // atoi()
|
||||
// #else
|
||||
// # include <math.h>
|
||||
// # include <stdlib.h> // atoi()
|
||||
// #endif
|
||||
|
||||
#include STL_STRING
|
||||
|
||||
#include <Debug/logstream.hxx>
|
||||
|
@ -39,8 +31,6 @@
|
|||
#include <Serial/serial.hxx>
|
||||
#include <Time/fg_time.hxx>
|
||||
|
||||
// #include "options.hxx"
|
||||
|
||||
#include "fg_serial.hxx"
|
||||
|
||||
FG_USING_STD(string);
|
||||
|
@ -72,158 +62,6 @@ bool FGSerial::open( FGProtocol::fgProtocolDir dir ) {
|
|||
}
|
||||
|
||||
|
||||
#if 0
|
||||
// "RUL" output format (for some sort of motion platform)
|
||||
//
|
||||
// The Baud rate is 2400 , one start bit, eight data bits, 1 stop bit,
|
||||
// no parity.
|
||||
//
|
||||
// For position it requires a 3-byte data packet defined as follows:
|
||||
//
|
||||
// First bite: ascII character "P" ( 0x50 or 80 decimal )
|
||||
// Second byte X pos. (1-255) 1 being 0* and 255 being 359*
|
||||
// Third byte Y pos.( 1-255) 1 being 0* and 255 359*
|
||||
//
|
||||
// So sending 80 127 127 to the two axis motors will position on 180*
|
||||
// The RS- 232 port is a nine pin connector and the only pins used are
|
||||
// 3&5.
|
||||
|
||||
static void send_rul_out( fgIOCHANNEL *p ) {
|
||||
char rul[256];
|
||||
|
||||
FGInterface *f;
|
||||
FGTime *t;
|
||||
|
||||
f = current_aircraft.fdm_state;
|
||||
t = FGTime::cur_time_params;
|
||||
|
||||
// run as often as possibleonce per second
|
||||
|
||||
// this runs once per second
|
||||
// if ( p->last_time == t->get_cur_time() ) {
|
||||
// return;
|
||||
// }
|
||||
// p->last_time = t->get_cur_time();
|
||||
// if ( t->get_cur_time() % 2 != 0 ) {
|
||||
// return;
|
||||
// }
|
||||
|
||||
// get roll and pitch, convert to degrees
|
||||
double roll_deg = f->get_Phi() * RAD_TO_DEG;
|
||||
while ( roll_deg < -180.0 ) {
|
||||
roll_deg += 360.0;
|
||||
}
|
||||
while ( roll_deg > 180.0 ) {
|
||||
roll_deg -= 360.0;
|
||||
}
|
||||
|
||||
double pitch_deg = f->get_Theta() * RAD_TO_DEG;
|
||||
while ( pitch_deg < -180.0 ) {
|
||||
pitch_deg += 360.0;
|
||||
}
|
||||
while ( pitch_deg > 180.0 ) {
|
||||
pitch_deg -= 360.0;
|
||||
}
|
||||
|
||||
// scale roll and pitch to output format (1 - 255)
|
||||
// straight && level == (128, 128)
|
||||
|
||||
int roll = (int)( (roll_deg+180.0) * 255.0 / 360.0) + 1;
|
||||
int pitch = (int)( (pitch_deg+180.0) * 255.0 / 360.0) + 1;
|
||||
|
||||
sprintf( rul, "p%c%c\n", roll, pitch);
|
||||
|
||||
FG_LOG( FG_IO, FG_INFO, "p " << roll << " " << pitch );
|
||||
|
||||
string rul_sentence = rul;
|
||||
p->port.write_port(rul_sentence);
|
||||
}
|
||||
|
||||
|
||||
// "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?)
|
||||
//
|
||||
// So sending 80 127 127 to the two axis motors will position on 180*
|
||||
// The RS- 232 port is a nine pin connector and the only pins used are
|
||||
// 3&5.
|
||||
|
||||
static void send_pve_out( fgIOCHANNEL *p ) {
|
||||
char pve[256];
|
||||
|
||||
FGInterface *f;
|
||||
FGTime *t;
|
||||
|
||||
|
||||
f = current_aircraft.fdm_state;
|
||||
t = FGTime::cur_time_params;
|
||||
|
||||
// run as often as possibleonce per second
|
||||
|
||||
// this runs once per second
|
||||
// if ( p->last_time == t->get_cur_time() ) {
|
||||
// return;
|
||||
// }
|
||||
// p->last_time = t->get_cur_time();
|
||||
// if ( t->get_cur_time() % 2 != 0 ) {
|
||||
// return;
|
||||
// }
|
||||
|
||||
// get roll and pitch, convert to degrees
|
||||
double roll_deg = f->get_Phi() * RAD_TO_DEG;
|
||||
while ( roll_deg <= -180.0 ) {
|
||||
roll_deg += 360.0;
|
||||
}
|
||||
while ( roll_deg > 180.0 ) {
|
||||
roll_deg -= 360.0;
|
||||
}
|
||||
|
||||
double pitch_deg = f->get_Theta() * RAD_TO_DEG;
|
||||
while ( pitch_deg <= -180.0 ) {
|
||||
pitch_deg += 360.0;
|
||||
}
|
||||
while ( pitch_deg > 180.0 ) {
|
||||
pitch_deg -= 360.0;
|
||||
}
|
||||
|
||||
short int heave = (int)(f->get_W_body() * 128.0);
|
||||
|
||||
// scale roll and pitch to output format (1 - 255)
|
||||
// straight && level == (128, 128)
|
||||
|
||||
short int roll = (int)(roll_deg * 32768 / 180.0);
|
||||
short int pitch = (int)(pitch_deg * 32768 / 180.0);
|
||||
|
||||
unsigned char roll_b1, roll_b2, pitch_b1, pitch_b2, heave_b1, heave_b2;
|
||||
roll_b1 = roll >> 8;
|
||||
roll_b2 = roll & 0x00ff;
|
||||
pitch_b1 = pitch >> 8;
|
||||
pitch_b2 = pitch & 0x00ff;
|
||||
heave_b1 = heave >> 8;
|
||||
heave_b2 = heave & 0x00ff;
|
||||
|
||||
sprintf( pve, "p%c%c%c%c%c%c\n",
|
||||
roll_b1, roll_b2, pitch_b1, pitch_b2, heave_b1, heave_b2 );
|
||||
|
||||
// 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 <<
|
||||
" heave=" << heave );
|
||||
|
||||
string pve_sentence = pve;
|
||||
p->port.write_port(pve_sentence);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
// read data from port
|
||||
bool FGSerial::read( char *buf, int *length ) {
|
||||
// read a chunk
|
||||
|
|
|
@ -38,7 +38,16 @@ 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;
|
||||
|
|
|
@ -39,7 +39,21 @@ FGRUL::~FGRUL() {
|
|||
}
|
||||
|
||||
|
||||
// generate Garmin message
|
||||
// "RUL" output format (for some sort of motion platform)
|
||||
//
|
||||
// The Baud rate is 2400 , one start bit, eight data bits, 1 stop bit,
|
||||
// no parity.
|
||||
//
|
||||
// For position it requires a 3-byte data packet defined as follows:
|
||||
//
|
||||
// First bite: ascII character "P" ( 0x50 or 80 decimal )
|
||||
// Second byte X pos. (1-255) 1 being 0* and 255 being 359*
|
||||
// Third byte Y pos.( 1-255) 1 being 0* and 255 359*
|
||||
//
|
||||
// So sending 80 127 127 to the two axis motors will position on 180*
|
||||
// The RS- 232 port is a nine pin connector and the only pins used are
|
||||
// 3&5.
|
||||
|
||||
bool FGRUL::gen_message() {
|
||||
// cout << "generating rul message" << endl;
|
||||
FGInterface *f = cur_fdm_state;
|
||||
|
|
Loading…
Reference in a new issue