I try to implement a vendor-specific data type to configure my ESC’s. I know the structure of the message and the DSDL signature. Unfortunately, I don’t know the exact DSDL defintion of the message. As a result, I was able to implement a DSDL with the correct structure but with the wrong DSDL signature. When I try to read the message with the UAVCAN-GUI I get a CRC mismatch because the ESC uses an other DSDL signature to compute the CRC than the UAVCAN-GUI.
How can I solve this issue? Is there a possibility to pass a specific DSDL signature for the CRC computation or a directive I can use in the DSDL defintion for the compiler to output a specific DSDL signature?
I still use v0 UAVCAN and use multi frame transfer for the message. I think in v1 there’s versioning to solve this issue but for the moment I cannot update to v1.
Thank you for your help!
We did not foresee a use case that you are describing since it is assumed that if you want to deal with a particular data type you can access its definition. Could you please elaborate how did you end up in this situation where you know the data structure but don’t have its definition?
The setup is the following, I got some ESCs for a drone. The ESCs can be configured with a USB to CAN adapter and a windows application provided by the vendor of the ESCs. My idea was to configure the ESCs directly through the drone. I got the description of the data structure from the vendor in C and the DSDL signature. I tried to implement the structure and realized the DSDL signature I received from the vendor did not correspond to the data structure. To solve this issue I changed the DSDL signature in the libuavcan library in the corresponding DSDL defintion header file.
This is what needs fixing here. Can you get in touch with the vendor again and ask them to send you the DSDL sources instead of C struct + signature? If they object, tell them that they are misusing UAVCAN.
I’ll try to get in touch with the manufacturer of the ESC
Thanks for your response