Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions ingenialink/drive_context_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

from ingenialink.dictionary import CanOpenObject
from ingenialink.enums.register import RegAccess
from ingenialink.ethercat.servo import EthercatServo
from ingenialink.exceptions import ILIOError
from ingenialink.register import Register
from ingenialink.servo import RegisterAccessOperation, Servo
Expand Down Expand Up @@ -185,6 +186,8 @@ def _store_register_data(self) -> None:
self._original_register_values[axis][uid] = register_value

def _store_objects_data(self) -> None:
if not isinstance(self.drive, EthercatServo):
return
for obj in self.drive.dictionary.all_objs():
uid = obj.uid
# Always read the rpdo/tpdo map objects using complete access
Expand Down
19 changes: 11 additions & 8 deletions ingenialink/servo.py
Original file line number Diff line number Diff line change
Expand Up @@ -1420,7 +1420,7 @@ def read_complete_access(
buffer_size: Size of the buffer to read.

Raises:
ValueError: if buffer size is not specified or cannot be detected
ValueError: if buffer size is not specified or cannot be detected for EthercatRegister.
TypeError: if the register is not a CanopenRegister or EthercatRegister.

Returns:
Expand All @@ -1434,14 +1434,17 @@ def read_complete_access(
_reg = reg.registers[0]
buffer_size = reg.byte_length

if buffer_size is None:
raise ValueError(
"Buffer size must be specified for complete access read."
"Alternatively, use a CanOpenObject to infer the size required "
"automatically."
)
if isinstance(_reg, EthercatRegister):
if buffer_size is None:
raise ValueError(
"Buffer size must be specified for complete access read."
"Alternatively, use a CanOpenObject to infer the size required "
"automatically."
)
value = self._read_raw(reg=_reg, buffer_size=buffer_size, complete_access=True)
else:
value = self._read_raw(reg=_reg)

value = self._read_raw(_reg, buffer_size=buffer_size, complete_access=True)
self._notify_register_update_complete_access(
_reg, value, operation=RegisterAccessOperation.READ
)
Expand Down