mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-31 03:01:36 +08:00
VTOL Controller: Always read ready topics
When poll returns a ready FD we have to read it, no matter which flight mode the system is in.
This commit is contained in:
@@ -691,7 +691,6 @@ void VtolAttitudeControl::task_main()
|
|||||||
/* wait for up to 100ms for data */
|
/* wait for up to 100ms for data */
|
||||||
int pret = px4_poll(&fds[0], sizeof(fds) / sizeof(fds[0]), 100);
|
int pret = px4_poll(&fds[0], sizeof(fds) / sizeof(fds[0]), 100);
|
||||||
|
|
||||||
|
|
||||||
/* timed out - periodic check for _task_should_exit */
|
/* timed out - periodic check for _task_should_exit */
|
||||||
if (pret == 0) {
|
if (pret == 0) {
|
||||||
continue;
|
continue;
|
||||||
@@ -705,6 +704,14 @@ void VtolAttitudeControl::task_main()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (fds[0].revents & POLLIN) {
|
||||||
|
orb_copy(ORB_ID(actuator_controls_virtual_mc), _actuator_inputs_mc, &_actuators_mc_in);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fds[1].revents & POLLIN) {
|
||||||
|
orb_copy(ORB_ID(actuator_controls_virtual_fw), _actuator_inputs_fw, &_actuators_fw_in);
|
||||||
|
}
|
||||||
|
|
||||||
if (fds[2].revents & POLLIN) { //parameters were updated, read them now
|
if (fds[2].revents & POLLIN) { //parameters were updated, read them now
|
||||||
/* read from param to clear updated flag */
|
/* read from param to clear updated flag */
|
||||||
struct parameter_update_s update;
|
struct parameter_update_s update;
|
||||||
@@ -762,8 +769,6 @@ void VtolAttitudeControl::task_main()
|
|||||||
|
|
||||||
// got data from mc attitude controller
|
// got data from mc attitude controller
|
||||||
if (fds[0].revents & POLLIN) {
|
if (fds[0].revents & POLLIN) {
|
||||||
orb_copy(ORB_ID(actuator_controls_virtual_mc), _actuator_inputs_mc, &_actuators_mc_in);
|
|
||||||
|
|
||||||
_vtol_type->update_mc_state();
|
_vtol_type->update_mc_state();
|
||||||
|
|
||||||
fill_mc_att_rates_sp();
|
fill_mc_att_rates_sp();
|
||||||
@@ -776,7 +781,6 @@ void VtolAttitudeControl::task_main()
|
|||||||
|
|
||||||
// got data from fw attitude controller
|
// got data from fw attitude controller
|
||||||
if (fds[1].revents & POLLIN) {
|
if (fds[1].revents & POLLIN) {
|
||||||
orb_copy(ORB_ID(actuator_controls_virtual_fw), _actuator_inputs_fw, &_actuators_fw_in);
|
|
||||||
vehicle_manual_poll();
|
vehicle_manual_poll();
|
||||||
|
|
||||||
_vtol_type->update_fw_state();
|
_vtol_type->update_fw_state();
|
||||||
|
|||||||
Reference in New Issue
Block a user