diff -r d72f3a42f440 -r 61746934df41 LPCBeremiz.py --- a/LPCBeremiz.py Tue Feb 07 19:14:10 2012 +0100 +++ b/LPCBeremiz.py Thu Feb 09 21:23:11 2012 +0100 @@ -60,6 +60,8 @@ from Beremiz import * from plugger import PluginsRoot, PlugTemplate, opjimg, connectors +from plugins.canfestival import RootClass as CanOpenRootClass +from plugins.canfestival.canfestival import _SlavePlug, _NodeListPlug, NodeManager from plcopen.structures import LOCATIONDATATYPES from PLCControler import LOCATION_PLUGIN, LOCATION_MODULE, LOCATION_GROUP,\ LOCATION_VAR_INPUT, LOCATION_VAR_OUTPUT, LOCATION_VAR_MEMORY @@ -188,6 +190,9 @@ return self.VariableLocationTree raise KeyError, "Only 'children' key is available" + def PlugEnabled(self): + return None + def SetIcon(self, icon): self.Icon = icon @@ -355,6 +360,93 @@ return [(Gen_Module_path, matiec_flags)],"",True #------------------------------------------------------------------------------- +# LPC CanFestival Plugin Class +#------------------------------------------------------------------------------- + +DEFAULT_SETTINGS = { + "CAN_Baudrate": "125K", + "Slave_NodeId": 2, + "Master_NodeId": 1, +} + +class LPCCanOpenSlave(_SlavePlug): + XSD = """ + + + + + + + + + + + + + + + + + + """ % DEFAULT_SETTINGS + + def __init__(self): + # TODO change netname when name change + NodeManager.__init__(self) + odfilepath = self.GetSlaveODPath() + if(os.path.isfile(odfilepath)): + self.OpenFileInCurrent(odfilepath) + else: + self.CreateNewNode("SlaveNode", # Name - will be changed at build time + 0x00, # NodeID - will be changed at build time + "slave", # Type + "", # description + "None", # profile + "", # prfile filepath + "heartbeat", # NMT + []) # options + self.OnPlugSave() + + def GetCanDevice(self): + return str(self.BaseParams.getIEC_Channel()) + +class LPCCanOpenMaster(_NodeListPlug): + XSD = """ + + + + + + + + + + """ % DEFAULT_SETTINGS + + def GetCanDevice(self): + return str(self.BaseParams.getIEC_Channel()) + +class LPCCanOpen(CanOpenRootClass): + XSD = None + PlugChildsTypes = [("CanOpenNode",LPCCanOpenMaster, "CanOpen Master"), + ("CanOpenSlave",LPCCanOpenSlave, "CanOpen Slave")] + + def GetCanDriver(self): + return "" + + def LoadChilds(self): + PlugTemplate.LoadChilds(self) + + if self.GetChildByName("Master") is None: + master = self.PlugAddChild("Master", "CanOpenNode", 0) + master.BaseParams.setEnabled(False) + + if self.GetChildByName("Slave") is None: + slave = self.PlugAddChild("Slave", "CanOpenSlave", 1) + slave.BaseParams.setEnabled(False) + + +#------------------------------------------------------------------------------- # LPCPluginsRoot Class #------------------------------------------------------------------------------- @@ -411,7 +503,7 @@ PluginsRoot.__init__(self, frame, logger) - self.PlugChildsTypes += [("LPCBus", LPCBus, "LPC bus")] + self.PlugChildsTypes += [("LPCBus", LPCBus, "LPC bus"), ("CanOpen", LPCCanOpen, "CanOpen bus")] self.PlugType = "LPC" self.OnlineMode = "OFF" @@ -590,6 +682,11 @@ #Load and init all the childs self.LoadChilds() + if self.GetChildByName("CanOpen") is None: + canopen = self.PlugAddChild("CanOpen", "CanOpen", 0) + canopen.BaseParams.setEnabled(False) + canopen.LoadChilds() + if self.PlugTestModified(): self.SaveProject() @@ -1043,9 +1140,14 @@ self.PluginTreeSizer.AddWindow(leftwindow, 0, border=0, flag=wx.GROW) + leftwindowvsizer = wx.BoxSizer(wx.VERTICAL) + leftwindow.SetSizer(leftwindowvsizer) + leftwindowsizer = wx.BoxSizer(wx.HORIZONTAL) - leftwindow.SetSizer(leftwindowsizer) - + leftwindowvsizer.AddSizer(leftwindowsizer, 0, border=0, flag=0) + + self.GenerateEnableButton(leftwindow, leftwindowsizer, plugin) + st = wx.StaticText(leftwindow, -1) st.SetFont(wx.Font(faces["size"], wx.DEFAULT, wx.NORMAL, wx.BOLD, faceName = faces["helv"])) st.SetLabel(plugin.GetFullIEC_Channel()) @@ -1105,9 +1207,7 @@ st.SetLabel(plugin.MandatoryParams[1].getName()) leftwindowsizer.AddWindow(st, 0, border=5, flag=wx.RIGHT|wx.ALIGN_CENTER_VERTICAL) - rightwindow = wx.Panel(self.PLCConfig, -1, size=wx.Size(-1, -1)) - rightwindow.SetBackgroundColour(bkgdclr) - + rightwindow = self.GenerateParamsPanel(plugin, bkgdclr) self.PluginTreeSizer.AddWindow(rightwindow, 0, border=0, flag=wx.GROW) self.PluginInfos[plugin]["left"] = leftwindow