There was a problem with block transfer, when transmitting sequence of
data. If CANsend() failed (socket buffer full), message was dropped.
Now dropped message is marked with bufferFull flag and then it is
re-transmitted later by the driver, as is in the original behaviour of
CANopenNode.
Testing and multiple fixes were made in newOD branch. This commit includes
relevant code from newOD branch, synchronized to this branch.
Following modules were updated:
- SDO client, CO_gateway_ascii, CO_fifo
- socketCAN : CO_epoll_interface, CO_main_basic
SDO client (with gateway and fifo) which was rewritten after v1.3 is now
tested and works the same as in newOD branch. Same is socketCAN. Works as here:
https://github.com/CANopenNode/CANopenSocket/tree/master/examples/basicDevice
SDO server is quite the same as in v1.3. I made no additional testing at
this point.
There are some other updates:
- CO_driver.h, CO_config.h: additional CO_CONFIG_DEBUG macro.
- CO_driver.h: fixed some typos, added optional CO_errinfo() macro.
- CO_NMT_Heartbeat: added CO_NMT_setInternalState().
- documentation synchronized.
- example/_project.xml updated, can be used as template with libedssharp.
- CO_LSSslave: move expensive code from CAN receive (interrupt) to mainline
CO_LSSslave_process() function.
- LSS slave now runs in parallel to other CANopen objects.
- LSS slave and master can run both on same device.
- LSS slave, LSS master and gateway-ascii(CiA309) LSS functions tested.
- LSSusage.md updated.
- Rename local variable 'token' into 'tok' in CO_GTWA_process().
- CO_LSSmaster: replace CO_LSSmaster_InquireNodeId() with more generic
CO_LSSmaster_Inquire(). CiA309-3 command 'lss_inquire_addr' now works
also according to standard.
- CANopen.h: fix doxygen.
- gettingStarted.md: Change example "master" device from node-Id=3 to 1...
- add CO_fifo_st enumerator for use in CO_fifo_cpyTok2xx functions.
- 309/CO_gateway_ascii: add x8 to x64 nonstandard data types
- example compiles now
- Fix "unused argument" warnings in socketCAN
microcontroller independent module.
It includes NMT master, LSS master and SDO client interface.
Interface is non-blocking, it is added to mainline.
Example for Linux stdio and socket is included.
Added CO_fifo.h/c for fifo data buffer, used with rewritten SDO client, etc
SDO client is rewritten. Now includes r/w fifo interface to transfer data.
doc/gettingStarted.md is updated.