14d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou# Copyright (c) 2014 The Chromium OS Authors. All rights reserved. 24d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou# Use of this source code is governed by a BSD-style license that can be 34d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou# found in the LICENSE file. 44d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou 54d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou""" 64d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen ChouCM_13 Validation of Active Context Termination on Function's Closing 74d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou 84d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen ChouReference: 94d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou [1] Universal Serial Bus Communication Class MBIM Compliance Testing: 42 104d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou http://www.usb.org/developers/docs/devclass_docs/MBIM-Compliance-1.0.pdf 114d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou""" 124d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chouimport common 134d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou 144d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Choufrom autotest_lib.client.cros.cellular.mbim_compliance import mbim_channel 154d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Choufrom autotest_lib.client.cros.cellular.mbim_compliance import mbim_constants 164d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Choufrom autotest_lib.client.cros.cellular.mbim_compliance import mbim_control 174d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Choufrom autotest_lib.client.cros.cellular.mbim_compliance import mbim_data 184d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Choufrom autotest_lib.client.cros.cellular.mbim_compliance import mbim_errors 194d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Choufrom autotest_lib.client.cros.cellular.mbim_compliance.sequences \ 204d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou import connect_sequence 214d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Choufrom autotest_lib.client.cros.cellular.mbim_compliance.sequences \ 224d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou import mbim_close_sequence 234d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Choufrom autotest_lib.client.cros.cellular.mbim_compliance.sequences \ 244d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou import mbim_open_generic_sequence 254d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Choufrom autotest_lib.client.cros.cellular.mbim_compliance.tests import test 264d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou 274d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou 284d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chouclass CM13Test(test.Test): 294d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou """ Implement the CM_13 test. """ 304d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou 314d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou def run_internal(self): 324d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou """ Run CM_13 test. """ 334d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou # Precondition 344d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou mbim_open_generic_sequence.MBIMOpenGenericSequence( 354d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou self.test_context).run() 364d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou connect_sequence.ConnectSequence(self.test_context).run() 374d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou mbim_close_sequence.MBIMCloseSequence(self.test_context).run() 384d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou mbim_open_generic_sequence.MBIMOpenGenericSequence( 394d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou self.test_context).run() 404d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou 414d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou # Step 1 424d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou connect_info_structure = mbim_data.MBIMConnectInfoStructure( 434d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou session_id=0, 444d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou activation_state=0, 454d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou voice_call_state=0, 464d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou ip_type=0, 474d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou context_type=mbim_constants.MBIM_CONTEXT_TYPE_NONE.bytes, 484d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou nw_error=0) 494d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou command_message = mbim_control.MBIMCommandMessage( 504d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou message_length=84, 514d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou total_fragments=1, 524d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou current_fragment=0, 534d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou device_service_id=mbim_constants.UUID_BASIC_CONNECT.bytes, 544d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou cid=mbim_constants.MBIM_CID_CONNECT, 554d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou command_type=mbim_constants.COMMAND_TYPE_QUERY, 564d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou information_buffer_length=36, 574d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou information_buffer=connect_info_structure.pack()) 584d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou packets = command_message.generate_packets() 594d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou channel = mbim_channel.MBIMChannel( 604d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou {'idVendor': self.test_context.id_vendor, 614d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou 'idProduct': self.test_context.id_product}, 624d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou self.test_context.mbim_communication_interface.bInterfaceNumber, 634d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou self.test_context.interrupt_endpoint.bEndpointAddress, 644d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou self.test_context.mbim_functional.wMaxControlMessage) 654d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou response_packets = channel.bidirectional_transaction(*packets) 664d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou channel.close() 674d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou 684d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou # Step 2 694d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou response_message = mbim_control.parse_response_packets(response_packets) 704d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou 714d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou # Step 3 724d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou if (response_message.status_codes != 734d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou mbim_constants.MBIM_STATUS_CONTEXT_NOT_ACTIVATED): 744d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou mbim_errors.log_and_raise(mbim_errors.MBIMComplianceAssertionError, 754d427943bf1931aab7f9992b9f034334e36ec7dbMiao-chen Chou 'mbim1.0:9.3.2#3') 76