I am working on an application that requires that a firmware update is possible. The procedure in terms of UAVCAN messages is roughly:
Updater (GUI) requests update (uavcan.protocol.file.BeginFirmwareUpdate) from updatee (MCU), updatee responds and saves path.
Updatee requests file info (uavcan.protocol.file.GetInfo) with the path as attribute, updater responds and updatee checks if the file fits in its memory.
Update reads file (uavcan.protocol.file.Read) into memory.
In the first part the path length seems to be missing. path.len is always 0. To work around this temporarily I have hardcoded the filename. This gets me to step 2.
In step 3 the data.len is always 0 as well. This I can work around by calculating the number of packages required for the file size given by step 2. The offset in the request does not get higher than 1 unless I edit file_Read.c which was generated by the dsdl compiler and change the saturation macro or skip it all together.
Any ideas on what might be going on here?