# Copyright 2015 The Chromium OS Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. """ This module implements the classes for information structures encapsulated in either |MBIMCommandMessage| or |MBIMCommandDone|. Reference: [1] Universal Serial Bus Communications Class Subclass Specification for Mobile Broadband Interface Model http://www.usb.org/developers/docs/devclass_docs/ MBIM10Errata1_073013.zip """ from autotest_lib.client.cros.cellular.mbim_compliance import mbim_constants from autotest_lib.client.cros.cellular.mbim_compliance \ import mbim_message_request from autotest_lib.client.cros.cellular.mbim_compliance \ import mbim_message_response class MBIMSetConnect(mbim_message_request.MBIMCommand): """ The class for MBIM_SET_CONNECT structure. """ _FIELDS = (('I', 'session_id', ''), ('I', 'activation_command', ''), ('I', 'access_string_offset', ''), ('I', 'access_string_size', ''), ('I', 'user_name_offset', ''), ('I', 'user_name_size', ''), ('I', 'password_offset', ''), ('I', 'password_size', ''), ('I', 'compression', ''), ('I', 'auth_protocol', ''), ('I', 'ip_type', ''), ('16s', 'context_type', '')) _DEFAULTS = {'device_service_id' : mbim_constants.UUID_BASIC_CONNECT.bytes, 'cid' : mbim_constants.MBIM_CID_CONNECT, 'command_type' : mbim_constants.COMMAND_TYPE_SET} class MBIMConnectQuery(mbim_message_request.MBIMCommand): """ The class for MBIM_CONNECT_QUERY structure. """ _FIELDS = (('I', 'session_id', ''), ('I', 'activation_state', ''), ('I', 'voice_call_state', ''), ('I', 'ip_type', ''), ('16s', 'context_type', ''), ('I', 'nw_error', '')) _DEFAULTS = {'device_service_id' : mbim_constants.UUID_BASIC_CONNECT.bytes, 'cid' : mbim_constants.MBIM_CID_CONNECT, 'command_type' : mbim_constants.COMMAND_TYPE_QUERY, 'information_buffer_length' : 36, 'activation_state' : 0, 'voice_call_state' : 0, 'ip_type' : 0, 'context_type' : mbim_constants.MBIM_CONTEXT_TYPE_NONE.bytes, 'nw_error' : 0} class MBIMConnectInfo(mbim_message_response.MBIMCommandDone): """ The class for MBIM_CONNECT_INFO structure. """ _FIELDS = (('I', 'session_id', ''), ('I', 'activation_state', ''), ('I', 'voice_call_state', ''), ('I', 'ip_type', ''), ('16s', 'context_type', ''), ('I', 'nw_error', '')) _IDENTIFIERS = { 'device_service_id' : mbim_constants.UUID_BASIC_CONNECT.bytes, 'cid' : mbim_constants.MBIM_CID_CONNECT} class MBIMDeviceCapsQuery(mbim_message_request.MBIMCommand): """ The class for MBIM_DEVICE_CAPS_QUERY structure. """ _DEFAULTS = {'device_service_id' : mbim_constants.UUID_BASIC_CONNECT.bytes, 'cid' : mbim_constants.MBIM_CID_DEVICE_CAPS, 'command_type' : mbim_constants.COMMAND_TYPE_QUERY, 'information_buffer_length' : 0} class MBIMDeviceCapsInfo(mbim_message_response.MBIMCommandDone): """ The class for MBIM_DEVICE_CAPS_INFO structure. """ _FIELDS = (('I', 'device_type', ''), ('I', 'cellular_class', ''), ('I', 'voice_class', ''), ('I', 'sim_class', ''), ('I', 'data_class', ''), ('I', 'sms_caps', ''), ('I', 'control_caps', ''), ('I', 'max_sessions', ''), ('I', 'custom_data_class_offset', ''), ('I', 'custom_data_class_size', ''), ('I', 'device_id_offset', ''), ('I', 'device_id_size', ''), ('I', 'firmware_info_offset', ''), ('I', 'firmware_info_size', ''), ('I', 'hardware_info_offset', ''), ('I', 'hardware_info_size', '')) _IDENTIFIERS = { 'device_service_id' : mbim_constants.UUID_BASIC_CONNECT.bytes, 'cid' : mbim_constants.MBIM_CID_DEVICE_CAPS} class MBIMDeviceServicesQuery(mbim_message_request.MBIMCommand): """ The class for MBIM_DEVICE_SERVICES_QUERY structure. """ _DEFAULTS = {'device_service_id' : mbim_constants.UUID_BASIC_CONNECT.bytes, 'cid' : mbim_constants.MBIM_CID_DEVICE_SERVICES, 'command_type' : mbim_constants.COMMAND_TYPE_QUERY, 'information_buffer_length' : 0} class MBIMDeviceServicesInfo(mbim_message_response.MBIMCommandDone): """ The class for MBIM_DEVICE_SERVICES_INFO structure. """ # The length of |device_services_ref_list| depends on the value of # |device_services_count|. _FIELDS = (('I', 'device_services_count', ''), ('I', 'max_dss_sessions', '')) #('Q', 'device_services_ref_list', '')) _IDENTIFIERS = { 'device_service_id' : mbim_constants.UUID_BASIC_CONNECT.bytes, 'cid' : mbim_constants.MBIM_CID_DEVICE_SERVICES} class MBIMRadioStateInfo(mbim_message_response.MBIMCommandDone): """ The class for MBIM_RADIO_STATE_INFO structure. """ _FIELDS = (('I', 'hw_radio_state', ''), ('I', 'sw_radio_state', '')) class MBIMIPConfigurationQuery(mbim_message_request.MBIMCommand): """ The class for MBIM_IP_CONFIGURATION_INFO structure. """ _FIELDS = (('I', 'session_id', ''), ('I', 'ipv4_configuration_available', ''), ('I', 'ipv6_configuration_available', ''), ('I', 'ipv4_address_count', ''), ('I', 'ipv4_address_offset', ''), ('I', 'ipv6_address_count', ''), ('I', 'ipv6_address_offset', ''), ('I', 'ipv4_gateway_offset', ''), ('I', 'ipv6_gateway_offset', ''), ('I', 'ipv4_dns_server_count', ''), ('I', 'ipv4_dns_server_offset', ''), ('I', 'ipv6_dns_server_count', ''), ('I', 'ipv6_dns_server_offset', ''), ('I', 'ipv4_mtu', ''), ('I', 'ipv6_mtu', '')) _DEFAULTS = {'device_service_id' : mbim_constants.UUID_BASIC_CONNECT.bytes, 'cid' : mbim_constants.MBIM_CID_IP_CONFIGURATION, 'command_type' : mbim_constants.COMMAND_TYPE_QUERY, 'information_buffer_length' : 60, 'ipv4_configuration_available' : 0, 'ipv6_configuration_available' : 0, 'ipv4_address_count' : 0, 'ipv4_address_offset' : 0, 'ipv6_address_count' : 0, 'ipv6_address_offset' : 0, 'ipv4_gateway_offset' : 0, 'ipv6_gateway_offset' : 0, 'ipv4_dns_server_count' : 0, 'ipv4_dns_server_offset' : 0, 'ipv6_dns_server_count' : 0, 'ipv6_dns_server_offset' : 0, 'ipv4_mtu' : 0, 'ipv6_mtu' : 0} class MBIMIPConfigurationInfo(mbim_message_response.MBIMCommandDone): """ The class for MBIM_IP_CONFIGURATION_INFO structure. """ _FIELDS = (('I', 'session_id', ''), ('I', 'ipv4_configuration_available', ''), ('I', 'ipv6_configuration_available', ''), ('I', 'ipv4_address_count', ''), ('I', 'ipv4_address_offset', ''), ('I', 'ipv6_address_count', ''), ('I', 'ipv6_address_offset', ''), ('I', 'ipv4_gateway_offset', ''), ('I', 'ipv6_gateway_offset', ''), ('I', 'ipv4_dns_server_count', ''), ('I', 'ipv4_dns_server_offset', ''), ('I', 'ipv6_dns_server_count', ''), ('I', 'ipv6_dns_server_offset', ''), ('I', 'ipv4_mtu', ''), ('I', 'ipv6_mtu', '')) _IDENTIFIERS = { 'device_service_id' : mbim_constants.UUID_BASIC_CONNECT.bytes, 'cid' : mbim_constants.MBIM_CID_IP_CONFIGURATION}