167 lines
4.2 KiB
Python
167 lines
4.2 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
|
||
|
from typing import Dict, List, Literal, Tuple, TypedDict
|
||
|
|
||
|
# DBus Interfaces
|
||
|
OBJECT_MANAGER_INTERFACE = "org.freedesktop.DBus.ObjectManager"
|
||
|
PROPERTIES_INTERFACE = "org.freedesktop.DBus.Properties"
|
||
|
|
||
|
# Bluez specific DBUS
|
||
|
BLUEZ_SERVICE = "org.bluez"
|
||
|
ADAPTER_INTERFACE = "org.bluez.Adapter1"
|
||
|
ADVERTISEMENT_MONITOR_INTERFACE = "org.bluez.AdvertisementMonitor1"
|
||
|
ADVERTISEMENT_MONITOR_MANAGER_INTERFACE = "org.bluez.AdvertisementMonitorManager1"
|
||
|
DEVICE_INTERFACE = "org.bluez.Device1"
|
||
|
BATTERY_INTERFACE = "org.bluez.Battery1"
|
||
|
|
||
|
# GATT interfaces
|
||
|
GATT_MANAGER_INTERFACE = "org.bluez.GattManager1"
|
||
|
GATT_PROFILE_INTERFACE = "org.bluez.GattProfile1"
|
||
|
GATT_SERVICE_INTERFACE = "org.bluez.GattService1"
|
||
|
GATT_CHARACTERISTIC_INTERFACE = "org.bluez.GattCharacteristic1"
|
||
|
GATT_DESCRIPTOR_INTERFACE = "org.bluez.GattDescriptor1"
|
||
|
|
||
|
|
||
|
# D-Bus properties for interfaces
|
||
|
# https://github.com/bluez/bluez/blob/master/doc/org.bluez.Adapter.rst
|
||
|
|
||
|
|
||
|
class Adapter1(TypedDict):
|
||
|
Address: str
|
||
|
Name: str
|
||
|
Alias: str
|
||
|
Class: int
|
||
|
Powered: bool
|
||
|
Discoverable: bool
|
||
|
Pairable: bool
|
||
|
PairableTimeout: int
|
||
|
DiscoverableTimeout: int
|
||
|
Discovering: int
|
||
|
UUIDs: List[str]
|
||
|
Modalias: str
|
||
|
Roles: List[str]
|
||
|
ExperimentalFeatures: List[str]
|
||
|
|
||
|
|
||
|
# https://github.com/bluez/bluez/blob/master/doc/org.bluez.AdvertisementMonitor.rst
|
||
|
|
||
|
|
||
|
class AdvertisementMonitor1(TypedDict):
|
||
|
Type: str
|
||
|
RSSILowThreshold: int
|
||
|
RSSIHighThreshold: int
|
||
|
RSSILowTimeout: int
|
||
|
RSSIHighTimeout: int
|
||
|
RSSISamplingPeriod: int
|
||
|
Patterns: List[Tuple[int, int, bytes]]
|
||
|
|
||
|
|
||
|
# https://github.com/bluez/bluez/blob/master/doc/org.bluez.AdvertisementMonitorManager.rst
|
||
|
|
||
|
|
||
|
class AdvertisementMonitorManager1(TypedDict):
|
||
|
SupportedMonitorTypes: List[str]
|
||
|
SupportedFeatures: List[str]
|
||
|
|
||
|
|
||
|
# https://github.com/bluez/bluez/blob/master/doc/org.bluez.Battery.rst
|
||
|
|
||
|
|
||
|
class Battery1(TypedDict):
|
||
|
SupportedMonitorTypes: List[str]
|
||
|
SupportedFeatures: List[str]
|
||
|
|
||
|
|
||
|
# https://github.com/bluez/bluez/blob/master/doc/org.bluez.Device.rst
|
||
|
|
||
|
|
||
|
class Device1(TypedDict):
|
||
|
Address: str
|
||
|
AddressType: str
|
||
|
Name: str
|
||
|
Icon: str
|
||
|
Class: int
|
||
|
Appearance: int
|
||
|
UUIDs: List[str]
|
||
|
Paired: bool
|
||
|
Bonded: bool
|
||
|
Connected: bool
|
||
|
Trusted: bool
|
||
|
Blocked: bool
|
||
|
WakeAllowed: bool
|
||
|
Alias: str
|
||
|
Adapter: str
|
||
|
LegacyPairing: bool
|
||
|
Modalias: str
|
||
|
RSSI: int
|
||
|
TxPower: int
|
||
|
ManufacturerData: Dict[int, bytes]
|
||
|
ServiceData: Dict[str, bytes]
|
||
|
ServicesResolved: bool
|
||
|
AdvertisingFlags: bytes
|
||
|
AdvertisingData: Dict[int, bytes]
|
||
|
|
||
|
|
||
|
# https://github.com/bluez/bluez/blob/master/doc/org.bluez.GattService.rst
|
||
|
|
||
|
|
||
|
class GattService1(TypedDict):
|
||
|
UUID: str
|
||
|
Primary: bool
|
||
|
Device: str
|
||
|
Includes: List[str]
|
||
|
# Handle is server-only and not available in Bleak
|
||
|
|
||
|
|
||
|
class GattCharacteristic1(TypedDict):
|
||
|
UUID: str
|
||
|
Service: str
|
||
|
Value: bytes
|
||
|
WriteAcquired: bool
|
||
|
NotifyAcquired: bool
|
||
|
Notifying: bool
|
||
|
Flags: List[
|
||
|
Literal[
|
||
|
"broadcast",
|
||
|
"read",
|
||
|
"write-without-response",
|
||
|
"write",
|
||
|
"notify",
|
||
|
"indicate",
|
||
|
"authenticated-signed-writes",
|
||
|
"extended-properties",
|
||
|
"reliable-write",
|
||
|
"writable-auxiliaries",
|
||
|
"encrypt-read",
|
||
|
"encrypt-write",
|
||
|
# "encrypt-notify" and "encrypt-indicate" are server-only
|
||
|
"encrypt-authenticated-read",
|
||
|
"encrypt-authenticated-write",
|
||
|
# "encrypt-authenticated-notify", "encrypt-authenticated-indicate",
|
||
|
# "secure-read", "secure-write", "secure-notify", "secure-indicate"
|
||
|
# are server-only
|
||
|
"authorize",
|
||
|
]
|
||
|
]
|
||
|
MTU: int
|
||
|
# Handle is server-only and not available in Bleak
|
||
|
|
||
|
|
||
|
class GattDescriptor1(TypedDict):
|
||
|
UUID: str
|
||
|
Characteristic: str
|
||
|
Value: bytes
|
||
|
Flags: List[
|
||
|
Literal[
|
||
|
"read",
|
||
|
"write",
|
||
|
"encrypt-read",
|
||
|
"encrypt-write",
|
||
|
"encrypt-authenticated-read",
|
||
|
"encrypt-authenticated-write",
|
||
|
# "secure-read" and "secure-write" are server-only and not available in Bleak
|
||
|
"authorize",
|
||
|
]
|
||
|
]
|
||
|
# Handle is server-only and not available in Bleak
|