plugins/canfestival/canfestival.py
author etisserant
Tue, 21 Aug 2007 17:21:26 +0200
changeset 12 a1f9e514f708
parent 11 75ae893d5eed
child 13 f1f0edbeb313
permissions -rw-r--r--
plugin framework organization being defined
12
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
     1
import os
11
75ae893d5eed Adding plugin support in Beremiz
lbessard
parents:
diff changeset
     2
from nodelist import NodeList
75ae893d5eed Adding plugin support in Beremiz
lbessard
parents:
diff changeset
     3
from nodemanager import NodeManager
75ae893d5eed Adding plugin support in Beremiz
lbessard
parents:
diff changeset
     4
import config_utils, gen_cfile
12
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
     5
from networkedit import networkedit
11
75ae893d5eed Adding plugin support in Beremiz
lbessard
parents:
diff changeset
     6
12
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
     7
class _NetworkEditPlugg(networkedit):
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
     8
    def OnCloseFrame(self, event):
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
     9
        self.OnPluggClose()
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    10
        event.Skip()
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    11
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    12
class BusController(NodeList):
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    13
    XSD = """<?xml version="1.0" encoding="ISO-8859-1" ?>
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    14
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    15
      <xsd:element name="CanFestivalNode">
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    16
        <xsd:complexType>
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    17
          <xsd:attribute name="CAN_Device" type="xsd:string" use="required" />
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    18
        </xsd:complexType>
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    19
      </xsd:element>
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    20
    </xsd:schema>
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    21
    """
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    22
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    23
    ViewClass = _NetworkEditPlugg
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    24
    
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    25
    def __init__(self, buspath):
11
75ae893d5eed Adding plugin support in Beremiz
lbessard
parents:
diff changeset
    26
        manager = NodeManager()
75ae893d5eed Adding plugin support in Beremiz
lbessard
parents:
diff changeset
    27
        NodeList.__init__(self, manager)
75ae893d5eed Adding plugin support in Beremiz
lbessard
parents:
diff changeset
    28
        self.LoadProject(buspath)
75ae893d5eed Adding plugin support in Beremiz
lbessard
parents:
diff changeset
    29
12
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    30
    def TestModified(self):
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    31
        return self.HasChanged()
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    32
        
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    33
    def ReqSave(self):
11
75ae893d5eed Adding plugin support in Beremiz
lbessard
parents:
diff changeset
    34
        self.SaveProject()
12
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    35
        return True
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    36
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    37
    def Generate_C(self, dirpath, locations):
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    38
        """
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    39
        return C code for network dictionnary
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    40
        """
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    41
        filepath = os.path.join(dirpath, "master.c")
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    42
        master = config_utils.GenerateConciseDCF(locations, self)
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    43
        res = gen_cfile.GenerateFile(filepath, master)
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    44
        if not res:
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    45
             s = str(self.BaseParams.BusId)+"_IN(){}\n"
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    46
             s += "CanOpen(str(\""+self.CanFestivalNode.CAN_Device)+"\")"
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    47
             f = file(filepath, 'a')
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    48
             f.write(s)
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    49
        else:
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    50
             pass # error
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    51
        return {"headers":["master.h"],"sources":["master.c"]}
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    52
    
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    53
class PluginController:
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    54
    XSD = """<?xml version="1.0" encoding="ISO-8859-1" ?>
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    55
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    56
      <xsd:element name="CanFestivalInstance">
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    57
        <xsd:complexType>
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    58
          <xsd:attribute name="CAN_Driver" type="xsd:string" use="required" />
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    59
        </xsd:complexType>
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    60
      </xsd:element>
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    61
    </xsd:schema>
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    62
    """
11
75ae893d5eed Adding plugin support in Beremiz
lbessard
parents:
diff changeset
    63
75ae893d5eed Adding plugin support in Beremiz
lbessard
parents:
diff changeset
    64
    def Generate_C(self, filepath, locations):
75ae893d5eed Adding plugin support in Beremiz
lbessard
parents:
diff changeset
    65
        """
75ae893d5eed Adding plugin support in Beremiz
lbessard
parents:
diff changeset
    66
        return C code for network dictionnary
75ae893d5eed Adding plugin support in Beremiz
lbessard
parents:
diff changeset
    67
        """
75ae893d5eed Adding plugin support in Beremiz
lbessard
parents:
diff changeset
    68
        master = config_utils.GenerateConciseDCF(locations, self)
75ae893d5eed Adding plugin support in Beremiz
lbessard
parents:
diff changeset
    69
        res = gen_cfile.GenerateFile(filepath, master)
75ae893d5eed Adding plugin support in Beremiz
lbessard
parents:
diff changeset
    70
        if not res:
12
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    71
             s = str(self.BaseParams.BusId)+"_IN(){}\n"
a1f9e514f708 plugin framework organization being defined
etisserant
parents: 11
diff changeset
    72
             s += "CanOpen(str(\""+self.CanFestivalNode.CAN_Device)+"\")"
11
75ae893d5eed Adding plugin support in Beremiz
lbessard
parents:
diff changeset
    73
             f = file(filepath, 'a')
75ae893d5eed Adding plugin support in Beremiz
lbessard
parents:
diff changeset
    74
             f.write(s)
75ae893d5eed Adding plugin support in Beremiz
lbessard
parents:
diff changeset
    75
        else:
75ae893d5eed Adding plugin support in Beremiz
lbessard
parents:
diff changeset
    76
             pass # error
75ae893d5eed Adding plugin support in Beremiz
lbessard
parents:
diff changeset
    77