1 # Copyright (c) 2015 The Chromium OS Authors. All rights reserved. 2 # Use of this source code is governed by a BSD-style license that can be 3 # found in the LICENSE file. 4 5 import common 6 from autotest_lib.client.cros.cellular.mbim_compliance import mbim_constants 7 from autotest_lib.client.cros.cellular.mbim_compliance import mbim_errors 8 from autotest_lib.client.cros.cellular.mbim_compliance import mbim_test_base 9 from autotest_lib.client.cros.cellular.mbim_compliance.sequences \ 10 import connect_sequence 11 from autotest_lib.client.cros.cellular.mbim_compliance.sequences \ 12 import get_descriptors_sequence 13 from autotest_lib.client.cros.cellular.mbim_compliance.sequences \ 14 import mbim_open_generic_sequence 15 16 17 class MbimDtsTestBase(mbim_test_base.MbimTestBase): 18 """ Base class for all the data transfer tests. """ 19 20 def run_precondition(self, ntb_format): 21 """ 22 Runs all the precondition sequences for data transfer tests. 23 24 @param ntb_format: Whether to send/receive an NTB16 or NTB32 frame. 25 Possible values: NTB_FORMAT_16, NTB_FORMAT_32 (mbim_constants) 26 @returns tuple of (desc_sequence, open_sequence, connect_sequence) where, 27 desc_sequence - Handle to run the get descriptor sequence. 28 open_sequence - Handle to run the open sequence. 29 connect_sequence - Handle to run the connect sequence. 30 31 """ 32 desc_sequence = get_descriptors_sequence.GetDescriptorsSequence( 33 self.device_context) 34 descriptors = desc_sequence.run() 35 self.device_context.update_descriptor_cache(descriptors) 36 open_sequence = mbim_open_generic_sequence.MBIMOpenGenericSequence( 37 self.device_context) 38 open_sequence.run(ntb_format=ntb_format) 39 connect_seq = connect_sequence.ConnectSequence(self.device_context) 40 connect_seq.run() 41 42 # Devices may not support SetNtbFormat(), so fail the NTB32 tests on 43 # such devices. 44 if ((ntb_format == mbim_constants.NTB_FORMAT_32) and 45 (self.device_context.current_ntb_format != ntb_format)): 46 mbim_errors.log_and_raise( 47 mbim_errors.MBIMComplianceFrameworkError, 48 'Device does not support NTB 32 format.') 49 50 return (desc_sequence, open_sequence, connect_seq) 51