Replacing target_Makefile by target_LPC
authorlaurent
Tue, 08 Dec 2009 12:54:28 +0100
changeset 478 029688dad14d
parent 477 f66a092b6e74
child 479 c28f40b27798
child 482 7c83eb6a55bd
Replacing target_Makefile by target_LPC
Making Beremiz accept folder instead of xml file for project
Removing Clean button
LPCBeremiz.py
targets/LPC/XSD
targets/LPC/__init__.py
targets/LPC/plc_LPC_main.c
targets/Makefile/XSD
targets/Makefile/__init__.py
targets/Makefile/plc_Makefile_main.c
--- a/LPCBeremiz.py	Mon Dec 07 22:04:43 2009 +0100
+++ b/LPCBeremiz.py	Tue Dec 08 12:54:28 2009 +0100
@@ -354,26 +354,23 @@
 
 class LPCPluginsRoot(PluginsRoot):
 
-    PlugChildsTypes = [("LPCBus", LPCBus, "LPC bus")]
-
     PluginMethods = [
         {"bitmap" : opjimg("Build"),
          "name" : _("Build"),
          "tooltip" : _("Build project into build folder"),
          "method" : "_build"},
-        {"bitmap" : opjimg("Clean"),
-         "name" : _("Clean"),
-         "enabled" : False,
-         "tooltip" : _("Clean project build folder"),
-         "method" : "_Clean"},
     ]
 
+    def __init__(self, frame, logger):
+        PluginsRoot.__init__(self, frame, logger)
+        self.PlugChildsTypes += [("LPCBus", LPCBus, "LPC bus")]
+
     def GetProjectName(self):
         return self.Project.getname()
 
     def GetDefaultTarget(self):
         target = self.Classes["BeremizRoot_TargetType"]()
-        target_value = self.Classes["TargetType_Makefile"]()
+        target_value = self.Classes["TargetType_LPC"]()
         target_value.setBuildPath(self.BuildPath)
         target.setcontent({"name": "Makefile", "value": target_value})
         return target
@@ -396,11 +393,17 @@
 
     def LoadProject(self, ProjectPath, BuildPath=None):
         """
-        Load a project XML file
-        @param ProjectPath: path of the project xml file
+        Load a project contained in a folder
+        @param ProjectPath: path of the project folder
         """
+        if os.path.basename(ProjectPath) == "":
+            ProjectPath = os.path.dirname(ProjectPath)
+        # Verify that project contains a PLCOpen program
+        plc_file = os.path.join(ProjectPath, "plc.xml")
+        if not os.path.isfile(plc_file):
+            return _("Chosen folder doesn't contain a program. It's not a valid project!")
         # Load PLCOpen file
-        result = self.OpenXMLFile(ProjectPath)
+        result = self.OpenXMLFile(plc_file)
         if result:
             return result
         # Change XSD into class members
@@ -408,15 +411,21 @@
         self.PluggedChilds = {}
         # Keep track of the root plugin (i.e. project path)
         self.ProjectPath = ProjectPath
-
-        self.BuildPath = tempfile.mkdtemp()
+        self.BuildPath = self._getBuildPath()
         if BuildPath is not None:
             mycopytree(BuildPath, self.BuildPath)
         
+        # If dir have already be made, and file exist
+        if os.path.isdir(self.PlugPath()) and os.path.isfile(self.PluginXmlFilePath()):
+            #Load the plugin.xml file into parameters members
+            result = self.LoadXMLParams()
+            if result:
+                return result
+            #Load and init all the childs
+            self.LoadChilds()
         self.RefreshPluginsBlockLists()
-        
-        if os.path.exists(self._getBuildPath()):
-            self.EnableMethod("_Clean", True)
+
+        return None
         
     def SaveProject(self):
         self.SaveXMLFile(self.ProjectPath)
@@ -726,7 +735,7 @@
         def __init__(self, projectOpen, buildpath):
             cmd.Cmd.__init__(self)
             self.PluginRoot = LPCPluginsRoot(None, self.Log)
-            if projectOpen is not None and os.path.isfile(projectOpen):
+            if projectOpen is not None and os.path.isdir(projectOpen):
                 result = self.PluginRoot.LoadProject(projectOpen, buildpath)
                 if result:
                     print "Error: Invalid project directory", result
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/LPC/XSD	Tue Dec 08 12:54:28 2009 +0100
@@ -0,0 +1,6 @@
+
+                  <xsd:element name="Makefile">
+                    <xsd:complexType>
+                      %(toolchain_makefile)s
+                    </xsd:complexType>
+                  </xsd:element>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/LPC/__init__.py	Tue Dec 08 12:54:28 2009 +0100
@@ -0,0 +1,7 @@
+from .. import toolchain_makefile
+
+class Makefile_target(toolchain_makefile):
+    extension = ".ld"
+    DebugEnabled = False
+    def getBuilderLDFLAGS(self):
+        return toolchain_makefile.getBuilderLDFLAGS(self)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/LPC/plc_LPC_main.c	Tue Dec 08 12:54:28 2009 +0100
@@ -0,0 +1,94 @@
+/**
+ * Yagarto specific code
+ **/
+
+//#include <stdio.h>
+
+/* provided by POUS.C */
+extern int common_ticktime__;
+
+void Target_GetTime(IEC_TIME*);
+
+long AtomicCompareExchange(long* atomicvar,long compared, long exchange)
+{
+	return 0;
+}
+
+void PLC_GetTime(IEC_TIME *CURRENT_TIME)
+{
+	/* Call target GetTime function */
+	Target_GetTime(CURRENT_TIME);
+}
+
+void PLC_SetTimer(long long next, long long period)
+{
+}
+
+int startPLC(int argc,char **argv)
+{
+	if(__init(argc,argv) == 0)
+		return 0;
+	else
+		return 1;
+}
+
+int TryEnterDebugSection(void)
+{
+    return 0;
+}
+
+void LeaveDebugSection(void)
+{
+}
+
+int stopPLC(void)
+{
+    __cleanup();
+    return 0;
+}
+
+extern unsigned long __tick;
+/* from plc_debugger.c */
+int WaitDebugData(unsigned long *tick)
+{
+    *tick = __tick;
+    return 0;
+}
+
+/* Called by PLC thread when debug_publish finished
+ * This is supposed to unlock debugger thread in WaitDebugData*/
+void InitiateDebugTransfer(void)
+{
+}
+
+void suspendDebug(void)
+{
+}
+
+void resumeDebug(void)
+{
+}
+
+/* from plc_python.c */
+int WaitPythonCommands(void)
+{
+    return 0;
+}
+
+/* Called by PLC thread on each new python command*/
+void UnBlockPythonCommands(void)
+{
+}
+
+int TryLockPython(void)
+{
+	return 0;
+}
+
+void UnLockPython(void)
+{
+}
+
+void LockPython(void)
+{
+}
--- a/targets/Makefile/XSD	Mon Dec 07 22:04:43 2009 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-
-                  <xsd:element name="Makefile">
-                    <xsd:complexType>
-                      %(toolchain_makefile)s
-                    </xsd:complexType>
-                  </xsd:element>
\ No newline at end of file
--- a/targets/Makefile/__init__.py	Mon Dec 07 22:04:43 2009 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-from .. import toolchain_makefile
-
-class Makefile_target(toolchain_makefile):
-    extension = ".ld"
-    DebugEnabled = False
-    def getBuilderLDFLAGS(self):
-        return toolchain_makefile.getBuilderLDFLAGS(self)
--- a/targets/Makefile/plc_Makefile_main.c	Mon Dec 07 22:04:43 2009 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-/**
- * Yagarto specific code
- **/
-
-//#include <stdio.h>
-
-/* provided by POUS.C */
-extern int common_ticktime__;
-
-void Target_GetTime(IEC_TIME*);
-
-long AtomicCompareExchange(long* atomicvar,long compared, long exchange)
-{
-	return 0;
-}
-
-void PLC_GetTime(IEC_TIME *CURRENT_TIME)
-{
-	/* Call target GetTime function */
-	Target_GetTime(CURRENT_TIME);
-}
-
-void PLC_SetTimer(long long next, long long period)
-{
-}
-
-int startPLC(int argc,char **argv)
-{
-	if(__init(argc,argv) == 0)
-		return 0;
-	else
-		return 1;
-}
-
-int TryEnterDebugSection(void)
-{
-    return 0;
-}
-
-void LeaveDebugSection(void)
-{
-}
-
-int stopPLC(void)
-{
-    __cleanup();
-    return 0;
-}
-
-extern unsigned long __tick;
-/* from plc_debugger.c */
-int WaitDebugData(unsigned long *tick)
-{
-    *tick = __tick;
-    return 0;
-}
-
-/* Called by PLC thread when debug_publish finished
- * This is supposed to unlock debugger thread in WaitDebugData*/
-void InitiateDebugTransfer(void)
-{
-}
-
-void suspendDebug(void)
-{
-}
-
-void resumeDebug(void)
-{
-}
-
-/* from plc_python.c */
-int WaitPythonCommands(void)
-{
-    return 0;
-}
-
-/* Called by PLC thread on each new python command*/
-void UnBlockPythonCommands(void)
-{
-}
-
-int TryLockPython(void)
-{
-	return 0;
-}
-
-void UnLockPython(void)
-{
-}
-
-void LockPython(void)
-{
-}