# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: AndroidSystemControlMessage.proto

import sys
_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
from google.protobuf.internal import enum_type_wrapper
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
from google.protobuf import descriptor_pb2
# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()


import ComponentSpecificationMessage_pb2 as ComponentSpecificationMessage__pb2
import VtsResourceControllerMessage_pb2 as VtsResourceControllerMessage__pb2


DESCRIPTOR = _descriptor.FileDescriptor(
  name='AndroidSystemControlMessage.proto',
  package='android.vts',
  syntax='proto2',
  serialized_pb=_b('\n!AndroidSystemControlMessage.proto\x12\x0b\x61ndroid.vts\x1a#ComponentSpecificationMessage.proto\x1a\"VtsResourceControllerMessage.proto\"\x80\x06\n\"AndroidSystemControlCommandMessage\x12.\n\x0c\x63ommand_type\x18\x01 \x01(\x0e\x32\x18.android.vts.CommandType\x12\x0e\n\x05paths\x18\xe9\x07 \x03(\x0c\x12\x16\n\rcallback_port\x18\xcd\x08 \x01(\x05\x12\x15\n\x0cservice_name\x18\xd1\x0f \x01(\x0c\x12\x30\n\x0b\x64river_type\x18\xb9\x17 \x01(\x0e\x32\x1a.android.vts.VtsDriverType\x12\x12\n\tfile_path\x18\xba\x17 \x01(\x0c\x12\r\n\x04\x62its\x18\xbb\x17 \x01(\x05\x12\x15\n\x0ctarget_class\x18\xbc\x17 \x01(\x05\x12\x14\n\x0btarget_type\x18\xbd\x17 \x01(\x05\x12\x1b\n\x0etarget_version\x18\xbe\x17 \x01(\x05\x42\x02\x18\x01\x12\x14\n\x0bmodule_name\x18\xbf\x17 \x01(\x0c\x12\x17\n\x0etarget_package\x18\xc0\x17 \x01(\x0c\x12\x1e\n\x15target_component_name\x18\xc1\x17 \x01(\x0c\x12!\n\x14target_version_major\x18\xc2\x17 \x01(\x05:\x02-1\x12!\n\x14target_version_minor\x18\xc3\x17 \x01(\x05:\x02-1\x12\x14\n\x0bis_test_hal\x18\xc4\x17 \x01(\x08\x12\x1f\n\x16hw_binder_service_name\x18\xcd\x17 \x01(\x0c\x12\x0c\n\x03\x61rg\x18\xa1\x1f \x01(\x0c\x12\x1a\n\x11\x64river_caller_uid\x18\x85  \x01(\x0c\x12\x16\n\rshell_command\x18\x89\' \x03(\x0c\x12\x34\n\x0b\x66mq_request\x18\xf1. \x01(\x0b\x32\x1e.android.vts.FmqRequestMessage\x12\x43\n\x13hidl_memory_request\x18\xf2. \x01(\x0b\x32%.android.vts.HidlMemoryRequestMessage\x12\x43\n\x13hidl_handle_request\x18\xf3. \x01(\x0b\x32%.android.vts.HidlHandleRequestMessage\"\x99\x03\n#AndroidSystemControlResponseMessage\x12\x30\n\rresponse_code\x18\x01 \x01(\x0e\x32\x19.android.vts.ResponseCode\x12\x0f\n\x06reason\x18\xe9\x07 \x01(\x0c\x12\x13\n\nfile_names\x18\xea\x07 \x03(\x0c\x12\r\n\x04spec\x18\xeb\x07 \x01(\x0c\x12\x0f\n\x06result\x18\xec\x07 \x01(\x0c\x12\x0f\n\x06stdout\x18\xd1\x0f \x03(\x0c\x12\x0f\n\x06stderr\x18\xd2\x0f \x03(\x0c\x12\x12\n\texit_code\x18\xd3\x0f \x03(\x05\x12\x36\n\x0c\x66mq_response\x18\xb9\x17 \x01(\x0b\x32\x1f.android.vts.FmqResponseMessage\x12\x45\n\x14hidl_memory_response\x18\xba\x17 \x01(\x0b\x32&.android.vts.HidlMemoryResponseMessage\x12\x45\n\x14hidl_handle_response\x18\xbb\x17 \x01(\x0b\x32&.android.vts.HidlHandleResponseMessage\"w\n#AndroidSystemCallbackRequestMessage\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x0c\n\x04name\x18\x02 \x01(\x0c\x12\x36\n\x03\x61rg\x18\x0b \x03(\x0b\x32).android.vts.VariableSpecificationMessage\"X\n$AndroidSystemCallbackResponseMessage\x12\x30\n\rresponse_code\x18\x01 \x01(\x0e\x32\x19.android.vts.ResponseCode*\xf7\x02\n\x0b\x43ommandType\x12\x18\n\x14UNKNOWN_COMMAND_TYPE\x10\x00\x12\r\n\tLIST_HALS\x10\x01\x12\x11\n\rSET_HOST_INFO\x10\x02\x12\x08\n\x04PING\x10\x03\x12\x18\n\x14\x43HECK_DRIVER_SERVICE\x10\x65\x12\x19\n\x15LAUNCH_DRIVER_SERVICE\x10\x66\x12(\n$VTS_AGENT_COMMAND_READ_SPECIFICATION\x10g\x12\x0e\n\tLIST_APIS\x10\xc9\x01\x12\r\n\x08\x43\x41LL_API\x10\xca\x01\x12$\n\x1fVTS_AGENT_COMMAND_GET_ATTRIBUTE\x10\xcb\x01\x12,\n\'VTS_AGENT_COMMAND_EXECUTE_SHELL_COMMAND\x10\xad\x02\x12\x14\n\x0fVTS_FMQ_COMMAND\x10\x91\x03\x12\x1c\n\x17VTS_HIDL_MEMORY_COMMAND\x10\x92\x03\x12\x1c\n\x17VTS_HIDL_HANDLE_COMMAND\x10\x93\x03*@\n\x0cResponseCode\x12\x19\n\x15UNKNOWN_RESPONSE_CODE\x10\x00\x12\x0b\n\x07SUCCESS\x10\x01\x12\x08\n\x04\x46\x41IL\x10\x02*\xfd\x01\n\rVtsDriverType\x12\x1a\n\x16UKNOWN_VTS_DRIVER_TYPE\x10\x00\x12$\n VTS_DRIVER_TYPE_HAL_CONVENTIONAL\x10\x01\x12\x1e\n\x1aVTS_DRIVER_TYPE_HAL_LEGACY\x10\x02\x12\x1c\n\x18VTS_DRIVER_TYPE_HAL_HIDL\x10\x03\x12\x31\n-VTS_DRIVER_TYPE_HAL_HIDL_WRAPPED_CONVENTIONAL\x10\x04\x12\x1e\n\x1aVTS_DRIVER_TYPE_LIB_SHARED\x10\x0b\x12\x19\n\x15VTS_DRIVER_TYPE_SHELL\x10\x15')
  ,
  dependencies=[ComponentSpecificationMessage__pb2.DESCRIPTOR,VtsResourceControllerMessage__pb2.DESCRIPTOR,])
_sym_db.RegisterFileDescriptor(DESCRIPTOR)

_COMMANDTYPE = _descriptor.EnumDescriptor(
  name='CommandType',
  full_name='android.vts.CommandType',
  filename=None,
  file=DESCRIPTOR,
  values=[
    _descriptor.EnumValueDescriptor(
      name='UNKNOWN_COMMAND_TYPE', index=0, number=0,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='LIST_HALS', index=1, number=1,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='SET_HOST_INFO', index=2, number=2,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='PING', index=3, number=3,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='CHECK_DRIVER_SERVICE', index=4, number=101,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='LAUNCH_DRIVER_SERVICE', index=5, number=102,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='VTS_AGENT_COMMAND_READ_SPECIFICATION', index=6, number=103,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='LIST_APIS', index=7, number=201,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='CALL_API', index=8, number=202,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='VTS_AGENT_COMMAND_GET_ATTRIBUTE', index=9, number=203,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='VTS_AGENT_COMMAND_EXECUTE_SHELL_COMMAND', index=10, number=301,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='VTS_FMQ_COMMAND', index=11, number=401,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='VTS_HIDL_MEMORY_COMMAND', index=12, number=402,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='VTS_HIDL_HANDLE_COMMAND', index=13, number=403,
      options=None,
      type=None),
  ],
  containing_type=None,
  options=None,
  serialized_start=1518,
  serialized_end=1893,
)
_sym_db.RegisterEnumDescriptor(_COMMANDTYPE)

CommandType = enum_type_wrapper.EnumTypeWrapper(_COMMANDTYPE)
_RESPONSECODE = _descriptor.EnumDescriptor(
  name='ResponseCode',
  full_name='android.vts.ResponseCode',
  filename=None,
  file=DESCRIPTOR,
  values=[
    _descriptor.EnumValueDescriptor(
      name='UNKNOWN_RESPONSE_CODE', index=0, number=0,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='SUCCESS', index=1, number=1,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='FAIL', index=2, number=2,
      options=None,
      type=None),
  ],
  containing_type=None,
  options=None,
  serialized_start=1895,
  serialized_end=1959,
)
_sym_db.RegisterEnumDescriptor(_RESPONSECODE)

ResponseCode = enum_type_wrapper.EnumTypeWrapper(_RESPONSECODE)
_VTSDRIVERTYPE = _descriptor.EnumDescriptor(
  name='VtsDriverType',
  full_name='android.vts.VtsDriverType',
  filename=None,
  file=DESCRIPTOR,
  values=[
    _descriptor.EnumValueDescriptor(
      name='UKNOWN_VTS_DRIVER_TYPE', index=0, number=0,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='VTS_DRIVER_TYPE_HAL_CONVENTIONAL', index=1, number=1,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='VTS_DRIVER_TYPE_HAL_LEGACY', index=2, number=2,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='VTS_DRIVER_TYPE_HAL_HIDL', index=3, number=3,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='VTS_DRIVER_TYPE_HAL_HIDL_WRAPPED_CONVENTIONAL', index=4, number=4,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='VTS_DRIVER_TYPE_LIB_SHARED', index=5, number=11,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='VTS_DRIVER_TYPE_SHELL', index=6, number=21,
      options=None,
      type=None),
  ],
  containing_type=None,
  options=None,
  serialized_start=1962,
  serialized_end=2215,
)
_sym_db.RegisterEnumDescriptor(_VTSDRIVERTYPE)

VtsDriverType = enum_type_wrapper.EnumTypeWrapper(_VTSDRIVERTYPE)
UNKNOWN_COMMAND_TYPE = 0
LIST_HALS = 1
SET_HOST_INFO = 2
PING = 3
CHECK_DRIVER_SERVICE = 101
LAUNCH_DRIVER_SERVICE = 102
VTS_AGENT_COMMAND_READ_SPECIFICATION = 103
LIST_APIS = 201
CALL_API = 202
VTS_AGENT_COMMAND_GET_ATTRIBUTE = 203
VTS_AGENT_COMMAND_EXECUTE_SHELL_COMMAND = 301
VTS_FMQ_COMMAND = 401
VTS_HIDL_MEMORY_COMMAND = 402
VTS_HIDL_HANDLE_COMMAND = 403
UNKNOWN_RESPONSE_CODE = 0
SUCCESS = 1
FAIL = 2
UKNOWN_VTS_DRIVER_TYPE = 0
VTS_DRIVER_TYPE_HAL_CONVENTIONAL = 1
VTS_DRIVER_TYPE_HAL_LEGACY = 2
VTS_DRIVER_TYPE_HAL_HIDL = 3
VTS_DRIVER_TYPE_HAL_HIDL_WRAPPED_CONVENTIONAL = 4
VTS_DRIVER_TYPE_LIB_SHARED = 11
VTS_DRIVER_TYPE_SHELL = 21



_ANDROIDSYSTEMCONTROLCOMMANDMESSAGE = _descriptor.Descriptor(
  name='AndroidSystemControlCommandMessage',
  full_name='android.vts.AndroidSystemControlCommandMessage',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='command_type', full_name='android.vts.AndroidSystemControlCommandMessage.command_type', index=0,
      number=1, type=14, cpp_type=8, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='paths', full_name='android.vts.AndroidSystemControlCommandMessage.paths', index=1,
      number=1001, type=12, cpp_type=9, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='callback_port', full_name='android.vts.AndroidSystemControlCommandMessage.callback_port', index=2,
      number=1101, type=5, cpp_type=1, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='service_name', full_name='android.vts.AndroidSystemControlCommandMessage.service_name', index=3,
      number=2001, type=12, cpp_type=9, label=1,
      has_default_value=False, default_value=_b(""),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='driver_type', full_name='android.vts.AndroidSystemControlCommandMessage.driver_type', index=4,
      number=3001, type=14, cpp_type=8, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='file_path', full_name='android.vts.AndroidSystemControlCommandMessage.file_path', index=5,
      number=3002, type=12, cpp_type=9, label=1,
      has_default_value=False, default_value=_b(""),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='bits', full_name='android.vts.AndroidSystemControlCommandMessage.bits', index=6,
      number=3003, type=5, cpp_type=1, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='target_class', full_name='android.vts.AndroidSystemControlCommandMessage.target_class', index=7,
      number=3004, type=5, cpp_type=1, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='target_type', full_name='android.vts.AndroidSystemControlCommandMessage.target_type', index=8,
      number=3005, type=5, cpp_type=1, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='target_version', full_name='android.vts.AndroidSystemControlCommandMessage.target_version', index=9,
      number=3006, type=5, cpp_type=1, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))),
    _descriptor.FieldDescriptor(
      name='module_name', full_name='android.vts.AndroidSystemControlCommandMessage.module_name', index=10,
      number=3007, type=12, cpp_type=9, label=1,
      has_default_value=False, default_value=_b(""),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='target_package', full_name='android.vts.AndroidSystemControlCommandMessage.target_package', index=11,
      number=3008, type=12, cpp_type=9, label=1,
      has_default_value=False, default_value=_b(""),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='target_component_name', full_name='android.vts.AndroidSystemControlCommandMessage.target_component_name', index=12,
      number=3009, type=12, cpp_type=9, label=1,
      has_default_value=False, default_value=_b(""),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='target_version_major', full_name='android.vts.AndroidSystemControlCommandMessage.target_version_major', index=13,
      number=3010, type=5, cpp_type=1, label=1,
      has_default_value=True, default_value=-1,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='target_version_minor', full_name='android.vts.AndroidSystemControlCommandMessage.target_version_minor', index=14,
      number=3011, type=5, cpp_type=1, label=1,
      has_default_value=True, default_value=-1,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='is_test_hal', full_name='android.vts.AndroidSystemControlCommandMessage.is_test_hal', index=15,
      number=3012, type=8, cpp_type=7, label=1,
      has_default_value=False, default_value=False,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='hw_binder_service_name', full_name='android.vts.AndroidSystemControlCommandMessage.hw_binder_service_name', index=16,
      number=3021, type=12, cpp_type=9, label=1,
      has_default_value=False, default_value=_b(""),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='arg', full_name='android.vts.AndroidSystemControlCommandMessage.arg', index=17,
      number=4001, type=12, cpp_type=9, label=1,
      has_default_value=False, default_value=_b(""),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='driver_caller_uid', full_name='android.vts.AndroidSystemControlCommandMessage.driver_caller_uid', index=18,
      number=4101, type=12, cpp_type=9, label=1,
      has_default_value=False, default_value=_b(""),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='shell_command', full_name='android.vts.AndroidSystemControlCommandMessage.shell_command', index=19,
      number=5001, type=12, cpp_type=9, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='fmq_request', full_name='android.vts.AndroidSystemControlCommandMessage.fmq_request', index=20,
      number=6001, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='hidl_memory_request', full_name='android.vts.AndroidSystemControlCommandMessage.hidl_memory_request', index=21,
      number=6002, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='hidl_handle_request', full_name='android.vts.AndroidSystemControlCommandMessage.hidl_handle_request', index=22,
      number=6003, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto2',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=124,
  serialized_end=892,
)


_ANDROIDSYSTEMCONTROLRESPONSEMESSAGE = _descriptor.Descriptor(
  name='AndroidSystemControlResponseMessage',
  full_name='android.vts.AndroidSystemControlResponseMessage',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='response_code', full_name='android.vts.AndroidSystemControlResponseMessage.response_code', index=0,
      number=1, type=14, cpp_type=8, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='reason', full_name='android.vts.AndroidSystemControlResponseMessage.reason', index=1,
      number=1001, type=12, cpp_type=9, label=1,
      has_default_value=False, default_value=_b(""),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='file_names', full_name='android.vts.AndroidSystemControlResponseMessage.file_names', index=2,
      number=1002, type=12, cpp_type=9, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='spec', full_name='android.vts.AndroidSystemControlResponseMessage.spec', index=3,
      number=1003, type=12, cpp_type=9, label=1,
      has_default_value=False, default_value=_b(""),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='result', full_name='android.vts.AndroidSystemControlResponseMessage.result', index=4,
      number=1004, type=12, cpp_type=9, label=1,
      has_default_value=False, default_value=_b(""),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='stdout', full_name='android.vts.AndroidSystemControlResponseMessage.stdout', index=5,
      number=2001, type=12, cpp_type=9, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='stderr', full_name='android.vts.AndroidSystemControlResponseMessage.stderr', index=6,
      number=2002, type=12, cpp_type=9, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='exit_code', full_name='android.vts.AndroidSystemControlResponseMessage.exit_code', index=7,
      number=2003, type=5, cpp_type=1, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='fmq_response', full_name='android.vts.AndroidSystemControlResponseMessage.fmq_response', index=8,
      number=3001, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='hidl_memory_response', full_name='android.vts.AndroidSystemControlResponseMessage.hidl_memory_response', index=9,
      number=3002, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='hidl_handle_response', full_name='android.vts.AndroidSystemControlResponseMessage.hidl_handle_response', index=10,
      number=3003, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto2',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=895,
  serialized_end=1304,
)


_ANDROIDSYSTEMCALLBACKREQUESTMESSAGE = _descriptor.Descriptor(
  name='AndroidSystemCallbackRequestMessage',
  full_name='android.vts.AndroidSystemCallbackRequestMessage',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='id', full_name='android.vts.AndroidSystemCallbackRequestMessage.id', index=0,
      number=1, type=12, cpp_type=9, label=1,
      has_default_value=False, default_value=_b(""),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='name', full_name='android.vts.AndroidSystemCallbackRequestMessage.name', index=1,
      number=2, type=12, cpp_type=9, label=1,
      has_default_value=False, default_value=_b(""),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='arg', full_name='android.vts.AndroidSystemCallbackRequestMessage.arg', index=2,
      number=11, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto2',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1306,
  serialized_end=1425,
)


_ANDROIDSYSTEMCALLBACKRESPONSEMESSAGE = _descriptor.Descriptor(
  name='AndroidSystemCallbackResponseMessage',
  full_name='android.vts.AndroidSystemCallbackResponseMessage',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='response_code', full_name='android.vts.AndroidSystemCallbackResponseMessage.response_code', index=0,
      number=1, type=14, cpp_type=8, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto2',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1427,
  serialized_end=1515,
)

_ANDROIDSYSTEMCONTROLCOMMANDMESSAGE.fields_by_name['command_type'].enum_type = _COMMANDTYPE
_ANDROIDSYSTEMCONTROLCOMMANDMESSAGE.fields_by_name['driver_type'].enum_type = _VTSDRIVERTYPE
_ANDROIDSYSTEMCONTROLCOMMANDMESSAGE.fields_by_name['fmq_request'].message_type = VtsResourceControllerMessage__pb2._FMQREQUESTMESSAGE
_ANDROIDSYSTEMCONTROLCOMMANDMESSAGE.fields_by_name['hidl_memory_request'].message_type = VtsResourceControllerMessage__pb2._HIDLMEMORYREQUESTMESSAGE
_ANDROIDSYSTEMCONTROLCOMMANDMESSAGE.fields_by_name['hidl_handle_request'].message_type = VtsResourceControllerMessage__pb2._HIDLHANDLEREQUESTMESSAGE
_ANDROIDSYSTEMCONTROLRESPONSEMESSAGE.fields_by_name['response_code'].enum_type = _RESPONSECODE
_ANDROIDSYSTEMCONTROLRESPONSEMESSAGE.fields_by_name['fmq_response'].message_type = VtsResourceControllerMessage__pb2._FMQRESPONSEMESSAGE
_ANDROIDSYSTEMCONTROLRESPONSEMESSAGE.fields_by_name['hidl_memory_response'].message_type = VtsResourceControllerMessage__pb2._HIDLMEMORYRESPONSEMESSAGE
_ANDROIDSYSTEMCONTROLRESPONSEMESSAGE.fields_by_name['hidl_handle_response'].message_type = VtsResourceControllerMessage__pb2._HIDLHANDLERESPONSEMESSAGE
_ANDROIDSYSTEMCALLBACKREQUESTMESSAGE.fields_by_name['arg'].message_type = ComponentSpecificationMessage__pb2._VARIABLESPECIFICATIONMESSAGE
_ANDROIDSYSTEMCALLBACKRESPONSEMESSAGE.fields_by_name['response_code'].enum_type = _RESPONSECODE
DESCRIPTOR.message_types_by_name['AndroidSystemControlCommandMessage'] = _ANDROIDSYSTEMCONTROLCOMMANDMESSAGE
DESCRIPTOR.message_types_by_name['AndroidSystemControlResponseMessage'] = _ANDROIDSYSTEMCONTROLRESPONSEMESSAGE
DESCRIPTOR.message_types_by_name['AndroidSystemCallbackRequestMessage'] = _ANDROIDSYSTEMCALLBACKREQUESTMESSAGE
DESCRIPTOR.message_types_by_name['AndroidSystemCallbackResponseMessage'] = _ANDROIDSYSTEMCALLBACKRESPONSEMESSAGE
DESCRIPTOR.enum_types_by_name['CommandType'] = _COMMANDTYPE
DESCRIPTOR.enum_types_by_name['ResponseCode'] = _RESPONSECODE
DESCRIPTOR.enum_types_by_name['VtsDriverType'] = _VTSDRIVERTYPE

AndroidSystemControlCommandMessage = _reflection.GeneratedProtocolMessageType('AndroidSystemControlCommandMessage', (_message.Message,), dict(
  DESCRIPTOR = _ANDROIDSYSTEMCONTROLCOMMANDMESSAGE,
  __module__ = 'AndroidSystemControlMessage_pb2'
  # @@protoc_insertion_point(class_scope:android.vts.AndroidSystemControlCommandMessage)
  ))
_sym_db.RegisterMessage(AndroidSystemControlCommandMessage)

AndroidSystemControlResponseMessage = _reflection.GeneratedProtocolMessageType('AndroidSystemControlResponseMessage', (_message.Message,), dict(
  DESCRIPTOR = _ANDROIDSYSTEMCONTROLRESPONSEMESSAGE,
  __module__ = 'AndroidSystemControlMessage_pb2'
  # @@protoc_insertion_point(class_scope:android.vts.AndroidSystemControlResponseMessage)
  ))
_sym_db.RegisterMessage(AndroidSystemControlResponseMessage)

AndroidSystemCallbackRequestMessage = _reflection.GeneratedProtocolMessageType('AndroidSystemCallbackRequestMessage', (_message.Message,), dict(
  DESCRIPTOR = _ANDROIDSYSTEMCALLBACKREQUESTMESSAGE,
  __module__ = 'AndroidSystemControlMessage_pb2'
  # @@protoc_insertion_point(class_scope:android.vts.AndroidSystemCallbackRequestMessage)
  ))
_sym_db.RegisterMessage(AndroidSystemCallbackRequestMessage)

AndroidSystemCallbackResponseMessage = _reflection.GeneratedProtocolMessageType('AndroidSystemCallbackResponseMessage', (_message.Message,), dict(
  DESCRIPTOR = _ANDROIDSYSTEMCALLBACKRESPONSEMESSAGE,
  __module__ = 'AndroidSystemControlMessage_pb2'
  # @@protoc_insertion_point(class_scope:android.vts.AndroidSystemCallbackResponseMessage)
  ))
_sym_db.RegisterMessage(AndroidSystemCallbackResponseMessage)


_ANDROIDSYSTEMCONTROLCOMMANDMESSAGE.fields_by_name['target_version'].has_options = True
_ANDROIDSYSTEMCONTROLCOMMANDMESSAGE.fields_by_name['target_version']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))
# @@protoc_insertion_point(module_scope)
