Пример #1
0
    def response(self, adapter, npdu):
        if _debug:
            DiscoverNetworkServiceElement._debug("response %r %r", adapter,
                                                 npdu)

        # forward it along
        NetworkServiceElement.response(self, adapter, npdu)
Пример #2
0
    def request(self, arg):
        adapter, npdu = arg
        # save a copy of the request
        self._request = npdu

        # forward it along
        NetworkServiceElement.request(self, adapter, npdu)
Пример #3
0
    def confirmation(self, adapter, npdu):
        if _debug:
            DiscoverNetworkServiceElement._debug("confirmation %r %r", adapter,
                                                 npdu)

        # forward it along
        NetworkServiceElement.confirmation(self, adapter, npdu)
Пример #4
0
    def indication(self, adapter, npdu):
        if isinstance(npdu, IAmRouterToNetwork):
            if isinstance(self._request, WhoIsRouterToNetwork):
                address, netlist = str(npdu.pduSource), npdu.iartnNetworkList
                self._log.info("{} router to {}".format(address, netlist))
                self._iartn.append(address)
                self._routing_table[address] = netlist
            for each in npdu.iartnNetworkList:
                self._learnedNetworks.add(int(each))

        elif isinstance(npdu, InitializeRoutingTableAck):
            self._log.info("{} routing table".format(npdu.pduSource))
            for rte in npdu.irtaTable:
                self._log.info("    {} {} {}".format(rte.rtDNET, rte.rtPortID,
                                                     rte.rtPortInfo))

        elif isinstance(npdu, NetworkNumberIs):
            self._log.info("{} network number is {}".format(
                npdu.pduSource, npdu.nniNet))
            self._learnedNetworks.add(int(npdu.nniNet))

        elif isinstance(npdu, RejectMessageToNetwork):
            self._log.warning(
                "{} Rejected message to network (reason : {})".format(
                    npdu.pduSource,
                    rejectMessageToNetworkReasons[npdu.rmtnRejectionReason],
                ))
        # forward it along
        NetworkServiceElement.indication(self, adapter, npdu)
Пример #5
0
    def __init__(self):
        NetworkServiceElement.__init__(self)
        IOController.__init__(self)

        # no pending request
        self._request = None
        self._iartn = []
        self._learnedNetworks = set()
        self.queue_by_address = {}
Пример #6
0
    def request(self, adapter, npdu):
        if _debug:
            DiscoverNetworkServiceElement._debug("request %r %r", adapter,
                                                 npdu)

        # save a copy of the request
        self._request = npdu

        # forward it along
        NetworkServiceElement.request(self, adapter, npdu)
    def __init__(self, localDevice, localAddress, aseID=None):
        if _debug:
            TestApplication._debug("__init__ %r %r aseID=%r", localDevice,
                                   localAddress, aseID)
        Application.__init__(self, localDevice, localAddress, aseID)

        # include a application decoder
        self.asap = ApplicationServiceAccessPoint()

        # pass the device object to the state machine access point so it
        # can know if it should support segmentation
        self.smap = StateMachineAccessPoint(localDevice)

        # a network service access point will be needed
        self.nsap = NetworkServiceAccessPoint()

        # give the NSAP a generic network layer service element
        self.nse = NetworkServiceElement()
        bind(self.nse, self.nsap)

        # bind the top layers
        bind(self, self.asap, self.smap, self.nsap)

        # create a multiplexer and device-to-device service
        self.mux = TCPServerMultiplexer(self.localAddress)

        # add this to the list of adapters
        self.d2d = DeviceToDeviceServerService(self.mux, self.nsap, None)
Пример #8
0
    def __init__(self, localNetwork, localAddress):
        if _debug: TestRouter._debug("__init__ %r", localAddress)

        # a network service access point will be needed
        self.nsap = NetworkServiceAccessPoint()

        # give the NSAP a generic network layer service element
        self.nse = NetworkServiceElement()
        bind(self.nse, self.nsap)

        # create a generic BIP stack, bound to the Annex J server
        # on the UDP multiplexer
        self.bip = BIPSimple()
        self.annexj = AnnexJCodec()
        self.mux = UDPMultiplexer(localAddress)

        # bind the bottom layers
        bind(self.bip, self.annexj, self.mux.annexJ)

        # bind the BIP stack to localNetwork
        self.nsap.bind(self.bip, localNetwork, localAddress)

        # create a multiplexer for the service
        self.mux = TCPClientMultiplexer()

        # create the service, use 90 as the "hidden" network
        self.r2rService = RouterToRouterService(self.mux, self.nsap, 90)
Пример #9
0
    def __init__(self, vlan_device: LocalDeviceObject, vlan_address: Address) -> None:
        if _debug:
            _VLANApplication._debug("__init__ %r %r", vlan_device, vlan_address)
        Application.__init__(self, localDevice=vlan_device, aseID=None)

        # include a application decoder
        self._asap = ApplicationServiceAccessPoint()

        # pass the device object to the state machine access point so it
        # can know if it should support segmentation
        self._smap = StateMachineAccessPoint(vlan_device)

        # the segmentation state machines need access to the same device
        # information cache as the application
        self._smap.deviceInfoCache = self.deviceInfoCache

        # a network service access point will be needed
        self._nsap = NetworkServiceAccessPoint()

        # give the NSAP a generic network layer service element
        self._nse = NetworkServiceElement()
        bind(self._nse, self._nsap)

        # bind the top layers
        bind(self, self._asap, self._smap, self._nsap)

        # create a vlan node at the assigned address
        self._vlan_node = Node(vlan_address)

        # bind the stack to the node, no network number
        self._nsap.bind(self._vlan_node)
Пример #10
0
    def __init__(self, vlan_device, vlan_address, aseID=None):
        if _debug:
            VLANApplication._debug("__init__ %r %r aseID=%r", vlan_device,
                                   vlan_address, aseID)
        Application.__init__(self, vlan_device, local_address, aseID)

        # include a application decoder
        self.asap = ApplicationServiceAccessPoint()

        # pass the device object to the state machine access point so it
        # can know if it should support segmentation
        self.smap = StateMachineAccessPoint(vlan_device)

        # a network service access point will be needed
        self.nsap = NetworkServiceAccessPoint()

        # give the NSAP a generic network layer service element
        self.nse = NetworkServiceElement()
        bind(self.nse, self.nsap)

        # bind the top layers
        bind(self, self.asap, self.smap, self.nsap)

        # create a vlan node at the assigned address
        self.vlan_node = Node(vlan_address)

        # bind the stack to the node, no network number
        self.nsap.bind(self.vlan_node)
Пример #11
0
    def __init__(self, local_address, local_network):
        if _debug:
            VLANRouter._debug("__init__ %r %r", local_address, local_network)

        # a network service access point will be needed
        self.nsap = NetworkServiceAccessPoint()

        # give the NSAP a generic network layer service element
        self.nse = NetworkServiceElement()
        bind(self.nse, self.nsap)

        # create a BBMD, bound to the Annex J server
        # on the UDP multiplexer
        # self.bip = BIPBBMD(local_address)
        # self.annexj = AnnexJCodec()
        # self.mux = UDPMultiplexer(local_address)

        #ADDED
        #from WhoIsIAmForeign ForeignApplication
        # create a generic BIP stack, bound to the Annex J server
        # on the UDP multiplexer
        self.bip = BIPForeign(Address('BBMD_ADDR'), 30)
        self.annexj = AnnexJCodec()
        self.mux = UDPMultiplexer(local_address, noBroadcast=True)
        #end
        # self.bip.add_peer(Address(BBMD_ADDR))
        #ADDED

        # bind the bottom layers
        bind(self.bip, self.annexj, self.mux.annexJ)

        # bind the BIP stack to the local network
        self.nsap.bind(self.bip, local_network, local_address)
Пример #12
0
    def __init__(self, local_address, local_network, vlan_address, vlan_network):
        if _debug: VLANRouter._debug("__init__ %r %r %r %r", local_address, local_network, vlan_address, vlan_network)

        # a network service access point will be needed
        self.nsap = NetworkServiceAccessPoint()

        # give the NSAP a generic network layer service element
        self.nse = NetworkServiceElement()
        bind(self.nse, self.nsap)

        # create a generic BIP stack, bound to the Annex J server 
        # on the UDP multiplexer
        self.bip = BIPSimple()
        self.annexj = AnnexJCodec()
        self.mux = UDPMultiplexer(local_address)

        # bind the bottom layers
        bind(self.bip, self.annexj, self.mux.annexJ)

        # bind the BIP stack to the local network
        self.nsap.bind(self.bip, local_network, local_address)

        # create a vlan node
        self.vlan_node = Node(vlan_address)

        # bind the stack to the vlan network
        self.nsap.bind(self.vlan_node, vlan_network)
Пример #13
0
    def __init__(self, vlan_device, vlan_address, aseID=None):
        if _debug: VLANApplication._debug("__init__ %r %r aseID=%r", vlan_device, vlan_address, aseID)
        ApplicationIOController.__init__(self, vlan_device, vlan_address, aseID=aseID)

        # include a application decoder
        self.asap = ApplicationServiceAccessPoint()

        # pass the device object to the state machine access point so it
        # can know if it should support segmentation
        self.smap = StateMachineAccessPoint(vlan_device)

        # the segmentation state machines need access to the same device
        # information cache as the application
        self.smap.deviceInfoCache = self.deviceInfoCache

        # a network service access point will be needed
        self.nsap = NetworkServiceAccessPoint()

        # give the NSAP a generic network layer service element
        self.nse = NetworkServiceElement()
        bind(self.nse, self.nsap)

        # bind the top layers
        bind(self, self.asap, self.smap, self.nsap)

        # create a vlan node at the assigned address
        self.vlan_node = Node(vlan_address)

        # bind the stack to the node, no network number
        self.nsap.bind(self.vlan_node, address=vlan_address)

        # keep track of requests to line up responses
        self._request = None

        if _debug: VLANApplication._debug("    - nsap.local_address: %r", self.nsap.local_address)
Пример #14
0
    def __init__(self, address, vlan):
        if _debug:
            BIPSimpleApplicationLayerStateMachine._debug(
                "__init__ %r %r", address, vlan)

        # build a name, save the address
        self.name = "app @ %s" % (address, )
        self.address = Address(address)

        # build a local device object
        local_device = TestDeviceObject(
            objectName=self.name,
            objectIdentifier=('device', 998),
            vendorIdentifier=999,
        )

        # build an address and save it
        self.address = Address(address)
        if _debug:
            BIPSimpleApplicationLayerStateMachine._debug(
                "    - address: %r", self.address)

        # continue with initialization
        ApplicationServiceElement.__init__(self)
        ClientStateMachine.__init__(self, name=local_device.objectName)

        # include a application decoder
        self.asap = ApplicationServiceAccessPoint()

        # pass the device object to the state machine access point so it
        # can know if it should support segmentation
        self.smap = StateMachineAccessPoint(local_device)

        # the segmentation state machines need access to some device
        # information cache, usually shared with the application
        self.smap.deviceInfoCache = DeviceInfoCache()

        # a network service access point will be needed
        self.nsap = NetworkServiceAccessPoint()

        # give the NSAP a generic network layer service element
        self.nse = NetworkServiceElement()
        bind(self.nse, self.nsap)

        # bind the top layers
        bind(self, self.asap, self.smap, self.nsap)

        # BACnet/IP interpreter
        self.bip = BIPSimple()
        self.annexj = AnnexJCodec()

        # fake multiplexer has a VLAN node in it
        self.mux = FauxMultiplexer(self.address, vlan)

        # bind the stack together
        bind(self.bip, self.annexj, self.mux)

        # bind the stack to the local network
        self.nsap.bind(self.bip)
Пример #15
0
    def __init__(self, address, vlan):
        if _debug: BIPBBMDApplication._debug("__init__ %r %r", address, vlan)

        # build a name, save the address
        self.name = "app @ %s" % (address,)
        self.address = Address(address)
        if _debug: BIPBBMDApplication._debug("    - address: %r", self.address)

        # build a local device object
        local_device = TestDeviceObject(
            objectName=self.name,
            objectIdentifier=('device', 999),
            vendorIdentifier=999,
            )

        # continue with initialization
        Application.__init__(self, local_device, self.address)

        # include a application decoder
        self.asap = ApplicationServiceAccessPoint()

        # pass the device object to the state machine access point so it
        # can know if it should support segmentation
        self.smap = StateMachineAccessPoint(local_device)

        # the segmentation state machines need access to the same device
        # information cache as the application
        self.smap.deviceInfoCache = self.deviceInfoCache

        # a network service access point will be needed
        self.nsap = NetworkServiceAccessPoint()

        # give the NSAP a generic network layer service element
        self.nse = NetworkServiceElement()
        bind(self.nse, self.nsap)

        # bind the top layers
        bind(self, self.asap, self.smap, self.nsap)

        # BACnet/IP interpreter
        self.bip = BIPBBMD(self.address)
        self.annexj = AnnexJCodec()

        # build an address, full mask
        bdt_address = "%s/32:%d" % self.address.addrTuple
        if _debug: BIPBBMDNode._debug("    - bdt_address: %r", bdt_address)

        # add itself as the first entry in the BDT
        self.bip.add_peer(Address(bdt_address))

        # fake multiplexer has a VLAN node in it
        self.mux = FauxMultiplexer(self.address, vlan)

        # bind the stack together
        bind(self.bip, self.annexj, self.mux)

        # bind the stack to the local network
        self.nsap.bind(self.bip)
Пример #16
0
    def __init__(self):
        if _debug: RouterNode._debug("__init__")

        # a network service access point will be needed
        self.nsap = NetworkServiceAccessPoint()

        # give the NSAP a generic network layer service element
        self.nse = NetworkServiceElement()
        bind(self.nse, self.nsap)
Пример #17
0
    def __init__(self, address, vlan):
        if _debug:
            ApplicationLayerStateMachine._debug("__init__ %r %r", address,
                                                vlan)

        # build a name, save the address
        self.name = "app @ %s" % (address, )
        self.address = Address(address)

        # build a local device object
        local_device = TestDeviceObject(
            objectName=self.name,
            objectIdentifier=('device', int(address)),
            vendorIdentifier=999,
        )

        # build an address and save it
        self.address = Address(address)
        if _debug:
            ApplicationLayerStateMachine._debug("    - address: %r",
                                                self.address)

        # continue with initialization
        ApplicationServiceElement.__init__(self)
        ClientStateMachine.__init__(self, name=local_device.objectName)

        # include a application decoder
        self.asap = ApplicationServiceAccessPoint()

        # pass the device object to the state machine access point so it
        # can know if it should support segmentation
        self.smap = StateMachineAccessPoint(local_device)

        # the segmentation state machines need access to some device
        # information cache, usually shared with the application
        self.smap.deviceInfoCache = DeviceInfoCache()

        # a network service access point will be needed
        self.nsap = NetworkServiceAccessPoint()

        # give the NSAP a generic network layer service element
        self.nse = NetworkServiceElement()
        bind(self.nse, self.nsap)

        # bind the top layers
        bind(self, self.asap, self.smap, self.nsap)

        # create a node, added to the network
        self.node = Node(self.address, vlan)
        if _debug:
            ApplicationLayerStateMachine._debug("    - node: %r", self.node)

        # bind the stack to the local network
        self.nsap.bind(self.node)
Пример #18
0
    def __init__(self,
                 localDevice,
                 localAddress,
                 deviceInfoCache=None,
                 aseID=None):
        if _debug:
            MSTPSimpleApplication._debug(
                "__init__ %r %r deviceInfoCache=%r aseID=%r", localDevice,
                localAddress, deviceInfoCache, aseID)
        ApplicationIOController.__init__(self,
                                         localDevice,
                                         deviceInfoCache,
                                         aseID=aseID)

        # local address might be useful for subclasses
        if isinstance(localAddress, Address):
            self.localAddress = localAddress
        else:
            self.localAddress = Address(localAddress)

        self.localDevice = localDevice

        # include a application decoder
        self.asap = ApplicationServiceAccessPoint()

        # pass the device object to the state machine access point so it
        # can know if it should support segmentation
        self.smap = StateMachineAccessPoint(localDevice)

        # the segmentation state machines need access to the same device
        # information cache as the application
        self.smap.deviceInfoCache = self.deviceInfoCache

        # a network service access point will be needed
        self.nsap = NetworkServiceAccessPoint()

        # give the NSAP a generic network layer service element
        self.nse = NetworkServiceElement()
        bind(self.nse, self.nsap)

        # bind the top layers
        bind(self, self.asap, self.smap, self.nsap)

        # create a generic MSTP stack, bound to the Annex J server
        # on the MSTP multiplexer
        self.mstp = MSTPSimple()
        self.mux = MSTPMultiplexer(self.localDevice, self.localAddress)

        # bind the bottom layers
        bind(self.mstp, self.mux.annexH)

        # bind the MSTP stack to the network, no network number
        self.nsap.bind(self.mstp)
Пример #19
0
    def __init__(self, objectName, deviceInstance, address, aseID=None):
        if _debug:
            VLANApplication._debug("__init__ %r %r %r aseID=%r", objectName,
                                   deviceInstance, address, aseID)

        # make an address
        vlan_address = Address(address)
        _log.debug("    - vlan_address: %r", vlan_address)

        # make a device object
        vlan_device = LocalDeviceObject(
            objectName=objectName,
            objectIdentifier=("device", deviceInstance),
            maxApduLengthAccepted=1024,
            segmentationSupported="noSegmentation",
            vendorIdentifier=15,
        )
        _log.debug("    - vlan_device: %r", vlan_device)

        # continue with the initialization
        Application.__init__(self, vlan_device, vlan_address, aseID)

        # include a application decoder
        self.asap = ApplicationServiceAccessPoint()

        # pass the device object to the state machine access point so it
        # can know if it should support segmentation
        self.smap = StateMachineAccessPoint(vlan_device)

        # the segmentation state machines need access to the same device
        # information cache as the application
        self.smap.deviceInfoCache = self.deviceInfoCache

        # a network service access point will be needed
        self.nsap = NetworkServiceAccessPoint()

        # give the NSAP a generic network layer service element
        self.nse = NetworkServiceElement()
        bind(self.nse, self.nsap)

        # bind the top layers
        bind(self, self.asap, self.smap, self.nsap)

        # create a vlan node at the assigned address
        self.vlan_node = Node(vlan_address)
        if _debug:
            VLANApplication._debug("    - vlan_node: %r", self.vlan_node)

        # bind the stack to the node, no network number
        self.nsap.bind(self.vlan_node)
        if _debug:
            VLANApplication._debug("    - node bound")
Пример #20
0
    def indication(self, adapter, npdu):
        if _debug:
            DiscoverNetworkServiceElement._debug("indication %r %r", adapter,
                                                 npdu)

        if isinstance(npdu, IAmRouterToNetwork):
            if interactive:
                print("{} router to {}".format(npdu.pduSource,
                                               npdu.iartnNetworkList))

        elif isinstance(npdu, InitializeRoutingTableAck):
            if interactive:
                print("{} routing table".format(npdu.pduSource))
                for rte in npdu.irtaTable:
                    print("    {} {} {}".format(rte.rtDNET, rte.rtPortID,
                                                rte.rtPortInfo))

        elif isinstance(npdu, NetworkNumberIs):
            if interactive:
                print("{} network number is {}".format(npdu.pduSource,
                                                       npdu.nniNet))

        # forward it along
        NetworkServiceElement.indication(self, adapter, npdu)
Пример #21
0
    def __init__(self, addr1, port1, net1, addr2, port2, net2):
        if _debug:
            NATRouter._debug("__init__ %r %r %r %r %r %r", addr1, port1, net1,
                             addr2, port2, net2)

        # a network service access point will be needed
        self.nsap = NetworkServiceAccessPoint()

        # give the NSAP a generic network layer service element
        self.nse = NetworkServiceElement()
        bind(self.nse, self.nsap)

        #== First stack

        # local address
        local_addr = Address("{}:{}".format(addr1, port1))

        # create a BBMD stack
        self.s1_bip = BIPBBMD(local_addr)
        self.s1_annexj = AnnexJCodec()
        self.s1_mux = UDPMultiplexer(local_addr)

        # bind the bottom layers
        bind(self.s1_bip, self.s1_annexj, self.s1_mux.annexJ)

        # bind the BIP stack to the local network
        self.nsap.bind(self.s1_bip, net1, local_addr)

        #== Second stack

        # global address
        global_addr = Address(addr2)
        nat_addr = Address("{}:{}".format(addr1, port2))

        # create a NAT stack
        self.s2_bip = BIPNAT(global_addr)
        self.s2_annexj = AnnexJCodec()
        self.s2_mux = UDPMultiplexer(nat_addr)

        # bind the bottom layers
        bind(self.s2_bip, self.s2_annexj, self.s2_mux.annexJ)

        # bind the BIP stack to the global network
        self.nsap.bind(self.s2_bip, net2, global_addr)
    def __init__(self, addr):
        if _debug: TestBBMD._debug("TestBBMD %r", addr)
        BIPBBMD.__init__(self, addr)

        # save the address
        self.address = addr

        # make the lower layers
        self.annexj = AnnexJCodec()
        self.mux = UDPMultiplexer(self.address)

        # bind the bottom layers
        bind(self, self.annexj, self.mux.annexJ)

        # give this a generic network layer service access point and element
        self.nsap = NetworkServiceAccessPoint()
        self.nse = NetworkServiceElement()
        self.nsap.bind(self)
        bind(self.nse, self.nsap)
Пример #23
0
    def __init__(self, localDevice, vlan):
        if _debug:
            ApplicationStateMachine._debug("__init__ %r %r", localDevice, vlan)

        # build an address and save it
        self.address = Address(localDevice.objectIdentifier[1])
        if _debug:
            ApplicationStateMachine._debug("    - address: %r", self.address)

        # continue with initialization
        Application.__init__(self, localDevice, self.address)
        StateMachine.__init__(self, name=localDevice.objectName)

        # include a application decoder
        self.asap = ApplicationServiceAccessPoint()

        # pass the device object to the state machine access point so it
        # can know if it should support segmentation
        self.smap = StateMachineAccessPoint(localDevice)

        # the segmentation state machines need access to the same device
        # information cache as the application
        self.smap.deviceInfoCache = self.deviceInfoCache

        # a network service access point will be needed
        self.nsap = NetworkServiceAccessPoint()

        # give the NSAP a generic network layer service element
        self.nse = NetworkServiceElement()
        bind(self.nse, self.nsap)

        # bind the top layers
        bind(self, self.asap, self.smap, self.nsap)

        # create a node, added to the network
        self.node = Node(self.address, vlan)

        # bind the network service to the node, no network number
        self.nsap.bind(self.node)

        # placeholder for the result block
        self.confirmed_private_result = None
Пример #24
0
    def __init__(self, lan, addr1, net1, addr2, net2):
        if _debug:
            MQTT2IPRouter._debug("__init__ %r %r %r %r %r", lan, addr1, net1,
                                 addr2, net2)
        global args

        # a network service access point will be needed
        self.nsap = NetworkServiceAccessPoint()

        # give the NSAP a generic network layer service element
        self.nse = NetworkServiceElement()
        bind(self.nse, self.nsap)

        #== First stack

        # create an MQTT client
        self.s1_msap = bacpypes_mqtt.MQTTClient(lan,
                                                addr1,
                                                args.host,
                                                port=args.port,
                                                keepalive=args.keepalive)

        # create a service element for the client
        self.s1_mse = bacpypes_mqtt.MQTTServiceElement()
        bind(self.s1_mse, self.s1_msap)

        # bind to the MQTT network
        self.nsap.bind(self.s1_msap, net1)

        #== Second stack

        # create a generic BIP stack, bound to the Annex J server
        # on the UDP multiplexer
        self.s2_bip = BIPSimple()
        self.s2_annexj = AnnexJCodec()
        self.s2_mux = UDPMultiplexer(addr2)

        # bind the bottom layers
        bind(self.s2_bip, self.s2_annexj, self.s2_mux.annexJ)

        # bind the BIP stack to the local network
        self.nsap.bind(self.s2_bip, net2)
    def __init__(self, localDevice, localAddress, aseID=None):
        if _debug:
            TestProxyApplication._debug("__init__ %r %r aseID=%r", localDevice,
                                        localAddress, aseID)
        Application.__init__(self, localDevice, localAddress, aseID)

        # include a application decoder
        self.asap = ApplicationServiceAccessPoint()

        # pass the device object to the state machine access point so it
        # can know if it should support segmentation
        self.smap = StateMachineAccessPoint(localDevice)

        # a network service access point will be needed
        self.nsap = NetworkServiceAccessPoint()

        # give the NSAP a generic network layer service element
        self.nse = NetworkServiceElement()
        bind(self.nse, self.nsap)

        # bind the top layers
        bind(self, self.asap, self.smap, self.nsap)

        # create a generic BIP stack, bound to the Annex J server
        # on the UDP multiplexer
        self.bip = BIPSimple()
        self.annexj = AnnexJCodec()
        self.mux = UDPMultiplexer(self.localAddress)

        # bind the bottom layers
        bind(self.bip, self.annexj, self.mux.annexJ)

        # bind the BIP stack to network 5, the 'local' network
        self.nsap.bind(self.bip, 5, self.localAddress)

        # create a multiplexer for the service
        self.mux = TCPServerMultiplexer(self.localAddress)

        # proxy connections are bound to the nsap
        self.proxyServer = TestProxyServer(self.mux, self.nsap)
Пример #26
0
    def __init__(self,
                 vlan_device,
                 vlan_address,
                 aseID=None,
                 register_reader=None):
        if _debug:
            VLANApplication._debug("__init__ %r %r aseID=%r", vlan_device,
                                   vlan_address, aseID)
        Application.__init__(self, vlan_device, vlan_address, aseID)

        # include a application decoder
        self.asap = ApplicationServiceAccessPoint()

        # pass the device object to the state machine access point so it
        # can know if it should support segmentation
        self.smap = StateMachineAccessPoint(vlan_device)

        # the segmentation state machines need access to the same device
        # information cache as the application
        self.smap.deviceInfoCache = self.deviceInfoCache

        # a network service access point will be needed
        self.nsap = NetworkServiceAccessPoint()

        # give the NSAP a generic network layer service element
        self.nse = NetworkServiceElement()
        bind(self.nse, self.nsap)

        # bind the top layers
        bind(self, self.asap, self.smap, self.nsap)

        # create a vlan node at the assigned address
        self.vlan_node = Node(vlan_address)

        # bind the stack to the node, no network number
        self.nsap.bind(self.vlan_node)

        # set register reader class that will look into block of registers for all associated slaves
        self.register_reader = register_reader
Пример #27
0
    def __init__(self, lan, addr1, net1):
        if _debug:
            VLANRouter._debug("__init__ %r %r %r", lan, addr1, net1)

        # a network service access point will be needed
        self.nsap = NetworkServiceAccessPoint()

        # give the NSAP a generic network layer service element
        self.nse = NetworkServiceElement()
        bind(self.nse, self.nsap)

        # create an MQTT client
        self.msap = bacpypes_mqtt.MQTTClient(
            lan, addr1, args.host, port=args.port, keepalive=args.keepalive
        )

        # create a service element for the client
        self.mse = bacpypes_mqtt.MQTTServiceElement()
        bind(self.mse, self.msap)

        # bind to the MQTT network
        self.nsap.bind(self.msap, net1)
Пример #28
0
    def __init__(self, vlan_device, vlan_address, aseID=None):
        if _debug:
            VLANConsoleApplication._debug("__init__ %r %r aseID=%r",
                                          vlan_device, vlan_address, aseID)
        global args

        # normal initialization
        ApplicationIOController.__init__(self, vlan_device, aseID=aseID)

        # optional read property multiple
        if args.rpm:
            self.add_capability(ReadWritePropertyMultipleServices)

        # include a application decoder
        self.asap = ApplicationServiceAccessPoint()

        # pass the device object to the state machine access point so it
        # can know if it should support segmentation
        self.smap = StateMachineAccessPoint(vlan_device)

        # the segmentation state machines need access to the same device
        # information cache as the application
        self.smap.deviceInfoCache = self.deviceInfoCache

        # a network service access point will be needed
        self.nsap = NetworkServiceAccessPoint()

        # give the NSAP a generic network layer service element
        self.nse = NetworkServiceElement()
        bind(self.nse, self.nsap)

        # bind the top layers
        bind(self, self.asap, self.smap, self.nsap)

        # create a vlan node at the assigned address
        self.vlan_node = Node(vlan_address)

        # bind the stack to the node, no network number, no addresss
        self.nsap.bind(self.vlan_node)
Пример #29
0
    def __init__(self, addr1, net1, addr2, net2):
        if _debug:
            IP2IPRouter._debug("__init__ %r %r %r %r", addr1, net1, addr2,
                               net2)

        # a network service access point will be needed
        self.nsap = NetworkServiceAccessPoint()

        # give the NSAP a generic network layer service element
        self.nse = NetworkServiceElement()
        bind(self.nse, self.nsap)

        #== First stack

        # create a generic BIP stack, bound to the Annex J server
        # on the UDP multiplexer
        self.s1_bip = BIPSimple()
        self.s1_annexj = AnnexJCodec()
        self.s1_mux = UDPMultiplexer(addr1)

        # bind the bottom layers
        bind(self.s1_bip, self.s1_annexj, self.s1_mux.annexJ)

        # bind the BIP stack to the local network
        self.nsap.bind(self.s1_bip, net1, addr1)

        #== Second stack

        # create a generic BIP stack, bound to the Annex J server
        # on the UDP multiplexer
        self.s2_bip = BIPSimple()
        self.s2_annexj = AnnexJCodec()
        self.s2_mux = UDPMultiplexer(addr2)

        # bind the bottom layers
        bind(self.s2_bip, self.s2_annexj, self.s2_mux.annexJ)

        # bind the BIP stack to the local network
        self.nsap.bind(self.s2_bip, net2, addr2)
Пример #30
0
    def __init__(self, local_address, local_network, foreign_address, bbmd_ttl=30, rebootQueue=None):
        if _debug: VLANRouter._debug("__init__ %r %r", local_address, local_network)

        if isinstance(local_address, Address):
            self.local_address = local_address
        else:
            self.local_address = Address(local_address)

        if isinstance(foreign_address, Address):
            self.foreign_address = foreign_address
        else:
            self.foreign_address = Address(foreign_address)
        # a network service access point will be needed
        self.nsap = NetworkServiceAccessPoint()

        # give the NSAP a generic network layer service element
        self.nse = NetworkServiceElement()
        bind(self.nse, self.nsap)

        # create a BBMD, bound to the Annex J server
        # on the UDP multiplexer
        # from WhoIsIAmForeign ForeignApplication
        # create a generic BIP stack, bound to the Annex J server
        # on the UDP multiplexer
        self.bip = BIPForeign(self.foreign_address, bbmd_ttl)
        # self.bip = BIPForeign(Address('10.166.1.72'), 30)
        # self.bip = BIPForeign(Address('192.168.1.10'), 30)
        # self.bip = BIPForeign(Address('130.91.139.99'), 30)
        self.annexj = AnnexJCodec()
        # noBroadcast=True stops bcast to local ntwrk
        self.mux = UDPMultiplexer(self.local_address, noBroadcast=True, rebootQueue=rebootQueue)

        # bind the bottom layers
        bind(self.bip, self.annexj, self.mux.annexJ)

        # bind the BIP stack to the local network
        self.nsap.bind(self.bip, local_network, self.local_address)