mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-20 21:43:34 +08:00
added circuit_breaker_enabled_by_val()
added and using circuit_breaker_enabled_by_val() where possible instead of circuit_breaker_enabled() which search for cbrk parameters by name, which is extensive process.
This commit is contained in:
@@ -53,3 +53,8 @@ bool circuit_breaker_enabled(const char *breaker, int32_t magic)
|
|||||||
|
|
||||||
return (PX4_PARAM_GET_BYNAME(breaker, &val) == 0) && (val == magic);
|
return (PX4_PARAM_GET_BYNAME(breaker, &val) == 0) && (val == magic);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool circuit_breaker_enabled_by_val(int32_t breaker_val, int32_t magic)
|
||||||
|
{
|
||||||
|
return (breaker_val == magic);
|
||||||
|
}
|
||||||
|
|||||||
@@ -64,6 +64,7 @@
|
|||||||
__BEGIN_DECLS
|
__BEGIN_DECLS
|
||||||
|
|
||||||
extern "C" __EXPORT bool circuit_breaker_enabled(const char *breaker, int32_t magic);
|
extern "C" __EXPORT bool circuit_breaker_enabled(const char *breaker, int32_t magic);
|
||||||
|
extern "C" __EXPORT bool circuit_breaker_enabled_by_val(int32_t breaker_val, int32_t magic);
|
||||||
|
|
||||||
__END_DECLS
|
__END_DECLS
|
||||||
|
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ void MixingOutput::updateParams()
|
|||||||
{
|
{
|
||||||
ModuleParams::updateParams();
|
ModuleParams::updateParams();
|
||||||
|
|
||||||
bool safety_disabled = circuit_breaker_enabled("CBRK_IO_SAFETY", CBRK_IO_SAFETY_KEY);
|
bool safety_disabled = circuit_breaker_enabled_by_val(_param_cbrk_io_safety.get(), CBRK_IO_SAFETY_KEY);
|
||||||
|
|
||||||
if (safety_disabled) {
|
if (safety_disabled) {
|
||||||
_safety_off = true;
|
_safety_off = true;
|
||||||
|
|||||||
@@ -234,7 +234,9 @@ private:
|
|||||||
(ParamInt<px4::params::MC_AIRMODE>) _param_mc_airmode, ///< multicopter air-mode
|
(ParamInt<px4::params::MC_AIRMODE>) _param_mc_airmode, ///< multicopter air-mode
|
||||||
(ParamFloat<px4::params::MOT_SLEW_MAX>) _param_mot_slew_max,
|
(ParamFloat<px4::params::MOT_SLEW_MAX>) _param_mot_slew_max,
|
||||||
(ParamFloat<px4::params::THR_MDL_FAC>) _param_thr_mdl_fac, ///< thrust to pwm modelling factor
|
(ParamFloat<px4::params::THR_MDL_FAC>) _param_thr_mdl_fac, ///< thrust to pwm modelling factor
|
||||||
(ParamInt<px4::params::MOT_ORDERING>) _param_mot_ordering
|
(ParamInt<px4::params::MOT_ORDERING>) _param_mot_ordering,
|
||||||
|
(ParamInt<px4::params::CBRK_IO_SAFETY>) _param_cbrk_io_safety
|
||||||
|
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -188,8 +188,6 @@ void usage(const char *reason);
|
|||||||
void control_status_leds(vehicle_status_s *status_local, const actuator_armed_s *actuator_armed, bool changed,
|
void control_status_leds(vehicle_status_s *status_local, const actuator_armed_s *actuator_armed, bool changed,
|
||||||
const uint8_t battery_warning, const cpuload_s *cpuload_local);
|
const uint8_t battery_warning, const cpuload_s *cpuload_local);
|
||||||
|
|
||||||
void get_circuit_breaker_params();
|
|
||||||
|
|
||||||
bool stabilization_required();
|
bool stabilization_required();
|
||||||
|
|
||||||
void print_reject_mode(const char *msg);
|
void print_reject_mode(const char *msg);
|
||||||
@@ -2469,17 +2467,15 @@ Commander::run()
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
get_circuit_breaker_params()
|
Commander::get_circuit_breaker_params()
|
||||||
{
|
{
|
||||||
status_flags.circuit_breaker_engaged_power_check = circuit_breaker_enabled("CBRK_SUPPLY_CHK", CBRK_SUPPLY_CHK_KEY);
|
status_flags.circuit_breaker_engaged_power_check = circuit_breaker_enabled_by_val(_param_cbrk_supply_chk.get(), CBRK_SUPPLY_CHK_KEY);
|
||||||
status_flags.circuit_breaker_engaged_usb_check = circuit_breaker_enabled("CBRK_USB_CHK", CBRK_USB_CHK_KEY);
|
status_flags.circuit_breaker_engaged_usb_check = circuit_breaker_enabled_by_val(_param_cbrk_usb_chk.get(), CBRK_USB_CHK_KEY);
|
||||||
status_flags.circuit_breaker_engaged_airspd_check = circuit_breaker_enabled("CBRK_AIRSPD_CHK", CBRK_AIRSPD_CHK_KEY);
|
status_flags.circuit_breaker_engaged_airspd_check = circuit_breaker_enabled_by_val(_param_cbrk_airspd_chk.get(), CBRK_AIRSPD_CHK_KEY);
|
||||||
status_flags.circuit_breaker_engaged_enginefailure_check = circuit_breaker_enabled("CBRK_ENGINEFAIL",
|
status_flags.circuit_breaker_engaged_enginefailure_check = circuit_breaker_enabled_by_val(_param_cbrk_enginefail.get(), CBRK_ENGINEFAIL_KEY);
|
||||||
CBRK_ENGINEFAIL_KEY);
|
status_flags.circuit_breaker_engaged_gpsfailure_check = circuit_breaker_enabled_by_val(_param_cbrk_gpsfail.get(), CBRK_GPSFAIL_KEY);
|
||||||
status_flags.circuit_breaker_engaged_gpsfailure_check = circuit_breaker_enabled("CBRK_GPSFAIL", CBRK_GPSFAIL_KEY);
|
status_flags.circuit_breaker_flight_termination_disabled = circuit_breaker_enabled_by_val(_param_cbrk_flightterm.get(), CBRK_FLIGHTTERM_KEY);
|
||||||
status_flags.circuit_breaker_flight_termination_disabled = circuit_breaker_enabled("CBRK_FLIGHTTERM",
|
status_flags.circuit_breaker_engaged_posfailure_check = circuit_breaker_enabled_by_val(_param_cbrk_velposerr.get(), CBRK_VELPOSERR_KEY);
|
||||||
CBRK_FLIGHTTERM_KEY);
|
|
||||||
status_flags.circuit_breaker_engaged_posfailure_check = circuit_breaker_enabled("CBRK_VELPOSERR", CBRK_VELPOSERR_KEY);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -97,6 +97,8 @@ public:
|
|||||||
// TODO: only temporarily static until low priority thread is removed
|
// TODO: only temporarily static until low priority thread is removed
|
||||||
static bool preflight_check(bool report);
|
static bool preflight_check(bool report);
|
||||||
|
|
||||||
|
void get_circuit_breaker_params();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
DEFINE_PARAMETERS(
|
DEFINE_PARAMETERS(
|
||||||
@@ -114,7 +116,7 @@ private:
|
|||||||
(ParamFloat<px4::params::COM_HOME_V_T>) _param_com_home_v_t,
|
(ParamFloat<px4::params::COM_HOME_V_T>) _param_com_home_v_t,
|
||||||
|
|
||||||
(ParamFloat<px4::params::COM_POS_FS_EPH>) _param_com_pos_fs_eph,
|
(ParamFloat<px4::params::COM_POS_FS_EPH>) _param_com_pos_fs_eph,
|
||||||
(ParamFloat<px4::params::COM_POS_FS_EPV>) _param_com_pos_fs_epv,
|
(ParamFloat<px4::params::COM_POS_FS_EPV>) _param_com_pos_fs_epv, /*Not realy used for now*/
|
||||||
(ParamFloat<px4::params::COM_VEL_FS_EVH>) _param_com_vel_fs_evh,
|
(ParamFloat<px4::params::COM_VEL_FS_EVH>) _param_com_vel_fs_evh,
|
||||||
(ParamInt<px4::params::COM_POSCTL_NAVL>) _param_com_posctl_navl, /* failsafe response to loss of navigation accuracy */
|
(ParamInt<px4::params::COM_POSCTL_NAVL>) _param_com_posctl_navl, /* failsafe response to loss of navigation accuracy */
|
||||||
|
|
||||||
@@ -142,8 +144,15 @@ private:
|
|||||||
(ParamInt<px4::params::COM_OBL_ACT>) _param_com_obl_act,
|
(ParamInt<px4::params::COM_OBL_ACT>) _param_com_obl_act,
|
||||||
(ParamInt<px4::params::COM_OBL_RC_ACT>) _param_com_obl_rc_act,
|
(ParamInt<px4::params::COM_OBL_RC_ACT>) _param_com_obl_rc_act,
|
||||||
|
|
||||||
(ParamInt<px4::params::COM_PREARM_MODE>) _param_com_prearm_mode
|
(ParamInt<px4::params::COM_PREARM_MODE>) _param_com_prearm_mode,
|
||||||
|
|
||||||
|
(ParamInt<px4::params::CBRK_SUPPLY_CHK>) _param_cbrk_supply_chk,
|
||||||
|
(ParamInt<px4::params::CBRK_USB_CHK>) _param_cbrk_usb_chk,
|
||||||
|
(ParamInt<px4::params::CBRK_AIRSPD_CHK>) _param_cbrk_airspd_chk,
|
||||||
|
(ParamInt<px4::params::CBRK_ENGINEFAIL>) _param_cbrk_enginefail,
|
||||||
|
(ParamInt<px4::params::CBRK_GPSFAIL>) _param_cbrk_gpsfail,
|
||||||
|
(ParamInt<px4::params::CBRK_FLIGHTTERM>) _param_cbrk_flightterm,
|
||||||
|
(ParamInt<px4::params::CBRK_VELPOSERR>) _param_cbrk_velposerr
|
||||||
)
|
)
|
||||||
|
|
||||||
enum class PrearmedMode {
|
enum class PrearmedMode {
|
||||||
|
|||||||
@@ -265,7 +265,10 @@ private:
|
|||||||
_param_mpc_thr_hover, /**< throttle at which vehicle is at hover equilibrium */
|
_param_mpc_thr_hover, /**< throttle at which vehicle is at hover equilibrium */
|
||||||
(ParamInt<px4::params::MPC_THR_CURVE>) _param_mpc_thr_curve, /**< throttle curve behavior */
|
(ParamInt<px4::params::MPC_THR_CURVE>) _param_mpc_thr_curve, /**< throttle curve behavior */
|
||||||
|
|
||||||
(ParamInt<px4::params::MC_AIRMODE>) _param_mc_airmode
|
(ParamInt<px4::params::MC_AIRMODE>) _param_mc_airmode,
|
||||||
|
|
||||||
|
(ParamInt<px4::params::CBRK_RATE_CTRL>) _param_cbrk_rate_ctrl
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
bool _is_tailsitter{false};
|
bool _is_tailsitter{false};
|
||||||
|
|||||||
@@ -131,7 +131,7 @@ MulticopterAttitudeControl::parameters_updated()
|
|||||||
|
|
||||||
_man_tilt_max = math::radians(_param_mpc_man_tilt_max.get());
|
_man_tilt_max = math::radians(_param_mpc_man_tilt_max.get());
|
||||||
|
|
||||||
_actuators_0_circuit_breaker_enabled = circuit_breaker_enabled("CBRK_RATE_CTRL", CBRK_RATE_CTRL_KEY);
|
_actuators_0_circuit_breaker_enabled = circuit_breaker_enabled_by_val(_param_cbrk_rate_ctrl.get(), CBRK_RATE_CTRL_KEY);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
Reference in New Issue
Block a user