#[repr(C)]pub struct IOBluetoothSDPServiceRecord { /* private fields */ }IOBluetoothSDPServiceRecord and objc2 only.Expand description
An instance of this class represents a single SDP service record.
As a service record, an instance of this class has an NSDictionary of service attributes. It also has a link to the IOBluetoothDevice that the service belongs to. The service dictionary is keyed off of the attribute ID of each attribute represented as an NSNumber.
See also Apple’s documentation
Implementations§
Source§impl IOBluetoothSDPServiceRecord
HandsFreeSDPServiceRecordAdditions.
impl IOBluetoothSDPServiceRecord
HandsFreeSDPServiceRecordAdditions.
Sourcepub unsafe fn handsFreeSupportedFeatures(&self) -> u16
Available on crate feature IOBluetoothHandsFree only.
pub unsafe fn handsFreeSupportedFeatures(&self) -> u16
IOBluetoothHandsFree only.Return the hands free supported features
Returns the hands free supported features bitmap stored in the SDP record. See “IOBluetoothHandsFreeDeviceFeatures and IOBluetoothHandsFreeAudioGatewayFeatures.”
Returns: The supported features bitmap.
Source§impl IOBluetoothSDPServiceRecord
impl IOBluetoothSDPServiceRecord
Sourcepub unsafe fn publishedServiceRecordWithDictionary(
service_dict: Option<&NSDictionary>,
) -> Option<Retained<Self>>
Available on crate feature objc2-foundation only.
pub unsafe fn publishedServiceRecordWithDictionary( service_dict: Option<&NSDictionary>, ) -> Option<Retained<Self>>
objc2-foundation only.Adds a service to the local SDP server.
Returns: Returns an IOBluetoothSDPServiceRecord * with the attributes specified in the provided dictionary.
Each entry in the dictionary representing the service contains the individual attributes. Each attribute in the dict is keyed by a string that must begin with a hex number representing the attribute ID. The key string may contain additional characters if desired as long as they follow a space after the ID hex string. The attribute value must follow the dictionary format described by IOBluetoothSDPDataElement. This dictionary format allows a service dict to be created as a plist file and then loaded into the system rather than built up in code. See the example code for an example of how can be done.
If the service record handle, L2CAP PSM or RFCOMM channel ID specified in the dictionary are in use, an alternate one will be assigned.
In addition to attributes that represent the service itself, additional attributes may be specified that control the local behavior of the service. To specify these local attributes, an additional property titled “LocalAttributes” may be added to the root of the service dict. The value of this property must be a dictionary that contains the individual local attributes.
Currently, only two local attributes are supported: “Persistent” and “TargetApplication”.
The “Persistent” local attribute must be either a boolean or number representing whether the service should be persistent. A persistent service will be saved off and restored any time the Bluetooth hardware is present. It will persist through reboots and can only be removed by calling IOBluetoothRemoveServiceWithRecordHandle(void). This attribute is optional. By default, if no “Persistent” local property is present, the service will only exist temporarily. It will be removed either when IOBluetoothRemoveServiceWithRecordHandle(void) is called or when the client application exits.
The “TargetApplication” local attribute is used to specify an application to be launched when a remote device attempts to connect to the service (by opening either an L2CAP or RFCOMM channel of the type specified in the service). This value must be a string representing the absolute path to the target executable (not just the .app wrapper - i.e. /System/Library/CoreServices/OBEXAgent.app/Contents/MacOS/OBEXAgent). This attribute is optional. If no “TargetApplication” local attribute is specified, no special action will take place when an incoming connection to the service is created. It is up to the client to be monitoring for the connection and to do the right thing when one appears.
The “LocalAttributes” property is optional. If it is not specified, by default the created service is transient and will be removed when the client exits.
Additional local attributes to further control incoming services will be added in the future.
Parameter serviceDict: A dictionary containing the attributes for the new service
Sourcepub unsafe fn removeServiceRecord(&self) -> c_int
pub unsafe fn removeServiceRecord(&self) -> c_int
Removes the service from the local SDP server.
Returns: Returns kIOReturnSuccess if successful.
Sourcepub unsafe fn withServiceDictionary_device(
service_dict: Option<&NSDictionary>,
device: Option<&IOBluetoothDevice>,
) -> Option<Retained<Self>>
Available on crate features IOBluetoothDevice and IOBluetoothObject and objc2-foundation only.
pub unsafe fn withServiceDictionary_device( service_dict: Option<&NSDictionary>, device: Option<&IOBluetoothDevice>, ) -> Option<Retained<Self>>
IOBluetoothDevice and IOBluetoothObject and objc2-foundation only.Returns an IOBluetoothSDPServiceRecord * with the attributes specified in the provided service dictionary. Provide a pointer to an IOBlueotothDevice if you wish to associate the record to a specific IOBluetoothDevice.
Returns: Returns an IOBluetoothSDPServiceRecord * with the attributes specified in the provided dictionary.
Sourcepub unsafe fn initWithServiceDictionary_device(
this: Allocated<Self>,
service_dict: Option<&NSDictionary>,
device: Option<&IOBluetoothDevice>,
) -> Option<Retained<Self>>
Available on crate features IOBluetoothDevice and IOBluetoothObject and objc2-foundation only.
pub unsafe fn initWithServiceDictionary_device( this: Allocated<Self>, service_dict: Option<&NSDictionary>, device: Option<&IOBluetoothDevice>, ) -> Option<Retained<Self>>
IOBluetoothDevice and IOBluetoothObject and objc2-foundation only.Returns an initialized IOBluetoothSDPServiceRecord * with the attributes specified in the provided service dictionary. Provide a pointer to an IOBlueotothDevice if you wish to associate the record to a specific IOBluetoothDevice.
Returns: Returns an initialized IOBluetoothSDPServiceRecord * with the attributes specified in the provided dictionary.
Sourcepub unsafe fn withSDPServiceRecordRef(
sdp_service_record_ref: Option<&IOBluetoothSDPServiceRecordRef>,
) -> Option<Retained<Self>>
Available on crate feature IOBluetoothUserLib only.
pub unsafe fn withSDPServiceRecordRef( sdp_service_record_ref: Option<&IOBluetoothSDPServiceRecordRef>, ) -> Option<Retained<Self>>
IOBluetoothUserLib only.Method call to convert an IOBluetoothSDPServiceRecordRef into an IOBluetoothSDPServiceRecord *.
Parameter sdpServiceRecordRef: IOBluetoothSDPServiceRecordRef for which an IOBluetoothSDPServiceRecord * is desired.
Returns: Returns the IOBluetoothSDPServiceRecord * for the given IOBluetoothSDPServiceRecordRef.
Sourcepub unsafe fn getSDPServiceRecordRef(
&self,
) -> Option<Retained<IOBluetoothSDPServiceRecordRef>>
Available on crate feature IOBluetoothUserLib only.
pub unsafe fn getSDPServiceRecordRef( &self, ) -> Option<Retained<IOBluetoothSDPServiceRecordRef>>
IOBluetoothUserLib only.Returns an IOBluetoothSDPServiceRecordRef representation of the target IOBluetoothSDPServiceRecord object.
Returns: Returns an IOBluetoothSDPServiceRecordRef representation of the target IOBluetoothSDPServiceRecord object.
Sourcepub unsafe fn device(&self) -> Option<Retained<IOBluetoothDevice>>
Available on crate features IOBluetoothDevice and IOBluetoothObject only.
pub unsafe fn device(&self) -> Option<Retained<IOBluetoothDevice>>
IOBluetoothDevice and IOBluetoothObject only.Returns the IOBluetoothDevice that the target service belongs to.
If the service is a local service (i.e. one the current host is vending out), then nil is returned.
Returns: Returns the IOBluetoothDevice that the target service belongs to. If the service is one the local host is vending, then nil is returned.
pub unsafe fn getDevice(&self) -> Option<Retained<IOBluetoothDevice>>
IOBluetoothDevice and IOBluetoothObject only.Sourcepub unsafe fn attributes(&self) -> Retained<NSDictionary>
Available on crate feature objc2-foundation only.
pub unsafe fn attributes(&self) -> Retained<NSDictionary>
objc2-foundation only.Returns an NSDictionary containing the attributes for the service.
The attribute dictionary is keyed off of the attribute id represented as an NSNumber. The values in the NSDictionary are IOBluetoothSDPDataElement objects representing the data element for the given attribute.
Returns: Returns an NSDictionary containing the attributes for the target service.
pub unsafe fn getAttributes(&self) -> Option<Retained<NSDictionary>>
objc2-foundation only.Sourcepub unsafe fn getAttributeDataElement(
&self,
attribute_id: BluetoothSDPServiceAttributeID,
) -> Option<Retained<IOBluetoothSDPDataElement>>
Available on crate features Bluetooth and IOBluetoothSDPDataElement only.
pub unsafe fn getAttributeDataElement( &self, attribute_id: BluetoothSDPServiceAttributeID, ) -> Option<Retained<IOBluetoothSDPDataElement>>
Bluetooth and IOBluetoothSDPDataElement only.Returns the data element for the given attribute ID in the target service.
Parameter attributeID: The attribute ID of the desired attribute.
Returns: Returns the data element for the given attribute ID in the target service. If the service does not contain an attribute with the given ID, then nil is returned.
Sourcepub unsafe fn getServiceName(&self) -> Option<Retained<NSString>>
Available on crate feature objc2-foundation only.
pub unsafe fn getServiceName(&self) -> Option<Retained<NSString>>
objc2-foundation only.Returns the name of the service.
This is currently implemented to simply return the attribute with an id of 0x0100. In the future, it will be extended to allow name localization based on the user’s chosen language or other languages.
Returns: Returns the name of the target service.
Sourcepub unsafe fn getRFCOMMChannelID(
&self,
rfcomm_channel_id: *mut BluetoothRFCOMMChannelID,
) -> c_int
Available on crate feature Bluetooth only.
pub unsafe fn getRFCOMMChannelID( &self, rfcomm_channel_id: *mut BluetoothRFCOMMChannelID, ) -> c_int
Bluetooth only.Allows the discovery of the RFCOMM channel ID assigned to the service.
This method will search through the ProtoclDescriptorList attribute to find an entry with the RFCOMM UUID (UUID16: 0x0003). If one is found, it gets the second element of the data element sequence and sets the rfcommChannelID pointer to it. The channel ID only gets set when kIOReturnSuccess is returned.
Parameter rfcommChannelID: A pointer to the location that will get the found RFCOMM channel ID.
Returns: Returns kIOReturnSuccess if the channel ID is found.
Sourcepub unsafe fn getL2CAPPSM(&self, out_psm: *mut BluetoothL2CAPPSM) -> c_int
Available on crate feature Bluetooth only.
pub unsafe fn getL2CAPPSM(&self, out_psm: *mut BluetoothL2CAPPSM) -> c_int
Bluetooth only.Allows the discovery of the L2CAP PSM assigned to the service.
This method will search through the ProtoclDescriptorList attribute to find an entry with the L2CAP UUID (UUID16: 0x0100). If one is found, it gets the second element of the data element sequence and sets the outPSM pointer to it. The PSM value only gets set when kIOReturnSuccess is returned.
Parameter outPSM: A pointer to the location that will get the found L2CAP PSM.
Returns: Returns kIOReturnSuccess if the PSM is found.
Sourcepub unsafe fn getServiceRecordHandle(
&self,
out_service_record_handle: *mut BluetoothSDPServiceRecordHandle,
) -> c_int
Available on crate feature Bluetooth only.
pub unsafe fn getServiceRecordHandle( &self, out_service_record_handle: *mut BluetoothSDPServiceRecordHandle, ) -> c_int
Bluetooth only.Allows the discovery of the service record handle assigned to the service.
This method will search through the attributes to find the one representing the service record handle. If one is found the outServiceRecordHandle param is set with the value. The outServiceRecordHandle value only gets set when kIOReturnSuccess is returned.
Parameter outServiceRecordHandle: A pointer to the location that will get the found service record handle.
Returns: Returns kIOReturnSuccess if the service record handle is found.
Sourcepub unsafe fn matchesUUID16(&self, uuid16: BluetoothSDPUUID16) -> bool
Available on crate feature Bluetooth only.
pub unsafe fn matchesUUID16(&self, uuid16: BluetoothSDPUUID16) -> bool
Bluetooth only.Returns TRUE the UUID16 is found in the target service.
NOTE: This method is only available in Mac OS X 10.7 or later.
Parameter uuid16: A BluetoothSDPUUID16 to search for in the target service.
Returns: Returns TRUE if the UUID16 is present in the service.
Sourcepub unsafe fn matchesUUIDArray(&self, uuid_array: Option<&NSArray>) -> bool
Available on crate feature objc2-foundation only.
pub unsafe fn matchesUUIDArray(&self, uuid_array: Option<&NSArray>) -> bool
objc2-foundation only.Returns TRUE if ALL of the UUIDs in the given array is found in the target service.
The given array should contain IOBluetoothSDPUUID objects. It only returns TRUE if all of the UUIDs are found. This method is like hasServiceFromArray: except that it requires that all UUIDs match instead of any of them matching.
NOTE: This method is only available in Mac OS X 10.2.4 (Bluetooth v1.1) or later.
Parameter array: An NSArray of IOBluetoothSDPUUID objects to search for in the target service.
Returns: Returns TRUE if all of the given UUIDs are present in the service.
Sourcepub unsafe fn matchesSearchArray(&self, search_array: Option<&NSArray>) -> bool
Available on crate feature objc2-foundation only.
pub unsafe fn matchesSearchArray(&self, search_array: Option<&NSArray>) -> bool
objc2-foundation only.Returns TRUE any of the UUID arrays in the search array match the target service.
The given array should contain NSArray objects. Each sub-NSArray should contain IOBluetoothSDPUUID objects. In turn, each sub-NSArray gets passed to -matchesUUIDArray: If any of those returns TRUE, then the search stops and TRUE is returned. Essentially the master NSArray contains the OR operations and each sub-array contains the AND operations.
NOTE: This method is only available in Mac OS X 10.2.4 (Bluetooth v1.1) or later.
Parameter array: An NSArray of NSArrays of IOBluetoothSDPUUID objects.
Returns: Returns TRUE if any of the UUID arrays match.
Sourcepub unsafe fn hasServiceFromArray(&self, array: Option<&NSArray>) -> bool
Available on crate feature objc2-foundation only.
pub unsafe fn hasServiceFromArray(&self, array: Option<&NSArray>) -> bool
objc2-foundation only.Returns TRUE if any one of the UUIDs in the given array is found in the target service.
The given array should contain IOBluetoothSDPUUID objects. It is currently implemented such that it returns TRUE if any of the UUIDs are found. However in the future, it is likely that this will change to more closely match the functionality in the SDP spec so that it only returns TRUE if all of the given UUIDs are present. That way, both AND and OR comparisons can be implemented. Please make a note of this potential change.
Parameter array: An NSArray of IOBluetoothSDPUUID objects to search for in the target service.
Returns: Returns TRUE if any of the given UUIDs are present in the service.
Sourcepub unsafe fn sortedAttributes(&self) -> Retained<NSArray>
Available on crate feature objc2-foundation only.
pub unsafe fn sortedAttributes(&self) -> Retained<NSArray>
objc2-foundation only.Returns a sorted array of SDP attributes
This method will walk all the elements of the service record and return an array of IOBluetoothSDPServiceAttribute objects sorted by attributeID
Returns: Returns a sorted array of SDP attributes
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 IOBluetoothSDPServiceRecord
impl AsRef<AnyObject> for IOBluetoothSDPServiceRecord
Source§impl AsRef<NSObject> for IOBluetoothSDPServiceRecord
impl AsRef<NSObject> for IOBluetoothSDPServiceRecord
Source§impl Borrow<NSObject> for IOBluetoothSDPServiceRecord
impl Borrow<NSObject> for IOBluetoothSDPServiceRecord
Source§impl ClassType for IOBluetoothSDPServiceRecord
impl ClassType for IOBluetoothSDPServiceRecord
Source§const NAME: &'static str = "IOBluetoothSDPServiceRecord"
const NAME: &'static str = "IOBluetoothSDPServiceRecord"
Source§type ThreadKind = <<IOBluetoothSDPServiceRecord as ClassType>::Super as ClassType>::ThreadKind
type ThreadKind = <<IOBluetoothSDPServiceRecord as ClassType>::Super as ClassType>::ThreadKind
Source§impl Debug for IOBluetoothSDPServiceRecord
impl Debug for IOBluetoothSDPServiceRecord
Source§impl Deref for IOBluetoothSDPServiceRecord
impl Deref for IOBluetoothSDPServiceRecord
Source§impl Hash for IOBluetoothSDPServiceRecord
impl Hash for IOBluetoothSDPServiceRecord
Source§impl NSObjectProtocol for IOBluetoothSDPServiceRecord
impl NSObjectProtocol for IOBluetoothSDPServiceRecord
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