-
Notifications
You must be signed in to change notification settings - Fork 83
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Routing issue: somehow packets get dropped communicating with ground station #189
Comments
@CodeTriangle I haven't used
|
Far from it. Heartbeats are verifiably sent every second, pings also come in occasionally.
I don't suppose I do, but it hasn't been needed yet because...
Yes, I have done this. The packets exist on both sides. |
Based on what you said, it sounds like QGroundControl doesn't accept the |
QGC is certainly not accepting the package for some reason or another. It's not the packet's fault, though. The same
It is involved in that when |
@CodeTriangle do you have a minimal working example that uses If you suspect that one of the packets is not (de)serialized correctly (I suspect you mean I admit I didn't study much what is expected from the |
I can try to strip the program down even more, but honestly I don't see what I can take out. What you see is the bare minimum. It spawns up some number of threads, blocks on each until they receive a message, then immediately acts on the message, sending it to the other endpoints.
Sure, I can try this.
No, this line of code runs after the message is resent. Modifying the message would be impossible since it's marked as immutable. What is modified is
Avoiding |
I suspect that QGroundControl might have some restrictions on the shape and form of the communication, presumably the If you agree that is indeed the problem, perhaps best to close this issue and post your question at https://github.com/mavlink/qgroundcontrol/issues ? |
@CodeTriangle we merged a series of fixed on master right now related to serialization / deserialization. Can you check now if it works ? I'll release a 0.12.2 soon. |
This is a bit of a weird issue that we've been having. I was hesitant to classify it as an issue fit to be published here, but I have been told that @podhrmic at least is willing to look it over.
I've been working with
rust-mavlink
over the past few days to create a minimal MAVLink router (ideally one that is capable of replacingmavlink-router
but will run in embedded and lower-memory environments). The program is very simple. It spawns a thread per endpoint which waits for a message on that endpoint and sends it to all the other endpoints.Now we get to the crux of the issue: we're having some transmission problems. We have QGroundControl hooked into one side of the router and a PX4 aircraft in the other side. After about 20 or so messages, the endpoint connected to QGroundControl becomes unresponsive because QGroundControl switches to MAVLink 1. That happens because it doesn't think it's received an
AUTOPILOT_VERSION
message (requested by QGroundControl on startup withMAV_CMD_REQUEST_MESSAGE
). My code prints every message received on all endpoints. According to these logs, the router does receive the message so it should be sent on to QGroundControl, but QGC is clearly missing them when they do come in.This error only happens under the following conditions:
Here's the repository if anyone is willing to try to reprodice this: https://github.com/AggieAir/rust-mavlink-router
The text was updated successfully, but these errors were encountered: