-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
Redundant comms #429
Redundant comms #429
Conversation
…g link agent to allow it to be given an id (through the -link_id flag) and to send ivy messages of a different format (when -redlink is set). The messages are sent within the TELEMETRY_MESSAGE message as a ;sv (colon-seperated-value) which are listed to by the link_combiner.py agent.
…the Link Combiner agent. This agent receives ivy messages from the link agent(s) when they have a name specified, removes duplicate messages, then sends ivy messages of the same format that the link agent used to send messages.
… from link_combiner.py in the LINK_STATUS message. The GCS now has a page in the notebook named Link, the ratio of active links appears in the main link indicator, and messages when a link is lost or gained are displayed in the console.
…ircraft are connected through the same link. Also added support for recording link status information in flight logs and displaying it during a replay.
Hi Cameron, Thanks a lot, this looks nice! And really cool that you already made proper documentation for it :-) There are probably some implications for other parts (e.g. the python messages app) due to the added link_id. One other minor comment: |
Another minor style hint for future commits: |
Thanks for your comments Felix. I tried to design the system to work with all of the other parts as is. So I don't believe there are any implications to other code, but I'd definitely like other people to verify this and let me know if I'm wrong. The messages app for instance (OCaml or Python) will display exactly the same data with only two changes: 1. the DOWNLINK_STATUS message has an extra field (the link_id) and 2. the message app will be displaying messages received from either link. Because the change to the DOWNLINK_STATUS message is recorded in messages.xml, item 1 isn't an issue. And because Link Combiner combines the links, item 2 isn't an issue. I've been running the messages app all the time with no problems. I've also tested multi-uav, logging and replay functionality without any issues. Regarding the argument parsing, are you saying that we should keep it as argparse? I actually originally tried to implement optparse because I saw that's what was used elsewhere, but when I ran into troubles and looked up the documentation, the first thing it said was that optparse was deprecated and to use optparse instead: http://docs.python.org/2/library/optparse.html On a similar note, for periodically sending the LINK_STATUS message from Link Combiner.py, I used threading.Timer instead of glib.Timeout. I tried to use glib.Timeout because I saw it used elsewhere, but I couldn't get it to work so used threading.Timer instead. I assume this is OK. This is my first time using revision control software, so thanks for the advice regarding commit messages. I assume you don't want me to re-rebase. One last thing: I'm still hoping someone can help me make the Link page appear in the notebook only when multiple links are used. E-mail me or the mailing list if you know how to do this. Thanks. |
I choose optparse at the time because even though it is deprecated it's still available in all python versions, but argparse is only availabe from 2.7 upwards. |
I'm really busy with a flight campaign these days, so I don't have much time testing your code. |
Thanks for accepting. Keep in mind that when used in "normal" mode (i.e. without the Link Combiner agent or the -redlink flag), the Link info page won't show any information. I'll just be there. If I get time, I'll look into adding information there even when the Link Combiner isn't running. |
True. I have opened an issue for this #442 |
Here's my pull request for the redundant communication system as described here: http://paparazzi.enac.fr/wiki/Redundant_Communication
This currently provides redundancy for plane to ground communication only (not ground to plane).
Since my last e-mail, I've added support for multiple aircraft sharing a link as well as displaying link status information during a replay.