Exemplo n.º 1
0
    def __init__(self, parent, **keys):
        """ Create interface object
            if node is a node or name.
            __init__(self,parent,name)
            __init__(self,parent,node)
            __init__(self,parent,nodestring)
        """

        self._parent = parent

        if "name" in keys:
            WrapperXml.__init__(self, nodename="interface")
            self.name = keys["name"]
        elif "node" in keys:
            WrapperXml.__init__(self, node=keys["node"])
        elif "wxml" in keys:
            WrapperXml.__init__(self, nodestring=keys["wxml"])
        else:
            raise PodError("Keys unknown in Interface", 0)

        self._registerslist = []
        self.portslist = []
        self._slaveslist = []
        self._bus = None

        if self.interface_class == "master":
            self.alloc_mem = AllocMem(self)
        if self.interface_class == "slave":
            self.interfacemaster = None

        if self.get_node("slaves") is not None:
            for element in self.get_subnodes("slaves", "slave"):
                self._slaveslist.append(Slave(self, node=element))

        if self.get_node("registers") is not None:
            for element in self.get_subnodes("registers", "register"):
                self._registerslist.append(Register(self, node=element))

        if self.get_node("ports") is not None:
            for node in self.get_subnodes("ports", "port"):
                self.portslist.append(Port(self, node=node))

        # set bus
        if self.bus_name is not None:
            self.bus = self.bus_name