mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-28 19:32:36 +08:00
mavlink: mavlink main vehicle_commands only handled in iridium mode
This commit is contained in:
@@ -2247,45 +2247,48 @@ Mavlink::task_main(int argc, char *argv[])
|
|||||||
|
|
||||||
|
|
||||||
// vehicle_command
|
// vehicle_command
|
||||||
while (_vehicle_command_sub.updated()) {
|
if (_mode == MAVLINK_MODE_IRIDIUM) {
|
||||||
const unsigned last_generation = _vehicle_command_sub.get_last_generation();
|
while (_vehicle_command_sub.updated()) {
|
||||||
vehicle_command_s vehicle_cmd;
|
const unsigned last_generation = _vehicle_command_sub.get_last_generation();
|
||||||
|
vehicle_command_s vehicle_cmd;
|
||||||
|
|
||||||
if (_vehicle_command_sub.update(&vehicle_cmd)) {
|
if (_vehicle_command_sub.update(&vehicle_cmd)) {
|
||||||
if (_vehicle_command_sub.get_last_generation() != last_generation + 1) {
|
if (_vehicle_command_sub.get_last_generation() != last_generation + 1) {
|
||||||
PX4_ERR("vehicle_command lost, generation %d -> %d", last_generation, _vehicle_command_sub.get_last_generation());
|
PX4_ERR("vehicle_command lost, generation %d -> %d", last_generation, _vehicle_command_sub.get_last_generation());
|
||||||
}
|
|
||||||
|
|
||||||
if ((vehicle_cmd.command == vehicle_command_s::VEHICLE_CMD_CONTROL_HIGH_LATENCY) &&
|
|
||||||
(_mode == MAVLINK_MODE_IRIDIUM)) {
|
|
||||||
if (vehicle_cmd.param1 > 0.5f) {
|
|
||||||
if (!_transmitting_enabled) {
|
|
||||||
mavlink_log_info(&_mavlink_log_pub, "Enable transmitting with IRIDIUM mavlink on device %s by command",
|
|
||||||
_device_name);
|
|
||||||
}
|
|
||||||
|
|
||||||
_transmitting_enabled = true;
|
|
||||||
_transmitting_enabled_commanded = true;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
if (_transmitting_enabled) {
|
|
||||||
mavlink_log_info(&_mavlink_log_pub, "Disable transmitting with IRIDIUM mavlink on device %s by command",
|
|
||||||
_device_name);
|
|
||||||
}
|
|
||||||
|
|
||||||
_transmitting_enabled = false;
|
|
||||||
_transmitting_enabled_commanded = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// send positive command ack
|
if ((vehicle_cmd.command == vehicle_command_s::VEHICLE_CMD_CONTROL_HIGH_LATENCY) &&
|
||||||
vehicle_command_ack_s command_ack{};
|
_mode == MAVLINK_MODE_IRIDIUM) {
|
||||||
command_ack.command = vehicle_cmd.command;
|
|
||||||
command_ack.result = vehicle_command_ack_s::VEHICLE_RESULT_ACCEPTED;
|
if (vehicle_cmd.param1 > 0.5f) {
|
||||||
command_ack.from_external = !vehicle_cmd.from_external;
|
if (!_transmitting_enabled) {
|
||||||
command_ack.target_system = vehicle_cmd.source_system;
|
mavlink_log_info(&_mavlink_log_pub, "Enable transmitting with IRIDIUM mavlink on device %s by command",
|
||||||
command_ack.target_component = vehicle_cmd.source_component;
|
_device_name);
|
||||||
command_ack.timestamp = vehicle_cmd.timestamp;
|
}
|
||||||
_vehicle_command_ack_pub.publish(command_ack);
|
|
||||||
|
_transmitting_enabled = true;
|
||||||
|
_transmitting_enabled_commanded = true;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if (_transmitting_enabled) {
|
||||||
|
mavlink_log_info(&_mavlink_log_pub, "Disable transmitting with IRIDIUM mavlink on device %s by command",
|
||||||
|
_device_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
_transmitting_enabled = false;
|
||||||
|
_transmitting_enabled_commanded = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// send positive command ack
|
||||||
|
vehicle_command_ack_s command_ack{};
|
||||||
|
command_ack.command = vehicle_cmd.command;
|
||||||
|
command_ack.result = vehicle_command_ack_s::VEHICLE_RESULT_ACCEPTED;
|
||||||
|
command_ack.from_external = !vehicle_cmd.from_external;
|
||||||
|
command_ack.target_system = vehicle_cmd.source_system;
|
||||||
|
command_ack.target_component = vehicle_cmd.source_component;
|
||||||
|
command_ack.timestamp = vehicle_cmd.timestamp;
|
||||||
|
_vehicle_command_ack_pub.publish(command_ack);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user