#[repr(C)]pub struct IOBluetoothRFCOMMChannel { /* private fields */ }IOBluetoothRFCOMMChannel and objc2 and IOBluetoothObject only.Expand description
An instance of this class represents an rfcomm channel as defined by the Bluetooth SDP spec..
An RFCOMM channel object can be obtained by opening an rfcomm channel in a device, or by requesting a notification when a channel is created (this is commonly used to provide services).
See also Apple’s documentation
Implementations§
Source§impl IOBluetoothRFCOMMChannel
impl IOBluetoothRFCOMMChannel
Sourcepub unsafe fn registerForChannelOpenNotifications_selector(
object: Option<&AnyObject>,
selector: Option<Sel>,
) -> Option<Retained<IOBluetoothUserNotification>>
Available on crate feature IOBluetoothUserNotification only.
pub unsafe fn registerForChannelOpenNotifications_selector( object: Option<&AnyObject>, selector: Option<Sel>, ) -> Option<Retained<IOBluetoothUserNotification>>
IOBluetoothUserNotification only.Allows a client to register for RFCOMM channel open notifications for any RFCOMM channel.
The given selector will be called on the target object whenever any RFCOMM channel is opened. The selector should accept two arguments. The first is the user notification object. The second is the IOBluetoothRFCOMMChannel that was opened.
Parameter rfcommChannelRef: IOBluetoothRFCOMMChannelRef for which an IOBluetoothRFCOMMChannel * is desired.
Parameter object: Target object
Parameter selector: Selector to be called on the target object when a new RFCOMM channel is opened.
the format for the selector is:
-(void) selectorName:(IOBluetoothUserNotification *)inNotification channel:(IOBluetoothRFCOMMChannel *)newChannel
Returns: Returns an IOBluetoothUserNotification representing the outstanding RFCOMM channel notification. To unregister the notification, call -unregister on the resulting IOBluetoothUserNotification object. If an error is encountered creating the notification, nil is returned. The returned IOBluetoothUserNotification will be valid for as long as the notification is registered. It is not necessary to retain the result. Once -unregister is called on it, it will no longer be valid.
Sourcepub unsafe fn registerForChannelOpenNotifications_selector_withChannelID_direction(
object: Option<&AnyObject>,
selector: Option<Sel>,
channel_id: BluetoothRFCOMMChannelID,
in_direction: IOBluetoothUserNotificationChannelDirection,
) -> Option<Retained<IOBluetoothUserNotification>>
Available on crate features Bluetooth and IOBluetoothUserLib and IOBluetoothUserNotification only.
pub unsafe fn registerForChannelOpenNotifications_selector_withChannelID_direction( object: Option<&AnyObject>, selector: Option<Sel>, channel_id: BluetoothRFCOMMChannelID, in_direction: IOBluetoothUserNotificationChannelDirection, ) -> Option<Retained<IOBluetoothUserNotification>>
Bluetooth and IOBluetoothUserLib and IOBluetoothUserNotification only.Allows a client to register for RFCOMM channel open notifications for certain types of RFCOMM channels.
The given selector will be called on the target object whenever an RFCOMM channel with the given attributes is opened. The selector should accept two arguments. The first is the user notification object. The second is the IOBluetoothRFCOMMChannel that was opened.
Parameter object: Target object
Parameter selector: Selector to be called on the target object when a new RFCOMM channel is opened.
the format for the selector is:
-(void) selectorName:(IOBluetoothUserNotification *)inNotification channel:(IOBluetoothRFCOMMChannel *)newChannel
Parameter channeLID: RFCOMM channel ID to match a new RFCOMM channel. If the channel ID doesn’t matter, 0 may be passed in.
Parameter inDirection: The desired direction of the RFCOMM channel - kIOBluetoothUserNotificationChannelDirectionAny
if the direction doesn’t matter.
Returns: Returns an IOBluetoothUserNotification representing the outstanding RFCOMM channel notification. To unregister the notification, call -unregister on the resulting IOBluetoothUserNotification object. If an error is encountered creating the notification, nil is returned. The returned IOBluetoothUserNotification will be valid for as long as the notification is registered. It is not necessary to retain the result. Once -unregister is called on it, it will no longer be valid.
Sourcepub unsafe fn withRFCOMMChannelRef(
rfcomm_channel_ref: Option<&IOBluetoothRFCOMMChannelRef>,
) -> Option<Retained<Self>>
Available on crate feature IOBluetoothUserLib only.
pub unsafe fn withRFCOMMChannelRef( rfcomm_channel_ref: Option<&IOBluetoothRFCOMMChannelRef>, ) -> Option<Retained<Self>>
IOBluetoothUserLib only.Method call to convert an IOBluetoothRFCOMMChannelRef into an IOBluetoothRFCOMMChannel *.
Parameter rfcommChannelRef: IOBluetoothRFCOMMChannelRef for which an IOBluetoothRFCOMMChannel * is desired.
Returns: Returns the IOBluetoothRFCOMMChannel * for the given IOBluetoothRFCOMMChannelRef.
Sourcepub unsafe fn withObjectID(
object_id: IOBluetoothObjectID,
) -> Option<Retained<Self>>
Available on crate feature IOBluetoothUserLib only.
pub unsafe fn withObjectID( object_id: IOBluetoothObjectID, ) -> Option<Retained<Self>>
IOBluetoothUserLib only.Returns the IObluetoothRFCOMMChannel with the given IOBluetoothObjectID.
The IOBluetoothObjectID can be used as a global reference for a given IObluetoothRFCOMMChannel. It allows two separate applications to refer to the same IObluetoothRFCOMMChannel object.
Parameter objectID: IOBluetoothObjectID of the desired IObluetoothRFCOMMChannel.
Returns: Returns the IObluetoothRFCOMMChannel that matches the given IOBluetoothObjectID if one exists. If no matching RFCOMM channel exists, nil is returned.
Sourcepub unsafe fn getRFCOMMChannelRef(
&self,
) -> Option<Retained<IOBluetoothRFCOMMChannelRef>>
Available on crate feature IOBluetoothUserLib only.
pub unsafe fn getRFCOMMChannelRef( &self, ) -> Option<Retained<IOBluetoothRFCOMMChannelRef>>
IOBluetoothUserLib only.Returns an IOBluetoothRFCOMMChannelRef representation of the target IOBluetoothRFCOMMChannel object.
Returns: Returns an IOBluetoothRFCOMMChannelRef representation of the target IOBluetoothRFCOMMChannel object.
Sourcepub unsafe fn closeChannel(&self) -> c_int
pub unsafe fn closeChannel(&self) -> c_int
Close the channel.
Returns: An error code value. 0 if successful.
Sourcepub unsafe fn isOpen(&self) -> bool
pub unsafe fn isOpen(&self) -> bool
Returns the state of the channel.
note that “not open” means closed, opening and closing.
Returns: TRUE if the channel state is open, FALSE otherwise.
Sourcepub unsafe fn getMTU(&self) -> BluetoothRFCOMMMTU
Available on crate feature Bluetooth only.
pub unsafe fn getMTU(&self) -> BluetoothRFCOMMMTU
Bluetooth only.Returns the channel maximum transfer unit.
Returns the length of the largest chunk of data that this channel can carry. If the caller wishes to use the write:length:sleep: api the length of the data can not be bigger than the channel MTU (maximum transfer unit).
Returns: Channel MTU size .
Sourcepub unsafe fn isTransmissionPaused(&self) -> bool
pub unsafe fn isTransmissionPaused(&self) -> bool
Returns TRUE if flow control is off.
Returns true if the remote device flow control is stopping out transmission. This is useful because we do not buffer data, we stop the transmitting actor. With this method the transmitter can check if sending data is going to be successful or is going to block.
Returns: TRUE if the action of sending data will block the current thread, FALSE otherwise.
Sourcepub unsafe fn write_length_sleep(
&self,
data: *mut c_void,
length: u16,
sleep: bool,
) -> c_int
👎Deprecated
pub unsafe fn write_length_sleep( &self, data: *mut c_void, length: u16, sleep: bool, ) -> c_int
Sends a block of data in the channel syncronously.
WARNING This method is being deprecated in favor of -writeSync:… and -writeAsync:… Sends data through the channel. The number of bytes to be sent must not exceed the channel MTU. If the return value is an error condition none of the data was sent.
Parameter data: is a pointer to the data buffer to be sent.
Parameter length: the length of the buffer to be sent (in bytes).
Parameter sleep: is a boolean if set to TRUE the call will wait until it is possible to send data.
If set to FALSE and it is not possible to send data the method will return immediately with an
error.
Returns: An error code value. 0 if successful.
Sourcepub unsafe fn writeAsync_length_refcon(
&self,
data: *mut c_void,
length: u16,
refcon: *mut c_void,
) -> c_int
pub unsafe fn writeAsync_length_refcon( &self, data: *mut c_void, length: u16, refcon: *mut c_void, ) -> c_int
Sends a block of data in the channel asynchronously.
The number of bytes to be sent must not exceed the channel MTU. If the return value is an error condition none of the data was sent. Once the data has been successfully passed to the hardware to be transmitted, the delegate method -rfcommChannelWriteComplete:refcon:status: will be called with the refcon that was passed to this method.
NOTE: This method is only available in Mac OS X 10.2.5 (Bluetooth v1.2) or later.
Parameter data: A pointer to the data buffer to be sent.
Parameter length: The length of the buffer to be sent (in bytes).
Parameter refcon: User supplied value that gets passed to the write callback.
Returns: Returns kIOReturnSuccess if the data was buffered successfully.
Sourcepub unsafe fn writeSync_length(&self, data: *mut c_void, length: u16) -> c_int
pub unsafe fn writeSync_length(&self, data: *mut c_void, length: u16) -> c_int
Sends a block of data in the channel synchronously.
Sends data through the channel. The number of bytes to be sent must not exceed the channel MTU. If the return value is an error condition none of the data was sent. This method will block until the data has been successfully sent to the hardware for transmission (or until an error occurs).
NOTE: This method is only available in Mac OS X 10.2.5 (Bluetooth v1.2) or later.
Parameter data: A pointer to the data buffer to be sent.
Parameter length: The length of the buffer to be sent (in bytes).
Returns: Returns kIOReturnSuccess if the data was written successfully.
Sourcepub unsafe fn writeSimple_length_sleep_bytesSent(
&self,
data: *mut c_void,
length: u16,
sleep: bool,
num_bytes_sent: *mut u32,
) -> c_int
👎Deprecated
pub unsafe fn writeSimple_length_sleep_bytesSent( &self, data: *mut c_void, length: u16, sleep: bool, num_bytes_sent: *mut u32, ) -> c_int
Sends a block of data in the channel.
WARNING This method is being deprecated in favor of -writeSync:… and -writeAsync:… Sends data through the channel. The number of bytes to be sent is arbitrary. The caller does not have to worry about the MTU.
Parameter data: a pointer to the data buffer to be sent.
Parameter length: the length of the buffer to be sent (in bytes).
Parameter sleep: a boolean if set to TRUE the call will wait until it is possible to send all the data.
Parameter a: UInt32 pointer in which the caller received the nuber of bytes sent.
If set to FALSE and it is not possible to send part of the data the method will return immediately.
Returns: An error code value. 0 if successful.
Sourcepub unsafe fn setSerialParameters_dataBits_parity_stopBits(
&self,
speed: u32,
n_bits: u8,
parity: BluetoothRFCOMMParityType,
bit_stop: u8,
) -> c_int
Available on crate feature Bluetooth only.
pub unsafe fn setSerialParameters_dataBits_parity_stopBits( &self, speed: u32, n_bits: u8, parity: BluetoothRFCOMMParityType, bit_stop: u8, ) -> c_int
Bluetooth only.Changes the parameters of the serial connection.
Parameter speed: the baudrate.
Parameter nBits: number of data bits.
Parameter parity: the type of parity can be NoParity, OddParity, EvenParity or MaxParity.
Parameter bitStop: number of stop bits.
Returns: An error code value. 0 if successful.
Sourcepub unsafe fn sendRemoteLineStatus(
&self,
line_status: BluetoothRFCOMMLineStatus,
) -> c_int
Available on crate feature Bluetooth only.
pub unsafe fn sendRemoteLineStatus( &self, line_status: BluetoothRFCOMMLineStatus, ) -> c_int
Bluetooth only.Sends an error to the remote side.
Parameter lineStatus: the error type. The error code can be NoError, OverrunError, ParityError or FramingError.
Returns: An error code value. 0 if successful.
Sourcepub unsafe fn setDelegate(&self, delegate: Option<&AnyObject>) -> c_int
pub unsafe fn setDelegate(&self, delegate: Option<&AnyObject>) -> c_int
Allows an object to register itself as a client of the RFCOMM channel.
A channel delegate is the object the RFCOMM channel uses as target for data and events. The developer will implement only the the methods he/she is interested in. A list of the possible methods is at the end of this file in the definition of the informal protocol IOBluetoothRFCOMMChannelDelegate.
NOTE: This method is only available in Mac OS X 10.2.5 (Bluetooth v1.2) or later. NOTE: Before Mac OS X 10.6, the delegate was retained. On 10.6 and later, it is not.
Parameter delegate: The object that will play the role of channel delegate [NOTE the rfcomm channel will reatin the delegate].
Returns: Returns kIOReturnSuccess if the delegate is successfully registered.
Sourcepub unsafe fn delegate(&self) -> Option<Retained<AnyObject>>
pub unsafe fn delegate(&self) -> Option<Retained<AnyObject>>
Returns the object delegate
Returns: the current delegate, or nil
Sourcepub unsafe fn getChannelID(&self) -> BluetoothRFCOMMChannelID
Available on crate feature Bluetooth only.
pub unsafe fn getChannelID(&self) -> BluetoothRFCOMMChannelID
Bluetooth only.Returns the object rfcomm channel ID.
Returns: the RFCOMM channel number .
Sourcepub unsafe fn isIncoming(&self) -> bool
pub unsafe fn isIncoming(&self) -> bool
Returns the direction of the channel. An incoming channel is one that was opened by the remote device.
Returns: Returns TRUE if the channel was opened by the remote device, FALSE if the channel was opened by this object.
Sourcepub unsafe fn getDevice(&self) -> Option<Retained<IOBluetoothDevice>>
Available on crate feature IOBluetoothDevice only.
pub unsafe fn getDevice(&self) -> Option<Retained<IOBluetoothDevice>>
IOBluetoothDevice only.Returns the Bluetooth Device that carries the rfcomm data.
Returns: the IOBluetoothDevice object .
Sourcepub unsafe fn getObjectID(&self) -> IOBluetoothObjectID
Available on crate feature IOBluetoothUserLib only.
pub unsafe fn getObjectID(&self) -> IOBluetoothObjectID
IOBluetoothUserLib only.Returns the IOBluetoothObjectID of the given IOBluetoothRFCOMMChannel.
The IOBluetoothObjectID can be used as a global reference for a given IOBluetoothRFCOMMChannel. It allows two separate applications to refer to the same IOBluetoothRFCOMMChannel.
Returns: Returns the IOBluetoothObjectID of the given IOBluetoothRFCOMMChannel.
Sourcepub unsafe fn registerForChannelCloseNotification_selector(
&self,
observer: Option<&AnyObject>,
in_selector: Option<Sel>,
) -> Option<Retained<IOBluetoothUserNotification>>
Available on crate feature IOBluetoothUserNotification only.
pub unsafe fn registerForChannelCloseNotification_selector( &self, observer: Option<&AnyObject>, in_selector: Option<Sel>, ) -> Option<Retained<IOBluetoothUserNotification>>
IOBluetoothUserNotification only.Allows a client to register for a channel close notification.
The given selector will be called on the target observer when the RFCOMM channel is closed. The selector should contain two arguments. The first is the user notification object. The second is the IOBluetoothRFCOMMChannel that was closed.
Parameter observer: Target observer object
Parameter inSelector: Selector to be sent to the observer when the RFCOMM channel is closed.
Returns: Returns an IOBluetoothUserNotification representing the outstanding RFCOMM channel close notification. To unregister the notification, call -unregister of the returned IOBluetoothUserNotification object. If an error is encountered creating the notification, nil is returned.
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 IOBluetoothRFCOMMChannel
impl AsRef<AnyObject> for IOBluetoothRFCOMMChannel
Source§impl AsRef<IOBluetoothObject> for IOBluetoothRFCOMMChannel
impl AsRef<IOBluetoothObject> for IOBluetoothRFCOMMChannel
Source§fn as_ref(&self) -> &IOBluetoothObject
fn as_ref(&self) -> &IOBluetoothObject
Source§impl AsRef<NSObject> for IOBluetoothRFCOMMChannel
impl AsRef<NSObject> for IOBluetoothRFCOMMChannel
Source§impl Borrow<AnyObject> for IOBluetoothRFCOMMChannel
impl Borrow<AnyObject> for IOBluetoothRFCOMMChannel
Source§impl Borrow<IOBluetoothObject> for IOBluetoothRFCOMMChannel
impl Borrow<IOBluetoothObject> for IOBluetoothRFCOMMChannel
Source§fn borrow(&self) -> &IOBluetoothObject
fn borrow(&self) -> &IOBluetoothObject
Source§impl Borrow<NSObject> for IOBluetoothRFCOMMChannel
impl Borrow<NSObject> for IOBluetoothRFCOMMChannel
Source§impl ClassType for IOBluetoothRFCOMMChannel
impl ClassType for IOBluetoothRFCOMMChannel
Source§const NAME: &'static str = "IOBluetoothRFCOMMChannel"
const NAME: &'static str = "IOBluetoothRFCOMMChannel"
Source§type Super = IOBluetoothObject
type Super = IOBluetoothObject
Source§type ThreadKind = <<IOBluetoothRFCOMMChannel as ClassType>::Super as ClassType>::ThreadKind
type ThreadKind = <<IOBluetoothRFCOMMChannel as ClassType>::Super as ClassType>::ThreadKind
Source§impl CopyingHelper for IOBluetoothRFCOMMChannel
Available on crate feature objc2-foundation only.
impl CopyingHelper for IOBluetoothRFCOMMChannel
objc2-foundation only.Source§type Result = IOBluetoothRFCOMMChannel
type Result = IOBluetoothRFCOMMChannel
Self if the type has no
immutable counterpart. Read moreSource§impl Debug for IOBluetoothRFCOMMChannel
impl Debug for IOBluetoothRFCOMMChannel
Source§impl Deref for IOBluetoothRFCOMMChannel
impl Deref for IOBluetoothRFCOMMChannel
Source§impl Hash for IOBluetoothRFCOMMChannel
impl Hash for IOBluetoothRFCOMMChannel
Source§impl Message for IOBluetoothRFCOMMChannel
impl Message for IOBluetoothRFCOMMChannel
Source§impl NSCopying for IOBluetoothRFCOMMChannel
impl NSCopying for IOBluetoothRFCOMMChannel
Source§impl NSObjectProtocol for IOBluetoothRFCOMMChannel
impl NSObjectProtocol for IOBluetoothRFCOMMChannel
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