commander: avoid uint64 timestamp implicit float conversions

- 64 bit time in microseconds stored in a 32 bit float quickly becomes problematic
 - fixes https://github.com/PX4/PX4-Autopilot/issues/20944
This commit is contained in:
Daniel Agar
2023-01-19 17:48:40 -05:00
committed by GitHub
parent 3822ef1519
commit bd9d09663f
2 changed files with 11 additions and 3 deletions
@@ -42,7 +42,10 @@ void OffboardChecks::checkAndReport(const Context &context, Report &reporter)
offboard_control_mode_s offboard_control_mode;
if (_offboard_control_mode_sub.copy(&offboard_control_mode)) {
bool data_is_recent = hrt_absolute_time() < offboard_control_mode.timestamp + _param_com_of_loss_t.get() * 1_s;
bool data_is_recent = hrt_absolute_time() < offboard_control_mode.timestamp
+ static_cast<hrt_abstime>(_param_com_of_loss_t.get() * 1_s);
bool offboard_available = (offboard_control_mode.position || offboard_control_mode.velocity
|| offboard_control_mode.acceleration || offboard_control_mode.attitude || offboard_control_mode.body_rate
|| offboard_control_mode.actuator) && data_is_recent;