From 9892d4f03e25e877b5e3d8b299d1c70696d014ef Mon Sep 17 00:00:00 2001 From: curt Date: Mon, 20 Dec 1999 20:25:13 +0000 Subject: [PATCH] Initial revisions. --- src/FDM/JSBSim/FGLGear.cpp | 62 ++++++++++++++ src/FDM/JSBSim/FGLGear.h | 98 +++++++++++++++++++++++ src/FDM/JSBSim/FGfdmSocket.cpp | 142 +++++++++++++++++++++++++++++++++ src/FDM/JSBSim/FGfdmSocket.h | 107 +++++++++++++++++++++++++ 4 files changed, 409 insertions(+) create mode 100644 src/FDM/JSBSim/FGLGear.cpp create mode 100644 src/FDM/JSBSim/FGLGear.h create mode 100644 src/FDM/JSBSim/FGfdmSocket.cpp create mode 100644 src/FDM/JSBSim/FGfdmSocket.h diff --git a/src/FDM/JSBSim/FGLGear.cpp b/src/FDM/JSBSim/FGLGear.cpp new file mode 100644 index 000000000..05417b0d2 --- /dev/null +++ b/src/FDM/JSBSim/FGLGear.cpp @@ -0,0 +1,62 @@ +/******************************************************************************* + + Module: FGLGear.cpp + Author: Jon S. Berndt + Date started: 11/18/99 + Purpose: Encapsulates the landing gear elements + Called by: FGAircraft + + ------------- Copyright (C) 1999 Jon S. Berndt (jsb@hal-pc.org) ------------- + + 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., 59 Temple + Place - Suite 330, Boston, MA 02111-1307, USA. + + Further information about the GNU General Public License can also be found on + the world wide web at http://www.gnu.org. + +FUNCTIONAL DESCRIPTION +-------------------------------------------------------------------------------- + +HISTORY +-------------------------------------------------------------------------------- +11/18/99 JSB Created + +******************************************************************************** +INCLUDES +*******************************************************************************/ + +#include "FGLGear.h" +#include "FGState.h" + +/******************************************************************************* +************************************ CODE ************************************** +*******************************************************************************/ + + +FGLGear::FGLGear(ifstream& acfile) +{ + acfile >> name >> X >> Y >> Z >> kSpring >> bDamp >> statFCoeff >> brakeCoeff; +} + + +FGLGear::~FGLGear(void) +{ +} + +float FGLGear::Force(void) +{ + return 0.0; +} + + diff --git a/src/FDM/JSBSim/FGLGear.h b/src/FDM/JSBSim/FGLGear.h new file mode 100644 index 000000000..24475597b --- /dev/null +++ b/src/FDM/JSBSim/FGLGear.h @@ -0,0 +1,98 @@ +/******************************************************************************* + + Header: FGLGear.h + Author: Jon S. Berndt + Date started: 11/18/99 + + ------------- Copyright (C) 1999 Jon S. Berndt (jsb@hal-pc.org) ------------- + + 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., 59 Temple + Place - Suite 330, Boston, MA 02111-1307, USA. + + Further information about the GNU General Public License can also be found on + the world wide web at http://www.gnu.org. + +HISTORY +-------------------------------------------------------------------------------- +11/18/99 JSB Created + +******************************************************************************** +SENTRY +*******************************************************************************/ + +#ifndef FGLGEAR_H +#define FGLGEAR_H + +/******************************************************************************* +COMMENTS, REFERENCES, and NOTES +******************************************************************************** + +[1] Cooke, Zyda, Pratt, and McGhee, "NPSNET: Flight Simulation Dynamic Modeling + Using Quaternions", Presence, Vol. 1, No. 4, pp. 404-420 Naval Postgraduate + School, January 1994 +[2] D. M. Henderson, "Euler Angles, Quaternions, and Transformation Matrices", + JSC 12960, July 1977 +[3] Richard E. McFarland, "A Standard Kinematic Model for Flight Simulation at + NASA-Ames", NASA CR-2497, January 1975 +[4] Barnes W. McCormick, "Aerodynamics, Aeronautics, and Flight Mechanics", + Wiley & Sons, 1979 ISBN 0-471-03032-5 +[5] Bernard Etkin, "Dynamics of Flight, Stability and Control", Wiley & Sons, + 1982 ISBN 0-471-08936-2 + +******************************************************************************** +INCLUDES +*******************************************************************************/ + +#ifdef FGFS +# include +# include STL_STRING +# ifdef FG_HAVE_STD_INCLUDES +# include +# else +# include +# endif + FG_USING_STD(string); +#else +# include +# include +#endif + +/******************************************************************************* +DEFINITIONS +*******************************************************************************/ + +using namespace std; + +/******************************************************************************* +CLASS DECLARATION +*******************************************************************************/ + +class FGLGear +{ +public: + FGLGear(ifstream&); + ~FGLGear(void); + + float Force(void); +private: + float X, Y, Z; + float kSpring, bDamp, compressLength; + float statFCoeff, rollFCoeff, skidFCoeff; + float frictionForce, compForce; + float brakePct, brakeForce, brakeCoeff; + string name; +}; + +/******************************************************************************/ +#endif \ No newline at end of file diff --git a/src/FDM/JSBSim/FGfdmSocket.cpp b/src/FDM/JSBSim/FGfdmSocket.cpp new file mode 100644 index 000000000..e3b4c053a --- /dev/null +++ b/src/FDM/JSBSim/FGfdmSocket.cpp @@ -0,0 +1,142 @@ +/******************************************************************************* + + Module: FGfdmSocket.cpp + Author: Jon S. Berndt + Date started: 11/08/99 + Purpose: Encapsulates a socket + Called by: FGOutput, et. al. + + ------------- Copyright (C) 1999 Jon S. Berndt (jsb@hal-pc.org) ------------- + + 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., 59 Temple + Place - Suite 330, Boston, MA 02111-1307, USA. + + Further information about the GNU General Public License can also be found on + the world wide web at http://www.gnu.org. + +FUNCTIONAL DESCRIPTION +-------------------------------------------------------------------------------- +This class excapsulates a socket for simple data writing + +HISTORY +-------------------------------------------------------------------------------- +11/08/99 JSB Created + +******************************************************************************** +INCLUDES +*******************************************************************************/ + +#include "FGfdmSocket.h" + +/******************************************************************************* +************************************ CODE ************************************** +*******************************************************************************/ + +FGfdmSocket::FGfdmSocket(string address, int port) +{ + size = 0; + + #ifdef __BORLANDC__ || _MSC_VER + WSADATA wsaData; + int PASCAL FAR wsaReturnCode; + wsaReturnCode = WSAStartup(MAKEWORD(1,1), &wsaData); + if (wsaReturnCode == 0) cout << "Winsock DLL loaded ..." << endl; + else cout << "Winsock DLL not initialized ..." << endl; + #endif + + if (address.find_first_not_of("0123456789.",0) != address.npos) { + if ((host = gethostbyname(address.c_str())) == NULL) { + cout << "Could not get host net address by name..." << endl; + } + } else { + if ((host = gethostbyaddr(address.c_str(), address.size(), PF_INET)) == NULL) { + cout << "Could not get host net address by number..." << endl; + } + } + + if (host != NULL) { + cout << "Got host net address..." << endl; + sckt = socket(AF_INET, SOCK_STREAM, 0); + + if (sckt >= 0) { // successful + memset(&scktName, 0, sizeof(struct sockaddr_in)); + scktName.sin_family = AF_INET; + scktName.sin_port = htons(port); + memcpy(&scktName.sin_addr, host->h_addr_list[0], host->h_length); + int len = sizeof(struct sockaddr_in); + if (connect(sckt, (struct sockaddr*)&scktName, len) == 0) { // successful + cout << "Successfully connected to socket ..." << endl; + } else { // unsuccessful + cout << "Could not connect to socket ..." << endl; + } + } else { // unsuccessful + cout << "Could not create socket for FDM, error = " << errno << endl; + } + } +} + +FGfdmSocket::~FGfdmSocket(void) +{ + if (sckt) shutdown(sckt,2); + #ifdef __BORLANDC__ + WSACleanup(); + #endif +} + +void FGfdmSocket::Clear(void) +{ + buffer = ""; + size = 0; +} + +void FGfdmSocket::Append(const char* item) +{ + if (size == 0) buffer += string(item); + else buffer += string(",") + string(item); + size++; +} + +void FGfdmSocket::Append(float item) +{ + char s[25]; + + sprintf(s,"%12.7f\0",item); + + if (size == 0) buffer += string(s); + else buffer += string(",") + string(s); + size++; +} + +void FGfdmSocket::Append(long item) +{ + char s[25]; + + sprintf(s,"%12d\0",item); + + if (size == 0) buffer += string(s); + else buffer += string(",") + string(s); + size++; +} + +void FGfdmSocket::Send(void) +{ + int len; + + buffer += string("\n"); + if ((len = send(sckt,buffer.c_str(),buffer.size(),0)) <= 0) { + perror("send"); + } else { + } +} + diff --git a/src/FDM/JSBSim/FGfdmSocket.h b/src/FDM/JSBSim/FGfdmSocket.h new file mode 100644 index 000000000..dc05226a1 --- /dev/null +++ b/src/FDM/JSBSim/FGfdmSocket.h @@ -0,0 +1,107 @@ +/******************************************************************************* + + Header: FGfdmSocket.h + Author: Jon S. Berndt + Date started: 11/08/99 + + ------------- Copyright (C) 1999 Jon S. Berndt (jsb@hal-pc.org) ------------- + + 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., 59 Temple + Place - Suite 330, Boston, MA 02111-1307, USA. + + Further information about the GNU General Public License can also be found on + the world wide web at http://www.gnu.org. + +HISTORY +-------------------------------------------------------------------------------- +11/08/99 JSB Created + +******************************************************************************** +SENTRY +*******************************************************************************/ + +#ifndef FGfdmSocket_H +#define FGfdmSocket_H + +/******************************************************************************* +COMMENTS, REFERENCES, and NOTES +*******************************************************************************/ + +/******************************************************************************* +INCLUDES +*******************************************************************************/ + +#include +#include + +#ifdef FGFS +# pragma message("FGFS defined") +# include +# include STL_STRING +# ifdef FG_HAVE_STD_INCLUDES +# include +# include +# else +# include +# include +# endif + FG_USING_STD(string); +#else +# pragma message("FGFS not defined") +# include +# include +# include +#endif + +#include + +#if defined(__BORLANDC__) || defined(_MSC_VER) + #include +#else + #include + #include + #include + #include +#endif + +/******************************************************************************* +DEFINITIONS +*******************************************************************************/ + + +/******************************************************************************* +CLASS DECLARATION +*******************************************************************************/ + +using namespace std; + +class FGfdmSocket { +public: + FGfdmSocket(string, int); + ~FGfdmSocket(void); + void Send(void); + void Append(const char*); + void Append(float); + void Append(long); + void Clear(void); + +private: + int sckt; + int size; + struct sockaddr_in scktName; + struct hostent *host; + string buffer; +}; + +#endif \ No newline at end of file