diff --git a/ingenialink/drive_context_manager.py b/ingenialink/drive_context_manager.py index ce214ae1..a87dcdbe 100644 --- a/ingenialink/drive_context_manager.py +++ b/ingenialink/drive_context_manager.py @@ -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 @@ -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 diff --git a/ingenialink/servo.py b/ingenialink/servo.py index a763c00e..3ff48322 100644 --- a/ingenialink/servo.py +++ b/ingenialink/servo.py @@ -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: @@ -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 )