"""
Autogenerated python message buffer code.
Source: clad/externalInterface/messageEngineToGame.clad
Full command line: victor-clad/tools/message-buffers/emitters/Python_emitter.py -C src -I clad/src lib/util/source/anki/clad robot/clad/src coretech/vision/clad_src coretech/common/clad_src -o generated/cladPython clad/externalInterface/messageEngineToGame.clad
"""

from __future__ import absolute_import
from __future__ import print_function

def _modify_path():
  import inspect, os, sys
  search_paths = [
    '../..',
    '../../../../victor-clad/tools/message-buffers/support/python',
  ]
  currentpath = os.path.abspath(os.path.dirname(inspect.getfile(inspect.currentframe())))
  for search_path in search_paths:
    search_path = os.path.normpath(os.path.abspath(os.path.realpath(os.path.join(currentpath, search_path))))
    if search_path not in sys.path:
      sys.path.insert(0, search_path)
_modify_path()

import msgbuffers

Anki = msgbuffers.Namespace()
Anki.AudioEngine = msgbuffers.Namespace()
Anki.AudioEngine.Multiplexer = msgbuffers.Namespace()
Anki.AudioMetaData = msgbuffers.Namespace()
Anki.AudioMetaData.GameEvent = msgbuffers.Namespace()
Anki.Util = msgbuffers.Namespace()
Anki.Util.AnkiLab = msgbuffers.Namespace()
Anki.Vector = msgbuffers.Namespace()
Anki.Vector.ExternalInterface = msgbuffers.Namespace()
Anki.Vector.RobotInterface = msgbuffers.Namespace()
Anki.Vector.SwitchboardInterface = msgbuffers.Namespace()
Anki.Vision = msgbuffers.Namespace()

from clad.audio.audioCallbackMessage import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.externalInterface.messageShared import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.actionResults import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.actionTypes import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.activeObjectAccel import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.animationEvents import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.behaviorComponent.behaviorIDs import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.behaviorComponent.userIntent import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.behaviorSlot import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.cladPoint import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.cladRect import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.debugConsoleTypes import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.engineErrorCodes import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.engineState import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.faceDetectionMetaData import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.faceEnrollmentResult import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.facialExpressions import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.factoryTestTypes import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.featureGateTypes import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.imageTypes import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.imu import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.ledTypes import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.loadedKnownFace import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.logLevels import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.memoryMap import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.motorTypes import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.objectTypes import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.offTreadsStates import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.onboardingStages import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.petTypes import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.poseStructs import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.robotCompletedAction import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.robotStatusAndActions import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.robotToSwitchboard import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.salientPointTypes import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.sdkStatusTypes import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.selfTestTypes import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.uiConnectionTypes import Anki as _Anki
Anki.update(_Anki.deep_clone())

from clad.types.visionModes import Anki as _Anki
Anki.update(_Anki.deep_clone())

from util.ankiLab.ankiLabDef import Anki as _Anki
Anki.update(_Anki.deep_clone())

class UiDeviceAvailable(object):
  "Generated message-passing message."

  __slots__ = (
    '_connectionType', # Anki.Vector.UiConnectionType
    '_deviceID',       # uint_32
  )

  @property
  def connectionType(self):
    "Anki.Vector.UiConnectionType connectionType struct property."
    return self._connectionType

  @connectionType.setter
  def connectionType(self, value):
    self._connectionType = msgbuffers.validate_integer(
      'UiDeviceAvailable.connectionType', value, 0, 255)

  @property
  def deviceID(self):
    "uint_32 deviceID struct property."
    return self._deviceID

  @deviceID.setter
  def deviceID(self, value):
    self._deviceID = msgbuffers.validate_integer(
      'UiDeviceAvailable.deviceID', value, 0, 4294967295)

  def __init__(self, connectionType=Anki.Vector.UiConnectionType.UI, deviceID=0):
    self.connectionType = connectionType
    self.deviceID = deviceID

  @classmethod
  def unpack(cls, buffer):
    "Reads a new UiDeviceAvailable from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('UiDeviceAvailable.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new UiDeviceAvailable from the given BinaryReader."
    _connectionType = reader.read('B')
    _deviceID = reader.read('I')
    return cls(_connectionType, _deviceID)

  def pack(self):
    "Writes the current UiDeviceAvailable, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current UiDeviceAvailable to the given BinaryWriter."
    writer.write(self._connectionType, 'B')
    writer.write(self._deviceID, 'I')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._connectionType == other._connectionType and
        self._deviceID == other._deviceID)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._connectionType, 'B') +
      msgbuffers.size(self._deviceID, 'I'))

  def __str__(self):
    return '{type}(connectionType={connectionType}, deviceID={deviceID})'.format(
      type=type(self).__name__,
      connectionType=self._connectionType,
      deviceID=self._deviceID)

  def __repr__(self):
    return '{type}(connectionType={connectionType}, deviceID={deviceID})'.format(
      type=type(self).__name__,
      connectionType=repr(self._connectionType),
      deviceID=repr(self._deviceID))

Anki.Vector.ExternalInterface.UiDeviceAvailable = UiDeviceAvailable
del UiDeviceAvailable


class RobotConnectionResponse(object):
  "Generated message-passing message."

  __slots__ = (
    '_result', # Anki.Vector.RobotConnectionResult
  )

  @property
  def result(self):
    "Anki.Vector.RobotConnectionResult result struct property."
    return self._result

  @result.setter
  def result(self, value):
    self._result = msgbuffers.validate_integer(
      'RobotConnectionResponse.result', value, 0, 255)

  def __init__(self, result=Anki.Vector.RobotConnectionResult.Success):
    self.result = result

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RobotConnectionResponse from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RobotConnectionResponse.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new RobotConnectionResponse from the given BinaryReader."
    _result = reader.read('B')
    return cls(_result)

  def pack(self):
    "Writes the current RobotConnectionResponse, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current RobotConnectionResponse to the given BinaryWriter."
    writer.write(self._result, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._result == other._result
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._result, 'B'))

  def __str__(self):
    return '{type}(result={result})'.format(
      type=type(self).__name__,
      result=self._result)

  def __repr__(self):
    return '{type}(result={result})'.format(
      type=type(self).__name__,
      result=repr(self._result))

Anki.Vector.ExternalInterface.RobotConnectionResponse = RobotConnectionResponse
del RobotConnectionResponse


class UiDeviceConnected(object):
  "Generated message-passing message."

  __slots__ = (
    '_reserved',         # uint_8
    '_connectionType',   # Anki.Vector.UiConnectionType
    '_deviceID',         # uint_32
    '_successful',       # uint_8
    '_toGameCLADHash',   # uint_8[16]
    '_toEngineCLADHash', # uint_8[16]
    '_buildVersion',     # string[uint_8]
  )

  @property
  def reserved(self):
    "uint_8 reserved struct property."
    return self._reserved

  @reserved.setter
  def reserved(self, value):
    self._reserved = msgbuffers.validate_integer(
      'UiDeviceConnected.reserved', value, 0, 255)

  @property
  def connectionType(self):
    "Anki.Vector.UiConnectionType connectionType struct property."
    return self._connectionType

  @connectionType.setter
  def connectionType(self, value):
    self._connectionType = msgbuffers.validate_integer(
      'UiDeviceConnected.connectionType', value, 0, 255)

  @property
  def deviceID(self):
    "uint_32 deviceID struct property."
    return self._deviceID

  @deviceID.setter
  def deviceID(self, value):
    self._deviceID = msgbuffers.validate_integer(
      'UiDeviceConnected.deviceID', value, 0, 4294967295)

  @property
  def successful(self):
    "uint_8 successful struct property."
    return self._successful

  @successful.setter
  def successful(self, value):
    self._successful = msgbuffers.validate_integer(
      'UiDeviceConnected.successful', value, 0, 255)

  @property
  def toGameCLADHash(self):
    "uint_8[16] toGameCLADHash struct property."
    return self._toGameCLADHash

  @toGameCLADHash.setter
  def toGameCLADHash(self, value):
    self._toGameCLADHash = msgbuffers.validate_farray(
      'UiDeviceConnected.toGameCLADHash', value, 16,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 255))

  @property
  def toEngineCLADHash(self):
    "uint_8[16] toEngineCLADHash struct property."
    return self._toEngineCLADHash

  @toEngineCLADHash.setter
  def toEngineCLADHash(self, value):
    self._toEngineCLADHash = msgbuffers.validate_farray(
      'UiDeviceConnected.toEngineCLADHash', value, 16,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 255))

  @property
  def buildVersion(self):
    "string[uint_8] buildVersion struct property."
    return self._buildVersion

  @buildVersion.setter
  def buildVersion(self, value):
    self._buildVersion = msgbuffers.validate_string(
      'UiDeviceConnected.buildVersion', value, 255)

  def __init__(self, reserved=0, connectionType=Anki.Vector.UiConnectionType.UI, deviceID=0, successful=0, toGameCLADHash=(0,) * 16, toEngineCLADHash=(0,) * 16, buildVersion=''):
    self.reserved = reserved
    self.connectionType = connectionType
    self.deviceID = deviceID
    self.successful = successful
    self.toGameCLADHash = toGameCLADHash
    self.toEngineCLADHash = toEngineCLADHash
    self.buildVersion = buildVersion

  @classmethod
  def unpack(cls, buffer):
    "Reads a new UiDeviceConnected from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('UiDeviceConnected.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new UiDeviceConnected from the given BinaryReader."
    _reserved = reader.read('B')
    _connectionType = reader.read('B')
    _deviceID = reader.read('I')
    _successful = reader.read('B')
    _toGameCLADHash = reader.read_farray('B', 16)
    _toEngineCLADHash = reader.read_farray('B', 16)
    _buildVersion = reader.read_string('B')
    return cls(_reserved, _connectionType, _deviceID, _successful, _toGameCLADHash, _toEngineCLADHash, _buildVersion)

  def pack(self):
    "Writes the current UiDeviceConnected, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current UiDeviceConnected to the given BinaryWriter."
    writer.write(self._reserved, 'B')
    writer.write(self._connectionType, 'B')
    writer.write(self._deviceID, 'I')
    writer.write(self._successful, 'B')
    writer.write_farray(self._toGameCLADHash, 'B', 16)
    writer.write_farray(self._toEngineCLADHash, 'B', 16)
    writer.write_string(self._buildVersion, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._reserved == other._reserved and
        self._connectionType == other._connectionType and
        self._deviceID == other._deviceID and
        self._successful == other._successful and
        self._toGameCLADHash == other._toGameCLADHash and
        self._toEngineCLADHash == other._toEngineCLADHash and
        self._buildVersion == other._buildVersion)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._reserved, 'B') +
      msgbuffers.size(self._connectionType, 'B') +
      msgbuffers.size(self._deviceID, 'I') +
      msgbuffers.size(self._successful, 'B') +
      msgbuffers.size_farray(self._toGameCLADHash, 'B', 16) +
      msgbuffers.size_farray(self._toEngineCLADHash, 'B', 16) +
      msgbuffers.size_string(self._buildVersion, 'B'))

  def __str__(self):
    return '{type}(reserved={reserved}, connectionType={connectionType}, deviceID={deviceID}, successful={successful}, toGameCLADHash={toGameCLADHash}, toEngineCLADHash={toEngineCLADHash}, buildVersion={buildVersion})'.format(
      type=type(self).__name__,
      reserved=self._reserved,
      connectionType=self._connectionType,
      deviceID=self._deviceID,
      successful=self._successful,
      toGameCLADHash=msgbuffers.shorten_sequence(self._toGameCLADHash),
      toEngineCLADHash=msgbuffers.shorten_sequence(self._toEngineCLADHash),
      buildVersion=msgbuffers.shorten_string(self._buildVersion))

  def __repr__(self):
    return '{type}(reserved={reserved}, connectionType={connectionType}, deviceID={deviceID}, successful={successful}, toGameCLADHash={toGameCLADHash}, toEngineCLADHash={toEngineCLADHash}, buildVersion={buildVersion})'.format(
      type=type(self).__name__,
      reserved=repr(self._reserved),
      connectionType=repr(self._connectionType),
      deviceID=repr(self._deviceID),
      successful=repr(self._successful),
      toGameCLADHash=repr(self._toGameCLADHash),
      toEngineCLADHash=repr(self._toEngineCLADHash),
      buildVersion=repr(self._buildVersion))

Anki.Vector.ExternalInterface.UiDeviceConnected = UiDeviceConnected
del UiDeviceConnected


class GoingToSleep(object):
  "Generated message-passing message."

  __slots__ = (
    '_triggeredFromVoiceCommand', # bool
  )

  @property
  def triggeredFromVoiceCommand(self):
    "bool triggeredFromVoiceCommand struct property."
    return self._triggeredFromVoiceCommand

  @triggeredFromVoiceCommand.setter
  def triggeredFromVoiceCommand(self, value):
    self._triggeredFromVoiceCommand = msgbuffers.validate_bool(
      'GoingToSleep.triggeredFromVoiceCommand', value)

  def __init__(self, triggeredFromVoiceCommand=False):
    self.triggeredFromVoiceCommand = triggeredFromVoiceCommand

  @classmethod
  def unpack(cls, buffer):
    "Reads a new GoingToSleep from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('GoingToSleep.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new GoingToSleep from the given BinaryReader."
    _triggeredFromVoiceCommand = bool(reader.read('b'))
    return cls(_triggeredFromVoiceCommand)

  def pack(self):
    "Writes the current GoingToSleep, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current GoingToSleep to the given BinaryWriter."
    writer.write(int(self._triggeredFromVoiceCommand), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._triggeredFromVoiceCommand == other._triggeredFromVoiceCommand
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._triggeredFromVoiceCommand, 'b'))

  def __str__(self):
    return '{type}(triggeredFromVoiceCommand={triggeredFromVoiceCommand})'.format(
      type=type(self).__name__,
      triggeredFromVoiceCommand=self._triggeredFromVoiceCommand)

  def __repr__(self):
    return '{type}(triggeredFromVoiceCommand={triggeredFromVoiceCommand})'.format(
      type=type(self).__name__,
      triggeredFromVoiceCommand=repr(self._triggeredFromVoiceCommand))

Anki.Vector.ExternalInterface.GoingToSleep = GoingToSleep
del GoingToSleep


class CurrentCameraParams(object):
  "Generated message-passing message."

  __slots__ = (
    '_cameraGain',          # float_32
    '_exposure_ms',         # uint_16
    '_autoExposureEnabled', # bool
  )

  @property
  def cameraGain(self):
    "float_32 cameraGain struct property."
    return self._cameraGain

  @cameraGain.setter
  def cameraGain(self, value):
    self._cameraGain = msgbuffers.validate_float(
      'CurrentCameraParams.cameraGain', value, 'f')

  @property
  def exposure_ms(self):
    "uint_16 exposure_ms struct property."
    return self._exposure_ms

  @exposure_ms.setter
  def exposure_ms(self, value):
    self._exposure_ms = msgbuffers.validate_integer(
      'CurrentCameraParams.exposure_ms', value, 0, 65535)

  @property
  def autoExposureEnabled(self):
    "bool autoExposureEnabled struct property."
    return self._autoExposureEnabled

  @autoExposureEnabled.setter
  def autoExposureEnabled(self, value):
    self._autoExposureEnabled = msgbuffers.validate_bool(
      'CurrentCameraParams.autoExposureEnabled', value)

  def __init__(self, cameraGain=0.0, exposure_ms=0, autoExposureEnabled=False):
    self.cameraGain = cameraGain
    self.exposure_ms = exposure_ms
    self.autoExposureEnabled = autoExposureEnabled

  @classmethod
  def unpack(cls, buffer):
    "Reads a new CurrentCameraParams from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('CurrentCameraParams.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new CurrentCameraParams from the given BinaryReader."
    _cameraGain = reader.read('f')
    _exposure_ms = reader.read('H')
    _autoExposureEnabled = bool(reader.read('b'))
    return cls(_cameraGain, _exposure_ms, _autoExposureEnabled)

  def pack(self):
    "Writes the current CurrentCameraParams, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current CurrentCameraParams to the given BinaryWriter."
    writer.write(self._cameraGain, 'f')
    writer.write(self._exposure_ms, 'H')
    writer.write(int(self._autoExposureEnabled), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._cameraGain == other._cameraGain and
        self._exposure_ms == other._exposure_ms and
        self._autoExposureEnabled == other._autoExposureEnabled)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._cameraGain, 'f') +
      msgbuffers.size(self._exposure_ms, 'H') +
      msgbuffers.size(self._autoExposureEnabled, 'b'))

  def __str__(self):
    return '{type}(cameraGain={cameraGain}, exposure_ms={exposure_ms}, autoExposureEnabled={autoExposureEnabled})'.format(
      type=type(self).__name__,
      cameraGain=self._cameraGain,
      exposure_ms=self._exposure_ms,
      autoExposureEnabled=self._autoExposureEnabled)

  def __repr__(self):
    return '{type}(cameraGain={cameraGain}, exposure_ms={exposure_ms}, autoExposureEnabled={autoExposureEnabled})'.format(
      type=type(self).__name__,
      cameraGain=repr(self._cameraGain),
      exposure_ms=repr(self._exposure_ms),
      autoExposureEnabled=repr(self._autoExposureEnabled))

Anki.Vector.ExternalInterface.CurrentCameraParams = CurrentCameraParams
del CurrentCameraParams


class CameraConfig(object):
  "Generated message-passing structure."

  __slots__ = (
    '_focalLengthX',             # float_32
    '_focalLengthY',             # float_32
    '_centerX',                  # float_32
    '_centerY',                  # float_32
    '_fovX',                     # float_32
    '_fovY',                     # float_32
    '_minCameraExposureTime_ms', # int_32
    '_maxCameraExposureTime_ms', # int_32
    '_minCameraGain',            # float_32
    '_maxCameraGain',            # float_32
  )

  @property
  def focalLengthX(self):
    "float_32 focalLengthX struct property."
    return self._focalLengthX

  @focalLengthX.setter
  def focalLengthX(self, value):
    self._focalLengthX = msgbuffers.validate_float(
      'CameraConfig.focalLengthX', value, 'f')

  @property
  def focalLengthY(self):
    "float_32 focalLengthY struct property."
    return self._focalLengthY

  @focalLengthY.setter
  def focalLengthY(self, value):
    self._focalLengthY = msgbuffers.validate_float(
      'CameraConfig.focalLengthY', value, 'f')

  @property
  def centerX(self):
    "float_32 centerX struct property."
    return self._centerX

  @centerX.setter
  def centerX(self, value):
    self._centerX = msgbuffers.validate_float(
      'CameraConfig.centerX', value, 'f')

  @property
  def centerY(self):
    "float_32 centerY struct property."
    return self._centerY

  @centerY.setter
  def centerY(self, value):
    self._centerY = msgbuffers.validate_float(
      'CameraConfig.centerY', value, 'f')

  @property
  def fovX(self):
    "float_32 fovX struct property."
    return self._fovX

  @fovX.setter
  def fovX(self, value):
    self._fovX = msgbuffers.validate_float(
      'CameraConfig.fovX', value, 'f')

  @property
  def fovY(self):
    "float_32 fovY struct property."
    return self._fovY

  @fovY.setter
  def fovY(self, value):
    self._fovY = msgbuffers.validate_float(
      'CameraConfig.fovY', value, 'f')

  @property
  def minCameraExposureTime_ms(self):
    "int_32 minCameraExposureTime_ms struct property."
    return self._minCameraExposureTime_ms

  @minCameraExposureTime_ms.setter
  def minCameraExposureTime_ms(self, value):
    self._minCameraExposureTime_ms = msgbuffers.validate_integer(
      'CameraConfig.minCameraExposureTime_ms', value, -2147483648, 2147483647)

  @property
  def maxCameraExposureTime_ms(self):
    "int_32 maxCameraExposureTime_ms struct property."
    return self._maxCameraExposureTime_ms

  @maxCameraExposureTime_ms.setter
  def maxCameraExposureTime_ms(self, value):
    self._maxCameraExposureTime_ms = msgbuffers.validate_integer(
      'CameraConfig.maxCameraExposureTime_ms', value, -2147483648, 2147483647)

  @property
  def minCameraGain(self):
    "float_32 minCameraGain struct property."
    return self._minCameraGain

  @minCameraGain.setter
  def minCameraGain(self, value):
    self._minCameraGain = msgbuffers.validate_float(
      'CameraConfig.minCameraGain', value, 'f')

  @property
  def maxCameraGain(self):
    "float_32 maxCameraGain struct property."
    return self._maxCameraGain

  @maxCameraGain.setter
  def maxCameraGain(self, value):
    self._maxCameraGain = msgbuffers.validate_float(
      'CameraConfig.maxCameraGain', value, 'f')

  def __init__(self, focalLengthX=0.0, focalLengthY=0.0, centerX=0.0, centerY=0.0, fovX=0.0, fovY=0.0, minCameraExposureTime_ms=0, maxCameraExposureTime_ms=0, minCameraGain=0.0, maxCameraGain=0.0):
    self.focalLengthX = focalLengthX
    self.focalLengthY = focalLengthY
    self.centerX = centerX
    self.centerY = centerY
    self.fovX = fovX
    self.fovY = fovY
    self.minCameraExposureTime_ms = minCameraExposureTime_ms
    self.maxCameraExposureTime_ms = maxCameraExposureTime_ms
    self.minCameraGain = minCameraGain
    self.maxCameraGain = maxCameraGain

  @classmethod
  def unpack(cls, buffer):
    "Reads a new CameraConfig from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('CameraConfig.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new CameraConfig from the given BinaryReader."
    _focalLengthX = reader.read('f')
    _focalLengthY = reader.read('f')
    _centerX = reader.read('f')
    _centerY = reader.read('f')
    _fovX = reader.read('f')
    _fovY = reader.read('f')
    _minCameraExposureTime_ms = reader.read('i')
    _maxCameraExposureTime_ms = reader.read('i')
    _minCameraGain = reader.read('f')
    _maxCameraGain = reader.read('f')
    return cls(_focalLengthX, _focalLengthY, _centerX, _centerY, _fovX, _fovY, _minCameraExposureTime_ms, _maxCameraExposureTime_ms, _minCameraGain, _maxCameraGain)

  def pack(self):
    "Writes the current CameraConfig, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current CameraConfig to the given BinaryWriter."
    writer.write(self._focalLengthX, 'f')
    writer.write(self._focalLengthY, 'f')
    writer.write(self._centerX, 'f')
    writer.write(self._centerY, 'f')
    writer.write(self._fovX, 'f')
    writer.write(self._fovY, 'f')
    writer.write(self._minCameraExposureTime_ms, 'i')
    writer.write(self._maxCameraExposureTime_ms, 'i')
    writer.write(self._minCameraGain, 'f')
    writer.write(self._maxCameraGain, 'f')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._focalLengthX == other._focalLengthX and
        self._focalLengthY == other._focalLengthY and
        self._centerX == other._centerX and
        self._centerY == other._centerY and
        self._fovX == other._fovX and
        self._fovY == other._fovY and
        self._minCameraExposureTime_ms == other._minCameraExposureTime_ms and
        self._maxCameraExposureTime_ms == other._maxCameraExposureTime_ms and
        self._minCameraGain == other._minCameraGain and
        self._maxCameraGain == other._maxCameraGain)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._focalLengthX, 'f') +
      msgbuffers.size(self._focalLengthY, 'f') +
      msgbuffers.size(self._centerX, 'f') +
      msgbuffers.size(self._centerY, 'f') +
      msgbuffers.size(self._fovX, 'f') +
      msgbuffers.size(self._fovY, 'f') +
      msgbuffers.size(self._minCameraExposureTime_ms, 'i') +
      msgbuffers.size(self._maxCameraExposureTime_ms, 'i') +
      msgbuffers.size(self._minCameraGain, 'f') +
      msgbuffers.size(self._maxCameraGain, 'f'))

  def __str__(self):
    return '{type}(focalLengthX={focalLengthX}, focalLengthY={focalLengthY}, centerX={centerX}, centerY={centerY}, fovX={fovX}, fovY={fovY}, minCameraExposureTime_ms={minCameraExposureTime_ms}, maxCameraExposureTime_ms={maxCameraExposureTime_ms}, minCameraGain={minCameraGain}, maxCameraGain={maxCameraGain})'.format(
      type=type(self).__name__,
      focalLengthX=self._focalLengthX,
      focalLengthY=self._focalLengthY,
      centerX=self._centerX,
      centerY=self._centerY,
      fovX=self._fovX,
      fovY=self._fovY,
      minCameraExposureTime_ms=self._minCameraExposureTime_ms,
      maxCameraExposureTime_ms=self._maxCameraExposureTime_ms,
      minCameraGain=self._minCameraGain,
      maxCameraGain=self._maxCameraGain)

  def __repr__(self):
    return '{type}(focalLengthX={focalLengthX}, focalLengthY={focalLengthY}, centerX={centerX}, centerY={centerY}, fovX={fovX}, fovY={fovY}, minCameraExposureTime_ms={minCameraExposureTime_ms}, maxCameraExposureTime_ms={maxCameraExposureTime_ms}, minCameraGain={minCameraGain}, maxCameraGain={maxCameraGain})'.format(
      type=type(self).__name__,
      focalLengthX=repr(self._focalLengthX),
      focalLengthY=repr(self._focalLengthY),
      centerX=repr(self._centerX),
      centerY=repr(self._centerY),
      fovX=repr(self._fovX),
      fovY=repr(self._fovY),
      minCameraExposureTime_ms=repr(self._minCameraExposureTime_ms),
      maxCameraExposureTime_ms=repr(self._maxCameraExposureTime_ms),
      minCameraGain=repr(self._minCameraGain),
      maxCameraGain=repr(self._maxCameraGain))

Anki.Vector.ExternalInterface.CameraConfig = CameraConfig
del CameraConfig


class PerRobotSettings(object):
  "Generated message-passing message."

  __slots__ = (
    '_serialNumberHead', # uint_32
    '_cameraConfig',     # Anki.Vector.ExternalInterface.CameraConfig
  )

  @property
  def serialNumberHead(self):
    "uint_32 serialNumberHead struct property."
    return self._serialNumberHead

  @serialNumberHead.setter
  def serialNumberHead(self, value):
    self._serialNumberHead = msgbuffers.validate_integer(
      'PerRobotSettings.serialNumberHead', value, 0, 4294967295)

  @property
  def cameraConfig(self):
    "Anki.Vector.ExternalInterface.CameraConfig cameraConfig struct property."
    return self._cameraConfig

  @cameraConfig.setter
  def cameraConfig(self, value):
    self._cameraConfig = msgbuffers.validate_object(
      'PerRobotSettings.cameraConfig', value, Anki.Vector.ExternalInterface.CameraConfig)

  def __init__(self, serialNumberHead=0, cameraConfig=Anki.Vector.ExternalInterface.CameraConfig()):
    self.serialNumberHead = serialNumberHead
    self.cameraConfig = cameraConfig

  @classmethod
  def unpack(cls, buffer):
    "Reads a new PerRobotSettings from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('PerRobotSettings.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new PerRobotSettings from the given BinaryReader."
    _serialNumberHead = reader.read('I')
    _cameraConfig = reader.read_object(Anki.Vector.ExternalInterface.CameraConfig.unpack_from)
    return cls(_serialNumberHead, _cameraConfig)

  def pack(self):
    "Writes the current PerRobotSettings, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current PerRobotSettings to the given BinaryWriter."
    writer.write(self._serialNumberHead, 'I')
    writer.write_object(self._cameraConfig)

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._serialNumberHead == other._serialNumberHead and
        self._cameraConfig == other._cameraConfig)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._serialNumberHead, 'I') +
      msgbuffers.size_object(self._cameraConfig))

  def __str__(self):
    return '{type}(serialNumberHead={serialNumberHead}, cameraConfig={cameraConfig})'.format(
      type=type(self).__name__,
      serialNumberHead=self._serialNumberHead,
      cameraConfig=self._cameraConfig)

  def __repr__(self):
    return '{type}(serialNumberHead={serialNumberHead}, cameraConfig={cameraConfig})'.format(
      type=type(self).__name__,
      serialNumberHead=repr(self._serialNumberHead),
      cameraConfig=repr(self._cameraConfig))

Anki.Vector.ExternalInterface.PerRobotSettings = PerRobotSettings
del PerRobotSettings


class RobotState(object):
  "Generated message-passing message."

  __slots__ = (
    '_pose',                  # Anki.PoseStruct3d
    '_poseAngle_rad',         # float_32
    '_posePitch_rad',         # float_32
    '_leftWheelSpeed_mmps',   # float_32
    '_rightWheelSpeed_mmps',  # float_32
    '_headAngle_rad',         # float_32
    '_liftHeight_mm',         # float_32
    '_batteryVoltage',        # float_32
    '_accel',                 # Anki.Vector.AccelData
    '_gyro',                  # Anki.Vector.GyroData
    '_carryingObjectID',      # int_32
    '_carryingObjectOnTopID', # int_32
    '_headTrackingObjectID',  # int_32
    '_localizedToObjectID',   # int_32
    '_lastImageTimeStamp',    # uint_32
    '_status',                # uint_32
  )

  @property
  def pose(self):
    "Anki.PoseStruct3d pose struct property."
    return self._pose

  @pose.setter
  def pose(self, value):
    self._pose = msgbuffers.validate_object(
      'RobotState.pose', value, Anki.PoseStruct3d)

  @property
  def poseAngle_rad(self):
    "float_32 poseAngle_rad struct property."
    return self._poseAngle_rad

  @poseAngle_rad.setter
  def poseAngle_rad(self, value):
    self._poseAngle_rad = msgbuffers.validate_float(
      'RobotState.poseAngle_rad', value, 'f')

  @property
  def posePitch_rad(self):
    "float_32 posePitch_rad struct property."
    return self._posePitch_rad

  @posePitch_rad.setter
  def posePitch_rad(self, value):
    self._posePitch_rad = msgbuffers.validate_float(
      'RobotState.posePitch_rad', value, 'f')

  @property
  def leftWheelSpeed_mmps(self):
    "float_32 leftWheelSpeed_mmps struct property."
    return self._leftWheelSpeed_mmps

  @leftWheelSpeed_mmps.setter
  def leftWheelSpeed_mmps(self, value):
    self._leftWheelSpeed_mmps = msgbuffers.validate_float(
      'RobotState.leftWheelSpeed_mmps', value, 'f')

  @property
  def rightWheelSpeed_mmps(self):
    "float_32 rightWheelSpeed_mmps struct property."
    return self._rightWheelSpeed_mmps

  @rightWheelSpeed_mmps.setter
  def rightWheelSpeed_mmps(self, value):
    self._rightWheelSpeed_mmps = msgbuffers.validate_float(
      'RobotState.rightWheelSpeed_mmps', value, 'f')

  @property
  def headAngle_rad(self):
    "float_32 headAngle_rad struct property."
    return self._headAngle_rad

  @headAngle_rad.setter
  def headAngle_rad(self, value):
    self._headAngle_rad = msgbuffers.validate_float(
      'RobotState.headAngle_rad', value, 'f')

  @property
  def liftHeight_mm(self):
    "float_32 liftHeight_mm struct property."
    return self._liftHeight_mm

  @liftHeight_mm.setter
  def liftHeight_mm(self, value):
    self._liftHeight_mm = msgbuffers.validate_float(
      'RobotState.liftHeight_mm', value, 'f')

  @property
  def batteryVoltage(self):
    "float_32 batteryVoltage struct property."
    return self._batteryVoltage

  @batteryVoltage.setter
  def batteryVoltage(self, value):
    self._batteryVoltage = msgbuffers.validate_float(
      'RobotState.batteryVoltage', value, 'f')

  @property
  def accel(self):
    "Anki.Vector.AccelData accel struct property."
    return self._accel

  @accel.setter
  def accel(self, value):
    self._accel = msgbuffers.validate_object(
      'RobotState.accel', value, Anki.Vector.AccelData)

  @property
  def gyro(self):
    "Anki.Vector.GyroData gyro struct property."
    return self._gyro

  @gyro.setter
  def gyro(self, value):
    self._gyro = msgbuffers.validate_object(
      'RobotState.gyro', value, Anki.Vector.GyroData)

  @property
  def carryingObjectID(self):
    "int_32 carryingObjectID struct property."
    return self._carryingObjectID

  @carryingObjectID.setter
  def carryingObjectID(self, value):
    self._carryingObjectID = msgbuffers.validate_integer(
      'RobotState.carryingObjectID', value, -2147483648, 2147483647)

  @property
  def carryingObjectOnTopID(self):
    "int_32 carryingObjectOnTopID struct property."
    return self._carryingObjectOnTopID

  @carryingObjectOnTopID.setter
  def carryingObjectOnTopID(self, value):
    self._carryingObjectOnTopID = msgbuffers.validate_integer(
      'RobotState.carryingObjectOnTopID', value, -2147483648, 2147483647)

  @property
  def headTrackingObjectID(self):
    "int_32 headTrackingObjectID struct property."
    return self._headTrackingObjectID

  @headTrackingObjectID.setter
  def headTrackingObjectID(self, value):
    self._headTrackingObjectID = msgbuffers.validate_integer(
      'RobotState.headTrackingObjectID', value, -2147483648, 2147483647)

  @property
  def localizedToObjectID(self):
    "int_32 localizedToObjectID struct property."
    return self._localizedToObjectID

  @localizedToObjectID.setter
  def localizedToObjectID(self, value):
    self._localizedToObjectID = msgbuffers.validate_integer(
      'RobotState.localizedToObjectID', value, -2147483648, 2147483647)

  @property
  def lastImageTimeStamp(self):
    "uint_32 lastImageTimeStamp struct property."
    return self._lastImageTimeStamp

  @lastImageTimeStamp.setter
  def lastImageTimeStamp(self, value):
    self._lastImageTimeStamp = msgbuffers.validate_integer(
      'RobotState.lastImageTimeStamp', value, 0, 4294967295)

  @property
  def status(self):
    "uint_32 status struct property."
    return self._status

  @status.setter
  def status(self, value):
    self._status = msgbuffers.validate_integer(
      'RobotState.status', value, 0, 4294967295)

  def __init__(self, pose=Anki.PoseStruct3d(), poseAngle_rad=0.0, posePitch_rad=0.0, leftWheelSpeed_mmps=0.0, rightWheelSpeed_mmps=0.0, headAngle_rad=0.0, liftHeight_mm=0.0, batteryVoltage=0.0, accel=Anki.Vector.AccelData(), gyro=Anki.Vector.GyroData(), carryingObjectID=0, carryingObjectOnTopID=0, headTrackingObjectID=0, localizedToObjectID=0, lastImageTimeStamp=0, status=0):
    self.pose = pose
    self.poseAngle_rad = poseAngle_rad
    self.posePitch_rad = posePitch_rad
    self.leftWheelSpeed_mmps = leftWheelSpeed_mmps
    self.rightWheelSpeed_mmps = rightWheelSpeed_mmps
    self.headAngle_rad = headAngle_rad
    self.liftHeight_mm = liftHeight_mm
    self.batteryVoltage = batteryVoltage
    self.accel = accel
    self.gyro = gyro
    self.carryingObjectID = carryingObjectID
    self.carryingObjectOnTopID = carryingObjectOnTopID
    self.headTrackingObjectID = headTrackingObjectID
    self.localizedToObjectID = localizedToObjectID
    self.lastImageTimeStamp = lastImageTimeStamp
    self.status = status

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RobotState from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RobotState.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new RobotState from the given BinaryReader."
    _pose = reader.read_object(Anki.PoseStruct3d.unpack_from)
    _poseAngle_rad = reader.read('f')
    _posePitch_rad = reader.read('f')
    _leftWheelSpeed_mmps = reader.read('f')
    _rightWheelSpeed_mmps = reader.read('f')
    _headAngle_rad = reader.read('f')
    _liftHeight_mm = reader.read('f')
    _batteryVoltage = reader.read('f')
    _accel = reader.read_object(Anki.Vector.AccelData.unpack_from)
    _gyro = reader.read_object(Anki.Vector.GyroData.unpack_from)
    _carryingObjectID = reader.read('i')
    _carryingObjectOnTopID = reader.read('i')
    _headTrackingObjectID = reader.read('i')
    _localizedToObjectID = reader.read('i')
    _lastImageTimeStamp = reader.read('I')
    _status = reader.read('I')
    return cls(_pose, _poseAngle_rad, _posePitch_rad, _leftWheelSpeed_mmps, _rightWheelSpeed_mmps, _headAngle_rad, _liftHeight_mm, _batteryVoltage, _accel, _gyro, _carryingObjectID, _carryingObjectOnTopID, _headTrackingObjectID, _localizedToObjectID, _lastImageTimeStamp, _status)

  def pack(self):
    "Writes the current RobotState, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current RobotState to the given BinaryWriter."
    writer.write_object(self._pose)
    writer.write(self._poseAngle_rad, 'f')
    writer.write(self._posePitch_rad, 'f')
    writer.write(self._leftWheelSpeed_mmps, 'f')
    writer.write(self._rightWheelSpeed_mmps, 'f')
    writer.write(self._headAngle_rad, 'f')
    writer.write(self._liftHeight_mm, 'f')
    writer.write(self._batteryVoltage, 'f')
    writer.write_object(self._accel)
    writer.write_object(self._gyro)
    writer.write(self._carryingObjectID, 'i')
    writer.write(self._carryingObjectOnTopID, 'i')
    writer.write(self._headTrackingObjectID, 'i')
    writer.write(self._localizedToObjectID, 'i')
    writer.write(self._lastImageTimeStamp, 'I')
    writer.write(self._status, 'I')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._pose == other._pose and
        self._poseAngle_rad == other._poseAngle_rad and
        self._posePitch_rad == other._posePitch_rad and
        self._leftWheelSpeed_mmps == other._leftWheelSpeed_mmps and
        self._rightWheelSpeed_mmps == other._rightWheelSpeed_mmps and
        self._headAngle_rad == other._headAngle_rad and
        self._liftHeight_mm == other._liftHeight_mm and
        self._batteryVoltage == other._batteryVoltage and
        self._accel == other._accel and
        self._gyro == other._gyro and
        self._carryingObjectID == other._carryingObjectID and
        self._carryingObjectOnTopID == other._carryingObjectOnTopID and
        self._headTrackingObjectID == other._headTrackingObjectID and
        self._localizedToObjectID == other._localizedToObjectID and
        self._lastImageTimeStamp == other._lastImageTimeStamp and
        self._status == other._status)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size_object(self._pose) +
      msgbuffers.size(self._poseAngle_rad, 'f') +
      msgbuffers.size(self._posePitch_rad, 'f') +
      msgbuffers.size(self._leftWheelSpeed_mmps, 'f') +
      msgbuffers.size(self._rightWheelSpeed_mmps, 'f') +
      msgbuffers.size(self._headAngle_rad, 'f') +
      msgbuffers.size(self._liftHeight_mm, 'f') +
      msgbuffers.size(self._batteryVoltage, 'f') +
      msgbuffers.size_object(self._accel) +
      msgbuffers.size_object(self._gyro) +
      msgbuffers.size(self._carryingObjectID, 'i') +
      msgbuffers.size(self._carryingObjectOnTopID, 'i') +
      msgbuffers.size(self._headTrackingObjectID, 'i') +
      msgbuffers.size(self._localizedToObjectID, 'i') +
      msgbuffers.size(self._lastImageTimeStamp, 'I') +
      msgbuffers.size(self._status, 'I'))

  def __str__(self):
    return '{type}(pose={pose}, poseAngle_rad={poseAngle_rad}, posePitch_rad={posePitch_rad}, leftWheelSpeed_mmps={leftWheelSpeed_mmps}, rightWheelSpeed_mmps={rightWheelSpeed_mmps}, headAngle_rad={headAngle_rad}, liftHeight_mm={liftHeight_mm}, batteryVoltage={batteryVoltage}, accel={accel}, gyro={gyro}, carryingObjectID={carryingObjectID}, carryingObjectOnTopID={carryingObjectOnTopID}, headTrackingObjectID={headTrackingObjectID}, localizedToObjectID={localizedToObjectID}, lastImageTimeStamp={lastImageTimeStamp}, status={status})'.format(
      type=type(self).__name__,
      pose=self._pose,
      poseAngle_rad=self._poseAngle_rad,
      posePitch_rad=self._posePitch_rad,
      leftWheelSpeed_mmps=self._leftWheelSpeed_mmps,
      rightWheelSpeed_mmps=self._rightWheelSpeed_mmps,
      headAngle_rad=self._headAngle_rad,
      liftHeight_mm=self._liftHeight_mm,
      batteryVoltage=self._batteryVoltage,
      accel=self._accel,
      gyro=self._gyro,
      carryingObjectID=self._carryingObjectID,
      carryingObjectOnTopID=self._carryingObjectOnTopID,
      headTrackingObjectID=self._headTrackingObjectID,
      localizedToObjectID=self._localizedToObjectID,
      lastImageTimeStamp=self._lastImageTimeStamp,
      status=self._status)

  def __repr__(self):
    return '{type}(pose={pose}, poseAngle_rad={poseAngle_rad}, posePitch_rad={posePitch_rad}, leftWheelSpeed_mmps={leftWheelSpeed_mmps}, rightWheelSpeed_mmps={rightWheelSpeed_mmps}, headAngle_rad={headAngle_rad}, liftHeight_mm={liftHeight_mm}, batteryVoltage={batteryVoltage}, accel={accel}, gyro={gyro}, carryingObjectID={carryingObjectID}, carryingObjectOnTopID={carryingObjectOnTopID}, headTrackingObjectID={headTrackingObjectID}, localizedToObjectID={localizedToObjectID}, lastImageTimeStamp={lastImageTimeStamp}, status={status})'.format(
      type=type(self).__name__,
      pose=repr(self._pose),
      poseAngle_rad=repr(self._poseAngle_rad),
      posePitch_rad=repr(self._posePitch_rad),
      leftWheelSpeed_mmps=repr(self._leftWheelSpeed_mmps),
      rightWheelSpeed_mmps=repr(self._rightWheelSpeed_mmps),
      headAngle_rad=repr(self._headAngle_rad),
      liftHeight_mm=repr(self._liftHeight_mm),
      batteryVoltage=repr(self._batteryVoltage),
      accel=repr(self._accel),
      gyro=repr(self._gyro),
      carryingObjectID=repr(self._carryingObjectID),
      carryingObjectOnTopID=repr(self._carryingObjectOnTopID),
      headTrackingObjectID=repr(self._headTrackingObjectID),
      localizedToObjectID=repr(self._localizedToObjectID),
      lastImageTimeStamp=repr(self._lastImageTimeStamp),
      status=repr(self._status))

Anki.Vector.ExternalInterface.RobotState = RobotState
del RobotState


class RobotDelocalized(object):
  "Generated message-passing message."

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RobotDelocalized from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RobotDelocalized.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new RobotDelocalized from the given BinaryReader."
    return cls()

  def pack(self):
    "Writes the current RobotDelocalized, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current RobotDelocalized to the given BinaryWriter."

  def __eq__(self, other):
    if type(self) is type(other):
      return True
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return 0

  def __str__(self):
    return '{type}()'.format(type=type(self).__name__)

  def __repr__(self):
    return '{type}()'.format(type=type(self).__name__)

Anki.Vector.ExternalInterface.RobotDelocalized = RobotDelocalized
del RobotDelocalized


class RobotStopped(object):
  "Generated message-passing message."

  __slots__ = (
    '_reason',             # Anki.Vector.StopReason
    '_cliffDetectedFlags', # uint_8
    '_whiteDetectedFlags', # uint_8
  )

  @property
  def reason(self):
    "Anki.Vector.StopReason reason struct property."
    return self._reason

  @reason.setter
  def reason(self, value):
    self._reason = msgbuffers.validate_integer(
      'RobotStopped.reason', value, 0, 255)

  @property
  def cliffDetectedFlags(self):
    "uint_8 cliffDetectedFlags struct property."
    return self._cliffDetectedFlags

  @cliffDetectedFlags.setter
  def cliffDetectedFlags(self, value):
    self._cliffDetectedFlags = msgbuffers.validate_integer(
      'RobotStopped.cliffDetectedFlags', value, 0, 255)

  @property
  def whiteDetectedFlags(self):
    "uint_8 whiteDetectedFlags struct property."
    return self._whiteDetectedFlags

  @whiteDetectedFlags.setter
  def whiteDetectedFlags(self, value):
    self._whiteDetectedFlags = msgbuffers.validate_integer(
      'RobotStopped.whiteDetectedFlags', value, 0, 255)

  def __init__(self, reason=Anki.Vector.StopReason.CLIFF, cliffDetectedFlags=0, whiteDetectedFlags=0):
    self.reason = reason
    self.cliffDetectedFlags = cliffDetectedFlags
    self.whiteDetectedFlags = whiteDetectedFlags

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RobotStopped from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RobotStopped.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new RobotStopped from the given BinaryReader."
    _reason = reader.read('B')
    _cliffDetectedFlags = reader.read('B')
    _whiteDetectedFlags = reader.read('B')
    return cls(_reason, _cliffDetectedFlags, _whiteDetectedFlags)

  def pack(self):
    "Writes the current RobotStopped, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current RobotStopped to the given BinaryWriter."
    writer.write(self._reason, 'B')
    writer.write(self._cliffDetectedFlags, 'B')
    writer.write(self._whiteDetectedFlags, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._reason == other._reason and
        self._cliffDetectedFlags == other._cliffDetectedFlags and
        self._whiteDetectedFlags == other._whiteDetectedFlags)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._reason, 'B') +
      msgbuffers.size(self._cliffDetectedFlags, 'B') +
      msgbuffers.size(self._whiteDetectedFlags, 'B'))

  def __str__(self):
    return '{type}(reason={reason}, cliffDetectedFlags={cliffDetectedFlags}, whiteDetectedFlags={whiteDetectedFlags})'.format(
      type=type(self).__name__,
      reason=self._reason,
      cliffDetectedFlags=self._cliffDetectedFlags,
      whiteDetectedFlags=self._whiteDetectedFlags)

  def __repr__(self):
    return '{type}(reason={reason}, cliffDetectedFlags={cliffDetectedFlags}, whiteDetectedFlags={whiteDetectedFlags})'.format(
      type=type(self).__name__,
      reason=repr(self._reason),
      cliffDetectedFlags=repr(self._cliffDetectedFlags),
      whiteDetectedFlags=repr(self._whiteDetectedFlags))

Anki.Vector.ExternalInterface.RobotStopped = RobotStopped
del RobotStopped


class RobotOffTreadsStateChanged(object):
  "Generated message-passing message."

  __slots__ = (
    '_treadsState', # Anki.Vector.OffTreadsState
  )

  @property
  def treadsState(self):
    "Anki.Vector.OffTreadsState treadsState struct property."
    return self._treadsState

  @treadsState.setter
  def treadsState(self, value):
    self._treadsState = msgbuffers.validate_integer(
      'RobotOffTreadsStateChanged.treadsState', value, -128, 127)

  def __init__(self, treadsState=Anki.Vector.OffTreadsState.OnTreads):
    self.treadsState = treadsState

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RobotOffTreadsStateChanged from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RobotOffTreadsStateChanged.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new RobotOffTreadsStateChanged from the given BinaryReader."
    _treadsState = reader.read('b')
    return cls(_treadsState)

  def pack(self):
    "Writes the current RobotOffTreadsStateChanged, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current RobotOffTreadsStateChanged to the given BinaryWriter."
    writer.write(self._treadsState, 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._treadsState == other._treadsState
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._treadsState, 'b'))

  def __str__(self):
    return '{type}(treadsState={treadsState})'.format(
      type=type(self).__name__,
      treadsState=self._treadsState)

  def __repr__(self):
    return '{type}(treadsState={treadsState})'.format(
      type=type(self).__name__,
      treadsState=repr(self._treadsState))

Anki.Vector.ExternalInterface.RobotOffTreadsStateChanged = RobotOffTreadsStateChanged
del RobotOffTreadsStateChanged


class RobotOnChargerPlatformEvent(object):
  "Generated message-passing message."

  __slots__ = (
    '_onCharger', # bool
  )

  @property
  def onCharger(self):
    "bool onCharger struct property."
    return self._onCharger

  @onCharger.setter
  def onCharger(self, value):
    self._onCharger = msgbuffers.validate_bool(
      'RobotOnChargerPlatformEvent.onCharger', value)

  def __init__(self, onCharger=False):
    self.onCharger = onCharger

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RobotOnChargerPlatformEvent from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RobotOnChargerPlatformEvent.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new RobotOnChargerPlatformEvent from the given BinaryReader."
    _onCharger = bool(reader.read('b'))
    return cls(_onCharger)

  def pack(self):
    "Writes the current RobotOnChargerPlatformEvent, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current RobotOnChargerPlatformEvent to the given BinaryWriter."
    writer.write(int(self._onCharger), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._onCharger == other._onCharger
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._onCharger, 'b'))

  def __str__(self):
    return '{type}(onCharger={onCharger})'.format(
      type=type(self).__name__,
      onCharger=self._onCharger)

  def __repr__(self):
    return '{type}(onCharger={onCharger})'.format(
      type=type(self).__name__,
      onCharger=repr(self._onCharger))

Anki.Vector.ExternalInterface.RobotOnChargerPlatformEvent = RobotOnChargerPlatformEvent
del RobotOnChargerPlatformEvent


class ChargerEvent(object):
  "Generated message-passing message."

  __slots__ = (
    '_onCharger', # bool
  )

  @property
  def onCharger(self):
    "bool onCharger struct property."
    return self._onCharger

  @onCharger.setter
  def onCharger(self, value):
    self._onCharger = msgbuffers.validate_bool(
      'ChargerEvent.onCharger', value)

  def __init__(self, onCharger=False):
    self.onCharger = onCharger

  @classmethod
  def unpack(cls, buffer):
    "Reads a new ChargerEvent from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('ChargerEvent.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new ChargerEvent from the given BinaryReader."
    _onCharger = bool(reader.read('b'))
    return cls(_onCharger)

  def pack(self):
    "Writes the current ChargerEvent, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current ChargerEvent to the given BinaryWriter."
    writer.write(int(self._onCharger), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._onCharger == other._onCharger
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._onCharger, 'b'))

  def __str__(self):
    return '{type}(onCharger={onCharger})'.format(
      type=type(self).__name__,
      onCharger=self._onCharger)

  def __repr__(self):
    return '{type}(onCharger={onCharger})'.format(
      type=type(self).__name__,
      onCharger=repr(self._onCharger))

Anki.Vector.ExternalInterface.ChargerEvent = ChargerEvent
del ChargerEvent


class TouchButtonEvent(object):
  "Generated message-passing message."

  __slots__ = (
    '_isPressed', # bool
  )

  @property
  def isPressed(self):
    "bool isPressed struct property."
    return self._isPressed

  @isPressed.setter
  def isPressed(self, value):
    self._isPressed = msgbuffers.validate_bool(
      'TouchButtonEvent.isPressed', value)

  def __init__(self, isPressed=False):
    self.isPressed = isPressed

  @classmethod
  def unpack(cls, buffer):
    "Reads a new TouchButtonEvent from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('TouchButtonEvent.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new TouchButtonEvent from the given BinaryReader."
    _isPressed = bool(reader.read('b'))
    return cls(_isPressed)

  def pack(self):
    "Writes the current TouchButtonEvent, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current TouchButtonEvent to the given BinaryWriter."
    writer.write(int(self._isPressed), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._isPressed == other._isPressed
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._isPressed, 'b'))

  def __str__(self):
    return '{type}(isPressed={isPressed})'.format(
      type=type(self).__name__,
      isPressed=self._isPressed)

  def __repr__(self):
    return '{type}(isPressed={isPressed})'.format(
      type=type(self).__name__,
      isPressed=repr(self._isPressed))

Anki.Vector.ExternalInterface.TouchButtonEvent = TouchButtonEvent
del TouchButtonEvent


class UnexpectedMovement(object):
  "Generated message-passing message."

  __slots__ = (
    '_timestamp',    # uint_32
    '_movementType', # Anki.Vector.UnexpectedMovementType
    '_movementSide', # Anki.Vector.UnexpectedMovementSide
  )

  @property
  def timestamp(self):
    "uint_32 timestamp struct property."
    return self._timestamp

  @timestamp.setter
  def timestamp(self, value):
    self._timestamp = msgbuffers.validate_integer(
      'UnexpectedMovement.timestamp', value, 0, 4294967295)

  @property
  def movementType(self):
    "Anki.Vector.UnexpectedMovementType movementType struct property."
    return self._movementType

  @movementType.setter
  def movementType(self, value):
    self._movementType = msgbuffers.validate_integer(
      'UnexpectedMovement.movementType', value, 0, 255)

  @property
  def movementSide(self):
    "Anki.Vector.UnexpectedMovementSide movementSide struct property."
    return self._movementSide

  @movementSide.setter
  def movementSide(self, value):
    self._movementSide = msgbuffers.validate_integer(
      'UnexpectedMovement.movementSide', value, 0, 255)

  def __init__(self, timestamp=0, movementType=Anki.Vector.UnexpectedMovementType.TURNED_BUT_STOPPED, movementSide=Anki.Vector.UnexpectedMovementSide.UNKNOWN):
    self.timestamp = timestamp
    self.movementType = movementType
    self.movementSide = movementSide

  @classmethod
  def unpack(cls, buffer):
    "Reads a new UnexpectedMovement from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('UnexpectedMovement.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new UnexpectedMovement from the given BinaryReader."
    _timestamp = reader.read('I')
    _movementType = reader.read('B')
    _movementSide = reader.read('B')
    return cls(_timestamp, _movementType, _movementSide)

  def pack(self):
    "Writes the current UnexpectedMovement, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current UnexpectedMovement to the given BinaryWriter."
    writer.write(self._timestamp, 'I')
    writer.write(self._movementType, 'B')
    writer.write(self._movementSide, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._timestamp == other._timestamp and
        self._movementType == other._movementType and
        self._movementSide == other._movementSide)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._timestamp, 'I') +
      msgbuffers.size(self._movementType, 'B') +
      msgbuffers.size(self._movementSide, 'B'))

  def __str__(self):
    return '{type}(timestamp={timestamp}, movementType={movementType}, movementSide={movementSide})'.format(
      type=type(self).__name__,
      timestamp=self._timestamp,
      movementType=self._movementType,
      movementSide=self._movementSide)

  def __repr__(self):
    return '{type}(timestamp={timestamp}, movementType={movementType}, movementSide={movementSide})'.format(
      type=type(self).__name__,
      timestamp=repr(self._timestamp),
      movementType=repr(self._movementType),
      movementSide=repr(self._movementSide))

Anki.Vector.ExternalInterface.UnexpectedMovement = UnexpectedMovement
del UnexpectedMovement


class RobotFallingEvent(object):
  "Generated message-passing message."

  __slots__ = (
    '_duration_ms', # uint_32
  )

  @property
  def duration_ms(self):
    "uint_32 duration_ms struct property."
    return self._duration_ms

  @duration_ms.setter
  def duration_ms(self, value):
    self._duration_ms = msgbuffers.validate_integer(
      'RobotFallingEvent.duration_ms', value, 0, 4294967295)

  def __init__(self, duration_ms=0):
    self.duration_ms = duration_ms

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RobotFallingEvent from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RobotFallingEvent.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new RobotFallingEvent from the given BinaryReader."
    _duration_ms = reader.read('I')
    return cls(_duration_ms)

  def pack(self):
    "Writes the current RobotFallingEvent, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current RobotFallingEvent to the given BinaryWriter."
    writer.write(self._duration_ms, 'I')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._duration_ms == other._duration_ms
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._duration_ms, 'I'))

  def __str__(self):
    return '{type}(duration_ms={duration_ms})'.format(
      type=type(self).__name__,
      duration_ms=self._duration_ms)

  def __repr__(self):
    return '{type}(duration_ms={duration_ms})'.format(
      type=type(self).__name__,
      duration_ms=repr(self._duration_ms))

Anki.Vector.ExternalInterface.RobotFallingEvent = RobotFallingEvent
del RobotFallingEvent


class RobotProcessedImage(object):
  "Generated message-passing message."

  __slots__ = (
    '_timestamp',   # uint_32
    '_visionModes', # VisionMode[uint_8]
    '_mean',        # uint_8
  )

  @property
  def timestamp(self):
    "uint_32 timestamp struct property."
    return self._timestamp

  @timestamp.setter
  def timestamp(self, value):
    self._timestamp = msgbuffers.validate_integer(
      'RobotProcessedImage.timestamp', value, 0, 4294967295)

  @property
  def visionModes(self):
    "VisionMode[uint_8] visionModes struct property."
    return self._visionModes

  @visionModes.setter
  def visionModes(self, value):
    self._visionModes = msgbuffers.validate_varray(
      'RobotProcessedImage.visionModes', value, 255,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 4294967295))

  @property
  def mean(self):
    "uint_8 mean struct property."
    return self._mean

  @mean.setter
  def mean(self, value):
    self._mean = msgbuffers.validate_integer(
      'RobotProcessedImage.mean', value, 0, 255)

  def __init__(self, timestamp=0, visionModes=(), mean=0):
    self.timestamp = timestamp
    self.visionModes = visionModes
    self.mean = mean

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RobotProcessedImage from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RobotProcessedImage.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new RobotProcessedImage from the given BinaryReader."
    _timestamp = reader.read('I')
    _visionModes = reader.read_varray('I', 'B')
    _mean = reader.read('B')
    return cls(_timestamp, _visionModes, _mean)

  def pack(self):
    "Writes the current RobotProcessedImage, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current RobotProcessedImage to the given BinaryWriter."
    writer.write(self._timestamp, 'I')
    writer.write_varray(self._visionModes, 'I', 'B')
    writer.write(self._mean, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._timestamp == other._timestamp and
        self._visionModes == other._visionModes and
        self._mean == other._mean)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._timestamp, 'I') +
      msgbuffers.size_varray(self._visionModes, 'I', 'B') +
      msgbuffers.size(self._mean, 'B'))

  def __str__(self):
    return '{type}(timestamp={timestamp}, visionModes={visionModes}, mean={mean})'.format(
      type=type(self).__name__,
      timestamp=self._timestamp,
      visionModes=msgbuffers.shorten_sequence(self._visionModes),
      mean=self._mean)

  def __repr__(self):
    return '{type}(timestamp={timestamp}, visionModes={visionModes}, mean={mean})'.format(
      type=type(self).__name__,
      timestamp=repr(self._timestamp),
      visionModes=repr(self._visionModes),
      mean=repr(self._mean))

Anki.Vector.ExternalInterface.RobotProcessedImage = RobotProcessedImage
del RobotProcessedImage


class RobotObservedObject(object):
  "Generated message-passing message."

  __slots__ = (
    '_timestamp',              # uint_32
    '_objectFamily',           # Anki.Vector.ObjectFamily
    '_objectType',             # Anki.Vector.ObjectType
    '_objectID',               # int_32
    '_img_rect',               # Anki.CladRect
    '_pose',                   # Anki.PoseStruct3d
    '_topFaceOrientation_rad', # float_32
    '_isActive',               # uint_8
  )

  @property
  def timestamp(self):
    "uint_32 timestamp struct property."
    return self._timestamp

  @timestamp.setter
  def timestamp(self, value):
    self._timestamp = msgbuffers.validate_integer(
      'RobotObservedObject.timestamp', value, 0, 4294967295)

  @property
  def objectFamily(self):
    "Anki.Vector.ObjectFamily objectFamily struct property."
    return self._objectFamily

  @objectFamily.setter
  def objectFamily(self, value):
    self._objectFamily = msgbuffers.validate_integer(
      'RobotObservedObject.objectFamily', value, -2147483648, 2147483647)

  @property
  def objectType(self):
    "Anki.Vector.ObjectType objectType struct property."
    return self._objectType

  @objectType.setter
  def objectType(self, value):
    self._objectType = msgbuffers.validate_integer(
      'RobotObservedObject.objectType', value, -2147483648, 2147483647)

  @property
  def objectID(self):
    "int_32 objectID struct property."
    return self._objectID

  @objectID.setter
  def objectID(self, value):
    self._objectID = msgbuffers.validate_integer(
      'RobotObservedObject.objectID', value, -2147483648, 2147483647)

  @property
  def img_rect(self):
    "Anki.CladRect img_rect struct property."
    return self._img_rect

  @img_rect.setter
  def img_rect(self, value):
    self._img_rect = msgbuffers.validate_object(
      'RobotObservedObject.img_rect', value, Anki.CladRect)

  @property
  def pose(self):
    "Anki.PoseStruct3d pose struct property."
    return self._pose

  @pose.setter
  def pose(self, value):
    self._pose = msgbuffers.validate_object(
      'RobotObservedObject.pose', value, Anki.PoseStruct3d)

  @property
  def topFaceOrientation_rad(self):
    "float_32 topFaceOrientation_rad struct property."
    return self._topFaceOrientation_rad

  @topFaceOrientation_rad.setter
  def topFaceOrientation_rad(self, value):
    self._topFaceOrientation_rad = msgbuffers.validate_float(
      'RobotObservedObject.topFaceOrientation_rad', value, 'f')

  @property
  def isActive(self):
    "uint_8 isActive struct property."
    return self._isActive

  @isActive.setter
  def isActive(self, value):
    self._isActive = msgbuffers.validate_integer(
      'RobotObservedObject.isActive', value, 0, 255)

  def __init__(self, timestamp=0, objectFamily=Anki.Vector.ObjectFamily.Invalid, objectType=Anki.Vector.ObjectType.UnknownObject, objectID=0, img_rect=Anki.CladRect(), pose=Anki.PoseStruct3d(), topFaceOrientation_rad=0.0, isActive=0):
    self.timestamp = timestamp
    self.objectFamily = objectFamily
    self.objectType = objectType
    self.objectID = objectID
    self.img_rect = img_rect
    self.pose = pose
    self.topFaceOrientation_rad = topFaceOrientation_rad
    self.isActive = isActive

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RobotObservedObject from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RobotObservedObject.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new RobotObservedObject from the given BinaryReader."
    _timestamp = reader.read('I')
    _objectFamily = reader.read('i')
    _objectType = reader.read('i')
    _objectID = reader.read('i')
    _img_rect = reader.read_object(Anki.CladRect.unpack_from)
    _pose = reader.read_object(Anki.PoseStruct3d.unpack_from)
    _topFaceOrientation_rad = reader.read('f')
    _isActive = reader.read('B')
    return cls(_timestamp, _objectFamily, _objectType, _objectID, _img_rect, _pose, _topFaceOrientation_rad, _isActive)

  def pack(self):
    "Writes the current RobotObservedObject, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current RobotObservedObject to the given BinaryWriter."
    writer.write(self._timestamp, 'I')
    writer.write(self._objectFamily, 'i')
    writer.write(self._objectType, 'i')
    writer.write(self._objectID, 'i')
    writer.write_object(self._img_rect)
    writer.write_object(self._pose)
    writer.write(self._topFaceOrientation_rad, 'f')
    writer.write(self._isActive, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._timestamp == other._timestamp and
        self._objectFamily == other._objectFamily and
        self._objectType == other._objectType and
        self._objectID == other._objectID and
        self._img_rect == other._img_rect and
        self._pose == other._pose and
        self._topFaceOrientation_rad == other._topFaceOrientation_rad and
        self._isActive == other._isActive)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._timestamp, 'I') +
      msgbuffers.size(self._objectFamily, 'i') +
      msgbuffers.size(self._objectType, 'i') +
      msgbuffers.size(self._objectID, 'i') +
      msgbuffers.size_object(self._img_rect) +
      msgbuffers.size_object(self._pose) +
      msgbuffers.size(self._topFaceOrientation_rad, 'f') +
      msgbuffers.size(self._isActive, 'B'))

  def __str__(self):
    return '{type}(timestamp={timestamp}, objectFamily={objectFamily}, objectType={objectType}, objectID={objectID}, img_rect={img_rect}, pose={pose}, topFaceOrientation_rad={topFaceOrientation_rad}, isActive={isActive})'.format(
      type=type(self).__name__,
      timestamp=self._timestamp,
      objectFamily=self._objectFamily,
      objectType=self._objectType,
      objectID=self._objectID,
      img_rect=self._img_rect,
      pose=self._pose,
      topFaceOrientation_rad=self._topFaceOrientation_rad,
      isActive=self._isActive)

  def __repr__(self):
    return '{type}(timestamp={timestamp}, objectFamily={objectFamily}, objectType={objectType}, objectID={objectID}, img_rect={img_rect}, pose={pose}, topFaceOrientation_rad={topFaceOrientation_rad}, isActive={isActive})'.format(
      type=type(self).__name__,
      timestamp=repr(self._timestamp),
      objectFamily=repr(self._objectFamily),
      objectType=repr(self._objectType),
      objectID=repr(self._objectID),
      img_rect=repr(self._img_rect),
      pose=repr(self._pose),
      topFaceOrientation_rad=repr(self._topFaceOrientation_rad),
      isActive=repr(self._isActive))

Anki.Vector.ExternalInterface.RobotObservedObject = RobotObservedObject
del RobotObservedObject


class RobotObservedPossibleObject(object):
  "Generated message-passing message."

  __slots__ = (
    '_possibleObject', # Anki.Vector.ExternalInterface.RobotObservedObject
  )

  @property
  def possibleObject(self):
    "Anki.Vector.ExternalInterface.RobotObservedObject possibleObject struct property."
    return self._possibleObject

  @possibleObject.setter
  def possibleObject(self, value):
    self._possibleObject = msgbuffers.validate_object(
      'RobotObservedPossibleObject.possibleObject', value, Anki.Vector.ExternalInterface.RobotObservedObject)

  def __init__(self, possibleObject=Anki.Vector.ExternalInterface.RobotObservedObject()):
    self.possibleObject = possibleObject

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RobotObservedPossibleObject from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RobotObservedPossibleObject.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new RobotObservedPossibleObject from the given BinaryReader."
    _possibleObject = reader.read_object(Anki.Vector.ExternalInterface.RobotObservedObject.unpack_from)
    return cls(_possibleObject)

  def pack(self):
    "Writes the current RobotObservedPossibleObject, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current RobotObservedPossibleObject to the given BinaryWriter."
    writer.write_object(self._possibleObject)

  def __eq__(self, other):
    if type(self) is type(other):
      return self._possibleObject == other._possibleObject
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size_object(self._possibleObject))

  def __str__(self):
    return '{type}(possibleObject={possibleObject})'.format(
      type=type(self).__name__,
      possibleObject=self._possibleObject)

  def __repr__(self):
    return '{type}(possibleObject={possibleObject})'.format(
      type=type(self).__name__,
      possibleObject=repr(self._possibleObject))

Anki.Vector.ExternalInterface.RobotObservedPossibleObject = RobotObservedPossibleObject
del RobotObservedPossibleObject


class RobotObservedFace(object):
  "Generated message-passing message."

  __slots__ = (
    '_faceID',           # int_32
    '_timestamp',        # uint_32
    '_pose',             # Anki.PoseStruct3d
    '_img_rect',         # Anki.CladRect
    '_name',             # string[uint_8]
    '_expression',       # Anki.Vision.FacialExpression
    '_smileAmount',      # Anki.Vision.SmileAmount
    '_gaze',             # Anki.Vision.Gaze
    '_blinkAmount',      # Anki.Vision.BlinkAmount
    '_expressionValues', # uint_8[Anki::Vision::FacialExpression::Count]
    '_leftEye',          # CladPoint2d[uint_8]
    '_rightEye',         # CladPoint2d[uint_8]
    '_nose',             # CladPoint2d[uint_8]
    '_mouth',            # CladPoint2d[uint_8]
  )

  @property
  def faceID(self):
    "int_32 faceID struct property."
    return self._faceID

  @faceID.setter
  def faceID(self, value):
    self._faceID = msgbuffers.validate_integer(
      'RobotObservedFace.faceID', value, -2147483648, 2147483647)

  @property
  def timestamp(self):
    "uint_32 timestamp struct property."
    return self._timestamp

  @timestamp.setter
  def timestamp(self, value):
    self._timestamp = msgbuffers.validate_integer(
      'RobotObservedFace.timestamp', value, 0, 4294967295)

  @property
  def pose(self):
    "Anki.PoseStruct3d pose struct property."
    return self._pose

  @pose.setter
  def pose(self, value):
    self._pose = msgbuffers.validate_object(
      'RobotObservedFace.pose', value, Anki.PoseStruct3d)

  @property
  def img_rect(self):
    "Anki.CladRect img_rect struct property."
    return self._img_rect

  @img_rect.setter
  def img_rect(self, value):
    self._img_rect = msgbuffers.validate_object(
      'RobotObservedFace.img_rect', value, Anki.CladRect)

  @property
  def name(self):
    "string[uint_8] name struct property."
    return self._name

  @name.setter
  def name(self, value):
    self._name = msgbuffers.validate_string(
      'RobotObservedFace.name', value, 255)

  @property
  def expression(self):
    "Anki.Vision.FacialExpression expression struct property."
    return self._expression

  @expression.setter
  def expression(self, value):
    self._expression = msgbuffers.validate_integer(
      'RobotObservedFace.expression', value, -128, 127)

  @property
  def smileAmount(self):
    "Anki.Vision.SmileAmount smileAmount struct property."
    return self._smileAmount

  @smileAmount.setter
  def smileAmount(self, value):
    self._smileAmount = msgbuffers.validate_object(
      'RobotObservedFace.smileAmount', value, Anki.Vision.SmileAmount)

  @property
  def gaze(self):
    "Anki.Vision.Gaze gaze struct property."
    return self._gaze

  @gaze.setter
  def gaze(self, value):
    self._gaze = msgbuffers.validate_object(
      'RobotObservedFace.gaze', value, Anki.Vision.Gaze)

  @property
  def blinkAmount(self):
    "Anki.Vision.BlinkAmount blinkAmount struct property."
    return self._blinkAmount

  @blinkAmount.setter
  def blinkAmount(self, value):
    self._blinkAmount = msgbuffers.validate_object(
      'RobotObservedFace.blinkAmount', value, Anki.Vision.BlinkAmount)

  @property
  def expressionValues(self):
    "uint_8[Anki::Vision::FacialExpression::Count] expressionValues struct property."
    return self._expressionValues

  @expressionValues.setter
  def expressionValues(self, value):
    self._expressionValues = msgbuffers.validate_farray(
      'RobotObservedFace.expressionValues', value, Anki.Vision.FacialExpression.Count,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 255))

  @property
  def leftEye(self):
    "CladPoint2d[uint_8] leftEye struct property."
    return self._leftEye

  @leftEye.setter
  def leftEye(self, value):
    self._leftEye = msgbuffers.validate_varray(
      'RobotObservedFace.leftEye', value, 255,
      lambda name, value_inner: msgbuffers.validate_object(
        name, value_inner, Anki.CladPoint2d))

  @property
  def rightEye(self):
    "CladPoint2d[uint_8] rightEye struct property."
    return self._rightEye

  @rightEye.setter
  def rightEye(self, value):
    self._rightEye = msgbuffers.validate_varray(
      'RobotObservedFace.rightEye', value, 255,
      lambda name, value_inner: msgbuffers.validate_object(
        name, value_inner, Anki.CladPoint2d))

  @property
  def nose(self):
    "CladPoint2d[uint_8] nose struct property."
    return self._nose

  @nose.setter
  def nose(self, value):
    self._nose = msgbuffers.validate_varray(
      'RobotObservedFace.nose', value, 255,
      lambda name, value_inner: msgbuffers.validate_object(
        name, value_inner, Anki.CladPoint2d))

  @property
  def mouth(self):
    "CladPoint2d[uint_8] mouth struct property."
    return self._mouth

  @mouth.setter
  def mouth(self, value):
    self._mouth = msgbuffers.validate_varray(
      'RobotObservedFace.mouth', value, 255,
      lambda name, value_inner: msgbuffers.validate_object(
        name, value_inner, Anki.CladPoint2d))

  def __init__(self, faceID=0, timestamp=0, pose=Anki.PoseStruct3d(), img_rect=Anki.CladRect(), name='', expression=Anki.Vision.FacialExpression.Unknown, smileAmount=Anki.Vision.SmileAmount(), gaze=Anki.Vision.Gaze(), blinkAmount=Anki.Vision.BlinkAmount(), expressionValues=(0,) * Anki.Vision.FacialExpression.Count, leftEye=(), rightEye=(), nose=(), mouth=()):
    self.faceID = faceID
    self.timestamp = timestamp
    self.pose = pose
    self.img_rect = img_rect
    self.name = name
    self.expression = expression
    self.smileAmount = smileAmount
    self.gaze = gaze
    self.blinkAmount = blinkAmount
    self.expressionValues = expressionValues
    self.leftEye = leftEye
    self.rightEye = rightEye
    self.nose = nose
    self.mouth = mouth

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RobotObservedFace from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RobotObservedFace.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new RobotObservedFace from the given BinaryReader."
    _faceID = reader.read('i')
    _timestamp = reader.read('I')
    _pose = reader.read_object(Anki.PoseStruct3d.unpack_from)
    _img_rect = reader.read_object(Anki.CladRect.unpack_from)
    _name = reader.read_string('B')
    _expression = reader.read('b')
    _smileAmount = reader.read_object(Anki.Vision.SmileAmount.unpack_from)
    _gaze = reader.read_object(Anki.Vision.Gaze.unpack_from)
    _blinkAmount = reader.read_object(Anki.Vision.BlinkAmount.unpack_from)
    _expressionValues = reader.read_farray('B', Anki.Vision.FacialExpression.Count)
    _leftEye = reader.read_object_varray(Anki.CladPoint2d.unpack_from, 'B')
    _rightEye = reader.read_object_varray(Anki.CladPoint2d.unpack_from, 'B')
    _nose = reader.read_object_varray(Anki.CladPoint2d.unpack_from, 'B')
    _mouth = reader.read_object_varray(Anki.CladPoint2d.unpack_from, 'B')
    return cls(_faceID, _timestamp, _pose, _img_rect, _name, _expression, _smileAmount, _gaze, _blinkAmount, _expressionValues, _leftEye, _rightEye, _nose, _mouth)

  def pack(self):
    "Writes the current RobotObservedFace, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current RobotObservedFace to the given BinaryWriter."
    writer.write(self._faceID, 'i')
    writer.write(self._timestamp, 'I')
    writer.write_object(self._pose)
    writer.write_object(self._img_rect)
    writer.write_string(self._name, 'B')
    writer.write(self._expression, 'b')
    writer.write_object(self._smileAmount)
    writer.write_object(self._gaze)
    writer.write_object(self._blinkAmount)
    writer.write_farray(self._expressionValues, 'B', Anki.Vision.FacialExpression.Count)
    writer.write_object_varray(self._leftEye, 'B')
    writer.write_object_varray(self._rightEye, 'B')
    writer.write_object_varray(self._nose, 'B')
    writer.write_object_varray(self._mouth, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._faceID == other._faceID and
        self._timestamp == other._timestamp and
        self._pose == other._pose and
        self._img_rect == other._img_rect and
        self._name == other._name and
        self._expression == other._expression and
        self._smileAmount == other._smileAmount and
        self._gaze == other._gaze and
        self._blinkAmount == other._blinkAmount and
        self._expressionValues == other._expressionValues and
        self._leftEye == other._leftEye and
        self._rightEye == other._rightEye and
        self._nose == other._nose and
        self._mouth == other._mouth)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._faceID, 'i') +
      msgbuffers.size(self._timestamp, 'I') +
      msgbuffers.size_object(self._pose) +
      msgbuffers.size_object(self._img_rect) +
      msgbuffers.size_string(self._name, 'B') +
      msgbuffers.size(self._expression, 'b') +
      msgbuffers.size_object(self._smileAmount) +
      msgbuffers.size_object(self._gaze) +
      msgbuffers.size_object(self._blinkAmount) +
      msgbuffers.size_farray(self._expressionValues, 'B', Anki.Vision.FacialExpression.Count) +
      msgbuffers.size_object_varray(self._leftEye, 'B') +
      msgbuffers.size_object_varray(self._rightEye, 'B') +
      msgbuffers.size_object_varray(self._nose, 'B') +
      msgbuffers.size_object_varray(self._mouth, 'B'))

  def __str__(self):
    return '{type}(faceID={faceID}, timestamp={timestamp}, pose={pose}, img_rect={img_rect}, name={name}, expression={expression}, smileAmount={smileAmount}, gaze={gaze}, blinkAmount={blinkAmount}, expressionValues={expressionValues}, leftEye={leftEye}, rightEye={rightEye}, nose={nose}, mouth={mouth})'.format(
      type=type(self).__name__,
      faceID=self._faceID,
      timestamp=self._timestamp,
      pose=self._pose,
      img_rect=self._img_rect,
      name=msgbuffers.shorten_string(self._name),
      expression=self._expression,
      smileAmount=self._smileAmount,
      gaze=self._gaze,
      blinkAmount=self._blinkAmount,
      expressionValues=msgbuffers.shorten_sequence(self._expressionValues),
      leftEye=msgbuffers.shorten_sequence(self._leftEye),
      rightEye=msgbuffers.shorten_sequence(self._rightEye),
      nose=msgbuffers.shorten_sequence(self._nose),
      mouth=msgbuffers.shorten_sequence(self._mouth))

  def __repr__(self):
    return '{type}(faceID={faceID}, timestamp={timestamp}, pose={pose}, img_rect={img_rect}, name={name}, expression={expression}, smileAmount={smileAmount}, gaze={gaze}, blinkAmount={blinkAmount}, expressionValues={expressionValues}, leftEye={leftEye}, rightEye={rightEye}, nose={nose}, mouth={mouth})'.format(
      type=type(self).__name__,
      faceID=repr(self._faceID),
      timestamp=repr(self._timestamp),
      pose=repr(self._pose),
      img_rect=repr(self._img_rect),
      name=repr(self._name),
      expression=repr(self._expression),
      smileAmount=repr(self._smileAmount),
      gaze=repr(self._gaze),
      blinkAmount=repr(self._blinkAmount),
      expressionValues=repr(self._expressionValues),
      leftEye=repr(self._leftEye),
      rightEye=repr(self._rightEye),
      nose=repr(self._nose),
      mouth=repr(self._mouth))

Anki.Vector.ExternalInterface.RobotObservedFace = RobotObservedFace
del RobotObservedFace


class RobotChangedObservedFaceID(object):
  "Generated message-passing message."

  __slots__ = (
    '_oldID', # int_32
    '_newID', # int_32
  )

  @property
  def oldID(self):
    "int_32 oldID struct property."
    return self._oldID

  @oldID.setter
  def oldID(self, value):
    self._oldID = msgbuffers.validate_integer(
      'RobotChangedObservedFaceID.oldID', value, -2147483648, 2147483647)

  @property
  def newID(self):
    "int_32 newID struct property."
    return self._newID

  @newID.setter
  def newID(self, value):
    self._newID = msgbuffers.validate_integer(
      'RobotChangedObservedFaceID.newID', value, -2147483648, 2147483647)

  def __init__(self, oldID=0, newID=0):
    self.oldID = oldID
    self.newID = newID

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RobotChangedObservedFaceID from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RobotChangedObservedFaceID.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new RobotChangedObservedFaceID from the given BinaryReader."
    _oldID = reader.read('i')
    _newID = reader.read('i')
    return cls(_oldID, _newID)

  def pack(self):
    "Writes the current RobotChangedObservedFaceID, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current RobotChangedObservedFaceID to the given BinaryWriter."
    writer.write(self._oldID, 'i')
    writer.write(self._newID, 'i')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._oldID == other._oldID and
        self._newID == other._newID)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._oldID, 'i') +
      msgbuffers.size(self._newID, 'i'))

  def __str__(self):
    return '{type}(oldID={oldID}, newID={newID})'.format(
      type=type(self).__name__,
      oldID=self._oldID,
      newID=self._newID)

  def __repr__(self):
    return '{type}(oldID={oldID}, newID={newID})'.format(
      type=type(self).__name__,
      oldID=repr(self._oldID),
      newID=repr(self._newID))

Anki.Vector.ExternalInterface.RobotChangedObservedFaceID = RobotChangedObservedFaceID
del RobotChangedObservedFaceID


class RobotObservedPet(object):
  "Generated message-passing message."

  __slots__ = (
    '_petID',            # int_32
    '_timestamp',        # uint_32
    '_numTimesObserved', # uint_32
    '_score',            # float_32
    '_img_rect',         # Anki.CladRect
    '_petType',          # Anki.Vision.PetType
  )

  @property
  def petID(self):
    "int_32 petID struct property."
    return self._petID

  @petID.setter
  def petID(self, value):
    self._petID = msgbuffers.validate_integer(
      'RobotObservedPet.petID', value, -2147483648, 2147483647)

  @property
  def timestamp(self):
    "uint_32 timestamp struct property."
    return self._timestamp

  @timestamp.setter
  def timestamp(self, value):
    self._timestamp = msgbuffers.validate_integer(
      'RobotObservedPet.timestamp', value, 0, 4294967295)

  @property
  def numTimesObserved(self):
    "uint_32 numTimesObserved struct property."
    return self._numTimesObserved

  @numTimesObserved.setter
  def numTimesObserved(self, value):
    self._numTimesObserved = msgbuffers.validate_integer(
      'RobotObservedPet.numTimesObserved', value, 0, 4294967295)

  @property
  def score(self):
    "float_32 score struct property."
    return self._score

  @score.setter
  def score(self, value):
    self._score = msgbuffers.validate_float(
      'RobotObservedPet.score', value, 'f')

  @property
  def img_rect(self):
    "Anki.CladRect img_rect struct property."
    return self._img_rect

  @img_rect.setter
  def img_rect(self, value):
    self._img_rect = msgbuffers.validate_object(
      'RobotObservedPet.img_rect', value, Anki.CladRect)

  @property
  def petType(self):
    "Anki.Vision.PetType petType struct property."
    return self._petType

  @petType.setter
  def petType(self, value):
    self._petType = msgbuffers.validate_integer(
      'RobotObservedPet.petType', value, 0, 255)

  def __init__(self, petID=0, timestamp=0, numTimesObserved=0, score=0.0, img_rect=Anki.CladRect(), petType=Anki.Vision.PetType.Unknown):
    self.petID = petID
    self.timestamp = timestamp
    self.numTimesObserved = numTimesObserved
    self.score = score
    self.img_rect = img_rect
    self.petType = petType

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RobotObservedPet from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RobotObservedPet.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new RobotObservedPet from the given BinaryReader."
    _petID = reader.read('i')
    _timestamp = reader.read('I')
    _numTimesObserved = reader.read('I')
    _score = reader.read('f')
    _img_rect = reader.read_object(Anki.CladRect.unpack_from)
    _petType = reader.read('B')
    return cls(_petID, _timestamp, _numTimesObserved, _score, _img_rect, _petType)

  def pack(self):
    "Writes the current RobotObservedPet, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current RobotObservedPet to the given BinaryWriter."
    writer.write(self._petID, 'i')
    writer.write(self._timestamp, 'I')
    writer.write(self._numTimesObserved, 'I')
    writer.write(self._score, 'f')
    writer.write_object(self._img_rect)
    writer.write(self._petType, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._petID == other._petID and
        self._timestamp == other._timestamp and
        self._numTimesObserved == other._numTimesObserved and
        self._score == other._score and
        self._img_rect == other._img_rect and
        self._petType == other._petType)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._petID, 'i') +
      msgbuffers.size(self._timestamp, 'I') +
      msgbuffers.size(self._numTimesObserved, 'I') +
      msgbuffers.size(self._score, 'f') +
      msgbuffers.size_object(self._img_rect) +
      msgbuffers.size(self._petType, 'B'))

  def __str__(self):
    return '{type}(petID={petID}, timestamp={timestamp}, numTimesObserved={numTimesObserved}, score={score}, img_rect={img_rect}, petType={petType})'.format(
      type=type(self).__name__,
      petID=self._petID,
      timestamp=self._timestamp,
      numTimesObserved=self._numTimesObserved,
      score=self._score,
      img_rect=self._img_rect,
      petType=self._petType)

  def __repr__(self):
    return '{type}(petID={petID}, timestamp={timestamp}, numTimesObserved={numTimesObserved}, score={score}, img_rect={img_rect}, petType={petType})'.format(
      type=type(self).__name__,
      petID=repr(self._petID),
      timestamp=repr(self._timestamp),
      numTimesObserved=repr(self._numTimesObserved),
      score=repr(self._score),
      img_rect=repr(self._img_rect),
      petType=repr(self._petType))

Anki.Vector.ExternalInterface.RobotObservedPet = RobotObservedPet
del RobotObservedPet


class RobotObservedMotion(object):
  "Generated message-passing message."

  __slots__ = (
    '_timestamp',       # uint_32
    '_img_area',        # float_32
    '_img_x',           # int_16
    '_img_y',           # int_16
    '_ground_area',     # float_32
    '_ground_x',        # int_16
    '_ground_y',        # int_16
    '_top_img_area',    # float_32
    '_top_img_x',       # int_16
    '_top_img_y',       # int_16
    '_bottom_img_area', # float_32
    '_bottom_img_x',    # int_16
    '_bottom_img_y',    # int_16
    '_left_img_area',   # float_32
    '_left_img_x',      # int_16
    '_left_img_y',      # int_16
    '_right_img_area',  # float_32
    '_right_img_x',     # int_16
    '_right_img_y',     # int_16
  )

  @property
  def timestamp(self):
    "uint_32 timestamp struct property."
    return self._timestamp

  @timestamp.setter
  def timestamp(self, value):
    self._timestamp = msgbuffers.validate_integer(
      'RobotObservedMotion.timestamp', value, 0, 4294967295)

  @property
  def img_area(self):
    "float_32 img_area struct property."
    return self._img_area

  @img_area.setter
  def img_area(self, value):
    self._img_area = msgbuffers.validate_float(
      'RobotObservedMotion.img_area', value, 'f')

  @property
  def img_x(self):
    "int_16 img_x struct property."
    return self._img_x

  @img_x.setter
  def img_x(self, value):
    self._img_x = msgbuffers.validate_integer(
      'RobotObservedMotion.img_x', value, -32768, 32767)

  @property
  def img_y(self):
    "int_16 img_y struct property."
    return self._img_y

  @img_y.setter
  def img_y(self, value):
    self._img_y = msgbuffers.validate_integer(
      'RobotObservedMotion.img_y', value, -32768, 32767)

  @property
  def ground_area(self):
    "float_32 ground_area struct property."
    return self._ground_area

  @ground_area.setter
  def ground_area(self, value):
    self._ground_area = msgbuffers.validate_float(
      'RobotObservedMotion.ground_area', value, 'f')

  @property
  def ground_x(self):
    "int_16 ground_x struct property."
    return self._ground_x

  @ground_x.setter
  def ground_x(self, value):
    self._ground_x = msgbuffers.validate_integer(
      'RobotObservedMotion.ground_x', value, -32768, 32767)

  @property
  def ground_y(self):
    "int_16 ground_y struct property."
    return self._ground_y

  @ground_y.setter
  def ground_y(self, value):
    self._ground_y = msgbuffers.validate_integer(
      'RobotObservedMotion.ground_y', value, -32768, 32767)

  @property
  def top_img_area(self):
    "float_32 top_img_area struct property."
    return self._top_img_area

  @top_img_area.setter
  def top_img_area(self, value):
    self._top_img_area = msgbuffers.validate_float(
      'RobotObservedMotion.top_img_area', value, 'f')

  @property
  def top_img_x(self):
    "int_16 top_img_x struct property."
    return self._top_img_x

  @top_img_x.setter
  def top_img_x(self, value):
    self._top_img_x = msgbuffers.validate_integer(
      'RobotObservedMotion.top_img_x', value, -32768, 32767)

  @property
  def top_img_y(self):
    "int_16 top_img_y struct property."
    return self._top_img_y

  @top_img_y.setter
  def top_img_y(self, value):
    self._top_img_y = msgbuffers.validate_integer(
      'RobotObservedMotion.top_img_y', value, -32768, 32767)

  @property
  def bottom_img_area(self):
    "float_32 bottom_img_area struct property."
    return self._bottom_img_area

  @bottom_img_area.setter
  def bottom_img_area(self, value):
    self._bottom_img_area = msgbuffers.validate_float(
      'RobotObservedMotion.bottom_img_area', value, 'f')

  @property
  def bottom_img_x(self):
    "int_16 bottom_img_x struct property."
    return self._bottom_img_x

  @bottom_img_x.setter
  def bottom_img_x(self, value):
    self._bottom_img_x = msgbuffers.validate_integer(
      'RobotObservedMotion.bottom_img_x', value, -32768, 32767)

  @property
  def bottom_img_y(self):
    "int_16 bottom_img_y struct property."
    return self._bottom_img_y

  @bottom_img_y.setter
  def bottom_img_y(self, value):
    self._bottom_img_y = msgbuffers.validate_integer(
      'RobotObservedMotion.bottom_img_y', value, -32768, 32767)

  @property
  def left_img_area(self):
    "float_32 left_img_area struct property."
    return self._left_img_area

  @left_img_area.setter
  def left_img_area(self, value):
    self._left_img_area = msgbuffers.validate_float(
      'RobotObservedMotion.left_img_area', value, 'f')

  @property
  def left_img_x(self):
    "int_16 left_img_x struct property."
    return self._left_img_x

  @left_img_x.setter
  def left_img_x(self, value):
    self._left_img_x = msgbuffers.validate_integer(
      'RobotObservedMotion.left_img_x', value, -32768, 32767)

  @property
  def left_img_y(self):
    "int_16 left_img_y struct property."
    return self._left_img_y

  @left_img_y.setter
  def left_img_y(self, value):
    self._left_img_y = msgbuffers.validate_integer(
      'RobotObservedMotion.left_img_y', value, -32768, 32767)

  @property
  def right_img_area(self):
    "float_32 right_img_area struct property."
    return self._right_img_area

  @right_img_area.setter
  def right_img_area(self, value):
    self._right_img_area = msgbuffers.validate_float(
      'RobotObservedMotion.right_img_area', value, 'f')

  @property
  def right_img_x(self):
    "int_16 right_img_x struct property."
    return self._right_img_x

  @right_img_x.setter
  def right_img_x(self, value):
    self._right_img_x = msgbuffers.validate_integer(
      'RobotObservedMotion.right_img_x', value, -32768, 32767)

  @property
  def right_img_y(self):
    "int_16 right_img_y struct property."
    return self._right_img_y

  @right_img_y.setter
  def right_img_y(self, value):
    self._right_img_y = msgbuffers.validate_integer(
      'RobotObservedMotion.right_img_y', value, -32768, 32767)

  def __init__(self, timestamp=0, img_area=0.0, img_x=0, img_y=0, ground_area=0.0, ground_x=0, ground_y=0, top_img_area=0.0, top_img_x=0, top_img_y=0, bottom_img_area=0.0, bottom_img_x=0, bottom_img_y=0, left_img_area=0.0, left_img_x=0, left_img_y=0, right_img_area=0.0, right_img_x=0, right_img_y=0):
    self.timestamp = timestamp
    self.img_area = img_area
    self.img_x = img_x
    self.img_y = img_y
    self.ground_area = ground_area
    self.ground_x = ground_x
    self.ground_y = ground_y
    self.top_img_area = top_img_area
    self.top_img_x = top_img_x
    self.top_img_y = top_img_y
    self.bottom_img_area = bottom_img_area
    self.bottom_img_x = bottom_img_x
    self.bottom_img_y = bottom_img_y
    self.left_img_area = left_img_area
    self.left_img_x = left_img_x
    self.left_img_y = left_img_y
    self.right_img_area = right_img_area
    self.right_img_x = right_img_x
    self.right_img_y = right_img_y

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RobotObservedMotion from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RobotObservedMotion.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new RobotObservedMotion from the given BinaryReader."
    _timestamp = reader.read('I')
    _img_area = reader.read('f')
    _img_x = reader.read('h')
    _img_y = reader.read('h')
    _ground_area = reader.read('f')
    _ground_x = reader.read('h')
    _ground_y = reader.read('h')
    _top_img_area = reader.read('f')
    _top_img_x = reader.read('h')
    _top_img_y = reader.read('h')
    _bottom_img_area = reader.read('f')
    _bottom_img_x = reader.read('h')
    _bottom_img_y = reader.read('h')
    _left_img_area = reader.read('f')
    _left_img_x = reader.read('h')
    _left_img_y = reader.read('h')
    _right_img_area = reader.read('f')
    _right_img_x = reader.read('h')
    _right_img_y = reader.read('h')
    return cls(_timestamp, _img_area, _img_x, _img_y, _ground_area, _ground_x, _ground_y, _top_img_area, _top_img_x, _top_img_y, _bottom_img_area, _bottom_img_x, _bottom_img_y, _left_img_area, _left_img_x, _left_img_y, _right_img_area, _right_img_x, _right_img_y)

  def pack(self):
    "Writes the current RobotObservedMotion, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current RobotObservedMotion to the given BinaryWriter."
    writer.write(self._timestamp, 'I')
    writer.write(self._img_area, 'f')
    writer.write(self._img_x, 'h')
    writer.write(self._img_y, 'h')
    writer.write(self._ground_area, 'f')
    writer.write(self._ground_x, 'h')
    writer.write(self._ground_y, 'h')
    writer.write(self._top_img_area, 'f')
    writer.write(self._top_img_x, 'h')
    writer.write(self._top_img_y, 'h')
    writer.write(self._bottom_img_area, 'f')
    writer.write(self._bottom_img_x, 'h')
    writer.write(self._bottom_img_y, 'h')
    writer.write(self._left_img_area, 'f')
    writer.write(self._left_img_x, 'h')
    writer.write(self._left_img_y, 'h')
    writer.write(self._right_img_area, 'f')
    writer.write(self._right_img_x, 'h')
    writer.write(self._right_img_y, 'h')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._timestamp == other._timestamp and
        self._img_area == other._img_area and
        self._img_x == other._img_x and
        self._img_y == other._img_y and
        self._ground_area == other._ground_area and
        self._ground_x == other._ground_x and
        self._ground_y == other._ground_y and
        self._top_img_area == other._top_img_area and
        self._top_img_x == other._top_img_x and
        self._top_img_y == other._top_img_y and
        self._bottom_img_area == other._bottom_img_area and
        self._bottom_img_x == other._bottom_img_x and
        self._bottom_img_y == other._bottom_img_y and
        self._left_img_area == other._left_img_area and
        self._left_img_x == other._left_img_x and
        self._left_img_y == other._left_img_y and
        self._right_img_area == other._right_img_area and
        self._right_img_x == other._right_img_x and
        self._right_img_y == other._right_img_y)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._timestamp, 'I') +
      msgbuffers.size(self._img_area, 'f') +
      msgbuffers.size(self._img_x, 'h') +
      msgbuffers.size(self._img_y, 'h') +
      msgbuffers.size(self._ground_area, 'f') +
      msgbuffers.size(self._ground_x, 'h') +
      msgbuffers.size(self._ground_y, 'h') +
      msgbuffers.size(self._top_img_area, 'f') +
      msgbuffers.size(self._top_img_x, 'h') +
      msgbuffers.size(self._top_img_y, 'h') +
      msgbuffers.size(self._bottom_img_area, 'f') +
      msgbuffers.size(self._bottom_img_x, 'h') +
      msgbuffers.size(self._bottom_img_y, 'h') +
      msgbuffers.size(self._left_img_area, 'f') +
      msgbuffers.size(self._left_img_x, 'h') +
      msgbuffers.size(self._left_img_y, 'h') +
      msgbuffers.size(self._right_img_area, 'f') +
      msgbuffers.size(self._right_img_x, 'h') +
      msgbuffers.size(self._right_img_y, 'h'))

  def __str__(self):
    return '{type}(timestamp={timestamp}, img_area={img_area}, img_x={img_x}, img_y={img_y}, ground_area={ground_area}, ground_x={ground_x}, ground_y={ground_y}, top_img_area={top_img_area}, top_img_x={top_img_x}, top_img_y={top_img_y}, bottom_img_area={bottom_img_area}, bottom_img_x={bottom_img_x}, bottom_img_y={bottom_img_y}, left_img_area={left_img_area}, left_img_x={left_img_x}, left_img_y={left_img_y}, right_img_area={right_img_area}, right_img_x={right_img_x}, right_img_y={right_img_y})'.format(
      type=type(self).__name__,
      timestamp=self._timestamp,
      img_area=self._img_area,
      img_x=self._img_x,
      img_y=self._img_y,
      ground_area=self._ground_area,
      ground_x=self._ground_x,
      ground_y=self._ground_y,
      top_img_area=self._top_img_area,
      top_img_x=self._top_img_x,
      top_img_y=self._top_img_y,
      bottom_img_area=self._bottom_img_area,
      bottom_img_x=self._bottom_img_x,
      bottom_img_y=self._bottom_img_y,
      left_img_area=self._left_img_area,
      left_img_x=self._left_img_x,
      left_img_y=self._left_img_y,
      right_img_area=self._right_img_area,
      right_img_x=self._right_img_x,
      right_img_y=self._right_img_y)

  def __repr__(self):
    return '{type}(timestamp={timestamp}, img_area={img_area}, img_x={img_x}, img_y={img_y}, ground_area={ground_area}, ground_x={ground_x}, ground_y={ground_y}, top_img_area={top_img_area}, top_img_x={top_img_x}, top_img_y={top_img_y}, bottom_img_area={bottom_img_area}, bottom_img_x={bottom_img_x}, bottom_img_y={bottom_img_y}, left_img_area={left_img_area}, left_img_x={left_img_x}, left_img_y={left_img_y}, right_img_area={right_img_area}, right_img_x={right_img_x}, right_img_y={right_img_y})'.format(
      type=type(self).__name__,
      timestamp=repr(self._timestamp),
      img_area=repr(self._img_area),
      img_x=repr(self._img_x),
      img_y=repr(self._img_y),
      ground_area=repr(self._ground_area),
      ground_x=repr(self._ground_x),
      ground_y=repr(self._ground_y),
      top_img_area=repr(self._top_img_area),
      top_img_x=repr(self._top_img_x),
      top_img_y=repr(self._top_img_y),
      bottom_img_area=repr(self._bottom_img_area),
      bottom_img_x=repr(self._bottom_img_x),
      bottom_img_y=repr(self._bottom_img_y),
      left_img_area=repr(self._left_img_area),
      left_img_x=repr(self._left_img_x),
      left_img_y=repr(self._left_img_y),
      right_img_area=repr(self._right_img_area),
      right_img_x=repr(self._right_img_x),
      right_img_y=repr(self._right_img_y))

Anki.Vector.ExternalInterface.RobotObservedMotion = RobotObservedMotion
del RobotObservedMotion


class RobotObservedSalientPoint(object):
  "Generated message-passing message."

  __slots__ = (
    '_salientPoint', # Anki.Vision.SalientPoint
  )

  @property
  def salientPoint(self):
    "Anki.Vision.SalientPoint salientPoint struct property."
    return self._salientPoint

  @salientPoint.setter
  def salientPoint(self, value):
    self._salientPoint = msgbuffers.validate_object(
      'RobotObservedSalientPoint.salientPoint', value, Anki.Vision.SalientPoint)

  def __init__(self, salientPoint=Anki.Vision.SalientPoint()):
    self.salientPoint = salientPoint

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RobotObservedSalientPoint from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RobotObservedSalientPoint.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new RobotObservedSalientPoint from the given BinaryReader."
    _salientPoint = reader.read_object(Anki.Vision.SalientPoint.unpack_from)
    return cls(_salientPoint)

  def pack(self):
    "Writes the current RobotObservedSalientPoint, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current RobotObservedSalientPoint to the given BinaryWriter."
    writer.write_object(self._salientPoint)

  def __eq__(self, other):
    if type(self) is type(other):
      return self._salientPoint == other._salientPoint
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size_object(self._salientPoint))

  def __str__(self):
    return '{type}(salientPoint={salientPoint})'.format(
      type=type(self).__name__,
      salientPoint=self._salientPoint)

  def __repr__(self):
    return '{type}(salientPoint={salientPoint})'.format(
      type=type(self).__name__,
      salientPoint=repr(self._salientPoint))

Anki.Vector.ExternalInterface.RobotObservedSalientPoint = RobotObservedSalientPoint
del RobotObservedSalientPoint


class RobotObservedLaserPoint(object):
  "Generated message-passing message."

  __slots__ = (
    '_timestamp',            # uint_32
    '_ground_area_fraction', # float_32
    '_ground_x_mm',          # int_16
    '_ground_y_mm',          # int_16
  )

  @property
  def timestamp(self):
    "uint_32 timestamp struct property."
    return self._timestamp

  @timestamp.setter
  def timestamp(self, value):
    self._timestamp = msgbuffers.validate_integer(
      'RobotObservedLaserPoint.timestamp', value, 0, 4294967295)

  @property
  def ground_area_fraction(self):
    "float_32 ground_area_fraction struct property."
    return self._ground_area_fraction

  @ground_area_fraction.setter
  def ground_area_fraction(self, value):
    self._ground_area_fraction = msgbuffers.validate_float(
      'RobotObservedLaserPoint.ground_area_fraction', value, 'f')

  @property
  def ground_x_mm(self):
    "int_16 ground_x_mm struct property."
    return self._ground_x_mm

  @ground_x_mm.setter
  def ground_x_mm(self, value):
    self._ground_x_mm = msgbuffers.validate_integer(
      'RobotObservedLaserPoint.ground_x_mm', value, -32768, 32767)

  @property
  def ground_y_mm(self):
    "int_16 ground_y_mm struct property."
    return self._ground_y_mm

  @ground_y_mm.setter
  def ground_y_mm(self, value):
    self._ground_y_mm = msgbuffers.validate_integer(
      'RobotObservedLaserPoint.ground_y_mm', value, -32768, 32767)

  def __init__(self, timestamp=0, ground_area_fraction=0.0, ground_x_mm=0, ground_y_mm=0):
    self.timestamp = timestamp
    self.ground_area_fraction = ground_area_fraction
    self.ground_x_mm = ground_x_mm
    self.ground_y_mm = ground_y_mm

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RobotObservedLaserPoint from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RobotObservedLaserPoint.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new RobotObservedLaserPoint from the given BinaryReader."
    _timestamp = reader.read('I')
    _ground_area_fraction = reader.read('f')
    _ground_x_mm = reader.read('h')
    _ground_y_mm = reader.read('h')
    return cls(_timestamp, _ground_area_fraction, _ground_x_mm, _ground_y_mm)

  def pack(self):
    "Writes the current RobotObservedLaserPoint, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current RobotObservedLaserPoint to the given BinaryWriter."
    writer.write(self._timestamp, 'I')
    writer.write(self._ground_area_fraction, 'f')
    writer.write(self._ground_x_mm, 'h')
    writer.write(self._ground_y_mm, 'h')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._timestamp == other._timestamp and
        self._ground_area_fraction == other._ground_area_fraction and
        self._ground_x_mm == other._ground_x_mm and
        self._ground_y_mm == other._ground_y_mm)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._timestamp, 'I') +
      msgbuffers.size(self._ground_area_fraction, 'f') +
      msgbuffers.size(self._ground_x_mm, 'h') +
      msgbuffers.size(self._ground_y_mm, 'h'))

  def __str__(self):
    return '{type}(timestamp={timestamp}, ground_area_fraction={ground_area_fraction}, ground_x_mm={ground_x_mm}, ground_y_mm={ground_y_mm})'.format(
      type=type(self).__name__,
      timestamp=self._timestamp,
      ground_area_fraction=self._ground_area_fraction,
      ground_x_mm=self._ground_x_mm,
      ground_y_mm=self._ground_y_mm)

  def __repr__(self):
    return '{type}(timestamp={timestamp}, ground_area_fraction={ground_area_fraction}, ground_x_mm={ground_x_mm}, ground_y_mm={ground_y_mm})'.format(
      type=type(self).__name__,
      timestamp=repr(self._timestamp),
      ground_area_fraction=repr(self._ground_area_fraction),
      ground_x_mm=repr(self._ground_x_mm),
      ground_y_mm=repr(self._ground_y_mm))

Anki.Vector.ExternalInterface.RobotObservedLaserPoint = RobotObservedLaserPoint
del RobotObservedLaserPoint


class RobotObservedIllumination(object):
  "Generated message-passing message."

  __slots__ = (
    '_timestamp', # uint_32
    '_state',     # Anki.Vector.IlluminationState
  )

  @property
  def timestamp(self):
    "uint_32 timestamp struct property."
    return self._timestamp

  @timestamp.setter
  def timestamp(self, value):
    self._timestamp = msgbuffers.validate_integer(
      'RobotObservedIllumination.timestamp', value, 0, 4294967295)

  @property
  def state(self):
    "Anki.Vector.IlluminationState state struct property."
    return self._state

  @state.setter
  def state(self, value):
    self._state = msgbuffers.validate_integer(
      'RobotObservedIllumination.state', value, 0, 255)

  def __init__(self, timestamp=0, state=Anki.Vector.IlluminationState.Unknown):
    self.timestamp = timestamp
    self.state = state

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RobotObservedIllumination from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RobotObservedIllumination.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new RobotObservedIllumination from the given BinaryReader."
    _timestamp = reader.read('I')
    _state = reader.read('B')
    return cls(_timestamp, _state)

  def pack(self):
    "Writes the current RobotObservedIllumination, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current RobotObservedIllumination to the given BinaryWriter."
    writer.write(self._timestamp, 'I')
    writer.write(self._state, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._timestamp == other._timestamp and
        self._state == other._state)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._timestamp, 'I') +
      msgbuffers.size(self._state, 'B'))

  def __str__(self):
    return '{type}(timestamp={timestamp}, state={state})'.format(
      type=type(self).__name__,
      timestamp=self._timestamp,
      state=self._state)

  def __repr__(self):
    return '{type}(timestamp={timestamp}, state={state})'.format(
      type=type(self).__name__,
      timestamp=repr(self._timestamp),
      state=repr(self._state))

Anki.Vector.ExternalInterface.RobotObservedIllumination = RobotObservedIllumination
del RobotObservedIllumination


class RobotDeletedFace(object):
  "Generated message-passing message."

  __slots__ = (
    '_faceID', # int_32
  )

  @property
  def faceID(self):
    "int_32 faceID struct property."
    return self._faceID

  @faceID.setter
  def faceID(self, value):
    self._faceID = msgbuffers.validate_integer(
      'RobotDeletedFace.faceID', value, -2147483648, 2147483647)

  def __init__(self, faceID=0):
    self.faceID = faceID

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RobotDeletedFace from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RobotDeletedFace.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new RobotDeletedFace from the given BinaryReader."
    _faceID = reader.read('i')
    return cls(_faceID)

  def pack(self):
    "Writes the current RobotDeletedFace, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current RobotDeletedFace to the given BinaryWriter."
    writer.write(self._faceID, 'i')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._faceID == other._faceID
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._faceID, 'i'))

  def __str__(self):
    return '{type}(faceID={faceID})'.format(
      type=type(self).__name__,
      faceID=self._faceID)

  def __repr__(self):
    return '{type}(faceID={faceID})'.format(
      type=type(self).__name__,
      faceID=repr(self._faceID))

Anki.Vector.ExternalInterface.RobotDeletedFace = RobotDeletedFace
del RobotDeletedFace


class RobotDeletedLocatedObject(object):
  "Generated message-passing message."

  __slots__ = (
    '_objectID', # uint_32
  )

  @property
  def objectID(self):
    "uint_32 objectID struct property."
    return self._objectID

  @objectID.setter
  def objectID(self, value):
    self._objectID = msgbuffers.validate_integer(
      'RobotDeletedLocatedObject.objectID', value, 0, 4294967295)

  def __init__(self, objectID=0):
    self.objectID = objectID

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RobotDeletedLocatedObject from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RobotDeletedLocatedObject.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new RobotDeletedLocatedObject from the given BinaryReader."
    _objectID = reader.read('I')
    return cls(_objectID)

  def pack(self):
    "Writes the current RobotDeletedLocatedObject, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current RobotDeletedLocatedObject to the given BinaryWriter."
    writer.write(self._objectID, 'I')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._objectID == other._objectID
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._objectID, 'I'))

  def __str__(self):
    return '{type}(objectID={objectID})'.format(
      type=type(self).__name__,
      objectID=self._objectID)

  def __repr__(self):
    return '{type}(objectID={objectID})'.format(
      type=type(self).__name__,
      objectID=repr(self._objectID))

Anki.Vector.ExternalInterface.RobotDeletedLocatedObject = RobotDeletedLocatedObject
del RobotDeletedLocatedObject


class RobotDeletedAllCustomObjects(object):
  "Generated message-passing message."

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RobotDeletedAllCustomObjects from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RobotDeletedAllCustomObjects.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new RobotDeletedAllCustomObjects from the given BinaryReader."
    return cls()

  def pack(self):
    "Writes the current RobotDeletedAllCustomObjects, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current RobotDeletedAllCustomObjects to the given BinaryWriter."

  def __eq__(self, other):
    if type(self) is type(other):
      return True
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return 0

  def __str__(self):
    return '{type}()'.format(type=type(self).__name__)

  def __repr__(self):
    return '{type}()'.format(type=type(self).__name__)

Anki.Vector.ExternalInterface.RobotDeletedAllCustomObjects = RobotDeletedAllCustomObjects
del RobotDeletedAllCustomObjects


class RobotDeletedFixedCustomObjects(object):
  "Generated message-passing message."

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RobotDeletedFixedCustomObjects from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RobotDeletedFixedCustomObjects.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new RobotDeletedFixedCustomObjects from the given BinaryReader."
    return cls()

  def pack(self):
    "Writes the current RobotDeletedFixedCustomObjects, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current RobotDeletedFixedCustomObjects to the given BinaryWriter."

  def __eq__(self, other):
    if type(self) is type(other):
      return True
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return 0

  def __str__(self):
    return '{type}()'.format(type=type(self).__name__)

  def __repr__(self):
    return '{type}()'.format(type=type(self).__name__)

Anki.Vector.ExternalInterface.RobotDeletedFixedCustomObjects = RobotDeletedFixedCustomObjects
del RobotDeletedFixedCustomObjects


class RobotDeletedCustomMarkerObjects(object):
  "Generated message-passing message."

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RobotDeletedCustomMarkerObjects from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RobotDeletedCustomMarkerObjects.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new RobotDeletedCustomMarkerObjects from the given BinaryReader."
    return cls()

  def pack(self):
    "Writes the current RobotDeletedCustomMarkerObjects, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current RobotDeletedCustomMarkerObjects to the given BinaryWriter."

  def __eq__(self, other):
    if type(self) is type(other):
      return True
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return 0

  def __str__(self):
    return '{type}()'.format(type=type(self).__name__)

  def __repr__(self):
    return '{type}()'.format(type=type(self).__name__)

Anki.Vector.ExternalInterface.RobotDeletedCustomMarkerObjects = RobotDeletedCustomMarkerObjects
del RobotDeletedCustomMarkerObjects


class CreatedFixedCustomObject(object):
  "Generated message-passing message."

  __slots__ = (
    '_objectID', # uint_32
  )

  @property
  def objectID(self):
    "uint_32 objectID struct property."
    return self._objectID

  @objectID.setter
  def objectID(self, value):
    self._objectID = msgbuffers.validate_integer(
      'CreatedFixedCustomObject.objectID', value, 0, 4294967295)

  def __init__(self, objectID=0):
    self.objectID = objectID

  @classmethod
  def unpack(cls, buffer):
    "Reads a new CreatedFixedCustomObject from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('CreatedFixedCustomObject.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new CreatedFixedCustomObject from the given BinaryReader."
    _objectID = reader.read('I')
    return cls(_objectID)

  def pack(self):
    "Writes the current CreatedFixedCustomObject, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current CreatedFixedCustomObject to the given BinaryWriter."
    writer.write(self._objectID, 'I')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._objectID == other._objectID
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._objectID, 'I'))

  def __str__(self):
    return '{type}(objectID={objectID})'.format(
      type=type(self).__name__,
      objectID=self._objectID)

  def __repr__(self):
    return '{type}(objectID={objectID})'.format(
      type=type(self).__name__,
      objectID=repr(self._objectID))

Anki.Vector.ExternalInterface.CreatedFixedCustomObject = CreatedFixedCustomObject
del CreatedFixedCustomObject


class DefinedCustomObject(object):
  "Generated message-passing message."

  __slots__ = (
    '_success', # bool
  )

  @property
  def success(self):
    "bool success struct property."
    return self._success

  @success.setter
  def success(self, value):
    self._success = msgbuffers.validate_bool(
      'DefinedCustomObject.success', value)

  def __init__(self, success=False):
    self.success = success

  @classmethod
  def unpack(cls, buffer):
    "Reads a new DefinedCustomObject from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('DefinedCustomObject.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new DefinedCustomObject from the given BinaryReader."
    _success = bool(reader.read('b'))
    return cls(_success)

  def pack(self):
    "Writes the current DefinedCustomObject, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current DefinedCustomObject to the given BinaryWriter."
    writer.write(int(self._success), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._success == other._success
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._success, 'b'))

  def __str__(self):
    return '{type}(success={success})'.format(
      type=type(self).__name__,
      success=self._success)

  def __repr__(self):
    return '{type}(success={success})'.format(
      type=type(self).__name__,
      success=repr(self._success))

Anki.Vector.ExternalInterface.DefinedCustomObject = DefinedCustomObject
del DefinedCustomObject


class LocatedObjectState(object):
  "Generated message-passing structure."

  __slots__ = (
    '_objectID',              # uint_32
    '_lastObservedTimestamp', # uint_32
    '_objectType',            # Anki.Vector.ObjectType
    '_pose',                  # Anki.PoseStruct3d
    '_poseState',             # Anki.PoseState
    '_isConnected',           # bool
  )

  @property
  def objectID(self):
    "uint_32 objectID struct property."
    return self._objectID

  @objectID.setter
  def objectID(self, value):
    self._objectID = msgbuffers.validate_integer(
      'LocatedObjectState.objectID', value, 0, 4294967295)

  @property
  def lastObservedTimestamp(self):
    "uint_32 lastObservedTimestamp struct property."
    return self._lastObservedTimestamp

  @lastObservedTimestamp.setter
  def lastObservedTimestamp(self, value):
    self._lastObservedTimestamp = msgbuffers.validate_integer(
      'LocatedObjectState.lastObservedTimestamp', value, 0, 4294967295)

  @property
  def objectType(self):
    "Anki.Vector.ObjectType objectType struct property."
    return self._objectType

  @objectType.setter
  def objectType(self, value):
    self._objectType = msgbuffers.validate_integer(
      'LocatedObjectState.objectType', value, -2147483648, 2147483647)

  @property
  def pose(self):
    "Anki.PoseStruct3d pose struct property."
    return self._pose

  @pose.setter
  def pose(self, value):
    self._pose = msgbuffers.validate_object(
      'LocatedObjectState.pose', value, Anki.PoseStruct3d)

  @property
  def poseState(self):
    "Anki.PoseState poseState struct property."
    return self._poseState

  @poseState.setter
  def poseState(self, value):
    self._poseState = msgbuffers.validate_integer(
      'LocatedObjectState.poseState', value, 0, 255)

  @property
  def isConnected(self):
    "bool isConnected struct property."
    return self._isConnected

  @isConnected.setter
  def isConnected(self, value):
    self._isConnected = msgbuffers.validate_bool(
      'LocatedObjectState.isConnected', value)

  def __init__(self, objectID=0, lastObservedTimestamp=0, objectType=Anki.Vector.ObjectType.UnknownObject, pose=Anki.PoseStruct3d(), poseState=Anki.PoseState.Invalid, isConnected=False):
    self.objectID = objectID
    self.lastObservedTimestamp = lastObservedTimestamp
    self.objectType = objectType
    self.pose = pose
    self.poseState = poseState
    self.isConnected = isConnected

  @classmethod
  def unpack(cls, buffer):
    "Reads a new LocatedObjectState from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('LocatedObjectState.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new LocatedObjectState from the given BinaryReader."
    _objectID = reader.read('I')
    _lastObservedTimestamp = reader.read('I')
    _objectType = reader.read('i')
    _pose = reader.read_object(Anki.PoseStruct3d.unpack_from)
    _poseState = reader.read('B')
    _isConnected = bool(reader.read('b'))
    return cls(_objectID, _lastObservedTimestamp, _objectType, _pose, _poseState, _isConnected)

  def pack(self):
    "Writes the current LocatedObjectState, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current LocatedObjectState to the given BinaryWriter."
    writer.write(self._objectID, 'I')
    writer.write(self._lastObservedTimestamp, 'I')
    writer.write(self._objectType, 'i')
    writer.write_object(self._pose)
    writer.write(self._poseState, 'B')
    writer.write(int(self._isConnected), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._objectID == other._objectID and
        self._lastObservedTimestamp == other._lastObservedTimestamp and
        self._objectType == other._objectType and
        self._pose == other._pose and
        self._poseState == other._poseState and
        self._isConnected == other._isConnected)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._objectID, 'I') +
      msgbuffers.size(self._lastObservedTimestamp, 'I') +
      msgbuffers.size(self._objectType, 'i') +
      msgbuffers.size_object(self._pose) +
      msgbuffers.size(self._poseState, 'B') +
      msgbuffers.size(self._isConnected, 'b'))

  def __str__(self):
    return '{type}(objectID={objectID}, lastObservedTimestamp={lastObservedTimestamp}, objectType={objectType}, pose={pose}, poseState={poseState}, isConnected={isConnected})'.format(
      type=type(self).__name__,
      objectID=self._objectID,
      lastObservedTimestamp=self._lastObservedTimestamp,
      objectType=self._objectType,
      pose=self._pose,
      poseState=self._poseState,
      isConnected=self._isConnected)

  def __repr__(self):
    return '{type}(objectID={objectID}, lastObservedTimestamp={lastObservedTimestamp}, objectType={objectType}, pose={pose}, poseState={poseState}, isConnected={isConnected})'.format(
      type=type(self).__name__,
      objectID=repr(self._objectID),
      lastObservedTimestamp=repr(self._lastObservedTimestamp),
      objectType=repr(self._objectType),
      pose=repr(self._pose),
      poseState=repr(self._poseState),
      isConnected=repr(self._isConnected))

Anki.Vector.ExternalInterface.LocatedObjectState = LocatedObjectState
del LocatedObjectState


class LocatedObjectStates(object):
  "Generated message-passing message."

  __slots__ = (
    '_objects', # LocatedObjectState[uint_8]
  )

  @property
  def objects(self):
    "LocatedObjectState[uint_8] objects struct property."
    return self._objects

  @objects.setter
  def objects(self, value):
    self._objects = msgbuffers.validate_varray(
      'LocatedObjectStates.objects', value, 255,
      lambda name, value_inner: msgbuffers.validate_object(
        name, value_inner, Anki.Vector.ExternalInterface.LocatedObjectState))

  def __init__(self, objects=()):
    self.objects = objects

  @classmethod
  def unpack(cls, buffer):
    "Reads a new LocatedObjectStates from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('LocatedObjectStates.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new LocatedObjectStates from the given BinaryReader."
    _objects = reader.read_object_varray(Anki.Vector.ExternalInterface.LocatedObjectState.unpack_from, 'B')
    return cls(_objects)

  def pack(self):
    "Writes the current LocatedObjectStates, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current LocatedObjectStates to the given BinaryWriter."
    writer.write_object_varray(self._objects, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._objects == other._objects
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size_object_varray(self._objects, 'B'))

  def __str__(self):
    return '{type}(objects={objects})'.format(
      type=type(self).__name__,
      objects=msgbuffers.shorten_sequence(self._objects))

  def __repr__(self):
    return '{type}(objects={objects})'.format(
      type=type(self).__name__,
      objects=repr(self._objects))

Anki.Vector.ExternalInterface.LocatedObjectStates = LocatedObjectStates
del LocatedObjectStates


class ConnectedObjectState(object):
  "Generated message-passing structure."

  __slots__ = (
    '_objectID',   # uint_32
    '_objectType', # Anki.Vector.ObjectType
  )

  @property
  def objectID(self):
    "uint_32 objectID struct property."
    return self._objectID

  @objectID.setter
  def objectID(self, value):
    self._objectID = msgbuffers.validate_integer(
      'ConnectedObjectState.objectID', value, 0, 4294967295)

  @property
  def objectType(self):
    "Anki.Vector.ObjectType objectType struct property."
    return self._objectType

  @objectType.setter
  def objectType(self, value):
    self._objectType = msgbuffers.validate_integer(
      'ConnectedObjectState.objectType', value, -2147483648, 2147483647)

  def __init__(self, objectID=0, objectType=Anki.Vector.ObjectType.UnknownObject):
    self.objectID = objectID
    self.objectType = objectType

  @classmethod
  def unpack(cls, buffer):
    "Reads a new ConnectedObjectState from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('ConnectedObjectState.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new ConnectedObjectState from the given BinaryReader."
    _objectID = reader.read('I')
    _objectType = reader.read('i')
    return cls(_objectID, _objectType)

  def pack(self):
    "Writes the current ConnectedObjectState, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current ConnectedObjectState to the given BinaryWriter."
    writer.write(self._objectID, 'I')
    writer.write(self._objectType, 'i')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._objectID == other._objectID and
        self._objectType == other._objectType)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._objectID, 'I') +
      msgbuffers.size(self._objectType, 'i'))

  def __str__(self):
    return '{type}(objectID={objectID}, objectType={objectType})'.format(
      type=type(self).__name__,
      objectID=self._objectID,
      objectType=self._objectType)

  def __repr__(self):
    return '{type}(objectID={objectID}, objectType={objectType})'.format(
      type=type(self).__name__,
      objectID=repr(self._objectID),
      objectType=repr(self._objectType))

Anki.Vector.ExternalInterface.ConnectedObjectState = ConnectedObjectState
del ConnectedObjectState


class ConnectedObjectStates(object):
  "Generated message-passing message."

  __slots__ = (
    '_objects', # ConnectedObjectState[uint_8]
  )

  @property
  def objects(self):
    "ConnectedObjectState[uint_8] objects struct property."
    return self._objects

  @objects.setter
  def objects(self, value):
    self._objects = msgbuffers.validate_varray(
      'ConnectedObjectStates.objects', value, 255,
      lambda name, value_inner: msgbuffers.validate_object(
        name, value_inner, Anki.Vector.ExternalInterface.ConnectedObjectState))

  def __init__(self, objects=()):
    self.objects = objects

  @classmethod
  def unpack(cls, buffer):
    "Reads a new ConnectedObjectStates from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('ConnectedObjectStates.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new ConnectedObjectStates from the given BinaryReader."
    _objects = reader.read_object_varray(Anki.Vector.ExternalInterface.ConnectedObjectState.unpack_from, 'B')
    return cls(_objects)

  def pack(self):
    "Writes the current ConnectedObjectStates, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current ConnectedObjectStates to the given BinaryWriter."
    writer.write_object_varray(self._objects, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._objects == other._objects
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size_object_varray(self._objects, 'B'))

  def __str__(self):
    return '{type}(objects={objects})'.format(
      type=type(self).__name__,
      objects=msgbuffers.shorten_sequence(self._objects))

  def __repr__(self):
    return '{type}(objects={objects})'.format(
      type=type(self).__name__,
      objects=repr(self._objects))

Anki.Vector.ExternalInterface.ConnectedObjectStates = ConnectedObjectStates
del ConnectedObjectStates


class MeetVictorStarted(object):
  "Generated message-passing message."

  __slots__ = (
    '_name', # string[uint_8]
  )

  @property
  def name(self):
    "string[uint_8] name struct property."
    return self._name

  @name.setter
  def name(self, value):
    self._name = msgbuffers.validate_string(
      'MeetVictorStarted.name', value, 255)

  def __init__(self, name=''):
    self.name = name

  @classmethod
  def unpack(cls, buffer):
    "Reads a new MeetVictorStarted from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('MeetVictorStarted.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new MeetVictorStarted from the given BinaryReader."
    _name = reader.read_string('B')
    return cls(_name)

  def pack(self):
    "Writes the current MeetVictorStarted, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current MeetVictorStarted to the given BinaryWriter."
    writer.write_string(self._name, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._name == other._name
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size_string(self._name, 'B'))

  def __str__(self):
    return '{type}(name={name})'.format(
      type=type(self).__name__,
      name=msgbuffers.shorten_string(self._name))

  def __repr__(self):
    return '{type}(name={name})'.format(
      type=type(self).__name__,
      name=repr(self._name))

Anki.Vector.ExternalInterface.MeetVictorStarted = MeetVictorStarted
del MeetVictorStarted


class MeetVictorFaceScanStarted(object):
  "Generated message-passing message."

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new MeetVictorFaceScanStarted from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('MeetVictorFaceScanStarted.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new MeetVictorFaceScanStarted from the given BinaryReader."
    return cls()

  def pack(self):
    "Writes the current MeetVictorFaceScanStarted, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current MeetVictorFaceScanStarted to the given BinaryWriter."

  def __eq__(self, other):
    if type(self) is type(other):
      return True
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return 0

  def __str__(self):
    return '{type}()'.format(type=type(self).__name__)

  def __repr__(self):
    return '{type}()'.format(type=type(self).__name__)

Anki.Vector.ExternalInterface.MeetVictorFaceScanStarted = MeetVictorFaceScanStarted
del MeetVictorFaceScanStarted


class MeetVictorFaceScanComplete(object):
  "Generated message-passing message."

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new MeetVictorFaceScanComplete from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('MeetVictorFaceScanComplete.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new MeetVictorFaceScanComplete from the given BinaryReader."
    return cls()

  def pack(self):
    "Writes the current MeetVictorFaceScanComplete, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current MeetVictorFaceScanComplete to the given BinaryWriter."

  def __eq__(self, other):
    if type(self) is type(other):
      return True
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return 0

  def __str__(self):
    return '{type}()'.format(type=type(self).__name__)

  def __repr__(self):
    return '{type}()'.format(type=type(self).__name__)

Anki.Vector.ExternalInterface.MeetVictorFaceScanComplete = MeetVictorFaceScanComplete
del MeetVictorFaceScanComplete


class MeetVictorNameSaved(object):
  "Generated message-passing message."

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new MeetVictorNameSaved from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('MeetVictorNameSaved.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new MeetVictorNameSaved from the given BinaryReader."
    return cls()

  def pack(self):
    "Writes the current MeetVictorNameSaved, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current MeetVictorNameSaved to the given BinaryWriter."

  def __eq__(self, other):
    if type(self) is type(other):
      return True
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return 0

  def __str__(self):
    return '{type}()'.format(type=type(self).__name__)

  def __repr__(self):
    return '{type}()'.format(type=type(self).__name__)

Anki.Vector.ExternalInterface.MeetVictorNameSaved = MeetVictorNameSaved
del MeetVictorNameSaved


class RobotErasedEnrolledFace(object):
  "Generated message-passing message."

  __slots__ = (
    '_faceID', # int_32
    '_name',   # string[uint_8]
  )

  @property
  def faceID(self):
    "int_32 faceID struct property."
    return self._faceID

  @faceID.setter
  def faceID(self, value):
    self._faceID = msgbuffers.validate_integer(
      'RobotErasedEnrolledFace.faceID', value, -2147483648, 2147483647)

  @property
  def name(self):
    "string[uint_8] name struct property."
    return self._name

  @name.setter
  def name(self, value):
    self._name = msgbuffers.validate_string(
      'RobotErasedEnrolledFace.name', value, 255)

  def __init__(self, faceID=0, name=''):
    self.faceID = faceID
    self.name = name

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RobotErasedEnrolledFace from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RobotErasedEnrolledFace.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new RobotErasedEnrolledFace from the given BinaryReader."
    _faceID = reader.read('i')
    _name = reader.read_string('B')
    return cls(_faceID, _name)

  def pack(self):
    "Writes the current RobotErasedEnrolledFace, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current RobotErasedEnrolledFace to the given BinaryWriter."
    writer.write(self._faceID, 'i')
    writer.write_string(self._name, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._faceID == other._faceID and
        self._name == other._name)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._faceID, 'i') +
      msgbuffers.size_string(self._name, 'B'))

  def __str__(self):
    return '{type}(faceID={faceID}, name={name})'.format(
      type=type(self).__name__,
      faceID=self._faceID,
      name=msgbuffers.shorten_string(self._name))

  def __repr__(self):
    return '{type}(faceID={faceID}, name={name})'.format(
      type=type(self).__name__,
      faceID=repr(self._faceID),
      name=repr(self._name))

Anki.Vector.ExternalInterface.RobotErasedEnrolledFace = RobotErasedEnrolledFace
del RobotErasedEnrolledFace


class EnrolledNamesResponse(object):
  "Generated message-passing message."

  __slots__ = (
    '_faces', # LoadedKnownFace[uint_8]
  )

  @property
  def faces(self):
    "LoadedKnownFace[uint_8] faces struct property."
    return self._faces

  @faces.setter
  def faces(self, value):
    self._faces = msgbuffers.validate_varray(
      'EnrolledNamesResponse.faces', value, 255,
      lambda name, value_inner: msgbuffers.validate_object(
        name, value_inner, Anki.Vision.LoadedKnownFace))

  def __init__(self, faces=()):
    self.faces = faces

  @classmethod
  def unpack(cls, buffer):
    "Reads a new EnrolledNamesResponse from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('EnrolledNamesResponse.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new EnrolledNamesResponse from the given BinaryReader."
    _faces = reader.read_object_varray(Anki.Vision.LoadedKnownFace.unpack_from, 'B')
    return cls(_faces)

  def pack(self):
    "Writes the current EnrolledNamesResponse, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current EnrolledNamesResponse to the given BinaryWriter."
    writer.write_object_varray(self._faces, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._faces == other._faces
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size_object_varray(self._faces, 'B'))

  def __str__(self):
    return '{type}(faces={faces})'.format(
      type=type(self).__name__,
      faces=msgbuffers.shorten_sequence(self._faces))

  def __repr__(self):
    return '{type}(faces={faces})'.format(
      type=type(self).__name__,
      faces=repr(self._faces))

Anki.Vector.ExternalInterface.EnrolledNamesResponse = EnrolledNamesResponse
del EnrolledNamesResponse


class RobotErasedAllEnrolledFaces(object):
  "Generated message-passing message."

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RobotErasedAllEnrolledFaces from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RobotErasedAllEnrolledFaces.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new RobotErasedAllEnrolledFaces from the given BinaryReader."
    return cls()

  def pack(self):
    "Writes the current RobotErasedAllEnrolledFaces, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current RobotErasedAllEnrolledFaces to the given BinaryWriter."

  def __eq__(self, other):
    if type(self) is type(other):
      return True
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return 0

  def __str__(self):
    return '{type}()'.format(type=type(self).__name__)

  def __repr__(self):
    return '{type}()'.format(type=type(self).__name__)

Anki.Vector.ExternalInterface.RobotErasedAllEnrolledFaces = RobotErasedAllEnrolledFaces
del RobotErasedAllEnrolledFaces


class RobotCompletedFactoryDotTest(object):
  "Generated message-passing message."

  __slots__ = (
    '_camPoseX_mm',      # float_32
    '_camPoseY_mm',      # float_32
    '_camPoseZ_mm',      # float_32
    '_camPoseRoll_rad',  # float_32
    '_camPosePitch_rad', # float_32
    '_camPoseYaw_rad',   # float_32
    '_dotCenX_pix',      # float_32[4]
    '_dotCenY_pix',      # float_32[4]
    '_headAngle',        # float_32
    '_success',          # bool
    '_didComputePose',   # bool
  )

  @property
  def camPoseX_mm(self):
    "float_32 camPoseX_mm struct property."
    return self._camPoseX_mm

  @camPoseX_mm.setter
  def camPoseX_mm(self, value):
    self._camPoseX_mm = msgbuffers.validate_float(
      'RobotCompletedFactoryDotTest.camPoseX_mm', value, 'f')

  @property
  def camPoseY_mm(self):
    "float_32 camPoseY_mm struct property."
    return self._camPoseY_mm

  @camPoseY_mm.setter
  def camPoseY_mm(self, value):
    self._camPoseY_mm = msgbuffers.validate_float(
      'RobotCompletedFactoryDotTest.camPoseY_mm', value, 'f')

  @property
  def camPoseZ_mm(self):
    "float_32 camPoseZ_mm struct property."
    return self._camPoseZ_mm

  @camPoseZ_mm.setter
  def camPoseZ_mm(self, value):
    self._camPoseZ_mm = msgbuffers.validate_float(
      'RobotCompletedFactoryDotTest.camPoseZ_mm', value, 'f')

  @property
  def camPoseRoll_rad(self):
    "float_32 camPoseRoll_rad struct property."
    return self._camPoseRoll_rad

  @camPoseRoll_rad.setter
  def camPoseRoll_rad(self, value):
    self._camPoseRoll_rad = msgbuffers.validate_float(
      'RobotCompletedFactoryDotTest.camPoseRoll_rad', value, 'f')

  @property
  def camPosePitch_rad(self):
    "float_32 camPosePitch_rad struct property."
    return self._camPosePitch_rad

  @camPosePitch_rad.setter
  def camPosePitch_rad(self, value):
    self._camPosePitch_rad = msgbuffers.validate_float(
      'RobotCompletedFactoryDotTest.camPosePitch_rad', value, 'f')

  @property
  def camPoseYaw_rad(self):
    "float_32 camPoseYaw_rad struct property."
    return self._camPoseYaw_rad

  @camPoseYaw_rad.setter
  def camPoseYaw_rad(self, value):
    self._camPoseYaw_rad = msgbuffers.validate_float(
      'RobotCompletedFactoryDotTest.camPoseYaw_rad', value, 'f')

  @property
  def dotCenX_pix(self):
    "float_32[4] dotCenX_pix struct property."
    return self._dotCenX_pix

  @dotCenX_pix.setter
  def dotCenX_pix(self, value):
    self._dotCenX_pix = msgbuffers.validate_farray(
      'RobotCompletedFactoryDotTest.dotCenX_pix', value, 4,
      lambda name, value_inner: msgbuffers.validate_float(
        name, value_inner, 'f'))

  @property
  def dotCenY_pix(self):
    "float_32[4] dotCenY_pix struct property."
    return self._dotCenY_pix

  @dotCenY_pix.setter
  def dotCenY_pix(self, value):
    self._dotCenY_pix = msgbuffers.validate_farray(
      'RobotCompletedFactoryDotTest.dotCenY_pix', value, 4,
      lambda name, value_inner: msgbuffers.validate_float(
        name, value_inner, 'f'))

  @property
  def headAngle(self):
    "float_32 headAngle struct property."
    return self._headAngle

  @headAngle.setter
  def headAngle(self, value):
    self._headAngle = msgbuffers.validate_float(
      'RobotCompletedFactoryDotTest.headAngle', value, 'f')

  @property
  def success(self):
    "bool success struct property."
    return self._success

  @success.setter
  def success(self, value):
    self._success = msgbuffers.validate_bool(
      'RobotCompletedFactoryDotTest.success', value)

  @property
  def didComputePose(self):
    "bool didComputePose struct property."
    return self._didComputePose

  @didComputePose.setter
  def didComputePose(self, value):
    self._didComputePose = msgbuffers.validate_bool(
      'RobotCompletedFactoryDotTest.didComputePose', value)

  def __init__(self, camPoseX_mm=0.0, camPoseY_mm=0.0, camPoseZ_mm=0.0, camPoseRoll_rad=0.0, camPosePitch_rad=0.0, camPoseYaw_rad=0.0, dotCenX_pix=(0.0,) * 4, dotCenY_pix=(0.0,) * 4, headAngle=0.0, success=False, didComputePose=False):
    self.camPoseX_mm = camPoseX_mm
    self.camPoseY_mm = camPoseY_mm
    self.camPoseZ_mm = camPoseZ_mm
    self.camPoseRoll_rad = camPoseRoll_rad
    self.camPosePitch_rad = camPosePitch_rad
    self.camPoseYaw_rad = camPoseYaw_rad
    self.dotCenX_pix = dotCenX_pix
    self.dotCenY_pix = dotCenY_pix
    self.headAngle = headAngle
    self.success = success
    self.didComputePose = didComputePose

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RobotCompletedFactoryDotTest from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RobotCompletedFactoryDotTest.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new RobotCompletedFactoryDotTest from the given BinaryReader."
    _camPoseX_mm = reader.read('f')
    _camPoseY_mm = reader.read('f')
    _camPoseZ_mm = reader.read('f')
    _camPoseRoll_rad = reader.read('f')
    _camPosePitch_rad = reader.read('f')
    _camPoseYaw_rad = reader.read('f')
    _dotCenX_pix = reader.read_farray('f', 4)
    _dotCenY_pix = reader.read_farray('f', 4)
    _headAngle = reader.read('f')
    _success = bool(reader.read('b'))
    _didComputePose = bool(reader.read('b'))
    return cls(_camPoseX_mm, _camPoseY_mm, _camPoseZ_mm, _camPoseRoll_rad, _camPosePitch_rad, _camPoseYaw_rad, _dotCenX_pix, _dotCenY_pix, _headAngle, _success, _didComputePose)

  def pack(self):
    "Writes the current RobotCompletedFactoryDotTest, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current RobotCompletedFactoryDotTest to the given BinaryWriter."
    writer.write(self._camPoseX_mm, 'f')
    writer.write(self._camPoseY_mm, 'f')
    writer.write(self._camPoseZ_mm, 'f')
    writer.write(self._camPoseRoll_rad, 'f')
    writer.write(self._camPosePitch_rad, 'f')
    writer.write(self._camPoseYaw_rad, 'f')
    writer.write_farray(self._dotCenX_pix, 'f', 4)
    writer.write_farray(self._dotCenY_pix, 'f', 4)
    writer.write(self._headAngle, 'f')
    writer.write(int(self._success), 'b')
    writer.write(int(self._didComputePose), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._camPoseX_mm == other._camPoseX_mm and
        self._camPoseY_mm == other._camPoseY_mm and
        self._camPoseZ_mm == other._camPoseZ_mm and
        self._camPoseRoll_rad == other._camPoseRoll_rad and
        self._camPosePitch_rad == other._camPosePitch_rad and
        self._camPoseYaw_rad == other._camPoseYaw_rad and
        self._dotCenX_pix == other._dotCenX_pix and
        self._dotCenY_pix == other._dotCenY_pix and
        self._headAngle == other._headAngle and
        self._success == other._success and
        self._didComputePose == other._didComputePose)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._camPoseX_mm, 'f') +
      msgbuffers.size(self._camPoseY_mm, 'f') +
      msgbuffers.size(self._camPoseZ_mm, 'f') +
      msgbuffers.size(self._camPoseRoll_rad, 'f') +
      msgbuffers.size(self._camPosePitch_rad, 'f') +
      msgbuffers.size(self._camPoseYaw_rad, 'f') +
      msgbuffers.size_farray(self._dotCenX_pix, 'f', 4) +
      msgbuffers.size_farray(self._dotCenY_pix, 'f', 4) +
      msgbuffers.size(self._headAngle, 'f') +
      msgbuffers.size(self._success, 'b') +
      msgbuffers.size(self._didComputePose, 'b'))

  def __str__(self):
    return '{type}(camPoseX_mm={camPoseX_mm}, camPoseY_mm={camPoseY_mm}, camPoseZ_mm={camPoseZ_mm}, camPoseRoll_rad={camPoseRoll_rad}, camPosePitch_rad={camPosePitch_rad}, camPoseYaw_rad={camPoseYaw_rad}, dotCenX_pix={dotCenX_pix}, dotCenY_pix={dotCenY_pix}, headAngle={headAngle}, success={success}, didComputePose={didComputePose})'.format(
      type=type(self).__name__,
      camPoseX_mm=self._camPoseX_mm,
      camPoseY_mm=self._camPoseY_mm,
      camPoseZ_mm=self._camPoseZ_mm,
      camPoseRoll_rad=self._camPoseRoll_rad,
      camPosePitch_rad=self._camPosePitch_rad,
      camPoseYaw_rad=self._camPoseYaw_rad,
      dotCenX_pix=msgbuffers.shorten_sequence(self._dotCenX_pix),
      dotCenY_pix=msgbuffers.shorten_sequence(self._dotCenY_pix),
      headAngle=self._headAngle,
      success=self._success,
      didComputePose=self._didComputePose)

  def __repr__(self):
    return '{type}(camPoseX_mm={camPoseX_mm}, camPoseY_mm={camPoseY_mm}, camPoseZ_mm={camPoseZ_mm}, camPoseRoll_rad={camPoseRoll_rad}, camPosePitch_rad={camPosePitch_rad}, camPoseYaw_rad={camPoseYaw_rad}, dotCenX_pix={dotCenX_pix}, dotCenY_pix={dotCenY_pix}, headAngle={headAngle}, success={success}, didComputePose={didComputePose})'.format(
      type=type(self).__name__,
      camPoseX_mm=repr(self._camPoseX_mm),
      camPoseY_mm=repr(self._camPoseY_mm),
      camPoseZ_mm=repr(self._camPoseZ_mm),
      camPoseRoll_rad=repr(self._camPoseRoll_rad),
      camPosePitch_rad=repr(self._camPosePitch_rad),
      camPoseYaw_rad=repr(self._camPoseYaw_rad),
      dotCenX_pix=repr(self._dotCenX_pix),
      dotCenY_pix=repr(self._dotCenY_pix),
      headAngle=repr(self._headAngle),
      success=repr(self._success),
      didComputePose=repr(self._didComputePose))

Anki.Vector.ExternalInterface.RobotCompletedFactoryDotTest = RobotCompletedFactoryDotTest
del RobotCompletedFactoryDotTest


class PlaypenBehaviorFailed(object):
  "Generated message-passing message."

  __slots__ = (
    '_result', # Anki.Vector.FactoryTestResultCode
  )

  @property
  def result(self):
    "Anki.Vector.FactoryTestResultCode result struct property."
    return self._result

  @result.setter
  def result(self, value):
    self._result = msgbuffers.validate_integer(
      'PlaypenBehaviorFailed.result', value, 0, 255)

  def __init__(self, result=Anki.Vector.FactoryTestResultCode.UNKNOWN):
    self.result = result

  @classmethod
  def unpack(cls, buffer):
    "Reads a new PlaypenBehaviorFailed from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('PlaypenBehaviorFailed.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new PlaypenBehaviorFailed from the given BinaryReader."
    _result = reader.read('B')
    return cls(_result)

  def pack(self):
    "Writes the current PlaypenBehaviorFailed, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current PlaypenBehaviorFailed to the given BinaryWriter."
    writer.write(self._result, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._result == other._result
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._result, 'B'))

  def __str__(self):
    return '{type}(result={result})'.format(
      type=type(self).__name__,
      result=self._result)

  def __repr__(self):
    return '{type}(result={result})'.format(
      type=type(self).__name__,
      result=repr(self._result))

Anki.Vector.ExternalInterface.PlaypenBehaviorFailed = PlaypenBehaviorFailed
del PlaypenBehaviorFailed


class SelfTestBehaviorFailed(object):
  "Generated message-passing message."

  __slots__ = (
    '_result', # Anki.Vector.SelfTestResultCode
  )

  @property
  def result(self):
    "Anki.Vector.SelfTestResultCode result struct property."
    return self._result

  @result.setter
  def result(self, value):
    self._result = msgbuffers.validate_integer(
      'SelfTestBehaviorFailed.result', value, 0, 255)

  def __init__(self, result=Anki.Vector.SelfTestResultCode.UNKNOWN):
    self.result = result

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SelfTestBehaviorFailed from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SelfTestBehaviorFailed.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new SelfTestBehaviorFailed from the given BinaryReader."
    _result = reader.read('B')
    return cls(_result)

  def pack(self):
    "Writes the current SelfTestBehaviorFailed, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current SelfTestBehaviorFailed to the given BinaryWriter."
    writer.write(self._result, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._result == other._result
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._result, 'B'))

  def __str__(self):
    return '{type}(result={result})'.format(
      type=type(self).__name__,
      result=self._result)

  def __repr__(self):
    return '{type}(result={result})'.format(
      type=type(self).__name__,
      result=repr(self._result))

Anki.Vector.ExternalInterface.SelfTestBehaviorFailed = SelfTestBehaviorFailed
del SelfTestBehaviorFailed


class SelfTestEnd(object):
  "Generated message-passing message."

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new SelfTestEnd from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('SelfTestEnd.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new SelfTestEnd from the given BinaryReader."
    return cls()

  def pack(self):
    "Writes the current SelfTestEnd, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current SelfTestEnd to the given BinaryWriter."

  def __eq__(self, other):
    if type(self) is type(other):
      return True
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return 0

  def __str__(self):
    return '{type}()'.format(type=type(self).__name__)

  def __repr__(self):
    return '{type}()'.format(type=type(self).__name__)

Anki.Vector.ExternalInterface.SelfTestEnd = SelfTestEnd
del SelfTestEnd


class AnimationAvailable(object):
  "Generated message-passing message."

  __slots__ = (
    '_animName', # string[uint_8]
  )

  @property
  def animName(self):
    "string[uint_8] animName struct property."
    return self._animName

  @animName.setter
  def animName(self, value):
    self._animName = msgbuffers.validate_string(
      'AnimationAvailable.animName', value, 255)

  def __init__(self, animName=''):
    self.animName = animName

  @classmethod
  def unpack(cls, buffer):
    "Reads a new AnimationAvailable from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('AnimationAvailable.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new AnimationAvailable from the given BinaryReader."
    _animName = reader.read_string('B')
    return cls(_animName)

  def pack(self):
    "Writes the current AnimationAvailable, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current AnimationAvailable to the given BinaryWriter."
    writer.write_string(self._animName, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._animName == other._animName
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size_string(self._animName, 'B'))

  def __str__(self):
    return '{type}(animName={animName})'.format(
      type=type(self).__name__,
      animName=msgbuffers.shorten_string(self._animName))

  def __repr__(self):
    return '{type}(animName={animName})'.format(
      type=type(self).__name__,
      animName=repr(self._animName))

Anki.Vector.ExternalInterface.AnimationAvailable = AnimationAvailable
del AnimationAvailable


class AnimationGroupAvailable(object):
  "Generated message-passing message."

  __slots__ = (
    '_animGroupName', # string[uint_8]
  )

  @property
  def animGroupName(self):
    "string[uint_8] animGroupName struct property."
    return self._animGroupName

  @animGroupName.setter
  def animGroupName(self, value):
    self._animGroupName = msgbuffers.validate_string(
      'AnimationGroupAvailable.animGroupName', value, 255)

  def __init__(self, animGroupName=''):
    self.animGroupName = animGroupName

  @classmethod
  def unpack(cls, buffer):
    "Reads a new AnimationGroupAvailable from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('AnimationGroupAvailable.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new AnimationGroupAvailable from the given BinaryReader."
    _animGroupName = reader.read_string('B')
    return cls(_animGroupName)

  def pack(self):
    "Writes the current AnimationGroupAvailable, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current AnimationGroupAvailable to the given BinaryWriter."
    writer.write_string(self._animGroupName, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._animGroupName == other._animGroupName
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size_string(self._animGroupName, 'B'))

  def __str__(self):
    return '{type}(animGroupName={animGroupName})'.format(
      type=type(self).__name__,
      animGroupName=msgbuffers.shorten_string(self._animGroupName))

  def __repr__(self):
    return '{type}(animGroupName={animGroupName})'.format(
      type=type(self).__name__,
      animGroupName=repr(self._animGroupName))

Anki.Vector.ExternalInterface.AnimationGroupAvailable = AnimationGroupAvailable
del AnimationGroupAvailable


class AnimationAborted(object):
  "Generated message-passing message."

  __slots__ = (
    '_tag', # uint_32
  )

  @property
  def tag(self):
    "uint_32 tag struct property."
    return self._tag

  @tag.setter
  def tag(self, value):
    self._tag = msgbuffers.validate_integer(
      'AnimationAborted.tag', value, 0, 4294967295)

  def __init__(self, tag=0):
    self.tag = tag

  @classmethod
  def unpack(cls, buffer):
    "Reads a new AnimationAborted from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('AnimationAborted.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new AnimationAborted from the given BinaryReader."
    _tag = reader.read('I')
    return cls(_tag)

  def pack(self):
    "Writes the current AnimationAborted, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current AnimationAborted to the given BinaryWriter."
    writer.write(self._tag, 'I')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._tag == other._tag
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._tag, 'I'))

  def __str__(self):
    return '{type}(tag={tag})'.format(
      type=type(self).__name__,
      tag=self._tag)

  def __repr__(self):
    return '{type}(tag={tag})'.format(
      type=type(self).__name__,
      tag=repr(self._tag))

Anki.Vector.ExternalInterface.AnimationAborted = AnimationAborted
del AnimationAborted


class AnimationEvent(object):
  "Generated message-passing message."

  __slots__ = (
    '_timestamp', # uint_32
    '_event_id',  # Anki.Vector.AnimEvent
  )

  @property
  def timestamp(self):
    "uint_32 timestamp struct property."
    return self._timestamp

  @timestamp.setter
  def timestamp(self, value):
    self._timestamp = msgbuffers.validate_integer(
      'AnimationEvent.timestamp', value, 0, 4294967295)

  @property
  def event_id(self):
    "Anki.Vector.AnimEvent event_id struct property."
    return self._event_id

  @event_id.setter
  def event_id(self, value):
    self._event_id = msgbuffers.validate_integer(
      'AnimationEvent.event_id', value, 0, 255)

  def __init__(self, timestamp=0, event_id=Anki.Vector.AnimEvent.DEVICE_AUDIO_TRIGGER):
    self.timestamp = timestamp
    self.event_id = event_id

  @classmethod
  def unpack(cls, buffer):
    "Reads a new AnimationEvent from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('AnimationEvent.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new AnimationEvent from the given BinaryReader."
    _timestamp = reader.read('I')
    _event_id = reader.read('B')
    return cls(_timestamp, _event_id)

  def pack(self):
    "Writes the current AnimationEvent, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current AnimationEvent to the given BinaryWriter."
    writer.write(self._timestamp, 'I')
    writer.write(self._event_id, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._timestamp == other._timestamp and
        self._event_id == other._event_id)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._timestamp, 'I') +
      msgbuffers.size(self._event_id, 'B'))

  def __str__(self):
    return '{type}(timestamp={timestamp}, event_id={event_id})'.format(
      type=type(self).__name__,
      timestamp=self._timestamp,
      event_id=self._event_id)

  def __repr__(self):
    return '{type}(timestamp={timestamp}, event_id={event_id})'.format(
      type=type(self).__name__,
      timestamp=repr(self._timestamp),
      event_id=repr(self._event_id))

Anki.Vector.ExternalInterface.AnimationEvent = AnimationEvent
del AnimationEvent


class ObjectAvailable(object):
  "Generated message-passing message."

  __slots__ = (
    '_factory_id', # string[uint_8]
    '_objectType', # Anki.Vector.ObjectType
    '_rssi',       # int_8
  )

  @property
  def factory_id(self):
    "string[uint_8] factory_id struct property."
    return self._factory_id

  @factory_id.setter
  def factory_id(self, value):
    self._factory_id = msgbuffers.validate_string(
      'ObjectAvailable.factory_id', value, 255)

  @property
  def objectType(self):
    "Anki.Vector.ObjectType objectType struct property."
    return self._objectType

  @objectType.setter
  def objectType(self, value):
    self._objectType = msgbuffers.validate_integer(
      'ObjectAvailable.objectType', value, -2147483648, 2147483647)

  @property
  def rssi(self):
    "int_8 rssi struct property."
    return self._rssi

  @rssi.setter
  def rssi(self, value):
    self._rssi = msgbuffers.validate_integer(
      'ObjectAvailable.rssi', value, -128, 127)

  def __init__(self, factory_id='', objectType=Anki.Vector.ObjectType.UnknownObject, rssi=0):
    self.factory_id = factory_id
    self.objectType = objectType
    self.rssi = rssi

  @classmethod
  def unpack(cls, buffer):
    "Reads a new ObjectAvailable from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('ObjectAvailable.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new ObjectAvailable from the given BinaryReader."
    _factory_id = reader.read_string('B')
    _objectType = reader.read('i')
    _rssi = reader.read('b')
    return cls(_factory_id, _objectType, _rssi)

  def pack(self):
    "Writes the current ObjectAvailable, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current ObjectAvailable to the given BinaryWriter."
    writer.write_string(self._factory_id, 'B')
    writer.write(self._objectType, 'i')
    writer.write(self._rssi, 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._factory_id == other._factory_id and
        self._objectType == other._objectType and
        self._rssi == other._rssi)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size_string(self._factory_id, 'B') +
      msgbuffers.size(self._objectType, 'i') +
      msgbuffers.size(self._rssi, 'b'))

  def __str__(self):
    return '{type}(factory_id={factory_id}, objectType={objectType}, rssi={rssi})'.format(
      type=type(self).__name__,
      factory_id=msgbuffers.shorten_string(self._factory_id),
      objectType=self._objectType,
      rssi=self._rssi)

  def __repr__(self):
    return '{type}(factory_id={factory_id}, objectType={objectType}, rssi={rssi})'.format(
      type=type(self).__name__,
      factory_id=repr(self._factory_id),
      objectType=repr(self._objectType),
      rssi=repr(self._rssi))

Anki.Vector.ExternalInterface.ObjectAvailable = ObjectAvailable
del ObjectAvailable


class ObjectConnectionState(object):
  "Generated message-passing message."

  __slots__ = (
    '_objectID',    # uint_32
    '_factoryID',   # string[uint_8]
    '_object_type', # Anki.Vector.ObjectType
    '_connected',   # bool
  )

  @property
  def objectID(self):
    "uint_32 objectID struct property."
    return self._objectID

  @objectID.setter
  def objectID(self, value):
    self._objectID = msgbuffers.validate_integer(
      'ObjectConnectionState.objectID', value, 0, 4294967295)

  @property
  def factoryID(self):
    "string[uint_8] factoryID struct property."
    return self._factoryID

  @factoryID.setter
  def factoryID(self, value):
    self._factoryID = msgbuffers.validate_string(
      'ObjectConnectionState.factoryID', value, 255)

  @property
  def object_type(self):
    "Anki.Vector.ObjectType object_type struct property."
    return self._object_type

  @object_type.setter
  def object_type(self, value):
    self._object_type = msgbuffers.validate_integer(
      'ObjectConnectionState.object_type', value, -2147483648, 2147483647)

  @property
  def connected(self):
    "bool connected struct property."
    return self._connected

  @connected.setter
  def connected(self, value):
    self._connected = msgbuffers.validate_bool(
      'ObjectConnectionState.connected', value)

  def __init__(self, objectID=0, factoryID='', object_type=Anki.Vector.ObjectType.UnknownObject, connected=False):
    self.objectID = objectID
    self.factoryID = factoryID
    self.object_type = object_type
    self.connected = connected

  @classmethod
  def unpack(cls, buffer):
    "Reads a new ObjectConnectionState from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('ObjectConnectionState.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new ObjectConnectionState from the given BinaryReader."
    _objectID = reader.read('I')
    _factoryID = reader.read_string('B')
    _object_type = reader.read('i')
    _connected = bool(reader.read('b'))
    return cls(_objectID, _factoryID, _object_type, _connected)

  def pack(self):
    "Writes the current ObjectConnectionState, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current ObjectConnectionState to the given BinaryWriter."
    writer.write(self._objectID, 'I')
    writer.write_string(self._factoryID, 'B')
    writer.write(self._object_type, 'i')
    writer.write(int(self._connected), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._objectID == other._objectID and
        self._factoryID == other._factoryID and
        self._object_type == other._object_type and
        self._connected == other._connected)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._objectID, 'I') +
      msgbuffers.size_string(self._factoryID, 'B') +
      msgbuffers.size(self._object_type, 'i') +
      msgbuffers.size(self._connected, 'b'))

  def __str__(self):
    return '{type}(objectID={objectID}, factoryID={factoryID}, object_type={object_type}, connected={connected})'.format(
      type=type(self).__name__,
      objectID=self._objectID,
      factoryID=msgbuffers.shorten_string(self._factoryID),
      object_type=self._object_type,
      connected=self._connected)

  def __repr__(self):
    return '{type}(objectID={objectID}, factoryID={factoryID}, object_type={object_type}, connected={connected})'.format(
      type=type(self).__name__,
      objectID=repr(self._objectID),
      factoryID=repr(self._factoryID),
      object_type=repr(self._object_type),
      connected=repr(self._connected))

Anki.Vector.ExternalInterface.ObjectConnectionState = ObjectConnectionState
del ObjectConnectionState


class ObjectMoved(object):
  "Generated message-passing message."

  __slots__ = (
    '_timestamp', # uint_32
    '_objectID',  # uint_32
  )

  @property
  def timestamp(self):
    "uint_32 timestamp struct property."
    return self._timestamp

  @timestamp.setter
  def timestamp(self, value):
    self._timestamp = msgbuffers.validate_integer(
      'ObjectMoved.timestamp', value, 0, 4294967295)

  @property
  def objectID(self):
    "uint_32 objectID struct property."
    return self._objectID

  @objectID.setter
  def objectID(self, value):
    self._objectID = msgbuffers.validate_integer(
      'ObjectMoved.objectID', value, 0, 4294967295)

  def __init__(self, timestamp=0, objectID=0):
    self.timestamp = timestamp
    self.objectID = objectID

  @classmethod
  def unpack(cls, buffer):
    "Reads a new ObjectMoved from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('ObjectMoved.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new ObjectMoved from the given BinaryReader."
    _timestamp = reader.read('I')
    _objectID = reader.read('I')
    return cls(_timestamp, _objectID)

  def pack(self):
    "Writes the current ObjectMoved, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current ObjectMoved to the given BinaryWriter."
    writer.write(self._timestamp, 'I')
    writer.write(self._objectID, 'I')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._timestamp == other._timestamp and
        self._objectID == other._objectID)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._timestamp, 'I') +
      msgbuffers.size(self._objectID, 'I'))

  def __str__(self):
    return '{type}(timestamp={timestamp}, objectID={objectID})'.format(
      type=type(self).__name__,
      timestamp=self._timestamp,
      objectID=self._objectID)

  def __repr__(self):
    return '{type}(timestamp={timestamp}, objectID={objectID})'.format(
      type=type(self).__name__,
      timestamp=repr(self._timestamp),
      objectID=repr(self._objectID))

Anki.Vector.ExternalInterface.ObjectMoved = ObjectMoved
del ObjectMoved


class ObjectStoppedMoving(object):
  "Generated message-passing message."

  __slots__ = (
    '_timestamp', # uint_32
    '_objectID',  # uint_32
  )

  @property
  def timestamp(self):
    "uint_32 timestamp struct property."
    return self._timestamp

  @timestamp.setter
  def timestamp(self, value):
    self._timestamp = msgbuffers.validate_integer(
      'ObjectStoppedMoving.timestamp', value, 0, 4294967295)

  @property
  def objectID(self):
    "uint_32 objectID struct property."
    return self._objectID

  @objectID.setter
  def objectID(self, value):
    self._objectID = msgbuffers.validate_integer(
      'ObjectStoppedMoving.objectID', value, 0, 4294967295)

  def __init__(self, timestamp=0, objectID=0):
    self.timestamp = timestamp
    self.objectID = objectID

  @classmethod
  def unpack(cls, buffer):
    "Reads a new ObjectStoppedMoving from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('ObjectStoppedMoving.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new ObjectStoppedMoving from the given BinaryReader."
    _timestamp = reader.read('I')
    _objectID = reader.read('I')
    return cls(_timestamp, _objectID)

  def pack(self):
    "Writes the current ObjectStoppedMoving, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current ObjectStoppedMoving to the given BinaryWriter."
    writer.write(self._timestamp, 'I')
    writer.write(self._objectID, 'I')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._timestamp == other._timestamp and
        self._objectID == other._objectID)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._timestamp, 'I') +
      msgbuffers.size(self._objectID, 'I'))

  def __str__(self):
    return '{type}(timestamp={timestamp}, objectID={objectID})'.format(
      type=type(self).__name__,
      timestamp=self._timestamp,
      objectID=self._objectID)

  def __repr__(self):
    return '{type}(timestamp={timestamp}, objectID={objectID})'.format(
      type=type(self).__name__,
      timestamp=repr(self._timestamp),
      objectID=repr(self._objectID))

Anki.Vector.ExternalInterface.ObjectStoppedMoving = ObjectStoppedMoving
del ObjectStoppedMoving


class ObjectUpAxisChanged(object):
  "Generated message-passing message."

  __slots__ = (
    '_timestamp', # uint_32
    '_objectID',  # uint_32
    '_upAxis',    # Anki.Vector.UpAxis
  )

  @property
  def timestamp(self):
    "uint_32 timestamp struct property."
    return self._timestamp

  @timestamp.setter
  def timestamp(self, value):
    self._timestamp = msgbuffers.validate_integer(
      'ObjectUpAxisChanged.timestamp', value, 0, 4294967295)

  @property
  def objectID(self):
    "uint_32 objectID struct property."
    return self._objectID

  @objectID.setter
  def objectID(self, value):
    self._objectID = msgbuffers.validate_integer(
      'ObjectUpAxisChanged.objectID', value, 0, 4294967295)

  @property
  def upAxis(self):
    "Anki.Vector.UpAxis upAxis struct property."
    return self._upAxis

  @upAxis.setter
  def upAxis(self, value):
    self._upAxis = msgbuffers.validate_integer(
      'ObjectUpAxisChanged.upAxis', value, 0, 255)

  def __init__(self, timestamp=0, objectID=0, upAxis=Anki.Vector.UpAxis.XNegative):
    self.timestamp = timestamp
    self.objectID = objectID
    self.upAxis = upAxis

  @classmethod
  def unpack(cls, buffer):
    "Reads a new ObjectUpAxisChanged from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('ObjectUpAxisChanged.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new ObjectUpAxisChanged from the given BinaryReader."
    _timestamp = reader.read('I')
    _objectID = reader.read('I')
    _upAxis = reader.read('B')
    return cls(_timestamp, _objectID, _upAxis)

  def pack(self):
    "Writes the current ObjectUpAxisChanged, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current ObjectUpAxisChanged to the given BinaryWriter."
    writer.write(self._timestamp, 'I')
    writer.write(self._objectID, 'I')
    writer.write(self._upAxis, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._timestamp == other._timestamp and
        self._objectID == other._objectID and
        self._upAxis == other._upAxis)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._timestamp, 'I') +
      msgbuffers.size(self._objectID, 'I') +
      msgbuffers.size(self._upAxis, 'B'))

  def __str__(self):
    return '{type}(timestamp={timestamp}, objectID={objectID}, upAxis={upAxis})'.format(
      type=type(self).__name__,
      timestamp=self._timestamp,
      objectID=self._objectID,
      upAxis=self._upAxis)

  def __repr__(self):
    return '{type}(timestamp={timestamp}, objectID={objectID}, upAxis={upAxis})'.format(
      type=type(self).__name__,
      timestamp=repr(self._timestamp),
      objectID=repr(self._objectID),
      upAxis=repr(self._upAxis))

Anki.Vector.ExternalInterface.ObjectUpAxisChanged = ObjectUpAxisChanged
del ObjectUpAxisChanged


class ObjectTapped(object):
  "Generated message-passing message."

  __slots__ = (
    '_timestamp', # uint_32
    '_objectID',  # uint_32
  )

  @property
  def timestamp(self):
    "uint_32 timestamp struct property."
    return self._timestamp

  @timestamp.setter
  def timestamp(self, value):
    self._timestamp = msgbuffers.validate_integer(
      'ObjectTapped.timestamp', value, 0, 4294967295)

  @property
  def objectID(self):
    "uint_32 objectID struct property."
    return self._objectID

  @objectID.setter
  def objectID(self, value):
    self._objectID = msgbuffers.validate_integer(
      'ObjectTapped.objectID', value, 0, 4294967295)

  def __init__(self, timestamp=0, objectID=0):
    self.timestamp = timestamp
    self.objectID = objectID

  @classmethod
  def unpack(cls, buffer):
    "Reads a new ObjectTapped from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('ObjectTapped.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new ObjectTapped from the given BinaryReader."
    _timestamp = reader.read('I')
    _objectID = reader.read('I')
    return cls(_timestamp, _objectID)

  def pack(self):
    "Writes the current ObjectTapped, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current ObjectTapped to the given BinaryWriter."
    writer.write(self._timestamp, 'I')
    writer.write(self._objectID, 'I')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._timestamp == other._timestamp and
        self._objectID == other._objectID)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._timestamp, 'I') +
      msgbuffers.size(self._objectID, 'I'))

  def __str__(self):
    return '{type}(timestamp={timestamp}, objectID={objectID})'.format(
      type=type(self).__name__,
      timestamp=self._timestamp,
      objectID=self._objectID)

  def __repr__(self):
    return '{type}(timestamp={timestamp}, objectID={objectID})'.format(
      type=type(self).__name__,
      timestamp=repr(self._timestamp),
      objectID=repr(self._objectID))

Anki.Vector.ExternalInterface.ObjectTapped = ObjectTapped
del ObjectTapped


class ObjectAccel(object):
  "Generated message-passing message."

  __slots__ = (
    '_timestamp', # uint_32
    '_objectID',  # uint_32
    '_accel',     # Anki.Vector.ActiveAccel
  )

  @property
  def timestamp(self):
    "uint_32 timestamp struct property."
    return self._timestamp

  @timestamp.setter
  def timestamp(self, value):
    self._timestamp = msgbuffers.validate_integer(
      'ObjectAccel.timestamp', value, 0, 4294967295)

  @property
  def objectID(self):
    "uint_32 objectID struct property."
    return self._objectID

  @objectID.setter
  def objectID(self, value):
    self._objectID = msgbuffers.validate_integer(
      'ObjectAccel.objectID', value, 0, 4294967295)

  @property
  def accel(self):
    "Anki.Vector.ActiveAccel accel struct property."
    return self._accel

  @accel.setter
  def accel(self, value):
    self._accel = msgbuffers.validate_object(
      'ObjectAccel.accel', value, Anki.Vector.ActiveAccel)

  def __init__(self, timestamp=0, objectID=0, accel=Anki.Vector.ActiveAccel()):
    self.timestamp = timestamp
    self.objectID = objectID
    self.accel = accel

  @classmethod
  def unpack(cls, buffer):
    "Reads a new ObjectAccel from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('ObjectAccel.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new ObjectAccel from the given BinaryReader."
    _timestamp = reader.read('I')
    _objectID = reader.read('I')
    _accel = reader.read_object(Anki.Vector.ActiveAccel.unpack_from)
    return cls(_timestamp, _objectID, _accel)

  def pack(self):
    "Writes the current ObjectAccel, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current ObjectAccel to the given BinaryWriter."
    writer.write(self._timestamp, 'I')
    writer.write(self._objectID, 'I')
    writer.write_object(self._accel)

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._timestamp == other._timestamp and
        self._objectID == other._objectID and
        self._accel == other._accel)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._timestamp, 'I') +
      msgbuffers.size(self._objectID, 'I') +
      msgbuffers.size_object(self._accel))

  def __str__(self):
    return '{type}(timestamp={timestamp}, objectID={objectID}, accel={accel})'.format(
      type=type(self).__name__,
      timestamp=self._timestamp,
      objectID=self._objectID,
      accel=self._accel)

  def __repr__(self):
    return '{type}(timestamp={timestamp}, objectID={objectID}, accel={accel})'.format(
      type=type(self).__name__,
      timestamp=repr(self._timestamp),
      objectID=repr(self._objectID),
      accel=repr(self._accel))

Anki.Vector.ExternalInterface.ObjectAccel = ObjectAccel
del ObjectAccel


class MessageType(object):
  "Automatically-generated uint_8 enumeration."
  AnimationAvailable = 0

Anki.Vector.ExternalInterface.MessageType = MessageType
del MessageType


class EndOfMessage(object):
  "Generated message-passing message."

  __slots__ = (
    '_messageType', # Anki.Vector.ExternalInterface.MessageType
  )

  @property
  def messageType(self):
    "Anki.Vector.ExternalInterface.MessageType messageType struct property."
    return self._messageType

  @messageType.setter
  def messageType(self, value):
    self._messageType = msgbuffers.validate_integer(
      'EndOfMessage.messageType', value, 0, 255)

  def __init__(self, messageType=Anki.Vector.ExternalInterface.MessageType.AnimationAvailable):
    self.messageType = messageType

  @classmethod
  def unpack(cls, buffer):
    "Reads a new EndOfMessage from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('EndOfMessage.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new EndOfMessage from the given BinaryReader."
    _messageType = reader.read('B')
    return cls(_messageType)

  def pack(self):
    "Writes the current EndOfMessage, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current EndOfMessage to the given BinaryWriter."
    writer.write(self._messageType, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._messageType == other._messageType
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._messageType, 'B'))

  def __str__(self):
    return '{type}(messageType={messageType})'.format(
      type=type(self).__name__,
      messageType=self._messageType)

  def __repr__(self):
    return '{type}(messageType={messageType})'.format(
      type=type(self).__name__,
      messageType=repr(self._messageType))

Anki.Vector.ExternalInterface.EndOfMessage = EndOfMessage
del EndOfMessage


class MoodState(object):
  "Generated message-passing message."

  __slots__ = (
    '_emotionValues', # float_32[uint_8]
  )

  @property
  def emotionValues(self):
    "float_32[uint_8] emotionValues struct property."
    return self._emotionValues

  @emotionValues.setter
  def emotionValues(self, value):
    self._emotionValues = msgbuffers.validate_varray(
      'MoodState.emotionValues', value, 255,
      lambda name, value_inner: msgbuffers.validate_float(
        name, value_inner, 'f'))

  def __init__(self, emotionValues=()):
    self.emotionValues = emotionValues

  @classmethod
  def unpack(cls, buffer):
    "Reads a new MoodState from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('MoodState.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new MoodState from the given BinaryReader."
    _emotionValues = reader.read_varray('f', 'B')
    return cls(_emotionValues)

  def pack(self):
    "Writes the current MoodState, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current MoodState to the given BinaryWriter."
    writer.write_varray(self._emotionValues, 'f', 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._emotionValues == other._emotionValues
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size_varray(self._emotionValues, 'f', 'B'))

  def __str__(self):
    return '{type}(emotionValues={emotionValues})'.format(
      type=type(self).__name__,
      emotionValues=msgbuffers.shorten_sequence(self._emotionValues))

  def __repr__(self):
    return '{type}(emotionValues={emotionValues})'.format(
      type=type(self).__name__,
      emotionValues=repr(self._emotionValues))

Anki.Vector.ExternalInterface.MoodState = MoodState
del MoodState


class DebugConsoleVar(object):
  "Generated message-passing structure."

  __slots__ = (
    '_varName',  # string[uint_8]
    '_category', # string[uint_8]
    '_minValue', # float_64
    '_maxValue', # float_64
    '_varValue', # Anki.Vector.ConsoleVarUnion
  )

  @property
  def varName(self):
    "string[uint_8] varName struct property."
    return self._varName

  @varName.setter
  def varName(self, value):
    self._varName = msgbuffers.validate_string(
      'DebugConsoleVar.varName', value, 255)

  @property
  def category(self):
    "string[uint_8] category struct property."
    return self._category

  @category.setter
  def category(self, value):
    self._category = msgbuffers.validate_string(
      'DebugConsoleVar.category', value, 255)

  @property
  def minValue(self):
    "float_64 minValue struct property."
    return self._minValue

  @minValue.setter
  def minValue(self, value):
    self._minValue = msgbuffers.validate_float(
      'DebugConsoleVar.minValue', value, 'd')

  @property
  def maxValue(self):
    "float_64 maxValue struct property."
    return self._maxValue

  @maxValue.setter
  def maxValue(self, value):
    self._maxValue = msgbuffers.validate_float(
      'DebugConsoleVar.maxValue', value, 'd')

  @property
  def varValue(self):
    "Anki.Vector.ConsoleVarUnion varValue struct property."
    return self._varValue

  @varValue.setter
  def varValue(self, value):
    self._varValue = msgbuffers.validate_object(
      'DebugConsoleVar.varValue', value, Anki.Vector.ConsoleVarUnion)

  def __init__(self, varName='', category='', minValue=0.0, maxValue=0.0, varValue=Anki.Vector.ConsoleVarUnion()):
    self.varName = varName
    self.category = category
    self.minValue = minValue
    self.maxValue = maxValue
    self.varValue = varValue

  @classmethod
  def unpack(cls, buffer):
    "Reads a new DebugConsoleVar from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('DebugConsoleVar.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new DebugConsoleVar from the given BinaryReader."
    _varName = reader.read_string('B')
    _category = reader.read_string('B')
    _minValue = reader.read('d')
    _maxValue = reader.read('d')
    _varValue = reader.read_object(Anki.Vector.ConsoleVarUnion.unpack_from)
    return cls(_varName, _category, _minValue, _maxValue, _varValue)

  def pack(self):
    "Writes the current DebugConsoleVar, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current DebugConsoleVar to the given BinaryWriter."
    writer.write_string(self._varName, 'B')
    writer.write_string(self._category, 'B')
    writer.write(self._minValue, 'd')
    writer.write(self._maxValue, 'd')
    writer.write_object(self._varValue)

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._varName == other._varName and
        self._category == other._category and
        self._minValue == other._minValue and
        self._maxValue == other._maxValue and
        self._varValue == other._varValue)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size_string(self._varName, 'B') +
      msgbuffers.size_string(self._category, 'B') +
      msgbuffers.size(self._minValue, 'd') +
      msgbuffers.size(self._maxValue, 'd') +
      msgbuffers.size_object(self._varValue))

  def __str__(self):
    return '{type}(varName={varName}, category={category}, minValue={minValue}, maxValue={maxValue}, varValue={varValue})'.format(
      type=type(self).__name__,
      varName=msgbuffers.shorten_string(self._varName),
      category=msgbuffers.shorten_string(self._category),
      minValue=self._minValue,
      maxValue=self._maxValue,
      varValue=self._varValue)

  def __repr__(self):
    return '{type}(varName={varName}, category={category}, minValue={minValue}, maxValue={maxValue}, varValue={varValue})'.format(
      type=type(self).__name__,
      varName=repr(self._varName),
      category=repr(self._category),
      minValue=repr(self._minValue),
      maxValue=repr(self._maxValue),
      varValue=repr(self._varValue))

Anki.Vector.ExternalInterface.DebugConsoleVar = DebugConsoleVar
del DebugConsoleVar


class InitDebugConsoleVarMessage(object):
  "Generated message-passing message."

  __slots__ = (
    '_varData', # DebugConsoleVar[uint_16]
  )

  @property
  def varData(self):
    "DebugConsoleVar[uint_16] varData struct property."
    return self._varData

  @varData.setter
  def varData(self, value):
    self._varData = msgbuffers.validate_varray(
      'InitDebugConsoleVarMessage.varData', value, 65535,
      lambda name, value_inner: msgbuffers.validate_object(
        name, value_inner, Anki.Vector.ExternalInterface.DebugConsoleVar))

  def __init__(self, varData=()):
    self.varData = varData

  @classmethod
  def unpack(cls, buffer):
    "Reads a new InitDebugConsoleVarMessage from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('InitDebugConsoleVarMessage.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new InitDebugConsoleVarMessage from the given BinaryReader."
    _varData = reader.read_object_varray(Anki.Vector.ExternalInterface.DebugConsoleVar.unpack_from, 'H')
    return cls(_varData)

  def pack(self):
    "Writes the current InitDebugConsoleVarMessage, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current InitDebugConsoleVarMessage to the given BinaryWriter."
    writer.write_object_varray(self._varData, 'H')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._varData == other._varData
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size_object_varray(self._varData, 'H'))

  def __str__(self):
    return '{type}(varData={varData})'.format(
      type=type(self).__name__,
      varData=msgbuffers.shorten_sequence(self._varData))

  def __repr__(self):
    return '{type}(varData={varData})'.format(
      type=type(self).__name__,
      varData=repr(self._varData))

Anki.Vector.ExternalInterface.InitDebugConsoleVarMessage = InitDebugConsoleVarMessage
del InitDebugConsoleVarMessage


class JsonDasLogMessage(object):
  "Generated message-passing message."

  __slots__ = (
    '_fileName', # string[uint_8]
    '_jsonData', # string[uint_16]
  )

  @property
  def fileName(self):
    "string[uint_8] fileName struct property."
    return self._fileName

  @fileName.setter
  def fileName(self, value):
    self._fileName = msgbuffers.validate_string(
      'JsonDasLogMessage.fileName', value, 255)

  @property
  def jsonData(self):
    "string[uint_16] jsonData struct property."
    return self._jsonData

  @jsonData.setter
  def jsonData(self, value):
    self._jsonData = msgbuffers.validate_string(
      'JsonDasLogMessage.jsonData', value, 65535)

  def __init__(self, fileName='', jsonData=''):
    self.fileName = fileName
    self.jsonData = jsonData

  @classmethod
  def unpack(cls, buffer):
    "Reads a new JsonDasLogMessage from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('JsonDasLogMessage.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new JsonDasLogMessage from the given BinaryReader."
    _fileName = reader.read_string('B')
    _jsonData = reader.read_string('H')
    return cls(_fileName, _jsonData)

  def pack(self):
    "Writes the current JsonDasLogMessage, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current JsonDasLogMessage to the given BinaryWriter."
    writer.write_string(self._fileName, 'B')
    writer.write_string(self._jsonData, 'H')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._fileName == other._fileName and
        self._jsonData == other._jsonData)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size_string(self._fileName, 'B') +
      msgbuffers.size_string(self._jsonData, 'H'))

  def __str__(self):
    return '{type}(fileName={fileName}, jsonData={jsonData})'.format(
      type=type(self).__name__,
      fileName=msgbuffers.shorten_string(self._fileName),
      jsonData=msgbuffers.shorten_string(self._jsonData))

  def __repr__(self):
    return '{type}(fileName={fileName}, jsonData={jsonData})'.format(
      type=type(self).__name__,
      fileName=repr(self._fileName),
      jsonData=repr(self._jsonData))

Anki.Vector.ExternalInterface.JsonDasLogMessage = JsonDasLogMessage
del JsonDasLogMessage


class JsonDasLogAllSentMessage(object):
  "Generated message-passing message."

  __slots__ = (
    '_filesSent', # uint_8
  )

  @property
  def filesSent(self):
    "uint_8 filesSent struct property."
    return self._filesSent

  @filesSent.setter
  def filesSent(self, value):
    self._filesSent = msgbuffers.validate_integer(
      'JsonDasLogAllSentMessage.filesSent', value, 0, 255)

  def __init__(self, filesSent=0):
    self.filesSent = filesSent

  @classmethod
  def unpack(cls, buffer):
    "Reads a new JsonDasLogAllSentMessage from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('JsonDasLogAllSentMessage.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new JsonDasLogAllSentMessage from the given BinaryReader."
    _filesSent = reader.read('B')
    return cls(_filesSent)

  def pack(self):
    "Writes the current JsonDasLogAllSentMessage, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current JsonDasLogAllSentMessage to the given BinaryWriter."
    writer.write(self._filesSent, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._filesSent == other._filesSent
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._filesSent, 'B'))

  def __str__(self):
    return '{type}(filesSent={filesSent})'.format(
      type=type(self).__name__,
      filesSent=self._filesSent)

  def __repr__(self):
    return '{type}(filesSent={filesSent})'.format(
      type=type(self).__name__,
      filesSent=repr(self._filesSent))

Anki.Vector.ExternalInterface.JsonDasLogAllSentMessage = JsonDasLogAllSentMessage
del JsonDasLogAllSentMessage


class VerifyDebugConsoleFuncMessage(object):
  "Generated message-passing message."

  __slots__ = (
    '_funcName',      # string[uint_8]
    '_statusMessage', # string[uint_16]
    '_success',       # bool
  )

  @property
  def funcName(self):
    "string[uint_8] funcName struct property."
    return self._funcName

  @funcName.setter
  def funcName(self, value):
    self._funcName = msgbuffers.validate_string(
      'VerifyDebugConsoleFuncMessage.funcName', value, 255)

  @property
  def statusMessage(self):
    "string[uint_16] statusMessage struct property."
    return self._statusMessage

  @statusMessage.setter
  def statusMessage(self, value):
    self._statusMessage = msgbuffers.validate_string(
      'VerifyDebugConsoleFuncMessage.statusMessage', value, 65535)

  @property
  def success(self):
    "bool success struct property."
    return self._success

  @success.setter
  def success(self, value):
    self._success = msgbuffers.validate_bool(
      'VerifyDebugConsoleFuncMessage.success', value)

  def __init__(self, funcName='', statusMessage='', success=False):
    self.funcName = funcName
    self.statusMessage = statusMessage
    self.success = success

  @classmethod
  def unpack(cls, buffer):
    "Reads a new VerifyDebugConsoleFuncMessage from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('VerifyDebugConsoleFuncMessage.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new VerifyDebugConsoleFuncMessage from the given BinaryReader."
    _funcName = reader.read_string('B')
    _statusMessage = reader.read_string('H')
    _success = bool(reader.read('b'))
    return cls(_funcName, _statusMessage, _success)

  def pack(self):
    "Writes the current VerifyDebugConsoleFuncMessage, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current VerifyDebugConsoleFuncMessage to the given BinaryWriter."
    writer.write_string(self._funcName, 'B')
    writer.write_string(self._statusMessage, 'H')
    writer.write(int(self._success), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._funcName == other._funcName and
        self._statusMessage == other._statusMessage and
        self._success == other._success)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size_string(self._funcName, 'B') +
      msgbuffers.size_string(self._statusMessage, 'H') +
      msgbuffers.size(self._success, 'b'))

  def __str__(self):
    return '{type}(funcName={funcName}, statusMessage={statusMessage}, success={success})'.format(
      type=type(self).__name__,
      funcName=msgbuffers.shorten_string(self._funcName),
      statusMessage=msgbuffers.shorten_string(self._statusMessage),
      success=self._success)

  def __repr__(self):
    return '{type}(funcName={funcName}, statusMessage={statusMessage}, success={success})'.format(
      type=type(self).__name__,
      funcName=repr(self._funcName),
      statusMessage=repr(self._statusMessage),
      success=repr(self._success))

Anki.Vector.ExternalInterface.VerifyDebugConsoleFuncMessage = VerifyDebugConsoleFuncMessage
del VerifyDebugConsoleFuncMessage


class VerifyDebugConsoleVarMessage(object):
  "Generated message-passing message."

  __slots__ = (
    '_varName',       # string[uint_8]
    '_statusMessage', # string[uint_16]
    '_varValue',      # Anki.Vector.ConsoleVarUnion
    '_success',       # bool
  )

  @property
  def varName(self):
    "string[uint_8] varName struct property."
    return self._varName

  @varName.setter
  def varName(self, value):
    self._varName = msgbuffers.validate_string(
      'VerifyDebugConsoleVarMessage.varName', value, 255)

  @property
  def statusMessage(self):
    "string[uint_16] statusMessage struct property."
    return self._statusMessage

  @statusMessage.setter
  def statusMessage(self, value):
    self._statusMessage = msgbuffers.validate_string(
      'VerifyDebugConsoleVarMessage.statusMessage', value, 65535)

  @property
  def varValue(self):
    "Anki.Vector.ConsoleVarUnion varValue struct property."
    return self._varValue

  @varValue.setter
  def varValue(self, value):
    self._varValue = msgbuffers.validate_object(
      'VerifyDebugConsoleVarMessage.varValue', value, Anki.Vector.ConsoleVarUnion)

  @property
  def success(self):
    "bool success struct property."
    return self._success

  @success.setter
  def success(self, value):
    self._success = msgbuffers.validate_bool(
      'VerifyDebugConsoleVarMessage.success', value)

  def __init__(self, varName='', statusMessage='', varValue=Anki.Vector.ConsoleVarUnion(), success=False):
    self.varName = varName
    self.statusMessage = statusMessage
    self.varValue = varValue
    self.success = success

  @classmethod
  def unpack(cls, buffer):
    "Reads a new VerifyDebugConsoleVarMessage from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('VerifyDebugConsoleVarMessage.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new VerifyDebugConsoleVarMessage from the given BinaryReader."
    _varName = reader.read_string('B')
    _statusMessage = reader.read_string('H')
    _varValue = reader.read_object(Anki.Vector.ConsoleVarUnion.unpack_from)
    _success = bool(reader.read('b'))
    return cls(_varName, _statusMessage, _varValue, _success)

  def pack(self):
    "Writes the current VerifyDebugConsoleVarMessage, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current VerifyDebugConsoleVarMessage to the given BinaryWriter."
    writer.write_string(self._varName, 'B')
    writer.write_string(self._statusMessage, 'H')
    writer.write_object(self._varValue)
    writer.write(int(self._success), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._varName == other._varName and
        self._statusMessage == other._statusMessage and
        self._varValue == other._varValue and
        self._success == other._success)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size_string(self._varName, 'B') +
      msgbuffers.size_string(self._statusMessage, 'H') +
      msgbuffers.size_object(self._varValue) +
      msgbuffers.size(self._success, 'b'))

  def __str__(self):
    return '{type}(varName={varName}, statusMessage={statusMessage}, varValue={varValue}, success={success})'.format(
      type=type(self).__name__,
      varName=msgbuffers.shorten_string(self._varName),
      statusMessage=msgbuffers.shorten_string(self._statusMessage),
      varValue=self._varValue,
      success=self._success)

  def __repr__(self):
    return '{type}(varName={varName}, statusMessage={statusMessage}, varValue={varValue}, success={success})'.format(
      type=type(self).__name__,
      varName=repr(self._varName),
      statusMessage=repr(self._statusMessage),
      varValue=repr(self._varValue),
      success=repr(self._success))

Anki.Vector.ExternalInterface.VerifyDebugConsoleVarMessage = VerifyDebugConsoleVarMessage
del VerifyDebugConsoleVarMessage


class DebugAppendConsoleLogLine(object):
  "Generated message-passing message."

  __slots__ = (
    '_line',     # string[uint_16]
    '_logLevel', # Anki.Vector.LogLevel
  )

  @property
  def line(self):
    "string[uint_16] line struct property."
    return self._line

  @line.setter
  def line(self, value):
    self._line = msgbuffers.validate_string(
      'DebugAppendConsoleLogLine.line', value, 65535)

  @property
  def logLevel(self):
    "Anki.Vector.LogLevel logLevel struct property."
    return self._logLevel

  @logLevel.setter
  def logLevel(self, value):
    self._logLevel = msgbuffers.validate_integer(
      'DebugAppendConsoleLogLine.logLevel', value, 0, 255)

  def __init__(self, line='', logLevel=Anki.Vector.LogLevel.Debug):
    self.line = line
    self.logLevel = logLevel

  @classmethod
  def unpack(cls, buffer):
    "Reads a new DebugAppendConsoleLogLine from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('DebugAppendConsoleLogLine.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new DebugAppendConsoleLogLine from the given BinaryReader."
    _line = reader.read_string('H')
    _logLevel = reader.read('B')
    return cls(_line, _logLevel)

  def pack(self):
    "Writes the current DebugAppendConsoleLogLine, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current DebugAppendConsoleLogLine to the given BinaryWriter."
    writer.write_string(self._line, 'H')
    writer.write(self._logLevel, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._line == other._line and
        self._logLevel == other._logLevel)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size_string(self._line, 'H') +
      msgbuffers.size(self._logLevel, 'B'))

  def __str__(self):
    return '{type}(line={line}, logLevel={logLevel})'.format(
      type=type(self).__name__,
      line=msgbuffers.shorten_string(self._line),
      logLevel=self._logLevel)

  def __repr__(self):
    return '{type}(line={line}, logLevel={logLevel})'.format(
      type=type(self).__name__,
      line=repr(self._line),
      logLevel=repr(self._logLevel))

Anki.Vector.ExternalInterface.DebugAppendConsoleLogLine = DebugAppendConsoleLogLine
del DebugAppendConsoleLogLine


class TimingInfo(object):
  "Generated message-passing structure."

  __slots__ = (
    '_avgTime_ms', # float_32
    '_minTime_ms', # float_32
    '_maxTime_ms', # float_32
  )

  @property
  def avgTime_ms(self):
    "float_32 avgTime_ms struct property."
    return self._avgTime_ms

  @avgTime_ms.setter
  def avgTime_ms(self, value):
    self._avgTime_ms = msgbuffers.validate_float(
      'TimingInfo.avgTime_ms', value, 'f')

  @property
  def minTime_ms(self):
    "float_32 minTime_ms struct property."
    return self._minTime_ms

  @minTime_ms.setter
  def minTime_ms(self, value):
    self._minTime_ms = msgbuffers.validate_float(
      'TimingInfo.minTime_ms', value, 'f')

  @property
  def maxTime_ms(self):
    "float_32 maxTime_ms struct property."
    return self._maxTime_ms

  @maxTime_ms.setter
  def maxTime_ms(self, value):
    self._maxTime_ms = msgbuffers.validate_float(
      'TimingInfo.maxTime_ms', value, 'f')

  def __init__(self, avgTime_ms=0.0, minTime_ms=0.0, maxTime_ms=0.0):
    self.avgTime_ms = avgTime_ms
    self.minTime_ms = minTime_ms
    self.maxTime_ms = maxTime_ms

  @classmethod
  def unpack(cls, buffer):
    "Reads a new TimingInfo from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('TimingInfo.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new TimingInfo from the given BinaryReader."
    _avgTime_ms = reader.read('f')
    _minTime_ms = reader.read('f')
    _maxTime_ms = reader.read('f')
    return cls(_avgTime_ms, _minTime_ms, _maxTime_ms)

  def pack(self):
    "Writes the current TimingInfo, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current TimingInfo to the given BinaryWriter."
    writer.write(self._avgTime_ms, 'f')
    writer.write(self._minTime_ms, 'f')
    writer.write(self._maxTime_ms, 'f')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._avgTime_ms == other._avgTime_ms and
        self._minTime_ms == other._minTime_ms and
        self._maxTime_ms == other._maxTime_ms)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._avgTime_ms, 'f') +
      msgbuffers.size(self._minTime_ms, 'f') +
      msgbuffers.size(self._maxTime_ms, 'f'))

  def __str__(self):
    return '{type}(avgTime_ms={avgTime_ms}, minTime_ms={minTime_ms}, maxTime_ms={maxTime_ms})'.format(
      type=type(self).__name__,
      avgTime_ms=self._avgTime_ms,
      minTime_ms=self._minTime_ms,
      maxTime_ms=self._maxTime_ms)

  def __repr__(self):
    return '{type}(avgTime_ms={avgTime_ms}, minTime_ms={minTime_ms}, maxTime_ms={maxTime_ms})'.format(
      type=type(self).__name__,
      avgTime_ms=repr(self._avgTime_ms),
      minTime_ms=repr(self._minTime_ms),
      maxTime_ms=repr(self._maxTime_ms))

Anki.Vector.ExternalInterface.TimingInfo = TimingInfo
del TimingInfo


class CurrentTimingInfo(object):
  "Generated message-passing structure."

  __slots__ = (
    '_avgTime_ms',     # float_32
    '_minTime_ms',     # float_32
    '_maxTime_ms',     # float_32
    '_currentTime_ms', # float_32
  )

  @property
  def avgTime_ms(self):
    "float_32 avgTime_ms struct property."
    return self._avgTime_ms

  @avgTime_ms.setter
  def avgTime_ms(self, value):
    self._avgTime_ms = msgbuffers.validate_float(
      'CurrentTimingInfo.avgTime_ms', value, 'f')

  @property
  def minTime_ms(self):
    "float_32 minTime_ms struct property."
    return self._minTime_ms

  @minTime_ms.setter
  def minTime_ms(self, value):
    self._minTime_ms = msgbuffers.validate_float(
      'CurrentTimingInfo.minTime_ms', value, 'f')

  @property
  def maxTime_ms(self):
    "float_32 maxTime_ms struct property."
    return self._maxTime_ms

  @maxTime_ms.setter
  def maxTime_ms(self, value):
    self._maxTime_ms = msgbuffers.validate_float(
      'CurrentTimingInfo.maxTime_ms', value, 'f')

  @property
  def currentTime_ms(self):
    "float_32 currentTime_ms struct property."
    return self._currentTime_ms

  @currentTime_ms.setter
  def currentTime_ms(self, value):
    self._currentTime_ms = msgbuffers.validate_float(
      'CurrentTimingInfo.currentTime_ms', value, 'f')

  def __init__(self, avgTime_ms=0.0, minTime_ms=0.0, maxTime_ms=0.0, currentTime_ms=0.0):
    self.avgTime_ms = avgTime_ms
    self.minTime_ms = minTime_ms
    self.maxTime_ms = maxTime_ms
    self.currentTime_ms = currentTime_ms

  @classmethod
  def unpack(cls, buffer):
    "Reads a new CurrentTimingInfo from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('CurrentTimingInfo.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new CurrentTimingInfo from the given BinaryReader."
    _avgTime_ms = reader.read('f')
    _minTime_ms = reader.read('f')
    _maxTime_ms = reader.read('f')
    _currentTime_ms = reader.read('f')
    return cls(_avgTime_ms, _minTime_ms, _maxTime_ms, _currentTime_ms)

  def pack(self):
    "Writes the current CurrentTimingInfo, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current CurrentTimingInfo to the given BinaryWriter."
    writer.write(self._avgTime_ms, 'f')
    writer.write(self._minTime_ms, 'f')
    writer.write(self._maxTime_ms, 'f')
    writer.write(self._currentTime_ms, 'f')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._avgTime_ms == other._avgTime_ms and
        self._minTime_ms == other._minTime_ms and
        self._maxTime_ms == other._maxTime_ms and
        self._currentTime_ms == other._currentTime_ms)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._avgTime_ms, 'f') +
      msgbuffers.size(self._minTime_ms, 'f') +
      msgbuffers.size(self._maxTime_ms, 'f') +
      msgbuffers.size(self._currentTime_ms, 'f'))

  def __str__(self):
    return '{type}(avgTime_ms={avgTime_ms}, minTime_ms={minTime_ms}, maxTime_ms={maxTime_ms}, currentTime_ms={currentTime_ms})'.format(
      type=type(self).__name__,
      avgTime_ms=self._avgTime_ms,
      minTime_ms=self._minTime_ms,
      maxTime_ms=self._maxTime_ms,
      currentTime_ms=self._currentTime_ms)

  def __repr__(self):
    return '{type}(avgTime_ms={avgTime_ms}, minTime_ms={minTime_ms}, maxTime_ms={maxTime_ms}, currentTime_ms={currentTime_ms})'.format(
      type=type(self).__name__,
      avgTime_ms=repr(self._avgTime_ms),
      minTime_ms=repr(self._minTime_ms),
      maxTime_ms=repr(self._maxTime_ms),
      currentTime_ms=repr(self._currentTime_ms))

Anki.Vector.ExternalInterface.CurrentTimingInfo = CurrentTimingInfo
del CurrentTimingInfo


class EngineErrorCodeMessage(object):
  "Generated message-passing message."

  __slots__ = (
    '_errorCode', # Anki.Vector.EngineErrorCode
  )

  @property
  def errorCode(self):
    "Anki.Vector.EngineErrorCode errorCode struct property."
    return self._errorCode

  @errorCode.setter
  def errorCode(self, value):
    self._errorCode = msgbuffers.validate_integer(
      'EngineErrorCodeMessage.errorCode', value, 0, 255)

  def __init__(self, errorCode=Anki.Vector.EngineErrorCode.RobotNVStorageFull):
    self.errorCode = errorCode

  @classmethod
  def unpack(cls, buffer):
    "Reads a new EngineErrorCodeMessage from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('EngineErrorCodeMessage.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new EngineErrorCodeMessage from the given BinaryReader."
    _errorCode = reader.read('B')
    return cls(_errorCode)

  def pack(self):
    "Writes the current EngineErrorCodeMessage, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current EngineErrorCodeMessage to the given BinaryWriter."
    writer.write(self._errorCode, 'B')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._errorCode == other._errorCode
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._errorCode, 'B'))

  def __str__(self):
    return '{type}(errorCode={errorCode})'.format(
      type=type(self).__name__,
      errorCode=self._errorCode)

  def __repr__(self):
    return '{type}(errorCode={errorCode})'.format(
      type=type(self).__name__,
      errorCode=repr(self._errorCode))

Anki.Vector.ExternalInterface.EngineErrorCodeMessage = EngineErrorCodeMessage
del EngineErrorCodeMessage


class BehaviorTransition(object):
  "Generated message-passing message."

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new BehaviorTransition from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('BehaviorTransition.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new BehaviorTransition from the given BinaryReader."
    return cls()

  def pack(self):
    "Writes the current BehaviorTransition, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current BehaviorTransition to the given BinaryWriter."

  def __eq__(self, other):
    if type(self) is type(other):
      return True
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return 0

  def __str__(self):
    return '{type}()'.format(type=type(self).__name__)

  def __repr__(self):
    return '{type}()'.format(type=type(self).__name__)

Anki.Vector.ExternalInterface.BehaviorTransition = BehaviorTransition
del BehaviorTransition


class OnboardingState(object):
  "Generated message-passing message."

  __slots__ = (
    '_stage',               # Anki.Vector.OnboardingStages
    '_forceSkipStackReset', # bool
  )

  @property
  def stage(self):
    "Anki.Vector.OnboardingStages stage struct property."
    return self._stage

  @stage.setter
  def stage(self, value):
    self._stage = msgbuffers.validate_integer(
      'OnboardingState.stage', value, 0, 255)

  @property
  def forceSkipStackReset(self):
    "bool forceSkipStackReset struct property."
    return self._forceSkipStackReset

  @forceSkipStackReset.setter
  def forceSkipStackReset(self, value):
    self._forceSkipStackReset = msgbuffers.validate_bool(
      'OnboardingState.forceSkipStackReset', value)

  def __init__(self, stage=Anki.Vector.OnboardingStages.NotStarted, forceSkipStackReset=False):
    self.stage = stage
    self.forceSkipStackReset = forceSkipStackReset

  @classmethod
  def unpack(cls, buffer):
    "Reads a new OnboardingState from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('OnboardingState.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new OnboardingState from the given BinaryReader."
    _stage = reader.read('B')
    _forceSkipStackReset = bool(reader.read('b'))
    return cls(_stage, _forceSkipStackReset)

  def pack(self):
    "Writes the current OnboardingState, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current OnboardingState to the given BinaryWriter."
    writer.write(self._stage, 'B')
    writer.write(int(self._forceSkipStackReset), 'b')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._stage == other._stage and
        self._forceSkipStackReset == other._forceSkipStackReset)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._stage, 'B') +
      msgbuffers.size(self._forceSkipStackReset, 'b'))

  def __str__(self):
    return '{type}(stage={stage}, forceSkipStackReset={forceSkipStackReset})'.format(
      type=type(self).__name__,
      stage=self._stage,
      forceSkipStackReset=self._forceSkipStackReset)

  def __repr__(self):
    return '{type}(stage={stage}, forceSkipStackReset={forceSkipStackReset})'.format(
      type=type(self).__name__,
      stage=repr(self._stage),
      forceSkipStackReset=repr(self._forceSkipStackReset))

Anki.Vector.ExternalInterface.OnboardingState = OnboardingState
del OnboardingState


class MemoryMapMessageBegin(object):
  "Generated message-passing message."

  __slots__ = (
    '_originId',    # uint_32
    '_rootDepth',   # int_32
    '_rootSize_mm', # float_32
    '_rootCenterX', # float_32
    '_rootCenterY', # float_32
  )

  @property
  def originId(self):
    "uint_32 originId struct property."
    return self._originId

  @originId.setter
  def originId(self, value):
    self._originId = msgbuffers.validate_integer(
      'MemoryMapMessageBegin.originId', value, 0, 4294967295)

  @property
  def rootDepth(self):
    "int_32 rootDepth struct property."
    return self._rootDepth

  @rootDepth.setter
  def rootDepth(self, value):
    self._rootDepth = msgbuffers.validate_integer(
      'MemoryMapMessageBegin.rootDepth', value, -2147483648, 2147483647)

  @property
  def rootSize_mm(self):
    "float_32 rootSize_mm struct property."
    return self._rootSize_mm

  @rootSize_mm.setter
  def rootSize_mm(self, value):
    self._rootSize_mm = msgbuffers.validate_float(
      'MemoryMapMessageBegin.rootSize_mm', value, 'f')

  @property
  def rootCenterX(self):
    "float_32 rootCenterX struct property."
    return self._rootCenterX

  @rootCenterX.setter
  def rootCenterX(self, value):
    self._rootCenterX = msgbuffers.validate_float(
      'MemoryMapMessageBegin.rootCenterX', value, 'f')

  @property
  def rootCenterY(self):
    "float_32 rootCenterY struct property."
    return self._rootCenterY

  @rootCenterY.setter
  def rootCenterY(self, value):
    self._rootCenterY = msgbuffers.validate_float(
      'MemoryMapMessageBegin.rootCenterY', value, 'f')

  def __init__(self, originId=0, rootDepth=0, rootSize_mm=0.0, rootCenterX=0.0, rootCenterY=0.0):
    self.originId = originId
    self.rootDepth = rootDepth
    self.rootSize_mm = rootSize_mm
    self.rootCenterX = rootCenterX
    self.rootCenterY = rootCenterY

  @classmethod
  def unpack(cls, buffer):
    "Reads a new MemoryMapMessageBegin from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('MemoryMapMessageBegin.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new MemoryMapMessageBegin from the given BinaryReader."
    _originId = reader.read('I')
    _rootDepth = reader.read('i')
    _rootSize_mm = reader.read('f')
    _rootCenterX = reader.read('f')
    _rootCenterY = reader.read('f')
    return cls(_originId, _rootDepth, _rootSize_mm, _rootCenterX, _rootCenterY)

  def pack(self):
    "Writes the current MemoryMapMessageBegin, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current MemoryMapMessageBegin to the given BinaryWriter."
    writer.write(self._originId, 'I')
    writer.write(self._rootDepth, 'i')
    writer.write(self._rootSize_mm, 'f')
    writer.write(self._rootCenterX, 'f')
    writer.write(self._rootCenterY, 'f')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._originId == other._originId and
        self._rootDepth == other._rootDepth and
        self._rootSize_mm == other._rootSize_mm and
        self._rootCenterX == other._rootCenterX and
        self._rootCenterY == other._rootCenterY)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._originId, 'I') +
      msgbuffers.size(self._rootDepth, 'i') +
      msgbuffers.size(self._rootSize_mm, 'f') +
      msgbuffers.size(self._rootCenterX, 'f') +
      msgbuffers.size(self._rootCenterY, 'f'))

  def __str__(self):
    return '{type}(originId={originId}, rootDepth={rootDepth}, rootSize_mm={rootSize_mm}, rootCenterX={rootCenterX}, rootCenterY={rootCenterY})'.format(
      type=type(self).__name__,
      originId=self._originId,
      rootDepth=self._rootDepth,
      rootSize_mm=self._rootSize_mm,
      rootCenterX=self._rootCenterX,
      rootCenterY=self._rootCenterY)

  def __repr__(self):
    return '{type}(originId={originId}, rootDepth={rootDepth}, rootSize_mm={rootSize_mm}, rootCenterX={rootCenterX}, rootCenterY={rootCenterY})'.format(
      type=type(self).__name__,
      originId=repr(self._originId),
      rootDepth=repr(self._rootDepth),
      rootSize_mm=repr(self._rootSize_mm),
      rootCenterX=repr(self._rootCenterX),
      rootCenterY=repr(self._rootCenterY))

Anki.Vector.ExternalInterface.MemoryMapMessageBegin = MemoryMapMessageBegin
del MemoryMapMessageBegin


class MemoryMapMessage(object):
  "Generated message-passing message."

  __slots__ = (
    '_quadInfos', # MemoryMapQuadInfo[uint_16]
  )

  @property
  def quadInfos(self):
    "MemoryMapQuadInfo[uint_16] quadInfos struct property."
    return self._quadInfos

  @quadInfos.setter
  def quadInfos(self, value):
    self._quadInfos = msgbuffers.validate_varray(
      'MemoryMapMessage.quadInfos', value, 65535,
      lambda name, value_inner: msgbuffers.validate_object(
        name, value_inner, Anki.Vector.ExternalInterface.MemoryMapQuadInfo))

  def __init__(self, quadInfos=()):
    self.quadInfos = quadInfos

  @classmethod
  def unpack(cls, buffer):
    "Reads a new MemoryMapMessage from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('MemoryMapMessage.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new MemoryMapMessage from the given BinaryReader."
    _quadInfos = reader.read_object_varray(Anki.Vector.ExternalInterface.MemoryMapQuadInfo.unpack_from, 'H')
    return cls(_quadInfos)

  def pack(self):
    "Writes the current MemoryMapMessage, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current MemoryMapMessage to the given BinaryWriter."
    writer.write_object_varray(self._quadInfos, 'H')

  def __eq__(self, other):
    if type(self) is type(other):
      return self._quadInfos == other._quadInfos
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size_object_varray(self._quadInfos, 'H'))

  def __str__(self):
    return '{type}(quadInfos={quadInfos})'.format(
      type=type(self).__name__,
      quadInfos=msgbuffers.shorten_sequence(self._quadInfos))

  def __repr__(self):
    return '{type}(quadInfos={quadInfos})'.format(
      type=type(self).__name__,
      quadInfos=repr(self._quadInfos))

Anki.Vector.ExternalInterface.MemoryMapMessage = MemoryMapMessage
del MemoryMapMessage


class MemoryMapMessageEnd(object):
  "Generated message-passing message."

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new MemoryMapMessageEnd from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('MemoryMapMessageEnd.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new MemoryMapMessageEnd from the given BinaryReader."
    return cls()

  def pack(self):
    "Writes the current MemoryMapMessageEnd, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current MemoryMapMessageEnd to the given BinaryWriter."

  def __eq__(self, other):
    if type(self) is type(other):
      return True
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return 0

  def __str__(self):
    return '{type}()'.format(type=type(self).__name__)

  def __repr__(self):
    return '{type}()'.format(type=type(self).__name__)

Anki.Vector.ExternalInterface.MemoryMapMessageEnd = MemoryMapMessageEnd
del MemoryMapMessageEnd


class BehaviorStackState(object):
  "Automatically-generated uint_8 enumeration."
  NotActive = 0
  Active    = 1

Anki.Vector.ExternalInterface.BehaviorStackState = BehaviorStackState
del BehaviorStackState


class AudioBehaviorStackUpdate(object):
  "Generated message-passing message."

  __slots__ = (
    '_state',      # Anki.Vector.ExternalInterface.BehaviorStackState
    '_branchPath', # BehaviorID[uint_16]
  )

  @property
  def state(self):
    "Anki.Vector.ExternalInterface.BehaviorStackState state struct property."
    return self._state

  @state.setter
  def state(self, value):
    self._state = msgbuffers.validate_integer(
      'AudioBehaviorStackUpdate.state', value, 0, 255)

  @property
  def branchPath(self):
    "BehaviorID[uint_16] branchPath struct property."
    return self._branchPath

  @branchPath.setter
  def branchPath(self, value):
    self._branchPath = msgbuffers.validate_varray(
      'AudioBehaviorStackUpdate.branchPath', value, 65535,
      lambda name, value_inner: msgbuffers.validate_integer(
        name, value_inner, 0, 65535))

  def __init__(self, state=Anki.Vector.ExternalInterface.BehaviorStackState.NotActive, branchPath=()):
    self.state = state
    self.branchPath = branchPath

  @classmethod
  def unpack(cls, buffer):
    "Reads a new AudioBehaviorStackUpdate from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('AudioBehaviorStackUpdate.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new AudioBehaviorStackUpdate from the given BinaryReader."
    _state = reader.read('B')
    _branchPath = reader.read_varray('H', 'H')
    return cls(_state, _branchPath)

  def pack(self):
    "Writes the current AudioBehaviorStackUpdate, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current AudioBehaviorStackUpdate to the given BinaryWriter."
    writer.write(self._state, 'B')
    writer.write_varray(self._branchPath, 'H', 'H')

  def __eq__(self, other):
    if type(self) is type(other):
      return (self._state == other._state and
        self._branchPath == other._branchPath)
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return (msgbuffers.size(self._state, 'B') +
      msgbuffers.size_varray(self._branchPath, 'H', 'H'))

  def __str__(self):
    return '{type}(state={state}, branchPath={branchPath})'.format(
      type=type(self).__name__,
      state=self._state,
      branchPath=msgbuffers.shorten_sequence(self._branchPath))

  def __repr__(self):
    return '{type}(state={state}, branchPath={branchPath})'.format(
      type=type(self).__name__,
      state=repr(self._state),
      branchPath=repr(self._branchPath))

Anki.Vector.ExternalInterface.AudioBehaviorStackUpdate = AudioBehaviorStackUpdate
del AudioBehaviorStackUpdate


class RequiredEmptyMessage(object):
  "Generated message-passing message."

  __slots__ = ()

  def __init__(self):
    pass

  @classmethod
  def unpack(cls, buffer):
    "Reads a new RequiredEmptyMessage from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('RequiredEmptyMessage.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new RequiredEmptyMessage from the given BinaryReader."
    return cls()

  def pack(self):
    "Writes the current RequiredEmptyMessage, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current RequiredEmptyMessage to the given BinaryWriter."

  def __eq__(self, other):
    if type(self) is type(other):
      return True
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    return 0

  def __str__(self):
    return '{type}()'.format(type=type(self).__name__)

  def __repr__(self):
    return '{type}()'.format(type=type(self).__name__)

Anki.Vector.ExternalInterface.RequiredEmptyMessage = RequiredEmptyMessage
del RequiredEmptyMessage


class Event(object):
  "Generated message-passing union."

  __slots__ = ('_tag', '_data')

  class Tag(object):
    "The type indicator for this union."
    replaceMe = 0 # Anki.Vector.ExternalInterface.RequiredEmptyMessage

  @property
  def tag(self):
    "The current tag for this union."
    return self._tag

  @property
  def tag_name(self):
    "The name of the current tag for this union."
    if self._tag in self._tags_by_value:
      return self._tags_by_value[self._tag]
    else:
      return None

  @property
  def data(self):
    "The data held by this union. None if no data is set."
    return self._data

  @property
  def replaceMe(self):
    "Anki.Vector.ExternalInterface.RequiredEmptyMessage replaceMe union property."
    msgbuffers.safety_check_tag('replaceMe', self._tag, self.Tag.replaceMe, self._tags_by_value)
    return self._data

  @replaceMe.setter
  def replaceMe(self, value):
    self._data = msgbuffers.validate_object(
      'Event.replaceMe', value, Anki.Vector.ExternalInterface.RequiredEmptyMessage)
    self._tag = self.Tag.replaceMe

  def __init__(self, **kwargs):
    if not kwargs:
      self._tag = None
      self._data = None

    elif len(kwargs) == 1:
      key, value = next(iter(kwargs.items()))
      if key not in self._tags_by_name:
        raise TypeError("'{argument}' is an invalid keyword argument for this method.".format(argument=key))
      # calls the correct property
      setattr(self, key, value)

    else:
      raise TypeError('This method only accepts up to one keyword argument.')

  @classmethod
  def unpack(cls, buffer):
    "Reads a new Event from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('Event.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new Event from the given BinaryReader."
    tag = reader.read('B')
    if tag in cls._tags_by_value:
      value = cls()
      setattr(value, cls._tags_by_value[tag], cls._tag_unpack_methods[tag](reader))
      return value
    else:
      raise ValueError('Event attempted to unpack unknown tag {tag}.'.format(tag=tag))

  def pack(self):
    "Writes the current Event, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current SampleUnion to the given BinaryWriter."
    if self._tag in self._tags_by_value:
      writer.write(self._tag, 'B')
      self._tag_pack_methods[self._tag](writer, self._data)
    else:
      raise ValueError('Cannot pack an empty Event.')

  def clear(self):
    self._tag = None
    self._data = None

  @classmethod
  def typeByTag(cls, tag):
    return cls._type_by_tag_value[tag]()

  def __eq__(self, other):
    if type(self) is type(other):
      return self._tag == other._tag and self._data == other._data
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    if 0 <= self._tag < 1:
      return self._tag_size_methods[self._tag](self._data)
    else:
      return 1

  def __str__(self):
    if 0 <= self._tag < 1:
      return '{type}({name}={value})'.format(
        type=type(self).__name__,
        name=self.tag_name,
        value=self._data)
    else:
      return '{type}()'.format(
        type=type(self).__name__)

  def __repr__(self):
    if 0 <= self._tag < 1:
      return '{type}({name}={value})'.format(
        type=type(self).__name__,
        name=self.tag_name,
        value=repr(self._data))
    else:
      return '{type}()'.format(
        type=type(self).__name__)

  _tags_by_name = dict(
    replaceMe=0,
  )

  _tags_by_value = dict()
  _tags_by_value[0] = 'replaceMe'
  

  _tag_unpack_methods = dict()
  _tag_unpack_methods[0] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RequiredEmptyMessage.unpack_from)
  

  _tag_pack_methods = dict()
  _tag_pack_methods[0] = lambda writer, value: writer.write_object(value)
  

  _tag_size_methods = dict()
  _tag_size_methods[0] = lambda value: msgbuffers.size_object(value)
  

  _type_by_tag_value = dict()
  _type_by_tag_value[0] = lambda : Anki.Vector.ExternalInterface.RequiredEmptyMessage
  

Anki.Vector.ExternalInterface.Event = Event
del Event


class MessageEngineToGame(object):
  "Generated message-passing union."

  __slots__ = ('_tag', '_data')

  class Tag(object):
    "The type indicator for this union."
    UiDeviceConnected               = 0x0  # Anki.Vector.ExternalInterface.UiDeviceConnected
    RobotCompletedAction            = 0x1  # Anki.Vector.ExternalInterface.RobotCompletedAction
    Event                           = 0x2  # Anki.Vector.ExternalInterface.Event
    EnrolledNamesResponse           = 0x5  # Anki.Vector.ExternalInterface.EnrolledNamesResponse
    RobotObservedFace               = 0x6  # Anki.Vector.ExternalInterface.RobotObservedFace
    RobotChangedObservedFaceID      = 0x7  # Anki.Vector.ExternalInterface.RobotChangedObservedFaceID
    AnimationAvailable              = 0x8  # Anki.Vector.ExternalInterface.AnimationAvailable
    EndOfMessage                    = 0x9  # Anki.Vector.ExternalInterface.EndOfMessage
    ObjectConnectionState           = 0xa  # Anki.Vector.ExternalInterface.ObjectConnectionState
    ObjectMoved                     = 0xb  # Anki.Vector.ExternalInterface.ObjectMoved
    ObjectStoppedMoving             = 0xc  # Anki.Vector.ExternalInterface.ObjectStoppedMoving
    ObjectUpAxisChanged             = 0xd  # Anki.Vector.ExternalInterface.ObjectUpAxisChanged
    ObjectTapped                    = 0xe  # Anki.Vector.ExternalInterface.ObjectTapped
    ObjectAccel                     = 0xf  # Anki.Vector.ExternalInterface.ObjectAccel
    RobotObservedObject             = 0x10 # Anki.Vector.ExternalInterface.RobotObservedObject
    ObjectAvailable                 = 0x11 # Anki.Vector.ExternalInterface.ObjectAvailable
    RobotDeletedFixedCustomObjects  = 0x12 # Anki.Vector.ExternalInterface.RobotDeletedFixedCustomObjects
    RobotDeletedCustomMarkerObjects = 0x13 # Anki.Vector.ExternalInterface.RobotDeletedCustomMarkerObjects
    CreatedFixedCustomObject        = 0x14 # Anki.Vector.ExternalInterface.CreatedFixedCustomObject
    DefinedCustomObject             = 0x15 # Anki.Vector.ExternalInterface.DefinedCustomObject
    MemoryMapMessageBegin           = 0x16 # Anki.Vector.ExternalInterface.MemoryMapMessageBegin
    MemoryMapMessage                = 0x17 # Anki.Vector.ExternalInterface.MemoryMapMessage
    MemoryMapMessageEnd             = 0x18 # Anki.Vector.ExternalInterface.MemoryMapMessageEnd
    AudioCallbackDuration           = 0x19 # Anki.AudioEngine.Multiplexer.AudioCallbackDuration
    AudioCallbackMarker             = 0x1a # Anki.AudioEngine.Multiplexer.AudioCallbackMarker
    AudioCallbackComplete           = 0x1b # Anki.AudioEngine.Multiplexer.AudioCallbackComplete
    AudioCallbackError              = 0x1c # Anki.AudioEngine.Multiplexer.AudioCallbackError
    AdvertisementRegistrationMsg    = 0x1d # Anki.Vector.AdvertisementRegistrationMsg
    AdvertisementMsg                = 0x1e # Anki.Vector.AdvertisementMsg
    Ping                            = 0x1f # Anki.Vector.ExternalInterface.Ping
    CliffEvent                      = 0x20 # Anki.Vector.CliffEvent
    PotentialCliff                  = 0x21 # Anki.Vector.PotentialCliff
    SetCliffDetectThresholds        = 0x22 # Anki.Vector.SetCliffDetectThresholds
    SetWhiteDetectThresholds        = 0x23 # Anki.Vector.SetWhiteDetectThresholds
    FactoryTestResultEntry          = 0x24 # Anki.Vector.FactoryTestResultEntry
    ImageChunk                      = 0x25 # Anki.Vector.ImageChunk
    CameraCalibration               = 0x26 # Anki.Vector.CameraCalibration
    IMURequest                      = 0x27 # Anki.Vector.IMURequest
    IMUTemperature                  = 0x28 # Anki.Vector.RobotInterface.IMUTemperature
    LoadedKnownFace                 = 0x29 # Anki.Vision.LoadedKnownFace
    RobotRenamedEnrolledFace        = 0x2a # Anki.Vision.RobotRenamedEnrolledFace
    MotorCalibration                = 0x2b # Anki.Vector.MotorCalibration
    MotorAutoEnabled                = 0x2c # Anki.Vector.MotorAutoEnabled
    CarryStateUpdate                = 0x2d # Anki.Vector.CarryStateUpdate
    EnterPairing                    = 0x2e # Anki.Vector.SwitchboardInterface.EnterPairing
    ExitPairing                     = 0x2f # Anki.Vector.SwitchboardInterface.ExitPairing
    WifiScanRequest                 = 0x30 # Anki.Vector.SwitchboardInterface.WifiScanRequest
    WifiConnectRequest              = 0x31 # Anki.Vector.SwitchboardInterface.WifiConnectRequest
    HasBleKeysRequest               = 0x32 # Anki.Vector.SwitchboardInterface.HasBleKeysRequest
    ActivateExperimentRequest       = 0x33 # Anki.Util.AnkiLab.ActivateExperimentRequest
    ActivateExperimentResponse      = 0x34 # Anki.Util.AnkiLab.ActivateExperimentResponse
    UiDeviceAvailable               = 0x35 # Anki.Vector.ExternalInterface.UiDeviceAvailable
    RobotConnectionResponse         = 0x36 # Anki.Vector.ExternalInterface.RobotConnectionResponse
    GoingToSleep                    = 0x37 # Anki.Vector.ExternalInterface.GoingToSleep
    CurrentCameraParams             = 0x38 # Anki.Vector.ExternalInterface.CurrentCameraParams
    PerRobotSettings                = 0x39 # Anki.Vector.ExternalInterface.PerRobotSettings
    RobotState                      = 0x3a # Anki.Vector.ExternalInterface.RobotState
    RobotDelocalized                = 0x3b # Anki.Vector.ExternalInterface.RobotDelocalized
    RobotStopped                    = 0x3c # Anki.Vector.ExternalInterface.RobotStopped
    RobotOffTreadsStateChanged      = 0x3d # Anki.Vector.ExternalInterface.RobotOffTreadsStateChanged
    RobotOnChargerPlatformEvent     = 0x3e # Anki.Vector.ExternalInterface.RobotOnChargerPlatformEvent
    ChargerEvent                    = 0x3f # Anki.Vector.ExternalInterface.ChargerEvent
    TouchButtonEvent                = 0x40 # Anki.Vector.ExternalInterface.TouchButtonEvent
    UnexpectedMovement              = 0x41 # Anki.Vector.ExternalInterface.UnexpectedMovement
    RobotFallingEvent               = 0x42 # Anki.Vector.ExternalInterface.RobotFallingEvent
    RobotProcessedImage             = 0x43 # Anki.Vector.ExternalInterface.RobotProcessedImage
    RobotObservedPossibleObject     = 0x44 # Anki.Vector.ExternalInterface.RobotObservedPossibleObject
    RobotObservedPet                = 0x45 # Anki.Vector.ExternalInterface.RobotObservedPet
    RobotObservedMotion             = 0x46 # Anki.Vector.ExternalInterface.RobotObservedMotion
    RobotObservedSalientPoint       = 0x47 # Anki.Vector.ExternalInterface.RobotObservedSalientPoint
    RobotObservedLaserPoint         = 0x48 # Anki.Vector.ExternalInterface.RobotObservedLaserPoint
    RobotObservedIllumination       = 0x49 # Anki.Vector.ExternalInterface.RobotObservedIllumination
    RobotDeletedFace                = 0x4a # Anki.Vector.ExternalInterface.RobotDeletedFace
    RobotDeletedLocatedObject       = 0x4b # Anki.Vector.ExternalInterface.RobotDeletedLocatedObject
    RobotDeletedAllCustomObjects    = 0x4c # Anki.Vector.ExternalInterface.RobotDeletedAllCustomObjects
    LocatedObjectStates             = 0x4d # Anki.Vector.ExternalInterface.LocatedObjectStates
    ConnectedObjectStates           = 0x4e # Anki.Vector.ExternalInterface.ConnectedObjectStates
    MeetVictorStarted               = 0x4f # Anki.Vector.ExternalInterface.MeetVictorStarted
    MeetVictorFaceScanStarted       = 0x50 # Anki.Vector.ExternalInterface.MeetVictorFaceScanStarted
    MeetVictorFaceScanComplete      = 0x51 # Anki.Vector.ExternalInterface.MeetVictorFaceScanComplete
    MeetVictorNameSaved             = 0x52 # Anki.Vector.ExternalInterface.MeetVictorNameSaved
    RobotErasedEnrolledFace         = 0x53 # Anki.Vector.ExternalInterface.RobotErasedEnrolledFace
    RobotErasedAllEnrolledFaces     = 0x54 # Anki.Vector.ExternalInterface.RobotErasedAllEnrolledFaces
    RobotCompletedFactoryDotTest    = 0x55 # Anki.Vector.ExternalInterface.RobotCompletedFactoryDotTest
    PlaypenBehaviorFailed           = 0x56 # Anki.Vector.ExternalInterface.PlaypenBehaviorFailed
    SelfTestBehaviorFailed          = 0x57 # Anki.Vector.ExternalInterface.SelfTestBehaviorFailed
    SelfTestEnd                     = 0x58 # Anki.Vector.ExternalInterface.SelfTestEnd
    AnimationGroupAvailable         = 0x59 # Anki.Vector.ExternalInterface.AnimationGroupAvailable
    AnimationAborted                = 0x5a # Anki.Vector.ExternalInterface.AnimationAborted
    AnimationEvent                  = 0x5b # Anki.Vector.ExternalInterface.AnimationEvent
    MoodState                       = 0x5c # Anki.Vector.ExternalInterface.MoodState
    InitDebugConsoleVarMessage      = 0x5d # Anki.Vector.ExternalInterface.InitDebugConsoleVarMessage
    JsonDasLogMessage               = 0x5e # Anki.Vector.ExternalInterface.JsonDasLogMessage
    JsonDasLogAllSentMessage        = 0x5f # Anki.Vector.ExternalInterface.JsonDasLogAllSentMessage
    VerifyDebugConsoleFuncMessage   = 0x60 # Anki.Vector.ExternalInterface.VerifyDebugConsoleFuncMessage
    VerifyDebugConsoleVarMessage    = 0x61 # Anki.Vector.ExternalInterface.VerifyDebugConsoleVarMessage
    DebugAppendConsoleLogLine       = 0x62 # Anki.Vector.ExternalInterface.DebugAppendConsoleLogLine
    EngineErrorCodeMessage          = 0x63 # Anki.Vector.ExternalInterface.EngineErrorCodeMessage
    BehaviorTransition              = 0x64 # Anki.Vector.ExternalInterface.BehaviorTransition
    OnboardingState                 = 0x65 # Anki.Vector.ExternalInterface.OnboardingState
    AudioBehaviorStackUpdate        = 0x66 # Anki.Vector.ExternalInterface.AudioBehaviorStackUpdate
    RequiredEmptyMessage            = 0x67 # Anki.Vector.ExternalInterface.RequiredEmptyMessage

  @property
  def tag(self):
    "The current tag for this union."
    return self._tag

  @property
  def tag_name(self):
    "The name of the current tag for this union."
    if self._tag in self._tags_by_value:
      return self._tags_by_value[self._tag]
    else:
      return None

  @property
  def data(self):
    "The data held by this union. None if no data is set."
    return self._data

  @property
  def UiDeviceConnected(self):
    "Anki.Vector.ExternalInterface.UiDeviceConnected UiDeviceConnected union property."
    msgbuffers.safety_check_tag('UiDeviceConnected', self._tag, self.Tag.UiDeviceConnected, self._tags_by_value)
    return self._data

  @UiDeviceConnected.setter
  def UiDeviceConnected(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.UiDeviceConnected', value, Anki.Vector.ExternalInterface.UiDeviceConnected)
    self._tag = self.Tag.UiDeviceConnected

  @property
  def RobotCompletedAction(self):
    "Anki.Vector.ExternalInterface.RobotCompletedAction RobotCompletedAction union property."
    msgbuffers.safety_check_tag('RobotCompletedAction', self._tag, self.Tag.RobotCompletedAction, self._tags_by_value)
    return self._data

  @RobotCompletedAction.setter
  def RobotCompletedAction(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.RobotCompletedAction', value, Anki.Vector.ExternalInterface.RobotCompletedAction)
    self._tag = self.Tag.RobotCompletedAction

  @property
  def Event(self):
    "Anki.Vector.ExternalInterface.Event Event union property."
    msgbuffers.safety_check_tag('Event', self._tag, self.Tag.Event, self._tags_by_value)
    return self._data

  @Event.setter
  def Event(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.Event', value, Anki.Vector.ExternalInterface.Event)
    self._tag = self.Tag.Event

  @property
  def EnrolledNamesResponse(self):
    "Anki.Vector.ExternalInterface.EnrolledNamesResponse EnrolledNamesResponse union property."
    msgbuffers.safety_check_tag('EnrolledNamesResponse', self._tag, self.Tag.EnrolledNamesResponse, self._tags_by_value)
    return self._data

  @EnrolledNamesResponse.setter
  def EnrolledNamesResponse(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.EnrolledNamesResponse', value, Anki.Vector.ExternalInterface.EnrolledNamesResponse)
    self._tag = self.Tag.EnrolledNamesResponse

  @property
  def RobotObservedFace(self):
    "Anki.Vector.ExternalInterface.RobotObservedFace RobotObservedFace union property."
    msgbuffers.safety_check_tag('RobotObservedFace', self._tag, self.Tag.RobotObservedFace, self._tags_by_value)
    return self._data

  @RobotObservedFace.setter
  def RobotObservedFace(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.RobotObservedFace', value, Anki.Vector.ExternalInterface.RobotObservedFace)
    self._tag = self.Tag.RobotObservedFace

  @property
  def RobotChangedObservedFaceID(self):
    "Anki.Vector.ExternalInterface.RobotChangedObservedFaceID RobotChangedObservedFaceID union property."
    msgbuffers.safety_check_tag('RobotChangedObservedFaceID', self._tag, self.Tag.RobotChangedObservedFaceID, self._tags_by_value)
    return self._data

  @RobotChangedObservedFaceID.setter
  def RobotChangedObservedFaceID(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.RobotChangedObservedFaceID', value, Anki.Vector.ExternalInterface.RobotChangedObservedFaceID)
    self._tag = self.Tag.RobotChangedObservedFaceID

  @property
  def AnimationAvailable(self):
    "Anki.Vector.ExternalInterface.AnimationAvailable AnimationAvailable union property."
    msgbuffers.safety_check_tag('AnimationAvailable', self._tag, self.Tag.AnimationAvailable, self._tags_by_value)
    return self._data

  @AnimationAvailable.setter
  def AnimationAvailable(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.AnimationAvailable', value, Anki.Vector.ExternalInterface.AnimationAvailable)
    self._tag = self.Tag.AnimationAvailable

  @property
  def EndOfMessage(self):
    "Anki.Vector.ExternalInterface.EndOfMessage EndOfMessage union property."
    msgbuffers.safety_check_tag('EndOfMessage', self._tag, self.Tag.EndOfMessage, self._tags_by_value)
    return self._data

  @EndOfMessage.setter
  def EndOfMessage(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.EndOfMessage', value, Anki.Vector.ExternalInterface.EndOfMessage)
    self._tag = self.Tag.EndOfMessage

  @property
  def ObjectConnectionState(self):
    "Anki.Vector.ExternalInterface.ObjectConnectionState ObjectConnectionState union property."
    msgbuffers.safety_check_tag('ObjectConnectionState', self._tag, self.Tag.ObjectConnectionState, self._tags_by_value)
    return self._data

  @ObjectConnectionState.setter
  def ObjectConnectionState(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.ObjectConnectionState', value, Anki.Vector.ExternalInterface.ObjectConnectionState)
    self._tag = self.Tag.ObjectConnectionState

  @property
  def ObjectMoved(self):
    "Anki.Vector.ExternalInterface.ObjectMoved ObjectMoved union property."
    msgbuffers.safety_check_tag('ObjectMoved', self._tag, self.Tag.ObjectMoved, self._tags_by_value)
    return self._data

  @ObjectMoved.setter
  def ObjectMoved(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.ObjectMoved', value, Anki.Vector.ExternalInterface.ObjectMoved)
    self._tag = self.Tag.ObjectMoved

  @property
  def ObjectStoppedMoving(self):
    "Anki.Vector.ExternalInterface.ObjectStoppedMoving ObjectStoppedMoving union property."
    msgbuffers.safety_check_tag('ObjectStoppedMoving', self._tag, self.Tag.ObjectStoppedMoving, self._tags_by_value)
    return self._data

  @ObjectStoppedMoving.setter
  def ObjectStoppedMoving(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.ObjectStoppedMoving', value, Anki.Vector.ExternalInterface.ObjectStoppedMoving)
    self._tag = self.Tag.ObjectStoppedMoving

  @property
  def ObjectUpAxisChanged(self):
    "Anki.Vector.ExternalInterface.ObjectUpAxisChanged ObjectUpAxisChanged union property."
    msgbuffers.safety_check_tag('ObjectUpAxisChanged', self._tag, self.Tag.ObjectUpAxisChanged, self._tags_by_value)
    return self._data

  @ObjectUpAxisChanged.setter
  def ObjectUpAxisChanged(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.ObjectUpAxisChanged', value, Anki.Vector.ExternalInterface.ObjectUpAxisChanged)
    self._tag = self.Tag.ObjectUpAxisChanged

  @property
  def ObjectTapped(self):
    "Anki.Vector.ExternalInterface.ObjectTapped ObjectTapped union property."
    msgbuffers.safety_check_tag('ObjectTapped', self._tag, self.Tag.ObjectTapped, self._tags_by_value)
    return self._data

  @ObjectTapped.setter
  def ObjectTapped(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.ObjectTapped', value, Anki.Vector.ExternalInterface.ObjectTapped)
    self._tag = self.Tag.ObjectTapped

  @property
  def ObjectAccel(self):
    "Anki.Vector.ExternalInterface.ObjectAccel ObjectAccel union property."
    msgbuffers.safety_check_tag('ObjectAccel', self._tag, self.Tag.ObjectAccel, self._tags_by_value)
    return self._data

  @ObjectAccel.setter
  def ObjectAccel(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.ObjectAccel', value, Anki.Vector.ExternalInterface.ObjectAccel)
    self._tag = self.Tag.ObjectAccel

  @property
  def RobotObservedObject(self):
    "Anki.Vector.ExternalInterface.RobotObservedObject RobotObservedObject union property."
    msgbuffers.safety_check_tag('RobotObservedObject', self._tag, self.Tag.RobotObservedObject, self._tags_by_value)
    return self._data

  @RobotObservedObject.setter
  def RobotObservedObject(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.RobotObservedObject', value, Anki.Vector.ExternalInterface.RobotObservedObject)
    self._tag = self.Tag.RobotObservedObject

  @property
  def ObjectAvailable(self):
    "Anki.Vector.ExternalInterface.ObjectAvailable ObjectAvailable union property."
    msgbuffers.safety_check_tag('ObjectAvailable', self._tag, self.Tag.ObjectAvailable, self._tags_by_value)
    return self._data

  @ObjectAvailable.setter
  def ObjectAvailable(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.ObjectAvailable', value, Anki.Vector.ExternalInterface.ObjectAvailable)
    self._tag = self.Tag.ObjectAvailable

  @property
  def RobotDeletedFixedCustomObjects(self):
    "Anki.Vector.ExternalInterface.RobotDeletedFixedCustomObjects RobotDeletedFixedCustomObjects union property."
    msgbuffers.safety_check_tag('RobotDeletedFixedCustomObjects', self._tag, self.Tag.RobotDeletedFixedCustomObjects, self._tags_by_value)
    return self._data

  @RobotDeletedFixedCustomObjects.setter
  def RobotDeletedFixedCustomObjects(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.RobotDeletedFixedCustomObjects', value, Anki.Vector.ExternalInterface.RobotDeletedFixedCustomObjects)
    self._tag = self.Tag.RobotDeletedFixedCustomObjects

  @property
  def RobotDeletedCustomMarkerObjects(self):
    "Anki.Vector.ExternalInterface.RobotDeletedCustomMarkerObjects RobotDeletedCustomMarkerObjects union property."
    msgbuffers.safety_check_tag('RobotDeletedCustomMarkerObjects', self._tag, self.Tag.RobotDeletedCustomMarkerObjects, self._tags_by_value)
    return self._data

  @RobotDeletedCustomMarkerObjects.setter
  def RobotDeletedCustomMarkerObjects(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.RobotDeletedCustomMarkerObjects', value, Anki.Vector.ExternalInterface.RobotDeletedCustomMarkerObjects)
    self._tag = self.Tag.RobotDeletedCustomMarkerObjects

  @property
  def CreatedFixedCustomObject(self):
    "Anki.Vector.ExternalInterface.CreatedFixedCustomObject CreatedFixedCustomObject union property."
    msgbuffers.safety_check_tag('CreatedFixedCustomObject', self._tag, self.Tag.CreatedFixedCustomObject, self._tags_by_value)
    return self._data

  @CreatedFixedCustomObject.setter
  def CreatedFixedCustomObject(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.CreatedFixedCustomObject', value, Anki.Vector.ExternalInterface.CreatedFixedCustomObject)
    self._tag = self.Tag.CreatedFixedCustomObject

  @property
  def DefinedCustomObject(self):
    "Anki.Vector.ExternalInterface.DefinedCustomObject DefinedCustomObject union property."
    msgbuffers.safety_check_tag('DefinedCustomObject', self._tag, self.Tag.DefinedCustomObject, self._tags_by_value)
    return self._data

  @DefinedCustomObject.setter
  def DefinedCustomObject(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.DefinedCustomObject', value, Anki.Vector.ExternalInterface.DefinedCustomObject)
    self._tag = self.Tag.DefinedCustomObject

  @property
  def MemoryMapMessageBegin(self):
    "Anki.Vector.ExternalInterface.MemoryMapMessageBegin MemoryMapMessageBegin union property."
    msgbuffers.safety_check_tag('MemoryMapMessageBegin', self._tag, self.Tag.MemoryMapMessageBegin, self._tags_by_value)
    return self._data

  @MemoryMapMessageBegin.setter
  def MemoryMapMessageBegin(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.MemoryMapMessageBegin', value, Anki.Vector.ExternalInterface.MemoryMapMessageBegin)
    self._tag = self.Tag.MemoryMapMessageBegin

  @property
  def MemoryMapMessage(self):
    "Anki.Vector.ExternalInterface.MemoryMapMessage MemoryMapMessage union property."
    msgbuffers.safety_check_tag('MemoryMapMessage', self._tag, self.Tag.MemoryMapMessage, self._tags_by_value)
    return self._data

  @MemoryMapMessage.setter
  def MemoryMapMessage(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.MemoryMapMessage', value, Anki.Vector.ExternalInterface.MemoryMapMessage)
    self._tag = self.Tag.MemoryMapMessage

  @property
  def MemoryMapMessageEnd(self):
    "Anki.Vector.ExternalInterface.MemoryMapMessageEnd MemoryMapMessageEnd union property."
    msgbuffers.safety_check_tag('MemoryMapMessageEnd', self._tag, self.Tag.MemoryMapMessageEnd, self._tags_by_value)
    return self._data

  @MemoryMapMessageEnd.setter
  def MemoryMapMessageEnd(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.MemoryMapMessageEnd', value, Anki.Vector.ExternalInterface.MemoryMapMessageEnd)
    self._tag = self.Tag.MemoryMapMessageEnd

  @property
  def AudioCallbackDuration(self):
    "Anki.AudioEngine.Multiplexer.AudioCallbackDuration AudioCallbackDuration union property."
    msgbuffers.safety_check_tag('AudioCallbackDuration', self._tag, self.Tag.AudioCallbackDuration, self._tags_by_value)
    return self._data

  @AudioCallbackDuration.setter
  def AudioCallbackDuration(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.AudioCallbackDuration', value, Anki.AudioEngine.Multiplexer.AudioCallbackDuration)
    self._tag = self.Tag.AudioCallbackDuration

  @property
  def AudioCallbackMarker(self):
    "Anki.AudioEngine.Multiplexer.AudioCallbackMarker AudioCallbackMarker union property."
    msgbuffers.safety_check_tag('AudioCallbackMarker', self._tag, self.Tag.AudioCallbackMarker, self._tags_by_value)
    return self._data

  @AudioCallbackMarker.setter
  def AudioCallbackMarker(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.AudioCallbackMarker', value, Anki.AudioEngine.Multiplexer.AudioCallbackMarker)
    self._tag = self.Tag.AudioCallbackMarker

  @property
  def AudioCallbackComplete(self):
    "Anki.AudioEngine.Multiplexer.AudioCallbackComplete AudioCallbackComplete union property."
    msgbuffers.safety_check_tag('AudioCallbackComplete', self._tag, self.Tag.AudioCallbackComplete, self._tags_by_value)
    return self._data

  @AudioCallbackComplete.setter
  def AudioCallbackComplete(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.AudioCallbackComplete', value, Anki.AudioEngine.Multiplexer.AudioCallbackComplete)
    self._tag = self.Tag.AudioCallbackComplete

  @property
  def AudioCallbackError(self):
    "Anki.AudioEngine.Multiplexer.AudioCallbackError AudioCallbackError union property."
    msgbuffers.safety_check_tag('AudioCallbackError', self._tag, self.Tag.AudioCallbackError, self._tags_by_value)
    return self._data

  @AudioCallbackError.setter
  def AudioCallbackError(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.AudioCallbackError', value, Anki.AudioEngine.Multiplexer.AudioCallbackError)
    self._tag = self.Tag.AudioCallbackError

  @property
  def AdvertisementRegistrationMsg(self):
    "Anki.Vector.AdvertisementRegistrationMsg AdvertisementRegistrationMsg union property."
    msgbuffers.safety_check_tag('AdvertisementRegistrationMsg', self._tag, self.Tag.AdvertisementRegistrationMsg, self._tags_by_value)
    return self._data

  @AdvertisementRegistrationMsg.setter
  def AdvertisementRegistrationMsg(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.AdvertisementRegistrationMsg', value, Anki.Vector.AdvertisementRegistrationMsg)
    self._tag = self.Tag.AdvertisementRegistrationMsg

  @property
  def AdvertisementMsg(self):
    "Anki.Vector.AdvertisementMsg AdvertisementMsg union property."
    msgbuffers.safety_check_tag('AdvertisementMsg', self._tag, self.Tag.AdvertisementMsg, self._tags_by_value)
    return self._data

  @AdvertisementMsg.setter
  def AdvertisementMsg(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.AdvertisementMsg', value, Anki.Vector.AdvertisementMsg)
    self._tag = self.Tag.AdvertisementMsg

  @property
  def Ping(self):
    "Anki.Vector.ExternalInterface.Ping Ping union property."
    msgbuffers.safety_check_tag('Ping', self._tag, self.Tag.Ping, self._tags_by_value)
    return self._data

  @Ping.setter
  def Ping(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.Ping', value, Anki.Vector.ExternalInterface.Ping)
    self._tag = self.Tag.Ping

  @property
  def CliffEvent(self):
    "Anki.Vector.CliffEvent CliffEvent union property."
    msgbuffers.safety_check_tag('CliffEvent', self._tag, self.Tag.CliffEvent, self._tags_by_value)
    return self._data

  @CliffEvent.setter
  def CliffEvent(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.CliffEvent', value, Anki.Vector.CliffEvent)
    self._tag = self.Tag.CliffEvent

  @property
  def PotentialCliff(self):
    "Anki.Vector.PotentialCliff PotentialCliff union property."
    msgbuffers.safety_check_tag('PotentialCliff', self._tag, self.Tag.PotentialCliff, self._tags_by_value)
    return self._data

  @PotentialCliff.setter
  def PotentialCliff(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.PotentialCliff', value, Anki.Vector.PotentialCliff)
    self._tag = self.Tag.PotentialCliff

  @property
  def SetCliffDetectThresholds(self):
    "Anki.Vector.SetCliffDetectThresholds SetCliffDetectThresholds union property."
    msgbuffers.safety_check_tag('SetCliffDetectThresholds', self._tag, self.Tag.SetCliffDetectThresholds, self._tags_by_value)
    return self._data

  @SetCliffDetectThresholds.setter
  def SetCliffDetectThresholds(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.SetCliffDetectThresholds', value, Anki.Vector.SetCliffDetectThresholds)
    self._tag = self.Tag.SetCliffDetectThresholds

  @property
  def SetWhiteDetectThresholds(self):
    "Anki.Vector.SetWhiteDetectThresholds SetWhiteDetectThresholds union property."
    msgbuffers.safety_check_tag('SetWhiteDetectThresholds', self._tag, self.Tag.SetWhiteDetectThresholds, self._tags_by_value)
    return self._data

  @SetWhiteDetectThresholds.setter
  def SetWhiteDetectThresholds(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.SetWhiteDetectThresholds', value, Anki.Vector.SetWhiteDetectThresholds)
    self._tag = self.Tag.SetWhiteDetectThresholds

  @property
  def FactoryTestResultEntry(self):
    "Anki.Vector.FactoryTestResultEntry FactoryTestResultEntry union property."
    msgbuffers.safety_check_tag('FactoryTestResultEntry', self._tag, self.Tag.FactoryTestResultEntry, self._tags_by_value)
    return self._data

  @FactoryTestResultEntry.setter
  def FactoryTestResultEntry(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.FactoryTestResultEntry', value, Anki.Vector.FactoryTestResultEntry)
    self._tag = self.Tag.FactoryTestResultEntry

  @property
  def ImageChunk(self):
    "Anki.Vector.ImageChunk ImageChunk union property."
    msgbuffers.safety_check_tag('ImageChunk', self._tag, self.Tag.ImageChunk, self._tags_by_value)
    return self._data

  @ImageChunk.setter
  def ImageChunk(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.ImageChunk', value, Anki.Vector.ImageChunk)
    self._tag = self.Tag.ImageChunk

  @property
  def CameraCalibration(self):
    "Anki.Vector.CameraCalibration CameraCalibration union property."
    msgbuffers.safety_check_tag('CameraCalibration', self._tag, self.Tag.CameraCalibration, self._tags_by_value)
    return self._data

  @CameraCalibration.setter
  def CameraCalibration(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.CameraCalibration', value, Anki.Vector.CameraCalibration)
    self._tag = self.Tag.CameraCalibration

  @property
  def IMURequest(self):
    "Anki.Vector.IMURequest IMURequest union property."
    msgbuffers.safety_check_tag('IMURequest', self._tag, self.Tag.IMURequest, self._tags_by_value)
    return self._data

  @IMURequest.setter
  def IMURequest(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.IMURequest', value, Anki.Vector.IMURequest)
    self._tag = self.Tag.IMURequest

  @property
  def IMUTemperature(self):
    "Anki.Vector.RobotInterface.IMUTemperature IMUTemperature union property."
    msgbuffers.safety_check_tag('IMUTemperature', self._tag, self.Tag.IMUTemperature, self._tags_by_value)
    return self._data

  @IMUTemperature.setter
  def IMUTemperature(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.IMUTemperature', value, Anki.Vector.RobotInterface.IMUTemperature)
    self._tag = self.Tag.IMUTemperature

  @property
  def LoadedKnownFace(self):
    "Anki.Vision.LoadedKnownFace LoadedKnownFace union property."
    msgbuffers.safety_check_tag('LoadedKnownFace', self._tag, self.Tag.LoadedKnownFace, self._tags_by_value)
    return self._data

  @LoadedKnownFace.setter
  def LoadedKnownFace(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.LoadedKnownFace', value, Anki.Vision.LoadedKnownFace)
    self._tag = self.Tag.LoadedKnownFace

  @property
  def RobotRenamedEnrolledFace(self):
    "Anki.Vision.RobotRenamedEnrolledFace RobotRenamedEnrolledFace union property."
    msgbuffers.safety_check_tag('RobotRenamedEnrolledFace', self._tag, self.Tag.RobotRenamedEnrolledFace, self._tags_by_value)
    return self._data

  @RobotRenamedEnrolledFace.setter
  def RobotRenamedEnrolledFace(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.RobotRenamedEnrolledFace', value, Anki.Vision.RobotRenamedEnrolledFace)
    self._tag = self.Tag.RobotRenamedEnrolledFace

  @property
  def MotorCalibration(self):
    "Anki.Vector.MotorCalibration MotorCalibration union property."
    msgbuffers.safety_check_tag('MotorCalibration', self._tag, self.Tag.MotorCalibration, self._tags_by_value)
    return self._data

  @MotorCalibration.setter
  def MotorCalibration(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.MotorCalibration', value, Anki.Vector.MotorCalibration)
    self._tag = self.Tag.MotorCalibration

  @property
  def MotorAutoEnabled(self):
    "Anki.Vector.MotorAutoEnabled MotorAutoEnabled union property."
    msgbuffers.safety_check_tag('MotorAutoEnabled', self._tag, self.Tag.MotorAutoEnabled, self._tags_by_value)
    return self._data

  @MotorAutoEnabled.setter
  def MotorAutoEnabled(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.MotorAutoEnabled', value, Anki.Vector.MotorAutoEnabled)
    self._tag = self.Tag.MotorAutoEnabled

  @property
  def CarryStateUpdate(self):
    "Anki.Vector.CarryStateUpdate CarryStateUpdate union property."
    msgbuffers.safety_check_tag('CarryStateUpdate', self._tag, self.Tag.CarryStateUpdate, self._tags_by_value)
    return self._data

  @CarryStateUpdate.setter
  def CarryStateUpdate(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.CarryStateUpdate', value, Anki.Vector.CarryStateUpdate)
    self._tag = self.Tag.CarryStateUpdate

  @property
  def EnterPairing(self):
    "Anki.Vector.SwitchboardInterface.EnterPairing EnterPairing union property."
    msgbuffers.safety_check_tag('EnterPairing', self._tag, self.Tag.EnterPairing, self._tags_by_value)
    return self._data

  @EnterPairing.setter
  def EnterPairing(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.EnterPairing', value, Anki.Vector.SwitchboardInterface.EnterPairing)
    self._tag = self.Tag.EnterPairing

  @property
  def ExitPairing(self):
    "Anki.Vector.SwitchboardInterface.ExitPairing ExitPairing union property."
    msgbuffers.safety_check_tag('ExitPairing', self._tag, self.Tag.ExitPairing, self._tags_by_value)
    return self._data

  @ExitPairing.setter
  def ExitPairing(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.ExitPairing', value, Anki.Vector.SwitchboardInterface.ExitPairing)
    self._tag = self.Tag.ExitPairing

  @property
  def WifiScanRequest(self):
    "Anki.Vector.SwitchboardInterface.WifiScanRequest WifiScanRequest union property."
    msgbuffers.safety_check_tag('WifiScanRequest', self._tag, self.Tag.WifiScanRequest, self._tags_by_value)
    return self._data

  @WifiScanRequest.setter
  def WifiScanRequest(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.WifiScanRequest', value, Anki.Vector.SwitchboardInterface.WifiScanRequest)
    self._tag = self.Tag.WifiScanRequest

  @property
  def WifiConnectRequest(self):
    "Anki.Vector.SwitchboardInterface.WifiConnectRequest WifiConnectRequest union property."
    msgbuffers.safety_check_tag('WifiConnectRequest', self._tag, self.Tag.WifiConnectRequest, self._tags_by_value)
    return self._data

  @WifiConnectRequest.setter
  def WifiConnectRequest(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.WifiConnectRequest', value, Anki.Vector.SwitchboardInterface.WifiConnectRequest)
    self._tag = self.Tag.WifiConnectRequest

  @property
  def HasBleKeysRequest(self):
    "Anki.Vector.SwitchboardInterface.HasBleKeysRequest HasBleKeysRequest union property."
    msgbuffers.safety_check_tag('HasBleKeysRequest', self._tag, self.Tag.HasBleKeysRequest, self._tags_by_value)
    return self._data

  @HasBleKeysRequest.setter
  def HasBleKeysRequest(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.HasBleKeysRequest', value, Anki.Vector.SwitchboardInterface.HasBleKeysRequest)
    self._tag = self.Tag.HasBleKeysRequest

  @property
  def ActivateExperimentRequest(self):
    "Anki.Util.AnkiLab.ActivateExperimentRequest ActivateExperimentRequest union property."
    msgbuffers.safety_check_tag('ActivateExperimentRequest', self._tag, self.Tag.ActivateExperimentRequest, self._tags_by_value)
    return self._data

  @ActivateExperimentRequest.setter
  def ActivateExperimentRequest(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.ActivateExperimentRequest', value, Anki.Util.AnkiLab.ActivateExperimentRequest)
    self._tag = self.Tag.ActivateExperimentRequest

  @property
  def ActivateExperimentResponse(self):
    "Anki.Util.AnkiLab.ActivateExperimentResponse ActivateExperimentResponse union property."
    msgbuffers.safety_check_tag('ActivateExperimentResponse', self._tag, self.Tag.ActivateExperimentResponse, self._tags_by_value)
    return self._data

  @ActivateExperimentResponse.setter
  def ActivateExperimentResponse(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.ActivateExperimentResponse', value, Anki.Util.AnkiLab.ActivateExperimentResponse)
    self._tag = self.Tag.ActivateExperimentResponse

  @property
  def UiDeviceAvailable(self):
    "Anki.Vector.ExternalInterface.UiDeviceAvailable UiDeviceAvailable union property."
    msgbuffers.safety_check_tag('UiDeviceAvailable', self._tag, self.Tag.UiDeviceAvailable, self._tags_by_value)
    return self._data

  @UiDeviceAvailable.setter
  def UiDeviceAvailable(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.UiDeviceAvailable', value, Anki.Vector.ExternalInterface.UiDeviceAvailable)
    self._tag = self.Tag.UiDeviceAvailable

  @property
  def RobotConnectionResponse(self):
    "Anki.Vector.ExternalInterface.RobotConnectionResponse RobotConnectionResponse union property."
    msgbuffers.safety_check_tag('RobotConnectionResponse', self._tag, self.Tag.RobotConnectionResponse, self._tags_by_value)
    return self._data

  @RobotConnectionResponse.setter
  def RobotConnectionResponse(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.RobotConnectionResponse', value, Anki.Vector.ExternalInterface.RobotConnectionResponse)
    self._tag = self.Tag.RobotConnectionResponse

  @property
  def GoingToSleep(self):
    "Anki.Vector.ExternalInterface.GoingToSleep GoingToSleep union property."
    msgbuffers.safety_check_tag('GoingToSleep', self._tag, self.Tag.GoingToSleep, self._tags_by_value)
    return self._data

  @GoingToSleep.setter
  def GoingToSleep(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.GoingToSleep', value, Anki.Vector.ExternalInterface.GoingToSleep)
    self._tag = self.Tag.GoingToSleep

  @property
  def CurrentCameraParams(self):
    "Anki.Vector.ExternalInterface.CurrentCameraParams CurrentCameraParams union property."
    msgbuffers.safety_check_tag('CurrentCameraParams', self._tag, self.Tag.CurrentCameraParams, self._tags_by_value)
    return self._data

  @CurrentCameraParams.setter
  def CurrentCameraParams(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.CurrentCameraParams', value, Anki.Vector.ExternalInterface.CurrentCameraParams)
    self._tag = self.Tag.CurrentCameraParams

  @property
  def PerRobotSettings(self):
    "Anki.Vector.ExternalInterface.PerRobotSettings PerRobotSettings union property."
    msgbuffers.safety_check_tag('PerRobotSettings', self._tag, self.Tag.PerRobotSettings, self._tags_by_value)
    return self._data

  @PerRobotSettings.setter
  def PerRobotSettings(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.PerRobotSettings', value, Anki.Vector.ExternalInterface.PerRobotSettings)
    self._tag = self.Tag.PerRobotSettings

  @property
  def RobotState(self):
    "Anki.Vector.ExternalInterface.RobotState RobotState union property."
    msgbuffers.safety_check_tag('RobotState', self._tag, self.Tag.RobotState, self._tags_by_value)
    return self._data

  @RobotState.setter
  def RobotState(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.RobotState', value, Anki.Vector.ExternalInterface.RobotState)
    self._tag = self.Tag.RobotState

  @property
  def RobotDelocalized(self):
    "Anki.Vector.ExternalInterface.RobotDelocalized RobotDelocalized union property."
    msgbuffers.safety_check_tag('RobotDelocalized', self._tag, self.Tag.RobotDelocalized, self._tags_by_value)
    return self._data

  @RobotDelocalized.setter
  def RobotDelocalized(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.RobotDelocalized', value, Anki.Vector.ExternalInterface.RobotDelocalized)
    self._tag = self.Tag.RobotDelocalized

  @property
  def RobotStopped(self):
    "Anki.Vector.ExternalInterface.RobotStopped RobotStopped union property."
    msgbuffers.safety_check_tag('RobotStopped', self._tag, self.Tag.RobotStopped, self._tags_by_value)
    return self._data

  @RobotStopped.setter
  def RobotStopped(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.RobotStopped', value, Anki.Vector.ExternalInterface.RobotStopped)
    self._tag = self.Tag.RobotStopped

  @property
  def RobotOffTreadsStateChanged(self):
    "Anki.Vector.ExternalInterface.RobotOffTreadsStateChanged RobotOffTreadsStateChanged union property."
    msgbuffers.safety_check_tag('RobotOffTreadsStateChanged', self._tag, self.Tag.RobotOffTreadsStateChanged, self._tags_by_value)
    return self._data

  @RobotOffTreadsStateChanged.setter
  def RobotOffTreadsStateChanged(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.RobotOffTreadsStateChanged', value, Anki.Vector.ExternalInterface.RobotOffTreadsStateChanged)
    self._tag = self.Tag.RobotOffTreadsStateChanged

  @property
  def RobotOnChargerPlatformEvent(self):
    "Anki.Vector.ExternalInterface.RobotOnChargerPlatformEvent RobotOnChargerPlatformEvent union property."
    msgbuffers.safety_check_tag('RobotOnChargerPlatformEvent', self._tag, self.Tag.RobotOnChargerPlatformEvent, self._tags_by_value)
    return self._data

  @RobotOnChargerPlatformEvent.setter
  def RobotOnChargerPlatformEvent(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.RobotOnChargerPlatformEvent', value, Anki.Vector.ExternalInterface.RobotOnChargerPlatformEvent)
    self._tag = self.Tag.RobotOnChargerPlatformEvent

  @property
  def ChargerEvent(self):
    "Anki.Vector.ExternalInterface.ChargerEvent ChargerEvent union property."
    msgbuffers.safety_check_tag('ChargerEvent', self._tag, self.Tag.ChargerEvent, self._tags_by_value)
    return self._data

  @ChargerEvent.setter
  def ChargerEvent(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.ChargerEvent', value, Anki.Vector.ExternalInterface.ChargerEvent)
    self._tag = self.Tag.ChargerEvent

  @property
  def TouchButtonEvent(self):
    "Anki.Vector.ExternalInterface.TouchButtonEvent TouchButtonEvent union property."
    msgbuffers.safety_check_tag('TouchButtonEvent', self._tag, self.Tag.TouchButtonEvent, self._tags_by_value)
    return self._data

  @TouchButtonEvent.setter
  def TouchButtonEvent(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.TouchButtonEvent', value, Anki.Vector.ExternalInterface.TouchButtonEvent)
    self._tag = self.Tag.TouchButtonEvent

  @property
  def UnexpectedMovement(self):
    "Anki.Vector.ExternalInterface.UnexpectedMovement UnexpectedMovement union property."
    msgbuffers.safety_check_tag('UnexpectedMovement', self._tag, self.Tag.UnexpectedMovement, self._tags_by_value)
    return self._data

  @UnexpectedMovement.setter
  def UnexpectedMovement(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.UnexpectedMovement', value, Anki.Vector.ExternalInterface.UnexpectedMovement)
    self._tag = self.Tag.UnexpectedMovement

  @property
  def RobotFallingEvent(self):
    "Anki.Vector.ExternalInterface.RobotFallingEvent RobotFallingEvent union property."
    msgbuffers.safety_check_tag('RobotFallingEvent', self._tag, self.Tag.RobotFallingEvent, self._tags_by_value)
    return self._data

  @RobotFallingEvent.setter
  def RobotFallingEvent(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.RobotFallingEvent', value, Anki.Vector.ExternalInterface.RobotFallingEvent)
    self._tag = self.Tag.RobotFallingEvent

  @property
  def RobotProcessedImage(self):
    "Anki.Vector.ExternalInterface.RobotProcessedImage RobotProcessedImage union property."
    msgbuffers.safety_check_tag('RobotProcessedImage', self._tag, self.Tag.RobotProcessedImage, self._tags_by_value)
    return self._data

  @RobotProcessedImage.setter
  def RobotProcessedImage(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.RobotProcessedImage', value, Anki.Vector.ExternalInterface.RobotProcessedImage)
    self._tag = self.Tag.RobotProcessedImage

  @property
  def RobotObservedPossibleObject(self):
    "Anki.Vector.ExternalInterface.RobotObservedPossibleObject RobotObservedPossibleObject union property."
    msgbuffers.safety_check_tag('RobotObservedPossibleObject', self._tag, self.Tag.RobotObservedPossibleObject, self._tags_by_value)
    return self._data

  @RobotObservedPossibleObject.setter
  def RobotObservedPossibleObject(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.RobotObservedPossibleObject', value, Anki.Vector.ExternalInterface.RobotObservedPossibleObject)
    self._tag = self.Tag.RobotObservedPossibleObject

  @property
  def RobotObservedPet(self):
    "Anki.Vector.ExternalInterface.RobotObservedPet RobotObservedPet union property."
    msgbuffers.safety_check_tag('RobotObservedPet', self._tag, self.Tag.RobotObservedPet, self._tags_by_value)
    return self._data

  @RobotObservedPet.setter
  def RobotObservedPet(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.RobotObservedPet', value, Anki.Vector.ExternalInterface.RobotObservedPet)
    self._tag = self.Tag.RobotObservedPet

  @property
  def RobotObservedMotion(self):
    "Anki.Vector.ExternalInterface.RobotObservedMotion RobotObservedMotion union property."
    msgbuffers.safety_check_tag('RobotObservedMotion', self._tag, self.Tag.RobotObservedMotion, self._tags_by_value)
    return self._data

  @RobotObservedMotion.setter
  def RobotObservedMotion(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.RobotObservedMotion', value, Anki.Vector.ExternalInterface.RobotObservedMotion)
    self._tag = self.Tag.RobotObservedMotion

  @property
  def RobotObservedSalientPoint(self):
    "Anki.Vector.ExternalInterface.RobotObservedSalientPoint RobotObservedSalientPoint union property."
    msgbuffers.safety_check_tag('RobotObservedSalientPoint', self._tag, self.Tag.RobotObservedSalientPoint, self._tags_by_value)
    return self._data

  @RobotObservedSalientPoint.setter
  def RobotObservedSalientPoint(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.RobotObservedSalientPoint', value, Anki.Vector.ExternalInterface.RobotObservedSalientPoint)
    self._tag = self.Tag.RobotObservedSalientPoint

  @property
  def RobotObservedLaserPoint(self):
    "Anki.Vector.ExternalInterface.RobotObservedLaserPoint RobotObservedLaserPoint union property."
    msgbuffers.safety_check_tag('RobotObservedLaserPoint', self._tag, self.Tag.RobotObservedLaserPoint, self._tags_by_value)
    return self._data

  @RobotObservedLaserPoint.setter
  def RobotObservedLaserPoint(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.RobotObservedLaserPoint', value, Anki.Vector.ExternalInterface.RobotObservedLaserPoint)
    self._tag = self.Tag.RobotObservedLaserPoint

  @property
  def RobotObservedIllumination(self):
    "Anki.Vector.ExternalInterface.RobotObservedIllumination RobotObservedIllumination union property."
    msgbuffers.safety_check_tag('RobotObservedIllumination', self._tag, self.Tag.RobotObservedIllumination, self._tags_by_value)
    return self._data

  @RobotObservedIllumination.setter
  def RobotObservedIllumination(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.RobotObservedIllumination', value, Anki.Vector.ExternalInterface.RobotObservedIllumination)
    self._tag = self.Tag.RobotObservedIllumination

  @property
  def RobotDeletedFace(self):
    "Anki.Vector.ExternalInterface.RobotDeletedFace RobotDeletedFace union property."
    msgbuffers.safety_check_tag('RobotDeletedFace', self._tag, self.Tag.RobotDeletedFace, self._tags_by_value)
    return self._data

  @RobotDeletedFace.setter
  def RobotDeletedFace(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.RobotDeletedFace', value, Anki.Vector.ExternalInterface.RobotDeletedFace)
    self._tag = self.Tag.RobotDeletedFace

  @property
  def RobotDeletedLocatedObject(self):
    "Anki.Vector.ExternalInterface.RobotDeletedLocatedObject RobotDeletedLocatedObject union property."
    msgbuffers.safety_check_tag('RobotDeletedLocatedObject', self._tag, self.Tag.RobotDeletedLocatedObject, self._tags_by_value)
    return self._data

  @RobotDeletedLocatedObject.setter
  def RobotDeletedLocatedObject(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.RobotDeletedLocatedObject', value, Anki.Vector.ExternalInterface.RobotDeletedLocatedObject)
    self._tag = self.Tag.RobotDeletedLocatedObject

  @property
  def RobotDeletedAllCustomObjects(self):
    "Anki.Vector.ExternalInterface.RobotDeletedAllCustomObjects RobotDeletedAllCustomObjects union property."
    msgbuffers.safety_check_tag('RobotDeletedAllCustomObjects', self._tag, self.Tag.RobotDeletedAllCustomObjects, self._tags_by_value)
    return self._data

  @RobotDeletedAllCustomObjects.setter
  def RobotDeletedAllCustomObjects(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.RobotDeletedAllCustomObjects', value, Anki.Vector.ExternalInterface.RobotDeletedAllCustomObjects)
    self._tag = self.Tag.RobotDeletedAllCustomObjects

  @property
  def LocatedObjectStates(self):
    "Anki.Vector.ExternalInterface.LocatedObjectStates LocatedObjectStates union property."
    msgbuffers.safety_check_tag('LocatedObjectStates', self._tag, self.Tag.LocatedObjectStates, self._tags_by_value)
    return self._data

  @LocatedObjectStates.setter
  def LocatedObjectStates(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.LocatedObjectStates', value, Anki.Vector.ExternalInterface.LocatedObjectStates)
    self._tag = self.Tag.LocatedObjectStates

  @property
  def ConnectedObjectStates(self):
    "Anki.Vector.ExternalInterface.ConnectedObjectStates ConnectedObjectStates union property."
    msgbuffers.safety_check_tag('ConnectedObjectStates', self._tag, self.Tag.ConnectedObjectStates, self._tags_by_value)
    return self._data

  @ConnectedObjectStates.setter
  def ConnectedObjectStates(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.ConnectedObjectStates', value, Anki.Vector.ExternalInterface.ConnectedObjectStates)
    self._tag = self.Tag.ConnectedObjectStates

  @property
  def MeetVictorStarted(self):
    "Anki.Vector.ExternalInterface.MeetVictorStarted MeetVictorStarted union property."
    msgbuffers.safety_check_tag('MeetVictorStarted', self._tag, self.Tag.MeetVictorStarted, self._tags_by_value)
    return self._data

  @MeetVictorStarted.setter
  def MeetVictorStarted(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.MeetVictorStarted', value, Anki.Vector.ExternalInterface.MeetVictorStarted)
    self._tag = self.Tag.MeetVictorStarted

  @property
  def MeetVictorFaceScanStarted(self):
    "Anki.Vector.ExternalInterface.MeetVictorFaceScanStarted MeetVictorFaceScanStarted union property."
    msgbuffers.safety_check_tag('MeetVictorFaceScanStarted', self._tag, self.Tag.MeetVictorFaceScanStarted, self._tags_by_value)
    return self._data

  @MeetVictorFaceScanStarted.setter
  def MeetVictorFaceScanStarted(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.MeetVictorFaceScanStarted', value, Anki.Vector.ExternalInterface.MeetVictorFaceScanStarted)
    self._tag = self.Tag.MeetVictorFaceScanStarted

  @property
  def MeetVictorFaceScanComplete(self):
    "Anki.Vector.ExternalInterface.MeetVictorFaceScanComplete MeetVictorFaceScanComplete union property."
    msgbuffers.safety_check_tag('MeetVictorFaceScanComplete', self._tag, self.Tag.MeetVictorFaceScanComplete, self._tags_by_value)
    return self._data

  @MeetVictorFaceScanComplete.setter
  def MeetVictorFaceScanComplete(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.MeetVictorFaceScanComplete', value, Anki.Vector.ExternalInterface.MeetVictorFaceScanComplete)
    self._tag = self.Tag.MeetVictorFaceScanComplete

  @property
  def MeetVictorNameSaved(self):
    "Anki.Vector.ExternalInterface.MeetVictorNameSaved MeetVictorNameSaved union property."
    msgbuffers.safety_check_tag('MeetVictorNameSaved', self._tag, self.Tag.MeetVictorNameSaved, self._tags_by_value)
    return self._data

  @MeetVictorNameSaved.setter
  def MeetVictorNameSaved(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.MeetVictorNameSaved', value, Anki.Vector.ExternalInterface.MeetVictorNameSaved)
    self._tag = self.Tag.MeetVictorNameSaved

  @property
  def RobotErasedEnrolledFace(self):
    "Anki.Vector.ExternalInterface.RobotErasedEnrolledFace RobotErasedEnrolledFace union property."
    msgbuffers.safety_check_tag('RobotErasedEnrolledFace', self._tag, self.Tag.RobotErasedEnrolledFace, self._tags_by_value)
    return self._data

  @RobotErasedEnrolledFace.setter
  def RobotErasedEnrolledFace(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.RobotErasedEnrolledFace', value, Anki.Vector.ExternalInterface.RobotErasedEnrolledFace)
    self._tag = self.Tag.RobotErasedEnrolledFace

  @property
  def RobotErasedAllEnrolledFaces(self):
    "Anki.Vector.ExternalInterface.RobotErasedAllEnrolledFaces RobotErasedAllEnrolledFaces union property."
    msgbuffers.safety_check_tag('RobotErasedAllEnrolledFaces', self._tag, self.Tag.RobotErasedAllEnrolledFaces, self._tags_by_value)
    return self._data

  @RobotErasedAllEnrolledFaces.setter
  def RobotErasedAllEnrolledFaces(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.RobotErasedAllEnrolledFaces', value, Anki.Vector.ExternalInterface.RobotErasedAllEnrolledFaces)
    self._tag = self.Tag.RobotErasedAllEnrolledFaces

  @property
  def RobotCompletedFactoryDotTest(self):
    "Anki.Vector.ExternalInterface.RobotCompletedFactoryDotTest RobotCompletedFactoryDotTest union property."
    msgbuffers.safety_check_tag('RobotCompletedFactoryDotTest', self._tag, self.Tag.RobotCompletedFactoryDotTest, self._tags_by_value)
    return self._data

  @RobotCompletedFactoryDotTest.setter
  def RobotCompletedFactoryDotTest(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.RobotCompletedFactoryDotTest', value, Anki.Vector.ExternalInterface.RobotCompletedFactoryDotTest)
    self._tag = self.Tag.RobotCompletedFactoryDotTest

  @property
  def PlaypenBehaviorFailed(self):
    "Anki.Vector.ExternalInterface.PlaypenBehaviorFailed PlaypenBehaviorFailed union property."
    msgbuffers.safety_check_tag('PlaypenBehaviorFailed', self._tag, self.Tag.PlaypenBehaviorFailed, self._tags_by_value)
    return self._data

  @PlaypenBehaviorFailed.setter
  def PlaypenBehaviorFailed(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.PlaypenBehaviorFailed', value, Anki.Vector.ExternalInterface.PlaypenBehaviorFailed)
    self._tag = self.Tag.PlaypenBehaviorFailed

  @property
  def SelfTestBehaviorFailed(self):
    "Anki.Vector.ExternalInterface.SelfTestBehaviorFailed SelfTestBehaviorFailed union property."
    msgbuffers.safety_check_tag('SelfTestBehaviorFailed', self._tag, self.Tag.SelfTestBehaviorFailed, self._tags_by_value)
    return self._data

  @SelfTestBehaviorFailed.setter
  def SelfTestBehaviorFailed(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.SelfTestBehaviorFailed', value, Anki.Vector.ExternalInterface.SelfTestBehaviorFailed)
    self._tag = self.Tag.SelfTestBehaviorFailed

  @property
  def SelfTestEnd(self):
    "Anki.Vector.ExternalInterface.SelfTestEnd SelfTestEnd union property."
    msgbuffers.safety_check_tag('SelfTestEnd', self._tag, self.Tag.SelfTestEnd, self._tags_by_value)
    return self._data

  @SelfTestEnd.setter
  def SelfTestEnd(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.SelfTestEnd', value, Anki.Vector.ExternalInterface.SelfTestEnd)
    self._tag = self.Tag.SelfTestEnd

  @property
  def AnimationGroupAvailable(self):
    "Anki.Vector.ExternalInterface.AnimationGroupAvailable AnimationGroupAvailable union property."
    msgbuffers.safety_check_tag('AnimationGroupAvailable', self._tag, self.Tag.AnimationGroupAvailable, self._tags_by_value)
    return self._data

  @AnimationGroupAvailable.setter
  def AnimationGroupAvailable(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.AnimationGroupAvailable', value, Anki.Vector.ExternalInterface.AnimationGroupAvailable)
    self._tag = self.Tag.AnimationGroupAvailable

  @property
  def AnimationAborted(self):
    "Anki.Vector.ExternalInterface.AnimationAborted AnimationAborted union property."
    msgbuffers.safety_check_tag('AnimationAborted', self._tag, self.Tag.AnimationAborted, self._tags_by_value)
    return self._data

  @AnimationAborted.setter
  def AnimationAborted(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.AnimationAborted', value, Anki.Vector.ExternalInterface.AnimationAborted)
    self._tag = self.Tag.AnimationAborted

  @property
  def AnimationEvent(self):
    "Anki.Vector.ExternalInterface.AnimationEvent AnimationEvent union property."
    msgbuffers.safety_check_tag('AnimationEvent', self._tag, self.Tag.AnimationEvent, self._tags_by_value)
    return self._data

  @AnimationEvent.setter
  def AnimationEvent(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.AnimationEvent', value, Anki.Vector.ExternalInterface.AnimationEvent)
    self._tag = self.Tag.AnimationEvent

  @property
  def MoodState(self):
    "Anki.Vector.ExternalInterface.MoodState MoodState union property."
    msgbuffers.safety_check_tag('MoodState', self._tag, self.Tag.MoodState, self._tags_by_value)
    return self._data

  @MoodState.setter
  def MoodState(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.MoodState', value, Anki.Vector.ExternalInterface.MoodState)
    self._tag = self.Tag.MoodState

  @property
  def InitDebugConsoleVarMessage(self):
    "Anki.Vector.ExternalInterface.InitDebugConsoleVarMessage InitDebugConsoleVarMessage union property."
    msgbuffers.safety_check_tag('InitDebugConsoleVarMessage', self._tag, self.Tag.InitDebugConsoleVarMessage, self._tags_by_value)
    return self._data

  @InitDebugConsoleVarMessage.setter
  def InitDebugConsoleVarMessage(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.InitDebugConsoleVarMessage', value, Anki.Vector.ExternalInterface.InitDebugConsoleVarMessage)
    self._tag = self.Tag.InitDebugConsoleVarMessage

  @property
  def JsonDasLogMessage(self):
    "Anki.Vector.ExternalInterface.JsonDasLogMessage JsonDasLogMessage union property."
    msgbuffers.safety_check_tag('JsonDasLogMessage', self._tag, self.Tag.JsonDasLogMessage, self._tags_by_value)
    return self._data

  @JsonDasLogMessage.setter
  def JsonDasLogMessage(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.JsonDasLogMessage', value, Anki.Vector.ExternalInterface.JsonDasLogMessage)
    self._tag = self.Tag.JsonDasLogMessage

  @property
  def JsonDasLogAllSentMessage(self):
    "Anki.Vector.ExternalInterface.JsonDasLogAllSentMessage JsonDasLogAllSentMessage union property."
    msgbuffers.safety_check_tag('JsonDasLogAllSentMessage', self._tag, self.Tag.JsonDasLogAllSentMessage, self._tags_by_value)
    return self._data

  @JsonDasLogAllSentMessage.setter
  def JsonDasLogAllSentMessage(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.JsonDasLogAllSentMessage', value, Anki.Vector.ExternalInterface.JsonDasLogAllSentMessage)
    self._tag = self.Tag.JsonDasLogAllSentMessage

  @property
  def VerifyDebugConsoleFuncMessage(self):
    "Anki.Vector.ExternalInterface.VerifyDebugConsoleFuncMessage VerifyDebugConsoleFuncMessage union property."
    msgbuffers.safety_check_tag('VerifyDebugConsoleFuncMessage', self._tag, self.Tag.VerifyDebugConsoleFuncMessage, self._tags_by_value)
    return self._data

  @VerifyDebugConsoleFuncMessage.setter
  def VerifyDebugConsoleFuncMessage(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.VerifyDebugConsoleFuncMessage', value, Anki.Vector.ExternalInterface.VerifyDebugConsoleFuncMessage)
    self._tag = self.Tag.VerifyDebugConsoleFuncMessage

  @property
  def VerifyDebugConsoleVarMessage(self):
    "Anki.Vector.ExternalInterface.VerifyDebugConsoleVarMessage VerifyDebugConsoleVarMessage union property."
    msgbuffers.safety_check_tag('VerifyDebugConsoleVarMessage', self._tag, self.Tag.VerifyDebugConsoleVarMessage, self._tags_by_value)
    return self._data

  @VerifyDebugConsoleVarMessage.setter
  def VerifyDebugConsoleVarMessage(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.VerifyDebugConsoleVarMessage', value, Anki.Vector.ExternalInterface.VerifyDebugConsoleVarMessage)
    self._tag = self.Tag.VerifyDebugConsoleVarMessage

  @property
  def DebugAppendConsoleLogLine(self):
    "Anki.Vector.ExternalInterface.DebugAppendConsoleLogLine DebugAppendConsoleLogLine union property."
    msgbuffers.safety_check_tag('DebugAppendConsoleLogLine', self._tag, self.Tag.DebugAppendConsoleLogLine, self._tags_by_value)
    return self._data

  @DebugAppendConsoleLogLine.setter
  def DebugAppendConsoleLogLine(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.DebugAppendConsoleLogLine', value, Anki.Vector.ExternalInterface.DebugAppendConsoleLogLine)
    self._tag = self.Tag.DebugAppendConsoleLogLine

  @property
  def EngineErrorCodeMessage(self):
    "Anki.Vector.ExternalInterface.EngineErrorCodeMessage EngineErrorCodeMessage union property."
    msgbuffers.safety_check_tag('EngineErrorCodeMessage', self._tag, self.Tag.EngineErrorCodeMessage, self._tags_by_value)
    return self._data

  @EngineErrorCodeMessage.setter
  def EngineErrorCodeMessage(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.EngineErrorCodeMessage', value, Anki.Vector.ExternalInterface.EngineErrorCodeMessage)
    self._tag = self.Tag.EngineErrorCodeMessage

  @property
  def BehaviorTransition(self):
    "Anki.Vector.ExternalInterface.BehaviorTransition BehaviorTransition union property."
    msgbuffers.safety_check_tag('BehaviorTransition', self._tag, self.Tag.BehaviorTransition, self._tags_by_value)
    return self._data

  @BehaviorTransition.setter
  def BehaviorTransition(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.BehaviorTransition', value, Anki.Vector.ExternalInterface.BehaviorTransition)
    self._tag = self.Tag.BehaviorTransition

  @property
  def OnboardingState(self):
    "Anki.Vector.ExternalInterface.OnboardingState OnboardingState union property."
    msgbuffers.safety_check_tag('OnboardingState', self._tag, self.Tag.OnboardingState, self._tags_by_value)
    return self._data

  @OnboardingState.setter
  def OnboardingState(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.OnboardingState', value, Anki.Vector.ExternalInterface.OnboardingState)
    self._tag = self.Tag.OnboardingState

  @property
  def AudioBehaviorStackUpdate(self):
    "Anki.Vector.ExternalInterface.AudioBehaviorStackUpdate AudioBehaviorStackUpdate union property."
    msgbuffers.safety_check_tag('AudioBehaviorStackUpdate', self._tag, self.Tag.AudioBehaviorStackUpdate, self._tags_by_value)
    return self._data

  @AudioBehaviorStackUpdate.setter
  def AudioBehaviorStackUpdate(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.AudioBehaviorStackUpdate', value, Anki.Vector.ExternalInterface.AudioBehaviorStackUpdate)
    self._tag = self.Tag.AudioBehaviorStackUpdate

  @property
  def RequiredEmptyMessage(self):
    "Anki.Vector.ExternalInterface.RequiredEmptyMessage RequiredEmptyMessage union property."
    msgbuffers.safety_check_tag('RequiredEmptyMessage', self._tag, self.Tag.RequiredEmptyMessage, self._tags_by_value)
    return self._data

  @RequiredEmptyMessage.setter
  def RequiredEmptyMessage(self, value):
    self._data = msgbuffers.validate_object(
      'MessageEngineToGame.RequiredEmptyMessage', value, Anki.Vector.ExternalInterface.RequiredEmptyMessage)
    self._tag = self.Tag.RequiredEmptyMessage

  def __init__(self, **kwargs):
    if not kwargs:
      self._tag = None
      self._data = None

    elif len(kwargs) == 1:
      key, value = next(iter(kwargs.items()))
      if key not in self._tags_by_name:
        raise TypeError("'{argument}' is an invalid keyword argument for this method.".format(argument=key))
      # calls the correct property
      setattr(self, key, value)

    else:
      raise TypeError('This method only accepts up to one keyword argument.')

  @classmethod
  def unpack(cls, buffer):
    "Reads a new MessageEngineToGame from the given buffer."
    reader = msgbuffers.BinaryReader(buffer)
    value = cls.unpack_from(reader)
    if reader.tell() != len(reader):
      raise msgbuffers.ReadError(
        ('MessageEngineToGame.unpack received a buffer of length {length}, ' +
        'but only {position} bytes were read.').format(
        length=len(reader), position=reader.tell()))
    return value

  @classmethod
  def unpack_from(cls, reader):
    "Reads a new MessageEngineToGame from the given BinaryReader."
    tag = reader.read('B')
    if tag in cls._tags_by_value:
      value = cls()
      setattr(value, cls._tags_by_value[tag], cls._tag_unpack_methods[tag](reader))
      return value
    else:
      raise ValueError('MessageEngineToGame attempted to unpack unknown tag {tag}.'.format(tag=tag))

  def pack(self):
    "Writes the current MessageEngineToGame, returning bytes."
    writer = msgbuffers.BinaryWriter()
    self.pack_to(writer)
    return writer.dumps()

  def pack_to(self, writer):
    "Writes the current SampleUnion to the given BinaryWriter."
    if self._tag in self._tags_by_value:
      writer.write(self._tag, 'B')
      self._tag_pack_methods[self._tag](writer, self._data)
    else:
      raise ValueError('Cannot pack an empty MessageEngineToGame.')

  def clear(self):
    self._tag = None
    self._data = None

  @classmethod
  def typeByTag(cls, tag):
    return cls._type_by_tag_value[tag]()

  def __eq__(self, other):
    if type(self) is type(other):
      return self._tag == other._tag and self._data == other._data
    else:
      return NotImplemented

  def __ne__(self, other):
    if type(self) is type(other):
      return not self.__eq__(other)
    else:
      return NotImplemented

  def __len__(self):
    if 0 <= self._tag < 102:
      return self._tag_size_methods[self._tag](self._data)
    else:
      return 1

  def __str__(self):
    if 0 <= self._tag < 102:
      return '{type}({name}={value})'.format(
        type=type(self).__name__,
        name=self.tag_name,
        value=self._data)
    else:
      return '{type}()'.format(
        type=type(self).__name__)

  def __repr__(self):
    if 0 <= self._tag < 102:
      return '{type}({name}={value})'.format(
        type=type(self).__name__,
        name=self.tag_name,
        value=repr(self._data))
    else:
      return '{type}()'.format(
        type=type(self).__name__)

  _tags_by_name = dict(
    UiDeviceConnected=0,
    RobotCompletedAction=1,
    Event=2,
    EnrolledNamesResponse=5,
    RobotObservedFace=6,
    RobotChangedObservedFaceID=7,
    AnimationAvailable=8,
    EndOfMessage=9,
    ObjectConnectionState=10,
    ObjectMoved=11,
    ObjectStoppedMoving=12,
    ObjectUpAxisChanged=13,
    ObjectTapped=14,
    ObjectAccel=15,
    RobotObservedObject=16,
    ObjectAvailable=17,
    RobotDeletedFixedCustomObjects=18,
    RobotDeletedCustomMarkerObjects=19,
    CreatedFixedCustomObject=20,
    DefinedCustomObject=21,
    MemoryMapMessageBegin=22,
    MemoryMapMessage=23,
    MemoryMapMessageEnd=24,
    AudioCallbackDuration=25,
    AudioCallbackMarker=26,
    AudioCallbackComplete=27,
    AudioCallbackError=28,
    AdvertisementRegistrationMsg=29,
    AdvertisementMsg=30,
    Ping=31,
    CliffEvent=32,
    PotentialCliff=33,
    SetCliffDetectThresholds=34,
    SetWhiteDetectThresholds=35,
    FactoryTestResultEntry=36,
    ImageChunk=37,
    CameraCalibration=38,
    IMURequest=39,
    IMUTemperature=40,
    LoadedKnownFace=41,
    RobotRenamedEnrolledFace=42,
    MotorCalibration=43,
    MotorAutoEnabled=44,
    CarryStateUpdate=45,
    EnterPairing=46,
    ExitPairing=47,
    WifiScanRequest=48,
    WifiConnectRequest=49,
    HasBleKeysRequest=50,
    ActivateExperimentRequest=51,
    ActivateExperimentResponse=52,
    UiDeviceAvailable=53,
    RobotConnectionResponse=54,
    GoingToSleep=55,
    CurrentCameraParams=56,
    PerRobotSettings=57,
    RobotState=58,
    RobotDelocalized=59,
    RobotStopped=60,
    RobotOffTreadsStateChanged=61,
    RobotOnChargerPlatformEvent=62,
    ChargerEvent=63,
    TouchButtonEvent=64,
    UnexpectedMovement=65,
    RobotFallingEvent=66,
    RobotProcessedImage=67,
    RobotObservedPossibleObject=68,
    RobotObservedPet=69,
    RobotObservedMotion=70,
    RobotObservedSalientPoint=71,
    RobotObservedLaserPoint=72,
    RobotObservedIllumination=73,
    RobotDeletedFace=74,
    RobotDeletedLocatedObject=75,
    RobotDeletedAllCustomObjects=76,
    LocatedObjectStates=77,
    ConnectedObjectStates=78,
    MeetVictorStarted=79,
    MeetVictorFaceScanStarted=80,
    MeetVictorFaceScanComplete=81,
    MeetVictorNameSaved=82,
    RobotErasedEnrolledFace=83,
    RobotErasedAllEnrolledFaces=84,
    RobotCompletedFactoryDotTest=85,
    PlaypenBehaviorFailed=86,
    SelfTestBehaviorFailed=87,
    SelfTestEnd=88,
    AnimationGroupAvailable=89,
    AnimationAborted=90,
    AnimationEvent=91,
    MoodState=92,
    InitDebugConsoleVarMessage=93,
    JsonDasLogMessage=94,
    JsonDasLogAllSentMessage=95,
    VerifyDebugConsoleFuncMessage=96,
    VerifyDebugConsoleVarMessage=97,
    DebugAppendConsoleLogLine=98,
    EngineErrorCodeMessage=99,
    BehaviorTransition=100,
    OnboardingState=101,
    AudioBehaviorStackUpdate=102,
    RequiredEmptyMessage=103,
  )

  _tags_by_value = dict()
  _tags_by_value[0] = 'UiDeviceConnected'
  _tags_by_value[1] = 'RobotCompletedAction'
  _tags_by_value[2] = 'Event'
  _tags_by_value[5] = 'EnrolledNamesResponse'
  _tags_by_value[6] = 'RobotObservedFace'
  _tags_by_value[7] = 'RobotChangedObservedFaceID'
  _tags_by_value[8] = 'AnimationAvailable'
  _tags_by_value[9] = 'EndOfMessage'
  _tags_by_value[10] = 'ObjectConnectionState'
  _tags_by_value[11] = 'ObjectMoved'
  _tags_by_value[12] = 'ObjectStoppedMoving'
  _tags_by_value[13] = 'ObjectUpAxisChanged'
  _tags_by_value[14] = 'ObjectTapped'
  _tags_by_value[15] = 'ObjectAccel'
  _tags_by_value[16] = 'RobotObservedObject'
  _tags_by_value[17] = 'ObjectAvailable'
  _tags_by_value[18] = 'RobotDeletedFixedCustomObjects'
  _tags_by_value[19] = 'RobotDeletedCustomMarkerObjects'
  _tags_by_value[20] = 'CreatedFixedCustomObject'
  _tags_by_value[21] = 'DefinedCustomObject'
  _tags_by_value[22] = 'MemoryMapMessageBegin'
  _tags_by_value[23] = 'MemoryMapMessage'
  _tags_by_value[24] = 'MemoryMapMessageEnd'
  _tags_by_value[25] = 'AudioCallbackDuration'
  _tags_by_value[26] = 'AudioCallbackMarker'
  _tags_by_value[27] = 'AudioCallbackComplete'
  _tags_by_value[28] = 'AudioCallbackError'
  _tags_by_value[29] = 'AdvertisementRegistrationMsg'
  _tags_by_value[30] = 'AdvertisementMsg'
  _tags_by_value[31] = 'Ping'
  _tags_by_value[32] = 'CliffEvent'
  _tags_by_value[33] = 'PotentialCliff'
  _tags_by_value[34] = 'SetCliffDetectThresholds'
  _tags_by_value[35] = 'SetWhiteDetectThresholds'
  _tags_by_value[36] = 'FactoryTestResultEntry'
  _tags_by_value[37] = 'ImageChunk'
  _tags_by_value[38] = 'CameraCalibration'
  _tags_by_value[39] = 'IMURequest'
  _tags_by_value[40] = 'IMUTemperature'
  _tags_by_value[41] = 'LoadedKnownFace'
  _tags_by_value[42] = 'RobotRenamedEnrolledFace'
  _tags_by_value[43] = 'MotorCalibration'
  _tags_by_value[44] = 'MotorAutoEnabled'
  _tags_by_value[45] = 'CarryStateUpdate'
  _tags_by_value[46] = 'EnterPairing'
  _tags_by_value[47] = 'ExitPairing'
  _tags_by_value[48] = 'WifiScanRequest'
  _tags_by_value[49] = 'WifiConnectRequest'
  _tags_by_value[50] = 'HasBleKeysRequest'
  _tags_by_value[51] = 'ActivateExperimentRequest'
  _tags_by_value[52] = 'ActivateExperimentResponse'
  _tags_by_value[53] = 'UiDeviceAvailable'
  _tags_by_value[54] = 'RobotConnectionResponse'
  _tags_by_value[55] = 'GoingToSleep'
  _tags_by_value[56] = 'CurrentCameraParams'
  _tags_by_value[57] = 'PerRobotSettings'
  _tags_by_value[58] = 'RobotState'
  _tags_by_value[59] = 'RobotDelocalized'
  _tags_by_value[60] = 'RobotStopped'
  _tags_by_value[61] = 'RobotOffTreadsStateChanged'
  _tags_by_value[62] = 'RobotOnChargerPlatformEvent'
  _tags_by_value[63] = 'ChargerEvent'
  _tags_by_value[64] = 'TouchButtonEvent'
  _tags_by_value[65] = 'UnexpectedMovement'
  _tags_by_value[66] = 'RobotFallingEvent'
  _tags_by_value[67] = 'RobotProcessedImage'
  _tags_by_value[68] = 'RobotObservedPossibleObject'
  _tags_by_value[69] = 'RobotObservedPet'
  _tags_by_value[70] = 'RobotObservedMotion'
  _tags_by_value[71] = 'RobotObservedSalientPoint'
  _tags_by_value[72] = 'RobotObservedLaserPoint'
  _tags_by_value[73] = 'RobotObservedIllumination'
  _tags_by_value[74] = 'RobotDeletedFace'
  _tags_by_value[75] = 'RobotDeletedLocatedObject'
  _tags_by_value[76] = 'RobotDeletedAllCustomObjects'
  _tags_by_value[77] = 'LocatedObjectStates'
  _tags_by_value[78] = 'ConnectedObjectStates'
  _tags_by_value[79] = 'MeetVictorStarted'
  _tags_by_value[80] = 'MeetVictorFaceScanStarted'
  _tags_by_value[81] = 'MeetVictorFaceScanComplete'
  _tags_by_value[82] = 'MeetVictorNameSaved'
  _tags_by_value[83] = 'RobotErasedEnrolledFace'
  _tags_by_value[84] = 'RobotErasedAllEnrolledFaces'
  _tags_by_value[85] = 'RobotCompletedFactoryDotTest'
  _tags_by_value[86] = 'PlaypenBehaviorFailed'
  _tags_by_value[87] = 'SelfTestBehaviorFailed'
  _tags_by_value[88] = 'SelfTestEnd'
  _tags_by_value[89] = 'AnimationGroupAvailable'
  _tags_by_value[90] = 'AnimationAborted'
  _tags_by_value[91] = 'AnimationEvent'
  _tags_by_value[92] = 'MoodState'
  _tags_by_value[93] = 'InitDebugConsoleVarMessage'
  _tags_by_value[94] = 'JsonDasLogMessage'
  _tags_by_value[95] = 'JsonDasLogAllSentMessage'
  _tags_by_value[96] = 'VerifyDebugConsoleFuncMessage'
  _tags_by_value[97] = 'VerifyDebugConsoleVarMessage'
  _tags_by_value[98] = 'DebugAppendConsoleLogLine'
  _tags_by_value[99] = 'EngineErrorCodeMessage'
  _tags_by_value[100] = 'BehaviorTransition'
  _tags_by_value[101] = 'OnboardingState'
  _tags_by_value[102] = 'AudioBehaviorStackUpdate'
  _tags_by_value[103] = 'RequiredEmptyMessage'
  

  _tag_unpack_methods = dict()
  _tag_unpack_methods[0] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.UiDeviceConnected.unpack_from)
  _tag_unpack_methods[1] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RobotCompletedAction.unpack_from)
  _tag_unpack_methods[2] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.Event.unpack_from)
  _tag_unpack_methods[5] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.EnrolledNamesResponse.unpack_from)
  _tag_unpack_methods[6] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RobotObservedFace.unpack_from)
  _tag_unpack_methods[7] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RobotChangedObservedFaceID.unpack_from)
  _tag_unpack_methods[8] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.AnimationAvailable.unpack_from)
  _tag_unpack_methods[9] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.EndOfMessage.unpack_from)
  _tag_unpack_methods[10] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.ObjectConnectionState.unpack_from)
  _tag_unpack_methods[11] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.ObjectMoved.unpack_from)
  _tag_unpack_methods[12] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.ObjectStoppedMoving.unpack_from)
  _tag_unpack_methods[13] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.ObjectUpAxisChanged.unpack_from)
  _tag_unpack_methods[14] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.ObjectTapped.unpack_from)
  _tag_unpack_methods[15] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.ObjectAccel.unpack_from)
  _tag_unpack_methods[16] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RobotObservedObject.unpack_from)
  _tag_unpack_methods[17] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.ObjectAvailable.unpack_from)
  _tag_unpack_methods[18] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RobotDeletedFixedCustomObjects.unpack_from)
  _tag_unpack_methods[19] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RobotDeletedCustomMarkerObjects.unpack_from)
  _tag_unpack_methods[20] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.CreatedFixedCustomObject.unpack_from)
  _tag_unpack_methods[21] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.DefinedCustomObject.unpack_from)
  _tag_unpack_methods[22] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.MemoryMapMessageBegin.unpack_from)
  _tag_unpack_methods[23] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.MemoryMapMessage.unpack_from)
  _tag_unpack_methods[24] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.MemoryMapMessageEnd.unpack_from)
  _tag_unpack_methods[25] = lambda reader: reader.read_object(Anki.AudioEngine.Multiplexer.AudioCallbackDuration.unpack_from)
  _tag_unpack_methods[26] = lambda reader: reader.read_object(Anki.AudioEngine.Multiplexer.AudioCallbackMarker.unpack_from)
  _tag_unpack_methods[27] = lambda reader: reader.read_object(Anki.AudioEngine.Multiplexer.AudioCallbackComplete.unpack_from)
  _tag_unpack_methods[28] = lambda reader: reader.read_object(Anki.AudioEngine.Multiplexer.AudioCallbackError.unpack_from)
  _tag_unpack_methods[29] = lambda reader: reader.read_object(Anki.Vector.AdvertisementRegistrationMsg.unpack_from)
  _tag_unpack_methods[30] = lambda reader: reader.read_object(Anki.Vector.AdvertisementMsg.unpack_from)
  _tag_unpack_methods[31] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.Ping.unpack_from)
  _tag_unpack_methods[32] = lambda reader: reader.read_object(Anki.Vector.CliffEvent.unpack_from)
  _tag_unpack_methods[33] = lambda reader: reader.read_object(Anki.Vector.PotentialCliff.unpack_from)
  _tag_unpack_methods[34] = lambda reader: reader.read_object(Anki.Vector.SetCliffDetectThresholds.unpack_from)
  _tag_unpack_methods[35] = lambda reader: reader.read_object(Anki.Vector.SetWhiteDetectThresholds.unpack_from)
  _tag_unpack_methods[36] = lambda reader: reader.read_object(Anki.Vector.FactoryTestResultEntry.unpack_from)
  _tag_unpack_methods[37] = lambda reader: reader.read_object(Anki.Vector.ImageChunk.unpack_from)
  _tag_unpack_methods[38] = lambda reader: reader.read_object(Anki.Vector.CameraCalibration.unpack_from)
  _tag_unpack_methods[39] = lambda reader: reader.read_object(Anki.Vector.IMURequest.unpack_from)
  _tag_unpack_methods[40] = lambda reader: reader.read_object(Anki.Vector.RobotInterface.IMUTemperature.unpack_from)
  _tag_unpack_methods[41] = lambda reader: reader.read_object(Anki.Vision.LoadedKnownFace.unpack_from)
  _tag_unpack_methods[42] = lambda reader: reader.read_object(Anki.Vision.RobotRenamedEnrolledFace.unpack_from)
  _tag_unpack_methods[43] = lambda reader: reader.read_object(Anki.Vector.MotorCalibration.unpack_from)
  _tag_unpack_methods[44] = lambda reader: reader.read_object(Anki.Vector.MotorAutoEnabled.unpack_from)
  _tag_unpack_methods[45] = lambda reader: reader.read_object(Anki.Vector.CarryStateUpdate.unpack_from)
  _tag_unpack_methods[46] = lambda reader: reader.read_object(Anki.Vector.SwitchboardInterface.EnterPairing.unpack_from)
  _tag_unpack_methods[47] = lambda reader: reader.read_object(Anki.Vector.SwitchboardInterface.ExitPairing.unpack_from)
  _tag_unpack_methods[48] = lambda reader: reader.read_object(Anki.Vector.SwitchboardInterface.WifiScanRequest.unpack_from)
  _tag_unpack_methods[49] = lambda reader: reader.read_object(Anki.Vector.SwitchboardInterface.WifiConnectRequest.unpack_from)
  _tag_unpack_methods[50] = lambda reader: reader.read_object(Anki.Vector.SwitchboardInterface.HasBleKeysRequest.unpack_from)
  _tag_unpack_methods[51] = lambda reader: reader.read_object(Anki.Util.AnkiLab.ActivateExperimentRequest.unpack_from)
  _tag_unpack_methods[52] = lambda reader: reader.read_object(Anki.Util.AnkiLab.ActivateExperimentResponse.unpack_from)
  _tag_unpack_methods[53] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.UiDeviceAvailable.unpack_from)
  _tag_unpack_methods[54] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RobotConnectionResponse.unpack_from)
  _tag_unpack_methods[55] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.GoingToSleep.unpack_from)
  _tag_unpack_methods[56] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.CurrentCameraParams.unpack_from)
  _tag_unpack_methods[57] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.PerRobotSettings.unpack_from)
  _tag_unpack_methods[58] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RobotState.unpack_from)
  _tag_unpack_methods[59] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RobotDelocalized.unpack_from)
  _tag_unpack_methods[60] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RobotStopped.unpack_from)
  _tag_unpack_methods[61] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RobotOffTreadsStateChanged.unpack_from)
  _tag_unpack_methods[62] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RobotOnChargerPlatformEvent.unpack_from)
  _tag_unpack_methods[63] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.ChargerEvent.unpack_from)
  _tag_unpack_methods[64] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.TouchButtonEvent.unpack_from)
  _tag_unpack_methods[65] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.UnexpectedMovement.unpack_from)
  _tag_unpack_methods[66] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RobotFallingEvent.unpack_from)
  _tag_unpack_methods[67] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RobotProcessedImage.unpack_from)
  _tag_unpack_methods[68] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RobotObservedPossibleObject.unpack_from)
  _tag_unpack_methods[69] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RobotObservedPet.unpack_from)
  _tag_unpack_methods[70] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RobotObservedMotion.unpack_from)
  _tag_unpack_methods[71] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RobotObservedSalientPoint.unpack_from)
  _tag_unpack_methods[72] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RobotObservedLaserPoint.unpack_from)
  _tag_unpack_methods[73] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RobotObservedIllumination.unpack_from)
  _tag_unpack_methods[74] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RobotDeletedFace.unpack_from)
  _tag_unpack_methods[75] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RobotDeletedLocatedObject.unpack_from)
  _tag_unpack_methods[76] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RobotDeletedAllCustomObjects.unpack_from)
  _tag_unpack_methods[77] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.LocatedObjectStates.unpack_from)
  _tag_unpack_methods[78] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.ConnectedObjectStates.unpack_from)
  _tag_unpack_methods[79] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.MeetVictorStarted.unpack_from)
  _tag_unpack_methods[80] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.MeetVictorFaceScanStarted.unpack_from)
  _tag_unpack_methods[81] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.MeetVictorFaceScanComplete.unpack_from)
  _tag_unpack_methods[82] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.MeetVictorNameSaved.unpack_from)
  _tag_unpack_methods[83] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RobotErasedEnrolledFace.unpack_from)
  _tag_unpack_methods[84] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RobotErasedAllEnrolledFaces.unpack_from)
  _tag_unpack_methods[85] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RobotCompletedFactoryDotTest.unpack_from)
  _tag_unpack_methods[86] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.PlaypenBehaviorFailed.unpack_from)
  _tag_unpack_methods[87] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SelfTestBehaviorFailed.unpack_from)
  _tag_unpack_methods[88] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.SelfTestEnd.unpack_from)
  _tag_unpack_methods[89] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.AnimationGroupAvailable.unpack_from)
  _tag_unpack_methods[90] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.AnimationAborted.unpack_from)
  _tag_unpack_methods[91] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.AnimationEvent.unpack_from)
  _tag_unpack_methods[92] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.MoodState.unpack_from)
  _tag_unpack_methods[93] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.InitDebugConsoleVarMessage.unpack_from)
  _tag_unpack_methods[94] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.JsonDasLogMessage.unpack_from)
  _tag_unpack_methods[95] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.JsonDasLogAllSentMessage.unpack_from)
  _tag_unpack_methods[96] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.VerifyDebugConsoleFuncMessage.unpack_from)
  _tag_unpack_methods[97] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.VerifyDebugConsoleVarMessage.unpack_from)
  _tag_unpack_methods[98] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.DebugAppendConsoleLogLine.unpack_from)
  _tag_unpack_methods[99] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.EngineErrorCodeMessage.unpack_from)
  _tag_unpack_methods[100] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.BehaviorTransition.unpack_from)
  _tag_unpack_methods[101] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.OnboardingState.unpack_from)
  _tag_unpack_methods[102] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.AudioBehaviorStackUpdate.unpack_from)
  _tag_unpack_methods[103] = lambda reader: reader.read_object(Anki.Vector.ExternalInterface.RequiredEmptyMessage.unpack_from)
  

  _tag_pack_methods = dict()
  _tag_pack_methods[0] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[1] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[2] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[5] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[6] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[7] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[8] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[9] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[10] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[11] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[12] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[13] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[14] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[15] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[16] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[17] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[18] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[19] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[20] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[21] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[22] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[23] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[24] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[25] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[26] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[27] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[28] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[29] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[30] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[31] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[32] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[33] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[34] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[35] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[36] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[37] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[38] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[39] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[40] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[41] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[42] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[43] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[44] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[45] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[46] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[47] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[48] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[49] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[50] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[51] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[52] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[53] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[54] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[55] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[56] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[57] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[58] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[59] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[60] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[61] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[62] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[63] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[64] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[65] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[66] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[67] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[68] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[69] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[70] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[71] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[72] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[73] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[74] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[75] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[76] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[77] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[78] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[79] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[80] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[81] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[82] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[83] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[84] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[85] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[86] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[87] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[88] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[89] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[90] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[91] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[92] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[93] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[94] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[95] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[96] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[97] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[98] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[99] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[100] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[101] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[102] = lambda writer, value: writer.write_object(value)
  _tag_pack_methods[103] = lambda writer, value: writer.write_object(value)
  

  _tag_size_methods = dict()
  _tag_size_methods[0] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[1] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[2] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[5] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[6] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[7] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[8] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[9] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[10] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[11] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[12] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[13] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[14] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[15] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[16] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[17] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[18] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[19] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[20] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[21] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[22] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[23] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[24] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[25] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[26] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[27] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[28] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[29] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[30] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[31] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[32] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[33] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[34] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[35] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[36] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[37] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[38] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[39] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[40] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[41] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[42] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[43] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[44] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[45] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[46] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[47] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[48] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[49] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[50] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[51] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[52] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[53] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[54] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[55] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[56] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[57] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[58] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[59] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[60] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[61] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[62] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[63] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[64] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[65] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[66] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[67] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[68] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[69] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[70] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[71] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[72] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[73] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[74] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[75] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[76] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[77] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[78] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[79] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[80] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[81] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[82] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[83] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[84] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[85] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[86] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[87] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[88] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[89] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[90] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[91] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[92] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[93] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[94] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[95] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[96] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[97] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[98] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[99] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[100] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[101] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[102] = lambda value: msgbuffers.size_object(value)
  _tag_size_methods[103] = lambda value: msgbuffers.size_object(value)
  

  _type_by_tag_value = dict()
  _type_by_tag_value[0] = lambda : Anki.Vector.ExternalInterface.UiDeviceConnected
  _type_by_tag_value[1] = lambda : Anki.Vector.ExternalInterface.RobotCompletedAction
  _type_by_tag_value[2] = lambda : Anki.Vector.ExternalInterface.Event
  _type_by_tag_value[5] = lambda : Anki.Vector.ExternalInterface.EnrolledNamesResponse
  _type_by_tag_value[6] = lambda : Anki.Vector.ExternalInterface.RobotObservedFace
  _type_by_tag_value[7] = lambda : Anki.Vector.ExternalInterface.RobotChangedObservedFaceID
  _type_by_tag_value[8] = lambda : Anki.Vector.ExternalInterface.AnimationAvailable
  _type_by_tag_value[9] = lambda : Anki.Vector.ExternalInterface.EndOfMessage
  _type_by_tag_value[10] = lambda : Anki.Vector.ExternalInterface.ObjectConnectionState
  _type_by_tag_value[11] = lambda : Anki.Vector.ExternalInterface.ObjectMoved
  _type_by_tag_value[12] = lambda : Anki.Vector.ExternalInterface.ObjectStoppedMoving
  _type_by_tag_value[13] = lambda : Anki.Vector.ExternalInterface.ObjectUpAxisChanged
  _type_by_tag_value[14] = lambda : Anki.Vector.ExternalInterface.ObjectTapped
  _type_by_tag_value[15] = lambda : Anki.Vector.ExternalInterface.ObjectAccel
  _type_by_tag_value[16] = lambda : Anki.Vector.ExternalInterface.RobotObservedObject
  _type_by_tag_value[17] = lambda : Anki.Vector.ExternalInterface.ObjectAvailable
  _type_by_tag_value[18] = lambda : Anki.Vector.ExternalInterface.RobotDeletedFixedCustomObjects
  _type_by_tag_value[19] = lambda : Anki.Vector.ExternalInterface.RobotDeletedCustomMarkerObjects
  _type_by_tag_value[20] = lambda : Anki.Vector.ExternalInterface.CreatedFixedCustomObject
  _type_by_tag_value[21] = lambda : Anki.Vector.ExternalInterface.DefinedCustomObject
  _type_by_tag_value[22] = lambda : Anki.Vector.ExternalInterface.MemoryMapMessageBegin
  _type_by_tag_value[23] = lambda : Anki.Vector.ExternalInterface.MemoryMapMessage
  _type_by_tag_value[24] = lambda : Anki.Vector.ExternalInterface.MemoryMapMessageEnd
  _type_by_tag_value[25] = lambda : Anki.AudioEngine.Multiplexer.AudioCallbackDuration
  _type_by_tag_value[26] = lambda : Anki.AudioEngine.Multiplexer.AudioCallbackMarker
  _type_by_tag_value[27] = lambda : Anki.AudioEngine.Multiplexer.AudioCallbackComplete
  _type_by_tag_value[28] = lambda : Anki.AudioEngine.Multiplexer.AudioCallbackError
  _type_by_tag_value[29] = lambda : Anki.Vector.AdvertisementRegistrationMsg
  _type_by_tag_value[30] = lambda : Anki.Vector.AdvertisementMsg
  _type_by_tag_value[31] = lambda : Anki.Vector.ExternalInterface.Ping
  _type_by_tag_value[32] = lambda : Anki.Vector.CliffEvent
  _type_by_tag_value[33] = lambda : Anki.Vector.PotentialCliff
  _type_by_tag_value[34] = lambda : Anki.Vector.SetCliffDetectThresholds
  _type_by_tag_value[35] = lambda : Anki.Vector.SetWhiteDetectThresholds
  _type_by_tag_value[36] = lambda : Anki.Vector.FactoryTestResultEntry
  _type_by_tag_value[37] = lambda : Anki.Vector.ImageChunk
  _type_by_tag_value[38] = lambda : Anki.Vector.CameraCalibration
  _type_by_tag_value[39] = lambda : Anki.Vector.IMURequest
  _type_by_tag_value[40] = lambda : Anki.Vector.RobotInterface.IMUTemperature
  _type_by_tag_value[41] = lambda : Anki.Vision.LoadedKnownFace
  _type_by_tag_value[42] = lambda : Anki.Vision.RobotRenamedEnrolledFace
  _type_by_tag_value[43] = lambda : Anki.Vector.MotorCalibration
  _type_by_tag_value[44] = lambda : Anki.Vector.MotorAutoEnabled
  _type_by_tag_value[45] = lambda : Anki.Vector.CarryStateUpdate
  _type_by_tag_value[46] = lambda : Anki.Vector.SwitchboardInterface.EnterPairing
  _type_by_tag_value[47] = lambda : Anki.Vector.SwitchboardInterface.ExitPairing
  _type_by_tag_value[48] = lambda : Anki.Vector.SwitchboardInterface.WifiScanRequest
  _type_by_tag_value[49] = lambda : Anki.Vector.SwitchboardInterface.WifiConnectRequest
  _type_by_tag_value[50] = lambda : Anki.Vector.SwitchboardInterface.HasBleKeysRequest
  _type_by_tag_value[51] = lambda : Anki.Util.AnkiLab.ActivateExperimentRequest
  _type_by_tag_value[52] = lambda : Anki.Util.AnkiLab.ActivateExperimentResponse
  _type_by_tag_value[53] = lambda : Anki.Vector.ExternalInterface.UiDeviceAvailable
  _type_by_tag_value[54] = lambda : Anki.Vector.ExternalInterface.RobotConnectionResponse
  _type_by_tag_value[55] = lambda : Anki.Vector.ExternalInterface.GoingToSleep
  _type_by_tag_value[56] = lambda : Anki.Vector.ExternalInterface.CurrentCameraParams
  _type_by_tag_value[57] = lambda : Anki.Vector.ExternalInterface.PerRobotSettings
  _type_by_tag_value[58] = lambda : Anki.Vector.ExternalInterface.RobotState
  _type_by_tag_value[59] = lambda : Anki.Vector.ExternalInterface.RobotDelocalized
  _type_by_tag_value[60] = lambda : Anki.Vector.ExternalInterface.RobotStopped
  _type_by_tag_value[61] = lambda : Anki.Vector.ExternalInterface.RobotOffTreadsStateChanged
  _type_by_tag_value[62] = lambda : Anki.Vector.ExternalInterface.RobotOnChargerPlatformEvent
  _type_by_tag_value[63] = lambda : Anki.Vector.ExternalInterface.ChargerEvent
  _type_by_tag_value[64] = lambda : Anki.Vector.ExternalInterface.TouchButtonEvent
  _type_by_tag_value[65] = lambda : Anki.Vector.ExternalInterface.UnexpectedMovement
  _type_by_tag_value[66] = lambda : Anki.Vector.ExternalInterface.RobotFallingEvent
  _type_by_tag_value[67] = lambda : Anki.Vector.ExternalInterface.RobotProcessedImage
  _type_by_tag_value[68] = lambda : Anki.Vector.ExternalInterface.RobotObservedPossibleObject
  _type_by_tag_value[69] = lambda : Anki.Vector.ExternalInterface.RobotObservedPet
  _type_by_tag_value[70] = lambda : Anki.Vector.ExternalInterface.RobotObservedMotion
  _type_by_tag_value[71] = lambda : Anki.Vector.ExternalInterface.RobotObservedSalientPoint
  _type_by_tag_value[72] = lambda : Anki.Vector.ExternalInterface.RobotObservedLaserPoint
  _type_by_tag_value[73] = lambda : Anki.Vector.ExternalInterface.RobotObservedIllumination
  _type_by_tag_value[74] = lambda : Anki.Vector.ExternalInterface.RobotDeletedFace
  _type_by_tag_value[75] = lambda : Anki.Vector.ExternalInterface.RobotDeletedLocatedObject
  _type_by_tag_value[76] = lambda : Anki.Vector.ExternalInterface.RobotDeletedAllCustomObjects
  _type_by_tag_value[77] = lambda : Anki.Vector.ExternalInterface.LocatedObjectStates
  _type_by_tag_value[78] = lambda : Anki.Vector.ExternalInterface.ConnectedObjectStates
  _type_by_tag_value[79] = lambda : Anki.Vector.ExternalInterface.MeetVictorStarted
  _type_by_tag_value[80] = lambda : Anki.Vector.ExternalInterface.MeetVictorFaceScanStarted
  _type_by_tag_value[81] = lambda : Anki.Vector.ExternalInterface.MeetVictorFaceScanComplete
  _type_by_tag_value[82] = lambda : Anki.Vector.ExternalInterface.MeetVictorNameSaved
  _type_by_tag_value[83] = lambda : Anki.Vector.ExternalInterface.RobotErasedEnrolledFace
  _type_by_tag_value[84] = lambda : Anki.Vector.ExternalInterface.RobotErasedAllEnrolledFaces
  _type_by_tag_value[85] = lambda : Anki.Vector.ExternalInterface.RobotCompletedFactoryDotTest
  _type_by_tag_value[86] = lambda : Anki.Vector.ExternalInterface.PlaypenBehaviorFailed
  _type_by_tag_value[87] = lambda : Anki.Vector.ExternalInterface.SelfTestBehaviorFailed
  _type_by_tag_value[88] = lambda : Anki.Vector.ExternalInterface.SelfTestEnd
  _type_by_tag_value[89] = lambda : Anki.Vector.ExternalInterface.AnimationGroupAvailable
  _type_by_tag_value[90] = lambda : Anki.Vector.ExternalInterface.AnimationAborted
  _type_by_tag_value[91] = lambda : Anki.Vector.ExternalInterface.AnimationEvent
  _type_by_tag_value[92] = lambda : Anki.Vector.ExternalInterface.MoodState
  _type_by_tag_value[93] = lambda : Anki.Vector.ExternalInterface.InitDebugConsoleVarMessage
  _type_by_tag_value[94] = lambda : Anki.Vector.ExternalInterface.JsonDasLogMessage
  _type_by_tag_value[95] = lambda : Anki.Vector.ExternalInterface.JsonDasLogAllSentMessage
  _type_by_tag_value[96] = lambda : Anki.Vector.ExternalInterface.VerifyDebugConsoleFuncMessage
  _type_by_tag_value[97] = lambda : Anki.Vector.ExternalInterface.VerifyDebugConsoleVarMessage
  _type_by_tag_value[98] = lambda : Anki.Vector.ExternalInterface.DebugAppendConsoleLogLine
  _type_by_tag_value[99] = lambda : Anki.Vector.ExternalInterface.EngineErrorCodeMessage
  _type_by_tag_value[100] = lambda : Anki.Vector.ExternalInterface.BehaviorTransition
  _type_by_tag_value[101] = lambda : Anki.Vector.ExternalInterface.OnboardingState
  _type_by_tag_value[102] = lambda : Anki.Vector.ExternalInterface.AudioBehaviorStackUpdate
  _type_by_tag_value[103] = lambda : Anki.Vector.ExternalInterface.RequiredEmptyMessage
  

Anki.Vector.ExternalInterface.MessageEngineToGame = MessageEngineToGame
del MessageEngineToGame


