#[repr(C)]pub struct CBPeripheral { /* private fields */ }
CBPeer
and CBPeripheral
only.Expand description
Represents a peripheral.
See also Apple’s documentation
Implementations§
Source§impl CBPeripheral
impl CBPeripheral
Sourcepub unsafe fn delegate(
&self,
) -> Option<Retained<ProtocolObject<dyn CBPeripheralDelegate>>>
pub unsafe fn delegate( &self, ) -> Option<Retained<ProtocolObject<dyn CBPeripheralDelegate>>>
The delegate object that will receive peripheral events.
Sourcepub unsafe fn setDelegate(
&self,
delegate: Option<&ProtocolObject<dyn CBPeripheralDelegate>>,
)
pub unsafe fn setDelegate( &self, delegate: Option<&ProtocolObject<dyn CBPeripheralDelegate>>, )
This is a weak property.
Setter for delegate
.
Sourcepub unsafe fn RSSI(&self) -> Option<Retained<NSNumber>>
👎Deprecated
pub unsafe fn RSSI(&self) -> Option<Retained<NSNumber>>
The most recently read RSSI, in decibels.
peripheral:didReadRSSI:error:} instead.
Sourcepub unsafe fn state(&self) -> CBPeripheralState
pub unsafe fn state(&self) -> CBPeripheralState
The current connection state of the peripheral.
Sourcepub unsafe fn services(&self) -> Option<Retained<NSArray<CBService>>>
Available on crate features CBAttribute
and CBService
only.
pub unsafe fn services(&self) -> Option<Retained<NSArray<CBService>>>
CBAttribute
and CBService
only.A list of
CBService
objects that have been discovered on the peripheral.
Sourcepub unsafe fn canSendWriteWithoutResponse(&self) -> bool
pub unsafe fn canSendWriteWithoutResponse(&self) -> bool
YES if the remote device has space to send a write without response. If this value is NO, the value will be set to YES after the current writes have been flushed, and
peripheralIsReadyToSendWriteWithoutResponse: will be called.Sourcepub unsafe fn ancsAuthorized(&self) -> bool
pub unsafe fn ancsAuthorized(&self) -> bool
YES if the remote device has been authorized to receive data over ANCS (Apple Notification Service Center) protocol. If this value is NO, the value will be set to YES after a user authorization occurs and
didUpdateANCSAuthorizationForPeripheral: will be called.Sourcepub unsafe fn readRSSI(&self)
pub unsafe fn readRSSI(&self)
While connected, retrieves the current RSSI of the link.
See: peripheral:didReadRSSI:error:
Sourcepub unsafe fn discoverServices(&self, service_uui_ds: Option<&NSArray<CBUUID>>)
Available on crate feature CBUUID
only.
pub unsafe fn discoverServices(&self, service_uui_ds: Option<&NSArray<CBUUID>>)
CBUUID
only.Parameter serviceUUIDs
: A list of
CBUUID
objects representing the service types to be discovered. If
nil
,
all services will be discovered.
Discovers available service(s) on the peripheral.
See: peripheral:didDiscoverServices:
Sourcepub unsafe fn discoverIncludedServices_forService(
&self,
included_service_uui_ds: Option<&NSArray<CBUUID>>,
service: &CBService,
)
Available on crate features CBAttribute
and CBService
and CBUUID
only.
pub unsafe fn discoverIncludedServices_forService( &self, included_service_uui_ds: Option<&NSArray<CBUUID>>, service: &CBService, )
CBAttribute
and CBService
and CBUUID
only.Parameter includedServiceUUIDs
: A list of
CBUUID
objects representing the included service types to be discovered. If
nil
,
all of
service
s included services will be discovered, which is considerably slower and not recommended.
Parameter service
: A GATT service.
Discovers the specified included service(s) of service .
See: peripheral:didDiscoverIncludedServicesForService:error:
Sourcepub unsafe fn discoverCharacteristics_forService(
&self,
characteristic_uui_ds: Option<&NSArray<CBUUID>>,
service: &CBService,
)
Available on crate features CBAttribute
and CBService
and CBUUID
only.
pub unsafe fn discoverCharacteristics_forService( &self, characteristic_uui_ds: Option<&NSArray<CBUUID>>, service: &CBService, )
CBAttribute
and CBService
and CBUUID
only.Parameter characteristicUUIDs
: A list of
CBUUID
objects representing the characteristic types to be discovered. If
nil
,
all characteristics of
service
will be discovered.
Parameter service
: A GATT service.
Discovers the specified characteristic(s) of service .
See: peripheral:didDiscoverCharacteristicsForService:error:
Sourcepub unsafe fn readValueForCharacteristic(
&self,
characteristic: &CBCharacteristic,
)
Available on crate features CBAttribute
and CBCharacteristic
only.
pub unsafe fn readValueForCharacteristic( &self, characteristic: &CBCharacteristic, )
CBAttribute
and CBCharacteristic
only.Parameter characteristic
: A GATT characteristic.
Reads the characteristic value for characteristic .
See: peripheral:didUpdateValueForCharacteristic:error:
Sourcepub unsafe fn maximumWriteValueLengthForType(
&self,
type: CBCharacteristicWriteType,
) -> NSUInteger
pub unsafe fn maximumWriteValueLengthForType( &self, type: CBCharacteristicWriteType, ) -> NSUInteger
The maximum amount of data, in bytes, that can be sent to a characteristic in a single write type.
See: writeValue:forCharacteristic:type:
Sourcepub unsafe fn writeValue_forCharacteristic_type(
&self,
data: &NSData,
characteristic: &CBCharacteristic,
type: CBCharacteristicWriteType,
)
Available on crate features CBAttribute
and CBCharacteristic
only.
pub unsafe fn writeValue_forCharacteristic_type( &self, data: &NSData, characteristic: &CBCharacteristic, type: CBCharacteristicWriteType, )
CBAttribute
and CBCharacteristic
only.Parameter data
: The value to write.
Parameter characteristic
: The characteristic whose characteristic value will be written.
Parameter type
: The type of write to be executed.
Writes
value
to
characteristic
’s characteristic value.
If the
CBCharacteristicWriteWithResponse
type is specified, {
peripheral:didWriteValueForCharacteristic:error:}
is called with the result of the write request.
If the <code>CBCharacteristicWriteWithoutResponse</code> type is specified, and canSendWriteWithoutResponse is false, the delivery
of the data is best-effort and may not be guaranteed.
@see peripheral:didWriteValueForCharacteristic:error:
@see peripheralIsReadyToSendWriteWithoutResponse:
@see canSendWriteWithoutResponse
@see CBCharacteristicWriteType
Sourcepub unsafe fn setNotifyValue_forCharacteristic(
&self,
enabled: bool,
characteristic: &CBCharacteristic,
)
Available on crate features CBAttribute
and CBCharacteristic
only.
pub unsafe fn setNotifyValue_forCharacteristic( &self, enabled: bool, characteristic: &CBCharacteristic, )
CBAttribute
and CBCharacteristic
only.Parameter enabled
: Whether or not notifications/indications should be enabled.
Parameter characteristic
: The characteristic containing the client characteristic configuration descriptor.
Enables or disables notifications/indications for the characteristic value of characteristic . If characteristic allows both, notifications will be used. When notifications/indications are enabled, updates to the characteristic value will be received via delegate method
peripheral:didUpdateValueForCharacteristic:error:
. Since it is the peripheral that chooses when to send an update, the application should be prepared to handle them as long as notifications/indications remain enabled.
See: peripheral:didUpdateNotificationStateForCharacteristic:error:
See also: CBConnectPeripheralOptionNotifyOnNotificationKey
Sourcepub unsafe fn discoverDescriptorsForCharacteristic(
&self,
characteristic: &CBCharacteristic,
)
Available on crate features CBAttribute
and CBCharacteristic
only.
pub unsafe fn discoverDescriptorsForCharacteristic( &self, characteristic: &CBCharacteristic, )
CBAttribute
and CBCharacteristic
only.Parameter characteristic
: A GATT characteristic.
Discovers the characteristic descriptor(s) of characteristic .
See: peripheral:didDiscoverDescriptorsForCharacteristic:error:
Sourcepub unsafe fn readValueForDescriptor(&self, descriptor: &CBDescriptor)
Available on crate features CBAttribute
and CBDescriptor
only.
pub unsafe fn readValueForDescriptor(&self, descriptor: &CBDescriptor)
CBAttribute
and CBDescriptor
only.Parameter descriptor
: A GATT characteristic descriptor.
Reads the value of descriptor .
See: peripheral:didUpdateValueForDescriptor:error:
Sourcepub unsafe fn writeValue_forDescriptor(
&self,
data: &NSData,
descriptor: &CBDescriptor,
)
Available on crate features CBAttribute
and CBDescriptor
only.
pub unsafe fn writeValue_forDescriptor( &self, data: &NSData, descriptor: &CBDescriptor, )
CBAttribute
and CBDescriptor
only.Parameter data
: The value to write.
Parameter descriptor
: A GATT characteristic descriptor.
Writes data to descriptor ’s value. Client characteristic configuration descriptors cannot be written using this method, and should instead use
setNotifyValue:forCharacteristic:
.
See: peripheral:didWriteValueForCharacteristic:error:
Sourcepub unsafe fn openL2CAPChannel(&self, psm: CBL2CAPPSM)
Available on crate feature CBL2CAPChannel
only.
pub unsafe fn openL2CAPChannel(&self, psm: CBL2CAPPSM)
CBL2CAPChannel
only.Parameter PSM
: The PSM of the channel to open
Attempt to open an L2CAP channel to the peripheral using the supplied PSM.
See: peripheral:didWriteValueForCharacteristic:error:
Source§impl CBPeripheral
Methods declared on superclass CBPeer
.
impl CBPeripheral
Methods declared on superclass CBPeer
.
Methods from Deref<Target = CBPeer>§
Sourcepub unsafe fn identifier(&self) -> Retained<NSUUID>
pub unsafe fn identifier(&self) -> Retained<NSUUID>
The unique, persistent identifier associated with the peer.
Methods from Deref<Target = NSObject>§
Sourcepub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
pub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
Handle messages the object doesn’t recognize.
See Apple’s documentation for details.
Methods from Deref<Target = AnyObject>§
Sourcepub fn class(&self) -> &'static AnyClass
pub fn class(&self) -> &'static AnyClass
Dynamically find the class of this object.
§Panics
May panic if the object is invalid (which may be the case for objects
returned from unavailable init
/new
methods).
§Example
Check that an instance of NSObject
has the precise class NSObject
.
use objc2::ClassType;
use objc2::runtime::NSObject;
let obj = NSObject::new();
assert_eq!(obj.class(), NSObject::class());
Sourcepub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
👎Deprecated: this is difficult to use correctly, use Ivar::load
instead.
pub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
Ivar::load
instead.Use Ivar::load
instead.
§Safety
The object must have an instance variable with the given name, and it
must be of type T
.
See Ivar::load_ptr
for details surrounding this.
Sourcepub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
pub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
Attempt to downcast the object to a class of type T
.
This is the reference-variant. Use Retained::downcast
if you want
to convert a retained object to another type.
§Mutable classes
Some classes have immutable and mutable variants, such as NSString
and NSMutableString
.
When some Objective-C API signature says it gives you an immutable class, it generally expects you to not mutate that, even though it may technically be mutable “under the hood”.
So using this method to convert a NSString
to a NSMutableString
,
while not unsound, is generally frowned upon unless you created the
string yourself, or the API explicitly documents the string to be
mutable.
See Apple’s documentation on mutability and on
isKindOfClass:
for more details.
§Generic classes
Objective-C generics are called “lightweight generics”, and that’s because they aren’t exposed in the runtime. This makes it impossible to safely downcast to generic collections, so this is disallowed by this method.
You can, however, safely downcast to generic collections where all the
type-parameters are AnyObject
.
§Panics
This works internally by calling isKindOfClass:
. That means that the
object must have the instance method of that name, and an exception
will be thrown (if CoreFoundation is linked) or the process will abort
if that is not the case. In the vast majority of cases, you don’t need
to worry about this, since both root objects NSObject
and
NSProxy
implement this method.
§Examples
Cast an NSString
back and forth from NSObject
.
use objc2::rc::Retained;
use objc2_foundation::{NSObject, NSString};
let obj: Retained<NSObject> = NSString::new().into_super();
let string = obj.downcast_ref::<NSString>().unwrap();
// Or with `downcast`, if we do not need the object afterwards
let string = obj.downcast::<NSString>().unwrap();
Try (and fail) to cast an NSObject
to an NSString
.
use objc2_foundation::{NSObject, NSString};
let obj = NSObject::new();
assert!(obj.downcast_ref::<NSString>().is_none());
Try to cast to an array of strings.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
// This is invalid and doesn't type check.
let arr = arr.downcast_ref::<NSArray<NSString>>();
This fails to compile, since it would require enumerating over the array to ensure that each element is of the desired type, which is a performance pitfall.
Downcast when processing each element instead.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
for elem in arr {
if let Some(data) = elem.downcast_ref::<NSString>() {
// handle `data`
}
}
Trait Implementations§
Source§impl AsRef<AnyObject> for CBPeripheral
impl AsRef<AnyObject> for CBPeripheral
Source§impl AsRef<CBPeer> for CBPeripheral
impl AsRef<CBPeer> for CBPeripheral
Source§impl AsRef<CBPeripheral> for CBPeripheral
impl AsRef<CBPeripheral> for CBPeripheral
Source§impl AsRef<NSObject> for CBPeripheral
impl AsRef<NSObject> for CBPeripheral
Source§impl Borrow<AnyObject> for CBPeripheral
impl Borrow<AnyObject> for CBPeripheral
Source§impl Borrow<CBPeer> for CBPeripheral
impl Borrow<CBPeer> for CBPeripheral
Source§impl Borrow<NSObject> for CBPeripheral
impl Borrow<NSObject> for CBPeripheral
Source§impl ClassType for CBPeripheral
impl ClassType for CBPeripheral
Source§const NAME: &'static str = "CBPeripheral"
const NAME: &'static str = "CBPeripheral"
Source§type ThreadKind = <<CBPeripheral as ClassType>::Super as ClassType>::ThreadKind
type ThreadKind = <<CBPeripheral as ClassType>::Super as ClassType>::ThreadKind
Source§impl CopyingHelper for CBPeripheral
impl CopyingHelper for CBPeripheral
Source§type Result = CBPeripheral
type Result = CBPeripheral
Self
if the type has no
immutable counterpart. Read moreSource§impl Debug for CBPeripheral
impl Debug for CBPeripheral
Source§impl Deref for CBPeripheral
impl Deref for CBPeripheral
Source§impl Hash for CBPeripheral
impl Hash for CBPeripheral
Source§impl Message for CBPeripheral
impl Message for CBPeripheral
Source§impl NSCopying for CBPeripheral
impl NSCopying for CBPeripheral
Source§impl NSObjectProtocol for CBPeripheral
impl NSObjectProtocol for CBPeripheral
Source§fn isEqual(&self, other: Option<&AnyObject>) -> bool
fn isEqual(&self, other: Option<&AnyObject>) -> bool
Source§fn hash(&self) -> usize
fn hash(&self) -> usize
Source§fn isKindOfClass(&self, cls: &AnyClass) -> bool
fn isKindOfClass(&self, cls: &AnyClass) -> bool
Source§fn is_kind_of<T>(&self) -> bool
fn is_kind_of<T>(&self) -> bool
isKindOfClass
directly, or cast your objects with AnyObject::downcast_ref