use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct CBCharacteristicProperties(pub NSUInteger);
bitflags::bitflags! {
impl CBCharacteristicProperties: NSUInteger {
const CBCharacteristicPropertyBroadcast = 0x01;
const CBCharacteristicPropertyRead = 0x02;
const CBCharacteristicPropertyWriteWithoutResponse = 0x04;
const CBCharacteristicPropertyWrite = 0x08;
const CBCharacteristicPropertyNotify = 0x10;
const CBCharacteristicPropertyIndicate = 0x20;
const CBCharacteristicPropertyAuthenticatedSignedWrites = 0x40;
const CBCharacteristicPropertyExtendedProperties = 0x80;
const CBCharacteristicPropertyNotifyEncryptionRequired = 0x100;
const CBCharacteristicPropertyIndicateEncryptionRequired = 0x200;
}
}
unsafe impl Encode for CBCharacteristicProperties {
const ENCODING: Encoding = NSUInteger::ENCODING;
}
unsafe impl RefEncode for CBCharacteristicProperties {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
#[cfg(feature = "CBAttribute")]
pub struct CBCharacteristic;
#[cfg(feature = "CBAttribute")]
unsafe impl ClassType for CBCharacteristic {
#[inherits(NSObject)]
type Super = CBAttribute;
type Mutability = InteriorMutable;
}
);
#[cfg(feature = "CBAttribute")]
unsafe impl NSObjectProtocol for CBCharacteristic {}
extern_methods!(
#[cfg(feature = "CBAttribute")]
unsafe impl CBCharacteristic {
#[cfg(feature = "CBService")]
#[method_id(@__retain_semantics Other service)]
pub unsafe fn service(&self) -> Option<Retained<CBService>>;
#[method(properties)]
pub unsafe fn properties(&self) -> CBCharacteristicProperties;
#[method_id(@__retain_semantics Other value)]
pub unsafe fn value(&self) -> Option<Retained<NSData>>;
#[cfg(feature = "CBDescriptor")]
#[method_id(@__retain_semantics Other descriptors)]
pub unsafe fn descriptors(&self) -> Option<Retained<NSArray<CBDescriptor>>>;
#[deprecated]
#[method(isBroadcasted)]
pub unsafe fn isBroadcasted(&self) -> bool;
#[method(isNotifying)]
pub unsafe fn isNotifying(&self) -> bool;
}
);
extern_methods!(
#[cfg(feature = "CBAttribute")]
unsafe impl CBCharacteristic {
#[method_id(@__retain_semantics Init init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
}
);
extern_methods!(
#[cfg(feature = "CBAttribute")]
unsafe impl CBCharacteristic {
#[method_id(@__retain_semantics New new)]
pub unsafe fn new() -> Retained<Self>;
}
);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct CBAttributePermissions(pub NSUInteger);
bitflags::bitflags! {
impl CBAttributePermissions: NSUInteger {
#[doc(alias = "CBAttributePermissionsReadable")]
const Readable = 0x01;
#[doc(alias = "CBAttributePermissionsWriteable")]
const Writeable = 0x02;
#[doc(alias = "CBAttributePermissionsReadEncryptionRequired")]
const ReadEncryptionRequired = 0x04;
#[doc(alias = "CBAttributePermissionsWriteEncryptionRequired")]
const WriteEncryptionRequired = 0x08;
}
}
unsafe impl Encode for CBAttributePermissions {
const ENCODING: Encoding = NSUInteger::ENCODING;
}
unsafe impl RefEncode for CBAttributePermissions {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
#[cfg(feature = "CBAttribute")]
pub struct CBMutableCharacteristic;
#[cfg(feature = "CBAttribute")]
unsafe impl ClassType for CBMutableCharacteristic {
#[inherits(CBAttribute, NSObject)]
type Super = CBCharacteristic;
type Mutability = InteriorMutable;
}
);
#[cfg(feature = "CBAttribute")]
unsafe impl NSObjectProtocol for CBMutableCharacteristic {}
extern_methods!(
#[cfg(feature = "CBAttribute")]
unsafe impl CBMutableCharacteristic {
#[method(permissions)]
pub unsafe fn permissions(&self) -> CBAttributePermissions;
#[method(setPermissions:)]
pub unsafe fn setPermissions(&self, permissions: CBAttributePermissions);
#[cfg(all(feature = "CBCentral", feature = "CBPeer"))]
#[method_id(@__retain_semantics Other subscribedCentrals)]
pub unsafe fn subscribedCentrals(&self) -> Option<Retained<NSArray<CBCentral>>>;
#[method(properties)]
pub unsafe fn properties(&self) -> CBCharacteristicProperties;
#[method(setProperties:)]
pub unsafe fn setProperties(&self, properties: CBCharacteristicProperties);
#[method_id(@__retain_semantics Other value)]
pub unsafe fn value(&self) -> Option<Retained<NSData>>;
#[method(setValue:)]
pub unsafe fn setValue(&self, value: Option<&NSData>);
#[cfg(feature = "CBDescriptor")]
#[method_id(@__retain_semantics Other descriptors)]
pub unsafe fn descriptors(&self) -> Option<Retained<NSArray<CBDescriptor>>>;
#[cfg(feature = "CBDescriptor")]
#[method(setDescriptors:)]
pub unsafe fn setDescriptors(&self, descriptors: Option<&NSArray<CBDescriptor>>);
#[cfg(feature = "CBUUID")]
#[method_id(@__retain_semantics Init initWithType:properties:value:permissions:)]
pub unsafe fn initWithType_properties_value_permissions(
this: Allocated<Self>,
uuid: &CBUUID,
properties: CBCharacteristicProperties,
value: Option<&NSData>,
permissions: CBAttributePermissions,
) -> Retained<Self>;
}
);
extern_methods!(
#[cfg(feature = "CBAttribute")]
unsafe impl CBMutableCharacteristic {
#[method_id(@__retain_semantics Init init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
}
);
extern_methods!(
#[cfg(feature = "CBAttribute")]
unsafe impl CBMutableCharacteristic {
#[method_id(@__retain_semantics New new)]
pub unsafe fn new() -> Retained<Self>;
}
);