# HG changeset patch # User laurent # Date 1329263064 -3600 # Node ID d376a8b0b602fe751c0af91353b3912a0fd58d75 # Parent 383864958dacd2d149e4daf43f525def26a7a166# Parent 57aa9da845d5f682dc8ffbb41342c6e96f2a1a67 Merge with Edouard's Modifications diff -r 383864958dac -r d376a8b0b602 Beremiz.py --- a/Beremiz.py Tue Feb 14 12:20:19 2012 +0100 +++ b/Beremiz.py Wed Feb 15 00:44:24 2012 +0100 @@ -880,7 +880,7 @@ msizer.AddWindow(button, 0, border=0, flag=wx.ALIGN_CENTER) return msizer - def GenerateParamsPanel(self, plugin, bkgdclr): + def GenerateParamsPanel(self, plugin, bkgdclr, top_offset=0): rightwindow = wx.Panel(self.PLCConfig, -1, size=wx.Size(-1, -1)) rightwindow.SetBackgroundColour(bkgdclr) @@ -893,7 +893,7 @@ rightwindowmainsizer.AddSizer(rightwindowsizer, 0, border=0, flag=wx.GROW) msizer = self.GenerateMethodButtonSizer(plugin, rightwindow, not self.PluginInfos[plugin]["right_visible"]) - rightwindowsizer.AddSizer(msizer, 0, border=0, flag=wx.GROW) + rightwindowsizer.AddSizer(msizer, 0, border=top_offset, flag=wx.TOP|wx.GROW) rightparamssizer = wx.BoxSizer(wx.HORIZONTAL) rightwindowsizer.AddSizer(rightparamssizer, 0, border=0, flag=wx.ALIGN_RIGHT) @@ -1168,8 +1168,8 @@ tc.Bind(wx.EVT_TEXT, self.GetTextCtrlCallBackFunction(tc, plugin, "BaseParams.Name"), id=tc_id) iecsizer.AddWindow(tc, 0, border=5, flag=wx.RIGHT|wx.ALIGN_CENTER_VERTICAL) - rightwindow = self.GenerateParamsPanel(plugin, bkgdclr) - self.PluginTreeSizer.AddWindow(rightwindow, 0, border=8, flag=wx.TOP|wx.GROW) + rightwindow = self.GenerateParamsPanel(plugin, bkgdclr, 8) + self.PluginTreeSizer.AddWindow(rightwindow, 0, border=0, flag=wx.GROW) self.PluginInfos[plugin]["left"] = leftwindow self.PluginInfos[plugin]["right"] = rightwindow diff -r 383864958dac -r d376a8b0b602 plugger.py --- a/plugger.py Tue Feb 14 12:20:19 2012 +0100 +++ b/plugger.py Wed Feb 15 00:44:24 2012 +0100 @@ -466,6 +466,14 @@ self.GetPlugRoot().logger.write_warning(_("A child names \"%s\" already exist -> \"%s\"\n")%(DesiredName,res)) return res + def GetAllChannels(self): + AllChannels=[] + for PlugInstance in self.PlugParent.IterChilds(): + if PlugInstance != self: + AllChannels.append(PlugInstance.BaseParams.getIEC_Channel()) + AllChannels.sort() + return AllChannels + def FindNewIEC_Channel(self, DesiredChannel): """ Changes IEC Channel number to DesiredChannel if available, nearest available if not. @@ -476,12 +484,8 @@ # Do nothing if no change #if CurrentChannel == DesiredChannel: return CurrentChannel # Build a list of used Channels out of parent's PluggedChilds - AllChannels=[] - for PlugInstance in self.PlugParent.IterChilds(): - if PlugInstance != self: - AllChannels.append(PlugInstance.BaseParams.getIEC_Channel()) - AllChannels.sort() - + AllChannels = self.GetAllChannels() + # Now, try to guess the nearest available channel res = DesiredChannel while res in AllChannels: # While channel not free diff -r 383864958dac -r d376a8b0b602 plugins/canfestival/canfestival.py --- a/plugins/canfestival/canfestival.py Tue Feb 14 12:20:19 2012 +0100 +++ b/plugins/canfestival/canfestival.py Wed Feb 15 00:44:24 2012 +0100 @@ -365,7 +365,13 @@ return infos def GetCanDriver(self): - return self.CanFestivalInstance.getCAN_Driver() + can_driver = self.CanFestivalInstance.getCAN_Driver() + if sys.platform == 'win32': + if self.CanFestivalInstance.getDebug_mode() and os.path.isfile(os.path.join("%s"%(can_driver + '_DEBUG.dll'))): + can_driver += '_DEBUG.dll' + else: + can_driver += '.dll' + return can_driver def PlugGenerate_C(self, buildpath, locations): @@ -403,29 +409,34 @@ # initialize and declare node boot status variables for post_SlaveBootup lookup SlaveIDs = child.GetSlaveIDs() - for id in SlaveIDs: + if len(SlaveIDs) == 0: + # define post_SlaveBootup lookup functions format_dict["slavebootups"] += ( - "int %s_slave_%d_booted = 0;\n"%(nodename, id)) - # define post_SlaveBootup lookup functions - format_dict["slavebootups"] += ( - "static void %s_post_SlaveBootup(CO_Data* d, UNS8 nodeId){\n"%(nodename)+ - " switch(nodeId){\n") - # one case per declared node, mark node as booted - for id in SlaveIDs: + "static void %s_post_SlaveBootup(CO_Data* d, UNS8 nodeId){}\n"%(nodename)) + else: + for id in SlaveIDs: + format_dict["slavebootups"] += ( + "int %s_slave_%d_booted = 0;\n"%(nodename, id)) + # define post_SlaveBootup lookup functions format_dict["slavebootups"] += ( - " case %d:\n"%(id)+ - " %s_slave_%d_booted = 1;\n"%(nodename, id)+ - " break;\n") - format_dict["slavebootups"] += ( - " default:\n"+ - " break;\n"+ - " }\n"+ - " if( ") - # expression to test if all declared nodes booted - format_dict["slavebootups"] += " && ".join(["%s_slave_%d_booted"%(nodename, id) for id in SlaveIDs]) - format_dict["slavebootups"] += " )\n" + ( - " Master_post_SlaveBootup(d,nodeId);\n"+ - "}\n") + "static void %s_post_SlaveBootup(CO_Data* d, UNS8 nodeId){\n"%(nodename)+ + " switch(nodeId){\n") + # one case per declared node, mark node as booted + for id in SlaveIDs: + format_dict["slavebootups"] += ( + " case %d:\n"%(id)+ + " %s_slave_%d_booted = 1;\n"%(nodename, id)+ + " break;\n") + format_dict["slavebootups"] += ( + " default:\n"+ + " break;\n"+ + " }\n"+ + " if( ") + # expression to test if all declared nodes booted + format_dict["slavebootups"] += " && ".join(["%s_slave_%d_booted"%(nodename, id) for id in SlaveIDs]) + format_dict["slavebootups"] += " )\n" + ( + " Master_post_SlaveBootup(d,nodeId);\n"+ + "}\n") # register previously declared func as post_SlaveBootup callback for that node format_dict["slavebootup_register"] += ( "%s_Data.post_SlaveBootup = %s_post_SlaveBootup;\n"%(nodename,nodename)) @@ -459,12 +470,7 @@ child_data.getCAN_Baudrate()) format_dict["nodes_open"] += 'NODE_OPEN(%s)\n '%(nodename) format_dict["nodes_close"] += 'NODE_CLOSE(%s)\n '%(nodename) - format_dict["nodes_stop"] += 'NODE_STOP(%s)\n '%(nodename) - if sys.platform == 'win32': - if self.CanFestivalInstance.getDebug_mode() and os.path.isfile(os.path.join("%s"%(format_dict["candriver"] + '_DEBUG.dll'))): - format_dict["candriver"] += '_DEBUG.dll' - else: - format_dict["candriver"] += '.dll' + format_dict["nodes_stop"] += 'NODE_STOP(%s)\n '%(nodename) filename = os.path.join(os.path.split(__file__)[0],"cf_runtime.c") cf_main = open(filename).read() % format_dict