]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/JSBSim/FGRotation.cpp
Updated to match changes in radiostack.[ch]xx
[flightgear.git] / src / FDM / JSBSim / FGRotation.cpp
index 73763e5a0cfbf045e58ddcc2d87f96c784b15ff8..aa48af0e121b5a80ef02899ae963caec90661683 100644 (file)
@@ -66,6 +66,8 @@ INCLUDES
 #include "FGPosition.h"
 #include "FGAuxiliary.h"
 #include "FGOutput.h"
+#include "FGPropertyManager.h"
+
 
 static const char *IdSrc = "$Id$";
 static const char *IdHdr = ID_ROTATION;
@@ -81,6 +83,8 @@ FGRotation::FGRotation(FGFDMExec* fdmex) : FGModel(fdmex)
   cTht=cPhi=cPsi=1.0;
   sTht=sPhi=sPsi=0.0;
   
+  bind();
+  
   Debug(0);
 }
 
@@ -88,6 +92,7 @@ FGRotation::FGRotation(FGFDMExec* fdmex) : FGModel(fdmex)
 
 FGRotation::~FGRotation()
 {
+  unbind();
   Debug(1);
 }
 
@@ -149,6 +154,73 @@ void FGRotation::GetState(void)
   Ixz = MassBalance->GetIxz();
 }
 
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+void FGRotation::bind(void)
+{
+  typedef double (FGRotation::*PMF)(int) const;
+  PropertyManager->Tie("velocities/p-rad_sec", this,1,
+                       (PMF)&FGRotation::GetPQR);
+  PropertyManager->Tie("velocities/q-rad_sec", this,2,
+                       (PMF)&FGRotation::GetPQR);
+  PropertyManager->Tie("velocities/r-rad_sec", this,3,
+                       (PMF)&FGRotation::GetPQR);
+  PropertyManager->Tie("velocities/p-aero-rad_sec", this,1,
+                       (PMF)&FGRotation::GetAeroPQR);
+  PropertyManager->Tie("velocities/q-aero-rad_sec", this,2,
+                       (PMF)&FGRotation::GetAeroPQR);
+  PropertyManager->Tie("velocities/r-aero-rad_sec", this,3,
+                       (PMF)&FGRotation::GetAeroPQR);
+  PropertyManager->Tie("accelerations/pdot-rad_sec", this,1,
+                       (PMF)&FGRotation::GetPQRdot);
+  PropertyManager->Tie("accelerations/qdot-rad_sec", this,2,
+                       (PMF)&FGRotation::GetPQRdot);
+  PropertyManager->Tie("accelerations/rdot-rad_sec", this,3,
+                       (PMF)&FGRotation::GetPQRdot);
+  PropertyManager->Tie("attitude/roll-rad", this,1,
+                       (PMF)&FGRotation::GetEuler);
+  PropertyManager->Tie("attitude/pitch-rad", this,2,
+                       (PMF)&FGRotation::GetEuler);
+  PropertyManager->Tie("attitude/heading-true-rad", this,3,
+                       (PMF)&FGRotation::GetEuler);
+  PropertyManager->Tie("velocities/phidot-rad_sec", this,1,
+                       (PMF)&FGRotation::GetEulerRates);
+  PropertyManager->Tie("velocities/thetadot-rad_sec", this,2,
+                       (PMF)&FGRotation::GetEulerRates);
+  PropertyManager->Tie("velocities/psidot-rad_sec", this,3,
+                       (PMF)&FGRotation::GetEulerRates);
+  PropertyManager->Tie("attitude/phi-rad", this,
+                       &FGRotation::Getphi);
+  PropertyManager->Tie("attitude/theta-rad", this,
+                       &FGRotation::Gettht);
+  PropertyManager->Tie("attitude/psi-true-rad", this,
+                       &FGRotation::Getpsi);
+}
+
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+void FGRotation::unbind(void)
+{
+  PropertyManager->Untie("velocities/p-rad_sec");
+  PropertyManager->Untie("velocities/q-rad_sec");
+  PropertyManager->Untie("velocities/r-rad_sec");
+  PropertyManager->Untie("velocities/p-aero-rad_sec");
+  PropertyManager->Untie("velocities/q-aero-rad_sec");
+  PropertyManager->Untie("velocities/r-aero-rad_sec");
+  PropertyManager->Untie("accelerations/pdot-rad_sec");
+  PropertyManager->Untie("accelerations/qdot-rad_sec");
+  PropertyManager->Untie("accelerations/rdot-rad_sec");
+  PropertyManager->Untie("attitude/roll-rad");
+  PropertyManager->Untie("attitude/pitch-rad");
+  PropertyManager->Untie("attitude/heading-true-rad");
+  PropertyManager->Untie("velocities/phidot-rad_sec");
+  PropertyManager->Untie("velocities/thetadot-rad_sec");
+  PropertyManager->Untie("velocities/psidot-rad_sec");
+  PropertyManager->Untie("attitude/phi-rad");
+  PropertyManager->Untie("attitude/theta-rad");
+  PropertyManager->Untie("attitude/psi-true-rad");
+}
+
 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 //    The bitmasked value choices are as follows:
 //    unset: In this case (the default) JSBSim would only print