static const char *IdSrc = "$Id$";
static const char *IdHdr = ID_FCS;
+#if defined(WIN32) && !defined(__CYGWIN__)
+#define snprintf _snprintf
+#endif
+
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS IMPLEMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
DoNormalize=true;
bind();
- for(i=0;i<=NForms;i++) {
+ for (i=0;i<=NForms;i++) {
DePos[i] = DaLPos[i] = DaRPos[i] = DrPos[i] = 0.0;
DfPos[i] = DsbPos[i] = DspPos[i] = 0.0;
}
- for(i=0;i<NNorm;i++) { ToNormalize[i]=-1;}
+ for (i=0;i<NNorm;i++) { ToNormalize[i]=-1;}
Debug(0);
}
for (i=0; i<MixturePos.size(); i++) MixturePos[i] = MixtureCmd[i];
for (i=0; i<PropAdvance.size(); i++) PropAdvance[i] = PropAdvanceCmd[i];
for (i=0; i<Components.size(); i++) Components[i]->Run();
- if(DoNormalize) Normalize();
+ if (DoNormalize) Normalize();
} else {
}
Name = Name + ":" + AC_cfg->GetValue("NAME");
if (debug_lvl > 0) cout << " Control System Name: " << Name << endl;
- if( AC_cfg->GetValue("NORMALIZE") == "FALSE") {
+ if ( AC_cfg->GetValue("NORMALIZE") == "FALSE") {
DoNormalize=false;
cout << " Automatic Control Surface Normalization Disabled" << endl;
}
}
//collect information for normalizing control surfaces
string nodeName;
- for(i=0;i<Components.size();i++) {
+ for (i=0;i<Components.size();i++) {
- if( (Components[i]->GetType() == "AEROSURFACE_SCALE"
+ if ( (Components[i]->GetType() == "AEROSURFACE_SCALE"
|| Components[i]->GetType() == "KINEMAT")
&& Components[i]->GetOutputNode() ) {
nodeName= Components[i]->GetOutputNode()->GetName();
- if( nodeName == "elevator-pos-rad" ) {
+ if ( nodeName == "elevator-pos-rad" ) {
ToNormalize[iDe]=i;
} else if ( nodeName == "left-aileron-pos-rad"
|| nodeName == "aileron-pos-rad" ) {
ToNormalize[iDsb]=i;
} else if ( nodeName == "spoiler-pos-rad" ) {
ToNormalize[iDsp]=i;
- } else if ( nodeName == "flaps-pos-deg" ) {
+ } else if ( nodeName == "flap-pos-deg" ) {
ToNormalize[iDf]=i;
}
}
//those that are have an index >=0 in the ToNormalize array
//ToNormalize is filled in Load()
- if( ToNormalize[iDe] > -1 ) {
+ if ( ToNormalize[iDe] > -1 ) {
DePos[ofNorm] = Components[ToNormalize[iDe]]->GetOutputPct();
}
- if( ToNormalize[iDaL] > -1 ) {
+ if ( ToNormalize[iDaL] > -1 ) {
DaLPos[ofNorm] = Components[ToNormalize[iDaL]]->GetOutputPct();
}
- if( ToNormalize[iDaR] > -1 ) {
+ if ( ToNormalize[iDaR] > -1 ) {
DaRPos[ofNorm] = Components[ToNormalize[iDaR]]->GetOutputPct();
}
- if( ToNormalize[iDr] > -1 ) {
+ if ( ToNormalize[iDr] > -1 ) {
DrPos[ofNorm] = Components[ToNormalize[iDr]]->GetOutputPct();
}
- if( ToNormalize[iDsb] > -1 ) {
+ if ( ToNormalize[iDsb] > -1 ) {
DsbPos[ofNorm] = Components[ToNormalize[iDsb]]->GetOutputPct();
}
- if( ToNormalize[iDsp] > -1 ) {
+ if ( ToNormalize[iDsp] > -1 ) {
DspPos[ofNorm] = Components[ToNormalize[iDsp]]->GetOutputPct();
}
- if( ToNormalize[iDf] > -1 ) {
+ if ( ToNormalize[iDf] > -1 ) {
DfPos[ofNorm] = Components[ToNormalize[iDf]]->GetOutputPct();
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-void FGFCS::bind(void){
+void FGFCS::bind(void)
+{
PropertyManager->Tie("fcs/aileron-cmd-norm", this,
&FGFCS::GetDaCmd,
&FGFCS::SetDaCmd,
&FGFCS::SetGearPos,
true);
}
+
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-void FGFCS::bindModel(void){
+void FGFCS::bindModel(void)
+{
unsigned i;
- for(i=0;i<ThrottleCmd.size();i++) {
- PropertyManager->Tie("fcs/throttle-cmd-norm",this,i,
+ char tmp[80];
+
+ for (i=0; i<ThrottleCmd.size(); i++) {
+ snprintf(tmp,80,"fcs/throttle-cmd-norm[%u]",i);
+ PropertyManager->Tie( tmp,this,i,
&FGFCS::GetThrottleCmd,
&FGFCS::SetThrottleCmd,
true );
- PropertyManager->Tie("fcs/throttle-pos-norm",this,i,
+ snprintf(tmp,80,"fcs/throttle-pos-norm[%u]",i);
+ PropertyManager->Tie( tmp,this,i,
&FGFCS::GetThrottlePos,
&FGFCS::SetThrottlePos,
true );
- if( MixtureCmd.size() > i ) {
- PropertyManager->Tie("fcs/mixture-cmd-norm",this,i,
+ if ( MixtureCmd.size() > i ) {
+ snprintf(tmp,80,"fcs/mixture-cmd-norm[%u]",i);
+ PropertyManager->Tie( tmp,this,i,
&FGFCS::GetMixtureCmd,
&FGFCS::SetMixtureCmd,
true );
- PropertyManager->Tie("fcs/mixture-pos-norm",this,i,
+ snprintf(tmp,80,"fcs/mixture-pos-norm[%u]",i);
+ PropertyManager->Tie( tmp,this,i,
&FGFCS::GetMixturePos,
&FGFCS::SetMixturePos,
true );
}
- if( PropAdvanceCmd.size() > i ) {
- PropertyManager->Tie("fcs/advance-cmd-norm",this,i,
+ if ( PropAdvanceCmd.size() > i ) {
+ snprintf(tmp,80,"fcs/advance-cmd-norm[%u]",i);
+ PropertyManager->Tie( tmp,this,i,
&FGFCS::GetPropAdvanceCmd,
&FGFCS::SetPropAdvanceCmd,
true );
- PropertyManager->Tie("fcs/advance-pos-norm",this,i,
+ snprintf(tmp,80,"fcs/advance-pos-norm[%u]",i);
+ PropertyManager->Tie( tmp,this,i,
&FGFCS::GetPropAdvance,
&FGFCS::SetPropAdvance,
true );
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-void FGFCS::unbind(void){
+void FGFCS::unbind(void)
+{
PropertyManager->Untie("fcs/aileron-cmd-norm");
PropertyManager->Untie("fcs/elevator-cmd-norm");
PropertyManager->Untie("fcs/rudder-cmd-norm");
PropertyManager->Untie("gear/gear-pos-norm");
}
-
-
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
// The bitmasked value choices are as follows:
// unset: In this case (the default) JSBSim would only print