From 6ce7e179d7115f80f59bf466b0fe4c48f53c0540 Mon Sep 17 00:00:00 2001 From: Peter Barker Date: Thu, 4 Jul 2024 15:40:08 +1000 Subject: [PATCH] RC_Channel: produce error if feature compiled out and aux func initialised --- libraries/RC_Channel/RC_Channel.cpp | 46 ++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 4 deletions(-) diff --git a/libraries/RC_Channel/RC_Channel.cpp b/libraries/RC_Channel/RC_Channel.cpp index f3cecf7e4a4ae..33be28afd41ae 100644 --- a/libraries/RC_Channel/RC_Channel.cpp +++ b/libraries/RC_Channel/RC_Channel.cpp @@ -626,26 +626,41 @@ void RC_Channel::init_aux_function(const AUX_FUNC ch_option, const AuxSwitchPos // the following functions do not need to be initialised: case AUX_FUNC::ARMDISARM: case AUX_FUNC::ARMDISARM_AIRMODE: +#if AP_BATTERY_ENABLED case AUX_FUNC::BATTERY_MPPT_ENABLE: +#endif +#if AP_CAMERA_ENABLED case AUX_FUNC::CAMERA_TRIGGER: +#endif case AUX_FUNC::CLEAR_WP: case AUX_FUNC::COMPASS_LEARN: case AUX_FUNC::DISARM: case AUX_FUNC::DO_NOTHING: +#if AP_LANDINGGEAR_ENABLED case AUX_FUNC::LANDING_GEAR: +#endif case AUX_FUNC::LOST_VEHICLE_SOUND: +#if AP_SERVORELAYEVENTS_ENABLED && AP_RELAY_ENABLED case AUX_FUNC::RELAY: case AUX_FUNC::RELAY2: case AUX_FUNC::RELAY3: case AUX_FUNC::RELAY4: case AUX_FUNC::RELAY5: case AUX_FUNC::RELAY6: +#endif +#if HAL_VISUALODOM_ENABLED case AUX_FUNC::VISODOM_ALIGN: +#endif case AUX_FUNC::EKF_LANE_SWITCH: case AUX_FUNC::EKF_YAW_RESET: +#if HAL_GENERATOR_ENABLED case AUX_FUNC::GENERATOR: // don't turn generator on or off initially +#endif case AUX_FUNC::EKF_POS_SOURCE: +#if HAL_TORQEEDO_ENABLED case AUX_FUNC::TORQEEDO_CLEAR_ERR: +#endif +#if AP_SCRIPTING_ENABLED case AUX_FUNC::SCRIPTING_1: case AUX_FUNC::SCRIPTING_2: case AUX_FUNC::SCRIPTING_3: @@ -654,21 +669,30 @@ void RC_Channel::init_aux_function(const AUX_FUNC ch_option, const AuxSwitchPos case AUX_FUNC::SCRIPTING_6: case AUX_FUNC::SCRIPTING_7: case AUX_FUNC::SCRIPTING_8: +#endif #if AP_VIDEOTX_ENABLED case AUX_FUNC::VTX_POWER: #endif +#if AP_OPTICALFLOW_CALIBRATOR_ENABLED case AUX_FUNC::OPTFLOW_CAL: +#endif case AUX_FUNC::TURBINE_START: +#if HAL_MOUNT_ENABLED case AUX_FUNC::MOUNT1_ROLL: case AUX_FUNC::MOUNT1_PITCH: case AUX_FUNC::MOUNT1_YAW: case AUX_FUNC::MOUNT2_ROLL: case AUX_FUNC::MOUNT2_PITCH: case AUX_FUNC::MOUNT2_YAW: +#endif case AUX_FUNC::LOWEHEISER_STARTER: case AUX_FUNC::MAG_CAL: +#if AP_CAMERA_ENABLED case AUX_FUNC::CAMERA_IMAGE_TRACKING: +#endif +#if HAL_MOUNT_ENABLED case AUX_FUNC::MOUNT_LRF_ENABLE: +#endif break; // not really aux functions: @@ -678,9 +702,13 @@ void RC_Channel::init_aux_function(const AUX_FUNC ch_option, const AuxSwitchPos case AUX_FUNC::AVOID_ADSB: #endif case AUX_FUNC::AVOID_PROXIMITY: +#if AP_FENCE_ENABLED case AUX_FUNC::FENCE: +#endif +#if AP_GPS_ENABLED case AUX_FUNC::GPS_DISABLE: case AUX_FUNC::GPS_DISABLE_YAW: +#endif #if AP_GRIPPER_ENABLED case AUX_FUNC::GRIPPER: #endif @@ -692,22 +720,30 @@ void RC_Channel::init_aux_function(const AUX_FUNC ch_option, const AuxSwitchPos case AUX_FUNC::MISSION_RESET: case AUX_FUNC::MOTOR_ESTOP: case AUX_FUNC::RC_OVERRIDE_ENABLE: +#if HAL_RUNCAM_ENABLED case AUX_FUNC::RUNCAM_CONTROL: case AUX_FUNC::RUNCAM_OSD_CONTROL: +#endif +#if HAL_SPRAYER_ENABLED case AUX_FUNC::SPRAYER: +#endif case AUX_FUNC::DISABLE_AIRSPEED_USE: case AUX_FUNC::FFT_NOTCH_TUNE: #if HAL_MOUNT_ENABLED case AUX_FUNC::RETRACT_MOUNT1: case AUX_FUNC::MOUNT_LOCK: #endif +#if HAL_LOGGING_ENABLED case AUX_FUNC::LOG_PAUSE: +#endif case AUX_FUNC::ARM_EMERGENCY_STOP: +#if AP_CAMERA_ENABLED case AUX_FUNC::CAMERA_REC_VIDEO: case AUX_FUNC::CAMERA_ZOOM: case AUX_FUNC::CAMERA_MANUAL_FOCUS: case AUX_FUNC::CAMERA_AUTO_FOCUS: case AUX_FUNC::CAMERA_LENS: +#endif case AUX_FUNC::AHRS_TYPE: run_aux_function(ch_option, ch_flag, AuxFuncTriggerSource::INIT); break; @@ -1049,9 +1085,9 @@ bool RC_Channel::do_aux_function_camera_lens(const AuxSwitchPos ch_flag) } #endif // AP_CAMERA_ENABLED +#if HAL_RUNCAM_ENABLED void RC_Channel::do_aux_function_runcam_control(const AuxSwitchPos ch_flag) { -#if HAL_RUNCAM_ENABLED AP_RunCam *runcam = AP::runcam(); if (runcam == nullptr) { return; @@ -1068,12 +1104,10 @@ void RC_Channel::do_aux_function_runcam_control(const AuxSwitchPos ch_flag) runcam->stop_recording(); break; } -#endif } void RC_Channel::do_aux_function_runcam_osd_control(const AuxSwitchPos ch_flag) { -#if HAL_RUNCAM_ENABLED AP_RunCam *runcam = AP::runcam(); if (runcam == nullptr) { return; @@ -1088,8 +1122,8 @@ void RC_Channel::do_aux_function_runcam_osd_control(const AuxSwitchPos ch_flag) runcam->exit_osd(); break; } -#endif } +#endif #if AP_FENCE_ENABLED // enable or disable the fence @@ -1328,6 +1362,7 @@ bool RC_Channel::do_aux_function(const AUX_FUNC ch_option, const AuxSwitchPos ch break; #endif // AP_SERVORELAYEVENTS_ENABLED && AP_RELAY_ENABLED +#if HAL_RUNCAM_ENABLED case AUX_FUNC::RUNCAM_CONTROL: do_aux_function_runcam_control(ch_flag); break; @@ -1335,6 +1370,7 @@ bool RC_Channel::do_aux_function(const AUX_FUNC ch_option, const AuxSwitchPos ch case AUX_FUNC::RUNCAM_OSD_CONTROL: do_aux_function_runcam_osd_control(ch_flag); break; +#endif case AUX_FUNC::CLEAR_WP: do_aux_function_clear_wp(ch_flag); @@ -1415,6 +1451,7 @@ bool RC_Channel::do_aux_function(const AUX_FUNC ch_option, const AuxSwitchPos ch } #endif +#if AP_GPS_ENABLED case AUX_FUNC::GPS_DISABLE: AP::gps().force_disable(ch_flag == AuxSwitchPos::HIGH); #if HAL_EXTERNAL_AHRS_ENABLED @@ -1425,6 +1462,7 @@ bool RC_Channel::do_aux_function(const AUX_FUNC ch_option, const AuxSwitchPos ch case AUX_FUNC::GPS_DISABLE_YAW: AP::gps().set_force_disable_yaw(ch_flag == AuxSwitchPos::HIGH); break; +#endif // AP_GPS_ENABLED #if AP_AIRSPEED_ENABLED case AUX_FUNC::DISABLE_AIRSPEED_USE: {