MessageID & CAN Identifier

Hello, I’m a beginner to study about the Cyphal driver of PX4. I have a few questions, so I hope you can solve my questions.

  1. Is it correct that the data can be received only when the CAN identifier (like 0x01) provided by BMS and the UVCAN message ID match? I don’t know if it’s accurate because it’s information obtained using only chatpt.
  2. If you need to match, please let me know how you define the UAVCAN message ID. (Is 8165.NodeIDAllocationData.2.0.uavcan 8165 the message ID?)
  3. If the content number 2 is correct, is there a way to handle the message ID separately for uavcan messages without a message ID written in the name?

I’m immature because I lack an accurate concept, so I think it would be helpful if you could give me a detailed answer.

  1. No, the CAN ID cannot match because it is unique per node and may also change with priority. The subject-ID (aka topic-ID) has to match. CAN ID incorporates the subject-ID as follows:

  1. It is assigned when the system is configured via configuration registers. See the documentation for the data type named uavcan.register.Access.

  2. Yes, by changing the configuration registers.

You may find the demos relevant: GitHub - OpenCyphal-Garage/demos: Demo applications and reference implementations

So, according to you, the values of bits located in the Subject ID from the CAN ID of BMS are Subject-ID? (Here, CAN ID means a message in the existing “CAN” format, not a message in Cyphal format.)Then, when subscribing to the CAN ID, can I designate the bits located in the Subject-ID as the Port-ID?


1 Like