plugins/canfestival/config_utils.py
changeset 163 482ca562d414
parent 155 515f3fbd1173
child 166 121b18748de0
--- a/plugins/canfestival/config_utils.py	Mon Jun 23 16:06:20 2008 +0200
+++ b/plugins/canfestival/config_utils.py	Mon Jun 23 17:52:21 2008 +0200
@@ -138,6 +138,8 @@
         self.SlavesPdoNumber = {}
         # Dictionary of mapping value where unexpected variables are stored
         self.TrashVariables = {}
+        # Dictionary of pointed variables
+        self.PointedVariables = {}
         
         self.NodeList = nodelist
         self.Manager = self.NodeList.Manager
@@ -145,6 +147,8 @@
         self.MasterNode.SetNodeName(nodename)
         self.PrepareMasterNode()
 
+    def GetPointedVariables(self):
+        return self.PointedVariables
     
     def RemoveUsedNodeCobId(self, node):
         """
@@ -515,17 +519,18 @@
                                      VariableTypeOffset[variable_infos["sizelocation"]] * VariableIncrement + \
                                      variable_infos["nodeid"]
                     
+                    # Generate entry name
+                    indexname = "%s%s%s_%d"%(VariableDirText[variable_infos["pdotype"]],
+                                                 variable_infos["sizelocation"],
+                                                 '_'.join(map(str,current_location)),
+                                                 variable_infos["nodeid"])    
+                    
                     # Search for an entry that has an empty subindex 
                     while mapvariableidx < VariableStartIndex[variable_infos["pdotype"]] + 0x2000:
                         # Entry doesn't exist
                         if not self.MasterNode.IsEntry(mapvariableidx):    
-                            # Generate entry name
-                            indexname = "%s%s%s_%d"%(VariableDirText[variable_infos["pdotype"]],
-                                                     variable_infos["sizelocation"],
-                                                     '_'.join(map(str,current_location)),
-                                                     variable_infos["nodeid"])
                             # Add entry to MasterNode
-                            self.Manager.AddMapVariableToCurrent(mapvariableidx, indexname, 3, 1, self.MasterNode)
+                            self.Manager.AddMapVariableToCurrent(mapvariableidx, "beremiz"+indexname, 3, 1, self.MasterNode)
                             new_index = True
                             nbsubentries = self.MasterNode.GetEntry(mapvariableidx, 0x00)
                         else:
@@ -557,6 +562,9 @@
                         if typeinfos != None:
                             value = (mapvariableidx << 16) + ((nbsubentries) << 8) + typeinfos["size"]
                             self.MasterNode.SetEntry(current_idx + 0x200, subindex, value)
+                        
+                        # Add variable to pointed variables
+                        self.PointedVariables[(mapvariableidx, nbsubentries)] = "%s_%s"%(indexname, subindexname)
 
 def GenerateConciseDCF(locations, current_location, nodelist, sync_TPDOs, nodename):
     """
@@ -574,7 +582,7 @@
     
     dcfgenerator = ConciseDCFGenerator(nodelist, nodename)
     dcfgenerator.GenerateDCF(locations, current_location, sync_TPDOs)
-    return dcfgenerator.GetMasterNode()
+    return dcfgenerator.GetMasterNode(), dcfgenerator.GetPointedVariables()
 
 if __name__ == "__main__":
     import os, sys, getopt