plugger.py
changeset 178 2390b409eb93
parent 176 d8cacbf276b5
child 190 be969d4694c7
--- a/plugger.py	Fri Jun 27 09:38:16 2008 +0200
+++ b/plugger.py	Fri Jun 27 16:21:22 2008 +0200
@@ -2,7 +2,7 @@
 Base definitions for beremiz plugins
 """
 
-import os,sys
+import os,sys,traceback
 import plugins
 import types
 import shutil
@@ -666,6 +666,14 @@
           <xsd:attribute name="CFLAGS" type="xsd:string" use="required"/>
           <xsd:attribute name="Linker" type="xsd:string" use="optional" default="ld"/>
           <xsd:attribute name="LDFLAGS" type="xsd:string" use="required"/>
+          <xsd:attribute name="Sync_Align_Ratio" use="optional" default="50">
+            <xsd:simpleType>
+                <xsd:restriction base="xsd:integer">
+                    <xsd:minInclusive value="1"/>
+                    <xsd:maxInclusive value="99"/>
+                </xsd:restriction>
+            </xsd:simpleType>
+          </xsd:attribute>
         </xsd:complexType>
       </xsd:element>
     </xsd:schema>
@@ -955,9 +963,9 @@
                 buildpath, 
                 self.PLCGeneratedLocatedVars,
                 logger)
-        except Exception, msg:
+        except Exception, exc:
             logger.write_error("Plugins code generation Failed !\n")
-            logger.write_error(str(msg))
+            logger.write_error(traceback.format_exc())
             return False
 
 
@@ -976,7 +984,8 @@
             "retrieve_calls":"\n    ".join(["__retrieve_%(s)s();"%{'s':locstr} for locstr in locstrs]),
             "publish_calls":"\n    ".join(["__publish_%(s)s();"%{'s':locstr} for locstr in locstrs]),
             "init_calls":"\n    ".join(["init_level++; if(res = __init_%(s)s(argc,argv)) return res;"%{'s':locstr} for locstr in locstrs]),
-            "cleanup_calls":"\n    ".join(["if(init_level-- > 0) __cleanup_%(s)s();"%{'s':locstr} for locstr in locstrs])}
+            "cleanup_calls":"\n    ".join(["if(init_level-- > 0) __cleanup_%(s)s();"%{'s':locstr} for locstr in locstrs]),
+            "sync_align_ratio":self.BeremizRoot.getSync_Align_Ratio()}
         target_name = self.BeremizRoot.TargetType.content["name"]
         plc_main += runtime.code("plc_%s_main"%target_name)