diff --git a/src/drivers/drv_pwm_output.h b/src/drivers/drv_pwm_output.h index e8c6685691..8b46e9ccc8 100644 --- a/src/drivers/drv_pwm_output.h +++ b/src/drivers/drv_pwm_output.h @@ -170,9 +170,6 @@ typedef uint16_t servo_position_t; /** start DSM bind */ #define DSM_BIND_START _PX4_IOC(_PWM_SERVO_BASE, 10) -/** set the PWM value for failsafe */ -#define PWM_SERVO_SET_FAILSAFE_PWM _PX4_IOC(_PWM_SERVO_BASE, 12) - /** get the PWM value for failsafe */ #define PWM_SERVO_GET_FAILSAFE_PWM _PX4_IOC(_PWM_SERVO_BASE, 13) diff --git a/src/drivers/pwm_out/PWMOut.cpp b/src/drivers/pwm_out/PWMOut.cpp index 1491d9831b..dde11c17f0 100644 --- a/src/drivers/pwm_out/PWMOut.cpp +++ b/src/drivers/pwm_out/PWMOut.cpp @@ -750,40 +750,6 @@ int PWMOut::pwm_ioctl(device::file_t *filp, int cmd, unsigned long arg) *(uint32_t *)arg = _pwm_alt_rate_channels; break; - case PWM_SERVO_SET_FAILSAFE_PWM: { - struct pwm_output_values *pwm = (struct pwm_output_values *)arg; - - /* discard if too many values are sent */ - if (pwm->channel_count > FMU_MAX_ACTUATORS || _mixing_output.useDynamicMixing()) { - ret = -EINVAL; - break; - } - - for (unsigned i = 0; i < pwm->channel_count; i++) { - if (pwm->values[i] == 0) { - /* ignore 0 */ - } else if (pwm->values[i] > PWM_HIGHEST_MAX) { - _mixing_output.failsafeValue(i) = PWM_HIGHEST_MAX; - - } - -#if PWM_LOWEST_MIN > 0 - - else if (pwm->values[i] < PWM_LOWEST_MIN) { - _mixing_output.failsafeValue(i) = PWM_LOWEST_MIN; - - } - -#endif - - else { - _mixing_output.failsafeValue(i) = pwm->values[i]; - } - } - - break; - } - case PWM_SERVO_GET_FAILSAFE_PWM: { struct pwm_output_values *pwm = (struct pwm_output_values *)arg; diff --git a/src/drivers/px4io/px4io.cpp b/src/drivers/px4io/px4io.cpp index 2b7673beba..57d3247e5c 100644 --- a/src/drivers/px4io/px4io.cpp +++ b/src/drivers/px4io/px4io.cpp @@ -1652,27 +1652,6 @@ int PX4IO::ioctl(file *filep, int cmd, unsigned long arg) *(unsigned *)arg = io_reg_get(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_PWM_RATES); break; - case PWM_SERVO_SET_FAILSAFE_PWM: { - PX4_DEBUG("PWM_SERVO_SET_FAILSAFE_PWM"); - struct pwm_output_values *pwm = (struct pwm_output_values *)arg; - - if (pwm->channel_count > _max_actuators) - /* fail with error */ - { - return -E2BIG; - } - - for (unsigned i = 0; i < pwm->channel_count; i++) { - if (pwm->values[i] != 0 && !_mixing_output.useDynamicMixing()) { - _mixing_output.failsafeValue(i) = math::constrain(pwm->values[i], (uint16_t)PWM_LOWEST_MIN, (uint16_t)PWM_HIGHEST_MAX); - } - } - - updateFailsafe(); - - break; - } - case PWM_SERVO_GET_FAILSAFE_PWM: { PX4_DEBUG("PWM_SERVO_GET_FAILSAFE_PWM"); struct pwm_output_values *pwm = (struct pwm_output_values *)arg; diff --git a/src/systemcmds/pwm/pwm.cpp b/src/systemcmds/pwm/pwm.cpp index 60a41d2d99..32e01700de 100644 --- a/src/systemcmds/pwm/pwm.cpp +++ b/src/systemcmds/pwm/pwm.cpp @@ -128,7 +128,6 @@ $ pwm test -c 13 -p 1200 PRINT_MODULE_USAGE_COMMAND_DESCR("oneshot", "Configure Oneshot125 (rate is set to 0)"); - PRINT_MODULE_USAGE_COMMAND_DESCR("failsafe", "Set Failsafe PWM value"); PRINT_MODULE_USAGE_COMMAND_DESCR("disarmed", "Set Disarmed PWM value"); PRINT_MODULE_USAGE_COMMAND_DESCR("min", "Set Minimum PWM value"); PRINT_MODULE_USAGE_COMMAND_DESCR("max", "Set Maximum PWM value"); @@ -137,10 +136,10 @@ $ pwm test -c 13 -p 1200 PRINT_MODULE_USAGE_COMMAND_DESCR("steps", "Run 5 steps from 0 to 100%"); - PRINT_MODULE_USAGE_PARAM_COMMENT("The commands 'failsafe', 'disarmed', 'min', 'max' and 'test' require a PWM value:"); + PRINT_MODULE_USAGE_PARAM_COMMENT("The commands 'disarmed', 'min', 'max' and 'test' require a PWM value:"); PRINT_MODULE_USAGE_PARAM_INT('p', -1, 0, 4000, "PWM value (eg. 1100)", false); - PRINT_MODULE_USAGE_PARAM_COMMENT("The commands 'rate', 'oneshot', 'failsafe', 'disarmed', 'min', 'max', 'test' and 'steps' " + PRINT_MODULE_USAGE_PARAM_COMMENT("The commands 'rate', 'oneshot', 'disarmed', 'min', 'max', 'test' and 'steps' " "additionally require to specify the channels with one of the following commands:"); PRINT_MODULE_USAGE_PARAM_STRING('c', nullptr, nullptr, "select channels in the form: 1234 (1 digit per channel, 1=first)", true); @@ -559,60 +558,6 @@ pwm_main(int argc, char *argv[]) return 0; - } else if (!strcmp(command, "failsafe")) { - - if (set_mask == 0) { - usage("no channels set"); - return 1; - } - - if (pwm_value < 0) { - return 0; - } - - if (pwm_value == 0) { - usage("failsafe: no PWM provided"); - return 1; - } - - struct pwm_output_values pwm_values {}; - - pwm_values.channel_count = servo_count; - - /* first get current state before modifying it */ - ret = px4_ioctl(fd, PWM_SERVO_GET_FAILSAFE_PWM, (long unsigned int)&pwm_values); - - if (ret != OK) { - PX4_ERR("failed get failsafe values"); - return 1; - } - - for (unsigned i = 0; i < servo_count; i++) { - if (set_mask & 1 << i) { - pwm_values.values[i] = pwm_value; - - if (print_verbose) { - PX4_INFO("Channel %d: failsafe PWM: %d", i + 1, pwm_value); - } - } - } - - if (pwm_values.channel_count == 0) { - usage("failsafe: no PWM channels"); - return 1; - - } else { - - ret = px4_ioctl(fd, PWM_SERVO_SET_FAILSAFE_PWM, (long unsigned int)&pwm_values); - - if (ret != OK) { - PX4_ERR("BAD input VAL"); - return 1; - } - } - - return 0; - } else if (!strcmp(command, "test")) { if (set_mask == 0) {