]> rtime.felk.cvut.cz Git - CanFestival-3.git/commitdiff
Fixed automatic SDO server creation for slave
authoretisserant <etisserant>
Sat, 28 Jun 2008 16:43:15 +0000 (16:43 +0000)
committeretisserant <etisserant>
Sat, 28 Jun 2008 16:43:15 +0000 (16:43 +0000)
Automatic PDO creation for slave
Remove PDO from EDS when mapping not defined

objdictgen/eds_utils.py
objdictgen/nodemanager.py

index 1a02bc82d9c0ef28f7e77383ccf6d523d6d994ef..c14c3e9c265c11d2a166a14a9eac0e31a638898f 100644 (file)
@@ -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
index eead5ccf0c32772d5afc588411f19cdf3167644e..2b29882c08448a14cced9b95286afe4ab54a1901 100755 (executable)
@@ -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