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

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 descriptor_pb2
# @@protoc_insertion_point(imports)


import ComponentSpecificationMessage_pb2


DESCRIPTOR = _descriptor.FileDescriptor(
  name='AndroidSystemControlMessage.proto',
  package='android.vts',
  serialized_pb='\n!AndroidSystemControlMessage.proto\x12\x0b\x61ndroid.vts\x1a#ComponentSpecificationMessage.proto\"\xa3\x03\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\x17\n\x0etarget_version\x18\xbe\x17 \x01(\x05\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\x0c\n\x03\x61rg\x18\xa1\x1f \x01(\x0c\x12\x16\n\rshell_command\x18\x89\' \x03(\x0c\"\xd3\x01\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\"i\n#AndroidSystemCallbackRequestMessage\x12\n\n\x02id\x18\x01 \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*\xa5\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*@\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')

_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),
  ],
  containing_type=None,
  options=None,
  serialized_start=921,
  serialized_end=1214,
)

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=1216,
  serialized_end=1280,
)

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=1283,
  serialized_end=1536,
)

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
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="",
      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="",
      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=None),
    _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="",
      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="",
      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="",
      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=13,
      number=4001, type=12, cpp_type=9, label=1,
      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='shell_command', full_name='android.vts.AndroidSystemControlCommandMessage.shell_command', index=14,
      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),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  extension_ranges=[],
  serialized_start=88,
  serialized_end=507,
)


_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="",
      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="",
      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="",
      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),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  extension_ranges=[],
  serialized_start=510,
  serialized_end=721,
)


_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="",
      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=1,
      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,
  extension_ranges=[],
  serialized_start=723,
  serialized_end=828,
)


_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,
  extension_ranges=[],
  serialized_start=830,
  serialized_end=918,
)

_ANDROIDSYSTEMCONTROLCOMMANDMESSAGE.fields_by_name['command_type'].enum_type = _COMMANDTYPE
_ANDROIDSYSTEMCONTROLCOMMANDMESSAGE.fields_by_name['driver_type'].enum_type = _VTSDRIVERTYPE
_ANDROIDSYSTEMCONTROLRESPONSEMESSAGE.fields_by_name['response_code'].enum_type = _RESPONSECODE
_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

class AndroidSystemControlCommandMessage(_message.Message):
  __metaclass__ = _reflection.GeneratedProtocolMessageType
  DESCRIPTOR = _ANDROIDSYSTEMCONTROLCOMMANDMESSAGE

  # @@protoc_insertion_point(class_scope:android.vts.AndroidSystemControlCommandMessage)

class AndroidSystemControlResponseMessage(_message.Message):
  __metaclass__ = _reflection.GeneratedProtocolMessageType
  DESCRIPTOR = _ANDROIDSYSTEMCONTROLRESPONSEMESSAGE

  # @@protoc_insertion_point(class_scope:android.vts.AndroidSystemControlResponseMessage)

class AndroidSystemCallbackRequestMessage(_message.Message):
  __metaclass__ = _reflection.GeneratedProtocolMessageType
  DESCRIPTOR = _ANDROIDSYSTEMCALLBACKREQUESTMESSAGE

  # @@protoc_insertion_point(class_scope:android.vts.AndroidSystemCallbackRequestMessage)

class AndroidSystemCallbackResponseMessage(_message.Message):
  __metaclass__ = _reflection.GeneratedProtocolMessageType
  DESCRIPTOR = _ANDROIDSYSTEMCALLBACKRESPONSEMESSAGE

  # @@protoc_insertion_point(class_scope:android.vts.AndroidSystemCallbackResponseMessage)


# @@protoc_insertion_point(module_scope)
