New release: v2.2.6, v2.1.8 and v2.0.9
v2.2.6, v2.1.8 and v2.0.9 have just been released. These are minor releases containing only bugfixes and minor improvements.
Bug fixes
The following bugs have been fixed in all three versions:
co_val_cmp()now correctly comparesTIME_OF_DAYandTIME_DIFFvalues: thedaysmember is compared before themsmember.- A potential race condition was fixed in asynchronous I/O functions, which made it possible in a multi-threaded environment for an asynchronous operation to complete and release its promise before the invoking function acquired the corresponding future.
- The Transmit-PDO event timer no longer stops in case of an error.
co_sdev_load()no longer causes compilation failures whenLELY_NO_CO_OBJ_NAMEis defined.
The following additional issues have been addressed in v2.2.6:
- Drivers inheriting from
canopen::LoopDrivercan now use theJoin()method in their destructor to ensure the thread running the dedicated event loop finishes its execution before continuing. This is necessary to guarantee that all tasks involving registered logical drivers have finished before those drivers are destroyed. TheJoin()method is public, so it can also be used to synchronize the destruction of logical drivers that are not owned by the driver inheriting fromLoopDriver. - The
USleep()method incanopen::LoopDrivernow uses an actual timer instead of relying on therun_for()method ofev::Loop. This makes the implementation consistent withcanopen::FiberDriverand removes the 1 ms resolution of the timeout. - The
AsyncWait()operation used by theUSleep()method incanopen::LoopDriverandcanopen::FiberDriveris now canceled if the event loop is interrupted. dcfgennow copies the producer heartbeat time from object 1017h in the slave EDS/DCF if theheartbeat_producerattribute is not explicitly specified.dcfgenno longer omits the SDO request to set the number of mapped objects to 0 before changing the PDO mapping.- The
on_can_state()method inio::CanNetnow receives thenew_stateandold_statearguments in the correct order.
Download
You can download the source from GitLab or the Ubuntu packages from our PPA.