Skip to content

Commit 3b5f869

Browse files
authored
Merge pull request #1 from christiansandberg/master
2 parents 215d585 + a142fb5 commit 3b5f869

File tree

5 files changed

+21
-7
lines changed

5 files changed

+21
-7
lines changed

README.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@ it in `develop mode`_::
5353
$ cd canopen
5454
$ pip install -e .
5555

56+
Unit tests can be run using the pytest_ framework::
57+
58+
$ pip install pytest
59+
$ pytest -v
5660

5761
Documentation
5862
-------------
@@ -233,3 +237,4 @@ logging_ level:
233237
.. _Sphinx: http://www.sphinx-doc.org/
234238
.. _develop mode: https://packaging.python.org/distributing/#working-in-development-mode
235239
.. _logging: https://docs.python.org/3/library/logging.html
240+
.. _pytest: https://docs.pytest.org/

canopen/objectdictionary/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,8 @@ def __init__(self, name: str, index: int, subindex: int = 0):
304304
self.max: Optional[int] = None
305305
#: Default value at start-up
306306
self.default: Optional[int] = None
307+
#: Is the default value relative to the node-ID (only applies to COB-IDs)
308+
self.relative = False
307309
#: The value of this variable stored in the object dictionary
308310
self.value: Optional[int] = None
309311
#: Data type according to the standard as an :class:`int`

canopen/objectdictionary/eds.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,8 @@ def build_variable(eds, section, node_id, index, subindex=0):
262262
if eds.has_option(section, "DefaultValue"):
263263
try:
264264
var.default_raw = eds.get(section, "DefaultValue")
265+
if '$NODEID' in var.default_raw:
266+
var.relative = True
265267
var.default = _convert_variable(node_id, var.data_type, eds.get(section, "DefaultValue"))
266268
except ValueError:
267269
pass

canopen/pdo/base.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,7 @@ def export(self, filename):
103103
if pdo_map.cob_id is None:
104104
continue
105105
frame = canmatrix.Frame(pdo_map.name,
106-
Id=pdo_map.cob_id,
107-
extended=0)
106+
arbitration_id=pdo_map.cob_id)
108107
for var in pdo_map.map:
109108
is_signed = var.od.data_type in objectdictionary.SIGNED_TYPES
110109
is_float = var.od.data_type in objectdictionary.FLOAT_TYPES
@@ -118,8 +117,8 @@ def export(self, filename):
118117
name = name.replace(" ", "_")
119118
name = name.replace(".", "_")
120119
signal = canmatrix.Signal(name,
121-
startBit=var.offset,
122-
signalSize=var.length,
120+
start_bit=var.offset,
121+
size=var.length,
123122
is_signed=is_signed,
124123
is_float=is_float,
125124
factor=var.od.factor,
@@ -128,9 +127,9 @@ def export(self, filename):
128127
unit=var.od.unit)
129128
for value, desc in var.od.value_descriptions.items():
130129
signal.addValues(value, desc)
131-
frame.addSignal(signal)
132-
frame.calcDLC()
133-
db.frames.addFrame(frame)
130+
frame.add_signal(signal)
131+
frame.calc_dlc()
132+
db.add_frame(frame)
134133
formats.dumpp({"": db}, filename)
135134
return db
136135

test/test_eds.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@ def test_variable(self):
2626
self.assertEqual(var.data_type, canopen.objectdictionary.UNSIGNED16)
2727
self.assertEqual(var.access_type, 'rw')
2828
self.assertEqual(var.default, 0)
29+
self.assertFalse(var.relative)
30+
31+
def test_relative_variable(self):
32+
var = self.od['Receive PDO 0 Communication Parameter']['COB-ID use by RPDO 1']
33+
self.assertTrue(var.relative)
34+
self.assertEqual(var.default, 512 + self.od.node_id)
2935

3036
def test_record(self):
3137
record = self.od['Identity object']

0 commit comments

Comments
 (0)