Why different signature can communication with the same uavcan gui tool?

dear Pavel Kirienko:

in publisher tutorial all the data type signature is 64bit ,
in px4 pasog BootLoader all the data type signature is 16bit.

they have the different data signature, Why can they communicate with GUI?both fine.

  1. i know that the data signature is Not transmitted , only store at the both side code , to be as a extra crc to
    add crc16(payload) , right?

2 . if orel esc have a pasog bootloader can i use the uavcan gui tool to update application firmware for it?

thank you very much!

The PX4 bootloader code contains a mistake: what they call “signature” is not, in fact, a signature; rather it’s the CRC16 of the signature. They store precomputed CRC16 of the signature to accelerate runtime CRC computation. This is a correct and compliant approach as far as the UAVCAN specification is concerned, but the naming is suboptimal.

Yes, this bootloader can be used with the GUI tool.

cool,very professional! i like you , guru.

1 Like

Hi,
In the example on this page, I didn’t understand how to get the SIGNATURE we have to put for a given DSDL message we sent from a sensor node. Thanks

The signatures can be obtained using this simple script:

https://github.com/UAVCAN/libcanard/blob/master/show_data_type_info.py

Here is the output of this script for the standard namespace uavcan:

Full Data Type Name                                  | DDTID |   Type Signature   |  Max Bit Len
--------------------------------------------------------------------------------------------------
uavcan.CoarseOrientation                                 N/A   0x271ba10b0dac9e52      16
uavcan.Timestamp                                         N/A   0x05bd0b5c81087e0d      56
uavcan.equipment.actuator.ArrayCommand                  1010   0xd8a7486238ec3af3     484
uavcan.equipment.actuator.Command                        N/A   0x8d9a6a920c1d616c      32
uavcan.equipment.actuator.Status                        1011   0x5e9bba44faf1ea04      64
uavcan.equipment.ahrs.MagneticFieldStrength             1001   0xe2a7d4a9460bc2f2     196
uavcan.equipment.ahrs.MagneticFieldStrength2            1002   0xb6ac0c442430297e     204
uavcan.equipment.ahrs.RawIMU                            1003   0x8280632c40e574b5     958
uavcan.equipment.ahrs.Solution                          1000   0x72a63a3c6f41fa9b     668
uavcan.equipment.air_data.AngleOfAttack                 1025   0xd5513c3f7afac74e      40
uavcan.equipment.air_data.IndicatedAirspeed             1021   0x0a1892d72ab8945f      32
uavcan.equipment.air_data.RawAirData                    1027   0xc77df38ba122f5da     397
uavcan.equipment.air_data.Sideslip                      1026   0x7b48e55fcff42a57      32
uavcan.equipment.air_data.StaticPressure                1028   0xcdc7c43412bdc89a      48
uavcan.equipment.air_data.StaticTemperature             1029   0x49272a6477d96271      32
uavcan.equipment.air_data.TrueAirspeed                  1020   0x306f69e0a591afaa      32
uavcan.equipment.camera_gimbal.AngularCommand           1040   0x4af6e57b2b2be29c      80
uavcan.equipment.camera_gimbal.GEOPOICommand            1041   0x9371428a92f01fd6     104
uavcan.equipment.camera_gimbal.Mode                      N/A   0x9108c7785aeb69c4       8
uavcan.equipment.camera_gimbal.Status                   1044   0xb9f127865be0d61e     228
uavcan.equipment.device.Temperature                     1110   0x70261c28a94144c6      40
uavcan.equipment.esc.RPMCommand                         1031   0xce0f9f621cf7e70b     365
uavcan.equipment.esc.RawCommand                         1030   0x217f5c87d7ec951d     285
uavcan.equipment.esc.Status                             1034   0xa9af28aea2fbb254     110
uavcan.equipment.gnss.Auxiliary                         1061   0x9be8bdc4c3dbbfd2     125
uavcan.equipment.gnss.ECEFPositionVelocity               N/A   0x24a5da4abee3a248     792
uavcan.equipment.gnss.Fix                               1060   0x54c1572b9e07f297     628
uavcan.equipment.gnss.Fix2                              1063   0xca41e7000f37435f    1769
uavcan.equipment.gnss.RTCMStream                        1062   0x1f56030ecb171501    1040
uavcan.equipment.hardpoint.Command                      1070   0xa1a036268b0c3455      24
uavcan.equipment.hardpoint.Status                       1071   0x624a519d42553d82      56
uavcan.equipment.ice.FuelTankStatus                     1129   0x286b4a387ba84bc4     104
uavcan.equipment.ice.reciprocating.CylinderStatus        N/A   0xd68ac83a89d5b36b      80
uavcan.equipment.ice.reciprocating.Status               1120   0xd38aa3ee75537ec6    1565
uavcan.equipment.indication.BeepCommand                 1080   0xbe9ea9fec2b15d52      32
uavcan.equipment.indication.LightsCommand               1081   0x2031d93c8bdd1ec4     485
uavcan.equipment.indication.RGB565                       N/A   0x58a7cef41951ec34      16
uavcan.equipment.indication.SingleLightCommand           N/A   0xe894b8b589807007      24
uavcan.equipment.power.BatteryInfo                      1092   0x249c26548a711966     437
uavcan.equipment.power.CircuitStatus                    1091   0x8313d33d0ddda115      56
uavcan.equipment.power.PrimaryPowerSupplyStatus         1090   0xbba05074ad757480      47
uavcan.equipment.range_sensor.Measurement               1050   0x68fffe70fc771952     120
uavcan.equipment.safety.ArmingStatus                    1100   0x8700f375556a8003       8
uavcan.navigation.GlobalNavigationSolution              2000   0x463b10cccbe51c3d    1860
uavcan.protocol.AccessCommandShell                         6   0x59276b5921c9246e    1040 / 2097
uavcan.protocol.CANIfaceStats                            N/A   0x13b106f0c44ca350     144
uavcan.protocol.DataTypeKind                             N/A   0x9420a73e008e5930       8
uavcan.protocol.GetDataTypeInfo                            2   0x1b283338a7bed2d8     671 / 743
uavcan.protocol.GetNodeInfo                                1   0xee468a8121c46a9e       0 / 3015
uavcan.protocol.GetTransportStats                          4   0xbe6f76a7ec312b04       0 / 578
uavcan.protocol.GlobalTimeSync                             4   0x20271116a793c2db      56
uavcan.protocol.HardwareVersion                          N/A   0x0ad5c4c933f4a0c4    2192
uavcan.protocol.NodeStatus                               341   0x0f0868d0c1a7c6f1      56
uavcan.protocol.Panic                                      5   0x8b79b4101811c1d7      59
uavcan.protocol.RestartNode                                5   0x569e05394a3017f0      40 / 1
uavcan.protocol.SoftwareVersion                          N/A   0xdd46fd376527fea1     120
uavcan.protocol.debug.KeyValue                         16370   0xe02f25d6e0c98ae0     502
uavcan.protocol.debug.LogLevel                           N/A   0x711bf141af572346       3
uavcan.protocol.debug.LogMessage                       16383   0xd654a48e0c049d75     983
uavcan.protocol.dynamic_node_id.Allocation                 1   0x0b2a812620a11d40     141
uavcan.protocol.dynamic_node_id.server.AppendEntries      30   0x8032c7097b48a3cc     249 / 33
uavcan.protocol.dynamic_node_id.server.Discovery         390   0x821ae2f525f69f21      51
uavcan.protocol.dynamic_node_id.server.Entry             N/A   0x7faa779d64fa75c2     168
uavcan.protocol.dynamic_node_id.server.RequestVote        31   0xcdde07bb89a56356      72 / 33
uavcan.protocol.enumeration.Begin                         15   0x196ae06426a3b5d8     759 / 8
uavcan.protocol.enumeration.Indication                   380   0x884cb63050a84f35     815
uavcan.protocol.file.BeginFirmwareUpdate                  40   0xb7d725df72724126    1616 / 1031
uavcan.protocol.file.Delete                               47   0x78648c99170b47aa    1608 / 16
uavcan.protocol.file.EntryType                           N/A   0x6924572fbb2086e5       8
uavcan.protocol.file.Error                               N/A   0xa83071ffea4fae15      16
uavcan.protocol.file.GetDirectoryEntryInfo                46   0x8c46e8ab568bda79    1640 / 1632
uavcan.protocol.file.GetInfo                              45   0x5004891ee8a27531    1608 / 64
uavcan.protocol.file.Path                                N/A   0x12aefc50878a43e2    1608
uavcan.protocol.file.Read                                 48   0x8dcdca939f33f678    1648 / 2073
uavcan.protocol.file.Write                                49   0x515aa1dc77e58429    3192 / 16
uavcan.protocol.param.Empty                              N/A   0x6c4d0e8ef37361df       0
uavcan.protocol.param.ExecuteOpcode                       10   0x3b131ac5eb69d2cd      56 / 49
uavcan.protocol.param.GetSet                              11   0xa7b622f939d1a4d5    1791 / 2967
uavcan.protocol.param.NumericValue                       N/A   0x0da6d6fea22e3587      66
uavcan.protocol.param.Value                              N/A   0x29f14bf484727267    1035

This will not be needed in UAVCAN v1, because we have removed the concept of data type signature. UAVCAN v1 in this sense is much simpler than v0.