plugins/canfestival/canfestival.py
changeset 411 8261c8f1e365
parent 372 35cc4c6a2936
child 421 c9ec111ad275
equal deleted inserted replaced
410:092e33606e51 411:8261c8f1e365
    15 
    15 
    16 from gnosis.xml.pickle import *
    16 from gnosis.xml.pickle import *
    17 from gnosis.xml.pickle.util import setParanoia
    17 from gnosis.xml.pickle.util import setParanoia
    18 setParanoia(0)
    18 setParanoia(0)
    19 
    19 
       
    20 if wx.Platform == '__WXMSW__':
       
    21     DEFAULT_SETTINGS = {
       
    22         "CAN_Driver": "can_tcp_win32",
       
    23         "CAN_Device": "127.0.0.1",
       
    24         "CAN_Baudrate": "125K",
       
    25         "Slave_NodeId": 2,
       
    26         "Master_NodeId": 1,
       
    27     }
       
    28 else:
       
    29     DEFAULT_SETTINGS = {
       
    30         "CAN_Driver": "../CanFestival-3/drivers/can_socket/libcanfestival_can_socket.so",
       
    31         "CAN_Device": "vcan0",
       
    32         "CAN_Baudrate": "125K",
       
    33         "Slave_NodeId": 2,
       
    34         "Master_NodeId": 1,
       
    35     }
       
    36 
    20 #--------------------------------------------------
    37 #--------------------------------------------------
    21 #                    SLAVE
    38 #                    SLAVE
    22 #--------------------------------------------------
    39 #--------------------------------------------------
    23 
    40 
    24 class _SlavePlug(NodeManager):
    41 class _SlavePlug(NodeManager):
    25     XSD = """<?xml version="1.0" encoding="ISO-8859-1" ?>
    42     XSD = """<?xml version="1.0" encoding="ISO-8859-1" ?>
    26     <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    43     <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    27       <xsd:element name="CanFestivalSlaveNode">
    44       <xsd:element name="CanFestivalSlaveNode">
    28         <xsd:complexType>
    45         <xsd:complexType>
    29           <xsd:attribute name="CAN_Device" type="xsd:string" use="required"/>
    46           <xsd:attribute name="CAN_Device" type="xsd:string" use="optional" default="%(CAN_Device)s"/>
    30           <xsd:attribute name="CAN_Baudrate" type="xsd:string" use="required"/>
    47           <xsd:attribute name="CAN_Baudrate" type="xsd:string" use="optional" default="%(CAN_Baudrate)s"/>
    31           <xsd:attribute name="NodeId" type="xsd:string" use="required"/>
    48           <xsd:attribute name="NodeId" type="xsd:string" use="optional" default="%(Slave_NodeId)d"/>
    32           <xsd:attribute name="Sync_Align" type="xsd:integer" use="optional" default="0"/>
    49           <xsd:attribute name="Sync_Align" type="xsd:integer" use="optional" default="0"/>
    33           <xsd:attribute name="Sync_Align_Ratio" use="optional" default="50">
    50           <xsd:attribute name="Sync_Align_Ratio" use="optional" default="50">
    34             <xsd:simpleType>
    51             <xsd:simpleType>
    35                 <xsd:restriction base="xsd:integer">
    52                 <xsd:restriction base="xsd:integer">
    36                     <xsd:minInclusive value="1"/>
    53                     <xsd:minInclusive value="1"/>
    39             </xsd:simpleType>
    56             </xsd:simpleType>
    40           </xsd:attribute>
    57           </xsd:attribute>
    41         </xsd:complexType>
    58         </xsd:complexType>
    42       </xsd:element>
    59       </xsd:element>
    43     </xsd:schema>
    60     </xsd:schema>
    44     """
    61     """ % DEFAULT_SETTINGS
    45 
    62 
    46     def GetSlaveODPath(self):
    63     def GetSlaveODPath(self):
    47         return os.path.join(self.PlugPath(), 'slave.od')
    64         return os.path.join(self.PlugPath(), 'slave.od')
    48 
    65 
    49     def __init__(self):
    66     def __init__(self):
   148 class _NodeListPlug(NodeList):
   165 class _NodeListPlug(NodeList):
   149     XSD = """<?xml version="1.0" encoding="ISO-8859-1" ?>
   166     XSD = """<?xml version="1.0" encoding="ISO-8859-1" ?>
   150     <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   167     <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   151       <xsd:element name="CanFestivalNode">
   168       <xsd:element name="CanFestivalNode">
   152         <xsd:complexType>
   169         <xsd:complexType>
   153           <xsd:attribute name="CAN_Device" type="xsd:string" use="required"/>
   170           <xsd:attribute name="CAN_Device" type="xsd:string" use="optional" default="%(CAN_Device)s"/>
   154           <xsd:attribute name="CAN_Baudrate" type="xsd:string" use="required"/>
   171           <xsd:attribute name="CAN_Baudrate" type="xsd:string" use="optional" default="%(CAN_Baudrate)s"/>
   155           <xsd:attribute name="NodeId" type="xsd:string" use="required"/>
   172           <xsd:attribute name="NodeId" type="xsd:string" use="optional" default="%(Master_NodeId)d"/>
   156           <xsd:attribute name="Sync_TPDOs" type="xsd:boolean" use="optional" default="true"/>
   173           <xsd:attribute name="Sync_TPDOs" type="xsd:boolean" use="optional" default="true"/>
   157         </xsd:complexType>
   174         </xsd:complexType>
   158       </xsd:element>
   175       </xsd:element>
   159     </xsd:schema>
   176     </xsd:schema>
   160     """
   177     """ % DEFAULT_SETTINGS
   161 
   178 
   162     def __init__(self):
   179     def __init__(self):
   163         manager = NodeManager()
   180         manager = NodeManager()
   164         # TODO change netname when name change
   181         # TODO change netname when name change
   165         NodeList.__init__(self, manager, self.BaseParams.getName())
   182         NodeList.__init__(self, manager, self.BaseParams.getName())
   252 class RootClass:
   269 class RootClass:
   253     XSD = """<?xml version="1.0" encoding="ISO-8859-1" ?>
   270     XSD = """<?xml version="1.0" encoding="ISO-8859-1" ?>
   254     <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   271     <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   255       <xsd:element name="CanFestivalInstance">
   272       <xsd:element name="CanFestivalInstance">
   256         <xsd:complexType>
   273         <xsd:complexType>
   257           <xsd:attribute name="CAN_Driver" type="xsd:string" use="required"/>
   274           <xsd:attribute name="CAN_Driver" type="xsd:string" use="optional" default="%(CAN_Driver)s"/>
   258           <xsd:attribute name="Debug_mode" type="xsd:boolean" use="optional" default="false"/>
   275           <xsd:attribute name="Debug_mode" type="xsd:boolean" use="optional" default="false"/>
   259         </xsd:complexType>
   276         </xsd:complexType>
   260       </xsd:element>
   277       </xsd:element>
   261     </xsd:schema>
   278     </xsd:schema>
   262     """
   279     """ % DEFAULT_SETTINGS
       
   280     
   263     PlugChildsTypes = [("CanOpenNode",_NodeListPlug, "CanOpen Master"),
   281     PlugChildsTypes = [("CanOpenNode",_NodeListPlug, "CanOpen Master"),
   264                        ("CanOpenSlave",_SlavePlug, "CanOpen Slave")]
   282                        ("CanOpenSlave",_SlavePlug, "CanOpen Slave")]
   265     def GetParamsAttributes(self, path = None):
   283     def GetParamsAttributes(self, path = None):
   266         infos = PlugTemplate.GetParamsAttributes(self, path = None)
   284         infos = PlugTemplate.GetParamsAttributes(self, path = None)
   267         for element in infos:
   285         for element in infos: