idasit/bleak/backends/corebluetooth/service.py

43 lines
1.5 KiB
Python
Raw Normal View History

2024-12-14 14:55:37 +01:00
from typing import List
from CoreBluetooth import CBService
from ..service import BleakGATTService
from .characteristic import BleakGATTCharacteristicCoreBluetooth
from .utils import cb_uuid_to_str
class BleakGATTServiceCoreBluetooth(BleakGATTService):
"""GATT Characteristic implementation for the CoreBluetooth backend"""
def __init__(self, obj: CBService):
super().__init__(obj)
self.__characteristics: List[BleakGATTCharacteristicCoreBluetooth] = []
# N.B. the `startHandle` method of the CBService is an undocumented Core Bluetooth feature,
# which Bleak takes advantage of in order to have a service handle to use.
self.__handle: int = int(self.obj.startHandle())
@property
def handle(self) -> int:
"""The integer handle of this service"""
return self.__handle
@property
def uuid(self) -> str:
"""UUID for this service."""
return cb_uuid_to_str(self.obj.UUID())
@property
def characteristics(self) -> List[BleakGATTCharacteristicCoreBluetooth]:
"""List of characteristics for this service"""
return self.__characteristics
def add_characteristic(
self, characteristic: BleakGATTCharacteristicCoreBluetooth
) -> None:
"""Add a :py:class:`~BleakGATTCharacteristicCoreBluetooth` to the service.
Should not be used by end user, but rather by `bleak` itself.
"""
self.__characteristics.append(characteristic)