1
0
Fork 0
Commit graph

74 commits

Author SHA1 Message Date
Janez
72e8404297 Remove unnecessary #include <bits/getopt_core.h> in Linux driver
https://github.com/CANopenNode/CANopenSocket/issues/26
2021-03-22 23:03:37 +01:00
Julien PEYREGNE
877edc50a8 Reduce variable scope 2021-03-19 09:54:17 +01:00
Julien PEYREGNE
b6f04d65f8 Fix null pointer dereference warnings 2021-03-19 09:54:17 +01:00
Janez
66d0e14ef4 301/CO_PDO.h/c updated to newOD. 2021-03-18 15:13:06 +01:00
Janez
fc81777097 Pass CO_CANmodule_t argument to all the CO_LOCK_...() and CO_UNLOCK_...() macros.
https://github.com/CANopenNode/CANopenNode/issues/162#issuecomment-777438875
2021-03-02 21:28:22 +01:00
Janez
9b3f329d52 301/CO_SYNC.h/c updated to newOD. 2021-03-01 17:16:04 +01:00
Janez
88558203a0 Linux socketCAN driver, fix CANsend().
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. Same as commit acd719e27 in v2.0.
2021-02-08 17:01:55 +01:00
Janez
3ee8725036 Simplify Data Storage
- remove CO_storage from CANopen.h/c (revert)
- add target specific CO_storage_entry_t into CO_driver(_target).h
2021-02-01 15:24:37 +01:00
Janez
49f7c80114 Heartbeat consumer updated to newOD 2021-01-30 14:40:27 +01:00
Janez
8cff68f196 CO_config.h: use global macros for common definitions 2021-01-25 21:32:51 +01:00
Janez
464a856a3f 301/CO_time.c updated to newOD. Some principles changed. 2021-01-25 12:52:52 +01:00
Janez
9dce037ecb Add data storage, common and Linux specific functions, tested in Linux. 2021-01-25 12:42:10 +01:00
Janez
5538b5e1f8 Remove CO_errinfo() from driver and put errInfo into CO_CANopenInit() as arg 2021-01-20 12:49:20 +01:00
Janez
51d64df860 OD interface simplified #162
OD_extension is now configurable by application only.
2021-01-07 08:34:53 +01:00
Janez
7b5de9f383 Replace type char with uint8_t, where appropriate.
Fix typos and clarify CO_ODinterface.
Remove unnecessary types from CO_driver.h.
2021-01-05 12:27:22 +01:00
Janez
267a2dafb2 Replace type char with uint8_t or int8_t, where appropriate
305/CO_LSS.h now passing -Wextra warnings
2021-01-05 09:22:19 +01:00
Janez
d62de8dc64 Minor updates 2020-12-28 13:23:57 +01:00
Janez
9e9fce74a9 Updates and testing of OD interface, SDO server, SDO client, gateway, etc.
- SDO server: Change behavior for string data type + fixes + test all
- SDO client: fixes + test all
- OD interface: Special behavior for string data type
- CO_driver.h: added default debug configuration macros + fix spelling
- Gateway + fifo: added base64 support + updates
- CO_CANopenInit() - added arguments.
- update some documentation
- CO_epoll_interface fixes.
- CO_main_basic.c updates
2020-12-24 14:15:10 +01:00
Janez
ee1d8d0c81 Restore CO_CONFIG_HB_CONS_CALLBACK_CHANGE option, same as #241 2020-10-26 19:05:26 +01:00
Janez
82eeec2d23 Fix gateway socket hangup handling. Speed-up gateway processing.
Same as 65464f8f
2020-10-26 18:08:34 +01:00
Janez
0e317dddf3 Add CO_errinfo() into CO_driver.h and driver_targets.
Add additional error info for 'CO_ERROR_OD_PARAMETERS'.
2020-10-26 18:05:47 +01:00
Janez
f73025ef65 CANopenNode V2.0 pre-release 2020-10-07 17:50:25 +02:00
Janez
7a43f98f24 Configuration macros updated 2020-10-07 13:47:07 +02:00
Janez
010c6ae6a1 fix config macros in socketCAN/CO_epoll_interface.c 2020-10-02 08:49:42 +02:00
Janez
f142e893ad Can run in single thread in Linux. 2020-09-29 12:46:02 +02:00
Janez
23bc5d38a7 Reorganize socketCAN/CO_Linux_threads
- Rename files to CO_epoll_interface
 - Object oriented, more flexible, separate functions
 - move epoll, timerfd and eventfd system calls from CO_driver.c to CO_epoll_interface.c
2020-09-29 09:00:31 +02:00
Janez
ac4ca2893a Remove duplicated CANopenConfiguredOK from main functions. Use CO->nodeIdUnconfigured instead. 2020-09-23 09:06:57 +02:00
Janez
d4b78771b3 socketCAN: Add CO_CANptrSocketCan_t object for "CANptr" argument for CO_CANmodule_init() function 2020-09-23 08:32:30 +02:00
Janez
a528eb1669 Better organised configuration macros (CO_config.h):
- rearranged and better documented
 - default values moved from CO_driver.h into appropriate files
 - rearranged also in CO_driver_target.h files
 - parts of the stack or whole objects can be disabled.
 - configuration is verified for depencies

Additional:
 - renamed some members of CO_Default_CAN_ID_t
 - moved helpers CO_setUint32() etc from CO_SDOserver.h into CO_driver.h.
 - change wrong CO_ERROR_PARAMETERS to CO_ERROR_ILLEGAL_ARGUMENT.
 - renamed CO_ERROR_PARAMETERS to CO_ERROR_OD_PARAMETERS
2020-09-14 15:50:21 +02:00
Janez
3fb0a3ee09 Fix compile error with older kernels #211 2020-08-03 07:48:40 +02:00
Janez
ca452c47cc CO_driver interface: remove Emergency object dependency for reporting CAN
errors, use CANerrorStatus own variable instead. Emergency object updated.
2020-06-13 14:06:35 +02:00
Janez
dd1677b5bc Integrate LSS slave into CANopenNode more directly.
- 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.
2020-06-09 14:55:07 +02:00
Janez
bd3326fed9 Make own file for CANopen status LED diodesLED indicator indication
(CiA303-3) moved from NMT into own files. Now fully comply to standard.
2020-06-05 18:02:26 +02:00
Janez
ae220f9115 Configuration for LSS updated. 2020-05-29 09:56:05 +02:00
Janez
cb9b2cce42 Add printout of message log from CANopen gateway-ascii (non-standard). 2020-05-29 07:36:23 +02:00
Janez
f41069561a Make SDO client and NMT master optional in gateway_ascii 2020-05-28 16:40:21 +02:00
Janez
c1a30b8a03 Some style corrections
- 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
2020-05-15 15:52:22 +02:00
Janez
b5bfeec42a Added CANopen gateway-ascii command interface according to CiA309-3 as a
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.
2020-05-12 18:11:43 +02:00
Janez
d9c16ae763
Merge pull request #183 from DISTORTEC/even-moar-callbacks
Add CO_TIME_initCallbackPre(), convert {T,R}PDO_CALLS_EXTENSION to config options
2020-05-12 17:30:59 +02:00
Freddie Chopin
b4b0fe069f Convert {T,R}PDO_CALLS_EXTENSION to CO_CONFIG_{T,R}PDO_CALLS_EXTENSION
User can now enable extension callbacks in RPDO/TPDO handling paths
simply by configuration flags instead of modifying sources or by passing
the defines directly to the compiler.
2020-05-06 18:22:50 +02:00
Freddie Chopin
9b8a296fb7 Add CO_TIME_initCallbackPre() for received TIME messages
This optional mechanism allows to immediatelly wake the thread that
processes TIME, without waiting for its next tick.
2020-05-06 18:08:45 +02:00
Freddie Chopin
466bf0ffb7 Fix "comparison of integer expressions of different signedness" warning
With -Wextra GCC gives:

socketCAN/CO_driver.c: In function ‘setRxFilters’:
socketCAN/CO_driver.c:159:19: warning: comparison of integer expressions
of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’}
[-Wsign-compare]
  159 |     for (i = 0; i < CANmodule->CANinterfaceCount; i ++) {
      |                   ^
2020-05-06 16:31:36 +02:00
Freddie Chopin
aa6075b3c8
Add CO_..._initCallbackPre() for RPDO and SYNC (#178)
* Merge two parts of CO_PDO_receive() into single common code

* Add CO_RPDO_initCallbackPre() for received RPDO messages

This optional mechanism allows to immediatelly wake the thread that
processes RPDO, without waiting for its next tick.

* Add CO_SYNC_initCallbackPre() for received SYNC messages

This optional mechanism allows to immediatelly wake the thread that
processes SYNC, without waiting for its next tick.
2020-05-05 13:23:26 +02:00
Freddie Chopin
4c3011d34a
Replace all memcpy/memset-like functions with standard <string.h> functions (#175)
* Use standard memcpy() instead of CO_memcpy()

* Remove CO_memcpy()

* Use standard memset() instead of CO_memset()

* Remove CO_memset()

* Move helper functions from CO_SDOserver.c to header and make them inline

* Implement CO_getUint16() with memcpy()

* Implement CO_getUint32() with memcpy()

* Implement CO_setUint16() with memcpy()

* Implement CO_setUint32() with memcpy()

* Define memcpy() as CO_memcpySwapX() for little-endian systems

* Fix several writes past the buffer due to hardcoded sizes

Use more "generic" sizes (via sizeof()) instead of hardcoded number in
all calls to memset() to avoid 1-byte errors which result in writes past
the buffer, for example:

memset(&LSSslave->TXbuff->data[5], 0, 4);
in CO_LSSslave_serviceInquire()

memset(&LSSmaster->TXbuff->data[6], 0, 3);
in CO_LSSmaster_switchStateSelectInitiate()

* Use "generic" size in calls to memcpy() where possible

* Remove CO_bytes_t

This type was used only for CO_{get,set}Uint{16,32}().
2020-05-04 11:22:32 +02:00
Janez
5a2a1e85cf Update configuration macros. SDO state machine preview. 2020-04-29 13:12:07 +02:00
Janez
ffd5027cb2 Make SYNC optional in TPDO and RPDO. 2020-03-20 18:47:16 +01:00
Janez
6e28914ca9 Make calculation of timerNext_us optional. 2020-03-20 16:44:37 +01:00
Janez
c88194e813 Add Stack configuration macros to most of CANopenNode objects.
Add CO_NMT_initCallbackPre()
2020-03-19 18:07:23 +01:00
Janez
d9c44c69d1 Change non-descriptive CO_***_initCallback() into CO_***_initCallbackPre().
Change CO_NMT_initCallback() into CO_NMT_initCallbackChange().
Change type of NMT->operatingState from uint8_t into enum CO_NMT_internalState_t.
2020-03-18 23:19:29 +01:00
Janez
b8e821d0dd Add CO_NMT_UNKNOWN state for Heartbeat consumer. 2020-03-18 21:46:34 +01:00