forked from auracaster/bumble_mirror
Refactor command supporting list
This commit is contained in:
841
bumble/hci.py
841
bumble/hci.py
@@ -790,538 +790,317 @@ HCI_RANDOM_DEVICE_ADDRESS_TYPE = 0x01
|
|||||||
HCI_PUBLIC_IDENTITY_ADDRESS_TYPE = 0x02
|
HCI_PUBLIC_IDENTITY_ADDRESS_TYPE = 0x02
|
||||||
HCI_RANDOM_IDENTITY_ADDRESS_TYPE = 0x03
|
HCI_RANDOM_IDENTITY_ADDRESS_TYPE = 0x03
|
||||||
|
|
||||||
# Supported Commands Flags
|
# Supported Commands Masks
|
||||||
# See Bluetooth spec @ 6.27 SUPPORTED COMMANDS
|
# See Bluetooth spec @ 6.27 SUPPORTED COMMANDS
|
||||||
HCI_SUPPORTED_COMMANDS_FLAGS = (
|
HCI_SUPPORTED_COMMANDS_MASKS = {
|
||||||
# Octet 0
|
HCI_INQUIRY_COMMAND : 1 << (0*8+0),
|
||||||
(
|
HCI_INQUIRY_CANCEL_COMMAND : 1 << (0*8+1),
|
||||||
HCI_INQUIRY_COMMAND,
|
HCI_PERIODIC_INQUIRY_MODE_COMMAND : 1 << (0*8+2),
|
||||||
HCI_INQUIRY_CANCEL_COMMAND,
|
HCI_EXIT_PERIODIC_INQUIRY_MODE_COMMAND : 1 << (0*8+3),
|
||||||
HCI_PERIODIC_INQUIRY_MODE_COMMAND,
|
HCI_CREATE_CONNECTION_COMMAND : 1 << (0*8+4),
|
||||||
HCI_EXIT_PERIODIC_INQUIRY_MODE_COMMAND,
|
HCI_DISCONNECT_COMMAND : 1 << (0*8+5),
|
||||||
HCI_CREATE_CONNECTION_COMMAND,
|
HCI_CREATE_CONNECTION_CANCEL_COMMAND : 1 << (0*8+7),
|
||||||
HCI_DISCONNECT_COMMAND,
|
HCI_ACCEPT_CONNECTION_REQUEST_COMMAND : 1 << (1*8+0),
|
||||||
None,
|
HCI_REJECT_CONNECTION_REQUEST_COMMAND : 1 << (1*8+1),
|
||||||
HCI_CREATE_CONNECTION_CANCEL_COMMAND
|
HCI_LINK_KEY_REQUEST_REPLY_COMMAND : 1 << (1*8+2),
|
||||||
),
|
HCI_LINK_KEY_REQUEST_NEGATIVE_REPLY_COMMAND : 1 << (1*8+3),
|
||||||
# Octet 1
|
HCI_PIN_CODE_REQUEST_REPLY_COMMAND : 1 << (1*8+4),
|
||||||
(
|
HCI_PIN_CODE_REQUEST_NEGATIVE_REPLY_COMMAND : 1 << (1*8+5),
|
||||||
HCI_ACCEPT_CONNECTION_REQUEST_COMMAND,
|
HCI_CHANGE_CONNECTION_PACKET_TYPE_COMMAND : 1 << (1*8+6),
|
||||||
HCI_REJECT_CONNECTION_REQUEST_COMMAND,
|
HCI_AUTHENTICATION_REQUESTED_COMMAND : 1 << (1*8+7),
|
||||||
HCI_LINK_KEY_REQUEST_REPLY_COMMAND,
|
HCI_SET_CONNECTION_ENCRYPTION_COMMAND : 1 << (2*8+0),
|
||||||
HCI_LINK_KEY_REQUEST_NEGATIVE_REPLY_COMMAND,
|
HCI_CHANGE_CONNECTION_LINK_KEY_COMMAND : 1 << (2*8+1),
|
||||||
HCI_PIN_CODE_REQUEST_REPLY_COMMAND,
|
HCI_LINK_KEY_SELECTION_COMMAND : 1 << (2*8+2),
|
||||||
HCI_PIN_CODE_REQUEST_NEGATIVE_REPLY_COMMAND,
|
HCI_REMOTE_NAME_REQUEST_COMMAND : 1 << (2*8+3),
|
||||||
HCI_CHANGE_CONNECTION_PACKET_TYPE_COMMAND,
|
HCI_REMOTE_NAME_REQUEST_CANCEL_COMMAND : 1 << (2*8+4),
|
||||||
HCI_AUTHENTICATION_REQUESTED_COMMAND
|
HCI_READ_REMOTE_SUPPORTED_FEATURES_COMMAND : 1 << (2*8+5),
|
||||||
),
|
HCI_READ_REMOTE_EXTENDED_FEATURES_COMMAND : 1 << (2*8+6),
|
||||||
# Octet 2
|
HCI_READ_REMOTE_VERSION_INFORMATION_COMMAND : 1 << (2*8+7),
|
||||||
(
|
HCI_READ_CLOCK_OFFSET_COMMAND : 1 << (3*8+0),
|
||||||
HCI_SET_CONNECTION_ENCRYPTION_COMMAND,
|
HCI_READ_LMP_HANDLE_COMMAND : 1 << (3*8+1),
|
||||||
HCI_CHANGE_CONNECTION_LINK_KEY_COMMAND,
|
HCI_HOLD_MODE_COMMAND : 1 << (4*8+1),
|
||||||
HCI_LINK_KEY_SELECTION_COMMAND,
|
HCI_SNIFF_MODE_COMMAND : 1 << (4*8+2),
|
||||||
HCI_REMOTE_NAME_REQUEST_COMMAND,
|
HCI_EXIT_SNIFF_MODE_COMMAND : 1 << (4*8+3),
|
||||||
HCI_REMOTE_NAME_REQUEST_CANCEL_COMMAND,
|
HCI_QOS_SETUP_COMMAND : 1 << (4*8+6),
|
||||||
HCI_READ_REMOTE_SUPPORTED_FEATURES_COMMAND,
|
HCI_ROLE_DISCOVERY_COMMAND : 1 << (4*8+7),
|
||||||
HCI_READ_REMOTE_EXTENDED_FEATURES_COMMAND,
|
HCI_SWITCH_ROLE_COMMAND : 1 << (5*8+0),
|
||||||
HCI_READ_REMOTE_VERSION_INFORMATION_COMMAND
|
HCI_READ_LINK_POLICY_SETTINGS_COMMAND : 1 << (5*8+1),
|
||||||
),
|
HCI_WRITE_LINK_POLICY_SETTINGS_COMMAND : 1 << (5*8+2),
|
||||||
# Octet 3
|
HCI_READ_DEFAULT_LINK_POLICY_SETTINGS_COMMAND : 1 << (5*8+3),
|
||||||
(
|
HCI_WRITE_DEFAULT_LINK_POLICY_SETTINGS_COMMAND : 1 << (5*8+4),
|
||||||
HCI_READ_CLOCK_OFFSET_COMMAND,
|
HCI_FLOW_SPECIFICATION_COMMAND : 1 << (5*8+5),
|
||||||
HCI_READ_LMP_HANDLE_COMMAND,
|
HCI_SET_EVENT_MASK_COMMAND : 1 << (5*8+6),
|
||||||
None,
|
HCI_RESET_COMMAND : 1 << (5*8+7),
|
||||||
None,
|
HCI_SET_EVENT_FILTER_COMMAND : 1 << (6*8+0),
|
||||||
None,
|
HCI_FLUSH_COMMAND : 1 << (6*8+1),
|
||||||
None,
|
HCI_READ_PIN_TYPE_COMMAND : 1 << (6*8+2),
|
||||||
None,
|
HCI_WRITE_PIN_TYPE_COMMAND : 1 << (6*8+3),
|
||||||
None
|
HCI_READ_STORED_LINK_KEY_COMMAND : 1 << (6*8+5),
|
||||||
),
|
HCI_WRITE_STORED_LINK_KEY_COMMAND : 1 << (6*8+6),
|
||||||
# Octet 4
|
HCI_DELETE_STORED_LINK_KEY_COMMAND : 1 << (6*8+7),
|
||||||
(
|
HCI_WRITE_LOCAL_NAME_COMMAND : 1 << (7*8+0),
|
||||||
None,
|
HCI_READ_LOCAL_NAME_COMMAND : 1 << (7*8+1),
|
||||||
HCI_HOLD_MODE_COMMAND,
|
HCI_READ_CONNECTION_ACCEPT_TIMEOUT_COMMAND : 1 << (7*8+2),
|
||||||
HCI_SNIFF_MODE_COMMAND,
|
HCI_WRITE_CONNECTION_ACCEPT_TIMEOUT_COMMAND : 1 << (7*8+3),
|
||||||
HCI_EXIT_SNIFF_MODE_COMMAND,
|
HCI_READ_PAGE_TIMEOUT_COMMAND : 1 << (7*8+4),
|
||||||
None,
|
HCI_WRITE_PAGE_TIMEOUT_COMMAND : 1 << (7*8+5),
|
||||||
None,
|
HCI_READ_SCAN_ENABLE_COMMAND : 1 << (7*8+6),
|
||||||
HCI_QOS_SETUP_COMMAND,
|
HCI_WRITE_SCAN_ENABLE_COMMAND : 1 << (7*8+7),
|
||||||
HCI_ROLE_DISCOVERY_COMMAND
|
HCI_READ_PAGE_SCAN_ACTIVITY_COMMAND : 1 << (8*8+0),
|
||||||
),
|
HCI_WRITE_PAGE_SCAN_ACTIVITY_COMMAND : 1 << (8*8+1),
|
||||||
# Octet 5
|
HCI_READ_INQUIRY_SCAN_ACTIVITY_COMMAND : 1 << (8*8+2),
|
||||||
(
|
HCI_WRITE_INQUIRY_SCAN_ACTIVITY_COMMAND : 1 << (8*8+3),
|
||||||
HCI_SWITCH_ROLE_COMMAND,
|
HCI_READ_AUTHENTICATION_ENABLE_COMMAND : 1 << (8*8+4),
|
||||||
HCI_READ_LINK_POLICY_SETTINGS_COMMAND,
|
HCI_WRITE_AUTHENTICATION_ENABLE_COMMAND : 1 << (8*8+5),
|
||||||
HCI_WRITE_LINK_POLICY_SETTINGS_COMMAND,
|
HCI_READ_CLASS_OF_DEVICE_COMMAND : 1 << (9*8+0),
|
||||||
HCI_READ_DEFAULT_LINK_POLICY_SETTINGS_COMMAND,
|
HCI_WRITE_CLASS_OF_DEVICE_COMMAND : 1 << (9*8+1),
|
||||||
HCI_WRITE_DEFAULT_LINK_POLICY_SETTINGS_COMMAND,
|
HCI_READ_VOICE_SETTING_COMMAND : 1 << (9*8+2),
|
||||||
HCI_FLOW_SPECIFICATION_COMMAND,
|
HCI_WRITE_VOICE_SETTING_COMMAND : 1 << (9*8+3),
|
||||||
HCI_SET_EVENT_MASK_COMMAND,
|
HCI_READ_AUTOMATIC_FLUSH_TIMEOUT_COMMAND : 1 << (9*8+4),
|
||||||
HCI_RESET_COMMAND
|
HCI_WRITE_AUTOMATIC_FLUSH_TIMEOUT_COMMAND : 1 << (9*8+5),
|
||||||
),
|
HCI_READ_NUM_BROADCAST_RETRANSMISSIONS_COMMAND : 1 << (9*8+6),
|
||||||
# Octet 6
|
HCI_WRITE_NUM_BROADCAST_RETRANSMISSIONS_COMMAND : 1 << (9*8+7),
|
||||||
(
|
HCI_READ_HOLD_MODE_ACTIVITY_COMMAND : 1 << (10*8+0),
|
||||||
HCI_SET_EVENT_FILTER_COMMAND,
|
HCI_WRITE_HOLD_MODE_ACTIVITY_COMMAND : 1 << (10*8+1),
|
||||||
HCI_FLUSH_COMMAND,
|
HCI_READ_TRANSMIT_POWER_LEVEL_COMMAND : 1 << (10*8+2),
|
||||||
HCI_READ_PIN_TYPE_COMMAND,
|
HCI_READ_SYNCHRONOUS_FLOW_CONTROL_ENABLE_COMMAND : 1 << (10*8+3),
|
||||||
HCI_WRITE_PIN_TYPE_COMMAND,
|
HCI_WRITE_SYNCHRONOUS_FLOW_CONTROL_ENABLE_COMMAND : 1 << (10*8+4),
|
||||||
None,
|
HCI_SET_CONTROLLER_TO_HOST_FLOW_CONTROL_COMMAND : 1 << (10*8+5),
|
||||||
HCI_READ_STORED_LINK_KEY_COMMAND,
|
HCI_HOST_BUFFER_SIZE_COMMAND : 1 << (10*8+6),
|
||||||
HCI_WRITE_STORED_LINK_KEY_COMMAND,
|
HCI_HOST_NUMBER_OF_COMPLETED_PACKETS_COMMAND : 1 << (10*8+7),
|
||||||
HCI_DELETE_STORED_LINK_KEY_COMMAND
|
HCI_READ_LINK_SUPERVISION_TIMEOUT_COMMAND : 1 << (11*8+0),
|
||||||
),
|
HCI_WRITE_LINK_SUPERVISION_TIMEOUT_COMMAND : 1 << (11*8+1),
|
||||||
# Octet 7
|
HCI_READ_NUMBER_OF_SUPPORTED_IAC_COMMAND : 1 << (11*8+2),
|
||||||
(
|
HCI_READ_CURRENT_IAC_LAP_COMMAND : 1 << (11*8+3),
|
||||||
HCI_WRITE_LOCAL_NAME_COMMAND,
|
HCI_WRITE_CURRENT_IAC_LAP_COMMAND : 1 << (11*8+4),
|
||||||
HCI_READ_LOCAL_NAME_COMMAND,
|
HCI_SET_AFH_HOST_CHANNEL_CLASSIFICATION_COMMAND : 1 << (12*8+1),
|
||||||
HCI_READ_CONNECTION_ACCEPT_TIMEOUT_COMMAND,
|
HCI_READ_INQUIRY_SCAN_TYPE_COMMAND : 1 << (12*8+4),
|
||||||
HCI_WRITE_CONNECTION_ACCEPT_TIMEOUT_COMMAND,
|
HCI_WRITE_INQUIRY_SCAN_TYPE_COMMAND : 1 << (12*8+5),
|
||||||
HCI_READ_PAGE_TIMEOUT_COMMAND,
|
HCI_READ_INQUIRY_MODE_COMMAND : 1 << (12*8+6),
|
||||||
HCI_WRITE_PAGE_TIMEOUT_COMMAND,
|
HCI_WRITE_INQUIRY_MODE_COMMAND : 1 << (12*8+7),
|
||||||
HCI_READ_SCAN_ENABLE_COMMAND,
|
HCI_READ_PAGE_SCAN_TYPE_COMMAND : 1 << (13*8+0),
|
||||||
HCI_WRITE_SCAN_ENABLE_COMMAND
|
HCI_WRITE_PAGE_SCAN_TYPE_COMMAND : 1 << (13*8+1),
|
||||||
),
|
HCI_READ_AFH_CHANNEL_ASSESSMENT_MODE_COMMAND : 1 << (13*8+2),
|
||||||
# Octet 8
|
HCI_WRITE_AFH_CHANNEL_ASSESSMENT_MODE_COMMAND : 1 << (13*8+3),
|
||||||
(
|
HCI_READ_LOCAL_VERSION_INFORMATION_COMMAND : 1 << (14*8+3),
|
||||||
HCI_READ_PAGE_SCAN_ACTIVITY_COMMAND,
|
HCI_READ_LOCAL_SUPPORTED_FEATURES_COMMAND : 1 << (14*8+5),
|
||||||
HCI_WRITE_PAGE_SCAN_ACTIVITY_COMMAND,
|
HCI_READ_LOCAL_EXTENDED_FEATURES_COMMAND : 1 << (14*8+6),
|
||||||
HCI_READ_INQUIRY_SCAN_ACTIVITY_COMMAND,
|
HCI_READ_BUFFER_SIZE_COMMAND : 1 << (14*8+7),
|
||||||
HCI_WRITE_INQUIRY_SCAN_ACTIVITY_COMMAND,
|
HCI_READ_BD_ADDR_COMMAND : 1 << (15*8+1),
|
||||||
HCI_READ_AUTHENTICATION_ENABLE_COMMAND,
|
HCI_READ_FAILED_CONTACT_COUNTER_COMMAND : 1 << (15*8+2),
|
||||||
HCI_WRITE_AUTHENTICATION_ENABLE_COMMAND,
|
HCI_RESET_FAILED_CONTACT_COUNTER_COMMAND : 1 << (15*8+3),
|
||||||
None,
|
HCI_READ_LINK_QUALITY_COMMAND : 1 << (15*8+4),
|
||||||
None
|
HCI_READ_RSSI_COMMAND : 1 << (15*8+5),
|
||||||
),
|
HCI_READ_AFH_CHANNEL_MAP_COMMAND : 1 << (15*8+6),
|
||||||
# Octet 9
|
HCI_READ_CLOCK_COMMAND : 1 << (15*8+7),
|
||||||
(
|
HCI_READ_LOOPBACK_MODE_COMMAND : 1 << (16*8+0),
|
||||||
HCI_READ_CLASS_OF_DEVICE_COMMAND,
|
HCI_WRITE_LOOPBACK_MODE_COMMAND : 1 << (16*8+1),
|
||||||
HCI_WRITE_CLASS_OF_DEVICE_COMMAND,
|
HCI_ENABLE_DEVICE_UNDER_TEST_MODE_COMMAND : 1 << (16*8+2),
|
||||||
HCI_READ_VOICE_SETTING_COMMAND,
|
HCI_SETUP_SYNCHRONOUS_CONNECTION_COMMAND : 1 << (16*8+3),
|
||||||
HCI_WRITE_VOICE_SETTING_COMMAND,
|
HCI_ACCEPT_SYNCHRONOUS_CONNECTION_REQUEST_COMMAND : 1 << (16*8+4),
|
||||||
HCI_READ_AUTOMATIC_FLUSH_TIMEOUT_COMMAND,
|
HCI_REJECT_SYNCHRONOUS_CONNECTION_REQUEST_COMMAND : 1 << (16*8+5),
|
||||||
HCI_WRITE_AUTOMATIC_FLUSH_TIMEOUT_COMMAND,
|
HCI_READ_EXTENDED_INQUIRY_RESPONSE_COMMAND : 1 << (17*8+0),
|
||||||
HCI_READ_NUM_BROADCAST_RETRANSMISSIONS_COMMAND,
|
HCI_WRITE_EXTENDED_INQUIRY_RESPONSE_COMMAND : 1 << (17*8+1),
|
||||||
HCI_WRITE_NUM_BROADCAST_RETRANSMISSIONS_COMMAND
|
HCI_REFRESH_ENCRYPTION_KEY_COMMAND : 1 << (17*8+2),
|
||||||
),
|
HCI_SNIFF_SUBRATING_COMMAND : 1 << (17*8+4),
|
||||||
# Octet 10
|
HCI_READ_SIMPLE_PAIRING_MODE_COMMAND : 1 << (17*8+5),
|
||||||
(
|
HCI_WRITE_SIMPLE_PAIRING_MODE_COMMAND : 1 << (17*8+6),
|
||||||
HCI_READ_HOLD_MODE_ACTIVITY_COMMAND,
|
HCI_READ_LOCAL_OOB_DATA_COMMAND : 1 << (17*8+7),
|
||||||
HCI_WRITE_HOLD_MODE_ACTIVITY_COMMAND,
|
HCI_READ_INQUIRY_RESPONSE_TRANSMIT_POWER_LEVEL_COMMAND : 1 << (18*8+0),
|
||||||
HCI_READ_TRANSMIT_POWER_LEVEL_COMMAND,
|
HCI_WRITE_INQUIRY_TRANSMIT_POWER_LEVEL_COMMAND : 1 << (18*8+1),
|
||||||
HCI_READ_SYNCHRONOUS_FLOW_CONTROL_ENABLE_COMMAND,
|
HCI_READ_DEFAULT_ERRONEOUS_DATA_REPORTING_COMMAND : 1 << (18*8+2),
|
||||||
HCI_WRITE_SYNCHRONOUS_FLOW_CONTROL_ENABLE_COMMAND,
|
HCI_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING_COMMAND : 1 << (18*8+3),
|
||||||
HCI_SET_CONTROLLER_TO_HOST_FLOW_CONTROL_COMMAND,
|
HCI_IO_CAPABILITY_REQUEST_REPLY_COMMAND : 1 << (18*8+7),
|
||||||
HCI_HOST_BUFFER_SIZE_COMMAND,
|
HCI_USER_CONFIRMATION_REQUEST_REPLY_COMMAND : 1 << (19*8+0),
|
||||||
HCI_HOST_NUMBER_OF_COMPLETED_PACKETS_COMMAND
|
HCI_USER_CONFIRMATION_REQUEST_NEGATIVE_REPLY_COMMAND : 1 << (19*8+1),
|
||||||
),
|
HCI_USER_PASSKEY_REQUEST_REPLY_COMMAND : 1 << (19*8+2),
|
||||||
# Octet 11
|
HCI_USER_PASSKEY_REQUEST_NEGATIVE_REPLY_COMMAND : 1 << (19*8+3),
|
||||||
(
|
HCI_REMOTE_OOB_DATA_REQUEST_REPLY_COMMAND : 1 << (19*8+4),
|
||||||
HCI_READ_LINK_SUPERVISION_TIMEOUT_COMMAND,
|
HCI_WRITE_SIMPLE_PAIRING_DEBUG_MODE_COMMAND : 1 << (19*8+5),
|
||||||
HCI_WRITE_LINK_SUPERVISION_TIMEOUT_COMMAND,
|
HCI_ENHANCED_FLUSH_COMMAND : 1 << (19*8+6),
|
||||||
HCI_READ_NUMBER_OF_SUPPORTED_IAC_COMMAND,
|
HCI_REMOTE_OOB_DATA_REQUEST_NEGATIVE_REPLY_COMMAND : 1 << (19*8+7),
|
||||||
HCI_READ_CURRENT_IAC_LAP_COMMAND,
|
HCI_SEND_KEYPRESS_NOTIFICATION_COMMAND : 1 << (20*8+2),
|
||||||
HCI_WRITE_CURRENT_IAC_LAP_COMMAND,
|
HCI_IO_CAPABILITY_REQUEST_NEGATIVE_REPLY_COMMAND : 1 << (20*8+3),
|
||||||
None,
|
HCI_READ_ENCRYPTION_KEY_SIZE_COMMAND : 1 << (20*8+4),
|
||||||
None,
|
HCI_SET_EVENT_MASK_PAGE_2_COMMAND : 1 << (22*8+2),
|
||||||
None
|
HCI_READ_FLOW_CONTROL_MODE_COMMAND : 1 << (23*8+0),
|
||||||
),
|
HCI_WRITE_FLOW_CONTROL_MODE_COMMAND : 1 << (23*8+1),
|
||||||
# Octet 12
|
HCI_READ_DATA_BLOCK_SIZE_COMMAND : 1 << (23*8+2),
|
||||||
(
|
HCI_READ_ENHANCED_TRANSMIT_POWER_LEVEL_COMMAND : 1 << (24*8+0),
|
||||||
None,
|
HCI_READ_LE_HOST_SUPPORT_COMMAND : 1 << (24*8+5),
|
||||||
HCI_SET_AFH_HOST_CHANNEL_CLASSIFICATION_COMMAND,
|
HCI_WRITE_LE_HOST_SUPPORT_COMMAND : 1 << (24*8+6),
|
||||||
None,
|
HCI_LE_SET_EVENT_MASK_COMMAND : 1 << (25*8+0),
|
||||||
None,
|
HCI_LE_READ_BUFFER_SIZE_COMMAND : 1 << (25*8+1),
|
||||||
HCI_READ_INQUIRY_SCAN_TYPE_COMMAND,
|
HCI_LE_READ_LOCAL_SUPPORTED_FEATURES_COMMAND : 1 << (25*8+2),
|
||||||
HCI_WRITE_INQUIRY_SCAN_TYPE_COMMAND,
|
HCI_LE_SET_RANDOM_ADDRESS_COMMAND : 1 << (25*8+4),
|
||||||
HCI_READ_INQUIRY_MODE_COMMAND,
|
HCI_LE_SET_ADVERTISING_PARAMETERS_COMMAND : 1 << (25*8+5),
|
||||||
HCI_WRITE_INQUIRY_MODE_COMMAND
|
HCI_LE_READ_ADVERTISING_PHYSICAL_CHANNEL_TX_POWER_COMMAND : 1 << (25*8+6),
|
||||||
),
|
HCI_LE_SET_ADVERTISING_DATA_COMMAND : 1 << (25*8+7),
|
||||||
# Octet 13
|
HCI_LE_SET_SCAN_RESPONSE_DATA_COMMAND : 1 << (26*8+0),
|
||||||
(
|
HCI_LE_SET_ADVERTISING_ENABLE_COMMAND : 1 << (26*8+1),
|
||||||
HCI_READ_PAGE_SCAN_TYPE_COMMAND,
|
HCI_LE_SET_SCAN_PARAMETERS_COMMAND : 1 << (26*8+2),
|
||||||
HCI_WRITE_PAGE_SCAN_TYPE_COMMAND,
|
HCI_LE_SET_SCAN_ENABLE_COMMAND : 1 << (26*8+3),
|
||||||
HCI_READ_AFH_CHANNEL_ASSESSMENT_MODE_COMMAND,
|
HCI_LE_CREATE_CONNECTION_COMMAND : 1 << (26*8+4),
|
||||||
HCI_WRITE_AFH_CHANNEL_ASSESSMENT_MODE_COMMAND,
|
HCI_LE_CREATE_CONNECTION_CANCEL_COMMAND : 1 << (26*8+5),
|
||||||
None,
|
HCI_LE_READ_FILTER_ACCEPT_LIST_SIZE_COMMAND : 1 << (26*8+6),
|
||||||
None,
|
HCI_LE_CLEAR_FILTER_ACCEPT_LIST_COMMAND : 1 << (26*8+7),
|
||||||
None,
|
HCI_LE_ADD_DEVICE_TO_FILTER_ACCEPT_LIST_COMMAND : 1 << (27*8+0),
|
||||||
None,
|
HCI_LE_REMOVE_DEVICE_FROM_FILTER_ACCEPT_LIST_COMMAND : 1 << (27*8+1),
|
||||||
),
|
HCI_LE_CONNECTION_UPDATE_COMMAND : 1 << (27*8+2),
|
||||||
# Octet 14
|
HCI_LE_SET_HOST_CHANNEL_CLASSIFICATION_COMMAND : 1 << (27*8+3),
|
||||||
(
|
HCI_LE_READ_CHANNEL_MAP_COMMAND : 1 << (27*8+4),
|
||||||
None,
|
HCI_LE_READ_REMOTE_FEATURES_COMMAND : 1 << (27*8+5),
|
||||||
None,
|
HCI_LE_ENCRYPT_COMMAND : 1 << (27*8+6),
|
||||||
None,
|
HCI_LE_RAND_COMMAND : 1 << (27*8+7),
|
||||||
HCI_READ_LOCAL_VERSION_INFORMATION_COMMAND,
|
HCI_LE_ENABLE_ENCRYPTION_COMMAND : 1 << (28*8+0),
|
||||||
None,
|
HCI_LE_LONG_TERM_KEY_REQUEST_REPLY_COMMAND : 1 << (28*8+1),
|
||||||
HCI_READ_LOCAL_SUPPORTED_FEATURES_COMMAND,
|
HCI_LE_LONG_TERM_KEY_REQUEST_NEGATIVE_REPLY_COMMAND : 1 << (28*8+2),
|
||||||
HCI_READ_LOCAL_EXTENDED_FEATURES_COMMAND,
|
HCI_LE_READ_SUPPORTED_STATES_COMMAND : 1 << (28*8+3),
|
||||||
HCI_READ_BUFFER_SIZE_COMMAND
|
HCI_LE_RECEIVER_TEST_COMMAND : 1 << (28*8+4),
|
||||||
),
|
HCI_LE_TRANSMITTER_TEST_COMMAND : 1 << (28*8+5),
|
||||||
# Octet 15
|
HCI_LE_TEST_END_COMMAND : 1 << (28*8+6),
|
||||||
(
|
HCI_ENHANCED_SETUP_SYNCHRONOUS_CONNECTION_COMMAND : 1 << (29*8+3),
|
||||||
None,
|
HCI_ENHANCED_ACCEPT_SYNCHRONOUS_CONNECTION_REQUEST_COMMAND : 1 << (29*8+4),
|
||||||
HCI_READ_BD_ADDR_COMMAND,
|
HCI_READ_LOCAL_SUPPORTED_CODECS_COMMAND : 1 << (29*8+5),
|
||||||
HCI_READ_FAILED_CONTACT_COUNTER_COMMAND,
|
HCI_SET_MWS_CHANNEL_PARAMETERS_COMMAND : 1 << (29*8+6),
|
||||||
HCI_RESET_FAILED_CONTACT_COUNTER_COMMAND,
|
HCI_SET_EXTERNAL_FRAME_CONFIGURATION_COMMAND : 1 << (29*8+7),
|
||||||
HCI_READ_LINK_QUALITY_COMMAND,
|
HCI_SET_MWS_SIGNALING_COMMAND : 1 << (30*8+0),
|
||||||
HCI_READ_RSSI_COMMAND,
|
HCI_SET_MWS_TRANSPORT_LAYER_COMMAND : 1 << (30*8+1),
|
||||||
HCI_READ_AFH_CHANNEL_MAP_COMMAND,
|
HCI_SET_MWS_SCAN_FREQUENCY_TABLE_COMMAND : 1 << (30*8+2),
|
||||||
HCI_READ_CLOCK_COMMAND
|
HCI_GET_MWS_TRANSPORT_LAYER_CONFIGURATION_COMMAND : 1 << (30*8+3),
|
||||||
),
|
HCI_SET_MWS_PATTERN_CONFIGURATION_COMMAND : 1 << (30*8+4),
|
||||||
# Octet 16
|
HCI_SET_TRIGGERED_CLOCK_CAPTURE_COMMAND : 1 << (30*8+5),
|
||||||
(
|
HCI_TRUNCATED_PAGE_COMMAND : 1 << (30*8+6),
|
||||||
HCI_READ_LOOPBACK_MODE_COMMAND,
|
HCI_TRUNCATED_PAGE_CANCEL_COMMAND : 1 << (30*8+7),
|
||||||
HCI_WRITE_LOOPBACK_MODE_COMMAND,
|
HCI_SET_CONNECTIONLESS_PERIPHERAL_BROADCAST_COMMAND : 1 << (31*8+0),
|
||||||
HCI_ENABLE_DEVICE_UNDER_TEST_MODE_COMMAND,
|
HCI_SET_CONNECTIONLESS_PERIPHERAL_BROADCAST_RECEIVE_COMMAND : 1 << (31*8+1),
|
||||||
HCI_SETUP_SYNCHRONOUS_CONNECTION_COMMAND,
|
HCI_START_SYNCHRONIZATION_TRAIN_COMMAND : 1 << (31*8+2),
|
||||||
HCI_ACCEPT_SYNCHRONOUS_CONNECTION_REQUEST_COMMAND,
|
HCI_RECEIVE_SYNCHRONIZATION_TRAIN_COMMAND : 1 << (31*8+3),
|
||||||
HCI_REJECT_SYNCHRONOUS_CONNECTION_REQUEST_COMMAND,
|
HCI_SET_RESERVED_LT_ADDR_COMMAND : 1 << (31*8+4),
|
||||||
None,
|
HCI_DELETE_RESERVED_LT_ADDR_COMMAND : 1 << (31*8+5),
|
||||||
None,
|
HCI_SET_CONNECTIONLESS_PERIPHERAL_BROADCAST_DATA_COMMAND : 1 << (31*8+6),
|
||||||
),
|
HCI_READ_SYNCHRONIZATION_TRAIN_PARAMETERS_COMMAND : 1 << (31*8+7),
|
||||||
# Octet 17
|
HCI_WRITE_SYNCHRONIZATION_TRAIN_PARAMETERS_COMMAND : 1 << (32*8+0),
|
||||||
(
|
HCI_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY_COMMAND : 1 << (32*8+1),
|
||||||
HCI_READ_EXTENDED_INQUIRY_RESPONSE_COMMAND,
|
HCI_READ_SECURE_CONNECTIONS_HOST_SUPPORT_COMMAND : 1 << (32*8+2),
|
||||||
HCI_WRITE_EXTENDED_INQUIRY_RESPONSE_COMMAND,
|
HCI_WRITE_SECURE_CONNECTIONS_HOST_SUPPORT_COMMAND : 1 << (32*8+3),
|
||||||
HCI_REFRESH_ENCRYPTION_KEY_COMMAND,
|
HCI_READ_AUTHENTICATED_PAYLOAD_TIMEOUT_COMMAND : 1 << (32*8+4),
|
||||||
None,
|
HCI_WRITE_AUTHENTICATED_PAYLOAD_TIMEOUT_COMMAND : 1 << (32*8+5),
|
||||||
HCI_SNIFF_SUBRATING_COMMAND,
|
HCI_READ_LOCAL_OOB_EXTENDED_DATA_COMMAND : 1 << (32*8+6),
|
||||||
HCI_READ_SIMPLE_PAIRING_MODE_COMMAND,
|
HCI_WRITE_SECURE_CONNECTIONS_TEST_MODE_COMMAND : 1 << (32*8+7),
|
||||||
HCI_WRITE_SIMPLE_PAIRING_MODE_COMMAND,
|
HCI_READ_EXTENDED_PAGE_TIMEOUT_COMMAND : 1 << (33*8+0),
|
||||||
HCI_READ_LOCAL_OOB_DATA_COMMAND
|
HCI_WRITE_EXTENDED_PAGE_TIMEOUT_COMMAND : 1 << (33*8+1),
|
||||||
),
|
HCI_READ_EXTENDED_INQUIRY_LENGTH_COMMAND : 1 << (33*8+2),
|
||||||
# Octet 18
|
HCI_WRITE_EXTENDED_INQUIRY_LENGTH_COMMAND : 1 << (33*8+3),
|
||||||
(
|
HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_REPLY_COMMAND : 1 << (33*8+4),
|
||||||
HCI_READ_INQUIRY_RESPONSE_TRANSMIT_POWER_LEVEL_COMMAND,
|
HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_NEGATIVE_REPLY_COMMAND : 1 << (33*8+5),
|
||||||
HCI_WRITE_INQUIRY_TRANSMIT_POWER_LEVEL_COMMAND,
|
HCI_LE_SET_DATA_LENGTH_COMMAND : 1 << (33*8+6),
|
||||||
HCI_READ_DEFAULT_ERRONEOUS_DATA_REPORTING_COMMAND,
|
HCI_LE_READ_SUGGESTED_DEFAULT_DATA_LENGTH_COMMAND : 1 << (33*8+7),
|
||||||
HCI_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING_COMMAND,
|
HCI_LE_WRITE_SUGGESTED_DEFAULT_DATA_LENGTH_COMMAND : 1 << (34*8+0),
|
||||||
None,
|
HCI_LE_READ_LOCAL_P_256_PUBLIC_KEY_COMMAND : 1 << (34*8+1),
|
||||||
None,
|
HCI_LE_GENERATE_DHKEY_COMMAND : 1 << (34*8+2),
|
||||||
None,
|
HCI_LE_ADD_DEVICE_TO_RESOLVING_LIST_COMMAND : 1 << (34*8+3),
|
||||||
HCI_IO_CAPABILITY_REQUEST_REPLY_COMMAND
|
HCI_LE_REMOVE_DEVICE_FROM_RESOLVING_LIST_COMMAND : 1 << (34*8+4),
|
||||||
),
|
HCI_LE_CLEAR_RESOLVING_LIST_COMMAND : 1 << (34*8+5),
|
||||||
# Octet 19
|
HCI_LE_READ_RESOLVING_LIST_SIZE_COMMAND : 1 << (34*8+6),
|
||||||
(
|
HCI_LE_READ_PEER_RESOLVABLE_ADDRESS_COMMAND : 1 << (34*8+7),
|
||||||
HCI_USER_CONFIRMATION_REQUEST_REPLY_COMMAND,
|
HCI_LE_READ_LOCAL_RESOLVABLE_ADDRESS_COMMAND : 1 << (35*8+0),
|
||||||
HCI_USER_CONFIRMATION_REQUEST_NEGATIVE_REPLY_COMMAND,
|
HCI_LE_SET_ADDRESS_RESOLUTION_ENABLE_COMMAND : 1 << (35*8+1),
|
||||||
HCI_USER_PASSKEY_REQUEST_REPLY_COMMAND,
|
HCI_LE_SET_RESOLVABLE_PRIVATE_ADDRESS_TIMEOUT_COMMAND : 1 << (35*8+2),
|
||||||
HCI_USER_PASSKEY_REQUEST_NEGATIVE_REPLY_COMMAND,
|
HCI_LE_READ_MAXIMUM_DATA_LENGTH_COMMAND : 1 << (35*8+3),
|
||||||
HCI_REMOTE_OOB_DATA_REQUEST_REPLY_COMMAND,
|
HCI_LE_READ_PHY_COMMAND : 1 << (35*8+4),
|
||||||
HCI_WRITE_SIMPLE_PAIRING_DEBUG_MODE_COMMAND,
|
HCI_LE_SET_DEFAULT_PHY_COMMAND : 1 << (35*8+5),
|
||||||
HCI_ENHANCED_FLUSH_COMMAND,
|
HCI_LE_SET_PHY_COMMAND : 1 << (35*8+6),
|
||||||
HCI_REMOTE_OOB_DATA_REQUEST_NEGATIVE_REPLY_COMMAND
|
HCI_LE_RECEIVER_TEST_V2_COMMAND : 1 << (35*8+7),
|
||||||
),
|
HCI_LE_TRANSMITTER_TEST_V2_COMMAND : 1 << (36*8+0),
|
||||||
# Octet 20
|
HCI_LE_SET_ADVERTISING_SET_RANDOM_ADDRESS_COMMAND : 1 << (36*8+1),
|
||||||
(
|
HCI_LE_SET_EXTENDED_ADVERTISING_PARAMETERS_COMMAND : 1 << (36*8+2),
|
||||||
None,
|
HCI_LE_SET_EXTENDED_ADVERTISING_DATA_COMMAND : 1 << (36*8+3),
|
||||||
None,
|
HCI_LE_SET_EXTENDED_SCAN_RESPONSE_DATA_COMMAND : 1 << (36*8+4),
|
||||||
HCI_SEND_KEYPRESS_NOTIFICATION_COMMAND,
|
HCI_LE_SET_EXTENDED_ADVERTISING_ENABLE_COMMAND : 1 << (36*8+5),
|
||||||
HCI_IO_CAPABILITY_REQUEST_NEGATIVE_REPLY_COMMAND,
|
HCI_LE_READ_MAXIMUM_ADVERTISING_DATA_LENGTH_COMMAND : 1 << (36*8+6),
|
||||||
HCI_READ_ENCRYPTION_KEY_SIZE_COMMAND,
|
HCI_LE_READ_NUMBER_OF_SUPPORTED_ADVERTISING_SETS_COMMAND : 1 << (36*8+7),
|
||||||
None,
|
HCI_LE_REMOVE_ADVERTISING_SET_COMMAND : 1 << (37*8+0),
|
||||||
None,
|
HCI_LE_CLEAR_ADVERTISING_SETS_COMMAND : 1 << (37*8+1),
|
||||||
None,
|
HCI_LE_SET_PERIODIC_ADVERTISING_PARAMETERS_COMMAND : 1 << (37*8+2),
|
||||||
),
|
HCI_LE_SET_PERIODIC_ADVERTISING_DATA_COMMAND : 1 << (37*8+3),
|
||||||
# Octet 21
|
HCI_LE_SET_PERIODIC_ADVERTISING_ENABLE_COMMAND : 1 << (37*8+4),
|
||||||
(
|
HCI_LE_SET_EXTENDED_SCAN_PARAMETERS_COMMAND : 1 << (37*8+5),
|
||||||
None,
|
HCI_LE_SET_EXTENDED_SCAN_ENABLE_COMMAND : 1 << (37*8+6),
|
||||||
None,
|
HCI_LE_EXTENDED_CREATE_CONNECTION_COMMAND : 1 << (37*8+7),
|
||||||
None,
|
HCI_LE_PERIODIC_ADVERTISING_CREATE_SYNC_COMMAND : 1 << (38*8+0),
|
||||||
None,
|
HCI_LE_PERIODIC_ADVERTISING_CREATE_SYNC_CANCEL_COMMAND : 1 << (38*8+1),
|
||||||
None,
|
HCI_LE_PERIODIC_ADVERTISING_TERMINATE_SYNC_COMMAND : 1 << (38*8+2),
|
||||||
None,
|
HCI_LE_ADD_DEVICE_TO_PERIODIC_ADVERTISER_LIST_COMMAND : 1 << (38*8+3),
|
||||||
None,
|
HCI_LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISER_LIST_COMMAND : 1 << (38*8+4),
|
||||||
None,
|
HCI_LE_CLEAR_PERIODIC_ADVERTISER_LIST_COMMAND : 1 << (38*8+5),
|
||||||
),
|
HCI_LE_READ_PERIODIC_ADVERTISER_LIST_SIZE_COMMAND : 1 << (38*8+6),
|
||||||
# Octet 22
|
HCI_LE_READ_TRANSMIT_POWER_COMMAND : 1 << (38*8+7),
|
||||||
(
|
HCI_LE_READ_RF_PATH_COMPENSATION_COMMAND : 1 << (39*8+0),
|
||||||
None,
|
HCI_LE_WRITE_RF_PATH_COMPENSATION_COMMAND : 1 << (39*8+1),
|
||||||
None,
|
HCI_LE_SET_PRIVACY_MODE_COMMAND : 1 << (39*8+2),
|
||||||
HCI_SET_EVENT_MASK_PAGE_2_COMMAND,
|
HCI_LE_RECEIVER_TEST_V3_COMMAND : 1 << (39*8+3),
|
||||||
None,
|
HCI_LE_TRANSMITTER_TEST_V3_COMMAND : 1 << (39*8+4),
|
||||||
None,
|
HCI_LE_SET_CONNECTIONLESS_CTE_TRANSMIT_PARAMETERS_COMMAND : 1 << (39*8+5),
|
||||||
None,
|
HCI_LE_SET_CONNECTIONLESS_CTE_TRANSMIT_ENABLE_COMMAND : 1 << (39*8+6),
|
||||||
None,
|
HCI_LE_SET_CONNECTIONLESS_IQ_SAMPLING_ENABLE_COMMAND : 1 << (39*8+7),
|
||||||
None,
|
HCI_LE_SET_CONNECTION_CTE_RECEIVE_PARAMETERS_COMMAND : 1 << (40*8+0),
|
||||||
),
|
HCI_LE_SET_CONNECTION_CTE_TRANSMIT_PARAMETERS_COMMAND : 1 << (40*8+1),
|
||||||
# Octet 23
|
HCI_LE_CONNECTION_CTE_REQUEST_ENABLE_COMMAND : 1 << (40*8+2),
|
||||||
(
|
HCI_LE_CONNECTION_CTE_RESPONSE_ENABLE_COMMAND : 1 << (40*8+3),
|
||||||
HCI_READ_FLOW_CONTROL_MODE_COMMAND,
|
HCI_LE_READ_ANTENNA_INFORMATION_COMMAND : 1 << (40*8+4),
|
||||||
HCI_WRITE_FLOW_CONTROL_MODE_COMMAND,
|
HCI_LE_SET_PERIODIC_ADVERTISING_RECEIVE_ENABLE_COMMAND : 1 << (40*8+5),
|
||||||
HCI_READ_DATA_BLOCK_SIZE_COMMAND,
|
HCI_LE_PERIODIC_ADVERTISING_SYNC_TRANSFER_COMMAND : 1 << (40*8+6),
|
||||||
None,
|
HCI_LE_PERIODIC_ADVERTISING_SET_INFO_TRANSFER_COMMAND : 1 << (40*8+7),
|
||||||
None,
|
HCI_LE_SET_PERIODIC_ADVERTISING_SYNC_TRANSFER_PARAMETERS_COMMAND : 1 << (41*8+0),
|
||||||
None,
|
HCI_LE_SET_DEFAULT_PERIODIC_ADVERTISING_SYNC_TRANSFER_PARAMETERS_COMMAND : 1 << (41*8+1),
|
||||||
None,
|
HCI_LE_GENERATE_DHKEY_V2_COMMAND : 1 << (41*8+2),
|
||||||
None,
|
HCI_READ_LOCAL_SIMPLE_PAIRING_OPTIONS_COMMAND : 1 << (41*8+3),
|
||||||
),
|
HCI_LE_MODIFY_SLEEP_CLOCK_ACCURACY_COMMAND : 1 << (41*8+4),
|
||||||
# Octet 24
|
HCI_LE_READ_BUFFER_SIZE_V2_COMMAND : 1 << (41*8+5),
|
||||||
(
|
HCI_LE_READ_ISO_TX_SYNC_COMMAND : 1 << (41*8+6),
|
||||||
HCI_READ_ENHANCED_TRANSMIT_POWER_LEVEL_COMMAND,
|
HCI_LE_SET_CIG_PARAMETERS_COMMAND : 1 << (41*8+7),
|
||||||
None,
|
HCI_LE_SET_CIG_PARAMETERS_TEST_COMMAND : 1 << (42*8+0),
|
||||||
None,
|
HCI_LE_CREATE_CIS_COMMAND : 1 << (42*8+1),
|
||||||
None,
|
HCI_LE_REMOVE_CIG_COMMAND : 1 << (42*8+2),
|
||||||
None,
|
HCI_LE_ACCEPT_CIS_REQUEST_COMMAND : 1 << (42*8+3),
|
||||||
HCI_READ_LE_HOST_SUPPORT_COMMAND,
|
HCI_LE_REJECT_CIS_REQUEST_COMMAND : 1 << (42*8+4),
|
||||||
HCI_WRITE_LE_HOST_SUPPORT_COMMAND,
|
HCI_LE_CREATE_BIG_COMMAND : 1 << (42*8+5),
|
||||||
None,
|
HCI_LE_CREATE_BIG_TEST_COMMAND : 1 << (42*8+6),
|
||||||
),
|
HCI_LE_TERMINATE_BIG_COMMAND : 1 << (42*8+7),
|
||||||
# Octet 25
|
HCI_LE_BIG_CREATE_SYNC_COMMAND : 1 << (43*8+0),
|
||||||
(
|
HCI_LE_BIG_TERMINATE_SYNC_COMMAND : 1 << (43*8+1),
|
||||||
HCI_LE_SET_EVENT_MASK_COMMAND,
|
HCI_LE_REQUEST_PEER_SCA_COMMAND : 1 << (43*8+2),
|
||||||
HCI_LE_READ_BUFFER_SIZE_COMMAND,
|
HCI_LE_SETUP_ISO_DATA_PATH_COMMAND : 1 << (43*8+3),
|
||||||
HCI_LE_READ_LOCAL_SUPPORTED_FEATURES_COMMAND,
|
HCI_LE_REMOVE_ISO_DATA_PATH_COMMAND : 1 << (43*8+4),
|
||||||
None,
|
HCI_LE_ISO_TRANSMIT_TEST_COMMAND : 1 << (43*8+5),
|
||||||
HCI_LE_SET_RANDOM_ADDRESS_COMMAND,
|
HCI_LE_ISO_RECEIVE_TEST_COMMAND : 1 << (43*8+6),
|
||||||
HCI_LE_SET_ADVERTISING_PARAMETERS_COMMAND,
|
HCI_LE_ISO_READ_TEST_COUNTERS_COMMAND : 1 << (43*8+7),
|
||||||
HCI_LE_READ_ADVERTISING_PHYSICAL_CHANNEL_TX_POWER_COMMAND,
|
HCI_LE_ISO_TEST_END_COMMAND : 1 << (44*8+0),
|
||||||
HCI_LE_SET_ADVERTISING_DATA_COMMAND,
|
HCI_LE_SET_HOST_FEATURE_COMMAND : 1 << (44*8+1),
|
||||||
),
|
HCI_LE_READ_ISO_LINK_QUALITY_COMMAND : 1 << (44*8+2),
|
||||||
# Octet 26
|
HCI_LE_ENHANCED_READ_TRANSMIT_POWER_LEVEL_COMMAND : 1 << (44*8+3),
|
||||||
(
|
HCI_LE_READ_REMOTE_TRANSMIT_POWER_LEVEL_COMMAND : 1 << (44*8+4),
|
||||||
HCI_LE_SET_SCAN_RESPONSE_DATA_COMMAND,
|
HCI_LE_SET_PATH_LOSS_REPORTING_PARAMETERS_COMMAND : 1 << (44*8+5),
|
||||||
HCI_LE_SET_ADVERTISING_ENABLE_COMMAND,
|
HCI_LE_SET_PATH_LOSS_REPORTING_ENABLE_COMMAND : 1 << (44*8+6),
|
||||||
HCI_LE_SET_SCAN_PARAMETERS_COMMAND,
|
HCI_LE_SET_TRANSMIT_POWER_REPORTING_ENABLE_COMMAND : 1 << (44*8+7),
|
||||||
HCI_LE_SET_SCAN_ENABLE_COMMAND,
|
HCI_LE_TRANSMITTER_TEST_V4_COMMAND : 1 << (45*8+0),
|
||||||
HCI_LE_CREATE_CONNECTION_COMMAND,
|
HCI_SET_ECOSYSTEM_BASE_INTERVAL_COMMAND : 1 << (45*8+1),
|
||||||
HCI_LE_CREATE_CONNECTION_CANCEL_COMMAND,
|
HCI_READ_LOCAL_SUPPORTED_CODECS_V2_COMMAND : 1 << (45*8+2),
|
||||||
HCI_LE_READ_FILTER_ACCEPT_LIST_SIZE_COMMAND,
|
HCI_READ_LOCAL_SUPPORTED_CODEC_CAPABILITIES_COMMAND : 1 << (45*8+3),
|
||||||
HCI_LE_CLEAR_FILTER_ACCEPT_LIST_COMMAND
|
HCI_READ_LOCAL_SUPPORTED_CONTROLLER_DELAY_COMMAND : 1 << (45*8+4),
|
||||||
),
|
HCI_CONFIGURE_DATA_PATH_COMMAND : 1 << (45*8+5),
|
||||||
# Octet 27
|
HCI_LE_SET_DATA_RELATED_ADDRESS_CHANGES_COMMAND : 1 << (45*8+6),
|
||||||
(
|
HCI_SET_MIN_ENCRYPTION_KEY_SIZE_COMMAND : 1 << (45*8+7),
|
||||||
HCI_LE_ADD_DEVICE_TO_FILTER_ACCEPT_LIST_COMMAND,
|
HCI_LE_SET_DEFAULT_SUBRATE_COMMAND : 1 << (46*8+0),
|
||||||
HCI_LE_REMOVE_DEVICE_FROM_FILTER_ACCEPT_LIST_COMMAND,
|
HCI_LE_SUBRATE_REQUEST_COMMAND : 1 << (46*8+1),
|
||||||
HCI_LE_CONNECTION_UPDATE_COMMAND,
|
HCI_LE_SET_EXTENDED_ADVERTISING_PARAMETERS_V2_COMMAND : 1 << (46*8+2),
|
||||||
HCI_LE_SET_HOST_CHANNEL_CLASSIFICATION_COMMAND,
|
HCI_LE_SET_PERIODIC_ADVERTISING_SUBEVENT_DATA_COMMAND : 1 << (46*8+5),
|
||||||
HCI_LE_READ_CHANNEL_MAP_COMMAND,
|
HCI_LE_SET_PERIODIC_ADVERTISING_RESPONSE_DATA_COMMAND : 1 << (46*8+6),
|
||||||
HCI_LE_READ_REMOTE_FEATURES_COMMAND,
|
HCI_LE_SET_PERIODIC_SYNC_SUBEVENT_COMMAND : 1 << (46*8+7),
|
||||||
HCI_LE_ENCRYPT_COMMAND,
|
HCI_LE_EXTENDED_CREATE_CONNECTION_V2_COMMAND : 1 << (47*8+0),
|
||||||
HCI_LE_RAND_COMMAND
|
HCI_LE_SET_PERIODIC_ADVERTISING_PARAMETERS_V2_COMMAND : 1 << (47*8+1),
|
||||||
),
|
}
|
||||||
# Octet 28
|
|
||||||
(
|
|
||||||
HCI_LE_ENABLE_ENCRYPTION_COMMAND,
|
|
||||||
HCI_LE_LONG_TERM_KEY_REQUEST_REPLY_COMMAND,
|
|
||||||
HCI_LE_LONG_TERM_KEY_REQUEST_NEGATIVE_REPLY_COMMAND,
|
|
||||||
HCI_LE_READ_SUPPORTED_STATES_COMMAND,
|
|
||||||
HCI_LE_RECEIVER_TEST_COMMAND,
|
|
||||||
HCI_LE_TRANSMITTER_TEST_COMMAND,
|
|
||||||
HCI_LE_TEST_END_COMMAND,
|
|
||||||
None,
|
|
||||||
),
|
|
||||||
# Octet 29
|
|
||||||
(
|
|
||||||
None,
|
|
||||||
None,
|
|
||||||
None,
|
|
||||||
HCI_ENHANCED_SETUP_SYNCHRONOUS_CONNECTION_COMMAND,
|
|
||||||
HCI_ENHANCED_ACCEPT_SYNCHRONOUS_CONNECTION_REQUEST_COMMAND,
|
|
||||||
HCI_READ_LOCAL_SUPPORTED_CODECS_COMMAND,
|
|
||||||
HCI_SET_MWS_CHANNEL_PARAMETERS_COMMAND,
|
|
||||||
HCI_SET_EXTERNAL_FRAME_CONFIGURATION_COMMAND
|
|
||||||
),
|
|
||||||
# Octet 30
|
|
||||||
(
|
|
||||||
HCI_SET_MWS_SIGNALING_COMMAND,
|
|
||||||
HCI_SET_MWS_TRANSPORT_LAYER_COMMAND,
|
|
||||||
HCI_SET_MWS_SCAN_FREQUENCY_TABLE_COMMAND,
|
|
||||||
HCI_GET_MWS_TRANSPORT_LAYER_CONFIGURATION_COMMAND,
|
|
||||||
HCI_SET_MWS_PATTERN_CONFIGURATION_COMMAND,
|
|
||||||
HCI_SET_TRIGGERED_CLOCK_CAPTURE_COMMAND,
|
|
||||||
HCI_TRUNCATED_PAGE_COMMAND,
|
|
||||||
HCI_TRUNCATED_PAGE_CANCEL_COMMAND
|
|
||||||
),
|
|
||||||
# Octet 31
|
|
||||||
(
|
|
||||||
HCI_SET_CONNECTIONLESS_PERIPHERAL_BROADCAST_COMMAND,
|
|
||||||
HCI_SET_CONNECTIONLESS_PERIPHERAL_BROADCAST_RECEIVE_COMMAND,
|
|
||||||
HCI_START_SYNCHRONIZATION_TRAIN_COMMAND,
|
|
||||||
HCI_RECEIVE_SYNCHRONIZATION_TRAIN_COMMAND,
|
|
||||||
HCI_SET_RESERVED_LT_ADDR_COMMAND,
|
|
||||||
HCI_DELETE_RESERVED_LT_ADDR_COMMAND,
|
|
||||||
HCI_SET_CONNECTIONLESS_PERIPHERAL_BROADCAST_DATA_COMMAND,
|
|
||||||
HCI_READ_SYNCHRONIZATION_TRAIN_PARAMETERS_COMMAND
|
|
||||||
),
|
|
||||||
# Octet 32
|
|
||||||
(
|
|
||||||
HCI_WRITE_SYNCHRONIZATION_TRAIN_PARAMETERS_COMMAND,
|
|
||||||
HCI_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY_COMMAND,
|
|
||||||
HCI_READ_SECURE_CONNECTIONS_HOST_SUPPORT_COMMAND,
|
|
||||||
HCI_WRITE_SECURE_CONNECTIONS_HOST_SUPPORT_COMMAND,
|
|
||||||
HCI_READ_AUTHENTICATED_PAYLOAD_TIMEOUT_COMMAND,
|
|
||||||
HCI_WRITE_AUTHENTICATED_PAYLOAD_TIMEOUT_COMMAND,
|
|
||||||
HCI_READ_LOCAL_OOB_EXTENDED_DATA_COMMAND,
|
|
||||||
HCI_WRITE_SECURE_CONNECTIONS_TEST_MODE_COMMAND
|
|
||||||
),
|
|
||||||
# Octet 33
|
|
||||||
(
|
|
||||||
HCI_READ_EXTENDED_PAGE_TIMEOUT_COMMAND,
|
|
||||||
HCI_WRITE_EXTENDED_PAGE_TIMEOUT_COMMAND,
|
|
||||||
HCI_READ_EXTENDED_INQUIRY_LENGTH_COMMAND,
|
|
||||||
HCI_WRITE_EXTENDED_INQUIRY_LENGTH_COMMAND,
|
|
||||||
HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_REPLY_COMMAND,
|
|
||||||
HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_NEGATIVE_REPLY_COMMAND,
|
|
||||||
HCI_LE_SET_DATA_LENGTH_COMMAND,
|
|
||||||
HCI_LE_READ_SUGGESTED_DEFAULT_DATA_LENGTH_COMMAND
|
|
||||||
),
|
|
||||||
# Octet 34
|
|
||||||
(
|
|
||||||
HCI_LE_WRITE_SUGGESTED_DEFAULT_DATA_LENGTH_COMMAND,
|
|
||||||
HCI_LE_READ_LOCAL_P_256_PUBLIC_KEY_COMMAND,
|
|
||||||
HCI_LE_GENERATE_DHKEY_COMMAND,
|
|
||||||
HCI_LE_ADD_DEVICE_TO_RESOLVING_LIST_COMMAND,
|
|
||||||
HCI_LE_REMOVE_DEVICE_FROM_RESOLVING_LIST_COMMAND,
|
|
||||||
HCI_LE_CLEAR_RESOLVING_LIST_COMMAND,
|
|
||||||
HCI_LE_READ_RESOLVING_LIST_SIZE_COMMAND,
|
|
||||||
HCI_LE_READ_PEER_RESOLVABLE_ADDRESS_COMMAND
|
|
||||||
),
|
|
||||||
# Octet 35
|
|
||||||
(
|
|
||||||
HCI_LE_READ_LOCAL_RESOLVABLE_ADDRESS_COMMAND,
|
|
||||||
HCI_LE_SET_ADDRESS_RESOLUTION_ENABLE_COMMAND,
|
|
||||||
HCI_LE_SET_RESOLVABLE_PRIVATE_ADDRESS_TIMEOUT_COMMAND,
|
|
||||||
HCI_LE_READ_MAXIMUM_DATA_LENGTH_COMMAND,
|
|
||||||
HCI_LE_READ_PHY_COMMAND,
|
|
||||||
HCI_LE_SET_DEFAULT_PHY_COMMAND,
|
|
||||||
HCI_LE_SET_PHY_COMMAND,
|
|
||||||
HCI_LE_RECEIVER_TEST_V2_COMMAND
|
|
||||||
),
|
|
||||||
# Octet 36
|
|
||||||
(
|
|
||||||
HCI_LE_TRANSMITTER_TEST_V2_COMMAND,
|
|
||||||
HCI_LE_SET_ADVERTISING_SET_RANDOM_ADDRESS_COMMAND,
|
|
||||||
HCI_LE_SET_EXTENDED_ADVERTISING_PARAMETERS_COMMAND,
|
|
||||||
HCI_LE_SET_EXTENDED_ADVERTISING_DATA_COMMAND,
|
|
||||||
HCI_LE_SET_EXTENDED_SCAN_RESPONSE_DATA_COMMAND,
|
|
||||||
HCI_LE_SET_EXTENDED_ADVERTISING_ENABLE_COMMAND,
|
|
||||||
HCI_LE_READ_MAXIMUM_ADVERTISING_DATA_LENGTH_COMMAND,
|
|
||||||
HCI_LE_READ_NUMBER_OF_SUPPORTED_ADVERTISING_SETS_COMMAND,
|
|
||||||
),
|
|
||||||
# Octet 37
|
|
||||||
(
|
|
||||||
HCI_LE_REMOVE_ADVERTISING_SET_COMMAND,
|
|
||||||
HCI_LE_CLEAR_ADVERTISING_SETS_COMMAND,
|
|
||||||
HCI_LE_SET_PERIODIC_ADVERTISING_PARAMETERS_COMMAND,
|
|
||||||
HCI_LE_SET_PERIODIC_ADVERTISING_DATA_COMMAND,
|
|
||||||
HCI_LE_SET_PERIODIC_ADVERTISING_ENABLE_COMMAND,
|
|
||||||
HCI_LE_SET_EXTENDED_SCAN_PARAMETERS_COMMAND,
|
|
||||||
HCI_LE_SET_EXTENDED_SCAN_ENABLE_COMMAND,
|
|
||||||
HCI_LE_EXTENDED_CREATE_CONNECTION_COMMAND
|
|
||||||
),
|
|
||||||
# Octet 38
|
|
||||||
(
|
|
||||||
HCI_LE_PERIODIC_ADVERTISING_CREATE_SYNC_COMMAND,
|
|
||||||
HCI_LE_PERIODIC_ADVERTISING_CREATE_SYNC_CANCEL_COMMAND,
|
|
||||||
HCI_LE_PERIODIC_ADVERTISING_TERMINATE_SYNC_COMMAND,
|
|
||||||
HCI_LE_ADD_DEVICE_TO_PERIODIC_ADVERTISER_LIST_COMMAND,
|
|
||||||
HCI_LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISER_LIST_COMMAND,
|
|
||||||
HCI_LE_CLEAR_PERIODIC_ADVERTISER_LIST_COMMAND,
|
|
||||||
HCI_LE_READ_PERIODIC_ADVERTISER_LIST_SIZE_COMMAND,
|
|
||||||
HCI_LE_READ_TRANSMIT_POWER_COMMAND
|
|
||||||
),
|
|
||||||
# Octet 39
|
|
||||||
(
|
|
||||||
HCI_LE_READ_RF_PATH_COMPENSATION_COMMAND,
|
|
||||||
HCI_LE_WRITE_RF_PATH_COMPENSATION_COMMAND,
|
|
||||||
HCI_LE_SET_PRIVACY_MODE_COMMAND,
|
|
||||||
HCI_LE_RECEIVER_TEST_V3_COMMAND,
|
|
||||||
HCI_LE_TRANSMITTER_TEST_V3_COMMAND,
|
|
||||||
HCI_LE_SET_CONNECTIONLESS_CTE_TRANSMIT_PARAMETERS_COMMAND,
|
|
||||||
HCI_LE_SET_CONNECTIONLESS_CTE_TRANSMIT_ENABLE_COMMAND,
|
|
||||||
HCI_LE_SET_CONNECTIONLESS_IQ_SAMPLING_ENABLE_COMMAND,
|
|
||||||
),
|
|
||||||
# Octet 40
|
|
||||||
(
|
|
||||||
HCI_LE_SET_CONNECTION_CTE_RECEIVE_PARAMETERS_COMMAND,
|
|
||||||
HCI_LE_SET_CONNECTION_CTE_TRANSMIT_PARAMETERS_COMMAND,
|
|
||||||
HCI_LE_CONNECTION_CTE_REQUEST_ENABLE_COMMAND,
|
|
||||||
HCI_LE_CONNECTION_CTE_RESPONSE_ENABLE_COMMAND,
|
|
||||||
HCI_LE_READ_ANTENNA_INFORMATION_COMMAND,
|
|
||||||
HCI_LE_SET_PERIODIC_ADVERTISING_RECEIVE_ENABLE_COMMAND,
|
|
||||||
HCI_LE_PERIODIC_ADVERTISING_SYNC_TRANSFER_COMMAND,
|
|
||||||
HCI_LE_PERIODIC_ADVERTISING_SET_INFO_TRANSFER_COMMAND
|
|
||||||
),
|
|
||||||
# Octet 41
|
|
||||||
(
|
|
||||||
HCI_LE_SET_PERIODIC_ADVERTISING_SYNC_TRANSFER_PARAMETERS_COMMAND,
|
|
||||||
HCI_LE_SET_DEFAULT_PERIODIC_ADVERTISING_SYNC_TRANSFER_PARAMETERS_COMMAND,
|
|
||||||
HCI_LE_GENERATE_DHKEY_V2_COMMAND,
|
|
||||||
HCI_READ_LOCAL_SIMPLE_PAIRING_OPTIONS_COMMAND,
|
|
||||||
HCI_LE_MODIFY_SLEEP_CLOCK_ACCURACY_COMMAND,
|
|
||||||
HCI_LE_READ_BUFFER_SIZE_V2_COMMAND,
|
|
||||||
HCI_LE_READ_ISO_TX_SYNC_COMMAND,
|
|
||||||
HCI_LE_SET_CIG_PARAMETERS_COMMAND
|
|
||||||
),
|
|
||||||
# Octet 42
|
|
||||||
(
|
|
||||||
HCI_LE_SET_CIG_PARAMETERS_TEST_COMMAND,
|
|
||||||
HCI_LE_CREATE_CIS_COMMAND,
|
|
||||||
HCI_LE_REMOVE_CIG_COMMAND,
|
|
||||||
HCI_LE_ACCEPT_CIS_REQUEST_COMMAND,
|
|
||||||
HCI_LE_REJECT_CIS_REQUEST_COMMAND,
|
|
||||||
HCI_LE_CREATE_BIG_COMMAND,
|
|
||||||
HCI_LE_CREATE_BIG_TEST_COMMAND,
|
|
||||||
HCI_LE_TERMINATE_BIG_COMMAND,
|
|
||||||
),
|
|
||||||
# Octet 43
|
|
||||||
(
|
|
||||||
HCI_LE_BIG_CREATE_SYNC_COMMAND,
|
|
||||||
HCI_LE_BIG_TERMINATE_SYNC_COMMAND,
|
|
||||||
HCI_LE_REQUEST_PEER_SCA_COMMAND,
|
|
||||||
HCI_LE_SETUP_ISO_DATA_PATH_COMMAND,
|
|
||||||
HCI_LE_REMOVE_ISO_DATA_PATH_COMMAND,
|
|
||||||
HCI_LE_ISO_TRANSMIT_TEST_COMMAND,
|
|
||||||
HCI_LE_ISO_RECEIVE_TEST_COMMAND,
|
|
||||||
HCI_LE_ISO_READ_TEST_COUNTERS_COMMAND
|
|
||||||
),
|
|
||||||
# Octet 44
|
|
||||||
(
|
|
||||||
HCI_LE_ISO_TEST_END_COMMAND,
|
|
||||||
HCI_LE_SET_HOST_FEATURE_COMMAND,
|
|
||||||
HCI_LE_READ_ISO_LINK_QUALITY_COMMAND,
|
|
||||||
HCI_LE_ENHANCED_READ_TRANSMIT_POWER_LEVEL_COMMAND,
|
|
||||||
HCI_LE_READ_REMOTE_TRANSMIT_POWER_LEVEL_COMMAND,
|
|
||||||
HCI_LE_SET_PATH_LOSS_REPORTING_PARAMETERS_COMMAND,
|
|
||||||
HCI_LE_SET_PATH_LOSS_REPORTING_ENABLE_COMMAND,
|
|
||||||
HCI_LE_SET_TRANSMIT_POWER_REPORTING_ENABLE_COMMAND
|
|
||||||
),
|
|
||||||
# Octet 45
|
|
||||||
(
|
|
||||||
HCI_LE_TRANSMITTER_TEST_V4_COMMAND,
|
|
||||||
HCI_SET_ECOSYSTEM_BASE_INTERVAL_COMMAND,
|
|
||||||
HCI_READ_LOCAL_SUPPORTED_CODECS_V2_COMMAND,
|
|
||||||
HCI_READ_LOCAL_SUPPORTED_CODEC_CAPABILITIES_COMMAND,
|
|
||||||
HCI_READ_LOCAL_SUPPORTED_CONTROLLER_DELAY_COMMAND,
|
|
||||||
HCI_CONFIGURE_DATA_PATH_COMMAND,
|
|
||||||
HCI_LE_SET_DATA_RELATED_ADDRESS_CHANGES_COMMAND,
|
|
||||||
HCI_SET_MIN_ENCRYPTION_KEY_SIZE_COMMAND
|
|
||||||
),
|
|
||||||
# Octet 46
|
|
||||||
(
|
|
||||||
HCI_LE_SET_DEFAULT_SUBRATE_COMMAND,
|
|
||||||
HCI_LE_SUBRATE_REQUEST_COMMAND,
|
|
||||||
HCI_LE_SET_EXTENDED_ADVERTISING_PARAMETERS_V2_COMMAND,
|
|
||||||
None,
|
|
||||||
None,
|
|
||||||
HCI_LE_SET_PERIODIC_ADVERTISING_SUBEVENT_DATA_COMMAND,
|
|
||||||
HCI_LE_SET_PERIODIC_ADVERTISING_RESPONSE_DATA_COMMAND,
|
|
||||||
HCI_LE_SET_PERIODIC_SYNC_SUBEVENT_COMMAND
|
|
||||||
),
|
|
||||||
# Octet 47
|
|
||||||
(
|
|
||||||
HCI_LE_EXTENDED_CREATE_CONNECTION_V2_COMMAND,
|
|
||||||
HCI_LE_SET_PERIODIC_ADVERTISING_PARAMETERS_V2_COMMAND,
|
|
||||||
None,
|
|
||||||
None,
|
|
||||||
None,
|
|
||||||
None,
|
|
||||||
None,
|
|
||||||
None,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
# LE Supported Features
|
# LE Supported Features
|
||||||
# See Bluetooth spec @ Vol 6, Part B, 4.6 FEATURE SUPPORT
|
# See Bluetooth spec @ Vol 6, Part B, 4.6 FEATURE SUPPORT
|
||||||
|
|||||||
@@ -22,7 +22,17 @@ import dataclasses
|
|||||||
import logging
|
import logging
|
||||||
import struct
|
import struct
|
||||||
|
|
||||||
from typing import Any, Awaitable, Callable, Deque, Dict, Optional, cast, TYPE_CHECKING
|
from typing import (
|
||||||
|
Any,
|
||||||
|
Awaitable,
|
||||||
|
Callable,
|
||||||
|
Deque,
|
||||||
|
Dict,
|
||||||
|
Optional,
|
||||||
|
Set,
|
||||||
|
cast,
|
||||||
|
TYPE_CHECKING,
|
||||||
|
)
|
||||||
|
|
||||||
from bumble.colors import color
|
from bumble.colors import color
|
||||||
from bumble.l2cap import L2CAP_PDU
|
from bumble.l2cap import L2CAP_PDU
|
||||||
@@ -165,7 +175,7 @@ class Host(AbortableEventEmitter):
|
|||||||
self.number_of_supported_advertising_sets = 0
|
self.number_of_supported_advertising_sets = 0
|
||||||
self.maximum_advertising_data_length = 31
|
self.maximum_advertising_data_length = 31
|
||||||
self.local_version = None
|
self.local_version = None
|
||||||
self.local_supported_commands = bytes(64)
|
self.local_supported_commands = 0
|
||||||
self.local_le_features = 0
|
self.local_le_features = 0
|
||||||
self.local_lmp_features = hci.LmpFeatureMask(0) # Classic LMP features
|
self.local_lmp_features = hci.LmpFeatureMask(0) # Classic LMP features
|
||||||
self.suggested_max_tx_octets = 251 # Max allowed
|
self.suggested_max_tx_octets = 251 # Max allowed
|
||||||
@@ -232,7 +242,9 @@ class Host(AbortableEventEmitter):
|
|||||||
response = await self.send_command(
|
response = await self.send_command(
|
||||||
hci.HCI_Read_Local_Supported_Commands_Command(), check_result=True
|
hci.HCI_Read_Local_Supported_Commands_Command(), check_result=True
|
||||||
)
|
)
|
||||||
self.local_supported_commands = response.return_parameters.supported_commands
|
self.local_supported_commands = int.from_bytes(
|
||||||
|
response.return_parameters.supported_commands, 'little'
|
||||||
|
)
|
||||||
|
|
||||||
if self.supports_command(hci.HCI_LE_READ_LOCAL_SUPPORTED_FEATURES_COMMAND):
|
if self.supports_command(hci.HCI_LE_READ_LOCAL_SUPPORTED_FEATURES_COMMAND):
|
||||||
response = await self.send_command(
|
response = await self.send_command(
|
||||||
@@ -583,31 +595,19 @@ class Host(AbortableEventEmitter):
|
|||||||
offset += data_total_length
|
offset += data_total_length
|
||||||
bytes_remaining -= data_total_length
|
bytes_remaining -= data_total_length
|
||||||
|
|
||||||
def supports_command(self, command):
|
def supports_command(self, op_code: int) -> bool:
|
||||||
# Find the support flag position for this command
|
return (
|
||||||
for octet, flags in enumerate(hci.HCI_SUPPORTED_COMMANDS_FLAGS):
|
self.local_supported_commands
|
||||||
for flag_position, value in enumerate(flags):
|
& hci.HCI_SUPPORTED_COMMANDS_MASKS.get(op_code, 0)
|
||||||
if value == command:
|
) != 0
|
||||||
# Check if the flag is set
|
|
||||||
if octet < len(self.local_supported_commands) and flag_position < 8:
|
|
||||||
return (
|
|
||||||
self.local_supported_commands[octet] & (1 << flag_position)
|
|
||||||
) != 0
|
|
||||||
|
|
||||||
return False
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def supported_commands(self):
|
def supported_commands(self) -> Set[int]:
|
||||||
commands = []
|
return set(
|
||||||
for octet, flags in enumerate(self.local_supported_commands):
|
op_code
|
||||||
if octet < len(hci.HCI_SUPPORTED_COMMANDS_FLAGS):
|
for op_code, mask in hci.HCI_SUPPORTED_COMMANDS_MASKS.items()
|
||||||
for flag in range(8):
|
if self.local_supported_commands & mask
|
||||||
if flags & (1 << flag) != 0:
|
)
|
||||||
command = hci.HCI_SUPPORTED_COMMANDS_FLAGS[octet][flag]
|
|
||||||
if command is not None:
|
|
||||||
commands.append(command)
|
|
||||||
|
|
||||||
return commands
|
|
||||||
|
|
||||||
def supports_le_features(self, feature: hci.LeFeatureMask) -> bool:
|
def supports_le_features(self, feature: hci.LeFeatureMask) -> bool:
|
||||||
return (self.local_le_features & feature) == feature
|
return (self.local_le_features & feature) == feature
|
||||||
|
|||||||
Reference in New Issue
Block a user