From 25488da944a44d7ecd9e047758babc04177c1bae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Igor=20Mi=C5=A1i=C4=87?= Date: Mon, 30 May 2022 14:44:13 +0200 Subject: [PATCH] px4io: replace safety_off state with safety button event (#19558) internal PX4IO safety_off state is removed and replaced with a normal safety button event. From this 'commit' commander is taking care of the PX4IO safety. --- .../extras/cubepilot_io-v2_default.bin | Bin 39728 -> 39696 bytes .../extras/cubepilot_io-v2_default.bin | Bin 39728 -> 39696 bytes .../durandal-v1/extras/px4_io-v2_default.bin | Bin 39952 -> 39916 bytes .../pix32v5/extras/px4_io-v2_default.bin | Bin 39952 -> 39916 bytes .../mro/x21-777/extras/px4_io-v2_default.bin | Bin 39952 -> 39916 bytes .../px4/fmu-v2/extras/px4_io-v2_default.bin | Bin 39952 -> 39916 bytes .../px4/fmu-v3/extras/px4_io-v2_default.bin | Bin 39952 -> 39916 bytes .../fmu-v4pro/extras/px4_io-v2_default.bin | Bin 39952 -> 39916 bytes .../px4/fmu-v5/extras/px4_io-v2_default.bin | Bin 39952 -> 39916 bytes .../px4/fmu-v5x/extras/px4_io-v2_default.bin | Bin 39952 -> 39916 bytes .../px4/fmu-v6c/extras/px4_io-v2_default.bin | Bin 39952 -> 39916 bytes .../px4/fmu-v6x/extras/px4_io-v2_default.bin | Bin 39952 -> 39916 bytes msg/px4io_status.msg | 2 +- src/drivers/drv_pwm_output.h | 6 - src/drivers/pca9685_pwm_out/main.cpp | 2 - src/drivers/pwm_out/PWMOut.cpp | 2 - src/drivers/px4io/px4io.cpp | 134 ++++-------------- src/drivers/uavcan/uavcan_main.cpp | 2 - src/modules/commander/commander_params.c | 2 +- src/modules/commander/esc_calibration.cpp | 10 -- src/modules/px4iofirmware/CMakeLists.txt | 2 +- src/modules/px4iofirmware/mixer.cpp | 6 +- src/modules/px4iofirmware/protocol.h | 13 +- src/modules/px4iofirmware/px4io.cpp | 10 +- src/modules/px4iofirmware/px4io.h | 6 +- src/modules/px4iofirmware/registers.c | 21 +-- .../{safety.cpp => safety_button.cpp} | 43 ++---- 27 files changed, 68 insertions(+), 193 deletions(-) rename src/modules/px4iofirmware/{safety.cpp => safety_button.cpp} (79%) diff --git a/boards/cubepilot/cubeorange/extras/cubepilot_io-v2_default.bin b/boards/cubepilot/cubeorange/extras/cubepilot_io-v2_default.bin index fc9066700fbd65dc8c497a04666ced228cbc4148..b91f26a198dc0927a3d349e26f173d0aaaa4c98a 100755 GIT binary patch delta 4270 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 HO;7wc2V3tj delta 4511 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 diff --git a/boards/holybro/pix32v5/extras/px4_io-v2_default.bin b/boards/holybro/pix32v5/extras/px4_io-v2_default.bin index 25a00e2357d781ece9c0d41447c3f4a52c6d19f6..36128d00f42697f28ae38b7b455d50b12cf06998 100755 GIT binary patch delta 4421 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 HO;7wc2V3tj delta 4511 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 diff --git a/boards/mro/x21-777/extras/px4_io-v2_default.bin b/boards/mro/x21-777/extras/px4_io-v2_default.bin index 25a00e2357d781ece9c0d41447c3f4a52c6d19f6..36128d00f42697f28ae38b7b455d50b12cf06998 100755 GIT binary patch delta 4421 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 HO;7wc2V3tj delta 4511 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 diff --git a/boards/px4/fmu-v2/extras/px4_io-v2_default.bin b/boards/px4/fmu-v2/extras/px4_io-v2_default.bin index 25a00e2357d781ece9c0d41447c3f4a52c6d19f6..36128d00f42697f28ae38b7b455d50b12cf06998 100755 GIT binary patch delta 4421 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 HO;7wc2V3tj delta 4511 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 diff --git a/boards/px4/fmu-v3/extras/px4_io-v2_default.bin b/boards/px4/fmu-v3/extras/px4_io-v2_default.bin index 25a00e2357d781ece9c0d41447c3f4a52c6d19f6..36128d00f42697f28ae38b7b455d50b12cf06998 100755 GIT binary patch delta 4421 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 HO;7wc2V3tj delta 4511 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 diff --git a/boards/px4/fmu-v4pro/extras/px4_io-v2_default.bin b/boards/px4/fmu-v4pro/extras/px4_io-v2_default.bin index 25a00e2357d781ece9c0d41447c3f4a52c6d19f6..36128d00f42697f28ae38b7b455d50b12cf06998 100755 GIT binary patch delta 4421 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 HO;7wc2V3tj delta 4511 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 diff --git a/boards/px4/fmu-v5/extras/px4_io-v2_default.bin b/boards/px4/fmu-v5/extras/px4_io-v2_default.bin index 25a00e2357d781ece9c0d41447c3f4a52c6d19f6..36128d00f42697f28ae38b7b455d50b12cf06998 100755 GIT binary patch delta 4421 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 HO;7wc2V3tj delta 4511 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 diff --git a/boards/px4/fmu-v5x/extras/px4_io-v2_default.bin b/boards/px4/fmu-v5x/extras/px4_io-v2_default.bin index 25a00e2357d781ece9c0d41447c3f4a52c6d19f6..36128d00f42697f28ae38b7b455d50b12cf06998 100755 GIT binary patch delta 4421 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 HO;7wc2V3tj delta 4511 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 diff --git a/boards/px4/fmu-v6c/extras/px4_io-v2_default.bin b/boards/px4/fmu-v6c/extras/px4_io-v2_default.bin index 25a00e2357d781ece9c0d41447c3f4a52c6d19f6..36128d00f42697f28ae38b7b455d50b12cf06998 100755 GIT binary patch delta 4421 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 HO;7wc2V3tj delta 4511 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 diff --git a/boards/px4/fmu-v6x/extras/px4_io-v2_default.bin b/boards/px4/fmu-v6x/extras/px4_io-v2_default.bin index 25a00e2357d781ece9c0d41447c3f4a52c6d19f6..36128d00f42697f28ae38b7b455d50b12cf06998 100755 GIT binary patch delta 4421 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 HO;7wc2V3tj delta 4511 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 diff --git a/msg/px4io_status.msg b/msg/px4io_status.msg index df072e71c2..295c8fba66 100644 --- a/msg/px4io_status.msg +++ b/msg/px4io_status.msg @@ -19,7 +19,7 @@ bool status_rc_ppm bool status_rc_sbus bool status_rc_st24 bool status_rc_sumd -bool status_safety_off +bool status_safety_button_event # px4io safety button was pressed for longer than 1 second # PX4IO alarms (PX4IO_P_STATUS_ALARMS) bool alarm_pwm_error diff --git a/src/drivers/drv_pwm_output.h b/src/drivers/drv_pwm_output.h index 87fc629f6f..43721f9cb0 100644 --- a/src/drivers/drv_pwm_output.h +++ b/src/drivers/drv_pwm_output.h @@ -188,12 +188,6 @@ typedef uint16_t servo_position_t; /** get the maximum PWM value the output will send */ #define PWM_SERVO_GET_MAX_PWM _PX4_IOC(_PWM_SERVO_BASE, 19) -/** force safety switch off (to disable use of safety switch) */ -#define PWM_SERVO_SET_FORCE_SAFETY_OFF _PX4_IOC(_PWM_SERVO_BASE, 25) - -/** force safety switch on (to enable use of safety switch) */ -#define PWM_SERVO_SET_FORCE_SAFETY_ON _PX4_IOC(_PWM_SERVO_BASE, 28) - /* * * diff --git a/src/drivers/pca9685_pwm_out/main.cpp b/src/drivers/pca9685_pwm_out/main.cpp index 7e230fc567..c748d526e7 100644 --- a/src/drivers/pca9685_pwm_out/main.cpp +++ b/src/drivers/pca9685_pwm_out/main.cpp @@ -492,9 +492,7 @@ int PCA9685Wrapper::ioctl(cdev::file_t *filep, int cmd, unsigned long arg) break; case PWM_SERVO_SET_ARM_OK: - case PWM_SERVO_SET_FORCE_SAFETY_OFF: case PWM_SERVO_CLEAR_ARM_OK: - case PWM_SERVO_SET_FORCE_SAFETY_ON: case PWM_SERVO_ARM: case PWM_SERVO_DISARM: break; diff --git a/src/drivers/pwm_out/PWMOut.cpp b/src/drivers/pwm_out/PWMOut.cpp index 25b94c70d5..f32f579597 100644 --- a/src/drivers/pwm_out/PWMOut.cpp +++ b/src/drivers/pwm_out/PWMOut.cpp @@ -717,8 +717,6 @@ int PWMOut::pwm_ioctl(device::file_t *filp, int cmd, unsigned long arg) case PWM_SERVO_SET_ARM_OK: case PWM_SERVO_CLEAR_ARM_OK: - case PWM_SERVO_SET_FORCE_SAFETY_OFF: - case PWM_SERVO_SET_FORCE_SAFETY_ON: break; case PWM_SERVO_DISARM: diff --git a/src/drivers/px4io/px4io.cpp b/src/drivers/px4io/px4io.cpp index ceb34bc1cd..bfcb3227da 100644 --- a/src/drivers/px4io/px4io.cpp +++ b/src/drivers/px4io/px4io.cpp @@ -74,6 +74,7 @@ #include #include #include +#include #include #include @@ -196,7 +197,8 @@ private: uint16_t _last_written_arming_c{0}; ///< the last written arming state reg uORB::Subscription _t_actuator_armed{ORB_ID(actuator_armed)}; ///< system armed control topic - uORB::Subscription _t_vehicle_command{ORB_ID(vehicle_command)}; ///< vehicle command topic + uORB::Subscription _t_vehicle_command{ORB_ID(vehicle_command)}; ///< vehicle command topic + uORB::Subscription _t_vehicle_status{ORB_ID(vehicle_status)}; ///< vehicle status topic uORB::SubscriptionInterval _parameter_update_sub{ORB_ID(parameter_update), 1_s}; @@ -443,15 +445,14 @@ int PX4IO::init() // the startup script to be able to load a new IO // firmware - // If IO has already safety off it won't accept going into bootloader mode, - // therefore we need to set safety on first. - io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_FORCE_SAFETY_ON, PX4IO_FORCE_SAFETY_MAGIC); - // Now the reboot into bootloader mode should succeed. io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_REBOOT_BL, PX4IO_REBOOT_BL_MAGIC); return -1; } + /* Set safety_off to false when FMU boot*/ + io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_SAFETY_OFF, 0); + if (_max_rc_input > input_rc_s::RC_INPUT_MAX_CHANNELS) { _max_rc_input = input_rc_s::RC_INPUT_MAX_CHANNELS; } @@ -476,14 +477,6 @@ int PX4IO::init() return ret; } - /* set safety to off if circuit breaker enabled */ - if (circuit_breaker_enabled("CBRK_IO_SAFETY", CBRK_IO_SAFETY_KEY)) { - io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_FORCE_SAFETY_OFF, PX4IO_FORCE_SAFETY_MAGIC); - - } else { - io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_FORCE_SAFETY_ON, PX4IO_FORCE_SAFETY_MAGIC); - } - /* try to claim the generic PWM output device node as well - it's OK if we fail at this */ if (_param_sys_hitl.get() <= 0 && _param_sys_use_io.get() == 1) { _class_instance = register_class_devname(PWM_OUTPUT_BASE_DEVICE_PATH); @@ -621,11 +614,6 @@ void PX4IO::Run() update_params(); - /* Check if the IO safety circuit breaker has been updated */ - bool circuit_breaker_io_safety_enabled = circuit_breaker_enabled("CBRK_IO_SAFETY", CBRK_IO_SAFETY_KEY); - /* Bypass IO safety switch logic by setting FORCE_SAFETY_OFF */ - io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_FORCE_SAFETY_OFF, circuit_breaker_io_safety_enabled); - /* Check if the flight termination circuit breaker has been updated */ bool disable_flighttermination = circuit_breaker_enabled("CBRK_FLIGHTTERM", CBRK_FLIGHTTERM_KEY); /* Tell IO that it can terminate the flight if FMU is not responding or if a failure has been reported by the FailureDetector logic */ @@ -974,15 +962,12 @@ int PX4IO::io_handle_status(uint16_t status) */ /* check for IO reset - force it back to armed if necessary */ - if (_status & PX4IO_P_STATUS_FLAGS_SAFETY_OFF && !(status & PX4IO_P_STATUS_FLAGS_SAFETY_OFF) - && !(status & PX4IO_P_STATUS_FLAGS_ARM_SYNC)) { + if (!(status & PX4IO_P_STATUS_FLAGS_ARM_SYNC)) { /* set the arming flag */ - ret = io_reg_modify(PX4IO_PAGE_STATUS, PX4IO_P_STATUS_FLAGS, 0, - PX4IO_P_STATUS_FLAGS_SAFETY_OFF | PX4IO_P_STATUS_FLAGS_ARM_SYNC); + ret = io_reg_modify(PX4IO_PAGE_STATUS, PX4IO_P_STATUS_FLAGS, 0, PX4IO_P_STATUS_FLAGS_ARM_SYNC); /* set new status */ _status = status; - _status &= PX4IO_P_STATUS_FLAGS_SAFETY_OFF; } else if (!(_status & PX4IO_P_STATUS_FLAGS_ARM_SYNC)) { @@ -999,18 +984,26 @@ int PX4IO::io_handle_status(uint16_t status) } /** - * Get and handle the safety status + * Get and handle the safety button status */ - const bool safety_off = status & PX4IO_P_STATUS_FLAGS_SAFETY_OFF; + const bool safety_button_pressed = status & PX4IO_P_STATUS_FLAGS_SAFETY_BUTTON_EVENT; - /* px4io board will change safety_off from false to true and stay like that until the vehicle is rebooted - * where safety will change back to false. Here we are triggering the safety button event once. - * TODO: change px4io firmware to act on the event. This will enable the "force safety on disarming" feature. */ - if (_previous_safety_off != safety_off) { + if (safety_button_pressed) { + io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_SAFETY_BUTTON_ACK, 0); _button_publisher.safetyButtonTriggerEvent(); } - _previous_safety_off = safety_off; + /** + * Inform PX4IO board about safety_off state for LED control + */ + vehicle_status_s vehicle_status; + + if (_t_vehicle_status.update(&vehicle_status)) { + if (_previous_safety_off != vehicle_status.safety_off) { + io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_SAFETY_OFF, vehicle_status.safety_off); + _previous_safety_off = vehicle_status.safety_off; + } + } return ret; } @@ -1033,37 +1026,17 @@ int PX4IO::dsm_bind_ioctl(int dsmMode) return -EINVAL; } - // Check if safety was off - bool safety_off = (_status & PX4IO_P_STATUS_FLAGS_SAFETY_OFF); - int ret = -1; - - // Put safety on - if (safety_off) { - // re-enable safety - ret = io_reg_modify(PX4IO_PAGE_STATUS, PX4IO_P_STATUS_FLAGS, PX4IO_P_STATUS_FLAGS_SAFETY_OFF, 0); - - // set new status - _status &= ~(PX4IO_P_STATUS_FLAGS_SAFETY_OFF); - } - PX4_INFO("Binding DSM%s RX", (dsmMode == DSM2_BIND_PULSES) ? "2" : ((dsmMode == DSMX_BIND_PULSES) ? "-X" : "-X8")); - io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_power_down); + int ret = OK; + ret |= io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_power_down); px4_usleep(500000); - io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_set_rx_out); - io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_power_up); + ret |= io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_set_rx_out); + ret |= io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_power_up); px4_usleep(72000); - io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_send_pulses | (dsmMode << 4)); + ret |= io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_send_pulses | (dsmMode << 4)); px4_usleep(50000); - io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_reinit_uart); - ret = OK; - - // Put safety back off - if (safety_off) { - ret = io_reg_modify(PX4IO_PAGE_STATUS, PX4IO_P_STATUS_FLAGS, 0, - PX4IO_P_STATUS_FLAGS_SAFETY_OFF); - _status |= PX4IO_P_STATUS_FLAGS_SAFETY_OFF; - } + ret |= io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_reinit_uart); if (ret != OK) { PX4_INFO("Binding DSM failed"); @@ -1133,7 +1106,7 @@ int PX4IO::io_get_status() status.status_arm_sync = STATUS_FLAGS & PX4IO_P_STATUS_FLAGS_ARM_SYNC; status.status_init_ok = STATUS_FLAGS & PX4IO_P_STATUS_FLAGS_INIT_OK; status.status_failsafe = STATUS_FLAGS & PX4IO_P_STATUS_FLAGS_FAILSAFE; - status.status_safety_off = STATUS_FLAGS & PX4IO_P_STATUS_FLAGS_SAFETY_OFF; + status.status_safety_button_event = STATUS_FLAGS & PX4IO_P_STATUS_FLAGS_SAFETY_BUTTON_EVENT; // PX4IO_P_STATUS_ALARMS status.alarm_rc_lost = STATUS_ALARMS & PX4IO_P_STATUS_ALARMS_RC_LOST; @@ -1644,18 +1617,6 @@ int PX4IO::ioctl(file *filep, int cmd, unsigned long arg) *(unsigned *)arg = _max_actuators; break; - case PWM_SERVO_SET_FORCE_SAFETY_OFF: - PX4_DEBUG("PWM_SERVO_SET_FORCE_SAFETY_OFF"); - /* force safety swith off */ - ret = io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_FORCE_SAFETY_OFF, PX4IO_FORCE_SAFETY_MAGIC); - break; - - case PWM_SERVO_SET_FORCE_SAFETY_ON: - PX4_DEBUG("PWM_SERVO_SET_FORCE_SAFETY_ON"); - /* force safety switch on */ - ret = io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_FORCE_SAFETY_ON, PX4IO_FORCE_SAFETY_MAGIC); - break; - case DSM_BIND_START: /* bind a DSM receiver */ ret = dsm_bind_ioctl(arg); @@ -1725,16 +1686,6 @@ int PX4IO::ioctl(file *filep, int cmd, unsigned long arg) } - // re-enable safety - ret = io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_FORCE_SAFETY_ON, PX4IO_FORCE_SAFETY_MAGIC); - - if (ret != PX4_OK) { - PX4_WARN("IO refused to re-enable safety"); - } - - // set new status - _status &= ~(PX4IO_P_STATUS_FLAGS_SAFETY_OFF); - /* reboot into bootloader - arg must be PX4IO_REBOOT_BL_MAGIC */ usleep(1); ret = io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_REBOOT_BL, arg); @@ -2058,29 +2009,6 @@ int PX4IO::custom_command(int argc, char *argv[]) return 1; } - - if (!strcmp(verb, "safety_off")) { - int ret = get_instance()->ioctl(NULL, PWM_SERVO_SET_FORCE_SAFETY_OFF, 0); - - if (ret != OK) { - PX4_ERR("failed to disable safety (%i)", ret); - return 1; - } - - return 0; - } - - if (!strcmp(verb, "safety_on")) { - int ret = get_instance()->ioctl(NULL, PWM_SERVO_SET_FORCE_SAFETY_ON, 0); - - if (ret != OK) { - PX4_ERR("failed to enable safety (%i)", ret); - return 1; - } - - return 0; - } - if (!strcmp(verb, "debug")) { if (argc <= 1) { PX4_ERR("usage: px4io debug LEVEL"); @@ -2162,8 +2090,6 @@ Output driver communicating with the IO co-processor. PRINT_MODULE_USAGE_ARG("", "Firmware file", false); PRINT_MODULE_USAGE_COMMAND_DESCR("update", "Update IO firmware"); PRINT_MODULE_USAGE_ARG("", "Firmware file", true); - PRINT_MODULE_USAGE_COMMAND_DESCR("safety_off", "Turn off safety (force)"); - PRINT_MODULE_USAGE_COMMAND_DESCR("safety_on", "Turn on safety (force)"); PRINT_MODULE_USAGE_COMMAND_DESCR("debug", "set IO debug level"); PRINT_MODULE_USAGE_ARG("", "0=disabled, 9=max verbosity", false); PRINT_MODULE_USAGE_COMMAND_DESCR("bind", "DSM bind"); diff --git a/src/drivers/uavcan/uavcan_main.cpp b/src/drivers/uavcan/uavcan_main.cpp index e1bfc231b0..cc87e8e070 100644 --- a/src/drivers/uavcan/uavcan_main.cpp +++ b/src/drivers/uavcan/uavcan_main.cpp @@ -951,8 +951,6 @@ UavcanNode::ioctl(file *filp, int cmd, unsigned long arg) switch (cmd) { case PWM_SERVO_SET_ARM_OK: case PWM_SERVO_CLEAR_ARM_OK: - case PWM_SERVO_SET_FORCE_SAFETY_OFF: - // these are no-ops, as no safety switch break; case MIXERIOCRESET: diff --git a/src/modules/commander/commander_params.c b/src/modules/commander/commander_params.c index f1bb34c84c..c22c489987 100644 --- a/src/modules/commander/commander_params.c +++ b/src/modules/commander/commander_params.c @@ -927,7 +927,7 @@ PARAM_DEFINE_INT32(COM_PREARM_MODE, 0); /** * Enable force safety * - * Force safety when the vehicle disarms. Not supported when safety button used over PX4IO board. + * Force safety when the vehicle disarms * * @boolean * @group Commander diff --git a/src/modules/commander/esc_calibration.cpp b/src/modules/commander/esc_calibration.cpp index 1f43cc6a4d..865017ac27 100644 --- a/src/modules/commander/esc_calibration.cpp +++ b/src/modules/commander/esc_calibration.cpp @@ -187,13 +187,6 @@ static int do_esc_calibration_ioctl(orb_advert_t *mavlink_log_pub) goto Out; } - /* tell IO to switch off safety without using the safety switch */ - if (px4_ioctl(fd, PWM_SERVO_SET_FORCE_SAFETY_OFF, 0) != PX4_OK) { - calibration_log_critical(mavlink_log_pub, CAL_QGC_FAILED_MSG, "Unable to force safety off"); - return_code = PX4_ERROR; - goto Out; - } - calibration_log_info(mavlink_log_pub, "[cal] Connect battery now"); timeout_start = hrt_absolute_time(); @@ -233,9 +226,6 @@ static int do_esc_calibration_ioctl(orb_advert_t *mavlink_log_pub) Out: if (fd != -1) { - if (px4_ioctl(fd, PWM_SERVO_SET_FORCE_SAFETY_ON, 0) != PX4_OK) { - calibration_log_info(mavlink_log_pub, CAL_QGC_FAILED_MSG, "Safety switch still off"); - } if (px4_ioctl(fd, PWM_SERVO_DISARM, 0) != PX4_OK) { calibration_log_info(mavlink_log_pub, CAL_QGC_FAILED_MSG, "Servos still armed"); diff --git a/src/modules/px4iofirmware/CMakeLists.txt b/src/modules/px4iofirmware/CMakeLists.txt index 6e4bcdee66..3df90ffdac 100644 --- a/src/modules/px4iofirmware/CMakeLists.txt +++ b/src/modules/px4iofirmware/CMakeLists.txt @@ -39,7 +39,7 @@ add_library(px4iofirmware mixer.cpp px4io.cpp registers.c - safety.cpp + safety_button.cpp serial.cpp ) diff --git a/src/modules/px4iofirmware/mixer.cpp b/src/modules/px4iofirmware/mixer.cpp index 2e0e5bb14f..9fc40dcbde 100644 --- a/src/modules/px4iofirmware/mixer.cpp +++ b/src/modules/px4iofirmware/mixer.cpp @@ -134,13 +134,11 @@ mixer_tick() * FMU or from the mixer. * */ - should_arm = (r_status_flags & PX4IO_P_STATUS_FLAGS_INIT_OK) /* IO initialised without error */ - && (r_status_flags & PX4IO_P_STATUS_FLAGS_SAFETY_OFF) /* and IO is armed */ + should_arm = (r_status_flags & PX4IO_P_STATUS_FLAGS_INIT_OK) /* IO initialised without error */ && (r_setup_arming & PX4IO_P_SETUP_ARMING_FMU_ARMED) /* and FMU is armed */ ; - should_arm_nothrottle = ((r_status_flags & PX4IO_P_STATUS_FLAGS_INIT_OK) /* IO initialised without error */ - && (r_status_flags & PX4IO_P_STATUS_FLAGS_SAFETY_OFF) /* and IO is armed */ + should_arm_nothrottle = ((r_status_flags & PX4IO_P_STATUS_FLAGS_INIT_OK) /* IO initialised without error */ && ((r_setup_arming & PX4IO_P_SETUP_ARMING_FMU_PREARMED) /* and FMU is prearmed */ || (r_status_flags & PX4IO_P_STATUS_FLAGS_RAW_PWM) /* or direct PWM is set */ )); diff --git a/src/modules/px4iofirmware/protocol.h b/src/modules/px4iofirmware/protocol.h index 73c82dae9d..a0389d78b4 100644 --- a/src/modules/px4iofirmware/protocol.h +++ b/src/modules/px4iofirmware/protocol.h @@ -1,6 +1,6 @@ /**************************************************************************** * - * Copyright (c) 2012-2017 PX4 Development Team. All rights reserved. + * Copyright (c) 2012-2022 PX4 Development Team. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -114,6 +114,7 @@ #define PX4IO_P_STATUS_FLAGS_FMU_INITIALIZED (1 << 11) /* FMU was initialized and OK once */ #define PX4IO_P_STATUS_FLAGS_RC_ST24 (1 << 12) /* ST24 input is valid */ #define PX4IO_P_STATUS_FLAGS_RC_SUMD (1 << 13) /* SUMD input is valid */ +#define PX4IO_P_STATUS_FLAGS_SAFETY_BUTTON_EVENT (1 << 14) /* px4io safety button was pressed for longer than 1 second */ #define PX4IO_P_STATUS_ALARMS 3 /* alarm flags - alarms latch, write 1 to a bit to clear it */ #define PX4IO_P_STATUS_ALARMS_RC_LOST (1 << 0) /* timed out waiting for RC input */ @@ -184,12 +185,8 @@ enum { /* DSM bind states */ #define PX4IO_P_SETUP_CRC 11 /* get CRC of IO firmware */ /* storage space of 12 occupied by CRC */ -#define PX4IO_P_SETUP_FORCE_SAFETY_OFF 12 /* force safety switch into - 'armed' (PWM enabled) state - this is a non-data write and - hence index 12 can safely be used. */ - -#define PX4IO_P_SETUP_FORCE_SAFETY_ON 14 /* force safety switch into 'disarmed' (PWM disabled state) */ -#define PX4IO_FORCE_SAFETY_MAGIC 22027 /* required argument for force safety (random) */ +#define PX4IO_P_SETUP_SAFETY_BUTTON_ACK 14 /**< ACK from FMU when it gets safety button pressed status */ +#define PX4IO_P_SETUP_SAFETY_OFF 15 /**< FMU inform PX4IO about safety_off for LED indication*/ #define PX4IO_P_SETUP_SBUS_RATE 16 /**< frame rate of SBUS1 output in Hz */ #define PX4IO_P_SETUP_THERMAL 17 /**< thermal management */ #define PX4IO_P_SETUP_ENABLE_FLIGHTTERMINATION 18 /**< flight termination; false if the circuit breaker (CBRK_FLIGHTTERM) is set */ @@ -212,7 +209,7 @@ enum { /* DSM bind states */ #define PX4IO_PAGE_TEST 127 #define PX4IO_P_TEST_LED 0 /**< set the amber LED on/off */ -/* PWM disarmed values that are active, even when SAFETY_SAFE */ +/* PWM disarmed values that are active */ #define PX4IO_PAGE_DISARMED_PWM 109 /* 0..CONFIG_ACTUATOR_COUNT-1 */ /** diff --git a/src/modules/px4iofirmware/px4io.cpp b/src/modules/px4iofirmware/px4io.cpp index 74f6637f46..69527d7bf2 100644 --- a/src/modules/px4iofirmware/px4io.cpp +++ b/src/modules/px4iofirmware/px4io.cpp @@ -154,8 +154,7 @@ show_debug_messages(void) static void update_mem_usage(void) { - if (/* IO armed */ (r_status_flags & PX4IO_P_STATUS_FLAGS_SAFETY_OFF) - /* and FMU is armed */ && (r_setup_arming & PX4IO_P_SETUP_ARMING_FMU_ARMED)) { + if (/* FMU is armed */ (r_setup_arming & PX4IO_P_SETUP_ARMING_FMU_ARMED)) { return; } @@ -183,8 +182,7 @@ ring_blink(void) { #if defined(LED_GREEN) - if (/* IO armed */ (r_status_flags & PX4IO_P_STATUS_FLAGS_SAFETY_OFF) - /* and FMU is armed */ && (r_setup_arming & PX4IO_P_SETUP_ARMING_FMU_ARMED)) { + if (/* FMU is armed */ (r_setup_arming & PX4IO_P_SETUP_ARMING_FMU_ARMED)) { LED_GREEN(true); return; } @@ -314,8 +312,8 @@ extern "C" __EXPORT int user_start(int argc, char *argv[]) ENABLE_SBUS_OUT(false); #endif - /* start the safety switch handler */ - safety_init(); + /* start the safety button handler */ + safety_button_init(); /* initialise the control inputs */ controls_init(); diff --git a/src/modules/px4iofirmware/px4io.h b/src/modules/px4iofirmware/px4io.h index c8872c8aa0..99cba83e67 100644 --- a/src/modules/px4iofirmware/px4io.h +++ b/src/modules/px4iofirmware/px4io.h @@ -131,8 +131,6 @@ extern struct sys_state_s system_state; # define ADC_VSERVO 4 # define ADC_RSSI 5 -#define BUTTON_SAFETY px4_arch_gpioread(GPIO_BTN_SAFETY) - #define PX4_CRITICAL_SECTION(cmd) { irqstate_t flags = px4_enter_critical_section(); cmd; px4_leave_critical_section(flags); } void atomic_modify_or(volatile uint16_t *target, uint16_t modification); @@ -145,9 +143,9 @@ void atomic_modify_and(volatile uint16_t *target, uint16_t modification); extern void mixer_tick(void); /** - * Safety switch/LED. + * Safety button/LED. */ -extern void safety_init(void); +extern void safety_button_init(void); extern void failsafe_led_init(void); /** diff --git a/src/modules/px4iofirmware/registers.c b/src/modules/px4iofirmware/registers.c index dfe0a6f8ec..a191577ef3 100644 --- a/src/modules/px4iofirmware/registers.c +++ b/src/modules/px4iofirmware/registers.c @@ -413,10 +413,6 @@ registers_set_one(uint8_t page, uint8_t offset, uint16_t value) break; case PX4IO_P_SETUP_REBOOT_BL: - if (r_status_flags & PX4IO_P_STATUS_FLAGS_SAFETY_OFF) { - // don't allow reboot while armed - break; - } // check the magic value if (value != PX4IO_REBOOT_BL_MAGIC) { @@ -433,22 +429,19 @@ registers_set_one(uint8_t page, uint8_t offset, uint16_t value) dsm_bind(value & 0x0f, (value >> 4) & 0xF); break; - case PX4IO_P_SETUP_FORCE_SAFETY_ON: - if (value == PX4IO_FORCE_SAFETY_MAGIC) { - r_status_flags &= ~PX4IO_P_STATUS_FLAGS_SAFETY_OFF; - - } else { - return -1; - } + case PX4IO_P_SETUP_SAFETY_BUTTON_ACK: + // clear safety button pressed flag so it can be used again + r_status_flags &= ~PX4IO_P_STATUS_FLAGS_SAFETY_BUTTON_EVENT; break; - case PX4IO_P_SETUP_FORCE_SAFETY_OFF: - if (value == PX4IO_FORCE_SAFETY_MAGIC) { + case PX4IO_P_SETUP_SAFETY_OFF: + + if (value) { r_status_flags |= PX4IO_P_STATUS_FLAGS_SAFETY_OFF; } else { - return -1; + r_status_flags &= ~PX4IO_P_STATUS_FLAGS_SAFETY_OFF; } break; diff --git a/src/modules/px4iofirmware/safety.cpp b/src/modules/px4iofirmware/safety_button.cpp similarity index 79% rename from src/modules/px4iofirmware/safety.cpp rename to src/modules/px4iofirmware/safety_button.cpp index 1a5eedb7d7..6d4672d5f2 100644 --- a/src/modules/px4iofirmware/safety.cpp +++ b/src/modules/px4iofirmware/safety_button.cpp @@ -32,7 +32,7 @@ ****************************************************************************/ /** - * @file safety.cpp + * @file safety_button.cpp * Safety button logic. * * @author Lorenz Meier @@ -46,7 +46,7 @@ #include "px4io.h" -static struct hrt_call arming_call; +static struct hrt_call safety_button_call; static struct hrt_call failsafe_call; /* @@ -59,30 +59,23 @@ static unsigned counter = 0; * Define the various LED flash sequences for each system state. */ #define LED_PATTERN_FMU_OK_TO_ARM 0x0003 /**< slow blinking */ -#define LED_PATTERN_FMU_REFUSE_TO_ARM 0x5555 /**< fast blinking */ +#define LED_PATTERN_FMU_REFUSE_TO_ARM 0x5555 /**< fast blinking */ #define LED_PATTERN_IO_ARMED 0x5050 /**< long off, then double blink */ #define LED_PATTERN_FMU_ARMED 0x5500 /**< long off, then quad blink */ #define LED_PATTERN_IO_FMU_ARMED 0xffff /**< constantly on */ static unsigned blink_counter = 0; -/* - * IMPORTANT: The arming state machine critically - * depends on using the same threshold - * for arming and disarming. Since disarming - * is quite deadly for the system, a similar - * length can be justified. - */ -#define ARM_COUNTER_THRESHOLD 10 +#define SAFETY_SWITCH_THRESHOLD 10 -static void safety_check_button(void *arg); +static void safety_button_check(void *arg); static void failsafe_blink(void *arg); void -safety_init(void) +safety_button_init(void) { /* arrange for the button handler to be called at 10Hz */ - hrt_call_every(&arming_call, 1000, 100000, safety_check_button, NULL); + hrt_call_every(&safety_button_call, 1000, 100000, safety_button_check, NULL); } void @@ -93,26 +86,20 @@ failsafe_led_init(void) } static void -safety_check_button(void *arg) +safety_button_check(void *arg) { - const bool safety_button_pressed = BUTTON_SAFETY; + const bool safety_button_pressed = px4_arch_gpioread(GPIO_BTN_SAFETY); - /* Keep safety button pressed for one second to turn off safety - * - * Note that safety cannot be turned on again by button because a button - * hardware problem could accidentally disable it in flight. + /* Keep safety button pressed for one second to trigger safety button event. + * The logic to prevent turning on safety again is in the commander. */ - if (safety_button_pressed && !(r_status_flags & PX4IO_P_STATUS_FLAGS_SAFETY_OFF) && - (r_setup_arming & PX4IO_P_SETUP_ARMING_IO_ARM_OK)) { - if (counter <= ARM_COUNTER_THRESHOLD) { - counter++; + if (safety_button_pressed && !(r_status_flags & PX4IO_P_STATUS_FLAGS_SAFETY_BUTTON_EVENT)) { - } + counter++; - if (counter == ARM_COUNTER_THRESHOLD) { - // switch safety off -> ready to arm state - atomic_modify_or(&r_status_flags, PX4IO_P_STATUS_FLAGS_SAFETY_OFF); + if (counter >= SAFETY_SWITCH_THRESHOLD) { + atomic_modify_or(&r_status_flags, PX4IO_P_STATUS_FLAGS_SAFETY_BUTTON_EVENT); } } else {