1*cf78ab8cSAndroid Build Coastguard Worker"""BLE GATT connection test.""" 2*cf78ab8cSAndroid Build Coastguard Worker 3*cf78ab8cSAndroid Build Coastguard Workerimport ble_utils 4*cf78ab8cSAndroid Build Coastguard Workerfrom mobly import base_test 5*cf78ab8cSAndroid Build Coastguard Workerfrom mobly import test_runner 6*cf78ab8cSAndroid Build Coastguard Workerfrom mobly.controllers import android_device 7*cf78ab8cSAndroid Build Coastguard Worker 8*cf78ab8cSAndroid Build Coastguard Worker 9*cf78ab8cSAndroid Build Coastguard Workerclass BleBasicTest(base_test.BaseTestClass): 10*cf78ab8cSAndroid Build Coastguard Worker """Tests the basic E2E connection flow for BLE.""" 11*cf78ab8cSAndroid Build Coastguard Worker 12*cf78ab8cSAndroid Build Coastguard Worker def setup_class(self): 13*cf78ab8cSAndroid Build Coastguard Worker self.ads = self.register_controller(android_device, min_number=2) 14*cf78ab8cSAndroid Build Coastguard Worker for device in self.ads: 15*cf78ab8cSAndroid Build Coastguard Worker device.load_snippet('mbs', android_device.MBS_PACKAGE) 16*cf78ab8cSAndroid Build Coastguard Worker device.mbs.btEnable() 17*cf78ab8cSAndroid Build Coastguard Worker self.initiator, self.receiver = self.ads[:2] 18*cf78ab8cSAndroid Build Coastguard Worker # The initiator device scans BLE devices and behaves as a GATT client. 19*cf78ab8cSAndroid Build Coastguard Worker self.initiator.debug_tag = 'initiator' 20*cf78ab8cSAndroid Build Coastguard Worker # The receiver device advertises and behaves as a GATT server. 21*cf78ab8cSAndroid Build Coastguard Worker self.receiver.debug_tag = 'receiver' 22*cf78ab8cSAndroid Build Coastguard Worker 23*cf78ab8cSAndroid Build Coastguard Worker def test_ble_gatt_read_write(self): 24*cf78ab8cSAndroid Build Coastguard Worker """Test for making a GATT connection and reading and writing messages. 25*cf78ab8cSAndroid Build Coastguard Worker 26*cf78ab8cSAndroid Build Coastguard Worker Steps: 27*cf78ab8cSAndroid Build Coastguard Worker 1. Starts BLE scan and advertising, and complete the discovery process. 28*cf78ab8cSAndroid Build Coastguard Worker 2. Initiator connects to receiver. 29*cf78ab8cSAndroid Build Coastguard Worker 3. Initiator discovers the BLE service receiver provided. 30*cf78ab8cSAndroid Build Coastguard Worker 4. Initiator reads a message from receiver. 31*cf78ab8cSAndroid Build Coastguard Worker 5. Initiator sends a message to receiver. 32*cf78ab8cSAndroid Build Coastguard Worker 6. Initiator disconnects from receiver. 33*cf78ab8cSAndroid Build Coastguard Worker 7. BLE scan and advertising stopped. 34*cf78ab8cSAndroid Build Coastguard Worker 35*cf78ab8cSAndroid Build Coastguard Worker Verifies: 36*cf78ab8cSAndroid Build Coastguard Worker In each step, initiator and receiver get corresponding callbacks. 37*cf78ab8cSAndroid Build Coastguard Worker """ 38*cf78ab8cSAndroid Build Coastguard Worker ble_utils.Discover(self.initiator, self.receiver) 39*cf78ab8cSAndroid Build Coastguard Worker ble_utils.Connect(self.initiator, self.receiver) 40*cf78ab8cSAndroid Build Coastguard Worker ble_utils.DiscoverServices(self.initiator) 41*cf78ab8cSAndroid Build Coastguard Worker ble_utils.ReadCharacteristic(self.initiator) 42*cf78ab8cSAndroid Build Coastguard Worker ble_utils.WriteCharacteristic(self.initiator, self.receiver) 43*cf78ab8cSAndroid Build Coastguard Worker ble_utils.Disconnect(self.initiator, self.receiver) 44*cf78ab8cSAndroid Build Coastguard Worker ble_utils.StopDiscover(self.initiator, self.receiver) 45*cf78ab8cSAndroid Build Coastguard Worker 46*cf78ab8cSAndroid Build Coastguard Worker 47*cf78ab8cSAndroid Build Coastguard Workerif __name__ == '__main__': 48*cf78ab8cSAndroid Build Coastguard Worker test_runner.main() 49