예제 #1
0
    async def discoverCharacteristics_(
        self, service: CBService, use_cached=True
    ) -> [CBCharacteristic]:
        if service.characteristics() is not None and use_cached is True:
            return service.characteristics()

        sUUID = service.UUID().UUIDString()
        event = self._service_characteristic_discovered_events.get_cleared(sUUID)
        self.peripheral.discoverCharacteristics_forService_(None, service)
        await event.wait()

        return service.characteristics()
예제 #2
0
    def peripheralManager_didAddService_error(  # noqa: N802
            self, peripheral_manager: CBPeripheralManager, service: CBService,
            error: NSError):
        uuid: str = service.UUID().UUIDString()
        if error:
            raise BlessError("Failed to add service {}: {}".format(
                uuid, error))

        logger.debug("Peripheral manager did add service: {}".format(uuid))
        logger.debug("service added had characteristics: {}".format(
            service.characteristics()))
        self._services_added_events[uuid].set()
예제 #3
0
    async def discoverCharacteristics_(self,
                                       service: CBService,
                                       use_cached=True) -> [CBCharacteristic]:
        if service.characteristics() is not None and use_cached is True:
            return service.characteristics()

        serviceUUID = service.UUID().UUIDString()
        self._service_characteristic_discovered_log[serviceUUID] = False

        self.peripheral.discoverCharacteristics_forService_(None, service)

        while not self._service_characteristic_discovered_log[serviceUUID]:
            await asyncio.sleep(0.01)

        return service.characteristics()
예제 #4
0
    def peripheral_didDiscoverCharacteristicsForService_error_(
            self, peripheral: CBPeripheral, service: CBService,
            error: NSError):
        serviceUUID = service.UUID().UUIDString()
        if error is not None:
            raise BleakError(
                "Failed to discover services for service {}: {}".format(
                    serviceUUID, error))

        logger.debug("Characteristics discovered")
        self._service_characteristic_discovered_log[serviceUUID] = True
예제 #5
0
    def did_discover_characteristics_for_service(
        self, peripheral: CBPeripheral, service: CBService, error: NSError
    ):
        sUUID = service.UUID().UUIDString()
        if error is not None:
            raise BleakError(
                "Failed to discover services for service {}: {}".format(sUUID, error)
            )

        logger.debug("Characteristics discovered")
        event = self._service_characteristic_discovered_events.get(sUUID)
        if event:
            event.set()
        else:
            logger.debug("Unexpected event didDiscoverCharacteristicsForService")