Repository navigation
go-canopen v0.3.2
Date: 2026-10-30
Previous release: v0.3.1
Fixes of the program download (CiA 302-3) and of the scan in master, and
of the node-ID assignment in lss.
- A step of
DownloadProgramwhose answer came after the SDO timeout
(a loaded system, a slow flash) was carried out by the device, but the
master repeated it: Clear and the program data were then refused with
abort 0x08000022 (the program was no longer in the state they need).
The download failed, a boot slave process ended with status I, and when
the data had reached the device the new program stayed stopped: the
next boot slave process found it up to date and did not start it. A
step that timed out is now repeated only after reading the program
state (0x1F51), and a late answer met by the next request (a protocol
error) no longer fails the download. A timed-out start is repeated too
unless the program runs. Found by CI; regression test
TestDownloadProgramLateAnswers. Master.Scantook a device for absent, without an error, when one
request timed out (a lost frame, a loaded system). It now repeats a
request that timed out once, so a scan of absent nodes takes twice as
long. Found by CI; regression testTestScanRepeatsTimedOutRequest.lss.Master.FastscanSelectandAssignAll: when the acknowledgement of
the Fastscan step that selects a slave was lost, the selection restarted
with that slave still in the configuration state. If its answer to the
check of the next selection was lost too, the configure node-ID request
reached both slaves and they took the same node-ID. The master now
switches the slaves to waiting and checks before it restarts, and sends
the switch before each check of that step. The case needs lost frames;
see LIMITATIONS.md. Found bymake chaos; regression test
TestAssignAllLostSelectionAck.