mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-04-14 10:07:39 +08:00
commander: RcCalibrationChecks: avoid param access on each cycle
reduces cpu usage a bit
This commit is contained in:
parent
c72c580a0b
commit
24142bc014
@ -62,13 +62,11 @@ RcCalibrationChecks::RcCalibrationChecks()
|
||||
sprintf(nbuf, "RC%d_MAX", i + 1);
|
||||
_param_handles[i].max = param_find(nbuf);
|
||||
|
||||
sprintf(nbuf, "RC%d_REV", i + 1);
|
||||
_param_handles[i].rev = param_find(nbuf);
|
||||
|
||||
sprintf(nbuf, "RC%d_DZ", i + 1);
|
||||
_param_handles[i].dz = param_find(nbuf);
|
||||
}
|
||||
|
||||
updateParams();
|
||||
}
|
||||
|
||||
void RcCalibrationChecks::checkAndReport(const Context &context, Report &reporter)
|
||||
@ -82,18 +80,10 @@ void RcCalibrationChecks::checkAndReport(const Context &context, Report &reporte
|
||||
}
|
||||
|
||||
for (unsigned i = 0; i < input_rc_s::RC_INPUT_MAX_CHANNELS; i++) {
|
||||
/* initialize values to values failing the check */
|
||||
float param_min = 0.0f;
|
||||
float param_max = 0.0f;
|
||||
float param_trim = 0.0f;
|
||||
float param_rev = 0.0f;
|
||||
float param_dz = RC_INPUT_MAX_DEADZONE_US * 2.0f;
|
||||
|
||||
param_get(_param_handles[i].min, ¶m_min);
|
||||
param_get(_param_handles[i].trim, ¶m_trim);
|
||||
param_get(_param_handles[i].max, ¶m_max);
|
||||
param_get(_param_handles[i].rev, ¶m_rev);
|
||||
param_get(_param_handles[i].dz, ¶m_dz);
|
||||
float param_min = _param_values[i].min;
|
||||
float param_max = _param_values[i].max;
|
||||
float param_trim = _param_values[i].trim;
|
||||
float param_dz = _param_values[i].dz;
|
||||
|
||||
/* assert min..center..max ordering */
|
||||
if (param_min < RC_INPUT_LOWEST_MIN_US) {
|
||||
@ -175,3 +165,21 @@ void RcCalibrationChecks::checkAndReport(const Context &context, Report &reporte
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void RcCalibrationChecks::updateParams()
|
||||
{
|
||||
HealthAndArmingCheckBase::updateParams();
|
||||
|
||||
for (unsigned i = 0; i < input_rc_s::RC_INPUT_MAX_CHANNELS; i++) {
|
||||
/* initialize values to values failing the check */
|
||||
_param_values[i].min = 0.0f;
|
||||
_param_values[i].max = 0.0f;
|
||||
_param_values[i].trim = 0.0f;
|
||||
_param_values[i].dz = RC_INPUT_MAX_DEADZONE_US * 2.0f;
|
||||
|
||||
param_get(_param_handles[i].min, &_param_values[i].min);
|
||||
param_get(_param_handles[i].trim, &_param_values[i].trim);
|
||||
param_get(_param_handles[i].max, &_param_values[i].max);
|
||||
param_get(_param_handles[i].dz, &_param_values[i].dz);
|
||||
}
|
||||
}
|
||||
|
||||
@ -47,14 +47,23 @@ public:
|
||||
void checkAndReport(const Context &context, Report &reporter) override;
|
||||
|
||||
private:
|
||||
void updateParams() override;
|
||||
|
||||
struct ParamHandles {
|
||||
param_t min;
|
||||
param_t trim;
|
||||
param_t max;
|
||||
param_t rev;
|
||||
param_t dz;
|
||||
};
|
||||
struct ParamValues {
|
||||
float min;
|
||||
float trim;
|
||||
float max;
|
||||
float dz;
|
||||
};
|
||||
|
||||
ParamHandles _param_handles[input_rc_s::RC_INPUT_MAX_CHANNELS];
|
||||
ParamValues _param_values[input_rc_s::RC_INPUT_MAX_CHANNELS];
|
||||
|
||||
DEFINE_PARAMETERS_CUSTOM_PARENT(HealthAndArmingCheckBase,
|
||||
(ParamInt<px4::params::COM_RC_IN_MODE>) _param_com_rc_in_mode
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user