Posts

Post marked as solved
5 Replies
4.7k Views
Hi all,We found iOS may return services and characteristics from cache if our application invoke CBPeripheral::discoverServices().14:59:18.824260 +0800bluetoothdAttempting to find all services on device "<private>"14:59:18.824785 +0800bluetoothdReturning primary services from cacheBut our product may change the chracteristics attribute handle number after product firmware updated.For example, FW Ver1: discovered serivce like below,14:59:18.826036 +0800 bluetoothd Using local database for discover services by UUID.14:59:18.826926 +0800 bluetoothd statedump: 0x0001 Primary Service [ serviceUUID: -, endHandle: 0x0006, discoveredCharacteristics: all ]14:59:18.827124 +0800 bluetoothd statedump: 0x0002 Characteristic [ valueUUID: -, valueHandle: 0x0003, properties: notify, discoveredDescriptors: all ]14:59:18.827412 +0800 bluetoothd statedump: 0x0003 Characteristic Value [ - ]14:59:18.827549 +0800 bluetoothd statedump: 0x0004 Client Configuration [ none ]14:59:18.827713 +0800 bluetoothd statedump: 0x0005 Characteristic [ valueUUID: -, valueHandle: 0x0006, properties: responseless-writes write, discoveredDescriptors: none ]But after FW updated, FW Ver2: discovered service should like below,15:00:09.204374 +0800 bluetoothd statedump: 0x0001 Primary Service [ serviceUUID: -, endHandle: 0x0006, discoveredCharacteristics: none ]15:00:09.204613 +0800 bluetoothd statedump: 0x0007 Primary Service [ serviceUUID: -, endHandle: 0x000C, discoveredCharacteristics: none ]15:00:09.205718 +0800 bluetoothd Finding all characteristics in range [0x0007, 0x000c] on device "<private>"15:00:09.265822 +0800 bluetoothd statedump: 0x0001 Primary Service [ serviceUUID: -, endHandle: 0x0006, discoveredCharacteristics: none ]15:00:09.266798 +0800 bluetoothd statedump: 0x0007 Primary Service [ serviceUUID: -, endHandle: 0x000C, discoveredCharacteristics: all ]15:00:09.267084 +0800 bluetoothd statedump: 0x0008 Characteristic [ valueUUID: -, valueHandle: 0x0009, properties: notify, discoveredDescriptors: none ]15:00:09.267562 +0800 bluetoothd statedump: 0x000B Characteristic [ valueUUID: -, valueHandle: 0x000C, properties: responseless-writes write, discoveredDescriptors: none ]But if we didnot power off/on iPhone's Setting >> Bluetooth switch (reset bluetooth), we cannot setNotifyValue() successfuly.14:59:18.883104 +0800 bluetoothd Received error response for write value 3 (status=65535)14:59:18.883522 +0800 bluetoothd Failed to write descriptor at handle 0x0004 on device "<private>" - result was 3How can app force to discover service and characteristic from BLE device but not just from iOS local cache database?Thank you
Posted Last updated
.