Heiko Schulz wrote:
--- Tobias Ramforth <[EMAIL PROTECTED]> schrieb:Heiko Schulz wrote:sounds good- that's what I need- but where is thepatch? I guess he refers to his post from March 30. Regards,Oh- thanks! I just noticed, that I deleted it... Hopefully Sys can upload it again....
Here is the copy from my E-Mail folder. Regards, Tobias
Index: xmlauto.cxx =================================================================== RCS file: /var/cvs/FlightGear-0.9/source/src/Autopilot/xmlauto.cxx,v retrieving revision 1.30 diff -B -b -w -i -U 3 -r1.30 xmlauto.cxx --- xmlauto.cxx 24 Mar 2008 22:46:47 -0000 1.30 +++ xmlauto.cxx 30 Mar 2008 21:02:48 -0000 @@ -173,22 +173,102 @@ config = child->getChild( "Ti" ); if ( config != NULL ) { + SGPropertyNode *val = config->getChild( "value" ); + if ( val != NULL ) { + Ti = val->getDoubleValue(); + } + + SGPropertyNode *prop = config->getChild( "prop" ); + if ( prop != NULL ) { + Ti_prop = fgGetNode( prop->getStringValue(), true ); + if ( val != NULL ) { + Ti_prop->setDoubleValue(Kp); + } + } + + // output deprecated usage warning + if (val == NULL && prop == NULL) { Ti = config->getDoubleValue(); + SG_LOG( SG_AUTOPILOT, SG_WARN, "Deprecated Ti config. Please use <prop> and/or <value> tags." ); + if ( name.length() ) { + SG_LOG( SG_AUTOPILOT, SG_WARN, "Section = " << name ); + } + } } config = child->getChild( "Td" ); if ( config != NULL ) { + SGPropertyNode *val = config->getChild( "value" ); + if ( val != NULL ) { + Td = val->getDoubleValue(); + } + + SGPropertyNode *prop = config->getChild( "prop" ); + if ( prop != NULL ) { + Td_prop = fgGetNode( prop->getStringValue(), true ); + if ( val != NULL ) { + Td_prop->setDoubleValue(Kp); + } + } + + // output deprecated usage warning + if (val == NULL && prop == NULL) { Td = config->getDoubleValue(); + SG_LOG( SG_AUTOPILOT, SG_WARN, "Deprecated Td config. Please use <prop> and/or <value> tags." ); + if ( name.length() ) { + SG_LOG( SG_AUTOPILOT, SG_WARN, "Section = " << name ); + } + } } config = child->getChild( "u_min" ); if ( config != NULL ) { + SGPropertyNode *val = config->getChild( "value" ); + if ( val != NULL ) { + u_min = val->getDoubleValue(); + } + + SGPropertyNode *prop = config->getChild( "prop" ); + if ( prop != NULL ) { + umin_prop = fgGetNode( prop->getStringValue(), true ); + if ( val != NULL ) { + umin_prop->setDoubleValue(u_min); + } + } + + // output deprecated usage warning + if (val == NULL && prop == NULL) { u_min = config->getDoubleValue(); + SG_LOG( SG_AUTOPILOT, SG_WARN, "Deprecated u_min config. Please use <prop> and/or <value> tags." ); + if ( name.length() ) { + SG_LOG( SG_AUTOPILOT, SG_WARN, "Section = " << name ); + } + } } config = child->getChild( "u_max" ); if ( config != NULL ) { + SGPropertyNode *val = config->getChild( "value" ); + if ( val != NULL ) { + u_max = val->getDoubleValue(); + } + + SGPropertyNode *prop = config->getChild( "prop" ); + if ( prop != NULL ) { + umax_prop = fgGetNode( prop->getStringValue(), true ); + if ( val != NULL ) { + umax_prop->setDoubleValue(u_max); + } + } + + // output deprecated usage warning + if (val == NULL && prop == NULL) { u_max = config->getDoubleValue(); + SG_LOG( SG_AUTOPILOT, SG_WARN, "Deprecated u_max config. Please use <prop> and/or <value> tags." ); + if ( name.length() ) { + SG_LOG( SG_AUTOPILOT, SG_WARN, "Section = " << name ); + } + } } } else { SG_LOG( SG_AUTOPILOT, SG_WARN, "Error in autopilot config logic" ); @@ -260,6 +340,10 @@ double delta_u_n = 0.0; // incremental output double u_n = 0.0; // absolute output double Ts; // sampling interval (sec) + if (umin_prop != NULL)u_min = umin_prop->getDoubleValue(); + if (umax_prop != NULL)u_max = umax_prop->getDoubleValue(); + if (Ti_prop != NULL)Ti = Ti_prop->getDoubleValue(); + if (Td_prop != NULL)Td = Td_prop->getDoubleValue(); elapsedTime += dt; if ( elapsedTime <= desiredTs ) { @@ -466,7 +550,24 @@ prop = child->getChild( "Kp" ); if ( prop != NULL ) { + SGPropertyNode *val = prop->getChild( "value" ); + if ( val != NULL ) { + Kp = val->getDoubleValue(); + } + + SGPropertyNode *prop1 = prop->getChild( "prop" ); + if ( prop1 != NULL ) { + Kp_prop = fgGetNode( prop1->getStringValue(), true ); + if ( val != NULL ) { + Kp_prop->setDoubleValue(Kp); + } + } + + // output deprecated usage warning + if (val == NULL && prop1 == NULL) { Kp = prop->getDoubleValue(); + SG_LOG( SG_AUTOPILOT, SG_WARN, "Deprecated Kp config. Please use <prop> and/or <value> tags." ); + } proportional = true; } @@ -478,13 +579,47 @@ prop = child->getChild( "u_min" ); if ( prop != NULL ) { + SGPropertyNode *val = prop->getChild( "value" ); + if ( val != NULL ) { + u_min = val->getDoubleValue(); + } + + SGPropertyNode *prop1 = prop->getChild( "prop" ); + if ( prop1 != NULL ) { + umin_prop = fgGetNode( prop1->getStringValue(), true ); + if ( val != NULL ) { + umin_prop->setDoubleValue(u_min); + } + } + + // output deprecated usage warning + if (val == NULL && prop1 == NULL) { u_min = prop->getDoubleValue(); + SG_LOG( SG_AUTOPILOT, SG_WARN, "Deprecated u_min config. Please use <prop> and/or <value> tags." ); + } clamp = true; } prop = child->getChild( "u_max" ); if ( prop != NULL ) { + SGPropertyNode *val = prop->getChild( "value" ); + if ( val != NULL ) { + u_max = val->getDoubleValue(); + } + + SGPropertyNode *prop1 = prop->getChild( "prop" ); + if ( prop1 != NULL ) { + umax_prop = fgGetNode( prop1->getStringValue(), true ); + if ( val != NULL ) { + umax_prop->setDoubleValue(u_max); + } + } + + // output deprecated usage warning + if (val == NULL && prop1 == NULL) { u_max = prop->getDoubleValue(); + SG_LOG( SG_AUTOPILOT, SG_WARN, "Deprecated u_max config. Please use <prop> and/or <value> tags." ); + } clamp = true; } } else { @@ -498,6 +633,10 @@ void FGPISimpleController::update( double dt ) { + if (umin_prop != NULL)u_min = umin_prop->getDoubleValue(); + if (umax_prop != NULL)u_max = umax_prop->getDoubleValue(); + if (Kp_prop != NULL)Kp = Kp_prop->getDoubleValue(); + if (enable_prop != NULL && enable_prop->getStringValue() == enable_value) { if ( !enabled ) { // we have just been enabled, zero out int_sum Index: xmlauto.hxx =================================================================== RCS file: /var/cvs/FlightGear-0.9/source/src/Autopilot/xmlauto.hxx,v retrieving revision 1.16 diff -B -b -w -i -U 3 -r1.16 xmlauto.hxx --- xmlauto.hxx 17 Feb 2008 09:44:03 -0000 1.16 +++ xmlauto.hxx 30 Mar 2008 21:02:48 -0000 @@ -122,10 +122,13 @@ // (usually 0.0) double Ti; // Integrator time (sec) + SGPropertyNode_ptr Ti_prop; double Td; // Derivator time (sec) - + SGPropertyNode_ptr Td_prop; double u_min; // Minimum output clamp + SGPropertyNode_ptr umin_prop; double u_max; // Maximum output clamp + SGPropertyNode_ptr umax_prop; // Previous state tracking values double ep_n_1; // ep[n-1] (prop error) @@ -159,6 +162,7 @@ // proportional component data bool proportional; double Kp; + SGPropertyNode_ptr Kp_prop; SGPropertyNode_ptr offset_prop; double offset_value; @@ -180,7 +184,9 @@ double r_scale; // scale reference input from property system double u_min; // Minimum output clamp + SGPropertyNode_ptr umin_prop; double u_max; // Maximum output clamp + SGPropertyNode_ptr umax_prop; public:
begin:vcard fn:Tobias Ramforth n:Ramforth;Tobias email;internet:[EMAIL PROTECTED] x-mozilla-html:FALSE version:2.1 end:vcard
signature.asc
Description: OpenPGP digital signature
------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________ Flightgear-devel mailing list Flightgear-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/flightgear-devel