How to enable Custom CBDescriptor value?

Viewed 742

I am working on BLE app(Heath related), In that i have one option to get ECG values from BLE device.In that i need to enable 8 waveforms to get ECG data in my app.

My question how i can enable all waveforms using CBDescriptor.I need to pass data like below to CBDescriptor. Format of Waveform ID 0: 8bit, 1: 16bit, 2: 32bit, 3: 64bit, 4:128bit, 5: 8bit*3, 6: 16bit*3, 7: 32bit*3

 uint8_t waveArray[8] = {0x02,0x00,0x02,0x00,0x00,0x00,0x00,0x00};
 NSData *waveData = [NSData dataWithBytes:waveArray length:sizeof(waveArray)/sizeof(uint8_t)];
[peripheral writeValue:waveData forDescriptor:descript];

But i didn't get any response from device. Please help me.

1 Answers

Finally i got solution for my question. First we need to call discover methods for CBDescriptor.

[peripheral discoverDescriptorsForCharacteristic:characteristic];
-(void)peripheral:(CBPeripheral *)peripheral didDiscoverDescriptorsForCharacteristic:(CBCharacteristic *)characteristic  error:(NSError *)error {
 NSArray *Descroptors = [characteristic descriptors];
 CBDescriptor *descript;
 [peripheral setNotifyValue:YES forCharacteristic:characteristic];

for (descript in Descroptors)
{
    if ([descript.UUID isEqual:[CBUUID UUIDWithString:KT_WP_WC_CHARACTERISTIC]])
     {
         uint8_t waveArray[9] = {0x02,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00};//Your data which you need to send to BLE device
         NSData *waveData = [NSData dataWithBytes:waveArray length:sizeof(waveArray)/sizeof(uint8_t)];
         [peripheral writeValue:waveData forDescriptor:descript];
          NSLog(@"waveData ==%@",waveData);           
          CBUUID * sCBUUID = [CBUUID UUIDWithString:KT_WP_SERVICE];
          CBUUID * cCBUUID = [CBUUID UUIDWithString:KT_WP_WF_CHARACTERISTIC];
          [self CBUUIDwriteValue:sCBUUID characteristicUUID:cCBUUID p:peripheral data:waveData];
       }else
       {            
          const unsigned char bytes[] = { 0x28, 0x00 };//Your data which you need to send BLE device
          NSData *descriptorData = [NSData dataWithBytes:bytes length:2];            
          CBUUID * sCBUUID = [CBUUID UUIDWithString:KT_WP_SERVICE];
          CBUUID * cCBUUID = [CBUUID UUIDWithString:KT_WP_WF_CHARACTERISTIC];
           [self CBUUIDwriteValue:sCBUUID characteristicUUID:cCBUUID p:peripheral data:descriptorData];   
        }
  }

}
Related