Routing: Tidy and remove unknown component processing rule#725
Merged
Conversation
hamishwillee
commented
Jul 1, 2026
| - It is a broadcast message (`target_system` field omitted or zero). | ||
| - The `target_system` matches its system id and `target_component` is broadcast (`target_component` omitted or zero). | ||
| - The `target_system` matches its system id and has the component's `target_component` | ||
| - The `target_system` matches its system id and the component is unknown (i.e. this component has not seen any messages on any link that have the message's `target_system`/`target_component`). |
Collaborator
Author
There was a problem hiding this comment.
This is the clause that is dropped - the others say the same thing, but the wording is simplified.
I did think this might be a miss-applied routing rule. I don't think it adds value though, and it contradicts the idea that you only route if you have previously seen something from the component.
Collaborator
Author
|
@peterbarker @julianoes Here is the update to routing rules. Sorry, more than just removing the offending line (though I have done that). I confirmed PX4 definitely does not do this, and I still think it makes no sense. |
9 tasks
julianoes
approved these changes
Jul 1, 2026
peterbarker
approved these changes
Jul 2, 2026
peterbarker
left a comment
Contributor
There was a problem hiding this comment.
@Hwurzburg we have much the same text on the Wiki: https://ardupilot.org/dev/docs/mavlink-routing-in-ardupilot.html#detailed-theory-of-mavlink-routing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This tidies up the routing rules in the MAVLink guide to improve English, and remove out of date and/or incorrect instructions.
The main impeteus was to remove the processing criteria:
This states that a component should attempt to process messages intended for its system if it has never seen the component before. For example, an autopilot sees a CAMERA message targeted at its system with component ID that it has not seen before it should attempt to handle the command.
That doesn't make sense: if the message has a target component id then it should be handled by that component.
In this case, the routing rules would attempt to get the message to its target.
ArduPilot does not do this: ArduPilot/ardupilot#33493
PX4 also doesn't implement it. The matching logic only matches on broadcast and specific component id.