def _getNearest(self, setup, rssiAtLeast, scanDuration,
                    returnFirstAcceptable, validated, addressesToExclude):
        addressesToExcludeSet = set()
        for data in addressesToExclude:
            if isinstance(data, dict):
                if "address" in data:
                    addressesToExcludeSet.add(data["address"].lower())
                else:
                    raise BluenetException(
                        BluenetError.INVALID_ADDRESS,
                        "Addresses to Exclude is either an array of addresses (like 'f7:19:a4:ef:ea:f6') or an array of dicts with the field 'address'"
                    )
            else:
                addressesToExcludeSet.add(data.lower())

        selector = NearestSelector(setup, rssiAtLeast, returnFirstAcceptable,
                                   addressesToExcludeSet)

        topic = Topics.advertisement
        if not validated:
            topic = SystemBleTopics.rawAdvertisement

        subscriptionId = BluenetEventBus.subscribe(
            topic, selector.handleAdvertisement)

        self.ble.startScanning(scanDuration=scanDuration)

        BluenetEventBus.unsubscribe(subscriptionId)

        return selector.getNearest()
    def isCrownstoneInNormalMode(self, address, scanDuration=3, waitUntilInRequiredMode=False):
        # print("Checking if it is in normal mode, address", address)
        checker = NormalModeChecker(address, waitUntilInRequiredMode)
        subscriptionId = BluenetEventBus.subscribe(Topics.advertisement, checker.handleAdvertisement)

        self.ble.startScanning(scanDuration=scanDuration)

        BluenetEventBus.unsubscribe(subscriptionId)

        return checker.getResult()
    def getRssiAverage(self, address, scanDuration=3):
        # print("Checking if it is in normal mode, address", address)
        checker = RssiChecker(address)
        subscriptionId = BluenetEventBus.subscribe(Topics.advertisement, checker.handleAdvertisement)

        self.ble.startScanning(scanDuration=scanDuration)

        BluenetEventBus.unsubscribe(subscriptionId)

        return checker.getResult()
Example #4
0
    def getRssiAverage(self, address, scanDuration=3):
        checker = RssiChecker(address)
        subscriptionId = BluenetEventBus.subscribe(
            SystemBleTopics.rawAdvertisement, lambda advertisement: checker.
            handleAdvertisement(advertisement.getDictionary()))

        self.ble.startScanning(scanDuration=scanDuration)

        BluenetEventBus.unsubscribe(subscriptionId)

        return checker.getResult()
 def getCrownstonesByScanning(self, scanDuration=3):
     gatherer = Gatherer()
 
     subscriptionIdValidated = BluenetEventBus.subscribe(Topics.advertisement,             lambda advertisementData: gatherer.handleAdvertisement(advertisementData, True)          )
     subscriptionIdAll       = BluenetEventBus.subscribe(SystemBleTopics.rawAdvertisement, lambda advertisement: gatherer.handleAdvertisement(advertisement.getDictionary(), False) )
 
     self.ble.startScanning(scanDuration=scanDuration)
 
     BluenetEventBus.unsubscribe(subscriptionIdValidated)
     BluenetEventBus.unsubscribe(subscriptionIdAll)
     
     return gatherer.getCollection()
Example #6
0
    def _getNearest(self, setup, rssiAtLeast, timeout, returnFirstAcceptable,
                    validated):
        selector = NearestSelector(setup, rssiAtLeast, returnFirstAcceptable)

        topic = Topics.advertisement
        if not validated:
            topic = SystemBleTopics.rawAdvertisement

        subscriptionId = BluenetEventBus.subscribe(
            topic, selector.handleAdvertisement)

        self.ble.startScanning(timeout=timeout)

        BluenetEventBus.unsubscribe(subscriptionId)

        return selector.getNearest()
Example #7
0
 def stop(self):
     print("Stopping UartBridge")
     self.running = False
     BluenetEventBus.unsubscribe(self.eventId)
Example #8
0
 def shutDown(self):
     for subscriptionId in self.subscriptionIds:
         BluenetEventBus.unsubscribe(subscriptionId)
         
     self.validator.shutDown()