From 584c0b2aacbbb83f6dd76f2dc0385356c1300409 Mon Sep 17 00:00:00 2001 From: Zach Johnson Date: Sat, 14 Nov 2020 15:00:43 -0800 Subject: [PATCH] Simplify le connection logic for SimpleHalTest Bug: 171749953 Tag: #gd-refactor Test: gd/cert/run --host Change-Id: I1fb172f75ccd01fd449af2748ea9885991822594 --- gd/cert/py_hal.py | 34 ++++++++++++++++++++++++++++++++++ gd/hal/cert/simple_hal_test.py | 32 +++----------------------------- 2 files changed, 37 insertions(+), 29 deletions(-) diff --git a/gd/cert/py_hal.py b/gd/cert/py_hal.py index 8c95b1aee..1b7e53d0d 100644 --- a/gd/cert/py_hal.py +++ b/gd/cert/py_hal.py @@ -180,6 +180,40 @@ class PyHal(Closable): handle = connection_complete.get().GetConnectionHandle() return PyHalAclConnection(handle, self.acl_stream, self.device) + def initiate_le_connection(self, remote_addr): + phy_scan_params = hci_packets.LeCreateConnPhyScanParameters() + phy_scan_params.scan_interval = 0x60 + phy_scan_params.scan_window = 0x30 + phy_scan_params.conn_interval_min = 0x18 + phy_scan_params.conn_interval_max = 0x28 + phy_scan_params.conn_latency = 0 + phy_scan_params.supervision_timeout = 0x1f4 + phy_scan_params.min_ce_length = 0 + phy_scan_params.max_ce_length = 0 + self.send_hci_command( + hci_packets.LeExtendedCreateConnectionBuilder( + hci_packets.InitiatorFilterPolicy.USE_PEER_ADDRESS, hci_packets.OwnAddressType.RANDOM_DEVICE_ADDRESS, + hci_packets.AddressType.RANDOM_DEVICE_ADDRESS, remote_addr, 1, [phy_scan_params])) + + def add_to_connect_list(self, remote_addr): + self.send_hci_command( + hci_packets.LeAddDeviceToConnectListBuilder(hci_packets.ConnectListAddressType.RANDOM, remote_addr)) + + def initiate_le_connection_by_connect_list(self, remote_addr): + phy_scan_params = hci_packets.LeCreateConnPhyScanParameters() + phy_scan_params.scan_interval = 0x60 + phy_scan_params.scan_window = 0x30 + phy_scan_params.conn_interval_min = 0x18 + phy_scan_params.conn_interval_max = 0x28 + phy_scan_params.conn_latency = 0 + phy_scan_params.supervision_timeout = 0x1f4 + phy_scan_params.min_ce_length = 0 + phy_scan_params.max_ce_length = 0 + self.send_hci_command( + hci_packets.LeExtendedCreateConnectionBuilder( + hci_packets.InitiatorFilterPolicy.USE_CONNECT_LIST, hci_packets.OwnAddressType.RANDOM_DEVICE_ADDRESS, + hci_packets.AddressType.RANDOM_DEVICE_ADDRESS, remote_addr, 1, [phy_scan_params])) + def complete_le_connection(self): connection_complete = HciCaptures.LeConnectionCompleteCapture() assertThat(self.hci_event_stream).emits(connection_complete) diff --git a/gd/hal/cert/simple_hal_test.py b/gd/hal/cert/simple_hal_test.py index f0666034c..862cd8c8e 100644 --- a/gd/hal/cert/simple_hal_test.py +++ b/gd/hal/cert/simple_hal_test.py @@ -117,19 +117,7 @@ class SimpleHalTest(GdBaseTestClass): def test_le_connection_dut_advertises(self): # Cert Connects self.cert_hal.send_hci_command(hci_packets.LeSetRandomAddressBuilder('0C:05:04:03:02:01')) - phy_scan_params = hci_packets.LeCreateConnPhyScanParameters() - phy_scan_params.scan_interval = 0x60 - phy_scan_params.scan_window = 0x30 - phy_scan_params.conn_interval_min = 0x18 - phy_scan_params.conn_interval_max = 0x28 - phy_scan_params.conn_latency = 0 - phy_scan_params.supervision_timeout = 0x1f4 - phy_scan_params.min_ce_length = 0 - phy_scan_params.max_ce_length = 0 - self.cert_hal.send_hci_command( - hci_packets.LeExtendedCreateConnectionBuilder( - hci_packets.InitiatorFilterPolicy.USE_PEER_ADDRESS, hci_packets.OwnAddressType.RANDOM_DEVICE_ADDRESS, - hci_packets.AddressType.RANDOM_DEVICE_ADDRESS, '0D:05:04:03:02:01', 1, [phy_scan_params])) + self.cert_hal.initiate_le_connection('0D:05:04:03:02:01') # DUT Advertises advertisement = self.dut_hal.create_advertisement(0, '0D:05:04:03:02:01') @@ -147,23 +135,9 @@ class SimpleHalTest(GdBaseTestClass): assertThat(self.dut_hal.get_acl_stream()).emits(lambda packet: b'SomeMoreAclData' in packet.payload) def test_le_connect_list_connection_cert_advertises(self): - # DUT Connects self.dut_hal.send_hci_command(hci_packets.LeSetRandomAddressBuilder('0D:05:04:03:02:01')) - self.dut_hal.send_hci_command( - hci_packets.LeAddDeviceToConnectListBuilder(hci_packets.ConnectListAddressType.RANDOM, '0C:05:04:03:02:01')) - phy_scan_params = hci_packets.LeCreateConnPhyScanParameters() - phy_scan_params.scan_interval = 0x60 - phy_scan_params.scan_window = 0x30 - phy_scan_params.conn_interval_min = 0x18 - phy_scan_params.conn_interval_max = 0x28 - phy_scan_params.conn_latency = 0 - phy_scan_params.supervision_timeout = 0x1f4 - phy_scan_params.min_ce_length = 0 - phy_scan_params.max_ce_length = 0 - self.dut_hal.send_hci_command( - hci_packets.LeExtendedCreateConnectionBuilder( - hci_packets.InitiatorFilterPolicy.USE_CONNECT_LIST, hci_packets.OwnAddressType.RANDOM_DEVICE_ADDRESS, - hci_packets.AddressType.RANDOM_DEVICE_ADDRESS, 'BA:D5:A4:A3:A2:A1', 1, [phy_scan_params])) + self.dut_hal.add_to_connect_list('0C:05:04:03:02:01') + self.dut_hal.initiate_le_connection_by_connect_list('BA:D5:A4:A3:A2:A1') advertisement = self.cert_hal.create_advertisement( 1, -- 2.11.0