From 75302f70dffd1a21b1301f61bb692e6a7c085703 Mon Sep 17 00:00:00 2001 From: etisserant Date: Sat, 28 Jun 2008 16:43:15 +0000 Subject: [PATCH] Fixed automatic SDO server creation for slave Automatic PDO creation for slave Remove PDO from EDS when mapping not defined --- objdictgen/eds_utils.py | 8 ++++++++ objdictgen/nodemanager.py | 13 ++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/objdictgen/eds_utils.py b/objdictgen/eds_utils.py index 1a02bc8..c14c3e9 100644 --- a/objdictgen/eds_utils.py +++ b/objdictgen/eds_utils.py @@ -516,6 +516,14 @@ def GenerateFileContent(Node, filepath): optionals = [] manufacturers = [] + # Remove all unused PDO + for entry in entries[:]: + if 0x1600 <= entry < 0x1800 or 0x1A00 <= entry < 0x1C00: + subentry_value = Node.GetEntry(entry, 1) + if subentry_value is None or subentry_value == 0: + entries.remove(entry) + entries.remove(entry - 0x200) + # For each entry, we generate the entry section or sections if there is subindexes for entry in entries: # Extract infos and values for the entry diff --git a/objdictgen/nodemanager.py b/objdictgen/nodemanager.py index eead5cc..2b29882 100755 --- a/objdictgen/nodemanager.py +++ b/objdictgen/nodemanager.py @@ -200,6 +200,7 @@ class NodeManager: self.CurrentNode.SetNodeType(type) self.CurrentNode.SetNodeDescription(description) AddIndexList = self.GetMandatoryIndexes() + AddSubIndexList = [] if NMT == "NodeGuarding": AddIndexList.extend([0x100C, 0x100D]) elif NMT == "Heartbeat": @@ -227,12 +228,22 @@ class NodeManager: AddIndexList.extend([0x1021, 0x1022]) if type == "slave": # add default SDO server - AddIndexList.extend([0x1280]) + AddIndexList.append(0x1200) + # add default 4 receive and 4 transmit PDO + for comm, mapping in [(0x1400, 0x1600),(0x1800, 0x1A00)]: + firstparamindex = self.GetLineFromIndex(comm) + firstmappingindex = self.GetLineFromIndex(mapping) + AddIndexList.extend(range(firstparamindex, firstparamindex + 4)) + for idx in range(firstmappingindex, firstmappingindex + 4): + AddIndexList.append(idx) + AddSubIndexList.append((idx, 8)) # Add a new buffer index = self.AddNodeBuffer(self.CurrentNode.Copy(), False) self.SetCurrentFilePath("") # Add Mandatory indexes self.ManageEntriesOfCurrent(AddIndexList, []) + for idx, num in AddSubIndexList: + self.AddSubentriesToCurrent(idx, num) return index else: return result -- 2.39.2