#include "filtersjb/FGSummer.h"
#include "filtersjb/FGKinemat.h"
+namespace JSBSim {
+
static const char *IdSrc = "$Id$";
static const char *IdHdr = ID_FCS;
PTrimCmd = YTrimCmd = RTrimCmd = 0.0;
GearCmd = GearPos = 1; // default to gear down
LeftBrake = RightBrake = CenterBrake = 0.0;
+ APAttitudeSetPt = APAltitudeSetPt = APHeadingSetPt = APAirspeedSetPt = 0.0;
DoNormalize=true;
eMode = mNone;
FGFCS::~FGFCS()
{
+ unbind( PropertyManager->GetNode("fcs") );
+ unbind( PropertyManager->GetNode("ap") );
+ PropertyManager->Untie( "gear/gear-cmd-norm" );
+ PropertyManager->Untie( "gear/gear-pos-norm" );
+
ThrottleCmd.clear();
ThrottlePos.clear();
MixtureCmd.clear();
PropAdvanceCmd.clear();
PropAdvance.clear();
- unbind();
-
unsigned int i;
for (i=0;i<APComponents.size();i++) delete APComponents[i];
for (i=0;i<FCSComponents.size();i++) delete FCSComponents[i];
-
+
Debug(1);
}
if ( (((*Components)[i])->GetType() == "AEROSURFACE_SCALE"
|| ((*Components)[i])->GetType() == "KINEMAT")
&& ((*Components)[i])->GetOutputNode() ) {
- nodeName = ((*Components)[i])->GetOutputNode()->GetName();
+ nodeName = ((*Components)[i])->GetOutputNode()->GetName();
if ( nodeName == "elevator-pos-rad" ) {
ToNormalize[iDe]=i;
} else if ( nodeName == "left-aileron-pos-rad"
&FGFCS::SetPitchTrimCmd,
true);
PropertyManager->Tie("fcs/roll-trim-cmd-norm", this,
- &FGFCS::GetYawTrimCmd,
- &FGFCS::SetYawTrimCmd,
- true);
- PropertyManager->Tie("fcs/yaw-trim-cmd-norm", this,
&FGFCS::GetRollTrimCmd,
&FGFCS::SetRollTrimCmd,
true);
+ PropertyManager->Tie("fcs/yaw-trim-cmd-norm", this,
+ &FGFCS::GetYawTrimCmd,
+ &FGFCS::SetYawTrimCmd,
+ true);
PropertyManager->Tie("gear/gear-cmd-norm", this,
&FGFCS::GetGearCmd,
&FGFCS::SetGearCmd,
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-void FGFCS::unbind(void)
+void FGFCS::unbind(FGPropertyManager *node)
{
- PropertyManager->Untie("fcs/aileron-cmd-norm");
- PropertyManager->Untie("fcs/elevator-cmd-norm");
- PropertyManager->Untie("fcs/rudder-cmd-norm");
- PropertyManager->Untie("fcs/flap-cmd-norm");
- PropertyManager->Untie("fcs/speedbrake-cmd-norm");
- PropertyManager->Untie("fcs/spoiler-cmd-norm");
- PropertyManager->Untie("fcs/pitch-trim-cmd-norm");
- PropertyManager->Untie("fcs/roll-trim-cmd-norm");
- PropertyManager->Untie("fcs/yaw-trim-cmd-norm");
- PropertyManager->Untie("gear/gear-cmd-norm");
- PropertyManager->Untie("fcs/left-aileron-pos-rad");
- PropertyManager->Untie("fcs/mag-left-aileron-pos-rad");
- PropertyManager->Untie("fcs/left-aileron-pos-norm");
- PropertyManager->Untie("fcs/right-aileron-pos-rad");
- PropertyManager->Untie("fcs/mag-right-aileron-pos-rad");
- PropertyManager->Untie("fcs/right-aileron-pos-norm");
- PropertyManager->Untie("fcs/elevator-pos-rad");
- PropertyManager->Untie("fcs/mag-elevator-pos-rad");
- PropertyManager->Untie("fcs/elevator-pos-norm");
- PropertyManager->Untie("fcs/rudder-pos-rad");
- PropertyManager->Untie("fcs/mag-rudder-pos-rad");
- PropertyManager->Untie("fcs/rudder-pos-norm");
- PropertyManager->Untie("fcs/flap-pos-deg");
- PropertyManager->Untie("fcs/flap-pos-norm");
- PropertyManager->Untie("fcs/speedbrake-pos-rad");
- PropertyManager->Untie("fcs/mag-speedbrake-pos-rad");
- PropertyManager->Untie("fcs/speedbrake-pos-norm");
- PropertyManager->Untie("fcs/spoiler-pos-rad");
- PropertyManager->Untie("fcs/mag-spoiler-pos-rad");
- PropertyManager->Untie("fcs/spoiler-pos-norm");
- PropertyManager->Untie("gear/gear-pos-norm");
- PropertyManager->Untie("ap/elevator_cmd");
- PropertyManager->Untie("ap/aileron_cmd");
- PropertyManager->Untie("ap/rudder_cmd");
- PropertyManager->Untie("ap/throttle_cmd");
- PropertyManager->Untie("ap/attitude_setpoint");
- PropertyManager->Untie("ap/altitude_setpoint");
- PropertyManager->Untie("ap/heading_setpoint");
- PropertyManager->Untie("ap/airspeed_setpoint");
- PropertyManager->Untie("ap/acquire_attitude");
- PropertyManager->Untie("ap/acquire_altitude");
- PropertyManager->Untie("ap/acquire_heading");
- PropertyManager->Untie("ap/acquire_airspeed");
- PropertyManager->Untie("ap/attitude_hold");
- PropertyManager->Untie("ap/altitude_hold");
- PropertyManager->Untie("ap/heading_hold");
- PropertyManager->Untie("ap/airspeed_hold");
- PropertyManager->Untie("ap/wingslevel_hold");
+ int N = node->nChildren();
+ for(int i=0;i<N;i++) {
+ if(node->getChild(i)->nChildren() ) {
+ unbind( (FGPropertyManager*)node->getChild(i) );
+ } else if( node->getChild(i)->isTied() ) {
+ node->getChild(i)->untie();
+ }
+ }
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
}
}
+}