/* @class CBCharacteristic
* @discussion
*代表一个服务的特征
*/
@interfaceCBCharacteristic :NSObject
//表明这个属于哪个service
@property(weak,readonly,nonatomic)CBService*service;
//characteristic的UUID标识
@property(readonly,nonatomic)CBUUID*UUID;
// characteristic的属性,是一个结构体
typedefNS_OPTIONS(NSInteger, CBCharacteristicProperties) {
// 标识这个characteristic的属性是广播
CBCharacteristicPropertyBroadcast=0x01,
// 标识这个characteristic的属性是读
CBCharacteristicPropertyRead=0x02,
// 标识这个characteristic的属性是写-没有响应
CBCharacteristicPropertyWriteWithoutResponse=0x04,
// 标识这个characteristic的属性是写
CBCharacteristicPropertyWrite=0x08,
// 标识这个characteristic的属性是通知
CBCharacteristicPropertyNotify=0x10,
// 标识这个characteristic的属性是声明
CBCharacteristicPropertyIndicate=0x20,
// 标识这个characteristic的属性是通过验证的
CBCharacteristicPropertyAuthenticatedSignedWrites=0x40,
// 标识这个characteristic的属性是拓展
CBCharacteristicPropertyExtendedProperties=0x80,
// 标识这个characteristic的属性是需要加密的通知
CBCharacteristicPropertyNotifyEncryptionRequiredNS_ENUM_AVAILABLE(NA,6_0)=0x100,
// 标识这个characteristic的属性是需要加密的申明
CBCharacteristicPropertyIndicateEncryptionRequiredNS_ENUM_AVAILABLE(NA,6_0)=0x200
};
@property(readonly,nonatomic)CBCharacteristicPropertiesproperties;
// characteristic的值
@property(retain,readonly)NSData*value;
// * *
@property(retain,readonly)NSArray*descriptors;
//特征是否正在广播
@property(readonly)BOOLisBroadcasted;
// 特征是否正在通知
@property(readonly)BOOLisNotifying;
@interfaceCBMutableCharacteristic :CBCharacteristic
// 权限
typedefNS_OPTIONS(NSInteger, CBAttributePermissions) {
//可读的
CBAttributePermissionsReadable=0x01,
//可写的
CBAttributePermissionsWriteable=0x02,
//需验证
CBAttributePermissionsReadEncryptionRequired=0x04,
CBAttributePermissionsWriteEncryptionRequired=0x08
}
@property(assign,readwrite,nonatomic)CBAttributePermissionspermissions;
//订阅这个characteristic的central
@property(retain,readonly)NSArray*subscribedCentrals
@property(retain,readwrite,nonatomic)CBUUID*UUID;
@property(assign,readwrite,nonatomic)CBCharacteristicPropertiesproperties;
@property(retain,readwrite)NSData*value;
@property(retain,readwrite)NSArray*descriptors;
- (id)initWithType:(CBUUID*)UUID properties:(CBCharacteristicProperties)properties value:(NSData*)value permissions:(CBAttributePermissions)permissions;