Plane: added servo remapping object

This commit is contained in:
Andrew Tridgell 2016-10-11 22:02:20 +11:00
parent c7f8b255e7
commit 8170df7ba8
4 changed files with 16 additions and 0 deletions

View File

@ -1378,6 +1378,10 @@ const AP_Param::GroupInfo ParametersG2::var_info[] = {
// @Group: ICE_ // @Group: ICE_
// @Path: ../libraries/AP_ICEngine/AP_ICEngine.cpp // @Path: ../libraries/AP_ICEngine/AP_ICEngine.cpp
AP_SUBGROUPINFO(ice_control, "ICE_", 2, ParametersG2, AP_ICEngine), AP_SUBGROUPINFO(ice_control, "ICE_", 2, ParametersG2, AP_ICEngine),
// @Group: SERVO_
// @Path: ../libraries/RC_Channel/SRV_Channel.cpp
AP_SUBGROUPINFO(servo_channels, "SERVO", 3, ParametersG2, SRV_Channels),
AP_GROUPEND AP_GROUPEND
}; };

View File

@ -585,6 +585,9 @@ public:
// internal combustion engine control // internal combustion engine control
AP_ICEngine ice_control; AP_ICEngine ice_control;
// control over servo output ranges
SRV_Channels servo_channels;
}; };
extern const AP_Param::Info var_info[]; extern const AP_Param::Info var_info[];

View File

@ -44,6 +44,7 @@
#include <AP_AccelCal/AP_AccelCal.h> // interface and maths for accelerometer calibration #include <AP_AccelCal/AP_AccelCal.h> // interface and maths for accelerometer calibration
#include <AP_AHRS/AP_AHRS.h> // ArduPilot Mega DCM Library #include <AP_AHRS/AP_AHRS.h> // ArduPilot Mega DCM Library
#include <RC_Channel/RC_Channel.h> // RC Channel Library #include <RC_Channel/RC_Channel.h> // RC Channel Library
#include <RC_Channel/SRV_Channel.h>
#include <AP_RangeFinder/AP_RangeFinder.h> // Range finder library #include <AP_RangeFinder/AP_RangeFinder.h> // Range finder library
#include <Filter/Filter.h> // Filter library #include <Filter/Filter.h> // Filter library
#include <AP_Buffer/AP_Buffer.h> // APM FIFO Buffer #include <AP_Buffer/AP_Buffer.h> // APM FIFO Buffer

View File

@ -798,6 +798,11 @@ void Plane::set_servos(void)
*/ */
void Plane::servos_output(void) void Plane::servos_output(void)
{ {
hal.rcout->cork();
// remap servo output to SERVO* ranges if enabled
g2.servo_channels.remap_servo_output();
if (g.rudder_only == 0) { if (g.rudder_only == 0) {
// when in RUDDER_ONLY mode we don't send the channel_roll // when in RUDDER_ONLY mode we don't send the channel_roll
// output and instead rely on KFF_RDDRMIX. That allows the yaw // output and instead rely on KFF_RDDRMIX. That allows the yaw
@ -808,5 +813,8 @@ void Plane::servos_output(void)
channel_pitch->output(); channel_pitch->output();
channel_throttle->output(); channel_throttle->output();
channel_rudder->output(); channel_rudder->output();
RC_Channel_aux::output_ch_all(); RC_Channel_aux::output_ch_all();
hal.rcout->push();
} }