17 |
17 |
18 _BaseParamsClass = GenerateClassesFromXSDstring("""<?xml version="1.0" encoding="ISO-8859-1" ?> |
18 _BaseParamsClass = GenerateClassesFromXSDstring("""<?xml version="1.0" encoding="ISO-8859-1" ?> |
19 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> |
19 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> |
20 <xsd:element name="BaseParams"> |
20 <xsd:element name="BaseParams"> |
21 <xsd:complexType> |
21 <xsd:complexType> |
22 <xsd:attribute name="Name" type="xsd:string" use="required" default="__unnamed__"/> |
22 <xsd:attribute name="Name" type="xsd:string" use="optional" default="__unnamed__"/> |
23 <xsd:attribute name="IEC_Channel" type="xsd:integer" use="required"/> |
23 <xsd:attribute name="IEC_Channel" type="xsd:integer" use="required"/> |
24 <xsd:attribute name="Enabled" type="xsd:boolean" use="required" default="true"/> |
24 <xsd:attribute name="Enabled" type="xsd:boolean" use="optional" default="true"/> |
25 </xsd:complexType> |
25 </xsd:complexType> |
26 </xsd:element> |
26 </xsd:element> |
27 </xsd:schema>""")[0]["BaseParams"] |
27 </xsd:schema>""")["BaseParams"] |
28 |
28 |
29 NameTypeSeparator = '@' |
29 NameTypeSeparator = '@' |
30 |
30 |
31 class MiniTextControler: |
31 class MiniTextControler: |
32 |
32 |
78 PluginMethods = [] |
78 PluginMethods = [] |
79 |
79 |
80 def _AddParamsMembers(self): |
80 def _AddParamsMembers(self): |
81 self.PlugParams = None |
81 self.PlugParams = None |
82 if self.XSD: |
82 if self.XSD: |
83 Classes = GenerateClassesFromXSDstring(self.XSD)[0] |
83 Classes = GenerateClassesFromXSDstring(self.XSD) |
84 Classes = [(name, XSDclass) for name, XSDclass in Classes.items() if XSDclass.IsBaseClass] |
84 Classes = [(name, XSDclass) for name, XSDclass in Classes.items() if XSDclass.IsBaseClass] |
85 if len(Classes) == 1: |
85 if len(Classes) == 1: |
86 name, XSDclass = Classes[0] |
86 name, XSDclass = Classes[0] |
87 obj = XSDclass() |
87 obj = XSDclass() |
88 self.PlugParams = (name, obj) |
88 self.PlugParams = (name, obj) |
498 # Iterate over all PlugName@PlugType in plugin directory, and try to open them |
498 # Iterate over all PlugName@PlugType in plugin directory, and try to open them |
499 for PlugDir in os.listdir(self.PlugPath()): |
499 for PlugDir in os.listdir(self.PlugPath()): |
500 if os.path.isdir(os.path.join(self.PlugPath(), PlugDir)) and \ |
500 if os.path.isdir(os.path.join(self.PlugPath(), PlugDir)) and \ |
501 PlugDir.count(NameTypeSeparator) == 1: |
501 PlugDir.count(NameTypeSeparator) == 1: |
502 pname, ptype = PlugDir.split(NameTypeSeparator) |
502 pname, ptype = PlugDir.split(NameTypeSeparator) |
503 try: |
503 #try: |
504 self.PlugAddChild(pname, ptype, logger) |
504 self.PlugAddChild(pname, ptype, logger) |
505 except Exception, e: |
505 #except Exception, e: |
506 logger.write_error("Could not add child \"%s\", type %s :\n%s\n"%(pname, ptype, str(e))) |
506 # logger.write_error("Could not add child \"%s\", type %s :\n%s\n"%(pname, ptype, str(e))) |
507 |
507 |
508 def _GetClassFunction(name): |
508 def _GetClassFunction(name): |
509 def GetRootClass(): |
509 def GetRootClass(): |
510 return getattr(__import__("plugins." + name), name).RootClass |
510 return getattr(__import__("plugins." + name), name).RootClass |
511 return GetRootClass |
511 return GetRootClass |
555 |
555 |
556 XSD = """<?xml version="1.0" encoding="ISO-8859-1" ?> |
556 XSD = """<?xml version="1.0" encoding="ISO-8859-1" ?> |
557 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> |
557 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> |
558 <xsd:element name="BeremizRoot"> |
558 <xsd:element name="BeremizRoot"> |
559 <xsd:complexType> |
559 <xsd:complexType> |
560 <xsd:element name="TargetType"> |
560 <xsd:sequence> |
561 <xsd:complexType> |
561 <xsd:element name="TargetType"> |
562 <xsd:choice> |
562 <xsd:complexType> |
563 <xsd:element name="Win32"> |
563 <xsd:choice> |
564 <xsd:complexType> |
564 <xsd:element name="Win32"> |
565 <xsd:attribute name="Priority" type="xsd:integer" use="required"/> |
565 <xsd:complexType> |
566 </xsd:complexType> |
566 <xsd:attribute name="Priority" type="xsd:integer" use="required"/> |
567 </xsd:element> |
567 </xsd:complexType> |
568 <xsd:element name="Linux"> |
568 </xsd:element> |
569 <xsd:complexType> |
569 <xsd:element name="Linux"> |
570 <xsd:attribute name="Nice" type="xsd:integer" use="required"/> |
570 <xsd:complexType> |
571 </xsd:complexType> |
571 <xsd:attribute name="Nice" type="xsd:integer" use="required"/> |
572 </xsd:element> |
572 </xsd:complexType> |
573 <xsd:element name="Xenomai"> |
573 </xsd:element> |
574 <xsd:complexType> |
574 <xsd:element name="Xenomai"> |
575 <xsd:attribute name="xeno-config" type="xsd:string" use="required" default="/usr/xenomai/"/> |
575 <xsd:complexType> |
576 <xsd:attribute name="Priority" type="xsd:integer" use="required"/> |
576 <xsd:attribute name="xeno_config" type="xsd:string" use="optional" default="/usr/xenomai/"/> |
577 </xsd:complexType> |
577 <xsd:attribute name="Priority" type="xsd:integer" use="required"/> |
578 </xsd:element> |
578 </xsd:complexType> |
579 <xsd:element name="RTAI"> |
579 </xsd:element> |
580 <xsd:complexType> |
580 <xsd:element name="RTAI"> |
581 <xsd:attribute name="rtai-config" type="xsd:string" use="required"/> |
581 <xsd:complexType> |
582 <xsd:attribute name="Priority" type="xsd:integer" use="required"/> |
582 <xsd:attribute name="rtai_config" type="xsd:string" use="required"/> |
583 </xsd:complexType> |
583 <xsd:attribute name="Priority" type="xsd:integer" use="required"/> |
584 </xsd:element> |
584 </xsd:complexType> |
585 <xsd:element name="Library"> |
585 </xsd:element> |
586 <xsd:complexType> |
586 <xsd:element name="Library"> |
587 <xsd:attribute name="Dynamic" type="xsd:boolean" use="required" default="true"/> |
587 <xsd:complexType> |
588 </xsd:complexType> |
588 <xsd:attribute name="Dynamic" type="xsd:boolean" use="optional" default="true"/> |
589 </xsd:element> |
589 </xsd:complexType> |
590 </xsd:choice> |
590 </xsd:element> |
591 </xsd:complexType> |
591 </xsd:choice> |
592 </xsd:element> |
592 </xsd:complexType> |
593 <xsd:attribute name="Compiler" type="xsd:string" use="required" default="gcc"/> |
593 </xsd:element> |
594 <xsd:attribute name="CFLAGS" type="xsd:string" use="required" default=""/> |
594 </xsd:sequence> |
595 <xsd:attribute name="Linker" type="xsd:string" use="required" default="ld"/> |
595 <xsd:attribute name="Compiler" type="xsd:string" use="optional" default="gcc"/> |
596 <xsd:attribute name="LDFLAGS" type="xsd:string" use="required" default=""/> |
596 <xsd:attribute name="CFLAGS" type="xsd:string" use="required"/> |
|
597 <xsd:attribute name="Linker" type="xsd:string" use="optional" default="ld"/> |
|
598 <xsd:attribute name="LDFLAGS" type="xsd:string" use="required"/> |
597 </xsd:complexType> |
599 </xsd:complexType> |
598 </xsd:element> |
600 </xsd:element> |
599 </xsd:schema> |
601 </xsd:schema> |
600 """ |
602 """ |
601 |
603 |