mirror of
https://github.com/google/bumble.git
synced 2026-04-18 00:45:32 +00:00
94 lines
3.4 KiB
Python
94 lines
3.4 KiB
Python
# Copyright 2021-2023 Google LLC
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# https://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Imports
|
|
# -----------------------------------------------------------------------------
|
|
import dataclasses
|
|
|
|
from bumble import hci
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Constants
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Zephyr RTOS Vendor Specific Commands and Events.
|
|
# Only a subset of the commands are implemented here currently.
|
|
#
|
|
# pylint: disable-next=line-too-long
|
|
# See https://github.com/zephyrproject-rtos/zephyr/blob/main/include/zephyr/bluetooth/hci_vs.h
|
|
HCI_WRITE_TX_POWER_LEVEL_COMMAND = hci.hci_vendor_command_op_code(0x000E)
|
|
HCI_READ_TX_POWER_LEVEL_COMMAND = hci.hci_vendor_command_op_code(0x000F)
|
|
|
|
hci.HCI_Command.register_commands(globals())
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
class TX_Power_Level_Command:
|
|
'''
|
|
Base class for read and write TX power level HCI commands
|
|
'''
|
|
|
|
TX_POWER_HANDLE_TYPE_ADV = 0x00
|
|
TX_POWER_HANDLE_TYPE_SCAN = 0x01
|
|
TX_POWER_HANDLE_TYPE_CONN = 0x02
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
@hci.HCI_Command.command
|
|
@dataclasses.dataclass
|
|
class HCI_Write_Tx_Power_Level_Command(hci.HCI_Command, TX_Power_Level_Command):
|
|
'''
|
|
Write TX power level. See BT_HCI_OP_VS_WRITE_TX_POWER_LEVEL in
|
|
https://github.com/zephyrproject-rtos/zephyr/blob/main/include/zephyr/bluetooth/hci_vs.h
|
|
|
|
Power level is in dB. Connection handle for TX_POWER_HANDLE_TYPE_ADV and
|
|
TX_POWER_HANDLE_TYPE_SCAN should be zero.
|
|
'''
|
|
|
|
handle_type: int = dataclasses.field(metadata=hci.metadata(1))
|
|
connection_handle: int = dataclasses.field(metadata=hci.metadata(2))
|
|
tx_power_level: int = dataclasses.field(metadata=hci.metadata(-1))
|
|
|
|
return_parameters_fields = [
|
|
('status', hci.STATUS_SPEC),
|
|
('handle_type', 1),
|
|
('connection_handle', 2),
|
|
('selected_tx_power_level', -1),
|
|
]
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
@hci.HCI_Command.command
|
|
@dataclasses.dataclass
|
|
class HCI_Read_Tx_Power_Level_Command(hci.HCI_Command, TX_Power_Level_Command):
|
|
'''
|
|
Read TX power level. See BT_HCI_OP_VS_READ_TX_POWER_LEVEL in
|
|
https://github.com/zephyrproject-rtos/zephyr/blob/main/include/zephyr/bluetooth/hci_vs.h
|
|
|
|
Power level is in dB. Connection handle for TX_POWER_HANDLE_TYPE_ADV and
|
|
TX_POWER_HANDLE_TYPE_SCAN should be zero.
|
|
'''
|
|
|
|
handle_type: int = dataclasses.field(metadata=hci.metadata(1))
|
|
connection_handle: int = dataclasses.field(metadata=hci.metadata(2))
|
|
|
|
return_parameters_fields = [
|
|
('status', hci.STATUS_SPEC),
|
|
('handle_type', 1),
|
|
('connection_handle', 2),
|
|
('tx_power_level', -1),
|
|
]
|