QURT: HITL: Moved heartbeat send into actuator send thread to avoid race conditions
Build all targets / Scan for Board Targets (push) Has been cancelled
Build all targets / Build Group [${{ matrix.group }}][${{ matrix.arch == 'nuttx' && 'x86' || 'arm64' }}] (push) Has been cancelled
Build all targets / Upload Artifacts to S3 (push) Has been cancelled
Build all targets / Create Release and Upload Artifacts (push) Has been cancelled
Checks / build (NO_NINJA_BUILD=1 px4_fmu-v5_default) (push) Has been cancelled
Checks / build (NO_NINJA_BUILD=1 px4_sitl_default) (push) Has been cancelled
Checks / build (check_format) (push) Has been cancelled
Checks / build (check_newlines) (push) Has been cancelled
Checks / build (module_documentation) (push) Has been cancelled
Checks / build (px4_fmu-v2_default stack_check) (push) Has been cancelled
Checks / build (px4_sitl_allyes) (push) Has been cancelled
Checks / build (shellcheck_all) (push) Has been cancelled
Checks / build (tests) (push) Has been cancelled
Checks / build (tests_coverage) (push) Has been cancelled
Checks / build (validate_module_configs) (push) Has been cancelled
Clang Tidy / build (push) Has been cancelled
MacOS build / build (px4_fmu-v5_default) (push) Has been cancelled
MacOS build / build (px4_sitl) (push) Has been cancelled
Ubuntu environment build / Build and Test (ubuntu:22.04) (push) Has been cancelled
Ubuntu environment build / Build and Test (ubuntu:24.04) (push) Has been cancelled
Container build / Set Tags and Variables (push) Has been cancelled
Container build / Build Container (amd64) (push) Has been cancelled
Container build / Build Container (arm64) (push) Has been cancelled
Container build / Deploy To Registry (push) Has been cancelled
EKF Update Change Indicator / unit_tests (push) Has been cancelled
Failsafe Simulator Build / build (failsafe_web) (push) Has been cancelled
FLASH usage analysis / Analyzing px4_fmu-v5x (push) Has been cancelled
FLASH usage analysis / Analyzing px4_fmu-v6x (push) Has been cancelled
FLASH usage analysis / Publish Results (push) Has been cancelled
ITCM check / Checking nxp_tropic-community (push) Has been cancelled
ITCM check / Checking px4_fmu-v5x (push) Has been cancelled
ITCM check / Checking px4_fmu-v6xrt (push) Has been cancelled
MAVROS Mission Tests / build (map[mission:MC_mission_box vehicle:iris]) (push) Has been cancelled
MAVROS Offboard Tests / build (map[test_file:mavros_posix_tests_offboard_posctl.test vehicle:iris]) (push) Has been cancelled
Nuttx Target with extra env config / build (px4_fmu-v5_default) (push) Has been cancelled
Python CI Checks / build (push) Has been cancelled
ROS Integration Tests / build (push) Has been cancelled
ROS Translation Node Tests / Build and test (map[ros_version:humble ubuntu:jammy]) (push) Has been cancelled
ROS Translation Node Tests / Build and test (map[ros_version:jazzy ubuntu:noble]) (push) Has been cancelled
SITL Tests / Testing PX4 tailsitter (push) Has been cancelled
SITL Tests / Testing PX4 iris (push) Has been cancelled
SITL Tests / Testing PX4 standard_vtol (push) Has been cancelled
Handle stale issues and PRs / stale (push) Has been cancelled
Fuzzing / Fuzzing (push) Has been cancelled

This commit is contained in:
Eric Katzfey
2025-08-01 09:16:32 -07:00
committed by Ramon Roche
parent 5b9e099fd1
commit 7e5cc020c3
@@ -274,6 +274,7 @@ void send_actuator_data()
int _actuator_outputs_sub = orb_subscribe_multi(ORB_ID(actuator_outputs_sim), 0);
int _vehicle_control_mode_sub_ = orb_subscribe(ORB_ID(vehicle_control_mode));
uint64_t last_heartbeat_timestamp = hrt_absolute_time();
int previous_timestamp = 0;
int previous_uorb_timestamp = 0;
int differential = 0;
@@ -331,6 +332,23 @@ void send_actuator_data()
send_esc_status(hil_act_control);
}
uint64_t timestamp = hrt_absolute_time();
if ((timestamp - last_heartbeat_timestamp) > 1000000) {
mavlink_heartbeat_t hb = {};
mavlink_message_t hb_message = {};
hb.autopilot = 12;
hb.base_mode |= (_vehicle_status.arming_state == vehicle_status_s::ARMING_STATE_ARMED) ? 128 : 0;
mavlink_msg_heartbeat_encode(1, 1, &hb_message, &hb);
uint8_t hb_newBuf[MAVLINK_MAX_PACKET_LEN];
uint16_t hb_newBufLen = 0;
hb_newBufLen = mavlink_msg_to_send_buffer(hb_newBuf, &hb_message);
(void) writeResponse(&hb_newBuf, hb_newBufLen);
last_heartbeat_timestamp = timestamp;
heartbeat_sent_counter++;
}
differential = hrt_absolute_time() - previous_timestamp;
px4_usleep(1000);
@@ -392,8 +410,7 @@ void task_main(int argc, char *argv[])
return;
}
uint64_t last_heartbeat_timestamp = hrt_absolute_time();
uint64_t last_imu_update_timestamp = last_heartbeat_timestamp;
uint64_t last_imu_update_timestamp = hrt_absolute_time();
_px4_accel = new PX4Accelerometer(1310988);
_px4_gyro = new PX4Gyroscope(1310988);
@@ -447,21 +464,6 @@ void task_main(int argc, char *argv[])
}
}
if ((timestamp - last_heartbeat_timestamp) > 1000000) {
mavlink_heartbeat_t hb = {};
mavlink_message_t hb_message = {};
hb.autopilot = 12;
hb.base_mode |= (_vehicle_status.arming_state == vehicle_status_s::ARMING_STATE_ARMED) ? 128 : 0;
mavlink_msg_heartbeat_encode(1, 1, &hb_message, &hb);
uint8_t hb_newBuf[MAVLINK_MAX_PACKET_LEN];
uint16_t hb_newBufLen = 0;
hb_newBufLen = mavlink_msg_to_send_buffer(hb_newBuf, &hb_message);
(void) writeResponse(&hb_newBuf, hb_newBufLen);
last_heartbeat_timestamp = timestamp;
heartbeat_sent_counter++;
}
bool vehicle_updated = false;
(void) orb_check(_vehicle_status_sub, &vehicle_updated);