canfestival/canfestival.py
changeset 1739 ec153828ded2
parent 1738 d2e979738700
child 1740 b789b695b5c6
equal deleted inserted replaced
1738:d2e979738700 1739:ec153828ded2
   176             if result:
   176             if result:
   177                 self.GetCTRoot().logger.write_error(_("Error: Export slave failed\n"))
   177                 self.GetCTRoot().logger.write_error(_("Error: Export slave failed\n"))
   178         dialog.Destroy()
   178         dialog.Destroy()
   179 
   179 
   180     ConfNodeMethods = [
   180     ConfNodeMethods = [
   181         {"bitmap" : "ExportSlave",
   181         {
   182          "name" : _("Export slave"),
   182             "bitmap":    "ExportSlave",
   183          "tooltip" : _("Export CanOpen slave to EDS file"),
   183             "name":    _("Export slave"),
   184          "method" : "_ExportSlave"},
   184             "tooltip": _("Export CanOpen slave to EDS file"),
       
   185             "method":   "_ExportSlave"
       
   186         },
   185     ]
   187     ]
   186 
   188 
   187     def CTNTestModified(self):
   189     def CTNTestModified(self):
   188         return self.ChangesToSave or self.OneFileHasChanged()
   190         return self.ChangesToSave or self.OneFileHasChanged()
   189 
   191 
   226         slave = self.GetCurrentNodeCopy()
   228         slave = self.GetCurrentNodeCopy()
   227         slave.SetNodeName("OD_%s" % prefix)
   229         slave.SetNodeName("OD_%s" % prefix)
   228         # allow access to local OD from Slave PLC
   230         # allow access to local OD from Slave PLC
   229         pointers = config_utils.LocalODPointers(locations, current_location, slave)
   231         pointers = config_utils.LocalODPointers(locations, current_location, slave)
   230         res = gen_cfile.GenerateFile(Gen_OD_path, slave, pointers)
   232         res = gen_cfile.GenerateFile(Gen_OD_path, slave, pointers)
   231         if res :
   233         if res:
   232             raise Exception, res
   234             raise Exception, res
   233         res = eds_utils.GenerateEDSFile(os.path.join(buildpath, "Slave_%s.eds" % prefix), slave)
   235         res = eds_utils.GenerateEDSFile(os.path.join(buildpath, "Slave_%s.eds" % prefix), slave)
   234         if res :
   236         if res:
   235             raise Exception, res
   237             raise Exception, res
   236         return [(Gen_OD_path,local_canfestival_config.getCFLAGS(CanFestivalPath))],"",False
   238         return [(Gen_OD_path,local_canfestival_config.getCFLAGS(CanFestivalPath))],"",False
   237 
   239 
   238     def LoadPrevious(self):
   240     def LoadPrevious(self):
   239         self.LoadCurrentPrevious()
   241         self.LoadCurrentPrevious()
   393             if self._View is not None:
   395             if self._View is not None:
   394                 self._View.SetBusId(self.GetCurrentLocation())
   396                 self._View.SetBusId(self.GetCurrentLocation())
   395             return self._View
   397             return self._View
   396 
   398 
   397     ConfNodeMethods = [
   399     ConfNodeMethods = [
   398         {"bitmap" : "ShowMaster",
   400         {
   399          "name" : _("Show Master"),
   401             "bitmap":    "ShowMaster",
   400          "tooltip" : _("Show Master generated by config_utils"),
   402             "name":    _("Show Master"),
   401          "method" : "_ShowGeneratedMaster"}
   403             "tooltip": _("Show Master generated by config_utils"),
       
   404             "method":   "_ShowGeneratedMaster"
       
   405         }
   402     ]
   406     ]
   403 
   407 
   404     def OnCloseEditor(self, view):
   408     def OnCloseEditor(self, view):
   405         ConfigTreeNode.OnCloseEditor(self, view)
   409         ConfigTreeNode.OnCloseEditor(self, view)
   406         if self._GeneratedMasterView == view:
   410         if self._GeneratedMasterView == view:
   444             master, pointers = config_utils.GenerateConciseDCF(locations, current_location, self, self.CanFestivalNode.getSync_TPDOs(),"OD_%s" % prefix)
   448             master, pointers = config_utils.GenerateConciseDCF(locations, current_location, self, self.CanFestivalNode.getSync_TPDOs(),"OD_%s" % prefix)
   445         except config_utils.PDOmappingException, e:
   449         except config_utils.PDOmappingException, e:
   446             raise Exception, e.message
   450             raise Exception, e.message
   447         # Do generate C file.
   451         # Do generate C file.
   448         res = gen_cfile.GenerateFile(Gen_OD_path, master, pointers)
   452         res = gen_cfile.GenerateFile(Gen_OD_path, master, pointers)
   449         if res :
   453         if res:
   450             raise Exception, res
   454             raise Exception, res
   451 
   455 
   452         file = open(os.path.join(buildpath, "MasterGenerated.od"), "w")
   456         file = open(os.path.join(buildpath, "MasterGenerated.od"), "w")
   453         dump(master, file)
   457         dump(master, file)
   454         file.close()
   458         file.close()
   487                         child["type"] = local_canfestival_config.DLL_LIST
   491                         child["type"] = local_canfestival_config.DLL_LIST
   488         return infos
   492         return infos
   489 
   493 
   490     def GetCanDriver(self):
   494     def GetCanDriver(self):
   491         res = self.CanFestivalInstance.getCAN_Driver()
   495         res = self.CanFestivalInstance.getCAN_Driver()
   492         if not res :
   496         if not res:
   493             return ""
   497             return ""
   494         return res
   498         return res
   495 
   499 
   496     def CTNGenerate_C(self, buildpath, locations):
   500     def CTNGenerate_C(self, buildpath, locations):
   497         can_driver = self.GetCanDriver()
   501         can_driver = self.GetCanDriver()
   498         if can_driver is not None:
   502         if can_driver is not None:
   499             can_drivers = local_canfestival_config.DLL_LIST
   503             can_drivers = local_canfestival_config.DLL_LIST
   500             if can_driver not in can_drivers :
   504             if can_driver not in can_drivers:
   501                 can_driver = can_drivers[0]
   505                 can_driver = can_drivers[0]
   502             can_drv_ext = self.GetCTRoot().GetBuilder().extension
   506             can_drv_ext = self.GetCTRoot().GetBuilder().extension
   503             can_drv_prefix = self.GetCTRoot().GetBuilder().dlopen_prefix
   507             can_drv_prefix = self.GetCTRoot().GetBuilder().dlopen_prefix
   504             can_driver_name = can_drv_prefix + "libcanfestival_" + can_driver + can_drv_ext
   508             can_driver_name = can_drv_prefix + "libcanfestival_" + can_driver + can_drv_ext
   505         else:
   509         else:
   506             can_driver_name = ""
   510             can_driver_name = ""
   507 
   511 
   508 
   512 
   509         format_dict = {"locstr" : "_".join(map(str,self.GetCurrentLocation())),
   513         format_dict = {"locstr": "_".join(map(str,self.GetCurrentLocation())),
   510                        "candriver" : can_driver_name,
   514                        "candriver": can_driver_name,
   511                        "nodes_includes" : "",
   515                        "nodes_includes": "",
   512                        "board_decls" : "",
   516                        "board_decls": "",
   513                        "nodes_init" : "",
   517                        "nodes_init": "",
   514                        "nodes_open" : "",
   518                        "nodes_open": "",
   515                        "nodes_stop" : "",
   519                        "nodes_stop": "",
   516                        "nodes_close" : "",
   520                        "nodes_close": "",
   517                        "nodes_send_sync" : "",
   521                        "nodes_send_sync": "",
   518                        "nodes_proceed_sync" : "",
   522                        "nodes_proceed_sync": "",
   519                        "slavebootups" : "",
   523                        "slavebootups": "",
   520                        "slavebootup_register" : "",
   524                        "slavebootup_register": "",
   521                        "post_sync" : "",
   525                        "post_sync": "",
   522                        "post_sync_register" : "",
   526                        "post_sync_register": "",
   523                        "pre_op" : "",
   527                        "pre_op": "",
   524                        "pre_op_register" : "",
   528                        "pre_op_register": "",
   525                        }
   529                        }
   526         for child in self.IECSortedChildren():
   530         for child in self.IECSortedChildren():
   527             childlocstr = "_".join(map(str,child.GetCurrentLocation()))
   531             childlocstr = "_".join(map(str,child.GetCurrentLocation()))
   528             nodename = "OD_%s" % childlocstr
   532             nodename = "OD_%s" % childlocstr
   529 
   533