Cannot get STATUSTEXT messages consistently over mavlink

I've tried to modify MinimOSD-Extra to show me current APM Copter 3.3 status message on screen. The problem is that I get only couple of messages at startup and then it stops.

This is how I approximately do it:

case MAVLINK_MSG_ID_STATUSTEXT:
{
mavlink_msg_statustext_get_text(&msg, osd_warning);
int length = strlen(osd_warning);
memset(osd_formatted_warning, 0x20, WARNING_PANEL_WIDTH);
memcpy(osd_formatted_warning, osd_warning, length);
};
break;

What happens is that on startup I do get:
Calibrating barometer

Ground start

However if I launch QGroundStation then I see that it gets other messages like "PreArm: GPS horiz error 9.0".

The subscription code looks like this:

void request_mavlink_rates()
{
const int maxStreams = 6;
const uint8_t MAVStreams[maxStreams] = {MAV_DATA_STREAM_RAW_SENSORS,
MAV_DATA_STREAM_EXTENDED_STATUS,
MAV_DATA_STREAM_RC_CHANNELS,
MAV_DATA_STREAM_POSITION,
MAV_DATA_STREAM_EXTRA1,
MAV_DATA_STREAM_EXTRA2};
const uint16_t MAVRates[maxStreams] = {0x02, 0x02, 0x05, 0x02, 0x05, 0x02};
for (int i=0; i < maxStreams; i++) {
mavlink_msg_request_data_stream_send(MAVLINK_COMM_0,
apm_mav_system, apm_mav_component,
MAVStreams[i], MAVRates[i], 1);
}
}

Should I do some extra steps in order to get status text messages?

-----------------------

Update from my experiments:

It looks as if some statustext messages are not set to all GCSs, but the presence of e.g. MAVProxy GCS triggers broadcasting to all stations. Looking at the arducopter code I don't see anything which could trigger such behavior. I do see different ways of sending messages e.g. 

const char *reason = ahrs.prearm_failure_reason();
if (reason) {
GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_CRITICAL, "PreArm: %s", reason);
} else {
gcs_send_text(MAV_SEVERITY_CRITICAL,"PreArm: Need 3D Fix");
}

but those methods look ok internally at first glance.

Views: 839

Reply to This

Replies to This Discussion

I've also added a code to display me number of times I've got MAVLINK_MSG_ID_STATUSTEXT and it stuck at 4.

The interesting this is that if I connect MAVProxy as well, I see all statustext updates via MiminOSD!

OK, after some more experiments I've fixed (or workarounded the issue in my forked Copter-3.3 version): https://github.com/diydrones/ardupilot/issues/3513

I have same problem with my Mav2Leds project, I can't get the severity info to manage my leds when prearm errors occurs.

Found any solution ?

My workaround was to send hearbeats to Pixhawk from OSD.

Reply to Discussion

RSS

© 2019   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service