Files
HES-Selenium/lib/python3.13/site-packages/selenium/webdriver/common/devtools/v129/bluetooth_emulation.py

197 lines
5.4 KiB
Python
Executable File

# DO NOT EDIT THIS FILE!
#
# This file is generated from the CDP specification. If you need to make
# changes, edit the generator and regenerate all of the modules.
#
# CDP domain: BluetoothEmulation (experimental)
from __future__ import annotations
from .util import event_class, T_JSON_DICT
from dataclasses import dataclass
import enum
import typing
class CentralState(enum.Enum):
'''
Indicates the various states of Central.
'''
ABSENT = "absent"
POWERED_OFF = "powered-off"
POWERED_ON = "powered-on"
def to_json(self):
return self.value
@classmethod
def from_json(cls, json):
return cls(json)
@dataclass
class ManufacturerData:
'''
Stores the manufacturer data
'''
#: Company identifier
#: https://bitbucket.org/bluetooth-SIG/public/src/main/assigned_numbers/company_identifiers/company_identifiers.yaml
#: https://usb.org/developers
key: int
#: Manufacturer-specific data
data: str
def to_json(self):
json = dict()
json['key'] = self.key
json['data'] = self.data
return json
@classmethod
def from_json(cls, json):
return cls(
key=int(json['key']),
data=str(json['data']),
)
@dataclass
class ScanRecord:
'''
Stores the byte data of the advertisement packet sent by a Bluetooth device.
'''
name: typing.Optional[str] = None
uuids: typing.Optional[typing.List[str]] = None
#: Stores the external appearance description of the device.
appearance: typing.Optional[int] = None
#: Stores the transmission power of a broadcasting device.
tx_power: typing.Optional[int] = None
#: Key is the company identifier and the value is an array of bytes of
#: manufacturer specific data.
manufacturer_data: typing.Optional[typing.List[ManufacturerData]] = None
def to_json(self):
json = dict()
if self.name is not None:
json['name'] = self.name
if self.uuids is not None:
json['uuids'] = [i for i in self.uuids]
if self.appearance is not None:
json['appearance'] = self.appearance
if self.tx_power is not None:
json['txPower'] = self.tx_power
if self.manufacturer_data is not None:
json['manufacturerData'] = [i.to_json() for i in self.manufacturer_data]
return json
@classmethod
def from_json(cls, json):
return cls(
name=str(json['name']) if 'name' in json else None,
uuids=[str(i) for i in json['uuids']] if 'uuids' in json else None,
appearance=int(json['appearance']) if 'appearance' in json else None,
tx_power=int(json['txPower']) if 'txPower' in json else None,
manufacturer_data=[ManufacturerData.from_json(i) for i in json['manufacturerData']] if 'manufacturerData' in json else None,
)
@dataclass
class ScanEntry:
'''
Stores the advertisement packet information that is sent by a Bluetooth device.
'''
device_address: str
rssi: int
scan_record: ScanRecord
def to_json(self):
json = dict()
json['deviceAddress'] = self.device_address
json['rssi'] = self.rssi
json['scanRecord'] = self.scan_record.to_json()
return json
@classmethod
def from_json(cls, json):
return cls(
device_address=str(json['deviceAddress']),
rssi=int(json['rssi']),
scan_record=ScanRecord.from_json(json['scanRecord']),
)
def enable(
state: CentralState
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
'''
Enable the BluetoothEmulation domain.
:param state: State of the simulated central.
'''
params: T_JSON_DICT = dict()
params['state'] = state.to_json()
cmd_dict: T_JSON_DICT = {
'method': 'BluetoothEmulation.enable',
'params': params,
}
json = yield cmd_dict
def disable() -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
'''
Disable the BluetoothEmulation domain.
'''
cmd_dict: T_JSON_DICT = {
'method': 'BluetoothEmulation.disable',
}
json = yield cmd_dict
def simulate_preconnected_peripheral(
address: str,
name: str,
manufacturer_data: typing.List[ManufacturerData],
known_service_uuids: typing.List[str]
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
'''
Simulates a peripheral with ``address``, ``name`` and ``knownServiceUuids``
that has already been connected to the system.
:param address:
:param name:
:param manufacturer_data:
:param known_service_uuids:
'''
params: T_JSON_DICT = dict()
params['address'] = address
params['name'] = name
params['manufacturerData'] = [i.to_json() for i in manufacturer_data]
params['knownServiceUuids'] = [i for i in known_service_uuids]
cmd_dict: T_JSON_DICT = {
'method': 'BluetoothEmulation.simulatePreconnectedPeripheral',
'params': params,
}
json = yield cmd_dict
def simulate_advertisement(
entry: ScanEntry
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
'''
Simulates an advertisement packet described in ``entry`` being received by
the central.
:param entry:
'''
params: T_JSON_DICT = dict()
params['entry'] = entry.to_json()
cmd_dict: T_JSON_DICT = {
'method': 'BluetoothEmulation.simulateAdvertisement',
'params': params,
}
json = yield cmd_dict