Compare commits

...

1 Commits

Author SHA1 Message Date
Beniamino Pozzan 5c66295bdd feat (MAVLink): use RADIO_STATUS to fill input_rc data
Signed-off-by: Beniamino Pozzan <beniamino.pozzan@gmail.com>
2025-07-05 19:07:52 +01:00
3 changed files with 27 additions and 4 deletions
+11
View File
@@ -1393,6 +1393,17 @@ Mavlink::update_radio_status(const radio_status_s &radio_status)
pthread_mutex_unlock(&_radio_status_mutex);
}
bool
Mavlink::get_radio_status(radio_status_s &radio_status) const
{
if (_radio_status_available) {
radio_status = _rstatus;
return true;
}
return false;
}
int
Mavlink::configure_streams_to_default(const char *configure_single_stream)
{
+2
View File
@@ -449,6 +449,8 @@ public:
void update_radio_status(const radio_status_s &radio_status);
bool get_radio_status(radio_status_s &radio_status) const;
unsigned get_system_type() { return _param_mav_type.get(); }
Protocol get_protocol() const { return _protocol; }
+14 -4
View File
@@ -2006,7 +2006,20 @@ MavlinkReceiver::handle_message_rc_channels_override(mavlink_message_t *msg)
input_rc_s rc{};
// metadata
rc.timestamp = rc.timestamp_last_signal = hrt_absolute_time();
rc.rssi = input_rc_s::RSSI_MAX;
radio_status_s radio_status{};
if (_mavlink.get_radio_status(radio_status)) {
rc.rssi_dbm = -(float)(radio_status.remote_rssi);
rc.link_quality = (int8_t)(radio_status.rssi / 2.55); // convert to percentage
} else {
rc.rssi_dbm = NAN;
rc.link_quality = -1;
}
rc.rssi = rc.link_quality;
rc.rc_failsafe = false;
rc.rc_lost = false;
rc.rc_lost_frame_count = 0;
@@ -2071,9 +2084,6 @@ MavlinkReceiver::handle_message_rc_channels_override(mavlink_message_t *msg)
}
}
rc.link_quality = -1;
rc.rssi_dbm = NAN;
// publish uORB message
_rc_pub.publish(rc);
}