|
|
|
@ -260,6 +260,10 @@ private:
@@ -260,6 +260,10 @@ private:
|
|
|
|
|
float rc_scale_yaw; |
|
|
|
|
float rc_scale_flaps; |
|
|
|
|
|
|
|
|
|
int rc_fs_ch; |
|
|
|
|
int rc_fs_mode; |
|
|
|
|
float rc_fs_thr; |
|
|
|
|
|
|
|
|
|
float battery_voltage_scaling; |
|
|
|
|
|
|
|
|
|
} _parameters; /**< local copies of interesting parameters */ |
|
|
|
@ -305,6 +309,10 @@ private:
@@ -305,6 +309,10 @@ private:
|
|
|
|
|
param_t rc_scale_yaw; |
|
|
|
|
param_t rc_scale_flaps; |
|
|
|
|
|
|
|
|
|
param_t rc_fs_ch; |
|
|
|
|
param_t rc_fs_mode; |
|
|
|
|
param_t rc_fs_thr; |
|
|
|
|
|
|
|
|
|
param_t battery_voltage_scaling; |
|
|
|
|
|
|
|
|
|
param_t board_rotation; |
|
|
|
@ -517,6 +525,11 @@ Sensors::Sensors() :
@@ -517,6 +525,11 @@ Sensors::Sensors() :
|
|
|
|
|
_parameter_handles.rc_scale_yaw = param_find("RC_SCALE_YAW"); |
|
|
|
|
_parameter_handles.rc_scale_flaps = param_find("RC_SCALE_FLAPS"); |
|
|
|
|
|
|
|
|
|
/* RC failsafe */ |
|
|
|
|
_parameter_handles.rc_fs_ch = param_find("RC_FS_CH"); |
|
|
|
|
_parameter_handles.rc_fs_mode = param_find("RC_FS_MODE"); |
|
|
|
|
_parameter_handles.rc_fs_thr = param_find("RC_FS_THR"); |
|
|
|
|
|
|
|
|
|
/* gyro offsets */ |
|
|
|
|
_parameter_handles.gyro_offset[0] = param_find("SENS_GYRO_XOFF"); |
|
|
|
|
_parameter_handles.gyro_offset[1] = param_find("SENS_GYRO_YOFF"); |
|
|
|
@ -668,6 +681,9 @@ Sensors::parameters_update()
@@ -668,6 +681,9 @@ Sensors::parameters_update()
|
|
|
|
|
param_get(_parameter_handles.rc_scale_pitch, &(_parameters.rc_scale_pitch)); |
|
|
|
|
param_get(_parameter_handles.rc_scale_yaw, &(_parameters.rc_scale_yaw)); |
|
|
|
|
param_get(_parameter_handles.rc_scale_flaps, &(_parameters.rc_scale_flaps)); |
|
|
|
|
param_get(_parameter_handles.rc_fs_ch, &(_parameters.rc_fs_ch)); |
|
|
|
|
param_get(_parameter_handles.rc_fs_mode, &(_parameters.rc_fs_mode)); |
|
|
|
|
param_get(_parameter_handles.rc_fs_thr, &(_parameters.rc_fs_thr)); |
|
|
|
|
|
|
|
|
|
/* update RC function mappings */ |
|
|
|
|
_rc.function[THROTTLE] = _parameters.rc_map_throttle - 1; |
|
|
|
@ -1255,6 +1271,17 @@ Sensors::rc_poll()
@@ -1255,6 +1271,17 @@ Sensors::rc_poll()
|
|
|
|
|
if (rc_input.channel_count < 4) |
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
/* failsafe check */ |
|
|
|
|
if (_parameters.rc_fs_ch != 0) { |
|
|
|
|
if (_parameters.rc_fs_mode == 0) { |
|
|
|
|
if (rc_input.values[_parameters.rc_fs_ch - 1] < _parameters.rc_fs_thr) |
|
|
|
|
return; |
|
|
|
|
} else if (_parameters.rc_fs_mode == 1) { |
|
|
|
|
if (rc_input.values[_parameters.rc_fs_ch - 1] > _parameters.rc_fs_thr) |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
unsigned channel_limit = rc_input.channel_count; |
|
|
|
|
|
|
|
|
|
if (channel_limit > _rc_max_chan_count) |
|
|
|
|