2024-10-08 18:33:13 +11:00

101 lines
2.5 KiB
Objective-C

/*
* @file CBService.h
* @framework CoreBluetooth
*
* @discussion A Bluetooth LE service representation. A LE Service provides a number of
* characteristics and may also reference other services.
*
* @copyright 2011 Apple, Inc. All rights reserved.
*/
#ifndef _CORE_BLUETOOTH_H_
#warning Please do not import this header file directly. Use <CoreBluetooth/CoreBluetooth.h> instead.
#endif
#import <CoreBluetooth/CBAttribute.h>
NS_ASSUME_NONNULL_BEGIN
/*!
* @class CBService
*
* @discussion
* Represents a peripheral's service or a service's included service.
*
*/
NS_CLASS_AVAILABLE(10_7, 5_0)
CB_EXTERN_CLASS @interface CBService : CBAttribute
/*!
* @property peripheral
*
* @discussion
* A back-pointer to the peripheral this service belongs to.
*
*/
@property(weak, readonly, nonatomic) CBPeripheral *peripheral;
/*!
* @property isPrimary
*
* @discussion
* The type of the service (primary or secondary).
*
*/
@property(readonly, nonatomic) BOOL isPrimary;
/*!
* @property includedServices
*
* @discussion
* A list of included CBServices that have so far been discovered in this service.
*
*/
@property(retain, readonly, nullable) NSArray<CBService *> *includedServices;
/*!
* @property characteristics
*
* @discussion
* A list of CBCharacteristics that have so far been discovered in this service.
*
*/
@property(retain, readonly, nullable) NSArray<CBCharacteristic *> *characteristics;
@end
/*!
* @class CBMutableService
*
* @discussion
* Used to create a local service or included service, which can be added to the local database via <code>CBPeripheralManager</code>.
* Once a service is published, it is cached and can no longer be changed. This class adds write access to all properties in the
* @link CBService @/link class.
*
*/
NS_CLASS_AVAILABLE(10_9, 6_0)
CB_EXTERN_CLASS @interface CBMutableService : CBService
@property(retain, readwrite, nullable) NSArray<CBService *> *includedServices;
@property(retain, readwrite, nullable) NSArray<CBCharacteristic *> *characteristics;
/*!
* @method initWithType:primary:
*
* @param UUID The Bluetooth UUID of the service.
* @param isPrimary The type of the service (primary or secondary).
*
* @discussion Returns a service, initialized with a service type and UUID.
*
*/
- (instancetype)initWithType:(CBUUID *)UUID primary:(BOOL)isPrimary API_AVAILABLE(ios(6.0), macos(10.9)) API_UNAVAILABLE(watchos, tvos) NS_DESIGNATED_INITIALIZER
#if TARGET_OS_VISION
API_UNAVAILABLE(visionos)
#endif
;
@end
NS_ASSUME_NONNULL_END