Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_block_download_not_supported(self):
data = b"TEST DEVICE"
with self.assertRaises(canopen.SdoAbortedError) as context:
self.remote_node.sdo[0x1008].open('wb',
size=len(data),
block_transfer=True)
self.assertEqual(context.exception.code, 0x05040001)
def test_abort(self):
with self.assertRaises(canopen.SdoAbortedError) as cm:
_ = self.remote_node.sdo.upload(0x1234, 0)
# Should be Object does not exist
self.assertEqual(cm.exception.code, 0x06020000)
with self.assertRaises(canopen.SdoAbortedError) as cm:
_ = self.remote_node.sdo.upload(0x1018, 100)
# Should be Subindex does not exist
self.assertEqual(cm.exception.code, 0x06090011)
with self.assertRaises(canopen.SdoAbortedError) as cm:
_ = self.remote_node.sdo[0x1001].data
# Should be Resource not available
self.assertEqual(cm.exception.code, 0x060A0023)
def test_abort(self):
self.data = [
(TX, b'\x40\x18\x10\x01\x00\x00\x00\x00'),
(RX, b'\x80\x18\x10\x01\x11\x00\x09\x06')
]
with self.assertRaises(canopen.SdoAbortedError) as cm:
_ = self.network[2].sdo[0x1018][1].raw
self.assertEqual(cm.exception.code, 0x06090011)
if subindex is not None:
logger.info(str('SDO [{index:#06x}][{subindex:#06x}]: {name}: {value:#06x}'.format(
index=index,
subindex=subindex,
name=name,
value=value)))
self.sdo[index][subindex].raw = value
else:
self.sdo[index].raw = value
logger.info(str('SDO [{index:#06x}]: {name}: {value:#06x}'.format(
index=index,
name=name,
value=value)))
except canopen.SdoCommunicationError as e:
logger.warning(str(e))
except canopen.SdoAbortedError as e:
# WORKAROUND for broken implementations: the SDO is set but the error
# "Attempt to write a read-only object" is raised any way.
if e.code != 0x06010002:
# Abort codes other than "Attempt to write a read-only object"
# should still be reported.
logger.warning('[ERROR SETTING object {0:#06x}:{1:#06x}] {2}'.format(index, subindex, str(e)))
raise