mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-11-01 05:31:35 +08:00
mavlink: store last heartbeat time in telemetry_status topic
This commit is contained in:
@@ -106,6 +106,7 @@ MavlinkReceiver::MavlinkReceiver(Mavlink *parent) :
|
|||||||
_telemetry_status_pub(-1),
|
_telemetry_status_pub(-1),
|
||||||
_rc_pub(-1),
|
_rc_pub(-1),
|
||||||
_manual_pub(-1),
|
_manual_pub(-1),
|
||||||
|
_telemetry_heartbeat_time(0),
|
||||||
_hil_frames(0),
|
_hil_frames(0),
|
||||||
_old_timestamp(0),
|
_old_timestamp(0),
|
||||||
_hil_local_proj_inited(0),
|
_hil_local_proj_inited(0),
|
||||||
@@ -150,6 +151,10 @@ MavlinkReceiver::handle_message(mavlink_message_t *msg)
|
|||||||
handle_message_manual_control(msg);
|
handle_message_manual_control(msg);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MAVLINK_MSG_ID_HEARTBEAT:
|
||||||
|
handle_message_heartbeat(msg);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -411,6 +416,7 @@ MavlinkReceiver::handle_message_radio_status(mavlink_message_t *msg)
|
|||||||
memset(&tstatus, 0, sizeof(tstatus));
|
memset(&tstatus, 0, sizeof(tstatus));
|
||||||
|
|
||||||
tstatus.timestamp = hrt_absolute_time();
|
tstatus.timestamp = hrt_absolute_time();
|
||||||
|
tstatus.heartbeat_time = _telemetry_heartbeat_time;
|
||||||
tstatus.type = TELEMETRY_STATUS_RADIO_TYPE_3DR_RADIO;
|
tstatus.type = TELEMETRY_STATUS_RADIO_TYPE_3DR_RADIO;
|
||||||
tstatus.rssi = rstatus.rssi;
|
tstatus.rssi = rstatus.rssi;
|
||||||
tstatus.remote_rssi = rstatus.remrssi;
|
tstatus.remote_rssi = rstatus.remrssi;
|
||||||
@@ -451,6 +457,18 @@ MavlinkReceiver::handle_message_manual_control(mavlink_message_t *msg)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MavlinkReceiver::handle_message_heartbeat(mavlink_message_t *msg)
|
||||||
|
{
|
||||||
|
mavlink_heartbeat_t hb;
|
||||||
|
mavlink_msg_heartbeat_decode(msg, &hb);
|
||||||
|
|
||||||
|
/* ignore own heartbeats, accept only heartbeats from GCS */
|
||||||
|
if (msg->sysid != mavlink_system.sysid && hb.type == MAV_TYPE_GCS) {
|
||||||
|
_telemetry_heartbeat_time = hrt_absolute_time();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
MavlinkReceiver::handle_message_hil_sensor(mavlink_message_t *msg)
|
MavlinkReceiver::handle_message_hil_sensor(mavlink_message_t *msg)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ enum TELEMETRY_STATUS_RADIO_TYPE {
|
|||||||
|
|
||||||
struct telemetry_status_s {
|
struct telemetry_status_s {
|
||||||
uint64_t timestamp;
|
uint64_t timestamp;
|
||||||
|
uint64_t heartbeat_time; /**< Time of last received heartbeat from remote system */
|
||||||
enum TELEMETRY_STATUS_RADIO_TYPE type; /**< type of the radio hardware */
|
enum TELEMETRY_STATUS_RADIO_TYPE type; /**< type of the radio hardware */
|
||||||
uint8_t rssi; /**< local signal strength */
|
uint8_t rssi; /**< local signal strength */
|
||||||
uint8_t remote_rssi; /**< remote signal strength */
|
uint8_t remote_rssi; /**< remote signal strength */
|
||||||
|
|||||||
Reference in New Issue
Block a user