Skip to content

Routing: Tidy and remove unknown component processing rule#725

Merged
hamishwillee merged 1 commit into
masterfrom
routing_tidy
Jul 2, 2026
Merged

Routing: Tidy and remove unknown component processing rule#725
hamishwillee merged 1 commit into
masterfrom
routing_tidy

Conversation

@hamishwillee

Copy link
Copy Markdown
Collaborator

This tidies up the routing rules in the MAVLink guide to improve English, and remove out of date and/or incorrect instructions.

  1. id -> ID
  2. Components execute code, not systems. Where context is handling/routing, system -> component.
  3. Instructions stated how autopilot and GCS system ids allocated in overview. Moved that to an id allocation section and noted it is a convention.
  4. Instructions had that old info about MAV_COMPONENT being used for component IDs. Made clear you can use it, but not assume component type.

The main impeteus was to remove the processing criteria:

  • 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).

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.

Comment thread en/guide/routing.md
- 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`).

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@hamishwillee

Copy link
Copy Markdown
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.

@peterbarker peterbarker left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hamishwillee hamishwillee merged commit 33984d6 into master Jul 2, 2026
3 checks passed
@hamishwillee hamishwillee deleted the routing_tidy branch July 2, 2026 01:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants