mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-21 10:23:35 +08:00
Replace arm_request and mode_request with combined action_request
Which saves flash space, log size and is extensible to handle e.g. the VTOL transition and future actions.
This commit is contained in:
@@ -2449,26 +2449,26 @@ Commander::run()
|
||||
}
|
||||
}
|
||||
|
||||
while (_arm_request_sub.updated()) {
|
||||
arm_request_s arm_request;
|
||||
while (_action_request_sub.updated()) {
|
||||
action_request_s action_request;
|
||||
|
||||
if (_arm_request_sub.copy(&arm_request)) {
|
||||
if (_action_request_sub.copy(&action_request)) {
|
||||
arm_disarm_reason_t arm_disarm_reason{};
|
||||
|
||||
switch (arm_request.source) {
|
||||
case arm_request_s::SOURCE_RC_STICK_GESTURE: arm_disarm_reason = arm_disarm_reason_t::rc_stick; break;
|
||||
switch (action_request.source) {
|
||||
case action_request_s::SOURCE_RC_STICK_GESTURE: arm_disarm_reason = arm_disarm_reason_t::rc_stick; break;
|
||||
|
||||
case arm_request_s::SOURCE_RC_SWITCH: arm_disarm_reason = arm_disarm_reason_t::rc_switch; break;
|
||||
case action_request_s::SOURCE_RC_SWITCH: arm_disarm_reason = arm_disarm_reason_t::rc_switch; break;
|
||||
|
||||
case arm_request_s::SOURCE_RC_BUTTON: arm_disarm_reason = arm_disarm_reason_t::rc_button; break;
|
||||
case action_request_s::SOURCE_RC_BUTTON: arm_disarm_reason = arm_disarm_reason_t::rc_button; break;
|
||||
}
|
||||
|
||||
switch (arm_request.action) {
|
||||
case arm_request_s::ACTION_DISARM: disarm(arm_disarm_reason); break;
|
||||
switch (action_request.action) {
|
||||
case action_request_s::ACTION_DISARM: disarm(arm_disarm_reason); break;
|
||||
|
||||
case arm_request_s::ACTION_ARM: arm(arm_disarm_reason); break;
|
||||
case action_request_s::ACTION_ARM: arm(arm_disarm_reason); break;
|
||||
|
||||
case arm_request_s::ACTION_TOGGLE_ARMING:
|
||||
case action_request_s::ACTION_TOGGLE_ARMING:
|
||||
if (_armed.armed) {
|
||||
disarm(arm_disarm_reason);
|
||||
|
||||
@@ -2478,7 +2478,7 @@ Commander::run()
|
||||
|
||||
break;
|
||||
|
||||
case arm_request_s::ACTION_UNKILL:
|
||||
case action_request_s::ACTION_UNKILL:
|
||||
if (arm_disarm_reason == arm_disarm_reason_t::rc_switch && _armed.manual_lockdown) {
|
||||
mavlink_log_info(&_mavlink_log_pub, "Kill-switch disengaged\t");
|
||||
events::send(events::ID("commander_kill_sw_disengaged"), events::Log::Info, "Kill-switch disengaged");
|
||||
@@ -2488,7 +2488,7 @@ Commander::run()
|
||||
|
||||
break;
|
||||
|
||||
case arm_request_s::ACTION_KILL:
|
||||
case action_request_s::ACTION_KILL:
|
||||
if (arm_disarm_reason == arm_disarm_reason_t::rc_switch && !_armed.manual_lockdown) {
|
||||
const char kill_switch_string[] = "Kill-switch engaged\t";
|
||||
events::LogLevels log_levels{events::Log::Info};
|
||||
@@ -2508,18 +2508,14 @@ Commander::run()
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case action_request_s::ACTION_SWITCH_MODE:
|
||||
main_state_transition(_status, action_request.mode, _status_flags, _internal_state);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
while (_mode_request_sub.updated()) {
|
||||
mode_request_s mode_request;
|
||||
|
||||
if (_mode_request_sub.copy(&mode_request)) {
|
||||
main_state_transition(_status, mode_request.mode, _status_flags, _internal_state);
|
||||
}
|
||||
}
|
||||
|
||||
/* Check for failure detector status */
|
||||
if (_failure_detector.update(_status, _vehicle_control_mode)) {
|
||||
_status.failure_detector_status = _failure_detector.getStatus().value;
|
||||
|
||||
@@ -59,9 +59,9 @@
|
||||
// subscriptions
|
||||
#include <uORB/Subscription.hpp>
|
||||
#include <uORB/SubscriptionMultiArray.hpp>
|
||||
#include <uORB/topics/action_request.h>
|
||||
#include <uORB/topics/actuator_controls.h>
|
||||
#include <uORB/topics/airspeed.h>
|
||||
#include <uORB/topics/arm_request.h>
|
||||
#include <uORB/topics/battery_status.h>
|
||||
#include <uORB/topics/cpuload.h>
|
||||
#include <uORB/topics/distance_sensor.h>
|
||||
@@ -73,7 +73,6 @@
|
||||
#include <uORB/topics/manual_control_setpoint.h>
|
||||
#include <uORB/topics/mission.h>
|
||||
#include <uORB/topics/mission_result.h>
|
||||
#include <uORB/topics/mode_request.h>
|
||||
#include <uORB/topics/offboard_control_mode.h>
|
||||
#include <uORB/topics/parameter_update.h>
|
||||
#include <uORB/topics/power_button_state.h>
|
||||
@@ -390,8 +389,8 @@ private:
|
||||
WorkerThread _worker_thread;
|
||||
|
||||
// Subscriptions
|
||||
uORB::Subscription _action_request_sub {ORB_ID(action_request)};
|
||||
uORB::Subscription _actuator_controls_sub{ORB_ID_VEHICLE_ATTITUDE_CONTROLS};
|
||||
uORB::Subscription _arm_request_sub {ORB_ID(arm_request)};
|
||||
uORB::Subscription _cmd_sub {ORB_ID(vehicle_command)};
|
||||
uORB::Subscription _cpuload_sub{ORB_ID(cpuload)};
|
||||
uORB::Subscription _esc_status_sub{ORB_ID(esc_status)};
|
||||
@@ -400,7 +399,6 @@ private:
|
||||
uORB::Subscription _iridiumsbd_status_sub{ORB_ID(iridiumsbd_status)};
|
||||
uORB::Subscription _land_detector_sub{ORB_ID(vehicle_land_detected)};
|
||||
uORB::Subscription _manual_control_setpoint_sub{ORB_ID(manual_control_setpoint)};
|
||||
uORB::Subscription _mode_request_sub {ORB_ID(mode_request)};
|
||||
uORB::Subscription _safety_sub{ORB_ID(safety)};
|
||||
uORB::Subscription _system_power_sub{ORB_ID(system_power)};
|
||||
uORB::Subscription _vehicle_angular_velocity_sub{ORB_ID(vehicle_angular_velocity)};
|
||||
|
||||
Reference in New Issue
Block a user