mirror of
https://github.com/google/bumble.git
synced 2026-05-08 03:58:01 +00:00
add test
This commit is contained in:
@@ -5167,7 +5167,7 @@ class HCI_Event(HCI_Packet):
|
|||||||
|
|
||||||
# No factory, or the factory could not create an instance,
|
# No factory, or the factory could not create an instance,
|
||||||
# return a generic vendor event
|
# return a generic vendor event
|
||||||
return HCI_Event(event_code, parameters)
|
return HCI_Vendor_Event(data=parameters)
|
||||||
else:
|
else:
|
||||||
subclass = HCI_Event.event_classes.get(event_code)
|
subclass = HCI_Event.event_classes.get(event_code)
|
||||||
if subclass is None:
|
if subclass is None:
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# Imports
|
# Imports
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
|
import struct
|
||||||
|
|
||||||
from bumble.hci import (
|
from bumble.hci import (
|
||||||
HCI_DISCONNECT_COMMAND,
|
HCI_DISCONNECT_COMMAND,
|
||||||
@@ -22,6 +23,7 @@ from bumble.hci import (
|
|||||||
HCI_LE_CODED_PHY_BIT,
|
HCI_LE_CODED_PHY_BIT,
|
||||||
HCI_LE_READ_BUFFER_SIZE_COMMAND,
|
HCI_LE_READ_BUFFER_SIZE_COMMAND,
|
||||||
HCI_RESET_COMMAND,
|
HCI_RESET_COMMAND,
|
||||||
|
HCI_VENDOR_EVENT,
|
||||||
HCI_SUCCESS,
|
HCI_SUCCESS,
|
||||||
HCI_LE_CONNECTION_COMPLETE_EVENT,
|
HCI_LE_CONNECTION_COMPLETE_EVENT,
|
||||||
HCI_LE_ENHANCED_CONNECTION_COMPLETE_V2_EVENT,
|
HCI_LE_ENHANCED_CONNECTION_COMPLETE_V2_EVENT,
|
||||||
@@ -67,6 +69,7 @@ from bumble.hci import (
|
|||||||
HCI_Read_Local_Version_Information_Command,
|
HCI_Read_Local_Version_Information_Command,
|
||||||
HCI_Reset_Command,
|
HCI_Reset_Command,
|
||||||
HCI_Set_Event_Mask_Command,
|
HCI_Set_Event_Mask_Command,
|
||||||
|
HCI_Vendor_Event,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -213,6 +216,41 @@ def test_HCI_Number_Of_Completed_Packets_Event():
|
|||||||
basic_check(event)
|
basic_check(event)
|
||||||
|
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
def test_HCI_Vendor_Event():
|
||||||
|
data = bytes.fromhex('01020304')
|
||||||
|
event = HCI_Vendor_Event(data=data)
|
||||||
|
event_bytes = bytes(event)
|
||||||
|
parsed = HCI_Packet.from_bytes(event_bytes)
|
||||||
|
assert isinstance(parsed, HCI_Vendor_Event)
|
||||||
|
assert parsed.data == data
|
||||||
|
|
||||||
|
class HCI_Custom_Event(HCI_Event):
|
||||||
|
def __init__(self, blabla):
|
||||||
|
super().__init__(HCI_VENDOR_EVENT, parameters=struct.pack("<I", blabla))
|
||||||
|
self.name = 'HCI_CUSTOM_EVENT'
|
||||||
|
self.blabla = blabla
|
||||||
|
|
||||||
|
def create_event(payload):
|
||||||
|
if payload[0] == 1:
|
||||||
|
return HCI_Custom_Event(blabla=struct.unpack('<I', payload)[0])
|
||||||
|
return None
|
||||||
|
|
||||||
|
HCI_Event.add_vendor_factory(create_event)
|
||||||
|
parsed = HCI_Packet.from_bytes(event_bytes)
|
||||||
|
assert isinstance(parsed, HCI_Custom_Event)
|
||||||
|
assert parsed.blabla == 0x04030201
|
||||||
|
event_bytes2 = event_bytes[:3] + bytes([7]) + event_bytes[4:]
|
||||||
|
parsed = HCI_Packet.from_bytes(event_bytes2)
|
||||||
|
assert not isinstance(parsed, HCI_Custom_Event)
|
||||||
|
assert isinstance(parsed, HCI_Vendor_Event)
|
||||||
|
HCI_Event.remove_vendor_factory(create_event)
|
||||||
|
|
||||||
|
parsed = HCI_Packet.from_bytes(event_bytes)
|
||||||
|
assert not isinstance(parsed, HCI_Custom_Event)
|
||||||
|
assert isinstance(parsed, HCI_Vendor_Event)
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
def test_HCI_Command():
|
def test_HCI_Command():
|
||||||
command = HCI_Command(0x5566)
|
command = HCI_Command(0x5566)
|
||||||
@@ -576,6 +614,7 @@ def run_test_events():
|
|||||||
test_HCI_Command_Complete_Event()
|
test_HCI_Command_Complete_Event()
|
||||||
test_HCI_Command_Status_Event()
|
test_HCI_Command_Status_Event()
|
||||||
test_HCI_Number_Of_Completed_Packets_Event()
|
test_HCI_Number_Of_Completed_Packets_Event()
|
||||||
|
test_HCI_Vendor_Event()
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user