diff --git a/src/Vehicle/Vehicle.cc b/src/Vehicle/Vehicle.cc index a05d86c..6a3a49c 100644 --- a/src/Vehicle/Vehicle.cc +++ b/src/Vehicle/Vehicle.cc @@ -2132,12 +2132,34 @@ void Vehicle::_rallyPointLoadComplete(void) void Vehicle::_parametersReady(bool parametersReady) { + // Try to set current unix time to the vehicle + _sendQGCTimeToVehicle(); + // Send time twice, more likely to get to the vehicle on a noisy link + _sendQGCTimeToVehicle(); if (parametersReady) { _setupAutoDisarmSignalling(); _startPlanRequest(); } } +void Vehicle::_sendQGCTimeToVehicle(void) +{ + mavlink_message_t msg; + mavlink_system_time_t cmd; + + // Timestamp of the master clock in microseconds since UNIX epoch. + cmd.time_unix_usec = QDateTime::currentDateTime().currentMSecsSinceEpoch()*1000; + // Timestamp of the component clock since boot time in milliseconds (Not necessary). + cmd.time_boot_ms = 0; + mavlink_msg_system_time_encode_chan(_mavlink->getSystemId(), + _mavlink->getComponentId(), + priorityLink()->mavlinkChannel(), + &msg, + &cmd); + + sendMessageOnLink(priorityLink(), msg); +} + void Vehicle::disconnectInactiveVehicle(void) { // Vehicle is no longer communicating with us, disconnect all links diff --git a/src/Vehicle/Vehicle.h b/src/Vehicle/Vehicle.h index dd1ce0a..9c3c1fd 100644 --- a/src/Vehicle/Vehicle.h +++ b/src/Vehicle/Vehicle.h @@ -885,6 +885,7 @@ private slots: void _updateDistanceToHome(void); void _updateHobbsMeter(void); void _vehicleParamLoaded(bool ready); + void _sendQGCTimeToVehicle(void); private: bool _containsLink(LinkInterface* link);