Skip to content

Commit 805413e

Browse files
authored
profiles/p402: Fix disabled RPDO usage (#200)
The list of RPDOs did not check whether the mapped RPDOs were enabled. As a result the controlword setter would try to write using a disabled RPDO which results in a timeout.
1 parent 994809c commit 805413e

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

canopen/profiles/p402.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -221,10 +221,11 @@ def _init_rpdo_pointers(self):
221221
# If RPDOs have overlapping indecies, rpdo_pointers will point to
222222
# the first RPDO that has that index configured.
223223
for rpdo in self.rpdo.values():
224-
for obj in rpdo:
225-
logger.debug('Configured RPDO: {0}'.format(obj.index))
226-
if obj.index not in self.rpdo_pointers:
227-
self.rpdo_pointers[obj.index] = obj
224+
if rpdo.enabled:
225+
for obj in rpdo:
226+
logger.debug('Configured RPDO: {0}'.format(obj.index))
227+
if obj.index not in self.rpdo_pointers:
228+
self.rpdo_pointers[obj.index] = obj
228229

229230
def _check_controlword_configured(self):
230231
if 0x6040 not in self.rpdo_pointers: # Controlword

0 commit comments

Comments
 (0)