mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-29 03:36:07 +08:00
ManualControl: avoid scheduling based on unchosen input
This commit is contained in:
@@ -226,10 +226,20 @@ void ManualControl::Run()
|
|||||||
// If it's valid, this should really be valid but better safe than sorry.
|
// If it's valid, this should really be valid but better safe than sorry.
|
||||||
const int instance = _selector.instance();
|
const int instance = _selector.instance();
|
||||||
|
|
||||||
if (instance >= 0 && instance < MAX_MANUAL_INPUT_COUNT) {
|
// Attach scheduling to new samples of the chosen input
|
||||||
|
if (instance != _previous_manual_control_input_instance) {
|
||||||
|
if ((0 <= _previous_manual_control_input_instance)
|
||||||
|
&& (_previous_manual_control_input_instance < MAX_MANUAL_INPUT_COUNT)) {
|
||||||
|
_manual_control_input_subs[_previous_manual_control_input_instance].unregisterCallback();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((0 <= instance) && (instance < MAX_MANUAL_INPUT_COUNT)) {
|
||||||
_manual_control_input_subs[instance].registerCallback();
|
_manual_control_input_subs[instance].registerCallback();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_previous_manual_control_input_instance = instance;
|
||||||
|
}
|
||||||
|
|
||||||
_manual_control_switches_sub.registerCallback();
|
_manual_control_switches_sub.registerCallback();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -131,6 +131,7 @@ private:
|
|||||||
uORB::Publication<manual_control_setpoint_s> _manual_control_setpoint_pub{ORB_ID(manual_control_setpoint)};
|
uORB::Publication<manual_control_setpoint_s> _manual_control_setpoint_pub{ORB_ID(manual_control_setpoint)};
|
||||||
|
|
||||||
uORB::SubscriptionInterval _parameter_update_sub{ORB_ID(parameter_update), 1_s};
|
uORB::SubscriptionInterval _parameter_update_sub{ORB_ID(parameter_update), 1_s};
|
||||||
|
int _previous_manual_control_input_instance{-1};
|
||||||
uORB::SubscriptionCallbackWorkItem _manual_control_input_subs[MAX_MANUAL_INPUT_COUNT] {
|
uORB::SubscriptionCallbackWorkItem _manual_control_input_subs[MAX_MANUAL_INPUT_COUNT] {
|
||||||
{this, ORB_ID(manual_control_input), 0},
|
{this, ORB_ID(manual_control_input), 0},
|
||||||
{this, ORB_ID(manual_control_input), 1},
|
{this, ORB_ID(manual_control_input), 1},
|
||||||
|
|||||||
Reference in New Issue
Block a user