Plane: Suppress throttle when parachute release initiated, not after release.

This commit is contained in:
Rimvydas Naktinis 2016-04-05 10:39:55 +03:00 committed by Tom Pittenger
parent 2a1985d0f9
commit df922dacfa
3 changed files with 12 additions and 5 deletions

View File

@ -578,8 +578,8 @@ void Plane::flap_slew_limit(int8_t &last_value, int8_t &new_value)
*/ */
bool Plane::suppress_throttle(void) bool Plane::suppress_throttle(void)
{ {
if (auto_throttle_mode && parachute.released()) { if (auto_throttle_mode && parachute.release_initiated()) {
// throttle always suppressed in auto-throttle modes after parachute release // throttle always suppressed in auto-throttle modes after parachute release initiated
throttle_suppressed = true; throttle_suppressed = true;
return true; return true;
} }

View File

@ -86,6 +86,8 @@ void AP_Parachute::release()
_release_time = AP_HAL::millis(); _release_time = AP_HAL::millis();
} }
_release_initiated = true;
// update AP_Notify // update AP_Notify
AP_Notify::flags.parachute_release = 1; AP_Notify::flags.parachute_release = 1;
} }

View File

@ -32,7 +32,8 @@ public:
AP_Parachute(AP_Relay& relay) : AP_Parachute(AP_Relay& relay) :
_relay(relay), _relay(relay),
_release_time(0), _release_time(0),
_released(false) _released(false),
_release_initiated(false)
{ {
// setup parameter defaults // setup parameter defaults
AP_Param::setup_object_defaults(this, var_info); AP_Param::setup_object_defaults(this, var_info);
@ -50,6 +51,9 @@ public:
/// released - true if the parachute has been released (or release is in progress) /// released - true if the parachute has been released (or release is in progress)
bool released() const { return _released; } bool released() const { return _released; }
/// release_initiated - true if the parachute release sequence has been initiated (may wait before actual release)
bool release_initiated() const { return _release_initiated; }
/// update - shuts off the trigger should be called at about 10hz /// update - shuts off the trigger should be called at about 10hz
void update(); void update();
@ -71,6 +75,7 @@ private:
// internal variables // internal variables
AP_Relay &_relay; // pointer to relay object from the base class Relay. AP_Relay &_relay; // pointer to relay object from the base class Relay.
uint32_t _release_time; // system time that parachute is ordered to be released (actual release will happen 0.5 seconds later) uint32_t _release_time; // system time that parachute is ordered to be released (actual release will happen 0.5 seconds later)
bool _release_initiated:1; // true if the parachute release initiated (may still be waiting for engine to be suppressed etc.)
bool _release_in_progress:1; // true if the parachute release is in progress bool _release_in_progress:1; // true if the parachute release is in progress
bool _released:1; // true if the parachute has been released bool _released:1; // true if the parachute has been released
}; };