Hi,
I have changed in my services so I have added 0x2A05 (service changed) characteristic in my 0x1801 service. But I am not able to read the service.
In didDiscoverServices I have below code.
- (void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error {
for (CBService *service in peripheral.services) {
DebugLog(@"Discovered service: %@", service);
[peripheral discoverCharacteristics:nil forService:service];
}
}
Also In didDiscoverCharacteristicsForService have below code.
- (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error {
self.connectedPeripheral = peripheral;
for (CBCharacteristic *characteristic in service.characteristics) {
if (characteristic.isNotifying) {
[self.connectedPeripheral setNotifyValue:YES forCharacteristic:characteristic];
}
}
}
Still I am not able to read the generic attribute service i.e 0x1801
here are the logs:
discovered services
2017-04-21 12:19:55.151 Beam[1876:823627] -[BLECentral peripheral:didDiscoverServices:] [Line 310] Discovered service: <CBService: 0x153af8830, isPrimary = YES, UUID = 524D1856-763D-43EB-A001-0594B37AC495>
2017-04-21 12:19:58.532 Beam[1876:823627] -[BLECentral peripheral:didDiscoverServices:] [Line 310] Discovered service: <CBService: 0x153af8710, isPrimary = YES, UUID = Battery>
2017-04-21 12:20:02.048 Beam[1876:823627] -[BLECentral peripheral:didDiscoverServices:] [Line 310] Discovered service: <CBService: 0x153af9fc0, isPrimary = YES, UUID = Device Information>
2017-04-21 12:20:05.042 Beam[1876:823627] -[BLECentral peripheral:didDiscoverServices:] [Line 310] Discovered service: <CBService: 0x153afa370, isPrimary = YES, UUID = 00001530-1212-EFDE-1523-785FEABCD123>
discovered characteristics
2017-04-21 12:20:37.554 Beam[1876:823627] -[BLECentral setNotifyValue:peripheral:] [Line 501] discovered Characteristics:<CBCharacteristic: 0x153b06ce0, UUID = 524D1857-763D-43EB-A001-0594B37AC495, properties = 0x12, value = (null), notifying = NO>
2017-04-21 12:20:56.464 Beam[1876:823627] -[BLECentral setNotifyValue:peripheral:] [Line 501] discovered Characteristics:<CBCharacteristic: 0x153b070d0, UUID = 524D1858-763D-43EB-A001-0594B37AC495, properties = 0xA, value = (null), notifying = NO>
2017-04-21 12:21:13.667 Beam[1876:823627] -[BLECentral setNotifyValue:peripheral:] [Line 501] discovered Characteristics:<CBCharacteristic: 0x153b07210, UUID = 524D1859-763D-43EB-A001-0594B37AC495, properties = 0x8, value = (null), notifying = NO>
2017-04-21 12:21:29.226 Beam[1876:823627] -[BLECentral setNotifyValue:peripheral:] [Line 501] discovered Characteristics:<CBCharacteristic: 0x153b07270, UUID = 524D1861-763D-43EB-A001-0594B37AC495, properties = 0x2, value = <0000>, notifying = NO>
2017-04-21 12:21:37.770 Beam[1876:823627] -[BLECentral setNotifyValue:peripheral:] [Line 501] discovered Characteristics:<CBCharacteristic: 0x153b07130, UUID = 524D1860-763D-43EB-A001-0594B37AC495, properties = 0x1A, value = <03>, notifying = NO>
2017-04-21 12:21:37.775 Beam[1876:823627] -[BLECentral setNotifyValue:peripheral:] [Line 501] discovered Characteristics:<CBCharacteristic: 0x153b0f170, UUID = Battery Level, properties = 0x12, value = <09>, notifying = NO>
2017-04-21 12:21:37.780 Beam[1876:823627] -[BLECentral setNotifyValue:peripheral:] [Line 501] discovered Characteristics:<CBCharacteristic: 0x153b0ffc0, UUID = Manufacturer Name String, properties = 0x2, value = <64>, notifying = NO>
2017-04-21 12:21:37.782 Beam[1876:823627] -[BLECentral setNotifyValue:peripheral:] [Line 501] discovered Characteristics:<CBCharacteristic: 0x153b01680, UUID = Hardware Revision String, properties = 0x2, value = <0a18>, notifying = NO>
2017-04-21 12:21:37.783 Beam[1876:823627] -[BLECentral setNotifyValue:peripheral:] [Line 501] discovered Characteristics:<CBCharacteristic: 0x153b007b0, UUID = Firmware Revision String, properties = 0x2, value = <52616e64 204d634e 616c6c79>, notifying = NO>
2017-04-21 12:21:37.805 Beam[1876:823627] -[BLECentral setNotifyValue:peripheral:] [Line 501] discovered Characteristics:<CBCharacteristic: 0x153b05560, UUID = Firmware Revision String, properties = 0x2, value = <76312e30 325f3034 3139>, notifying = NO>
2017-04-21 12:21:37.806 Beam[1876:823627] -[BLECentral setNotifyValue:peripheral:] [Line 501] discovered Characteristics:<CBCharacteristic: 0x153b06400, UUID = 00001532-1212-EFDE-1523-785FEABCD123, properties = 0x4, value = (null), notifying = NO>
2017-04-21 12:21:37.806 Beam[1876:823627] -[BLECentral setNotifyValue:peripheral:] [Line 501] discovered Characteristics:<CBCharacteristic: 0x153b06460, UUID = 00001531-1212-EFDE-1523-785FEABCD123, properties = 0x18, value = (null), notifying = NO>
2017-04-21 12:21:37.806 Beam[1876:823627] -[BLECentral setNotifyValue:peripheral:] [Line 501] discovered Characteristics:<CBCharacteristic: 0x153af9a70, UUID = 00001534-1212-EFDE-1523-785FEABCD123, properties = 0x2, value = (null), notifying = NO>
As per Apples documentation here :developer.apple.com/.../BluetoothDesignGuidelines.pdf
service Generic attribute i.e 0x1801 Is handled by iOS internally.
So, I don't know how to clear the BLE cache using IS_Service_Changed ? Do I need to read (0x2A05 ) characteristics i.e service Changed Characteristic ? How my BLE cache will get cleared ?
Suggest a way to read the 0x2A05 characteristics. How to enable notification for it ?